gnome-packagekit r286 - in trunk: . data data/icons data/icons/16x16/status data/icons/22x22/status data/icons/24x24/status data/icons/48x48/status data/icons/scalable/status help help/C po src



Author: rhughes
Date: Tue Sep 16 16:47:41 2008
New Revision: 286
URL: http://svn.gnome.org/viewvc/gnome-packagekit?rev=286&view=rev

Log:
from git

Removed:
   trunk/src/gpk-application-state.c
   trunk/src/gpk-application-state.h
Modified:
   trunk/Makefile.am
   trunk/NEWS
   trunk/configure.ac
   trunk/data/gpk-application.glade
   trunk/data/gpk-client.glade
   trunk/data/icons/16x16/status/Makefile.am
   trunk/data/icons/22x22/status/Makefile.am
   trunk/data/icons/22x22/status/pk-update-high.png
   trunk/data/icons/24x24/status/Makefile.am
   trunk/data/icons/24x24/status/pk-update-high.png
   trunk/data/icons/48x48/status/Makefile.am
   trunk/data/icons/generate_48x48_icons.sh
   trunk/data/icons/scalable/status/Makefile.am
   trunk/help/C/gnome-packagekit.xml
   trunk/help/Makefile.am
   trunk/po/POTFILES.in
   trunk/po/ar.po
   trunk/po/ca.po
   trunk/po/cs.po
   trunk/po/cy.po
   trunk/po/de.po
   trunk/po/el.po
   trunk/po/en_GB.po
   trunk/po/es.po
   trunk/po/fi.po
   trunk/po/fr.po
   trunk/po/gl.po
   trunk/po/he.po
   trunk/po/hu.po
   trunk/po/it.po
   trunk/po/ja.po
   trunk/po/nb.po
   trunk/po/nl.po
   trunk/po/oc.po
   trunk/po/pa.po
   trunk/po/pl.po
   trunk/po/pt_BR.po
   trunk/po/ru.po
   trunk/po/sv.po
   trunk/po/tr.po
   trunk/src/Makefile.am
   trunk/src/gpk-application.c
   trunk/src/gpk-client.c
   trunk/src/gpk-common.c
   trunk/src/gpk-interface.h

Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am	(original)
+++ trunk/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -1,5 +1,4 @@
 SUBDIRS =						\
-	libunique					\
 	docs						\
 	man						\
 	src						\

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Tue Sep 16 16:47:41 2008
@@ -1,13 +1,65 @@
+Version 0.3.3
+~~~~~~~~~~~~~~
+Released: 2008-09-16
+
+* Translations
+ - Updated Spanish translation (Daniel Mustieles)
+ - Updated Hebrew translation (Mark Krapivner)
+ - Updated Finnish translation (Ville-Pekka Vainio)
+
+* New
+ - Add two new icons, pk-collection-available and pk-collection-installed (Mike Langlie)
+ - Add pk-package-blocked icon for blocked packages (Richard Hughes)
+ - Add a --timed-exit parameter so we can do memory profiling (Richard Hughes)
+ - If the installed applications have an application icon, use it in gpk-application (Richard Hughes)
+ - Add InstallGStreamerCodecs to the session interface (Richard Hughes)
+ - Change the session dbus interface to support sending a xid and timestamp so
+   we can do focus stealing and modal windows correctly (Richard Hughes)
+ - Add a new GObject to GpkClient to abstract out the window interactions (Richard Hughes)
+ - Add a test script to install codecs with a XID and timestamp (Richard Hughes)
+
+* Bugfix:
+ - Don't make blocked selectable in the gpk-update-viewer tool (Richard Hughes)
+ - Add some images into the help file to make it more interesting (Richard Hughes)
+ - Only clear the last data details and show the spinner if it takes a little while,
+   else we flicker the display too much (Richard Hughes)
+ - Convert the codec installer dbus interface from as to a(ss) as suggested by davidz (Richard Hughes)
+ - Add a function gpk_error_dialog_modal_with_time so we can deal with focus stealing (Richard Hughes)
+ - Don't ignore collection packages in gpk-application (Richard Hughes)
+ - Fix a number of memory leaks in the client tools (Richard Hughes)
+ - Add two new methods: gpk_client_set_parent_xid() and gpk_client_update_timestamp() so
+   we can fix focus stealing and modal windows (Richard Hughes)
+ - Support INFO_ENUM_COLLECTION_INSTALLED and INFO_ENUM_COLLECTION_AVAILABLE (Richard Hughes)
+ - Add a new confirm dialog for the codec and mime type searching (Richard Hughes)
+ - Don't show the finshed UI when using gpk-application (Richard Hughes)
+
+Version 0.3.2
+~~~~~~~~~~~~~~
+Released: 2008-09-08
+
+* Translations
+ - Updated Spanish translation (Daniel Mustieles)
+ - Brazilian Portuguese translation updated (Igor Pires Soares)
+ - Updated Finnish translation (Ville-Pekka Vainio)
+
+* Bugfix:
+ - Don't present the user with ok/cancel dialogs, instead use the verb (Richard Hughes)
+ - Use the correct system-search icon name in gpk-application (Richard Hughes)
+ - Correct the orientation of the shadow in the pk-update-high icons (Richard Hughes)
+ - Fix the GType name clash as suggested by Rob Taylor (Richard Hughes)
+ - Show the 'install firmware' bubble only if the firmware is available (Richard Hughes)
+ - Add text for new error enum. Fixes rh#459870 (Robin Norwood)
+
 Version 0.3.1
 ~~~~~~~~~~~~~~
 Released: 2008-08-27
 
-New:
+* New:
  - Support all the PkMessage types (Richard Hughes)
  - Add UI to set the interval for checking for distro upgrades (Richard Hughes)
  - Detect when we need a distro upgrade (Richard Hughes)
 
-Bugfix:
+* Bugfix:
  - Fix a spelling error from Resolved to Resolving (Daniel Nicoletti)
  - Fix the shadow in the refresh cache animation. Fixes fd#17236 (Michael Monreal)
  - Add some new text for GetDistroUpgrades and the new group enums (Richard Hughes)
@@ -28,14 +80,14 @@
  - Updated Polish translation (Wadim Dziedzic)
  - Updated Occitan translation (Yannig Marchegay)
 
-New:
+* New:
  - Change the client tools to the updated 0.3.x API (Richard Hughes)
  - Force a pre-cache of all the update detail at startup (Richard Hughes)
  - Populate the package auto-completion box in gpk-application (Richard Hughes)
  - Support the new fields in the update details (Richard Hughes)
  - Allow gpk-install-file to install .pack files (Shishir Goel)
 
