gnome-packagekit r123 - in trunk: data src



Author: rhughes
Date: Mon Mar 24 14:16:05 2008
New Revision: 123
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=123&view=rev

Log:
from git

Modified:
   trunk/data/pk-application.glade
   trunk/data/pk-update-viewer.glade
   trunk/src/pk-application.c
   trunk/src/pk-update-viewer.c

Modified: trunk/data/pk-application.glade
==============================================================================
--- trunk/data/pk-application.glade	(original)
+++ trunk/data/pk-application.glade	Mon Mar 24 14:16:05 2008
@@ -12,287 +12,415 @@
       <widget class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
         <child>
-          <widget class="GtkHBox" id="hbox4">
+          <widget class="GtkMenuBar" id="menubar1">
             <property name="visible">True</property>
-            <property name="border_width">10</property>
-            <property name="spacing">5</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
             <child>
-              <widget class="GtkNotebook" id="notebook_type">
+              <widget class="GtkMenuItem" id="menuitem_system">
                 <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="label" translatable="yes">_System</property>
+                <property name="use_underline">True</property>
                 <child>
-                  <widget class="GtkVBox" id="vbox_groups">
+                  <widget class="GtkMenu" id="menu1">
                     <property name="visible">True</property>
-                    <property name="spacing">7</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <child>
-                      <widget class="GtkVBox" id="vbox15">
+                      <widget class="GtkImageMenuItem" id="imagemenuitem_refresh">
                         <property name="visible">True</property>
-                        <property name="border_width">5</property>
-                        <property name="spacing">5</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">_Refresh application lists</property>
+                        <property name="use_underline">True</property>
+                        <child internal-child="image">
+                          <widget class="GtkImage" id="menu-item-image11">
+                            <property name="stock">gtk-redo</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="menuitem_sources">
+                        <property name="visible">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="label" translatable="yes">Software _sources</property>
+                        <property name="use_underline">True</property>
+                        <child internal-child="image">
+                          <widget class="GtkImage" id="menu-item-image2">
+                            <property name="visible">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="stock">gtk-cdrom</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="imagemenuitem_quit">
+                        <property name="visible">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="tooltip" translatable="yes">Close the program</property>
+                        <property name="label" translatable="yes">gtk-quit</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkMenuItem" id="menuitem2">
+                <property name="visible">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="label" translatable="yes">_Filters</property>
+                <property name="use_underline">True</property>
+                <child>
+                  <widget class="GtkMenu" id="menu2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <widget class="GtkMenuItem" id="menuitem_installed">
+                        <property name="visible">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="label" translatable="yes">_Installed</property>
+                        <property name="use_underline">True</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox26">
+                          <widget class="GtkMenu" id="menu3">
                             <property name="visible">True</property>
-                            <property name="spacing">5</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <child>
-                              <widget class="Custom" id="entry_text">
+                              <widget class="GtkRadioMenuItem" id="menuitem_installed_yes">
                                 <property name="visible">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="label" translatable="yes">Only _installed</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkButton" id="button_find">
+                              <widget class="GtkRadioMenuItem" id="menuitem_installed_no">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
-                                <child>
-                                  <widget class="GtkAlignment" id="alignment5">
-                                    <property name="visible">True</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
-                                    <child>
-                                      <widget class="GtkHBox" id="hbox6">
-                                        <property name="visible">True</property>
-                                        <property name="spacing">2</property>
-                                        <child>
-                                          <widget class="GtkImage" id="image4">
-                                            <property name="visible">True</property>
-                                            <property name="stock">gtk-find</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label_button_find">
-                                            <property name="visible">True</property>
-                                            <property name="label">_Find</property>
-                                            <property name="use_underline">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
-                                      </widget>
-                                    </child>
-                                  </widget>
-                                </child>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">Only _available</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_installed_yes</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_installed_both">
+                                <property name="visible">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="label" translatable="yes">_No filter</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_installed_yes</property>
                               </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
                             </child>
                           </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
                         </child>
                       </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
                     </child>
                     <child>
-                      <widget class="GtkFrame" id="frame3">
+                      <widget class="GtkMenuItem" id="menuitem_devel">
                         <property name="visible">True</property>
-                        <property name="label_xalign">0</property>
-                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">_Development</property>
+                        <property name="use_underline">True</property>
                         <child>
-                          <widget class="GtkAlignment" id="alignment23">
+                          <widget class="GtkMenu" id="menu4">
                             <property name="visible">True</property>
-                            <property name="left_padding">12</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <child>
-                              <widget class="GtkTable" id="table1">
+                              <widget class="GtkRadioMenuItem" id="menuitem_devel_yes">
                                 <property name="visible">True</property>
-                                <property name="border_width">3</property>
-                                <property name="n_rows">4</property>
-                                <property name="n_columns">2</property>
-                                <property name="column_spacing">5</property>
-                                <property name="row_spacing">5</property>
-                                <child>
-                                  <widget class="GtkLabel" id="label_filter_installed">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Installed:</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkComboBox" id="combobox_filter_installed">
-                                    <property name="visible">True</property>
-                                    <property name="items"></property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkLabel" id="label_filter_devel">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Development:</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkComboBox" id="combobox_filter_devel">
-                                    <property name="visible">True</property>
-                                    <property name="items"></property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkComboBox" id="combobox_filter_gui">
-                                    <property name="visible">True</property>
-                                    <property name="items"></property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkLabel" id="label_filter_gui">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Graphical:</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkLabel" id="label_filter_free">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">Free:</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options"></property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkComboBox" id="combobox_filter_free">
-                                    <property name="visible">True</property>
-                                    <property name="items"></property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">3</property>
-                                    <property name="bottom_attach">4</property>
-                                    <property name="x_options">GTK_FILL</property>
-                                    <property name="y_options">GTK_FILL</property>
-                                  </packing>
-                                </child>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">Only _development</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_devel_no">
+                                <property name="visible">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="label" translatable="yes">Only _end user files</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_devel_yes</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_devel_both">
+                                <property name="visible">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="label" translatable="yes">_No filter</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_devel_yes</property>
                               </widget>
                             </child>
                           </widget>
                         </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="menuitem_gui">
+                        <property name="visible">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="label" translatable="yes">_Graphical</property>
+                        <property name="use_underline">True</property>
                         <child>
