12020 Launch PM with warnings on OpenSolaris 125
authorPadraig O'Briain <padraig.obriain@sun.com>
Tue, 27 Oct 2009 14:17:26 +0000
changeset 1439 e27bd0469aa0
parent 1438 727c7ee89213
child 1440 9e86c7d8eb63
12020 Launch PM with warnings on OpenSolaris 125
src/gui/data/packagemanager.glade
src/packagemanager.py
--- a/src/gui/data/packagemanager.glade	Tue Oct 27 14:08:59 2009 +0000
+++ b/src/gui/data/packagemanager.glade	Tue Oct 27 14:17:26 2009 +0000
@@ -754,12 +754,14 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="has_tooltip">True</property>
                                 <property name="rules_hint">True</property>
                                 <property name="enable_search">False</property>
                                 <accessibility>
                                   <atkproperty name="AtkObject::accessible-name">Packages</atkproperty>
                                 </accessibility>
                                 <signal name="button_press_event" handler="on_applicationtreeview_button_press_event"/>
+                                <signal name="query_tooltip" handler="on_applicationtreeview_query_tooltip"/>
                               </widget>
                             </child>
                           </widget>
--- a/src/packagemanager.py	Tue Oct 27 14:08:59 2009 +0000
+++ b/src/packagemanager.py	Tue Oct 27 14:17:26 2009 +0000
@@ -370,9 +370,6 @@
                     w_tree_main.get_widget("applicationtreeview")
                 self.w_application_treeview.connect('key_press_event',
                     self.__on_applicationtreeview_button_and_key_events)
-                self.w_application_treeview.connect('motion-notify-event',
-                    self.__on_applicationtreeview_motion_events)
-                self.applicationtreeview_tooltips = None
 
                 self.w_categories_treeview = w_tree_main.get_widget("categoriestreeview")
                 self.w_info_notebook = w_tree_main.get_widget("details_notebook")
@@ -477,8 +474,6 @@
                 toolbar =  w_tree_main.get_widget("toolbutton2")
                 toolbar.set_expand(True)
                 self.__init_repository_tree_view()
-                self.install_button_tooltip = gtk.Tooltips()
-                self.remove_button_tooltip = gtk.Tooltips()
                 self.__update_reload_button()
                 self.w_main_window.set_title(self.main_window_title)
                 self.w_repository_combobox.grab_focus()
@@ -567,6 +562,8 @@
                                     self.__on_infosearch_button_clicked,
                                 "on_applicationtreeview_button_press_event": \
                                     self.__on_applicationtreeview_button_and_key_events,