-Bugfix:
+* Bugfix:
  - Add a blocked update handler (Daniel Nicoletti)
  - Make some of the glade labels non-translatable (Kjartan Maraas)
  - Correct some typos found by Andre Klapper (Richard Hughes)

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Tue Sep 16 16:47:41 2008
@@ -1,6 +1,6 @@
 AC_PREREQ(2.52)
 
-AC_INIT(gnome-packagekit, 0.3.2)
+AC_INIT(gnome-packagekit, 0.3.4)
 AC_CONFIG_SRCDIR(src)
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
 AM_CONFIG_HEADER(config.h)
@@ -45,7 +45,7 @@
 dnl ---------------------------------------------------------------------------
 dnl - Library dependencies
 dnl ---------------------------------------------------------------------------
-PACKAGEKIT_REQUIRED=0.2.2
+PACKAGEKIT_REQUIRED=0.3.3
 GLIB_REQUIRED=2.14.0
 GTK_REQUIRED=2.12.0
 DBUS_REQUIRED=1.1.2
@@ -209,7 +209,6 @@
 dnl ---------------------------------------------------------------------------
 AC_OUTPUT([
 Makefile
-libunique/Makefile
 src/Makefile
 help/Makefile
 man/Makefile

Modified: trunk/data/gpk-application.glade
==============================================================================
--- trunk/data/gpk-application.glade	(original)
+++ trunk/data/gpk-application.glade	Tue Sep 16 16:47:41 2008
@@ -724,6 +724,7 @@
                               <widget class="GtkHBox" id="hbox2">
                                 <property name="visible">True</property>
                                 <property name="spacing">6</property>
+                                <property name="homogeneous">True</property>
                                 <child>
                                   <widget class="GtkScrolledWindow" id="scrolledwindow2">
                                     <property name="visible">True</property>
@@ -763,26 +764,6 @@
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
-                                <child>
-                                  <widget class="GtkVBox" id="vbox6">
-                                    <property name="visible">True</property>
-                                    <child>
-                                      <widget class="GtkImage" id="image_icon">
-                                        <property name="visible">True</property>
-                                        <property name="stock">gtk-missing-image</property>
-                                        <property name="icon_size">6</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="expand">False</property>
-                                        <property name="fill">False</property>
-                                      </packing>
-                                    </child>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="position">2</property>
-                                  </packing>
-                                </child>
                               </widget>
                               <packing>
                                 <property name="expand">False</property>

Modified: trunk/data/gpk-client.glade
==============================================================================
--- trunk/data/gpk-client.glade	(original)
+++ trunk/data/gpk-client.glade	Tue Sep 16 16:47:41 2008
@@ -2,7 +2,7 @@
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
 <!--*- mode: xml -*-->
 <glade-interface>
-  <widget class="GtkWindow" id="window_updates">
+  <widget class="GtkWindow" id="window_client">
     <property name="title" translatable="yes">Install Package</property>
     <property name="resizable">False</property>
     <property name="modal">True</property>
@@ -10,286 +10,64 @@
     <property name="icon_name">system-software-update</property>
     <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
     <child>
-      <widget class="GtkVBox" id="vbox4">
+      <widget class="GtkVBox" id="vbox_check">
         <property name="visible">True</property>
+        <property name="border_width">12</property>
+        <property name="spacing">9</property>
         <child>
-          <widget class="GtkHBox" id="hbox_hidden">
+          <widget class="GtkHBox" id="hbox2">
             <property name="visible">True</property>
+            <property name="spacing">12</property>
             <child>
-              <widget class="GtkVBox" id="vbox_progress">
-                <property name="border_width">12</property>
-                <property name="spacing">6</property>
+              <widget class="GtkVBox" id="vbox8">
+                <property name="visible">True</property>
                 <child>
-                  <widget class="GtkTable" id="table1">
+                  <widget class="GtkHBox" id="hbox1">
                     <property name="visible">True</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="column_spacing">6</property>
-                    <property name="row_spacing">6</property>
-                    <child>
-                      <widget class="GtkVBox" id="vbox2">
-                        <property name="visible">True</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <widget class="GtkLabel" id="progress_part_label">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                            <property name="yalign">0</property>
-                            <property name="label">&lt;b&gt;Downloading&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkProgressBar" id="progressbar_percent">
-                            <property name="visible">True</property>
-                            <property name="pulse_step">0.10000000149</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </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="GtkVBox" id="vbox1">
-                        <property name="visible">True</property>
-                        <child>
-                          <widget class="GtkHBox" id="hbox1">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkLabel" id="label_package">
-                                <property name="label">&lt;b&gt;The second update&lt;/b&gt;
-(update2)</property>
-                                <property name="use_markup">True</property>
-                                <property name="wrap">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                          </packing>
-                        </child>
-                      </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="y_options">GTK_FILL</property>
-                      </packing>
-                    </child>
                     <child>
                       <widget class="Custom" id="image_status">
                         <property name="visible">True</property>
                       </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkVBox" id="vbox3">
-                        <property name="visible">True</property>
-                        <child>
-                          <widget class="GtkImage" id="image_package">
-                            <property name="stock">gtk-spell-check</property>
-                            <property name="icon_size">6</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                          </packing>
-                        </child>
-                      </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">GTK_FILL</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox4">
-                    <property name="visible">True</property>
-                    <property name="spacing">6</property>
-                    <property name="layout_style">GTK_BUTTONBOX_END</property>
-                    <child>
-                      <widget class="GtkButton" id="button_help3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-help</property>
-                        <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">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-cancel</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkButton" id="button_close">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-close</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
                     </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
-                    <property name="pack_type">GTK_PACK_END</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="GtkVBox" id="vbox_confirm">
-                <property name="border_width">12</property>
-                <property name="spacing">5</property>
+              <widget class="GtkVBox" id="vbox9">
+                <property name="visible">True</property>
+                <property name="spacing">12</property>
                 <child>
-                  <widget class="GtkHBox" id="hbox5">
+                  <widget class="GtkHBox" id="hbox3">
                     <property name="visible">True</property>
-                    <property name="spacing">12</property>
                     <child>
-                      <widget class="GtkImage" id="image15">
+                      <widget class="GtkLabel" id="label_title">
                         <property name="visible">True</property>
-                        <property name="stock">gtk-dialog-info</property>
-                        <property name="icon_size">6</property>
+                        <property name="label">&lt;b&gt;Totem requires (Downloading)&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="wrap">True</property>
                       </widget>
                       <packing>
                         <property name="expand">False</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkVBox" id="vbox6">
-                        <property name="visible">True</property>
-                        <property name="spacing">10</property>
-                        <child>
-                          <widget class="GtkHBox" id="hbox17">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkLabel" id="label16">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">&lt;b&gt;Installation Complete&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkHBox" id="hbox_reboot">
-                            <property name="spacing">5</property>
-                            <child>
-                              <widget class="GtkImage" id="image1">
-                                <property name="visible">True</property>
-                                <property name="stock">gtk-dialog-warning</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label2">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">A system restart is recommended</property>
-                              </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>
-                          </packing>
-                        </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>
+                  </packing>
                 </child>
                 <child>
-                  <widget class="GtkHButtonBox" id="buttonbox_confirm">
+                  <widget class="GtkProgressBar" id="progressbar_percent">
                     <property name="visible">True</property>
-                    <property name="spacing">6</property>
-                    <property name="layout_style">GTK_BUTTONBOX_END</property>
-                    <child>
-                      <widget class="GtkButton" id="button_help4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-help</property>
-                        <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_close2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-close</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
+                    <property name="pulse_step">0.10000000149</property>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -297,172 +75,123 @@
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkVBox" id="vbox_confirm2">
-                <property name="border_width">12</property>
-                <property name="spacing">5</property>
                 <child>
-                  <widget class="GtkHBox" id="hbox20">
+                  <widget class="GtkVBox" id="vbox10">
                     <property name="visible">True</property>
-                    <property name="spacing">12</property>
-                    <child>
-                      <widget class="GtkImage" id="image17">
-                        <property name="visible">True</property>
-                        <property name="stock">gtk-dialog-error</property>
-                        <property name="icon_size">6</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="padding">20</property>
-                      </packing>
-                    </child>
                     <child>
-                      <widget class="GtkVBox" id="vbox5">
+                      <widget class="GtkHBox" id="hbox_message">
                         <property name="visible">True</property>
-                        <property name="spacing">10</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox21">
+                          <widget class="GtkLabel" id="label_message">
                             <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkLabel" id="label_error_title">
-                                <property name="visible">True</property>
-                                <property name="label">&lt;b&gt;Installation failed&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
+                            <property name="label">Some &lt;b&gt;extra&lt;/b&gt; codecs are required:</property>
+                            <property name="use_markup">True</property>
+                            <property name="wrap">True</property>
                           </widget>
                           <packing>
                             <property name="expand">False</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox22">
+                          <widget class="GtkLabel" id="label_force_height">
+                            <property name="height_request">50</property>
                             <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkLabel" id="label_error_message">
-                                <property name="visible">True</property>
-                                <property name="label">The transaction was cancelled before any actions were taken</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
+                            <property name="label" translatable="yes"> </property>
                           </widget>
                           <packing>
                             <property name="expand">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                        <child>
-                          <widget class="GtkExpander" id="expander1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <child>
-                              <widget class="GtkHBox" id="hbox24">
-                                <property name="visible">True</property>
-                                <child>
-                                  <widget class="GtkLabel" id="label_error_details">
-                                    <property name="visible">True</property>
-                                    <property name="label">Geeky information about the error...</property>
-                                    <property name="use_markup">True</property>
-                                    <property name="wrap">True</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                  </packing>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label27">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">&lt;b&gt;More details:&lt;/b&gt;</property>
-                                <property name="use_markup">True</property>
-                              </widget>
-                              <packing>
-                                <property name="type">label_item</property>
-                              </packing>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="padding">5</property>
-                            <property name="position">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label3">
-                            <property name="visible">True</property>
-                            <property name="label">  </property>
-                          </widget>
-                          <packing>
-                            <property name="position">3</property>
-                          </packing>
-                        </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="position">2</property>
+                  </packing>
                 </child>
                 <child>
-                  <widget class="GtkHButtonBox" id="hbuttonbox6">
+                  <widget class="GtkLabel" id="label_force_width">
+                    <property name="width_request">400</property>
+                    <property name="height_request">1</property>
                     <property name="visible">True</property>
-                    <property name="spacing">6</property>
-                    <property name="layout_style">GTK_BUTTONBOX_END</property>
-                    <child>
-                      <widget class="GtkButton" id="button_help5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-help</property>
-                        <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_close3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="can_default">True</property>
-                        <property name="label">gtk-close</property>
-                        <property name="use_stock">True</property>
-                        <property name="response_id">0</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
+                    <property name="label" translatable="yes"> </property>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="position">1</property>
+                    <property name="position">3</property>
                   </packing>
                 </child>
               </widget>
               <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+        </child>
+        <child>
+          <widget class="GtkHButtonBox" id="buttonbox_main">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="button_help">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-help</property>
+                <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">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="label" translatable="yes">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button_close">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="label" translatable="yes">gtk-close</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
                 <property name="position">2</property>
               </packing>
             </child>
+            <child>
+              <widget class="GtkButton" id="button_action">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="label">Action</property>
+                <property name="response_id">0</property>
+              </widget>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
           </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
         </child>
       </widget>
     </child>

Modified: trunk/data/icons/16x16/status/Makefile.am
==============================================================================
--- trunk/data/icons/16x16/status/Makefile.am	(original)
+++ trunk/data/icons/16x16/status/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -5,10 +5,13 @@
 iconsdir = $(themedir)/$(size)/$(context)
 
 icons_DATA = 				\
+	pk-collection-installed.png	\
+	pk-collection-available.png	\
 	pk-package-installed.png	\
 	pk-package-available.png	\
 	pk-package-add.png		\
 	pk-package-cleanup.png		\
+	pk-package-blocked.png		\
 	pk-package-delete.png		\
 	pk-package-download.png		\
 	pk-package-search.png		\

Modified: trunk/data/icons/22x22/status/Makefile.am
==============================================================================
--- trunk/data/icons/22x22/status/Makefile.am	(original)
+++ trunk/data/icons/22x22/status/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -5,10 +5,13 @@
 iconsdir = $(themedir)/$(size)/$(context)
 
 icons_DATA = 				\
+	pk-collection-installed.png	\
+	pk-collection-available.png	\
 	pk-package-installed.png	\
 	pk-package-available.png	\
 	pk-package-add.png		\
 	pk-package-cleanup.png		\
+	pk-package-blocked.png		\
 	pk-package-delete.png		\
 	pk-package-download.png		\
 	pk-package-search.png		\

Modified: trunk/data/icons/22x22/status/pk-update-high.png
==============================================================================
Binary files. No diff available.

Modified: trunk/data/icons/24x24/status/Makefile.am
==============================================================================
--- trunk/data/icons/24x24/status/Makefile.am	(original)
+++ trunk/data/icons/24x24/status/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -5,10 +5,13 @@
 iconsdir = $(themedir)/$(size)/$(context)
 
 icons_DATA = 				\
+	pk-collection-installed.png	\
+	pk-collection-available.png	\
 	pk-package-installed.png	\
 	pk-package-available.png	\
 	pk-package-add.png		\
 	pk-package-cleanup.png		\
+	pk-package-blocked.png		\
 	pk-package-delete.png		\
 	pk-package-download.png		\
 	pk-package-search.png		\

Modified: trunk/data/icons/24x24/status/pk-update-high.png
==============================================================================
Binary files. No diff available.

Modified: trunk/data/icons/48x48/status/Makefile.am
==============================================================================
--- trunk/data/icons/48x48/status/Makefile.am	(original)
+++ trunk/data/icons/48x48/status/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -5,10 +5,13 @@
 iconsdir = $(themedir)/$(size)/$(context)
 
 icons_DATA = 				\
+	pk-collection-installed.png	\
+	pk-collection-available.png	\
 	pk-package-installed.png	\
 	pk-package-available.png	\
 	pk-package-add.png		\
 	pk-package-cleanup.png		\
+	pk-package-blocked.png		\
 	pk-package-delete.png		\
 	pk-package-download.png		\
 	pk-package-search.png		\

Modified: trunk/data/icons/generate_48x48_icons.sh
==============================================================================
--- trunk/data/icons/generate_48x48_icons.sh	(original)
+++ trunk/data/icons/generate_48x48_icons.sh	Tue Sep 16 16:47:41 2008
@@ -3,7 +3,11 @@
 
 for subdir in $subdirs; do
 	cd scalable/$subdir
-	for i in *.svg;do 
-		inkscape --without-gui --export-png="../48x48/"$( echo $i | cut -d . -f -1 ).png --export-dpi=72 --export-background-opacity=0 --export-width=48 --export-height=48 "$i";done
+	for i in *.svg;do
+		target="../48x48/"$( echo $i | cut -d . -f -1 ).png
+		echo "converting $i to $target"
+		if [ ! -e $target ]; then
+			inkscape --without-gui --export-png=$target --export-dpi=72 --export-background-opacity=0 --export-width=48 --export-height=48 "$i";done
+		fi
 	cd -
 done

Modified: trunk/data/icons/scalable/status/Makefile.am
==============================================================================
--- trunk/data/icons/scalable/status/Makefile.am	(original)
+++ trunk/data/icons/scalable/status/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -5,10 +5,13 @@
 iconsdir = $(themedir)/$(size)/$(context)
 
 icons_DATA = 				\
+	pk-collection-installed.svg	\
+	pk-collection-available.svg	\
 	pk-package-installed.svg	\
 	pk-package-available.svg	\
 	pk-package-add.svg		\
 	pk-package-cleanup.svg		\
+	pk-package-blocked.svg		\
 	pk-package-delete.svg		\
 	pk-package-download.svg		\
 	pk-package-search.svg		\

Modified: trunk/help/C/gnome-packagekit.xml
==============================================================================
--- trunk/help/C/gnome-packagekit.xml	(original)
+++ trunk/help/C/gnome-packagekit.xml	Tue Sep 16 16:47:41 2008
@@ -152,6 +152,16 @@
     Access to all privileged operations is controlled via
     <ulink url="http://en.wikipedia.org/wiki/PolicyKit";>PolicyKit</ulink>.
   </para>
+  <figure>
+    <title>PolicyKit Permissions UI</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-repo-auth.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
 
 </section>
 
@@ -257,6 +267,16 @@
     Before installing a package, you also can visit the home page of the
     software projects easily for getting any additional details.
   </para>
+  <figure>
+    <title>Searching for a group with filters</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-application-groups.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
   <para>
     Typically, you can find several thousands of software packages under
     different groups available.
@@ -331,6 +351,16 @@
     additional software for many Linux distributions - check your
     distribution-specific documentation for more information.
   </para>
+  <figure>
+    <title>Software Sources UI</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-repo.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
   <para>
     At this time, PackageKit does not offer a way to add new repositories to
     your system. It only allows you to enable or disable known repositories.
@@ -356,47 +386,57 @@
 
 <section id="update-viewer">
   <title>Update Viewer</title>
-   <para>
-     You can update your system via <menuchoice><guimenu>System</guimenu>
-     <guisubmenu>Administration</guisubmenu>
-     <guimenuitem>Update System</guimenuitem></menuchoice>
-     or by selecting <menuchoice><guimenuitem>Show Updates</guimenuitem></menuchoice>
-     from the update icon in the notification area.
-     When you do this, the update viewer application launches and immediately
-     starts checking for updates. Once this check completes, it shows you an
-     overview of available updates, grouped by severity. The severities range
-     from security updates over important updates to bug fix updates and
-     finally enhancements.
-   </para>
-   <note><para>
-     Note that the severity information must be provided by the software
-     repositories where the software packages originate. This information may not
-     be available for development branches of distributions.
-   </para></note>
-   <para>
-     Below the summary of available updates, the update viewer gives and
-     indication how long ago the last check (or <quote>refresh</quote>)
-     for new updates happened, and when updates where last installed.
-   </para>
-   <para>
-     You can choose to manually refresh and verify the presence of
-     updates by clicking the <guibutton>Refresh</guibutton> button.
-   </para>
-   <tip><para>
-     You can change how often PackageKit refreshes on its own in
-     the <link linkend="prefs">Software Update Preferences</link>.
-   </para></tip>
-   <para>
-     There is a option to view the history of updates including
-     previous installations, removal or updates of software.
-   </para>
-   <para>
-     Use the <guibutton>Update System</guibutton> button to install
-     all available updates or use the <guibutton>Review</guibutton>
-     button to review and select individual updates.
-     If you do not want to install updates at this time, you can just
-     close the window.
-   </para>
+  <para>
+    You can update your system via <menuchoice><guimenu>System</guimenu>
+    <guisubmenu>Administration</guisubmenu>
+    <guimenuitem>Update System</guimenuitem></menuchoice>
+    or by selecting <menuchoice><guimenuitem>Show Updates</guimenuitem></menuchoice>
+    from the update icon in the notification area.
+    When you do this, the update viewer application launches and immediately
+    starts checking for updates. Once this check completes, it shows you an
+    overview of available updates, grouped by severity. The severities range
+    from security updates over important updates to bug fix updates and
+    finally enhancements.
+  </para>
+  <note><para>
+    Note that the severity information must be provided by the software
+    repositories where the software packages originate. This information may not
+    be available for development branches of distributions.
+  </para></note>
+  <figure>
+    <title>Updates overview</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-updates-overview.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
+  <para>
+    Below the summary of available updates, the update viewer gives and
+    indication how long ago the last check (or <quote>refresh</quote>)
+    for new updates happened, and when updates where last installed.
+  </para>
+  <para>
+    You can choose to manually refresh and verify the presence of
+    updates by clicking the <guibutton>Refresh</guibutton> button.
+  </para>
+  <tip><para>
+    You can change how often PackageKit refreshes on its own in
+    the <link linkend="prefs">Software Update Preferences</link>.
+  </para></tip>
+  <para>
+    There is a option to view the history of updates including
+    previous installations, removal or updates of software.
+  </para>
+  <para>
+    Use the <guibutton>Update System</guibutton> button to install
+    all available updates or use the <guibutton>Review</guibutton>
+    button to review and select individual updates.
+    If you do not want to install updates at this time, you can just
+    close the window.
+  </para>
 
   <section id="update-viewer-details">
     <title>Detailed information about updates</title>
@@ -419,11 +459,35 @@
       If you do not want to install updates at this time, you can just
       close the window.
     </para>
+    <figure>
+      <title>Update viewer tool</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/gpk-updates.png" format="PNG"/>
+          </imageobject>
+        </mediaobject>
+      </screenshot>
+    </figure>
+    <note><para>
+      You can uncheck all the updates quickly by right clicking on the list and
+      selecting the menu item <guibutton>Unselect all</guibutton>.
+    </para></note>
   </section>
 </section>
 
 <section id="prefs">
   <title>Software Updates Preferences</title>
+  <figure>
+    <title>Preferences tool</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-prefs.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
   <para>
     Preferences can be configured via <menuchoice><guimenu>System</guimenu>
     <guisubmenu>Preferences</guisubmenu><guisubmenu>System</guisubmenu>
@@ -461,6 +525,16 @@
      information about the available updates before installing them. See
      <xref linkend="update-viewer"/> for more information.
   </para>
+  <figure>
+    <title>Preferences tool</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-updates-warning.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
 </section>
 
 <section id="eula">
@@ -479,6 +553,16 @@
     Some software also includes limitations if the user can be held liable for
     damage that arises through improper use of the software.
   </para>
+  <figure>
+    <title>Example EULA</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-eula.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
   <para>
     Be sure to carefully read and accept the EULA text before continuing with
     the install or update.
@@ -500,6 +584,16 @@
     The other benefit is that signed packages can be installed without using the
     administrator password, assuming your admin has enabled this option.
   </para>
+  <figure>
+    <title>Example signature prompt</title>
+    <screenshot>
+      <mediaobject>
+        <imageobject>
+          <imagedata fileref="figures/gpk-signature.png" format="PNG"/>
+        </imageobject>
+      </mediaobject>
+    </screenshot>
+  </figure>
   <para>
     To trust a repository, you should very the details of the signing key.
     Normally the best way to do this is to go to the web page of the software

Modified: trunk/help/Makefile.am
==============================================================================
--- trunk/help/Makefile.am	(original)
+++ trunk/help/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -4,7 +4,16 @@
 DOC_MODULE = gnome-packagekit
 DOC_ENTITIES = legal.xml
 DOC_INCLUDES = 
-DOC_FIGURES =
+DOC_FIGURES = \
+	figures/gpk-application-groups.png \
+	figures/gpk-eula.png \
+	figures/gpk-prefs.png \
+	figures/gpk-repo-auth.png \
+	figures/gpk-repo.png \
+	figures/gpk-signature.png \
+	figures/gpk-updates-overview.png \
+	figures/gpk-updates.png \
+	figures/gpk-updates-warning.png
 
 DOC_LINGUAS = el es oc pl sv
 

Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in	(original)
+++ trunk/po/POTFILES.in	Tue Sep 16 16:47:41 2008
@@ -27,6 +27,7 @@
 src/gpk-client.c
 src/gpk-client-chooser.c
 src/gpk-client-depends.c
+src/gpk-client-dialog.c
 src/gpk-client-eula.c
 src/gpk-client-requires.c
 src/gpk-client-resolve.c

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Tue Sep 16 16:47:41 2008
@@ -172,8 +172,6 @@
 	gpk-application-main.c				\
 	gpk-application.c				\
 	gpk-application.h				\
-	gpk-application-state.c				\
-	gpk-application-state.h				\
 	gpk-cell-renderer-uri.c				\
 	gpk-cell-renderer-uri.h				\
 	$(shared_SOURCES)				\

Modified: trunk/src/gpk-application.c
==============================================================================
--- trunk/src/gpk-application.c	(original)
+++ trunk/src/gpk-application.c	Tue Sep 16 16:47:41 2008
@@ -52,7 +52,6 @@
 #include <gpk-error.h>
 
 #include "gpk-application.h"
-#include "gpk-application-state.h"
 #include "gpk-animated-icon.h"
 #include "gpk-dialog.h"
 #include "gpk-client-run.h"
@@ -104,6 +103,7 @@
 	gchar			*package;
 	gchar			*group;
 	gchar			*url;
+	guint			 details_event_id;
 	GHashTable		*repos;
 	PkBitfield		 roles;
 	PkBitfield		 filters;
@@ -117,13 +117,20 @@
 };
 
 enum {
+	GPK_STATE_INSTALLED,
+	GPK_STATE_IN_LIST,
+	GPK_STATE_COLLECTION,
+	GPK_STATE_UNKNOWN
+};
+
+enum {
 	ACTION_CLOSE,
 	LAST_SIGNAL
 };
 
 enum {
 	PACKAGES_COLUMN_IMAGE,
-	PACKAGES_COLUMN_STATE,  /* state of the  */
+	PACKAGES_COLUMN_STATE,  /* state of the item */
 	PACKAGES_COLUMN_CHECKBOX,  /* what we show in the checkbox */
 	PACKAGES_COLUMN_CHECKBOX_ENABLE, /* sensitive */
 	PACKAGES_COLUMN_TEXT,
@@ -185,6 +192,58 @@
 }
 
 /**
+ * gpk_application_state_get_icon:
+ **/
+const gchar *
+gpk_application_state_get_icon (PkBitfield state)
+{
+	if (state == 0)
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_AVAILABLE);
+
+	if (state == pk_bitfield_value (GPK_STATE_INSTALLED))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_INSTALLED);
+
+	if (state == pk_bitfield_value (GPK_STATE_IN_LIST))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_INSTALLING);
+
+	if (state == pk_bitfield_from_enums (GPK_STATE_INSTALLED, GPK_STATE_IN_LIST, -1))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_REMOVING);
+
+	if (state == pk_bitfield_value (GPK_STATE_COLLECTION))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_COLLECTION_AVAILABLE);
+
+	if (state == pk_bitfield_from_enums (GPK_STATE_INSTALLED, GPK_STATE_COLLECTION, -1))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_COLLECTION_INSTALLED);
+
+	if (state == pk_bitfield_from_enums (GPK_STATE_IN_LIST, GPK_STATE_INSTALLED, GPK_STATE_COLLECTION, -1))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_REMOVING); // need new icon
+
+	if (state == pk_bitfield_from_enums (GPK_STATE_IN_LIST, GPK_STATE_COLLECTION, -1))
+		return gpk_info_enum_to_icon_name (PK_INFO_ENUM_INSTALLING); // need new icon
+
+	return NULL;
+}
+
+/**
+ * gpk_application_state_get_checkbox:
+ **/
+gboolean
+gpk_application_state_get_checkbox (PkBitfield state)
+{
+	PkBitfield state_local;
+
+	/* remove any we don't care about */
+	state_local = state;
+	pk_bitfield_remove (state_local, GPK_STATE_COLLECTION);
+
+	/* installed or in list */
+	if (state_local == pk_bitfield_value (GPK_STATE_INSTALLED) ||
+	    state_local == pk_bitfield_value (GPK_STATE_IN_LIST))
+		return TRUE;
+	return FALSE;
+}
+
+/**
  * gpk_application_set_find_cancel_buttons:
  **/
 static void
