// // (C) Copyright 2003-2019 by Autodesk, Inc. // // Permission to use, copy, modify, and distribute this software in // object code form for any purpose and without fee is hereby granted, // provided that the above copyright notice appears in all copies and // that both that copyright notice and the limited warranty and // restricted rights notice below appear in all supporting // documentation. // // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE // UNINTERRUPTED OR ERROR FREE. // // Use, duplication, or disclosure by the U.S. Government is subject to // restrictions set forth in FAR 52.227-19 (Commercial Computer // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) // (Rights in Technical Data and Computer Software), as applicable. // using System; using System.Windows.Forms; namespace Revit.SDK.Samples.ModelessForm_IdlingEvent.CS { /// /// The class of our modeless dialog. /// /// /// Besides other methods, it has one method per each command button. /// In each of those methods nothing else is done but setting a request /// to be later picked up by the Idling handler. All those commands /// are performed on doors currently selected in the active document. /// /// public partial class ModelessForm : Form { /// /// In this sample, the dialog owns the value of the request but it is not necessary. It may as /// well be a static property of the application. /// private Request m_request; /// /// Request property /// public Request Request { get { return m_request; } private set { m_request = value; } } /// /// Dialog instantiation /// /// public ModelessForm() { InitializeComponent(); Request = new Request(); } /// /// Control enabler / disabler /// /// private void EnableCommands(bool status) { foreach (Control ctrl in this.Controls) { ctrl.Enabled = status; } if (!status) { this.btnExit.Enabled = true; } } /// /// A private helper method to make a request /// and put the dialog to sleep at the same time. /// /// /// It is expected that the process which executes the request /// (the Idling helper in this particular case) will also /// wake the dialog up after finishing the execution. /// /// private void MakeRequest(RequestId request) { Request.Make(request); DozeOff(); } /// /// DozeOff -> disable all controls (but the Exit button) /// /// private void DozeOff() { EnableCommands(false); } /// /// WakeUp -> enable all controls /// /// public void WakeUp() { EnableCommands(true); } /// /// Exit - closing the dialog /// /// private void btnExit_Click(object sender, EventArgs e) { Close(); } /// /// Making a door Left /// /// private void btnFlipLeft_Click(object sender, EventArgs e) { MakeRequest(RequestId.MakeLeft); } /// /// Making a door Right /// /// private void btnFlipRight_Click(object sender, EventArgs e) { MakeRequest(RequestId.MakeRight); } /// /// Flipping a door between Right and Left /// /// private void btnFlipLeftRight_Click(object sender, EventArgs e) { MakeRequest(RequestId.FlipLeftRight); } /// /// Flipping a door between facing In and Out /// /// private void btnFlipInOut_Click(object sender, EventArgs e) { MakeRequest(RequestId.FlipInOut); } /// /// Turning a door to face Out /// /// private void btnFlipOut_Click(object sender, EventArgs e) { MakeRequest(RequestId.TurnOut); } /// /// Turning a door to face In /// /// private void btnFlipIn_Click(object sender, EventArgs e) { MakeRequest(RequestId.TurnIn); } /// /// Turning a door around - flipping both hand and face /// /// private void btnRotate_Click(object sender, EventArgs e) { MakeRequest(RequestId.Rotate); } /// /// Deleting a door /// /// private void btnDelete_Click(object sender, EventArgs e) { MakeRequest(RequestId.Delete); } } // class }