Example #1
0
    def __init__(self, config, begin, end):
        super(changesWindow, self).__init__()
        builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        builder.add_from_file(pkg_resources.resource_filename("snappergui", "glade/changesWindow.glade"))

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

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

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

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

        self.window.show_all()
        GObject.idle_add(self.on_idle_init_paths_tree)
Example #2
0
    def __init__(self, *args):
        self.builder = Gtk.Builder()
        self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file("pyide.glade")

        self.my_accelerators = Gtk.AccelGroup()

        fileSystemTreeStore = Gtk.TreeStore(str, Pixbuf, str)
        FsTree.populateFileSystemTreeStore(fileSystemTreeStore, os.path.expanduser("~"))
        fileSystemTreeView = self.builder.get_object("treeview1")
        fileSystemTreeView.set_model(fileSystemTreeStore)
        treeViewCol = Gtk.TreeViewColumn("File")
        colCellText = Gtk.CellRendererText()
        colCellImg = Gtk.CellRendererPixbuf()
        treeViewCol.pack_start(colCellImg, False)
        treeViewCol.pack_start(colCellText, True)
        treeViewCol.add_attribute(colCellText, "text", 0)
        treeViewCol.add_attribute(colCellImg, "pixbuf", 1)
        fileSystemTreeView.append_column(treeViewCol)
        fileSystemTreeView.connect("row-expanded", FsTree.onFSRowExpanded)
        fileSystemTreeView.connect("row-collapsed", FsTree.onFSRowCollapsed)
        fileSystemTreeView.connect("row-activated", FsTree.onFSRowActivated)

        self.builder.connect_signals(Handler())
Example #3
0
 def __init__(self, lotto=None, tipps=None, file=None):
     
     self.file = file
     
     self.config = ConfigParser()
     self.config.read(os.path.expanduser("~/.local/share/lotto/preferences.ini"))
     if tipps == None:
         tipps = self.config.getint("tipps", "tipps")
     if lotto == None:
         self.lotto = Lotto([Tipp() for i in range(tipps)])  # @UnusedVariable
     else:
         self.lotto = lotto
         
     Gtk.Notebook.__init__(self)
     self.set_scrollable(True)
     
     GObject.type_register(LottoWidget)
     GObject.signal_new("reaload",LottoWidget,GObject.SIGNAL_RUN_FIRST,
                GObject.TYPE_NONE, [])
     
     self.tippwidgets = []
     for i in range(self.lotto.get_n_tipps()):
         self.tippwidgets.append(TippWidget(self.lotto.get_nth_tipp(i)))
         self.append_page(child=self.tippwidgets[i],tab_label=Gtk.Label(label="tipp %s"%(i+1)))
     self.set_buttons()
Example #4
0
 def instance_register(self, controller):
     GObject.Object.__init__(controller)
     type_ = type(controller)
     if type_ not in self.conroller_types:
         log.debug("Registering GObject type %s", type_)
         GObject.type_register(type_)
         self.conroller_types.add(type_)
Example #5
0
def main():
	GObject.type_register(Sexy.SpellEntry)
	builder = Gtk.Builder()
	builder.add_from_file(UI_FILE)

	win = builder.get_object('window')
	win.connect('delete-event', Gtk.main_quit)

	entry = Sexy.SpellEntry()
	entry.set_text('I was nto, but i hav a custom style!')
	box = builder.get_object('box')
	box.add(entry)

	provider = Gtk.CssProvider()
	provider.load_from_path(CSS_FILE)
	context = entry.get_style_context()
	context.add_provider(provider, 800)

	label = builder.get_object('label')
	label_str = '<b>Available Languages</b>:\n{}\n'.format('\n'.join(entry.get_languages()))
	label_str += '<b>Enabled Languages</b>:\n{}'.format('\n'.join(entry.get_active_languages()))
	label.set_markup(label_str)

	win.show_all()
	Gtk.main()
Example #6
0
    def __init__(self, window):
        """Class initialiser"""
        if isinstance(window.get_child(), Gtk.Notebook):
            err('There is already a Notebook at the top of this window')
            raise(ValueError)

        Container.__init__(self)
        GObject.GObject.__init__(self)
        self.terminator = Terminator()
        self.window = window
        GObject.type_register(Notebook)
        self.register_signals(Notebook)
        self.connect('switch-page', self.deferred_on_tab_switch)
        self.configure()

        child = window.get_child()
        window.remove(child)
        window.add(self)
        window_last_active_term = window.last_active_term
        self.newtab(widget=child)
        if window_last_active_term:
            self.set_last_active_term(window_last_active_term)
            window.last_active_term = None

        self.show_all()
Example #7
0
    def init_ui(self):
        # Create a "Builder", which basically allows me to import the Glade file for a complete interface.
        # I love Glade, btw. So much quicker than manually coding everything.
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(program_loc + "UI.glade")

        go = self.builder.get_object
        profile_editor = go("profileEditor")
        menu_prof_exit = go("exitProfWin")
        save_button = go("saveMenuProf")
        save_tool_button = go("saveToolBtn")
        open_tool_button = go("openToolBtn")
        clear_button = go("clearToolBtn")
        attributes_button = go("attributesToolBtn")
        exit_profile_button = go("exitToolBtn")
        self.netctlEditor = go("profileEditorView")
        self.buffer = go("textbuffer1")

        # Connecting the "clicked" signals of each button to the relevant function.
        save_button.connect("activate", self.save_clicked)
        save_tool_button.connect("clicked", self.save_clicked)
        attributes_button.connect("clicked", self.attributes_clicked)
        clear_button.connect("clicked", self.clear_clicked)
        profile_editor.connect("show", self.on_load)
        exit_profile_button.connect("clicked", self.exit_prof_clicked)
        menu_prof_exit.connect("activate", self.exit_prof_clicked)
        open_tool_button.connect("clicked", self.open_clicked)
        # Opening the Prefereces Dialog.
        profile_editor.show_all()
Example #8
0
    def __init__(self):
        self.docpath = None
        self.message_q = Queue.Queue()
        GLib.idle_add(self.on_idle)

        builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        builder.add_from_file(UI_PATH)
        self.window = builder.get_object("window1")
        self.statusbar = builder.get_object("statusbar1")
        self.statuscontext = self.statusbar.get_context_id("info")
        view = builder.get_object("gtksourceview1")
        handlers = {
            "on_compile_clicked": self.compileclicked,
            "on_deploy_clicked": self.deployclicked,
            "on_newBtn_activate": self.newbuttonclicked,
            "on_openBtn_activate": self.openbuttonclicked,
            "on_saveasBtn_activate": self.saveasbuttonclicked,
            "on_saveBtn_activate": self.savebuttonclicked,
            "on_cutBtn_activate": self.cutbuttonclicked,
            "on_copyBtn_activate": self.copybuttonclicked,
            "on_pasteBtn_activate": self.pastebuttonclicked,
            "quit": Gtk.main_quit
        }
        builder.connect_signals(handlers)
        lang = GtkSource.LanguageManager.get_default().get_language('python')
        self.sourcebuffer = GtkSource.Buffer.new_with_language(lang)
        font_desc = Pango.FontDescription('monospace 10')
        if font_desc:
            view.modify_font(font_desc)
        view.set_buffer(self.sourcebuffer)
        if self.window:
            self.window.connect("destroy", Gtk.main_quit)
            self.window.set_size_request(600, 650)
        self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
Example #9
0
	def __init__(self):
		self.builder = Gtk.Builder()
		self.glade_file = join(abspath(dirname(__file__)), "UI.glade")
		GObject.type_register(GtkSource.View)
		self.builder.add_from_file(self.glade_file)

		self.main_window = self.builder.get_object("window1")
		self.main_window.connect("delete-event", Gtk.main_quit)
		self.main_window.show_all()
Example #10
0
    def __init__(self):
        GObject.Object.__init__(self)
        GObject.type_register(type(self))
        self.connect("application_shutdown", ignore_sender_function(self.application_shutdown))
        self.connect("note_content_added", ignore_sender_function(self.handle_note_content_added))
        # event.listen(db_session, "before_commit", self._db_changed_callback)
        self.conroller_types = set()

        self.sync_control = SyncControl(self)