@@ -260,7 +319,7 @@
 	GtkWidget *widget;
 	const gchar *icon;
 	gboolean checkbox;
-	GpkPackageState state;
+	PkBitfield state;
 	gboolean ret;
 
 	/* get the selection and add */
@@ -276,7 +335,7 @@
 	gtk_tree_model_get (model, &iter, PACKAGES_COLUMN_STATE, &state, -1);
 
 	/* do something with the value */
-	gpk_application_state_invert (&state);
+	pk_bitfield_invert (state, GPK_STATE_IN_LIST);
 
 	/* get the new icon */
 	icon = gpk_application_state_get_icon (state);
@@ -294,20 +353,18 @@
  * gpk_application_get_checkbox_enable:
  **/
 static gboolean
-gpk_application_get_checkbox_enable (GpkApplication *application, GpkPackageState state)
+gpk_application_get_checkbox_enable (GpkApplication *application, PkBitfield state)
 {
 	gboolean enable_installed = TRUE;
 	gboolean enable_available = TRUE;
 
-	if (application->priv->action == PK_ACTION_INSTALL) {
+	if (application->priv->action == PK_ACTION_INSTALL)
 		enable_installed = FALSE;
-	} else if (application->priv->action == PK_ACTION_REMOVE) {
+	else if (application->priv->action == PK_ACTION_REMOVE)
 		enable_available = FALSE;
-	}
 
-	if (gpk_application_state_installed (state)) {
+	if (pk_bitfield_contain (state, GPK_STATE_INSTALLED))
 		return enable_installed;
-	}
 	return enable_available;
 }
 
