Ejemplo n.º 1
0
    def runTest(self):
        attrib = {'aligns': 'left,left', 'wraps': '0,0'}
        preferences = {}

        for headers, rows in (
            (  # Two simple rows
                ['C1', 'C2'], [['a', 'b'], ['q', 'x']]),
            (  # Some empty fields
                ['C1', 'C2'], [['a', ' '], ['q', ' '], [' ', ' ']]),
        ):
            obj = TableViewObject(attrib, headers, rows, preferences)
            data = obj.get_data()
            self.assertEqual(data, (headers, rows, attrib))

            widget = obj.get_widget()
            data = obj.get_data()
            self.assertEqual(data, (headers, rows, attrib))

            # put object in pageview and serialize
            pageview = setUpPageView()
            pageview.insert_object(obj)
            tree = pageview.get_parsetree()
            #~ print tree.tostring()

            # re-construct from serialized version
            newpageview = setUpPageView()
            newpageview.set_parsetree(tree)
            buffer = newpageview.view.get_buffer()
            buffer.place_cursor(buffer.get_iter_at_offset(1))
            newobj = buffer.get_object_at_cursor()
            self.assertIsInstance(newobj, TableViewObject)

            data = newobj.get_data()
            self.assertEqual(data, (headers, rows, attrib))
Ejemplo n.º 2
0
	def __init__(self):
		tests.MockObject.__init__(self)
		self.preferences = ConfigDict()
		self.uistate = ConfigDict()
		self.mainwindow = tests.MockObject()
		self.mainwindow.pageview = setUpPageView()
		self.windows = []
Ejemplo n.º 3
0
 def setUp(self):
     plugin = LineSorterPlugin()
     window = tests.MockObject()
     window.pageview = setUpPageView()
     window.uimanager = tests.MockObject()
     self.extension = MainWindowExtension(plugin, window)
     self.buffer = window.pageview.view.get_buffer()
Ejemplo n.º 4
0
	def testWidget(self):
		pageview = setUpPageView(
			self.setUpNotebook(),
			text='''\

{{{code: lang="python" linenumbers="true"
def dump():
		for i in range(1, 5):
				print i
}}}

'''	)
		# test widget loaded
		objects = list(pageview.textview._object_widgets) # XXX
		self.assertIsInstance(objects[0], SourceViewWidget)

		# test modify
		widget = objects[0]
		self.assertFalse(pageview.textview.get_buffer().get_modified())
		widget.buffer.set_text('some new code')
		self.assertTrue(pageview.textview.get_buffer().get_modified())

		# test modification ends up in page
		tree = pageview.get_parsetree()
		#print(tree.tostring())
		elt = tree.find('object')
		self.assertIsNotNone(elt)
		self.assertEqual(elt.attrib['type'], 'code')
		self.assertEqual(elt.gettext(), 'some new code\n')
Ejemplo n.º 5
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')
Ejemplo n.º 6
0
    def testWidget(self):
        pageview = setUpPageView(self.setUpNotebook(),
                                 text='''\

|        H1       <|         H2 h2 | H3                    <|
|:----------------:|--------------:|:-----------------------|
|    Column A1     |     Column A2 | a                      |
| a very long cell | **bold text** | b                      |
|    hyperlinks    |   [[wp?wiki]] | [[http://x.org\|Xorg]] |

''')
        # test widget loaded
        objects = list(pageview.textview._object_widgets)  # XXX
        self.assertIsInstance(objects[0], TableViewWidget)

        # test modify
        #widget = objects[0]
        #self.assertFalse(pageview.textview.get_buffer().get_modified())
        # FIXME: change content via widget
        #self.assertTrue(pageview.textview.get_buffer().get_modified())

        # test modification ends up in page
        tree = pageview.get_parsetree()
        #print(tree.tostring())
        elt = tree.find('table')
        self.assertIsNotNone(elt)
Ejemplo n.º 7
0
	def runTest(self):
		window = tests.MockObject()
		window.pageview = setUpPageView()
		window.ui = tests.MockObject()
		window.ui.uimanager = tests.MockObject()
		window.ui.uistate = ConfigDict()
		window.ui.mainwindow = window # XXX

		plugin = TableEditorPlugin()
		extension = MainWindowExtension(plugin, window)

		with tests.DialogContext(self.checkInsertTableDialog):
			extension.insert_table()

		tree = window.pageview.get_parsetree()
		#~ print tree.tostring()
		obj = tree.find('table')

		self.assertTrue(obj.attrib['aligns'] == 'left')
		self.assertTrue(obj.attrib['wraps'] == '0')

		# Parses tree to a table object
		tabledata = tree.tostring().replace("<?xml version='1.0' encoding='utf-8'?>", '')\
			.replace('<zim-tree>', '').replace('</zim-tree>', '')\
			.replace('<td> </td>', '<td>text</td>')

		table = plugin.create_table({'type': 'table'}, ElementTree.fromstring(tabledata))

		self.assertTrue(isinstance(table, TableViewObject))
Ejemplo n.º 8
0
    def __init__(self):
        tests.MockObject.__init__(self)

        self.pageview = setUpPageView()
        self.uimanager = tests.MockObject()
        self.ui = tests.MockObject()
        self.ui.uistate = ConfigDict()