Example #11
0
 def __init__(self, note):
     self.path = os.path.abspath(os.path.join(os.path.dirname(__file__),
         '..'))
     self.note = note
     self.noteset = note.noteset
     self.locked = self.note.properties.get("locked", False)
     self.builder = Gtk.Builder()
     GObject.type_register(GtkSource.View)
     self.builder.add_from_file(os.path.join(self.path,
         "StickyNotes.glade"))
     self.builder.connect_signals(self)
     # Get necessary objects
     self.txtNote = self.builder.get_object("txtNote")
     self.winMain = self.builder.get_object("MainWindow")
     self.winMain.set_name("main-window")
     self.bAdd = self.builder.get_object("bAdd")
     self.imgAdd = self.builder.get_object("imgAdd")
     self.imgResizeR = self.builder.get_object("imgResizeR")
     self.eResizeR = self.builder.get_object("eResizeR")
     self.bLock = self.builder.get_object("bLock")
     self.imgLock = self.builder.get_object("imgLock")
     self.imgUnlock = self.builder.get_object("imgUnlock")
     self.bClose = self.builder.get_object("bClose")
     self.confirmDelete = self.builder.get_object("confirmDelete")
     # Load CSS template and initialize Gtk.CssProvider
     with open(os.path.join(self.path, "style.css")) as css_file:
         self.css_template = Template(css_file.read())
     self.css = Gtk.CssProvider()
     self.style_contexts = [self.winMain.get_style_context(),
             self.txtNote.get_style_context()]
     # Update window-specific style. Global styles are loaded initially!
     self.update_style()
     # Ensure buttons are displayed with images
     settings = Gtk.Settings.get_default()
     settings.props.gtk_button_images = True
     # Set text buffer
     self.bbody = GtkSource.Buffer()
     self.bbody.begin_not_undoable_action()
     self.bbody.set_text(self.note.body)
     self.bbody.set_highlight_matching_brackets(False)
     self.bbody.end_not_undoable_action()
     self.txtNote.set_buffer(self.bbody)
     # Show and hide so winMain and widgets are realized and mapped.
     self.winMain.show()
     self.winMain.hide()
     # Make resize work
     self.winMain.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
     self.eResizeR.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
     # Move Window
     self.winMain.move(*self.note.properties.get("position", (10,10)))
     self.winMain.resize(*self.note.properties.get("size", (200,150)))
     # Mouse over
     self.eResizeR.get_window().set_cursor(Gdk.Cursor.new_for_display(
                 self.eResizeR.get_window().get_display(),
                 Gdk.CursorType.BOTTOM_RIGHT_CORNER))
     # Set locked state
     self.set_locked_state(self.locked)
Example #12
0
    def build_note(self):
        self.builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(os.path.join(self.path,
            "StickyNotes.glade"))
        self.builder.connect_signals(self)
        self.winMain = self.builder.get_object("MainWindow")

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

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

        # immediately undo the set keep above after the window
        # is shown, so that windows won't stay up if we switch to
        # a different window
        self.winMain.set_keep_above(False)
Example #13
0
	def __init__ ( self, _dir="gui", start_type="input" ):
		self.dir = DIR
		GObject.type_register ( configitem.ConfigItem )
		GObject.type_register ( configfile.ConfigFile )
		GObject.signal_new ( "new_config", configitem.ConfigItem, GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, ( configitem.ConfigItem, ) )
		GObject.signal_new ( "remove_item", configitem.ConfigItem, GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, ( configfile.ConfigFile, ) )
		GObject.signal_new ( "remove_config", configfile.ConfigFile, GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, ( configfile.ConfigFile, ) )
		self.project = project.Project ( _dir, start_type, main_handlers, self.dir )
		self.project.load_config ( self.project.files, "parser.cfg" )
		self.config = "parser.cfg"