@@ -322,7 +379,7 @@
 	gboolean valid;
 	GtkTreeIter iter;
 	GtkTreeModel *model;
-	GpkPackageState state;
+	PkBitfield state;
 	gboolean enabled;
 	guint length;
 
@@ -565,7 +622,7 @@
 	GtkTreeIter iter;
 	GtkTreeSelection *selection;
 	GtkWidget *widget;
-	GpkPackageState state;
+	PkBitfield state;
 	gboolean ret;
 	gchar *package_id = NULL;
 
@@ -585,7 +642,7 @@
 			    PACKAGES_COLUMN_STATE, &state, -1);
 
 	/* only if installed */
-	if (gpk_application_state_installed (state)) {
+	if (pk_bitfield_contain (state, GPK_STATE_INSTALLED)) {
 		/* run this single package id */
 		array = g_strsplit (package_id, "|", 1);
 		exec = gpk_client_run_show (array);
@@ -780,6 +837,12 @@
 	GtkTreeIter iter;
 	GtkTreeSelection *selection;
 
+	/* we don't need to clear anymore */
+	if (application->priv->details_event_id > 0) {
+		g_source_remove (application->priv->details_event_id);
+		application->priv->details_event_id = 0;
+	}
+
 	/* format */
 	markup = g_strdup_printf ("<b>%s:</b>", title);
 
@@ -799,11 +862,12 @@
 	gtk_tree_view_columns_autosize (GTK_TREE_VIEW (tree_view));
 }
 
+
 /**
- * gpk_application_clear_details:
+ * gpk_application_clear_details_really:
  **/
-static void
-gpk_application_clear_details (GpkApplication *application)
+static gboolean
+gpk_application_clear_details_really (GpkApplication *application)
 {
 	GtkWidget *widget;
 
@@ -815,11 +879,23 @@
 	gpk_application_set_text_buffer (widget, NULL);
 
 	/* hide dead widgets */
-	widget = glade_xml_get_widget (application->priv->glade_xml, "image_icon");
-	gtk_widget_hide (widget);
-
 	widget = glade_xml_get_widget (application->priv->glade_xml, "scrolledwindow_detail");
 	gtk_widget_hide (widget);
+
+	/* never repeat */
+	return FALSE;
+}
+
+/**
+ * gpk_application_clear_details:
+ **/
+static void
+gpk_application_clear_details (GpkApplication *application)
+{
+	/* only clear the last data if it takes a little while, else we flicker the display */
+	if (application->priv->details_event_id > 0)
+		g_source_remove (application->priv->details_event_id);
+	application->priv->details_event_id = g_timeout_add (100, (GSourceFunc) gpk_application_clear_details_really, application);
 }
 
 /**
@@ -847,7 +923,6 @@
 	const gchar *group;
 	gboolean valid;
 	gboolean installed;
-	PkInfoEnum info;
 
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
@@ -863,15 +938,6 @@
 	widget = glade_xml_get_widget (application->priv->glade_xml, "scrolledwindow_detail");
 	gtk_widget_show (widget);
 
-	/* nothing in the detail database or invalid */
-	if (valid == FALSE) {
-		info = installed ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE;
-		icon = gpk_info_enum_to_icon_name (info);
-	}
-	widget = glade_xml_get_widget (application->priv->glade_xml, "image_icon");
-	gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon, GTK_ICON_SIZE_DIALOG);
-	gtk_widget_show (widget);
-
 	gtk_list_store_clear (application->priv->details_store);
 
 	/* homepage */
