Beremiz.py
changeset 99 e5e9cb0f027f
parent 98 d359f0e7a97c
child 101 93e487ccee14
equal deleted inserted replaced
98:d359f0e7a97c 99:e5e9cb0f027f
   263         parent.AddGrowableCol(1)
   263         parent.AddGrowableCol(1)
   264         
   264         
   265     def _init_sizers(self):
   265     def _init_sizers(self):
   266         self.PLCConfigMainSizer = wx.FlexGridSizer(cols=1, hgap=2, rows=2, vgap=2)
   266         self.PLCConfigMainSizer = wx.FlexGridSizer(cols=1, hgap=2, rows=2, vgap=2)
   267         self.PLCParamsSizer = wx.BoxSizer(wx.VERTICAL)
   267         self.PLCParamsSizer = wx.BoxSizer(wx.VERTICAL)
   268         self.PluginTreeSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=0, vgap=2)
   268         self.PluginTreeSizer = wx.FlexGridSizer(cols=3, hgap=0, rows=0, vgap=2)
   269         
   269         
   270         self._init_coll_PLCConfigMainSizer_Items(self.PLCConfigMainSizer)
   270         self._init_coll_PLCConfigMainSizer_Items(self.PLCConfigMainSizer)
   271         self._init_coll_PLCConfigMainSizer_Growables(self.PLCConfigMainSizer)
   271         self._init_coll_PLCConfigMainSizer_Growables(self.PLCConfigMainSizer)
   272         self._init_coll_PluginTreeSizer_Growables(self.PluginTreeSizer)
   272         self._init_coll_PluginTreeSizer_Growables(self.PluginTreeSizer)
   273         
   273         
   415             minimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
   415             minimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
   416             minimizebutton.labelDelta = 0
   416             minimizebutton.labelDelta = 0
   417             minimizebutton.SetBezelWidth(0)
   417             minimizebutton.SetBezelWidth(0)
   418             minimizebutton.SetUseFocusIndicator(False)
   418             minimizebutton.SetUseFocusIndicator(False)
   419             minimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png')))
   419             minimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png')))
       
   420             plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL)
       
   421             
       
   422             self.PLCConfigMainSizer.Layout()
       
   423             self.RefreshScrollBars()
       
   424             
       
   425             if len(self.PluginRoot.PlugChildsTypes) > 0:
       
   426                 addsizer = self.GenerateAddButtonSizer(self.PluginRoot, plcwindow)
       
   427                 plcwindowbuttonsizer.AddSizer(addsizer, 0, border=0, flag=0)
       
   428             else:
       
   429                 addsizer = None
       
   430 
   420             def togglewindow(event):
   431             def togglewindow(event):
   421                 if minimizebutton.GetToggle():
   432                 if minimizebutton.GetToggle():
   422                     paramswindow.Show()
   433                     paramswindow.Show()
   423                     msizer.SetCols(1)
   434                     msizer.SetCols(1)
       
   435                     if addsizer is not None:
       
   436                         addsizer.SetCols(1)
   424                 else:
   437                 else:
   425                     paramswindow.Hide()
   438                     paramswindow.Hide()
   426                     msizer.SetCols(len(self.PluginRoot.PluginMethods))
   439                     msizer.SetCols(len(self.PluginRoot.PluginMethods))
       
   440                     if addsizer is not None:
       
   441                         addsizer.SetCols(len(self.PluginRoot.PlugChildsTypes))
   427                 self.PLCConfigMainSizer.Layout()
   442                 self.PLCConfigMainSizer.Layout()
   428                 self.RefreshScrollBars()
   443                 self.RefreshScrollBars()
   429                 event.Skip()
   444                 event.Skip()
   430             minimizebutton.Bind(wx.EVT_BUTTON, togglewindow, id=minimizebutton_id)
   445             minimizebutton.Bind(wx.EVT_BUTTON, togglewindow, id=minimizebutton_id)
   431             plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL)
   446             
   432             
   447 
   433             self.PLCConfigMainSizer.Layout()
   448     def GenerateAddButtonSizer(self, plugin, parent, horizontal = True):
   434             self.RefreshScrollBars()
   449         if horizontal:
   435             
   450             addsizer = wx.FlexGridSizer(cols=len(plugin.PluginMethods))
   436             if len(self.PluginRoot.PlugChildsTypes) > 0:
   451         else:
   437                 plcwindowmainsizer.AddSizer(self.GenerateAddButtonSizer(self.PluginRoot, plcwindow), 0, border=0, flag=wx.ALIGN_CENTER)
   452             addsizer = wx.FlexGridSizer(cols=1)
   438 
       
   439     def GenerateAddButtonSizer(self, plugin, parent):
       
   440         addsizer = wx.BoxSizer(wx.HORIZONTAL)
       
   441         for name, XSDClass in plugin.PlugChildsTypes:
   453         for name, XSDClass in plugin.PlugChildsTypes:
   442             addbutton_id = wx.NewId()
   454             addbutton_id = wx.NewId()
   443             addbutton = wx.lib.buttons.GenButton(id=addbutton_id, label="Add %s"%name,
   455             addbutton = wx.lib.buttons.GenButton(id=addbutton_id, label="Add %s"%name,
   444                   name='AddBusButton', parent=parent, pos=wx.Point(0, 0),
   456                   name='AddBusButton', parent=parent, pos=wx.Point(0, 0),
   445                   style=wx.NO_BORDER)
   457                   style=wx.NO_BORDER)
   448             addbutton.SetFont(font)
   460             addbutton.SetFont(font)
   449             addbutton._GetLabelSize = gen_textbutton_GetLabelSize(addbutton)
   461             addbutton._GetLabelSize = gen_textbutton_GetLabelSize(addbutton)
   450             addbutton.SetForegroundColour(wx.BLUE)
   462             addbutton.SetForegroundColour(wx.BLUE)
   451             addbutton.SetToolTipString("Add a %s plugin to this one"%name)
   463             addbutton.SetToolTipString("Add a %s plugin to this one"%name)
   452             addbutton.Bind(wx.EVT_BUTTON, self._GetAddPluginFunction(name, plugin), id=addbutton_id)
   464             addbutton.Bind(wx.EVT_BUTTON, self._GetAddPluginFunction(name, plugin), id=addbutton_id)
   453             addsizer.AddWindow(addbutton, 0, border=0, flag=wx.ALIGN_CENTER)
   465             addsizer.AddWindow(addbutton, 0, border=0, flag=0)
   454         return addsizer
   466         return addsizer
   455 
   467 
   456     def GenerateMethodButtonSizer(self, plugin, parent, horizontal = True):
   468     def GenerateMethodButtonSizer(self, plugin, parent, horizontal = True):
   457         if horizontal:
   469         if horizontal:
   458             msizer = wx.FlexGridSizer(cols=len(plugin.PluginMethods))
   470             msizer = wx.FlexGridSizer(cols=len(plugin.PluginMethods))
   484         self.RefreshScrollBars()
   496         self.RefreshScrollBars()
   485 
   497 
   486     def ExpandPlugin(self, plugin, force = False):
   498     def ExpandPlugin(self, plugin, force = False):
   487         for child in self.PluginInfos[plugin]["children"]:
   499         for child in self.PluginInfos[plugin]["children"]:
   488             self.PluginTreeSizer.Show(self.PluginInfos[child]["left"])
   500             self.PluginTreeSizer.Show(self.PluginInfos[child]["left"])
       
   501             self.PluginTreeSizer.Show(self.PluginInfos[child]["middle"])
   489             self.PluginTreeSizer.Show(self.PluginInfos[child]["right"])
   502             self.PluginTreeSizer.Show(self.PluginInfos[child]["right"])
   490             if force or not self.PluginInfos[child]["expanded"]:
   503             if force or not self.PluginInfos[child]["expanded"]:
   491                 self.ExpandPlugin(child, force)
   504                 self.ExpandPlugin(child, force)
   492                 if force:
   505                 if force:
   493                     self.PluginInfos[child]["expanded"] = True
   506                     self.PluginInfos[child]["expanded"] = True
   494     
   507     
   495     def CollapsePlugin(self, plugin, force = False):
   508     def CollapsePlugin(self, plugin, force = False):
   496         for child in self.PluginInfos[plugin]["children"]:
   509         for child in self.PluginInfos[plugin]["children"]:
   497             self.PluginTreeSizer.Hide(self.PluginInfos[child]["left"])
   510             self.PluginTreeSizer.Hide(self.PluginInfos[child]["left"])
       
   511             self.PluginTreeSizer.Hide(self.PluginInfos[child]["middle"])
   498             self.PluginTreeSizer.Hide(self.PluginInfos[child]["right"])
   512             self.PluginTreeSizer.Hide(self.PluginInfos[child]["right"])
   499             if force or self.PluginInfos[child]["expanded"]:
   513             if force or self.PluginInfos[child]["expanded"]:
   500                 self.CollapsePlugin(child, force)
   514                 self.CollapsePlugin(child, force)
   501                 if force:
   515                 if force:
   502                     self.PluginInfos[child]["expanded"] = False
   516                     self.PluginInfos[child]["expanded"] = False
   504     def GenerateTreeBranch(self, plugin, index):
   518     def GenerateTreeBranch(self, plugin, index):
   505         leftwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1))
   519         leftwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1))
   506         leftwindow.SetBackgroundColour(WINDOW_COLOUR)
   520         leftwindow.SetBackgroundColour(WINDOW_COLOUR)
   507         
   521         
   508         if plugin not in self.PluginInfos:
   522         if plugin not in self.PluginInfos:
   509             self.PluginInfos[plugin] = {"expanded" : False, "left_visible" : False, "right_visible" : False}
   523             self.PluginInfos[plugin] = {"expanded" : False, "left_visible" : False, "middle_visible" : False}
   510             
   524             
   511         self.PluginInfos[plugin]["children"] = plugin.IECSortedChilds()
   525         self.PluginInfos[plugin]["children"] = plugin.IECSortedChilds()
   512         
   526         
   513         self.PluginTreeSizer.AddWindow(leftwindow, 0, border=0, flag=wx.GROW)
   527         self.PluginTreeSizer.AddWindow(leftwindow, 0, border=0, flag=wx.GROW)
   514         
   528         
   583         tc.SetValue(plugin.MandatoryParams[1].getName())
   597         tc.SetValue(plugin.MandatoryParams[1].getName())
   584         tc.Bind(wx.EVT_TEXT_ENTER, self.GetTextCtrlCallBackFunction(tc, plugin, "BaseParams.Name"), id=tc_id)
   598         tc.Bind(wx.EVT_TEXT_ENTER, self.GetTextCtrlCallBackFunction(tc, plugin, "BaseParams.Name"), id=tc_id)
   585         leftbuttonsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   599         leftbuttonsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
   586         
   600         
   587         enablebutton_id = wx.NewId()
   601         enablebutton_id = wx.NewId()
   588         enablebutton = wx.lib.buttons.GenBitmapTextToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')),
   602         enablebutton = wx.lib.buttons.GenBitmapToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')),
   589               name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), label="Enabled", style=wx.NO_BORDER)
   603               name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), style=wx.NO_BORDER)
       
   604         enablebutton.SetToolTipString("Enable/Disable this plugin")
   590         enablebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(enablebutton)
   605         enablebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(enablebutton)
   591         enablebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
   606         enablebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
   592         enablebutton._GetLabelSize = gen_mini_GetLabelSize(enablebutton)
       
   593         enablebutton.labelDelta = 0
   607         enablebutton.labelDelta = 0
   594         enablebutton.SetBezelWidth(0)
   608         enablebutton.SetBezelWidth(0)
   595         enablebutton.SetUseFocusIndicator(False)
   609         enablebutton.SetUseFocusIndicator(False)
   596         enablebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Enabled.png')))
   610         enablebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Enabled.png')))
   597         enablebutton.SetToggle(plugin.MandatoryParams[1].getEnabled())
   611         enablebutton.SetToggle(plugin.MandatoryParams[1].getEnabled())
   639         for location in locations:
   653         for location in locations:
   640             lb.Append(location["NAME"].replace("__", "%").replace("_", "."))
   654             lb.Append(location["NAME"].replace("__", "%").replace("_", "."))
   641         if not self.PluginInfos[plugin]["left_visible"]:
   655         if not self.PluginInfos[plugin]["left_visible"]:
   642             lb.Hide()
   656             lb.Hide()
   643         self.PluginInfos[plugin]["variable_list"] = lb
   657         self.PluginInfos[plugin]["variable_list"] = lb
   644         if len(plugin.PlugChildsTypes) > 0:
   658         leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM)
   645             leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT)
   659 
   646             leftwindowsizer.AddSizer(self.GenerateAddButtonSizer(plugin, leftwindow), 0, border=5, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM)
   660         middlewindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1))
   647         else:
   661         middlewindow.SetBackgroundColour(wx.Colour(240,240,240))
   648             leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM)
   662         
   649 
   663         self.PluginTreeSizer.AddWindow(middlewindow, 0, border=0, flag=wx.GROW)
       
   664         
       
   665         middlewindowmainsizer = wx.BoxSizer(wx.VERTICAL)
       
   666         middlewindow.SetSizer(middlewindowmainsizer)
       
   667         
       
   668         middlewindowsizer = wx.FlexGridSizer(cols=2, rows=1)
       
   669         middlewindowsizer.AddGrowableCol(1)
       
   670         middlewindowsizer.AddGrowableRow(0)
       
   671         middlewindowmainsizer.AddSizer(middlewindowsizer, 0, border=17, flag=wx.TOP|wx.GROW)
       
   672         
       
   673         msizer = self.GenerateMethodButtonSizer(plugin, middlewindow, not self.PluginInfos[plugin]["middle_visible"])
       
   674         middlewindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW)
       
   675         
       
   676         middleparamssizer = wx.BoxSizer(wx.HORIZONTAL)
       
   677         middlewindowsizer.AddSizer(middleparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT)
       
   678         
       
   679         paramswindow = wx.Panel(middlewindow, -1, size=wx.Size(-1, -1))
       
   680         paramswindow.SetBackgroundColour(WINDOW_COLOUR)
       
   681         
       
   682         psizer = wx.BoxSizer(wx.HORIZONTAL)
       
   683         paramswindow.SetSizer(psizer)
       
   684         
       
   685         middleparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL)
       
   686         
       
   687         plugin_infos = plugin.GetParamsAttributes()
       
   688         self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False)
       
   689         
       
   690         if not self.PluginInfos[plugin]["middle_visible"]:
       
   691             paramswindow.Hide()
       
   692         
       
   693         middleminimizebutton_id = wx.NewId()
       
   694         middleminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=middleminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')),
       
   695               name='MinimizeButton', parent=middlewindow, pos=wx.Point(0, 0),
       
   696               size=wx.Size(24, 24), style=wx.NO_BORDER)
       
   697         middleminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(middleminimizebutton)
       
   698         middleminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
       
   699         middleminimizebutton.labelDelta = 0
       
   700         middleminimizebutton.SetBezelWidth(0)
       
   701         middleminimizebutton.SetUseFocusIndicator(False)
       
   702         middleminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png')))
       
   703         middleminimizebutton.SetToggle(self.PluginInfos[plugin]["middle_visible"])
       
   704         middleparamssizer.AddWindow(middleminimizebutton, 0, border=5, flag=wx.ALL)
       
   705         
   650         rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1))
   706         rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1))
   651         rightwindow.SetBackgroundColour(wx.Colour(240,240,240))
   707         rightwindow.SetBackgroundColour(wx.Colour(240,240,240))
   652         
   708         
   653         self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW)
   709         self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW)
   654         
   710         
   655         rightwindowmainsizer = wx.BoxSizer(wx.VERTICAL)
   711         rightsizer = wx.BoxSizer(wx.VERTICAL)
   656         rightwindow.SetSizer(rightwindowmainsizer)
   712         rightwindow.SetSizer(rightsizer)
   657         
   713         
   658         rightwindowsizer = wx.FlexGridSizer(cols=2, rows=1)
   714         rightmainsizer = wx.BoxSizer(wx.VERTICAL)
   659         rightwindowsizer.AddGrowableCol(1)
   715         rightsizer.AddSizer(rightmainsizer, 0, border=5, flag=wx.ALL)
   660         rightwindowsizer.AddGrowableRow(0)
   716         
   661         rightwindowmainsizer.AddSizer(rightwindowsizer, 0, border=17, flag=wx.TOP|wx.GROW)
   717         if len(plugin.PlugChildsTypes) > 0:
   662         
   718             addsizer = self.GenerateAddButtonSizer(plugin, rightwindow)
   663         msizer = self.GenerateMethodButtonSizer(plugin, rightwindow, not self.PluginInfos[plugin]["right_visible"])
   719             rightmainsizer.AddSizer(addsizer, 0, border=12, flag=wx.TOP)
   664         rightwindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW)
   720         else:
   665         
   721             addsizer = None
   666         rightparamssizer = wx.BoxSizer(wx.HORIZONTAL)
   722             
   667         rightwindowsizer.AddSizer(rightparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT)
   723         def togglemiddlerightwindow(event):
   668         
   724             if middleminimizebutton.GetToggle():
   669         paramswindow = wx.Panel(rightwindow, -1, size=wx.Size(-1, -1))
   725                 middleparamssizer.Show(0)
   670         paramswindow.SetBackgroundColour(WINDOW_COLOUR)
       
   671         
       
   672         psizer = wx.BoxSizer(wx.HORIZONTAL)
       
   673         paramswindow.SetSizer(psizer)
       
   674         
       
   675         rightparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL)
       
   676         
       
   677         plugin_infos = plugin.GetParamsAttributes()
       
   678         self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False)
       
   679         
       
   680         if not self.PluginInfos[plugin]["right_visible"]:
       
   681             paramswindow.Hide()
       
   682         
       
   683         rightminimizebutton_id = wx.NewId()
       
   684         rightminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=rightminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')),
       
   685               name='MinimizeButton', parent=rightwindow, pos=wx.Point(0, 0),
       
   686               size=wx.Size(24, 24), style=wx.NO_BORDER)
       
   687         rightminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(rightminimizebutton)
       
   688         rightminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208))
       
   689         rightminimizebutton.labelDelta = 0
       
   690         rightminimizebutton.SetBezelWidth(0)
       
   691         rightminimizebutton.SetUseFocusIndicator(False)
       
   692         rightminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png')))
       
   693         rightminimizebutton.SetToggle(self.PluginInfos[plugin]["right_visible"])
       
   694         def togglerightwindow(event):
       
   695             if rightminimizebutton.GetToggle():
       
   696                 rightparamssizer.Show(0)
       
   697                 msizer.SetCols(1)
   726                 msizer.SetCols(1)
       
   727                 if addsizer is not None:
       
   728                     addsizer.SetCols(1)
   698             else:
   729             else:
   699                 rightparamssizer.Hide(0)
   730                 middleparamssizer.Hide(0)
   700                 msizer.SetCols(len(plugin.PluginMethods))
   731                 msizer.SetCols(len(plugin.PluginMethods))
   701             self.PluginInfos[plugin]["right_visible"] = rightminimizebutton.GetToggle()
   732                 if addsizer is not None:
       
   733                     addsizer.SetCols(len(plugin.PlugChildsTypes))
       
   734             self.PluginInfos[plugin]["middle_visible"] = middleminimizebutton.GetToggle()
   702             self.PLCConfigMainSizer.Layout()
   735             self.PLCConfigMainSizer.Layout()
   703             self.RefreshScrollBars()
   736             self.RefreshScrollBars()
   704             event.Skip()
   737             event.Skip()
   705         rightminimizebutton.Bind(wx.EVT_BUTTON, togglerightwindow, id=rightminimizebutton_id)
   738         middleminimizebutton.Bind(wx.EVT_BUTTON, togglemiddlerightwindow, id=middleminimizebutton_id)
   706         rightparamssizer.AddWindow(rightminimizebutton, 0, border=5, flag=wx.ALL)
   739         
   707             
       
   708         self.PluginInfos[plugin]["left"] = index[0]
   740         self.PluginInfos[plugin]["left"] = index[0]
   709         self.PluginInfos[plugin]["right"] = index[0] + 1
   741         self.PluginInfos[plugin]["middle"] = index[0] + 1
   710         index[0] += 2
   742         self.PluginInfos[plugin]["right"] = index[0] + 2
       
   743         index[0] += 3
   711         for child in self.PluginInfos[plugin]["children"]:
   744         for child in self.PluginInfos[plugin]["children"]:
   712             self.GenerateTreeBranch(child, index)
   745             self.GenerateTreeBranch(child, index)
   713             if not self.PluginInfos[child]["expanded"]:
   746             if not self.PluginInfos[child]["expanded"]:
   714                 self.CollapsePlugin(child)
   747                 self.CollapsePlugin(child)
   715 
   748