コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: source_buffer.py プロジェクト: pri-k/Setzer
    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')
コード例 #4
0
ファイル: document.py プロジェクト: stephanlachnit/Setzer
    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')
コード例 #5
0
ファイル: FindManager.py プロジェクト: byohay/Remarkable
    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)
コード例 #6
0
    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
コード例 #7
0
        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
コード例 #8
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.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)
コード例 #9
0
ファイル: findbar.py プロジェクト: DLR-TS/SUMOLibraries
    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
コード例 #10
0
    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()
コード例 #11
0
ファイル: editor_view.py プロジェクト: cckuok/Norka
    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
コード例 #12
0
    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)
コード例 #13
0
ファイル: search.py プロジェクト: cvfosammmm/Setzer
    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)
コード例 #14
0
ファイル: display.py プロジェクト: sallecta/timbrel
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
コード例 #15
0
    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
コード例 #16
0
ファイル: editor.py プロジェクト: osamuaoki/osamuaoki-hugo
 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()
コード例 #17
0
ファイル: source_buffer.py プロジェクト: sfeuga/Setzer
    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')
コード例 #18
0
    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()
コード例 #19
0
ファイル: display.py プロジェクト: sallecta/timbrel
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)
コード例 #20
0
        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:
コード例 #21
0
    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()
コード例 #22
0
    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
コード例 #23
0
    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()