コード例 #1
0
ファイル: gladerrad.py プロジェクト: Xoristzatziki/GladerRAD
 def load_and_show_themes(self):
     # Set theme.
     self.themeManager = GtkSource.StyleSchemeManager()
     # Map from theme id to StyleScheme.
     self.themes = {
         tid: self.themeManager.get_scheme(tid)
         for tid in self.themeManager.get_scheme_ids()
     }
     # Holds the currently selected theme info.
     self.theme = None
     celltheme = Gtk.CellRendererText()
     self.comboTheme.pack_start(celltheme, True)
     self.comboTheme.add_attribute(celltheme, 'text', 0)
     self.bufferOutput = GtkSource.Buffer()
     self.langManager = GtkSource.LanguageManager()
     self.bufferLang = self.langManager.get_language('python3')
     self.bufferOutput.set_language(self.bufferLang)
     self.bufferOutput.set_highlight_syntax(True)
     self.bufferOutput.set_highlight_matching_brackets(True)
     if not self.set_theme_config():
         # Use first preferred theme if available.
         themeprefs = ('oblivion', 'tomorrownighteighties', 'twilight',
                       'kate')
         for themeid in themeprefs:
             theme = self.themes.get(themeid, None)
             if theme:
                 self.set_theme(theme)
                 break
     self.build_theme_list()
コード例 #2
0
ファイル: changesWindow.py プロジェクト: jwtalbot/snapper-gui
    def __init__(self, config, begin, end):
        super(changesWindow, self).__init__()
        builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        builder.add_from_file(
            pkg_resources.resource_filename("snappergui",
                                            "glade/changesWindow.glade"))

        builder.get_object("titlelabel").set_text("%s -> %s" % (begin, end))
        self.window = builder.get_object("changesWindow")
        self.statusbar = builder.get_object("statusbar1")
        self.pathstreeview = builder.get_object("pathstreeview")
        self.fileview = builder.get_object("fileview")
        self.choicesviewgroup = builder.get_object("actiongroup")
        builder.connect_signals(self)

        # save mountpoints for begin and end snapshots
        self.beginpath = snapper.GetMountPoint(config, begin)
        self.endpath = snapper.GetMountPoint(config, end)
        self.config = config
        self.snapshot_begin = begin
        self.snapshot_end = end

        self.choicesviewgroup.get_action("begin").set_label(str(begin))
        self.choicesviewgroup.get_action("end").set_label(str(end))

        self.sourcebuffer = GtkSource.Buffer()
        self.fileview.set_buffer(self.sourcebuffer)

        self.window.show_all()
        GObject.idle_add(self.on_idle_init_paths_tree)
コード例 #3
0
    def __init__(self, *args, **kwargs):
        self.label = Gtk.Label(label='Edit')
        """The :py:class:`Gtk.Label` representing this tabs name."""
        super(MailSenderEditTab, self).__init__(*args, **kwargs)
        self.textview = self.gobjects['view_html_file']
        """The :py:class:`Gtk.TextView` object of the editor."""
        self.textbuffer = GtkSource.Buffer()
        """The :py:class:`Gtk.TextBuffer` used by the :py:attr:textview` attribute."""
        self.textview.set_buffer(self.textbuffer)
        self.textview.modify_font(
            Pango.FontDescription(self.config['text_font']))
        self.language_manager = GtkSource.LanguageManager()
        self.textbuffer.set_language(
            self.language_manager.get_language('html'))
        self.textbuffer.set_highlight_syntax(True)
        self.toolbutton_save_html_file = self.gobjects[
            'toolbutton_save_html_file']
        self.textview.connect('populate-popup',
                              self.signal_textview_populate_popup)

        scheme_manager = GtkSource.StyleSchemeManager()
        style_scheme_name = self.config['text_source_theme']
        style_scheme = scheme_manager.get_scheme(style_scheme_name)
        if style_scheme:
            self.textbuffer.set_style_scheme(style_scheme)
        else:
            self.logger.error(
                "invalid GTK source theme: '{0}'".format(style_scheme_name))
        self.file_monitor = None
