Begin merging Manage Remotes and Popuilar Remotes

This commit is contained in:
heliguy
2023-12-08 07:06:32 -05:00
parent c93d30e3ff
commit ffb61c10f1
2 changed files with 78 additions and 55 deletions

View File

@@ -2,6 +2,7 @@ using Gtk 4.0;
using Adw 1;
template RemotesWindow: Adw.Window {
title: _("Manage Remotes");
default-width: 500;
default-height: 450;
@@ -18,36 +19,63 @@ template RemotesWindow: Adw.Window {
content: Adw.ToastOverlay toast_overlay {
Stack stack {
Overlay main_overlay {
[overlay]
ProgressBar progress_bar {
visible: false;
pulse-step: 0.7;
can-target: false;
Adw.PreferencesPage main_group {
Adw.PreferencesGroup remotes_list {
title: _("Installed Remotes");
header-suffix: Button refresh {
Adw.ButtonContent {
label: _("Refresh");
icon-name: "view-refresh-symbolic";
}
styles["flat"]
};
}
Adw.PreferencesGroup popular_remotes_list {
title: _("Add a Popular Remote");
}
Adw.PreferencesGroup manual_remotes_list {
title: _("Add Other Remotes");
Adw.ActionRow add_from_file {
title: _("Add a Repo File");
activatable: true;
}
Adw.ActionRow custom_remote {
title: _("Add a Custom Remote");
activatable: true;
}
}
}
Box adding {
orientation: vertical;
spacing: 10;
margin-top: 40;
margin-bottom: 20;
halign: center;
valign: center;
Spinner {
margin-bottom: 35;
width-request: 30;
height-request: 30;
opacity: 0.5;
spinning: true;
}
Label {
label: _("Adding Remote…");
styles [
"osd"
"title-1",
"title"
]
}
ScrolledWindow scroll {
vexpand: true;
Adw.Clamp {
ListBox remotes_list {
margin-top: 12;
margin-bottom: 12;
margin-start: 12;
margin-end: 12;
hexpand: true;
valign: start;
selection-mode: none;
styles [
"boxed-list"
]
}
}
Label {
label: _("This should only take a moment.");
styles ["description", "body"]
}
}

View File

@@ -12,10 +12,13 @@ class RemotesWindow(Adw.Window):
add_button = Gtk.Template.Child()
remotes_list = Gtk.Template.Child()
stack = Gtk.Template.Child()
main_overlay = Gtk.Template.Child()
main_group = Gtk.Template.Child()
no_remotes = Gtk.Template.Child()
toast_overlay = Gtk.Template.Child()
progress_bar = Gtk.Template.Child()
popular_remotes_list = Gtk.Template.Child()
add_from_file = Gtk.Template.Child()
custom_remote = Gtk.Template.Child()
# progress_bar = Gtk.Template.Child()
def key_handler(self, _a, event, _c, _d):
if event == Gdk.KEY_Escape:
@@ -63,7 +66,6 @@ class RemotesWindow(Adw.Window):
dialog.present()
def generate_list(self):
self.remotes_list.remove_all()
self.host_remotes = self.my_utils.getHostRemotes()
self.host_flatpaks = self.get_host_flatpaks()
@@ -75,7 +77,7 @@ class RemotesWindow(Adw.Window):
self.stack.set_visible_child(self.no_remotes)
return
else:
self.stack.set_visible_child(self.main_overlay)
self.stack.set_visible_child(self.main_group)
for i in range(len(self.host_remotes)):
try:
@@ -86,7 +88,7 @@ class RemotesWindow(Adw.Window):
remote_row = Adw.ActionRow(title=title, subtitle=name)
if title == "-":
remote_row.set_title(name)
self.remotes_list.append(remote_row)
self.remotes_list.add(remote_row)
label = Gtk.Label(label=("{} wide").format(install_type), valign=Gtk.Align.CENTER)
label.add_css_class("subtitle")
remote_row.add_suffix(label)
@@ -98,13 +100,11 @@ class RemotesWindow(Adw.Window):
remove_button.connect("clicked", self.remove_handler, i)
remote_row.add_suffix(copy_button)
remote_row.add_suffix(remove_button)
except:
print("Could not get remote")
except Exception as e:
print("Could not get remote. Error:", e)
def addRemoteCallback(self, _a, _b):
self.should_pulse = False
self.progress_bar.set_visible(False)
self.generate_list()
pass
def addRemoteThread(self, command):
try:
@@ -113,17 +113,11 @@ class RemotesWindow(Adw.Window):
self.toast_overlay.add_toast(Adw.Toast.new(_("Could not add {}").format(self.name_to_add)))
print(e)
def mainPulser(self):
if self.should_pulse:
self.progress_bar.pulse()
GLib.timeout_add(500, self.mainPulser)
def on_add_response(self, _dialog, response_id, _function):
if response_id == "cancel":
self.should_pulse = False
return
self.progress_bar.set_visible(True)
install_type = "--user"
if not self.add_as_user:
install_type = "--system"
@@ -190,9 +184,6 @@ class RemotesWindow(Adw.Window):
self.url_to_add = ""
self.add_as_user = True
self.should_pulse = True
self.mainPulser()
info_box = Gtk.Box(orientation="vertical")
entry_list = Gtk.ListBox(selection_mode="none", margin_bottom=12)
entry_list.add_css_class("boxed-list")
@@ -318,7 +309,7 @@ class RemotesWindow(Adw.Window):
options_list.add_css_class("boxed-list")
Gtk.Window.present(dialog)
def showPopularRemotes(self, widget):
def show_new_remote_options(self):
remotes = [
# [Name to show in GUI, Name of remote for system, Link to repo to add, Description of remote]
@@ -331,7 +322,6 @@ class RemotesWindow(Adw.Window):
["WebKit Developer SDK", "webkit-sdk", "https://software.igalia.com/flatpak-refs/webkit-sdk.flatpakrepo", _("Central repository of the WebKit Developer and Runtime SDK")],
]
non_added_remotes = []
host_remotes = self.my_utils.getHostRemotes()
host_remotes_names = []
@@ -339,17 +329,22 @@ class RemotesWindow(Adw.Window):
host_remotes_names.append(self.host_remotes[i][0])
for i in range(len(remotes)):
if remotes[i][1] not in host_remotes_names:
non_added_remotes.append(remotes[i])
if remotes[i][1] in host_remotes_names:
continue
PopularRemotesWindow(self, non_added_remotes).present()
row = Adw.ActionRow(title=remotes[i][0], subtitle=(remotes[i][2]), activatable=True)
row.connect("activated", self.add_handler, remotes[i][1], remotes[i][2])
row.add_suffix(Gtk.Image.new_from_icon_name("right-large-symbolic"))
self.popular_remotes_list.add(row)
self.add_from_file.add_suffix(Gtk.Image.new_from_icon_name("right-large-symbolic"))
self.custom_remote.add_suffix(Gtk.Image.new_from_icon_name("right-large-symbolic"))
def __init__(self, main_window, **kwargs):
super().__init__(**kwargs)
# Create Variables
self.my_utils = myUtils(self)
self.window_title = _("Manage Remotes")
self.host_remotes = []
self.host_flatpaks = []
self.app_window = main_window
@@ -357,17 +352,17 @@ class RemotesWindow(Adw.Window):
self.new_env['LC_ALL'] = 'C'
self.should_pulse = False
self.add_button.connect("clicked", self.showPopularRemotes)
# Window Stuffs
self.set_title(self.window_title)
self.set_size_request(260, 230)
self.set_modal(True)
self.set_resizable(True)
self.generate_list()
event_controller = Gtk.EventControllerKey()
event_controller.connect("key-pressed", self.key_handler)
self.add_controller(event_controller)
self.set_transient_for(main_window)
self.set_transient_for(main_window)
# Calls
self.generate_list()
self.show_new_remote_options()