Example #14
0
def registerSignals(cls):
	GObject.type_register(cls)
	for name, args in cls.signals:
		GObject.signal_new(
			name,
			cls,
			GObject.SignalFlags.RUN_LAST,
			None,
			args,
		)
	return cls
	def __init__(self):
		self.builder = Gtk.Builder()
		GObject.type_register(GtkSource.View)
		self.builder.add_from_file("main.glade")
		self.main_window = self.builder.get_object("MainWindow")
		self.view = self.builder.get_object("View")
		self.textbuff = GtkSource.Buffer()
		self.view.set_buffer(self.textbuff)
		self.lm = GtkSource.LanguageManager()
		self.textbuff.set_language(self.lm.get_language('python'))
		self.main_window.connect("destroy", Gtk.main_quit)

		self.keywords = """
Example #16
0
def type_register(gtype):
    """Register the type, but only if it's not already registered
    :param gtype: the class to register
    """

    # copied from gobjectmodule.c:_wrap_type_register
    if (getattr(gtype, '__gtype__', None) !=
        getattr(gtype.__base__, '__gtype__', None)):
        return False

    GObject.type_register(gtype)

    return True
Example #17
0
    def testImplementInterface(self):
        class MyObject(GObject.GObject, testhelper.Interface):
            some_property = GObject.Property(type=str)

            def __init__(self):
                GObject.GObject.__init__(self)
                self.called = False

            def do_iface_method(self):
                self.called = True
        GObject.type_register(MyObject)
        m = MyObject()
        m.iface_method()
        self.assertEqual(m.called, True)
Example #18
0
        def _type_register(cls, namespace):
            ## don't register the class if already registered
            if '__gtype__' in namespace:
                return

            if not ('__gproperties__' in namespace or
                    '__gsignals__' in namespace or
                    '__gtype_name__' in namespace):
                return

            # Do not register a new GType for the overrides, as this would sort
            # of defeat the purpose of overrides...
            if cls.__module__.startswith('gi.overrides.'):
                return

            GObject.type_register(cls, namespace.get('__gtype_name__'))
Example #19
0
    def testReImplementInterface(self):
        class MyUnknown(Unknown, testhelper.Interface):
            some_property = GObject.Property(type=str)

            def __init__(self):
                Unknown.__init__(self)
                self.called = False

            def do_iface_method(self):
                self.called = True
                Unknown.do_iface_method(self)
        GObject.type_register(MyUnknown)

        m = MyUnknown()
        m.iface_method()
        self.assertEqual(m.called, True)
Example #20
0
def _init_plugin(plugin, userarg):
    # Before registering the filter plugin we must ensure that the
    # plugin's metadata and pad templates are set.
    # Usually the data should be set automatically based on the
    # __gstmetadata__ and __gsttemplates__ attributes. This works as
    # expected on:
    #   Xubuntu 14.04
    #     (python-gst-1.0 [1.2.0-1], gstreamer1.0-x [1.2.4-1])
    #   Xubuntu 15.05
    #     (python-gst-1.0 [1.2.1-1.1], gstreamer1.0-x [1.4.5-1])
    # However on Windows 7 running PyGI 3.14.0 AIO rev19 (including
    # gstreamer 1.4.5) these values must be set explicitly using
    # set_metadata and add_pad_template. If we would not set the values
    # explicitly we would get the following warning/error:
    #   GStreamer-WARNING **: Element factory metadata for
    #   'timeclbfilter' has no valid long-name field
    #   CRITICAL **: gst_base_transform_init: assertion 'pad_template !=
    #   NULL' failed
    try:
        TimeClbFilter.set_metadata(*TimeClbFilter.__gstmetadata__)
        TimeClbFilter.add_pad_template(TimeClbFilter._sinktemplate)
        TimeClbFilter.add_pad_template(TimeClbFilter._srctemplate)
    except AttributeError:
        pass
    TimeClbFilterType = GObject.type_register(TimeClbFilter)
    Gst.Element.register(plugin, 'timeclbfilter', 0, TimeClbFilterType)
    return True
Example #21
0
 def __init__(self, logger):
     self.log = logger
     Gtk.VBox.__init__(self, spacing=3)
     GObject.GObject.__init__(self)
     # top navi
     self.set_no_show_all(True)
     tbox = Gtk.HBox(spacing=3)
     # navigation buttons
     self.link_button = Gtk.LinkButton('', label='Article Title')
     self.link_button.set_relief(Gtk.ReliefStyle.NONE)
     tbox.pack_start(self.link_button, True, True,0)
     self.file_img = Gtk.Image().new_from_stock('gtk-file', Gtk.IconSize.BUTTON)
     tbox.pack_start(self.file_img, False, False,0)
     self.star_img = Gtk.Image().new_from_stock('gtk-about', Gtk.IconSize.BUTTON)
     tbox.pack_start(self.star_img, False, False,0)
     self.feed_img = Gtk.Image().new_from_stock('missing', Gtk.IconSize.BUTTON)
     tbox.pack_start(self.feed_img, False, False,0)
     # webkit view
     self.feedview = WebKit.WebView()
     self.feedview.set_full_content_zoom(True)
     self.feedview.connect("navigation-policy-decision-requested", self.__override_clicks)
     self.feedview.connect("hovering-over-link", self.__hover_webview)
     self.link_button.connect("enter-notify-event", self.__hover_link, "in")
     self.link_button.connect("leave-notify-event", self.__hover_link)
     # containers
     tal = Gtk.Alignment.new(0.5, 0.5, 1, 1)
     tal.show()
     tal.add(tbox)
     tbox.show()
     msc = Gtk.ScrolledWindow()
     msc.show()
     msc.set_shadow_type(Gtk.ShadowType.IN)
     msc.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
     msc.add(self.feedview)
     mal = Gtk.Alignment.new(0.5, 0.5, 1, 1)
     mal.show()
     mal.add(msc)
     self.pack_start(tal, False, False,0)
     self.pack_start(mal, True, True,0)
     GObject.type_register(View)
     self.valid_links = ['file:']
     self.show()
     self.link_button.show()
     self.feedview.show()
     self.feed_img.show()
     self.file_img.show()
     self.__art_id = None
Example #22
0
def check_gtk_prerequisites():
    try:
        from gi.repository import Gtk
    except ImportError:
        logger.critical('Missing dependency: GTK3 Python interface.')
        sys.exit(1)
    try:
        from gi.repository import GtkSource, GObject
        GObject.type_register(GtkSource.View)
    except ImportError:
        logger.critical('Missing dependency: GtkSourceView widget.')
        sys.exit(1)        
    try:
        import cairo
    except ImportError:
        logger.critical('Missing dependency: Python Cairo interface.')
        sys.exit(1)
Example #23
0
    def __init__(self, filename=None, custom_widget_types=[], extra_bind_op={}):
        super(View, self).__init__()

        self.signal_handlers = {}
        for each in custom_widget_types:
            GObject.type_register(each)
        self.update_binding_op(extra_bind_op)

        if filename is None:
            return

        self.builder = Gtk.Builder()
        self.get_object = self.builder.get_object
        self.builder.add_from_file(filename)

        objects = self.prepare_objects()
        self.top = [each for each in objects if isinstance(each, Gtk.Container) and each.get_parent() is None][0]
Example #24
0
    def __init__(self):
        """Class initialiser"""
        self.terminator = Terminator()
        self.terminator.register_window(self)

        Container.__init__(self)
        GObject.GObject.__init__(self)
        GObject.type_register(Window)
        self.register_signals(Window)

        self.get_style_context().add_class("terminator-terminal-window")

#        self.set_property('allow-shrink', True)  # FIXME FOR GTK3, or do we need this actually?
        icon_to_apply=''

        self.register_callbacks()
        self.apply_config()

        self.title = WindowTitle(self)
        self.title.update()
        
        self.preventHide = False

        options = self.config.options_get()
        if options:
            if options.forcedtitle:
                self.title.force_title(options.forcedtitle)

            if options.role:
                self.set_role(options.role)
            
            if options.forcedicon is not None:
                icon_to_apply = options.forcedicon

            if options.geometry:
                if not self.parse_geometry(options.geometry):
                    err('Window::__init__: Unable to parse geometry: %s' % 
                            options.geometry)

        self.apply_icon(icon_to_apply)
        self.pending_set_rough_geometry_hint = False
Example #25
0
    def __init__(self):
        Gtk.Window.__init__(self)
        GObject.GObject.__init__(self)
        GObject.type_register(Reader)
        self.log = Logger("reader.log", "BRss-Reader")
        self.settings = Gio.Settings.new(BASE_KEY)
        self.settings.connect("changed::show-status", self.__toggle_status)

        # ui elements
        self.tree = Tree(self.log)
        self.ilist = ArticleList(self.log)
        self.ilist.set_property("height-request", 250)
        self.view = View(self.log)
        self.status = Status()
        # layout
        self.__layout_ui()
        #signals
        self.__connect_signals()
        self.__get_engine()
        # ready to go
        self.emit('loaded')
Example #26
0
    def __init__(self):
        self.scanning = False
        self.thread = None
        self.APindex = 0
        self.builder = Gtk.Builder()
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(str(Path(program_loc, "UI.glade")))
        self.password_dialog = self.builder.get_object("passwordDialog")
        self.ap_list = self.builder.get_object("treeview1")
        self.ap_store = Gtk.ListStore(str, str, str, str)
        self.statusbar = self.builder.get_object("statusbar1")
        self.context = self.statusbar.get_context_id("netgui")
        self.interface_name = ""
        self.NoWifiMode = False
        self.interface_control = InterfaceControl()
        self.next_function = None
        self.generate_config = GenConfig(profile_dir)

        self.notifications = Notification()
        
        self.init_ui()
Example #27
0
    def __init__(self):
        """Class initialiser"""
        self.terminator = Terminator()
        self.terminator.register_window(self)

        Container.__init__(self)
        GObject.GObject.__init__(self)
        GObject.type_register(Window)
        self.register_signals(Window)

        self.set_property('allow-shrink', True)
        icon_to_apply=''

        self.register_callbacks()
        self.apply_config()

        self.title = WindowTitle(self)
        self.title.update()

        options = self.config.options_get()
        if options:
            if options.forcedtitle:
                self.title.force_title(options.forcedtitle)

            if options.role:
                self.set_role(options.role)
            
            if options.classname is not None:
                self.set_wmclass(options.classname, self.wmclass_class)
            
            if options.forcedicon is not None:
                icon_to_apply = options.forcedicon

            if options.geometry:
                if not self.parse_geometry(options.geometry):
                    err('Window::__init__: Unable to parse geometry: %s' % 
                            options.geometry)

        self.apply_icon(icon_to_apply)
        self.pending_set_rough_geometry_hint = False
Example #28
0
def check_gui_prerequisites():
    try:
        from gi.repository import Gtk
    except ImportError:
        logging.critical('You need the Python GTK interface!')
        sys.exit(1)
    try:
        from gi.repository import GtkSource, GObject
        GObject.type_register(GtkSource.View)
    except ImportError:
        logging.critical('You need the GtkSourceView widget!')
        sys.exit(1)        
    try:
        import cairo
    except ImportError:
        logging.critical('You need the Python Cairo interface!')
        sys.exit(1)
    try: 
        from gi.repository import Vte
    except ImportError:
        logging.critical('You need VTE!')
        sys.exit(1)
    def testPyGObject(self):

        class Foo(GObject.GObject):
            gsignal('hcf', bool, str)
            gproperty(bool, 'burning', 'If the object is burning',
                      False)

            def __init__(xself):
                GObject.GObject.__init__(xself)
                xself.connect('hcf', xself.on_hcf)
                xself.set_property('burning', False)

            def on_hcf(xself, again_self, x, y):
                self.assert_(isinstance(x, bool))
                self.assert_(isinstance(y, str))
                xself.set_property('burning', True)
        GObject.type_register(Foo)

        o = Foo()

        self.assertEquals(False, o.get_property('burning'))
        o.emit('hcf', False, 'foogoober')
        self.assertEquals(True, o.get_property('burning'))
Example #30
0
    def init_ui(self):
        GObject.type_register(GtkSource.View)
        self.builder.add_from_file(str(Path(self.program_loc, "UI.glade")))

        # Get everything we need from UI.glade
        go = self.builder.get_object
        self.preferences_dialog = go("prefDialog")
        save_button = go("saveButton")
        cancel_button = go("cancelButton")
        self.interface_entry = go("wiInterface")
        self.default_profile = go("defaultProfilePath")
        self.unsecure_switch = go("unsecureSwitch")
        self.autoconnect_switch = go("autoconnectSwitch")
        self.notification_type = go("notification_type")
        filechooser = go("chooseDefaultProfile")

        # Connecting the "clicked" signals of each button to the relevant function.
        save_button.connect("clicked", self.save_clicked)
        cancel_button.connect("clicked", self.cancel_clicked)
        self.preferences_dialog.connect("show", self.on_load)
        filechooser.connect("clicked", self.choose_profile)
        # Opening the Preferences Dialog.
        self.preferences_dialog.run()
    def deactivate(self):
        # Revert color back to normal
        default_bg_color = self.get_style().bg[Gtk.StateType.NORMAL]
        self.modify_bg(Gtk.StateType.NORMAL, default_bg_color)
        #self.unset_flags(Gtk.CAN_FOCUS)
        self.set_can_focus(False)
        self.active = False
        keybinding = self.getKeybinding()
        
        if not keybinding:
            self._label.set_text(DEFAULT_TEXT)
        else:
            self._label.set_text(keybinding)
        

GObject.type_register(KeybindingWidget)
GObject.signal_new("keybinding-changed", KeybindingWidget,
                       GObject.SignalFlags.RUN_LAST,
                       GObject.TYPE_NONE,
                       (GObject.TYPE_PYOBJECT,))

# Tests below

def on_keybinding_changed(widget, keybinding):
    print "on_keybinding_changed()"
    print "New keybinding is", keybinding

if __name__ == '__main__':
    logging.basicConfig()
    log.setLevel(logging.DEBUG)
Example #32
0
            else:
                iter = pre
                break

        if not iter:
            iter = pre

        if iter:
            path = self.treestore.get_path(iter)
            self.treeview.scroll_to_cell(path, None, False, 0, 0)
            self.treeview.set_cursor(path, None, False)
            self.treeview.grab_focus()'''

    # Called when a row of customer table get activated by mouse double-click or Enter key
    def selectCustomerFromList(self, treeview, path, view_column):
        iter = self.treestore.get_iter(path)
        if self.treestore.iter_parent(iter) != None:
            code = utility.convertToLatin(self.treestore.get_value(iter, 0))

            query = share.config.db.session.query(Customers).select_from(
                Customers)
            query = query.filter(Customers.custCode == code)
            customer_id = query.first().custId
            self.emit("customer-selected", customer_id, code)

GObject.type_register(Customer)
GObject.signal_new("customer-selected", Customer, GObject.SignalFlags.RUN_LAST,
                   None, (GObject.TYPE_INT, GObject.TYPE_STRING))

## @}
Example #33
0
        if angle == 0:
            return

        a_x = self.grips[0].img_position[0]
        a_y = self.grips[0].img_position[1]
        b_x = self.grips[1].img_position[0]
        b_y = self.grips[1].img_position[1]

        logger.info(
            "Rotating chopping coords {} by {} degrees (img size: {})".format(
                (a_x, a_y, b_x, b_y), angle, (size_x, size_y)))

        if angle == 90:
            # beware: img_size has already been changed, but not our coords
            (a_x, a_y, b_x, b_y) = (size_x - b_y, a_x, size_x - a_y, b_x)
        elif angle == 180:
            (a_x, a_y, b_x, b_y) = (size_x - b_x, size_y - b_y, size_x - a_x,
                                    size_y - a_y)
        elif angle == 270:
            # beware: img_size has already been changed, but not our coords
            (a_x, a_y, b_x, b_y) = (a_y, size_y - b_x, b_y, size_y - a_x)

        logger.info("Rotation result: {} (img size: {})".format(
            (a_x, a_y, b_x, b_y), (size_x, size_y)))

        self.grips[0].img_position = (a_x, a_y)
        self.grips[1].img_position = (b_x, b_y)


GObject.type_register(ImgGripHandler)
Example #34
0
        """
        podata = []
        for candidate in odata[1]:
            if candidate['class'] == "func":
                info = candidate['class'] + " " + candidate[
                    'name'] + candidate['type'][len("func"):]
                icon = self._plugin.icons['func']
                # if we have a function add a parenthesis for the code completion
                candidate['name'] += '('
            else:
                info = candidate['class'] + " " + candidate[
                    'name'] + " " + candidate['type']

                icon = self._plugin.icons['var']  # default
                if candidate['class'] == "const":
                    icon = self._plugin.icons['const']
                elif candidate['class'] == "package":
                    icon = self._plugin.icons['package']
                elif candidate['class'] == "type":
                    if candidate['type'] == "interface":
                        icon = self._plugin.icons['interface']
                    elif candidate['type'] == "struct":
                        icon = self._plugin.icons['struct']

            podata.append(
                (candidate['name'], candidate['name'][odata[0]:], icon, info))
        return podata


