def __init__ (self, profile, parent): self.profile = profile self.userdb = systemdb.get_user_database () self.ui_objects_list = [ "users_dialog", "users_close_button", "users_all_check", "users_list_scroll", "users_list" ] apply_to_all = self.userdb.get_default_profile (False) == profile self.builder = gtk.Builder() self.builder.set_translation_domain(PACKAGE) self.builder.add_objects_from_file(os.path.join (BUILDERDIR, "sabayon.ui"), self.ui_objects_list) self.dialog = self.builder.get_object ("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.builder.get_object ("users_close_button") self.all_check = self.builder.get_object ("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.builder.get_object ("users_list_scroll") self.users_list = self.builder.get_object ("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 = systemdb.get_user_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 = systemdb.get_user_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)
def reload(self): self.clear() profiles = systemdb.get_user_database().get_profiles() profiles.sort() for profile in profiles: self.set(self.append(), self.COLUMN_NAME, profile)