예제 #1
0
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()
예제 #2
0
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()