Skip to content

Commit

Permalink
Show flatpak updates in the update history.
Browse files Browse the repository at this point in the history
  • Loading branch information
mtwebster committed Dec 8, 2022
1 parent f1dbd65 commit 99a23c6
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 11 deletions.
22 changes: 21 additions & 1 deletion usr/lib/linuxmint/mintUpdate/flatpakUpdater.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import threading
import functools
import os
import re
from pathlib import Path

import gi
gi.require_version('GLib', '2.0')
Expand All @@ -20,6 +22,7 @@
raise NotImplementedError

GET_UPDATES_TIMEOUT = 60
LOG_PATH = os.path.join(GLib.get_home_dir(), '.linuxmint', 'mintupdate', 'flatpak-updates.log')

class FlatpakUpdate():
def __init__(self, op, installer, ref, installed_ref, remote_ref, pkginfo):
Expand Down Expand Up @@ -315,10 +318,27 @@ def _perform_updates_thread(self):
self.installer.execute_task(self.task)

def _execute_finished(self, task):
print("execute finished", task.error_message)
self.error = task.error_message
self.write_to_log(task)

self.perform_updates_finished_event.set()

def write_to_log(self, task):
try:
entries = task.get_transaction_log()
except:
return

directory = Path(LOG_PATH).parent

try:
os.makedirs(directory, exist_ok=True)
with open(LOG_PATH, "a") as f:
for entry in entries:
f.write("%s\n" % entry)
except Exception as e:
print("Can't write to flatpak update log:", e)

if __name__ == "__main__":
updater = FlatpakUpdater()
ml = GLib.MainLoop()
Expand Down
61 changes: 51 additions & 10 deletions usr/lib/linuxmint/mintUpdate/mintUpdate.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
from kernelwindow import KernelWindow
gi.require_version('Gtk', '3.0')
gi.require_version('Notify', '0.7')
from gi.repository import Gtk, Gdk, Gio, GLib, Notify
from gi.repository import Gtk, Gdk, Gio, GLib, Notify, Pango

from Classes import Update, PRIORITY_UPDATES, UpdateTracker
from xapp.GSettingsWidgets import *
Expand Down Expand Up @@ -2105,17 +2105,17 @@ def open_history(self, widget):
column_package = Gtk.TreeViewColumn(_("Update"), Gtk.CellRendererText(), text=COL_NAME)
column_package.set_sort_column_id(COL_NAME)
column_package.set_resizable(True)
column_old_version = Gtk.TreeViewColumn(_("Old Version"), Gtk.CellRendererText(), text=COL_OLD_VER)
column_old_version.set_sort_column_id(COL_OLD_VER)
column_old_version.set_resizable(True)
column_new_version = Gtk.TreeViewColumn(_("New Version"), Gtk.CellRendererText(), text=COL_NEW_VER)
column_new_version.set_sort_column_id(COL_NEW_VER)
column_new_version.set_resizable(True)
self.column_old_version = Gtk.TreeViewColumn(_("Old Version"), Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END), text=COL_OLD_VER)
self.column_old_version.set_sort_column_id(COL_OLD_VER)
self.column_old_version.set_resizable(True)
self.column_new_version = Gtk.TreeViewColumn(_("New Version"), Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END), text=COL_NEW_VER)
self.column_new_version.set_sort_column_id(COL_NEW_VER)
self.column_new_version.set_resizable(True)
treeview.append_column(column_date)
treeview.append_column(column_type)
treeview.append_column(column_package)
treeview.append_column(column_old_version)
treeview.append_column(column_new_version)
treeview.append_column(self.column_old_version)
treeview.append_column(self.column_new_version)
treeview.set_headers_clickable(True)
treeview.set_reorderable(False)
treeview.set_search_column(0)
Expand All @@ -2125,6 +2125,7 @@ def open_history(self, widget):
updates = []
apt_updates = []
cinnamon_updates = []
flatpak_updates = []

if os.path.isfile("/var/log/dpkg.log"):
apt_updates = subprocess.run('zgrep " upgrade " -sh /var/log/dpkg.log*',
Expand Down Expand Up @@ -2172,11 +2173,51 @@ def open_history(self, widget):
model.set_value(iter, COL_NEW_VER, newVersion)
model.set_value(iter, COL_TYPE, spice_type)

updates = apt_updates + cinnamon_updates
if FLATPAK_SUPPORT:
logfile = flatpakUpdater.LOG_PATH
if os.path.isfile(logfile):
with open(logfile, "r") as f:
for entry in f:
values = entry.strip("\n").split("::")
if len(values) == 7:
(date, time, fp_type, action, name, old_version, new_version) = values

iter = model.insert_before(None, None)
model.set_value(iter, COL_NAME, name)
model.row_changed(model.get_path(iter), iter)
model.set_value(iter, COL_DATE, "%s - %s" % (date, time))
model.set_value(iter, COL_OLD_VER, old_version)
model.set_value(iter, COL_NEW_VER, new_version)
model.set_value(iter, COL_TYPE, "flatpak-runtime" if fp_type == "runtime" else "flatpak-app")


updates = apt_updates + cinnamon_updates + flatpak_updates

model.set_sort_column_id(COL_DATE, Gtk.SortType.DESCENDING)
treeview.set_model(model)

def on_query_tooltip(widget, x, y, keyboard, tooltip):
if not widget.get_tooltip_context(x, y, keyboard):
return False
else:
on_row, wx, wy, model, path, iter = widget.get_tooltip_context(x, y, keyboard)
bx, by = widget.convert_widget_to_bin_window_coords(x, y)
result = widget.get_path_at_pos(bx, by)

if result is not None:
path, column, cx, cy = result
if column == self.column_old_version:
text = model[iter][COL_OLD_VER]
elif column == self.column_new_version:
text = model[iter][COL_NEW_VER]
else:
return False

tooltip.set_text(text)
return True

treeview.connect("query-tooltip", on_query_tooltip)

def destroy_window(widget):
self.history_window_showing = False
window.destroy()
Expand Down
1 change: 1 addition & 0 deletions usr/share/linuxmint/mintupdate/history.ui
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<object class="GtkTreeView" id="treeview_history">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has-tooltip">True</property>
<property name="reorderable">True</property>
<property name="rules_hint">True</property>
<property name="enable_search">False</property>
Expand Down

0 comments on commit 99a23c6

Please sign in to comment.