Beremiz.py
changeset 84 8bc2669828e9
parent 83 ad4dafe7bfee
child 87 4de868955ee4
equal deleted inserted replaced
83:ad4dafe7bfee 84:8bc2669828e9
   355             self.PluginTree.Bind(wx.EVT_RIGHT_UP, self.OnPluginTreeRightUp)
   355             self.PluginTree.Bind(wx.EVT_RIGHT_UP, self.OnPluginTreeRightUp)
   356             self.Bind(CT.EVT_TREE_SEL_CHANGED, self.OnPluginTreeItemSelected,
   356             self.Bind(CT.EVT_TREE_SEL_CHANGED, self.OnPluginTreeItemSelected,
   357                   id=ID_BEREMIZPLUGINTREE)
   357                   id=ID_BEREMIZPLUGINTREE)
   358             self.Bind(CT.EVT_TREE_ITEM_CHECKED, self.OnPluginTreeItemChecked,
   358             self.Bind(CT.EVT_TREE_ITEM_CHECKED, self.OnPluginTreeItemChecked,
   359                   id=ID_BEREMIZPLUGINTREE)
   359                   id=ID_BEREMIZPLUGINTREE)
       
   360             self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnPluginTreeItemBeginEdit,
       
   361                   id=ID_BEREMIZPLUGINTREE)
   360             self.Bind(CT.EVT_TREE_END_LABEL_EDIT, self.OnPluginTreeItemEndEdit,
   362             self.Bind(CT.EVT_TREE_END_LABEL_EDIT, self.OnPluginTreeItemEndEdit,
   361                   id=ID_BEREMIZPLUGINTREE)
   363                   id=ID_BEREMIZPLUGINTREE)
   362             self.Bind(CT.EVT_TREE_ITEM_EXPANDED, self.OnPluginTreeItemExpanded,
   364             self.Bind(CT.EVT_TREE_ITEM_EXPANDED, self.OnPluginTreeItemExpanded,
   363                   id=ID_BEREMIZPLUGINTREE)
   365                   id=ID_BEREMIZPLUGINTREE)
   364             self.Bind(CT.EVT_TREE_ITEM_COLLAPSED, self.OnPluginTreeItemCollapsed,
   366             self.Bind(CT.EVT_TREE_ITEM_COLLAPSED, self.OnPluginTreeItemCollapsed,
   370                   name='LogConsole', parent=self, pos=wx.Point(0, 0),
   372                   name='LogConsole', parent=self, pos=wx.Point(0, 0),
   371                   size=wx.Size(0, 0), style=wx.TE_MULTILINE|wx.TE_RICH2)
   373                   size=wx.Size(0, 0), style=wx.TE_MULTILINE|wx.TE_RICH2)
   372             self.AUIManager.AddPane(self.LogConsole, wx.aui.AuiPaneInfo().Caption("Log Console").Bottom().Layer(1).BestSize(wx.Size(800, 200)).CloseButton(False))
   374             self.AUIManager.AddPane(self.LogConsole, wx.aui.AuiPaneInfo().Caption("Log Console").Bottom().Layer(1).BestSize(wx.Size(800, 200)).CloseButton(False))
   373         
   375         
   374             self.AUIManager.Update()
   376             self.AUIManager.Update()
   375 
       
   376     def ShowChildrenWindows(self, root, show = True):
       
   377         item, root_cookie = self.PluginTree.GetFirstChild(root)
       
   378         while item is not None and item.IsOk():
       
   379             window = self.PluginTree.GetItemWindow(item)
       
   380             if show:
       
   381                 window.Show()
       
   382             else:
       
   383                 window.Hide()
       
   384             if self.PluginTree.IsExpanded(item):
       
   385                 self.ShowChildrenWindows(item, show)
       
   386             item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie)
       
   387 
       
   388     def OnPluginTreeItemExpanded(self, event):
       
   389         self.ShowChildrenWindows(event.GetItem(), True)
       
   390         event.Skip()
       
   391 
       
   392     def OnPluginTreeItemCollapsed(self, event):
       
   393         self.ShowChildrenWindows(event.GetItem(), False)
       
   394         event.Skip()
       
   395 
   377 
   396     def __init__(self, parent, projectOpen):
   378     def __init__(self, parent, projectOpen):
   397         self._init_ctrls(parent)
   379         self._init_ctrls(parent)
   398         
   380         
   399         self.Log = LogPseudoFile(self.LogConsole)
   381         self.Log = LogPseudoFile(self.LogConsole)
   595             if plugin:
   577             if plugin:
   596                 res, StructChanged = plugin.SetParamsAttribute("BaseParams.Enabled", self.PluginTree.IsItemChecked(item), self.Log)
   578                 res, StructChanged = plugin.SetParamsAttribute("BaseParams.Enabled", self.PluginTree.IsItemChecked(item), self.Log)
   597                 wx.CallAfter(self.RefreshPluginTree)
   579                 wx.CallAfter(self.RefreshPluginTree)
   598         event.Skip()
   580         event.Skip()
   599     
   581     
       
   582     def OnPluginTreeItemBeginEdit(self, event):
       
   583         if event.GetItem() == self.PluginTree.GetRootItem():
       
   584             event.Veto()
       
   585         else:
       
   586             event.Skip()
       
   587     
   600     def OnPluginTreeItemEndEdit(self, event):
   588     def OnPluginTreeItemEndEdit(self, event):
   601         if event.GetLabel() == "":
   589         if event.GetLabel() == "":
   602             event.Veto()
   590             event.Veto()
   603         elif not self.DisableEvents:
   591         elif not self.DisableEvents:
   604             plugin = self.GetSelectedPlugin()
   592             plugin = self.GetSelectedPlugin()
   605             if plugin:
   593             if plugin:
   606                 res, StructChanged = plugin.SetParamsAttribute("BaseParams.Name", event.GetLabel(), self.Log)
   594                 res, StructChanged = plugin.SetParamsAttribute("BaseParams.Name", event.GetLabel(), self.Log)
   607                 wx.CallAfter(self.RefreshPluginTree)
   595                 wx.CallAfter(self.RefreshPluginTree)
   608             event.Skip()
   596             event.Skip()
       
   597     
       
   598     def ShowChildrenWindows(self, root, show = True):
       
   599         item, root_cookie = self.PluginTree.GetFirstChild(root)
       
   600         while item is not None and item.IsOk():
       
   601             window = self.PluginTree.GetItemWindow(item)
       
   602             if show:
       
   603                 window.Show()
       
   604             else:
       
   605                 window.Hide()
       
   606             if self.PluginTree.IsExpanded(item):
       
   607                 self.ShowChildrenWindows(item, show)
       
   608             item, root_cookie = self.PluginTree.GetNextChild(root, root_cookie)
       
   609 
       
   610     def OnPluginTreeItemExpanded(self, event):
       
   611         self.ShowChildrenWindows(event.GetItem(), True)
       
   612         event.Skip()
       
   613 
       
   614     def OnPluginTreeItemCollapsed(self, event):
       
   615         self.ShowChildrenWindows(event.GetItem(), False)
       
   616         event.Skip()
   609     
   617     
   610     def GetItemChannelChangedFunction(self, item):
   618     def GetItemChannelChangedFunction(self, item):
   611         def OnPluginTreeItemChannelChanged(event):
   619         def OnPluginTreeItemChannelChanged(event):
   612             if not self.DisableEvents:
   620             if not self.DisableEvents:
   613                 plugin = self.GetSelectedPlugin(item)
   621                 plugin = self.GetSelectedPlugin(item)
   956         if dialog.ShowModal() == wx.ID_OK:
   964         if dialog.ShowModal() == wx.ID_OK:
   957             projectpath = dialog.GetPath()
   965             projectpath = dialog.GetPath()
   958             dialog.Destroy()
   966             dialog.Destroy()
   959             res = self.PluginRoot.NewProject(projectpath)
   967             res = self.PluginRoot.NewProject(projectpath)
   960             if not res :
   968             if not res :
       
   969                 self.RefreshPluginToolBar()
   961                 self.RefreshPluginTree()
   970                 self.RefreshPluginTree()
   962                 self.RefreshPluginToolBar()
       
   963                 self.RefreshButtons()
   971                 self.RefreshButtons()
   964                 self.RefreshMainMenu()
   972                 self.RefreshMainMenu()
   965             else:
   973             else:
   966                 message = wx.MessageDialog(self, res, "ERROR", wx.OK|wx.ICON_ERROR)
   974                 message = wx.MessageDialog(self, res, "ERROR", wx.OK|wx.ICON_ERROR)
   967                 message.ShowModal()
   975                 message.ShowModal()
   976         if dialog.ShowModal() == wx.ID_OK:
   984         if dialog.ShowModal() == wx.ID_OK:
   977             projectpath = dialog.GetPath()
   985             projectpath = dialog.GetPath()
   978             if os.path.isdir(projectpath):
   986             if os.path.isdir(projectpath):
   979                 result = self.PluginRoot.LoadProject(projectpath, self.Log)
   987                 result = self.PluginRoot.LoadProject(projectpath, self.Log)
   980                 if not result:
   988                 if not result:
       
   989                     self.RefreshPluginToolBar()
   981                     self.RefreshPluginTree()
   990                     self.RefreshPluginTree()
   982                     self.RefreshPluginToolBar()
       
   983                     self.PluginTree.SelectItem(self.PluginTree.GetRootItem())
   991                     self.PluginTree.SelectItem(self.PluginTree.GetRootItem())
   984                     self.RefreshButtons()
   992                     self.RefreshButtons()
   985                     self.RefreshMainMenu()
   993                     self.RefreshMainMenu()
       
   994                     self.PluginTree.ScrollWindow(0, self.PluginTree.GetClientSize()[1])
   986                 else:
   995                 else:
   987                     message = wx.MessageDialog(self, result, "Error", wx.OK|wx.ICON_ERROR)
   996                     message = wx.MessageDialog(self, result, "Error", wx.OK|wx.ICON_ERROR)
   988                     message.ShowModal()
   997                     message.ShowModal()
   989                     message.Destroy()
   998                     message.Destroy()
   990             else:
   999             else:
   993                 message.Destroy()
  1002                 message.Destroy()
   994             dialog.Destroy()
  1003             dialog.Destroy()
   995         event.Skip()
  1004         event.Skip()
   996     
  1005     
   997     def OnCloseProjectMenu(self, event):
  1006     def OnCloseProjectMenu(self, event):
       
  1007         self.RefreshPluginToolBar()
   998         self.RefreshPluginTree()
  1008         self.RefreshPluginTree()
   999         self.RefreshPluginToolBar()
       
  1000         self.RefreshButtons()
  1009         self.RefreshButtons()
  1001         self.RefreshMainMenu()
  1010         self.RefreshMainMenu()
  1002         event.Skip()
  1011         event.Skip()
  1003     
  1012     
  1004     def OnSaveProjectMenu(self, event):
  1013     def OnSaveProjectMenu(self, event):