Beispiel #1
0
 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
Beispiel #2
0
    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')
Beispiel #3
0
	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)
Beispiel #4
0
    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)
Beispiel #5
0
	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])
Beispiel #7
0
	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)
Beispiel #8
0
	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)
Beispiel #9
0
	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)
Beispiel #11
0
 def runTest(self):
     plugin = PluginManager.load_plugin('pageindex')
     window = setUpMainWindow(self.setUpNotebook())
     extension = find_extension(window.pageview, PageIndexPageViewExtension)
     self.assertIsNotNone(extension)
Beispiel #12
0
    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)
Beispiel #14
0
 def runTest(self):
     plugin = PageIndexPlugin()
     window = setUpMainWindow(self.setUpNotebook())
     plugin.extend(window.pageview)
     extension = find_extension(window.pageview, PageIndexPageViewExtension)
     self.assertIsNotNone(extension)