GObject.type_register(GoProvider)
Example #35
0
    def __init__(self):
        # Create the temporary directory
        self.tmp_dir = tempfile.mkdtemp('pdfshuffler')
        os.chmod(self.tmp_dir, 0o700)

        iconsdir = os.path.join(sharedir, 'pdfshuffler', 'icons')
        if not os.path.exists(iconsdir):
            iconsdir = os.path.join(sharedir, 'data')
        Gtk.IconTheme.get_default().append_search_path(iconsdir)
        Gtk.Window.set_default_icon_name('pdfshuffler')

        # Import the user interface file, trying different possible locations
        ui_path = os.path.join(basedir, 'share', 'pdfshuffler',
                               'pdfshuffler.ui')
        if not os.path.exists(ui_path):
            ui_path = os.path.join(basedir, 'data', 'pdfshuffler.ui')
        if not os.path.exists(ui_path):
            ui_path = '/usr/share/pdfshuffler/pdfshuffler.ui'
        if not os.path.exists(ui_path):
            ui_path = '/usr/local/share/pdfshuffler/pdfshuffler.ui'

        self.uiXML = Gtk.Builder()
        self.uiXML.set_translation_domain('pdfshuffler')
        self.uiXML.add_from_file(ui_path)
        self.uiXML.connect_signals(self)

        # Create the main window, and attach delete_event signal to terminating
        # the application
        self.window = self.uiXML.get_object('main_window')
        self.window.set_title(APPNAME)
        self.window.set_border_width(0)
        self.window.set_default_size(self.prefs['window width'],
                                     self.prefs['window height'])
        self.window.connect('delete_event', self.close_application)

        # Create a scrolled window to hold the thumbnails-container
        self.sw = self.uiXML.get_object('scrolledwindow')
        self.sw.drag_dest_set(
            Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT
            | Gtk.DestDefaults.DROP | Gtk.DestDefaults.MOTION, self.TARGETS_SW,
            Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
        self.sw.connect('drag_data_received', self.sw_dnd_received_data)
        self.sw.connect('button_press_event', self.sw_button_press_event)
        self.sw.connect('scroll_event', self.sw_scroll_event)

        # Create an alignment to keep the thumbnails center-aligned
        align = Gtk.Alignment.new(0.5, 0.5, 0, 0)
        self.sw.add_with_viewport(align)

        # Create ListStore model and IconView
        self.model = Gtk.ListStore(
            str,  # 0.Text descriptor
            GObject.TYPE_PYOBJECT,
            # 1.Cached page image
            int,  # 2.Document number
            int,  # 3.Page number
            float,  # 4.Scale
            str,  # 5.Document filename
            int,  # 6.Rotation angle
            float,  # 7.Crop left
            float,  # 8.Crop right
            float,  # 9.Crop top
            float,  # 10.Crop bottom
            float,  # 11.Page width
            float,  # 12.Page height
            float)  # 13.Resampling factor

        self.zoom_set(self.prefs['initial zoom level'])
        self.iv_col_width = self.prefs['initial thumbnail size']

        self.iconview = Gtk.IconView(self.model)
        self.iconview.clear()
        self.iconview.set_item_width(-1)  #self.iv_col_width + 12)

        self.cellthmb = CellRendererImage()
        self.iconview.pack_start(self.cellthmb, False)
        self.iconview.set_cell_data_func(self.cellthmb,
                                         self.set_cellrenderer_data, None)
        #        self.iconview.add_attribute(self.cellthmb, 'image', 1)
        #        self.iconview.add_attribute(self.cellthmb, 'scale', 4)
        #        self.iconview.add_attribute(self.cellthmb, 'rotation', 6)
        #        self.iconview.add_attribute(self.cellthmb, 'cropL', 7)
        #        self.iconview.add_attribute(self.cellthmb, 'cropR', 8)
        #        self.iconview.add_attribute(self.cellthmb, 'cropT', 9)
        #        self.iconview.add_attribute(self.cellthmb, 'cropB', 10)
        #        self.iconview.add_attribute(self.cellthmb, 'width', 11)
        #        self.iconview.add_attribute(self.cellthmb, 'height', 12)
        #        self.iconview.add_attribute(self.cellthmb, 'resample', 13)

        #        self.celltxt = Gtk.CellRendererText()
        #        self.celltxt.set_property('width', self.iv_col_width)
        #        self.celltxt.set_property('wrap-width', self.iv_col_width)
        #        self.celltxt.set_property('alignment', Pango.Alignment.CENTER)
        #        self.iconview.pack_start(self.celltxt, False)
        #        self.iconview.add_attribute(self.celltxt, 'text', 0)
        self.iconview.set_text_column(0)

        self.iconview.set_selection_mode(Gtk.SelectionMode.MULTIPLE)
        self.iconview.enable_model_drag_source(
            Gdk.ModifierType.BUTTON1_MASK, self.TARGETS_IV,
            Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
        self.iconview.enable_model_drag_dest(self.TARGETS_IV,
                                             Gdk.DragAction.DEFAULT)
        self.iconview.connect('drag_begin', self.iv_drag_begin)
        self.iconview.connect('drag_data_get', self.iv_dnd_get_data)
        self.iconview.connect('drag_data_received', self.iv_dnd_received_data)
        self.iconview.connect('drag_data_delete', self.iv_dnd_data_delete)
        self.iconview.connect('drag_motion', self.iv_dnd_motion)
        self.iconview.connect('drag_leave', self.iv_dnd_leave_end)
        self.iconview.connect('drag_end', self.iv_dnd_leave_end)
        self.iconview.connect('button_press_event', self.iv_button_press_event)

        align.add(self.iconview)

        # Progress bar
        self.progress_bar = self.uiXML.get_object('progressbar')
        self.progress_bar_timeout_id = 0

        # Define window callback function and show window
        self.window.connect('size_allocate',
                            self.on_window_size_request)  # resize
        self.window.connect('key_press_event',
                            self.on_keypress_event)  # keypress
        self.window.show_all()
        self.progress_bar.hide()

        # Change iconview color background
        style_context_sw = self.sw.get_style_context()
        color_selected = self.iconview.get_style_context()\
                             .get_background_color(Gtk.StateFlags.SELECTED)
        color_prelight = color_selected.copy()
        color_prelight.alpha = 0.3
        for state in (Gtk.StateFlags.NORMAL, Gtk.StateFlags.ACTIVE):
            self.iconview.override_background_color \
               (state, style_context_sw.get_background_color(state))
        self.iconview.override_background_color(Gtk.StateFlags.SELECTED,
                                                color_selected)
        self.iconview.override_background_color(Gtk.StateFlags.PRELIGHT,
                                                color_prelight)

        # Creating the popup menu
        self.popup = Gtk.Menu()
        labels = (_('_Rotate Right'), _('Rotate _Left'), _('C_rop...'),
                  _('_Delete'), _('_Export selection...'))
        cbs = (self.rotate_page_right, self.rotate_page_left,
               self.crop_page_dialog, self.clear_selected,
               self.choose_export_selection_pdf_name)
        for label, cb in zip(labels, cbs):
            popup_item = Gtk.MenuItem.new_with_mnemonic(label)
            popup_item.connect('activate', cb)
            popup_item.show()
            self.popup.append(popup_item)

        # Initializing variables
        self.export_directory = os.getenv('HOME')
        self.import_directory = self.export_directory
        self.nfile = 0
        self.iv_auto_scroll_direction = 0
        self.iv_auto_scroll_timer = None
        self.pdfqueue = []

        GObject.type_register(PDF_Renderer)
        GObject.signal_new(
            'update_thumbnail', PDF_Renderer, GObject.SignalFlags.RUN_FIRST,
            None,
            [GObject.TYPE_INT, GObject.TYPE_PYOBJECT, GObject.TYPE_FLOAT])
        self.rendering_thread = 0

        self.set_unsaved(False)

        # Importing documents passed as command line arguments
        for filename in sys.argv[1:]:
            self.add_pdf_pages(filename)
Example #36
0
from gi.repository import GObject  # for using custom signals
from gi.repository import Pango  # for adjusting the text alignment in CellRendererText
from gi.repository import Gio  # for inquiring mime types information

gi.require_version('Poppler', '0.18')
from gi.repository import Poppler  #for the rendering of pdf pages
import cairo

try:
    from pyPdf import PdfFileWriter, PdfFileReader
except ImportError:
    from PyPDF2 import PdfFileWriter, PdfFileReader

from .pdfshuffler_iconview import CellRendererImage

GObject.type_register(CellRendererImage)

import time


class PdfShuffler:
    prefs = {
        'window width': min(700,
                            Gdk.Screen.get_default().get_width() / 2),
        'window height': min(600,
                             Gdk.Screen.get_default().get_height() - 50),
        'initial thumbnail size': 300,
        'initial zoom level': -14,
    }

    MODEL_ROW_INTERN = 1001
Example #37
0
GObject.threads_init()
Gdk.threads_init()

from gi.repository import OsmGpsMap as osmgpsmap
print "using library: %s (version %s)" % (osmgpsmap.__file__,
                                          osmgpsmap._version)

assert osmgpsmap._version == "1.0"


class DummyMapNoGpsPoint(osmgpsmap.Map):
    def do_draw_gps_point(self, drawable):
        pass


GObject.type_register(DummyMapNoGpsPoint)


class DummyLayer(GObject.GObject, osmgpsmap.MapLayer):
    def __init__(self):
        GObject.GObject.__init__(self)

    def do_draw(self, gpsmap, gdkdrawable):
        pass

    def do_render(self, gpsmap):
        pass

    def do_busy(self):
        return False
Example #38
0
File: wm.py Project: chewi/xpra
        # its title (which is supposed to be the name of the window manager).

        # NB, GDK will do strange things to this window.  We don't want to use
        # it for anything.  (In particular, it will call XSelectInput on it,
        # which is fine normally when GDK is running in a client, but since it
        # happens to be using the same connection as we the WM, it will
        # clobber any XSelectInput calls that *we* might have wanted to make
        # on this window.)  Also, GDK might silently swallow all events that
        # are detected on it, anyway.
        self._ewmh_window = GDKX11Window(
            self._root,
            wclass=Gdk.WindowWindowClass.INPUT_ONLY,
            title=self._wm_name)
        prop_set(self._ewmh_window, "_NET_SUPPORTING_WM_CHECK", "window",
                 self._ewmh_window)
        self.root_set("_NET_SUPPORTING_WM_CHECK", "window", self._ewmh_window)
        self.root_set("_NET_WM_NAME", "utf8", self._wm_name)

    def get_net_wm_name(self):
        try:
            return prop_get(self._ewmh_window,
                            "_NET_WM_NAME",
                            "utf8",
                            ignore_errors=False,
                            raise_xerrors=False)
        except Exception as e:
            log.error("error querying _NET_WM_NAME: %s", e)


GObject.type_register(Wm)
Example #39
0
        if row[STATE_COL] == State.CANCELED:
            os.remove(tmp_filepath)
            if os.path.exists(conf_filepath):
                os.remove(conf_filepath)
        elif row[STATE_COL] == State.ERROR:
            self.emit('network-error', row[FSID_COL])
        elif row[STATE_COL] == State.FINISHED:
            self.emit('downloaded', row[FSID_COL])
            os.rename(tmp_filepath, filepath)
            if os.path.exists(conf_filepath):
                os.remove(conf_filepath)

    def destroy(self):
        '''自毁'''
        self.pause()

    def run(self):
        '''实现了Thread的方法, 线程启动入口'''
        self.download()

    def pause(self):
        '''暂停下载任务'''
        self.row[STATE_COL] = State.PAUSED

    def stop(self):
        '''停止下载, 并删除之前下载的片段'''
        self.row[STATE_COL] = State.CANCELED


GObject.type_register(Downloader)
Example #40
0
    def __init__(self, window, core):
        Gtk.Entry.__init__(self)
        self.events = core.events
        self.core = core
        self.win = window

        # we don't want key events to propogate so we stop them in
        # connect_after
        self.connect('key-press-event', TextInput.keypress)
        self.connect_after('key-press-event', lambda *a: True)

        self.connect('activate', TextInput.entered_text, False)


GObject.type_register(TextInput)


def prop_to_Gtk(textview, xxx_todo_changeme):
    (prop, val) = xxx_todo_changeme
    if val == parse_mirc.BOLD:
        val = Pango.Weight.BOLD

    elif val == parse_mirc.UNDERLINE:
        val = Pango.Underline.SINGLE

    return {prop: val}


def word_from_pos(text, pos):
    if text[pos] == ' ':
Example #41
0
    def do_clicked(self):
        dialog = EmojiLangChooser(id=self.__lang,
                                  transient_for=self.get_toplevel())
        id = dialog.run()
        if id != Gtk.ResponseType.APPLY:
            dialog.destroy()
            return
        self.set_lang(dialog.get_selected_lang())
        dialog.destroy()

    def set_lang(self, lang):
        self.__lang = lang
        self.notify("lang")
        self.set_label(IBus.get_language_name(lang))

    def get_lang(self, lang):
        return self.__lang


GObject.type_register(EmojiLangButton)

if __name__ == "__main__":
    dialog = EmojiLangChooser()
    id = dialog.run()
    if id != Gtk.ResponseType.APPLY:
        dialog.destroy()
        import sys
        sys.exit(0)
    print("Selected language:", dialog.get_selected_lang())
Example #42
0
        track = self.book.chapters.first()
        path = os.path.dirname(track.file)
        subprocess.Popen(['xdg-open', path])

    def __on_storage_changed(self, event, message):
        if (event == "storage-online" and not super().get_sensitive()
            ) or event == "external-storage-removed":
            if message in self.book.chapters[0].file:
                super().set_sensitive(True)
                self.box.set_tooltip_text(self.ONLINE_TOOLTIP_TEXT)
        elif (event == "storage-offline" and super().get_sensitive()):
            if message in self.book.chapters[0].file and not self.book.offline:
                super().set_sensitive(False)
                self.box.set_tooltip_text(self.OFFLINE_TOOLTIP_TEXT)
        elif event == "external-storage-added":
            if FilesystemMonitor().is_book_online(self.book.db_object):
                super().set_sensitive(True)
            else:
                super().set_sensitive(False)
                self.box.set_tooltip_text(self.OFFLINE_TOOLTIP_TEXT)
        if event == "external-storage-removed":
            first_track = self.book.chapters[0]
            if first_track and message in first_track.file:
                self.box.set_tooltip_text(self.ONLINE_TOOLTIP_TEXT)


GObject.type_register(AlbumElement)
GObject.signal_new('play-pause-clicked', BookElement, GObject.SIGNAL_RUN_LAST,
                   GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT, ))
GObject.signal_new('open-book-overview', BookElement, GObject.SIGNAL_RUN_LAST,
                   GObject.TYPE_PYOBJECT, (GObject.TYPE_PYOBJECT, ))
Example #43
0
            layout.set_text(text, -1)

            fd = Pango.font_description_from_string("Sans 10")
            layout.set_font_description(fd)

            w, h = layout.get_pixel_size()
            context.move_to(cell_area.x, cell_area.y)
            context.rel_move_to(70 - w, (height - h) / 2)

            PangoCairo.show_layout(context, layout)

    def do_get_size(self, widget, cell_area=None):
        return (0, 0, width, height)


GObject.type_register(StrengthCellRenderer)

################################################################################
# StrengthCellRenderer functions                                               #
################################################################################

from math import ceil


def stoplightColor(x):
    interp = lambda y0, yh, y1: y0 + (y1 + 4 * yh - 3 * y0) * x + (
        -4 * yh + 2 * y0) * x * x
    r = interp(239, 252, 138) / 255
    g = interp(41, 233, 226) / 255
    b = interp(41, 79, 52) / 255
    return r, g, b
Example #44
0
def register_elements(plugin):
    gtype = GObject.type_register(Freezer)
    Gst.Element.register(plugin, 'freezer', 0, gtype)
    return True
Example #45
0
    def __init__(self, journal):

        self.journal = journal

        # Load Glade file.
        # TODO: Remove workaround for Windows once it is no longer needed.
        self.gladefile = os.path.join(filesystem.files_dir,
                                      'main_window.glade')
        self.builder = Gtk.Builder()
        # Register GtkSourceView so builder can use it when loading the file
        # https://stackoverflow.com/q/10524196/434217
        GObject.type_register(GtkSource.View)
        if filesystem.IS_WIN:
            import xml.etree.ElementTree as ET
            tree = ET.parse(self.gladefile)
            for node in tree.iter():
                if 'translatable' in node.attrib:
                    node.text = _(node.text)
            xml_text = ET.tostring(tree.getroot(), encoding='unicode')
            self.builder = Gtk.Builder.new_from_string(xml_text, len(xml_text))
        else:
            self.builder.set_translation_domain('rednotebook')
            self.builder.add_from_file(self.gladefile)

        # Get the main window and set the icon
        self.main_frame = self.builder.get_object('main_frame')
        self.main_frame.set_title('RedNotebook')
        icon = GdkPixbuf.Pixbuf.new_from_file(
            os.path.join(filesystem.frame_icon_dir, 'rednotebook.svg'))
        self.main_frame.set_icon(icon)

        self.is_fullscreen = False

        self.uimanager = Gtk.UIManager()

        # Before fetching the menubar, add all menus and actiongroups.
        # Setup the toolbar items first to avoid warnings for missing actions.
        insert_menu.InsertMenu(self)
        format_menu.FormatMenu(self)
        self.menubar_manager = MainMenuBar(self)
        self.menubar = self.menubar_manager.get_menu_bar()
        main_vbox = self.builder.get_object('vbox3')
        main_vbox.pack_start(self.menubar, False, False, 0)
        main_vbox.reorder_child(self.menubar, 0)

        self.undo_action = self.uimanager.get_action('/MainMenuBar/Edit/Undo')
        self.redo_action = self.uimanager.get_action('/MainMenuBar/Edit/Redo')

        self.calendar = MainCalendar(self.journal,
                                     self.builder.get_object('calendar'))
        self.day_text_field = DayEditor(
            self.builder.get_object('day_text_view'))
        self.day_text_field.connect('can-undo-redo-changed',
                                    self.update_undo_redo_buttons)
        self.update_undo_redo_buttons()
        self.day_text_field.day_text_view.grab_focus()
        can_spell_check = self.day_text_field.can_spell_check()
        spell_check_enabled = bool(self.journal.config.read('spellcheck'))
        for actiongroup in self.menubar_manager.uimanager.get_action_groups():
            if actiongroup.get_name() == 'MainMenuActionGroup':
                for action in actiongroup.list_actions():
                    if action.get_name() == 'CheckSpelling':
                        action.set_sensitive(can_spell_check)
                        action.set_active(spell_check_enabled
                                          and can_spell_check)
        self.day_text_field.enable_spell_check(spell_check_enabled)

        self.statusbar = Statusbar(self.builder.get_object('statusbar'))

        self.new_entry_dialog = NewEntryDialog(self)

        self.categories_tree_view = categories.CategoriesTreeView(
            self.builder.get_object('categories_tree_view'), self)

        self.new_entry_dialog.categories_tree_view = self.categories_tree_view

        self.back_one_day_button = self.builder.get_object(
            'back_one_day_button')
        self.today_button = self.builder.get_object('today_button')
        self.forward_one_day_button = self.builder.get_object(
            'forward_one_day_button')

        self.edit_pane = self.builder.get_object('edit_pane')
        self.text_vbox = self.builder.get_object('text_vbox')

        use_cef = True
        if browser.WebKit2:

            class Preview(browser.HtmlView):
                def __init__(self, journal):
                    browser.HtmlView.__init__(self)
                    self.journal = journal
                    self.internal = True

                def show_day(self, new_day):
                    html = self.journal.convert(new_day.text, 'xhtml')
                    self.load_html(html)

                def shutdown(self):
                    pass

            self.html_editor = Preview(self.journal)
            self.html_editor.connect('button-press-event',
                                     self.on_browser_clicked)
            self.html_editor.connect('decide-policy',
                                     self.on_browser_decide_policy)
            self.text_vbox.pack_start(self.html_editor, True, True, 0)
            self.html_editor.set_editable(False)
        elif browser_cef.cef and use_cef:

            class Preview(browser_cef.HtmlView):
                def __init__(self, journal):
                    super().__init__()
                    self.journal = journal
                    self.internal = True

                def show_day(self, new_day):
                    html = self.journal.convert(new_day.text, 'xhtml')
                    self.load_html(html)

                def highlight(self, text):
                    pass

            self.html_editor = Preview(self.journal)
            self.text_vbox.pack_start(self.html_editor, True, True, 0)
        else:
            self.html_editor = mock.MagicMock()
            self.html_editor.internal = False
            preview_button = self.builder.get_object('preview_button')
            preview_button.set_label(_('Preview in Browser'))

        self.html_editor.hide()

        self.preview_mode = False

        # Let the edit_paned respect its childs size requests
        self.edit_pane.child_set_property(self.text_vbox, 'shrink', False)

        # Add InfoBar.
        self.infobar = customwidgets.Info()
        self.text_vbox.pack_start(self.infobar, False, False, 0)
        self.text_vbox.reorder_child(self.infobar, 1)

        # Add TemplateBar.
        self.template_bar = customwidgets.TemplateBar()
        self.text_vbox.pack_start(self.template_bar, False, False, 0)
        self.text_vbox.reorder_child(self.template_bar, 1)
        self.template_bar.hide()

        self.load_values_from_config()

        self.main_frame.show()

        self.options_manager = OptionsManager(self)
        self.export_assistant = ExportAssistant(self.journal)
        self.export_assistant.set_transient_for(self.main_frame)

        self.setup_clouds()
        self.setup_search()

        # Create an event->method dictionary and connect it to the widgets
        dic = {
            'on_back_one_day_button_clicked':
            self.on_back_one_day_button_clicked,
            'on_today_button_clicked': self.on_today_button_clicked,
            'on_forward_one_day_button_clicked':
            self.on_forward_one_day_button_clicked,
            'on_preview_button_clicked': self.on_preview_button_clicked,
            'on_edit_button_clicked': self.on_edit_button_clicked,
            'on_main_frame_configure_event':
            self.on_main_frame_configure_event,
            'on_main_frame_window_state_event':
            self.on_main_frame_window_state_event,
            'on_add_new_entry_button_clicked':
            self.on_add_new_entry_button_clicked,
            'on_main_frame_delete_event': self.on_main_frame_delete_event,

            # connect_signals can only be called once, it seems
            # Otherwise RuntimeWarnings are raised: RuntimeWarning: missing handler '...'
        }
        self.builder.connect_signals(dic)

        self.set_shortcuts()
        self.setup_stats_dialog()

        self.template_manager = templates.TemplateManager(self)
        self.template_manager.make_empty_template_files()
        self.setup_template_menu()

        self.set_tooltips()
        self.setup_tray_icon()

        # Show/hide the "tags" panel on the right.
        self.builder.get_object('annotations_pane').set_visible(
            self.journal.config.read('showTagsPane'))
Example #46
0
    def contacts_window(self, widget):
        import contacts
        contacts.GUI(self)

    def database_tools_activated(self, widget):
        from db import database_tools
        database_tools.GUI(self.db, False)

    def new_purchase_order(self, widget=None):
        import purchase_order_window
        purchase_order_window.PurchaseOrderGUI(self)

    def new_invoice(self, widget=None):
        global invoice_window
        if invoice_window == None:
            import invoice_window
        invoice_window.InvoiceGUI(self)


GObject.type_register(MainGUI)


def main_gui():

    app = MainGUI()
    Gtk.main()


if __name__ == "__main__":
    sys.exit(main_gui())
Example #47
0
 def register(cls):
   """Register this class as a Gtk widget."""
   GObject.type_register(SettingsDialog)
Example #48
0
        cr.set_source_rgb(1, 1, 1)
        cr.paint()

        for _, dic in self.state["players"].items():
            cr.set_source_rgb(.8,.8,.8)
            cr.rectangle(dic["x"], dic["y"],self.state["player_size"],self.state["player_size"])
            cr.fill()

        for pos, _ in self.state["fruits"].items():
            pos = [int(x) for x in pos[1:-1].split(',')]
            cr.set_source_rgb(0,1,0)
            cr.rectangle(pos[0], pos[1],self.state["player_size"],self.state["player_size"])
            cr.fill()

        cr.set_source_rgb(0, 0, 0)
        x, y = self.state["players"][self.id]["x"], self.state["players"][self.id]["y"]
        cr.rectangle(x, y,self.state["player_size"],self.state["player_size"])
        cr.fill()

    def on_key_press_event(self, widget, event):
        key = Gdk.keyval_name(event.keyval).upper()
        if key == "ESCAPE":
            self.window.get_application().on_quit(self.window)
        else:
            self.emit("move", key)

GObject.type_register(GameHandler)
GObject.signal_new("get_state", GameHandler, GObject.SIGNAL_ACTION, None, ())
GObject.signal_new("get_id", GameHandler, GObject.SIGNAL_ACTION, str, ())
GObject.signal_new("get_nick", GameHandler, GObject.SIGNAL_ACTION, str, ())
GObject.signal_new("move", GameHandler, GObject.SIGNAL_ACTION, None, (str,))
Example #49
0
            Gdk.KEY_Down: (0, +v_offset),
        }
        if event.keyval not in ops:
            return False
        offset = ops[event.keyval]
        return self.__scroll(offset)

    def __on_mouse_leave(self, _, event):
        self.mouse_position = (0, 0)

    def __apply_scrolling(self):
        if (self.__scroll_origin == (0, 0) or self.mouse_position == (0, 0)):
            # no scrolling for now
            return
        SCROLLING_REDUCTION_FACTOR = 2
        scroll_x = self.mouse_position[0] - self.__scroll_origin[0]
        scroll_y = self.mouse_position[1] - self.__scroll_origin[1]
        scroll_x /= SCROLLING_REDUCTION_FACTOR
        scroll_y /= SCROLLING_REDUCTION_FACTOR
        scroll_x = max(min(scroll_x, 50), -50)
        scroll_y = max(min(scroll_y, 50), -50)
        return self.__scroll((scroll_x, scroll_y))

    def __get_position(self):
        return (int(self.hadjustment.get_value()),
                int(self.vadjustment.get_value()))

    position = property(__get_position)