-                          <widget class="GtkLabel" id="label33">
+                          <widget class="GtkMenu" id="menu5">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Filters&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_gui_yes">
+                                <property name="visible">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="label" translatable="yes">_Only graphical</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_gui_no">
+                                <property name="visible">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="label" translatable="yes">_Only text</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_gui_yes</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_gui_both">
+                                <property name="visible">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="label" translatable="yes">_No filter</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_gui_yes</property>
+                              </widget>
+                            </child>
                           </widget>
-                          <packing>
-                            <property name="type">label_item</property>
-                          </packing>
                         </child>
                       </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkMenuItem" id="menuitem_free">
+                        <property name="visible">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="label" translatable="yes">_Free</property>
+                        <property name="use_underline">True</property>
+                        <child>
+                          <widget class="GtkMenu" id="menu6">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_free_yes">
+                                <property name="visible">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="label" translatable="yes">_Only free software</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_free_no">
+                                <property name="visible">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="label" translatable="yes">_Only _non-free software</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_free_yes</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioMenuItem" id="menuitem_free_both">
+                                <property name="visible">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="label" translatable="yes">_No filter</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_as_radio">True</property>
+                                <property name="group">menuitem_free_yes</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckMenuItem" id="menuitem_basename">
+                        <property name="visible">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="tooltip" translatable="yes">Only show one package, not subpackages</property>
+                        <property name="label" translatable="yes">_Main packages</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckMenuItem" id="menuitem_newest">
+                        <property name="visible">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="tooltip" translatable="yes">Only show the newest available package</property>
+                        <property name="label" translatable="yes">_Newest packages</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                      </widget>
                     </child>
                   </widget>
                 </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkMenuItem" id="menuitem_help">
+                <property name="visible">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="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
                 <child>
-                  <widget class="GtkLabel" id="label_search">
+                  <widget class="GtkMenu" id="menu_about">
                     <property name="visible">True</property>
-                    <property name="label" translatable="yes">Search</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <widget class="GtkImageMenuItem" id="imagemenuitem_about">
+                        <property name="visible">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="tooltip" translatable="yes">About this software</property>
+                        <property name="label" translatable="yes">gtk-about</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                      </widget>
+                    </child>
                   </widget>
-                  <packing>
-                    <property name="type">tab</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
                 </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="border_width">10</property>
+            <property name="spacing">6</property>
+            <child>
+              <widget class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow_groups">
+                  <widget class="GtkVBox" id="vbox_groups">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="border_width">5</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkHBox" id="hbox26">
+                        <property name="visible">True</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <widget class="Custom" id="entry_text">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button_find">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="response_id">0</property>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment5">
+                                <property name="visible">True</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox6">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">2</property>
+                                    <child>
+                                      <widget class="GtkImage" id="image4">
+                                        <property name="visible">True</property>
+                                        <property name="stock">gtk-find</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label_button_find">
+                                        <property name="visible">True</property>
+                                        <property name="label">_Find</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
                     <child>
-                      <widget class="GtkTreeView" id="treeview_groups">
+                      <widget class="GtkScrolledWindow" id="scrolledwindow_groups">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="border_width">3</property>
-                        <property name="headers_visible">False</property>
-                        <property name="enable_search">False</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                        <child>
+                          <widget class="GtkTreeView" id="treeview_groups">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="border_width">3</property>
+                            <property name="headers_visible">False</property>
+                            <property name="enable_search">False</property>
+                          </widget>
+                        </child>
                       </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
                     </child>
                   </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label_groups">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Groups</property>
-                  </widget>
-                  <packing>
-                    <property name="type">tab</property>
-                    <property name="position">1</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
                 </child>
               </widget>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">False</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVBox" id="vbox_rows">
+              <widget class="GtkVPaned" id="vpaned1">
                 <property name="visible">True</property>
-                <property name="spacing">7</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>
                 <child>
                   <widget class="GtkScrolledWindow" id="scrolledwindow_packages">
                     <property name="visible">True</property>
@@ -307,373 +435,362 @@
                       </widget>
                     </child>
                   </widget>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">False</property>
+                  </packing>
                 </child>
                 <child>
-                  <widget class="GtkHBox" id="hbox_description">
+                  <widget class="GtkVBox" id="vbox_description_pane">
                     <property name="visible">True</property>
                     <property name="spacing">5</property>
                     <child>
-                      <widget class="GtkImage" id="image_description">
-                        <property name="visible">True</property>
-                        <property name="stock">gtk-delete</property>
-                        <property name="icon_size">6</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVBox" id="vbox16">
+                      <widget class="GtkNotebook" id="notebook_description">
                         <property name="visible">True</property>
-                        <property name="spacing">5</property>
+                        <property name="can_focus">True</property>
                         <child>
-                          <widget class="GtkNotebook" id="notebook_description">
+                          <widget class="GtkVBox" id="vbox_description">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
+                            <property name="border_width">5</property>
+                            <property name="spacing">5</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="shadow_type">GTK_SHADOW_IN</property>
+                                <child>
+                                  <widget class="GtkTextView" id="textview_description">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="border_width">2</property>
+                                    <property name="editable">False</property>
+                                    <property name="wrap_mode">GTK_WRAP_WORD</property>
+                                    <property name="cursor_visible">False</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
                             <child>
-                              <widget class="GtkVBox" id="vbox_description">
+                              <widget class="GtkHBox" id="hbox_filesize">
                                 <property name="visible">True</property>
                                 <property name="border_width">5</property>
                                 <property name="spacing">5</property>
                                 <child>
-                                  <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                                  <widget class="GtkLabel" id="label30">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                                    <child>
-                                      <widget class="GtkTextView" id="textview_description">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="border_width">2</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">GTK_WRAP_WORD</property>
-                                        <property name="cursor_visible">False</property>
-                                      </widget>
-                                    </child>
+                                    <property name="label" translatable="yes">Package size:</property>
                                   </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
                                 </child>
                                 <child>
-                                  <widget class="GtkHBox" id="hbox_filesize">
+                                  <widget class="GtkLabel" id="label_filesize">
                                     <property name="visible">True</property>
-                                    <property name="border_width">5</property>
-                                    <property name="spacing">5</property>
-                                    <child>
-                                      <widget class="GtkLabel" id="label30">
-                                        <property name="visible">True</property>
-                                        <property name="label" translatable="yes">Package size:</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label_filesize">
-                                        <property name="visible">True</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                        <property name="position">1</property>
-                                      </packing>
-                                    </child>
                                   </widget>
                                   <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
                               </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label_tab_description">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Description</property>
-                              </widget>
                               <packing>
