class NotebookController: """ Controller for notebooks & notebooks pages. """ _controllers = {} def __init__(self, parent_wnd, session, page): self._session = session self._parent_wnd = parent_wnd self._page = page self._dialog = None def open_dialog(self): """ Open dialog or raise existing. """ if self._dialog is None: self._dialog = DlgNotebookPage(self._parent_wnd, self._session, self._page, self) self._dialog.run() def close(self): """ Close current page controller. """ if self._page.uuid in self._controllers: del self._controllers[self._page.uuid] self._session.close() @property def wnd(self): """ Get current wx windows. """ return (self._dialog and self._dialog.wnd) or self._parent_wnd or None def delete_page(self, uuid=None): """ Delete current or given notebook page. """ if not mbox.message_box_delete_confirm(self.wnd, _("notebook page")): return False uuid = uuid or self._page.uuid return notebook_logic.delete_notebook_page(uuid, self._session) @classmethod def open_page(cls, parent_wnd, page_uuid): """ Open dialog for given page. """ if page_uuid in cls._controllers: cls._controllers[page_uuid].open_dialog() return session = OBJ.Session() page = OBJ.NotebookPage.get(session=session, uuid=page_uuid) contr = NotebookController(parent_wnd, session, page) cls._controllers[page_uuid] = contr contr.open_dialog() @classmethod def new_page(cls, parent_wnd, folder_uuid=None): """ Open dialog with new page. """ session = OBJ.Session() if not folder_uuid or folder_uuid == "-": folder_uuid = None page = OBJ.NotebookPage(folder_uuid=folder_uuid) contr = NotebookController(parent_wnd, session, page) contr.open_dialog()
def open_dialog(self): """ Open dialog or raise existing. """ if self._dialog is None: self._dialog = DlgNotebookPage(self._parent_wnd, self._session, self._page, self) self._dialog.run()