mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-14 00:04:08 +09:00
Add downgrades page
This commit is contained in:
59
src/change_version_page/change_version_page.blp
Normal file
59
src/change_version_page/change_version_page.blp
Normal file
@@ -0,0 +1,59 @@
|
||||
using Gtk 4.0;
|
||||
using Adw 1;
|
||||
|
||||
template $ChangeVersionPage : Adw.NavigationPage {
|
||||
title: _("Change Versions");
|
||||
Adw.ToolbarView {
|
||||
[top]
|
||||
Adw.HeaderBar {
|
||||
}
|
||||
Adw.ToastOverlay {
|
||||
ScrolledWindow scrolled_window {
|
||||
Adw.Clamp {
|
||||
Box {
|
||||
margin-start: 12;
|
||||
margin-end: 12;
|
||||
margin-top: 12;
|
||||
margin-bottom: 12;
|
||||
spacing: 12;
|
||||
orientation: vertical;
|
||||
halign: fill;
|
||||
hexpand: true;
|
||||
|
||||
CheckButton root_group_check_button {
|
||||
visible: false;
|
||||
active: true;
|
||||
}
|
||||
|
||||
Adw.PreferencesGroup mask_group {
|
||||
Adw.SwitchRow mask_row {
|
||||
title: _("Disable Updates");
|
||||
}
|
||||
}
|
||||
|
||||
Adw.PreferencesGroup versions_group {
|
||||
title: _("Select a Release");
|
||||
description: _("This will uninstalls the current release and install the chosen one instead. Note that downgrading can cause issues.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[bottom]
|
||||
ActionBar action_bar {
|
||||
revealed: false;
|
||||
[center]
|
||||
Button apply_button {
|
||||
sensitive: bind action_bar.revealed;
|
||||
halign: center;
|
||||
margin-top: 3;
|
||||
margin-bottom: 3;
|
||||
Adw.ButtonContent {
|
||||
label: _("Change Version");
|
||||
icon-name: "double-ended-arrows-vertical-symbolic";
|
||||
}
|
||||
styles ["suggested-action", "pill"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
src/change_version_page/change_version_page.py
Normal file
73
src/change_version_page/change_version_page.py
Normal file
@@ -0,0 +1,73 @@
|
||||
from gi.repository import Adw, Gtk,GLib#, Gio, Pango
|
||||
from .error_toast import ErrorToast
|
||||
from .host_info import HostInfo
|
||||
import subprocess, os
|
||||
|
||||
@Gtk.Template(resource_path="/io/github/flattool/Warehouse/change_version_page/change_version_page.ui")
|
||||
class ChangeVersionPage(Adw.NavigationPage):
|
||||
__gtype_name__ = 'ChangeVersionPage'
|
||||
gtc = Gtk.Template.Child
|
||||
scrolled_window = gtc()
|
||||
root_group_check_button = gtc()
|
||||
mask_group = gtc()
|
||||
mask_row = gtc()
|
||||
versions_group = gtc()
|
||||
action_bar = gtc()
|
||||
|
||||
def get_commits(self):
|
||||
cmd = ['flatpak-spawn', '--host', 'sh', '-c']
|
||||
script = f"LC_ALL=C flatpak remote-info --log {self.package.info['origin']} {self.package.info['ref']} "
|
||||
installation = self.package.info["installation"]
|
||||
if installation == "user" or installation == "system":
|
||||
script += f"--{installation}"
|
||||
else:
|
||||
script += f"--installation={installation}"
|
||||
|
||||
cmd.append(script)
|
||||
|
||||
commits = []
|
||||
changes = []
|
||||
dates = []
|
||||
output = subprocess.run(cmd, check=True, capture_output=True, text=True).stdout
|
||||
lines = output.strip().split('\n')
|
||||
for line in lines:
|
||||
line = line.strip().split(": ", 1)
|
||||
if len(line) < 2:
|
||||
continue
|
||||
elif line[0].startswith("Commit"):
|
||||
commits.append(line[1])
|
||||
elif line[0].startswith("Subject"):
|
||||
changes.append(line[1])
|
||||
elif line[0].startswith("Date"):
|
||||
dates.append(line[1])
|
||||
|
||||
if not (len(commits) == len(changes) == len(dates)):
|
||||
return
|
||||
|
||||
for index, element in enumerate(changes):
|
||||
row = Adw.ActionRow(title=GLib.markup_escape_text(element), subtitle=GLib.markup_escape_text(dates[index]))
|
||||
self.versions_group.add(row)
|
||||
|
||||
def __init__(self, main_window, package, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
# Extra Object Creation
|
||||
self.package = package
|
||||
|
||||
# Apply
|
||||
pkg_name = package.info["name"]
|
||||
self.set_title(_("{} Versions").format(pkg_name))
|
||||
self.mask_row.set_subtitle(_("Ensure that {} will never be updated to a newer version").format(pkg_name))
|
||||
self.get_commits()
|
||||
|
||||
# for i in range(10):
|
||||
# row = Adw.ActionRow(title=f"Update to {i}.0", subtitle="Some dumb nerd shit I don't care about", activatable=True)
|
||||
# check_button = Gtk.CheckButton()
|
||||
# check_button.set_group(self.root_group_check_button)
|
||||
# prev_check = check_button
|
||||
# row.add_prefix(check_button)
|
||||
# row.set_activatable_widget(check_button)
|
||||
# self.versions_group.add(row)
|
||||
|
||||
# Connections
|
||||
self.root_group_check_button.connect("toggled", lambda *_: self.action_bar.set_revealed(True))
|
||||
@@ -9,6 +9,7 @@ blueprints = custom_target('blueprints',
|
||||
'main_window/window.blp',
|
||||
'packages_page/packages_page.blp',
|
||||
'properties_page/properties_page.blp',
|
||||
'change_version_page/change_version_page.blp',
|
||||
),
|
||||
output: '.',
|
||||
command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'],
|
||||
@@ -56,6 +57,7 @@ warehouse_sources = [
|
||||
'main_window/window.py',
|
||||
'packages_page/packages_page.py',
|
||||
'properties_page/properties_page.py',
|
||||
'change_version_page/change_version_page.py',
|
||||
'../data/style.css',
|
||||
]
|
||||
|
||||
|
||||
@@ -147,6 +147,7 @@ template $PropertiesPage : Adw.NavigationPage {
|
||||
Adw.ExpanderRow version_row {
|
||||
title: _("Version");
|
||||
styles ["property"]
|
||||
expanded: true;
|
||||
[suffix]
|
||||
Label mask_label {
|
||||
label: _("Updates Disabled");
|
||||
@@ -162,7 +163,7 @@ template $PropertiesPage : Adw.NavigationPage {
|
||||
can-target: false;
|
||||
}
|
||||
}
|
||||
Adw.ActionRow downgrade_row {
|
||||
Adw.ActionRow change_version_row {
|
||||
title: _("Change Version");
|
||||
subtitle: _("Upgrade or downgrade this package");
|
||||
activatable: true;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from gi.repository import Adw, Gtk,GLib#, Gio, Pango
|
||||
from .error_toast import ErrorToast
|
||||
from .host_info import HostInfo
|
||||
from .change_version_page import ChangeVersionPage
|
||||
import subprocess, os
|
||||
|
||||
@Gtk.Template(resource_path="/io/github/flattool/Warehouse/properties_page/properties_page.ui")
|
||||
@@ -29,7 +30,7 @@ class PropertiesPage(Adw.NavigationPage):
|
||||
mask_label = gtc()
|
||||
mask_row = gtc()
|
||||
mask_switch = gtc()
|
||||
downgrade_row = gtc()
|
||||
change_version_row = gtc()
|
||||
installed_size_row = gtc()
|
||||
runtime_row = gtc()
|
||||
eol_package_package_status_icon = gtc()
|
||||
@@ -202,6 +203,10 @@ class PropertiesPage(Adw.NavigationPage):
|
||||
HostInfo.clipboard.set(row.get_subtitle())
|
||||
self.toast_overlay.add_toast(Adw.Toast(title=_("Copeid {}").format(row.get_title())))
|
||||
|
||||
def change_version_handler(self, row):
|
||||
page = ChangeVersionPage(self.main_window, self.package)
|
||||
self.nav_view.push(page)
|
||||
|
||||
def __init__(self, main_window, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
@@ -236,6 +241,7 @@ class PropertiesPage(Adw.NavigationPage):
|
||||
self.open_app_button.connect("clicked", self.open_app_handler)
|
||||
self.mask_row.connect("activated", self.set_mask_handler)
|
||||
self.pin_row.connect("activated", self.set_pin_handler)
|
||||
self.change_version_row.connect("activated", self.change_version_handler)
|
||||
for key in self.info_rows:
|
||||
row = self.info_rows[key]
|
||||
if type(row) != Adw.ActionRow:
|
||||
|
||||
Reference in New Issue
Block a user