-                                <property name="type">tab</property>
-                                <property name="tab_fill">False</property>
+                                <property name="expand">False</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label_tab_description">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Description</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVBox" id="vbox_files">
+                            <property name="visible">True</property>
+                            <property name="border_width">5</property>
                             <child>
-                              <widget class="GtkVBox" id="vbox_files">
+                              <widget class="GtkScrolledWindow" id="scrolledwindow3">
                                 <property name="visible">True</property>
-                                <property name="border_width">5</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="shadow_type">GTK_SHADOW_IN</property>
                                 <child>
-                                  <widget class="GtkScrolledWindow" id="scrolledwindow3">
+                                  <widget class="GtkTextView" id="textview_files">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
-                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                                    <child>
-                                      <widget class="GtkTextView" id="textview_files">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="border_width">2</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">GTK_WRAP_WORD</property>
-                                        <property name="cursor_visible">False</property>
-                                      </widget>
-                                    </child>
+                                    <property name="border_width">2</property>
+                                    <property name="editable">False</property>
+                                    <property name="wrap_mode">GTK_WRAP_WORD</property>
+                                    <property name="cursor_visible">False</property>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label_tab_files">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">File List</property>
-                              </widget>
-                              <packing>
-                                <property name="type">tab</property>
-                                <property name="position">1</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
                             </child>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label_tab_files">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">File List</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="position">1</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVBox" id="vbox_depends">
+                            <property name="visible">True</property>
+                            <property name="border_width">5</property>
                             <child>
-                              <widget class="GtkVBox" id="vbox_depends">
+                              <widget class="GtkScrolledWindow" id="scrolledwindow4">
                                 <property name="visible">True</property>
-                                <property name="border_width">5</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="shadow_type">GTK_SHADOW_IN</property>
                                 <child>
-                                  <widget class="GtkScrolledWindow" id="scrolledwindow4">
+                                  <widget class="GtkTextView" id="textview_depends">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
-                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                                    <child>
-                                      <widget class="GtkTextView" id="textview_depends">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="border_width">2</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">GTK_WRAP_WORD</property>
-                                        <property name="cursor_visible">False</property>
-                                      </widget>
-                                    </child>
+                                    <property name="border_width">2</property>
+                                    <property name="editable">False</property>
+                                    <property name="wrap_mode">GTK_WRAP_WORD</property>
+                                    <property name="cursor_visible">False</property>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label34">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Depends on</property>
-                              </widget>
-                              <packing>
-                                <property name="type">tab</property>
-                                <property name="position">2</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
                             </child>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label34">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Depends on</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="position">2</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVBox" id="vbox_requires">
+                            <property name="visible">True</property>
+                            <property name="border_width">5</property>
                             <child>
-                              <widget class="GtkVBox" id="vbox_requires">
+                              <widget class="GtkScrolledWindow" id="scrolledwindow5">
                                 <property name="visible">True</property>
-                                <property name="border_width">5</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                <property name="shadow_type">GTK_SHADOW_IN</property>
                                 <child>
-                                  <widget class="GtkScrolledWindow" id="scrolledwindow5">
+                                  <widget class="GtkTextView" id="textview_requires">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
-                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                    <property name="shadow_type">GTK_SHADOW_IN</property>
-                                    <child>
-                                      <widget class="GtkTextView" id="textview_requires">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="border_width">2</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">GTK_WRAP_WORD</property>
-                                        <property name="cursor_visible">False</property>
-                                      </widget>
-                                    </child>
+                                    <property name="border_width">2</property>
+                                    <property name="editable">False</property>
+                                    <property name="wrap_mode">GTK_WRAP_WORD</property>
+                                    <property name="cursor_visible">False</property>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="position">3</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label_requires">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Required by</property>
-                              </widget>
-                              <packing>
-                                <property name="type">tab</property>
-                                <property name="position">3</property>
-                                <property name="tab_fill">False</property>
-                              </packing>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="position">3</property>
+                          </packing>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox27">
+                          <widget class="GtkLabel" id="label_requires">
                             <property name="visible">True</property>
-                            <property name="spacing">5</property>
+                            <property name="label" translatable="yes">Required by</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="position">3</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox27">
+                        <property name="visible">True</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <widget class="GtkButton" id="button_install">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="response_id">0</property>
                             <child>
-                              <widget class="GtkButton" id="button_install">
+                              <widget class="GtkAlignment" id="alignment24">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkAlignment" id="alignment24">
+                                  <widget class="GtkHBox" id="hbox28">
                                     <property name="visible">True</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
+                                    <property name="spacing">2</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox28">
+                                      <widget class="GtkImage" id="image5">
                                         <property name="visible">True</property>
-                                        <property name="spacing">2</property>
-                                        <child>
-                                          <widget class="GtkImage" id="image5">
-                                            <property name="visible">True</property>
-                                            <property name="stock">gtk-floppy</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label35">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">_Install</property>
-                                            <property name="use_underline">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="stock">gtk-floppy</property>
                                       </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label35">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">_Install</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
                                     </child>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
                             </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button_remove">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="response_id">0</property>
                             <child>
-                              <widget class="GtkButton" id="button_remove">
+                              <widget class="GtkAlignment" id="alignment25">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkAlignment" id="alignment25">
+                                  <widget class="GtkHBox" id="hbox29">
                                     <property name="visible">True</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
+                                    <property name="spacing">2</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox29">
+                                      <widget class="GtkImage" id="image6">
                                         <property name="visible">True</property>
-                                        <property name="spacing">2</property>
-                                        <child>
-                                          <widget class="GtkImage" id="image6">
-                                            <property name="visible">True</property>
-                                            <property name="stock">gtk-dialog-error</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label36">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">_Remove</property>
-                                            <property name="use_underline">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="stock">gtk-dialog-error</property>
                                       </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label36">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">_Remove</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
                                     </child>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
                             </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button_homepage">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="response_id">0</property>
                             <child>
-                              <widget class="GtkButton" id="button_homepage">
+                              <widget class="GtkAlignment" id="alignment26">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="response_id">0</property>
+                                <property name="xscale">0</property>
+                                <property name="yscale">0</property>
                                 <child>
-                                  <widget class="GtkAlignment" id="alignment26">
+                                  <widget class="GtkHBox" id="hbox30">
                                     <property name="visible">True</property>
-                                    <property name="xscale">0</property>
-                                    <property name="yscale">0</property>
+                                    <property name="spacing">2</property>
                                     <child>
-                                      <widget class="GtkHBox" id="hbox30">
+                                      <widget class="GtkImage" id="image7">
                                         <property name="visible">True</property>