+                                "on_applicationtreeview_query_tooltip": \
+                                    self.__on_applicationtreeview_query_tooltip,
                             }
                         dic_preferences = \
                             {
@@ -1185,8 +1182,7 @@
                 select_image = gtk.Image()
                 select_image.set_from_pixbuf(gui_misc.get_icon(
                     self.icon_theme, 'selection'))
-                tooltips = gtk.Tooltips()
-                tooltips.set_tip(select_image, _("Click to toggle selections"))
+                select_image.set_tooltip_text(_("Click to toggle selections"))
                 select_image.show()
                 column.set_widget(select_image)
 
@@ -1755,12 +1751,20 @@
                 else:
                         self.__update_statusbar_message(_("Search current publisher"))
 
+        def __remove_statusbar_message(self):
+                if self.statusbar_message_id > 0:
+                        try:
+                                self.w_main_statusbar.remove_message(0,
+                                    self.statusbar_message_id)
+                        except AttributeError:
+                                self.w_main_statusbar.remove(0,
+                                    self.statusbar_message_id)
+                        self.statusbar_message_id = 0
+        
         def __update_statusbar_message(self, message):
                 if self.exiting:
                         return
-                if self.statusbar_message_id > 0:
-                        self.w_main_statusbar.remove(0, self.statusbar_message_id)
-                        self.statusbar_message_id = 0
+                self.__remove_statusbar_message()
                 self.statusbar_message_id = self.w_main_statusbar.push(0, message)
                 if self.w_main_statusbar_label:
                         self.w_main_statusbar_label.set_markup(message)
@@ -2659,28 +2663,22 @@
                 self.set_busy_cursor()
                 self.__refilter_on_idle()
 
-        def __on_applicationtreeview_motion_events(self, treeview, event):
-                if event.state == gtk.gdk.CONTROL_MASK or \
-                        event.state == gtk.gdk.SHIFT_MASK or \
-                        event.state == gtk.gdk.MOD1_MASK or \
-                        event.state == gtk.gdk.BUTTON1_MASK or \
-                        event.state == gtk.gdk.BUTTON2_MASK or \
-                        event.state == gtk.gdk.BUTTON3_MASK:
-                        return
-                info = treeview.get_path_at_pos(int(event.x), int(event.y))
+        def __on_applicationtreeview_query_tooltip(self, treeview, x, y, 
+            keyboard_mode, tooltip):
+                treex, treey = treeview.convert_widget_to_bin_window_coords(x, y)
+                info = treeview.get_path_at_pos(treex, treey)
                 if not info:
-                        return 
-                self.__show_app_column_tooltip(treeview, _("Status"), info[0], info[1])
-
-        def __show_app_column_tooltip(self, treeview, col_title, path, col):
-                self.applicationtreeview_tooltips = gtk.Tooltips()
+                        return False
+                return self.__show_app_column_tooltip(treeview, _("Status"), 
+                    info[0], info[1], tooltip)
+
+        @staticmethod
+        def __show_app_column_tooltip(treeview, col_title, path, col, tooltip):
                 tip = ""
                 if path and col:
                         title = col.get_title() 
                         if title != col_title:
-                                self.applicationtreeview_tooltips.set_tip(treeview, tip)
-                                self.applicationtreeview_tooltips.disable()
-                                return
+                                return False
                         row = list(treeview.get_model()[path])
                         if row:
                                 status = row[enumerations.STATUS_COLUMN]
@@ -2691,11 +2689,12 @@
                                 elif status == enumerations.UPDATABLE:
                                         tip = _("Updates Available")
 
-                self.applicationtreeview_tooltips.set_tip(treeview, tip)
                 if tip != "":
-                        self.applicationtreeview_tooltips.enable()
+                        treeview.set_tooltip_cell(tooltip, path, col, None)
+                        tooltip.set_text(tip)
+                        return True
                 else:
-                        self.applicationtreeview_tooltips.disable()
+                        return False
 
         def __on_applicationtreeview_button_and_key_events(self, treeview, event):
                 if event.type == gtk.gdk.KEY_PRESS:
@@ -2761,12 +2760,6 @@
                 #Offset x by 10 and y by 15 so underlying name is visible
                 return (x+10, y+15, True)
 
-        @staticmethod
-        def __on_applicationtreeview_motion_notify_event(treeview, event):
-                #TBD - needed for Tooltips in application treeview
-                return
-                
-                
         def __process_package_selection(self):
                 model, itr = self.package_selection.get_selected()
                 if self.show_info_id != 0:
@@ -3350,12 +3343,11 @@
                 if not to_install:
                         to_install = _("Select packages by marking the checkbox "
                             "and click to Install/Update.")
-                self.w_installupdate_button.set_tooltip(self.install_button_tooltip,
-                    to_install)
+                self.w_installupdate_button.set_tooltip_text(to_install)
                 if not to_remove:
                         to_remove = _("Select packages by marking the checkbox "
                             "and click to Remove selected.")
-                self.w_remove_button.set_tooltip(self.remove_button_tooltip, to_remove)
+                self.w_remove_button.set_tooltip_text(to_remove)
 
         def __remove_pkg_stem_from_list(self, stem):
                 remove_pub = []
@@ -4499,9 +4491,7 @@
 
         def update_statusbar(self):
                 '''Function which updates statusbar'''
-                if self.statusbar_message_id > 0:
-                        self.w_main_statusbar.remove(0, self.statusbar_message_id)
-                        self.statusbar_message_id = 0
+                self.__remove_statusbar_message()
                 search_text = self.w_searchentry.get_text()
 
                 self.selected = 0