@@ -948,7 +1014,7 @@
 	gboolean installed;
 	gboolean checkbox;
 	gboolean enabled;
-	GpkPackageState state = 0;
+	PkBitfield state = 0;
 	static guint package_cnt = 0;
 
 	g_return_if_fail (PK_IS_APPLICATION (application));
@@ -972,14 +1038,14 @@
 	in_queue = pk_package_list_contains_obj (application->priv->package_list, obj);
 	installed = (obj->info == PK_INFO_ENUM_INSTALLED) || (obj->info == PK_INFO_ENUM_COLLECTION_INSTALLED);
 
-	if (installed && in_queue)
-		state = GPK_STATE_INSTALLED_TO_BE_REMOVED;
-	else if (installed && !in_queue)
-		state = GPK_STATE_INSTALLED;
-	else if (!installed && in_queue)
-		state = GPK_STATE_AVAILABLE_TO_BE_INSTALLED;
-	else if (!installed && !in_queue)
-		state = GPK_STATE_AVAILABLE;
+	if (installed)
+		pk_bitfield_add (state, GPK_STATE_INSTALLED);
+	if (in_queue)
+		pk_bitfield_add (state, GPK_STATE_IN_LIST);
+
+	/* special icon */
+	if (obj->info == PK_INFO_ENUM_COLLECTION_INSTALLED || obj->info == PK_INFO_ENUM_COLLECTION_AVAILABLE)
+		pk_bitfield_add (state, GPK_STATE_COLLECTION);
 
 	/* use the application icon if available */
 	icon = pk_extra_get_icon_name (application->priv->extra, obj->id->name);
@@ -1025,9 +1091,8 @@
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
 	/* obvious message, don't tell the user */
-	if (code == PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
+	if (code == PK_ERROR_ENUM_TRANSACTION_CANCELLED)
 		return;
-	}
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "window_manager");
 	gpk_error_dialog_modal (GTK_WINDOW (widget), gpk_error_enum_to_localised_text (code),
@@ -1081,15 +1146,13 @@
 		message = _("Try entering a package name in the search bar.");
 	} else {
 		if (application->priv->search_type == PK_SEARCH_NAME ||
-		    application->priv->search_type == PK_SEARCH_FILE) {
+		    application->priv->search_type == PK_SEARCH_FILE)
 			message = _("Try searching package descriptions by clicking the icon next to the search text.");
-		} else {
+		else
 			message = _("Try again with a different search term.");
-		}
 	}
 
 	text = g_strdup_printf ("%s\n%s", title, message);
-
 	gtk_list_store_append (application->priv->packages_store, &iter);
 	gtk_list_store_set (application->priv->packages_store, &iter,
 			    PACKAGES_COLUMN_STATE, FALSE,
@@ -1287,9 +1350,8 @@
 	} else {
 		egg_debug ("doing nothing");
 	}
-	if (!ret) {
+	if (!ret)
 		return ret;
-	}
 
 	/* switch around buttons */
 	gpk_application_set_find_cancel_buttons (application, FALSE);
@@ -1388,11 +1450,10 @@
 	valid = pk_strvalidate (package);
 
 	widget = glade_xml_get_widget (application->priv->glade_xml, "button_find");
-	if (valid == FALSE || egg_strzero (package)) {
+	if (valid == FALSE || egg_strzero (package))
 		gtk_widget_set_sensitive (widget, FALSE);
-	} else {
+	else
 		gtk_widget_set_sensitive (widget, TRUE);
-	}
 	return FALSE;
 }
 
@@ -1409,7 +1470,7 @@
 	GtkTreeIter iter;
 	GtkTreePath *path;
 	GtkTreeSelection *selection;
-	GpkPackageState state;
+	PkBitfield state;
 
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
@@ -1462,7 +1523,7 @@
 	GtkTreeModel *model;
 	GtkTreeSelection *selection;
 	const gchar *icon;
-	GpkPackageState state;
+	PkBitfield state;
 	gboolean ret;
 
 	g_return_if_fail (PK_IS_APPLICATION (application));
@@ -1476,8 +1537,9 @@
 	/* for all current items, reset the state if in the list */
 	while (valid) {
 		gtk_tree_model_get (model, &iter, PACKAGES_COLUMN_STATE, &state, -1);
-		ret = gpk_application_state_unselect (&state);
+		ret = pk_bitfield_contain (state, GPK_STATE_IN_LIST);
 		if (ret) {
+			pk_bitfield_remove (state, GPK_STATE_IN_LIST);
 			/* get the new icon */
 			icon = gpk_application_state_get_icon (state);
 			checkbox = gpk_application_state_get_checkbox (state);
@@ -1656,7 +1718,7 @@
 	GError *error = NULL;
 	gboolean show_install = TRUE;
 	gboolean show_remove = TRUE;
-	GpkPackageState state;
+	PkBitfield state;
 	gchar **package_ids;
 	gchar *image;
 
@@ -1699,15 +1761,15 @@
 			    PACKAGES_COLUMN_STATE, &state,
 			    PACKAGES_COLUMN_ID, &application->priv->package, -1);
 
-	show_install = (state == GPK_STATE_AVAILABLE || state == GPK_STATE_INSTALLED_TO_BE_REMOVED);
-	show_remove = (state == GPK_STATE_INSTALLED || state == GPK_STATE_AVAILABLE_TO_BE_INSTALLED);
+	show_install = (state == 0 ||
+			state == pk_bitfield_from_enums (GPK_STATE_INSTALLED, GPK_STATE_IN_LIST, -1));
+	show_remove = (state == pk_bitfield_value (GPK_STATE_INSTALLED) ||
+		       state == pk_bitfield_value (GPK_STATE_IN_LIST));
 
-	if (application->priv->action == PK_ACTION_INSTALL && !gpk_application_state_in_queue (state)) {
+	if (application->priv->action == PK_ACTION_INSTALL && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
 		show_remove = FALSE;
-	}
-	if (application->priv->action == PK_ACTION_REMOVE && !gpk_application_state_in_queue (state)) {
+	if (application->priv->action == PK_ACTION_REMOVE && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
 		show_install = FALSE;
-	}
 
 	/* only show buttons if we are in the correct mode */
 	gpk_application_allow_install (application, show_install);
@@ -1717,7 +1779,7 @@
 	gpk_application_clear_details (application);
 
 	/* only show run menuitem for installed programs */
-	ret = gpk_application_state_installed (state);
+	ret = pk_bitfield_contain (state, GPK_STATE_INSTALLED);
 	widget = glade_xml_get_widget (application->priv->glade_xml, "menuitem_run");
 	gtk_widget_set_sensitive (widget, ret);
 
@@ -2445,7 +2507,7 @@
 	GtkTreeModel *model;
 	GtkTreeIter iter;
 	gboolean ret;
-	GpkPackageState state;
+	PkBitfield state;
 
 	g_return_if_fail (PK_IS_APPLICATION (application));
 
@@ -2461,11 +2523,10 @@
 	gtk_tree_model_get (model, &iter,
 			    PACKAGES_COLUMN_STATE, &state,
 			    PACKAGES_COLUMN_ID, &application->priv->package, -1);
-	if (gpk_application_state_get_checkbox (state)) {
+	if (gpk_application_state_get_checkbox (state))
 		gpk_application_remove (application);
-	} else {
+	else
 		gpk_application_install (application);
-	}
 }
 
 /**
@@ -2494,9 +2555,8 @@
 
 	egg_debug ("repo = %s:%s", repo_id, description);
 	/* no problem, just no point adding as we will fallback to the repo_id */
-	if (description == NULL) {
+	if (description == NULL)
 		return;
-	}
 	g_hash_table_insert (application->priv->repos, g_strdup (repo_id), g_strdup (description));
 }
 
@@ -2547,6 +2607,7 @@
 {
 	GtkTreeIter iter;
 	const gchar *welcome;
+	PkBitfield state = 0;
 
 	gpk_application_clear_packages (application);
 	gtk_list_store_append (application->priv->packages_store, &iter);
@@ -2558,7 +2619,7 @@
 		welcome = _("Enter a package name and then click find to get started.");
 	}
 	gtk_list_store_set (application->priv->packages_store, &iter,
-			    PACKAGES_COLUMN_STATE, FALSE,
+			    PACKAGES_COLUMN_STATE, state,
 			    PACKAGES_COLUMN_CHECKBOX, FALSE,
 			    PACKAGES_COLUMN_CHECKBOX_ENABLE, FALSE,
 			    PACKAGES_COLUMN_TEXT, welcome,
@@ -2587,6 +2648,7 @@
 	application->priv->group = NULL;
 	application->priv->url = NULL;
 	application->priv->has_package = FALSE;
+	application->priv->details_event_id = 0;
 	application->priv->package_list = pk_package_list_new ();
 
 	application->priv->gconf_client = gconf_client_get_default ();
@@ -2599,7 +2661,7 @@
 	/* create list stores */
 	application->priv->packages_store = gtk_list_store_new (PACKAGES_COLUMN_LAST,
 							        G_TYPE_STRING,
-							        G_TYPE_UINT,
+								G_TYPE_UINT64,
 							        G_TYPE_BOOLEAN,
 							        G_TYPE_BOOLEAN,
 							        G_TYPE_STRING,
@@ -3039,8 +3101,13 @@
 	g_signal_connect (selection, "changed",
 			  G_CALLBACK (gpk_application_groups_treeview_clicked_cb), application);
 
+	/* add this at the top of the list */
+	if (pk_bitfield_contain (application->priv->groups, PK_GROUP_ENUM_COLLECTIONS))
+		gpk_application_group_add_data (application, PK_GROUP_ENUM_COLLECTIONS);
+
 	/* only if we can do both */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_PACKAGES) &&
+	if ((pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_PACKAGES) ||
+	     pk_bitfield_contain (application->priv->groups, PK_GROUP_ENUM_COLLECTIONS)) &&
 	    pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
 		GtkTreeIter iter;
 
@@ -3060,11 +3127,11 @@
 		/* add columns to the tree view */
 		gpk_application_groups_add_columns (GTK_TREE_VIEW (widget));
 
-		/* add all the groups supported */
+		/* add all the groups supported (except collections, which we handled above */
 		for (i=0; i<PK_GROUP_ENUM_UNKNOWN; i++) {
-			if (pk_bitfield_contain (application->priv->groups, i)) {
+			if (pk_bitfield_contain (application->priv->groups, i) &&
+			    i != PK_GROUP_ENUM_COLLECTIONS)
 				gpk_application_group_add_data (application, i);
-			}
 		}
 	}
 
@@ -3102,6 +3169,9 @@
 	application = GPK_APPLICATION (object);
 	application->priv = GPK_APPLICATION_GET_PRIVATE (application);
 
+	if (application->priv->details_event_id > 0)
+		g_source_remove (application->priv->details_event_id);
+
 	g_object_unref (application->priv->glade_xml);
 	g_object_unref (application->priv->packages_store);
 	g_object_unref (application->priv->details_store);

Modified: trunk/src/gpk-client.c
==============================================================================
--- trunk/src/gpk-client.c	(original)
+++ trunk/src/gpk-client.c	Tue Sep 16 16:47:41 2008
@@ -1674,7 +1674,7 @@
 		goto out;
 
 	/* process package list */
-	string = g_string_new (_("The following packages can installed:"));
+	string = g_string_new (_("The following packages can be installed:"));
 	g_string_append (string, "\n\n");
 	len = pk_package_list_get_size (list);
 	for (i=0; i<len; i++) {

Modified: trunk/src/gpk-common.c
==============================================================================
--- trunk/src/gpk-common.c	(original)
+++ trunk/src/gpk-common.c	Tue Sep 16 16:47:41 2008
@@ -568,11 +568,11 @@
 		break;
 	case PK_ERROR_ENUM_FILE_CONFLICTS:
 		text = _("Two packages provide the same file.\n"
-			 "This is usually due to mixing packages for different software sources.");
+			 "This is usually due to mixing packages from different software sources.");
 		break;
 	case PK_ERROR_ENUM_PACKAGE_CONFLICTS:
 		text = _("Multiple packages exist that are not compatible with each other.\n"
-			 "This is usually due to mixing packages for different software sources.");
+			 "This is usually due to mixing packages from different software sources.");
 		break;
 	case PK_ERROR_ENUM_REPO_NOT_AVAILABLE:
 		text = _("There was a (possibly temporary) problem connecting to a software source\n"

Modified: trunk/src/gpk-interface.h
==============================================================================
--- trunk/src/gpk-interface.h	(original)
+++ trunk/src/gpk-interface.h	Tue Sep 16 16:47:41 2008
@@ -53,7 +53,7 @@
 #endif /* !G_ENABLE_DEBUG */
 
 
-/* NONE:UINT,UINT,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.7W8JHU:1) */
+/* NONE:UINT,UINT,STRING,POINTER (/tmp/dbus-binding-tool-c-marshallers.79P0GU:1) */
 extern void dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_STRING_POINTER (GClosure     *closure,
                                                                        GValue       *return_value,
                                                                        guint         n_param_values,
@@ -101,7 +101,7 @@
 }
 #define dbus_glib_marshal_gpk_dbus_NONE__UINT_UINT_STRING_POINTER	dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_STRING_POINTER
 
-/* NONE:UINT,UINT,BOXED,POINTER (/tmp/dbus-binding-tool-c-marshallers.7W8JHU:2) */
+/* NONE:UINT,UINT,BOXED,POINTER (/tmp/dbus-binding-tool-c-marshallers.79P0GU:2) */
 extern void dbus_glib_marshal_gpk_dbus_VOID__UINT_UINT_BOXED_POINTER (GClosure     *closure,
                                                                       GValue       *return_value,
                                                                       guint         n_param_values,



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