コード例 #4
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)
コード例 #5
0
    def __init__(self, db):

        self.builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(UI_FILE)
        self.builder.connect_signals(self)
        self.db = db

        language_manager = GtkSource.LanguageManager()
        self.source_view = self.builder.get_object('gtksourceview1')
        self.source_buffer = GtkSource.Buffer()
        self.source_view.set_buffer(self.source_buffer)
        self.source_buffer.set_language(language_manager.get_language('sql'))
        completion = self.source_view.get_completion()
        keyword_provider = GtkSource.CompletionWords.new('Keywords')
        keyword_provider.register(self.source_buffer)
        completion.add_provider(keyword_provider)

        self.window = self.builder.get_object('window1')
        self.window.show_all()

        self.populate_sql_commands()

        cursor = self.db.cursor()
        cursor.execute("SELECT command FROM sql.history WHERE current = True")
        command = cursor.fetchone()[0]
        self.source_buffer.set_text(command)
        cursor.close()
コード例 #6
0
 def __init__(self, note):
     """Initializes the stickynotes window"""
     self.path = os.path.abspath(
         os.path.join(os.path.dirname(__file__), '..'))
     self.note = note
     self.noteset = note.noteset
     self.locked = self.note.properties.get("locked", False)
     self.builder = Gtk.Builder()
     GObject.type_register(GtkSource.View)
     self.builder.add_from_file(os.path.join(self.path,
                                             "StickyNotes.glade"))
     self.builder.connect_signals(self)
     # Get necessary objects
     self.winMain = self.builder.get_object("MainWindow")
     self.winMain.set_name("main-window")
     widgets = [
         "txtNote", "bAdd", "imgAdd", "imgResizeR", "eResizeR", "bLock",
         "imgLock", "imgUnlock", "bClose", "confirmDelete"
     ]
     for w in widgets:
         setattr(self, w, self.builder.get_object(w))
     # Create menu
     self.menu = Gtk.Menu()
     self.populate_menu()
     # Load CSS template and initialize Gtk.CssProvider
     with open(os.path.join(self.path, "style.css")) as css_file:
         self.css_template = Template(css_file.read())
     self.css = Gtk.CssProvider()
     self.style_contexts = [
         self.winMain.get_style_context(),
         self.txtNote.get_style_context()
     ]
     # Update window-specific style. Global styles are loaded initially!
     self.update_style()
     self.update_font()
     # Ensure buttons are displayed with images
     settings = Gtk.Settings.get_default()
     settings.props.gtk_button_images = True
     # Set text buffer
     self.bbody = GtkSource.Buffer()
     self.bbody.begin_not_undoable_action()
     self.bbody.set_text(self.note.body)
     self.bbody.set_highlight_matching_brackets(False)
     self.bbody.end_not_undoable_action()
     self.txtNote.set_buffer(self.bbody)
     # Make resize work
     self.winMain.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
     self.eResizeR.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
     # Move Window
     self.winMain.move(*self.note.properties.get("position", (10, 10)))
     self.winMain.resize(*self.note.properties.get("size", (200, 150)))
     # Show the window
     self.winMain.show()
     # Mouse over
     self.eResizeR.get_window().set_cursor(
         Gdk.Cursor.new_for_display(
             self.eResizeR.get_window().get_display(),
             Gdk.CursorType.BOTTOM_RIGHT_CORNER))
     # Set locked state
     self.set_locked_state(self.locked)
コード例 #7
0
ファイル: gtk-demo.py プロジェクト: xifeiwu/workcode
    def create_source_view(self):
        font_desc = Pango.FontDescription('monospace 11')

        if GtkSource:
            lang_mgr = GtkSource.LanguageManager()
            lang = lang_mgr.get_language('python')

            buffer = GtkSource.Buffer()
            buffer.set_language(lang)
            buffer.set_highlight_syntax(True)

            view = GtkSource.View()
            view.set_buffer(buffer)
            view.set_show_line_numbers(True)

            scrolled_window = self.create_scrolled_window()
            scrolled_window.add(view)

        else:
            scrolled_window, buffer = self.create_text_view()
            view = scrolled_window.get_child()

        view.modify_font(font_desc)
        view.set_wrap_mode(Gtk.WrapMode.NONE)
        return scrolled_window, buffer
コード例 #8
0
 def __init__(self, main_app):
     """Create the source view window and init its properties"""
     self.main = main_app
     self.model = main_app.model
     self.clipboard = Gtk.Clipboard()
     control_viewport = self.main.builder.get_object('control_view')
     manager = GtkSource.LanguageManager()
     lang_python = manager.get_language('python')
     self.buffer = GtkSource.Buffer(language=lang_python)
     self.buffer.props.highlight_syntax = True
     self.control_view = GtkSource.View(buffer=self.buffer)
     self.buffer.place_cursor(self.buffer.get_start_iter())
     self.control_view.connect('button-press-event',
                               self.on_control_view_clicked)
     self.buffer.connect('changed', self.on_buffer_changed)
     self.buffer.connect('notify::can-undo',
                         lambda o, p: self.main.update_undo_redo_menuitem())
     self.buffer.connect('notify::can-redo',
                         lambda o, p: self.main.update_undo_redo_menuitem())
     self.tag_error = self.buffer.create_tag("error", background="red")
     debug_textview = self.main.builder.get_object('trace_textview')
     self.debug_buffer = LogBuffer(sys.stdout)
     sys.stdout = self.debug_buffer
     debug_textview.set_buffer(self.debug_buffer)
     self.control_view.show()
     #hide trace window by default
     #self.main.builder.get_object('hboxdebug').hide()
     control_viewport.add(self.control_view)