GObject.type_register(Canvas)
Example #50
0
        # pylint: disable-msg=W0613
        """handle keypressed in Gtk.Entry"""
        key = Gdk.keyval_name(event.keyval)
        if key == 'Escape':
            self._entry_to_label(None, None)

    def _on_entry_buttonpress(self, widget, event):
        """handle button events in Gtk.Entry."""
        # Block right clicks to avoid a deadlock.
        # The correct solution here would be for _entry_to_label to trigger a
        # deferred execution handler and for that handler to check if focus is
        # in a GtkMenu. The problem being that we are unable to get a context
        # menu for the GtkEntry.
        if event.button == 3:
            return True

    def modify_fg(self, state, color):
        """Set the label foreground"""
        self._label.modify_fg(state, color)

    def is_custom(self):
        """Return whether or not we have a custom string set"""
        return (self._custom)

    def set_custom(self):
        """Set the customness of the string to True"""
        self._custom = True


GObject.type_register(EditableLabel)
Example #51
0
#  $ export GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD/plugin:$PWD/examples/plugins
#  $ GST_DEBUG=python:4 gst-launch-1.0 fakesrc num-buffers=10 ! identity_py ! fakesink

import gi
gi.require_version('GstBase', '1.0')

from gi.repository import Gst, GObject, GstBase
Gst.init(None)

