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))
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 _apply_tool(self, name, tool, start, end): # First test RadioToolButton as they inherit from ToggleToolButton if isinstance(tool, gtk.RadioToolButton): name = 'justification %s' % name if not tool.get_active(): remove_tags(self.text_buffer, start, end, name) else: remove_tags(self.text_buffer, start, end, 'justification') self.text_buffer.apply_tag_by_name(name, start, end) elif isinstance(tool, gtk.ToggleToolButton): if tool.get_active(): self.text_buffer.apply_tag_by_name(name, start, end) else: self.text_buffer.remove_tag_by_name(name, start, end) elif isinstance(tool, gtk.ComboBox): value = tool.get_active_text() remove_tags(self.text_buffer, start, end, name) name = '%s %s' % (name, value) self.text_buffer.apply_tag_by_name(name, start, end)