コード例 #9
0
ファイル: mail.py プロジェクト: l1k3m/king-phisher
	def __init__(self, *args, **kwargs):
		self.label = Gtk.Label(label='Edit')
		"""The :py:class:`Gtk.Label` representing this tabs name."""
		super(MailSenderEditTab, self).__init__(*args, **kwargs)
		self.textview = self.gobjects['view_html_file']
		"""The :py:class:`Gtk.TextView` object of the editor."""
		self.textbuffer = GtkSource.Buffer()
		"""The :py:class:`Gtk.TextBuffer` used by the :py:attr:textview` attribute."""
		self.textview.set_buffer(self.textbuffer)
		self.textview.modify_font(Pango.FontDescription(self.config['text_font']))
		self.language_manager = GtkSource.LanguageManager()
		self.textbuffer.set_language(self.language_manager.get_language('html'))
		self.textbuffer.set_highlight_syntax(True)
		self.toolbutton_save_html_file = self.gobjects['toolbutton_save_html_file']
		self.textview.connect('populate-popup', self.signal_textview_populate_popup)
		self.textview.connect('key-press-event', self.signal_textview_key_pressed)

		scheme_manager = GtkSource.StyleSchemeManager()
		style_scheme_name = self.config['text_source_theme']
		style_scheme = scheme_manager.get_scheme(style_scheme_name)
		if style_scheme:
			self.textbuffer.set_style_scheme(style_scheme)
		else:
			self.logger.error("invalid GTK source theme: '{0}'".format(style_scheme_name))
		self.file_monitor = None

		source_completion = self.textview.get_completion()
		source_completion.set_property('accelerators', 0)
		source_completion.set_property('auto-complete-delay', 250)
		source_completion.set_property('show-icons', False)
		source_completion.add_provider(completion_providers.HTMLComletionProvider())
		source_completion.add_provider(completion_providers.JinjaEmailCompletionProvider())
コード例 #10
0
    def __init__(self, filediff):
        super().__init__("patch-dialog.ui", "patchdialog")

        self.widget.set_transient_for(filediff.widget.get_toplevel())
        self.filediff = filediff

        buf = GtkSource.Buffer()
        self.textview.set_buffer(buf)
        lang = LanguageManager.get_language_from_mime_type("text/x-diff")
        buf.set_language(lang)
        buf.set_highlight_syntax(True)

        self.textview.modify_font(meldsettings.font)
        self.textview.set_editable(False)

        self.index_map = {
            self.left_radiobutton: (0, 1),
            self.right_radiobutton: (1, 2)
        }
        self.left_patch = True
        self.reverse_patch = self.reverse_checkbutton.get_active()

        if self.filediff.num_panes < 3:
            self.side_selection_label.hide()
            self.side_selection_box.hide()

        meldsettings.connect('changed', self.on_setting_changed)
コード例 #11
0
	def set_auto_completation(self):
		"""
		1)
		Set up a provider that get words from what has already been entered
		in the gtkSource.Buffer that is tied to the GtkSourceView
		2)
		Set up a second buffer that stores the keywords we want to be available
		3)
		Setup an instance of our custome completion class to handle special characters with
		auto complete.
		"""
		# This gets the GtkSourceView completion that's already tied to the GtkSourceView
		# We need it to attached our providers to it
		self.gsv_completion = self.editor.get_completion()

		# 1) Make a new provider, attach it to the main buffer add to view_autocomplete
		self.gsv_autocomplete = GtkSource.CompletionWords.new('main')
		self.gsv_autocomplete.register(self.textbuff)
		self.gsv_completion.add_provider(self.gsv_autocomplete)

		# 2) Make a new buffer, add a str to it, make a provider, add it to the view_autocomplete
		self.keybuff = GtkSource.Buffer()
		self.keybuff.begin_not_undoable_action()
		self.keybuff.set_text(self.keywords)
		self.keybuff.end_not_undoable_action()
		self.gsv_keyword_complete = GtkSource.CompletionWords.new('keyword')
		self.gsv_keyword_complete.register(self.keybuff)
		self.gsv_completion.add_provider(self.gsv_keyword_complete)

		# 3) Set up our custom provider for syntax completion.
		custom_completion_provider = CustomCompletionProvider()
		self.gsv_completion.add_provider(custom_completion_provider)
		self.custom_completion_provider = custom_completion_provider
		return