-                                        <property name="spacing">2</property>
-                                        <child>
-                                          <widget class="GtkImage" id="image7">
-                                            <property name="visible">True</property>
-                                            <property name="stock">gtk-home</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                          </packing>
-                                        </child>
-                                        <child>
-                                          <widget class="GtkLabel" id="label37">
-                                            <property name="visible">True</property>
-                                            <property name="label" translatable="yes">Homepage</property>
-                                            <property name="use_underline">True</property>
-                                          </widget>
-                                          <packing>
-                                            <property name="expand">False</property>
-                                            <property name="fill">False</property>
-                                            <property name="position">1</property>
-                                          </packing>
-                                        </child>
+                                        <property name="stock">gtk-home</property>
                                       </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label37">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Homepage</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
                                     </child>
                                   </widget>
                                 </child>
                               </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
                             </child>
                           </widget>
                           <packing>
-                            <property name="position">1</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
                           </packing>
                         </child>
                       </widget>
                       <packing>
+                        <property name="expand">False</property>
                         <property name="position">1</property>
                       </packing>
                     </child>
                   </widget>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
+                    <property name="resize">False</property>
+                    <property name="shrink">False</property>
                   </packing>
                 </child>
               </widget>
@@ -682,6 +799,9 @@
               </packing>
             </child>
           </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
         </child>
         <child>
           <widget class="GtkStatusbar" id="statusbar_status">
@@ -690,7 +810,7 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="position">1</property>
+            <property name="position">2</property>
           </packing>
         </child>
       </widget>

Modified: trunk/data/pk-update-viewer.glade
==============================================================================
--- trunk/data/pk-update-viewer.glade	(original)
+++ trunk/data/pk-update-viewer.glade	Mon Mar 24 14:16:05 2008
@@ -62,76 +62,108 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkVBox" id="vbox1">
+                  <widget class="GtkTable" id="time_table">
                     <property name="visible">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="spacing">6</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">3</property>
+                    <property name="column_spacing">6</property>
+                    <property name="row_spacing">6</property>
                     <child>
-                      <widget class="GtkHBox" id="hbox3">
+                      <widget class="GtkAlignment" id="alignment1">
                         <property name="visible">True</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <widget class="GtkLabel" id="label5">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Time since last refresh:</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
+                        <property name="xalign">1</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
                         <child>
-                          <widget class="GtkLabel" id="label_last_refresh">
+                          <widget class="GtkButton" id="button_history">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Unknown....</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="label" translatable="yes">View History</property>
+                            <property name="response_id">0</property>
                           </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkHBox" id="hbox3">
+                      <widget class="GtkAlignment" id="alignment3">
                         <property name="visible">True</property>
-                        <property name="spacing">6</property>
+                        <property name="xalign">1</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
                         <child>
-                          <widget class="GtkLabel" id="label5">
+                          <widget class="GtkButton" id="button_refresh">
                             <property name="visible">True</property>
-                            <property name="label" translatable="yes">Time since last updated:</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="label" translatable="yes">Refresh</property>
+                            <property name="response_id">0</property>
                           </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label_last_update">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Unknown....</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
                         </child>
                       </widget>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label5">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Last refresh:</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label5">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Last update:</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_last_refresh">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Unknown....</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label_last_update">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Unknown....</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
+                    <property name="padding">12</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
@@ -153,52 +185,6 @@
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkButton" id="button_refresh">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="response_id">0</property>
-                        <child>
-                          <widget class="GtkAlignment" id="alignment1">
-                            <property name="visible">True</property>
-                            <property name="xscale">0</property>
-                            <property name="yscale">0</property>
-                            <child>
-                              <widget class="GtkHBox" id="hbox1">
-                                <property name="visible">True</property>
-                                <property name="spacing">2</property>
-                                <child>
-                                  <widget class="GtkImage" id="image1">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-refresh</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkLabel" id="label10">
-                                    <property name="visible">True</property>
-                                    <property name="label">Force _Refresh</property>
-                                    <property name="use_underline">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
                       <widget class="GtkButton" id="button_apply2">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
@@ -241,7 +227,7 @@
                         </child>
                       </widget>
                       <packing>
-                        <property name="position">2</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
@@ -272,7 +258,7 @@
                                 <child>
                                   <widget class="GtkLabel" id="label11">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">_Review Updates</property>
+                                    <property name="label" translatable="yes">_Review</property>
                                     <property name="use_underline">True</property>
                                   </widget>
                                   <packing>
@@ -287,7 +273,7 @@
                         </child>
                       </widget>
                       <packing>
-                        <property name="position">3</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                     <child>
@@ -300,7 +286,7 @@
                         <property name="response_id">0</property>
                       </widget>
                       <packing>
-                        <property name="position">4</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                   </widget>
@@ -584,6 +570,9 @@
                         <property name="use_stock">True</property>
                         <property name="response_id">0</property>
                       </widget>
+                      <packing>
+                        <property name="secondary">True</property>
+                      </packing>
                     </child>
                     <child>
                       <widget class="GtkButton" id="button_cancel">
@@ -986,6 +975,9 @@
                         <property name="use_stock">True</property>
                         <property name="response_id">0</property>
                       </widget>
+                      <packing>
+                        <property name="secondary">True</property>
+                      </packing>
                     </child>
                     <child>
                       <widget class="GtkButton" id="button_close5">
@@ -1003,7 +995,6 @@
                   </widget>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
                     <property name="position">1</property>
                   </packing>
                 </child>

Modified: trunk/src/pk-application.c
==============================================================================
--- trunk/src/pk-application.c	(original)
+++ trunk/src/pk-application.c	Mon Mar 24 14:16:05 2008
@@ -50,6 +50,7 @@
 static void     pk_application_finalize   (GObject	    *object);
 
 #define PK_APPLICATION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_APPLICATION, PkApplicationPrivate))
+#define PK_STOCK_APP_ICON		"system-software-installer"
 
 typedef enum {
 	PK_SEARCH_NAME,
@@ -352,14 +353,13 @@
 			       guint64 size, PkApplication *application)
 {
 	GtkWidget *widget;
-	const gchar *icon_name;
 	gchar *text;
 
 	g_return_if_fail (application != NULL);
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
 	pk_debug ("description = %s:%i:%s:%s", package_id, group, detail, url);
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_show (widget);
 
 	/* homepage button? */
@@ -373,10 +373,6 @@
 		gtk_widget_hide (widget);
 	}
 
