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()
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()
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