コード例 #12
0
ファイル: gui.py プロジェクト: vibhas77/indicator-stickynotes
    def build_note(self):
        self.builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(os.path.join(self.path, "StickyNotes.ui"))
        self.builder.connect_signals(self)
        self.winMain = self.builder.get_object("MainWindow")

        # Get necessary objects
        self.winMain.set_name("main-window")
        widgets = [
            "txtNote", "bAdd", "imgAdd", "imgResizeR", "eResizeR", "bLock",
            "imgLock", "imgUnlock", "imgClose", "imgDropdown", "bClose",
            "confirmDelete", "movebox1", "movebox2"
        ]
        for w in widgets:
            setattr(self, w, self.builder.get_object(w))
        self.style_contexts = [
            self.winMain.get_style_context(),
            self.txtNote.get_style_context()
        ]
        # Update window-specific style. Global styles are loaded initially!
        self.update_style()
        self.update_font()
        # Ensure buttons are displayed with images
        settings = Gtk.Settings.get_default()
        settings.props.gtk_button_images = True
        # Set text buffer
        self.bbody = GtkSource.Buffer()
        self.bbody.begin_not_undoable_action()
        self.bbody.set_text(self.note.body)
        self.bbody.set_highlight_matching_brackets(False)
        self.bbody.end_not_undoable_action()
        self.txtNote.set_buffer(self.bbody)
        # Make resize work
        self.winMain.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
        self.eResizeR.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
        # Move Window
        self.winMain.move(*self.note.properties.get("position", (10, 10)))
        self.winMain.resize(*self.note.properties.get("size", (200, 150)))
        # Show the window
        self.winMain.set_skip_pager_hint(True)
        self.winMain.show_all()
        # Mouse over
        self.eResizeR.get_window().set_cursor(
            Gdk.Cursor.new_for_display(
                self.eResizeR.get_window().get_display(),
                Gdk.CursorType.BOTTOM_RIGHT_CORNER))
        # Set locked state
        self.set_locked_state(self.locked)

        # call set_keep_above just to have the note appearing
        # above everything else.
        # without it, it still won't appear above a window
        # in which a cursor is active
        self.winMain.set_keep_above(True)

        # immediately undo the set keep above after the window
        # is shown, so that windows won't stay up if we switch to
        # a different window
        self.winMain.set_keep_above(False)
コード例 #13
0
    def __init__(self, code_type, text=None):
        Gtk.ScrolledWindow.__init__(self)
        self.get_style_context().add_class(code_type)
        self._view = GtkSource.View()
        self.add(self._view)
        text_buffer = GtkSource.Buffer()

        lang_manager = GtkSource.LanguageManager.get_default()
        lang_ids = lang_manager.get_language_ids()
        langs = [lang_manager.get_language(lang_id)
                 for lang_id in lang_ids]
        for lang in langs:
            for m in lang.get_mime_types():
                if m == 'text/' + code_type:
                    text_buffer.set_language(lang)
        text_buffer.set_highlight_syntax(True)

        # "- 2" accounts for the border width
        self.set_size_request(
            int(Gdk.Screen.width() * 0.5) - 2,
            int((Gdk.Screen.height()-style.GRID_CELL_SIZE) * 0.5) - 2)
        self._view.set_buffer(text_buffer)
        self._view.set_editable(True)
        self._view.set_cursor_visible(True)
        self._view.set_wrap_mode(Gtk.WrapMode.CHAR)
        self._view.set_insert_spaces_instead_of_tabs(True)
        self._view.set_tab_width(4)
        self._view.set_can_focus(True)
        self._view.modify_font(Pango.FontDescription('Monospace 14'))

        if text is not None:
            self.set(text)
