def OnButtonDblClick(self, event): """ Event handler to open child form """ tc = event.GetEventObject() cc = tc.GetParent() if cc.Id in [cdml.IDP_BUTTON1, cdml.IDP_BUTTON2]: collection = DB.States key = cc.GetValue() form = 'States' type_parm = '' elif tc.Id == cdml.IDP_BUTTON3: collection = DB.Params key = tc.GetValue() form = 'Parameters' if tc.Id == cdml.IDP_BUTTON3: type_parm = ['Number', 'Integer', 'Epression'] else: raise ValueError, "Assertion Error: Button does not exist" if key == '' or key == 0: msg = 'This ' + form[:-1] + ' is not defined yet.\n' msg += "Do you want to create a new " + form[:-1] + '?' ans = cdml.dlgSimpleMsg('ERROR', msg, wx.YES_NO, wx.ICON_ERROR, Parent=self) if ans == wx.ID_NO: return cdml.OpenForm(form, self, cdml.ID_MODE_SINGL, key, type_parm) elif not cdml.GetRecordByKey(collection, key): msg = 'The entry "' + str( key) + '" does not exist in ' + form + '.' ans = cdml.dlgSimpleMsg('ERROR', msg, wx.OK, wx.ICON_ERROR, Parent=self) return else: frame = self.GetTopLevelParent() cdml.OpenForm(form, self, cdml.ID_MODE_SINGL, key, type_parm, frame.idPrj)
def ShowSimResult(self): """ Get user response to select simulation result file and open EXCEL to display CSV file""" RelevantSimulations = [ result.ID for result in DB.SimulationResults.values() if result.ProjectID == self.idPrj ] if RelevantSimulations != [] : cdml.OpenForm("ResultViewer", key=self.idPrj, parent=self, id_prj=self.idPrj) else: cdml.dlgSimpleMsg('INFO', 'No results exist for this project, run the simulation successfully to create results for this project', wx.OK, wx.ICON_INFORMATION, Parent = self) return
def OnLeftDblClick(self, event): """ Event handler to open 'State' form""" cc = event.GetEventObject().GetParent() id = cc.GetValue() frame = self.GetTopLevelParent() if id not in DB.States.keys(): # If this is a listed subprocess - there may be a problem # Therefore, add the assertion check for this if id != 0: cdml.dlgSimpleMsg('Error', "ASSERTION ERROR: Can't find Main Process:", Parent=self) return cdml.OpenForm('States', self, cdml.ID_MODE_SINGL, -1, 'process', frame.idPrj) else: cdml.OpenForm('States', self, cdml.ID_MODE_SINGL, id, 'process', frame.idPrj)
def OnListDblClick(self, event): """Open Parameter form when the text control is clicked twice""" item = str(event.GetEventObject().GetValue()) if item not in DB.Params.keys(): if item != "": cdml.dlgSimpleMsg('ERROR', "Can not find a parameter named " + item, Parent=self) self.OnRefresh(None) return types = AllowedParameterTypesThatCanBeUsed cdml.OpenForm("Parameters", self, cdml.ID_MODE_SINGL, item, types)
def OnButtonClick(self, event): """ Event handler to respond to the button click event. Open Transition Form or create a copy of current Model New control mechanism may need to make more general method to open and manage child form """ id = event.GetId() if id == cdml.IDP_BUTTON1: # open transition form if self.Id == 0: cdml.dlgSimpleMsg( 'ERROR', "This model is Empty. Please enter data before transitions", Parent=self) return frame = self.GetTopLevelParent() cdml.OpenForm('Transitions', self, cdml.ID_MODE_MULTI, self.Key, None, frame.idPrj) elif id == cdml.IDP_BUTTON2: cdml.dlgNotPrepared()
def OnLeftDblClick(self, event): """ Event handler to open 'State' form""" eventType = event.GetEventType() if eventType == wx.EVT_LEFT_DCLICK.typeId: id = self.cc_states.GetValue() elif eventType == wx.EVT_LIST_ITEM_ACTIVATED.typeId: index = self.lc_states.GetFirstSelected() id = self.lc_states.GetItemData(index) frame = self.GetTopLevelParent() if id not in DB.States.keys(): # This code will never be reached since an empty list box # will not trigger this function. However, it is left here # since in the future this function may be called from another # control without properly defining a state. msg = "No state was selected" msg += "\nDo you want to create new state?" ans = cdml.dlgSimpleMsg('ERROR', msg, wx.YES_NO, Parent=self) if ans == wx.ID_NO: return id = -1 NoError = frame.ForceRecordSaveAttempt() if NoError: cdml.OpenForm('States', self, cdml.ID_MODE_SINGL, id, '', frame.idPrj)
def OnButtonClick(self, event): """ Method to respond the action taken by user""" id = event.GetId() if id == cdml.IDP_BUTTON1: # Copy this set cdml.dlgNotPrepared() elif id == cdml.IDP_BUTTON2: # PopulationStructure cdml.dlgNotPrepared() elif id == cdml.IDP_BUTTON3: # PopulationData frame = self.GetTopLevelParent() if self.Id == 0: PopulationID = None else: PopulationID = self.Key CurrentName = str(self.tc_name.GetValue()) cdml.OpenForm('PopulationData', self, CurrentName, PopulationID, None, frame.idPrj)
def OnLeftDblClick(self, event): """ Event handler to open parameters form""" cdml.OpenForm('Parameters', self, cdml.ID_MODE_SINGL, '', ['Number', 'Integer', 'State Indicator'], self.idPrj)
def OnMenuSelected(self, event): """ Event handler for buttons and menu items in main form""" menuId = event.GetId() if menuId in [wx.ID_NEW, wx.ID_OPEN]: # New and Open menu self.OpenDB(menuId) # open dialog to select database file elif menuId == cdml.ID_MENU_COPY_RECORD: self.CopyProjectRecord() elif menuId == cdml.ID_MENU_DELETE_RECORD: self.DeleteProjectRecord() elif menuId in [wx.ID_SAVE, wx.ID_SAVEAS]: # save or save as menu self.SaveDB(menuId) elif menuId in range( cdml.IDF_BUTTON1, cdml.IDF_BUTTON10): # Items in Data Menu and buttons # check database was loaded if not self._db_opened: cdml.dlgSimpleMsg( 'WARNING', "No data is loaded to the system. Please select 'New' or 'Open' in File menu", wx.OK, wx.ICON_WARNING, Parent=self) return btn = self.FindWindowById( menuId) # synchronize selected menu to a button if btn.userData == None: return # target for should be assigned to each button # as user data to avoid import statement. # See __set_properties method if btn.userData == 'Transitions' and len(DB.StudyModels) == 0: cdml.dlgSimpleMsg('ERROR', 'A Model should be defined', Parent=self) return cdml.OpenForm(btn.userData, self) # open a form as default mode(=None) elif menuId in [ cdml.ID_MENU_ABOUT, cdml.ID_MENU_HELP, cdml.ID_MENU_HELP_GENERAL ]: cdml.OnMenuSelected(self, event) elif menuId == cdml.ID_MENU_REPORT_THIS: # Create a report for a specific project index = self.lc_project.GetFirstSelected() if index in [-1, 0]: # -1 : nothing selected, 0 'New Project' selected return ProjectCode = self.IndexToPID[index] if ProjectCode in DB.Projects.keys(): cdml.OpenForm("ReportViewer", self, key=(DB.Projects[ProjectCode], None)) elif menuId == cdml.ID_MENU_REPORT_ALL: # Create a report for all projects CollectionObject = DB.Projects if CollectionObject != None: cdml.OpenForm("ReportViewer", self, key=(CollectionObject, None))
def OpenProject(self, id_prj): """ Open a project or Create new project """ self.curPrj = cdml.OpenForm('Project', self, cdml.ID_MODE_SINGL, id_prj)
def OnLeftDblClick(self, event): """ Event handler to open child form""" ctrl = event.GetEventObject() type = '' if ctrl.Id == cdml.IDF_BUTTON3: # Population Set cc = self.cc_pset id_obj = cc.GetValue() form = 'PopulationSets' elif ctrl.Id == cdml.IDF_BUTTON4 : # Primary Model cc = self.cc_model id_obj = cc.GetValue() form = 'StudyModels' elif ctrl.Id == cdml.IDP_BUTTON4: # The notes rule text cc = ctrl TheTextControl = cc id_obj = cc.GetValue() DefaultText = id_obj form = '' else: cc = ctrl.GetParent() TheTextControl = cc.GetTextCtrl() if cc.Id == cdml.IDF_BUTTON1: id_obj = cc.GetValue() form = 'PopulationSets' elif cc.Id == cdml.IDF_BUTTON2: id_obj = cc.GetValue() form = 'StudyModels' else: id_obj = str(cc.GetValueString()) DefaultText = id_obj if cc.Id == cdml.IDP_BUTTON1: form = 'Parameters' type = ['System Option']*(self.curPage==0) + ['Number','Integer','State Indicator'] elif cc.Id == cdml.IDP_BUTTON2: form = '' type = 'Expression' elif cc.Id == cdml.IDP_BUTTON3: form = '' type = 'Expression' if ('CostWizard' in DefaultText): form = 'WIZARD' self.curCtrl = cc if form == 'WIZARD': try: Sequence = DB.CostWizardParserForGUI(DefaultText, True) dlg_wizard = Wizard.WizardDialog(data=Sequence, parent=self) dlg_wizard.CenterOnScreen() dlg_wizard.Show() dlg_wizard.MyMakeModal() except: cdml.dlgErrorMsg(Parent = self) elif form == '': TheText = cdml.dlgTextEntry(Message = 'Modify Text and Press OK, or Press Cancel to ignore changes', Caption = type, DefaultValue = DefaultText, Parent = self) TheTextControl.SetValue(str(TheText)) # make sure focus returne properly to this form self.MyMakeModal() self.Raise() else: if id_obj == 0 or id_obj == '' : id_obj = -1 cdml.OpenForm(form, self, cdml.ID_MODE_SINGL, id_obj, type, self.idPrj)
def OpenFormStates(self, event): """ Event handler for the 'States' button in the title section """ cdml.OpenForm('States', self, None, None)