-	widget = glade_xml_get_widget (application->priv->glade_xml, "image_description");
-	icon_name = pk_group_enum_to_icon_name (group);
-	gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name, GTK_ICON_SIZE_DIALOG);
-
 	/* set the description */
 	text = g_markup_escape_text (detail, -1);
 	widget = glade_xml_get_widget (application->priv->glade_xml, "textview_description");
@@ -410,7 +406,7 @@
 	g_return_if_fail (application != NULL);
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_show (widget);
 
 	/* set the text box */
@@ -662,7 +658,7 @@
 	application->priv->search_in_progress = TRUE;
 
 	/* hide details */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_hide (widget);
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "label_button_find");
@@ -675,13 +671,11 @@
 }
 
 /**
- * pk_application_delete_event_cb:
+ * pk_application_quit:
  * @event: The event type, unused.
  **/
 static gboolean
-pk_application_delete_event_cb (GtkWidget	*widget,
-				GdkEvent	*event,
-				PkApplication	*application)
+pk_application_quit (PkApplication *application)
 {
 	g_return_val_if_fail (application != NULL, FALSE);
 	g_return_val_if_fail (PK_IS_APPLICATION (application), FALSE);
@@ -693,6 +687,22 @@
 
 	pk_debug ("emitting action-close");
 	g_signal_emit (application, signals [ACTION_CLOSE], 0);
+	return TRUE;
+}
+
+/**
+ * pk_application_delete_event_cb:
+ * @event: The event type, unused.
+ **/
+static gboolean
+pk_application_delete_event_cb (GtkWidget	*widget,
+				GdkEvent	*event,
+				PkApplication	*application)
+{
+	g_return_val_if_fail (application != NULL, FALSE);
+	g_return_val_if_fail (PK_IS_APPLICATION (application), FALSE);
+
+	pk_application_quit (application);
 	return FALSE;
 }
 
@@ -774,102 +784,6 @@
 }
 
 /**
- * pk_application_filter_installed_combobox_changed_cb:
- **/
-static void
-pk_application_filter_installed_combobox_changed_cb (GtkComboBox *combobox, PkApplication *application)
-{
-	guint value;
-
-	g_return_if_fail (application != NULL);
-	g_return_if_fail (PK_IS_APPLICATION (application));
-
-	value = gtk_combo_box_get_active (combobox);
-	if (value == 0) {
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
-	} else if (value == 1) {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
-	} else {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
-	}
-}
-
-/**
- * pk_application_filter_devel_combobox_changed_cb:
- **/
-static void
-pk_application_filter_devel_combobox_changed_cb (GtkComboBox *combobox, PkApplication *application)
-{
-	guint value;
-
-	g_return_if_fail (application != NULL);
-	g_return_if_fail (PK_IS_APPLICATION (application));
-
-	value = gtk_combo_box_get_active (combobox);
-	if (value == 0) {
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
-	} else if (value == 1) {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
-	} else {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
-	}
-}
-
-/**
- * pk_application_filter_free_combobox_changed_cb:
- **/
-static void
-pk_application_filter_free_combobox_changed_cb (GtkComboBox *combobox, PkApplication *application)
-{
-	guint value;
-
-	g_return_if_fail (application != NULL);
-	g_return_if_fail (PK_IS_APPLICATION (application));
-
-	value = gtk_combo_box_get_active (combobox);
-	if (value == 0) {
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_FREE);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
-	} else if (value == 1) {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_FREE);
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
-	} else {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_FREE);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
-	}
-}
-
-/**
- * pk_application_filter_gui_combobox_changed_cb:
- **/
-static void
-pk_application_filter_gui_combobox_changed_cb (GtkComboBox *combobox, PkApplication *application)
-{
-	guint value;
-
-	g_return_if_fail (application != NULL);
-	g_return_if_fail (PK_IS_APPLICATION (application));
-
-	value = gtk_combo_box_get_active (combobox);
-	if (value == 0) {
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_GUI);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
-	} else if (value == 1) {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_GUI);
-		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
-	} else {
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_GUI);
-		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
-	}
-}
-
-/**
  * pk_groups_treeview_clicked_cb:
  **/
 static void
@@ -880,13 +794,14 @@
 	GtkTreeIter iter;
 	GtkWidget *widget;
 	gboolean ret;
+	gchar *filter;
 	gchar *id;
 
 	g_return_if_fail (application != NULL);
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
 	/* hide the details */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_hide (widget);
 
 	/* This will only work in single or browse selection mode! */
@@ -897,10 +812,15 @@
 		/* refresh the search as the items may have changed */
 		gtk_list_store_clear (application->priv->packages_store);
 
+		/* make a valid filter string */
+		filter = pk_enum_list_to_string (application->priv->current_filter);
+		pk_debug ("filter = %s", filter);
+
 		/* cancel this, we don't care about old results that are pending */
 		pk_client_cancel (application->priv->client_search, NULL);
 		pk_client_reset (application->priv->client_search, NULL);
