def add_entry(self, category, entry, undoing=False): self.add_category(category) category_iter = self._get_category_iter(category) entry_pango = markup.convert_to_pango(entry) category_pango = markup.convert_to_pango(category) # If category exists add entry to existing category, else add new category if category_iter is None: category_iter = self.tree_store.append(None, [category_pango]) # Only add entry if there is one if entry_pango: self.tree_store.append(category_iter, [entry_pango]) if not undoing: def undo_func(): self.delete_node(self.find_iter(category, entry), undoing=True) def redo_func(): self.add_entry(category, entry, undoing=True) action = undo.Action(undo_func, redo_func) self.undo_redo_manager.add_action(action) self.tree_view.expand_all()
def edited_cb(self, cell, path, new_text, user_data): ''' Called when text in a cell is changed new_text is txt2tags markup ''' if new_text == 'text' and self.node_on_top_level(path): self.statusbar.show_text('"text" is a reserved keyword', error=True) return if len(new_text) < 1: self.statusbar.show_text(_('Empty entries are not allowed'), error=True) return liststore = user_data pango_markup = markup.convert_to_pango(new_text) liststore[path][0] = pango_markup # Category name changed if self.node_on_top_level(path): if new_text not in self.categories: self.categories.insert(0, new_text) # Tag name changed else: iter = self.tree_store.get_iter(path) iter_parent = self.tree_store.iter_parent(iter) tags_iter = self._get_category_iter('Tags') tags_node_is_parent = self.get_iter_value(iter_parent).capitalize() == 'Tags' if tags_node_is_parent and self.node_on_top_level(iter_parent): self.main_window.journal.save_old_day() # Update cloud self.main_window.cloud.update()
def update_data(self, search_text=''): self.tree_store.clear() rows = None if not search_text: return # Save the search text for highlighting self.searched_text = search_text if self.search_type == 0: # Search for text self.matching_column.set_title(_('Text')) rows = self.journal.search(text=search_text) if self.search_type == 1: # Search for category self.matching_column.set_title(_('Entry')) rows = self.journal.search(category=search_text) if self.search_type == 2: # Search for tags self.matching_column.set_title(_('Text')) rows = self.journal.search(tag=search_text) if rows: for date_string, entry in rows: if self.search_type == 1: # We want **done** to be bold in the list, # but the text should only be bold where the search text occurs entry = markup.convert_to_pango(entry) else: entry = escape(entry) entry = entry.replace('STARTBOLD', '<b>').replace('ENDBOLD', '</b>') self.tree_store.append([date_string, entry])
def test_pango(t2t_markup, expected): pango = convert_to_pango(t2t_markup) assert pango == expected # Ampersand escaping is only needed in sourcecode, so we do not try to # preserve the encoding if "&" not in t2t_markup: assert convert_from_pango(pango) == t2t_markup
def add_entry(self, category, entry, undoing=False): self.add_category(category) category_iter = self._get_category_iter(category) entry_pango = markup.convert_to_pango(entry) category_pango = markup.convert_to_pango(category) # If category exists add entry to existing category, else add new category if category_iter is None: category_iter = self.tree_store.append(None, [category_pango]) # Only add entry if there is one if entry_pango: self.tree_store.append(category_iter, [entry_pango]) self.tree_view.expand_all()
def add_element(self, parent, element_content): """ Recursive Method for adding the content """ for key, value in sorted(iter(element_content.items()), key=lambda key_value: key_value[0].lower()): if key is not None: key_pango = markup.convert_to_pango(key) new_child = self.tree_store.append(parent, [key_pango]) if value is not None: self.add_element(new_child, value)
def add_element(self, parent, element_content): """ Recursive Method for adding the content """ for key, value in sorted( element_content.iteritems(), key=lambda (key, value): key.lower()): if key is not None: key_pango = markup.convert_to_pango(key) new_child = self.tree_store.append(parent, [key_pango]) if value is not None: self.add_element(new_child, value)
def add_element(self, parent, element_content): ''' Recursive Method for adding the content ''' # We want to order the entries ascendingly ascending = lambda (key, value): key.lower() for key, value in sorted(element_content.iteritems(), key=ascending): if key is not None: key_pango = markup.convert_to_pango(key) new_child = self.tree_store.append(parent, [key_pango]) if not value == None: self.add_element(new_child, value)
def add_entry(self, category, entry, undoing=False): self.add_category(category) category_iter = self._get_category_iter(category) entry_pango = markup.convert_to_pango(entry) category_pango = markup.convert_to_pango(category) if category_iter is None: # If category does not exist add new category category_iter = self.tree_store.append(None, [category_pango]) self.tree_store.append(category_iter, [entry_pango]) else: # If category exists add entry to existing category self.tree_store.append(category_iter, [entry_pango]) if not undoing: undo_func = lambda: self.delete_node(self.find_iter(category, entry), undoing=True) redo_func = lambda: self.add_entry(category, entry, undoing=True) action = undo.Action(undo_func, redo_func, "categories_tree_view") self.undo_redo_manager.add_action(action) self.tree_view.expand_all()
def add_entry(self, category, entry, undoing=False): if category not in self.categories and category is not None: self.categories.insert(0, category) category_iter = self._get_category_iter(category) entry_pango = markup.convert_to_pango(entry) category_pango = markup.convert_to_pango(category) if category_iter is None: # If category does not exist add new category category_iter = self.tree_store.append(None, [category_pango]) entry_node = self.tree_store.append(category_iter, [entry_pango]) else: # If category exists add entry to existing category entry_node = self.tree_store.append(category_iter, [entry_pango]) if not undoing: undo_func = lambda: self.delete_node(self.find_iter(category, entry), undoing=True) redo_func = lambda: self.add_entry(category, entry, undoing=True) action = undo.Action(undo_func, redo_func, 'categories_tree_view') self.undo_redo_manager.add_action(action) self.tree_view.expand_all()
def test_pango(): vals = ((r'--stricken--', '<s>stricken</s>'), (r'//italic//', '<i>italic</i>'), (r'--www.test.com--', '<s>www.test.com</s>'), # Linebreaks only on line ends (r'First\\Second', r'First\\Second'), (r'First\\', 'First\n'), (r'a&b', 'a&b'), (r'a&b', 'a&b'), (r'http://site/s.php?q&c', 'http://site/s.php?q&c'), (r'http://site/s.php?q&c', 'http://site/s.php?q&c'), ) for t2t_markup, expected in vals: pango = convert_to_pango(t2t_markup) assert pango == expected # Ampersand escaping is only needed in sourcecode, so we do not try to # preserve the encoding if not '&' in t2t_markup: assert convert_from_pango(pango) == t2t_markup
def test_pango(): vals = ( (r'--stricken--', '<s>stricken</s>'), (r'//italic//', '<i>italic</i>'), (r'--www.test.com--', '<s>www.test.com</s>'), # Linebreaks only on line ends (r'First\\Second', r'First\\Second'), (r'First\\', 'First\n'), (r'a&b', 'a&b'), (r'a&b', 'a&b'), (r'http://site/s.php?q&c', 'http://site/s.php?q&c'), (r'http://site/s.php?q&c', 'http://site/s.php?q&c'), ) for t2t_markup, expected in vals: pango = convert_to_pango(t2t_markup) assert pango == expected # Ampersand escaping is only needed in sourcecode, so we do not try to # preserve the encoding if '&' not in t2t_markup: assert convert_from_pango(pango) == t2t_markup
def test_pango(): vals = ( (r"--stricken--", "<s>stricken</s>"), (r"//italic//", "<i>italic</i>"), (r"--www.test.com--", "<s>www.test.com</s>"), # Linebreaks only on line ends (r"First\\Second", r"First\\Second"), (r"First\\", "First\n"), (r"a&b", "a&b"), (r"a&b", "a&b"), (r"http://site/s.php?q&c", "http://site/s.php?q&c"), (r"http://site/s.php?q&c", "http://site/s.php?q&c"), ) for t2t_markup, expected in vals: pango = convert_to_pango(t2t_markup) assert pango == expected # Ampersand escaping is only needed in sourcecode, so we do not try to # preserve the encoding if "&" not in t2t_markup: assert convert_from_pango(pango) == t2t_markup
def edited_cb(self, cell, path, new_text, liststore): """ Called when text in a cell is changed new_text is txt2tags markup """ if new_text == 'text' and self.node_on_top_level(path): self._show_error_msg('"text" is a reserved keyword') return if len(new_text) < 1: self._show_error_msg(_('Empty entries are not allowed')) return liststore[path][0] = markup.convert_to_pango(new_text) # Category name changed if self.node_on_top_level(path): self.add_category(new_text) # Update cloud self.main_window.cloud.update()
def edited_cb(self, cell, path, new_text, liststore): """ Called when text in a cell is changed new_text is txt2tags markup """ if new_text == "text" and self.node_on_top_level(path): self._show_error_msg('"text" is a reserved keyword') return if len(new_text) < 1: self._show_error_msg(_("Empty entries are not allowed")) return liststore[path][0] = markup.convert_to_pango(new_text) # Category name changed if self.node_on_top_level(path): self.add_category(new_text) # Update cloud self.main_window.cloud.update()
def set_iter_value(self, iter, txt2tags_markup): pango_markup = markup.convert_to_pango(txt2tags_markup) self.tree_store.set_value(iter, 0, pango_markup)