#
# Simple Identity element created entirely in python
#
class Identity(GstBase.BaseTransform):
    __gstmetadata__ = ('Identity Python','Transform', \
                      'Simple identity element written in python', 'Marianna S. Buschle')

    __gsttemplates__ = (Gst.PadTemplate.new("src",
                                           Gst.PadDirection.SRC,
                                           Gst.PadPresence.ALWAYS,
                                           Gst.Caps.new_any()),
                       Gst.PadTemplate.new("sink",
                                           Gst.PadDirection.SINK,
                                           Gst.PadPresence.ALWAYS,
                                           Gst.Caps.new_any()))

    def do_transform_ip(self, buffer):
        Gst.info("timestamp(buffer):%s" % (Gst.TIME_ARGS(buffer.pts)))
        return Gst.FlowReturn.OK

GObject.type_register(Identity)
__gstelementfactory__ = ("identity_py", Gst.Rank.NONE, Identity)
Example #52
0
    def __init__(self):

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

        style_provider = Gtk.CssProvider()
        with open('./custom.css', 'rb') as f:
            css_data = f.read()

        style_provider.load_from_data(css_data)
        Gtk.StyleContext.add_provider_for_screen(
            Gdk.Screen.get_default(), style_provider,
            Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

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

        self.search_context = GtkSource.SearchContext.new(
            self.source_buffer, None)
        self.search_settings = self.search_context.get_settings()
        self.search_settings.set_wrap_around(True)
        self.search_mark = Gtk.TextMark()

        self.window = self.builder.get_object('window')
        self.statusbar = self.builder.get_object('statusbar1')
        self.search_grid = self.builder.get_object('grid1')

        self.terminal = Vte.Terminal()
        ino_dir = subprocess.check_output(["which", "ino"])
        self.ino = ino_dir.decode("utf-8").strip('\n')
        self.terminal.set_scroll_on_output(True)
        self.builder.get_object('scrolledwindow2').add(self.terminal)
        self.builder.get_object('comboboxtext1').set_active(0)
        self.window.show_all()

        config = configparser.ConfigParser()
        config.read('./preferences.ini')
        self.path = config['paths']['toolpath']
        if not os.path.exists(self.path):
            self.show_message("Folder '%s' does not exist, \nwhich should "
                              "contain the Arduino toolchain" % (self.path, ))
        path_string = "Arduino folder is %s" % self.path
        self.builder.get_object('toolpath_directory_label').set_label(
            path_string)
        self.populate_sketch_menu()
        GLib.idle_add(self.populate_examples)

        self.passed_filename_check()
        self.load_code_from_file()

        sort = Gtk.SortType.ASCENDING
        self.builder.get_object('function_store').set_sort_column_id(1, sort)
        self.builder.get_object('radiomenuitem2').set_active(True)
Example #53
0
            raise

        img = self.scan_session.images[-1]
        self.emit('scan-done', img)
        logger.info("Scan done")
        del self.scan_session

    def stop(self, will_resume=False):
        self.can_run = False
        self._stop_wait()
        if not will_resume:
            self.scan_session.scan.cancel()
            del self.scan_session


GObject.type_register(JobScan)


class JobFactoryScan(JobFactory):
    def __init__(self, scan_workflow):
        JobFactory.__init__(self, "Scan")
        self.scan_workflow = scan_workflow

    def make(self, scan_session):
        job = JobScan(self, next(self.id_generator), scan_session)
        job.connect(
            "scan-started",
            lambda job: GLib.idle_add(self.scan_workflow.on_scan_start))
        job.connect(
            "scan-info", lambda job, x, y: GLib.idle_add(
                self.scan_workflow.on_scan_info, x, y))
Example #54
0
        if not success:
            raise RuntimeError("Could not map buffer")
        else:
            ctypes_region = ctypes.cast(
                mapping.data, ctypes.POINTER(ctypes.c_byte * mapping.size))
            raw_ptr = ctypes_region.contents

            # create ctypes array from the raw pointer
            ptr = (ctypes.c_byte * mapping.size).from_address(
                ctypes.addressof(raw_ptr))

            # cast array to uint32 to work with RGBA/BGRx data
            # FIXME: hardcode caps to only allow 4-byte modes?
            ptr = ctypes.cast(ptr, ctypes.POINTER(ctypes.c_uint8))
            np_arr = np.ctypeslib.as_array(ptr, shape=(height, width, 4))

            cv_img = cv2.imdecode(np_arr, cv2.IMREAD_UNCHANGED)
            #self.__mxnet_detector__.process(cv_img, np_arr)
            self.__mxnet_detector__.process(np_arr, np_arr)

            if False:
                cv2.rectangle(np_arr, (10, 10), (100, 100), (0, 255, 0), 4)

            _libgst.gst_buffer_unmap(pbuffer, mapping)

        mo.refcount = saved_refcount
        return Gst.FlowReturn.OK

GObject.type_register(GstMxnetFace)
__gstelementfactory__ = ("gst_mxnet_face", Gst.Rank.NONE, GstMxnetFace)
Example #55
0
        ssid = model[iterator][0]
        parent = model.iter_parent(iterator)
        if parent and self.wifi_model.is_connected(model[parent][0], ssid):
            return True
        else:
            return False

    def connect_to_selection(self, passphrase):
        model, iterator = self.get_selection().get_selected()
        ssid = model[iterator][0]
        parent = model.iter_parent(iterator)
        if parent:
            self.wifi_model.connect_to_ap(model[parent][0], ssid, passphrase)


GObject.type_register(NetworkManagerTreeView)


class NetworkManagerWidget(Gtk.Box):
    __gtype_name__ = 'NetworkManagerWidget'
    __gsignals__ = {
        'connection': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE,
                       (GObject.TYPE_UINT, )),
        'selection_changed':
        (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ()),
        'pw_validated': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE,
                         (GObject.TYPE_BOOLEAN, ))
    }

    def __init__(self):
        Gtk.Box.__init__(self)