-		ret = pk_client_search_group (application->priv->client_search, "none", id, NULL);
+		ret = pk_client_search_group (application->priv->client_search, filter, id, NULL);
+		g_free (filter);
 		/* ick, we failed so pretend we didn't do the action */
 		if (ret == FALSE) {
 			pk_application_error_message (application,
@@ -923,8 +843,13 @@
 	g_return_val_if_fail (application != NULL, FALSE);
 	g_return_val_if_fail (PK_IS_APPLICATION (application), FALSE);
 
+	/* are we just removing tabs? */
+	if (application->priv->package == NULL) {
+		return FALSE;
+	}
+
 	/* show the box */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_show (widget);
 
 	/* get the notebook reference */
@@ -1313,6 +1238,241 @@
 }
 
 /**
+ * pk_application_menu_about_cb:
+ **/
+static void
+pk_application_menu_about_cb (GtkAction *action, PkApplication *application)
+{
+	GtkWidget *main_window;
+	const char *authors[] = {
+		"Richard Hughes <richard hughsie com>",
+		NULL};
+	const char *documenters[] = {
+		"Richard Hughes <richard hughsie com>",
+		NULL};
+	const char *artists[] = {
+		"Richard Hughes <richard hughsie com>",
+		NULL};
+	const char *license[] = {
+		N_("Licensed under the GNU General Public License Version 2"),
+		N_("Power Manager is free software; you can redistribute it and/or\n"
+		   "modify it under the terms of the GNU General Public License\n"
+		   "as published by the Free Software Foundation; either version 2\n"
+		   "of the License, or (at your option) any later version."),
+		N_("Power Manager is distributed in the hope that it will be useful,\n"
+		   "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+		   "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+		   "GNU General Public License for more details."),
+		N_("You should have received a copy of the GNU General Public License\n"
+		   "along with this program; if not, write to the Free Software\n"
+		   "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n"
+		   "02110-1301, USA.")
+	};
+	const char  *translators = _("translator-credits");
+	char	    *license_trans;
+
+	/* Translators comment: put your own name here to appear in the about dialog. */
+	if (!strcmp (translators, "translator-credits")) {
+		translators = NULL;
+	}
+
+	license_trans = g_strconcat (_(license[0]), "\n\n", _(license[1]), "\n\n",
+				     _(license[2]), "\n\n", _(license[3]), "\n",  NULL);
+
+	/* use parent */
+	main_window = glade_xml_get_widget (application->priv->glade_xml, "window_manager");
+
+	gtk_window_set_default_icon_name (PK_STOCK_APP_ICON);
+	gtk_show_about_dialog (NULL,
+			       "version", PACKAGE_VERSION,
+			       "copyright", "Copyright \xc2\xa9 2007-2008 Richard Hughes",
+			       "license", license_trans,
+			       "website-label", _("PackageKit Website"),
+			       "website", "http://www.packagekit.org";,
+			       "comments", _("Package Manager for GNOME"),
+			       "authors", authors,
+			       "documenters", documenters,
+			       "artists", artists,
+			       "translator-credits", translators,
+			       "logo-icon-name", PK_STOCK_APP_ICON,
+			       NULL);
+	g_free (license_trans);
+}
+
+/**
+ * pk_application_menu_refresh_cb:
+ **/
+static void
+pk_application_menu_refresh_cb (GtkAction *action, PkApplication *application)
+{
+	pk_warning ("do a refresh-cache");
+}
+
+/**
+ * pk_application_menu_sources_cb:
+ **/
+static void
+pk_application_menu_sources_cb (GtkAction *action, PkApplication *application)
+{
+	gboolean ret;
+	ret = g_spawn_command_line_async ("pk-repo", NULL);
+	if (ret == FALSE) {
+		pk_warning ("spawn of pk-repo failed");
+	}
+}
+
+/**
+ * pk_application_menu_quit_cb:
+ **/
+static void
+pk_application_menu_quit_cb (GtkAction *action, PkApplication *application)
+{
+	pk_application_quit (application);
+}
+
+/**
+ * pk_application_menu_filter_installed_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_installed_cb (GtkWidget *widget, PkApplication *application)
+{
+	const gchar *name;
+	name = gtk_widget_get_name (widget);
+
+	/* only care about new state */
+	if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+		return;
+	}
+
+	/* set new filter */
+	if (g_str_has_suffix (name, "_yes")) {
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
+	} else if (g_str_has_suffix (name, "_no")) {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
+	} else {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_INSTALLED);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_INSTALLED);
+	}
+}
+
+/**
+ * pk_application_menu_filter_devel_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_devel_cb (GtkWidget *widget, PkApplication *application)
+{
+	const gchar *name;
+	name = gtk_widget_get_name (widget);
+
+	/* only care about new state */
+	if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+		return;
+	}
+
+	/* set new filter */
+	if (g_str_has_suffix (name, "_yes")) {
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+	} else if (g_str_has_suffix (name, "_no")) {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+	} else {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+	}
+}
+
+/**
+ * pk_application_menu_filter_gui_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_gui_cb (GtkWidget *widget, PkApplication *application)
+{
+	const gchar *name;
+	name = gtk_widget_get_name (widget);
+
+	/* only care about new state */
+	if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+		return;
+	}
+
+	/* set new filter */
+	if (g_str_has_suffix (name, "_yes")) {
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_GUI);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
+	} else if (g_str_has_suffix (name, "_no")) {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_GUI);
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
+	} else {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_GUI);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_GUI);
+	}
+}
+
+/**
+ * pk_application_menu_filter_free_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_free_cb (GtkWidget *widget, PkApplication *application)
+{
+	const gchar *name;
+	name = gtk_widget_get_name (widget);
+
+	/* only care about new state */
+	if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+		return;
+	}
+
+	/* set new filter */
+	if (g_str_has_suffix (name, "_yes")) {
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_FREE);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
+	} else if (g_str_has_suffix (name, "_no")) {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_FREE);
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
+	} else {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_FREE);
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NOT_FREE);
+	}
+}
+
+/**
+ * pk_application_menu_filter_basename_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_basename_cb (GtkWidget *widget, PkApplication *application)
+{
+	/* single checkbox */
+	if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_BASENAME);
+	} else {
+		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_BASENAME);
+	}
+}
+
+/**
+ * pk_application_menu_filter_newest_cb:
+ * @widget: The GtkWidget object
+ **/
+static void
+pk_application_menu_filter_newest_cb (GtkWidget *widget, PkApplication *application)
+{
+	/* single checkbox */
+	if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) {
+//		pk_enum_list_append (application->priv->current_filter, PK_FILTER_ENUM_NEWEST);
+	} else {
+//		pk_enum_list_remove (application->priv->current_filter, PK_FILTER_ENUM_NEWEST);
+	}
+}
+
+/**
  * pk_application_init:
  **/
 static void
@@ -1422,7 +1582,7 @@
 
 	/* Hide window first so that the dialogue resizes itself without redrawing */
 	gtk_widget_hide (main_window);
-	gtk_window_set_icon_name (GTK_WINDOW (main_window), "system-software-installer");
+	gtk_window_set_icon_name (GTK_WINDOW (main_window), "PK_STOCK_APP_ICON");
 
 	/* Get the main window quit */
 	g_signal_connect (main_window, "delete_event",
@@ -1443,12 +1603,82 @@
 			  G_CALLBACK (pk_application_homepage_cb), application);
 	gtk_widget_set_tooltip_text (widget, _("Visit homepage for selected package"));
 
