예제 #1
0
 def on_add_scheme_button_clicked(self, button):
     dialog = AddSchemeDialog(self.main_window)
     pathname = dialog.run()
     if pathname != None:
         destination = os.path.join(ServiceLocator.get_config_folder(), 'syntax_schemes', os.path.basename(pathname))
         shutil.copyfile(pathname, destination)
         ServiceLocator.get_source_style_scheme_manager().force_rescan()
         self.update_switchers()
         scheme_id = self.get_scheme_id_from_file(destination)
         if ServiceLocator.get_is_dark_mode():
             self.view.style_switcher_dark_mode.set_active_id(scheme_id)
         else:
             self.view.style_switcher.set_active_id(scheme_id)
예제 #2
0
 def update_font_color_preview(self):
     source_style_scheme_manager = ServiceLocator.get_source_style_scheme_manager(
     )
     name = self.settings.get_value('preferences', 'syntax_scheme')
     source_style_scheme_light = source_style_scheme_manager.get_scheme(
         name)
     name = self.settings.get_value('preferences',
                                    'syntax_scheme_dark_mode')
     source_style_scheme_dark = source_style_scheme_manager.get_scheme(name)
     if self.view.style_switcher_stack.get_visible_child_name() == 'light':
         self.view.source_buffer.set_style_scheme(source_style_scheme_light)
         self.view.preview_wrapper.get_style_context().remove_class(
             'light-bg')
         self.view.preview_wrapper.get_style_context().remove_class(
             'dark-bg')
         if ServiceLocator.get_is_dark_mode():
             self.view.preview_wrapper.get_style_context().add_class(
                 'light-bg')
     else:
         self.view.source_buffer.set_style_scheme(source_style_scheme_dark)
         self.view.preview_wrapper.get_style_context().remove_class(
             'light-bg')
         self.view.preview_wrapper.get_style_context().remove_class(
             'dark-bg')
         if not ServiceLocator.get_is_dark_mode():
             self.view.preview_wrapper.get_style_context().add_class(
                 'dark-bg')
예제 #3
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)
예제 #4
0
    def __init__(self, language, document):
        Observable.__init__(self)
        self.document = document

        self.settings = ServiceLocator.get_settings()

        self.source_buffer = GtkSource.Buffer()
        self.source_view = GtkSource.View.new_with_buffer(self.source_buffer)
        self.source_language_manager = ServiceLocator.get_source_language_manager(
        )
        self.source_style_scheme_manager = ServiceLocator.get_source_style_scheme_manager(
        )
        if language == 'bibtex':
            self.source_language = self.source_language_manager.get_language(
                'bibtex')
        else:
            self.source_language = self.source_language_manager.get_language(
                'latex')
        self.source_buffer.set_language(self.source_language)
        self.update_syntax_scheme()

        self.scroll_to = None
        self.insert_position = 0

        self.synctex_tag_count = 0
        self.synctex_highlight_tags = dict()

        self.indentation_update = None
        self.indentation_tags = dict()

        self.placeholder_tag = self.source_buffer.create_tag('placeholder')
        self.placeholder_tag.set_property('background', '#fce94f')
        self.placeholder_tag.set_property('foreground', '#000')

        self.source_buffer.connect('mark-set', self.on_mark_set)
        self.source_buffer.connect('mark-deleted', self.on_mark_deleted)
        self.source_buffer.connect('insert-text', self.on_insert_text)
        self.source_buffer.connect('delete-range', self.on_delete_range)
        self.source_buffer.connect('changed', self.on_buffer_changed)
        self.source_buffer.connect('modified-changed',
                                   self.on_modified_changed)
        self.undo_manager = self.source_buffer.get_undo_manager()
        self.undo_manager.connect('can-undo-changed', self.on_can_undo_changed)
        self.undo_manager.connect('can-redo-changed', self.on_can_redo_changed)
        self.settings.connect('settings_changed', self.on_settings_changed)