Пример #1
0
    def __init__(self,
                 mode=None,
                 data=None,
                 type=None,
                 id_prj=0,
                 *args,
                 **kwds):
        """ Constructor of the MainFrame class """
        self.idPrj = id_prj

        cdml.CDMFrame.__init__(self, mode, data, type, *args, **kwds)

        # Deine Popup menu items
        # Format : tuple of list --> ([Label, Event handler, Id] , [], [], ... )
        #           Label : label of an item
        #           Evet handler : name of event handler
        #           Id : Id of current menu item
        # Special label : '-'--> seperator, '+' --> submenu items
        #           First item after last '+' marked items is the title of the submenu
        # If an item doesn't have event handler, the second parameter should be 'None'
        # If an item doesn't have Id, the third item should be -1
        # If a form need to manage instances of RowPanel class,
        #   the event handler should be 'self.FrameEventHandler'
        # Otherwise, dedicated event handler should be implemented in that class (ex. see Project or PopulationData form)
        self.pup_menus = (["Undo", self.FrameEventHandler, wx.ID_UNDO], [
            "-", None, -1
        ], ["Add", self.FrameEventHandler, wx.ID_ADD], [
            "Copy Record", self.FrameEventHandler, cdml.ID_MENU_COPY_RECORD
        ], ["Delete", self.FrameEventHandler, wx.ID_DELETE], [
            "Regenerate New Population Data from a Distribution",
            self.FrameEventHandler, cdml.ID_SPECIAL_RECORD_ADD
        ], ["-", None, -1], ["Find", self.FrameEventHandler, wx.ID_FIND], [
            "-", None, -1
        ], ["+ID", self.FrameEventHandler, cdml.IDF_BUTTON1], [
            "+Name", self.FrameEventHandler, cdml.IDF_BUTTON2
        ], ["+Source", self.FrameEventHandler, cdml.IDF_BUTTON3], [
            "+Definition Type", self.FrameEventHandler, cdml.IDF_BUTTON4
        ], ["+Derived From", self.FrameEventHandler, cdml.IDF_BUTTON5], [
            "+Read Only", self.FrameEventHandler, cdml.IDF_BUTTON6
        ], ["+Created On", self.FrameEventHandler, cdml.IDF_BUTTON7
            ], ["+Last Modified", self.FrameEventHandler, cdml.IDF_BUTTON8],
                          ["+Notes", self.FrameEventHandler,
                           cdml.IDF_BUTTON9], ["Sort By", None, -1])

        # Define the window menus
        cdml.GenerateStandardMenu(self)

        # create panel for field titles
        # IMPORTANT NOTE:
        #   In current version, name of a panel for the title section should be "pn_title"
        #   And should be an instance of CDMPanel class with False as a first argument
        self.pn_title = cdml.CDMPanel(False, self, -1, style=wx.TAB_TRAVERSAL)
        self.st_title = wx.StaticText(self.pn_title, -1, "Population Sets")

        # Create bitmap buttons to display title of each field
        # Syntax : cdml.BitmapButton( parent, id, bitmap, label )
        # Don't need to set bitmap here. It will be assigned in the event handler when pressed
        # For the sort function, the labels need to be same with the variable name in database object
        self.button_2 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON2,
                                          None, "Name")
        self.button_3 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON3,
                                          None, "Source")
        self.button_4 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON4,
                                          None, "Definition Type")
        self.button_5 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON5,
                                          None, "Derived From")
        self.button_6 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON7,
                                          None, "Created On")
        self.button_7 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON10,
                                          None, "Last Modified")
        self.button_8 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON11,
                                          None, "Notes")

        # Create Add/Find buttons
        # Syntax : cdml.Button( parent, ID )
        # ID should be wx.ID_ADD for add button and wx.ID_FIND for find button in all forms
        self.btn_add = cdml.Button(self.pn_title, wx.ID_ADD)
        self.btn_find = cdml.Button(self.pn_title, wx.ID_FIND)

        # Scroll window that the RowPanel objects will be placed
        # IMPORTANT NOTE:
        #   In current version, all forms that need to manage the instance(s) of RowPanel class
        #       should have an instance of wx.ScrolledWindow class.
        #   Also the name of the panel should be "pn_view"
        self.pn_view = wx.ScrolledWindow(self,
                                         -1,
                                         style=wx.SUNKEN_BORDER
                                         | wx.TAB_TRAVERSAL)

        self.__set_properties()
        self.__do_layout()

        # Assign event handler for the buttons in title section -- to check the focus change
        self.pn_title.Bind(wx.EVT_BUTTON,
                           self.FrameEventHandler,
                           id=cdml.IDF_BUTTON2,
                           id2=cdml.IDF_BUTTON9)
        self.btn_add.Bind(wx.EVT_BUTTON, self.FrameEventHandler)
        self.btn_find.Bind(wx.EVT_BUTTON, self.FrameEventHandler)

        self.Initialize()