-	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_description");
+	widget = glade_xml_get_widget (application->priv->glade_xml, "imagemenuitem_about");
+	g_signal_connect (widget, "activate",
+			  G_CALLBACK (pk_application_menu_about_cb), application);
+
+	widget = glade_xml_get_widget (application->priv->glade_xml, "imagemenuitem_refresh");
+	g_signal_connect (widget, "activate",
+			  G_CALLBACK (pk_application_menu_refresh_cb), application);
+
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_sources");
+	g_signal_connect (widget, "activate",
+			  G_CALLBACK (pk_application_menu_sources_cb), application);
+
+	widget = glade_xml_get_widget (application->priv->glade_xml, "imagemenuitem_quit");
+	g_signal_connect (widget, "activate",
+			  G_CALLBACK (pk_application_menu_quit_cb), application);
+
+	/* installed filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_yes");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_installed_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_no");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_installed_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_both");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_installed_cb), application);
+
+	/* devel filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_yes");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_devel_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_no");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_devel_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_both");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_devel_cb), application);
+
+	/* gui filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_yes");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_gui_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_no");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_gui_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_both");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_gui_cb), application);
+
+	/* free filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_yes");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_free_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_no");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_free_cb), application);
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed_both");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_free_cb), application);
+
+	widget = glade_xml_get_widget (application->priv->glade_xml, "vbox_description_pane");
 	gtk_widget_hide (widget);
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "hbox_filesize");
 	gtk_widget_hide (widget);
 
+	/* basename filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_basename");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_basename_cb), application);
+
+	/* newest filter */
+	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_newest");
+	g_signal_connect (widget, "toggled",
+			  G_CALLBACK (pk_application_menu_filter_newest_cb), application);
+
 	/* Remove description/file list if needed. */
 	widget = glade_xml_get_widget (application->priv->glade_xml, "notebook_description");
 	g_signal_connect (widget, "switch-page",
@@ -1474,14 +1704,22 @@
 		gtk_notebook_remove_page (GTK_NOTEBOOK (widget), page);
 	}
 
-	/* until we get the mugshot stuff, disable this */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "image_description");
-	gtk_widget_hide (widget);
-
 	/* hide the group selector if we don't support search-groups */
 	if (pk_enum_list_contains (application->priv->role_list, PK_ROLE_ENUM_SEARCH_GROUP) == FALSE) {
-		widget = glade_xml_get_widget (application->priv->glade_xml, "notebook_type");
-		gtk_notebook_remove_page (GTK_NOTEBOOK (widget), 1);
+		widget = glade_xml_get_widget (application->priv->glade_xml, "scrolledwindow_groups");
+		gtk_widget_hide (widget);
+	}
+
+	/* hide the refresh cache button if we can't do it */
+	if (pk_enum_list_contains (application->priv->role_list, PK_ROLE_ENUM_REFRESH_CACHE) == FALSE) {
+		widget = glade_xml_get_widget (application->priv->glade_xml, "imagemenuitem_refresh");
+		gtk_widget_hide (widget);
+	}
+
+	/* hide the software-sources button if we can't do it */
+	if (pk_enum_list_contains (application->priv->role_list, PK_ROLE_ENUM_GET_REPO_LIST) == FALSE) {
+		widget = glade_xml_get_widget (application->priv->glade_xml, "imagemenuitem_sources");
+		gtk_widget_hide (widget);
 	}
 
 	/* simple find button */
@@ -1525,65 +1763,29 @@
 	/* coldplug icon to default to search by name*/
 	pk_application_menu_search_by_name (NULL, application);
 
-	/* filter installed */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_installed");
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Installed"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Available"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("All packages"));
-	g_signal_connect (GTK_COMBO_BOX (widget), "changed",
-			  G_CALLBACK (pk_application_filter_installed_combobox_changed_cb), application);
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
-
-	/* filter devel */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_gui");
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Only graphical"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Only text"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("All packages"));
-	g_signal_connect (GTK_COMBO_BOX (widget), "changed",
-			  G_CALLBACK (pk_application_filter_gui_combobox_changed_cb), application);
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
-
-	/* filter gui */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_devel");
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Only development"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Non-development"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("All packages"));
-	g_signal_connect (GTK_COMBO_BOX (widget), "changed",
-			  G_CALLBACK (pk_application_filter_devel_combobox_changed_cb), application);
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
-
-	/* filter free */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_free");
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Only free"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Non-free"));
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("All packages"));
-	g_signal_connect (GTK_COMBO_BOX (widget), "changed",
-			  G_CALLBACK (pk_application_filter_free_combobox_changed_cb), application);
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
-
 	/* hide the filters we can't support */
 	if (pk_enum_list_contains (application->priv->filter_list, PK_FILTER_ENUM_INSTALLED) == FALSE) {
-		widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_installed");
-		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (application->priv->glade_xml, "label_filter_installed");
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_installed");
 		gtk_widget_hide (widget);
 	}
 	if (pk_enum_list_contains (application->priv->filter_list, PK_FILTER_ENUM_DEVELOPMENT) == FALSE) {
-		widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_devel");
-		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (application->priv->glade_xml, "label_filter_devel");
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_devel");
 		gtk_widget_hide (widget);
 	}
 	if (pk_enum_list_contains (application->priv->filter_list, PK_FILTER_ENUM_GUI) == FALSE) {
-		widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_gui");
-		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (application->priv->glade_xml, "label_filter_gui");
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_gui");
 		gtk_widget_hide (widget);
 	}
 	if (pk_enum_list_contains (application->priv->filter_list, PK_FILTER_ENUM_FREE) == FALSE) {
-		widget = glade_xml_get_widget (application->priv->glade_xml, "combobox_filter_free");
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_free");
 		gtk_widget_hide (widget);
-		widget = glade_xml_get_widget (application->priv->glade_xml, "label_filter_free");
+	}
+	if (pk_enum_list_contains (application->priv->filter_list, PK_FILTER_ENUM_BASENAME) == FALSE) {
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_basename");
+		gtk_widget_hide (widget);
+	}
+	if (TRUE) {
+		widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_newest");
 		gtk_widget_hide (widget);
 	}
 
@@ -1596,7 +1798,7 @@
 	widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
 	gtk_widget_set_sensitive (widget, FALSE);
 
-	gtk_widget_set_size_request (main_window, 800, 400);
+	gtk_widget_set_size_request (main_window, 800, 500);
 	gtk_widget_show (main_window);
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "treeview_packages");

Modified: trunk/src/pk-update-viewer.c
==============================================================================
--- trunk/src/pk-update-viewer.c	(original)
+++ trunk/src/pk-update-viewer.c	Mon Mar 24 14:16:05 2008
@@ -295,6 +295,7 @@
 		pk_debug ("don't double start");
 		return;
 	}
+	gtk_list_store_clear (list_store_details);
 
 	pk_updates_animation_load_frames ();
 
@@ -365,6 +366,8 @@
 		return;
 	}
 
+	gtk_list_store_clear (list_store_description);
+
 	pk_updates_animation_load_frames ();
 
 	widget = glade_xml_get_widget (glade_xml, "treeview_description");
