class TreePlugin(Plugin): """Provides a tree view for Test Suites """ datafile = property(lambda self: self.get_selected_datafile()) defaults = {"opened": True, "docked": True} def __init__(self, application): Plugin.__init__(self, application, default_settings=self.defaults) self.settings = application.settings._config_obj['Plugins']['Tree'] self._parent = None self._tree = self.tree self._mgr = GetManager(self._tree) """ self._action_registerer = action_registerer self.tree = parent.tree """ # parent, action_registerer, , default_settings={'collapsed':True} def register_frame(self, parent=None): if parent: self._parent = parent self._mgr.InsertPane( self._tree, wx.lib.agw.aui.AuiPaneInfo().Name("tree_content").Caption( "Test Suites").LeftDockable(True).CloseButton(True)) self._mgr.Update() # print(f"DEBUG: TreePlugin frame {self._parent.GetTitle()} tree {self._tree.GetName()}") def enable(self): self.register_action( ActionInfo('View', 'View Test Suites Explorer', self.OnShowTree, shortcut='F12', doc='Show Test Suites tree panel', position=1)) self.subscribe(self.OnTreeSelection, RideTreeSelection) # self.save_setting('opened', True) if self.opened: self.OnShowTree(None) # print(f"DEBUG: TreePlugin end enable tree focused? {self.is_focused()}") # self.subscribe(self.OnTabChanged, RideNotebookTabChanged) # self.subscribe(self._update_preview, RideTestCaseAdded) # self.subscribe(self._update_preview, RideUserKeywordAdded) # self.add_self_as_tree_aware_plugin() def close_tree(self): self._mgr.DetachPane(self._tree) self._tree.Hide() self._mgr.Update() self.save_setting('opened', False) # print(f"DEBUG: TreePlugin Called close") def disable(self): self.close_tree() # self.save_setting('opened', False) self.unsubscribe_all() self.unregister_actions() def is_focused(self): return self._tree.HasFocus() def populate(self, model): self._tree.populate(model) def set_editor(self, editor): self._tree.set_editor(editor) def OnShowTree(self, event): if not self._parent: self._parent = self.frame if not self._tree: # This is not needed because tree is always created self._tree = Tree(self, self._parent.actions, self._parent._application.settings) print( f"DEBUG: TreePlugin Show created tree {self._tree.GetName()}") self._pane = self._mgr.GetPane(self._tree) self._tree.Show(True) self._mgr.DetachPane(self._tree) # self._mgr.Update() self._mgr.AddPane( self._tree, wx.lib.agw.aui.AuiPaneInfo().Name("tree_content").Caption( "Test Suites").LeftDockable(True).CloseButton(True)) self._tree.Raise() self._mgr.Update() self.save_setting('opened', True) self._update_tree() def OnTreeSelection(self, event): if self._tree.is_focused(): self._tree.tree_node_selected(event.item) def OnTabChanged(self, event): self._update_tree() def _update_tree(self, event=None): # if self._tree.is_focused(): self._tree._refresh_view()
class FileExplorerPlugin(Plugin): """Provides a tree view for Files and Folders. Opens selected item with mouse right-click.""" datafile = property(lambda self: self.get_selected_datafile()) defaults = {"opened": True, "docked": True} def __init__(self, application, controller=None): Plugin.__init__(self, application, default_settings=self.defaults) self.settings = application.settings._config_obj['Plugins'][ 'File Explorer'] self._parent = None self._filemgr = self.filemgr self._filemgr.SetThemeEnabled(True) self._mgr = GetManager(self._filemgr) self._controller = controller def register_frame(self, parent=None): if parent: self._parent = parent self._mgr.InsertPane( self._filemgr, wx.lib.agw.aui.AuiPaneInfo().Name("file_manager").Caption( "Files").LeftDockable(True).CloseButton(True)) self._mgr.Update() def enable(self): self.register_action( ActionInfo('View', 'View File Explorer', self.OnShowFileExplorer, shortcut='F11', doc='Show File Explorer panel', position=1)) # self.save_setting('opened', True) if self.opened: self.OnShowFileExplorer(None) def close_tree(self): self._mgr.DetachPane(self._filemgr) self._filemgr.Hide() self._mgr.Update() self.save_setting('opened', False) def disable(self): self.close_tree() # self.save_setting('opened', False) self.unsubscribe_all() self.unregister_actions() def is_focused(self): return self._filemgr.HasFocus() def OnShowFileExplorer(self, event): if not self._parent: self._parent = self.frame if not self._filemgr: # This is not needed because file explorer is always created self._filemgr = FileExplorer(self._parent, self._controller) self._pane = self._mgr.GetPane(self._filemgr) self._filemgr.Show(True) self._mgr.DetachPane(self._filemgr) self._mgr.AddPane( self.filemgr, wx.lib.agw.aui.AuiPaneInfo().Name("file_manager").Caption( "Files").LeftDockable(True).CloseButton(True)) self._filemgr.Raise() self._mgr.Update() self.save_setting('opened', True) self._update_tree() def _update_tree(self): if not self._filemgr: return self._filemgr.update_tree()