Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()
Exemplo n.º 4
0
    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])
Exemplo n.º 5
0
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 "&amp;" not in t2t_markup:
        assert convert_from_pango(pango) == t2t_markup
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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()
Exemplo n.º 11
0
    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()
Exemplo n.º 12
0
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&amp;b'),
            (r'a&amp;b', 'a&amp;b'),
            (r'http://site/s.php?q&c', 'http://site/s.php?q&amp;c'),
            (r'http://site/s.php?q&amp;c', 'http://site/s.php?q&amp;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 '&amp;' in t2t_markup:
            assert convert_from_pango(pango) == t2t_markup
Exemplo n.º 13
0
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&amp;b'),
        (r'a&amp;b', 'a&amp;b'),
        (r'http://site/s.php?q&c', 'http://site/s.php?q&amp;c'),
        (r'http://site/s.php?q&amp;c', 'http://site/s.php?q&amp;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 '&amp;' not in t2t_markup:
            assert convert_from_pango(pango) == t2t_markup
Exemplo n.º 14
0
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&amp;b"),
        (r"a&amp;b", "a&amp;b"),
        (r"http://site/s.php?q&c", "http://site/s.php?q&amp;c"),
        (r"http://site/s.php?q&amp;c", "http://site/s.php?q&amp;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 "&amp;" not in t2t_markup:
            assert convert_from_pango(pango) == t2t_markup
Exemplo n.º 15
0
    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()
Exemplo n.º 16
0
    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()
Exemplo n.º 17
0
 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)
Exemplo n.º 18
0
 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)