Пример #2
0
    def __init__(self,
                 mode=None,
                 data=None,
                 type=None,
                 id_prj=0,
                 *args,
                 **kwds):
        """ Constructor of the MainFrame class """
        self.idPrj = id_prj
        cdml.CDMFrame.__init__(self, mode, data, type, *args, **kwds)

        # Define Popup menu items
        # Format : tuple of list --> ([Label, Event handler, Id] , [], [], ... )
        #                       Label : label of an item
        #                       Event handler : name of event handler
        #                       Id : Id of current menu item
        # Special label : '-'--> separator, '+' --> submenu items
        #                       First item after last '+' marked items is the title of the submenu
        # If an item doesn't have event handler, the second parameter should be 'None'
        # If an item doesn't have Id, the third item should be -1
        # If a form need to manage instances of RowPanel class,
        #       the event handler should be 'self.FrameEventHandler'
        # Otherwise, dedicated event handler should be implemented in that class (ex. see Project or PopulationData form)
        self.pup_menus = (["Undo", self.FrameEventHandler, wx.ID_UNDO], [
            "-", None, -1
        ], ["Add", self.FrameEventHandler, wx.ID_ADD], [
            "Copy Record", self.FrameEventHandler, cdml.ID_MENU_COPY_RECORD
        ], ["Delete", self.FrameEventHandler, wx.ID_DELETE], ["-", None, -1], [
            "Find", self.FrameEventHandler, wx.ID_FIND
        ], ["-",
            None, -1], ["+Name", self.FrameEventHandler, cdml.IDF_BUTTON1], [
                "+IsSplit", self.FrameEventHandler, cdml.IDF_BUTTON2
            ], ["+IsEvent", self.FrameEventHandler, cdml.IDF_BUTTON3
                ], ["+IsTemplate", self.FrameEventHandler, cdml.IDF_BUTTON4], [
                    "+Joiner Of Splitter", self.FrameEventHandler,
                    cdml.IDF_BUTTON5
                ], ["+Notes", self.FrameEventHandler,
                    cdml.IDF_BUTTON6], ["Sort By", None, -1])

        # Define the window menus
        cdml.GenerateStandardMenu(self)

        # create panels for title section. First argument should be False
        self.pn_title = cdml.CDMPanel(False, self, -1)

        # Create bitmap buttons to display title of each field
        # Syntax : cdml.BitmapButton( parent, id, bitmap, label )
        # Don't need to set bitmap here. It will be assigned in the event handler when pressed
        # For the sort function, the labels need to be same with the variable name in database object
        self.st_title = wx.StaticText(self.pn_title, -1, "State Definition")
        self.st_name = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON1, None,
                                         "Name  ")
        self.st_isSplit = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON2,
                                            None, "Is Split   ")
        self.st_isEvent = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON3,
                                            None, "Is Event   ")
        self.st_isTerminal = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON4,
                                               None, "Is Terminal")
        self.st_joins_split = cdml.BitmapButton(self.pn_title,
                                                cdml.IDF_BUTTON5, None,
                                                "Joiner Of Splitter")
        self.st_notes = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON6,
                                          None, "Notes")
        self.st_child_state = cdml.BitmapButton(self.pn_title, -1, None,
                                                "Child State/ Subprocess")

        # Create Add/Find buttons
        # Syntax : cdml.Button( parent, ID )
        # ID should be wx.ID_ADD for add button and wx.ID_FIND for find button in all forms
        self.btn_add = cdml.Button(self.pn_title, wx.ID_ADD)
        self.btn_find = cdml.Button(self.pn_title, wx.ID_FIND)

        # Scroll window that the RowPanel objects will be placed
        # IMPORTANT NOTE:
        #       In current version, all forms that need to manage the instance(s) of RowPanel class
        #               should have an instance of wx.ScrolledWindow class.
        #       Also the name of the panel should be "pn_view"
        self.pn_view = wx.ScrolledWindow(self,
                                         -1,
                                         style=wx.SUNKEN_BORDER
                                         | wx.TAB_TRAVERSAL)

        self.__set_properties()
        self.__do_layout()

        # Assign event handler for the buttons in title section -- to check the focus change
        self.pn_title.Bind(wx.EVT_BUTTON,
                           self.FrameEventHandler,
                           id=cdml.IDF_BUTTON1,
                           id2=cdml.IDF_BUTTON6)
        self.btn_add.Bind(wx.EVT_BUTTON, self.FrameEventHandler)
        self.btn_find.Bind(wx.EVT_BUTTON, self.FrameEventHandler)

        # Call Initialize method to create row panels and display data
        self.Initialize()
