# HG changeset patch # User lbessard # Date 1202492130 -3600 # Node ID e5e9cb0f027fed59a374e7c36f8d1c979562ce5e # Parent d359f0e7a97c131b48a1a99e34bfb9eabc842af8 Beremiz layout improved diff -r d359f0e7a97c -r e5e9cb0f027f Beremiz.py --- a/Beremiz.py Tue Feb 05 18:04:03 2008 +0100 +++ b/Beremiz.py Fri Feb 08 18:35:30 2008 +0100 @@ -265,7 +265,7 @@ def _init_sizers(self): self.PLCConfigMainSizer = wx.FlexGridSizer(cols=1, hgap=2, rows=2, vgap=2) self.PLCParamsSizer = wx.BoxSizer(wx.VERTICAL) - self.PluginTreeSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=0, vgap=2) + self.PluginTreeSizer = wx.FlexGridSizer(cols=3, hgap=0, rows=0, vgap=2) self._init_coll_PLCConfigMainSizer_Items(self.PLCConfigMainSizer) self._init_coll_PLCConfigMainSizer_Growables(self.PLCConfigMainSizer) @@ -417,27 +417,39 @@ minimizebutton.SetBezelWidth(0) minimizebutton.SetUseFocusIndicator(False) minimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) + plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL) + + self.PLCConfigMainSizer.Layout() + self.RefreshScrollBars() + + if len(self.PluginRoot.PlugChildsTypes) > 0: + addsizer = self.GenerateAddButtonSizer(self.PluginRoot, plcwindow) + plcwindowbuttonsizer.AddSizer(addsizer, 0, border=0, flag=0) + else: + addsizer = None + def togglewindow(event): if minimizebutton.GetToggle(): paramswindow.Show() msizer.SetCols(1) + if addsizer is not None: + addsizer.SetCols(1) else: paramswindow.Hide() msizer.SetCols(len(self.PluginRoot.PluginMethods)) + if addsizer is not None: + addsizer.SetCols(len(self.PluginRoot.PlugChildsTypes)) self.PLCConfigMainSizer.Layout() self.RefreshScrollBars() event.Skip() minimizebutton.Bind(wx.EVT_BUTTON, togglewindow, id=minimizebutton_id) - plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL) - - self.PLCConfigMainSizer.Layout() - self.RefreshScrollBars() - - if len(self.PluginRoot.PlugChildsTypes) > 0: - plcwindowmainsizer.AddSizer(self.GenerateAddButtonSizer(self.PluginRoot, plcwindow), 0, border=0, flag=wx.ALIGN_CENTER) - - def GenerateAddButtonSizer(self, plugin, parent): - addsizer = wx.BoxSizer(wx.HORIZONTAL) + + + def GenerateAddButtonSizer(self, plugin, parent, horizontal = True): + if horizontal: + addsizer = wx.FlexGridSizer(cols=len(plugin.PluginMethods)) + else: + addsizer = wx.FlexGridSizer(cols=1) for name, XSDClass in plugin.PlugChildsTypes: addbutton_id = wx.NewId() addbutton = wx.lib.buttons.GenButton(id=addbutton_id, label="Add %s"%name, @@ -450,7 +462,7 @@ addbutton.SetForegroundColour(wx.BLUE) addbutton.SetToolTipString("Add a %s plugin to this one"%name) addbutton.Bind(wx.EVT_BUTTON, self._GetAddPluginFunction(name, plugin), id=addbutton_id) - addsizer.AddWindow(addbutton, 0, border=0, flag=wx.ALIGN_CENTER) + addsizer.AddWindow(addbutton, 0, border=0, flag=0) return addsizer def GenerateMethodButtonSizer(self, plugin, parent, horizontal = True): @@ -486,6 +498,7 @@ def ExpandPlugin(self, plugin, force = False): for child in self.PluginInfos[plugin]["children"]: self.PluginTreeSizer.Show(self.PluginInfos[child]["left"]) + self.PluginTreeSizer.Show(self.PluginInfos[child]["middle"]) self.PluginTreeSizer.Show(self.PluginInfos[child]["right"]) if force or not self.PluginInfos[child]["expanded"]: self.ExpandPlugin(child, force) @@ -495,6 +508,7 @@ def CollapsePlugin(self, plugin, force = False): for child in self.PluginInfos[plugin]["children"]: self.PluginTreeSizer.Hide(self.PluginInfos[child]["left"]) + self.PluginTreeSizer.Hide(self.PluginInfos[child]["middle"]) self.PluginTreeSizer.Hide(self.PluginInfos[child]["right"]) if force or self.PluginInfos[child]["expanded"]: self.CollapsePlugin(child, force) @@ -506,7 +520,7 @@ leftwindow.SetBackgroundColour(WINDOW_COLOUR) if plugin not in self.PluginInfos: - self.PluginInfos[plugin] = {"expanded" : False, "left_visible" : False, "right_visible" : False} + self.PluginInfos[plugin] = {"expanded" : False, "left_visible" : False, "middle_visible" : False} self.PluginInfos[plugin]["children"] = plugin.IECSortedChilds() @@ -585,11 +599,11 @@ leftbuttonsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) enablebutton_id = wx.NewId() - enablebutton = wx.lib.buttons.GenBitmapTextToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')), - name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), label="Enabled", style=wx.NO_BORDER) + enablebutton = wx.lib.buttons.GenBitmapToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')), + name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), style=wx.NO_BORDER) + enablebutton.SetToolTipString("Enable/Disable this plugin") enablebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(enablebutton) enablebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) - enablebutton._GetLabelSize = gen_mini_GetLabelSize(enablebutton) enablebutton.labelDelta = 0 enablebutton.SetBezelWidth(0) enablebutton.SetUseFocusIndicator(False) @@ -641,73 +655,92 @@ if not self.PluginInfos[plugin]["left_visible"]: lb.Hide() self.PluginInfos[plugin]["variable_list"] = lb - if len(plugin.PlugChildsTypes) > 0: - leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT) - leftwindowsizer.AddSizer(self.GenerateAddButtonSizer(plugin, leftwindow), 0, border=5, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM) - else: - leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM) - + leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM) + + middlewindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) + middlewindow.SetBackgroundColour(wx.Colour(240,240,240)) + + self.PluginTreeSizer.AddWindow(middlewindow, 0, border=0, flag=wx.GROW) + + middlewindowmainsizer = wx.BoxSizer(wx.VERTICAL) + middlewindow.SetSizer(middlewindowmainsizer) + + middlewindowsizer = wx.FlexGridSizer(cols=2, rows=1) + middlewindowsizer.AddGrowableCol(1) + middlewindowsizer.AddGrowableRow(0) + middlewindowmainsizer.AddSizer(middlewindowsizer, 0, border=17, flag=wx.TOP|wx.GROW) + + msizer = self.GenerateMethodButtonSizer(plugin, middlewindow, not self.PluginInfos[plugin]["middle_visible"]) + middlewindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW) + + middleparamssizer = wx.BoxSizer(wx.HORIZONTAL) + middlewindowsizer.AddSizer(middleparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT) + + paramswindow = wx.Panel(middlewindow, -1, size=wx.Size(-1, -1)) + paramswindow.SetBackgroundColour(WINDOW_COLOUR) + + psizer = wx.BoxSizer(wx.HORIZONTAL) + paramswindow.SetSizer(psizer) + + middleparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL) + + plugin_infos = plugin.GetParamsAttributes() + self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False) + + if not self.PluginInfos[plugin]["middle_visible"]: + paramswindow.Hide() + + middleminimizebutton_id = wx.NewId() + middleminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=middleminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')), + name='MinimizeButton', parent=middlewindow, pos=wx.Point(0, 0), + size=wx.Size(24, 24), style=wx.NO_BORDER) + middleminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(middleminimizebutton) + middleminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) + middleminimizebutton.labelDelta = 0 + middleminimizebutton.SetBezelWidth(0) + middleminimizebutton.SetUseFocusIndicator(False) + middleminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) + middleminimizebutton.SetToggle(self.PluginInfos[plugin]["middle_visible"]) + middleparamssizer.AddWindow(middleminimizebutton, 0, border=5, flag=wx.ALL) + rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) rightwindow.SetBackgroundColour(wx.Colour(240,240,240)) self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW) - rightwindowmainsizer = wx.BoxSizer(wx.VERTICAL) - rightwindow.SetSizer(rightwindowmainsizer) - - rightwindowsizer = wx.FlexGridSizer(cols=2, rows=1) - rightwindowsizer.AddGrowableCol(1) - rightwindowsizer.AddGrowableRow(0) - rightwindowmainsizer.AddSizer(rightwindowsizer, 0, border=17, flag=wx.TOP|wx.GROW) - - msizer = self.GenerateMethodButtonSizer(plugin, rightwindow, not self.PluginInfos[plugin]["right_visible"]) - rightwindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW) - - rightparamssizer = wx.BoxSizer(wx.HORIZONTAL) - rightwindowsizer.AddSizer(rightparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT) - - paramswindow = wx.Panel(rightwindow, -1, size=wx.Size(-1, -1)) - paramswindow.SetBackgroundColour(WINDOW_COLOUR) - - psizer = wx.BoxSizer(wx.HORIZONTAL) - paramswindow.SetSizer(psizer) - - rightparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL) - - plugin_infos = plugin.GetParamsAttributes() - self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False) - - if not self.PluginInfos[plugin]["right_visible"]: - paramswindow.Hide() - - rightminimizebutton_id = wx.NewId() - rightminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=rightminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')), - name='MinimizeButton', parent=rightwindow, pos=wx.Point(0, 0), - size=wx.Size(24, 24), style=wx.NO_BORDER) - rightminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(rightminimizebutton) - rightminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) - rightminimizebutton.labelDelta = 0 - rightminimizebutton.SetBezelWidth(0) - rightminimizebutton.SetUseFocusIndicator(False) - rightminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) - rightminimizebutton.SetToggle(self.PluginInfos[plugin]["right_visible"]) - def togglerightwindow(event): - if rightminimizebutton.GetToggle(): - rightparamssizer.Show(0) + rightsizer = wx.BoxSizer(wx.VERTICAL) + rightwindow.SetSizer(rightsizer) + + rightmainsizer = wx.BoxSizer(wx.VERTICAL) + rightsizer.AddSizer(rightmainsizer, 0, border=5, flag=wx.ALL) + + if len(plugin.PlugChildsTypes) > 0: + addsizer = self.GenerateAddButtonSizer(plugin, rightwindow) + rightmainsizer.AddSizer(addsizer, 0, border=12, flag=wx.TOP) + else: + addsizer = None + + def togglemiddlerightwindow(event): + if middleminimizebutton.GetToggle(): + middleparamssizer.Show(0) msizer.SetCols(1) + if addsizer is not None: + addsizer.SetCols(1) else: - rightparamssizer.Hide(0) + middleparamssizer.Hide(0) msizer.SetCols(len(plugin.PluginMethods)) - self.PluginInfos[plugin]["right_visible"] = rightminimizebutton.GetToggle() + if addsizer is not None: + addsizer.SetCols(len(plugin.PlugChildsTypes)) + self.PluginInfos[plugin]["middle_visible"] = middleminimizebutton.GetToggle() self.PLCConfigMainSizer.Layout() self.RefreshScrollBars() event.Skip() - rightminimizebutton.Bind(wx.EVT_BUTTON, togglerightwindow, id=rightminimizebutton_id) - rightparamssizer.AddWindow(rightminimizebutton, 0, border=5, flag=wx.ALL) - + middleminimizebutton.Bind(wx.EVT_BUTTON, togglemiddlerightwindow, id=middleminimizebutton_id) + self.PluginInfos[plugin]["left"] = index[0] - self.PluginInfos[plugin]["right"] = index[0] + 1 - index[0] += 2 + self.PluginInfos[plugin]["middle"] = index[0] + 1 + self.PluginInfos[plugin]["right"] = index[0] + 2 + index[0] += 3 for child in self.PluginInfos[plugin]["children"]: self.GenerateTreeBranch(child, index) if not self.PluginInfos[child]["expanded"]: