editors/ConfTreeNodeEditor.py
changeset 1055 da483f620668
parent 920 1499a4d225db
child 1059 50246061d5c6
equal deleted inserted replaced
1054:ef514eaacd8c 1055:da483f620668
   145     SHOW_PARAMS = True
   145     SHOW_PARAMS = True
   146     CONFNODEEDITOR_TABS = []
   146     CONFNODEEDITOR_TABS = []
   147     
   147     
   148     def _init_Editor(self, parent):
   148     def _init_Editor(self, parent):
   149         tabs_num = len(self.CONFNODEEDITOR_TABS)
   149         tabs_num = len(self.CONFNODEEDITOR_TABS)
   150         if self.SHOW_PARAMS:
   150         if self.SHOW_PARAMS and len(self.Controler.GetParamsAttributes()) > 0:
   151             tabs_num += 1
   151             tabs_num += 1
   152             
   152             
   153         if tabs_num > 1:
   153         if tabs_num > 1 or self.SHOW_BASE_PARAMS:
   154             self.Editor = wx.Panel(parent, 
   154             self.Editor = wx.Panel(parent, 
   155                 style=wx.SUNKEN_BORDER|wx.SP_3D)
   155                 style=wx.SUNKEN_BORDER|wx.SP_3D)
   156             
   156             self.Editor.SetBackgroundColour(WINDOW_COLOUR)
   157             main_sizer = wx.BoxSizer(wx.VERTICAL)
   157             
   158             
   158             self.MainSizer = wx.BoxSizer(wx.VERTICAL)
   159             self.ConfNodeNoteBook = wx.Notebook(self.Editor)
       
   160             parent = self.ConfNodeNoteBook
       
   161             main_sizer.AddWindow(self.ConfNodeNoteBook, 1, flag=wx.GROW)
       
   162             
       
   163             self.Editor.SetSizer(main_sizer)
       
   164         else:
       
   165             self.ConfNodeNoteBook = None
       
   166             self.Editor = None
       
   167         
       
   168         for title, create_func_name in self.CONFNODEEDITOR_TABS:
       
   169             editor = getattr(self, create_func_name)(parent)
       
   170             if self.ConfNodeNoteBook is not None:
       
   171                 self.ConfNodeNoteBook.AddPage(editor, title)
       
   172             else:
       
   173                 self.Editor = editor
       
   174         
       
   175         if self.SHOW_PARAMS:
       
   176             
       
   177             panel_style = wx.TAB_TRAVERSAL|wx.HSCROLL|wx.VSCROLL
       
   178             if self.ConfNodeNoteBook is None:
       
   179                 panel_style |= wx.SUNKEN_BORDER
       
   180             self.ParamsEditor = wx.ScrolledWindow(parent, 
       
   181                   style=panel_style)
       
   182             self.ParamsEditor.SetBackgroundColour(WINDOW_COLOUR)
       
   183             self.ParamsEditor.Bind(wx.EVT_SIZE, self.OnWindowResize)
       
   184             self.ParamsEditor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
       
   185             
       
   186             # Variable allowing disabling of ParamsEditor scroll when Popup shown 
       
   187             self.ScrollingEnabled = True
       
   188             
   159             
   189             if self.SHOW_BASE_PARAMS:
   160             if self.SHOW_BASE_PARAMS:
   190                 self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
       
   191                 self.ParamsEditorSizer.AddGrowableCol(0)
       
   192                 self.ParamsEditorSizer.AddGrowableRow(1)
       
   193                 
       
   194                 self.ParamsEditor.SetSizer(self.ParamsEditorSizer)
       
   195                 
       
   196                 baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL)
   161                 baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL)
   197                 self.ParamsEditorSizer.AddSizer(baseparamseditor_sizer, border=5, 
   162                 self.MainSizer.AddSizer(baseparamseditor_sizer, border=5, 
   198                       flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.TOP)
   163                       flag=wx.GROW|wx.ALL)
   199                 
   164                 
   200                 self.FullIECChannel = wx.StaticText(self.ParamsEditor, -1)
   165                 self.FullIECChannel = wx.StaticText(self.Editor, -1)
   201                 self.FullIECChannel.SetFont(
   166                 self.FullIECChannel.SetFont(
   202                     wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, 
   167                     wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, 
   203                             wx.BOLD, faceName = faces["helv"]))
   168                             wx.BOLD, faceName = faces["helv"]))
   204                 baseparamseditor_sizer.AddWindow(self.FullIECChannel, 
   169                 baseparamseditor_sizer.AddWindow(self.FullIECChannel, 
   205                       flag=wx.ALIGN_CENTER_VERTICAL)
   170                       flag=wx.ALIGN_CENTER_VERTICAL)
   206                 
   171                 
   207                 updownsizer = wx.BoxSizer(wx.VERTICAL)
   172                 updownsizer = wx.BoxSizer(wx.VERTICAL)
   208                 baseparamseditor_sizer.AddSizer(updownsizer, border=5, 
   173                 baseparamseditor_sizer.AddSizer(updownsizer, border=5, 
   209                       flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL)
   174                       flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL)
   210                 
   175                 
   211                 self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton(self.ParamsEditor, 
   176                 self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton(self.Editor, 
   212                       bitmap=GetBitmap('IECCDown'), size=wx.Size(16, 16), style=wx.NO_BORDER)
   177                       bitmap=GetBitmap('IECCDown'), size=wx.Size(16, 16), style=wx.NO_BORDER)
   213                 self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), 
   178                 self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), 
   214                       self.IECCUpButton)
   179                       self.IECCUpButton)
   215                 updownsizer.AddWindow(self.IECCUpButton, flag=wx.ALIGN_LEFT)
   180                 updownsizer.AddWindow(self.IECCUpButton, flag=wx.ALIGN_LEFT)
   216                 
   181                 
   217                 self.IECCDownButton = wx.lib.buttons.GenBitmapButton(self.ParamsEditor, 
   182                 self.IECCDownButton = wx.lib.buttons.GenBitmapButton(self.Editor, 
   218                       bitmap=GetBitmap('IECCUp'), size=wx.Size(16, 16), style=wx.NO_BORDER)
   183                       bitmap=GetBitmap('IECCUp'), size=wx.Size(16, 16), style=wx.NO_BORDER)
   219                 self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), 
   184                 self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), 
   220                       self.IECCDownButton)
   185                       self.IECCDownButton)
   221                 updownsizer.AddWindow(self.IECCDownButton, flag=wx.ALIGN_LEFT)
   186                 updownsizer.AddWindow(self.IECCDownButton, flag=wx.ALIGN_LEFT)
   222                 
   187                 
   223                 self.ConfNodeName = wx.TextCtrl(self.ParamsEditor, 
   188                 self.ConfNodeName = wx.TextCtrl(self.Editor, 
   224                       size=wx.Size(150, 25), style=wx.NO_BORDER)
   189                       size=wx.Size(150, 25), style=wx.NO_BORDER)
   225                 self.ConfNodeName.SetFont(
   190                 self.ConfNodeName.SetFont(
   226                     wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, 
   191                     wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, 
   227                             wx.BOLD, faceName = faces["helv"]))
   192                             wx.BOLD, faceName = faces["helv"]))
   228                 self.ConfNodeName.Bind(wx.EVT_TEXT, 
   193                 self.ConfNodeName.Bind(wx.EVT_TEXT, 
   232                       flag=wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   197                       flag=wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   233                 
   198                 
   234                 buttons_sizer = self.GenerateMethodButtonSizer()
   199                 buttons_sizer = self.GenerateMethodButtonSizer()
   235                 baseparamseditor_sizer.AddSizer(buttons_sizer, flag=wx.ALIGN_CENTER)
   200                 baseparamseditor_sizer.AddSizer(buttons_sizer, flag=wx.ALIGN_CENTER)
   236             
   201             
       
   202             if tabs_num > 1:
       
   203                 self.ConfNodeNoteBook = wx.Notebook(self.Editor)
       
   204                 parent = self.ConfNodeNoteBook
       
   205                 self.MainSizer.AddWindow(self.ConfNodeNoteBook, 1, flag=wx.GROW)
   237             else:
   206             else:
   238                 self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=5)
   207                 self.ConfNodeNoteBook = None
   239                 self.ParamsEditorSizer.AddGrowableCol(0)
   208             
   240                 self.ParamsEditorSizer.AddGrowableRow(0)
   209             self.Editor.SetSizer(self.MainSizer)
       
   210         else:
       
   211             self.ConfNodeNoteBook = None
       
   212             self.Editor = None
       
   213         
       
   214         for title, create_func_name in self.CONFNODEEDITOR_TABS:
       
   215             editor = getattr(self, create_func_name)(parent)
       
   216             if self.ConfNodeNoteBook is not None:
       
   217                 self.ConfNodeNoteBook.AddPage(editor, title)
       
   218             elif self.SHOW_BASE_PARAMS:
       
   219                 self.MainSizer.AddWindow(editor, 1, flag=wx.GROW)
       
   220             else:
       
   221                 self.Editor = editor
       
   222         
       
   223         if self.SHOW_PARAMS and len(self.Controler.GetParamsAttributes()) > 0:
       
   224             
       
   225             panel_style = wx.TAB_TRAVERSAL|wx.HSCROLL|wx.VSCROLL
       
   226             editor_parent = parent
       
   227             if self.ConfNodeNoteBook is None:
       
   228                 panel_style |= wx.SUNKEN_BORDER
       
   229             self.ParamsEditor = wx.ScrolledWindow(parent, 
       
   230                   style=panel_style)
       
   231             self.ParamsEditor.SetBackgroundColour(WINDOW_COLOUR)
       
   232             self.ParamsEditor.Bind(wx.EVT_SIZE, self.OnWindowResize)
       
   233             self.ParamsEditor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel)
       
   234             
       
   235             # Variable allowing disabling of ParamsEditor scroll when Popup shown 
       
   236             self.ScrollingEnabled = True
       
   237             
       
   238             self.ParamsEditorSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=5)
       
   239             self.ParamsEditorSizer.AddGrowableCol(0)
       
   240             self.ParamsEditorSizer.AddGrowableRow(0)
       
   241             self.ParamsEditor.SetSizer(self.ParamsEditorSizer)
   241             
   242             
   242             self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL)
   243             self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL)
   243             self.ParamsEditorSizer.AddSizer(self.ConfNodeParamsSizer, border=5, 
   244             self.ParamsEditorSizer.AddSizer(self.ConfNodeParamsSizer, border=5, 
   244                   flag=wx.LEFT|wx.RIGHT|wx.BOTTOM)
   245                   flag=wx.LEFT|wx.RIGHT|wx.BOTTOM)
   245             
   246             
   246             self.RefreshConfNodeParamsSizer()
   247             self.RefreshConfNodeParamsSizer()
   247         
   248         
   248             if self.ConfNodeNoteBook is not None:
   249             if self.ConfNodeNoteBook is not None:
   249                 self.ConfNodeNoteBook.AddPage(self.ParamsEditor, _("Config"))
   250                 self.ConfNodeNoteBook.AddPage(self.ParamsEditor, _("Config"))
       
   251             elif self.SHOW_BASE_PARAMS:
       
   252                 self.MainSizer.AddWindow(self.ParamsEditor, 1, flag=wx.GROW)
   250             else:
   253             else:
   251                 self.Editor = self.ParamsEditor
   254                 self.Editor = self.ParamsEditor
   252         else:
   255         else:
   253             self.ParamsEditor = None
   256             self.ParamsEditor = None
   254     
   257     
   285     def Redo(self):
   288     def Redo(self):
   286         pass
   289         pass
   287     
   290     
   288     def RefreshView(self):
   291     def RefreshView(self):
   289         EditorPanel.RefreshView(self)
   292         EditorPanel.RefreshView(self)
       
   293         if self.SHOW_BASE_PARAMS:
       
   294             self.ConfNodeName.ChangeValue(self.Controler.MandatoryParams[1].getName())
       
   295             self.RefreshIECChannelControlsState()
   290         if self.ParamsEditor is not None:
   296         if self.ParamsEditor is not None:
   291             if self.SHOW_BASE_PARAMS:
       
   292                 self.ConfNodeName.ChangeValue(self.Controler.MandatoryParams[1].getName())
       
   293                 self.RefreshIECChannelControlsState()
       
   294             self.RefreshConfNodeParamsSizer()
   297             self.RefreshConfNodeParamsSizer()
   295             self.RefreshScrollbars()
   298             self.RefreshScrollbars()
   296     
   299     
   297     def EnableScrolling(self, enable):
   300     def EnableScrolling(self, enable):
   298         self.ScrollingEnabled = enable
   301         self.ScrollingEnabled = enable
   318         
   321         
   319         msizer = wx.BoxSizer(wx.HORIZONTAL)
   322         msizer = wx.BoxSizer(wx.HORIZONTAL)
   320         
   323         
   321         for confnode_method in self.Controler.ConfNodeMethods:
   324         for confnode_method in self.Controler.ConfNodeMethods:
   322             if "method" in confnode_method and confnode_method.get("shown",True):
   325             if "method" in confnode_method and confnode_method.get("shown",True):
   323                 button = GenBitmapTextButton(self.ParamsEditor,
   326                 button = GenBitmapTextButton(self.Editor,
   324                     bitmap=GetBitmap(confnode_method.get("bitmap", "Unknown")), 
   327                     bitmap=GetBitmap(confnode_method.get("bitmap", "Unknown")), 
   325                     label=confnode_method["name"], style=wx.NO_BORDER)
   328                     label=confnode_method["name"], style=wx.NO_BORDER)
   326                 button.SetFont(normal_bt_font)
   329                 button.SetFont(normal_bt_font)
   327                 button.SetToolTipString(confnode_method["tooltip"])
   330                 button.SetToolTipString(confnode_method["tooltip"])
   328                 if confnode_method.get("push", False):
   331                 if confnode_method.get("push", False):