Ejemplo n.º 9
0
	def testLoadAndDump(self):
		pageview = setUpPageView(
			self.setUpNotebook(),
			text=TABLE_WIKI_TEXT,
		)
		pageview.textview.get_buffer().set_modified(True) # Force re-interpretation of the buffer
		tree = pageview.get_parsetree()
		self.assertEquals(list(tree.iter_tokens()), TABLE_TOKENS)
Ejemplo n.º 10
0
	def testDumpWiki(self):
		attachment_dir = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL)
		LocalFolder(tests.ZIM_DATADIR).file('zim.png').copyto(attachment_dir.file('test.png'))

		notebook = self.setUpNotebook()
		notebook.get_attachments_dir = lambda *a: attachment_dir

		pageview = setUpPageView(notebook, text='{{./test.png?type=equation}}')
		pageview.textview.get_buffer().set_modified(True)
		tree = pageview.get_parsetree()
		text = WikiDumper().dump(tree)
		self.assertEquals(text, ['{{./test.png?type=equation}}\n'])
Ejemplo n.º 11
0
    def setUp(self):
        notebook = self.setUpNotebook()
        pageview = setUpPageView(notebook)

        def raise_error(*a):
            raise AssertionError

        notebook.store_page = raise_error

        pageview.textview.get_buffer().set_text('Editing ...\n')
        assert pageview.page.modified

        self.page = pageview.page
        self.pageview = pageview
        self.handler = SavePageHandler(pageview, notebook, pageview.get_page)
Ejemplo n.º 12
0
	def runTest(self):
		window = tests.MockObject()
		window.pageview = setUpPageView()
		window.ui = tests.MockObject()
		window.ui.uimanager = tests.MockObject()
		window.ui.uistate = ConfigDict()
		window.ui.mainwindow = window # XXX

		plugin = SourceViewPlugin()
		extension = MainWindowExtension(plugin, window)

		with tests.DialogContext(self.checkInsertCodeBlockDialog):
			extension.insert_sourceview()

		tree = window.pageview.get_parsetree()
		#~ print tree.tostring()
		obj = tree.find('object')
		self.assertTrue(obj.attrib['type'] == 'code')
Ejemplo n.º 13
0
    def runTest(self):
        window = tests.MockObject()
        window.pageview = setUpPageView()
        window.ui = tests.MockObject()
        window.ui.uimanager = tests.MockObject()
        window.ui.uistate = ConfigDict()
        window.ui.mainwindow = window  # XXX

        plugin = SourceViewPlugin()
        extension = MainWindowExtension(plugin, window)

        with tests.DialogContext(self.checkInsertCodeBlockDialog):
            extension.insert_sourceview()

        tree = window.pageview.get_parsetree()
        #~ print tree.tostring()
        obj = tree.find('object')
        self.assertTrue(obj.attrib['type'] == 'code')
Ejemplo n.º 14
0
    def runTest(self):
        notebook = self.setUpNotebook(content={'test': 'test123\n'})
        pageview = setUpPageView(notebook)

        # Install wrapper with events
        orig = notebook._store_page_async_thread_main
        start_thread_event = threading.Event()
        thread_done_event = threading.Event()

        def wrapper(*a):
            start_thread_event.wait()
            orig(*a)
            thread_done_event.set()

        notebook._store_page_async_thread_main = wrapper

        # Test1 - normal scenario
        page = notebook.get_page(Path('Test'))
        pageview.set_page(page)
        pageview.readonly = False

        pageview.textview.get_buffer().set_text('foo')
        self.assertTrue(page.modified)
        pageview._save_page_handler.try_save_page()
        self.assertTrue(page.modified)
        start_thread_event.set()
        thread_done_event.wait()
        with NotebookState(notebook):
            self.assertFalse(page.modified)

        # Test2 - with race condition
        start_thread_event.clear()
        thread_done_event.clear()
        pageview.textview.get_buffer().set_text('bar')
        self.assertTrue(page.modified)
        pageview._save_page_handler.try_save_page()
        self.assertTrue(page.modified)
        pageview.textview.get_buffer().set_text(
            'dusss')  # edit while save ongoing
        start_thread_event.set()
        thread_done_event.wait()
        with NotebookState(notebook):
            self.assertTrue(
                page.modified)  # page must still show modified is True
Ejemplo n.º 15
0
    def testWidget(self):
        pageview = setUpPageView(
            self.setUpNotebook(),
            text=TABLE_WIKI_TEXT,
        )
        # test widget loaded
        objects = list(pageview.textview._object_widgets)  # XXX
        self.assertIsInstance(objects[0], TableViewWidget)

        # test modify
        #widget = objects[0]
        #self.assertFalse(pageview.textview.get_buffer().get_modified())
        # FIXME: change content via widget
        #self.assertTrue(pageview.textview.get_buffer().get_modified())

        # test modification ends up in page
        tree = pageview.get_parsetree()
        #print(tree.tostring())
        elt = tree.find('table')
        self.assertIsNotNone(elt)
