mirror of
https://github.com/PancakeTAS/lsfg-vk.git
synced 2025-10-30 07:01:10 +00:00
ui: more templates and initial handler
This commit is contained in:
parent
bb13eb4656
commit
3dba2a7a3d
18 changed files with 339 additions and 87 deletions
|
|
@ -11,7 +11,7 @@
|
||||||
<property name="margin-top">8</property>
|
<property name="margin-top">8</property>
|
||||||
<property name="margin-bottom">8</property>
|
<property name="margin-bottom">8</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label">
|
<object class="GtkLabel">
|
||||||
<property name="label"
|
<property name="label"
|
||||||
bind-source="LSPrefDropdown" bind-property="opt-name" bind-flags="sync-create"/>
|
bind-source="LSPrefDropdown" bind-property="opt-name" bind-flags="sync-create"/>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkDropDown">
|
<object class="GtkDropDown" id="dropdown">
|
||||||
<property name="selected"
|
<property name="selected"
|
||||||
bind-source="LSPrefDropdown" bind-property="default-selection" bind-flags="sync-create"/>
|
bind-source="LSPrefDropdown" bind-property="default-selection" bind-flags="sync-create"/>
|
||||||
<property name="model"
|
<property name="model"
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<property name="margin-top">8</property>
|
<property name="margin-top">8</property>
|
||||||
<property name="margin-bottom">8</property>
|
<property name="margin-bottom">8</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label">
|
<object class="GtkLabel">
|
||||||
<property name="label"
|
<property name="label"
|
||||||
bind-source="LSPrefEntry" bind-property="opt-name" bind-flags="sync-create"/>
|
bind-source="LSPrefEntry" bind-property="opt-name" bind-flags="sync-create"/>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry">
|
<object class="GtkEntry" id="entry">
|
||||||
<property name="text"
|
<property name="text"
|
||||||
bind-source="LSPrefEntry" bind-property="default-text" bind-flags="sync-create"/>
|
bind-source="LSPrefEntry" bind-property="default-text" bind-flags="sync-create"/>
|
||||||
<property name="placeholder-text"
|
<property name="placeholder-text"
|
||||||
|
|
|
||||||
41
ui/rsc/pref/number.ui
Normal file
41
ui/rsc/pref/number.ui
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<template class="LSPrefNumber" parent="AdwPreferencesRow">
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="spacing">16</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="margin-start">12</property>
|
||||||
|
<property name="margin-end">12</property>
|
||||||
|
<property name="margin-top">8</property>
|
||||||
|
<property name="margin-bottom">8</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label"
|
||||||
|
bind-source="LSPrefNumber" bind-property="opt-name" bind-flags="sync-create"/>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSpinButton" id="number">
|
||||||
|
<property name="digits">0</property>
|
||||||
|
<property name="climb-rate">1</property>
|
||||||
|
<property name="numeric">true</property>
|
||||||
|
<property name="value">2</property>
|
||||||
|
<property name="adjustment">
|
||||||
|
<object class="GtkAdjustment">
|
||||||
|
<property name="lower">1</property>
|
||||||
|
<property name="upper">20</property>
|
||||||
|
<property name="step-increment">1</property>
|
||||||
|
<property name="page-increment">1</property>
|
||||||
|
<property name="value">2</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</template>
|
||||||
|
</interface>
|
||||||
41
ui/rsc/pref/slider.ui
Normal file
41
ui/rsc/pref/slider.ui
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<template class="LSPrefSlider" parent="AdwPreferencesRow">
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="spacing">16</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="margin-start">12</property>
|
||||||
|
<property name="margin-end">12</property>
|
||||||
|
<property name="margin-top">8</property>
|
||||||
|
<property name="margin-bottom">8</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="label"
|
||||||
|
bind-source="LSPrefSlider" bind-property="opt-name" bind-flags="sync-create"/>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScale" id="slider">
|
||||||
|
<property name="digits">0</property>
|
||||||
|
<property name="draw-value">true</property>
|
||||||
|
<property name="value-pos">right</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="adjustment">
|
||||||
|
<object class="GtkAdjustment">
|
||||||
|
<property name="lower">25</property>
|
||||||
|
<property name="upper">100</property>
|
||||||
|
<property name="step-increment">5</property>
|
||||||
|
<property name="page-increment">10</property>
|
||||||
|
<property name="value">100</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</template>
|
||||||
|
</interface>
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<property name="margin-top">8</property>
|
<property name="margin-top">8</property>
|
||||||
<property name="margin-bottom">8</property>
|
<property name="margin-bottom">8</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label">
|
<object class="GtkLabel">
|
||||||
<property name="label"
|
<property name="label"
|
||||||
bind-source="LSPrefSwitch" bind-property="opt-name" bind-flags="sync-create"/>
|
bind-source="LSPrefSwitch" bind-property="opt-name" bind-flags="sync-create"/>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSwitch">
|
<object class="GtkSwitch" id="switch">
|
||||||
<property name="active"
|
<property name="active"
|
||||||
bind-source="LSPrefSwitch" bind-property="default-state" bind-flags="sync-create"/>
|
bind-source="LSPrefSwitch" bind-property="default-state" bind-flags="sync-create"/>
|
||||||
<property name="css-classes">compact</property>
|
<property name="css-classes">compact</property>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@
|
||||||
<gresource prefix="/gay/pancake/lsfg-vk/">
|
<gresource prefix="/gay/pancake/lsfg-vk/">
|
||||||
<file compressed="true" preprocess="xml-stripblanks">window.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">window.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">pref/dropdown.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">pref/dropdown.ui</file>
|
||||||
|
<file compressed="true" preprocess="xml-stripblanks">pref/number.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">pref/entry.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">pref/entry.ui</file>
|
||||||
|
<file compressed="true" preprocess="xml-stripblanks">pref/slider.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">pref/switch.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">pref/switch.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
|
|
||||||
<template class="LSApplicationWindow" parent="AdwApplicationWindow">
|
<template class="LSApplicationWindow" parent="AdwApplicationWindow">
|
||||||
<property name="title">lsfg-vk Configuration Window</property>
|
<property name="title">lsfg-vk Configuration Window</property>
|
||||||
<property name="default-width">800</property>
|
<property name="default-width">800</property>
|
||||||
|
|
@ -45,9 +44,9 @@
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
<!-- Split View: Main Content -->
|
<!-- Split View: Main Content -->
|
||||||
<property name="content">
|
<property name="content">
|
||||||
|
|
@ -82,32 +81,20 @@
|
||||||
<object class="AdwPreferencesGroup">
|
<object class="AdwPreferencesGroup">
|
||||||
<property name="title">Frame Generation</property>
|
<property name="title">Frame Generation</property>
|
||||||
<!-- Frame Generation: Multiplier -->
|
<!-- Frame Generation: Multiplier -->
|
||||||
<child> <!-- FIXME: number -->
|
<child>
|
||||||
<object class="LSPrefDropdown">
|
<object class="LSPrefNumber" id="pref_multiplier">
|
||||||
<property name="opt-name">Multiplier</property>
|
<property name="opt-name">Multiplier</property>
|
||||||
<property name="default-selection">0</property>
|
|
||||||
<property name="options">
|
|
||||||
<object class="GtkStringList">
|
|
||||||
<items>
|
|
||||||
<item>2x</item>
|
|
||||||
<item>3x</item>
|
|
||||||
<item>4x</item>
|
|
||||||
</items>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<!-- Frame Generation: Flow Scale -->
|
<!-- Frame Generation: Flow Scale -->
|
||||||
<child> <!-- FIXME: slider -->
|
<child>
|
||||||
<object class="LSPrefEntry">
|
<object class="LSPrefSlider" id="pref_flow_scale">
|
||||||
<property name="opt-name">Flow Scale</property>
|
<property name="opt-name">Flow Scale</property>
|
||||||
<property name="tooltip-text">Enter a number between 0.25 and 1.00</property>
|
|
||||||
<property name="default-text">0.7</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<!-- Frame Generation: Performance Mode -->
|
<!-- Frame Generation: Performance Mode -->
|
||||||
<child>
|
<child>
|
||||||
<object class="LSPrefSwitch">
|
<object class="LSPrefSwitch" id="pref_performance_mode">
|
||||||
<property name="opt-name">Performance Mode</property>
|
<property name="opt-name">Performance Mode</property>
|
||||||
<property name="default-state">false</property>
|
<property name="default-state">false</property>
|
||||||
</object>
|
</object>
|
||||||
|
|
@ -120,14 +107,14 @@
|
||||||
<property name="title">Frame Generation</property>
|
<property name="title">Frame Generation</property>
|
||||||
<!-- Misc: HDR Mode -->
|
<!-- Misc: HDR Mode -->
|
||||||
<child>
|
<child>
|
||||||
<object class="LSPrefSwitch">
|
<object class="LSPrefSwitch" id="pref_hdr_mode">
|
||||||
<property name="opt-name">HDR Mode</property>
|
<property name="opt-name">HDR Mode</property>
|
||||||
<property name="default-state">false</property>
|
<property name="default-state">false</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<!-- Misc: Experimental Present Mode -->
|
<!-- Misc: Experimental Present Mode -->
|
||||||
<child>
|
<child>
|
||||||
<object class="LSPrefDropdown">
|
<object class="LSPrefDropdown" id="pref_experimental_present_mode">
|
||||||
<property name="opt-name">Experimental Present Mode</property>
|
<property name="opt-name">Experimental Present Mode</property>
|
||||||
<property name="default-selection">0</property>
|
<property name="default-selection">0</property>
|
||||||
<property name="options">
|
<property name="options">
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,9 @@
|
||||||
use adw;
|
mod ui;
|
||||||
use gtk::{gio, prelude::*};
|
|
||||||
|
|
||||||
pub mod wrapper {
|
|
||||||
pub mod ui;
|
|
||||||
pub mod pref;
|
|
||||||
}
|
|
||||||
|
|
||||||
const APP_ID: &str = "gay.pancake.lsfg-vk.ConfigurationUi";
|
const APP_ID: &str = "gay.pancake.lsfg-vk.ConfigurationUi";
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
gio::resources_register_include!("ui.gresource")
|
let app = ui::App::new(APP_ID)
|
||||||
.expect("Failed to register resources");
|
.expect("Failed to create application");
|
||||||
|
app.run()
|
||||||
let app = adw::Application::builder()
|
|
||||||
.application_id(APP_ID)
|
|
||||||
.build();
|
|
||||||
app.connect_activate(build_ui);
|
|
||||||
app.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn build_ui(app: &adw::Application) {
|
|
||||||
let window = wrapper::ui::Window::new(app);
|
|
||||||
window.set_application(Some(app));
|
|
||||||
window.present();
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
36
ui/src/ui.rs
Normal file
36
ui/src/ui.rs
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use adw;
|
||||||
|
use gtk::{gio, glib, prelude::*};
|
||||||
|
|
||||||
|
pub mod ui;
|
||||||
|
pub mod pref;
|
||||||
|
|
||||||
|
pub struct App {
|
||||||
|
app: Arc<adw::Application>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl App {
|
||||||
|
pub fn new(appid: &str) -> Result<Self, glib::Error> {
|
||||||
|
gio::resources_register_include!("ui.gresource")?;
|
||||||
|
|
||||||
|
let app = adw::Application::builder()
|
||||||
|
.application_id(appid)
|
||||||
|
.build();
|
||||||
|
app.connect_activate(Self::build_ui);
|
||||||
|
|
||||||
|
Ok(App {
|
||||||
|
app: Arc::new(app)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_ui(app: &adw::Application) {
|
||||||
|
let window = ui::Window::new(app);
|
||||||
|
window.set_application(Some(app));
|
||||||
|
window.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run(self){
|
||||||
|
self.app.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,8 @@ use adw;
|
||||||
|
|
||||||
pub mod dropdown;
|
pub mod dropdown;
|
||||||
pub mod entry;
|
pub mod entry;
|
||||||
|
pub mod number;
|
||||||
|
pub mod slider;
|
||||||
pub mod switch;
|
pub mod switch;
|
||||||
|
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
|
|
@ -22,6 +24,22 @@ glib::wrapper! {
|
||||||
gtk::Accessible, gtk::Actionable, gtk::Buildable, gtk::ConstraintTarget;
|
gtk::Accessible, gtk::Actionable, gtk::Buildable, gtk::ConstraintTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glib::wrapper! {
|
||||||
|
pub struct PrefNumber(ObjectSubclass<number::PrefNumber>)
|
||||||
|
@extends
|
||||||
|
adw::PreferencesRow, gtk::ListBoxRow, gtk::Widget,
|
||||||
|
@implements
|
||||||
|
gtk::Accessible, gtk::Actionable, gtk::Buildable, gtk::ConstraintTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
glib::wrapper! {
|
||||||
|
pub struct PrefSlider(ObjectSubclass<slider::PrefSlider>)
|
||||||
|
@extends
|
||||||
|
adw::PreferencesRow, gtk::ListBoxRow, gtk::Widget,
|
||||||
|
@implements
|
||||||
|
gtk::Accessible, gtk::Actionable, gtk::Buildable, gtk::ConstraintTarget;
|
||||||
|
}
|
||||||
|
|
||||||
glib::wrapper! {
|
glib::wrapper! {
|
||||||
pub struct PrefEntry(ObjectSubclass<entry::PrefEntry>)
|
pub struct PrefEntry(ObjectSubclass<entry::PrefEntry>)
|
||||||
@extends
|
@extends
|
||||||
|
|
@ -42,6 +60,18 @@ impl PrefSwitch {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl PrefNumber {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
glib::Object::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PrefSlider {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
glib::Object::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl PrefEntry {
|
impl PrefEntry {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
glib::Object::new()
|
glib::Object::new()
|
||||||
|
|
@ -15,6 +15,9 @@ pub struct PrefDropdown {
|
||||||
default_selection: RefCell<u32>,
|
default_selection: RefCell<u32>,
|
||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
options: RefCell<gtk::StringList>,
|
options: RefCell<gtk::StringList>,
|
||||||
|
|
||||||
|
#[template_child]
|
||||||
|
pub dropdown: TemplateChild<gtk::DropDown>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[glib::object_subclass]
|
#[glib::object_subclass]
|
||||||
|
|
@ -14,7 +14,10 @@ pub struct PrefEntry {
|
||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
default_text: RefCell<String>,
|
default_text: RefCell<String>,
|
||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
tooltip_text: RefCell<String>
|
tooltip_text: RefCell<String>,
|
||||||
|
|
||||||
|
#[template_child]
|
||||||
|
pub entry: TemplateChild<gtk::Entry>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[glib::object_subclass]
|
#[glib::object_subclass]
|
||||||
43
ui/src/ui/pref/number.rs
Normal file
43
ui/src/ui/pref/number.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
use std::cell::RefCell;
|
||||||
|
|
||||||
|
use gtk::glib;
|
||||||
|
use gtk::subclass::prelude::*;
|
||||||
|
use adw::subclass::prelude::*;
|
||||||
|
use adw::prelude::*;
|
||||||
|
|
||||||
|
#[derive(gtk::CompositeTemplate, glib::Properties, Default)]
|
||||||
|
#[properties(wrapper_type = super::PrefNumber)]
|
||||||
|
#[template(resource = "/gay/pancake/lsfg-vk/pref/number.ui")]
|
||||||
|
pub struct PrefNumber {
|
||||||
|
#[property(get, set)]
|
||||||
|
opt_name: RefCell<String>,
|
||||||
|
|
||||||
|
#[template_child]
|
||||||
|
pub number: TemplateChild<gtk::SpinButton>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[glib::object_subclass]
|
||||||
|
impl ObjectSubclass for PrefNumber {
|
||||||
|
const NAME: &'static str = "LSPrefNumber";
|
||||||
|
type Type = super::PrefNumber;
|
||||||
|
type ParentType = adw::PreferencesRow;
|
||||||
|
|
||||||
|
fn class_init(klass: &mut Self::Class) {
|
||||||
|
klass.bind_template();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||||
|
obj.init_template();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[glib::derived_properties]
|
||||||
|
impl ObjectImpl for PrefNumber {
|
||||||
|
fn constructed(&self) {
|
||||||
|
self.parent_constructed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WidgetImpl for PrefNumber {}
|
||||||
|
impl ListBoxRowImpl for PrefNumber {}
|
||||||
|
impl PreferencesRowImpl for PrefNumber {}
|
||||||
43
ui/src/ui/pref/slider.rs
Normal file
43
ui/src/ui/pref/slider.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
use std::cell::RefCell;
|
||||||
|
|
||||||
|
use gtk::glib;
|
||||||
|
use gtk::subclass::prelude::*;
|
||||||
|
use adw::subclass::prelude::*;
|
||||||
|
use adw::prelude::*;
|
||||||
|
|
||||||
|
#[derive(gtk::CompositeTemplate, glib::Properties, Default)]
|
||||||
|
#[properties(wrapper_type = super::PrefSlider)]
|
||||||
|
#[template(resource = "/gay/pancake/lsfg-vk/pref/slider.ui")]
|
||||||
|
pub struct PrefSlider {
|
||||||
|
#[property(get, set)]
|
||||||
|
opt_name: RefCell<String>,
|
||||||
|
|
||||||
|
#[template_child]
|
||||||
|
pub slider: TemplateChild<gtk::Scale>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[glib::object_subclass]
|
||||||
|
impl ObjectSubclass for PrefSlider {
|
||||||
|
const NAME: &'static str = "LSPrefSlider";
|
||||||
|
type Type = super::PrefSlider;
|
||||||
|
type ParentType = adw::PreferencesRow;
|
||||||
|
|
||||||
|
fn class_init(klass: &mut Self::Class) {
|
||||||
|
klass.bind_template();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||||
|
obj.init_template();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[glib::derived_properties]
|
||||||
|
impl ObjectImpl for PrefSlider {
|
||||||
|
fn constructed(&self) {
|
||||||
|
self.parent_constructed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WidgetImpl for PrefSlider {}
|
||||||
|
impl ListBoxRowImpl for PrefSlider {}
|
||||||
|
impl PreferencesRowImpl for PrefSlider {}
|
||||||
|
|
@ -13,6 +13,9 @@ pub struct PrefSwitch {
|
||||||
opt_name: RefCell<String>,
|
opt_name: RefCell<String>,
|
||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
default_state: RefCell<bool>,
|
default_state: RefCell<bool>,
|
||||||
|
|
||||||
|
#[template_child]
|
||||||
|
pub switch: TemplateChild<gtk::Switch>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[glib::object_subclass]
|
#[glib::object_subclass]
|
||||||
73
ui/src/ui/ui/window.rs
Normal file
73
ui/src/ui/ui/window.rs
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
use gtk::{prelude::RangeExt, subclass::prelude::*};
|
||||||
|
use adw::subclass::prelude::*;
|
||||||
|
use crate::ui::pref::*;
|
||||||
|
use gtk::{glib, CompositeTemplate};
|
||||||
|
|
||||||
|
#[derive(CompositeTemplate, Default)]
|
||||||
|
#[template(resource = "/gay/pancake/lsfg-vk/window.ui")]
|
||||||
|
pub struct Window {
|
||||||
|
// main config elements
|
||||||
|
#[template_child]
|
||||||
|
pref_multiplier: TemplateChild<PrefNumber>,
|
||||||
|
#[template_child]
|
||||||
|
pref_flow_scale: TemplateChild<PrefSlider>,
|
||||||
|
#[template_child]
|
||||||
|
pref_performance_mode: TemplateChild<PrefSwitch>,
|
||||||
|
#[template_child]
|
||||||
|
pref_hdr_mode: TemplateChild<PrefSwitch>,
|
||||||
|
#[template_child]
|
||||||
|
pref_experimental_present_mode: TemplateChild<PrefDropdown>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[glib::object_subclass]
|
||||||
|
impl ObjectSubclass for Window {
|
||||||
|
const NAME: &'static str = "LSApplicationWindow";
|
||||||
|
type Type = super::Window;
|
||||||
|
type ParentType = adw::ApplicationWindow;
|
||||||
|
|
||||||
|
fn class_init(klass: &mut Self::Class) {
|
||||||
|
klass.bind_template();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||||
|
obj.init_template();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ObjectImpl for Window {
|
||||||
|
fn constructed(&self) {
|
||||||
|
self.parent_constructed();
|
||||||
|
|
||||||
|
self.pref_multiplier.get()
|
||||||
|
.imp().number.get().connect_value_changed(|dropdown| {
|
||||||
|
let selected = dropdown.value();
|
||||||
|
println!("Multiplier changed: {}", selected);
|
||||||
|
});
|
||||||
|
self.pref_flow_scale.get()
|
||||||
|
.imp().slider.get().connect_value_changed(|slider| {
|
||||||
|
let value = slider.value();
|
||||||
|
println!("Flow scale changed: {}", value);
|
||||||
|
});
|
||||||
|
self.pref_performance_mode.get()
|
||||||
|
.imp().switch.get().connect_state_notify(|switch| {
|
||||||
|
let state = switch.state();
|
||||||
|
println!("Performance mode changed: {}", state);
|
||||||
|
});
|
||||||
|
self.pref_hdr_mode.get()
|
||||||
|
.imp().switch.get().connect_state_notify(|switch| {
|
||||||
|
let state = switch.state();
|
||||||
|
println!("HDR mode changed: {}", state);
|
||||||
|
});
|
||||||
|
self.pref_experimental_present_mode.get()
|
||||||
|
.imp().dropdown.get().connect_selected_notify(|dropdown| {
|
||||||
|
let selected = dropdown.selected();
|
||||||
|
println!("Experimental present mode changed: {}", selected);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WidgetImpl for Window {}
|
||||||
|
impl WindowImpl for Window {}
|
||||||
|
impl ApplicationWindowImpl for Window {}
|
||||||
|
impl AdwWindowImpl for Window {}
|
||||||
|
impl AdwApplicationWindowImpl for Window {}
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
use gtk::subclass::prelude::*;
|
|
||||||
use adw::subclass::prelude::*;
|
|
||||||
use gtk::{glib, CompositeTemplate};
|
|
||||||
|
|
||||||
#[derive(CompositeTemplate, Default)]
|
|
||||||
#[template(resource = "/gay/pancake/lsfg-vk/window.ui")]
|
|
||||||
pub struct Window {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#[glib::object_subclass]
|
|
||||||
impl ObjectSubclass for Window {
|
|
||||||
const NAME: &'static str = "LSApplicationWindow";
|
|
||||||
type Type = super::Window;
|
|
||||||
type ParentType = adw::ApplicationWindow;
|
|
||||||
|
|
||||||
fn class_init(klass: &mut Self::Class) {
|
|
||||||
klass.bind_template();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
|
||||||
obj.init_template();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ObjectImpl for Window {
|
|
||||||
fn constructed(&self) {
|
|
||||||
self.parent_constructed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl WidgetImpl for Window {}
|
|
||||||
impl WindowImpl for Window {}
|
|
||||||
impl ApplicationWindowImpl for Window {}
|
|
||||||
impl AdwWindowImpl for Window {}
|
|
||||||
impl AdwApplicationWindowImpl for Window {}
|
|
||||||
Loading…
Add table
Reference in a new issue