PLCOpenEditor.py
changeset 82 119b62c73085
parent 80 c798a68c5560
child 90 2245e8776086
equal deleted inserted replaced
81:11ca9ad9e3c3 82:119b62c73085
    65 elif len(args) == 1:
    65 elif len(args) == 1:
    66     fileOpen = args[0]
    66     fileOpen = args[0]
    67 CWD = os.path.split(__file__)[0]
    67 CWD = os.path.split(__file__)[0]
    68 
    68 
    69 [ID_PLCOPENEDITOR, ID_PLCOPENEDITORPROJECTTREE, 
    69 [ID_PLCOPENEDITOR, ID_PLCOPENEDITORPROJECTTREE, 
    70  ID_PLCOPENEDITORSPLITTERWINDOW1, ID_PLCOPENEDITOREDITORPANEL,
    70  ID_PLCOPENEDITORMAINSPLITTER, ID_PLCOPENEDITOREDITORPANEL,
    71  ID_PLCOPENEDITORTABSOPENED, ID_PLCOPENEDITORTOOLBAR,
    71  ID_PLCOPENEDITORTABSOPENED, ID_PLCOPENEDITORTOOLBAR,
    72  ID_PLCOPENEDITORDEFAULTTOOLBAR, ID_PLCOPENEDITORSFCTOOLBAR, 
    72  ID_PLCOPENEDITORDEFAULTTOOLBAR, ID_PLCOPENEDITORSFCTOOLBAR, 
    73  ID_PLCOPENEDITORFBDTOOLBAR, ID_PLCOPENEDITORLDTOOLBAR,
    73  ID_PLCOPENEDITORFBDTOOLBAR, ID_PLCOPENEDITORLDTOOLBAR,
    74 ] = [wx.NewId() for _init_ctrls in range(10)]
    74 ] = [wx.NewId() for _init_ctrls in range(10)]
    75 
    75 
   126     "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
   126     "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
   127              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
   127              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
   128              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
   128              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
   129              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
   129              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
   130              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
   130              (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
   131     "LD" :  [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
   131     "LD"  : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
   132              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
   132              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
   133              (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
   133              (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
   134              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
   134              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
   135              (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
   135              (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
   136              (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
   136              (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
   149              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
   149              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
   150              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
   150              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
   151              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
   151              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
   152              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
   152              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
   153              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
   153              (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
   154     "ST" : [],
   154     "ST"  : [],
   155     "IL" : []
   155     "IL"  : []
   156 }
   156 }
   157 
   157 
   158 class PLCOpenEditor(wx.Frame):
   158 class PLCOpenEditor(wx.Frame):
   159     _custom_classes = {'wx.SashWindow' : ['Viewer']}
   159     _custom_classes = {'wx.SashWindow' : ['Viewer']}
   160     
   160     
   310         self._init_coll_HelpMenu_Items(self.HelpMenu)
   310         self._init_coll_HelpMenu_Items(self.HelpMenu)
   311         self._init_coll_SFCMenu_Items(self.SFCMenu)
   311         self._init_coll_SFCMenu_Items(self.SFCMenu)
   312         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
   312         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
   313 
   313 
   314     def _init_coll_MainGridSizer_Items(self, parent):
   314     def _init_coll_MainGridSizer_Items(self, parent):
   315         parent.AddWindow(self.splitterWindow1, 0, border=0, flag=wx.GROW)
   315         parent.AddWindow(self.MainSplitter, 0, border=0, flag=wx.GROW)
   316 
   316 
   317     def _init_coll_EditorGridSizer_Items(self, parent):
   317     def _init_coll_EditorGridSizer_Items(self, parent):
   318         parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
   318         parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
   319         parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
   319         parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
   320 
   320 
   345         self._init_utils()
   345         self._init_utils()
   346         self.SetClientSize(wx.Size(1000, 600))
   346         self.SetClientSize(wx.Size(1000, 600))
   347         self.SetMenuBar(self.menuBar1)
   347         self.SetMenuBar(self.menuBar1)
   348         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=ID_PLCOPENEDITOR)
   348         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=ID_PLCOPENEDITOR)
   349         
   349         
   350         self.splitterWindow1 = wx.SplitterWindow(id=ID_PLCOPENEDITORSPLITTERWINDOW1,
   350         self.MainSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORMAINSPLITTER,
   351               name='splitterWindow1', parent=self, point=wx.Point(0, 0),
   351               name='MainSplitter', parent=self, point=wx.Point(0, 0),
   352               size=wx.Size(0, 0), style=wx.SP_3D)
   352               size=wx.Size(0, 0), style=wx.SP_3D)
   353         self.splitterWindow1.SetNeedUpdating(True)
   353         self.MainSplitter.SetNeedUpdating(True)
   354         self.splitterWindow1.SetMinimumPaneSize(1)
   354         self.MainSplitter.SetMinimumPaneSize(1)
   355 
   355 
   356         self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
   356         self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
   357               name='TabPanel', parent=self.splitterWindow1, pos=wx.Point(0, 0),
   357               name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0),
   358               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   358               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   359         
   359         
   360         self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   360         self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   361               name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
   361               name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
   362               0), size=wx.Size(0, 0), style=0)
   362               0), size=wx.Size(0, 0), style=0)
   370               wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object")
   370               wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object")
   371         self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
   371         self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
   372               id=ID_PLCOPENEDITORTOOLBARSELECTION)
   372               id=ID_PLCOPENEDITORTOOLBARSELECTION)
   373         
   373         
   374         self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   374         self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   375               name='treeCtrl1', parent=self.splitterWindow1, pos=wx.Point(0, 0),
   375               name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0),
   376               size=wx.Size(-1, -1),
   376               size=wx.Size(-1, -1),
   377               style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   377               style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   378         self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
   378         self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
   379         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   379         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   380               id=ID_PLCOPENEDITORPROJECTTREE)
   380               id=ID_PLCOPENEDITORPROJECTTREE)
   384               id=ID_PLCOPENEDITORPROJECTTREE)
   384               id=ID_PLCOPENEDITORPROJECTTREE)
   385         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   385         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   386               id=ID_PLCOPENEDITORPROJECTTREE)
   386               id=ID_PLCOPENEDITORPROJECTTREE)
   387         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
   387         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
   388               id=ID_PLCOPENEDITORPROJECTTREE)
   388               id=ID_PLCOPENEDITORPROJECTTREE)
   389         self.splitterWindow1.SplitVertically(self.ProjectTree, self.EditorPanel,
   389         self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel,
   390               200)
   390               200)
   391         
   391         
   392         self._init_sizers()
   392         self._init_sizers()
   393 
   393 
   394     def __init__(self, parent, controler = None):
   394     def __init__(self, parent, controler = None):