def __init__(self, workspace, recently_opened_notebooks): self.sidebar = ServiceLocator.get_main_window().sidebar self.hbchooser = ServiceLocator.get_main_window( ).headerbar.hb_right.notebook_chooser self.kernelspecs = ServiceLocator.get_kernelspecs() self.workspace = workspace self.recently_opened_notebooks = recently_opened_notebooks self.recently_opened_notebooks.register_observer(self)
def __init__(self, workspace, recently_opened_notebooks): self.sidebar = ServiceLocator.get_main_window().sidebar self.hbchooser = ServiceLocator.get_main_window( ).headerbar.hb_right.notebook_chooser self.workspace = workspace self.recently_opened_notebooks = recently_opened_notebooks for widget in [self.sidebar, self.hbchooser]: widget.recent_notebooks_list_view.set_sort_func(self.sort_func) widget.recent_notebooks_list_view.connect( 'row-activated', self.on_recent_notebooks_list_click) self.recently_opened_notebooks.populate_from_disk()
def __init__(self, workspace, sb_view, hb_view): self.sb_view = sb_view self.hb_view = hb_view self.sidebar = ServiceLocator.get_main_window().sidebar self.hbchooser = ServiceLocator.get_main_window().headerbar.hb_right.notebook_chooser self.main_window = ServiceLocator.get_main_window() self.workspace = workspace self.open_notebook_should_scroll = False self.open_notebook_hb_should_scroll = False self.sidebar.connect('size-allocate', self.on_open_notebook_view_size_allocate) self.hbchooser.connect('size-allocate', self.on_open_notebook_hb_view_size_allocate) self.sb_view.connect('row-selected', self.on_open_notebooks_list_selected) self.hb_view.connect('row-selected', self.on_open_notebooks_list_selected)
def __init__(self, workspace): self.workspace = workspace self.headerbar = ServiceLocator.get_main_window().headerbar self.kernelspecs = ServiceLocator.get_kernelspecs() self.window_mode = None self.activate_welcome_page_mode() self.setup_kernel_changer() if self.workspace.show_sidebar: self.on_show_sidebar() else: self.on_hide_sidebar() self.workspace.register_observer(self)
def __init__(self, notebook): Observable.__init__(self) self.kernel = None self.notebook = notebook self.continue_fetching = True self.result_factory = ServiceLocator.get_result_factory() self.fetch_func_id = GObject.timeout_add(50, self.fetch_results)
def close_all_notebooks_after_modified_check(self): notebooks = self.workspace.get_unsaved_notebooks() active_notebook = self.workspace.get_active_notebook() if len(notebooks) == 0 or active_notebook == None or ServiceLocator.get_dialog('close_confirmation').run(notebooks)['all_save_to_close']: for notebook in list(self.workspace.open_notebooks.values()): self.close_notebook(notebook)
def __init__(self, pathname): Observable.__init__(self) self.pathname = pathname self.kernelname = None self.cells = [] self.active_cell = None self.busy_cells = set() self.modified_cells = set() self.kernel_state = None self.result_factory = ServiceLocator.get_result_factory() self.save_state = 'saved' try: self.last_saved = datetime.datetime.fromtimestamp(os.path.getmtime(pathname)) except FileNotFoundError: self.last_saved = datetime.datetime.fromtimestamp(0) # set source language for syntax highlighting self.source_language_manager = GtkSource.LanguageManager() self.source_language_manager.set_search_path((os.path.dirname(__file__) + '/../resources/gtksourceview/language-specs',)) self.source_language_code = self.source_language_manager.get_language('sage') self.source_language_markdown = self.source_language_manager.get_language('markdown') self.source_style_scheme_manager = GtkSource.StyleSchemeManager() self.source_style_scheme_manager.set_search_path((os.path.dirname(__file__) + '/../resources/gtksourceview/styles',)) self.source_style_scheme = self.source_style_scheme_manager.get_scheme('sage') self.cursor_position = {'cell': None, 'cell_position': None, 'cell_size': None, 'position': None} self.list_item = list_item_model.NotebookListItem(self) self.view = notebook_viewgtk.NotebookView() self.presenter = notebook_presenter.NotebookPresenter(self, self.view) self.controller = notebook_controller.NotebookController(self, self.view) self.evaluator = notebook_evaluator.NotebookEvaluator(self) self.headerbar_controls = headerbar_controls.HeaderbarControls(self)
def load_from_disk(self): nb = nbformat.read(self.pathname, nbformat.current_nbformat) if self.get_cell_count() == 0: kernelname = nb.metadata['kernelspec']['name'] if not ServiceLocator.get_kernelspecs().is_installed(kernelname): raise KernelMissing(kernelname) self.set_kernelname(kernelname) self.set_kernel_state('kernel_to_start') is_first_cell = True for cell in nb.cells: if cell.cell_type == 'markdown': new_cell = self.create_markdowncell('last', cell.source) try: in_edit_mode = cell.metadata['in_edit_mode'] except KeyError: in_edit_mode = False if len(cell.source) > 0 and in_edit_mode == False: new_cell.evaluate_now() elif cell.cell_type == 'code': new_cell = self.create_cell('last', cell.source) if is_first_cell == True: is_first_cell = False self.set_active_cell(new_cell) for output in cell.outputs: if output['output_type'] == 'error': result = self.result_factory.get_error_from_nbformat_dict(output) new_cell.set_result(result) elif output['output_type'] == 'execute_result' or output['output_type'] == 'display_data': try: data = output['data'] except KeyError: pass else: result = self.result_factory.get_result_from_blob(data) new_cell.set_result(result) elif output['output_type'] == 'stream': new_cell.add_to_stream(output['name'], output['text']) self.set_save_state('saved')
def on_open_action(self, action=None, pathname=None): if pathname == None: pathname = ServiceLocator.get_dialog('open_notebook').run() if pathname != None: notebook = self.workspace.get_notebook_by_pathname(pathname) if notebook == None: if pathname.split('.')[-1] == 'ipynb': notebook = model_notebook.Notebook(pathname) try: notebook.load_from_disk() except FileNotFoundError: notebook = None except model_notebook.KernelMissing as e: ServiceLocator.get_dialog('kernel_missing').run(str(e)) else: self.workspace.add_notebook(notebook) self.workspace.set_active_notebook(notebook) else: self.workspace.set_active_notebook(notebook)
def save_quit(self, accel_group=None, window=None, key=None, mask=None): ''' signal handler, ask user to save unsaved notebooks or discard changes ''' notebooks = self.workspace.get_unsaved_notebooks() active_notebook = self.workspace.get_active_notebook() if len(notebooks) == 0 or active_notebook == None or ServiceLocator.get_dialog('close_confirmation').run(notebooks)['all_save_to_close']: self.save_window_state() self.workspace.shutdown_all_kernels() self.quit()
def __init__(self, notebook): self.notebook = notebook self.notebook.register_observer(self) self.result_factory = ServiceLocator.get_result_factory() self.backend_code = backend_code.BackendCode(notebook) self.backend_code.register_observer(self) self.markdown_compute_queue = backend_markdown.ComputeQueue() self.markdown_compute_queue.register_observer(self)
def __init__(self, workspace, open_notebooks_list, sb_view, hb_view): self.workspace = workspace self.open_notebooks_list = open_notebooks_list self.main_window = ServiceLocator.get_main_window() self.sidebar = ServiceLocator.get_main_window().sidebar self.sb_view = sb_view self.sb_view.set_can_focus(False) self.sb_view.set_sort_func(self.sort_func) self.sidebar.open_notebooks_list_view_wrapper.add(self.sb_view) self.hbchooser = ServiceLocator.get_main_window().headerbar.hb_right.notebook_chooser self.hb_view = hb_view self.hb_view.set_can_focus(False) self.hb_view.set_sort_func(self.sort_func) self.hbchooser.open_notebooks_list_view_wrapper.add(self.hb_view) self.hbchooser.open_notebooks_list_view_wrapper.hide() self.workspace.register_observer(self) self.open_notebooks_list.register_observer(self)
def do_activate(self): ''' Everything starts here. ''' # load settings self.settings = ServiceLocator.get_settings() # init view self.main_window = view.MainWindow(self) ServiceLocator.init_main_window(self.main_window) self.main_window.set_default_size(self.settings.get_value('window_state', 'width'), self.settings.get_value('window_state', 'height')) if self.settings.get_value('window_state', 'is_maximized'): self.main_window.maximize() else: self.main_window.unmaximize() if self.settings.get_value('window_state', 'is_fullscreen'): self.main_window.fullscreen() else: self.main_window.unfullscreen() self.main_window.show_all() self.workspace = Workspace() kernelspecs = ServiceLocator.get_kernelspecs() ServiceLocator.init_dialogs(self.main_window, self.workspace, kernelspecs) # controllers self.main_window.quit_action.connect('activate', self.on_quit_action) # watch changes in view self.observe_main_window()
def __init__(self, workspace): self.workspace = workspace self.main_window = ServiceLocator.get_main_window() self.settings = ServiceLocator.get_settings() self.main_window.toggle_sidebar_action.connect('activate', self.toggle_sidebar) self.main_window.preferences_action.connect('activate', self.show_preferences_dialog) self.main_window.show_about_dialog_action.connect('activate', self.show_about_dialog) self.main_window.show_shortcuts_window_action.connect('activate', self.show_shortcuts_window) self.main_window.sidebar.connect('size-allocate', self.on_sidebar_size_allocate) self.main_window.restart_kernel_action.connect('activate', self.on_restart_kernel_action) self.main_window.change_kernel_action.connect('activate', self.on_change_kernel_action) self.main_window.save_all_action.connect('activate', self.on_save_all_action) self.main_window.save_as_action.connect('activate', self.on_save_as_action) self.main_window.delete_action.connect('activate', self.on_delete_action) self.main_window.close_action.connect('activate', self.on_close_action) self.main_window.close_all_action.connect('activate', self.on_close_all_action) self.main_window.open_action.connect('activate', self.on_open_action) self.main_window.create_action.connect('activate', self.on_create_action) self.settings.register_observer(self)
def on_create_action(self, action=None, parameter=None): parameters = ServiceLocator.get_dialog('create_notebook').run() if parameters != None: pathname, kernelname = parameters self.workspace.recently_opened_notebooks.remove_notebook_by_pathname(pathname) self.workspace.remove_notebook_by_pathname(pathname) notebook = model_notebook.Notebook(pathname) notebook.set_kernelname(kernelname) notebook.create_cell(0, '', activate=True) notebook.save_to_disk() self.workspace.add_notebook(notebook) self.workspace.set_active_notebook(notebook)
def __init__(self, workspace): Observable.__init__(self) self.workspace = workspace self.main_window = ServiceLocator.get_main_window() self.window_mode = None self.activate_welcome_page_mode() self.main_window.paned.set_position(self.workspace.sidebar_position) if self.workspace.show_sidebar: self.on_show_sidebar() else: self.on_hide_sidebar() self.workspace.register_observer(self)
def __init__(self, notebook): Observable.__init__(self) self.notebook = notebook self.kernelspecs = ServiceLocator.get_kernelspecs() self.sb_view = nbli_view.OpenNotebookListViewItem( notebook, notebook.get_last_saved()) self.hb_view = nbli_view.OpenNotebookListViewItem( notebook, notebook.get_last_saved()) self.presenter = nbli_presenter.NotebookListItemPresenter( notebook, self, self.sb_view, self.hb_view) self.controller = nbli_controller.NotebookListItemController( notebook, self, self.sb_view, self.hb_view) self.set_kernel(notebook.get_kernelname())
def __init__(self): Observable.__init__(self) self.recently_opened_notebooks = ro_notebooks_list.RecentlyOpenedNotebooksList(self) self.open_notebooks_list = open_notebooks_list.OpenNotebooksList(self) self.open_notebooks = dict() self.active_notebook = None self.settings = ServiceLocator.get_settings() self.show_sidebar = self.settings.get_value('window_state', 'sidebar_visible') self.sidebar_position = self.settings.get_value('window_state', 'paned_position') self.presenter = workspace_presenter.WorkspacePresenter(self) self.controller = workspace_controller.WorkspaceController(self) self.headerbar = headerbar_model.Headerbar(self) self.shortcuts = shortcuts.Shortcuts(self) self.set_pretty_print(self.settings.get_value('preferences', 'pretty_print'))
def __init__(self, workspace): self.main_window = ServiceLocator.get_main_window() self.workspace = workspace self.setup_shortcuts()
def delete_notebook(self, notebook): if ServiceLocator.get_dialog('delete_notebook').run(notebook): self.close_notebook(notebook, add_to_recently_opened=False) notebook.remove_from_disk()
def show_about_dialog(self, action, parameter=''): ServiceLocator.get_dialog('about').run()
def show_preferences_dialog(self, action=None, parameter=''): ServiceLocator.get_dialog('preferences').run()
def show_shortcuts_window(self, action, parameter=''): ServiceLocator.get_dialog('keyboard_shortcuts').run()
def close_notebook_after_modified_check(self, notebook): if notebook.get_save_state() != 'modified' or ServiceLocator.get_dialog('close_confirmation').run([notebook])['all_save_to_close']: self.close_notebook(notebook)
def on_save_as_action(self, action=None, parameter=None): notebook = self.workspace.get_active_notebook() if notebook != None: ServiceLocator.get_dialog('save_as').run(notebook)