Ejemplo n.º 16
0
	def testEditObjectDialog(self):
		attachment_dir = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL)
		LocalFolder(tests.ZIM_DATADIR).file('zim.png').copyto(attachment_dir.file('test.png'))

		notebook = self.setUpNotebook()
		notebook.get_attachments_dir = lambda *a: attachment_dir

		pageview = setUpPageView(notebook, text='{{./test.png?type=equation}}')

		def edit_dialog(dialog):
			self.assertIsInstance(dialog, ImageGeneratorDialog)
			dialog.set_text(r'c = \sqrt{ a^2 + b^2 }')
			dialog.update_image()
			dialog.assert_response_ok()

		with tests.DialogContext(edit_dialog):
			pageview.edit_object()

		self.assertEquals(attachment_dir.file('test.tex').read(), r'c = \sqrt{ a^2 + b^2 }')
		assertIsPNG(attachment_dir.file('test.png'))
Ejemplo n.º 17
0
	def runTest(self):
		plugin = InsertSymbolPlugin(ConfigManager())

		pageview = setUpPageView()
		textview = pageview.view
		buffer = textview.get_buffer()
		pageview.undostack = UndoStackManager(buffer)

		mainwindow = tests.MockObject()
		mainwindow.pageview = pageview
		mainwindow.ui = tests.MockObject() # XXX
		mainwindow.ui.uimanager = tests.MockObject() # XXX
		mainwindow.ui.uistate = SectionedConfigDict()

		plugin.extend(mainwindow, 'MainWindow')

		print '\n!! Two GtkWarnings expected here for gdk display !!'
		# Need a window to get the widget realized
		window = gtk.Window()
		window.add(pageview)
		pageview.realize()
		textview.realize()

		# insert on end-of-word with space
		press(textview, r'\alpha ')
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, ALPHA + ' ')

		# Check undo - first undo replace, then the insert space
		pageview.undo()
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, r'\alpha ')
		pageview.undo()
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, r'\alpha') # no trailing space

		# insert on end-of-word with ;
		buffer.clear()
		press(textview, r'\alpha;')
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, ALPHA) # no trailing space

		# no insert in code or pre section
		buffer.clear()
		pageview.toggle_format(VERBATIM)
		press(textview, r'\alpha ')
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, r'\alpha ') # no replace

		# test dialog
		def check_dialog(dialog):
			self.assertIsInstance(dialog, InsertSymbolDialog)
			dialog.iconview.item_activated((9,)) # path for 10th item in symbol list
			dialog.iconview.item_activated((10,)) # path for 11th item in symbol list
			dialog.iconview.item_activated((11,)) # path for 12th item in symbol list
			dialog.assert_response_ok()

		buffer.clear()
		mainwindow_ext = plugin.get_extension(MainWindowExtension)
		with tests.DialogContext(check_dialog):
			mainwindow_ext.insert_symbol()
		text = buffer.get_text(*buffer.get_bounds())
		self.assertEqual(text, EACUTE + ECIRC + EGRAVE)
Ejemplo n.º 18
0
    def runTest(self):
        plugin = InsertSymbolPlugin(ConfigManager())

        pageview = setUpPageView()
        textview = pageview.view
        buffer = textview.get_buffer()
        pageview.undostack = UndoStackManager(buffer)

        mainwindow = tests.MockObject()
        mainwindow.pageview = pageview
        mainwindow.ui = tests.MockObject()  # XXX
        mainwindow.ui.uimanager = tests.MockObject()  # XXX
        mainwindow.ui.uistate = SectionedConfigDict()

        plugin.extend(mainwindow, 'MainWindow')

        print '\n!! Two GtkWarnings expected here for gdk display !!'
        # Need a window to get the widget realized
        window = gtk.Window()
        window.add(pageview)
        pageview.realize()
        textview.realize()

        # insert on end-of-word with space
        press(textview, r'\alpha ')
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, ALPHA + ' ')

        # Check undo - first undo replace, then the insert space
        pageview.undo()
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, r'\alpha ')
        pageview.undo()
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, r'\alpha')  # no trailing space

        # insert on end-of-word with ;
        buffer.clear()
        press(textview, r'\alpha;')
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, ALPHA)  # no trailing space

        # no insert in code or pre section
        buffer.clear()
        pageview.toggle_format(VERBATIM)
        press(textview, r'\alpha ')
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, r'\alpha ')  # no replace

        # test dialog
        def check_dialog(dialog):
            self.assertIsInstance(dialog, InsertSymbolDialog)
            dialog.iconview.item_activated(
                (9, ))  # path for 10th item in symbol list
            dialog.iconview.item_activated(
                (10, ))  # path for 11th item in symbol list
            dialog.iconview.item_activated(
                (11, ))  # path for 12th item in symbol list
            dialog.assert_response_ok()

        buffer.clear()
        mainwindow_ext = plugin.get_extension(MainWindowExtension)
        with tests.DialogContext(check_dialog):
            mainwindow_ext.insert_symbol()
        text = buffer.get_text(*buffer.get_bounds())
        self.assertEqual(text, EACUTE + ECIRC + EGRAVE)