Пример #1
0
class ScintillaView(contentview.content_view):

    HAS_CONTROL_BOX = False
    HAS_TITLE = False

    def init(self):
        self.editor = Pscyntilla()
        self.widget.pack_start(self.editor._sc)
        self.optionize()
        self.editor._sc.connect('modified', self.cb_modified)
        self.editor._sc.connect('save-point-reached',
                                self.cb_save_point_reached)
        self.editor._sc.connect('save-point-left', self.cb_save_point_left)

    def cb_save_point_reached(self, editor, *args):
        self.service._save_act.set_sensitive(False)
        self.service._revert_act.set_sensitive(False)

    def cb_save_point_left(self, editor, *args):
        self.service._save_act.set_sensitive(True)
        self.service._revert_act.set_sensitive(True)

    def optionize(self):
        opt = self.service.opt
        # font
        self.editor.set_font(*self._font_and_size(opt('font', 'font')))
        # indenting options
        use_tabs = opt('indenting', 'use_tabs')
        self.editor.set_use_tabs(use_tabs)
        self.editor.set_tab_width(opt('indenting', 'tab_width'))
        if not use_tabs:
            self.editor.set_spaceindent_width(
                opt('indenting', 'space_indent_width'))
        # folding options
        self.editor.use_folding(opt('folding', 'use_folding'),
                                width=opt('folding', 'marker_size'))
        self.editor.set_foldmargin_colours(back=opt('folding',
                                                    'marker_background'),
                                           fore=opt('folding',
                                                    'marker_foreground'))
        # line numbers
        self.editor.set_linenumber_margin_colours(
            background=opt('line_numbers', 'background'),
            foreground=opt('line_numbers', 'foreground'))
        self.editor.set_linenumbers_visible(
            opt('line_numbers', 'show_line_numbers'))
        if opt('colors', 'use_dark_theme'):
            self.editor.use_dark_theme()
        else:
            self.editor.use_light_theme()
        # caret and selection
        car = 'caret'
        self.editor.set_caret_colour(opt(car, 'caret_colour'))
        self.editor.set_caret_line_visible(opt(car, 'highlight_current_line'),
                                           opt(car, 'current_line_color'))
        self.editor.set_selection_color(opt(car, 'selection_color'))
        # edge column
        el = 'edge_line'
        self.editor.set_edge_column_visible(opt(el, 'show_edge_line'),
                                            opt(el, 'position'),
                                            opt(el, 'color'))

    def _font_and_size(self, fontdesc):
        name, size = fontdesc.rsplit(' ', 1)
        size = int(size)
        return name, size

    def cb_modified(self, editor, *args):
        if self.service._current:
            self.service._sensitise_actions()
Пример #2
0
class ScintillaView(contentview.content_view):

    HAS_CONTROL_BOX = False
    HAS_TITLE = False

    def init(self):
        self.editor = Pscyntilla()
        self.widget.pack_start(self.editor._sc)
        self.optionize()
        self.editor._sc.connect('modified', self.cb_modified)
        self.editor._sc.connect('save-point-reached', self.cb_save_point_reached)
        self.editor._sc.connect('save-point-left', self.cb_save_point_left)

    def cb_save_point_reached(self, editor, *args):
        self.service._save_act.set_sensitive(False)
        self.service._revert_act.set_sensitive(False)
    
    def cb_save_point_left(self, editor, *args):
        self.service._save_act.set_sensitive(True)
        self.service._revert_act.set_sensitive(True)
        
    def optionize(self):
        opt = self.service.opt
        # font
        self.editor.set_font(
                *self._font_and_size(opt('font', 'font')))
        # indenting options
        use_tabs = opt('indenting', 'use_tabs')
        self.editor.set_use_tabs(use_tabs)
        self.editor.set_tab_width(opt('indenting', 'tab_width'))
        if not use_tabs:
            self.editor.set_spaceindent_width(
                opt('indenting', 'space_indent_width'))
        # folding options
        self.editor.use_folding(
            opt('folding', 'use_folding'), width=opt('folding', 'marker_size'))
        self.editor.set_foldmargin_colours(
            back=opt('folding', 'marker_background'),
            fore=opt('folding', 'marker_foreground'))
        # line numbers
        self.editor.set_linenumber_margin_colours(
            background=opt('line_numbers', 'background'),
            foreground=opt('line_numbers', 'foreground'))
        self.editor.set_linenumbers_visible(
            opt('line_numbers', 'show_line_numbers'))
        if opt('colors', 'use_dark_theme'):
            self.editor.use_dark_theme()
        else:
            self.editor.use_light_theme()
        # caret and selection
        car = 'caret'
        self.editor.set_caret_colour(opt(car, 'caret_colour'))
        self.editor.set_caret_line_visible(
            opt(car, 'highlight_current_line'),
            opt(car, 'current_line_color'))
        self.editor.set_selection_color(
            opt(car, 'selection_color'))
        # edge column
        el = 'edge_line'
        self.editor.set_edge_column_visible(
            opt(el, 'show_edge_line'),
            opt(el, 'position'),
            opt(el, 'color'))

    def _font_and_size(self, fontdesc):
        name, size = fontdesc.rsplit(' ', 1)
        size = int(size)
        return name, size
        
    def cb_modified(self, editor, *args):
        if self.service._current:
            self.service._sensitise_actions()