def toggle_color(self, button, name, textview): text_buffer = textview.get_buffer() insert = text_buffer.get_insert() try: start, end = text_buffer.get_selection_bounds() except ValueError: start = end = None else: # Use offset position to preserve across buffer modification start = start.get_offset() end = end.get_offset() dialog = Gtk.ColorChooserDialog(title=_('Select a color'), transient_for=get_toplevel_window(), use_alpha=False) color = Gdk.RGBA() if name in self.colors: color.parse(self.colors[name]) dialog.set_rgba(color) if dialog.run() == Gtk.ResponseType.OK: color = dialog.get_rgba() if start is not None and end is not None: start = text_buffer.get_iter_at_offset(start) end = text_buffer.get_iter_at_offset(end) tag = register_foreground(text_buffer, color) remove_tags(text_buffer, start, end, name) text_buffer.apply_tag(tag, start, end) dialog.destroy() text_buffer.place_cursor(text_buffer.get_iter_at_mark(insert))
def toggle_color(self, button, name): insert = self.text_buffer.get_insert() try: start, end = self.text_buffer.get_selection_bounds() except ValueError: start = end = None else: # Use offset position to preserve across buffer modification start = start.get_offset() end = end.get_offset() dialog = gtk.ColorSelectionDialog(_('Select a color')) dialog.set_transient_for(get_toplevel_window()) colorsel = dialog.get_color_selection() colorsel.set_has_palette(True) color = self.colors.get(name) if color: colorsel.set_current_color(color) if dialog.run() == gtk.RESPONSE_OK: color = colorsel.get_current_color() self.colors[name] = color if start is not None and end is not None: start = self.text_buffer.get_iter_at_offset(start) end = self.text_buffer.get_iter_at_offset(end) tag = register_foreground(self.text_buffer, color) remove_tags(self.text_buffer, start, end, name) self.text_buffer.apply_tag(tag, start, end) dialog.destroy() self.text_buffer.place_cursor( self.text_buffer.get_iter_at_mark(insert))
def toggle_color(self, button, name): insert = self.text_buffer.get_insert() try: start, end = self.text_buffer.get_selection_bounds() except ValueError: start = end = None else: # Use offset position to preserve across buffer modification start = start.get_offset() end = end.get_offset() dialog = gtk.ColorSelectionDialog(_('Select a color')) dialog.set_transient_for(get_toplevel_window()) dialog.colorsel.set_has_palette(True) color = self.colors.get(name) if color: dialog.colorsel.set_current_color(color) if dialog.run() == gtk.RESPONSE_OK: color = dialog.colorsel.get_current_color() self.colors[name] = color if start is not None and end is not None: start = self.text_buffer.get_iter_at_offset(start) end = self.text_buffer.get_iter_at_offset(end) tag = register_foreground(self.text_buffer, color) remove_tags(self.text_buffer, start, end, name) self.text_buffer.apply_tag(tag, start, end) dialog.destroy() self.text_buffer.place_cursor( self.text_buffer.get_iter_at_mark(insert))