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)