Esempio n. 1
0
 def set_picture_from_file(self, path):
     file = Gio.File.new_for_path(path)
     file_icon = Gio.FileIcon(file=file)
     image = Gtk.Image.new_from_gicon(file_icon, Gtk.IconSize.DIALOG)
     if self.menu_pictures_size is not None:
         image.set_pixel_size(self.menu_pictures_size)
     self.set_image(image)
Esempio n. 2
0
 def _on_sections_synchronized (self, sections_model, *args):
     # Column0: display name
     # Column1: GIcon in string format
     sections_model.clear ()
     for device in g15devices.find_all_devices():
         if device.model_id == 'virtual':
             icon_file = g15icontools.get_icon_path(["preferences-system-window", "preferences-system-windows", "gnome-window-manager", "window_fullscreen"])
         else:
             icon_file = g15icontools.get_app_icon(self._gconf_client,  device.model_id)
         icon = Gio.FileIcon(Gio.File(icon_file))
         sections_model.append (device.model_fullname,
                                icon.to_string())
def test_list_properties():

    def find_param(props, name):
        for param in props:
            if param.name == name:
                return param
        return

    list_props = GObject.list_properties

    props = list_props(Gio.Action)
    param = find_param(props, "enabled")
    assert param
    assert param.value_type == GObject.TYPE_BOOLEAN
    assert list_props("GAction") == list_props(Gio.Action)
    assert list_props(Gio.Action.__gtype__) == list_props(Gio.Action)

    props = list_props(Gio.SimpleAction)
    assert find_param(props, "enabled")

    def names(props):
        return [p.name for p in props]

    assert (set(names(list_props(Gio.Action))) <=
            set(names(list_props(Gio.SimpleAction))))

    props = list_props(Gio.FileIcon)
    param = find_param(props, "file")
    assert param
    assert param.value_type == Gio.File.__gtype__

    assert list_props("GFileIcon") == list_props(Gio.FileIcon)
    assert list_props(Gio.FileIcon.__gtype__) == list_props(Gio.FileIcon)
    assert list_props(Gio.FileIcon(
        file=Gio.File.new_for_path('.'))) == list_props(Gio.FileIcon)

    for obj in [Gio.ActionEntry, Gio.DBusError, 0, object()]:
        with pytest.raises(TypeError):
            list_props(obj)
