ConfTreeNodeEditor.py
changeset 762 aaacc83aa86b
parent 751 a8dace95f965
child 767 36e823a90d94
equal deleted inserted replaced
761:7788545f4137 762:aaacc83aa86b
   144             dc.DrawBitmap(self._bitmap, 0, 0, True)
   144             dc.DrawBitmap(self._bitmap, 0, 0, True)
   145 
   145 
   146 class ConfTreeNodeEditor(EditorPanel):
   146 class ConfTreeNodeEditor(EditorPanel):
   147     
   147     
   148     HAS_BASE_PARAMS = True
   148     HAS_BASE_PARAMS = True
       
   149     SHOW_PARAMS = True
   149     
   150     
   150     def _init_ConfNodeEditor(self, prnt):
   151     def _init_ConfNodeEditor(self, prnt):
   151         self.ConfNodeEditor = None
   152         self.ConfNodeEditor = None
   152     
   153     
   153     def _init_Editor(self, prnt):
   154     def _init_Editor(self, prnt):
   154         self.Editor = wx.SplitterWindow(id=self.ID, name='EditorSplitter', parent=prnt,
   155         self.Editor = wx.SplitterWindow(id=self.ID, name='EditorSplitter', parent=prnt,
   155               size=wx.Size(0, 0), style=wx.SUNKEN_BORDER|wx.SP_3D)
   156               size=wx.Size(0, 0), style=wx.SUNKEN_BORDER|wx.SP_3D)
   156         self.SetNeedUpdating(True)
   157         self.SetNeedUpdating(True)
   157         self.SetMinimumPaneSize(1)
   158         self.SetMinimumPaneSize(1)
   158         
   159         
   159         self.ParamsEditor = wx.ScrolledWindow(self.Editor, -1, size=wx.Size(-1, -1),
   160         if self.SHOW_PARAMS:
   160                         style=wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER|wx.HSCROLL|wx.VSCROLL)
   161             self.ParamsEditor = wx.ScrolledWindow(self.Editor, -1, size=wx.Size(-1, -1),
   161         self.ParamsEditor.SetBackgroundColour(WINDOW_COLOUR)
   162                             style=wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER|wx.HSCROLL|wx.VSCROLL)
   162         self.ParamsEditor.Bind(wx.EVT_SIZE, self.OnWindowResize)
   163             self.ParamsEditor.SetBackgroundColour(WINDOW_COLOUR)
   163         self.ParamsEditor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
   164             self.ParamsEditor.Bind(wx.EVT_SIZE, self.OnWindowResize)
   164         
   165             self.ParamsEditor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
   165         # Variable allowing disabling of ParamsEditor scroll when Popup shown 
   166             
   166         self.ScrollingEnabled = True
   167             # Variable allowing disabling of ParamsEditor scroll when Popup shown 
   167         
   168             self.ScrollingEnabled = True
   168         self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   169             
   169         self.ParamsEditorSizer.AddGrowableCol(0)
   170             self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
   170         self.ParamsEditorSizer.AddGrowableRow(1)
   171             self.ParamsEditorSizer.AddGrowableCol(0)
   171         
   172             self.ParamsEditorSizer.AddGrowableRow(1)
   172         self.ParamsEditor.SetSizer(self.ParamsEditorSizer)
   173             
   173         
   174             self.ParamsEditor.SetSizer(self.ParamsEditorSizer)
   174         baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL)
   175             
   175         self.ParamsEditorSizer.AddSizer(baseparamseditor_sizer, 0, border=5, 
   176             baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL)
   176                                         flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.TOP)
   177             self.ParamsEditorSizer.AddSizer(baseparamseditor_sizer, 0, border=5, 
   177         
   178                                             flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.TOP)
   178         self.FullIECChannel = wx.StaticText(self.ParamsEditor, -1)
   179             
   179         self.FullIECChannel.SetFont(
   180             self.FullIECChannel = wx.StaticText(self.ParamsEditor, -1)
   180             wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, 
   181             self.FullIECChannel.SetFont(
   181                     wx.BOLD, faceName = faces["helv"]))
   182                 wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, 
   182         baseparamseditor_sizer.AddWindow(self.FullIECChannel, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL)
   183                         wx.BOLD, faceName = faces["helv"]))
   183         
   184             baseparamseditor_sizer.AddWindow(self.FullIECChannel, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL)
   184         updownsizer = wx.BoxSizer(wx.VERTICAL)
   185             
   185         baseparamseditor_sizer.AddSizer(updownsizer, 0, border=5, 
   186             updownsizer = wx.BoxSizer(wx.VERTICAL)
   186                                     flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL)
   187             baseparamseditor_sizer.AddSizer(updownsizer, 0, border=5, 
   187         
   188                                         flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL)
   188         ieccupbutton_id = wx.NewId()
   189             
   189         self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton(
   190             ieccupbutton_id = wx.NewId()
   190               id=ieccupbutton_id, bitmap=wx.Bitmap(opjimg('IECCDown')),
   191             self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton(
   191               name='IECUpButton', parent=self.ParamsEditor, pos=wx.Point(0, 0),
   192                   id=ieccupbutton_id, bitmap=wx.Bitmap(opjimg('IECCDown')),
   192               size=wx.Size(16, 16), style=wx.NO_BORDER)
   193                   name='IECUpButton', parent=self.ParamsEditor, pos=wx.Point(0, 0),
   193         self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), 
   194                   size=wx.Size(16, 16), style=wx.NO_BORDER)
   194                               id=ieccupbutton_id)
   195             self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), 
   195         updownsizer.AddWindow(self.IECCUpButton, 0, border=0, flag=wx.ALIGN_LEFT)
   196                                   id=ieccupbutton_id)
   196         
   197             updownsizer.AddWindow(self.IECCUpButton, 0, border=0, flag=wx.ALIGN_LEFT)
   197         ieccdownbutton_id = wx.NewId()
   198             
   198         self.IECCDownButton = wx.lib.buttons.GenBitmapButton(
   199             ieccdownbutton_id = wx.NewId()
   199               id=ieccdownbutton_id, bitmap=wx.Bitmap(opjimg('IECCUp')),
   200             self.IECCDownButton = wx.lib.buttons.GenBitmapButton(
   200               name='IECDownButton', parent=self.ParamsEditor, pos=wx.Point(0, 0),
   201                   id=ieccdownbutton_id, bitmap=wx.Bitmap(opjimg('IECCUp')),
   201               size=wx.Size(16, 16), style=wx.NO_BORDER)
   202                   name='IECDownButton', parent=self.ParamsEditor, pos=wx.Point(0, 0),
   202         self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), 
   203                   size=wx.Size(16, 16), style=wx.NO_BORDER)
   203                                 id=ieccdownbutton_id)
   204             self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), 
   204         updownsizer.AddWindow(self.IECCDownButton, 0, border=0, flag=wx.ALIGN_LEFT)
   205                                     id=ieccdownbutton_id)
   205         
   206             updownsizer.AddWindow(self.IECCDownButton, 0, border=0, flag=wx.ALIGN_LEFT)
   206         confnodename_id = wx.NewId()
   207             
   207         self.ConfNodeName = wx.TextCtrl(
   208             confnodename_id = wx.NewId()
   208               self.ParamsEditor, confnodename_id, 
   209             self.ConfNodeName = wx.TextCtrl(
   209               size=wx.Size(150, 25), style=wx.NO_BORDER)
   210                   self.ParamsEditor, confnodename_id, 
   210         self.ConfNodeName.SetFont(
   211                   size=wx.Size(150, 25), style=wx.NO_BORDER)
   211             wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, 
   212             self.ConfNodeName.SetFont(
   212                     wx.BOLD, faceName = faces["helv"]))
   213                 wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, 
   213         self.ConfNodeName.Bind(wx.EVT_TEXT, 
   214                         wx.BOLD, faceName = faces["helv"]))
   214             self.GetTextCtrlCallBackFunction(self.ConfNodeName, "BaseParams.Name", True), 
   215             self.ConfNodeName.Bind(wx.EVT_TEXT, 
   215             id=confnodename_id)
   216                 self.GetTextCtrlCallBackFunction(self.ConfNodeName, "BaseParams.Name", True), 
   216         baseparamseditor_sizer.AddWindow(self.ConfNodeName, 0, border=5, flag=wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   217                 id=confnodename_id)
   217         
   218             baseparamseditor_sizer.AddWindow(self.ConfNodeName, 0, border=5, flag=wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   218         buttons_sizer = self.GenerateMethodButtonSizer()
   219             
   219         baseparamseditor_sizer.AddSizer(buttons_sizer, 0, border=0, flag=wx.ALIGN_CENTER)
   220             buttons_sizer = self.GenerateMethodButtonSizer()
   220         
   221             baseparamseditor_sizer.AddSizer(buttons_sizer, 0, border=0, flag=wx.ALIGN_CENTER)
   221         self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL)
   222             
   222         self.ParamsEditorSizer.AddSizer(self.ConfNodeParamsSizer, 0, border=5, 
   223             self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL)
   223                                         flag=wx.LEFT|wx.RIGHT|wx.BOTTOM)
   224             self.ParamsEditorSizer.AddSizer(self.ConfNodeParamsSizer, 0, border=5, 
       
   225                                             flag=wx.LEFT|wx.RIGHT|wx.BOTTOM)
       
   226         else:
       
   227             self.ParamsEditor = None
   224         
   228         
   225         self._init_ConfNodeEditor(self.Editor)
   229         self._init_ConfNodeEditor(self.Editor)
   226             
   230             
   227         if self.ConfNodeEditor is not None:
   231         if self.ConfNodeEditor is not None:
   228             min_size = self.ParamsEditorSizer.GetMinSize()
   232             if self.ParamsEditor is not None:
   229             self.Editor.SplitHorizontally(self.ParamsEditor, 
   233                 min_size = self.ParamsEditorSizer.GetMinSize()
   230                                    self.ConfNodeEditor, 
   234                 self.Editor.SplitHorizontally(self.ParamsEditor, 
   231                                    min(min_size.height, 200))
   235                                               self.ConfNodeEditor, 
   232         else:
   236                                               min(min_size.height, 200))
       
   237             else:
       
   238                 self.Editor.Initialize(self.ConfNodeEditor)
       
   239         elif self.ParamsEditor is not None:
   233             self.Editor.Initialize(self.ParamsEditor)
   240             self.Editor.Initialize(self.ParamsEditor)
   234     
   241     
   235     def __init__(self, parent, controler, window, tagname=""):
   242     def __init__(self, parent, controler, window, tagname=""):
   236         EditorPanel.__init__(self, parent, tagname, window, controler)
   243         EditorPanel.__init__(self, parent, tagname, window, controler)
   237         
   244         
   264     def Redo(self):
   271     def Redo(self):
   265         pass
   272         pass
   266     
   273     
   267     def RefreshView(self):
   274     def RefreshView(self):
   268         EditorPanel.RefreshView(self)
   275         EditorPanel.RefreshView(self)
   269         self.ConfNodeName.ChangeValue(self.Controler.MandatoryParams[1].getName())
   276         if self.ParamsEditor is not None:
   270         self.RefreshIECChannelControlsState()
   277             self.ConfNodeName.ChangeValue(self.Controler.MandatoryParams[1].getName())
   271         self.RefreshConfNodeParamsSizer()
   278             self.RefreshIECChannelControlsState()
       
   279             self.RefreshConfNodeParamsSizer()
   272     
   280     
   273     def EnableScrolling(self, enable):
   281     def EnableScrolling(self, enable):
   274         self.ScrollingEnabled = enable
   282         self.ScrollingEnabled = enable
   275     
   283     
   276     def RefreshIECChannelControlsState(self):
   284     def RefreshIECChannelControlsState(self):