src/modules/gui/detailspanel.py
changeset 2991 75e616731cc3
parent 2990 2cc6693a7d83
child 2992 e48a94cff862
--- a/src/modules/gui/detailspanel.py	Fri Sep 27 11:21:00 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-#!/usr/bin/python
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright (c) 2010, Oracle and/or its affiliates.  All rights reserved.
-#
-
-import sys
-try:
-        import gobject
-        import gtk
-        import pango
-except ImportError:
-        sys.exit(1)
-import pkg.gui.misc as gui_misc
-import pkg.gui.enumerations as enumerations
-import pkg.version as version
-import pkg.client.api as api
-
-class DetailsPanel:
-        def __init__(self, parent, builder):
-                self.parent = parent
-                self.w_generalinfo_textview = \
-                    builder.get_object("generalinfotextview")
-                self.w_generalinfo_textview.get_buffer().create_tag(
-                    "bold", weight=pango.WEIGHT_BOLD)
-                self.w_installedfiles_textview = \
-                    builder.get_object("installedfilestextview")
-                self.w_installedfiles_textview.get_buffer().create_tag(
-                    "bold", weight=pango.WEIGHT_BOLD)
-                self.w_license_textview = \
-                    builder.get_object("licensetextview")
-                self.w_dependencies_textview = \
-                    builder.get_object("dependenciestextview")
-                self.w_versions_name_label = \
-                    builder.get_object("versions_name_label")
-                self.w_versions_label = \
-                    builder.get_object("versions_label")
-                self.w_versions_combobox = \
-                    builder.get_object("versions_combo")
-                self.w_versions_install_button = \
-                    builder.get_object("versions_install_button")
-                self.w_installable_versions_hbox = \
-                    builder.get_object("installable_versions_hbox")
-
-                self.w_dependencies_textview.get_buffer().create_tag(
-                    "bold", weight=pango.WEIGHT_BOLD)
-                self.showing_empty_details = False
-                self.versions_list = None
-                self.__init_versions_tree_view()
-
-                self.w_versions_install_button.connect("clicked",
-                    self.__on_versions_install_button_clicked)
-
-        def __init_versions_tree_view(self):
-                cell = gtk.CellRendererText()
-                self.w_versions_combobox.pack_start(cell, True)
-                self.w_versions_combobox.add_attribute(cell, 'text',
-                    enumerations.VERSION_DISPLAY_NAME)
-
-        def __on_versions_install_button_clicked(self, widget):
-                active = self.w_versions_combobox.get_active()
-                active_version = self.versions_list[active][enumerations.VERSION_NAME]
-                self.parent.install_version(active_version)
-
-        def setup_text_signals(self, has_selection_cb, focus_in_cb,
-            focus_out_cb):
-                self.w_generalinfo_textview.get_buffer().connect(
-                    "notify::has-selection", has_selection_cb)
-                self.w_installedfiles_textview.get_buffer().connect(
-                    "notify::has-selection", has_selection_cb)
-                self.w_dependencies_textview.get_buffer().connect(
-                    "notify::has-selection", has_selection_cb)
-                self.w_license_textview.get_buffer().connect(
-                    "notify::has-selection", has_selection_cb)
-                self.w_generalinfo_textview.connect(
-                    "focus-in-event", focus_in_cb)
-                self.w_installedfiles_textview.connect(
-                    "focus-in-event", focus_in_cb)
-                self.w_dependencies_textview.connect(
-                    "focus-in-event", focus_in_cb)
-                self.w_license_textview.connect(
-                    "focus-in-event", focus_in_cb)
-                self.w_generalinfo_textview.connect(
-                    "focus-out-event", focus_out_cb)
-                self.w_installedfiles_textview.connect(
-                    "focus-out-event", focus_out_cb)
-                self.w_dependencies_textview.connect(
-                    "focus-out-event", focus_out_cb)
-                self.w_license_textview.connect(
-                    "focus-out-event", focus_out_cb)
-
-        def set_fetching_info(self):
-                if self.parent.selected_pkg_name == None:
-                        return
-                self.showing_empty_details = False
-                self.__show_fetching_package_info()
-
-        def __show_fetching_package_info(self):
-                instbuffer = self.w_installedfiles_textview.get_buffer()
-                infobuffer = self.w_generalinfo_textview.get_buffer()
-                fetching_text = _("Fetching information...")
-                instbuffer.set_text(fetching_text)
-                infobuffer.set_text(fetching_text)
-
-        def clear_details(self, info_pkgstem, dependencies_pkgstem, license_pkgstem,
-                    versions_pkgstem, selected_pkgstem):
-                if not info_pkgstem and info_pkgstem != selected_pkgstem:
-                        self.w_generalinfo_textview.get_buffer().set_text("")
-                        self.w_installedfiles_textview.get_buffer().set_text("")
-                if not dependencies_pkgstem and dependencies_pkgstem != selected_pkgstem:
-                        self.w_dependencies_textview.get_buffer().set_text("")
-                if not license_pkgstem and license_pkgstem != selected_pkgstem:
-                        self.w_license_textview.get_buffer().set_text("")
-                if not versions_pkgstem and versions_pkgstem != selected_pkgstem:
-                        self.versions_list = None
-                        self.w_versions_name_label.set_text("")
-                        self.w_versions_label.set_text("")
-                        self.w_versions_install_button.set_sensitive(False)
-                        self.__set_empty_versions_combo()
-
-        def set_empty_details(self):
-                self.showing_empty_details = True
-                self.w_installedfiles_textview.get_buffer().set_text("")
-                self.w_dependencies_textview.get_buffer().set_text("")
-                self.w_generalinfo_textview.get_buffer().set_text("")
-                self.w_license_textview.get_buffer().set_text("")
-
-                self.versions_list = None
-                self.w_versions_name_label.set_text("")
-                self.w_versions_label.set_text("")
-                self.w_versions_install_button.set_sensitive(False)
-                self.__set_empty_versions_combo()
-
-        def __set_empty_versions_combo(self, is_visible=False):
-                empty_versions_list = self.__get_new_versions_liststore()
-                empty_versions_list.append([0, _("Installable versions... "), "", 0])
-                self.w_versions_combobox.set_model(empty_versions_list)
-                self.w_versions_combobox.set_active(0)
-                self.w_installable_versions_hbox.set_property('visible', is_visible)
-
-        def set_fetching_dependencies(self):
-                if self.parent.selected_pkg_name == None:
-                        return
-                self.showing_empty_details = False
-                dep_buffer = self.w_dependencies_textview.get_buffer()
-                fetching_txt = _("Fetching dependencies information...")
-                dep_buffer.set_text(fetching_txt)
-
-        def set_fetching_license(self):
-                if self.parent.selected_pkg_name == None:
-                        return
-                self.showing_empty_details = False
-                licbuffer = self.w_license_textview.get_buffer()
-                leg_txt = _("Fetching legal information...")
-                licbuffer.set_text(leg_txt)
-
-        def set_fetching_versions(self):
-                if self.parent.selected_pkg_name == None:
-                        return
-                self.showing_empty_details = False
-                self.w_versions_name_label.set_text(self.parent.selected_pkg_name)
-                fetching_text = _("Fetching information...")
-                self.w_versions_label.set_text(fetching_text)
-                self.w_versions_install_button.set_sensitive(False)
-                self.__set_empty_versions_combo(is_visible=True)
-
-        def update_package_dependencies(self, info, dep_info, installed_dep_info,
-            installed_icon, not_installed_icon):
-                self.__set_dependencies_text(info, dep_info,
-                    installed_dep_info, installed_icon, not_installed_icon)
-
-        def no_dependencies_available(self):
-                depbuffer = self.w_dependencies_textview.get_buffer()
-                network_str = \
-                    _("\nThis might be caused by network problem "
-                    "while accessing the repository.")
-                depbuffer.set_text(_(
-                    "Dependencies info not available for this package...") +
-                    network_str)
-
-        def update_package_info(self, pkg_name, local_info, remote_info,
-            root, installed_icon, not_installed_icon, update_available_icon,
-            is_all_publishers_installed, pubs_info, renamed_info=None,
-            pkg_renamed = False):
-                instbuffer = self.w_installedfiles_textview.get_buffer()
-                infobuffer = self.w_generalinfo_textview.get_buffer()
-
-                if not local_info and not remote_info:
-                        network_str = \
-                            _("\nThis might be caused by network problem "
-                            "while accessing the repository.")
-                        instbuffer.set_text( \
-                            _("Files Details not available for this package...") +
-                            network_str)
-                        infobuffer.set_text(
-                            _("Information not available for this package...") +
-                            network_str)
-                        return
-
-                gui_misc.set_package_details(pkg_name, local_info,
-                    remote_info, self.w_generalinfo_textview,
-                    installed_icon, not_installed_icon,
-                    update_available_icon,
-                    is_all_publishers_installed, pubs_info, renamed_info, pkg_renamed)
-                if not local_info:
-                        # Package is not installed
-                        local_info = remote_info
-
-                if not remote_info:
-                        remote_info = local_info
-
-                inst_str = ""
-                if local_info.dirs:
-                        for x in local_info.dirs:
-                                inst_str += ''.join("%s%s\n" % (
-                                    root, x))
-                if local_info.files:
-                        for x in local_info.files:
-                                inst_str += ''.join("%s%s\n" % (
-                                    root, x))
-                if local_info.hardlinks:
-                        for x in local_info.hardlinks:
-                                inst_str += ''.join("%s%s\n" % (
-                                    root, x))
-                if local_info.links:
-                        for x in local_info.links:
-                                inst_str += ''.join("%s%s\n" % (
-                                    root, x))
-                self.__set_installedfiles_text(inst_str)
-
-        def __set_installedfiles_text(self, text):
-                instbuffer = self.w_installedfiles_textview.get_buffer()
-                instbuffer.set_text("")
-                itr = instbuffer.get_start_iter()
-                instbuffer.insert(itr, text)
-
-        def __set_dependencies_text(self, info, dep_info, installed_dep_info,
-            installed_icon, not_installed_icon):
-                gui_misc.set_dependencies_text(self.w_dependencies_textview,
-                    info, dep_info, installed_dep_info, installed_icon,
-                    not_installed_icon)
-
-        def update_package_license(self, licenses):
-                if self.showing_empty_details:
-                        return
-                licbuffer = self.w_license_textview.get_buffer()
-                licbuffer.set_text(gui_misc.setup_package_license(licenses))
-
-        def update_package_versions(self, versions):
-                if self.showing_empty_details:
-                        return
-
-                self.versions_list = self.__get_new_versions_liststore()
-                i = 0
-                previous_display_version = None
-                self.w_versions_label.set_text(_("Not Installed"))
-                for (version_str, states) in versions:
-                        state = gui_misc.get_state_from_states(states)
-                        
-                        version_tuple = version.Version.split(version_str)
-                        version_fmt = gui_misc.get_version_fmt_string()
-                        display_version = version_fmt % \
-                            {"version": version_tuple[0][0],
-                            "build": version_tuple[0][1],
-                            "branch": version_tuple[0][2]}
-                        if api.PackageInfo.INSTALLED in states:
-                                self.w_versions_label.set_text(display_version)
-                                break
-                        if (previous_display_version and
-                            previous_display_version == display_version):
-                                continue
-                        previous_display_version = display_version
-                        self.versions_list.append([i, display_version,
-                            version_str, state])
-                        i += 1
-                if i > 0:
-                        self.w_versions_install_button.set_sensitive(True)
-                else:
-                        self.versions_list.clear()
-                        self.versions_list.append([0, _("No versions available"), "", 0])
-                        self.w_versions_install_button.set_sensitive(False)
-                self.w_versions_combobox.set_model(self.versions_list)
-                self.w_versions_combobox.set_active(0)
-
-        @staticmethod
-        def __get_new_versions_liststore():
-                return gtk.ListStore(
-                        gobject.TYPE_INT,         # enumerations.VERSION_ID
-                        gobject.TYPE_STRING,      # enumerations.VERSION_DISPLAY_NAME
-                        gobject.TYPE_STRING,      # enumerations.VERSION_NAME
-                        gobject.TYPE_INT,         # enumerations.VERSION_STATUS
-                        )