summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--UpdateManager/MetaRelease.py7
-rw-r--r--UpdateManager/UpdateManager.py30
-rw-r--r--data/UpdateManager.glade94
4 files changed, 126 insertions, 7 deletions
diff --git a/TODO b/TODO
index 227893b5..2a1d3928 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,5 @@
+- have a common error dialog readymade and rib out all those
+ GtkMessageDialogs
- add download size to treeview
- add /etc/apt/software-properties.d dir where the user can
install matchers and templates
diff --git a/UpdateManager/MetaRelease.py b/UpdateManager/MetaRelease.py
index f91e30b6..a19b2229 100644
--- a/UpdateManager/MetaRelease.py
+++ b/UpdateManager/MetaRelease.py
@@ -15,12 +15,13 @@ class Dist(object):
self.name = name
self.date = date
self.supported = supported
+ self.releaseNotesURI = None
class MetaRelease(gobject.GObject):
# some constants
#METARELEASE_URI = "http://changelogs.ubuntu.com/meta-release"
- METARELEASE_URI = "http://people.ubuntu.com/~mvo/meta-release-test"
+ METARELEASE_URI = "http://people.ubuntu.com/~mvo/dist-upgrader/meta-release-test"
METARELEASE_FILE = "/var/lib/update-manager/meta-release"
__gsignals__ = {
@@ -79,6 +80,8 @@ class MetaRelease(gobject.GObject):
supported = index_tag.Section["Supported"]
# add the information to a new date object
dist = Dist(name,date,supported)
+ if index_tag.Section.has_key("ReleaseNotes"):
+ dist.releaseNotesURI = index_tag.Section["ReleaseNotes"]
dists.append(dist)
if name == current_dist_name:
current_dist = dist
@@ -102,10 +105,8 @@ class MetaRelease(gobject.GObject):
# only warn if unsupported and a new dist is available (because
# the development version is also unsupported)
if upgradable_to != "" and not current_dist.supported:
- #self.current_dist_not_supported(upgradable_to)
self.emit("dist_no_longer_supported",upgradable_to)
elif upgradable_to != "":
- #self.new_dist_available(upgradable_to)
self.emit("new_dist_available",upgradable_to)
# parsing done and sucessfully
diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py
index 7b846ed9..b2ebd1c9 100644
--- a/UpdateManager/UpdateManager.py
+++ b/UpdateManager/UpdateManager.py
@@ -57,6 +57,7 @@ class MyCache(apt.Cache):
self._depcache.Upgrade()
+
class UpdateList:
def __init__(self, parent_window):
self.pkgs = []
@@ -608,6 +609,34 @@ class UpdateManager(SimpleGladeApp):
def on_button_dist_upgrade_clicked(self, button):
print "on_button_dist_upgrade_clicked"
+ # see if we have release notes
+ # FIXME: care about i18n! (append -$lang or something)
+ if self.new_dist.releaseNotesURI != None:
+ uri = self.new_dist.releaseNotesURI
+ print uri
+ self.window_main.set_sensitive(False)
+ self.window_main.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
+ while gtk.events_pending():
+ gtk.main_iteration()
+
+ # download/display the release notes
+ # FIXME: add some progress reporting here
+ try:
+ release_notes = urllib2.urlopen(uri)
+ notes = release_notes.read()
+ self.textview_release_notes.get_buffer().set_text(notes)
+ self.dialog_release_notes.set_transient_for(self.window_main)
+ self.dialog_release_notes.run()
+ self.dialog_release_notes.destroy()
+ except urllib2.HTTPError:
+ # FIXME: make proper error dialogs here
+ print _("Release notes not found on the server.")
+ except IOError:
+ print _("Failed to download Release Notes. Please "
+ "check if there is an active internet connection.")
+ self.window_main.set_sensitive(True)
+ self.window_main.window.set_cursor(None)
+
def new_dist_available(self, meta_release, upgradable_to):
print "new_dist_available: %s" % upgradable_to.name
@@ -629,6 +658,7 @@ class UpdateManager(SimpleGladeApp):
#dialog.destroy()
self.frame_new_release.show()
self.label_new_release.set_markup("<b>New distibution release codename '%s' available</b>" % upgradable_to.name)
+ self.new_dist = upgradable_to
# fixme: we should probably abstract away all the stuff from libapt
diff --git a/data/UpdateManager.glade b/data/UpdateManager.glade
index cbd1c3da..43df7351 100644
--- a/data/UpdateManager.glade
+++ b/data/UpdateManager.glade
@@ -156,10 +156,6 @@ The following packages are found to be upgradable. You can upgrade them by using
</child>
</widget>
</child>
-
- <child>
- <placeholder/>
- </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -936,4 +932,94 @@ Need to get the changes from the central server</property>
</child>
</widget>
+<widget class="GtkDialog" id="dialog_release_notes">
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Release Notes</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">600</property>
+ <property name="default_height">500</property>
+ <property name="resizable">True</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="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>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="okbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</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">-5</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="GtkScrolledWindow" id="scrolledwindow5">
+ <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="GtkTextView" id="textview_release_notes">
+ <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">False</property>
+ <property name="pixels_above_lines">6</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">6</property>
+ <property name="right_margin">6</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>
+ </child>
+</widget>
+
</glade-interface>