Пример #3
0
    def __init__(self,
                 mode=None,
                 data=None,
                 type=None,
                 id_prj=0,
                 *args,
                 **kwds):
        """ Constructor of the MainFrame class """
        self.idPrj = id_prj

        cdml.CDMFrame.__init__(self, mode, data, type, *args, **kwds)

        # Deine Popup menu items
        # Format : tuple of list --> ([Label, Event handler, Id] , [], [], ... )
        #           Label : label of an item
        #           Event handler : name of event handler
        #           Id : Id of current menu item
        # Special label : '-'--> separator, '+' --> submenu items
        #           First item after last '+' marked items is the title of the submenu
        # If an item doesn't have event handler, the second parameter should be 'None'
        # If an item doesn't have Id, the third item should be -1
        # If a form need to manage instances of RowPanel class,
        #   the event handler should be 'self.FrameEventHandler'
        # Otherwise, dedicated event handler should be implemented in that class (ex. see Project or PopulationData form)
        self.pup_menus = (["Undo", self.FrameEventHandler, wx.ID_UNDO], [
            "-", None, -1
        ], ["Add", self.FrameEventHandler,
            wx.ID_ADD], ["Delete", self.FrameEventHandler, wx.ID_DELETE], [
                "-", None, -1
            ], ["Find", self.FrameEventHandler, wx.ID_FIND], ["-", None, -1], [
                "+From State",
                self.FrameEventHandler, cdml.IDF_BUTTON4
            ], ["+To State", self.FrameEventHandler, cdml.IDF_BUTTON5
                ], ["+Probability", self.FrameEventHandler,
                    cdml.IDF_BUTTON6], ["Sort By", None, -1])

        # Define the window menus
        cdml.GenerateStandardMenu(self)

        # create panel for field titles
        # IMPORTANT NOTE:
        #   In current version, name of a panel for the title section should be "pn_title"
        #   And should be an instance of CDMPanel class with False as a first argument
        self.pn_title = cdml.CDMPanel(False, self, -1)
        self.st_title = wx.StaticText(self.pn_title, -1,
                                      "Transitions Between States in a Model")

        # Create text and combo control to display the list of studies and models
        # Due to this controls, two step initialization need to be implemented for Transition form
        # --> transition list could be set up after selecting a study or model using this combo control
        self.st_study_model = wx.StaticText(self.pn_title, -1, "Model")
        self.cc_study_model = cdml.Combo(self.pn_title,
                                         validator=cdml.KeyValidator(
                                             cdml.NO_EDIT))

        # Create bitmap buttons to display title of each field
        # Syntax : cdml.BitmapButton( parent, id, bitmap, label )
        # Don't need to set bitmap here. It will be assigned in the event handler when pressed
        # For the sort function, the labels need to be same with the variable name in database object
        self.button_1 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON1,
                                          None, "From State")
        self.button_2 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON2,
                                          None, "To State")
        self.button_3 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON3,
                                          None, "Probability")
        self.button_4 = cdml.BitmapButton(self.pn_title, cdml.IDF_BUTTON8,
                                          None, "Notes")

        # Create Add/Find buttons
        # Syntax : cdml.Button( parent, ID )
        # ID should be wx.ID_ADD for add button and wx.ID_FIND for find button in all forms
        self.btn_add = cdml.Button(self.pn_title, wx.ID_ADD)
        self.btn_find = cdml.Button(self.pn_title, wx.ID_FIND)
        self.btn_copy_from_model = cdml.Button(self.pn_title,
                                               cdml.IDF_BUTTON11,
                                               'Copy From Model')

        # Scroll window that the RowPanel objects will be placed
        # IMPORTANT NOTE:
        #   In current version, all forms that need to manage the instance(s) of RowPanel class
        #       should have an instance of wx.ScrolledWindow class.
        #   Also the name of the panel should be "pn_view"
        self.pn_view = wx.ScrolledWindow(self,
                                         -1,
                                         style=wx.SUNKEN_BORDER
                                         | wx.TAB_TRAVERSAL)

        self.__set_properties()
        self.__do_layout()

        # Assign event handler for the buttons in title section -- to check the focus change
        self.pn_title.Bind(wx.EVT_BUTTON,
                           self.FrameEventHandler,
                           id=cdml.IDF_BUTTON1,
                           id2=cdml.IDF_BUTTON8)
        self.btn_add.Bind(wx.EVT_BUTTON, self.FrameEventHandler)
        self.btn_find.Bind(wx.EVT_BUTTON, self.FrameEventHandler)
        self.btn_copy_from_model.Bind(
            wx.EVT_BUTTON, self.CopyTransitionsFromAnotherStudyModel)

        self.cc_study_model.Bind(wx.EVT_LEFT_UP, self.FrameEventHandler)
        self.cc_study_model.GetTextCtrl().Bind(wx.EVT_LEFT_UP,
                                               self.FrameEventHandler)
        # The next line was commented since it worked fine on windows yet did
        # not work on a Linux system. Therefore instead of handling the mouse
        # click we are looking at the selection of the item form the list. For
        # some reason this forces repainting of the screen. Yet since it works
        # on both Linux and Windows, this solution was a compromise
        # self.cc_study_model.Bind(wx.EVT_COMMAND_LEFT_CLICK, self.FrameEventHandler)
        self.cc_study_model.Bind(wx.EVT_LIST_ITEM_SELECTED,
                                 self.InitTransitions)

        self.InitTransitions()  # display existing data