--- a/Beremiz.py Tue Sep 04 17:58:29 2007 +0200
+++ b/Beremiz.py Fri Sep 07 09:11:18 2007 +0200
@@ -32,6 +32,9 @@
from plugger import PluginsRoot
+def CHECK_WX_VERSION(major, minor, release): + return not (wx.MAJOR_VERSION < major or wx.MINOR_VERSION < minor or wx.RELEASE_NUMBER < release) """ Base class for file like objects to facilitate StdOut for the Shell."""
def __init__(self, output = None):
@@ -306,7 +309,8 @@
self.ParamsPanel = wx.ScrolledWindow(id=ID_BEREMIZPARAMSPANEL,
name='ParamsPanel', parent=self.SecondSplitter, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.VSCROLL)
+ size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) + self.ParamsPanel.SetScrollbars(10, 10, 0, 0, 0, 0) self.LogConsole = wx.TextCtrl(id=ID_BEREMIZLOGCONSOLE, value='',
name='LogConsole', parent=self.SecondSplitter, pos=wx.Point(0, 0),
@@ -360,25 +364,24 @@
def RefreshPluginTree(self):
infos = self.PluginRoot.GetPlugInfos()
root = self.PluginTree.GetRootItem()
- self.GenerateTreeBranch(root, infos)
+ root = self.PluginTree.AddRoot(infos["name"]) + self.GenerateTreeBranch(root, infos, True) self.PluginTree.Expand(self.PluginTree.GetRootItem())
self.RefreshPluginParams()
- def GenerateTreeBranch(self, root, infos):
+ def GenerateTreeBranch(self, root, infos, first = False):
- self.PluginTree.SetItemText(root, infos["name"])
- root = self.PluginTree.AddRoot(infos["name"])
+ self.PluginTree.SetItemText(root, infos["name"]) self.PluginTree.SetPyData(root, infos["type"])
item, root_cookie = self.PluginTree.GetFirstChild(root)
- if len(infos["values"]) > 0:
- for values in infos["values"]:
- item = self.PluginTree.AppendItem(root, "")
+ for values in infos["values"]: + item = self.PluginTree.AppendItem(root, "") + if wx.VERSION < (2, 7, 0): item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie)
- self.GenerateTreeBranch(item, values)
- item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie)
+ self.GenerateTreeBranch(item, values) + item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie) item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie)
@@ -443,6 +446,16 @@
infos = plugin.GetParamsAttributes()
self.RefreshSizerElement(self.ParamsPanelMainSizer, infos, None)
+ if len(plugin.PluginMethods) > 0: + boxsizer = wx.BoxSizer(wx.HORIZONTAL) + self.ParamsPanelMainSizer.AddSizer(boxsizer, 0, border=5, flag=wx.GROW|wx.ALL) + for name, method in plugin.PluginMethods: + button = wx.Button(id=id, label=name, name=name, parent=self.ParamsPanel, + pos=wx.Point(0, 0), style=wx.BU_EXACTFIT) + button.Bind(wx.EVT_BUTTON, self.GetButtonCallBackFunction(plugin, method), id=id) + boxsizer.AddWindow(button, 0, border=5, flag=wx.GROW|wx.RIGHT) self.ParamsPanelMainSizer.Layout()
@@ -458,6 +471,12 @@
self.AddButton.Enable(False)
self.DeleteButton.Enable(True)
+ def GetButtonCallBackFunction(self, plugin, method): + def OnButtonClick(event): + method(plugin, self.Log) def GetChoiceCallBackFunction(self, choicectrl, path):
def OnChoiceChanged(event):
plugin = self.GetSelectedPlugin()
@@ -474,8 +493,11 @@
infos = self.PluginRoot.GetParamsAttributes(path)
staticbox = staticboxsizer.GetStaticBox()
staticbox.SetLabel("%(name)s - %(value)s"%infos)
+ self.ParamsPanel.Freeze() self.RefreshSizerElement(staticboxsizer, infos["children"], "%s.%s"%(path, infos["name"]))
self.ParamsPanelMainSizer.Layout()
+ self.ParamsPanel.Thaw() + self.ParamsPanel.Refresh() return OnChoiceContentChanged
@@ -508,7 +530,10 @@
def RefreshSizerElement(self, sizer, elements, path):
+ if wx.VERSION >= (2, 7, 0): for element_infos in elements:
@@ -729,147 +754,6 @@
#-------------------------------------------------------------------------------
-#-------------------------------------------------------------------------------
-[ID_ADDBUSDIALOG, ID_ADDBUSDIALOGBUSID,
- ID_ADDBUSDIALOGBUSNAME, ID_ADDBUSDIALOGBUSTYPE,
- ID_ADDBUSDIALOGSTATICTEXT1, ID_ADDBUSDIALOGSTATICTEXT2,
- ID_ADDBUSDIALOGSTATICTEXT3,
-] = [wx.NewId() for _init_ctrls in range(7)]
-class AddBusDialog(wx.Dialog):
- def _init_coll_flexGridSizer1_Items(self, parent):
- parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
- parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
- def _init_coll_flexGridSizer1_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableRow(0)
- def _init_coll_MainSizer_Items(self, parent):
- parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.BusId, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.BusType, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.BusName, 0, border=0, flag=wx.GROW)
- def _init_coll_MainSizer_Growables(self, parent):
- parent.AddGrowableCol(1)
- def _init_sizers(self):
- self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
- self.MainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=3, vgap=15)
- self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
- self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
- self._init_coll_MainSizer_Items(self.MainSizer)
- self._init_coll_MainSizer_Growables(self.MainSizer)
- self.SetSizer(self.flexGridSizer1)
- def _init_ctrls(self, prnt):
- wx.Dialog.__init__(self, id=ID_ADDBUSDIALOG,
- name='PouDialog', parent=prnt, pos=wx.Point(376, 183),
- size=wx.Size(300, 200), style=wx.DEFAULT_DIALOG_STYLE,
- title='Create a new POU')
- self.SetClientSize(wx.Size(300, 200))
- self.staticText1 = wx.StaticText(id=ID_ADDBUSDIALOGSTATICTEXT1,
- label='Bus ID:', name='staticText1', parent=self,
- pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
- self.BusId = wx.TextCtrl(id=ID_ADDBUSDIALOGBUSID,
- name='BusId', parent=self, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=0)
- self.staticText2 = wx.StaticText(id=ID_ADDBUSDIALOGSTATICTEXT2,
- label='Bus Type:', name='staticText2', parent=self,
- pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
- self.BusType = wx.Choice(id=ID_ADDBUSDIALOGBUSTYPE,
- name='BusType', parent=self, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=0)
- self.staticText3 = wx.StaticText(id=ID_ADDBUSDIALOGSTATICTEXT3,
- label='Bus Name:', name='staticText3', parent=self,
- pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
- self.BusName = wx.TextCtrl(id=ID_ADDBUSDIALOGBUSNAME,
- name='BusName', parent=self, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=0)
- self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
- self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
- def __init__(self, parent):
- self._init_ctrls(parent)
- for option in [""] + plugins.__all__:
- self.BusType.Append(option)
- bus_id = self.BusId.GetValue()
- if self.BusType.GetStringSelection() == "":
- error.append("Bus Type")
- if self.BusName.GetValue() == "":
- error.append("Bus Name")
- for i, item in enumerate(error):
- elif i == len(error) - 1:
- message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
- elif bus_id.startswith("0x"):
- bus_id = int(bus_id, 16)
- self.EndModal(wx.ID_OK)
- message = wxMessageDialog(self, "Bus ID must be a decimal or hexadecimal number!", "Error", wxOK|wxICON_ERROR)
- elif not bus_id.startswith("-"):
- self.EndModal(wx.ID_OK)
- message = wxMessageDialog(self, "Bus ID must be a decimal or hexadecimal number!", "Error", wxOK|wxICON_ERROR)
- message = wxMessageDialog(self, "Bus Id must be greater than 0!", "Error", wxOK|wxICON_ERROR)
- def SetValues(self, values):
- for item, value in values.items():
- self.BusID.SetValue(value)
- elif item == "busType":
- self.BusType.SetStringSelection(value)
- elif item == "busName":
- self.BusName.SetValue(value)
- values["busID"] = self.BusId.GetValue()
- values["busType"] = self.BusType.GetStringSelection()
- values["busName"] = self.BusName.GetValue()
-#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------