PLCOpenEditor.py
changeset 95 ee66a9a1748b
parent 92 76d5001393df
child 97 28337cd092fd
--- a/PLCOpenEditor.py	Mon Sep 17 17:51:05 2007 +0200
+++ b/PLCOpenEditor.py	Tue Sep 18 18:05:52 2007 +0200
@@ -98,34 +98,34 @@
 ] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)]
 
 ToolBarItems = {
-    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
-    "LD"  : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
-             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
-             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
-    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "Images/initial_step.png", "Create a new initial step"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "Images/step.png", "Create a new step"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "Images/transition.png", "Create a new transition"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "Images/action.png", "Create a new action block"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "Images/divergence.png", "Create a new divergence"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "Images/jump.png", "Create a new jump"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
-             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")],
+    "LD"  : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"),
+             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "rung.png", "Create a new rung"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "coil.png", "Create a new coil"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact"),
+             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "branch.png", "Create a new branch"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")],
+    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "initial_step.png", "Create a new initial step"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "step.png", "Create a new step"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "transition.png", "Create a new transition"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "action.png", "Create a new action block"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "divergence.png", "Create a new divergence"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "jump.png", "Create a new jump"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")],
     "ST"  : [],
     "IL"  : []
 }
@@ -286,32 +286,22 @@
         self._init_coll_SFCMenu_Items(self.SFCMenu)
         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
 
-    def _init_coll_MainGridSizer_Items(self, parent):
-        parent.AddWindow(self.MainSplitter, 0, border=0, flag=wx.GROW)
-
     def _init_coll_EditorGridSizer_Items(self, parent):
         parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
         parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
 
-    def _init_coll_MainGridSizer_Growables(self, parent):
-        parent.AddGrowableCol(0)
-        parent.AddGrowableRow(0)
-
     def _init_coll_EditorGridSizer_Growables(self, parent):
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0)
-        self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
-
-        self._init_coll_MainGridSizer_Growables(self.MainGridSizer)
-        self._init_coll_MainGridSizer_Items(self.MainGridSizer)
-        self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer)
-        self._init_coll_EditorGridSizer_Items(self.EditorGridSizer)
-        
-        self.SetSizer(self.MainGridSizer)
-        self.EditorPanel.SetSizer(self.EditorGridSizer)
+        if wx.Platform != '__WXMSW__':
+            self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        
+            self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer)
+            self._init_coll_EditorGridSizer_Items(self.EditorGridSizer)
+        
+            self.EditorPanel.SetSizer(self.EditorGridSizer)
 
     def _init_ctrls(self, prnt):
         wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor',
@@ -333,24 +323,6 @@
         self.MainSplitter.SetNeedUpdating(True)
         self.MainSplitter.SetMinimumPaneSize(1)
         
-        self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
-              name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0),
-              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-        
-        self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
-              name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
-              0), size=wx.Size(0, 0), style=0)
-        self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
-              self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
-
-        self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
-              parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
-              style=wx.TB_HORIZONTAL|wx.NO_BORDER)
-        self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
-              wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object")
-        self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
-              id=ID_PLCOPENEDITORTOOLBARSELECTION)
-        
         self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
               name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0),
               size=wx.Size(-1, -1),
@@ -366,8 +338,46 @@
               id=ID_PLCOPENEDITORPROJECTTREE)
         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
               id=ID_PLCOPENEDITORPROJECTTREE)
-        self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel,
-              200)
+        
+        if wx.Platform == '__WXMSW__':
+            self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
+                  ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
+            self.ToolBar.SetToolBitmapSize(wx.Size(25, 25))
+            self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
+                  wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
+            self.ToolBar.Realize()
+            self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
+                  id=ID_PLCOPENEDITORTOOLBARSELECTION)
+        
+            self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
+                  name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
+                  0), size=wx.Size(0, 0), style=0)
+            self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
+                  self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
+        
+            self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200)
+        
+        else:
+            self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
+                  name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0),
+                  size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+        
+            self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
+                  parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
+                  style=wx.TB_HORIZONTAL|wx.NO_BORDER)
+            self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
+                  wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object")
+            self.ToolBar.Realize()
+            self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
+                  id=ID_PLCOPENEDITORTOOLBARSELECTION)
+        
+            self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
+                  name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
+                  0), size=wx.Size(0, 0), style=0)
+            self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
+                  self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
+        
+            self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel, 200)
         
         self._init_sizers()
 
@@ -375,10 +385,11 @@
         self.ModeSolo = controler == None
         self._init_ctrls(parent)
         
-        self.TreeImageList = wx.ImageList(16, 16)
-        for language in LANGUAGES:
-            self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images/%s.png'%language)))
-        self.ProjectTree.SetImageList(self.TreeImageList)
+        if wx.Platform != '__WXMSW__':
+            self.TreeImageList = wx.ImageList(16, 16)
+            for language in LANGUAGES:
+                self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images','%s.png'%language)))
+            self.ProjectTree.AssignImageList(self.TreeImageList)
         
         if self.ModeSolo:
             self.Controler = PLCControler()
@@ -1017,7 +1028,7 @@
         to_delete = []
         self.ProjectTree.SetItemText(root, infos["name"])
         self.ProjectTree.SetPyData(root, infos["type"])
-        if infos["type"] == ITEM_POU:
+        if infos["type"] == ITEM_POU and wx.Platform != '__WXMSW__':
             self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
         item, root_cookie = self.ProjectTree.GetFirstChild(root)
         for values in infos["values"]:
@@ -1047,11 +1058,15 @@
             for radio, modes, id, method, picture, help in ToolBarItems[language]:
                 if modes & self.DrawingMode:
                     if radio or self.DrawingMode == FREEDRAWING_MODE:
-                        self.ToolBar.AddRadioTool(id, wx.Bitmap(os.path.join(CWD, picture)), wx.NullBitmap, help)
+                        self.ToolBar.AddRadioTool(id, wx.Bitmap(os.path.join(CWD, "Images", picture)), wx.NullBitmap, help)
                     else:
-                        self.ToolBar.AddSimpleTool(id, wx.Bitmap(os.path.join(CWD, picture)), help)
+                        self.ToolBar.AddSimpleTool(id, wx.Bitmap(os.path.join(CWD, "Images", picture)), help)
                     self.Bind(wx.EVT_TOOL, getattr(self, method), id=id)
                     self.CurrentToolBar.append(id)
+            self.ToolBar.Realize()
+        elif not language:
+            self.ResetToolBar()
+            self.CurrentLanguage = language
         self.ResetCurrentMode()
 
     def RefreshTabsOpenedTitles(self):