def __init__(self): gtk.Window.__init__(self) self.vbox = gtk.VBox() self.hbox = gtk.HBox() self.scroll = gtk.ScrolledWindow() self.view = TextEditor() buffer = self.view.get_buffer() self.view.modify_font(pango.FontDescription("Arial 12")) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.set_size_request(800, 600) self.vbox.set_border_width(6) self.vbox.set_spacing(6) self.hbox.set_spacing(6) buffer.connect('undo-stack-changed', self._on_buffer_undo_stack_changed) self.view.connect('link-clicked', self._on_link_clicked) self.view.connect('annotation-focus-out-event', self._on_annotation_focus_out_event) # Format changing buttons. button = gtk.Button(stock=gtk.STOCK_BOLD) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'bold') self.hbox.pack_start(button, False) button = gtk.Button(stock=gtk.STOCK_ITALIC) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'italic') self.hbox.pack_start(button, False) button = gtk.Button(stock=gtk.STOCK_UNDERLINE) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'underline') self.hbox.pack_start(button, False) # Undo/redo buttons. self.undo_button = gtk.Button(stock=gtk.STOCK_UNDO) self.undo_button.set_properties(can_focus=False) self.undo_button.set_sensitive(buffer.can_undo()) self.undo_button.connect('clicked', self._on_button_undo_clicked, buffer) self.hbox.pack_start(self.undo_button, False) self.redo_button = gtk.Button(stock=gtk.STOCK_REDO) self.redo_button.set_properties(can_focus=False) self.redo_button.set_sensitive(buffer.can_redo()) self.redo_button.connect('clicked', self._on_button_redo_clicked, buffer) self.hbox.pack_start(self.redo_button, False) # Annotation buttons. button = gtk.Button(label="Add annotation") button.set_properties(can_focus=False) button.connect('clicked', self._on_button_add_annotation_clicked) self.hbox.pack_start(button) button = gtk.ToggleButton(label="Show annotations") button.set_active(True) button.set_properties(can_focus=False) button.connect('toggled', self._on_button_show_annotations_toggled) self.hbox.pack_start(button) # Pack widgets. self.scroll.add(self.view) self.add(self.vbox) self.vbox.pack_start(self.hbox, False) self.vbox.pack_start(self.scroll) self.show_all() # Enable spell checking. lang = locale.getlocale()[0] if lang is None: print "WARNING: Spell check disabled because language is not set." else: gtkspell.Spell(self.view).set_language(lang) # Insert some text. buffer.insert_at_cursor('Test me please.') range = buffer.get_bounds() tag = buffer.create_link_tag('link_to_debain_org', 'http://debain.org') buffer.apply_tag(tag, *range) dump = buffer.dump() buffer.delete(*range) buffer.restore(dump)
def __init__(self): gtk.Window.__init__(self) self.vbox = gtk.VBox() self.hbox = gtk.HBox() self.scroll = gtk.ScrolledWindow() self.view = TextEditor() buffer = self.view.get_buffer() self.view.modify_font(pango.FontDescription("Arial 12")) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.set_size_request(800, 600) self.vbox.set_border_width(6) self.vbox.set_spacing(6) self.hbox.set_spacing(6) buffer.connect('undo-stack-changed', self._on_buffer_undo_stack_changed) self.view.connect('link-clicked', self._on_link_clicked) self.view.connect('annotation-focus-out-event', self._on_annotation_focus_out_event) # Format changing buttons. button = gtk.Button(stock = gtk.STOCK_BOLD) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'bold') self.hbox.pack_start(button, False) button = gtk.Button(stock = gtk.STOCK_ITALIC) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'italic') self.hbox.pack_start(button, False) button = gtk.Button(stock = gtk.STOCK_UNDERLINE) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'underline') self.hbox.pack_start(button, False) # Undo/redo buttons. self.undo_button = gtk.Button(stock = gtk.STOCK_UNDO) self.undo_button.set_properties(can_focus = False) self.undo_button.set_sensitive(buffer.can_undo()) self.undo_button.connect('clicked', self._on_button_undo_clicked, buffer) self.hbox.pack_start(self.undo_button, False) self.redo_button = gtk.Button(stock = gtk.STOCK_REDO) self.redo_button.set_properties(can_focus = False) self.redo_button.set_sensitive(buffer.can_redo()) self.redo_button.connect('clicked', self._on_button_redo_clicked, buffer) self.hbox.pack_start(self.redo_button, False) # Annotation buttons. button = gtk.Button(label = "Add annotation") button.set_properties(can_focus = False) button.connect('clicked', self._on_button_add_annotation_clicked) self.hbox.pack_start(button) button = gtk.ToggleButton(label = "Show annotations") button.set_active(True) button.set_properties(can_focus = False) button.connect('toggled', self._on_button_show_annotations_toggled) self.hbox.pack_start(button) # Pack widgets. self.scroll.add(self.view) self.add(self.vbox) self.vbox.pack_start(self.hbox, False) self.vbox.pack_start(self.scroll) self.show_all() # Enable spell checking. lang = locale.getlocale()[0] if lang is None: print "WARNING: Spell check disabled because language is not set." else: gtkspell.Spell(self.view).set_language(lang) # Insert some text. buffer.insert_at_cursor('Test me please.') range = buffer.get_bounds() tag = buffer.create_link_tag('link_to_debain_org', 'http://debain.org') buffer.apply_tag(tag, *range) dump = buffer.dump() buffer.delete(*range) buffer.restore(dump)
class Window(gtk.Window): n_annotations = 0 def __init__(self): gtk.Window.__init__(self) self.vbox = gtk.VBox() self.hbox = gtk.HBox() self.scroll = gtk.ScrolledWindow() self.view = TextEditor() buffer = self.view.get_buffer() self.view.modify_font(pango.FontDescription("Arial 12")) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.set_size_request(800, 600) self.vbox.set_border_width(6) self.vbox.set_spacing(6) self.hbox.set_spacing(6) buffer.connect('undo-stack-changed', self._on_buffer_undo_stack_changed) self.view.connect('link-clicked', self._on_link_clicked) self.view.connect('annotation-focus-out-event', self._on_annotation_focus_out_event) # Format changing buttons. button = gtk.Button(stock=gtk.STOCK_BOLD) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'bold') self.hbox.pack_start(button, False) button = gtk.Button(stock=gtk.STOCK_ITALIC) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'italic') self.hbox.pack_start(button, False) button = gtk.Button(stock=gtk.STOCK_UNDERLINE) button.set_properties(can_focus=False) button.connect('clicked', self._on_button_format_clicked, buffer, 'underline') self.hbox.pack_start(button, False) # Undo/redo buttons. self.undo_button = gtk.Button(stock=gtk.STOCK_UNDO) self.undo_button.set_properties(can_focus=False) self.undo_button.set_sensitive(buffer.can_undo()) self.undo_button.connect('clicked', self._on_button_undo_clicked, buffer) self.hbox.pack_start(self.undo_button, False) self.redo_button = gtk.Button(stock=gtk.STOCK_REDO) self.redo_button.set_properties(can_focus=False) self.redo_button.set_sensitive(buffer.can_redo()) self.redo_button.connect('clicked', self._on_button_redo_clicked, buffer) self.hbox.pack_start(self.redo_button, False) # Annotation buttons. button = gtk.Button(label="Add annotation") button.set_properties(can_focus=False) button.connect('clicked', self._on_button_add_annotation_clicked) self.hbox.pack_start(button) button = gtk.ToggleButton(label="Show annotations") button.set_active(True) button.set_properties(can_focus=False) button.connect('toggled', self._on_button_show_annotations_toggled) self.hbox.pack_start(button) # Pack widgets. self.scroll.add(self.view) self.add(self.vbox) self.vbox.pack_start(self.hbox, False) self.vbox.pack_start(self.scroll) self.show_all() # Enable spell checking. lang = locale.getlocale()[0] if lang is None: print "WARNING: Spell check disabled because language is not set." else: gtkspell.Spell(self.view).set_language(lang) # Insert some text. buffer.insert_at_cursor('Test me please.') range = buffer.get_bounds() tag = buffer.create_link_tag('link_to_debain_org', 'http://debain.org') buffer.apply_tag(tag, *range) dump = buffer.dump() buffer.delete(*range) buffer.restore(dump) def _on_link_clicked(self, buffer, link): print 'Link clicked:', link def _on_buffer_undo_stack_changed(self, buffer): self.undo_button.set_sensitive(buffer.can_undo()) self.redo_button.set_sensitive(buffer.can_redo()) def _on_button_format_clicked(self, button, buffer, format): buffer.toggle_selection_tag(format) def _on_button_undo_clicked(self, button, buffer): buffer.undo() def _on_button_redo_clicked(self, button, buffer): buffer.redo() def _mk_annotation_name(self): self.n_annotations += 1 return 'annotation%d' % self.n_annotations def _on_annotation_focus_out_event(self, editor, annotation): if annotation.get_text() == '': editor.get_buffer().remove_annotation(annotation) def _add_annotation(self, mark): annotation = Annotation(mark) annotation.set_title('Annotation') annotation.set_text('Annotation number %d.' % self.n_annotations) self.view.get_buffer().add_annotation(annotation) return annotation def _on_button_add_annotation_clicked(self, button): buffer = self.view.get_buffer() cursor_pos = buffer.get_property('cursor-position') iter = buffer.get_iter_at_offset(cursor_pos) mark = buffer.create_mark(self._mk_annotation_name(), iter, iter.is_end()) self._add_annotation(mark) def _on_button_show_annotations_toggled(self, button): active = button.get_active() self.view.set_show_annotations(active)
class Window(gtk.Window): n_annotations = 0 def __init__(self): gtk.Window.__init__(self) self.vbox = gtk.VBox() self.hbox = gtk.HBox() self.scroll = gtk.ScrolledWindow() self.view = TextEditor() buffer = self.view.get_buffer() self.view.modify_font(pango.FontDescription("Arial 12")) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.set_size_request(800, 600) self.vbox.set_border_width(6) self.vbox.set_spacing(6) self.hbox.set_spacing(6) buffer.connect('undo-stack-changed', self._on_buffer_undo_stack_changed) self.view.connect('link-clicked', self._on_link_clicked) self.view.connect('annotation-focus-out-event', self._on_annotation_focus_out_event) # Format changing buttons. button = gtk.Button(stock = gtk.STOCK_BOLD) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'bold') self.hbox.pack_start(button, False) button = gtk.Button(stock = gtk.STOCK_ITALIC) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'italic') self.hbox.pack_start(button, False) button = gtk.Button(stock = gtk.STOCK_UNDERLINE) button.set_properties(can_focus = False) button.connect('clicked', self._on_button_format_clicked, buffer, 'underline') self.hbox.pack_start(button, False) # Undo/redo buttons. self.undo_button = gtk.Button(stock = gtk.STOCK_UNDO) self.undo_button.set_properties(can_focus = False) self.undo_button.set_sensitive(buffer.can_undo()) self.undo_button.connect('clicked', self._on_button_undo_clicked, buffer) self.hbox.pack_start(self.undo_button, False) self.redo_button = gtk.Button(stock = gtk.STOCK_REDO) self.redo_button.set_properties(can_focus = False) self.redo_button.set_sensitive(buffer.can_redo()) self.redo_button.connect('clicked', self._on_button_redo_clicked, buffer) self.hbox.pack_start(self.redo_button, False) # Annotation buttons. button = gtk.Button(label = "Add annotation") button.set_properties(can_focus = False) button.connect('clicked', self._on_button_add_annotation_clicked) self.hbox.pack_start(button) button = gtk.ToggleButton(label = "Show annotations") button.set_active(True) button.set_properties(can_focus = False) button.connect('toggled', self._on_button_show_annotations_toggled) self.hbox.pack_start(button) # Pack widgets. self.scroll.add(self.view) self.add(self.vbox) self.vbox.pack_start(self.hbox, False) self.vbox.pack_start(self.scroll) self.show_all() # Enable spell checking. lang = locale.getlocale()[0] if lang is None: print "WARNING: Spell check disabled because language is not set." else: gtkspell.Spell(self.view).set_language(lang) # Insert some text. buffer.insert_at_cursor('Test me please.') range = buffer.get_bounds() tag = buffer.create_link_tag('link_to_debain_org', 'http://debain.org') buffer.apply_tag(tag, *range) dump = buffer.dump() buffer.delete(*range) buffer.restore(dump) def _on_link_clicked(self, buffer, link): print 'Link clicked:', link def _on_buffer_undo_stack_changed(self, buffer): self.undo_button.set_sensitive(buffer.can_undo()) self.redo_button.set_sensitive(buffer.can_redo()) def _on_button_format_clicked(self, button, buffer, format): buffer.toggle_selection_tag(format) def _on_button_undo_clicked(self, button, buffer): buffer.undo() def _on_button_redo_clicked(self, button, buffer): buffer.redo() def _mk_annotation_name(self): self.n_annotations += 1 return 'annotation%d' % self.n_annotations def _on_annotation_focus_out_event(self, editor, annotation): if annotation.get_text() == '': editor.get_buffer().remove_annotation(annotation) def _add_annotation(self, mark): annotation = Annotation(mark) annotation.set_title('Annotation') annotation.set_text('Annotation number %d.' % self.n_annotations) self.view.get_buffer().add_annotation(annotation) return annotation def _on_button_add_annotation_clicked(self, button): buffer = self.view.get_buffer() cursor_pos = buffer.get_property('cursor-position') iter = buffer.get_iter_at_offset(cursor_pos) mark = buffer.create_mark(self._mk_annotation_name(), iter, iter.is_end()) self._add_annotation(mark) def _on_button_show_annotations_toggled(self, button): active = button.get_active() self.view.set_show_annotations(active)