コード例 #14
0
	def __init__(self,ebeveyn, title = "Talimat Editör"):
		Gtk.Window.__init__(self)
		self.ebeveyn = ebeveyn
		self.degistimi = False
		self.acilan_dosya = ""
		self.kaydirma = Gtk.ScrolledWindow()
		self.kaydirma.set_hexpand(True)
		self.kaydirma.set_vexpand(True)
		self.editor = GtkSource.View()
		self.editor.set_show_line_numbers(1)
		self.editor.set_indent_on_tab(1)
		self.editor.set_tab_width(4)
		self.editor.set_show_line_marks(1)
		self.kaydirma.add(self.editor)
		self.pack_start(self.kaydirma, expand = True, fill = True, padding = 5)
		self.textbuff = GtkSource.Buffer()
		self.textbuff.connect("changed",self.yazi_degisti)
		self.editor.set_buffer(self.textbuff)
		self.lm = GtkSource.LanguageManager()
		self.textbuff.set_language(self.lm.get_language('ini'))

		self.keywords = """
				GtkSourceView
				Completion
			"""
		self.set_auto_completation()
コード例 #15
0
    def get_buffer(self, symtab, filename):
        if filename in self.buffers:
            return self.buffers[filename]

        if not self.lang_manager:
            self.lang_manager = GtkSource.LanguageManager.get_default()

        buff = GtkSource.Buffer()
        if filename:
            buff.set_language(self.lang_manager.guess_language(filename))
        buff.set_style_scheme(gui.params.source_theme.get_scheme())
        buff.begin_not_undoable_action()
        try:
            contents = open(filename).read()
        except:
            return None
        buff.set_text(contents)
        buff.end_not_undoable_action()
        buff.set_modified(False)
        buff.filename = filename

        if symtab is not None:
            gdb.post_event(lambda: self._get_lines_update(buff, symtab))

        self.buffers[filename] = buff
        return buff
コード例 #16
0
    def _create_buffer(self, file_path=None):

        # 支持的语言
        # ada awk boo c c-sharp changelog chdr cpp css d def desktop diff
        # docbook dot dpatch dtd eiffel erlang forth fortran gap gettext-translation
        # gtk-doc gtkrc haddock haskell haskell-literate html idl ini java js latex
        # libtool lua m4 makefile msil nemerle objc objective-caml ocl octave pascal
        # perl php pkgconfig python r rpmspec ruby scheme sh sql tcl texinfo vala vbnet
        # verilog vhdl xml xslt yacc

        manager = GtkSource.LanguageManager()

        src_buffer = GtkSource.Buffer()

        # TODO:以后如果有算法,需要根据内容来判断文件的类型。
        if file_path is not None:
            language = manager.guess_language(file_path, None)  # 设定语法的类型
            src_buffer.set_language(language)
            src_buffer.set_highlight_syntax(True)  # 语法高亮

        #src_buffer.connect("changed", self.on_src_bufer_changed)
        # 可以利用 styleSchemeManager.get_scheme_ids() 得到所有的id
        # ['cobalt', 'kate', 'oblivion', 'solarized-dark', 'solarized-light', 'tango', 'classic']
        styleSchemeManager = GtkSource.StyleSchemeManager.get_default()
        styleScheme = styleSchemeManager.get_scheme("cobalt")
        if styleScheme is not None:
            self.styleScheme = styleScheme  # 不能丢弃
            src_buffer.set_style_scheme(self.styleScheme)

        return src_buffer
コード例 #17
0
    def __init__(self, parent_window=None):

        Gtk.Window.__init__(self)

        self.parent_window = parent_window
        self.set_title("Informe de Introspección")
        self.set_transient_for(self.parent_window)
        self.set_border_width(5)

        self.source = GtkSource.View()
        self.source.set_insert_spaces_instead_of_tabs(True)
        self.source.set_tab_width(4)
        self.source.set_auto_indent(True)
        self.source.set_highlight_current_line(True)
        self.source.set_editable(False)
        self.source.set_border_width(5)
        self.source.set_buffer(GtkSource.Buffer())

        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add(self.source)

        self.resize(w / 3, h - 40)
        self.move(w - w / 3, 40)

        #text = ""
        #_dict = self.infonotebook.introspeccion._dict
        #for key in _dict:
        #    text = "%s\n%s" % (text, _dict[key])
        #source.get_buffer().set_text(text)

        self.add(scroll)
        self.show_all()
