def __init__(self, locals={}, savepath=None, content=None, parent=None): super(CommandShell, self).__init__(content=(content or self.DEFAULT_CONTENT), filename=savepath, parent=parent) self._locals = locals self.__ui_string = """ <ui> <menubar name='Menubar'> <menu action='ToolsMenu'> <menuitem action='Eval'/> <separator/> <menuitem action='Reset'/> </menu> </menubar> </ui> """ actions = [ ('ToolsMenu', None, 'Tools'), ('Eval', None, '_Eval', '<control>Return', 'Evaluate current input', self.__eval_cb), ('Reset', None, '_Reset', None, 'Reset to default content', self.__reset_cb), ] self.__actiongroup = ag = gtk.ActionGroup('ShellActions') ag.add_actions(actions) self._ui.insert_action_group(ag, 1) self._ui.add_ui_from_string(self.__ui_string) if self.gtksourceview_mode: try: import gtksourceview2 pylang = gtksourceview2.language_manager_get_default().get_language('python') except ImportError, e: import gtksourceview pylang = gtksourceview.SourceLanguagesManager().get_language_from_mime_type("text/x-python") self.input.set_highlight(True) self.input.set_language(pylang)
def set_code_mode(self, codemode): if not self.gtksourceview_mode: return # Non-code is the default if not codemode: return self.input_view.modify_font(pango.FontDescription("monospace")) fs = Filesystem.getInstance() try: mimetype = fs.get_file_sync(self.__filename).mimetype except FileStatError as e: mimetype = None target_lang = None if gtksourceview2_avail: import gtksourceview2 langman = gtksourceview2.language_manager_get_default() for language_id in langman.get_language_ids(): language = langman.get_language(language_id) for langmime in language.get_mime_types(): if mimetype == langmime: target_lang = language break if target_lang: break self.input.set_highlight_syntax(True) else: import gtksourceview target_lang = gtksourceview.SourceLanguagesManager( ).get_language_from_mime_type(mimetype) self.input.set_highlight(True) if target_lang: self.input.set_language(target_lang)
def __init__(self, uimanager): gtksourceview.SourceBuffer.__init__(self) lm = gtksourceview.SourceLanguagesManager() lang = lm.get_language_from_mime_type('text/x-python') self.set_language(lang) self.set_highlight(True) self.script_factory = self.factory_mapping['Level2'](True) self._recording = False self._uimanager = uimanager self._addToUIManager()
def __init__(self, filename=None, encoding="utf-8"): gtksourceview.SourceBuffer.__init__(self) binding.Component.__init__(self, None) lm = gtksourceview.SourceLanguagesManager() self.languages_manager = lm language = lm.get_language_from_mime_type("text/x-python") self.set_highlight(True) self.set_language(language) self.search_mark = self.create_mark('search', self.get_start_iter()) self.filename = filename self.encoding = encoding
def __init__(self, locals={}, savepath=None, content=None, parent=None): super(CommandShell, self).__init__(content=(content or self.DEFAULT_CONTENT), filename=savepath, parent=parent) self._locals = locals self.__ui_string = """ <ui> <menubar name='Menubar'> <menu action='ToolsMenu'> <menuitem action='Eval'/> <separator/> <menuitem action='Reset'/> </menu> </menubar> </ui> """ actions = [ ('ToolsMenu', None, 'Tools'), ('Eval', None, '_Eval', '<control>Return', 'Evaluate current input', self.__eval_cb), ('Reset', None, '_Reset', None, 'Reset to default content', self.__reset_cb), ] self.__actiongroup = ag = gtk.ActionGroup('ShellActions') ag.add_actions(actions) self._ui.insert_action_group(ag, 1) self._ui.add_ui_from_string(self.__ui_string) if self.gtksourceview_mode: try: import gtksourceview2 pylang = gtksourceview2.language_manager_get_default( ).get_language('python') except ImportError as e: import gtksourceview pylang = gtksourceview.SourceLanguagesManager( ).get_language_from_mime_type("text/x-python") self.input.set_highlight(True) self.input.set_language(pylang) # Doesn't make sense when we're not backed by a file self._ui.get_action_groups()[0].get_action('Revert').set_sensitive( False) self.input.move_mark_by_name("insert", self.input.get_end_iter()) self.input.move_mark_by_name("selection_bound", self.input.get_end_iter()) self.set_title('Hotwire Command Shell') self.input_view.modify_font(pango.FontDescription("monospace"))
def __init__(self, filename=None, encoding="utf-8"): gtksourceview.SourceBuffer.__init__(self) lm = gtksourceview.SourceLanguagesManager() self.languages_manager = lm language = lm.get_language_from_mime_type("text/x-python") self.set_highlight(True) self.set_language(language) self.filename = filename self.encoding = encoding self.search_component = _SearchMethod(self) self.replace_component = _ReplaceMethod(self)
def _init_gtksourceview1(self): try: import gtksourceview srcbuf = gtksourceview.SourceBuffer() langman = gtksourceview.SourceLanguagesManager() lang = langman.get_language_from_mime_type("text/x-csrc") srcbuf.set_language(lang) srcbuf.set_highlight(True) srcview = gtksourceview.SourceView(srcbuf) srcview.set_show_line_numbers(True) return (1, srcview, srcbuf) except: L.warning('Cannot load gtksourceview 1') return None
def _new_tab(self, f, buff=None): l = [n for n in self.wins if n[1] == f] if len(l) == 0: lm = gtksourceview.SourceLanguagesManager() if buff is None: buff = CulebraBuffer() self.new = True buff.set_data('languages-manager', lm) font_desc = pango.FontDescription('monospace 10') if font_desc: self.editor.modify_font(font_desc) buff.connect('insert-text', self.insert_at_cursor_cb) buff.set_data("save", False) self.editor.set_buffer(buff) self.editor.grab_focus() buff.set_data('filename', f) self.wins.append([buff, f]) self.current_buffer = len(self.wins) - 1
def main(args=[]): # create buffer lm = gtksourceview.SourceLanguagesManager() buffer = gtksourceview.SourceBuffer() buffer.set_data('languages-manager', lm) # parse arguments if len(args) > 2: open_file(buffer, args[1]) else: open_file(buffer, args[0]) # create first window window = create_main_window(buffer) window.set_default_size(500, 500) window.show() # main loop gtk.main()
import gtk from .base import BaseTextView import gtksourceview from pida.services.language import DOCTYPES MAPPINGS = {} LANG_MANAGER = gtksourceview.SourceLanguagesManager() def build_mapping(): global MAPPINGS, LANG_MANAGER for lang in LANG_MANAGER.get_available_languages(): best = DOCTYPES.get_fuzzy(lang.get_name()) if best: MAPPINGS[best.internal] = lang build_mapping() class SourceTextView(BaseTextView, gtksourceview.SourceView): """ Simple gtk.TextView based Field without syntax highlighting """ has_syntax_highlighting = True def __init__(self): buffer_ = gtksourceview.SourceBuffer() gtksourceview.SourceView.__init__(self, buffer_)
class Editor: """Wraps a gtrksourceview widget and adds a few abstraction methods.""" def __init__(self,parent,title=''): self.parent = parent self.logger = logging.getLogger("gvr.Editors.Editor") self.logger.debug("Using gtksourceview version %s" % SRCVIEW) # remove any children from previous sessions for child in self.parent.get_children(): self.parent.remove(child) # Look for the locale to which the syntax highlighting should be set # We assume the locale is available, if not there won't be any higlighting. try: loc = utils.get_locale()[:2] except Exception,info: self.logger.exception("Error in checking locale") loc = '' if loc: mime = 'gvr_%s' % loc else: mime = 'gvr_en' if SRCVIEW == 1: srctagtable = gtksourceview.SourceTagTable() self.srcbuffer = gtksourceview.SourceBuffer(table=srctagtable) man = gtksourceview.SourceLanguagesManager() lang = man.get_language_from_mime_type('text/x-'+mime) self.logger.debug("gtksourceview buffer syntax higlight set to %s" % mime) self.srcbuffer.set_language(lang) self.srcbuffer.set_highlight(True) self.srcview = gtksourceview.SourceView(buffer=self.srcbuffer) self.srcview.set_tabs_width(4) else: self.srcbuffer = gtksourceview2.Buffer() self.srcview = gtksourceview2.View(buffer=self.srcbuffer) man = gtksourceview2.LanguageManager() self.logger.debug("set search path to %s" % utils.GTKSOURCEVIEWPATH) man.set_search_path([utils.GTKSOURCEVIEWPATH]) #man.set_search_path(["/tmp/language-specs"]) #print dir(man) # Horrible hacks, gtksourceview2 on XO differs from Ubuntu :-( # Reminder, if XO changes their gtksourceview2 again it will probably # break GvRng here. # And of course the 767 version changes gtksourceview2 again :-( # You should never change existing programs and leave the original name unchanged. # I commented out the XO bit in case we need it when there's another change. ## if utils.platform == 'XO': ## langs = man.list_languages() ## self.srcbuffer.set_highlight(True) ## for lang in langs: ## for m in lang.get_mime_types(): ## if m == 'text/x-'+mime: ## self.logger.debug("XO gtksourceview buffer syntax higlight set to %s" % lang) ## self.srcbuffer.set_language(lang) ## else: langs = man.get_language_ids() self.srcbuffer.set_highlight_syntax(True) self.logger.debug("Found language files:%s" % langs) for id in langs: if id == mime: self.logger.debug("gtksourceview buffer syntax higlight set to %s" % mime) self.srcbuffer.set_language(man.get_language(id)) break self.srcview.set_tab_width(4) # some methods that are the same on version 1 and 2 self.tag_h = self.srcbuffer.create_tag(background='lightblue') self.srcbuffer.set_max_undo_levels(10) self.srcview.set_show_line_numbers(True) self.srcview.set_insert_spaces_instead_of_tabs(True) #self.srcview.set_wrap_mode(gtk.WRAP_CHAR) self.parent.add(self.srcview) self.parent.show_all() self.old_start_iter = None
def __init__(self, buffer=None): menu_items = [ (_("/_File"), None, None, 0, "<Branch>"), (_("/File/_New"), "<control>N", self.do_new, 0, None), (_("/File/_Open"), "<control>O", self.do_open, 0, None), (_("/File/_Save"), "<control>S", self.do_save, 0, None), (_("/File/Save _As..."), None, self.do_save_as, 0, None), (_("/File/sep1"), None, None, 0, "<Separator>"), (_("/File/_Close"), "<control>W", self.do_close, 0, None), (_("/File/E_xit"), "<control>Q", self.do_exit, 0, None), (_("/_Edit"), None, None, 0, "<Branch>"), (_("/Edit/Undo"), "<control>Z", self.do_undo, 0, None), (_("/Edit/Redo"), "<control><shift>Z", self.do_redo, 0, None), (_("/Edit/sep1"), None, None, 0, "<Separator>"), (_("/Edit/Find..."), "<control>F", self.do_search, 0, None), (_("/_Settings"), None, None, 0, "<Branch>"), (_("/Settings/Wrap _Off"), None, self.do_wrap_changed, gtk.WRAP_NONE, "<RadioItem>"), (_("/Settings/Wrap _Words"), None, self.do_wrap_changed, gtk.WRAP_WORD, _("/Settings/Wrap Off")), (_("/Settings/Wrap _Chars"), None, self.do_wrap_changed, gtk.WRAP_CHAR, _("/Settings/Wrap Off")), (_("/_Run"), None, None, 0, "<Branch>"), (_("/Run/_Run script"), "<control>R", self.run_script, False, None), (_("/Run/sep1"), None, None, 0, "<Separator>"), (_("/Run/Run socket server"), None, self.do_socketserver_changed, True, "<ToggleItem>"), (_("/Run/Show variables window"), None, self.do_varwindow_changed, True, "<ToggleItem>"), (_("/Run/Run fullscreen"), None, self.do_fullscreen_changed, True, "<ToggleItem>"), (_("/_Help"), None, None, 0, "<Branch>"), (_("/Help/_About"), None, self.do_about, 0, None) ] if not buffer: buffer = Buffer() gtk.Window.__init__(self) TestText.views.push(self) buffer.ref() if not TestText.colormap: TestText.colormap = self.get_colormap() self.connect("delete_event", self.delete_event_cb) self.accel_group = gtk.AccelGroup() self.item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", self.accel_group) self.item_factory.set_data("view", self) self.item_factory.create_items(menu_items) self.add_accel_group(self.accel_group) hpaned = gtk.HPaned() vbox = gtk.VBox(False, 0) hpaned.add1(vbox) self.add(hpaned) vbox.pack_start(self.item_factory.get_widget("<main>"), False, False, 0) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.text_view = gtksourceview.SourceView(buffer) self.text_view.set_wrap_mode(gtk.WRAP_WORD) self.text_view.set_show_line_numbers(True) self.text_view.set_auto_indent(True) self.text_view.set_insert_spaces_instead_of_tabs(True) # FIXME: the following 2 lines don't have any effect :/ self.text_view.tab_width = 4 self.text_view.indent_width = 4 self.text_view.connect("expose_event", self.tab_stops_expose) self.bhid = buffer.connect("mark_set", self.cursor_set_callback) if View.FONT is None: # Get font or fallback context = self.text_view.get_pango_context() fonts = context.list_families() for font in fonts: if font.get_name() == 'Bitstream Vera Sans Mono': View.FONT = 'Bitstream Vera Sans Mono 8' break else: print 'Bitstream Vera Font not found.' print 'Download and install it from here' print 'http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/' View.FONT = 'Mono 8' self.text_view.modify_font(pango.FontDescription(View.FONT)) vbox.pack_start(sw, True, True, 0) sw.add(self.text_view) # this creates a console error and output window besides script window self.console_error = ConsoleWindow() # we create an instance for stdout filter self.stdout_filter = Stdout_Filter(self.console_error) # we redirect stderr sys.stderr = self.console_error # stdout is redirected too, but through the filter in order to get different color for text sys.stdout = self.stdout_filter # error-console window is added to container as second child hpaned.add2(self.console_error.text_window) hpaned.set_position(450) # message displayed in console-error window at start, the double true values passed makes it render with system message tag self.console_error.write( _("This is a console window, error messages and script output are shown here,\n you can clear the window selecting and deleting the content\n\n" ), True, True) self.set_default_size(800, 500) self.text_view.grab_focus() self.set_view_title() self.init_menus() # options toggle self.use_varwindow = False self.use_socketserver = False self.go_fullscreen = False # setup syntax highlighting manager = gtksourceview.SourceLanguagesManager() language = manager.get_language_from_mime_type("text/x-python") buffer.set_language(language) buffer.set_highlight(True) self.shoebot_window = None try: self.set_icon_from_file(ICON_FILE) except gobject.GError: # icon not found = no icon pass self.show_all()
class HotEditorWindow(gtk.Window): def __init__(self, filename=None, content=None, title=None, parent=None, autosave=False): gtk.Window.__init__(self, type=gtk.WINDOW_TOPLEVEL) vbox = gtk.VBox() self.add(vbox) self.__ui_string = """ <ui> <menubar name='Menubar'> <menu action='FileMenu'> <menuitem action='Save'/> <menuitem action='SaveAs'/> <separator/> <menuitem action='ReadOnly'/> <separator/> <menuitem action='Revert'/> <separator/> <menuitem action='Close'/> </menu> <menu action='EditMenu'> <menuitem action='Undo'/> <menuitem action='Redo'/> <separator/> <menuitem action='Find'/> <menuitem action='GotoLine'/> </menu> <menu action='ToolsMenu'> <menuitem action='About'/> </menu> </menubar> </ui> """ self.__create_ui() vbox.pack_start(self._ui.get_widget('/Menubar'), expand=False) self.__filename = os.path.abspath(filename) self.__autosave = autosave self.__modified = False self.__last_len = 0 self.__save_text_id = 0 self.gtksourceview_mode = gtksourceview_avail if gtksourceview_avail: self.input = SourceBuffer() self.input_view = SourceView(self.input) if gtksourceview2_avail: self.input.connect('notify::can-undo', lambda *args: self.__sync_undoredo()) self.input.connect('notify::can-redo', lambda *args: self.__sync_undoredo()) else: self.input.connect('can-undo', lambda *args: self.__sync_undoredo()) self.input.connect('can-redo', lambda *args: self.__sync_undoredo()) else: self.input = gtk.TextBuffer() self.input_view = gtk.TextView(self.input) self.input_view.set_wrap_mode(gtk.WRAP_WORD) self.input_view.connect("key-press-event", self.__handle_key_press_event) scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) scroll.add(self.input_view) vbox.pack_start(scroll, True, True) if filename and os.path.isfile(self.__filename): _logger.debug("reading %s", self.__filename) f = open_text_file(self.__filename, 'r') self.__original_text = f.read() else: self.__original_text = content if self.__original_text: if gtksourceview_avail: self.input.begin_not_undoable_action() self.input.set_property('text', self.__original_text) self.__last_len = self.input.get_char_count() if gtksourceview_avail: self.input.end_not_undoable_action() self.input.move_mark_by_name('insert', self.input.get_start_iter()) self.input.move_mark_by_name('selection_bound', self.input.get_start_iter()) self.input.connect('mark-set', self.__on_mark_set) self.__searcharea = InlineSearchArea(self.input_view) self.__searcharea.connect('close', self.__on_search_close) self.__searcharea.show_all() self.__searcharea.hide() self.__searcharea.set_no_show_all(True) vbox.pack_start(self.__searcharea, expand=False) self.__status_hbox = gtk.HBox() self.__statusbar = gtk.Statusbar() self.__status_hbox.pack_start(self.__statusbar, expand=True) self.__statusbar_ctx = self.__statusbar.get_context_id("HotEditor") self.__pos_status = gtk.Statusbar() self.__pos_status.set_size_request(160, 10) # Taken from GEdit self.__pos_context = self.__pos_status.get_context_id("HotEditor") self.__status_hbox.pack_start(self.__pos_status, expand=False) vbox.pack_start(self.__status_hbox, expand=False) self.__sync_undoredo() self.__sync_modified_sensitivity() self.input.connect("changed", self.__handle_text_changed) self.connect("delete-event", self.__handle_delete_event) self.__sync_title() if parent: self.set_transient_for(parent) self.set_size_request(800, 600) def __on_search_close(self, sa): self.__searcharea.hide() def set_read_only(self, readonly): readonly_toggle = self.__actiongroup.get_action('ReadOnly') readonly_toggle.set_active(readonly) def set_code_mode(self, codemode): if not self.gtksourceview_mode: return # Non-code is the default if not codemode: return self.input_view.modify_font(pango.FontDescription("monospace")) fs = Filesystem.getInstance() try: mimetype = fs.get_file_sync(self.__filename).mimetype except FileStatError, e: mimetype = None target_lang = None if gtksourceview2_avail: import gtksourceview2 langman = gtksourceview2.language_manager_get_default() for language_id in langman.get_language_ids(): language = langman.get_language(language_id) for langmime in language.get_mime_types(): if mimetype == langmime: target_lang = language break if target_lang: break self.input.set_highlight_syntax(True) else: import gtksourceview target_lang = gtksourceview.SourceLanguagesManager( ).get_language_from_mime_type(mimetype) self.input.set_highlight(True) if target_lang: self.input.set_language(target_lang)
def __init__(self, plugin=None, quit_cb=None): gtk.EventBox.__init__(self) self.search_string = None self.last_search_iter = None self.completion_win = None self.insert_string = None self.cursor_iter = None self.plugin = plugin self.wins = [] self.current_word = "" self.wl = [] self.ac_w = None self.set_size_request(470, 300) self.connect("delete_event", self.file_exit) self.quit_cb = quit_cb self.vbox = gtk.VBox() self.add(self.vbox) self.vbox.show() self.menubar, self.toolbar = self.create_menu() hdlbox = gtk.HandleBox() self.vbox.pack_start(hdlbox, expand=False) hdlbox.show() hdlbox.add(self.menubar) self.menubar.show() hdlbox = gtk.HandleBox() self.vbox.pack_start(hdlbox, expand=False) hdlbox.show() hdlbox.add(self.toolbar) self.toolbar.show() self.vpaned = gtk.VPaned() self.vbox.pack_start(self.vpaned, expand=True, fill=True) self.vpaned.show() self.vbox1 = gtk.VBox() self.vpaned.add1(self.vbox1) self.vbox.show() self.vbox1.show() self.hpaned = gtk.HPaned() self.vbox1.pack_start(self.hpaned, True, True) self.hpaned.set_border_width(5) self.hpaned.show() # the gtksourceview lm = gtksourceview.SourceLanguagesManager() buff = CulebraBuffer() self.new = True buff.set_data('languages-manager', lm) # self.editor = gtksourceview.SourceView(buff) self.editor = CulebraView(buff) self.plugin.pida.mainwindow.connect('delete-event', self.file_exit) font_desc = pango.FontDescription('monospace 10') if font_desc: self.editor.modify_font(font_desc) buff.connect('insert-text', self.insert_at_cursor_cb) buff.set_data("save", False) manager = buff.get_data('languages-manager') language = manager.get_language_from_mime_type("text/x-python") buff.set_highlight(True) buff.set_language(language) scrolledwin2 = gtk.ScrolledWindow() scrolledwin2.add(self.editor) self.editor.set_auto_indent(True) self.editor.set_show_line_numbers(True) self.editor.set_show_line_markers(True) self.editor.set_tabs_width(4) self.editor.connect('key-press-event', self.text_key_press_event_cb) self.editor.connect('move-cursor', self.move_cursor) self.editor.set_margin(80) self.editor.set_show_margin(True) self.editor.set_smart_home_end(True) self.editor.set_highlight_current_line(True) scrolledwin2.show() self.editor.show() self.editor.grab_focus() buff.set_data('filename', "untitled.py") self.wins.append([buff, "untitled.py"]) self.current_buffer = 0 self.hpaned.add2(scrolledwin2) self.hpaned.set_position(200) self.dirty = 0 self.clipboard = gtk.Clipboard(selection='CLIPBOARD') self.dirname = "." # sorry, ugly self.filetypes = {} return