def reload (self): self.clear () profiles = userdb.get_database ().get_profiles () profiles.sort () for profile in profiles: self.set (self.append (), self.COLUMN_NAME, profile)
def __init__ (self, profile, parent): self.profile = profile self.userdb = userdb.get_database () apply_to_all = self.userdb.get_default_profile (False) == profile glade_file = os.path.join (GLADEDIR, "sabayon.glade") self.xml = gtk.glade.XML (glade_file, "users_dialog", PACKAGE) self.dialog = self.xml.get_widget ("users_dialog") self.dialog.set_transient_for (parent) self.dialog.set_default_response (gtk.RESPONSE_CLOSE) self.dialog.set_icon_name ("sabayon") self.dialog.set_title (_("Users for profile %s")%profile) self.close_button = self.xml.get_widget ("users_close_button") self.help_button = self.xml.get_widget ("users_help_button") self.help_button.hide () self.all_check = self.xml.get_widget ("users_all_check") self.all_check.set_active (apply_to_all) self.all_check.connect ("toggled", self.__all_check_toggled) self.users_model = UsersModel (self.userdb, self.profile) self.users_list_scroll = self.xml.get_widget ("users_list_scroll") self.users_list = self.xml.get_widget ("users_list") self.users_list.set_model (self.users_model) self.users_list.set_sensitive (not apply_to_all) c = gtk.TreeViewColumn (_("Name"), gtk.CellRendererText (), text = UsersModel.COLUMN_NAME) c.set_sort_column_id(UsersModel.COLUMN_NAME) self.users_list.append_column (c) self.users_model.set_sort_column_id(UsersModel.COLUMN_NAME, gtk.SORT_ASCENDING) toggle = gtk.CellRendererToggle () toggle.connect ("toggled", self.__on_use_toggled) c = gtk.TreeViewColumn (_("Use This Profile")) c.pack_start (toggle, False) c.set_attributes (toggle, active = UsersModel.COLUMN_APPLY) self.users_list.append_column (c) response = self.dialog.run () self.dialog.hide ()
def __make_unique_profile_name (self, profile_name): profiles = userdb.get_database ().get_profiles () name = profile_name idx = 1 while name in profiles: # # Translators: this string specifies how a profile # name is concatenated with an integer # to form a unique profile name e.g. # "Artist Workstation (5)" # name = _("%s (%s)") % (profile_name, idx) idx += 1 return name
def __delete_currently_selected (self): (model, selected) = self.profiles_list.get_selection ().get_selected () if selected: if model.iter_next (selected): select = model[model.iter_next (selected)][ProfilesModel.COLUMN_NAME] else: select = None row = model.get_iter_first () while row and model.iter_next (row): next = model.iter_next (row) if model.get_string_from_iter (next) == model.get_string_from_iter (selected): select = model[row][ProfilesModel.COLUMN_NAME] break row = next profile_name = model[selected][ProfilesModel.COLUMN_NAME] dprint ("Deleting '%s'", profile_name) os.remove (_get_profile_path_for_name (profile_name)) db = userdb.get_database () if db.get_default_profile (False) == profile_name: db.set_default_profile (None) for user in db.get_users (): if db.get_profile (user, False, True) == profile_name: db.set_profile (user, None) self.profiles_model.reload () row = None if select: row = self.profiles_model.get_iter_first () while row: if select == model[row][ProfilesModel.COLUMN_NAME]: break row = model.iter_next (row) if not row: row = self.profiles_model.get_iter_first () if row: self.profiles_list.get_selection ().select_iter (row)