Esempio n. 4
0
    def __init__(self):
        try:
            self.builder = Gtk.Builder()
            self.builder.add_from_file(
                "/usr/lib/sagarmatha-settings-users/sagarmatha-settings-users.ui"
            )
            self.window = self.builder.get_object("main_window")
            self.window.connect("destroy", Gtk.main_quit)

            self.window.set_title(_("Users and Groups"))
            self.builder.get_object("label_users").set_label(_("Users"))
            self.builder.get_object("label_groups").set_label(_("Groups"))

            self.builder.get_object("button_add_user").connect(
                "clicked", self.on_user_addition)
            self.builder.get_object("button_delete_user").connect(
                "clicked", self.on_user_deletion)
            self.builder.get_object("button_add_group").connect(
                "clicked", self.on_group_addition)
            self.builder.get_object("button_edit_group").connect(
                "clicked", self.on_group_edition)
            self.builder.get_object("button_delete_group").connect(
                "clicked", self.on_group_deletion)

            self.users = Gtk.TreeStore(object, GdkPixbuf.Pixbuf, str)
            self.users.set_sort_column_id(2, Gtk.SortType.ASCENDING)

            self.groups = Gtk.TreeStore(int, str)
            self.groups.set_sort_column_id(1, Gtk.SortType.ASCENDING)

            self.users_treeview = self.builder.get_object("treeview_users")
            self.groups_treeview = self.builder.get_object("treeview_groups")

            self.users_treeview.get_selection().connect(
                "changed", self.on_user_selection)
            self.groups_treeview.get_selection().connect(
                "changed", self.on_group_selection)

            column = Gtk.TreeViewColumn()
            cell = Gtk.CellRendererPixbuf()
            column.pack_start(cell, True)
            column.add_attribute(cell, 'pixbuf', INDEX_USER_PICTURE)
            self.users_treeview.append_column(column)

            column = Gtk.TreeViewColumn()
            cell = Gtk.CellRendererText()
            column.pack_start(cell, True)
            column.add_attribute(cell, 'markup', INDEX_USER_DESCRIPTION)
            self.users_treeview.append_column(column)

            column = Gtk.TreeViewColumn()
            cell = Gtk.CellRendererText()
            column.pack_start(cell, True)
            column.add_attribute(cell, 'text', INDEX_GROUPNAME)
            column.set_sort_column_id(1)
            self.groups_treeview.append_column(column)

            self.builder.get_object("button_delete_user").set_sensitive(False)
            self.builder.get_object("button_edit_group").set_sensitive(False)
            self.builder.get_object("button_delete_group").set_sensitive(False)

            self.face_button = Gtk.Button()
            self.face_image = Gtk.Image()
            self.face_button.set_image(self.face_image)
            self.face_image.set_from_file(
                "/usr/share/sagarmatha/faces/user-generic.png")
            self.face_button.set_alignment(0.0, 0.5)
            self.face_button.set_tooltip_text(_("Click to change the picture"))

            self.menu = Gtk.Menu()

            separator = Gtk.SeparatorMenuItem()
            face_browse_menuitem = Gtk.MenuItem(
                _("Browse for more pictures..."))
            face_browse_menuitem.connect(
                'activate', self._on_face_browse_menuitem_activated)
            self.face_button.connect("button-release-event", self.menu_display)

            row = 0
            col = 0
            num_cols = 4
            face_dirs = ["/usr/share/sagarmatha/faces"]
            for face_dir in face_dirs:
                if os.path.exists(face_dir):
                    pictures = sorted(os.listdir(face_dir))
                    for picture in pictures:
                        path = os.path.join(face_dir, picture)
                        file = Gio.File.new_for_path(path)
                        file_icon = Gio.FileIcon().new(file)
                        image = Gtk.Image.new_from_gicon(
                            file_icon, Gtk.IconSize.DIALOG)
                        menuitem = Gtk.MenuItem()
                        menuitem.add(image)
                        menuitem.connect('activate',
                                         self._on_face_menuitem_activated,
                                         path)
                        self.menu.attach(menuitem, col, col + 1, row, row + 1)
                        col = (col + 1) % num_cols
                        if (col == 0):
                            row = row + 1

            row = row + 1

            self.menu.attach(separator, 0, 4, row, row + 1)
            self.menu.attach(face_browse_menuitem, 0, 4, row + 2, row + 3)

            self.account_type_combo = Gtk.ComboBoxText()
            self.account_type_combo.append_text(_("Standard"))
            self.account_type_combo.append_text(_("Administrator"))
            self.account_type_combo.connect("changed",
                                            self._on_accounttype_changed)

            self.realname_entry = EditableEntry()
            self.realname_entry.connect("changed", self._on_realname_changed)
            self.realname_entry.set_tooltip_text(_("Click to change the name"))

            self.password_mask = Gtk.Label()
            self.password_mask.set_alignment(0.0, 0.5)
            self.password_button = Gtk.Button()
            self.password_button.add(self.password_mask)
            self.password_button.set_relief(Gtk.ReliefStyle.NONE)
            self.password_button.set_tooltip_text(
                _("Click to change the password"))
            self.password_button.connect('activate',
                                         self._on_password_button_clicked)
            self.password_button.connect('released',
                                         self._on_password_button_clicked)

            self.groups_label = Gtk.Label()
            self.groups_label.set_line_wrap(True)
            self.groups_label.set_alignment(0, 0.5)
            self.groups_button = Gtk.Button()
            self.groups_button.add(self.groups_label)
            self.groups_button.set_relief(Gtk.ReliefStyle.NONE)
            self.groups_button.set_tooltip_text(
                _("Click to change the groups"))
            self.groups_button.connect("clicked",
                                       self._on_groups_button_clicked)

            box = Gtk.Box()
            box.pack_start(self.face_button, False, False, 0)

            table = DimmedTable()
            table.add_labels([
                _("Picture"),
                _("Account Type"),
                _("Name"),
                _("Password"),
                _("Groups")
            ])
            table.add_controls([
                box, self.account_type_combo, self.realname_entry,
                self.password_button, self.groups_button
            ])

            self.builder.get_object("box_users").add(table)

            self.accountService = AccountsService.UserManager.get_default()
            self.accountService.connect('notify::is-loaded',
                                        self.on_accounts_service_loaded)

            self.load_groups()

            self.window.show_all()

            self.builder.get_object("box_users").hide()

        except Exception, detail:
            print detail