def create_file_dialog(dialog_type, directory, allow_multiple, save_filename, file_types, uid): window = BrowserView.instances[uid] if not directory: directory = os.environ['HOMEPATH'] try: if dialog_type == FOLDER_DIALOG: dialog = WinForms.FolderBrowserDialog() dialog.RestoreDirectory = True if directory: dialog.SelectedPath = directory result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = (dialog.SelectedPath, ) else: file_path = None elif dialog_type == OPEN_DIALOG: dialog = WinForms.OpenFileDialog() dialog.Multiselect = allow_multiple dialog.InitialDirectory = directory if len(file_types) > 0: dialog.Filter = '|'.join([ '{0} ({1})|{1}'.format(*parse_file_type(f)) for f in file_types ]) else: dialog.Filter = localization[ 'windows.fileFilter.allFiles'] + ' (*.*)|*.*' dialog.RestoreDirectory = True result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = tuple(dialog.FileNames) else: file_path = None elif dialog_type == SAVE_DIALOG: dialog = WinForms.SaveFileDialog() dialog.Filter = localization[ 'windows.fileFilter.allFiles'] + ' (*.*)|' dialog.InitialDirectory = directory dialog.RestoreDirectory = True dialog.FileName = save_filename result = dialog.ShowDialog(window) if result == WinForms.DialogResult.OK: file_path = dialog.FileName else: file_path = None return file_path except: logger.exception('Error invoking {0} dialog'.format(dialog_type)) return None
def __init__(self, __revit__, view, model): self.app = __revit__.Application self.doc = __revit__.ActiveUIDocument.Document self._view = view self._model = model self.excel_parameters = [] self.exl_file_dir_path = "C:\\" self.config_file_dir_path = os.path.dirname(os.path.realpath(__file__)) self._open_xl_file_Dialog = WinForms.OpenFileDialog() self._open_config_file_Dialog = WinForms.OpenFileDialog() self._save_config_file_Dialog = WinForms.SaveFileDialog() self._worker = BackgroundWorker() self._connectSignals()
def create_file_dialog(self, dialog_type, directory, allow_multiple, save_filename): if not directory: directory = os.environ["HOMEPATH"] try: if dialog_type == FOLDER_DIALOG: dialog = WinForms.FolderBrowserDialog() dialog.RestoreDirectory = True result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = (dialog.SelectedPath, ) else: file_path = None elif dialog_type == OPEN_DIALOG: dialog = WinForms.OpenFileDialog() dialog.Multiselect = allow_multiple dialog.InitialDirectory = directory dialog.Filter = localization[ "windows.fileFilter.allFiles"] + " (*.*)|*.*" dialog.RestoreDirectory = True result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = tuple(dialog.FileNames) else: file_path = None elif dialog_type == SAVE_DIALOG: dialog = WinForms.SaveFileDialog() dialog.Filter = localization[ "windows.fileFilter.allFiles"] + " (*.*)|" dialog.InitialDirectory = directory dialog.RestoreDirectory = True dialog.FileName = save_filename result = dialog.ShowDialog(BrowserView.instance.browser) if result == WinForms.DialogResult.OK: file_path = dialog.FileName else: file_path = None return file_path except: logger.exception("Error invoking {0} dialog".format(dialog_type)) return None
def InitializeComponent(self): """Initialize form components.""" self.components = System.ComponentModel.Container() self.openFileDialog = WinForms.OpenFileDialog() self.saveFileDialog = WinForms.SaveFileDialog() self.mainMenu = WinForms.MainMenu() self.fileMenu = WinForms.MenuItem() self.menuFileNew = WinForms.MenuItem() self.menuFileOpen = WinForms.MenuItem() self.menuFileSave = WinForms.MenuItem() self.menuFileSaveAs = WinForms.MenuItem() self.menuFileSep_1 = WinForms.MenuItem() self.menuFileExit = WinForms.MenuItem() self.editMenu = WinForms.MenuItem() self.menuEditUndo = WinForms.MenuItem() self.menuEditRedo = WinForms.MenuItem() self.menuEditSep_1 = WinForms.MenuItem() self.menuEditCut = WinForms.MenuItem() self.menuEditCopy = WinForms.MenuItem() self.menuEditPaste = WinForms.MenuItem() self.menuEditSep_2 = WinForms.MenuItem() self.menuEditSelectAll = WinForms.MenuItem() self.formatMenu = WinForms.MenuItem() self.menuFormatFont = WinForms.MenuItem() self.menuFormatWordWrap = WinForms.MenuItem() self.aboutMenu = WinForms.MenuItem() self.menuHelpAbout = WinForms.MenuItem() self.richTextBox = WinForms.RichTextBox() self.statusBarPanel1 = WinForms.StatusBarPanel() self.statusBar = WinForms.StatusBar() self.fontDialog = WinForms.FontDialog() self.statusBarPanel1.BeginInit() # =================================================================== # File Menu # =================================================================== self.menuFileNew.Text = "&New" self.menuFileNew.Shortcut = WinForms.Shortcut.CtrlN self.menuFileNew.ShowShortcut = False self.menuFileNew.Index = 0 self.menuFileNew.Click += self.OnClickFileNew self.menuFileOpen.Text = "&Open" self.menuFileOpen.Shortcut = WinForms.Shortcut.CtrlO self.menuFileOpen.ShowShortcut = False self.menuFileOpen.Index = 1 self.menuFileOpen.Click += self.OnClickFileOpen self.menuFileSave.Text = "&Save" self.menuFileSave.Shortcut = WinForms.Shortcut.CtrlS self.menuFileSave.ShowShortcut = False self.menuFileSave.Index = 2 self.menuFileSave.Click += self.OnClickFileSave self.menuFileSaveAs.Text = "Save &As" self.menuFileSaveAs.Index = 3 self.menuFileSaveAs.Click += self.OnClickFileSaveAs self.menuFileSep_1.Text = "-" self.menuFileSep_1.Index = 4 self.menuFileExit.Text = "E&xit" self.menuFileExit.Shortcut = WinForms.Shortcut.AltF4 self.menuFileExit.ShowShortcut = False self.menuFileExit.Index = 5 self.menuFileExit.Click += self.OnClickFileExit self.fileMenu.Text = "&File" self.fileMenu.Index = 0 items = (self.menuFileNew, self.menuFileOpen, self.menuFileSave, self.menuFileSaveAs, self.menuFileSep_1, self.menuFileExit) self.fileMenu.MenuItems.AddRange(items) # =================================================================== # Edit menu # =================================================================== self.menuEditUndo.Text = "&Undo" self.menuEditUndo.Shortcut = WinForms.Shortcut.CtrlZ self.menuEditUndo.Index = 0 self.menuEditUndo.Click += self.OnClickEditUndo self.menuEditRedo.Text = "&Redo" self.menuEditRedo.Shortcut = WinForms.Shortcut.CtrlY self.menuEditRedo.Index = 1 self.menuEditRedo.Click += self.OnClickEditRedo self.menuEditSep_1.Text = "-" self.menuEditSep_1.Index = 2 self.menuEditCut.Text = "Cut" self.menuEditCut.Shortcut = WinForms.Shortcut.CtrlX self.menuEditCut.Index = 3 self.menuEditCut.Click += self.OnClickEditCut self.menuEditCopy.Text = "Copy" self.menuEditCopy.Shortcut = WinForms.Shortcut.CtrlC self.menuEditCopy.Index = 4 self.menuEditCopy.Click += self.OnClickEditCopy self.menuEditPaste.Text = "Paste" self.menuEditPaste.Shortcut = WinForms.Shortcut.CtrlV self.menuEditPaste.Index = 5 self.menuEditPaste.Click += self.OnClickEditPaste self.menuEditSelectAll.Text = "Select All" self.menuEditSelectAll.Shortcut = WinForms.Shortcut.CtrlA self.menuEditSelectAll.Index = 7 self.menuEditSelectAll.Click += self.OnClickEditSelectAll self.menuEditSep_2.Text = "-" self.menuEditSep_2.Index = 6 self.editMenu.Text = "&Edit" self.editMenu.Index = 1 items = (self.menuEditUndo, self.menuEditRedo, self.menuEditSep_1, self.menuEditCut, self.menuEditCopy, self.menuEditPaste, self.menuEditSep_2, self.menuEditSelectAll) self.editMenu.MenuItems.AddRange(items) # =================================================================== # Format Menu # =================================================================== self.menuFormatWordWrap.Text = "Word Wrap" self.menuFormatWordWrap.Checked = self.word_wrap self.menuFormatWordWrap.Index = 1 self.menuFormatWordWrap.Click += self.OnClickFormatWordWrap self.menuFormatFont.Text = "Fo&nt" self.menuFormatFont.Index = 0 self.menuFormatFont.Click += self.OnClickFormatFont self.formatMenu.Text = "F&ormat" self.formatMenu.Index = 2 items = (self.menuFormatWordWrap, self.menuFormatFont) self.formatMenu.MenuItems.AddRange(items) # =================================================================== # About menu # =================================================================== self.menuHelpAbout.Text = "&About" self.menuHelpAbout.Index = 0 self.menuHelpAbout.Click += self.OnClickHelpAbout self.aboutMenu.Text = "&Help" self.aboutMenu.Index = 3 self.aboutMenu.MenuItems.Add(self.menuHelpAbout) self.statusBarPanel1.Dock = WinForms.DockStyle.Fill self.statusBarPanel1.Text = "Ready" self.statusBarPanel1.Width = 755 self.richTextBox.Dock = WinForms.DockStyle.Fill self.richTextBox.Size = System.Drawing.Size(795, 485) self.richTextBox.TabIndex = 0 self.richTextBox.AutoSize = 1 self.richTextBox.ScrollBars = WinForms.RichTextBoxScrollBars.ForcedBoth self.richTextBox.Font = System.Drawing.Font("Tahoma", 10.0) self.richTextBox.AcceptsTab = 1 self.richTextBox.Location = System.Drawing.Point(0, 0) self.statusBar.BackColor = System.Drawing.SystemColors.Control self.statusBar.Location = System.Drawing.Point(0, 518) self.statusBar.Size = System.Drawing.Size(775, 19) self.statusBar.TabIndex = 1 self.statusBar.ShowPanels = True self.statusBar.Panels.Add(self.statusBarPanel1) items = (self.fileMenu, self.editMenu, self.formatMenu, self.aboutMenu) self.mainMenu.MenuItems.AddRange(items) self.openFileDialog.Filter = "Text documents|*.txt|RTF document|*.rtf" self.openFileDialog.Title = "Open document" self.saveFileDialog.Filter = "Text Documents|*.txt|" \ "Rich Text Format|*.rtf" self.saveFileDialog.Title = "Save document" self.saveFileDialog.FileName = "Untitled" self.AutoScaleBaseSize = System.Drawing.Size(5, 13) self.ClientSize = System.Drawing.Size(775, 537) self.Menu = self.mainMenu self.Text = "Python Wordpad" self.Controls.Add(self.statusBar) self.Controls.Add(self.richTextBox) self.statusBarPanel1.EndInit()
def main(): """Main Script.""" print("🐍 Running {fname} version {ver}...".format(fname=__name, ver=__version)) # STEP 0: Setup doc = __revit__.ActiveUIDocument.Document # STEP 1: Inspect Model and summarize findings pipe_insulations = query_all_elements_of_category( doc=doc, cat=db.BuiltInCategory.OST_PipeInsulations) duct_insulations = query_all_elements_of_category( doc=doc, cat=db.BuiltInCategory.OST_DuctInsulations) rogue_pipe, unhosted_pipe = find_rogue_and_unhosted_elements( doc=doc, elems=pipe_insulations) rogue_duct, unhosted_duct = find_rogue_and_unhosted_elements( doc=doc, elems=duct_insulations) summary_list = write_summary( tpipe=pipe_insulations, tduct=duct_insulations, # totals upipe=unhosted_pipe, uduct=unhosted_duct, # unhosted rpipe=rogue_pipe, rduct=rogue_duct) # rogue summary_text = "\n".join(summary_list) print(summary_text) # STEP 2: Receive User Input dialog = ui.TaskDialog(title="Insulation Cleanup") dialog.MainInstruction = "Insulation Cleanup Summary" dialog.MainContent = summary_text dialog.AddCommandLink(ui.TaskDialogCommandLinkId.CommandLink1, "Write Report") dialog.AddCommandLink(ui.TaskDialogCommandLinkId.CommandLink2, "Clean Insulation") dialog.CommonButtons = ui.TaskDialogCommonButtons.Close dialog.DefaultButton = ui.TaskDialogResult.Close result = dialog.Show() # STEP 3: Write report or clean up insulation if result == ui.TaskDialogResult.CommandLink1: # Write report save_dialog = swf.SaveFileDialog() save_dialog.Title = "Save Insulation Cleanup Report" save_dialog.Filter = "Text files|*.txt" save_dialog.FileName = "report.txt" if save_dialog.ShowDialog() == swf.DialogResult.OK: # Save report file_path = save_dialog.FileName print("Writing report to {0}".format(file_path)) with open(file_path, mode="wb") as fh: report = write_report(doc, unhosted_pipe, rogue_pipe, unhosted_duct, rogue_duct) for line in report: fh.write("{line}\r\n".format(line=line)) print("✔\nDone. 😊") return ui.Result.Succeeded else: # Don't save report print("🛈 File save dialog canceled.") return ui.Result.Cancelled elif result == ui.TaskDialogResult.CommandLink2: # Clean Insulation transaction = db.Transaction(doc) transaction.Start("{name} - v{ver}".format(name=__name, ver=__version)) try: print("Cleaning Insulation...") for pipe_element in unhosted_pipe: doc.Delete(pipe_element.Id) print("Deleted {num} unhosted pipe insulation elements".format( num=len(unhosted_pipe))) for pipe_pair in rogue_pipe: cleanup_insulation(pipe_pair) print("Moved {num} rogue pipe insulation elements.".format( num=len(rogue_pipe))) for duct_element in unhosted_duct: doc.Delete(duct_element.Id) print("Deleted {num} unhosted duct insulation elements.".format( num=len(unhosted_duct))) for duct_pair in rogue_duct: cleanup_insulation(duct_pair) print("Moved {num} rogue duct insulation elements.".format( num=len(rogue_duct))) except Exception as exception: print("Failed.\nException:\n{ex}".format(ex=exception)) transaction.RollBack() return ui.Result.Failed else: print("✔\nDone. 😊") transaction.Commit() return ui.Result.Succeeded else: print("Nothing to do.") return ui.Result.Cancelled