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)
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)
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