def do_query_data(self, start: Gtk.TextIter, end: Gtk.TextIter, state: GtkSource.GutterRendererState): view: GtkSource.View = self.get_view() buffer: GtkSource.Buffer = view.get_buffer() execution_marks = buffer.get_source_marks_at_line( start.get_line(), 'execution-line') breaked_marks = buffer.get_source_marks_at_line( start.get_line(), 'breaked-line') if len(breaked_marks) > 0: type_id = -1 slot_id = -1 if len(execution_marks) > 0: _, type_id, slot_id = EXECUTION_LINE_PATTERN.match( execution_marks[0].get_name()).groups() self.set_pixbuf( create_breaked_line_icon(int(type_id), int(slot_id), self._icon_actor, self._icon_object, self._icon_performer, self._icon_global_script)) return if len(execution_marks) > 0: _, type_id, slot_id = EXECUTION_LINE_PATTERN.match( execution_marks[0].get_name()).groups() # Don't show for global self.set_pixbuf( create_execution_line_icon(int(type_id), int(slot_id), self._icon_actor, self._icon_object, self._icon_performer, self._icon_global_script)) return self.set_pixbuf(self.empty)
def on_sourcebuffer_delete_range(self, buffer: GtkSource.Buffer, start: Gtk.TextIter, end: Gtk.TextIter): if start.get_line() != end.get_line() or start.get_chars_in_line( ) == 0: i = start.copy() ms = [] while i.get_offset() <= end.get_offset(): ms += buffer.get_source_marks_at_iter(i, 'breakpoint') if not i.forward_char(): break for m in ms: self.remove_breakpoint(m) return True
def on_sourceview_line_mark_activated(self, widget: GtkSource.View, textiter: Gtk.TextIter, event: Gdk.Event): marks = widget.get_buffer().get_source_marks_at_iter(textiter) # Only allow editing one view. if self._explorerscript_active and widget == self._ssb_script_view: return if not self._explorerscript_active and widget == self._explorerscript_view: return # No mark? Add! if len(marks) < 1: self.add_breakpoint(textiter.get_line() + 1, widget) else: # Mark? Remove breakpoint! for mark in marks: self.remove_breakpoint(mark) return True