コード例 #18
0
ファイル: php_console.py プロジェクト: VxMxPx/php_console
    def make_source(self):
        scheme = GtkSource.StyleSchemeManager()
        scheme.set_search_path()

        language = GtkSource.LanguageManager()

        buffer = GtkSource.Buffer()
        buffer.set_language(language.get_language('php'))
        buffer.set_style_scheme(scheme.get_scheme('tango'))
        buffer.set_highlight_syntax(True)

        font = Pango.FontDescription()
        font.set_family(
            'Droid Sans Mono, DejaVu Sans Mono, Ubuntu Mono, Monospace')
        font.set_absolute_size(11 * Pango.SCALE)

        self.source = GtkSource.View.new_with_buffer(buffer)
        self.source.override_font(font)
        self.source.set_show_line_numbers(True)
        self.source.set_insert_spaces_instead_of_tabs(False)
        self.source.set_auto_indent(True)
        self.source.set_tab_width(4)
        self.source.set_indent_width(4)
        self.source.set_smart_home_end(True)
        self.source.set_highlight_current_line(True)
コード例 #19
0
ファイル: datawidget.py プロジェクト: pranavvyas94/fluidity
    def add_text_view(self):
        scrolledWindow = self.add_scrolled_window()
        self.set_child_packing(self.frame, True, True, 0, gtk.PackType.START)

        buf = gtksource.Buffer()
        lang_manager = gtksource.LanguageManager()
        buf.set_highlight_matching_brackets(True)
        if self.node is not None and self.node.is_code():
            codelanguage = self.node.get_code_language()
            if codelanguage in lang_manager.get_language_ids():
                language = lang_manager.get_language(codelanguage)
            else:
                language = lang_manager.get_language("python")
            buf.set_language(language)
            buf.set_highlight_syntax(True)
        textview = gtksource.View.new_with_buffer(buf)
        textview.set_auto_indent(True)
        textview.set_insert_spaces_instead_of_tabs(True)
        textview.set_tab_width(2)
        if self.node is not None and self.node.is_code():
            textview.set_show_line_numbers(True)
            font_desc = pango.FontDescription("monospace")
            if font_desc:
                textview.modify_font(font_desc)

        textview.set_pixels_above_lines(2)
        textview.set_pixels_below_lines(2)
        textview.set_wrap_mode(gtk.WrapMode.WORD)
        textview.connect("focus-in-event", self.entry_focus_in)

        scrolledWindow.add(textview)
        textview.show()
        return textview
コード例 #20
0
    def __init__(self):
        super().__init__()

        self.document = None

        self.buffer = GtkSource.Buffer()
        self.manager = GtkSource.LanguageManager()
        self.buffer.set_language(self.manager.get_language("markdown"))

        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.font_desc = Pango.FontDescription()
        self.spellchecker = GtkSpell.Checker()

        self.add(self.view)
コード例 #21
0
ファイル: editor.py プロジェクト: DLR-RM/RAFCON
    def new_buffer(self):
        style_scheme_manager = GtkSource.StyleSchemeManager()
        b = GtkSource.Buffer()
        b.set_language(self.language_manager.get_language(self.language))
        b.set_highlight_syntax(True)

        user_editor_style = global_gui_config.get_config_value(
            self.editor_style, "classic")
        if user_editor_style.startswith("rafcon"):
            user_editor_style = "rafcon"
            dark_theme = global_gui_config.get_config_value(
                'THEME_DARK_VARIANT', True)
            if dark_theme:
                user_editor_style = "rafcon-dark"
        if is_custom_design_enabled():
            user_editor_style = global_design_config.get_config_value(
                "SOURCE_VIEW_THEME")
        scheme = style_scheme_manager.get_scheme(user_editor_style)
        if scheme:
            self.style_scheme = scheme
        else:
            logger.debug(
                "The editor style '{}' is not supported. Using the default 'classic'"
                .format(user_editor_style))
            self.style_scheme = style_scheme_manager.get_scheme('classic')
        b.set_style_scheme(self.style_scheme)
        return b
コード例 #22
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')
コード例 #23
0
ファイル: property_renderer.py プロジェクト: cpenny42/dace
    def render_prop(self, prop, value, callback, callback_data, sdfg):
        widget = None
        if prop.dtype == bool and value is not None:
            widget = Gtk.Switch()
            widget.set_active(value)
            widget.connect("state-set", callback, callback_data)
        elif isinstance(prop, dace.properties.CodeProperty):
            buf = GtkSource.Buffer()
            value = prop.to_string(value)
            widget = GtkSource.View.new_with_buffer(buf)
            lang_manager = GtkSource.LanguageManager()
            language = lang_manager.get_language("python")
            buf.set_language(language)
            buf.set_text(value)
            buf.set_highlight_syntax(True)
            buf.connect("changed", callback, callback_data)
        elif prop.enum is not None:
            widget = Gtk.ComboBoxText()

            if isinstance(prop, dace.properties.DataProperty):
                enum = prop.enum(sdfg)
            else:
                enum = prop.enum

            for i, option in enumerate(enum):
                widget.append_text(prop.to_string(option))
                if option == value:
                    widget.set_active(i)
            widget.connect("changed", callback, callback_data)
        else:
            widget = Gtk.Entry()
            widget.set_text(prop.to_string(value))
            widget.connect("changed", callback, callback_data)
        return widget
