src/updatemanager.py
changeset 1168 6ca02b55d252
parent 1164 978947aae45f
child 1204 0d3de1d0a4d8
--- a/src/updatemanager.py	Thu Jun 18 14:47:53 2009 -0700
+++ b/src/updatemanager.py	Fri Jun 19 07:59:36 2009 +0100
@@ -63,7 +63,6 @@
 
 IMAGE_DIRECTORY_DEFAULT = "/"   # Image default directory
 IMAGE_DIR_COMMAND = "svcprop -p update/image_dir svc:/application/pkg/update"
-CLIENT_API_VERSION = gui_misc.get_client_api_version()
 
 ICON_LOCATION = "/usr/share/update-manager/icons"
 PKG_CLIENT_NAME = "updatemanager" # API client name
@@ -404,10 +403,11 @@
                             "Check updatemanager.py signals") % error
 
                 self.pr = GUIProgressTracker(self)
-                self.api_obj = None
  
                 self.w_um_dialog.show_all()
                 self.w_um_dialog.resize(620, 500)
+                self.api_obj = gui_misc.get_api_object(self.__get_image_path(),
+                    progress.NullProgressTracker(), self.w_um_dialog)
 
         def __set_cancel_state(self, status):
                 if self.install_error:
@@ -695,11 +695,13 @@
                         gobject.TYPE_STRING,      # UM_STEM                        
                         )
 
-                image_obj = self.__get_image_obj_from_directory(self.__get_image_path())
-                
+                image_obj = self.api_obj.img
+                self.api_obj.refresh()
+
                 count = 0
                 pkg_upgradeable = None
-                for pkg, state in sorted(image_obj.inventory(all_known = True)):
+                for pkg, state in sorted(misc.get_inventory_list(
+                    image_obj, [], all_known = True, all_versions = False)):
                         while gtk.events_pending():
                                 gtk.main_iteration(False)
                         if state["upgradable"] and state["state"] == "installed":
@@ -743,34 +745,7 @@
                 # gobject.timeout_add(1000, self.__setup_sizes)
                 
         def __get_api_obj(self):
-                if self.api_obj != None:
-                        return self.api_obj
-                try:
-                        self.api_obj = api.ImageInterface(self.__get_image_path(),
-                            CLIENT_API_VERSION, self.pr, self.__set_cancel_state,
-                            PKG_CLIENT_NAME)
-                        return self.api_obj
-                except api_errors.ImageNotFoundException, ine:
-                        self.w_um_expander.set_expanded(True)
-                        infobuffer = self.w_um_textview.get_buffer()
-                        infobuffer.set_text("")
-                        textiter = infobuffer.get_end_iter()
-                        infobuffer.insert_with_tags_by_name(textiter, _("Error\n"),
-                            "bold")
-                        infobuffer.insert(textiter,
-                            _("'%s' is not an install image\n") % 
-                            ine.user_specified)
-                except api_errors.VersionException, ve:
-                        self.w_um_expander.set_expanded(True)
-                        infobuffer = self.w_um_textview.get_buffer()
-                        infobuffer.set_text("")
-                        textiter = infobuffer.get_end_iter()
-                        infobuffer.insert_with_tags_by_name(textiter, _("Error\n"),
-                            "bold")
-                        infobuffer.insert(textiter, 
-                            _("Version mismatch: expected %s received %s\n") %
-                            (ve.expected_version, ve.received_version))
-                return None
+                return self.api_obj
                 
         def __display_noupdates(self):
                 self.w_um_intro_label.set_markup(_("<b>No Updates available.</b>"))
@@ -845,37 +820,6 @@
                 self.details_cache[name] = str_details
                 return str_details
 
-        # This is copied from a similar function in packagemanager.py 
-        def __get_image_obj_from_directory(self, image_directory):
-                image_obj = image.Image()
-                dr = "/"
-                try:
-                        image_obj.find_root(image_directory)
-                        while gtk.events_pending():
-                                gtk.main_iteration(False)
-                        image_obj.load_config()
-                        while gtk.events_pending():
-                                gtk.main_iteration(False)
-                        image_obj.load_catalogs(self.pr)
-                        while gtk.events_pending():
-                                gtk.main_iteration(False)
-                except ValueError:
-                        print _('%s is not valid image, trying root image') \
-                            % image_directory
-                        try:
-                                dr = os.environ["PKG_IMAGE"]
-                        except KeyError:
-                                print
-                        try:
-                                image_obj.find_root(dr)
-                                image_obj.load_config()
-                        except ValueError:
-                                print _('%s is not valid root image, return None') \
-                                    % dr
-                                image_obj = None
-                return image_obj
-
-                
         @staticmethod
         def __removed_filter(model, itr):
                 '''This function filters category in the main application view'''
@@ -939,8 +883,10 @@
                 try:
                         gnome.url_show(self.release_notes_url)
                 except gobject.GError:
-                        self.__error_occurred(_("Unable to navigate to:\n\t%s") % 
-                            self.release_notes_url)
+                        gui_misc.error_occurred(self.w_um_dialog,
+                            _("Unable to navigate to:\n\t%s") % 
+                            self.release_notes_url,
+                            msg_title=_("Update Manager"))
 
         def __on_um_dialog_close(self, widget):
                 self.__exit_app()
@@ -1491,23 +1437,6 @@
         def shutdown_after_image_update(self):
                 self.__display_update_image_success()
 
-        def __error_occurred(self, error_msg, msg_title=None, msg_type=gtk.MESSAGE_ERROR):
-                msgbox = gtk.MessageDialog(parent =
-                    self.w_um_dialog,
-                    buttons = gtk.BUTTONS_CLOSE,
-                    flags = gtk.DIALOG_MODAL,
-                    type = msg_type,
-                    message_format = None)
-                msgbox.set_property('text', error_msg)
-                title = None
-                if msg_title:
-                        title = msg_title
-                else:
-                        title = _("Update Manager")
-                msgbox.set_title(title)
-                msgbox.run()
-                msgbox.destroy()
-
 #-------------------- remove those
 def main():
         gtk.main()