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()
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()