def __init__(self): Gtk.Plug.__init__(self) Gtk.Plug.construct(self, wid) lang_manager = GtkSource.LanguageManager() lang = lang_manager.guess_language(path) style_manager = GtkSource.StyleSchemeManager.get_default() style = style_manager.get_scheme("classic") f = open(path, "r", encoding=ENCODING, errors="replace") txt = f.read() f.close() self.srcbuf = GtkSource.Buffer() self.srcbuf.set_style_scheme(style) self.srcbuf.set_language(lang) self.srcbuf.set_text(txt) scroll = Gtk.ScrolledWindow() view = GtkSource.View.new_with_buffer(self.srcbuf) view.set_show_line_numbers(True) view.set_highlight_current_line(True) view.get_space_drawer().set_enable_matrix(True) view.set_editable(False) view.set_tab_width(8) #view.override_font(Pango.FontDescription('mono 12')) view.set_name("sourceview") cssprovider = Gtk.CssProvider() cssprovider.load_from_path( os.path.dirname(sys.argv[0]) + "/gtksourceview.css") Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), cssprovider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) scroll.add(view) hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.lbl_search = Gtk.Label() button = Gtk.Button.new_with_label("Set text") button.connect("pressed", self.search_dialog) self.btn_case = Gtk.ToggleButton.new_with_label("Case sensitive") self.btn_case.connect("pressed", self.search_case) self.btn_regex = Gtk.ToggleButton.new_with_label("RegEx") self.btn_regex.connect("pressed", self.search_regex) hbox.pack_start(self.btn_case, False, True, 2) hbox.pack_start(self.btn_regex, False, True, 2) hbox.pack_start(button, False, True, 2) hbox.pack_end(self.lbl_search, True, True, 1) hbox.set_border_width(5) win = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) win.pack_start(scroll, True, True, 1) win.pack_end(hbox, False, True, 1) self.sopts = GtkSource.SearchSettings() self.scontext = GtkSource.SearchContext(buffer=self.srcbuf, settings=self.sopts) self.add(win)
def __init__(self, parent): super().__init__() self.search_context = None self.notify_id = None self.set_text_view(None) # Setup a signal for when the find bar loses focus parent.connect('set-focus-child', self.on_focus_child) # Create and bind our GtkSourceSearchSettings settings = GtkSource.SearchSettings() self.match_case.bind_property('active', settings, 'case-sensitive') self.whole_word.bind_property('active', settings, 'at-word-boundaries') self.regex.bind_property('active', settings, 'regex-enabled') self.find_entry.bind_property('text', settings, 'search-text') settings.set_wrap_around(True) self.search_settings = settings # Bind visibility and layout for find-and-replace mode self.bind_property('replace_mode', self.replace_entry, 'visible') self.bind_property('replace_mode', self.replace_all_button, 'visible') self.bind_property('replace_mode', self.replace_button, 'visible') self.bind_property( 'replace_mode', self, 'row-spacing', GObject.BindingFlags.DEFAULT, lambda binding, replace_mode: 6 if replace_mode else 0)
def __init__(self, document): GtkSource.Buffer.__init__(self) self.document = document self.view = GtkSource.View.new_with_buffer(self) self.view.set_monospace(True) self.view.set_smart_home_end(True) self.view.set_auto_indent(True) self.view.set_left_margin(6) self.settings = ServiceLocator.get_settings() resources_path = ServiceLocator.get_resources_path() self.mover_mark = self.create_mark('mover', self.get_start_iter(), True) # set source language for syntax highlighting self.source_language_manager = GtkSource.LanguageManager() self.source_language_manager.set_search_path( (os.path.join(resources_path, 'gtksourceview', 'language-specs'), )) self.source_language = self.source_language_manager.get_language( self.document.get_gsv_language_name()) self.set_language(self.source_language) self.source_style_scheme_manager = GtkSource.StyleSchemeManager() self.source_style_scheme_manager.set_search_path( (os.path.join(resources_path, 'gtksourceview', 'styles'), )) self.source_style_scheme_light = self.source_style_scheme_manager.get_scheme( 'setzer') self.source_style_scheme_dark = self.source_style_scheme_manager.get_scheme( 'setzer-dark') self.search_settings = GtkSource.SearchSettings() self.search_context = GtkSource.SearchContext.new( self, self.search_settings) self.search_context.set_highlight(True) self.insert_position = 0 self.synctex_tag_count = 0 self.synctex_highlight_tags = dict() self.indentation_update = None self.indentation_tags = dict() self.tab_width = self.settings.get_value('preferences', 'tab_width') self.settings.register_observer(self) self.placeholder_tag = self.create_tag('placeholder') self.placeholder_tag.set_property('background', '#fce94f') self.placeholder_tag.set_property('foreground', '#000') self.view.connect('key-press-event', self.on_keypress) self.connect('mark-set', self.on_mark_set) self.connect('mark-deleted', self.on_mark_deleted) self.connect('insert-text', self.on_insert_text) self.connect('delete-range', self.on_delete_range) self.document.add_change_code('buffer_ready')
def init_buffer(self): self.source_buffer = GtkSource.Buffer() resources_path = ServiceLocator.get_resources_path() # set source language for syntax highlighting self.source_language_manager = GtkSource.LanguageManager() self.source_language_manager.set_search_path( (os.path.join(resources_path, 'gtksourceview', 'language-specs'), )) self.source_language = self.source_language_manager.get_language( self.get_gsv_language_name()) self.source_buffer.set_language(self.source_language) self.source_style_scheme_manager = GtkSource.StyleSchemeManager() self.source_style_scheme_manager.set_search_path( (os.path.join(resources_path, 'gtksourceview', 'styles'), )) self.source_style_scheme_light = self.source_style_scheme_manager.get_scheme( 'setzer') self.source_style_scheme_dark = self.source_style_scheme_manager.get_scheme( 'setzer-dark') self.search_settings = GtkSource.SearchSettings() self.search_context = GtkSource.SearchContext.new( self.source_buffer, self.search_settings) self.search_context.set_highlight(True) self.source_buffer.connect('changed', self.on_buffer_changed) self.source_buffer.connect('insert-text', self.on_insert_text) self.add_change_code('buffer_ready')
def __init__(self, find_widget, wrap_widget, find_box_widget, replace_box_widget, match_case_checkbox, whole_word_checkbox, regex_checkbox): self.widget = find_widget self.search_context = None self.wrap_widget = wrap_widget self.find_box_widget = find_box_widget self.replace_box_widget = replace_box_widget self.is_searching_backwards = False self.text_view = None self.search_settings = GtkSource.SearchSettings() match_case_checkbox.bind_property('active', self.search_settings, 'case-sensitive') whole_word_checkbox.bind_property('active', self.search_settings, 'at-word-boundaries') regex_checkbox.bind_property('active', self.search_settings, 'regex-enabled') self.find_box_widget.bind_property('text', self.search_settings, 'search-text') self.search_settings.set_wrap_around(True) self.widget.connect('key-press-event', self.on_find_bar_key_press) self.find_box_widget.connect('key-press-event', self.on_find_box_key_press) self.find_box_widget.connect('key-release-event', self.on_find_box_key_release)
def __init__(self): super().__init__() self.document = None self.buffer = GtkSource.Buffer() self.manager = GtkSource.LanguageManager() self.language = self.manager.get_language("markdown") self.buffer.set_language(self.language) self.buffer.create_tag('match', background="#66ff00") self.view = GtkSource.View() self.view.set_buffer(self.buffer) self.view.set_wrap_mode(Gtk.WrapMode.WORD) self.view.set_auto_indent(True) self.view.set_smart_home_end(True) self.view.set_insert_spaces_instead_of_tabs(True) self.view.set_tab_width(4) # self.view.set_pixels_above_lines(4) # self.view.set_pixels_below_lines(4) self.view.set_left_margin(8) self.view.set_right_margin(8) self.view.get_style_context().add_class('norka-editor') self.view.connect('key-release-event', self.on_key_release_event) self.scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True) self.scrolled.add(self.view) # SearchBar self.search_bar = SearchBar() self.search_revealer = Gtk.Revealer() self.search_revealer.add(self.search_bar) self.search_bar.connect('find-changed', self.do_next_match) self.search_bar.connect('find-next', self.do_next_match) self.search_bar.connect('find-prev', self.do_previous_match) self.search_bar.connect('stop-search', self.do_stop_search) content_grid = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) content_grid.pack_start(self.search_revealer, False, True, 0) content_grid.pack_start(self.scrolled, True, True, 0) content_grid.show_all() self.overlay = Gtk.Overlay() self.overlay.add(content_grid) self.stats_overlay = Granite.WidgetsOverlayBar.new(self.overlay) self.stats_handler = StatsHandler(overlay_bar=self.stats_overlay, buffer=self.buffer) self.stats_handler.update_default_stat() self.add(self.overlay) self.font_desc = Pango.FontDescription() self.spellchecker = GtkSpell.Checker() self.search_settings = GtkSource.SearchSettings(wrap_around=True) self.search_context = GtkSource.SearchContext(buffer=self.buffer, settings=self.search_settings) self.search_iter = None
def __init__(self, buffer_, query): settings = GtkSource.SearchSettings() settings.set_search_text(query) settings.set_case_sensitive(False) self.ctx = GtkSource.SearchContext.new(buffer_, settings) self.ctx.set_highlight(True) self.ctx.set_match_style(GtkSource.Style(underline=True)) self._last_mark = None
def __init__(self, document): GtkSource.Buffer.__init__(self) self.document = document self.view = GtkSource.View.new_with_buffer(self) self.view.set_monospace(True) self.view.set_smart_home_end(True) self.view.set_auto_indent(True) self.settings = ServiceLocator.get_settings() self.source_language_manager = ServiceLocator.get_source_language_manager( ) self.source_style_scheme_manager = ServiceLocator.get_source_style_scheme_manager( ) self.font_manager = ServiceLocator.get_font_manager() self.font_manager.register_observer(self) self.mover_mark = self.create_mark('mover', self.get_start_iter(), True) # set source language for syntax highlighting self.source_language = self.source_language_manager.get_language( self.document.get_gsv_language_name()) self.set_language(self.source_language) self.update_syntax_scheme() self.search_settings = GtkSource.SearchSettings() self.search_context = GtkSource.SearchContext.new( self, self.search_settings) self.search_context.set_highlight(True) self.insert_position = 0 self.synctex_tag_count = 0 self.synctex_highlight_tags = dict() self.indentation_update = None self.indentation_tags = dict() self.tab_width = self.settings.get_value('preferences', 'tab_width') self.settings.register_observer(self) self.placeholder_tag = self.create_tag('placeholder') self.placeholder_tag.set_property('background', '#fce94f') self.placeholder_tag.set_property('foreground', '#000') self.connect('mark-set', self.on_mark_set) self.connect('mark-deleted', self.on_mark_deleted) self.connect('insert-text', self.on_insert_text) self.connect('delete-range', self.on_delete_range) self.connect('end-user-action', self.on_end_user_action) self.connect('changed', self.on_buffer_changed) self.connect('modified-changed', self.on_modified_changed) self.document.add_change_code('buffer_ready') self.view.set_left_margin( self.font_manager.get_char_width(self.view) - 3)
def __init__(self, parent): super().__init__("findbar.ui", "findbar", ["arrow_left", "arrow_right"]) self.set_text_view(None) self.arrow_left.show() self.arrow_right.show() parent.connect('set-focus-child', self.on_focus_child) settings = GtkSource.SearchSettings() self.match_case.bind_property('active', settings, 'case-sensitive') self.whole_word.bind_property('active', settings, 'at-word-boundaries') self.regex.bind_property('active', settings, 'regex-enabled') self.find_entry.bind_property('text', settings, 'search-text') settings.set_wrap_around(True) self.search_settings = settings
def __init__(self, *args, **kwargs): super(Notepad, self).__init__(*args, **kwargs) self.scrolled = Gtk.ScrolledWindow() self.scrolled.set_hexpand(True) self.scrolled.set_vexpand(True) self.sourceview = GtkSource.View() self.sourcebuffer = self.sourceview.get_buffer() self.sourceview.set_smart_home_end(0) self.sourceview.set_auto_indent(True) self.scrolled.add(self.sourceview) start, end = self.sourcebuffer.get_bounds() self.sourcebuffer.ensure_highlight(start, end) self.sourcesearch = GtkSource.SearchContext.new(self.sourcebuffer) self.sourcesearchsettings = GtkSource.SearchSettings() self.sourcesearchsettings.set_search_text("deneme") self.sourcesearch.set_settings(self.sourcesearchsettings) self.searchtoolbar = Gtk.Toolbar() self.toolitem = Gtk.ToolItem() self.search_bar = Gtk.Entry() self.search_bar.set_width_chars(30) self.search_bar.connect("activate", self.search) self.toolitem.add(self.search_bar) self.searchtoolbar.insert(self.toolitem, 0) self.toolitem2 = Gtk.ToolItem() self.search_forward = Gtk.Button() self.search_forward.set_label("Sonraki") self.search_forward.connect("clicked", self.searchforward) self.toolitem2.add(self.search_forward) self.searchtoolbar.insert(self.toolitem2, 1) self.toolitem3 = Gtk.ToolItem() self.search_backward= Gtk.Button() self.search_backward.set_label("Önceki") self.search_backward.connect("clicked", self.searchbackward) self.toolitem3.add(self.search_backward) self.searchtoolbar.insert(self.toolitem3, 2) self.pack_start(self.scrolled, True, True, 0) self.pack_start(self.searchtoolbar, False, True, 0) self.show_all()
def __init__(self): super().__init__() self.document = None self.view = Editor() self.scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True) self.scrolled.get_style_context().add_class('scrolled-editor') self.scrolled.add(self.view) # SearchBar self.search_bar = SearchBar() self.search_revealer = Gtk.Revealer() self.search_revealer.add(self.search_bar) self.search_bar.connect('find-changed', self.do_next_match) self.search_bar.connect('find-next', self.do_next_match) self.search_bar.connect('find-prev', self.do_previous_match) self.search_bar.connect('stop-search', self.do_stop_search) content_grid = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) content_grid.pack_start(self.search_revealer, False, True, 0) content_grid.pack_start(self.scrolled, True, True, 0) content_grid.show_all() self.overlay = Gtk.Overlay() self.overlay.add(content_grid) self.stats_overlay = Granite.WidgetsOverlayBar.new(self.overlay) self.stats_handler = StatsHandler(overlay_bar=self.stats_overlay, buffer=self.buffer) self.stats_handler.update_default_stat() self.add(self.overlay) self.font_desc = Pango.FontDescription() self.spellchecker = GtkSpell.Checker() self.search_settings = GtkSource.SearchSettings(wrap_around=True) self.search_context = GtkSource.SearchContext( buffer=self.buffer, settings=self.search_settings) self.search_iter = None
def __init__(self, widget, wrap_box, find_entry, replace_entry, match_case, whole_word, regex): self.widget = widget self.set_text_view(None) self.wrap_box = wrap_box self.find_entry = find_entry self.replace_entry = replace_entry # self.arrow_left.show() # self.arrow_right.show() settings = GtkSource.SearchSettings() match_case.bind_property('active', settings, 'case-sensitive') whole_word.bind_property('active', settings, 'at-word-boundaries') regex.bind_property('active', settings, 'regex-enabled') self.find_entry.bind_property('text', settings, 'search-text') settings.set_wrap_around(True) self.search_settings = settings self.widget.connect('key-press-event', self.on_find_bar_key_press) self.find_entry.connect('key-press-event', self.on_find_entry_key_press) self.find_entry.connect('key-release-event', self.on_find_entry_key_release)
def __init__(self, document, document_view, search_bar): self.search_bar = search_bar self.search_bar_mode = 'search' self.document_view = document_view self.document = document self.search_settings = GtkSource.SearchSettings() self.search_context = GtkSource.SearchContext.new( self.document.content.source_buffer, self.search_settings) self.search_context.set_highlight(True) self.observe_search_bar() self.observe_shortcutsbar() self.search_bar.connect('size-allocate', self.on_search_bar_size_allocate) self.search_bar.match_counter.connect( 'size-allocate', self.on_match_counter_size_allocate) self.document.content.connect('selection_might_have_changed', self.on_selection_might_have_changed)
def replace_text_in_stack_buffer(stack_name, *search_replace_tuples): stack = model.builder.get_object(stack_name) # TODO: Remove this line when 14.04 is no longer supported. # Bypass this functionality for Ubuntu 14.04. # Thsis is necessary because Gtk 3.10 in Ubuntu 14.04 does not support # Gtk.Stack or Gtk.StackSidebar. if not stack: return logger.log_data('Searh and replace in stack', stack_name) # Prepate search settings. search_settings = GtkSource.SearchSettings() search_settings.set_regex_enabled(True) search_settings.set_wrap_around(True) scrolled_windows = stack.get_children() for scrolled_window in scrolled_windows: source_view = scrolled_window.get_child() source_buffer = source_view.get_buffer() total_replacement_count = 0 for search_replace_tuple in search_replace_tuples: search_text, replacement_text = search_replace_tuple logger.log_data('Search and replace', '%s ⊳ %s' % (search_text, replacement_text)) search_settings.set_search_text(search_text) search_context = GtkSource.SearchContext.new( source_buffer, search_settings) replacement_count = search_context.replace_all( replacement_text, -1) logger.log_data('Number of matches', replacement_count) total_replacement_count += replacement_count return total_replacement_count
def onDocumentOpenedCb(self): self._window.get_active_view().grab_focus() currDoc = self._window.get_active_document() # highlight matches in opened document: if hasattr(GtkSource, "SearchSettings"): # set_search_context() is necessary to integrate with existing Gedit search # (but is not universally available - see bgo#726408) if hasattr(currDoc, "set_search_context"): settings = GtkSource.SearchSettings() settings.set_search_text(self.query.text) settings.set_case_sensitive(self.query.caseSensitive) settings.set_at_word_boundaries(self.query.wholeWord) context = GtkSource.SearchContext.new(currDoc, settings) currDoc.set_search_context(context) else: flags = 0 if self.query.caseSensitive: flags |= 4 if self.query.wholeWord: flags |= 2 currDoc.set_search_text(self.query.text, flags) return False
def on_search_clicked(self, widget): dialog = SearchDialog(self) dialog.set_transient_for(self) dialog.set_modal(True) dialog.show_all() # ==== This is important part for *dialog ===== # Clicking button placed in the particular *dialog makes dialog to # exit the event loop while emitting a response signal if the # Response ID entry in Glade is activated. response = dialog.run() search_settings = GtkSource.SearchSettings() search_settings.set_case_sensitive(dialog.case_sensitive) search_settings.set_regex_enabled(dialog.regex_enabled) search_settings.set_search_text(dialog.searchbox.get_text()) # buffer (GtkSource.Buffer) – a GtkSource.Buffer. # settings (GtkSource.SearchSettings or None) – a GtkSource.SearchSettings, or None. self.search_context = GtkSource.SearchContext(buffer=self.textbuffer, settings=search_settings) if response == Gtk.ResponseType.OK: cursor_mark = self.textbuffer.get_insert() start = self.textbuffer.get_iter_at_mark(cursor_mark) if start.get_offset() == self.textbuffer.get_char_count(): start = self.textbuffer.get_start_iter() self.search_and_mark(start) dialog.destroy()
def __init__(self, document): GtkSource.Buffer.__init__(self) self.document = document self.view = GtkSource.View.new_with_buffer(self) self.view.set_monospace(True) self.view.set_smart_home_end(True) self.view.set_auto_indent(True) self.view.set_left_margin(6) self.settings = ServiceLocator.get_settings() resources_path = ServiceLocator.get_resources_path() # set source language for syntax highlighting self.source_language_manager = GtkSource.LanguageManager() self.source_language = self.source_language_manager.get_language( self.document.get_gsv_language_name()) self.set_language(self.source_language) self.source_style_scheme_manager = GtkSource.StyleSchemeManager() self.source_style_scheme_manager.set_search_path( (os.path.join(resources_path, 'gtksourceview', 'styles'), )) self.source_style_scheme_light = self.source_style_scheme_manager.get_scheme( 'setzer') self.source_style_scheme_dark = self.source_style_scheme_manager.get_scheme( 'setzer-dark') self.search_settings = GtkSource.SearchSettings() self.search_context = GtkSource.SearchContext.new( self, self.search_settings) self.search_context.set_highlight(True) self.synctex_tag_count = 0 self.synctex_highlight_tags = dict() self.document.add_change_code('buffer_ready')
def on_app_activate(self, app): self.builder = Gtk.Builder() GObject.type_register(GtkSource.View) self.builder.add_from_file("22_editor_gtksv.glade") self.builder.connect_signals(Handler()) # setup SourceView self.view = self.builder.get_object("sv") self.buffer = self.view.get_buffer() self.sourcefile = GtkSource.File() self.lang_manager = GtkSource.LanguageManager() # setup settings for SourceView self.settings = GtkSource.SearchSettings() self.builder.get_object("search_entry").bind_property( "text", self.settings, "search-text") self.settings.set_search_text("initial highlight") self.settings.set_wrap_around(True) self.search_context = GtkSource.SearchContext.new( self.buffer, self.settings) window = self.builder.get_object("app_window") window.set_application(app) window.show_all()
def _add_to_stack(stack_name, filepaths, *search_replace_tuples): stack = model.builder.get_object(stack_name) # TODO: Remove this line when 14.04 is no longer supported. # Bypass this functionality for Ubuntu 14.04. # Thsis is necessary because Gtk 3.10 in Ubuntu 14.04 does not support # Gtk.Stack or Gtk.StackSidebar. if not stack: return # Remove all items from the stack. logger.log_data('Remove all items from the stack', stack_name) scrolled_windows = stack.get_children() for scrolled_window in scrolled_windows: stack.remove(scrolled_window) # Prepate search settings. search_settings = GtkSource.SearchSettings() search_settings.set_regex_enabled(True) search_settings.set_wrap_around(True) # Add new items to the stack. logger.log_data('Add new items to stack', stack_name) for filepath in filepaths: title = '/%s' % os.path.relpath(filepath, model.custom_live_iso_directory) if os.path.exists(filepath): logger.log_data('Add %s from filepath' % title, filepath) # Create a new scrolled window. builder_temp = Gtk.Builder.new_from_file(timbrel_cfg.path + '/ui/scrolled_window.ui') scrolled_window = builder_temp.get_object('scrolled_window') # Get the source buffer. source_view = scrolled_window.get_child() source_buffer = source_view.get_buffer() # Read the file, and add it to the source buffer. with open(filepath, 'r') as file: data = file.read() source_buffer.set_text(data) # Add the new scrolled window to the stack. stack.add_titled(scrolled_window, filepath, title) # Optionally replace text. for search_replace_tuple in search_replace_tuples: search_text, replacement_text = search_replace_tuple logger.log_data('Search and replace', '%s ⊳ %s' % (search_text, replacement_text)) search_settings.set_search_text(search_text) search_context = GtkSource.SearchContext.new( source_buffer, search_settings) replacement_count = search_context.replace_all( replacement_text, -1) logger.log_data('Number of matches', replacement_count) else: logger.log_data( 'Skip adding %s because the file does not exist' % title, filepath)
return None return rgb def get_fg_and_bg(r, g, b): l = 0.299 * r + 0.587 * g + 0.114 * b if l > 0.5: fg = Gdk.RGBA(0, 0, 0, 1) else: fg = Gdk.RGBA(1, 1, 1, 1) return fg, Gdk.RGBA(r, g, b, 1) SEARCH_REGEX = r'(RGBA|HSVA)\(.*?\)' SEARCH_SETTINGS = GtkSource.SearchSettings(search_text=SEARCH_REGEX, wrap_around=False, regex_enabled=True, case_sensitive=True) def on_highlight_updated(buffer, start, end): global color_tags for tag in color_tags: buffer.remove_tag(tag, buffer.get_start_iter(), buffer.get_end_iter()) color_tags = [] searcher = GtkSource.SearchContext(buffer=buffer, settings=SEARCH_SETTINGS) current_iter = buffer.get_start_iter() while True: found, start, end, _ = searcher.forward2(current_iter) if not found:
def __init__(self, *args, **kwargs): super(Notepad, self).__init__(*args, **kwargs) self.scrolled = Gtk.ScrolledWindow() self.scrolled.set_hexpand(True) self.scrolled.set_vexpand(True) self.sourceview = GtkSource.View() self.sourcebuffer = self.sourceview.get_buffer() self.sourceview.set_show_line_numbers(True) self.sourceview.set_smart_home_end(0) self.sourceview.set_auto_indent(True) self.scrolled.add(self.sourceview) self.sourcebuffer.set_highlight_syntax(True) self.sourcebuffer.set_highlight_matching_brackets(True) start, end = self.sourcebuffer.get_bounds() self.sourcebuffer.ensure_highlight(start, end) self.sourcelanguagemanager = GtkSource.LanguageManager() lang = self.sourcelanguagemanager.get_default() abc = self.sourcelanguagemanager.get_language("python") self.sourcebuffer.set_language(abc) self.sourcestyle = GtkSource.Style() self.sourcestylescheme = GtkSource.StyleScheme() self.sourcestyleschememanager = GtkSource.StyleSchemeManager() style = self.sourcestyleschememanager.get_scheme("oblivion") self.sourcebuffer.set_style_scheme(style) self.sourcesearch = GtkSource.SearchContext.new(self.sourcebuffer) self.sourcesearchsettings = GtkSource.SearchSettings() self.sourcesearchsettings.set_search_text("deneme") self.sourcesearch.set_settings(self.sourcesearchsettings) self.sourcesearch.set_highlight(True) self.textiter = Gtk.TextIter() self.searchtoolbar = Gtk.Toolbar() self.toolitem = Gtk.ToolItem() self.search_bar = Gtk.Entry() self.search_bar.set_width_chars(30) self.search_bar.connect("activate", self.search) self.toolitem.add(self.search_bar) self.searchtoolbar.insert(self.toolitem, 0) self.replacetoolbar = Gtk.Toolbar() self.toolitem2 = Gtk.ToolItem() self.search_bar2 = Gtk.Entry() self.search_bar2.set_width_chars(30) self.search_bar2.connect("activate", self.search) self.toolitem2.add(self.search_bar2) self.replacetoolbar.insert(self.toolitem2, 0) self.toolitem3 = Gtk.ToolItem() self.search_bar3 = Gtk.Entry() self.search_bar3.set_width_chars(30) self.search_bar3.connect("activate", self.search) self.toolitem3.add(self.search_bar3) self.replacetoolbar.insert(self.toolitem3, 0) self.pack_start(self.scrolled, True, True, 0) self.pack_start(self.searchtoolbar, False, True, 0) self.pack_start(self.replacetoolbar, False, True, 0) self.show() self.scrolled.show_all()
def __init__(self): super().__init__() self.document = None self.buffer = GtkSource.Buffer() self.manager = GtkSource.LanguageManager() self.language = self.manager.get_language("markdown") self.buffer.set_language(self.language) self.buffer.create_tag('match', background="#66ff00") self.view = GtkSource.View() self.view.set_buffer(self.buffer) self.view.set_wrap_mode(Gtk.WrapMode.WORD) self.view.set_auto_indent(True) self.view.set_smart_home_end(True) self.view.set_insert_spaces_instead_of_tabs(True) self.view.set_tab_width(4) self.view.props.width_request = 800 self.view.set_halign(Gtk.Align.CENTER) # self.view.set_pixels_above_lines(2) # self.view.set_pixels_below_lines(2) # self.view.set_pixels_inside_wrap(4) self.view.set_top_margin(8) self.view.set_left_margin(8) self.view.set_right_margin(8) self.view.set_bottom_margin(8) self.view.set_monospace(True) self.view.get_style_context().add_class('norka-editor') self.view.connect('key-release-event', self.on_key_release_event) # Connect markup handler self.markup_formatter = MarkupFormatter(self.buffer) self.get_style_context().add_class('norka-editor-view') self.connect('insert-bold', self.on_insert_bold) self.connect('insert-italic', self.on_insert_italic) self.connect('insert-code', self.on_insert_code) self.connect('insert-code-block', self.on_insert_code_block) self.connect('insert-h1', self.on_toggle_header1) self.connect('insert-h2', self.on_toggle_header2) self.connect('insert-h3', self.on_toggle_header3) self.connect('insert-list', self.on_toggle_list) self.connect('insert-ordered-list', self.on_toggle_ordered_list) self.connect('insert-quote', self.on_toggle_quote) self.connect('insert-link', self.on_insert_link) self.connect('insert-image', self.on_insert_image) self.scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True) self.scrolled.get_style_context().add_class('scrolled-editor') self.scrolled.add(self.view) # SearchBar self.search_bar = SearchBar() self.search_revealer = Gtk.Revealer() self.search_revealer.add(self.search_bar) self.search_bar.connect('find-changed', self.do_next_match) self.search_bar.connect('find-next', self.do_next_match) self.search_bar.connect('find-prev', self.do_previous_match) self.search_bar.connect('stop-search', self.do_stop_search) content_grid = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) content_grid.pack_start(self.search_revealer, False, True, 0) content_grid.pack_start(self.scrolled, True, True, 0) content_grid.show_all() self.overlay = Gtk.Overlay() self.overlay.add(content_grid) self.stats_overlay = Granite.WidgetsOverlayBar.new(self.overlay) self.stats_handler = StatsHandler(overlay_bar=self.stats_overlay, buffer=self.buffer) self.stats_handler.update_default_stat() self.add(self.overlay) self.font_desc = Pango.FontDescription() self.spellchecker = GtkSpell.Checker() self.search_settings = GtkSource.SearchSettings(wrap_around=True) self.search_context = GtkSource.SearchContext( buffer=self.buffer, settings=self.search_settings) self.search_iter = None
def __init__(self, *args, **kwargs): super(Notepad, self).__init__(*args, **kwargs) self.scrolled = Gtk.ScrolledWindow() self.scrolled.set_hexpand(True) self.scrolled.set_vexpand(True) self.sourceview = GtkSource.View() self.sourcebuffer = self.sourceview.get_buffer() self.sourceview.set_show_line_numbers(True) self.sourceview.set_smart_home_end(0) self.sourceview.set_auto_indent(True) self.scrolled.add(self.sourceview) self.sourcebuffer.set_highlight_syntax(True) self.sourcebuffer.set_highlight_matching_brackets(True) start, end = self.sourcebuffer.get_bounds() self.sourcebuffer.ensure_highlight(start, end) self.sourcelanguagemanager = GtkSource.LanguageManager() lang = self.sourcelanguagemanager.get_default() abc = self.sourcelanguagemanager.get_language("python") self.sourcebuffer.set_language(abc) self.sourcestyle = GtkSource.Style() self.sourcestylescheme = GtkSource.StyleScheme() self.sourcestyleschememanager = GtkSource.StyleSchemeManager() self.sourcestyleschememanager.append_search_path(os.getcwd()) style = self.sourcestyleschememanager.get_scheme("oblivion") self.sourcebuffer.set_style_scheme(style) self.sourcesearch = GtkSource.SearchContext.new(self.sourcebuffer) self.sourcesearchsettings = GtkSource.SearchSettings() self.sourcesearch.set_settings(self.sourcesearchsettings) self.sourcesearch.set_highlight(True) self.textiter = Gtk.TextIter() self.searchtoolbar = Gtk.Toolbar() self.toolitem = Gtk.ToolItem() self.search_bar = Gtk.Entry() self.search_bar.set_width_chars(30) self.toolitem.add(self.search_bar) self.searchtoolbar.insert(self.toolitem, -1) self.toolitem2 = Gtk.ToolItem() self.search_bar_button = Gtk.Button(label="Ara") self.search_bar_button.connect("clicked", self.search) self.toolitem2.add(self.search_bar_button) self.searchtoolbar.insert(self.toolitem2, -1) self.toolitem_case_sensitive = Gtk.ToolItem() self.case_sensitive_button = Gtk.ToggleButton( label="Büyük küçük ayrımı") self.case_sensitive_button.connect("toggled", self.case_sensitive_toogled) self.toolitem_case_sensitive.add(self.case_sensitive_button) self.searchtoolbar.insert(self.toolitem_case_sensitive, -1) self.toolitem3 = Gtk.ToolItem() self.search_bar_button = Gtk.Button(label="Çık") self.search_bar_button.connect("clicked", self.search_bar_close) self.toolitem3.add(self.search_bar_button) self.searchtoolbar.insert(self.toolitem3, -1) self.replacetoolbar = Gtk.Toolbar() self.toolitem4 = Gtk.ToolItem() self.replace_entry_1 = Gtk.Entry() self.replace_entry_1.set_width_chars(30) self.toolitem4.add(self.replace_entry_1) self.replacetoolbar.insert(self.toolitem4, 0) self.toolitem5 = Gtk.ToolItem() self.replace_entry_2 = Gtk.Entry() self.replace_entry_2.set_width_chars(30) self.toolitem5.add(self.replace_entry_2) self.replacetoolbar.insert(self.toolitem5, -1) self.toolitem6 = Gtk.ToolItem() self.search_bar_button = Gtk.Button(label="Değiştir") self.search_bar_button.connect("clicked", self.replace_text) self.toolitem6.add(self.search_bar_button) self.replacetoolbar.insert(self.toolitem6, -1) self.toolitem7 = Gtk.ToolItem() self.search_bar_button = Gtk.Button(label="Çık") self.search_bar_button.connect("clicked", self.replace_bar_close) self.toolitem7.add(self.search_bar_button) self.replacetoolbar.insert(self.toolitem7, -1) self.pack_start(self.scrolled, True, True, 0) self.pack_start(self.searchtoolbar, False, True, 0) self.pack_start(self.replacetoolbar, False, True, 0) self.show() self.searchtoolbar.hide() self.replacetoolbar.hide() self.scrolled.show_all()