diff --git a/Cargo.lock b/Cargo.lock
index 37b95e8..7f73bc5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -46,30 +46,6 @@ dependencies = [
"libloading",
]
-[[package]]
-name = "atk"
-version = "0.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf"
-dependencies = [
- "atk-sys",
- "bitflags",
- "glib",
- "libc",
-]
-
-[[package]]
-name = "atk-sys"
-version = "0.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148"
-dependencies = [
- "glib-sys",
- "gobject-sys",
- "libc",
- "system-deps",
-]
-
[[package]]
name = "autocfg"
version = "1.1.0"
@@ -374,22 +350,6 @@ dependencies = [
"slab",
]
-[[package]]
-name = "gdk"
-version = "0.16.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1"
-dependencies = [
- "bitflags",
- "cairo-rs",
- "gdk-pixbuf",
- "gdk-sys",
- "gio",
- "glib",
- "libc",
- "pango",
-]
-
[[package]]
name = "gdk-pixbuf"
version = "0.16.7"
@@ -417,10 +377,26 @@ dependencies = [
]
[[package]]
-name = "gdk-sys"
-version = "0.16.0"
+name = "gdk4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a"
+checksum = "bb2181330ebf9d091f8ea7fed6877f7adc92114128592e1fdaeb1da28e0d01e9"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de55cb49432901fe2b3534177fa06844665b9b0911d85d8601a8d8b88b7791db"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -536,51 +512,88 @@ dependencies = [
]
[[package]]
-name = "gtk"
-version = "0.16.2"
+name = "graphene-rs"
+version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6"
+checksum = "95ecb4d347e6d09820df3bdfd89a74a8eec07753a06bb92a3aac3ad31d04447b"
dependencies = [
- "atk",
- "bitflags",
- "cairo-rs",
- "field-offset",
- "futures-channel",
- "gdk",
- "gdk-pixbuf",
- "gio",
"glib",
- "gtk-sys",
- "gtk3-macros",
+ "graphene-sys",
"libc",
- "once_cell",
- "pango",
- "pkg-config",
]
[[package]]
-name = "gtk-sys"
-version = "0.16.0"
+name = "graphene-sys"
+version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3"
+checksum = "b9aa82337d3972b4eafdea71e607c23f47be6f27f749aab613f1ad8ddbe6dcd6"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "591239f5c52ca803b222124ac9c47f230cd180cee9b114c4d672e4a94b74f491"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "195a63f0be42529f98c3eb3bae0decfd0428ba2cc683b3e20ced88f340904ec5"
dependencies = [
- "atk-sys",
"cairo-sys-rs",
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys",
+ "gdk4-sys",
"glib-sys",
"gobject-sys",
+ "graphene-sys",
"libc",
"pango-sys",
"system-deps",
]
[[package]]
-name = "gtk3-macros"
-version = "0.16.0"
+name = "gtk4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cfd6557b1018b773e43c8de9d0d13581d6b36190d0501916cbec4731db5ccff"
+checksum = "fd89dba65def483a233dc4fdd3f3dab01576e3d83f80f6c9303ebe421661855e"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "once_cell",
+ "pango",
+]
+
+[[package]]
+name = "gtk4-macros"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "832687a415d9d8bc11fe9c17dda1bf13ee262c41b995dd4df1d1cce33cead405"
dependencies = [
"anyhow",
"proc-macro-crate",
@@ -590,6 +603,25 @@ dependencies = [
"syn",
]
+[[package]]
+name = "gtk4-sys"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e370564e3fdacff7cffc99f7366b6a4689feb44e819d3ccee598a9a215b71605"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
[[package]]
name = "half"
version = "2.1.0"
@@ -704,9 +736,10 @@ name = "lact-gui"
version = "0.2.0"
dependencies = [
"anyhow",
- "gtk",
+ "gtk4",
"lact-client",
"nix",
+ "once_cell",
"serde",
"serde_json",
"tracing",
diff --git a/lact-gui/Cargo.toml b/lact-gui/Cargo.toml
index f65c971..6c1a5a4 100644
--- a/lact-gui/Cargo.toml
+++ b/lact-gui/Cargo.toml
@@ -6,7 +6,8 @@ edition = "2021"
[dependencies]
lact-client = { path = "../lact-client" }
-gtk = "0.16"
+gtk = { version = "0.5", package = "gtk4" }
+once_cell = "1.17.0"
# pango = "0.16"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
diff --git a/lact-gui/src/app/apply_revealer.rs b/lact-gui/src/app/apply_revealer.rs
index b940a69..96aaf30 100644
--- a/lact-gui/src/app/apply_revealer.rs
+++ b/lact-gui/src/app/apply_revealer.rs
@@ -17,7 +17,7 @@ impl ApplyRevealer {
apply_button.set_label("Apply");
- container.add(&apply_button);
+ container.set_child(Some(&apply_button));
Self {
container,
diff --git a/lact-gui/src/app/header.rs b/lact-gui/src/app/header.rs
index c560c6f..bf93f32 100644
--- a/lact-gui/src/app/header.rs
+++ b/lact-gui/src/app/header.rs
@@ -14,9 +14,10 @@ impl Header {
pub fn new() -> Self {
let container = HeaderBar::new();
- container.set_custom_title(Some(&Grid::new())); // Bad workaround to hide the title
+ // TODO Check if this is this still needed
+ container.set_title_widget(Some(&Grid::new())); // Bad workaround to hide the title
- container.set_show_close_button(true);
+ container.set_show_title_buttons(true);
let gpu_selector = ComboBoxText::new();
container.pack_start(&gpu_selector);
diff --git a/lact-gui/src/app/mod.rs b/lact-gui/src/app/mod.rs
index 9bec8ca..ac323a7 100644
--- a/lact-gui/src/app/mod.rs
+++ b/lact-gui/src/app/mod.rs
@@ -10,6 +10,7 @@ use std::time::Duration;
use anyhow::Context;
use apply_revealer::ApplyRevealer;
use glib::clone;
+use gtk::gio::ApplicationFlags;
use gtk::prelude::*;
use gtk::*;
use header::Header;
@@ -23,7 +24,8 @@ const STATS_POLL_INTERVAL: u64 = 250;
#[derive(Clone)]
pub struct App {
- pub window: Window,
+ application: Application,
+ pub window: ApplicationWindow,
pub header: Header,
root_stack: RootStack,
apply_revealer: ApplyRevealer,
@@ -32,19 +34,21 @@ pub struct App {
impl App {
pub fn new(daemon_client: DaemonClient) -> Self {
- let window = Window::new(WindowType::Toplevel);
+ let application = Application::new(None, ApplicationFlags::default());
let header = Header::new();
+ let window = ApplicationWindow::builder()
+ .title("LACT")
+ .default_width(500)
+ .default_height(600)
+ .build();
window.set_titlebar(Some(&header.container));
- window.set_title("LACT");
- window.set_default_size(500, 600);
-
- window.connect_delete_event(move |_, _| {
- main_quit();
- Inhibit(false)
- });
+ // window.connect_close_request(move |_, _| {
+ // // main_quit();
+ // Inhibit(false)
+ // });
let root_stack = RootStack::new();
@@ -52,15 +56,16 @@ impl App {
let root_box = Box::new(Orientation::Vertical, 5);
- root_box.add(&root_stack.container);
+ root_box.append(&root_stack.container);
let apply_revealer = ApplyRevealer::new();
- root_box.add(&apply_revealer.container);
+ root_box.append(&apply_revealer.container);
- window.add(&root_box);
+ window.set_child(Some(&root_box));
App {
+ application,
window,
header,
root_stack,
@@ -69,79 +74,87 @@ impl App {
}
}
- pub fn run(&self) -> anyhow::Result<()> {
- self.window.show_all();
+ pub fn run(self) -> anyhow::Result<()> {
+ self.application
+ .connect_activate(clone!(@strong self as app => move |_| {
+ app.window.set_application(Some(&app.application));
- let current_gpu_id = Arc::new(RwLock::new(String::new()));
+ let current_gpu_id = Arc::new(RwLock::new(String::new()));
- {
- let current_gpu_id = current_gpu_id.clone();
- let app = self.clone();
+ {
+ let current_gpu_id = current_gpu_id.clone();
- self.header.connect_gpu_selection_changed(move |gpu_id| {
- info!("GPU Selection changed");
- app.set_info(&gpu_id);
- *current_gpu_id.write().unwrap() = gpu_id;
- });
- }
-
- let devices_buf = self.daemon_client.list_devices()?;
- let devices = devices_buf.inner()?;
- self.header.set_devices(&devices);
-
- // Show apply button on setting changes
- {
- let apply_revealer = self.apply_revealer.clone();
-
- self.root_stack
- .thermals_page
- .connect_settings_changed(move || {
- debug!("Settings changed, showing apply button");
- apply_revealer.show();
- });
-
- let apply_revealer = self.apply_revealer.clone();
-
- self.root_stack.oc_page.connect_settings_changed(move || {
- debug!("Settings changed, showing apply button");
- apply_revealer.show();
- });
- }
-
- {
- let app = self.clone();
- let current_gpu_id = current_gpu_id.clone();
-
- // TODO
- /*self.root_stack.oc_page.connect_clocks_reset(move || {
- info!("Resetting clocks, but not applying");
-
- let gpu_id = current_gpu_id.load(Ordering::SeqCst);
-
- app.daemon_client
- .reset_gpu_power_states(gpu_id)
- .expect("Failed to reset clocks");
-
- app.set_info(gpu_id);
-
- app.apply_revealer.show();
- })*/
- }
-
- self.apply_revealer.connect_apply_button_clicked(
- clone!(@strong self as app, @strong current_gpu_id => move || {
- if let Err(err) = app.apply_settings(current_gpu_id.clone()) {
- show_error(err.context("Could not apply settings"));
-
- let gpu_id = current_gpu_id.read().unwrap();
- app.set_info(&gpu_id)
+ app.header.connect_gpu_selection_changed(clone!(@strong app => move |gpu_id| {
+ info!("GPU Selection changed");
+ app.set_info(&gpu_id);
+ *current_gpu_id.write().unwrap() = gpu_id;
+ }));
}
- }),
- );
- self.start_stats_update_loop(current_gpu_id.clone());
+ let devices_buf = app
+ .daemon_client
+ .list_devices()
+ .expect("Could not list devices");
+ let devices = devices_buf.inner().expect("Could not access devices");
+ app.header.set_devices(&devices);
- Ok(gtk::main())
+ // Show apply button on setting changes
+ {
+ let apply_revealer = app.apply_revealer.clone();
+
+ app.root_stack
+ .thermals_page
+ .connect_settings_changed(move || {
+ debug!("Settings changed, showing apply button");
+ apply_revealer.show();
+ });
+
+ let apply_revealer = app.apply_revealer.clone();
+
+ app.root_stack.oc_page.connect_settings_changed(move || {
+ debug!("Settings changed, showing apply button");
+ apply_revealer.show();
+ });
+ }
+
+ {
+ let app = app.clone();
+ let current_gpu_id = current_gpu_id.clone();
+
+ // TODO
+ /*app.root_stack.oc_page.connect_clocks_reset(move || {
+ info!("Resetting clocks, but not applying");
+
+ let gpu_id = current_gpu_id.load(Ordering::SeqCst);
+
+ app.daemon_client
+ .reset_gpu_power_states(gpu_id)
+ .expect("Failed to reset clocks");
+
+ app.set_info(gpu_id);
+
+ app.apply_revealer.show();
+ })*/
+ }
+
+ app.apply_revealer.connect_apply_button_clicked(
+ clone!(@strong app as app, @strong current_gpu_id => move || {
+ if let Err(err) = app.apply_settings(current_gpu_id.clone()) {
+ show_error(err.context("Could not apply settings"));
+
+ let gpu_id = current_gpu_id.read().unwrap();
+ app.set_info(&gpu_id)
+ }
+ }),
+ );
+
+ app.start_stats_update_loop(current_gpu_id.clone());
+
+ app.window.show();
+ }));
+
+ self.application.run();
+ Ok(())
}
fn set_info(&self, gpu_id: &str) {
@@ -326,7 +339,7 @@ fn show_error(err: anyhow::Error) {
.text(&text)
.buttons(ButtonsType::Close)
.build();
- diag.run();
+ diag.set_modal(true);
diag.hide();
glib::Continue(false)
});
diff --git a/lact-gui/src/app/root_stack/info_page/mod.rs b/lact-gui/src/app/root_stack/info_page/mod.rs
index f078dda..7d65ad8 100644
--- a/lact-gui/src/app/root_stack/info_page/mod.rs
+++ b/lact-gui/src/app/root_stack/info_page/mod.rs
@@ -200,8 +200,6 @@ impl InformationPage {
if let Some(vulkan_info) = &gpu_info.vulkan_info {
self.vulkan_info_frame.set_info(vulkan_info);
}
-
- self.container.show_all();
}
pub fn set_stats(&self, stats: &DeviceStats) {
diff --git a/lact-gui/src/app/root_stack/info_page/vulkan_info.rs b/lact-gui/src/app/root_stack/info_page/vulkan_info.rs
index c1388c3..7d7fe57 100644
--- a/lact-gui/src/app/root_stack/info_page/vulkan_info.rs
+++ b/lact-gui/src/app/root_stack/info_page/vulkan_info.rs
@@ -22,9 +22,9 @@ impl VulkanInfoFrame {
label.set_markup("Vulkan Information");
label
}));
- container.set_label_align(0.5, 0.5);
+ container.set_label_align(0.5);
- container.set_shadow_type(ShadowType::None);
+ // container.set_shadow_type(ShadowType::None); // TODO
let features_listbox = ListBox::builder().halign(Align::Fill).build();
let extensions_listbox = ListBox::builder().halign(Align::Fill).build();
@@ -102,7 +102,7 @@ impl VulkanInfoFrame {
grid.attach(&extensions_label, 0, 3, 2, 1);
grid.attach(&show_extensions_button, 2, 3, 2, 1);
- vbox.pack_start(&grid, false, true, 5);
+ vbox.prepend(&grid);
/*let features_expander = Expander::builder().label("Feature support").build();
@@ -130,7 +130,7 @@ impl VulkanInfoFrame {
vbox.pack_start(&extensions_expander, false, true, 5);*/
- container.add(&vbox);
+ container.set_child(Some(&vbox));
Self {
container,
@@ -149,37 +149,37 @@ impl VulkanInfoFrame {
self.version_label
.set_markup(&format!("{}", vulkan_info.api_version));
- self.features_listbox.children().clear();
+ // self.features_listbox.children().clear();
for (i, (feature, supported)) in vulkan_info.features.iter().enumerate() {
let vbox = Box::new(Orientation::Horizontal, 5);
let feature_name_label = Label::new(Some(&feature));
- vbox.pack_start(&feature_name_label, false, false, 0);
+ vbox.append(&feature_name_label);
let feature_supported_checkbutton = CheckButton::new();
feature_supported_checkbutton.set_sensitive(false);
feature_supported_checkbutton.set_active(*supported);
- vbox.pack_end(&feature_supported_checkbutton, false, false, 0);
+ vbox.append(&feature_supported_checkbutton);
self.features_listbox.insert(&vbox, i.try_into().unwrap());
}
- self.extensions_listbox.children().clear();
+ // self.extensions_listbox.children().clear();
for (i, (extension, supported)) in vulkan_info.extensions.iter().enumerate() {
let vbox = Box::new(Orientation::Horizontal, 5);
vbox.set_hexpand(true);
let extension_name_label = Label::new(Some(&extension));
- vbox.pack_start(&extension_name_label, false, false, 0);
+ vbox.append(&extension_name_label);
let extension_supported_checkbutton = CheckButton::builder()
.sensitive(false)
.active(*supported)
.build();
- vbox.pack_end(&extension_supported_checkbutton, false, false, 0);
+ vbox.append(&extension_supported_checkbutton);
self.extensions_listbox.insert(&vbox, i.try_into().unwrap());
}
@@ -188,12 +188,11 @@ impl VulkanInfoFrame {
fn show_list_window(title: &str, child: &ListBox) {
let window = Window::builder()
- .type_(WindowType::Toplevel)
.title(title)
.width_request(500)
.height_request(700)
.build();
- let scroll = ScrolledWindow::builder().child(child).margin(10).build();
- window.add(&scroll);
- window.show_all();
+ let scroll = ScrolledWindow::builder().child(child).build();
+ window.set_child(Some(&scroll));
+ window.show();
}
diff --git a/lact-gui/src/app/root_stack/mod.rs b/lact-gui/src/app/root_stack/mod.rs
index 60bd65f..94a9bd4 100644
--- a/lact-gui/src/app/root_stack/mod.rs
+++ b/lact-gui/src/app/root_stack/mod.rs
@@ -3,7 +3,6 @@ mod oc_page;
mod software_page;
mod thermals_page;
-use gtk::prelude::*;
use gtk::*;
use info_page::InformationPage;
@@ -26,19 +25,19 @@ impl RootStack {
let info_page = InformationPage::new();
- container.add_titled(&info_page.container, "info_page", "Information");
+ container.add_titled(&info_page.container, Some("info_page"), "Information");
let oc_page = OcPage::new();
- container.add_titled(&oc_page.container, "oc_page", "OC");
+ container.add_titled(&oc_page.container, Some("oc_page"), "OC");
let thermals_page = ThermalsPage::new();
- container.add_titled(&thermals_page.container, "thermals_page", "Thermals");
+ container.add_titled(&thermals_page.container, Some("thermals_page"), "Thermals");
let software_page = SoftwarePage::new();
- container.add_titled(&software_page.container, "software_page", "Software");
+ container.add_titled(&software_page.container, Some("software_page"), "Software");
Self {
container,
diff --git a/lact-gui/src/app/root_stack/oc_page/mod.rs b/lact-gui/src/app/root_stack/oc_page/mod.rs
index 8a85f7e..93e2af3 100644
--- a/lact-gui/src/app/root_stack/oc_page/mod.rs
+++ b/lact-gui/src/app/root_stack/oc_page/mod.rs
@@ -7,7 +7,7 @@ mod warning_frame;
use glib::clone;
use gtk::prelude::*;
use gtk::*;
-use lact_client::schema::{DeviceInfo, DeviceStats, PerformanceLevel, PowerStats};
+use lact_client::schema::{DeviceStats, PerformanceLevel, PowerStats};
use performance_level_frame::PowerProfileFrame;
use power_cap_frame::PowerCapFrame;
use stats_grid::StatsGrid;
@@ -29,19 +29,19 @@ impl OcPage {
let warning_frame = WarningFrame::new();
- container.pack_start(&warning_frame.container, false, true, 5);
+ container.append(&warning_frame.container);
let stats_grid = StatsGrid::new();
- container.pack_start(&stats_grid.container, false, true, 5);
+ container.append(&stats_grid.container);
let power_cap_frame = PowerCapFrame::new();
- container.pack_start(&power_cap_frame.container, false, true, 0);
+ container.append(&power_cap_frame.container);
let power_profile_frame = PowerProfileFrame::new();
- container.pack_start(&power_profile_frame.container, false, true, 0);
+ container.append(&power_profile_frame.container);
// let clocks_frame = ClocksFrame::new();
diff --git a/lact-gui/src/app/root_stack/oc_page/performance_level_frame.rs b/lact-gui/src/app/root_stack/oc_page/performance_level_frame.rs
index 0a6cc0a..7e772f1 100644
--- a/lact-gui/src/app/root_stack/oc_page/performance_level_frame.rs
+++ b/lact-gui/src/app/root_stack/oc_page/performance_level_frame.rs
@@ -13,14 +13,14 @@ impl PowerProfileFrame {
pub fn new() -> Self {
let container = Frame::new(None);
- container.set_shadow_type(ShadowType::None);
+ // container.set_shadow_type(ShadowType::None);
container.set_label_widget(Some(&{
let label = Label::new(None);
label.set_markup("Power Profile");
label
}));
- container.set_label_align(0.2, 0.0);
+ container.set_label_align(0.2);
let root_box = Box::new(Orientation::Horizontal, 5);
@@ -30,11 +30,11 @@ impl PowerProfileFrame {
combo_box.append(Some("1"), "Highest clocks");
combo_box.append(Some("2"), "Lowest clocks");
- root_box.pack_start(&combo_box, false, true, 5);
+ root_box.append(&combo_box);
let description_label = Label::new(Some("A description is supposed to be here"));
- root_box.pack_start(&description_label, false, true, 5);
+ root_box.append(&description_label);
{
let description_label = description_label.clone();
@@ -49,7 +49,7 @@ impl PowerProfileFrame {
});
}
- container.add(&root_box);
+ container.set_child(Some(&root_box));
Self {
container,
combo_box,
diff --git a/lact-gui/src/app/root_stack/oc_page/power_cap_frame.rs b/lact-gui/src/app/root_stack/oc_page/power_cap_frame.rs
index 9ce3161..fa9e159 100644
--- a/lact-gui/src/app/root_stack/oc_page/power_cap_frame.rs
+++ b/lact-gui/src/app/root_stack/oc_page/power_cap_frame.rs
@@ -12,20 +12,20 @@ impl PowerCapFrame {
pub fn new() -> Self {
let container = Frame::new(None);
- container.set_shadow_type(ShadowType::None);
+ // container.set_shadow_type(ShadowType::None);
container.set_label_widget(Some(&{
let label = Label::new(None);
label.set_markup("Power Usage Limit");
label
}));
- container.set_label_align(0.2, 0.0);
+ container.set_label_align(0.2);
let root_box = Box::new(Orientation::Horizontal, 0);
let label = Label::new(None);
- root_box.pack_start(&label, false, true, 5);
+ root_box.append(&label);
let adjustment = Adjustment::new(0.0, 0.0, 0.0, 1.0, 10.0, 0.0);
{
@@ -39,9 +39,9 @@ impl PowerCapFrame {
scale.set_draw_value(false);
- root_box.pack_start(&scale, true, true, 5);
+ root_box.append(&scale);
- container.add(&root_box);
+ container.set_child(Some(&root_box));
Self {
container,
diff --git a/lact-gui/src/app/root_stack/oc_page/stats_grid.rs b/lact-gui/src/app/root_stack/oc_page/stats_grid.rs
index 59145da..8813005 100644
--- a/lact-gui/src/app/root_stack/oc_page/stats_grid.rs
+++ b/lact-gui/src/app/root_stack/oc_page/stats_grid.rs
@@ -37,7 +37,7 @@ impl StatsGrid {
vram_usage_label.set_text("0/0 MiB");
- vram_usage_overlay.add(&vram_usage_bar);
+ vram_usage_overlay.set_child(Some(&vram_usage_bar));
vram_usage_overlay.add_overlay(&vram_usage_label);
container.attach(&vram_usage_overlay, 1, 0, 2, 1);
@@ -47,11 +47,11 @@ impl StatsGrid {
{
let gpu_clock_box = Box::new(Orientation::Horizontal, 5);
- gpu_clock_box.pack_start(&Label::new(Some("GPU Clock:")), false, false, 2);
+ gpu_clock_box.append(&Label::new(Some("GPU Clock:")));
gpu_clock_label.set_markup("0MHz");
- gpu_clock_box.pack_start(&gpu_clock_label, false, false, 2);
+ gpu_clock_box.append(&gpu_clock_label);
gpu_clock_box.set_halign(Align::Center);
@@ -62,11 +62,11 @@ impl StatsGrid {
{
let vram_clock_box = Box::new(Orientation::Horizontal, 5);
- vram_clock_box.pack_start(&Label::new(Some("VRAM Clock:")), false, false, 2);
+ vram_clock_box.append(&Label::new(Some("VRAM Clock:")));
vram_clock_label.set_markup("0MHz");
- vram_clock_box.pack_start(&vram_clock_label, false, false, 2);
+ vram_clock_box.append(&vram_clock_label);
vram_clock_box.set_halign(Align::Center);
@@ -76,11 +76,11 @@ impl StatsGrid {
{
let gpu_voltage_box = Box::new(Orientation::Horizontal, 5);
- gpu_voltage_box.pack_start(&Label::new(Some("GPU Voltage:")), false, false, 2);
+ gpu_voltage_box.append(&Label::new(Some("GPU Voltage:")));
gpu_voltage_label.set_markup("0.000V");
- gpu_voltage_box.pack_start(&gpu_voltage_label, false, false, 2);
+ gpu_voltage_box.append(&gpu_voltage_label);
gpu_voltage_box.set_halign(Align::Center);
@@ -91,11 +91,11 @@ impl StatsGrid {
{
let power_usage_box = Box::new(Orientation::Horizontal, 5);
- power_usage_box.pack_start(&Label::new(Some("Power Usage:")), false, false, 2);
+ power_usage_box.append(&Label::new(Some("Power Usage:")));
power_usage_label.set_markup("00/000W");
- power_usage_box.pack_start(&power_usage_label, false, false, 2);
+ power_usage_box.append(&power_usage_label);
power_usage_box.set_halign(Align::Center);
@@ -106,11 +106,11 @@ impl StatsGrid {
{
let gpu_temperature_box = Box::new(Orientation::Horizontal, 5);
- gpu_temperature_box.pack_start(&Label::new(Some("GPU Temperature:")), false, false, 2);
+ gpu_temperature_box.append(&Label::new(Some("GPU Temperature:")));
// gpu_temperature_label.set_markup("0°C");
- gpu_temperature_box.pack_start(&gpu_temperature_label, false, false, 2);
+ gpu_temperature_box.append(&gpu_temperature_label);
gpu_temperature_box.set_halign(Align::Center);
@@ -121,9 +121,9 @@ impl StatsGrid {
{
let gpu_usage_box = Box::new(Orientation::Horizontal, 5);
- gpu_usage_box.pack_start(&Label::new(Some("GPU Usage:")), false, false, 2);
+ gpu_usage_box.append(&Label::new(Some("GPU Usage:")));
- gpu_usage_box.pack_start(&gpu_usage_label, false, false, 2);
+ gpu_usage_box.append(&gpu_usage_label);
gpu_usage_box.set_halign(Align::Center);
diff --git a/lact-gui/src/app/root_stack/oc_page/warning_frame.rs b/lact-gui/src/app/root_stack/oc_page/warning_frame.rs
index 70a3456..b63da5d 100644
--- a/lact-gui/src/app/root_stack/oc_page/warning_frame.rs
+++ b/lact-gui/src/app/root_stack/oc_page/warning_frame.rs
@@ -10,15 +10,15 @@ impl WarningFrame {
pub fn new() -> Self {
let container = Frame::new(Some("Overclocking information"));
- container.set_label_align(0.3, 0.5);
+ container.set_label_align(0.3);
let warning_label = Label::new(None);
- warning_label.set_line_wrap(true);
+ warning_label.set_wrap(true);
warning_label.set_markup("Overclocking support is not enabled! To enable overclocking support, you need to add amdgpu.ppfeaturemask=0xffffffff to your kernel boot options. Look for the documentation of your distro.");
warning_label.set_selectable(true);
- container.add(&warning_label);
+ container.set_child(Some(&warning_label));
Self { container }
}
diff --git a/lact-gui/src/app/root_stack/thermals_page/mod.rs b/lact-gui/src/app/root_stack/thermals_page/mod.rs
index 4e11311..a452214 100644
--- a/lact-gui/src/app/root_stack/thermals_page/mod.rs
+++ b/lact-gui/src/app/root_stack/thermals_page/mod.rs
@@ -5,8 +5,6 @@ use gtk::prelude::*;
use gtk::*;
use lact_client::schema::DeviceStats;
use std::collections::BTreeMap;
-use tracing::trace;
-
// use fan_curve_frame::FanCurveFrame;
pub struct ThermalsSettings {
@@ -92,7 +90,7 @@ impl ThermalsPage {
grid.attach(&fan_control_enabled_switch, 2, 2, 1, 1);
- container.pack_start(&grid, false, false, 5);
+ container.prepend(&grid);
/*let fan_curve_frame = FanCurveFrame::new();
@@ -178,8 +176,9 @@ impl ThermalsPage {
pub fn connect_settings_changed(&self, f: F) {
self.fan_control_enabled_switch
- .connect_changed_active(clone!(@strong f => move |_| {
+ .connect_state_set(clone!(@strong f => move |_, _| {
f();
+ Inhibit(false)
}));
/*self.fan_curve_frame.connect_adjusted(move || {
diff --git a/lact-gui/src/main.rs b/lact-gui/src/main.rs
index de86a58..fbe5e59 100644
--- a/lact-gui/src/main.rs
+++ b/lact-gui/src/main.rs
@@ -20,7 +20,5 @@ fn main() -> anyhow::Result<()> {
let app = App::new(connection);
- app.run()?;
-
- Ok(())
+ app.run()
}