def __fill_liststore (self):
        applets = bonobo.activation.query ("has_all (repo_ids, ['IDL:Bonobo/Control:1.0', 'IDL:GNOME/Vertigo/PanelAppletShell:1.0'])")

        languages = get_language_names ()

        for applet in applets:
            name = None
            icon = None
            # Workaround: bonobo_server_info_prop_lookup () is not wrapped
            for prop in applet.props:
                bestname = -1
                if prop.name[:5] == "name-" and prop.name[5:] in languages:
                    if bestname > languages.index (prop.name[5:]) or bestname == -1:
                        name = prop.v.value_string
                elif prop.name == "name" and bestname == -1:
                    name = prop.v.value_string
                elif prop.name == "panel:icon":
                    icon = prop.v.value_string
            iter = self.liststore.append ()

            if name == None:
                name = applet.iid
            else:
                name = name + " (" + applet.iid + ")"

            self.liststore.set (iter,
                                self.COLUMN_IID, applet.iid,
                                self.COLUMN_NAME, name,
                                self.COLUMN_ICON_NAME, icon,
                                self.COLUMN_ICON, icons.load_icon (self.icon_theme, icon))
 def update_icon (model, path, iter, data):
     if model[iter][self.COLUMN_ICON_NAME] != "":
         model[iter][self.COLUMN_ICON] = icons.load_icon (self.icon_theme, model[iter][self.COLUMN_ICON_NAME])