Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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 = ''
Ejemplo n.º 7
0
    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()
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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 = ''
Ejemplo n.º 13
0
 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
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
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()
Ejemplo n.º 17
0
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()
Ejemplo n.º 18
0
    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")
Ejemplo n.º 19
0
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()
Ejemplo n.º 20
0
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()
Ejemplo n.º 21
0
    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)
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
 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")
Ejemplo n.º 24
0
  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()
Ejemplo n.º 25
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.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)
Ejemplo n.º 26
0
	def __init_attributes(self, editor):
		self.__editor = editor
		from gtksourceview2 import style_scheme_manager_get_default
		self.__manager = style_scheme_manager_get_default()
		return
Ejemplo n.º 27
0
    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()
Ejemplo n.º 28
0
 def __init_attributes(self, editor):
     self.__editor = editor
     from gtksourceview2 import style_scheme_manager_get_default
     self.__manager = style_scheme_manager_get_default()
     return
Ejemplo n.º 29
0
    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)
Ejemplo n.º 30
0
    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)
Ejemplo n.º 31
0
    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()
Ejemplo n.º 32
0
##  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()
Ejemplo n.º 33
0
    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()
Ejemplo n.º 34
0
 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
Ejemplo n.º 35
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.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"))
Ejemplo n.º 36
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.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()
Ejemplo n.º 37
0
    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)
Ejemplo n.º 38
0
    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)
Ejemplo n.º 39
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)
Ejemplo n.º 40
0
    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)
Ejemplo n.º 41
0
    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)
Ejemplo n.º 42
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")

        # 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)
Ejemplo n.º 43
0
    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)