class PageWindow(Window): '''Secondary window, showing a single page''' def __init__(self, notebook, page, config, navigation): Window.__init__(self) self.navigation = navigation self.set_title(page.name + ' - Zim') #if ui.notebook.icon: # try: # self.set_icon_from_file(ui.notebook.icon) # except GObject.GError: # logger.exception('Could not load icon %s', ui.notebook.icon) page = notebook.get_page(page) if hasattr(config, 'uistate'): self.uistate = config.uistate['PageWindow'] else: self.uistate = ConfigDict() self.uistate.setdefault('windowsize', (500, 400), check=value_is_coord) w, h = self.uistate['windowsize'] self.set_default_size(w, h) self.pageview = PageView(notebook, config, navigation, secondary=True) self.pageview.set_page(page) self.add(self.pageview)
class TestBookmarksBar(tests.TestCase): def setUp(self): self.PATHS = ('Parent:Daughter:Granddaughter', 'Test:tags', 'Test:foo', 'Books') self.LEN_PATHS = len(self.PATHS) self.PATHS_NAMES = {self.PATHS[0]: 'name 1', self.PATHS[1]: 'name 2', self.PATHS[2]: 'name 3'} self.notebook = self.setUpNotebook(content=self.PATHS) self.uistate = ConfigDict() self.uistate.setdefault('bookmarks', []) self.uistate.setdefault('bookmarks_names', {}) self.uistate.setdefault('show_full_page_name', True) def testGeneral(self): '''Test general functions: add, delete bookmarks.''' navigation = tests.MockObject() bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') bar.max_bookmarks = 15 # set maximum number of bookmarks # Add paths to the beginning of the bar. for i, path in enumerate(self.PATHS): bar._add_new(path, add_bookmarks_to_beginning = True) self.assertEqual(len(bar.paths), i + 1) self.assertTrue(bar.paths == list(reversed(self.PATHS))) # Add paths to the end of the bar. bar.paths = [] for i, path in enumerate(self.PATHS): bar._add_new(path, add_bookmarks_to_beginning = False) self.assertEqual(len(bar.paths), i + 1) self.assertEqual(bar.paths, list(self.PATHS)) # Check that the same path can't be added to the bar. bar._add_new(self.PATHS[0]) bar._add_new(self.PATHS[1]) self.assertEqual(bar.paths, list(self.PATHS)) # Delete paths from the bar. for i, button in enumerate(bar.scrolledbox.get_scrolled_children()): path = button.zim_path self.assertTrue(path in bar.paths) bar.delete(button.zim_path) self.assertEqual(len(bar.paths), self.LEN_PATHS - i - 1) self.assertTrue(path not in bar.paths) self.assertEqual(bar.paths, []) # Delete all bookmarks from the bar. bar.delete_all() self.assertEqual(bar.paths, []) def testDeletePages(self): '''Check deleting a bookmark after deleting a page in the notebook.''' self.uistate['bookmarks'] = list(self.PATHS) navigation = tests.MockObject() bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') for i, path in enumerate(self.PATHS): self.assertTrue(path in bar.paths) self.notebook.delete_page(Path(path)) self.assertTrue(path not in bar.paths) self.assertEqual(len(bar.paths), self.LEN_PATHS - i - 1) self.assertEqual(bar.paths, []) def testFunctions(self): '''Test bookmark functions: changing, reordering, ranaming.''' navigation = tests.MockObject() bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') bar.max_bookmarks = 15 # set maximum number of bookmarks # Check changing a bookmark. for i, path in enumerate(self.PATHS): bar._add_new(path, add_bookmarks_to_beginning = False) self.assertTrue('Test' not in bar.paths) self.assertTrue('Books' in bar.paths) bar.change_bookmark('Books', 'Books') self.assertEqual(bar.paths, list(self.PATHS)) bar.change_bookmark('Books', 'Test') self.assertTrue('Test' in bar.paths) self.assertTrue('Books' not in bar.paths) _result = [a if a != 'Books' else 'Test' for a in self.PATHS] self.assertEqual(bar.paths, _result) bar.change_bookmark('Test', 'Books') self.assertEqual(bar.paths, list(self.PATHS)) # Check reordering bookmarks. new_paths = ('1', '2', '3', '4', '5') bar.paths = list(new_paths) bar.move_bookmark(new_paths[2], new_paths[2], 'left') self.assertEqual(bar.paths, list(new_paths)) bar.move_bookmark(new_paths[3], new_paths[3], 'right') self.assertEqual(bar.paths, list(new_paths)) bar.move_bookmark('3', '1', 'left') self.assertEqual(bar.paths, ['3', '1', '2', '4', '5']) bar.move_bookmark('5', '1', 'left') self.assertEqual(bar.paths, ['3', '5', '1', '2', '4']) bar.move_bookmark('5', '1', 'right') self.assertEqual(bar.paths, ['3', '1', '5', '2', '4']) bar.move_bookmark('3', '4', 'right') self.assertEqual(bar.paths, ['1', '5', '2', '4', '3']) bar.move_bookmark('5', '4', '-') self.assertEqual(bar.paths, ['1', '5', '2', '4', '3']) # Check rename_bookmark and save options. preferences_changed = lambda save: bar.on_preferences_changed({'save': save, 'add_bookmarks_to_beginning': False, 'max_bookmarks': 15}) new_path_names = {new_paths[0]: '11', new_paths[1]: '22', new_paths[2]: '33'} bar.paths = list(new_paths) preferences_changed(True) bar._reload_bar() def rename_check(label, path, paths_names, path_names_uistate): self.assertEqual(button.get_label(), label) self.assertEqual(button.zim_path, path) self.assertEqual(bar.paths_names, paths_names) self.assertEqual(self.uistate['bookmarks_names'], path_names_uistate) button = Gtk.Button(label = new_paths[0], use_underline = False) button.zim_path = new_paths[0] rename_check(new_paths[0], new_paths[0], {}, {}) Clipboard.set_text('new name') bar.rename_bookmark(button) rename_check('new name', new_paths[0], {new_paths[0]: 'new name'}, {new_paths[0]: 'new name'}) preferences_changed(False) rename_check('new name', new_paths[0], {new_paths[0]: 'new name'}, {}) preferences_changed(True) rename_check('new name', new_paths[0], {new_paths[0]: 'new name'}, {new_paths[0]: 'new name'}) bar.rename_bookmark(button) rename_check(new_paths[0], new_paths[0], {}, {}) # Check delete with renaming. preferences_changed(True) paths_names_copy = dict(new_path_names) bar.paths_names = dict(new_path_names) for key in new_path_names: bar.delete(key) del paths_names_copy[key] self.assertEqual(bar.paths_names, paths_names_copy) self.assertEqual(self.uistate['bookmarks_names'], bar.paths_names) # Check delete all with renaming. bar.paths_names = dict(new_path_names) bar.delete_all() self.assertEqual(bar.paths_names, {}) self.assertEqual(self.uistate['bookmarks_names'], {}) # Check change bookmark with renaming. new_path_names = {new_paths[0]: '11', new_paths[1]: '22', new_paths[2]: '33'} bar.paths = list(new_paths) bar.paths_names = dict(new_path_names) paths_names_copy = dict(new_path_names) _name = paths_names_copy.pop(new_paths[0]) paths_names_copy['new path'] = _name bar.change_bookmark(new_paths[0], 'new path') self.assertEqual(bar.paths_names, paths_names_copy) self.assertEqual(bar.paths, ['new path'] + list(new_paths[1:])) def testPreferences(self): '''Check preferences: full/short page names, save option, max number of bookmarks.''' # Check short page names. navigation = tests.MockObject() bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') self.uistate['show_full_page_name'] = False for path in self.PATHS: bar._add_new(path) self.assertEqual(bar.paths, list(self.PATHS)) for i, button in enumerate(bar.scrolledbox.get_scrolled_children()): self.assertEqual(self.PATHS[i], button.zim_path) self.assertEqual(Path(self.PATHS[i]).basename, button.get_label()) # Show full page names. bar.toggle_show_full_page_name() self.assertEqual(bar.paths, list(self.PATHS)) for i, button in enumerate(bar.scrolledbox.get_scrolled_children()): self.assertEqual(self.PATHS[i], button.zim_path) self.assertEqual(self.PATHS[i], button.get_label()) # Check save option. self.uistate['bookmarks'] = list(self.PATHS) self.uistate['bookmarks_names'] = dict(self.PATHS_NAMES) bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') self.assertEqual(bar.paths, list(self.PATHS)) self.assertEqual(bar.paths_names, self.PATHS_NAMES) self.uistate['bookmarks'] = [] self.uistate['bookmarks_names'] = {} bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') self.assertEqual(bar.paths, []) self.assertEqual(bar.paths_names, {}) # Get pages to check max number of bookmarks. pagelist = [] for path in [Path('Page %i' % i) for i in range(25)]: page = self.notebook.get_page(path) page.parse('wiki', 'TEst 123') self.notebook.store_page(page) pagelist.append(path.name) self.assertTrue(len(pagelist) > 20) def preferences_changed(save, max_b): bar.on_preferences_changed({ 'save': save, 'add_bookmarks_to_beginning': False, 'max_bookmarks': max_b}) # Check that more than max bookmarks can be loaded at start. self.uistate['bookmarks'] = pagelist bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') self.assertEqual(pagelist, bar.paths) preferences_changed(True, 5) self.assertEqual(pagelist, bar.paths) self.assertEqual(pagelist, self.uistate['bookmarks']) # Set maximum number of bookmarks. self.uistate['bookmarks'] = [] bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '') for max_bookmarks in (5, 10, 15, 20): preferences_changed(False, max_bookmarks) for page in pagelist: bar._add_new(page) self.assertEqual(len(bar.paths), max_bookmarks) self.assertEqual(bar.paths, pagelist[:max_bookmarks]) bar.delete_all() # Check 'save' option in preferences. for i, path in enumerate(self.PATHS): preferences_changed(False, 15) bar._add_new(path) self.assertEqual(self.uistate['bookmarks'], []) preferences_changed(True, 15) self.assertEqual(self.uistate['bookmarks'], list(self.PATHS[:i + 1])) self.assertEqual(self.uistate['bookmarks'], list(self.PATHS))
class TestBookmarksBar(tests.TestCase): @classmethod def setUpClass(cls): cls.notebook = tests.new_notebook() cls.index = cls.notebook.index cls.ui = MockUI() cls.ui.notebook = cls.notebook cls.ui.page = Path('Test:foo') def setUp(self): self.PATHS = ('Parent:Daughter:Granddaughter', 'Test:tags', 'Test:foo', 'Books') self.LEN_PATHS = len(self.PATHS) self.PATHS_NAMES = {self.PATHS[0]:'name 1', self.PATHS[1]:'name 2', self.PATHS[2]:'name 3'} self.uistate = ConfigDict() self.uistate.setdefault('bookmarks', []) self.uistate.setdefault('bookmarks_names', {}) self.uistate.setdefault('show_full_page_name', True) def testGeneral(self): '''Test general functions: add, delete bookmarks.''' self.assertTrue(self.notebook.get_page(self.ui.page).exists()) Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') Bar.max_bookmarks = 15 # set maximum number of bookmarks # Add paths to the beginning of the bar. for i, path in enumerate(self.PATHS): Bar._add_new(path, add_bookmarks_to_beginning = True) self.assertEqual(len(Bar.paths), i + 1) self.assertTrue(Bar.paths == list(reversed(self.PATHS))) # Add paths to the end of the bar. Bar.paths = [] for i, path in enumerate(self.PATHS): Bar._add_new(path, add_bookmarks_to_beginning = False) self.assertEqual(len(Bar.paths), i + 1) self.assertEqual(Bar.paths, list(self.PATHS)) # Check that the same path can't be added to the bar. Bar._add_new(self.PATHS[0]) Bar._add_new(self.PATHS[1]) self.assertEqual(Bar.paths, list(self.PATHS)) # Delete paths from the bar. for i, button in enumerate(Bar.container.get_children()[2:]): path = button.zim_path self.assertTrue(path in Bar.paths) Bar.delete(button.zim_path) self.assertEqual(len(Bar.paths), self.LEN_PATHS - i - 1) self.assertTrue(path not in Bar.paths) self.assertEqual(Bar.paths, []) # Delete all bookmarks from the bar. Bar.delete_all() self.assertEqual(Bar.paths, []) def testDeletePages(self): '''Check deleting a bookmark after deleting a page in the notebook.''' notebook = tests.new_notebook() ui = MockUI() ui.notebook = notebook self.uistate['bookmarks'] = list(self.PATHS) Bar = BookmarkBar(ui, self.uistate, get_page_func = lambda: '') for i, path in enumerate(self.PATHS): self.assertTrue(path in Bar.paths) notebook.delete_page(Path(path)) self.assertTrue(path not in Bar.paths) self.assertEqual(len(Bar.paths), self.LEN_PATHS - i - 1) self.assertEqual(Bar.paths, []) def testFunctions(self): '''Test bookmark functions: changing, reordering, ranaming.''' Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') Bar.max_bookmarks = 15 # set maximum number of bookmarks # Check changing a bookmark. for i, path in enumerate(self.PATHS): Bar._add_new(path, add_bookmarks_to_beginning = False) self.assertTrue('Test' not in Bar.paths) self.assertTrue('Books' in Bar.paths) Bar.change_bookmark('Books', 'Books') self.assertEqual(Bar.paths, list(self.PATHS)) Bar.change_bookmark('Books', 'Test') self.assertTrue('Test' in Bar.paths) self.assertTrue('Books' not in Bar.paths) _result = [a if a != 'Books' else 'Test' for a in self.PATHS] self.assertEqual(Bar.paths, _result) Bar.change_bookmark('Test', 'Books') self.assertEqual(Bar.paths, list(self.PATHS)) # Check reordering bookmarks. new_paths = ('1','2','3','4','5') Bar.paths = list(new_paths) Bar.move_bookmark(new_paths[2], new_paths[2], 'left') self.assertEqual(Bar.paths, list(new_paths)) Bar.move_bookmark(new_paths[3], new_paths[3], 'right') self.assertEqual(Bar.paths, list(new_paths)) Bar.move_bookmark('3', '1', 'left') self.assertEqual(Bar.paths, ['3','1','2','4','5']) Bar.move_bookmark('5', '1', 'left') self.assertEqual(Bar.paths, ['3','5','1','2','4']) Bar.move_bookmark('5', '1', 'right') self.assertEqual(Bar.paths, ['3','1','5','2','4']) Bar.move_bookmark('3', '4', 'right') self.assertEqual(Bar.paths, ['1','5','2','4','3']) Bar.move_bookmark('5', '4', '-') self.assertEqual(Bar.paths, ['1','5','2','4','3']) # Check rename_bookmark and save options. preferences_changed = lambda save: Bar.on_preferences_changed({'save': save, 'add_bookmarks_to_beginning': False, 'max_bookmarks': 15}) new_path_names = {new_paths[0]:'11', new_paths[1]:'22', new_paths[2]:'33'} Bar.paths = list(new_paths) preferences_changed(True) Bar._reload_bar() def rename_check(label, path, paths_names, path_names_uistate): self.assertEqual(button.get_label(), label) self.assertEqual(button.zim_path, path) self.assertEqual(Bar.paths_names, paths_names) self.assertEqual(self.uistate['bookmarks_names'], path_names_uistate) button = gtk.Button(label = new_paths[0], use_underline = False) button.zim_path = new_paths[0] rename_check(new_paths[0], new_paths[0], {}, {}) Clipboard.set_text('new name') Bar.rename_bookmark(button) rename_check('new name', new_paths[0], {new_paths[0]:'new name'}, {new_paths[0]:'new name'}) preferences_changed(False) rename_check('new name', new_paths[0], {new_paths[0]:'new name'}, {}) preferences_changed(True) rename_check('new name', new_paths[0], {new_paths[0]:'new name'}, {new_paths[0]:'new name'}) Bar.rename_bookmark(button) rename_check(new_paths[0], new_paths[0], {}, {}) # Check delete with renaming. preferences_changed(True) paths_names_copy = dict(new_path_names) Bar.paths_names = dict(new_path_names) for key in new_path_names: Bar.delete(key) del paths_names_copy[key] self.assertEqual(Bar.paths_names, paths_names_copy) self.assertEqual(self.uistate['bookmarks_names'], Bar.paths_names) # Check delete all with renaming. Bar.paths_names = dict(new_path_names) Bar.delete_all() self.assertEqual(Bar.paths_names, {}) self.assertEqual(self.uistate['bookmarks_names'], {}) # Check change bookmark with renaming. new_path_names = {new_paths[0]:'11', new_paths[1]:'22', new_paths[2]:'33'} Bar.paths = list(new_paths) Bar.paths_names = dict(new_path_names) paths_names_copy = dict(new_path_names) _name = paths_names_copy.pop(new_paths[0]) paths_names_copy['new path'] = _name Bar.change_bookmark(new_paths[0], 'new path') self.assertEqual(Bar.paths_names, paths_names_copy) self.assertEqual(Bar.paths, ['new path'] + list(new_paths[1:])) def testPreferences(self): '''Check preferences: full/short page names, save option, max number of bookmarks.''' # Check short page names. Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') self.uistate['show_full_page_name'] = False for path in self.PATHS: Bar._add_new(path) self.assertEqual(Bar.paths, list(self.PATHS)) for i, button in enumerate(Bar.container.get_children()[2:]): self.assertEqual(self.PATHS[i], button.zim_path) self.assertEqual(Path(self.PATHS[i]).basename, button.get_label()) # Show full page names. Bar.toggle_show_full_page_name() self.assertEqual(Bar.paths, list(self.PATHS)) for i, button in enumerate(Bar.container.get_children()[2:]): self.assertEqual(self.PATHS[i], button.zim_path) self.assertEqual(self.PATHS[i], button.get_label()) # Check save option. self.uistate['bookmarks'] = list(self.PATHS) self.uistate['bookmarks_names'] = dict(self.PATHS_NAMES) Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') self.assertEqual(Bar.paths, list(self.PATHS)) self.assertEqual(Bar.paths_names, self.PATHS_NAMES) self.uistate['bookmarks'] = [] self.uistate['bookmarks_names'] = {} Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') self.assertEqual(Bar.paths, []) self.assertEqual(Bar.paths_names, {}) # Get pages to check max number of bookmarks. pagelist = set(self.index.list_pages(None)) _enhanced_pagelist = set() for page in pagelist: _enhanced_pagelist.update( set(self.index.list_pages(page)) ) if len(_enhanced_pagelist) > 20: break pagelist.update(_enhanced_pagelist) pagelist = [a.name for a in pagelist if a.exists()] self.assertTrue(len(pagelist) > 20) def preferences_changed(save, max_b): Bar.on_preferences_changed({ 'save': save, 'add_bookmarks_to_beginning': False, 'max_bookmarks': max_b}) # Check that more than max bookmarks can be loaded at start. self.uistate['bookmarks'] = pagelist Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') self.assertEqual(pagelist, Bar.paths) preferences_changed(True, 5) self.assertEqual(pagelist, Bar.paths) self.assertEqual(pagelist, self.uistate['bookmarks']) # Set maximum number of bookmarks. self.uistate['bookmarks'] = [] Bar = BookmarkBar(self.ui, self.uistate, get_page_func = lambda: '') for max_bookmarks in (5, 10, 15, 20): preferences_changed(False, max_bookmarks) for page in pagelist: Bar._add_new(page) self.assertEqual(len(Bar.paths), max_bookmarks) self.assertEqual(Bar.paths, pagelist[:max_bookmarks]) Bar.delete_all() # Check 'save' option in preferences. for i, path in enumerate(self.PATHS): preferences_changed(False, 15) Bar._add_new(path) self.assertEqual(self.uistate['bookmarks'], []) preferences_changed(True, 15) self.assertEqual(self.uistate['bookmarks'], list(self.PATHS[:i+1])) self.assertEqual(self.uistate['bookmarks'], list(self.PATHS))
def runTest(self): '''There is one long test.''' ui = MockUI() ui.notebook = self.notebook ui.page = Path('Test:foo') uistate = ConfigDict() self.assertTrue(self.notebook.get_page(ui.page).exists()) PATHS = ('Parent:Daughter:Granddaughter', 'Test:tags', 'Test:foo', 'Books') LEN_PATHS = len(PATHS) PATHS_NAMES = {PATHS[0]:'name 1', PATHS[1]:'name 2', PATHS[2]:'name 3'} # Check correctness of reading uistate. uistate.setdefault('bookmarks', []) uistate.setdefault('bookmarks_names', {}) uistate['bookmarks'] = list(PATHS) uistate['bookmarks_names'] = dict(PATHS_NAMES) Bar = BookmarkBar(ui, uistate, get_page_func = lambda: '') self.assertTrue(Bar.paths == list(PATHS)) self.assertTrue(Bar.paths_names == PATHS_NAMES) uistate['bookmarks'] = [] uistate['bookmarks_names'] = {} Bar = BookmarkBar(ui, uistate, get_page_func = lambda: '') self.assertTrue(Bar.paths == []) self.assertTrue(Bar.paths_names == {}) # Add paths to the beginning of the bar. for i, path in enumerate(PATHS): Bar._add_new(path, add_bookmarks_to_beginning = True) self.assertTrue(len(Bar.paths) == i + 1) self.assertTrue(Bar.paths == list(reversed(PATHS))) # Add paths to the end of the bar. Bar.paths = [] for i, path in enumerate(PATHS): Bar._add_new(path, add_bookmarks_to_beginning = False) self.assertTrue(len(Bar.paths) == i + 1) self.assertTrue(Bar.paths == list(PATHS)) # Check that the same path can't be added to the bar. Bar._add_new(PATHS[0]) Bar._add_new(PATHS[1]) self.assertTrue(Bar.paths == list(PATHS)) # Delete paths from the bar. for i, button in enumerate(Bar.container.get_children()[2:]): path = button.zim_path self.assertTrue(path in Bar.paths) Bar.delete(button.zim_path) self.assertTrue(len(Bar.paths) == LEN_PATHS - i - 1) self.assertTrue(path not in Bar.paths) self.assertTrue(Bar.paths == []) # Check short page names. uistate['show_full_page_name'] = False for path in PATHS: Bar._add_new(path) self.assertTrue(Bar.paths == list(PATHS)) for i, button in enumerate(Bar.container.get_children()[2:]): self.assertTrue(PATHS[i] == button.zim_path) self.assertTrue(Path(PATHS[i]).basename == button.get_label()) uistate['show_full_page_name'] = True # Delete all bookmarks from the bar. Bar.delete_all() self.assertTrue(Bar.paths == []) # Check restriction of max bookmarks in the bar. pagelist = set(self.index.list_pages(None)) _enhanced_pagelist = set() for page in pagelist: _enhanced_pagelist.update( set(self.index.list_pages(page)) ) if len(_enhanced_pagelist) > MAX_BOOKMARKS: break pagelist.update(_enhanced_pagelist) self.assertTrue(len(pagelist) > MAX_BOOKMARKS) pagelist = list(pagelist) for page in pagelist: Bar._add_new(page.name) self.assertTrue(len(Bar.paths) == MAX_BOOKMARKS) self.assertTrue(Bar.paths == [a.name for a in pagelist[:MAX_BOOKMARKS]]) Bar.delete_all() # Check 'save' option in preferences. for i, path in enumerate(PATHS): Bar.on_preferences_changed({'save':False, 'add_bookmarks_to_beginning':False}) Bar._add_new(path) self.assertTrue(uistate['bookmarks'] == []) Bar.on_preferences_changed({'save':True, 'add_bookmarks_to_beginning':False}) self.assertTrue(uistate['bookmarks'] == list(PATHS[:i+1])) self.assertTrue(uistate['bookmarks'] == list(PATHS)) # Check changing a bookmark. self.assertTrue('Test' not in Bar.paths) self.assertTrue('Books' in Bar.paths) Bar.change_bookmark('Books', 'Books') self.assertTrue(Bar.paths == list(PATHS)) _b_paths = [a for a in Bar.paths if a != 'Books'] Bar.change_bookmark('Books', 'Test') self.assertTrue('Test' in Bar.paths) self.assertTrue('Books' not in Bar.paths) _e_paths = [a for a in Bar.paths if a != 'Test'] self.assertTrue(_b_paths == _e_paths) Bar.change_bookmark('Test', 'Books') self.assertTrue(Bar.paths == list(PATHS)) # Check deleting a bookmark after deleting a page in the notebook. self.assertTrue(len(Bar.paths) == LEN_PATHS) for i, path in enumerate(PATHS): self.assertTrue(path in Bar.paths) self.notebook.delete_page(Path(path)) self.assertTrue(path not in Bar.paths) self.assertTrue(len(Bar.paths) == LEN_PATHS - i - 1) self.assertTrue(Bar.paths == []) # Check reordering bookmarks. PATHS_2 = ('1','2','3','4','5') PATHS_NAMES_2 = {PATHS_2[0]:'11', PATHS_2[1]:'22', PATHS_2[2]:'33'} Bar.paths = list(PATHS_2) Bar.move_bookmark(PATHS_2[2], PATHS_2[2], 'left') self.assertTrue(Bar.paths == list(PATHS_2)) Bar.move_bookmark(PATHS_2[3], PATHS_2[3], 'right') self.assertTrue(Bar.paths == list(PATHS_2)) Bar.move_bookmark('3', '1', 'left') self.assertTrue(Bar.paths == ['3','1','2','4','5']) Bar.move_bookmark('5', '1', 'left') self.assertTrue(Bar.paths == ['3','5','1','2','4']) Bar.move_bookmark('5', '1', 'right') self.assertTrue(Bar.paths == ['3','1','5','2','4']) Bar.move_bookmark('3', '4', 'right') self.assertTrue(Bar.paths == ['1','5','2','4','3']) Bar.move_bookmark('5', '4', '-') self.assertTrue(Bar.paths == ['1','5','2','4','3']) # CHECK RENAMING # Check rename_bookmark and save options. Bar.paths = list(PATHS_2) button = gtk.Button(label = PATHS_2[0], use_underline = False) button.zim_path = PATHS_2[0] Bar.on_preferences_changed({'save':True, 'add_bookmarks_to_beginning':False}) Bar._reload_bar() def rename_check(label, path, paths_names, path_names_uistate): self.assertTrue(button.get_label() == label) self.assertTrue(button.zim_path == path) self.assertTrue(Bar.paths_names == paths_names) self.assertTrue(uistate['bookmarks_names'] == path_names_uistate) rename_check(PATHS_2[0], PATHS_2[0], {}, {}) Clipboard.set_text('new name') Bar.rename_bookmark(button) rename_check('new name', PATHS_2[0], {PATHS_2[0]:'new name'}, {PATHS_2[0]:'new name'}) Bar.on_preferences_changed({'save':False, 'add_bookmarks_to_beginning':False}) rename_check('new name', PATHS_2[0], {PATHS_2[0]:'new name'}, {}) Bar.on_preferences_changed({'save':True, 'add_bookmarks_to_beginning':False}) rename_check('new name', PATHS_2[0], {PATHS_2[0]:'new name'}, {PATHS_2[0]:'new name'}) Bar.rename_bookmark(button) rename_check(PATHS_2[0], PATHS_2[0], {}, {}) # Check delete with renaming. Bar.on_preferences_changed({'save':True, 'add_bookmarks_to_beginning':False}) paths_names_copy = dict(PATHS_NAMES_2) Bar.paths_names = dict(PATHS_NAMES_2) for key in PATHS_NAMES_2: Bar.delete(key) del paths_names_copy[key] self.assertTrue(Bar.paths_names == paths_names_copy) self.assertTrue(uistate['bookmarks_names'] == Bar.paths_names) # Check delete all with renaming. Bar.paths_names = dict(PATHS_NAMES_2) Bar.delete_all() self.assertTrue(Bar.paths_names == {}) self.assertTrue(uistate['bookmarks_names'] == {}) # Check change bookmark with renaming. Bar.paths = list(PATHS_2) Bar.paths_names = dict(PATHS_NAMES_2) paths_names_copy = dict(PATHS_NAMES_2) paths_names_copy.pop(PATHS_2[0], None) Bar.change_bookmark(PATHS_2[0], 'new path') self.assertTrue(Bar.paths_names == paths_names_copy) self.assertTrue(Bar.paths == ['new path'] + list(PATHS_2[1:])) # Check that paths and paths_names didn't change in the process. self.assertTrue(PATHS_2 == ('1','2','3','4','5')) self.assertTrue(PATHS_NAMES_2 == {PATHS_2[0]:'11', PATHS_2[1]:'22', PATHS_2[2]:'33'})