def setUp(self): self.plugin = PluginManager.load_plugin('pageindex') self.window = setUpMainWindow( self.setUpNotebook(content=tests.FULL_NOTEBOOK)) self.extension = find_extension(self.window.pageview, PageIndexNotebookViewExtension) assert self.extension is not None
def runTest(self): plugin = PluginManager.load_plugin('inlinecalculator') notebook = self.setUpNotebook() pageview = setUpPageView(notebook) extension = find_extension(pageview, InlineCalculatorPageViewExtension) buffer = pageview.textview.get_buffer() def get_text(): start, end = buffer.get_bounds() return start.get_text(end) # Simple case buffer.set_text('1 + 1 =\n') buffer.place_cursor(buffer.get_iter_at_offset(7)) extension.eval_math() self.assertEqual(get_text(), '1 + 1 = 2\n') # Looks back to previous line buffer.set_text('1 + 1 =\n\n') buffer.place_cursor(buffer.get_iter_at_offset(8)) extension.eval_math() self.assertEqual(get_text(), '1 + 1 = 2\n\n') # Multi-line example buffer.set_text('1\n2\n3\n--- +\n') buffer.place_cursor(buffer.get_iter_at_offset(6)) extension.eval_math() self.assertEqual(get_text(), '1\n2\n3\n--- +\n6\n')
def runTest(self): plugin = InsertSymbolPlugin(ConfigManager()) mainwindow = setUpMainWindow(self.setUpNotebook(content={'Test': ''}), path='Test') pageview = mainwindow.pageview textview = pageview.textview buffer = textview.get_buffer() plugin.extend(pageview) # Widget needs to be realized pageview.realize() textview.realize() # insert on end-of-word with space press(textview, '\\alpha ') start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, ALPHA + ' \n') # Check undo - first undo replace, then the insert space pageview.undo() start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, '\\alpha \n') pageview.undo() start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, '\\alpha\n') # no trailing space # insert on end-of-word with ; buffer.clear() press(textview, r'\alpha;') start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, ALPHA) # no trailing space # no insert in code or pre section buffer.clear() pageview.toggle_format(VERBATIM) press(textview, r'\alpha ') start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, r'\alpha ') # no replace # test dialog def check_dialog(dialog): self.assertIsInstance(dialog, InsertSymbolDialog) dialog.iconview.item_activated(Gtk.TreePath((9,))) # path for 10th item in symbol list dialog.iconview.item_activated(Gtk.TreePath((10,))) # path for 11th item in symbol list dialog.iconview.item_activated(Gtk.TreePath((11,))) # path for 12th item in symbol list dialog.assert_response_ok() buffer.clear() pageview_ext = find_extension(pageview, InsertSymbolPageViewExtension) with tests.DialogContext(check_dialog): pageview_ext.insert_symbol() start, end = buffer.get_bounds() text = start.get_text(end) self.assertEqual(text, EACUTE + ECIRC + EGRAVE)
def __init__(self, plugin, pageview): PageViewExtension.__init__(self, plugin, pageview) self.notebook = pageview.notebook hpm = self.plugin.preferences['hours_past_midnight'] self.hour_delta = datetime.timedelta(hours=hpm) # JournalPageViewExtension: go_page_today journal.plugin.path_from_date self.journal = find_extension(self.pageview, JournalPageViewExtension)
def testMainWindowExtensions(self): plugin = PluginManager.load_plugin('journal') notebook = self.setUpNotebook() mainwindow = setUpMainWindow(notebook) plugin.preferences.changed() # make sure no errors are triggered ext = find_extension(mainwindow.pageview, JournalPageViewExtension) ext.go_page_today() self.assertTrue(mainwindow.page.name.startswith('Journal:'))
def runTest(self): plugin = PluginManager.load_plugin('pathbar') window = setUpMainWindow(self.setUpNotebook()) extension = find_extension(window, PathBarMainWindowExtension) for ptype in PATHBAR_TYPES: extension.set_pathbar(ptype) pathbar = window._zim_window_central_vbox.get_children()[0] if ptype == PATHBAR_NONE: self.assertNotIsInstance(pathbar, PathBar) else: self.assertIsInstance(pathbar, extension._klasses[ptype])
def testNotebookExtension(self): plugin = PluginManager.load_plugin('journal') notebook = self.setUpNotebook() ext = find_extension(notebook, JournalNotebookExtension) self.assertIsNotNone(ext) page = Path('Foo') link = notebook.suggest_link(page, '2014-01-06') self.assertEqual(link.name, 'Journal:2014:01:06') link = notebook.suggest_link(page, 'foo') self.assertIsNone(link)
def _init_widget(self): index = self.pageview.notebook.index tasksview = TasksView.new_from_index(index) properties = self.plugin.notebook_properties(self.pageview.notebook) self._widget = TaskListWidget(tasksview, self.navigation, properties, self.uistate) def on_tasklist_changed(o): self._widget.task_list.refresh() callback = DelayedCallback(10, on_tasklist_changed) # Don't really care about the delay, but want to # make it less blocking - now it is at least on idle nb_ext = find_extension(self.pageview.notebook, TaskListNotebookExtension) self.connectto(nb_ext, 'tasklist-changed', callback)
def runTest(self, adapterclass): with tests.LoggingFilter(logger='zim.plugins.spell'): # Hide exceptions window = setUpMainWindow(self.setUpNotebook(content=('Test', 'Foo', 'Bar'))) plugin = PluginManager.load_plugin('spell') ext = find_extension(window.pageview, zim.plugins.spell.SpellPageViewExtension) self.assertIs(ext._adapter_cls, adapterclass) # ensure switching library worked ext.toggle_spellcheck() ext.toggle_spellcheck() ext.toggle_spellcheck() window.open_page(Path('Foo')) window.open_page(Path('Bar')) ext.toggle_spellcheck() window.open_page(Path('Foo')) window.open_page(Path('Bar'))
def __init__(self, plugin, window): MainWindowExtension.__init__(self, plugin, window) self.notebook_ext = find_extension(window.notebook, VersionControlNotebookExtension) self._autosave_thread = None self._autosave_timer = None if self.notebook_ext.vcs is None: gaction = self.actiongroup.get_action('show_versions') gaction.set_sensitive(False) else: self.on_preferences_changed(None, start=True) def on_close(o): if self.plugin.preferences['autosave'] \ or self.plugin.preferences['autosave_at_interval']: self.do_save_version() self.window.connect('close', on_close) self.connectto(self.plugin.preferences, 'changed', self.on_preferences_changed)
def runTest(self): plugin = PluginManager.load_plugin('pageindex') window = setUpMainWindow(self.setUpNotebook()) extension = find_extension(window.pageview, PageIndexPageViewExtension) self.assertIsNotNone(extension)
def __init__(self, parent, tasksview, properties): Dialog.__init__( self, parent, _('Task List'), # T: dialog title buttons=Gtk.ButtonsType.CLOSE, help=':Plugins:Task List', defaultwindowsize=(550, 400)) self.properties = properties self.tasksview = tasksview self.notebook = parent.notebook hbox = Gtk.HBox(spacing=5) self.vbox.pack_start(hbox, False, True, 0) self.hpane = HPaned() self.uistate.setdefault('hpane_pos', 75) self.hpane.set_position(self.uistate['hpane_pos']) self.vbox.pack_start(self.hpane, True, True, 0) # Task list self.uistate.setdefault('only_show_act', False) self.uistate.setdefault('show_flatlist', False) self.uistate.setdefault('sort_column', 0) self.uistate.setdefault('sort_order', int(Gtk.SortType.DESCENDING)) opener = parent.navigation self.task_list = TaskListTreeView( self.tasksview, opener, _parse_task_labels(properties['labels']), nonactionable_tags=_parse_task_labels( properties['nonactionable_tags']), filter_actionable=self.uistate['only_show_act'], tag_by_page=properties['tag_by_page'], use_workweek=properties['use_workweek'], flatlist=self.uistate['show_flatlist'], sort_column=self.uistate['sort_column'], sort_order=self.uistate['sort_order']) self.task_list.set_headers_visible(True) self.task_list.connect('populate-popup', self.on_populate_popup) self.hpane.add2(ScrolledWindow(self.task_list)) # Tag list self.tag_list = TagListTreeView(self.task_list) self.hpane.add1(ScrolledWindow(self.tag_list)) self.connectto(properties, 'changed', self.on_properties_changed) # Filter input hbox.pack_start(Gtk.Label(_('Filter') + ': '), False, True, 0) # T: Input label filter_entry = InputEntry() filter_entry.set_icon_to_clear() hbox.pack_start(filter_entry, False, True, 0) filter_cb = DelayedCallback( 500, lambda o: self.task_list.set_filter(filter_entry.get_text())) filter_entry.connect('changed', filter_cb) # TODO: use menu button here and add same options as in context menu # for filtering the list def on_show_active_toggle(o): active = self.act_toggle.get_active() if self.uistate['only_show_act'] != active: self.uistate['only_show_act'] = active self.task_list.set_filter_actionable(active) self.act_toggle = Gtk.CheckButton.new_with_mnemonic( _('Only Show Active Tasks')) # T: Checkbox in task list - this options hides tasks that are not yet started self.act_toggle.set_active(self.uistate['only_show_act']) self.act_toggle.connect('toggled', on_show_active_toggle) self.uistate.connect( 'changed', lambda o: self.act_toggle.set_active(self.uistate[ 'only_show_act'])) hbox.pack_start(self.act_toggle, False, True, 0) # Statistics label self.statistics_label = Gtk.Label() hbox.pack_end(self.statistics_label, False, True, 0) def set_statistics(): total = self.task_list.get_n_tasks() text = ngettext('%i open item', '%i open items', total) % total # T: Label for task List, %i is the number of tasks self.statistics_label.set_text(text) set_statistics() def on_tasklist_changed(o): self.task_list.refresh() self.tag_list.refresh(self.task_list) set_statistics() callback = DelayedCallback(10, on_tasklist_changed) # Don't really care about the delay, but want to # make it less blocking - should be async preferably # now it is at least on idle from . import TaskListNotebookExtension nb_ext = find_extension(self.notebook, TaskListNotebookExtension) self.connectto(nb_ext, 'tasklist-changed', callback)
def setUp(self): self.plugin = PluginManager.load_plugin('toolbar') self.window = setUpMainWindow(self.setUpNotebook()) self.extension = find_extension(self.window.pageview, ToolBarMainWindowExtension)
def runTest(self): plugin = PageIndexPlugin() window = setUpMainWindow(self.setUpNotebook()) plugin.extend(window.pageview) extension = find_extension(window.pageview, PageIndexPageViewExtension) self.assertIsNotNone(extension)