コード例 #24
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
コード例 #25
0
    def add_tab(self, label=None, buffer_text=None, path=None):
        text_buffer = GtkSource.Buffer()

        lang_manager = GtkSource.LanguageManager.get_default()
        if hasattr(lang_manager, 'list_languages'):
            langs = lang_manager.list_languages()
        else:
            lang_ids = lang_manager.get_language_ids()
            langs = [lang_manager.get_language(lang_id)
                     for lang_id in lang_ids]
        for lang in langs:
            for m in lang.get_mime_types():
                if m == 'text/x-python':
                    text_buffer.set_language(lang)

        if hasattr(text_buffer, 'set_highlight'):
            text_buffer.set_highlight(True)
        else:
            text_buffer.set_highlight_syntax(True)
        if buffer_text:
            text_buffer.set_text(buffer_text)
            text_buffer.set_modified(False)

        text_view = GtkSource.View()
        text_view.set_buffer(text_buffer)
        text_view.set_size_request(0, int(Gdk.Screen.height() * 0.5))
        text_view.set_editable(True)
        text_view.set_cursor_visible(True)
        text_view.set_show_line_numbers(True)
        text_view.set_wrap_mode(Gtk.WrapMode.CHAR)
        text_view.set_insert_spaces_instead_of_tabs(True)
        text_view.set_tab_width(2)
        text_view.set_auto_indent(True)
        text_view.modify_font(
            Pango.FontDescription('Monospace ' +
                                  str(font_zoom(style.FONT_SIZE))))

        codesw = Gtk.ScrolledWindow()
        codesw.set_policy(Gtk.PolicyType.AUTOMATIC,
                          Gtk.PolicyType.AUTOMATIC)
        codesw.add(text_view)
        text_view.show()
        text_view.set_can_focus(True)
        text_view.grab_focus()

        tabdex = self.get_n_pages() + 1
        if label:
            self.tablabel = TabLabel(codesw, label, path, self)
        else:
            self.tablabel = TabLabel(codesw,
                                     _('New Source File %d' % tabdex),
                                     path, self)
        self.tablabel.connect('tab-close', self._tab_closed_cb)
        self.connect('key-press-event', self._key_press_cb)

        codesw.show_all()

        index = self.append_page(codesw, self.tablabel)
        self.props.page = index  # Set new page as active tab
コード例 #26
0
ファイル: repr_textview.py プロジェクト: reynelda86/inguma
    def __init__(self, core, textviews):
        super(ReprTextView, self).__init__(False, 1)

        #################################################################
        # Right Textview
        #################################################################

        self.uicore = core
        self.textviews = textviews

        # Use GtkSourceView to add eye candy :P
        # create buffer
        lm = GtkSource.LanguageManager()
        # Add ui dir to language paths
        paths = lm.get_search_path()
        paths.append(os.path.dirname(__file__) + os.sep + 'data' + os.sep)
        lm.set_search_path(paths)
        self.buffer = GtkSource.Buffer()
        self.buffer.create_tag("green-background",
                               background="green",
                               foreground="black")
        self.buffer.set_data('languages-manager', lm)
        self.view = GtkSource.View(self.buffer)

        # FIXME options must be user selectable (statusbar)
        self.view.set_editable(False)
        self.view.set_highlight_current_line(True)
        # posible values: Gtk.WrapMode.NONE, Gtk.WrapMode.CHAR, Gtk.WrapMode.WORD...
        self.view.set_wrap_mode(Gtk.WrapMode.WORD)

        # setup view
        font_desc = Pango.FontDescription('monospace 9')
        if font_desc:
            self.view.modify_font(font_desc)

        self.buffer.set_highlight_syntax(False)
        manager = self.buffer.get_data('languages-manager')
        language = manager.get_language('asm')
        self.buffer.set_language(language)

        self.mgr = GtkSource.StyleSchemeManager.get_default()

        # Scrolled Window
        self.repr_scrolled_window = Gtk.ScrolledWindow()
        self.repr_scrolled_window.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        self.repr_scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC,
                                             Gtk.PolicyType.AUTOMATIC)
        self.repr_scrolled_window.show()
        # Add Textview to Scrolled Window
        self.repr_scrolled_window.add(self.view)
        self.pack_start(self.repr_scrolled_window, expand=True, fill=True)

        # Create the search widget
        Searchable.__init__(self, self.view, small=True)

        # Used for code navidation on _search function
        self.match_start = None
        self.match_end = None
        self.search_string = ''
