Dialogs.py
changeset 118 0c53d6a36013
parent 113 9eeaebd867aa
child 123 62f93b8df816
--- a/Dialogs.py	Fri Oct 26 17:04:18 2007 +0200
+++ b/Dialogs.py	Tue Oct 30 16:53:08 2007 +0100
@@ -34,9 +34,10 @@
 [ID_BLOCKPROPERTIESDIALOG, ID_BLOCKPROPERTIESDIALOGNAME, 
  ID_BLOCKPROPERTIESDIALOGTYPETREE, ID_BLOCKPROPERTIESDIALOGTYPEDESC, 
  ID_BLOCKPROPERTIESDIALOGINPUTS, ID_BLOCKPROPERTIESDIALOGPREVIEW, 
- ID_BLOCKPROPERTIESDIALOGSTATICTEXT1, ID_BLOCKPROPERTIESDIALOGSTATICTEXT2, 
- ID_BLOCKPROPERTIESDIALOGSTATICTEXT3, ID_BLOCKPROPERTIESDIALOGSTATICTEXT4, 
-] = [wx.NewId() for _init_ctrls in range(10)]
+ ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER, ID_BLOCKPROPERTIESDIALOGSTATICTEXT1, 
+ ID_BLOCKPROPERTIESDIALOGSTATICTEXT2, ID_BLOCKPROPERTIESDIALOGSTATICTEXT3, 
+ ID_BLOCKPROPERTIESDIALOGSTATICTEXT4, ID_BLOCKPROPERTIESDIALOGSTATICTEXT5, 
+] = [wx.NewId() for _init_ctrls in range(12)]
 
 [CATEGORY, BLOCK] = range(2)
 
@@ -67,7 +68,7 @@
 
     def _init_coll_RightGridSizer_Items(self, parent):
         parent.AddSizer(self.RightUpGridSizer, 0, border=0, flag=wx.GROW)
-        parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
 
     def _init_coll_RightGridSizer_Growables(self, parent):
@@ -75,17 +76,19 @@
         parent.AddGrowableRow(2)
 
     def _init_coll_RightUpGridSizer_Items(self, parent):
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW|wx.ALIGN_BOTTOM)
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW|wx.ALIGN_BOTTOM)
+        parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
         parent.AddWindow(self.BlockName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText3, 0, border=4, flag=wx.GROW|wx.TOP)
         parent.AddWindow(self.Inputs, 0, border=0, flag=wx.GROW)
-
+        parent.AddWindow(self.staticText4, 0, border=4, flag=wx.GROW|wx.TOP)
+        parent.AddWindow(self.ExecutionOrder, 0, border=0, flag=wx.GROW)
+        
     def _init_sizers(self):
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
         self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.LeftBoxSizer = wx.StaticBoxSizer(self.staticbox1, wx.VERTICAL)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
-        self.RightUpGridSizer = wx.GridSizer(cols=2, hgap=5, rows=2, vgap=5)
+        self.RightUpGridSizer = wx.GridSizer(cols=2, hgap=5, rows=3, vgap=5)
         
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
         self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
@@ -100,9 +103,9 @@
     def _init_ctrls(self, prnt):
         wx.Dialog.__init__(self, id=ID_BLOCKPROPERTIESDIALOG,
               name='BlockPropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
-              size=wx.Size(600, 360), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
+              size=wx.Size(600, 380), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
               title='Block Properties')
-        self.SetClientSize(wx.Size(600, 360))
+        self.SetClientSize(wx.Size(600, 380))
 
         self.staticbox1 = wx.StaticBox(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT1,
               label='Type:', name='staticBox1', parent=self,
@@ -117,7 +120,11 @@
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
         self.staticText4 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT4,
-              label='Preview:', name='staticText4', parent=self,
+              label='Execution Order:', name='staticText4', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.staticText5 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT5,
+              label='Preview:', name='staticText5', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
         if wx.Platform == '__WXMSW__':
@@ -144,6 +151,11 @@
               size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=2, max=20)
         self.Bind(wx.EVT_SPINCTRL, self.OnInputsChanged, id=ID_BLOCKPROPERTIESDIALOGINPUTS)
 
