def OnDirectorySearch(self): """Begin directory search.""" self.patients = {} self.tcPatients.DeleteChildren(self.root) self.terminate = False self.gaugeProgress.Show(True) self.lblProgressPercent.Show(True) self.lblProgressPercentSym.Show(True) self.btnSelect.Enable(False) # Disable Rx dose controls except on GTK due to control placement oddities if not guiutil.IsGtk(): self.EnableRxDose(False) # If a previous search thread exists, block until it is done before # starting a new thread if (hasattr(self, 't')): self.t.join() del self.t self.t = threading.Thread( target=self.DirectorySearchThread, args=(self, self.path, self.import_search_subfolders, self.SetThreadStatus, self.OnUpdateProgress, self.AddPatientTree, self.AddPatientDataTree)) self.t.start()
def Init(self, plugins, pluginsDisabled): """Method called after the panel has been initialized.""" # Set window icon if not guiutil.IsMac(): self.SetIcon(guiutil.get_icon()) # Initialize controls self.tcPlugins = XRCCTRL(self, 'tcPlugins') self.panelTreeView = XRCCTRL(self, 'panelTreeView') self.panelProperties = XRCCTRL(self, 'panelProperties') self.lblName = XRCCTRL(self, 'lblName') self.lblAuthor = XRCCTRL(self, 'lblAuthor') self.lblPluginType = XRCCTRL(self, 'lblPluginType') self.lblVersion = XRCCTRL(self, 'lblVersion') self.lblVersionNumber = XRCCTRL(self, 'lblVersionNumber') self.lblDescription = XRCCTRL(self, 'lblDescription') self.checkEnabled = XRCCTRL(self, 'checkEnabled') self.lblMessage = XRCCTRL(self, 'lblMessage') self.btnGetMorePlugins = XRCCTRL(self, 'btnGetMorePlugins') self.btnDeletePlugin = XRCCTRL(self, 'btnDeletePlugin') self.plugins = plugins self.pluginsDisabled = set(pluginsDisabled) # Bind interface events to the proper methods # wx.EVT_BUTTON(self, XRCID('btnDeletePlugin'), self.DeletePlugin) wx.EVT_CHECKBOX(self, XRCID('checkEnabled'), self.OnEnablePlugin) wx.EVT_TREE_ITEM_ACTIVATED(self, XRCID('tcPlugins'), self.OnEnablePlugin) wx.EVT_TREE_SEL_CHANGED(self, XRCID('tcPlugins'), self.OnSelectTreeItem) wx.EVT_TREE_SEL_CHANGING(self, XRCID('tcPlugins'), self.OnSelectRootItem) # Modify the control and font size as needed font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) if guiutil.IsMac(): children = list(self.Children) + \ list(self.panelTreeView.Children) + \ list(self.panelProperties.Children) for control in children: control.SetFont(font) control.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) XRCCTRL(self, 'wxID_OK').SetWindowVariant(wx.WINDOW_VARIANT_NORMAL) font.SetWeight(wx.FONTWEIGHT_BOLD) if guiutil.IsMSWindows(): self.tcPlugins.SetPosition((0, 3)) self.panelTreeView.SetWindowStyle(wx.STATIC_BORDER) if (guiutil.IsMac() or guiutil.IsGtk()): self.tcPlugins.SetPosition((-30, 0)) self.panelTreeView.SetWindowStyle(wx.SUNKEN_BORDER) self.lblName.SetFont(font) self.lblMessage.SetFont(font) self.Layout() self.InitPluginList() self.LoadPlugins()
def OnAbout(self, evt): # First we create and fill the info object info = wx.adv.AboutDialogInfo() info.Name = "dicompyler" info.Version = __version__ info.Copyright = "(c) 2009-2017 Aditya Panchal" credits = util.get_credits() info.Developers = credits['developers'] info.Artists = credits['artists'] desc = "Extensible radiation therapy research platform and viewer for DICOM and DICOM RT." + \ "\n\ndicompyler is released under a BSD license.\n" + \ "See the Help menu for license information." info.Description = desc if guiutil.IsGtk(): info.WebSite = "https://github.com/bastula/dicompyler/" # Then we call wx.AboutBox giving it that info object wx.adv.AboutBox(info)
def Init(self, res): """Method called after the panel has been initialized.""" # Bind ui events to the proper methods self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy) # Initialize variables self.images = [] self.structures = {} self.window = 0 self.level = 0 self.zoom = 1 self.pan = [0, 0] self.bwidth = 0 self.bheight = 0 self.xpos = 0 self.ypos = 0 self.mousepos = wx.Point(-10000, -10000) self.mouse_in_window = False self.isodose_line_style = 'Solid' self.isodose_fill_opacity = 25 self.structure_line_style = 'Solid' self.structure_fill_opacity = 50 self.plugins = {} # Setup toolbar controls if guiutil.IsGtk(): drawingstyles = ['Solid', 'Transparent', 'Dot'] else: drawingstyles = ['Solid', 'Transparent', 'Dot', 'Dash', 'Dot Dash'] zoominbmp = wx.Bitmap(util.GetResourcePath('magnifier_zoom_in.png')) zoomoutbmp = wx.Bitmap(util.GetResourcePath('magnifier_zoom_out.png')) toolsbmp = wx.Bitmap(util.GetResourcePath('cog.png')) self.tools = [] self.tools.append({ 'label': "Zoom In", 'bmp': zoominbmp, 'shortHelp': "Zoom In", 'eventhandler': self.OnZoomIn }) self.tools.append({ 'label': "Zoom Out", 'bmp': zoomoutbmp, 'shortHelp': "Zoom Out", 'eventhandler': self.OnZoomOut }) self.tools.append({ 'label': "Tools", 'bmp': toolsbmp, 'shortHelp': "Tools", 'eventhandler': self.OnToolsMenu }) # Set up preferences self.preferences = [{ 'Drawing Settings': [{ 'name': 'Isodose Line Style', 'type': 'choice', 'values': drawingstyles, 'default': 'Solid', 'callback': '2dview.drawingprefs.isodose_line_style' }, { 'name': 'Isodose Fill Opacity', 'type': 'range', 'values': [0, 100], 'default': 25, 'units': '%', 'callback': '2dview.drawingprefs.isodose_fill_opacity' }, { 'name': 'Structure Line Style', 'type': 'choice', 'values': drawingstyles, 'default': 'Solid', 'callback': '2dview.drawingprefs.structure_line_style' }, { 'name': 'Structure Fill Opacity', 'type': 'range', 'values': [0, 100], 'default': 50, 'units': '%', 'callback': '2dview.drawingprefs.structure_fill_opacity' }] }] # Set up pubsub pub.subscribe(self.OnUpdatePatient, 'patient.updated.parsed_data') pub.subscribe(self.OnStructureCheck, 'structures.checked') pub.subscribe(self.OnIsodoseCheck, 'isodoses.checked') pub.subscribe(self.OnRefresh, '2dview.refresh') pub.subscribe(self.OnDrawingPrefsChange, '2dview.drawingprefs') pub.subscribe(self.OnPluginLoaded, 'plugin.loaded.2dview') pub.sendMessage('preferences.requested.values', msg='2dview.drawingprefs')