コード例 #27
0
 def add_completion(self, header, words_arr):
     keybuff = GtkSource.Buffer()
     keybuff.begin_not_undoable_action()
     keybuff.set_text('\n'.join(words_arr))
     keybuff.end_not_undoable_action()
     autocomplete = GtkSource.CompletionWords.new(header)
     autocomplete.register(keybuff)
     self.custom_completors.append(autocomplete)
コード例 #28
0
    def __init__(self):

        GtkSource.View.__init__(self)

        self.set_buffer(GtkSource.Buffer())
        from gi.repository import Pango
        self.modify_font(Pango.FontDescription('Monospace 10'))
        self.show_all()
コード例 #29
0
ファイル: diffrenderer.py プロジェクト: bwhmather/bedit
    def do_query_tooltip(self, it, area, x, y, tooltip):
        line = it.get_line() + 1

        line_context = self.file_context.get(line, None)
        if line_context is None:
            return False

        # Check that the context is the same not the line this
        # way contexts that span multiple times are handled correctly
        if self.file_context.get(self.tooltip_line, None) is line_context:
            tooltip.set_custom(None)
            tooltip.set_custom(self.tooltip)
            return True

        if line_context.line_type not in (
                DiffType.REMOVED,
                DiffType.MODIFIED,
        ):
            return False

        tooltip_buffer = GtkSource.Buffer()
        tooltip_view = GtkSource.View.new_with_buffer(tooltip_buffer)

        # Propagate the view's settings
        content_view = self.get_view()
        tooltip_view.set_indent_width(content_view.get_indent_width())
        tooltip_view.set_tab_width(content_view.get_tab_width())

        # Propagate the buffer's settings
        content_buffer = content_view.get_buffer()
        tooltip_buffer.set_highlight_syntax(
            content_buffer.get_highlight_syntax())
        tooltip_buffer.set_language(content_buffer.get_language())
        tooltip_buffer.set_style_scheme(content_buffer.get_style_scheme())

        # Fix some styling issues
        tooltip_buffer.set_highlight_matching_brackets(False)
        tooltip_view.set_border_width(4)
        tooltip_view.set_cursor_visible(False)

        # Set the font
        content_style_context = content_view.get_style_context()
        content_font = content_style_context.get_font(Gtk.StateFlags.NORMAL)
        tooltip_view.override_font(content_font)

        # Only add what can be shown, we
        # don't want to add hundreds of lines
        allocation = content_view.get_allocation()
        lines = allocation.height // area.height
        removed = "\n".join(map(str, line_context.removed_lines[:lines]))
        tooltip_buffer.set_text(removed)

        # Avoid having to create the tooltip multiple times
        self.tooltip = tooltip_view
        self.tooltip_line = line

        tooltip.set_custom(tooltip_view)
        return True
コード例 #30
0
    def set_archivo(self, archivo):
        """
        Setea el archivo cuyo codigo debe mostrarse.
        """

        if archivo and archivo != None:
            archivo = os.path.join(archivo.replace("//", "/"))

            if os.path.exists(archivo):
                self.archivo = archivo
                texto_file = open(self.archivo, 'r')
                texto = texto_file.read()
                texto_file.close()

                self.set_buffer(GtkSource.Buffer())
                self.get_buffer().begin_not_undoable_action()
                self.__set_lenguaje(archivo)
                self.get_buffer().set_text(texto)

                nombre = os.path.basename(self.archivo)
                GObject.idle_add(self.__set_label, nombre)

                self.control = os.path.getmtime(self.archivo)

        else:
            self.set_buffer(GtkSource.Buffer())
            self.get_buffer().begin_not_undoable_action()

        self.get_buffer().end_not_undoable_action()
        self.get_buffer().set_modified(False)

        completion = self.get_completion()

        prov_words = GtkSource.CompletionWords.new(None, None)
        prov_words.register(self.get_buffer())

        autocompletado = AutoCompletado(self.get_buffer(), self.archivo, self)
        completion.add_provider(autocompletado)

        completion.set_property("remember-info-visibility", True)
        completion.set_property("select-on-show", True)
        completion.set_property("show-headers", True)
        completion.set_property("show-icons", True)

        self.new_handle(True)