From e9fd31fb6a7591f4997cacb5e0fde4cab45599d4 Mon Sep 17 00:00:00 2001 From: Ilya Zlobintsev Date: Fri, 13 Aug 2021 12:20:41 +0300 Subject: [PATCH] Migrate to newer GTK --- gui/Cargo.toml | 8 ++++---- gui/src/app.rs | 5 +++++ gui/src/app/apply_revealer.rs | 1 + gui/src/app/header.rs | 6 +++--- gui/src/app/root_stack.rs | 1 + gui/src/app/root_stack/info_page.rs | 1 + gui/src/app/root_stack/info_page/vulkan_info.rs | 1 + gui/src/app/root_stack/oc_page.rs | 1 + gui/src/app/root_stack/oc_page/clocks_frame.rs | 7 ++++--- gui/src/app/root_stack/oc_page/power_cap_frame.rs | 9 +++------ gui/src/app/root_stack/oc_page/power_profile_frame.rs | 6 +++--- gui/src/app/root_stack/oc_page/stats_grid.rs | 8 +++++--- gui/src/app/root_stack/oc_page/warning_frame.rs | 1 + gui/src/app/root_stack/software_page.rs | 1 + gui/src/app/root_stack/thermals_page.rs | 4 ++-- .../app/root_stack/thermals_page/fan_curve_frame.rs | 11 ++++++----- gui/src/main.rs | 1 + 17 files changed, 43 insertions(+), 29 deletions(-) diff --git a/gui/Cargo.toml b/gui/Cargo.toml index 5ed04ae..5116b30 100644 --- a/gui/Cargo.toml +++ b/gui/Cargo.toml @@ -9,9 +9,9 @@ edition = "2018" [dependencies] daemon = { path = "../daemon" } -gtk = { version = "0.9", features = ["v3_22"] } -pango = "0.9" -glib = "0.10" +gtk = { version = "0.14", features = ["v3_22"] } +pango = "0.14" +glib = "0.14" log = "0.4" -env_logger = "0.8" \ No newline at end of file +env_logger = "0.9" \ No newline at end of file diff --git a/gui/src/app.rs b/gui/src/app.rs index 1b7fc00..68091f1 100644 --- a/gui/src/app.rs +++ b/gui/src/app.rs @@ -16,6 +16,7 @@ use apply_revealer::ApplyRevealer; use daemon::daemon_connection::DaemonConnection; use daemon::gpu_controller::GpuStats; use daemon::DaemonError; +use gtk::prelude::*; use gtk::*; use header::Header; @@ -247,6 +248,10 @@ impl App { } fn start_stats_update_loop(&self, current_gpu_id: Arc) { + let context = glib::MainContext::default(); + + let _guard = context.acquire(); + // The loop that gets stats let (sender, receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); { diff --git a/gui/src/app/apply_revealer.rs b/gui/src/app/apply_revealer.rs index d31f10f..b940a69 100644 --- a/gui/src/app/apply_revealer.rs +++ b/gui/src/app/apply_revealer.rs @@ -1,3 +1,4 @@ +use gtk::prelude::*; use gtk::*; #[derive(Clone)] diff --git a/gui/src/app/header.rs b/gui/src/app/header.rs index 524df81..7a4add6 100644 --- a/gui/src/app/header.rs +++ b/gui/src/app/header.rs @@ -1,4 +1,4 @@ -use gtk::prelude::{ComboBoxExtManual, ObjectExt}; +use gtk::prelude::*; use gtk::*; use pango::EllipsizeMode; use std::collections::HashMap; @@ -42,7 +42,7 @@ impl Header { } //limits the length of gpu names in combobox - for cell in self.gpu_selector.get_cells() { + for cell in self.gpu_selector.cells() { cell.set_property("width-chars", &10).unwrap(); cell.set_property("ellipsize", &EllipsizeMode::End).unwrap(); } @@ -52,7 +52,7 @@ impl Header { pub fn connect_gpu_selection_changed(&self, f: F) { self.gpu_selector.connect_changed(move |gpu_selector| { - let selected_id = gpu_selector.get_active_id().unwrap(); + let selected_id = gpu_selector.active_id().unwrap(); f(selected_id.parse().unwrap()); }); } diff --git a/gui/src/app/root_stack.rs b/gui/src/app/root_stack.rs index 89ab3e3..60bd65f 100644 --- a/gui/src/app/root_stack.rs +++ b/gui/src/app/root_stack.rs @@ -3,6 +3,7 @@ mod oc_page; mod software_page; mod thermals_page; +use gtk::prelude::*; use gtk::*; use info_page::InformationPage; diff --git a/gui/src/app/root_stack/info_page.rs b/gui/src/app/root_stack/info_page.rs index ad5a08c..62c98d4 100644 --- a/gui/src/app/root_stack/info_page.rs +++ b/gui/src/app/root_stack/info_page.rs @@ -1,6 +1,7 @@ mod vulkan_info; use daemon::gpu_controller::GpuInfo; +use gtk::prelude::*; use gtk::*; use vulkan_info::VulkanInfoFrame; diff --git a/gui/src/app/root_stack/info_page/vulkan_info.rs b/gui/src/app/root_stack/info_page/vulkan_info.rs index 0cb54de..5f6f4cc 100644 --- a/gui/src/app/root_stack/info_page/vulkan_info.rs +++ b/gui/src/app/root_stack/info_page/vulkan_info.rs @@ -1,4 +1,5 @@ use daemon::gpu_controller::VulkanInfo; +use gtk::prelude::*; use gtk::*; #[derive(Clone)] diff --git a/gui/src/app/root_stack/oc_page.rs b/gui/src/app/root_stack/oc_page.rs index 43938c4..1ce6be9 100644 --- a/gui/src/app/root_stack/oc_page.rs +++ b/gui/src/app/root_stack/oc_page.rs @@ -6,6 +6,7 @@ mod warning_frame; use clocks_frame::ClocksSettings; use daemon::gpu_controller::{GpuInfo, GpuStats, PowerProfile}; +use gtk::prelude::*; use gtk::*; use clocks_frame::ClocksFrame; diff --git a/gui/src/app/root_stack/oc_page/clocks_frame.rs b/gui/src/app/root_stack/oc_page/clocks_frame.rs index 31849c4..6605b12 100644 --- a/gui/src/app/root_stack/oc_page/clocks_frame.rs +++ b/gui/src/app/root_stack/oc_page/clocks_frame.rs @@ -1,4 +1,5 @@ use daemon::gpu_controller::ClocksTable; +use gtk::prelude::*; use gtk::*; pub struct ClocksSettings { @@ -178,11 +179,11 @@ impl ClocksFrame { } pub fn get_settings(&self) -> ClocksSettings { - let gpu_clock = self.gpu_clock_adjustment.get_value() as i64; + let gpu_clock = self.gpu_clock_adjustment.value() as i64; - let vram_clock = self.vram_clock_adjustment.get_value() as i64; + let vram_clock = self.vram_clock_adjustment.value() as i64; - let gpu_voltage = (self.gpu_voltage_adjustment.get_value() * 1000.0) as i64; + let gpu_voltage = (self.gpu_voltage_adjustment.value() * 1000.0) as i64; ClocksSettings { gpu_clock, diff --git a/gui/src/app/root_stack/oc_page/power_cap_frame.rs b/gui/src/app/root_stack/oc_page/power_cap_frame.rs index f2fb78d..683eecb 100644 --- a/gui/src/app/root_stack/oc_page/power_cap_frame.rs +++ b/gui/src/app/root_stack/oc_page/power_cap_frame.rs @@ -1,3 +1,4 @@ +use gtk::prelude::*; use gtk::*; #[derive(Clone)] @@ -30,11 +31,7 @@ impl PowerCapFrame { { let label = label.clone(); adjustment.connect_value_changed(move |adj| { - label.set_markup(&format!( - "{}/{} W", - adj.get_value().round(), - adj.get_upper() - )); + label.set_markup(&format!("{}/{} W", adj.value().round(), adj.upper())); }); } @@ -68,7 +65,7 @@ impl PowerCapFrame { pub fn get_cap(&self) -> Option { // Using match gives a warning that floats shouldn't be used in patterns - let cap = self.adjustment.get_value(); + let cap = self.adjustment.value(); if cap == 0.0 { None } else { diff --git a/gui/src/app/root_stack/oc_page/power_profile_frame.rs b/gui/src/app/root_stack/oc_page/power_profile_frame.rs index 810d4b8..43a054f 100644 --- a/gui/src/app/root_stack/oc_page/power_profile_frame.rs +++ b/gui/src/app/root_stack/oc_page/power_profile_frame.rs @@ -1,6 +1,6 @@ use daemon::gpu_controller::PowerProfile; +use gtk::prelude::*; use gtk::*; -use prelude::ComboBoxExtManual; #[derive(Clone)] pub struct PowerProfileFrame { @@ -38,7 +38,7 @@ impl PowerProfileFrame { { let description_label = description_label.clone(); - combo_box.connect_changed(move |combobox| match combobox.get_active().unwrap() { + combo_box.connect_changed(move |combobox| match combobox.active().unwrap() { 0 => description_label .set_text("Automatically adjust GPU and VRAM clocks. (Default)"), 1 => description_label @@ -72,7 +72,7 @@ impl PowerProfileFrame { } pub fn get_selected_power_profile(&self) -> PowerProfile { - match self.combo_box.get_active().unwrap() { + match self.combo_box.active().unwrap() { 0 => PowerProfile::Auto, 1 => PowerProfile::High, 2 => PowerProfile::Low, diff --git a/gui/src/app/root_stack/oc_page/stats_grid.rs b/gui/src/app/root_stack/oc_page/stats_grid.rs index 913c1c4..8bb6d53 100644 --- a/gui/src/app/root_stack/oc_page/stats_grid.rs +++ b/gui/src/app/root_stack/oc_page/stats_grid.rs @@ -1,4 +1,5 @@ use daemon::gpu_controller::GpuStats; +use gtk::prelude::*; use gtk::*; #[derive(Clone)] @@ -179,11 +180,12 @@ impl StatsGrid { None => match stats.temperatures.get("edge") { Some(temp) => Some(temp.current), None => None, - } + }, }; - + if let Some(temp) = temp { - self.gpu_temperature_label.set_markup(&format!("{}°C", temp)); + self.gpu_temperature_label + .set_markup(&format!("{}°C", temp)); } self.gpu_usage_label diff --git a/gui/src/app/root_stack/oc_page/warning_frame.rs b/gui/src/app/root_stack/oc_page/warning_frame.rs index 65147e2..70a3456 100644 --- a/gui/src/app/root_stack/oc_page/warning_frame.rs +++ b/gui/src/app/root_stack/oc_page/warning_frame.rs @@ -1,3 +1,4 @@ +use gtk::prelude::*; use gtk::*; #[derive(Clone)] diff --git a/gui/src/app/root_stack/software_page.rs b/gui/src/app/root_stack/software_page.rs index 4416687..48e8e7e 100644 --- a/gui/src/app/root_stack/software_page.rs +++ b/gui/src/app/root_stack/software_page.rs @@ -1,3 +1,4 @@ +use gtk::prelude::*; use gtk::*; #[derive(Debug, Clone)] diff --git a/gui/src/app/root_stack/thermals_page.rs b/gui/src/app/root_stack/thermals_page.rs index f56fbd8..d6a69f9 100644 --- a/gui/src/app/root_stack/thermals_page.rs +++ b/gui/src/app/root_stack/thermals_page.rs @@ -101,7 +101,7 @@ impl ThermalsPage { let fan_curve_frame = fan_curve_frame.clone(); fan_control_enabled_switch.connect_changed_active(move |switch| { log::trace!("Fan control switch toggled"); - if switch.get_active() { + if switch.state() { { glib::idle_add(|| { let diag = MessageDialog::new(None::<&Window>, DialogFlags::empty(), MessageType::Warning, ButtonsType::Ok, @@ -192,7 +192,7 @@ impl ThermalsPage { } pub fn get_thermals_settings(&self) -> ThermalsSettings { - let automatic_fan_control_enabled = self.fan_control_enabled_switch.get_active(); + let automatic_fan_control_enabled = self.fan_control_enabled_switch.state(); let curve = self.fan_curve_frame.get_curve(); ThermalsSettings { diff --git a/gui/src/app/root_stack/thermals_page/fan_curve_frame.rs b/gui/src/app/root_stack/thermals_page/fan_curve_frame.rs index 875f04d..60f0fda 100644 --- a/gui/src/app/root_stack/thermals_page/fan_curve_frame.rs +++ b/gui/src/app/root_stack/thermals_page/fan_curve_frame.rs @@ -1,5 +1,6 @@ use std::collections::BTreeMap; +use gtk::prelude::*; use gtk::*; #[derive(Clone)] @@ -178,11 +179,11 @@ impl FanCurveFrame { pub fn get_curve(&self) -> BTreeMap { let mut curve = BTreeMap::new(); - curve.insert(20, self.adjustment_1.get_value()); - curve.insert(40, self.adjustment_2.get_value()); - curve.insert(60, self.adjustment_3.get_value()); - curve.insert(80, self.adjustment_4.get_value()); - curve.insert(100, self.adjustment_5.get_value()); + curve.insert(20, self.adjustment_1.value()); + curve.insert(40, self.adjustment_2.value()); + curve.insert(60, self.adjustment_3.value()); + curve.insert(80, self.adjustment_4.value()); + curve.insert(100, self.adjustment_5.value()); curve } diff --git a/gui/src/main.rs b/gui/src/main.rs index 015643d..359092a 100644 --- a/gui/src/main.rs +++ b/gui/src/main.rs @@ -2,6 +2,7 @@ use std::thread; use app::App; use daemon::{daemon_connection::DaemonConnection, Daemon}; +use gtk::prelude::*; use gtk::*; mod app;