update
This commit is contained in:
parent
b09f56fa6c
commit
92433c3100
10 changed files with 332 additions and 196 deletions
|
@ -54,7 +54,6 @@ class FlowBox(Gtk.FlowBox):
|
|||
def flowbox_community(self):
|
||||
for community_kernel in self.kernel:
|
||||
self.kernels.append(community_kernel)
|
||||
|
||||
self.kernel_count += 1
|
||||
|
||||
if len(self.kernels) > 0:
|
||||
|
|
|
@ -135,7 +135,7 @@ class KernelStack:
|
|||
label_active_installed_kernel.set_selectable(True)
|
||||
|
||||
label_active_installed_kernel.set_markup(
|
||||
"<b>Active kernel:</b> %s" % self.manager_gui.active_kernel
|
||||
"Active kernel: <b>%s</b>" % self.manager_gui.active_kernel
|
||||
)
|
||||
label_active_installed_kernel.set_halign(Gtk.Align.START)
|
||||
self.manager_gui.vbox_active_installed_kernel.append(
|
||||
|
@ -235,7 +235,7 @@ class KernelStack:
|
|||
label_active_kernel.set_name("label_active_kernel")
|
||||
label_active_kernel.set_selectable(True)
|
||||
label_active_kernel.set_markup(
|
||||
"<b>Active kernel:</b> %s" % self.manager_gui.active_kernel
|
||||
"Active kernel: <b>%s</b>" % self.manager_gui.active_kernel
|
||||
)
|
||||
label_active_kernel.set_halign(Gtk.Align.START)
|
||||
|
||||
|
@ -250,7 +250,7 @@ class KernelStack:
|
|||
|
||||
self.flowbox_stacks.append(self.flowbox_official_kernel)
|
||||
|
||||
vbox_flowbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=12)
|
||||
vbox_flowbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
|
||||
vbox_flowbox.set_name("vbox_flowbox_%s" % kernel)
|
||||
# vbox_flowbox.set_halign(align=Gtk.Align.FILL)
|
||||
vbox_flowbox.append(self.flowbox_official_kernel)
|
||||
|
@ -424,7 +424,7 @@ class KernelStack:
|
|||
label_active_kernel.set_name("label_active_kernel")
|
||||
label_active_kernel.set_selectable(True)
|
||||
label_active_kernel.set_markup(
|
||||
"<b>Active kernel:</b> %s" % self.manager_gui.active_kernel
|
||||
"Active kernel: <b>%s</b>" % self.manager_gui.active_kernel
|
||||
)
|
||||
label_active_kernel.set_halign(Gtk.Align.START)
|
||||
|
||||
|
@ -464,10 +464,18 @@ class KernelStack:
|
|||
|
||||
label_warning = Gtk.Label(xalign=0, yalign=0)
|
||||
label_warning.set_name("label_community_warning")
|
||||
label_warning.set_markup(
|
||||
f"These are user produced content\n"
|
||||
f"<b>Any use of the provided files is at your own risk</b>"
|
||||
)
|
||||
|
||||
if len(self.manager_gui.community_kernels) == 0:
|
||||
label_warning.set_markup(
|
||||
f"<b>Cannot find any supported unofficial pacman repository's</b>\n"
|
||||
f"<b>Add the Chaotic-AUR pacman repository to access Community based kernels</b>"
|
||||
)
|
||||
else:
|
||||
label_warning.set_markup(
|
||||
f"These kernels are user produced content\n"
|
||||
f"These kernels may not work on your hardware\n"
|
||||
f"<b>Any use of the provided files is at your own risk</b>"
|
||||
)
|
||||
|
||||
hbox_warning.append(label_warning)
|
||||
|
||||
|
@ -477,6 +485,21 @@ class KernelStack:
|
|||
|
||||
if stack_child is not None:
|
||||
for stack_widget in stack_child:
|
||||
if stack_widget.get_name() == "hbox_warning":
|
||||
for w in stack_widget:
|
||||
if w.get_name() == "label_community_warning":
|
||||
if len(self.manager_gui.community_kernels) == 0:
|
||||
w.set_markup(
|
||||
f"<b>Cannot find any supported unofficial pacman repository's</b>\n"
|
||||
f"<b>Add the Chaotic-AUR pacman repository to access Community based kernels</b>"
|
||||
)
|
||||
else:
|
||||
w.set_markup(
|
||||
f"These kernels are user produced content\n"
|
||||
f"These kernels may not work on your hardware\n"
|
||||
f"<b>Any use of the provided files is at your own risk</b>"
|
||||
)
|
||||
break
|
||||
if stack_widget.get_name() == "label_stack_count":
|
||||
stack_widget.set_markup(
|
||||
"<i>%s Available kernels</i>"
|
||||
|
@ -495,37 +518,33 @@ class KernelStack:
|
|||
vbox_flowbox = scrolled_window_community.get_child().get_child()
|
||||
|
||||
for widget in vbox_flowbox:
|
||||
if widget.get_name() != "vbox_no_community":
|
||||
widget.remove_all()
|
||||
else:
|
||||
if len(self.manager_gui.community_kernels) > 0:
|
||||
# widget.hide()
|
||||
for box_widget in widget:
|
||||
box_widget.hide()
|
||||
widget.remove_all()
|
||||
|
||||
vbox_search_entry = Gtk.Box(
|
||||
orientation=Gtk.Orientation.VERTICAL, spacing=5
|
||||
)
|
||||
# scrolled_window_community.hide()
|
||||
|
||||
vbox_search_entry.append(search_entry_community)
|
||||
# widget.append(hbox_warning)
|
||||
widget.append(vbox_search_entry)
|
||||
# vbox_search_entry = Gtk.Box(
|
||||
# orientation=Gtk.Orientation.VERTICAL, spacing=5
|
||||
# )
|
||||
#
|
||||
# vbox_search_entry.append(search_entry_community)
|
||||
# widget.append(vbox_search_entry)
|
||||
|
||||
self.flowbox_community = FlowBox(
|
||||
self.manager_gui.community_kernels,
|
||||
self.manager_gui.active_kernel,
|
||||
self.manager_gui,
|
||||
"community",
|
||||
)
|
||||
vbox_flowbox.append(self.flowbox_community)
|
||||
if len(self.manager_gui.community_kernels) > 0:
|
||||
self.flowbox_community = FlowBox(
|
||||
self.manager_gui.community_kernels,
|
||||
self.manager_gui.active_kernel,
|
||||
self.manager_gui,
|
||||
"community",
|
||||
)
|
||||
vbox_flowbox.append(self.flowbox_community)
|
||||
|
||||
while self.manager_gui.default_context.pending():
|
||||
# fn.time.sleep(0.1)
|
||||
self.manager_gui.default_context.iteration(True)
|
||||
# while self.manager_gui.default_context.pending():
|
||||
# # fn.time.sleep(0.1)
|
||||
# self.manager_gui.default_context.iteration(True)
|
||||
else:
|
||||
self.flowbox_community = None
|
||||
|
||||
vbox_flowbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=12)
|
||||
vbox_flowbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
|
||||
# vbox_flowbox.set_halign(align=Gtk.Align.FILL)
|
||||
|
||||
if len(self.manager_gui.community_kernels) == 0:
|
||||
|
@ -619,6 +638,7 @@ class KernelStack:
|
|||
|
||||
if vbox_search_entry is not None:
|
||||
vbox_kernels.append(vbox_search_entry)
|
||||
|
||||
vbox_kernels.append(hbox_sep_kernels)
|
||||
|
||||
scrolled_window_community.set_child(vbox_flowbox)
|
||||
|
|
|
@ -29,6 +29,7 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
self.app_version = "dev"
|
||||
|
||||
fn.logger.info("Version = %s" % self.app_version)
|
||||
fn.logger.info("Distro = %s" % fn.distro.id())
|
||||
|
||||
self.set_title(app_name)
|
||||
self.set_resizable(True)
|
||||
|
@ -47,6 +48,20 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
# community kernels queue for threading
|
||||
self.queue_community_kernels = fn.Queue()
|
||||
|
||||
self.splash_screen = SplashScreen(app_name)
|
||||
|
||||
while self.default_context.pending():
|
||||
fn.time.sleep(0.1)
|
||||
self.default_context.iteration(True)
|
||||
|
||||
try:
|
||||
fn.Thread(
|
||||
target=self.wait_for_gui_load,
|
||||
daemon=True,
|
||||
).start()
|
||||
except Exception as e:
|
||||
fn.logger.error(e)
|
||||
|
||||
hbox_notify_revealer = Gtk.Box(
|
||||
orientation=Gtk.Orientation.HORIZONTAL, spacing=20
|
||||
)
|
||||
|
@ -62,19 +77,9 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
|
||||
hbox_notify_revealer.append(self.label_notify_revealer)
|
||||
|
||||
self.splash_screen = SplashScreen(app_name)
|
||||
|
||||
try:
|
||||
fn.Thread(
|
||||
target=self.wait_for_gui_load,
|
||||
daemon=True,
|
||||
).start()
|
||||
except Exception as e:
|
||||
fn.logger.error(e)
|
||||
|
||||
while self.default_context.pending():
|
||||
fn.time.sleep(0.1)
|
||||
self.default_context.iteration(True)
|
||||
# while self.default_context.pending():
|
||||
# fn.time.sleep(0.1)
|
||||
# self.default_context.iteration(True)
|
||||
|
||||
self.bootloader = None
|
||||
self.bootloader_grub_cfg = None
|
||||
|
@ -276,30 +281,6 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
self.official_kernels = self.queue_kernels.get()
|
||||
self.queue_kernels.task_done()
|
||||
|
||||
fn.logger.info("Starting pacman db synchronization thread")
|
||||
self.queue_load_progress.put("Starting pacman db synchronization")
|
||||
|
||||
self.pacman_db_sync()
|
||||
|
||||
fn.logger.info("Starting get community kernels thread")
|
||||
self.queue_load_progress.put("Getting community based Linux kernels")
|
||||
|
||||
try:
|
||||
thread_get_community_kernels = fn.Thread(
|
||||
name=fn.thread_get_community_kernels,
|
||||
target=fn.get_community_kernels,
|
||||
daemon=True,
|
||||
args=(self,),
|
||||
)
|
||||
|
||||
thread_get_community_kernels.start()
|
||||
|
||||
except Exception as e:
|
||||
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
|
||||
finally:
|
||||
self.community_kernels = self.queue_community_kernels.get()
|
||||
self.queue_community_kernels.task_done()
|
||||
|
||||
# =====================================================
|
||||
# PACMAN DB SYNC
|
||||
# =====================================================
|
||||
|
@ -339,8 +320,9 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
# keep splash screen open, until main gui is loaded
|
||||
def wait_for_gui_load(self):
|
||||
while True:
|
||||
fn.time.sleep(0.2)
|
||||
# fn.time.sleep(0.2)
|
||||
status = self.queue_load_progress.get()
|
||||
|
||||
if status == 1:
|
||||
GLib.idle_add(
|
||||
self.splash_screen.destroy,
|
||||
|
@ -385,6 +367,26 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
|
||||
self.start_get_kernels_threads()
|
||||
|
||||
self.pacman_db_sync()
|
||||
|
||||
fn.logger.debug("Adding community kernels to UI")
|
||||
|
||||
try:
|
||||
thread_get_community_kernels = fn.Thread(
|
||||
name=fn.thread_get_community_kernels,
|
||||
target=fn.get_community_kernels,
|
||||
daemon=True,
|
||||
args=(self,),
|
||||
)
|
||||
|
||||
thread_get_community_kernels.start()
|
||||
|
||||
except Exception as e:
|
||||
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
|
||||
finally:
|
||||
self.community_kernels = self.queue_community_kernels.get()
|
||||
self.queue_community_kernels.task_done()
|
||||
|
||||
self.installed_kernels = fn.get_installed_kernels()
|
||||
|
||||
self.label_notify_revealer.set_text("Refreshing official kernels")
|
||||
|
@ -499,10 +501,37 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
# add official kernel flowbox
|
||||
|
||||
fn.logger.debug("Adding official kernels to UI")
|
||||
|
||||
self.kernel_stack.add_official_kernels_to_stack(reload=False)
|
||||
|
||||
# fn.logger.debug("Adding community kernels to UI")
|
||||
# self.kernel_stack.add_community_kernels_to_stack(reload=False)
|
||||
|
||||
self.queue_load_progress.put(1)
|
||||
|
||||
fn.logger.info("Starting pacman db synchronization")
|
||||
|
||||
self.pacman_db_sync()
|
||||
|
||||
fn.logger.debug("Adding community kernels to UI")
|
||||
self.kernel_stack.add_community_kernels_to_stack(reload=False)
|
||||
|
||||
try:
|
||||
thread_get_community_kernels = fn.Thread(
|
||||
name=fn.thread_get_community_kernels,
|
||||
target=fn.get_community_kernels,
|
||||
daemon=True,
|
||||
args=(self,),
|
||||
)
|
||||
|
||||
thread_get_community_kernels.start()
|
||||
|
||||
except Exception as e:
|
||||
fn.logger.error("Exception in thread_get_community_kernels: %s" % e)
|
||||
finally:
|
||||
self.community_kernels = self.queue_community_kernels.get()
|
||||
self.queue_community_kernels.task_done()
|
||||
fn.logger.debug("Adding community kernels to UI")
|
||||
self.kernel_stack.add_community_kernels_to_stack(reload=False)
|
||||
|
||||
fn.logger.debug("Adding installed kernels to UI")
|
||||
self.kernel_stack.add_installed_kernels_to_stack(reload=False)
|
||||
|
@ -510,7 +539,4 @@ class ManagerGUI(Gtk.ApplicationWindow):
|
|||
while self.default_context.pending():
|
||||
self.default_context.iteration(True)
|
||||
|
||||
fn.time.sleep(0.3)
|
||||
|
||||
self.queue_load_progress.put(1)
|
||||
fn.logger.info("Kernel manager UI loaded")
|
||||
fn.time.sleep(0.1)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import random
|
||||
import sys
|
||||
import gi
|
||||
import os
|
||||
|
@ -26,7 +27,7 @@ class ProgressWindow(Gtk.Window):
|
|||
self.set_title(title=title)
|
||||
self.set_modal(modal=True)
|
||||
self.set_resizable(True)
|
||||
self.set_size_request(700, 400)
|
||||
self.set_size_request(700, 300)
|
||||
self.connect("close-request", self.on_close)
|
||||
|
||||
self.textview = textview
|
||||
|
@ -34,9 +35,19 @@ class ProgressWindow(Gtk.Window):
|
|||
|
||||
self.kernel_state_queue = fn.Queue()
|
||||
self.messages_queue = fn.Queue()
|
||||
|
||||
# create temp file to lock the close button
|
||||
self.lockfile = "/tmp/.akm-progress.lock"
|
||||
if os.path.exists(self.lockfile):
|
||||
os.unlink(self.lockfile)
|
||||
|
||||
with open(self.lockfile, "w") as f:
|
||||
f.write("")
|
||||
|
||||
self.kernel = kernel
|
||||
self.timeout_id = None
|
||||
self.errors_found = False
|
||||
self.restore_kernel = None
|
||||
|
||||
self.action = action
|
||||
self.switch = switch
|
||||
|
@ -164,10 +175,10 @@ class ProgressWindow(Gtk.Window):
|
|||
)
|
||||
|
||||
self.hbox_spinner = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
||||
self.hbox_spinner.append(self.label_spinner_progress)
|
||||
self.hbox_spinner.append(self.spinner)
|
||||
self.hbox_spinner.append(self.label_spinner_progress)
|
||||
|
||||
vbox_padding = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=20)
|
||||
vbox_padding = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
|
||||
vbox_padding.set_valign(Gtk.Align.END)
|
||||
|
||||
label_padding = Gtk.Label(xalign=0, yalign=0)
|
||||
|
@ -220,7 +231,7 @@ class ProgressWindow(Gtk.Window):
|
|||
vbox_progress.append(self.scrolled_window)
|
||||
vbox_progress.append(self.hbox_spinner)
|
||||
vbox_progress.append(self.label_status)
|
||||
vbox_progress.append(vbox_padding)
|
||||
# vbox_progress.append(vbox_padding)
|
||||
vbox_progress.append(hbox_button_close)
|
||||
|
||||
self.present()
|
||||
|
@ -401,7 +412,7 @@ class ProgressWindow(Gtk.Window):
|
|||
self.timeout_id = GLib.timeout_add(3000, self.timeout)
|
||||
|
||||
def on_button_close_response(self, widget):
|
||||
if fn.check_pacman_process(self):
|
||||
if fn.check_pacman_process(self) or os.path.exists(self.lockfile):
|
||||
mw = MessageWindow(
|
||||
title="Pacman process running",
|
||||
message="Pacman is busy processing a transaction .. please wait",
|
||||
|
@ -415,7 +426,7 @@ class ProgressWindow(Gtk.Window):
|
|||
self.destroy()
|
||||
|
||||
def on_close(self, data):
|
||||
if fn.check_pacman_process(self):
|
||||
if fn.check_pacman_process(self) or os.path.exists(self.lockfile):
|
||||
mw = MessageWindow(
|
||||
title="Pacman process running",
|
||||
message="Pacman is busy processing a transaction .. please wait",
|
||||
|
@ -468,18 +479,22 @@ class ProgressWindow(Gtk.Window):
|
|||
|
||||
# undo action here if action == install
|
||||
|
||||
event = (
|
||||
"%s<b> [INFO]: Attempting to undo previous Linux package changes</b>\n"
|
||||
% (
|
||||
fn.datetime.datetime.now().strftime(
|
||||
"%Y-%m-%d-%H-%M-%S"
|
||||
),
|
||||
if (
|
||||
action == "install"
|
||||
and self.restore_kernel is not None
|
||||
and self.source == "official"
|
||||
):
|
||||
event = (
|
||||
"%s<b> [INFO]: Attempting to undo previous Linux package changes</b>\n"
|
||||
% (
|
||||
fn.datetime.datetime.now().strftime(
|
||||
"%Y-%m-%d-%H-%M-%S"
|
||||
),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
self.messages_queue.put(event)
|
||||
self.messages_queue.put(event)
|
||||
|
||||
if action == "install" and self.restore_kernel is not None:
|
||||
self.restore = True
|
||||
fn.logger.info(
|
||||
"Installation failed, attempting removal of previous Linux package changes"
|
||||
|
@ -523,14 +538,19 @@ class ProgressWindow(Gtk.Window):
|
|||
f"<span foreground='orange'><b>Kernel %s failed - see logs above</b></span>\n"
|
||||
% action
|
||||
)
|
||||
else:
|
||||
|
||||
# self.spinner.set_spinning(False)
|
||||
# self.hbox_spinner.hide()
|
||||
#
|
||||
# self.label_progress_window_desc.set_markup(
|
||||
# f"<b>This window can be now closed</b>\n"
|
||||
# f"<b>A reboot is recommended when Linux packages have changed</b>"
|
||||
# )
|
||||
self.spinner.set_spinning(False)
|
||||
self.hbox_spinner.hide()
|
||||
|
||||
self.set_title("Kernel installation failed")
|
||||
self.label_title.set_markup("<b>Install failed</b>")
|
||||
|
||||
#
|
||||
# self.label_progress_window_desc.set_markup(
|
||||
# f"<b>This window can be now closed</b>\n"
|
||||
# f"<b>A reboot is recommended when Linux packages have changed</b>"
|
||||
# )
|
||||
|
||||
# break
|
||||
else:
|
||||
|
@ -597,6 +617,8 @@ class ProgressWindow(Gtk.Window):
|
|||
break
|
||||
except Exception as e:
|
||||
fn.logger.error("Exception in check_kernel_state(): %s" % e)
|
||||
if os.path.exists(self.lockfile):
|
||||
os.unlink(self.lockfile)
|
||||
|
||||
finally:
|
||||
self.kernel_state_queue.task_done()
|
||||
|
|
|
@ -180,8 +180,6 @@ class SettingsWindow(Gtk.Window):
|
|||
vbox_community_warning = Gtk.Box(
|
||||
orientation=Gtk.Orientation.VERTICAL, spacing=10
|
||||
)
|
||||
vbox_community_warning.set_name("box")
|
||||
|
||||
image_warning = Gtk.Image.new_from_file(
|
||||
os.path.join(base_dir, "images/48x48/akm-warning.png")
|
||||
)
|
||||
|
@ -190,14 +188,15 @@ class SettingsWindow(Gtk.Window):
|
|||
image_warning.set_halign(Gtk.Align.START)
|
||||
|
||||
hbox_warning = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
||||
hbox_warning.set_name("box")
|
||||
hbox_warning.set_name("hbox_warning")
|
||||
|
||||
hbox_warning.append(image_warning)
|
||||
|
||||
label_pacman_no_community = Gtk.Label(xalign=0, yalign=0)
|
||||
label_pacman_no_community.set_name("label_community_warning")
|
||||
label_pacman_no_community.set_markup(
|
||||
f"<b>Cannot find any supported unofficial pacman repository's</b>\n"
|
||||
f"Add unofficial pacman repository's to use community based kernels"
|
||||
f"<b>Add the Chaotic-AUR pacman repository to access Community based kernels</b>"
|
||||
)
|
||||
|
||||
hbox_warning.append(label_pacman_no_community)
|
||||
|
@ -459,7 +458,7 @@ class SettingsWindow(Gtk.Window):
|
|||
while True:
|
||||
self.kernel_versions = self.kernel_versions_queue.get()
|
||||
|
||||
if self.kernel_versions is not None:
|
||||
if self.kernel_versions is not None and len(self.kernel_versions) > 0:
|
||||
break
|
||||
|
||||
self.kernel_versions_queue.task_done()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue