diff options
| -rw-r--r-- | DistUpgrade/DistUpgrade.glade | 511 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeControler.py | 5 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeView.py | 3 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeViewGtk.py | 82 | ||||
| -rw-r--r-- | SoftwareProperties/SoftwareProperties.py | 31 | ||||
| -rw-r--r-- | UpdateManager/GtkProgress.py | 44 | ||||
| -rw-r--r-- | UpdateManager/UpdateManager.py | 178 | ||||
| -rw-r--r-- | data/SoftwareProperties.glade | 9 | ||||
| -rw-r--r-- | data/UpdateManager.glade | 469 | ||||
| -rw-r--r-- | debian/changelog | 2 |
10 files changed, 1002 insertions, 332 deletions
diff --git a/DistUpgrade/DistUpgrade.glade b/DistUpgrade/DistUpgrade.glade index 00b04644..697514cf 100644 --- a/DistUpgrade/DistUpgrade.glade +++ b/DistUpgrade/DistUpgrade.glade @@ -39,7 +39,7 @@ <child> <widget class="GtkLabel" id="label_title"> <property name="visible">True</property> - <property name="label" translatable="yes"><span weight="bold" size="x-large">Upgrading Ubuntu</span></property> + <property name="label" translatable="yes"><span weight="bold" size="x-large">Upgrading to Ubuntu "Dapper" 6.04</span></property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -95,7 +95,7 @@ <child> <widget class="GtkTable" id="table_steps"> <property name="visible">True</property> - <property name="n_rows">4</property> + <property name="n_rows">5</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">6</property> @@ -161,7 +161,7 @@ <child> <widget class="GtkLabel" id="label_step1"> <property name="visible">True</property> - <property name="label" translatable="yes">Preparing upgrade</property> + <property name="label" translatable="yes">Preparing the upgrade</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -189,7 +189,7 @@ <child> <widget class="GtkLabel" id="label_step2"> <property name="visible">True</property> - <property name="label" translatable="yes">Upgrading software channels</property> + <property name="label" translatable="yes">Modifing the software channels</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -217,7 +217,7 @@ <child> <widget class="GtkLabel" id="label_step3"> <property name="visible">True</property> - <property name="label" translatable="yes">Upgrading the system</property> + <property name="label" translatable="yes">Downloading and installing the upgrades</property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -288,6 +288,51 @@ <property name="x_options">fill</property> </packing> </child> + + <child> + <widget class="GtkImage" id="image_step5"> + <property name="width_request">18</property> + <property name="height_request">18</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label_step5"> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> @@ -439,43 +484,6 @@ <property name="fill">True</property> </packing> </child> - - <child> - <widget class="GtkHButtonBox" id="hbuttonbox2"> - <property name="border_width">6</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <property name="spacing">6</property> - - <child> - <widget class="GtkButton" id="button3"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="button4"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-media-pause</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> </widget> </child> </widget> @@ -858,4 +866,423 @@ </child> </widget> +<widget class="GtkDialog" id="dialog_error"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox3"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button_bugreport"> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Report Bug</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button6"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkHBox" id="hbox8"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image5"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-error</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox7"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label_error"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkScrolledWindow" id="scroll_error"> + <property name="width_request">400</property> + <property name="height_request">200</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> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTextView" id="textview_error"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_NONE</property> + <property name="cursor_visible">True</property> + <property name="pixels_above_lines">4</property> + <property name="pixels_below_lines">4</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">4</property> + <property name="right_margin">4</property> + <property name="indent">0</property> + <property name="text" translatable="yes"></property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkDialog" id="dialog_obsolete"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> + <property name="modal">False</property> + <property name="default_width">500</property> + <property name="default_height">400</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">True</property> + <property name="has_separator">False</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="hbuttonbox4"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="button7"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="button8"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">_Continue</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox9"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkImage" id="image6"> + <property name="visible">True</property> + <property name="stock">gtk-dialog-question</property> + <property name="icon_size">6</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox10"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label26"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b><big>Start the upgrade?</big></b></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label27"> + <property name="visible">True</property> + <property name="label" translatable="yes">The upgrade of your system requires + + ... to download 2000 MByte + + ... to install 23 new packages + ... to remove 19 packages + ... to update 200 packages + +This is you last chance to cancel the upgrade.</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkExpander" id="expander2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="expanded">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="width_request">400</property> + <property name="height_request">200</property> + <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> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> + + <child> + <widget class="GtkTreeView" id="treeview2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="headers_visible">False</property> + <property name="rules_hint">False</property> + <property name="reorderable">False</property> + <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="label" translatable="yes">Details</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="type">label_item</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + </glade-interface> diff --git a/DistUpgrade/DistUpgradeControler.py b/DistUpgrade/DistUpgradeControler.py index 8321ce8f..6ab77103 100644 --- a/DistUpgrade/DistUpgradeControler.py +++ b/DistUpgrade/DistUpgradeControler.py @@ -277,7 +277,7 @@ class DistUpgradeControler(object): # this is the core def dapperUpgrade(self): # sanity check (check for ubuntu-desktop, brokenCache etc) - self._view.updateStatus(_("Checking update system")) + self._view.updateStatus(_("Checking package manager")) self._view.setStep(1) self.openCache() if not self.cache.sanityCheck(self._view): @@ -296,7 +296,7 @@ class DistUpgradeControler(object): self.abort() # then open the cache (again) - self._view.updateStatus(_("Checking update system")) + self._view.updateStatus(_("Checking package manager")) self.openCache() # calc the dist-upgrade and see if the removals are ok/expected @@ -317,6 +317,7 @@ class DistUpgradeControler(object): self.doPostUpgrade() # done, ask for reboot + self._view.setStep(5) self._view.updateStatus(_("System upgrade is complete.")) # FIXME should we look into /var/run/reboot-required here? if self._view.confirmRestart(): diff --git a/DistUpgrade/DistUpgradeView.py b/DistUpgrade/DistUpgradeView.py index abc5b340..4c9103ba 100644 --- a/DistUpgrade/DistUpgradeView.py +++ b/DistUpgrade/DistUpgradeView.py @@ -38,11 +38,12 @@ class DistUpgradeView(object): """ pass def setStep(self, step): - """ we have 4 steps current for a upgrade: + """ we have 5 steps current for a upgrade: 1. Analyzing the system 2. Updating repository information 3. Performing the upgrade 4. Post upgrade stuff + 5. Complete """ pass def confirmChanges(self, summary, changes, downloadSize): diff --git a/DistUpgrade/DistUpgradeViewGtk.py b/DistUpgrade/DistUpgradeViewGtk.py index 20f5f99a..61fd442b 100644 --- a/DistUpgrade/DistUpgradeViewGtk.py +++ b/DistUpgrade/DistUpgradeViewGtk.py @@ -46,14 +46,19 @@ def utf8(str): class GtkOpProgress(apt.progress.OpProgress): def __init__(self, progressbar): self.progressbar = progressbar + #self.progressbar.set_pulse_step(0.01) + #self.progressbar.pulse() + def update(self, percent): - #self._progressbar.show() - #self.progressbar.set_text(self.op) + #if percent > 99: + # self.progressbar.set_fraction(1) + #else: + # self.progressbar.pulse() self.progressbar.set_fraction(percent/100.0) while gtk.events_pending(): gtk.main_iteration() + def done(self): - #self.progressbar.hide() self.progressbar.set_text(" ") @@ -84,9 +89,8 @@ class GtkFetchProgressAdapter(apt.progress.FetchProgress): self.progress.set_fraction(0) self.status.show() def stop(self): - #self.progress.hide() self.progress.set_text(" ") - self.status.set_text("") + self.status.set_text(_("Download is complete")) def pulse(self): # FIXME: move the status_str and progress_str into python-apt # (python-apt need i18n first for this) @@ -123,7 +127,7 @@ class GtkInstallProgressAdapter(InstallProgress): # FIXME: add support for the timeout # of the terminal (to display something useful then) # -> longer term, move this code into python-apt - self.label_status.set_text(_("Installing updates ...")) + self.label_status.set_text(_("Installing updates")) self.progress.set_fraction(0.0) self.progress.set_text(" ") self.expander.set_sensitive(True) @@ -131,35 +135,22 @@ class GtkInstallProgressAdapter(InstallProgress): self.env = ["VTE_PTY_KEEP_FD=%s"% self.writefd, "DEBIAN_FRONTEND=gnome", "APT_LISTCHANGES_FRONTEND=none"] + def error(self, pkg, errormsg): logging.error("got a error from dpkg for pkg: '%s': '%s'" % (pkg, errormsg)) - dialog = gtk.MessageDialog(self.parent.window_main, 0, - gtk.MESSAGE_ERROR, - gtk.BUTTONS_OK,"") - summary = _("Error installing '%s'" % pkg) - msg = _("During the install a error occured. This is usually a bug " - "in the packages, please report it. See the message below " - "for more information. ") - msg="<big><b>%s</b></big>\n\n%s" % (summary,msg) - dialog.set_markup(msg) - dialog.vbox.set_spacing(6) - if errormsg != None: - scroll = gtk.ScrolledWindow() - scroll.set_size_request(400,200) - textview = gtk.TextView() - textview.set_cursor_visible(False) - textview.set_editable(False) - textview.get_buffer().set_text(utf8(errormsg)) - textview.show() - scroll.add(textview) - scroll.show() - dialog.vbox.pack_end(scroll) - dialog.run() - dialog.destroy() + #self.expander_terminal.set_expanded(True) + self.dialog_error.set_transient_for(self.window_main) + summary = _("Could not install '%s'" % pkg) + msg = _("The upgrade will abort. Please report the bug.") + markup="<big><b>%s</b></big>\n\n%s" % (summary, msg) + self.label_error.set_markup(markup) + self.textview_error.get_buffer().set_text(utf8(errormsg)) + self.scroll_error.show() + self.dialog_error.run() + self.dialog_error.hide() def conffile(self, current, new): logging.debug("got a conffile-prompt from dpkg for file: '%s'" % current) self.expander.set_expanded(True) - pass def fork(self): pid = self.term.forkpty(envv=self.env) return pid @@ -171,7 +162,6 @@ class GtkInstallProgressAdapter(InstallProgress): self.updateInterface() return self.apt_status def finishUpdate(self): - #self.progress.hide() self.label_status.set_text("") def updateInterface(self): InstallProgress.updateInterface(self) @@ -275,26 +265,22 @@ class GtkDistUpgradeView(DistUpgradeView,SimpleGladeApp): #attr = pango.AttrStyle(pango.STYLE_ITALIC, 0, -1) attrlist.insert(attr) label.set_property("attributes",attrlist) + def error(self, summary, msg, extended_msg=None): - dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_ERROR, - gtk.BUTTONS_OK,"") - msg="<big><b>%s</b></big>\n\n%s" % (summary,msg) - dialog.set_markup(msg) - dialog.vbox.set_spacing(6) + self.dialog_error.set_transient_for(self.window_main) + #self.expander_terminal.set_expanded(True) + msg="<big><b>%s</b></big>\n\n%s" % (summary, msg) + self.label_error.set_markup(msg) if extended_msg != None: - scroll = gtk.ScrolledWindow() - scroll.set_size_request(400,200) - textview = gtk.TextView() - textview.set_cursor_visible(False) - textview.set_editable(False) - textview.get_buffer().set_text(extended_msg) - textview.show() - scroll.add(textview) - scroll.show() - dialog.vbox.pack_end(scroll) - dialog.run() - dialog.destroy() + buffer = self.textview_error.get_buffer() + buffer.set_text(extended_msg) + self.scroll_error.show() + else: + self.scroll_error.hide() + self.dialog_error.run() + self.dialog_error.show() + self.dialog_error.destroy() return False def confirmChanges(self, summary, changes, downloadSize): diff --git a/SoftwareProperties/SoftwareProperties.py b/SoftwareProperties/SoftwareProperties.py index 6b992df7..8da70eee 100644 --- a/SoftwareProperties/SoftwareProperties.py +++ b/SoftwareProperties/SoftwareProperties.py @@ -86,14 +86,28 @@ class SoftwareProperties(SimpleGladeApp): self.combobox_interval_mapping = { 0 : 1, 1 : 2, 2 : 7, - 3 : 14, - 4 : -1} + 3 : 14 } self.combobox_update_interval.set_active(0) + update_days = apt_pkg.Config.FindI(CONF_MAP["autoupdate"]) + + self.combobox_update_interval.append_text("Daily") + self.combobox_update_interval.append_text("Every two days") + self.combobox_update_interval.append_text("Weekly") + self.combobox_update_interval.append_text("Every two weeks") + + # If a custom period is defined add an corresponding entry + if not update_days in self.combobox_interval_mapping.values(): + if update_days > 0: + self.combobox_update_interval.append_text(_("Every %s days" + % update_days)) + self.combobox_interval_mapping[4] = update_days + for key in self.combobox_interval_mapping: if self.combobox_interval_mapping[key] == update_days: self.combobox_update_interval.set_active(key) break + if update_days >= 1: self.checkbutton_auto_update.set_active(True) self.combobox_update_interval.set_sensitive(True) @@ -156,19 +170,24 @@ class SoftwareProperties(SimpleGladeApp): def on_combobox_update_interval_changed(self, widget): i = self.combobox_update_interval.get_active() value = self.combobox_interval_mapping[i] - apt_pkg.Config.Set(CONF_MAP["autoupdate"], str(value)) - self.write_config() + # Only write the key if it has changed + if not value == apt_pkg.Config.FindI(CONF_MAP["autoupdate"]): + apt_pkg.Config.Set(CONF_MAP["autoupdate"], str(value)) + self.write_config() def opt_autoupdate_toggled(self, widget): if self.checkbutton_auto_update.get_active(): self.combobox_update_interval.set_sensitive(True) + # if no frequency was specified use daily i = self.combobox_update_interval.get_active() + if i == -1: + i = 0 + self.combobox_update_interval.set_active(i) value = self.combobox_interval_mapping[i] else: self.combobox_update_interval.set_sensitive(False) value = 0 apt_pkg.Config.Set(CONF_MAP["autoupdate"], str(value)) - # FIXME: Write config options, apt_pkg should be able to do this. self.write_config() @@ -234,7 +253,7 @@ class SoftwareProperties(SimpleGladeApp): self.modified = True def add_key_clicked(self, widget): - chooser = gtk.FileChooserDialog(title=_("Choose a key-file"), + chooser = gtk.FileChooserDialog(title=_("Import key"), parent=self.window_main, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, diff --git a/UpdateManager/GtkProgress.py b/UpdateManager/GtkProgress.py index d25149e4..704946c7 100644 --- a/UpdateManager/GtkProgress.py +++ b/UpdateManager/GtkProgress.py @@ -27,21 +27,32 @@ import apt_pkg from gettext import gettext as _ class GtkOpProgress(apt.OpProgress): - def __init__(self, window,progressbar, parent): + def __init__(self, window, progressbar, status, parent): self._parent = parent self._window = window + self._status = status self._progressbar = progressbar + #self._progressbar.set_pulse_step(0.01) + #self._progressbar.pulse() window.set_transient_for(parent) def update(self, percent): #print percent #print self.Op #print self.SubOp + # Use pulse until apt doesn't restarts the progress bar + # several times self._window.show() - self._progressbar.set_text(self.op) + self._parent.set_sensitive(False) + self._status.set_markup("<i>%s</i>" % self.op) self._progressbar.set_fraction(percent/100.0) + #if percent > 99: + # self._progressbar.set_fraction(1) + #else: + # self._progressbar.pulse() while gtk.events_pending(): gtk.main_iteration() def done(self): + self._parent.set_sensitive(True) self._window.hide() class GtkFetchProgress(apt.progress.FetchProgress): @@ -59,25 +70,32 @@ class GtkFetchProgress(apt.progress.FetchProgress): if self.summary != "": self.summary.set_markup("<big><b>%s</b></big> \n\n%s" % (summary, descr)) - self.window_fetch.set_title(summary) def start(self): - self.progress.set_fraction(0) + self.progress.set_fraction(0) self.window_fetch.show() def stop(self): - self.window_fetch.hide() + self.window_fetch.hide() def on_button_fetch_cancel_clicked(self, widget): self._continue = False def pulse(self): apt.progress.FetchProgress.pulse(self) - if self.currentCPS > 0: - self.status.set_text(_("Download rate: %s/s - %s remaining" % (apt_pkg.SizeToStr(self.currentCPS), apt_pkg.TimeToStr(self.eta)))) - else: - self.status.set_text(_("Download rate: unkown")) - self.progress.set_fraction(self.percent/100.0) currentItem = self.currentItems + 1 if currentItem > self.totalItems: currentItem = self.totalItems - self.progress.set_text(_("Downloading file %li of %li" % (currentItem, self.totalItems))) - while gtk.events_pending(): - gtk.main_iteration() + if self.currentCPS > 0: + statusText = (_("Downloading file %li of %li with %s/s" + % (currentItem, self.totalItems, + apt_pkg.SizeToStr(self.currentCPS)))) + else: + statusText = (_("Downloading file %li of %li with unknown " + "speed") % (currentItem, self.totalItems)) + self.progress.set_fraction(self.percent/100.0) + self.status.set_markup("<i>%s</i>" % statusText) + # TRANSLATORS: show the remaining time in a progress bar: + #self.progress.set_text(_("About %s left" % (apt_pkg.TimeToStr(self.eta)))) + # FIXME: show remaining time + self.progress.set_text("") + + while gtk.events_pending(): + gtk.main_iteration() return self._continue diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index d2c2bc54..de77f041 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -142,10 +142,15 @@ class MyCache(apt.Cache): self.all_changes[name] = [alllines, srcpkg] except urllib2.HTTPError: if lock.locked(): - self.all_changes[name] = [_("Changes not found, the server may not be updated yet."), srcpkg] + self.all_changes[name] = [_("The list of changes is not " + "available yet. Please try again " + "later."), srcpkg] except IOError: if lock.locked(): - self.all_changes[name] = [_("Failed to download changes. Please check if there is an active internet connection."), srcpkg] + self.all_changes[name] = [_("Failed to download the list" + "of changes. Please " + "check your internet " + "connection."), srcpkg] if lock.locked(): lock.release() @@ -172,24 +177,19 @@ class UpdateList: self.pkgs.sort(lambda x,y: cmp(x.name,y.name)) if cache._depcache.KeepCount > 0: #print "WARNING, keeping packages" - msg=("<big><b>%s</b></big>\n\n%s"%(_("It is not possible to upgrade " - "all packages."), - _("This means that " - "besides the actual upgrade of the " - "packages some further action " - "(such as installing or removing " - "packages) " - "is required. Please use Synaptic " - "\"Smart Upgrade\" or " - "\"apt-get dist-upgrade\" to fix " - "the situation." - ))) + msg = ("<big><b>%s</b></big>\n\n%s" % \ + (_("Cannot install all available updates"), + _("Some updates require to install or remove further software. " + "Use the function \"Smart Upgrade\" of the package manager " + "\"Synaptic\" or run \"sudo apt-get dist-upgrade\" in a " + "terminal to update your system completely."))) dialog = gtk.MessageDialog(self.parent_window, 0, gtk.MESSAGE_INFO, - gtk.BUTTONS_OK,"") + gtk.BUTTONS_CLOSE,"") dialog.set_default_response(gtk.RESPONSE_OK) dialog.set_markup(msg) + dialog.set_title("") dialog.vbox.set_spacing(6) - label = gtk.Label(_("The following packages are not upgraded: ")) + label = gtk.Label(_("The following updates will be skipped:")) label.set_alignment(0.0,0.5) dialog.set_border_width(6) label.show() @@ -213,12 +213,14 @@ class UpdateList: class UpdateManager(SimpleGladeApp): def __init__(self, datadir): - + self.datadir = datadir SimpleGladeApp.__init__(self, datadir+"glade/UpdateManager.glade", None, domain="update-manager") self.gnome_program = gnome.init("update-manager", "0.41") + self.window_main.set_sensitive(False) + self.packages = [] self.dl_size = 0 @@ -281,7 +283,7 @@ class UpdateManager(SimpleGladeApp): self.gconfclient = gconf.client_get_default() # restore state self.restore_state() - + def set_changes_buffer(self, changes_buffer, text, name, srcpkg): changes_buffer.set_text("") @@ -342,12 +344,11 @@ class UpdateManager(SimpleGladeApp): self.set_changes_buffer(changes_buffer, changes[0], name, changes[1]) else: if self.expander_details.get_expanded(): - self.treeview_update.set_sensitive(False) self.hbox_footer.set_sensitive(False) lock = thread.allocate_lock() lock.acquire() t=thread.start_new_thread(self.cache.get_changelog,(name,lock)) - changes_buffer.set_text(_("Downloading changes...")) + changes_buffer.set_text(_("Downloading the list of changes...")) button = self.button_cancel_dl_changelog button.show() id = button.connect("clicked", @@ -360,7 +361,6 @@ class UpdateManager(SimpleGladeApp): # download finished (or canceld, or time-out) button.hide() button.disconnect(id); - self.treeview_update.set_sensitive(True) self.hbox_footer.set_sensitive(True) if self.cache.all_changes.has_key(name): @@ -391,7 +391,7 @@ class UpdateManager(SimpleGladeApp): text_download = "" self.expander_details.set_sensitive(False) self.treeview_update.set_sensitive(False) - self.label_downsize.hide() + self.label_downsize.set_text="" self.button_cancel.grab_default() else: text_header = "<big><b>"+gettext.ngettext("You can install one update", "You can install %s updates" % len(self.store), len(self.store))+"</b></big>" @@ -399,8 +399,8 @@ class UpdateManager(SimpleGladeApp): text_download = _("Download size: %s" % apt_pkg.SizeToStr(self.dl_size)) self.expander_details.set_sensitive(True) self.treeview_update.set_sensitive(True) - self.label_downsize.show() self.button_install.grab_default() + self.label_header.set_markup(text_header) self.label_downsize.set_markup(text_download) @@ -424,9 +424,9 @@ class UpdateManager(SimpleGladeApp): if action == INSTALL: cmd.append("--set-selections") cmd.append("--progress-str") - cmd.append("%s" % _("The updates are being applied.")) + cmd.append("%s" % _("Please wait, this can take some time.")) cmd.append("--finish-str") - cmd.append("%s" % _("Upgrade is complete")) + cmd.append("%s" % _("Update is complete")) proc = subprocess.Popen(cmd, stdin=subprocess.PIPE) f = proc.stdin for s in self.packages: @@ -465,24 +465,25 @@ class UpdateManager(SimpleGladeApp): #print "on_button_reload_clicked" #self.invoke_manager(UPDATE) progress = GtkProgress.GtkFetchProgress(self, - _("Downloading package " - "information"), - _("The repositories will be " - "checked for new, removed " - "or upgraded software " - "packages.")) + _("Reloading the information about " + "latest updates"), + _("It is important to check " + "the software sources for " + "available upgrades reguarly.")) # FIXME: do a try/except here otherwise it may bomb try: self.cache.update(progress) except (IOError,SystemError), msg: dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_ERROR, - gtk.BUTTONS_OK,"") + gtk.BUTTONS_CLOSE,"") + # FIXME: wording dialog.set_markup("<span weight=\"bold\" size=\"larger\">%s</span>"%\ - _("Error reloading")) - dialog.format_secondary_text(_("A error occured during the package " + _("Could not reload the update information")) + dialog.format_secondary_text(_("An error occured during the package " "list reload. Please see the below " "information for details what went " "wrong.")) + diaolg.set_title("") dialog.set_border_width(6) dialog.set_size_request(width=500,height=-1) scroll = gtk.ScrolledWindow() @@ -533,7 +534,7 @@ class UpdateManager(SimpleGladeApp): "at the same time. Please close " "this other application first."))); dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_ERROR, - gtk.BUTTONS_OK,"") + gtk.BUTTONS_CLOSE,"") dialog.set_markup(msg) dialog.run() dialog.destroy() @@ -546,8 +547,9 @@ class UpdateManager(SimpleGladeApp): self.window_main.set_sensitive(False) # create a progress window that will swallow the synaptic progress bars win = gtk.Window() + win.set_property("type-hint", gtk.gdk.WINDOW_TYPE_HINT_DIALOG) win.set_title("") - win.set_border_width(12) + win.set_border_width(6) win.set_transient_for(self.window_main) win.set_position(gtk.WIN_POS_CENTER_ON_PARENT) win.set_property("skip-taskbar-hint", True) @@ -645,7 +647,7 @@ class UpdateManager(SimpleGladeApp): secondary = _("You need to reload the package list from the servers " "for your changes to take effect. Do you want to do " "this now?") - dialog = gtk.MessageDialog(self.window_main,gtk.DIALOG_MODAL, + dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_INFO,gtk.BUTTONS_YES_NO,"") dialog.set_markup(primary); dialog.format_secondary_text(secondary); @@ -690,10 +692,10 @@ class UpdateManager(SimpleGladeApp): name = xml.sax.saxutils.escape(pkg.name) summary = xml.sax.saxutils.escape(pkg.summary) contents = "<big><b>%s</b></big>\n<small>%s\n\n" % (name, summary) - contents = contents + _("New version: %s (Size: %s)") % (pkg.candidateVersion,apt.SizeToStr(pkg.packageSize)) + "</small>" + contents = contents + _("New version: %s (Size: %s)") % (pkg.candidateVersion,apt.SizeToStr(pkg.packageSize)) + "</small>" iter = self.store.append([True, contents, pkg.name, pkg.summary, pkg.candidateVersion, pkg.description, pkg]) - self.add_update(pkg) + self.add_update(pkg) i = i + 1 @@ -701,9 +703,16 @@ class UpdateManager(SimpleGladeApp): return False def dist_no_longer_supported(self, meta_release): - msg = "<big><b>%s</b></big>\n\n%s" % (_("Your distribution is no longer supported"), _("Please upgrade to a newer version of Ubuntu Linux. The version you are running will no longer get security fixes or other critical updates. Please see http://www.ubuntulinux.org for upgrade information.")) + msg = "<big><b>%s</b></big>\n\n%s" % \ + (_("Your distribution is not supported anymore"), + _("You will not get any further security fixes or critical " + "updates. " + "Upgrade to a later version of Ubuntu Linux. See " + "http://www.ubuntu.com for more information on " + "upgrading.")) dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_WARNING, - gtk.BUTTONS_OK,"") + gtk.BUTTONS_CLOSE,"") + dialog.set_title("") dialog.set_markup(msg) dialog.run() dialog.destroy() @@ -733,11 +742,25 @@ class UpdateManager(SimpleGladeApp): res = self.dialog_release_notes.run() self.dialog_release_notes.hide() except urllib2.HTTPError: - # FIXME: make proper error dialogs here - print _("Release notes not found on the server.") + primary = "<span weight=\"bold\" size=\"larger\">%s</span>" % \ + _("Could not find the release notes") + secondary = _("The server may be overloaded. ") + dialog = gtk.MessageDialog(self.window_main,gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR,gtk.BUTTONS_CLOSE,"") + dialog.set_title("") + dialog.set_markup(primary); + dialog.format_secondary_text(secondary); + dialog.run() except IOError: - print _("Failed to download Release Notes. Please " - "check if there is an active internet connection.") + primary = "<span weight=\"bold\" size=\"larger\">%s</span>" % \ + _("Could not download the release notes") + secondary = _("Please check your internet connection.") + dialog = gtk.MessageDialog(self.window_main,gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR,gtk.BUTTONS_CLOSE,"") + dialog.set_title("") + dialog.set_markup(primary); + dialog.format_secondary_text(secondary); + dialog.run() self.window_main.set_sensitive(True) self.window_main.window.set_cursor(None) # user clicked cancel @@ -749,10 +772,11 @@ class UpdateManager(SimpleGladeApp): os.chdir(tmpdir) if self.new_dist.upgradeTool != None: progress = GtkProgress.GtkFetchProgress(self, - _("Downloading upgrade " - "informtion"), - _("The upgrade information " - "are downloaded")) + _("Downloading the upgrade " + "tool"), + _("The upgrade tool will " + "guide you through the " + "upgrade process.")) fetcher = apt_pkg.GetAcquire(progress) uri = self.new_dist.upgradeTool #print "Downloading %s to %s" % (uri, tmpdir) @@ -774,8 +798,17 @@ class UpdateManager(SimpleGladeApp): # see if we have a script file that we can run script = "%s/%s" % (tmpdir, self.new_dist.name) if not os.path.exists(script): - # FIXME: display a proper error message here - print "no script file found in extracted tarbal" + # no script file found in extracted tarbal + primary = "<span weight=\"bold\" size=\"larger\">%s</span>" % \ + _("Could not run the upgrade tool") + secondary = _("This is most likely a bug in the upgrade tool. " + "Please report it as a bug") + dialog = gtk.MessageDialog(self.window_main,gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR,gtk.BUTTONS_CLOSE,"") + dialog.set_title("") + dialog.set_markup(primary); + dialog.format_secondary_text(secondary); + dialog.run() else: #print "runing: %s" % script os.execv(script,[]) @@ -824,13 +857,14 @@ class UpdateManager(SimpleGladeApp): d = gtk.MessageDialog(parent=self.window_main, flags=gtk.DIALOG_MODAL, type=gtk.MESSAGE_ERROR, - buttons=gtk.BUTTONS_OK) + buttons=gtk.BUTTONS_CLOSE) d.set_markup("<big><b>%s</b></big>\n\n%s" % ( - _("Unable to get exclusive lock"), - _("This usually means that another package management " - "application (like apt-get or aptitude) already running. " - "Please close that application first"))) + _("Only one software management tool is allowed to " + "run at the same time"), + _("Please close the other application e.g. \"aptitude\" " + "or \"Synaptic\" at first."))) print "error from apt: '%s'" % e + d.set_title("") res = d.run() d.destroy() sys.exit() @@ -838,20 +872,19 @@ class UpdateManager(SimpleGladeApp): try: self.cache = MyCache(GtkProgress.GtkOpProgress(self.dialog_cacheprogress, self.progressbar_cache, + self.label_cache, self.window_main)) except AssertionError: # we assert a clean cache msg=("<big><b>%s</b></big>\n\n%s"% \ - (_("Your system has broken packages!"), - _("This means that some dependencies " - "of the installed packages are not " - "satisfied. Please use \"Synaptic\" " - "or \"apt-get\" to fix the " - "situation." - ))) + (_("Software index is broken"), + _("It is impossible to install or remove any software. " + "Please use the package manager \"Synaptic\" or run " + "\"sudo apt-get install -f\" in a terminal to fix " + "this issue at first."))) dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_ERROR, - gtk.BUTTONS_OK,"") + gtk.BUTTONS_CLOSE,"") dialog.set_markup(msg) dialog.vbox.set_spacing(6) dialog.run() @@ -863,16 +896,27 @@ class UpdateManager(SimpleGladeApp): self.cache._depcache.ReadPinFile(SYNAPTIC_PINFILE) self.cache._depcache.Init() + + def check_auto_update(self): + # Check if automatic update is enabled. If not show a dialog to inform + # the user about the need of manual "reloads" + update_days = apt_pkg.Config.FindI("APT::Periodic::Update-Package-Lists") + if update_days < 1: + self.dialog_manual_update.set_transient_for(self.window_main) + res = self.dialog_manual_update.run() + self.dialog_manual_update.hide() + if res == gtk.RESPONSE_YES: + self.on_button_reload_clicked(None) + + def main(self): self.meta = MetaRelease() self.meta.connect("new_dist_available",self.new_dist_available) self.meta.connect("dist_no_longer_supported",self.dist_no_longer_supported) - self.store.append([True, _("Initializing and getting list of updates..."), - None, None, None, None, None]) - while gtk.events_pending(): gtk.main_iteration() self.fillstore() + self.check_auto_update() gtk.main() diff --git a/data/SoftwareProperties.glade b/data/SoftwareProperties.glade index 6bf1aa0f..0a39a13f 100644 --- a/data/SoftwareProperties.glade +++ b/data/SoftwareProperties.glade @@ -14,6 +14,7 @@ <property name="modal">False</property> <property name="resizable">True</property> <property name="destroy_with_parent">False</property> + <property name="icon">update-manager.png</property> <property name="decorated">True</property> <property name="skip_taskbar_hint">False</property> <property name="skip_pager_hint">False</property> @@ -298,7 +299,7 @@ <widget class="GtkCheckButton" id="checkbutton_auto_update"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Automatically check for updates</property> + <property name="label" translatable="yes">Automatically check for updates:</property> <property name="use_underline">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -317,11 +318,7 @@ <child> <widget class="GtkComboBox" id="combobox_update_interval"> <property name="visible">True</property> - <property name="items" translatable="yes">daily -every two days -weekly -every two weeks -custom</property> + <property name="items" translatable="yes"></property> <property name="add_tearoffs">False</property> <property name="focus_on_click">True</property> <signal name="changed" handler="on_combobox_update_interval_changed" last_modification_time="Wed, 18 Jan 2006 09:43:34 GMT"/> diff --git a/data/UpdateManager.glade b/data/UpdateManager.glade index c9b50999..2258e394 100644 --- a/data/UpdateManager.glade +++ b/data/UpdateManager.glade @@ -16,7 +16,7 @@ <property name="decorated">True</property> <property name="skip_taskbar_hint">False</property> <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="focus_on_map">True</property> <property name="urgency_hint">False</property> @@ -66,7 +66,7 @@ <child> <widget class="GtkLabel" id="label_header"> <property name="visible">True</property> - <property name="label" translatable="yes" context="yes"><big><b>Install software updates</b></big></property> + <property name="label" translatable="yes" context="yes"><big><b>Keep your system up-to-date</b></big></property> <property name="use_underline">True</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -142,7 +142,7 @@ <property name="yscale">1</property> <property name="top_padding">0</property> <property name="bottom_padding">0</property> - <property name="left_padding">12</property> + <property name="left_padding">0</property> <property name="right_padding">0</property> <child> @@ -180,6 +180,7 @@ <child> <widget class="GtkButton" id="button_dist_upgrade"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Upgrade to the latest version of Ubuntu</property> <property name="can_focus">True</property> <property name="label" translatable="yes">U_pgrade</property> <property name="use_underline">True</property> @@ -209,7 +210,7 @@ <widget class="GtkVBox" id="vbox12"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">4</property> + <property name="spacing">6</property> <child> <widget class="GtkScrolledWindow" id="scrolledwindow2"> @@ -246,18 +247,19 @@ <widget class="GtkHBox" id="hbox15"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">12</property> <child> <widget class="GtkLabel" id="label_downsize"> + <property name="visible">True</property> <property name="label" translatable="yes"></property> <property name="use_underline">False</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">False</property> <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> + <property name="xalign">0</property> + <property name="yalign">0</property> <property name="xpad">0</property> <property name="ypad">0</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> @@ -267,16 +269,96 @@ </widget> <packing> <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="button_install"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_button_install_clicked" last_modification_time="Fri, 18 Feb 2005 22:38:03 GMT"/> + + <child> + <widget class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image9"> + <property name="visible">True</property> + <property name="stock">gtk-apply</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Install Updates</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> - <property name="pack_type">GTK_PACK_END</property> </packing> </child> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">False</property> + <property name="fill">True</property> </packing> </child> </widget> @@ -406,7 +488,7 @@ <child> <widget class="GtkLabel" id="label13"> <property name="visible">True</property> - <property name="label" translatable="yes">Cancel downloading of the changelog</property> + <property name="label" translatable="yes">Cancel _Download</property> <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -617,6 +699,7 @@ <child> <widget class="GtkButton" id="button1"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Reload the latest information about updates</property> <property name="can_default">True</property> <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> @@ -694,7 +777,7 @@ <property name="visible">True</property> <property name="can_default">True</property> <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> + <property name="label">gtk-close</property> <property name="use_stock">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> @@ -702,82 +785,6 @@ <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="clicked"/> </widget> </child> - - <child> - <widget class="GtkButton" id="button_install"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="can_focus">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_button_install_clicked" last_modification_time="Fri, 18 Feb 2005 22:38:03 GMT"/> - - <child> - <widget class="GtkAlignment" id="alignment4"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">0</property> - <property name="right_padding">0</property> - - <child> - <widget class="GtkHBox" id="hbox11"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">2</property> - - <child> - <widget class="GtkImage" id="image9"> - <property name="visible">True</property> - <property name="stock">gtk-apply</property> - <property name="icon_size">4</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Install</property> - <property name="use_underline">True</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - </child> </widget> <packing> <property name="padding">0</property> @@ -1043,14 +1050,14 @@ Need to get the changes from the central server</property> <property name="title" translatable="yes"></property> <property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="modal">True</property> - <property name="resizable">True</property> + <property name="modal">False</property> + <property name="resizable">False</property> <property name="destroy_with_parent">False</property> <property name="icon">synaptic.xpm</property> <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="focus_on_map">True</property> <property name="urgency_hint">False</property> @@ -1069,37 +1076,37 @@ Need to get the changes from the central server</property> <property name="spacing">12</property> <child> + <widget class="GtkLabel" id="label_fetch_summary"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> <widget class="GtkVBox" id="vbox8"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label_fetch_summary"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> <widget class="GtkProgressBar" id="progressbar_fetch"> <property name="visible">True</property> <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> @@ -1257,7 +1264,7 @@ Need to get the changes from the central server</property> </child> </widget> -<widget class="GtkDialog" id="dialog_cacheprogress"> +<widget class="GtkDialog" id="dialog_manual_update"> <property name="border_width">6</property> <property name="title" translatable="yes"></property> <property name="type">GTK_WINDOW_TOPLEVEL</property> @@ -1266,8 +1273,8 @@ Need to get the changes from the central server</property> <property name="resizable">False</property> <property name="destroy_with_parent">False</property> <property name="decorated">True</property> - <property name="skip_taskbar_hint">False</property> - <property name="skip_pager_hint">False</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="focus_on_map">True</property> @@ -1275,15 +1282,103 @@ Need to get the changes from the central server</property> <property name="has_separator">False</property> <child internal-child="vbox"> - <widget class="GtkVBox" id="vbox13"> + <widget class="GtkVBox" id="dialog-vbox4"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">12</property> <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="hbuttonbox8"> + <widget class="GtkHButtonBox" id="dialog-action_area4"> <property name="visible">True</property> <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="cancelbutton1"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-8</property> + + <child> + <widget class="GtkAlignment" id="alignment7"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox17"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image13"> + <property name="visible">True</property> + <property name="stock">gtk-refresh</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label28"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Reload</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkButton" id="okbutton2"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-close</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-7</property> + </widget> + </child> </widget> <packing> <property name="padding">0</property> @@ -1294,48 +1389,43 @@ Need to get the changes from the central server</property> </child> <child> - <widget class="GtkVBox" id="vbox14"> + <widget class="GtkHBox" id="hbox16"> <property name="border_width">6</property> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">6</property> + <property name="spacing">11</property> <child> - <widget class="GtkLabel" id="label22"> + <widget class="GtkImage" id="image12"> <property name="visible">True</property> - <property name="label" translatable="yes"><big><b>Reading package information</b></big></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> + <property name="stock">gtk-dialog-info</property> + <property name="icon_size">6</property> <property name="xalign">0</property> - <property name="yalign">0.5</property> + <property name="yalign">0</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">False</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkLabel" id="label23"> + <widget class="GtkLabel" id="label27"> <property name="visible">True</property> - <property name="label" translatable="yes">Reading information about the installed packages. Depending on the speed of your computer this may take a bit.</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes"><b><big>You need to manually reload the latest information about updates</big></b> + +Your system does not check for updates automatically. You can configure this behavior in "System" -> "Administration" -> "Software Properties".</property> <property name="use_underline">False</property> - <property name="use_markup">False</property> + <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> <property name="wrap">True</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> + <property name="selectable">True</property> + <property name="xalign">0</property> + <property name="yalign">0</property> <property name="xpad">0</property> <property name="ypad">0</property> <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> @@ -1349,6 +1439,72 @@ Need to get the changes from the central server</property> <property name="fill">False</property> </packing> </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">True</property> + </packing> + </child> + </widget> + </child> +</widget> + +<widget class="GtkWindow" id="dialog_cacheprogress"> + <property name="border_width">6</property> + <property name="title" translatable="yes"></property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">False</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + + <child> + <widget class="GtkVBox" id="vbox14"> + <property name="border_width">6</property> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">12</property> + + <child> + <widget class="GtkLabel" id="label22"> + <property name="visible">True</property> + <property name="label" translatable="yes"><big><b>Checking for available updates</b></big> + +Software updates can fix possible security holes, fix possible errors, so called "bugs", or provide new features to you.</property> + <property name="use_underline">False</property> + <property name="use_markup">True</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">True</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="vbox16"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">6</property> <child> <widget class="GtkProgressBar" id="progressbar_cache"> @@ -1366,13 +1522,34 @@ Need to get the changes from the central server</property> </child> <child> - <placeholder/> + <widget class="GtkLabel" id="label_cache"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> </packing> </child> </widget> diff --git a/debian/changelog b/debian/changelog index 91a63585..70e94e66 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,7 +4,7 @@ update-manager (0.42.2ubuntu1) dapper; urgency=low - never offer a upgrade to a unsupported (i.e. developer) dist * data/gnome-software-properties.desktop.in: use X-KDE-SubstituteUID=true - -- + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 27 Jan 2006 22:57:43 +0100 update-manager (0.42.1ubuntu1) dapper; urgency=low |
