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): |