mirror of
https://github.com/Steve-Tech/YAFI.git
synced 2026-04-19 16:50:36 +00:00
Refactor workspace and add about page
This commit is contained in:
19
yafi/ui/about.ui
Normal file
19
yafi/ui/about.ui
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.94.1 -->
|
||||||
|
<interface>
|
||||||
|
<!-- interface-description The About page for YAFI -->
|
||||||
|
<!-- interface-copyright Steve-Tech -->
|
||||||
|
<requires lib="libadwaita" version="1.2"/>
|
||||||
|
<object class="AdwAboutWindow" id="about-root">
|
||||||
|
<property name="application-icon">application-default-icon</property>
|
||||||
|
<property name="application-name">Yet Another Framework Interface</property>
|
||||||
|
<property name="comments">YAFI is another GUI for the Framework Laptop Embedded Controller.
|
||||||
|
It is written in Python with a GTK3 theme, and uses the `CrOS_EC_Python` library to communicate with the EC.</property>
|
||||||
|
<property name="copyright">Copyright © 2025 Stephen Horvath</property>
|
||||||
|
<property name="developers">Stephen Horvath (Steve-Tech)</property>
|
||||||
|
<property name="issue-url">https://github.com/Steve-Tech/YAFI/issues</property>
|
||||||
|
<property name="license-type">gpl-2-0</property>
|
||||||
|
<property name="version">0.1</property>
|
||||||
|
<property name="website">https://github.com/Steve-Tech/YAFI</property>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
@@ -6,7 +6,8 @@
|
|||||||
(2,None,None,"thermals.ui","The Thermals page for YAFI",None,"Steve-Tech",None,None,None,None),
|
(2,None,None,"thermals.ui","The Thermals page for YAFI",None,"Steve-Tech",None,None,None,None),
|
||||||
(3,None,None,"leds.ui","The LEDs page for YAFI",None,"Steve-Tech",None,None,None,None),
|
(3,None,None,"leds.ui","The LEDs page for YAFI",None,"Steve-Tech",None,None,None,None),
|
||||||
(4,None,None,"battery.ui","The Battery page for YAFI",None,"Steve-Tech",None,None,None,None),
|
(4,None,None,"battery.ui","The Battery page for YAFI",None,"Steve-Tech",None,None,None,None),
|
||||||
(5,None,None,"hardware.ui","The Hardware page for YAFI","Steve-Tech",None,None,None,None,None)
|
(5,None,None,"hardware.ui","The Hardware page for YAFI","Steve-Tech",None,None,None,None,None),
|
||||||
|
(6,None,None,"about.ui","The About page for YAFI","Steve-Tech",None,None,None,None,None)
|
||||||
</ui>
|
</ui>
|
||||||
<object>
|
<object>
|
||||||
(1,1,"AdwApplicationWindow","root",None,None,None,None,0,None,None),
|
(1,1,"AdwApplicationWindow","root",None,None,None,None,0,None,None),
|
||||||
@@ -97,7 +98,8 @@
|
|||||||
(5,12,"AdwSwitchRow",None,2,None,None,None,4,None,None),
|
(5,12,"AdwSwitchRow",None,2,None,None,None,4,None,None),
|
||||||
(5,13,"GtkBox",None,9,None,None,None,0,None,None),
|
(5,13,"GtkBox",None,9,None,None,None,0,None,None),
|
||||||
(5,14,"GtkBox",None,6,None,None,None,0,None,None),
|
(5,14,"GtkBox",None,6,None,None,None,0,None,None),
|
||||||
(5,15,"GtkSwitch",None,14,None,None,None,0,None,None)
|
(5,15,"GtkSwitch",None,14,None,None,None,0,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","about-root",None,None,None,None,0,None,None)
|
||||||
</object>
|
</object>
|
||||||
<object_property>
|
<object_property>
|
||||||
(1,1,"GtkWindow","default-height","500",None,None,None,None,None,None,None,None,None),
|
(1,1,"GtkWindow","default-height","500",None,None,None,None,None,None,None,None,None),
|
||||||
@@ -285,7 +287,16 @@
|
|||||||
(5,14,"GtkWidget","halign","end",0,None,None,None,None,None,None,None,None),
|
(5,14,"GtkWidget","halign","end",0,None,None,None,None,None,None,None,None),
|
||||||
(5,14,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
|
(5,14,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
|
||||||
(5,15,"GtkSwitch","active","True",0,None,None,None,None,None,None,None,None),
|
(5,15,"GtkSwitch","active","True",0,None,None,None,None,None,None,None,None),
|
||||||
(5,15,"GtkWidget","sensitive","False",0,None,None,None,None,None,None,None,None)
|
(5,15,"GtkWidget","sensitive","False",0,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","application-icon","application-default-icon",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","application-name","Yet Another Framework Interface",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","comments","YAFI is another GUI for the Framework Laptop Embedded Controller.\nIt is written in Python with a GTK3 theme, and uses the `CrOS_EC_Python` library to communicate with the EC.",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","copyright","Copyright © 2025 Stephen Horvath",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","developers","Stephen Horvath (Steve-Tech)",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","issue-url","https://github.com/Steve-Tech/YAFI/issues",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","license-type","gpl-2-0",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","version","0.1",None,None,None,None,None,None,None,None,None),
|
||||||
|
(6,1,"AdwAboutWindow","website","https://github.com/Steve-Tech/YAFI",None,None,None,None,None,None,None,None,None)
|
||||||
</object_property>
|
</object_property>
|
||||||
<object_data>
|
<object_data>
|
||||||
(1,17,"GtkWidget",1,1,None,None,None,None,None,None),
|
(1,17,"GtkWidget",1,1,None,None,None,None,None,None),
|
||||||
@@ -18,7 +18,7 @@ class YAFI(Adw.Application):
|
|||||||
def _thermals_page(self, builder):
|
def _thermals_page(self, builder):
|
||||||
# Load the thermals.ui file
|
# Load the thermals.ui file
|
||||||
thermals_builder = Gtk.Builder()
|
thermals_builder = Gtk.Builder()
|
||||||
thermals_builder.add_from_file("thermals.ui")
|
thermals_builder.add_from_file("ui/thermals.ui")
|
||||||
|
|
||||||
# Get the root widget from the thermals.ui file
|
# Get the root widget from the thermals.ui file
|
||||||
thermals_root = thermals_builder.get_object("thermals-root")
|
thermals_root = thermals_builder.get_object("thermals-root")
|
||||||
@@ -62,7 +62,7 @@ class YAFI(Adw.Application):
|
|||||||
def _leds_page(self, builder):
|
def _leds_page(self, builder):
|
||||||
# Load the leds.ui file
|
# Load the leds.ui file
|
||||||
leds_builder = Gtk.Builder()
|
leds_builder = Gtk.Builder()
|
||||||
leds_builder.add_from_file("leds.ui")
|
leds_builder.add_from_file("ui/leds.ui")
|
||||||
|
|
||||||
# Get the root widget from the leds.ui file
|
# Get the root widget from the leds.ui file
|
||||||
leds_root = leds_builder.get_object("leds-root")
|
leds_root = leds_builder.get_object("leds-root")
|
||||||
@@ -72,7 +72,7 @@ class YAFI(Adw.Application):
|
|||||||
def _battery_page(self, builder):
|
def _battery_page(self, builder):
|
||||||
# Load the battery.ui file
|
# Load the battery.ui file
|
||||||
battery_builder = Gtk.Builder()
|
battery_builder = Gtk.Builder()
|
||||||
battery_builder.add_from_file("battery.ui")
|
battery_builder.add_from_file("ui/battery.ui")
|
||||||
|
|
||||||
# Get the root widget from the battery.ui file
|
# Get the root widget from the battery.ui file
|
||||||
battery_root = battery_builder.get_object("battery-root")
|
battery_root = battery_builder.get_object("battery-root")
|
||||||
@@ -82,21 +82,37 @@ class YAFI(Adw.Application):
|
|||||||
def _hardware_page(self, builder):
|
def _hardware_page(self, builder):
|
||||||
# Load the hardware.ui file
|
# Load the hardware.ui file
|
||||||
hardware_builder = Gtk.Builder()
|
hardware_builder = Gtk.Builder()
|
||||||
hardware_builder.add_from_file("hardware.ui")
|
hardware_builder.add_from_file("ui/hardware.ui")
|
||||||
|
|
||||||
# Get the root widget from the hardware.ui file
|
# Get the root widget from the hardware.ui file
|
||||||
hardware_root = hardware_builder.get_object("hardware-root")
|
hardware_root = hardware_builder.get_object("hardware-root")
|
||||||
|
|
||||||
self._change_page(builder, hardware_root)
|
self._change_page(builder, hardware_root)
|
||||||
|
|
||||||
|
def _about_page(self, app_builder):
|
||||||
|
# Open About dialog
|
||||||
|
builder = Gtk.Builder()
|
||||||
|
builder.add_from_file("ui/about.ui")
|
||||||
|
|
||||||
|
about = builder.get_object("about-root")
|
||||||
|
about.set_modal(True)
|
||||||
|
about.set_transient_for(self.win)
|
||||||
|
|
||||||
|
# Reset the selection in the navbar
|
||||||
|
navbar = app_builder.get_object("navbar")
|
||||||
|
about.connect("close-request", lambda _: navbar.select_row(navbar.get_row_at_index(self.current_page)))
|
||||||
|
|
||||||
|
about.present()
|
||||||
|
|
||||||
def on_activate(self, app):
|
def on_activate(self, app):
|
||||||
# Create a Builder
|
# Create a Builder
|
||||||
builder = Gtk.Builder()
|
builder = Gtk.Builder()
|
||||||
builder.add_from_file("yafi.ui")
|
builder.add_from_file("ui/yafi.ui")
|
||||||
|
|
||||||
|
self.current_page = 0
|
||||||
self._thermals_page(builder)
|
self._thermals_page(builder)
|
||||||
|
|
||||||
pages = (("Thermals", self._thermals_page), ("LEDs", self._leds_page), ("Battery", self._battery_page), ("Hardware", self._hardware_page), ("About", self._leds_page))
|
pages = (("Thermals", self._thermals_page), ("LEDs", self._leds_page), ("Battery", self._battery_page), ("Hardware", self._hardware_page), ("About", self._about_page))
|
||||||
|
|
||||||
# Build the navbar
|
# Build the navbar
|
||||||
navbar = builder.get_object("navbar")
|
navbar = builder.get_object("navbar")
|
||||||
@@ -105,7 +121,13 @@ class YAFI(Adw.Application):
|
|||||||
row.set_child(Gtk.Label(label=page[0]))
|
row.set_child(Gtk.Label(label=page[0]))
|
||||||
navbar.append(row)
|
navbar.append(row)
|
||||||
|
|
||||||
navbar.connect("row-activated", lambda box, row: pages[row.get_index()][1](builder))
|
def switch_page(page):
|
||||||
|
# About page is a special case
|
||||||
|
if page != len(pages) - 1:
|
||||||
|
self.current_page = page
|
||||||
|
pages[page][1](builder)
|
||||||
|
|
||||||
|
navbar.connect("row-activated", lambda box, row: switch_page(row.get_index()))
|
||||||
|
|
||||||
# Obtain and show the main window
|
# Obtain and show the main window
|
||||||
self.win = builder.get_object("root")
|
self.win = builder.get_object("root")
|
||||||
Reference in New Issue
Block a user