Example #56
0
    ############################################################################

    def _munge_raw_selection_to_wire(self, target, dtype, dformat, data):
        if dformat == 32 and dtype in ("ATOM", "ATOM_PAIR"):
            return "atoms", self.remote_targets(xatoms_to_strings(data))
        return super()._munge_raw_selection_to_wire(target, dtype, dformat,
                                                    data)

    def _munge_wire_selection_to_raw(self, encoding, dtype, dformat, data):
        if encoding == "atoms":
            return strings_to_xatoms(self.local_targets(data))
        return super()._munge_wire_selection_to_raw(encoding, dtype, dformat,
                                                    data)


GObject.type_register(X11Clipboard)


class ClipboardProxy(ClipboardProxyCore, GObject.GObject):

    __gsignals__ = {
        "xpra-client-message-event": one_arg_signal,
        "xpra-selection-request": one_arg_signal,
        "xpra-selection-clear": one_arg_signal,
        "xpra-property-notify-event": one_arg_signal,
        "xpra-xfixes-selection-notify-event": one_arg_signal,
        #
        "send-clipboard-token": one_arg_signal,
        "send-clipboard-request": n_arg_signal(2),
    }
Example #57
0
                                  shell=shell,
                                  name=_("Python Source"),
                                  query_model=model)
        self.source.setup()
        group = RB.DisplayPageGroup.get_by_id("library")
        shell.append_display_page(self.source, group)

    def do_deactivate(self):
        print "deactivating sample python plugin"
        self.source.delete_thyself()
        self.source = None


class PythonSource(RB.Source):
    def __init__(self, **kwargs):
        super(PythonSource, self).__init__(kwargs)

    def setup(self):
        shell = self.props.shell
        songs = RB.EntryView(db=shell.props.db,
                             shell_player=shell.props.shell_player,
                             is_drag_source=False,
                             is_drag_dest=False)
        songs.append_column(RB.EntryViewColumn.TITLE, True)
        songs.set_model(self.props.query_model)
        songs.show_all()
        self.pack_start(songs, expand=True, fill=True, padding=0)


GObject.type_register(PythonSource)
Example #58
0

class BaseText(Gtk.TextView):
    __gtype_name__ = 'BaseText'

    def __init__(self, parent):
        super(BaseText, self).__init__()
        self.buffer = self.get_buffer()

        self._parent = parent
        self.modify_font(Pango.FontDescription(parent.font))
        self.set_editable(False)
        self.texttag = self.buffer.create_tag(None)


GObject.type_register(BaseText)


class OffsetText(BaseText):
    __gtype_name__ = 'OffsetText'

    def __init__(self, parent):
        super(OffsetText, self).__init__(parent)
        self.off_len = 1
        self.connect('button-press-event', self.__on_button_press)
        self.connect('realize', self.__on_realize)

        self.set_cursor_visible(False)
        self.texttag.set_property('weight', Pango.Weight.BOLD)

    def __on_button_press(self, widget, evt):
Example #59
0
        try:
            logger.info("Looking for scan devices ...")
            sys.stdout.flush()
            devices = pyinsane2.get_devices()
            for device in devices:
                selected = (self.__selected_devid == device.name)
                name = self.__get_dev_name(device)
                logger.info("Device found: [%s] -> [%s]" % (name, device.name))
                sys.stdout.flush()
                self.emit('device-found', name, device.name, selected)
            logger.info("End of scan for device")
        finally:
            self.emit("device-finding-end")


GObject.type_register(JobDeviceFinder)


class JobFactoryDeviceFinder(JobFactory):
    def __init__(self, settings_win, selected_devid):
        JobFactory.__init__(self, "DeviceFinder")
        self.__selected_devid = selected_devid
        self.__settings_win = settings_win

    def make(self):
        job = JobDeviceFinder(self, next(self.id_generator),
                              self.__selected_devid)
        job.connect(
            'device-finding-start', lambda job: GLib.idle_add(
                self.__settings_win.on_device_finding_start_cb))
        job.connect(
Example #60
0
        self._props = props
        self._root = root_window
        self._saved_event_mask = self._root.get_events()
        self._root.set_events(self._saved_event_mask
                              | Gdk.EventMask.PROPERTY_CHANGE_MASK)
        add_event_receiver(self._root, self)

    def cleanup(self):
        #this must be called from the UI thread!
        remove_event_receiver(self._root, self)
        self._root.set_events(self._saved_event_mask)

    def __repr__(self):  #pylint: disable=arguments-differ
        return "XRootPropWatcher"

    def do_xpra_property_notify_event(self, event):
        log("XRootPropWatcher.do_xpra_property_notify_event(%s)", event)
        if event.atom in self._props:
            self.do_notify(str(event.atom))

    def do_notify(self, prop):
        log("XRootPropWatcher.do_notify(%s)", prop)
        self.emit("root-prop-changed", prop)

    def notify_all(self):
        for prop in self._props:
            self.do_notify(prop)


GObject.type_register(XRootPropWatcher)