@@ -426,24 +429,23 @@
  * pk_updates_refresh_cb:
  **/
 static void
-pk_updates_refresh_cb (GtkWidget *widget, gboolean data)
+pk_updates_refresh_cb (GtkWidget *widget, gpointer data)
 {
 	gboolean ret;
 
 	/* clear existing list */
-	gtk_list_store_clear (list_store_details);
 	pk_updates_preview_animation_start ();
 
 	/* make the refresh button non-clickable */
 	gtk_widget_set_sensitive (widget, FALSE);
 
-	/* make the apply button non-clickable until we get completion */
-	widget = glade_xml_get_widget (glade_xml, "button_apply");
-	gtk_widget_set_sensitive (widget, FALSE);
+	/* make the buttons non-clickable until we get completion */
 	widget = glade_xml_get_widget (glade_xml, "button_apply2");
 	gtk_widget_set_sensitive (widget, FALSE);
 	widget = glade_xml_get_widget (glade_xml, "button_review");
 	gtk_widget_set_sensitive (widget, FALSE);
+	widget = glade_xml_get_widget (glade_xml, "button_history");
+	gtk_widget_set_sensitive (widget, FALSE);
 
 	/* we can't click this if we havn't finished */
 	pk_client_reset (client, NULL);
@@ -453,6 +455,19 @@
 	}
 }
 
+static void
+pk_updates_history_cb (GtkWidget *widget, gpointer data)
+{
+	GError *error = NULL;
+
+	/* FIXME: do this in process */
+	if (!g_spawn_command_line_async ("pk-transaction-viewer", &error)) {
+		pk_error_modal_dialog (_("Failed to launch transaction viewer"),
+				       error->message);
+		g_error_free (error);			
+	}
+}
+
 /**
  * pk_button_cancel_cb:
  **/
@@ -900,7 +915,6 @@
 		g_free (package_id);
 
 		/* clear and display animation until new details come in */
-		gtk_list_store_clear (list_store_description);
 		pk_updates_description_animation_start ();
 
 		widget = glade_xml_get_widget (glade_xml, "hbox_reboot");
@@ -960,15 +974,15 @@
 pk_update_get_approx_time (guint time)
 {
 	if (time < 60) {
-		return _("Less than a minute");
+		return _("Less than a minute ago");
 	} else if (time < 60*60) {
-		return _("Less than an hour");
+		return _("Less than an hour ago");
 	} else if (time < 24*60*60) {
-		return _("A few hours");
+		return _("A few hours ago");
 	} else if (time < 7*24*60*60) {
-		return _("A few days");
+		return _("A few days ago");
 	}
-	return _("Over a week");
+	return _("Over a week ago");
 }
 
 /**
@@ -1050,15 +1064,15 @@
 	/* stop the throbber */
 	pk_updates_preview_animation_stop ();
 
-	/* make the refresh button clickable now we have completed */
-	widget = glade_xml_get_widget (glade_xml, "button_apply");
-	gtk_widget_set_sensitive (widget, TRUE);
+	/* make the buttons clickable again now we have completed */
 	widget = glade_xml_get_widget (glade_xml, "button_apply2");
 	gtk_widget_set_sensitive (widget, TRUE);
 	widget = glade_xml_get_widget (glade_xml, "button_review");
 	gtk_widget_set_sensitive (widget, TRUE);
 	widget = glade_xml_get_widget (glade_xml, "button_refresh");
 	gtk_widget_set_sensitive (widget, TRUE);
+	widget = glade_xml_get_widget (glade_xml, "button_history");
+	gtk_widget_set_sensitive (widget, TRUE);
 
 	/* hide the cancel */
 	if (role == PK_ROLE_ENUM_UPDATE_SYSTEM) {
@@ -1308,6 +1322,7 @@
 	PkEnumList *role_list;
 	PkRoleEnum role;
 	gboolean ret;
+	GtkSizeGroup *size_group;
 
 	const GOptionEntry options[] = {
 		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
@@ -1397,10 +1412,6 @@
 	widget = glade_xml_get_widget (glade_xml, "button_restart");
 	gtk_widget_hide (widget);
 
-	/* hide until we have reboot notifier */
-	widget = glade_xml_get_widget (glade_xml, "button_review");
-	gtk_widget_hide (widget);
-
 	/* Get the main window quit */
 	g_signal_connect (main_window, "delete_event",
 			  G_CALLBACK (pk_window_delete_event_cb), loop);
@@ -1445,18 +1456,25 @@
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (pk_updates_apply_cb), loop);
 	gtk_widget_set_tooltip_text(widget, _("Apply all updates"));
-	gtk_widget_set_sensitive (widget, FALSE);
 
 	widget = glade_xml_get_widget (glade_xml, "button_apply2");
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (pk_updates_apply_cb), loop);
 	gtk_widget_set_tooltip_text(widget, _("Apply all updates"));
-	gtk_widget_set_sensitive (widget, FALSE);
+
+	size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
 
 	widget = glade_xml_get_widget (glade_xml, "button_refresh");
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (pk_updates_refresh_cb), NULL);
 	gtk_widget_set_tooltip_text(widget, _("Refreshing is not normally required but will retrieve the latest application and update lists"));
+	gtk_size_group_add_widget (size_group, widget);
+
+	widget = glade_xml_get_widget (glade_xml, "button_history");
+	g_signal_connect (widget, "clicked",
+			  G_CALLBACK (pk_updates_history_cb), NULL);
+	gtk_size_group_add_widget (size_group, widget);
+
 	widget = glade_xml_get_widget (glade_xml, "button_help");
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (pk_button_help_cb), NULL);
@@ -1505,9 +1523,15 @@
 	pk_treeview_add_columns_update (GTK_TREE_VIEW (widget));
 	gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
 
-	/* make the refresh button non-clickable until we get completion */
+	/* make the buttons non-clickable until we get completion */
 	widget = glade_xml_get_widget (glade_xml, "button_refresh");
 	gtk_widget_set_sensitive (widget, FALSE);
+	widget = glade_xml_get_widget (glade_xml, "button_apply2");
+	gtk_widget_set_sensitive (widget, FALSE);
+	widget = glade_xml_get_widget (glade_xml, "button_review");
+	gtk_widget_set_sensitive (widget, FALSE);
+	widget = glade_xml_get_widget (glade_xml, "button_history");
+	gtk_widget_set_sensitive (widget, FALSE);
 
 	/* set the last updated text */
 	pk_update_update_last_refreshed_time (client);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]