def update_textview_options(self): c = self.app.config buf = self.get_buffer() if c.get('editor.wrap_text'): if c.get('editor.wrap_split'): self.set_wrap_mode(gtk.WRAP_CHAR) else: self.set_wrap_mode(gtk.WRAP_WORD) else: self.set_wrap_mode(gtk.WRAP_NONE) self.set_show_line_numbers(c.get('editor.display_line_numbers')) self.set_highlight_current_line(c.get('editor.highlight_current_line')) self.set_insert_spaces_instead_of_tabs(c.get('editor.insert_spaces')) self.set_auto_indent(c.get('editor.auto_indent')) if c.get('editor.default_font'): if HAVE_GCONF: client = gconf.client_get_default() default_font = '/desktop/gnome/interface/monospace_font_name' font = client.get_string(default_font) else: font = 'Monospace 10' else: font = c.get('editor.font') self.modify_font(pango.FontDescription(font)) self.set_show_right_margin(c.get('editor.right_margin')) self.set_right_margin_position(c.get('editor.right_margin_position')) buf.set_highlight_matching_brackets(c.get('editor.bracket_matching')) self.set_tab_width(c.get('editor.tabs_width')) sm = gtksourceview2.style_scheme_manager_get_default() scheme = sm.get_scheme(c.get('editor.scheme')) buf.set_style_scheme(scheme)
def _get_gedit_style_scheme_manager(self): """Return a gtksourceview2.StyleSchemeManager imitating Gedit's.""" LOGGER.log() scheme_manager = gtksourceview2.style_scheme_manager_get_default() gedit_styles_path = os.path.expanduser('~/.gnome2/gedit/styles') scheme_manager.append_search_path(gedit_styles_path) return scheme_manager
def init_buffer(full_filename): buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: buffer.set_style_scheme(style_scheme) f = gio.File(os.path.abspath(full_filename)) path = f.get_path() info = f.query_info("*") mime_type = info.get_content_type() language = None if mime_type: language = get_language_for_mime_type(mime_type) if not language: print 'No language found for mime type "%s"' % mime_type else: print 'Couldn\'t get mime type for file "%s"' % full_filename buffer.set_language(language) buffer.set_highlight_syntax(True) f = open(full_filename, "r") buffer.set_text(f.read()) f.close() return buffer
def __init__(self, prefs): BuilderAware.__init__(self, join_to_file_dir(__file__, 'editor_prefs.glade')) self.activator = shortcuts.ShortcutActivator(self.window) self.activator.bind('Escape', self.hide) self.prefs = prefs self.original_prefs = prefs.copy() self.langs.append(('default', )) lm = gtksourceview2.language_manager_get_default() for lang_id in sorted(lm.get_language_ids()): self.langs.append((lang_id, )) sm = gtksourceview2.style_scheme_manager_get_default() for style_id in sm.get_scheme_ids(): self.styles.append((style_id, )) self.checks = ['use-tabs', 'show-right-margin', 'show-line-numbers', 'wrap-text', 'highlight-current-line', 'show-whitespace', 'remove-trailing-space'] for name in self.checks: getattr(self, name.replace('-', '_')).connect( 'toggled', self.on_checkbox_toggled, name) self.margin_width.connect('value-changed', self.on_spin_changed, 'right-margin') self.tab_width.connect('value-changed', self.on_spin_changed, 'tab-width') self.line_spacing.connect('value-changed', self.on_spin_changed, 'line-spacing') self.font.connect('font-set', self.on_font_set, 'font') for h in on_dialog_created_hooks: h(self)
def __init__(self): gtk.VBox.__init__(self) self._b = gtksourceview.Buffer() style_scheme = gtksourceview.style_scheme_manager_get_default().get_scheme('classic') if style_scheme: self._b.set_style_scheme(style_scheme) self._b.set_language(gtksourceview.language_manager_get_default().get_language("cpp")) self._b.set_highlight_syntax(True) #self._b.connect('mark-set', move_cursor_cb, view) #self._b.connect('changed', update_cursor_position, view) self._v = gtksourceview.View(self._b) self._v.set_show_line_numbers(True) #self._v.set_show_line_marks(action.get_active()) #self._v.set_show_right_margin(action.get_active()) #self._v.set_auto_indent(action.get_active()) #self._v.set_insert_spaces_instead_of_tabs(action.get_active()) #self._v.set_tab_width(action.get_current_value()) #self._v.connect('button-press-event', button_press_cb) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_IN) self.pack_start(sw, True, True, 0) sw.add(self._v) # setup view font_desc = pango.FontDescription('monospace') if font_desc: self._v.modify_font(font_desc)
def __init__(self, core, textviews): super(StringsTextView,self).__init__(False, 1) ################################################################# # Right Textview ################################################################# self.uicore = core self.textviews = textviews self.press_coords = [] # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.View(self.buffer) self.view.connect("button-press-event", self._get_press) self.view.connect("button-release-event", self._get_release) # FIXME options must be user selectable (statusbar) self.view.set_editable(False) self.view.set_highlight_current_line(True) # posible values: gtk.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_NONE) # setup view font_desc = pango.FontDescription('monospace 9') if font_desc: self.view.modify_font(font_desc) self.buffer.set_highlight_syntax(True) manager = self.buffer.get_data('languages-manager') language = manager.get_language('asm') self.buffer.set_language(language) self.mgr = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.strings_scrolled_window = gtk.ScrolledWindow() self.strings_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.strings_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.strings_scrolled_window.show() # Add Textview to Scrolled Window self.strings_scrolled_window.add(self.view) self.pack_start(self.strings_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 = ''
def __init__(self): gtksourceview.View.__init__(self) self._current_line = None self._current_source = None buffer = gtksourceview.Buffer() php_lang = _get_language_for_mime_type('application/x-php') if php_lang: buffer.set_language(php_lang) buffer.set_highlight_syntax(True) buffer.set_highlight_matching_brackets(False) config = Config.get_instance() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme(config['style_scheme']) if style_scheme: buffer.set_style_scheme(style_scheme) self.set_show_line_numbers(True) self.set_show_line_marks(True) self.set_editable(False) self.set_cursor_visible(False) self.set_buffer(buffer) self._set_font() self._add_tags() self._add_marks()
def __init__(self): gtk.VBox.__init__(self) self._b = gtksourceview.Buffer() style_scheme = gtksourceview.style_scheme_manager_get_default( ).get_scheme('classic') if style_scheme: self._b.set_style_scheme(style_scheme) self._b.set_language( gtksourceview.language_manager_get_default().get_language("cpp")) self._b.set_highlight_syntax(True) #self._b.connect('mark-set', move_cursor_cb, view) #self._b.connect('changed', update_cursor_position, view) self._v = gtksourceview.View(self._b) self._v.set_show_line_numbers(True) #self._v.set_show_line_marks(action.get_active()) #self._v.set_show_right_margin(action.get_active()) #self._v.set_auto_indent(action.get_active()) #self._v.set_insert_spaces_instead_of_tabs(action.get_active()) #self._v.set_tab_width(action.get_current_value()) #self._v.connect('button-press-event', button_press_cb) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_IN) self.pack_start(sw, True, True, 0) sw.add(self._v) # setup view font_desc = pango.FontDescription('monospace') if font_desc: self._v.modify_font(font_desc)
def update_textview_options(self): c = self.app.config buf = self.get_buffer() if c.get('editor.wrap_text'): if c.get('editor.wrap_split'): self.set_wrap_mode(gtk.WRAP_CHAR) else: self.set_wrap_mode(gtk.WRAP_WORD) else: self.set_wrap_mode(gtk.WRAP_NONE) self.set_show_line_numbers(c.get('editor.display_line_numbers')) self.set_highlight_current_line(c.get('editor.highlight_current_line')) self.set_insert_spaces_instead_of_tabs(c.get('editor.insert_spaces')) self.set_auto_indent(c.get('editor.auto_indent')) if c.get('editor.default_font'): if HAVE_GCONF: client = gconf.client_get_default() default_font = '/desktop/gnome/interface/monospace_font_name' font = client.get_string(default_font) else: font = 'Monospace 10' else: font = c.get('editor.font') self.modify_font(pango.FontDescription(font)) self.set_show_right_margin(c.get('editor.right_margin')) self.set_right_margin_position(c.get('editor.right_margin_position')) buf.set_highlight_matching_brackets(c.get('editor.bracket_matching')) self.set_tab_width(c.get('editor.tabs_width')) sm = gtksourceview2.style_scheme_manager_get_default() scheme = sm.get_scheme(c.get('editor.scheme')) buf.set_style_scheme(scheme)
def setupBuffer (buffer, langName, styleNames): if GTKSV: sm = gtksv.style_scheme_manager_get_default() if styleNames != None: for styleName in styleNames: style = sm.get_scheme(styleName) if style != None: break else: style = None else: style = sm.get_scheme('classic') if Trace: if style != None: print 'style-scheme:', style.get_name() else: print 'no style-scheme' buffer.set_property("style-scheme", style) if langName != None: lm = gtksv.language_manager_get_default() lang = lm.get_language(langName) else: lang = None if Trace: if lang != None: print 'language:', lang.get_name() else: print 'no language' buffer.set_property("language", lang)
def __init__(self, session): self.buffers = [] self.windows = [] self.session = session self.style_manager = gtksourceview2.style_scheme_manager_get_default() self.lang_manager = gtksourceview2.language_manager_get_default() self.modify_lang_search_path(self.lang_manager) self.activator = keymap.get_activator(config_section='editor_window') self.activator.add_context('manager', (), lambda: self) self.activator.bind_menu('_File#1') self.activator.bind_menu('_Edit#10') self.activator.bind_menu('_Prefs#15/_Global#90') self.activator.bind_menu('Prefs/_Session') self.activator.bind_menu('Prefs/_Project') self.activator.bind_menu('_View#20') self.activator.bind_menu('Too_ls#30') self.activator.bind_menu('_Run#40') self.activator.bind_menu('_Tab#90') self.activator.bind_menu('_Window#100') self.activator.bind('manager', 'quit', 'File/_Quit#100', EditorManager.quit).to('<ctrl>q') self.activator.bind('window', 'plugin-list', 'Prefs/Pl_ugins#10', snaked.core.plugins.show_plugins_prefs) self.activator.alias(('window', 'activator'), 'root-menu', 'Prefs/_Root menu#100') self.plugin_manager = PluginManager(self.activator) self.init_conf() self.default_ctx_processor = ContextProcessor(join_to_settings_dir('snaked', 'contexts.conf')) self.session_ctx_processor = ContextProcessor( join_to_settings_dir('snaked', self.session, 'contexts')) self.ctx_managers = {} self.escape_stack = [] self.escape_map = {} self.on_quit = [] # Init core plugins self.plugin_manager.add_plugin(prefs) self.plugin_manager.add_plugin(snaked.core.quick_open) self.plugin_manager.add_plugin(snaked.core.editor_list) self.plugin_manager.add_plugin(snaked.core.titler) self.plugin_manager.add_plugin(snaked.core.console) self.plugin_manager.add_plugin(snaked.core.spot) self.plugin_manager.add_plugin(snaked.core.monitor) self.plugin_manager.add_plugin(snaked.core.completer) self.spot_manager = snaked.core.spot.Manager() self.plugin_manager.ready('manager', self) self.plugin_manager.add_plugin(snaked.core.window) snaked.core.plugins.init_plugins(self.plugin_manager)
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 = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.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.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_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 = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.repr_scrolled_window = gtk.ScrolledWindow() self.repr_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.repr_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_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 = ''
def _get_gedit_style_scheme_manager(self): """Return a gtksourceview2.StyleSchemeManager imitating Gedit's.""" LOGGER.log() scheme_manager = gtksourceview2.style_scheme_manager_get_default() gedit_styles_path = os.path.expanduser('~/.gnome2/gedit/styles') gedit_styles_path = os.path.expanduser('~/.config/pluma/styles') scheme_manager.append_search_path(gedit_styles_path) return scheme_manager
def getViewAndSetBuffer(self): """Prepare le gtkSourceview2 """ self.buffer = gsv.Buffer() mgr = gsv.style_scheme_manager_get_default() #style_scheme = mgr.get_scheme('oblivion') style_scheme = mgr.get_scheme('tango') if style_scheme: self.buffer.set_style_scheme(style_scheme) gsl = self.get_language_for_mime_type("text/x-tex") self.buffer.set_language(gsl) self.buffer.set_highlight_syntax(True) self.view = gsv.View(self.buffer)
def __init__(self, session): self.editors = [] self.session = session self.style_manager = gtksourceview2.style_scheme_manager_get_default() self.lang_manager = gtksourceview2.language_manager_get_default() self.modify_lang_search_path(self.lang_manager) self.on_quit = [] self.plugin_manager = PluginManager() prefs.register_dialog('Plugins', self.plugin_manager.show_plugins_prefs, 'plugin', 'extension') prefs.register_dialog('Key configuration', self.show_key_preferences, 'key', 'bind', 'shortcut') prefs.register_dialog('Editor settings', self.show_editor_preferences, 'editor', 'font', 'style', 'margin', 'line', 'tab', 'whitespace') prefs.register_dialog('Global preferences', self.show_global_preferences, 'snaked', 'preferences') prefs.register_dialog('Session preferences', self.show_session_preferences, 'session', 'preferences') prefs.register_dialog('File types', self.edit_contexts, 'file', 'type', 'association') self.snaked_conf = config.SnakedConf() self.load_conf() self.escape_stack = [] self.escape_map = {} self.spot_history = [] self.context_processors = {} self.lang_contexts = {} self.ctx_contexts = {} load_shortcuts() self.register_app_shortcuts() # Init core plugins self.plugin_manager.load_core_plugin(snaked.core.quick_open) self.plugin_manager.load_core_plugin(snaked.core.titler) self.plugin_manager.load_core_plugin(snaked.core.editor_list) add_context_setter('lang', self.set_lang_context) add_context_setter('ctx', self.set_ctx_context)
def main(exploit=''): # create buffer buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() # Set theme ftom config theme style_scheme = mgr.get_scheme(theme) if style_scheme: buffer.set_style_scheme(style_scheme) if exploit != '': open_file(buffer, exploit) # create first window window = create_main_window(buffer) window.set_default_size(800, 600) window.set_position(gtk.WIN_POS_CENTER) window.set_title('Inguma module editor - ' + exploit) window.show()
def main(exploit=''): # create buffer buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() # Set theme ftom config theme style_scheme = mgr.get_scheme(theme) if style_scheme: buffer.set_style_scheme(style_scheme) if exploit != '': open_file(buffer, exploit) # create first window window = create_main_window(buffer) window.set_default_size(800, 600) window.set_position(gtk.WIN_POS_CENTER) window.set_title('Inguma module editor - ' + exploit) window.show()
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file("openmv-ide.glade") sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.set_text(ex_source) sourceview.set_buffer(self.buffer) self.terminal = self.builder.get_object('terminal') self.fd = os.open("/dev/ttyACM0", os.O_RDWR) self.terminal.set_size(80,24) self.terminal.set_pty(self.fd) self.framebuffer = self.builder.get_object("framebuffer_image") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # init openmv openmv.init() #connect signals signals = { "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_top_window_destroy" : self.quit, "on_motion_notify": self.motion_notify, "on_button_press": self.button_pressed } self.builder.connect_signals(signals) self.window = self.builder.get_object("top_window")
def main(args=[]): # create buffer buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: buffer.set_style_scheme(style_scheme) # 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()
def main(args = []): # create buffer buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: buffer.set_style_scheme(style_scheme) # 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()
def init_syntax(self): text_buffer = self.get_buffer() lang_manager = gtksourceview2.language_manager_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) mgr = gtksourceview2.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('oblivion') self.get_buffer().set_style_scheme(style_scheme)
def init_syntax(self): text_buffer = self.get_buffer() lang_manager = gtksourceview2.language_manager_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) mgr = gtksourceview2.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('oblivion') self.get_buffer().set_style_scheme(style_scheme)
def _setup_editor(self): model = gtk.ListStore(int, str, gtk.gdk.Pixbuf) iconview = self.builder.get_object("editor_iconview") iconview.set_model(model) iconview.set_text_column(1) iconview.set_pixbuf_column(2) def get_pb(stock): return self.app.load_icon(stock, 36, gtk.ICON_LOOKUP_FORCE_SVG) model.append([0, _(u"General"), get_pb("gtk-execute")]) model.append([1, _(u"View"), get_pb("gtk-justify-left")]) model.append([2, _(u"Editor"), get_pb("gtk-edit")]) model.append([3, _(u"Fonts & Colors"), get_pb("gtk-font")]) model.append([4, _(u'Keyboard\nShortcuts'), get_pb('preferences-desktop-keyboard-shortcuts')]) iconview.connect("selection-changed", self.on_editor_selection_changed) schemes = self.builder.get_object("editor_schemes") model = gtk.ListStore(str, str) model.set_sort_column_id(1, gtk.SORT_ASCENDING) schemes.set_model(model) col = gtk.TreeViewColumn("", gtk.CellRendererText(), markup=1) schemes.append_column(col) import gtksourceview2 sm = gtksourceview2.style_scheme_manager_get_default() selected = None for id in sm.get_scheme_ids(): scheme = sm.get_scheme(id) lbl = "<b>%s</b>" % scheme.get_name() if scheme.get_description(): lbl += "\n"+scheme.get_description() iter = model.append(None) model.set(iter, 0, id, 1, lbl) if id == self.app.config.get("editor.scheme"): selected = iter sel = schemes.get_selection() sel.select_iter(selected) sel.connect("changed", self.on_editor_option_changed) sel.set_data("config_option", "editor.scheme")
def __init__(self): builder = gtk.Builder() builder.add_from_file('gui.glade') builder.connect_signals(self) self.window = builder.get_object('window') self.toolbutton_run = builder.get_object('toolbutton_run') self.toolbutton_abort = builder.get_object('toolbutton_abort') self.main_notebook = builder.get_object('main_notebook') self.left_notebook = builder.get_object('left_notebook') self.templates_menu_item = builder.get_object('imagemenuitem_new_template') submenu = self.create_templates_menu() self.templates_menu_item.set_submenu(submenu) self.textbuffer_script = gtksourceview2.Buffer() lm = gtksourceview2.LanguageManager() lang = lm.get_language('python') self.textbuffer_script.set_highlight_syntax(True) self.textbuffer_script.set_language(lang) #syntax_loader = SyntaxLoader('python') #self.textbuffer_script = CodeBuffer(None, syntax_loader) self.textbuffer_script.connect('delete-range', self.on_textbuffer_script_delete_range) self.textbuffer_script.connect('insert-text', self.on_textbuffer_script_insert_text) self.source_view = gtksourceview2.View(self.textbuffer_script) self.source_view.set_auto_indent(True) self.source_view.set_indent_on_tab(True) self.source_view.set_indent_width(2) self.source_view.set_insert_spaces_instead_of_tabs(True) self.source_view.set_show_line_numbers(True) self.source_view.set_smart_home_end(True) self.source_view.set_show_line_marks(True) scheme = gtksourceview2.style_scheme_manager_get_default().get_scheme( 'tango') self.textbuffer_script.set_style_scheme(scheme) self.source_view.set_show_line_marks(True) font_desc = pango.FontDescription('monospace 10') if font_desc: self.source_view.modify_font(font_desc) #self.source_view = gtk.TextView(self.textbuffer_script) self.source_view.set_size_request(500, -1) scrolled_win = gtk.ScrolledWindow() scrolled_win.show() scrolled_win.add(self.source_view) self.source_view.show() self.left_notebook.append_page(scrolled_win, gtk.Label('Code')) scrolled_win_control_box = gtk.ScrolledWindow() scrolled_win_control_box.show() self.left_notebook.append_page(scrolled_win_control_box, gtk.Label('Controls')) self.left_notebook.show_all() self.control_box_manager = ControlBoxManager(scrolled_win_control_box) self.control_box_manager.add_widget('Welcome! Use File->New from template to start a new project.', gtk.Label()) self.left_notebook.set_current_page(1) self.script = Script() self.script.text_inserted += self.on_script_text_inserted self.script.range_deleted += self.on_script_range_deleted # configuer logging for the application: logging.getLogger('').setLevel(logging.DEBUG) self.textview_log = builder.get_object('textview_log') self.gui_handler = TextViewHandler(self.textview_log) stream_handler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(levelname)s - %(message)s") self.gui_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) # Not adding by default (see view->show logs) #logging.getLogger('').addHandler(gui_handler) logging.getLogger('').addHandler(stream_handler) self.file_manager = FileManager(self.script) self.file_manager.current_file_changed += self.on_current_file_changed self.file_manager.need_save_changed += self.on_need_save_changed # TODO(daniv): These are ugly hacks to pervent raising events when the # is not the user. self.ignore_next_on_textbuffer_script_delete_range = False self.ignore_next_on_textbuffer_script_insert_text = False self.space_manager = SpaceManager(self.main_notebook) self.changer_manager = ParameterChangerManager(self.script) self.script_server = ScriptServer(self.changer_manager) self.script_server.script_started += self.on_script_started self.script_server.script_ended += self.on_script_ended global services services.init(self.space_manager, self.changer_manager, self.script_server, self.window.get_toplevel(), self.control_box_manager, self.textview_log) self._updateWindowTitle()
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(GLADE_PATH) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # set buttons self.save_button = self.builder.get_object('save_file_toolbutton') self.connect_button = self.builder.get_object('connect_button') self.exec_button = self.builder.get_object('exec_button') self.stop_button = self.builder.get_object('stop_button') self.fwupdate_button = self.builder.get_object('bootloader_button') self.save_button.set_sensitive(False) self.exec_button.set_sensitive(False) self.stop_button.set_sensitive(False) self.connect_button.set_sensitive(True) # set control buttons self.controls = [ self.builder.get_object('reset_button'), self.builder.get_object('bootloader_button'), self.builder.get_object('exec_button'), self.builder.get_object('zoomin_button'), self.builder.get_object('zoomout_button'), self.builder.get_object('bestfit_button'), self.builder.get_object('refresh_button') ] self.connected = False map(lambda x: x.set_sensitive(False), self.controls) # Disable dfu button on Windows if platform.system() == "Windows": self.controls.pop(1) # gtksourceview widget sourceview = gtksourceview.View() lang_manager = gtksourceview.language_manager_get_default() style_manager = gtksourceview.style_scheme_manager_get_default() # append cwd to style search paths style_manager.set_search_path( style_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/styles")]) # append cwd to language search paths lang_manager.set_search_path( lang_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/language-specs")]) # configure gtksourceview widget sourceview.set_show_line_numbers(True) sourceview.set_tab_width(4) sourceview.set_indent_on_tab(True) sourceview.set_insert_spaces_instead_of_tabs(True) sourceview.set_auto_indent(True) sourceview.set_highlight_current_line(True) # configure gtksourceview buffer self.buffer = gtksourceview.Buffer() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) sourceview.set_buffer(self.buffer) self.builder.get_object("src_scrolledwindow").add(sourceview) # Configure terminal window self.terminal_scroll = self.builder.get_object('vte_scrolledwindow') self.terminal = self.builder.get_object('vte_textview') self.terminal.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) self.terminal.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('green')) # get drawingarea self.fb = None self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.sel_ended = False self.selection_started = False self.x1 = self.y1 = self.x2 = self.y2 = 0 # set control scales attributes self.builder.get_object("contrast_adjust").attr = openmv.ATTR_CONTRAST self.builder.get_object( "brightness_adjust").attr = openmv.ATTR_BRIGHTNESS self.builder.get_object( "saturation_adjust").attr = openmv.ATTR_SATURATION self.builder.get_object( "gainceiling_adjust").attr = openmv.ATTR_GAINCEILING #connect signals signals = { "on_top_window_destroy": self.quit, "on_connect_clicked": self.connect_clicked, "on_reset_clicked": self.reset_clicked, "on_fwupdate_clicked": self.fwupdate_clicked, "on_fwpath_clicked": self.fwpath_clicked, "on_execute_clicked": self.execute_clicked, "on_stop_clicked": self.stop_clicked, "on_motion_notify": self.motion_notify, "on_button_press": self.button_pressed, "on_button_release": self.button_released, "on_open_file": self.open_file, "on_new_file": self.new_file, "on_save_file": self.save_file, "on_save_file_as": self.save_file_as, "on_about_dialog": self.about_dialog, "on_pinout_dialog": self.pinout_dialog, "on_save_template_activate": self.save_template, "on_save_descriptor_activate": self.save_descriptor, "on_ctrl_scale_value_changed": self.on_ctrl_scale_value_changed, "on_zoomin_clicked": self.zoomin_clicked, "on_zoomout_clicked": self.zoomout_clicked, "on_bestfit_clicked": self.bestfit_clicked, "on_preferences_clicked": self.preferences_clicked, "on_updatefb_clicked": self.updatefb_clicked, "on_vte_size_allocate": self.scroll_terminal, } self.builder.connect_signals(signals) # create data directory if not os.path.isdir(DATA_DIR): os.makedirs(DATA_DIR) # create user scripts directory if not os.path.isdir(SCRIPTS_DIR): os.makedirs(SCRIPTS_DIR) # create fresh config if needed if not os.path.isfile(CONFIG_PATH): try: with open(CONFIG_PATH, "w") as f: f.write(DEFAULT_CONFIG) except Exception as e: print("Failed to create config file %s" % (e)) sys.exit(1) # load config self.config = configparser.ConfigParser() try: self.config.read(CONFIG_PATH) except Exception as e: print("Failed to open config file %s" % (e)) sys.exit(1) # current file path self.file_path = None self.fw_file_path = "" path = self.config.get("main", "last_fw_path") if os.path.isfile(path): self.fw_file_path = path # built-in examples menu submenu = gtk.Menu() menu = self.builder.get_object('example_menu') files = sorted(os.listdir(EXAMPLES_DIR)) for f in files: if f.endswith(".py"): label = os.path.basename(f) mitem = gtk.MenuItem(label, use_underline=False) mitem.connect("activate", self.open_example, EXAMPLES_DIR) submenu.append(mitem) menu.set_submenu(submenu) # recent files menu self.files = [] files = self.config.get("main", "recent") if files: self.files = files.split(',') self.update_recent_files() self.baudrate = int(self.config.get("main", "baudrate")) # load helloworld.py self._load_file(os.path.join(EXAMPLES_DIR, "helloworld.py")) self.save_button.set_sensitive(False)
def __init_attributes(self, editor): self.__editor = editor from gtksourceview2 import style_scheme_manager_get_default self.__manager = style_scheme_manager_get_default() return
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file("openmv-ide.glade") # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") #save toolbutton self.save_button = self.builder.get_object('save_file_toolbutton') self.save_button.set_sensitive(False) #configure gtksourceview sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) # open last opened file if os.path.isfile(config_path): with open(config_path, "r") as file: self.file_path = file.read() if os.path.isfile(self.file_path): with open(self.file_path, "r") as file: self.buffer.set_text(file.read()) self.window.set_title(os.path.basename(self.file_path)) else: self.file_path = None sourceview.set_buffer(self.buffer) # open VCP and configure the terminal self.terminal = self.builder.get_object('terminal') self.fd = os.open("/dev/ttyACM0", os.O_RDWR) self.terminal.set_size(80, 24) self.terminal.set_pty(self.fd) self.framebuffer = self.builder.get_object("framebuffer_image") #connect signals signals = { "on_top_window_destroy": self.quit, "on_execute_clicked": self.execute_clicked, "on_stop_clicked": self.stop_clicked, "on_motion_notify": self.motion_notify, "on_button_press": self.button_pressed, "on_open_file": self.open_file, "on_save_file": self.save_file, "on_save_file_as": self.save_file_as, } self.builder.connect_signals(signals) # init openmv openmv.init()
def __init_attributes(self, editor): self.__editor = editor from gtksourceview2 import style_scheme_manager_get_default self.__manager = style_scheme_manager_get_default() return
def __init__(self, core, textviews, main): super(RightTextView,self).__init__(False, 1) ################################################################# # Right Textview ################################################################# self.uicore = core self.main = main self.textviews = textviews self.seek_index = 0 self.seeks = [] self.marks = [] self.press_coords = [] ################################################# # Move buttons self.move_buttons = self.create_seek_buttons() self.pack_start(self.move_buttons, False, False, 1) self.hbox = gtk.HBox(False, 0) # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.View(self.buffer) self.view.connect("button-press-event", self._get_press) self.view.connect("button-release-event", self._get_release) self.view.connect("key-release-event", self._cursor_moved) tooltip_handle = self.view.connect('motion-notify-event', self.call_tooltip) # FIXME options must be user selectable (statusbar) self.view.set_editable(False) self.view.set_highlight_current_line(True) # posible values: gtk.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_NONE) # setup view font_desc = pango.FontDescription('monospace 9') if font_desc: self.view.modify_font(font_desc) self.buffer.set_highlight_syntax(True) manager = self.buffer.get_data('languages-manager') if "ARM" in self.uicore.info.machine or "Thumb" in self.uicore.info.machine: language = manager.get_language('arm-asm') else: language = manager.get_language('asm') self.buffer.set_language(language) self.mgr = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.right_scrolled_window = gtk.ScrolledWindow() self.right_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.right_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.right_scrolled_window.show() # Add Textview to Scrolled Window self.right_scrolled_window.add(self.view) self.hbox.pack_start(self.right_scrolled_window, expand=True, fill=True) self.pack_start(self.hbox, expand=True, fill=True) # Create the search widget Searchable.__init__(self, self.view, small=True) self.high_word = HighWord(self.view) # Used for code navigation on _search function self.match_start = None self.match_end = None self.search_string = '' self.view.connect("populate-popup", self._populate_comments_menu)
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(ui_path) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") #save toolbutton self.save_button = self.builder.get_object('save_file_toolbutton') self.save_button.set_sensitive(False) #configure gtksourceview sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) # open last opened file if os.path.isfile(config_path): with open(config_path, "r") as file: self.file_path = file.read() if os.path.isfile(self.file_path): with open(self.file_path, "r") as file: self.buffer.set_text(file.read()) self.window.set_title(os.path.basename(self.file_path)) else: self.file_path = None sourceview.set_buffer(self.buffer) # open VCP and configure the terminal self.terminal = self.builder.get_object('terminal') self.fd = os.open("/dev/ttyACM0", os.O_RDWR) self.terminal.set_size(80, 24) self.terminal.set_pty(self.fd) # get drawingarea self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.x1 = 0 self.y1 = 0 self.x2 = 0 self.y2 = 0 self.selection_started = False self.sel_ended = False # set control scales attributes self.builder.get_object("contrast_adjust").attr = openmv.ATTR_CONTRAST self.builder.get_object( "brightness_adjust").attr = openmv.ATTR_BRIGHTNESS self.builder.get_object( "saturation_adjust").attr = openmv.ATTR_SATURATION self.builder.get_object( "gainceiling_adjust").attr = openmv.ATTR_GAINCEILING #connect signals signals = { "on_top_window_destroy": self.quit, "on_execute_clicked": self.execute_clicked, "on_stop_clicked": self.stop_clicked, "on_motion_notify": self.motion_notify, "on_button_press": self.button_pressed, "on_button_release": self.button_released, "on_open_file": self.open_file, "on_save_file": self.save_file, "on_save_file_as": self.save_file_as, "on_save_template_activate": self.save_template, "on_ctrl_scale_value_changed": self.on_ctrl_scale_value_changed, } self.builder.connect_signals(signals) # init openmv openmv.init() # interrupt any running code openmv.stop_script() sleep(0.1)
def __init__(self): builder = gtk.Builder() builder.add_from_file('gui.glade') builder.connect_signals(self) self.window = builder.get_object('window') self.toolbutton_run = builder.get_object('toolbutton_run') self.toolbutton_abort = builder.get_object('toolbutton_abort') self.main_notebook = builder.get_object('main_notebook') self.left_notebook = builder.get_object('left_notebook') self.templates_menu_item = builder.get_object( 'imagemenuitem_new_template') submenu = self.create_templates_menu() self.templates_menu_item.set_submenu(submenu) self.textbuffer_script = gtksourceview2.Buffer() lm = gtksourceview2.LanguageManager() lang = lm.get_language('python') self.textbuffer_script.set_highlight_syntax(True) self.textbuffer_script.set_language(lang) #syntax_loader = SyntaxLoader('python') #self.textbuffer_script = CodeBuffer(None, syntax_loader) self.textbuffer_script.connect('delete-range', self.on_textbuffer_script_delete_range) self.textbuffer_script.connect('insert-text', self.on_textbuffer_script_insert_text) self.source_view = gtksourceview2.View(self.textbuffer_script) self.source_view.set_auto_indent(True) self.source_view.set_indent_on_tab(True) self.source_view.set_indent_width(2) self.source_view.set_insert_spaces_instead_of_tabs(True) self.source_view.set_show_line_numbers(True) self.source_view.set_smart_home_end(True) self.source_view.set_show_line_marks(True) scheme = gtksourceview2.style_scheme_manager_get_default().get_scheme( 'tango') self.textbuffer_script.set_style_scheme(scheme) self.source_view.set_show_line_marks(True) font_desc = pango.FontDescription('monospace 10') if font_desc: self.source_view.modify_font(font_desc) #self.source_view = gtk.TextView(self.textbuffer_script) self.source_view.set_size_request(500, -1) scrolled_win = gtk.ScrolledWindow() scrolled_win.show() scrolled_win.add(self.source_view) self.source_view.show() self.left_notebook.append_page(scrolled_win, gtk.Label('Code')) scrolled_win_control_box = gtk.ScrolledWindow() scrolled_win_control_box.show() self.left_notebook.append_page(scrolled_win_control_box, gtk.Label('Controls')) self.left_notebook.show_all() self.control_box_manager = ControlBoxManager(scrolled_win_control_box) self.control_box_manager.add_widget( 'Welcome! Use File->New from template to start a new project.', gtk.Label()) self.left_notebook.set_current_page(1) self.script = Script() self.script.text_inserted += self.on_script_text_inserted self.script.range_deleted += self.on_script_range_deleted # configuer logging for the application: logging.getLogger('').setLevel(logging.DEBUG) self.textview_log = builder.get_object('textview_log') self.gui_handler = TextViewHandler(self.textview_log) stream_handler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(levelname)s - %(message)s") self.gui_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) # Not adding by default (see view->show logs) #logging.getLogger('').addHandler(gui_handler) logging.getLogger('').addHandler(stream_handler) self.file_manager = FileManager(self.script) self.file_manager.current_file_changed += self.on_current_file_changed self.file_manager.need_save_changed += self.on_need_save_changed # TODO(daniv): These are ugly hacks to pervent raising events when the # is not the user. self.ignore_next_on_textbuffer_script_delete_range = False self.ignore_next_on_textbuffer_script_insert_text = False self.space_manager = SpaceManager(self.main_notebook) self.changer_manager = ParameterChangerManager(self.script) self.script_server = ScriptServer(self.changer_manager) self.script_server.script_started += self.on_script_started self.script_server.script_ended += self.on_script_ended global services services.init(self.space_manager, self.changer_manager, self.script_server, self.window.get_toplevel(), self.control_box_manager, self.textview_log) self._updateWindowTitle()
## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software Foundation, ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. """Module with documents management classes.""" import glib import gtk import pango import gtksourceview2 as gtksv from . import tabwrapper from ..utils import texparser STYLEM = gtksv.style_scheme_manager_get_default() #------------------------------------------------------------------------------ class Document(tabwrapper.TabWrapper): """Class for documents managing. Includes notebook tabs and edit zone.""" def __init__(self, app, file, **args): # User interface hp = gtk.HPaned() tabwrapper.TabWrapper.__init__(self, app, hp) self.ev = EditView() hp.pack1(self.ev, True, False) self.type_id = "doc_text" self.clipb = gtk.clipboard_get()
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file("openmv-ide.glade") # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") #save toolbutton self.save_button = self.builder.get_object('save_file_toolbutton') self.save_button.set_sensitive(False) #configure gtksourceview sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) # open last opened file if os.path.isfile(config_path): with open(config_path, "r") as file: self.file_path = file.read() if os.path.isfile(self.file_path): with open(self.file_path, "r") as file: self.buffer.set_text(file.read()) self.window.set_title(os.path.basename(self.file_path)) else: self.file_path = None sourceview.set_buffer(self.buffer) # open VCP and configure the terminal self.terminal = self.builder.get_object('terminal') self.fd = os.open("/dev/ttyACM0", os.O_RDWR) self.terminal.set_size(80,24) self.terminal.set_pty(self.fd) self.framebuffer = self.builder.get_object("framebuffer_image") #connect signals signals = { "on_top_window_destroy" : self.quit, "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_motion_notify" : self.motion_notify, "on_button_press" : self.button_pressed, "on_open_file" : self.open_file, "on_save_file" : self.save_file, "on_save_file_as" : self.save_file_as, } self.builder.connect_signals(signals) # init openmv openmv.init()
def build_interface(self): """Build the graphical interface.""" maindir = self.app.prefm.get_pref('system_maindir') # Widgets loading self.builder = gtk.Builder() self.builder.set_translation_domain(None) self.builder.add_from_file(os.path.join(maindir, "main.glade")) self.set_builder_names() self.builder.connect_signals(self) # Main window self.win = self.builder.get_object('window') self.win.set_transient_for(None) img, sizes = os.path.join(maindir,"euphorbia.svg"), [16,24,32,48,64] icons = (gtk.gdk.pixbuf_new_from_file_at_size(img,s,s) for s in sizes) self.win.set_icon_list(*icons) # Side panel hp = self.builder.get_object('hpaned_main') hp.get_child1().destroy() hp.pack1(sidepanel.EuphorbiaSidePanel(self.app, self), False, True) hp.get_child1().showpanel = lambda x: self.do_showpanel(x, 'side') bp = self.builder.get_object('bottompanel') bp.showpanel = lambda x: self.do_showpanel(x, 'bottom') # UI Manager self.uim = gtk.UIManager() # Accels accg = self.uim.get_accel_group() self.win.add_accel_group(accg) # Actions (actions.ActionsManager.actgrp) self.uim.insert_action_group(self.actgrp, 0) # Interface self.uim.add_ui_from_file(os.path.join(maindir, "main-ui.xml")) menu = self.uim.get_widget("/menu_main") self.builder.get_object('vbox_main').pack_start(menu, False, True) self.builder.get_object('vbox_main').reorder_child(menu, 0) toolbar = self.uim.get_widget("/toolbar_main") self.autobuild_tooltips(toolbar) self.builder.get_object('handlebox_main').add(toolbar) # Documents notebook self.nbd = self.builder.get_object('notebook_docs') if hasattr(self.nbd, 'set_action_widget'): # REQ ptgtk-2.22 ba = gtk.Button() ba.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_MENU)) ba.set_relief(gtk.RELIEF_NONE) ba.set_focus_on_click(False) ba.connect('clicked', self.act_new) af = gtk.AspectFrame(obey_child=False) af.set_shadow_type(gtk.SHADOW_NONE) af.add(ba) self.nbd.set_action_widget(af, gtk.PACK_END) af.show_all() # Statusbar self.status = self.builder.get_object('statusbar') self.locmsg = gtk.Label() statusbox = self.status.get_children()[0].get_children()[0] statusbox.pack_start(self.locmsg, False, True) self.locmsg.show_all() # Searchbar sb = searchbar.SearchBar(self.app, accg) self.autobuild_tooltips(sb) self.builder.get_object('vbox_docs').pack_start(sb, False, True) self.searchb = sb # Output textviews self.outlogs = outlogview.OutputLogsView(self.app, self.builder) # Sourceview styles ssm = gtksv.style_scheme_manager_get_default() s = [(ssm.get_scheme(id).get_name(),id) for id in ssm.get_scheme_ids()] self.app.prefm.set_pref_values('editview_style', dict(s)) return
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(GLADE_PATH) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # set buttons self.save_button = self.builder.get_object('save_file_toolbutton') self.connect_button = self.builder.get_object('connect_button') self.save_button.set_sensitive(False) self.connect_button.set_sensitive(True) # set control buttons self.controls = [ self.builder.get_object('reset_button'), self.builder.get_object('bootloader_button'), self.builder.get_object('exec_button'), self.builder.get_object('stop_button'), self.builder.get_object('zoomin_button'), self.builder.get_object('zoomout_button'), self.builder.get_object('bestfit_button'), self.builder.get_object('refresh_button')] self.connected = False map(lambda x:x.set_sensitive(False), self.controls) # Disable dfu button on Windows if platform.system() == "Windows": self.controls.pop(1) # gtksourceview widget sourceview = gtksourceview.View() lang_manager = gtksourceview.language_manager_get_default() style_manager = gtksourceview.style_scheme_manager_get_default() # append cwd to style search paths style_manager.set_search_path(style_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/styles")]) # append cwd to language search paths lang_manager.set_search_path(lang_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/language-specs")]) # configure gtksourceview widget sourceview.set_show_line_numbers(True) sourceview.set_tab_width(4) sourceview.set_indent_on_tab(True) sourceview.set_insert_spaces_instead_of_tabs(True) sourceview.set_auto_indent(True) sourceview.set_highlight_current_line(True) # configure gtksourceview buffer self.buffer = gtksourceview.Buffer() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) sourceview.set_buffer(self.buffer) self.builder.get_object("src_scrolledwindow").add(sourceview) # Configure terminal window self.terminal_scroll = self.builder.get_object('vte_scrolledwindow') self.terminal = self.builder.get_object('vte_textview') self.terminal.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) self.terminal.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('green')) # get drawingarea self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.sel_ended=False self.selection_started=False self.x1 = self.y1 = self.x2 = self.y2 =0 # set control scales attributes self.builder.get_object("contrast_adjust").attr= openmv.ATTR_CONTRAST self.builder.get_object("brightness_adjust").attr= openmv.ATTR_BRIGHTNESS self.builder.get_object("saturation_adjust").attr= openmv.ATTR_SATURATION self.builder.get_object("gainceiling_adjust").attr= openmv.ATTR_GAINCEILING #connect signals signals = { "on_top_window_destroy" : self.quit, "on_connect_clicked" : self.connect_clicked, "on_reset_clicked" : self.reset_clicked, "on_fwupdate_clicked" : self.fwupdate_clicked, "on_fwpath_clicked" : self.fwpath_clicked, "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_motion_notify" : self.motion_notify, "on_button_press" : self.button_pressed, "on_button_release" : self.button_released, "on_open_file" : self.open_file, "on_new_file" : self.new_file, "on_save_file" : self.save_file, "on_save_file_as" : self.save_file_as, "on_save_template_activate" : self.save_template, "on_save_descriptor_activate" : self.save_descriptor, "on_ctrl_scale_value_changed" : self.on_ctrl_scale_value_changed, "on_zoomin_clicked" : self.zoomin_clicked, "on_zoomout_clicked" : self.zoomout_clicked, "on_bestfit_clicked" : self.bestfit_clicked, "on_preferences_clicked" : self.preferences_clicked, "on_updatefb_clicked" : self.updatefb_clicked, "on_vte_size_allocate" : self.scroll_terminal, } self.builder.connect_signals(signals) # create data directory if not os.path.isdir(DATA_DIR): os.makedirs(DATA_DIR) # create user scripts directory if not os.path.isdir(SCRIPTS_DIR): os.makedirs(SCRIPTS_DIR) # create fresh config if needed if not os.path.isfile(CONFIG_PATH): try: with open(CONFIG_PATH, "w") as f: f.write(DEFAULT_CONFIG) except Exception as e: print ("Failed to create config file %s"%(e)) sys.exit(1) # load config self.config = configparser.ConfigParser() try: self.config.read(CONFIG_PATH) except Exception as e: print ("Failed to open config file %s"%(e)) sys.exit(1) # current file path self.file_path= None self.fw_file_path="" path = self.config.get("main", "last_fw_path") if os.path.isfile(path): self.fw_file_path = path # built-in examples menu submenu = gtk.Menu() menu = self.builder.get_object('example_menu') files = sorted(os.listdir(EXAMPLES_DIR)) for f in files: if f.endswith(".py"): label = os.path.basename(f) mitem = gtk.MenuItem(label, use_underline=False) mitem.connect("activate", self.open_example, EXAMPLES_DIR) submenu.append(mitem) menu.set_submenu(submenu) # recent files menu self.files = [] files =self.config.get("main", "recent") if files: self.files = files.split(',') self.update_recent_files() self.baudrate = int(self.config.get("main", "baudrate")) # load helloworld.py self._load_file(os.path.join(EXAMPLES_DIR, "helloworld.py"))
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(GLADE_PATH) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # set buttons self.save_button = self.builder.get_object('save_file_toolbutton') self.connect_button = self.builder.get_object('connect_button') self.save_button.set_sensitive(False) self.connect_button.set_sensitive(True) # set control buttons self.controls = [ self.builder.get_object('reset_button'), self.builder.get_object('bootloader_button'), self.builder.get_object('exec_button'), self.builder.get_object('stop_button'), self.builder.get_object('zoomin_button'), self.builder.get_object('zoomout_button'), self.builder.get_object('bestfit_button'), self.builder.get_object('refresh_button')] self.connected = False map(lambda x:x.set_sensitive(False), self.controls) #configure gtksourceview sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) sourceview.set_buffer(self.buffer) #configure the terminal self.fd = -1 self.terminal = self.builder.get_object('terminal') self.terminal.set_size(80,24) # get drawingarea self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.sel_ended=False self.selection_started=False self.x1 = self.y1 = self.x2 = self.y2 =0 # set control scales attributes self.builder.get_object("contrast_adjust").attr= openmv.ATTR_CONTRAST self.builder.get_object("brightness_adjust").attr= openmv.ATTR_BRIGHTNESS self.builder.get_object("saturation_adjust").attr= openmv.ATTR_SATURATION self.builder.get_object("gainceiling_adjust").attr= openmv.ATTR_GAINCEILING #connect signals signals = { "on_top_window_destroy" : self.quit, "on_connect_clicked" : self.connect_clicked, "on_reset_clicked" : self.reset_clicked, "on_fwupdate_clicked" : self.fwupdate_clicked, "on_fwpath_clicked" : self.fwpath_clicked, "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_motion_notify" : self.motion_notify, "on_button_press" : self.button_pressed, "on_button_release" : self.button_released, "on_open_file" : self.open_file, "on_new_file" : self.new_file, "on_save_file" : self.save_file, "on_save_file_as" : self.save_file_as, "on_save_template_activate" : self.save_template, "on_save_descriptor_activate" : self.save_descriptor, "on_ctrl_scale_value_changed" : self.on_ctrl_scale_value_changed, "on_zoomin_clicked" : self.zoomin_clicked, "on_zoomout_clicked" : self.zoomout_clicked, "on_bestfit_clicked" : self.bestfit_clicked, "on_updatefb_clicked" : self.updatefb_clicked, } self.builder.connect_signals(signals) # create fresh config if needed if not os.path.isfile(CONFIG_PATH): try: with open(CONFIG_PATH, "w") as f: f.write(DEFAULT_CONFIG) except Exception as e: print ("Failed to create config file %s"%(e)) sys.exit(1) # load config self.config = configparser.ConfigParser() try: self.config.read(CONFIG_PATH) except Exception as e: print ("Failed to open config file %s"%(e)) sys.exit(1) # current file path self.file_path= None self.fw_file_path="" # path = self.config.get("main", "last_opened_file") # if os.path.isfile(path): # self._load_file(path) # built-in examples menu if os.path.isdir(EXAMPLE_PATH): submenu = gtk.Menu() menu = self.builder.get_object('example_menu') files = sorted(os.listdir(EXAMPLE_PATH)) for f in files: if f.endswith(".py"): label = os.path.basename(f) mitem = gtk.MenuItem(label) mitem.connect("activate", self.open_example, EXAMPLE_PATH) submenu.append(mitem) menu.set_submenu(submenu) # recent files menu self.files = [] files =self.config.get("main", "recent") if files: self.files = files.split(',') self.update_recent_files()
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(ui_path) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") #save toolbutton self.save_button = self.builder.get_object('save_file_toolbutton') self.save_button.set_sensitive(False) #configure gtksourceview sourceview = self.builder.get_object('gtksourceview') self.buffer = gtksourceview.Buffer() mgr = gtksourceview.style_scheme_manager_get_default() style_scheme = mgr.get_scheme('classic') if style_scheme: self.buffer.set_style_scheme(style_scheme) lang_manager = gtksourceview.language_manager_get_default() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) # open last opened file if os.path.isfile(config_path): with open(config_path, "r") as file: self.file_path = file.read() if os.path.isfile(self.file_path): with open(self.file_path, "r") as file: self.buffer.set_text(file.read()) self.window.set_title(os.path.basename(self.file_path)) else: self.file_path = None sourceview.set_buffer(self.buffer) # open VCP and configure the terminal self.terminal = self.builder.get_object('terminal') self.fd = os.open("/dev/ttyACM0", os.O_RDWR) self.terminal.set_size(80,24) self.terminal.set_pty(self.fd) # get drawingarea self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.x1 =0 self.y1 =0 self.x2 =0 self.y2 =0 self.selection_started=False self.sel_ended=False # set control scales attributes self.builder.get_object("contrast_adjust").attr= openmv.ATTR_CONTRAST self.builder.get_object("brightness_adjust").attr= openmv.ATTR_BRIGHTNESS self.builder.get_object("saturation_adjust").attr= openmv.ATTR_SATURATION self.builder.get_object("gainceiling_adjust").attr= openmv.ATTR_GAINCEILING #connect signals signals = { "on_top_window_destroy" : self.quit, "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_motion_notify" : self.motion_notify, "on_button_press" : self.button_pressed, "on_button_release" : self.button_released, "on_open_file" : self.open_file, "on_save_file" : self.save_file, "on_save_file_as" : self.save_file_as, "on_save_template_activate" : self.save_template, "on_ctrl_scale_value_changed" : self.on_ctrl_scale_value_changed, } self.builder.connect_signals(signals) # init openmv openmv.init() # interrupt any running code openmv.stop_script() sleep(0.1)
def __init__(self, uicore): super(ConsoleTextView,self).__init__(False, 1) self.uicore = uicore ################################################################# # Interactive Right Textview ################################################################# # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.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.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_NONE) self.view.connect("populate-popup", self._populate_menu) # 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 = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.console_scrolled_window = gtk.ScrolledWindow() self.console_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.console_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.console_scrolled_window.show() # Add Textview to Scrolled Window self.console_scrolled_window.add(self.view) self.pack_start(self.console_scrolled_window, True, True, 0) #Always on bottom on change self.vajd = self.console_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.console_scrolled_window: self.rescroll(a,s)) # Comand line entry self.exec_entry = gtk.Entry(100) self.exec_entry.set_icon_from_stock(1, gtk.STOCK_EXECUTE) self.exec_entry.set_icon_tooltip_text(1, 'Execute') self.exec_entry.set_text('Radare console: type ? for help') self.exec_entry.connect("activate", self.r2_exec) self.exec_entry.connect("icon-press", self.r2_exec) self.exec_entry.connect('focus-in-event', self._clean, 'in') self.exec_entry.connect('focus-out-event', self._clean, 'out') self.pack_end(self.exec_entry, False, True, 0)
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(GLADE_PATH) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # set buttons self.save_button = self.builder.get_object('save_file_toolbutton') self.connect_button = self.builder.get_object('connect_button') self.exec_button = self.builder.get_object('exec_button') self.stop_button = self.builder.get_object('stop_button') self.save_button.set_sensitive(False) self.exec_button.set_sensitive(False) self.stop_button.set_sensitive(False) self.connect_button.set_sensitive(True) # set control buttons self.controls = [ self.builder.get_object('reset_button'), self.builder.get_object('exec_button'), self.builder.get_object('zoomin_button'), self.builder.get_object('zoomout_button'), self.builder.get_object('bestfit_button') ] self.connected = False map(lambda x: x.set_sensitive(False), self.controls) # gtksourceview widget sourceview = gtksourceview.View() lang_manager = gtksourceview.language_manager_get_default() style_manager = gtksourceview.style_scheme_manager_get_default() # append cwd to style search paths style_manager.set_search_path( style_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/styles")]) # append cwd to language search paths lang_manager.set_search_path( lang_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/language-specs")]) # configure gtksourceview widget sourceview.set_show_line_numbers(True) sourceview.set_tab_width(4) sourceview.set_indent_on_tab(True) sourceview.set_insert_spaces_instead_of_tabs(True) sourceview.set_auto_indent(True) sourceview.set_highlight_current_line(True) fonts = [] for font in sourceview.get_pango_context().list_families(): fonts.append(font.get_name().lower()) if sys.platform.startswith("win"): if "consolas" in fonts: sourceview.modify_font(pango.FontDescription("consolas 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) elif sys.platform.startswith("darwin"): if "monaco" in fonts: sourceview.modify_font(pango.FontDescription("monaco 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) elif sys.platform.startswith("linux"): if "dejavu sans mono" in fonts: sourceview.modify_font( pango.FontDescription("dejavu sans mono 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) # configure gtksourceview buffer self.buffer = gtksourceview.Buffer() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) sourceview.set_buffer(self.buffer) self.builder.get_object("src_scrolledwindow").add(sourceview) # Configure terminal window self.terminal_scroll = self.builder.get_object('vte_scrolledwindow') self.terminal = self.builder.get_object('vte_textview') self.terminal.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) self.terminal.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('green')) # get drawingarea self.fb = None self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") self.fb_enabled = True # selection coords self.sel_ended = False self.selection_started = False self.x1 = self.y1 = self.x2 = self.y2 = 0 # set control scales attributes self.builder.get_object("contrast_adjust").attr = openmv.ATTR_CONTRAST self.builder.get_object( "brightness_adjust").attr = openmv.ATTR_BRIGHTNESS self.builder.get_object( "saturation_adjust").attr = openmv.ATTR_SATURATION self.builder.get_object( "gainceiling_adjust").attr = openmv.ATTR_GAINCEILING # create data directory if not os.path.isdir(DATA_DIR): os.makedirs(DATA_DIR) # create user scripts directory if not os.path.isdir(SCRIPTS_DIR): os.makedirs(SCRIPTS_DIR) # set config parser self.config = configparser.ConfigParser() config_valid = True # check if config file exists if os.path.isfile(CONFIG_PATH): try: # load config self.config.read(CONFIG_PATH) except Exception as e: print("Failed to open config file %s" % (e)) sys.exit(1) # Check config keys, if one is missing set invalid for key in CONFIG_KEYS: if not self.config.has_option('main', key): config_valid = False break else: config_valid = False # create fresh config if needed if config_valid == False: try: with open(CONFIG_PATH, "w") as f: f.write(DEFAULT_CONFIG) except Exception as e: print("Failed to create config file %s" % (e)) sys.exit(1) # load or reload the config file try: self.config.read(CONFIG_PATH) except Exception as e: print("Failed to open config file %s" % (e)) sys.exit(1) # Current file path self.file_path = None # Built-in examples menu submenu = gtk.Menu() for root, dirs, files in os.walk(EXAMPLES_DIR, topdown=True): for dirname in sorted(dirs): smenu = gtk.Menu() path = os.path.join(root, dirname) for f in os.listdir(path): if f.endswith(".py"): label = os.path.basename(f) mitem = gtk.MenuItem(label, use_underline=False) mitem.connect("activate", self.open_example, path) smenu.append(mitem) menu = gtk.MenuItem(dirname) menu.set_submenu(smenu) submenu.append(menu) menu = self.builder.get_object('example_menu') menu.set_submenu(submenu) # recent files menu self.files = [] files = self.config.get("main", "recent") if files: self.files = files.split(',') self.update_recent_files() self.baudrate = int(self.config.get("main", "baudrate")) # Set firmware version self.fw_version = (0, 0, 0) # load helloworld.py self._load_file( os.path.join(EXAMPLES_DIR, "01-Basics", "helloworld.py")) self.save_button.set_sensitive(False) #connect signals signals = { "on_top_window_destroy": self.quit, "on_connect_clicked": self.connect_clicked, "on_reset_clicked": self.reset_clicked, "on_execute_clicked": self.execute_clicked, "on_stop_clicked": self.stop_clicked, "on_bootloader_clicked": self.bootloader_clicked, "on_enable_fb_toggled": self.enable_fb_toggled, "on_motion_notify": self.motion_notify, "on_button_press": self.button_pressed, "on_button_release": self.button_released, "on_open_file": self.open_file, "on_new_file": self.new_file, "on_save_file": self.save_file, "on_save_file_as": self.save_file_as, "on_about_dialog": self.about_dialog, "on_pinout_dialog": self.pinout_dialog, "on_color_stats_activate": self.color_stats, "on_save_template_activate": self.save_template, "on_save_descriptor_activate": self.save_descriptor, "on_ctrl_scale_value_changed": self.on_ctrl_scale_value_changed, "on_zoomin_clicked": self.zoomin_clicked, "on_zoomout_clicked": self.zoomout_clicked, "on_bestfit_clicked": self.bestfit_clicked, "on_preferences_clicked": self.preferences_clicked, "on_vte_size_allocate": self.scroll_terminal, } self.builder.connect_signals(signals) # Create bootloader object self.bootloader = Bootloader(self.builder, self.config)
def __init__(self, uicore): super(InteractiveTextView,self).__init__(False, 1) self.uicore = uicore ################################################################# # Interactive Right Textview ################################################################# # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.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.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_NONE) # setup view font_desc = pango.FontDescription('monospace 9') if font_desc: self.view.modify_font(font_desc) self.buffer.set_highlight_syntax(True) manager = self.buffer.get_data('languages-manager') language = manager.get_language('asm') self.buffer.set_language(language) self.mgr = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.interactive_scrolled_window = gtk.ScrolledWindow() self.interactive_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.interactive_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.interactive_scrolled_window.show() # Add Textview to Scrolled Window self.interactive_scrolled_window.add(self.view) self.pack_start(self.interactive_scrolled_window, expand=True, fill=True) #Always on bottom on change self.vajd = self.interactive_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.interactive_scrolled_window: self.rescroll(a,s)) # Key bindings self.key_1 = gtk.gdk.keyval_from_name("1") self.key_2 = gtk.gdk.keyval_from_name("2") self.key_3 = gtk.gdk.keyval_from_name("3") self.key_4 = gtk.gdk.keyval_from_name("4") self.key_5 = gtk.gdk.keyval_from_name("5") self.key_6 = gtk.gdk.keyval_from_name("6") self.key_7 = gtk.gdk.keyval_from_name("7") self.key_8 = gtk.gdk.keyval_from_name("8") self.key_9 = gtk.gdk.keyval_from_name("9") self.key_b = gtk.gdk.keyval_from_name("b") self.key_f = gtk.gdk.keyval_from_name("f") # signals self.view.connect("key-press-event", self._key) # Interactive buttons self.interactive_buttons = interactive_buttons.InteractiveButtons(self.uicore, self.buffer) self.pack_end(self.interactive_buttons, expand=False, fill=True)
def __init__(self, uicore): super(PythonTextView,self).__init__(False, 1) self.uicore = uicore # Set local objects to be accessed from the terminal self.exprloc = {} self.exprloc['core'] = self.uicore.core self.exprloc['bin'] = self.uicore.bin self.exprloc['info'] = self.uicore.info self.exprloc['baddr'] = self.uicore.baddr self.exprloc['size'] = self.uicore.size self.exprloc['strings'] = self.uicore.allstrings self.exprloc['relocs'] = self.uicore.allrelocs self.exprloc['functions'] = self.uicore.allfuncs self.exprloc['sections'] = self.uicore.allsections self.exprloc['imports'] = self.uicore.allimports self.exprloc['symbols'] = self.uicore.allexports self.exprloc['file_info'] = self.uicore.fileinfo self.exprloc['magic'] = self.uicore.ars_magica self.py_hb = gtk.HBox(False) self.ou_hb = gtk.HBox(False) # Toolbar self.py_tb_hb = gtk.HBox(False) b = SemiStockButton("", gtk.STOCK_CLEAR, 'Clear code panel') b.connect("clicked", self._clear_code) self.py_tb_hb.pack_end(b, False, False) b = SemiStockButton("", gtk.STOCK_MEDIA_PLAY, 'Execute code') b.connect("clicked", self._exec) self.py_tb_hb.pack_end(b, False, False) self.ou_tb_hb = gtk.HBox(False) wrap = gtk.ToggleToolButton(stock_id=gtk.STOCK_JUSTIFY_FILL) b = SemiStockButton("", gtk.STOCK_CLEAR, 'Clear output panel') b.connect("clicked", self._clear) self.ou_tb_hb.pack_end(b, False, False) wrap.set_active(True) wrap.set_tooltip_text('Switch text wrap') self.ou_tb_hb.pack_end(wrap, False, False) b = SemiStockButton("", gtk.STOCK_HELP, 'Show help') b.connect("clicked", self._help) self.ou_tb_hb.pack_end(b, False, False) # Panels VBoxes self.py_vb= gtk.VBox(False) self.ou_vb= gtk.VBox(False) self.py_vb.pack_start(self.py_tb_hb, False, True, 0) self.ou_vb.pack_start(self.ou_tb_hb, False, True, 0) self.pack_start(self.py_vb, True, True, 0) self.pack_start(self.ou_vb, True, True, 0) ################################################################# # Input GtkSourceView TextView (Python code panel) ################################################################# # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.LanguageManager() # Add ui dir to language paths self.py_buffer = gtksourceview2.Buffer() self.py_buffer.set_data('languages-manager', lm) self.py_view = gtksourceview2.View(self.py_buffer) self.py_view.set_left_margin(5) # FIXME options must be user selectable (statusbar) self.py_view.set_editable(True) self.py_view.set_auto_indent(True) self.py_view.set_highlight_current_line(True) # posible values: gtk.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.py_view.set_wrap_mode(gtk.WRAP_NONE) # setup view font_desc = pango.FontDescription('monospace 9') if font_desc: self.py_view.modify_font(font_desc) self.py_buffer.set_highlight_syntax(True) manager = self.py_buffer.get_data('languages-manager') language = manager.get_language('python') self.py_buffer.set_language(language) self.mgr = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.python_scrolled_window = gtk.ScrolledWindow() self.python_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.python_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.python_scrolled_window.show() # Add Textview to Scrolled Window self.python_scrolled_window.add(self.py_view) self.py_vb.pack_start(self.python_scrolled_window, expand=True, fill=True) #Always on bottom on change self.vajd = self.python_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.python_scrolled_window: self.rescroll(a,s)) end_iter = self.py_buffer.get_end_iter() self.py_buffer.insert(end_iter, "#\n# Your python code goes here\n# Press the run button above to execute\n#\n\n") ################################################################# # Input GtkSourceView TextView (Output panel) ################################################################# # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.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 = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.View(self.buffer) wrap.connect("clicked", self._change_wrap) self.view.set_left_margin(5) self.view.set_wrap_mode(gtk.WRAP_WORD) # FIXME options must be user selectable (statusbar) self.view.set_editable(False) #self.view.set_highlight_current_line(True) # posible values: gtk.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_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 = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.console_scrolled_window = gtk.ScrolledWindow() self.console_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.console_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.console_scrolled_window.show() # Add Textview to Scrolled Window self.console_scrolled_window.add(self.view) self.ou_vb.pack_start(self.console_scrolled_window, expand=True, fill=True) #Always on bottom on change self.vajd = self.console_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.console_scrolled_window: self.rescroll(a,s)) self._help(self)
def __init__(self): #Set the Glade file self.builder = gtk.Builder() self.builder.add_from_file(GLADE_PATH) # get top window self.window = self.builder.get_object("top_window") # status bar stuff self.statusbar = self.builder.get_object("statusbar") self.statusbar_ctx = self.statusbar.get_context_id("default") # set buttons self.save_button = self.builder.get_object('save_file_toolbutton') self.connect_button = self.builder.get_object('connect_button') self.exec_button = self.builder.get_object('exec_button') self.stop_button = self.builder.get_object('stop_button') self.save_button.set_sensitive(False) self.exec_button.set_sensitive(False) self.stop_button.set_sensitive(False) self.connect_button.set_sensitive(True) # set control buttons self.controls = [ self.builder.get_object('reset_button'), self.builder.get_object('exec_button'), self.builder.get_object('zoomin_button'), self.builder.get_object('zoomout_button'), self.builder.get_object('bestfit_button')] self.connected = False map(lambda x:x.set_sensitive(False), self.controls) # gtksourceview widget sourceview = gtksourceview.View() lang_manager = gtksourceview.language_manager_get_default() style_manager = gtksourceview.style_scheme_manager_get_default() # append cwd to style search paths style_manager.set_search_path(style_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/styles")]) # append cwd to language search paths lang_manager.set_search_path(lang_manager.get_search_path() + [os.path.join(IDE_DIR, "share/gtksourceview-2.0/language-specs")]) # configure gtksourceview widget sourceview.set_show_line_numbers(True) sourceview.set_tab_width(4) sourceview.set_indent_on_tab(True) sourceview.set_insert_spaces_instead_of_tabs(True) sourceview.set_auto_indent(True) sourceview.set_highlight_current_line(True) fonts = [] for font in sourceview.get_pango_context().list_families(): fonts.append(font.get_name().lower()) if sys.platform.startswith("win"): if "consolas" in fonts: sourceview.modify_font(pango.FontDescription("consolas 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) elif sys.platform.startswith("darwin"): if "monaco" in fonts: sourceview.modify_font(pango.FontDescription("monaco 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) elif sys.platform.startswith("linux"): if "dejavu sans mono" in fonts: sourceview.modify_font(pango.FontDescription("dejavu sans mono 10")) else: sourceview.modify_font(pango.FontDescription("courier new 10")) # configure gtksourceview buffer self.buffer = gtksourceview.Buffer() self.buffer.set_highlight_syntax(True) self.buffer.set_language(lang_manager.get_language("python")) self.buffer.connect("changed", self.text_changed) sourceview.set_buffer(self.buffer) self.builder.get_object("src_scrolledwindow").add(sourceview) # Configure terminal window self.terminal_scroll = self.builder.get_object('vte_scrolledwindow') self.terminal = self.builder.get_object('vte_textview') self.terminal.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) self.terminal.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('green')) # get drawingarea self.fb = None self.pixbuf = None self.drawingarea = self.builder.get_object("drawingarea") self.da_menu = self.builder.get_object("da_menu") # selection coords self.sel_ended=False self.selection_started=False self.x1 = self.y1 = self.x2 = self.y2 =0 # set control scales attributes self.builder.get_object("contrast_adjust").attr= openmv.ATTR_CONTRAST self.builder.get_object("brightness_adjust").attr= openmv.ATTR_BRIGHTNESS self.builder.get_object("saturation_adjust").attr= openmv.ATTR_SATURATION self.builder.get_object("gainceiling_adjust").attr= openmv.ATTR_GAINCEILING # create data directory if not os.path.isdir(DATA_DIR): os.makedirs(DATA_DIR) # create user scripts directory if not os.path.isdir(SCRIPTS_DIR): os.makedirs(SCRIPTS_DIR) # set config parser self.config = configparser.ConfigParser() config_valid = True # check if config file exists if os.path.isfile(CONFIG_PATH): try: # load config self.config.read(CONFIG_PATH) except Exception as e: print ("Failed to open config file %s"%(e)) sys.exit(1) # Check config keys, if one is missing set invalid for key in CONFIG_KEYS: if not self.config.has_option('main', key): config_valid = False break else: config_valid = False # create fresh config if needed if config_valid == False: try: with open(CONFIG_PATH, "w") as f: f.write(DEFAULT_CONFIG) except Exception as e: print ("Failed to create config file %s"%(e)) sys.exit(1) # load or reload the config file try: self.config.read(CONFIG_PATH) except Exception as e: print ("Failed to open config file %s"%(e)) sys.exit(1) # Current file path self.file_path= None # Built-in examples menu submenu = gtk.Menu() for root, dirs, files in os.walk(EXAMPLES_DIR, topdown=True): for dirname in sorted(dirs): smenu = gtk.Menu() path = os.path.join(root, dirname) for f in os.listdir(path): if f.endswith(".py"): label = os.path.basename(f) mitem = gtk.MenuItem(label, use_underline=False) mitem.connect("activate", self.open_example, path) smenu.append(mitem) menu = gtk.MenuItem(dirname) menu.set_submenu(smenu) submenu.append(menu) menu = self.builder.get_object('example_menu') menu.set_submenu(submenu) # recent files menu self.files = [] files =self.config.get("main", "recent") if files: self.files = files.split(',') self.update_recent_files() self.baudrate = int(self.config.get("main", "baudrate")) # set enable/disable JPEG self.enable_jpeg = self.config.get("main", "enable_jpeg") == 'True' # load helloworld.py self._load_file(os.path.join(EXAMPLES_DIR, "01-Basics", "helloworld.py")) self.save_button.set_sensitive(False) #connect signals signals = { "on_top_window_destroy" : self.quit, "on_connect_clicked" : self.connect_clicked, "on_reset_clicked" : self.reset_clicked, "on_execute_clicked" : self.execute_clicked, "on_stop_clicked" : self.stop_clicked, "on_bootloader_clicked" : self.bootloader_clicked, "on_motion_notify" : self.motion_notify, "on_button_press" : self.button_pressed, "on_button_release" : self.button_released, "on_open_file" : self.open_file, "on_new_file" : self.new_file, "on_save_file" : self.save_file, "on_save_file_as" : self.save_file_as, "on_about_dialog" : self.about_dialog, "on_pinout_dialog" : self.pinout_dialog, "on_copy_color_activate" : self.copy_color, "on_save_template_activate" : self.save_template, "on_save_descriptor_activate" : self.save_descriptor, "on_ctrl_scale_value_changed" : self.on_ctrl_scale_value_changed, "on_zoomin_clicked" : self.zoomin_clicked, "on_zoomout_clicked" : self.zoomout_clicked, "on_bestfit_clicked" : self.bestfit_clicked, "on_preferences_clicked" : self.preferences_clicked, "on_vte_size_allocate" : self.scroll_terminal, } self.builder.connect_signals(signals) # Create bootloader object self.bootloader = Bootloader(self.builder, self.config)
def __init__(self, uicore): super(InteractiveTextView,self).__init__(False, 1) self.uicore = uicore ################################################################# # Interactive Right Textview ################################################################# # Use GtkSourceView to add eye candy :P # create buffer lm = gtksourceview2.LanguageManager() # Add ui dir to language paths paths = lm.get_search_path() paths.append(os.getcwd() + os.sep + 'lib' + os.sep + 'ui' + os.sep + 'bokken' + os.sep + 'data' + os.sep) lm.set_search_path(paths) self.buffer = gtksourceview2.Buffer() self.buffer.create_tag("green-background", background="green", foreground="black") self.buffer.set_data('languages-manager', lm) self.view = gtksourceview2.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.WRAP_NONE, gtk.WRAP_CHAR, gtk.WRAP_WORD... self.view.set_wrap_mode(gtk.WRAP_NONE) # setup view font_desc = pango.FontDescription('monospace 9') if font_desc: self.view.modify_font(font_desc) self.buffer.set_highlight_syntax(True) manager = self.buffer.get_data('languages-manager') language = manager.get_language('asm') self.buffer.set_language(language) self.mgr = gtksourceview2.style_scheme_manager_get_default() # Scrolled Window self.interactive_scrolled_window = gtk.ScrolledWindow() self.interactive_scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.interactive_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.interactive_scrolled_window.show() # Add Textview to Scrolled Window self.interactive_scrolled_window.add(self.view) self.pack_start(self.interactive_scrolled_window, expand=True, fill=True) #Always on bottom on change self.vajd = self.interactive_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.interactive_scrolled_window: self.rescroll(a,s)) # Key bindings self.key_1 = gtk.gdk.keyval_from_name("1") self.key_2 = gtk.gdk.keyval_from_name("2") self.key_3 = gtk.gdk.keyval_from_name("3") self.key_4 = gtk.gdk.keyval_from_name("4") self.key_5 = gtk.gdk.keyval_from_name("5") self.key_6 = gtk.gdk.keyval_from_name("6") self.key_7 = gtk.gdk.keyval_from_name("7") self.key_8 = gtk.gdk.keyval_from_name("8") self.key_9 = gtk.gdk.keyval_from_name("9") self.key_b = gtk.gdk.keyval_from_name("b") self.key_f = gtk.gdk.keyval_from_name("f") # signals self.view.connect("key-press-event", self._key) # Interactive buttons self.interactive_buttons = interactive_buttons.InteractiveButtons(self.uicore, self.buffer) self.pack_end(self.interactive_buttons, expand=False, fill=True)