+        self.ExecutionOrder = wx.SpinCtrl(id=ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER,
+              name='ExecutionOrder', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0)
+        self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged, id=ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER)
+
         self.Preview = wx.Panel(id=ID_BLOCKPROPERTIESDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
@@ -262,6 +274,8 @@
                 self.BlockName.SetValue(value)
             elif name == "extension":
                 self.Inputs.SetValue(value)
+            elif name == "executionOrder":
+                self.ExecutionOrder.SetValue(value)
         self.RefreshPreview()
 
     def GetValues(self):
@@ -273,6 +287,7 @@
             values["name"] = self.BlockName.GetValue()
         values["width"], values["height"] = self.Block.GetSize()
         values["extension"] = self.Inputs.GetValue()
+        values["executionOrder"] = self.ExecutionOrder.GetValue()
         return values
 
     def OnTypeTreeItemSelected(self, event):
@@ -311,6 +326,10 @@
             self.RefreshPreview()
         event.Skip()
     
+    def OnExecutionOrderChanged(self, event):
+        self.RefreshPreview()
+        event.Skip()
+    
     def ErasePreview(self):
         dc = wx.ClientDC(self.Preview)
         dc.Clear()
@@ -327,7 +346,7 @@
             else:
                 blocktype = self.TypeTree.GetItemText(item)
                 if blocktype:
-                    self.Block = FBD_Block(self.Preview, blocktype, self.BlockName.GetValue(), extension = self.Inputs.GetValue(), inputs = pydata["inputs"])
+                    self.Block = FBD_Block(self.Preview, blocktype, self.BlockName.GetValue(), extension = self.Inputs.GetValue(), inputs = pydata["inputs"], executionOrder = self.ExecutionOrder.GetValue())
                     width, height = self.MinBlockSize
                     min_width, min_height = self.Block.GetMinSize()
                     width, height = max(min_width, width), max(min_height, height)
@@ -352,9 +371,10 @@
 [ID_VARIABLEPROPERTIESDIALOG, ID_VARIABLEPROPERTIESDIALOGSPACER, 
  ID_VARIABLEPROPERTIESDIALOGNAME, ID_VARIABLEPROPERTIESDIALOGCLASS, 
  ID_VARIABLEPROPERTIESDIALOGPREVIEW, ID_VARIABLEPROPERTIESDIALOGEXPRESSION,
- ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
- ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
-] = [wx.NewId() for _init_ctrls in range(10)]
+ ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1, 
+ ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3, 
+ ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT5
+] = [wx.NewId() for _init_ctrls in range(12)]
 
 class VariablePropertiesDialog(wx.Dialog):
     
@@ -389,16 +409,18 @@
     def _init_coll_LeftGridSizer_Items(self, parent):
         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.Class, 0, border=0, flag=wx.GROW)
-        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.Expression, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ExecutionOrder, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
     
     def _init_coll_LeftGridSizer_Growables(self, parent):
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(2)
             
     def _init_coll_RightGridSizer_Items(self, parent):
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.VariableName, 0, border=0, flag=wx.GROW)
         
     def _init_coll_RightGridSizer_Growables(self, parent):
@@ -409,7 +431,7 @@
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
         self.TopSizer = wx.BoxSizer(wx.HORIZONTAL)
-        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=5, vgap=5)
+        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
@@ -440,11 +462,15 @@
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
         self.staticText3 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3,
-              label='Name:', name='staticText3', parent=self,
+              label='Execution Order:', name='staticText3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
         self.staticText4 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
-              label='Preview:', name='staticText4', parent=self,
+              label='Name:', name='staticText4', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.staticText5 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT5,
+              label='Preview:', name='staticText5', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
         self.Class = wx.Choice(id=ID_VARIABLEPROPERTIESDIALOGCLASS,
@@ -462,6 +488,11 @@
               size=wx.Size(0, 24), style=0)
         self.Bind(wx.EVT_TEXT, self.OnExpressionChanged, id=ID_VARIABLEPROPERTIESDIALOGEXPRESSION)
 
+        self.ExecutionOrder = wx.SpinCtrl(id=ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER,
+              name='ExecutionOrder', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0)
+        self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged, id=ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER)
+
         self.Spacer = wx.Panel(id=ID_VARIABLEPROPERTIESDIALOGSPACER,
               name='Spacer', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
@@ -536,6 +567,8 @@
             else:
                 self.Expression.SetValue(value_name)
                 self.VariableName.Enable(False)
+        if "executionOrder" in values:
+            self.ExecutionOrder.SetValue(values["executionOrder"])
         self.RefreshPreview()
         
     def GetValues(self):
@@ -557,6 +590,7 @@
             if var_name == values["name"]:
                 values["value_type"] = value_type
         values["width"], values["height"] = self.Variable.GetSize()
+        values["executionOrder"] = self.ExecutionOrder.GetValue()
         return values
 
     def OnClassChanged(self, event):
@@ -584,6 +618,10 @@
         self.RefreshPreview()
         event.Skip()
     
+    def OnExecutionOrderChanged(self, event):
+        self.RefreshPreview()
+        event.Skip()
+    
     def RefreshPreview(self):
         dc = wx.ClientDC(self.Preview)
         dc.Clear()
@@ -598,11 +636,11 @@
                 type = value_type
         classtype = self.Class.GetStringSelection()
         if classtype == "Input":
-            self.Variable = FBD_Variable(self.Preview, INPUT, name, type)
+            self.Variable = FBD_Variable(self.Preview, INPUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
         elif classtype == "Output":
-            self.Variable = FBD_Variable(self.Preview, OUTPUT, name, type)
+            self.Variable = FBD_Variable(self.Preview, OUTPUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
         elif classtype == "InOut":
-            self.Variable = FBD_Variable(self.Preview, INOUT, name, type)
+            self.Variable = FBD_Variable(self.Preview, INOUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
         width, height = self.MinVariableSize
         min_width, min_height = self.Variable.GetMinSize()
         width, height = max(min_width, width), max(min_height, height)