Пример #1
0
    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)
Пример #2
0
 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
Пример #3
0
 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)
Пример #4
0
    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)
Пример #5
0
    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()
Пример #6
0
 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)
Пример #7
0
    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)
Пример #8
0
 def OnLeftDblClick(self, event):
     """  Event handler to open parameters form"""
     cdml.OpenForm('Parameters', self, cdml.ID_MODE_SINGL, '',
                   ['Number', 'Integer', 'State Indicator'], self.idPrj)
Пример #9
0
    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))
Пример #10
0
 def OpenProject(self, id_prj):
     """ Open a project or Create new project """
     self.curPrj = cdml.OpenForm('Project', self, cdml.ID_MODE_SINGL,
                                 id_prj)
Пример #11
0
    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)
Пример #12
0
 def OpenFormStates(self, event):
     """ Event handler for the 'States' button in the title section """
     cdml.OpenForm('States', self, None, None)