Exemplo n.º 1
0
    def __init__(self, editor):
        self.editor = editor
        self.signals = Signals()
        self.signals.connect_signals(self)

        self.triggers = TriggerManager(editor)
        self.triggers.connect_triggers(self)
Exemplo n.º 2
0
class BarPlugin(object):
    def __init__(self, editor):
        self.editor = editor
        self.signals = Signals()
        self.signals.connect_signals(self)

        self.triggers = TriggerManager(editor)
        self.triggers.connect_triggers(self)

    def load(self):
        pass

    def unload(self):
        pass

    @trigger
    def activate(self, sender):
        message = "Witness the awesome power of Bar!"
        title = "Real Bar Power"

        self.signals.show_message.emit(message)
        self.signals.show_info.emit(title, message)
        return False

    @Signals.show_message
    def show_message(self, sender, message):
        # Update the message bar.
        self.editor.update_message(message, "yes", 10)
        return False

    @Signals.show_info(idle=True, after=True)
    def show_info(self, sender, title, message):
        # Show a window containing Bar message.
        self.editor.show_info(title, message, self.editor.window)
        return False
Exemplo n.º 3
0
 def __init__(self, editor):
     self.editor = editor
     
     self.signals = Signals()
     self.signals.connect_signals(self)
     
     self.triggers = TriggerManager(editor)
     self.triggers.connect_triggers(self)
     
     # WTF? in original plugin there is no popup menu item, so commented
     #editor.textview.connect("populate-popup", self.pupulate_popup)
     
     create_bookmark_image(editor)
     
     self.feedback_manager = Feedback(self.signals, editor)
     self.mark_reseter = Reseter(self.signals, editor)
     self.mark_updater = Updater(self.signals, editor)
     self.marker = Marker(self.signals, editor)
     
     self.gui_manager = GuiManager(self.signals, editor)
     
     weak_connect(editor, "loaded-file", self, 'restore_bookmarks', idle_priority=9999)
     idle_add(self.restore_bookmarks, priority=9999)
Exemplo n.º 4
0
class BookmarkPlugin(object):
    def __init__(self, editor):
        self.editor = editor
        
        self.signals = Signals()
        self.signals.connect_signals(self)
        
        self.triggers = TriggerManager(editor)
        self.triggers.connect_triggers(self)
        
        # WTF? in original plugin there is no popup menu item, so commented
        #editor.textview.connect("populate-popup", self.pupulate_popup)
        
        create_bookmark_image(editor)
        
        self.feedback_manager = Feedback(self.signals, editor)
        self.mark_reseter = Reseter(self.signals, editor)
        self.mark_updater = Updater(self.signals, editor)
        self.marker = Marker(self.signals, editor)
        
        self.gui_manager = GuiManager(self.signals, editor)
        
        weak_connect(editor, "loaded-file", self, 'restore_bookmarks', idle_priority=9999)
        idle_add(self.restore_bookmarks, priority=9999)
   
    @trigger_toggle
    def toggle(self, sender): 
        self.signals.toggle.emit()
        return False

    @trigger_show
    def show(self, sender): 
        self.signals.show.emit()
        return False

    @trigger_remove
    def remove(self, sender): 
        self.signals.remove_all.emit(True)
        return False

    def populate_popup(self, textview, menu):
        from PopupMenuItem import PopupMenuItem
        self.editor.add_to_popup(PopupMenuItem(self.editor))
        return False
    
    @Signals.scroll_to_line
    def scroll_to_line(self, sender, line):
        iterator = self.editor.textbuffer.get_iter_at_line(line)
        self.editor.response()
        self.editor.textbuffer.place_cursor(iterator)
        self.editor.textview.scroll_to_iter(iterator, 0.001, use_align=True, xalign=1.0)
        self.editor.response()
        return False 
    
    @Signals.add
    def mark_add(self, sender, line, feedback=None):
        self.editor.response()
        iterator = self.editor.textbuffer.get_iter_at_line(line)
        self.editor.textbuffer.create_source_mark(None, BOOKMARK_NAME, iterator)
        self.editor.response()
        return False
    
    @Signals.bookmark_lines
    def mark_lines(self, sender, lines):
        [self.mark_add(sender, line) for line in lines]
        return False    
    
    def mark_region(self, line=None):
        if line is None: return self.editor.textbuffer.get_bounds()
        start = self.editor.textbuffer.get_iter_at_line(line)
        end = self.editor.forward_to_line_end(start.copy())
        return start, end

    @Signals.remove
    def mark_remove(self, sender, line=None, feedback=None):
        start, end = self.mark_region(line)
        self.editor.response()
        self.editor.textbuffer.remove_source_marks(start, end, BOOKMARK_NAME)
        self.editor.response()
        return False
    
    @Signals.remove_all
    def mark_remove_all(self, sender, feedback=None):
        self.mark_remove(sender)
        return False
    
    @Signals.lines
    def margin_toggle(self, sender, lines):
        self.editor.textview.set_show_line_marks(bool(lines))
        return False
    
    @Signals.lines
    def save_bookmarks(self, sender, lines):
        uri = self.editor.uri
        if not uri: return False
        self.editor.response()
        set_value(str(uri), lines)
        self.editor.response()
        return False  
    
    def restore_bookmarks(self, *args):
        uri = self.editor.uri
        if not uri: return False
        self.editor.response()
        lines = get_value(str(uri))
        self.editor.response()
        if not lines: return False
        self.signals.bookmark_lines.emit(lines)
        return False
    
    def unload(self):
        self.mark_updater.update()