diff --git a/panels/system.py b/panels/system.py
index 56da34f3..a20db722 100644
--- a/panels/system.py
+++ b/panels/system.py
@@ -44,6 +44,7 @@ class SystemPanel(ScreenPanel):
shutdown.set_vexpand(False)
scroll = self._gtk.ScrolledWindow()
+ scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
infogrid = Gtk.Grid()
infogrid.get_style_context().add_class("system-program-grid")
@@ -142,19 +143,19 @@ class SystemPanel(ScreenPanel):
info = {"full": True}
scroll = self._gtk.ScrolledWindow()
+ scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
+
+ vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ vbox.set_halign(Gtk.Align.CENTER)
+ vbox.set_valign(Gtk.Align.CENTER)
- grid = Gtk.Grid()
- grid.set_column_homogeneous(True)
- grid.set_halign(Gtk.Align.CENTER)
- grid.set_valign(Gtk.Align.CENTER)
- i = 0
label = Gtk.Label()
label.set_line_wrap(True)
if 'configured_type' in info and info['configured_type'] == 'git_repo':
if not info['is_valid'] or info['is_dirty']:
label.set_markup(_("Do you want to recover %s?") % program)
- grid.attach(label, 0, i, 1, 1)
- scroll.add(grid)
+ vbox.add(label)
+ scroll.add(vbox)
recoverybuttons = [
{"name": _("Recover Hard"), "response": Gtk.ResponseType.OK},
{"name": _("Recover Soft"), "response": Gtk.ResponseType.APPLY},
@@ -170,33 +171,27 @@ class SystemPanel(ScreenPanel):
_("Outdated by %d") % ncommits +
" " + ngettext("commit", "commits", ncommits) +
":\n")
+ vbox.add(label)
- grid.attach(label, 0, i, 1, 1)
- i += 1
- date = ""
for c in info['commits_behind']:
- ndate = datetime.fromtimestamp(int(c['date'])).strftime("%b %d")
- if date != ndate:
- date = ndate
- label = Gtk.Label()
- label.set_line_wrap(True)
- label.set_markup(f"{date}\n")
- label.set_halign(Gtk.Align.START)
- grid.attach(label, 0, i, 1, 1)
- i += 1
+ commit_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ title = Gtk.Label()
+ title.set_line_wrap(True)
+ title.set_line_wrap_mode(Pango.WrapMode.CHAR)
+ title.set_markup(f"\n{c['subject']}\n{c['author']}\n")
+ title.set_halign(Gtk.Align.START)
+ commit_box.add(title)
- label = Gtk.Label()
- label.set_line_wrap(True)
- label.set_markup(f"{c['subject']}\n{c['author']}\n")
- label.set_halign(Gtk.Align.START)
- grid.attach(label, 0, i, 1, 1)
- i += 1
-
- details = Gtk.Label(label=f"{c['message']}\n\n\n")
+ details = Gtk.Label(label=f"{c['message']}\n")
details.set_line_wrap(True)
details.set_halign(Gtk.Align.START)
- grid.attach(details, 0, i, 1, 1)
- i += 1
+ commit_box.add(details)
+
+ frame = Gtk.Frame()
+ frame.get_style_context().add_class("frame-item")
+ frame.add(commit_box)
+ vbox.add(frame)
+
if "package_count" in info:
label.set_markup((
f'{info["package_count"]} '
@@ -204,8 +199,12 @@ class SystemPanel(ScreenPanel):
+ f':\n'
))
label.set_halign(Gtk.Align.CENTER)
- grid.attach(label, 0, i, 3, 1)
- i += 1
+ vbox.add(label)
+ grid = Gtk.Grid()
+ grid.set_column_homogeneous(True)
+ grid.set_halign(Gtk.Align.CENTER)
+ grid.set_valign(Gtk.Align.CENTER)
+ i = 0
for j, c in enumerate(info["package_list"]):
label = Gtk.Label()
label.set_markup(f" {c} ")
@@ -215,19 +214,18 @@ class SystemPanel(ScreenPanel):
grid.attach(label, pos, i, 1, 1)
if pos == 2:
i += 1
+ vbox.add(grid)
elif "full" in info:
label.set_markup('' + _("Perform a full upgrade?") + '')
- grid.attach(label, 0, i, 1, 1)
- i += 1
+ vbox.add(label)
else:
label.set_markup(
"" + _("%s will be updated to version") % program.capitalize()
+ f": {info['remote_version']}"
)
+ vbox.add(label)
- grid.attach(label, 0, i, 1, 1)
-
- scroll.add(grid)
+ scroll.add(vbox)
buttons = [
{"name": _("Update"), "response": Gtk.ResponseType.OK},
@@ -259,11 +257,13 @@ class SystemPanel(ScreenPanel):
]
scroll = self._gtk.ScrolledWindow()
+ scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
self.labels['update_progress'] = Gtk.Label(_("Starting recovery for") + f' {program}...')
self.labels['update_progress'].set_halign(Gtk.Align.START)
self.labels['update_progress'].set_valign(Gtk.Align.START)
self.labels['update_progress'].set_ellipsize(Pango.EllipsizeMode.END)
+ self.labels['update_progress'].connect("size-allocate", self._autoscroll)
scroll.add(self.labels['update_progress'])
self.labels['update_scroll'] = scroll
@@ -300,6 +300,7 @@ class SystemPanel(ScreenPanel):
]
scroll = self._gtk.ScrolledWindow()
+ scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
if "full" in info:
self.labels['update_progress'] = Gtk.Label(_("Updating") + '\n')
@@ -307,6 +308,7 @@ class SystemPanel(ScreenPanel):
self.labels['update_progress'] = Gtk.Label(_("Starting update for") + f' {program}...')
self.labels['update_progress'].set_halign(Gtk.Align.START)
self.labels['update_progress'].set_valign(Gtk.Align.START)
+ self.labels['update_progress'].connect("size-allocate", self._autoscroll)
scroll.add(self.labels['update_progress'])
self.labels['update_scroll'] = scroll
@@ -371,3 +373,7 @@ class SystemPanel(ScreenPanel):
self.labels[f"{p}_status"].set_label(_("Update"))
self.labels[f"{p}_status"].get_style_context().add_class('update')
self.labels[f"{p}_status"].set_sensitive(True)
+
+ def _autoscroll(self, *args):
+ adj = self.labels['update_scroll'].get_vadjustment()
+ adj.set_value(adj.get_upper() - adj.get_page_size())