feat: Add basic functionality to all audio usecases

This commit is contained in:
Fabio Lenherr / DashieTM 2023-11-14 21:25:39 +01:00
parent 2f1099267a
commit c1984b5b79
32 changed files with 368 additions and 201 deletions

View file

@ -6,7 +6,7 @@ description = "A wip universal Linux settings application."
[dependencies]
reset_daemon = "0.1.2"
ReSet-Lib = "0.2.7"
ReSet-Lib = "0.2.8"
adw = { version = "0.5.3", package = "libadwaita", features = ["v1_4"] }
dbus = "0.9.7"
gtk = { version = "0.7.3", package = "gtk4", features = ["v4_12"] }

View file

@ -1,5 +1,15 @@
use std::cell::RefCell;
use std::sync::Arc;
use std::time::Duration;
use adw::glib;
use adw::glib::Object;
use adw::prelude::RangeExt;
use dbus::blocking::Connection;
use dbus::Error;
use ReSet_Lib::audio::audio::OutputStream;
use glib::{clone, Propagation};
use glib::subclass::types::ObjectSubclassIsExt;
use super::outputStreamEntryImpl;
@ -10,7 +20,51 @@ glib::wrapper! {
}
impl OutputStreamEntry {
pub fn new() -> Self {
Object::builder().build()
pub fn new(stream: OutputStream) -> Self {
let obj: Self = Object::builder().build();
// TODO use event callback for progress bar -> this is the "im speaking" indicator
// TODO map mute to callback
// TODO map dropdown
{
let imp = obj.imp();
let name = stream.application_name.clone() + ": " + stream.name.as_str();
imp.resetSourceName.set_text(name.as_str());
let volume = stream.volume.first().unwrap_or_else(|| &(0 as u32));
let fraction = (*volume as f64 / 655.36).round();
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
imp.resetVolumeSlider.set_value(*volume as f64);
imp.stream.replace(stream);
imp.resetVolumeSlider.connect_change_value(
clone!(@weak imp => @default-return Propagation::Stop, move |_, _, value| {
let fraction = (value / 655.36).round();
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_outputstream_volume(value, imp.stream.clone());
Propagation::Proceed
}),
);
}
obj
}
}
fn set_outputstream_volume(value: f64, stream: Arc<RefCell<OutputStream>>) -> bool {
let mut stream = stream.borrow_mut().clone();
// let x = stream.volume.iter_mut().map(|_| value as u32);
stream.volume = vec![value as u32; stream.channels as usize];
dbg!(stream.volume.clone());
let conn = Connection::new_session().unwrap();
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(1000),
);
let res: Result<(bool,), Error> =
proxy.method_call("org.xetibo.ReSet", "SetOutputStreamVolume", (stream,));
if res.is_err() {
return false;
}
res.unwrap().0
}

View file

@ -1,4 +1,8 @@
use std::cell::RefCell;
use std::sync::Arc;
use crate::components::input::outputStreamEntry;
use ReSet_Lib::audio::audio::OutputStream;
use gtk::subclass::prelude::*;
use gtk::{glib, Button, CompositeTemplate, Label, ProgressBar, Scale, DropDown};
@ -18,6 +22,7 @@ pub struct OutputStreamEntry {
pub resetVolumePercentage: TemplateChild<Label>,
#[template_child]
pub resetVolumeMeter: TemplateChild<ProgressBar>,
pub stream: Arc<RefCell<OutputStream>>,
}
#[glib::object_subclass]

View file

@ -1,9 +1,23 @@
use std::sync::Arc;
use std::time::Duration;
use crate::components::base::listEntry::ListEntry;
use crate::components::base::utils::Listeners;
use crate::components::input::sourceBoxImpl;
use crate::components::input::sourceEntry::set_source_volume;
use adw::glib;
use adw::glib::Object;
use adw::prelude::{BoxExt, ListBoxRowExt, RangeExt};
use dbus::blocking::Connection;
use dbus::Error;
use glib::subclass::prelude::ObjectSubclassIsExt;
use glib::Variant;
use glib::{Propagation, Variant};
use gtk::gio;
use gtk::prelude::ActionableExt;
use ReSet_Lib::audio::audio::{OutputStream, Source};
use super::outputStreamEntry::OutputStreamEntry;
use super::sourceEntry::SourceEntry;
glib::wrapper! {
pub struct SourceBox(ObjectSubclass<sourceBoxImpl::SourceBox>)
@ -11,6 +25,9 @@ glib::wrapper! {
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
}
unsafe impl Send for SourceBox {}
unsafe impl Sync for SourceBox {}
impl SourceBox {
pub fn new() -> Self {
Object::builder().build()
@ -18,9 +35,124 @@ impl SourceBox {
pub fn setupCallbacks(&self) {
let selfImp = self.imp();
selfImp.resetSourceRow.set_action_name(Some("navigation.push"));
selfImp.resetSourceRow.set_action_target_value(Some(&Variant::from("sources")));
selfImp
.resetSourceRow
.set_action_name(Some("navigation.push"));
selfImp
.resetSourceRow
.set_action_target_value(Some(&Variant::from("sources")));
selfImp.resetOutputStreamButton.set_action_name(Some("navigation.pop"));
selfImp
.resetOutputStreamButton
.set_action_name(Some("navigation.pop"));
}
}
pub fn populate_sources(output_box: Arc<SourceBox>) {
gio::spawn_blocking(move || {
let output_box_imp = output_box.imp();
let sinks = get_sources();
output_box_imp
.resetDefaultSource
.replace(get_default_source());
glib::spawn_future(async move {
glib::idle_add_once(move || {
// TODO handle default mapping
let output_box_ref_slider = output_box.clone();
let output_box_ref = output_box.clone();
{
let output_box_imp = output_box_ref.imp();
let default_sink = output_box_imp.resetDefaultSource.clone(); // Clone outside closure
let source = default_sink.borrow(); //
let volume = source.volume.first().unwrap_or_else(|| &(0 as u32));
let fraction = (*volume as f64 / 655.36).round();
let percentage = (fraction).to_string() + "%";
output_box_imp.resetVolumePercentage.set_text(&percentage);
output_box_imp.resetVolumeSlider.set_value(*volume as f64);
for stream in sinks {
let entry = ListEntry::new(&SourceEntry::new(stream));
entry.set_activatable(false);
output_box_imp.resetSources.append(&entry);
}
}
output_box_ref
.imp()
.resetVolumeSlider
.connect_change_value(move |_, _, value| {
let imp = output_box_ref_slider.imp();
let fraction = (value / 655.36).round();
println!("{fraction}");
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_source_volume(value, imp.resetDefaultSource.clone());
Propagation::Proceed
});
});
});
});
}
pub fn populate_outputstreams(listeners: Arc<Listeners>, output_box: Arc<SourceBox>) {
// TODO add listener
let output_box_ref = output_box.clone();
gio::spawn_blocking(move || {
let streams = get_output_streams();
glib::spawn_future(async move {
glib::idle_add_once(move || {
let output_box_imp = output_box_ref.imp();
for stream in streams {
let entry = ListEntry::new(&OutputStreamEntry::new(stream));
entry.set_activatable(false);
output_box_imp.resetOutputStreams.append(&entry);
}
});
});
});
}
fn get_output_streams() -> Vec<OutputStream> {
let conn = Connection::new_session().unwrap();
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(1000),
);
let res: Result<(Vec<OutputStream>,), Error> =
proxy.method_call("org.xetibo.ReSet", "ListOutputStreams", ());
if res.is_err() {
return Vec::new();
}
res.unwrap().0
}
fn get_sources() -> Vec<Source> {
let conn = Connection::new_session().unwrap();
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(1000),
);
let res: Result<(Vec<Source>,), Error> =
proxy.method_call("org.xetibo.ReSet", "ListSources", ());
if res.is_err() {
return Vec::new();
}
res.unwrap().0
}
fn get_default_source() -> Source {
let conn = Connection::new_session().unwrap();
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(1000),
);
let res: Result<(Source,), Error> =
proxy.method_call("org.xetibo.ReSet", "GetDefaultSource", ());
if res.is_err() {
return Source::default();
}
res.unwrap().0
}

View file

@ -9,6 +9,7 @@ use gtk::{prelude::*, Button, Label, ProgressBar, Scale};
use ReSet_Lib::audio::audio::{OutputStream, Source};
use super::outputStreamEntry::OutputStreamEntry;
use super::sourceEntry::SourceEntry;
#[allow(non_snake_case)]
#[derive(Default, CompositeTemplate)]
@ -32,7 +33,7 @@ pub struct SourceBox {
pub resetOutputStreamButton: TemplateChild<ListEntry>,
#[template_child]
pub resetOutputStreams: TemplateChild<gtk::Box>,
pub resetDefaultSource: RefCell<Option<Source>>,
pub resetDefaultSource: Arc<RefCell<Source>>,
pub resetSourceList: Arc<Mutex<Vec<Source>>>,
pub resetOutputStreamList: Arc<Mutex<Vec<OutputStream>>>,
}
@ -45,6 +46,7 @@ impl ObjectSubclass for SourceBox {
fn class_init(klass: &mut Self::Class) {
OutputStreamEntry::ensure_type();
SourceEntry::ensure_type();
ListEntry::ensure_type();
klass.bind_template();
}

View file

@ -42,7 +42,7 @@ impl SourceEntry {
println!("{fraction}");
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_inputstream_volume(value, imp.stream.clone());
set_source_volume(value, imp.stream.clone());
Propagation::Proceed
}),
);
@ -51,7 +51,7 @@ impl SourceEntry {
}
}
fn set_inputstream_volume(value: f64, stream: Arc<RefCell<Source>>) -> bool {
pub fn set_source_volume(value: f64, stream: Arc<RefCell<Source>>) -> bool {
let mut stream = stream.borrow_mut().clone();
// let x = stream.volume.iter_mut().map(|_| value as u32);
stream.volume = vec![value as u32; stream.channels as usize];
@ -61,7 +61,7 @@ fn set_inputstream_volume(value: f64, stream: Arc<RefCell<Source>>) -> bool {
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(100),
Duration::from_millis(1000),
);
let res: Result<(bool,), Error> =
proxy.method_call("org.xetibo.ReSet", "SetSourceVolume", (stream,));

View file

@ -2,7 +2,7 @@ use std::cell::RefCell;
use std::sync::Arc;
use gtk::subclass::prelude::*;
use gtk::{glib, Button, CompositeTemplate, DropDown, Label, ProgressBar, Scale, CheckButton};
use gtk::{glib, Button, CompositeTemplate, Label, ProgressBar, Scale, CheckButton};
use ReSet_Lib::audio::audio::Source;
use super::sourceEntry;

View file

@ -23,13 +23,12 @@ impl InputStreamEntry {
pub fn new(stream: InputStream) -> Self {
let obj: Self = Object::builder().build();
// TODO use event callback for progress bar -> this is the "im speaking" indicator
// TODO map the slider to volume
// TODO properly use volume fraction
// TODO map mute to callback
// TODO map dropdown
{
let imp = obj.imp();
imp.resetSinkName.set_text(stream.name.clone().as_str());
let name = stream.application_name.clone() + ": " + stream.name.as_str();
imp.resetSinkName.set_text(name.as_str());
let volume = stream.volume.first().unwrap_or_else(|| &(0 as u32));
let fraction = (*volume as f64 / 655.36).round();
let percentage = (fraction).to_string() + "%";
@ -39,7 +38,6 @@ impl InputStreamEntry {
imp.resetVolumeSlider.connect_change_value(
clone!(@weak imp => @default-return Propagation::Stop, move |_, _, value| {
let fraction = (value / 655.36).round();
println!("{fraction}");
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_inputstream_volume(value, imp.stream.clone());
@ -61,7 +59,7 @@ fn set_inputstream_volume(value: f64, stream: Arc<RefCell<InputStream>>) -> bool
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(100),
Duration::from_millis(1000),
);
let res: Result<(bool,), Error> =
proxy.method_call("org.xetibo.ReSet", "SetInputStreamVolume", (stream,));

View file

@ -1,6 +1,6 @@
#![allow(non_snake_case)]
pub mod audioBox;
pub mod audioBoxImpl;
pub mod sinkBox;
pub mod sinkBoxImpl;
pub mod inputStreamEntry;
pub mod inputStreamEntryImpl;
pub mod sinkEntry;

View file

@ -3,31 +3,32 @@ use std::time::Duration;
use crate::components::base::listEntry::ListEntry;
use crate::components::base::utils::Listeners;
use crate::components::output::audioBoxImpl;
use crate::components::output::sinkEntry::set_sink_volume;
use adw::glib::Object;
use adw::prelude::BoxExt;
use adw::prelude::{BoxExt, RangeExt};
use adw::{glib, prelude::ListBoxRowExt};
use dbus::blocking::Connection;
use dbus::Error;
use glib::subclass::prelude::ObjectSubclassIsExt;
use glib::Variant;
use glib::{clone, Propagation, Variant};
use gtk::gio;
use gtk::prelude::ActionableExt;
use ReSet_Lib::audio::audio::{InputStream, Sink};
use super::inputStreamEntry::InputStreamEntry;
use super::sinkBoxImpl;
use super::sinkEntry::SinkEntry;
glib::wrapper! {
pub struct AudioBox(ObjectSubclass<audioBoxImpl::AudioBox>)
pub struct SinkBox(ObjectSubclass<sinkBoxImpl::SinkBox>)
@extends gtk::Box, gtk::Widget,
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
}
unsafe impl Send for AudioBox {}
unsafe impl Sync for AudioBox {}
unsafe impl Send for SinkBox {}
unsafe impl Sync for SinkBox {}
impl AudioBox {
impl SinkBox {
pub fn new() -> Self {
Object::builder().build()
}
@ -47,30 +48,53 @@ impl AudioBox {
}
}
pub fn populate_sinks(output_box: Arc<AudioBox>) {
let output_box_ref = output_box.clone();
pub fn populate_sinks(output_box: Arc<SinkBox>) {
gio::spawn_blocking(move || {
let output_box_imp = output_box.imp();
let output_box_ref = output_box.clone();
{
let output_box_imp = output_box.imp();
output_box_imp.resetDefaultSink.replace(get_default_sink());
}
let sinks = get_sinks();
output_box_imp.resetDefaultSink.replace(get_default_sink());
glib::spawn_future(async move {
glib::idle_add_once(move || {
let output_box_imp = output_box_ref.imp();
// TODO handle default mapping
// output_box_imp.resetVolumePercentage.set_text();
// output_box_imp.resetVolumeSlider.let
for stream in sinks {
// TODO create sink handler -> currently only allows input streams
let entry = ListEntry::new(&SinkEntry::new(stream));
entry.set_activatable(false);
output_box_imp.resetSinks.append(&entry);
let output_box_ref_slider = output_box.clone();
{
let output_box_imp = output_box_ref.imp();
let default_sink = output_box_imp.resetDefaultSink.clone(); // Clone outside closure
let sink = default_sink.borrow(); //
let volume = sink.volume.first().unwrap_or_else(|| &(0 as u32));
let fraction = (*volume as f64 / 655.36).round();
let percentage = (fraction).to_string() + "%";
output_box_imp.resetVolumePercentage.set_text(&percentage);
output_box_imp.resetVolumeSlider.set_value(*volume as f64);
for stream in sinks {
// TODO create sink handler -> currently only allows input streams
let entry = ListEntry::new(&SinkEntry::new(stream));
entry.set_activatable(false);
output_box_imp.resetSinks.append(&entry);
}
}
output_box_ref
.imp()
.resetVolumeSlider
.connect_change_value(move |_, _, value| {
let imp = output_box_ref_slider.imp();
let fraction = (value / 655.36).round();
println!("{fraction}");
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_sink_volume(value, imp.resetDefaultSink.clone());
Propagation::Proceed
});
});
});
});
}
pub fn populate_streams(listeners: Arc<Listeners>, output_box: Arc<AudioBox>) {
pub fn populate_inputstreams(listeners: Arc<Listeners>, output_box: Arc<SinkBox>) {
// TODO add listener
let output_box_ref = output_box.clone();
// let output_box_ref_listener = output_box.clone();
@ -122,7 +146,7 @@ fn get_sinks() -> Vec<Sink> {
res.unwrap().0
}
fn get_default_sink() -> Option<Sink> {
fn get_default_sink() -> Sink {
let conn = Connection::new_session().unwrap();
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
@ -131,7 +155,7 @@ fn get_default_sink() -> Option<Sink> {
);
let res: Result<(Sink,), Error> = proxy.method_call("org.xetibo.ReSet", "GetDefaultSink", ());
if res.is_err() {
return None;
return Sink::default();
}
Some(res.unwrap().0)
res.unwrap().0
}

View file

@ -2,19 +2,19 @@ use std::cell::RefCell;
use std::sync::{Arc, Mutex};
use crate::components::base::listEntry::ListEntry;
use crate::components::output::audioBox;
use crate::components::output::inputStreamEntry::InputStreamEntry;
use gtk::subclass::prelude::*;
use gtk::{glib, Box, Button, CompositeTemplate, DropDown, Label, TemplateChild};
use gtk::{prelude::*, ProgressBar, Scale};
use ReSet_Lib::audio::audio::{InputStream, Sink};
use super::sinkBox;
use super::sinkEntry::SinkEntry;
#[allow(non_snake_case)]
#[derive(Default, CompositeTemplate)]
#[template(resource = "/org/Xetibo/ReSet/resetAudioOutput.ui")]
pub struct AudioBox {
pub struct SinkBox {
#[template_child]
pub resetSinksRow: TemplateChild<ListEntry>,
#[template_child]
@ -33,15 +33,15 @@ pub struct AudioBox {
pub resetInputStreamButton: TemplateChild<ListEntry>,
#[template_child]
pub resetInputStreams: TemplateChild<Box>,
pub resetDefaultSink: RefCell<Option<Sink>>,
pub resetDefaultSink: Arc<RefCell<Sink>>,
pub resetSinkList: Arc<Mutex<Vec<Sink>>>,
pub resetInputStreamList: Arc<Mutex<Vec<InputStream>>>,
}
#[glib::object_subclass]
impl ObjectSubclass for AudioBox {
impl ObjectSubclass for SinkBox {
const NAME: &'static str = "resetAudioOutput";
type Type = audioBox::AudioBox;
type Type = sinkBox::SinkBox;
type ParentType = gtk::Box;
fn class_init(klass: &mut Self::Class) {
@ -56,19 +56,19 @@ impl ObjectSubclass for AudioBox {
}
}
impl BoxImpl for AudioBox {}
impl BoxImpl for SinkBox {}
impl ObjectImpl for AudioBox {
impl ObjectImpl for SinkBox {
fn constructed(&self) {
let obj = self.obj();
obj.setupCallbacks();
}
}
impl ListBoxRowImpl for AudioBox {}
impl ListBoxRowImpl for SinkBox {}
impl WidgetImpl for AudioBox {}
impl WidgetImpl for SinkBox {}
impl WindowImpl for AudioBox {}
impl WindowImpl for SinkBox {}
impl ApplicationWindowImpl for AudioBox {}
impl ApplicationWindowImpl for SinkBox {}

View file

@ -42,7 +42,7 @@ impl SinkEntry {
println!("{fraction}");
let percentage = (fraction).to_string() + "%";
imp.resetVolumePercentage.set_text(&percentage);
set_inputstream_volume(value, imp.stream.clone());
set_sink_volume(value, imp.stream.clone());
Propagation::Proceed
}),
);
@ -51,7 +51,7 @@ impl SinkEntry {
}
}
fn set_inputstream_volume(value: f64, stream: Arc<RefCell<Sink>>) -> bool {
pub fn set_sink_volume(value: f64, stream: Arc<RefCell<Sink>>) -> bool {
let mut stream = stream.borrow_mut().clone();
// let x = stream.volume.iter_mut().map(|_| value as u32);
stream.volume = vec![value as u32; stream.channels as usize];
@ -61,7 +61,7 @@ fn set_inputstream_volume(value: f64, stream: Arc<RefCell<Sink>>) -> bool {
let proxy = conn.with_proxy(
"org.xetibo.ReSet",
"/org/xetibo/ReSet",
Duration::from_millis(100),
Duration::from_millis(1000),
);
let res: Result<(bool,), Error> =
proxy.method_call("org.xetibo.ReSet", "SetSinkVolume", (stream,));

View file

@ -5,8 +5,8 @@ use std::sync::Arc;
use crate::components::base::settingBox::SettingBox;
use crate::components::base::utils::Listeners;
use crate::components::bluetooth::bluetoothBox::BluetoothBox;
use crate::components::input::sourceBox::SourceBox;
use crate::components::output::audioBox::{populate_streams, AudioBox, populate_sinks};
use crate::components::input::sourceBox::{SourceBox, populate_outputstreams, populate_sources};
use crate::components::output::sinkBox::{SinkBox, populate_inputstreams, populate_sinks};
use crate::components::wifi::wifiBox::{scanForWifi, show_stored_connections, WifiBox};
use gtk::prelude::WidgetExt;
use gtk::{FlowBox, Frame, Label};
@ -63,11 +63,14 @@ pub const HANDLE_AUDIO_CLICK: fn(Arc<Listeners>, FlowBox) =
listeners.stop_network_listener();
listeners.bluetooth_listener.store(false, Ordering::SeqCst);
listeners.pulse_listener.store(true, Ordering::SeqCst);
let audioOutput = Arc::new(AudioBox::new());
populate_streams(listeners.clone(), audioOutput.clone());
let audioOutput = Arc::new(SinkBox::new());
populate_inputstreams(listeners.clone(), audioOutput.clone());
populate_sinks(audioOutput.clone());
let audioFrame = wrapInFrame(SettingBox::new(&*audioOutput));
let sourceFrame = wrapInFrame(SettingBox::new(&SourceBox::new()));
let audioInput = Arc::new(SourceBox::new());
populate_outputstreams(listeners.clone(), audioInput.clone());
populate_sources(audioInput.clone());
let sourceFrame = wrapInFrame(SettingBox::new(&*audioInput));
resetMain.remove_all();
resetMain.insert(&audioFrame, -1);
resetMain.insert(&sourceFrame, -1);
@ -79,8 +82,8 @@ pub const HANDLE_VOLUME_CLICK: fn(Arc<Listeners>, FlowBox) =
listeners.stop_network_listener();
listeners.bluetooth_listener.store(false, Ordering::SeqCst);
listeners.pulse_listener.store(false, Ordering::SeqCst);
let audioOutput = Arc::new(AudioBox::new());
populate_streams(listeners.clone(), audioOutput.clone());
let audioOutput = Arc::new(SinkBox::new());
populate_inputstreams(listeners.clone(), audioOutput.clone());
populate_sinks(audioOutput.clone());
let audioFrame = wrapInFrame(SettingBox::new(&*audioOutput));
resetMain.remove_all();
@ -93,7 +96,10 @@ pub const HANDLE_MICROPHONE_CLICK: fn(Arc<Listeners>, FlowBox) =
listeners.stop_network_listener();
listeners.bluetooth_listener.store(false, Ordering::SeqCst);
listeners.pulse_listener.store(false, Ordering::SeqCst);
let sourceFrame = wrapInFrame(SettingBox::new(&SourceBox::new()));
let audioInput = Arc::new(SourceBox::new());
populate_outputstreams(listeners.clone(), audioInput.clone());
populate_sources(audioInput.clone());
let sourceFrame = wrapInFrame(SettingBox::new(&*audioInput));
resetMain.remove_all();
resetMain.insert(&sourceFrame, -1);
resetMain.set_max_children_per_line(1);

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<requires lib="libadwaita" version="1.4"/>
@ -84,8 +84,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">5.0</property>
<property name="upper">100.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<requires lib="libadwaita" version="1.4"/>
@ -84,8 +84,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">5.0</property>
<property name="upper">100.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.6"/>
<requires lib="libadwaita" version="1.4"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetBluetoothEntry" parent="GtkBox">

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetInputStreamEntry" parent="GtkBox">
@ -15,6 +15,7 @@
<object class="GtkLabel" id="resetSinkName">
<property name="label">text</property>
<property name="margin-start">5</property>
<property name="wrap">True</property>
</object>
</child>
<child>
@ -41,9 +42,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">655.36</property>
<property name="step-increment">65536.0</property>
<property name="upper">65536.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.0"/>
<template class="resetListBoxRow" parent="GtkListBoxRow">

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<requires lib="libadwaita" version="1.4"/>

View file

@ -1,68 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetOutpuStreamEntry" parent="GtkBox">
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
<property name="margin-top">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="margin-bottom">5</property>
<child>
<object class="GtkLabel" id="resetSourceName">
<property name="label">text</property>
<property name="margin-start">5</property>
</object>
</child>
<child>
<object class="GtkDropDown" id="resetSelectedSource">
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="margin-end">5</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="margin-bottom">5</property>
<property name="margin-top">5</property>
<child>
<object class="GtkButton" id="resetSourceMute">
<property name="icon-name">audio-input-microphone-symbolic</property>
<property name="margin-end">5</property>
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">5.0</property>
<property name="upper">100.0</property>
</object>
</property>
<property name="hexpand">True</property>
<property name="valign">center</property>
<property name="value-pos">bottom</property>
</object>
</child>
<child>
<object class="GtkLabel" id="resetVolumePercentage">
<property name="label">100%</property>
<property name="lines">1</property>
<property name="width-request">40</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkProgressBar" id="resetVolumeMeter">
<property name="margin-top">5</property>
</object>
</child>
</template>
</interface>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetOutputStreamEntry" parent="GtkBox">
@ -15,10 +15,11 @@
<object class="GtkLabel" id="resetSourceName">
<property name="label">text</property>
<property name="margin-start">5</property>
<property name="wrap">True</property>
</object>
</child>
<child>
<object class="GtkDropDown" id="resetSelectedSink">
<object class="GtkDropDown" id="resetSelectedSource">
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="margin-end">5</property>
@ -32,7 +33,7 @@
<property name="margin-top">5</property>
<child>
<object class="GtkButton" id="resetSourceMute">
<property name="icon-name">audio-volume-high-symbolic</property>
<property name="icon-name">audio-input-microphone-symbolic</property>
<property name="margin-end">5</property>
<property name="valign">center</property>
</object>
@ -41,9 +42,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">655.36</property>
<property name="step-increment">2.0</property>
<property name="upper">65536.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetPopup" parent="GtkPopover">

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetSavedWifiEntry" parent="GtkBox">

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.0"/>
<template class="resetSettingBox" parent="GtkBox">

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.0"/>
<template class="resetSidebarEntry" parent="GtkListBoxRow">

View file

@ -1,8 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<object class="GtkBox" id="resetSinkEntry">
<template class="resetSinkEntry" parent="GtkBox">
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
@ -15,6 +15,7 @@
<object class="GtkLabel" id="resetSinkName">
<property name="label">text</property>
<property name="margin-start">5</property>
<property name="wrap">True</property>
</object>
</child>
<child>
@ -41,9 +42,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">655.36</property>
<property name="step-increment">65536.0</property>
<property name="upper">65536.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>
@ -65,5 +66,5 @@
<property name="margin-top">5</property>
</object>
</child>
</object>
</template>
</interface>

View file

@ -1,8 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<object class="GtkBox" id="resetSourceEntry">
<template class="resetSourceEntry" parent="GtkBox">
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
@ -15,6 +15,7 @@
<object class="GtkLabel" id="resetSourceName">
<property name="label">text</property>
<property name="margin-start">5</property>
<property name="wrap">True</property>
</object>
</child>
<child>
@ -41,9 +42,9 @@
<object class="GtkScale" id="resetVolumeSlider">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">655.36</property>
<property name="step-increment">65536.0</property>
<property name="upper">65536.0</property>
<property name="page-increment">2005.4016</property>
<property name="step-increment">2005.4016</property>
<property name="upper">100270.08</property>
</object>
</property>
<property name="hexpand">True</property>
@ -65,5 +66,5 @@
<property name="margin-top">5</property>
</object>
</child>
</object>
</template>
</interface>

View file

@ -11,13 +11,13 @@
(10,1,None,"resetBluetooth.ui",None,None,None,None,None,None,None),
(11,2,None,"resetBluetoothEntry.ui",None,None,None,None,None,None,None),
(12,11,None,"resetAudioInput.ui",None,None,None,None,None,None,None),
(13,11,None,"resetOutpuStreamEntry.ui",None,None,None,None,None,None,None),
(13,11,None,"resetOutputStreamEntry.ui",None,None,None,None,None,None,None),
(14,3,None,"resetSettingBox.ui",None,None,None,None,None,None,None),
(15,1,None,"resetListBoxRow.ui",None,None,None,None,None,None,None),
(16,6,None,"resetPopup.ui",None,None,None,None,None,None,None),
(17,1,None,"resetSavedWifiEntry.ui",None,None,None,None,None,None,None),
(18,None,None,"resetSinkEntry.ui",None,None,None,None,None,None,None),
(19,None,None,"resetSourceEntry.ui",None,None,None,None,None,None,None)
(18,1,None,"resetSinkEntry.ui",None,None,None,None,None,None,None),
(19,1,None,"resetSourceEntry.ui",None,None,None,None,None,None,None)
</ui>
<object>
(3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," &lt;child&gt;\n &lt;object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\"&gt;\n &lt;/object&gt;\n &lt;/child&gt;"),
@ -125,7 +125,6 @@
(8,97,"GtkBox",None,93,None,None,None,None,None),
(8,98,"GtkButton","resetSinkMute",97,None,None,None,None,None),
(8,99,"GtkScale","resetVolumeSlider",97,None,None,None,1,None),
(8,100,"GtkAdjustment",None,99,None,None,None,None,None),
(8,101,"GtkLabel","resetVolumePercentage",97,None,None,None,2,None),
(8,102,"GtkProgressBar","resetVolumeMeter",93,None,None,None,1,None),
(8,103,"GtkSeparator",None,56,None,None,None,3,None),
@ -134,6 +133,7 @@
(8,111,"GtkBox",None,110,None,None,None,None,None),
(8,112,"GtkLabel",None,111,None,None,None,None,None),
(8,113,"GtkImage",None,111,None,None,None,1,None),
(8,115,"GtkAdjustment",None,99,None,None,None,-1,None),
(10,1,"GtkBox","resetBluetooth",None,None,None,None,None,None),
(10,119,"AdwNavigationView",None,1,None,None,None,1,None),
(10,120,"AdwNavigationPage",None,119,None,None,None,None,None),
@ -187,7 +187,6 @@
(12,23,"GtkBox",None,22,None,None,None,None,None),
(12,24,"GtkButton","resetSourceMute",23,None,None,None,None,None),
(12,25,"GtkScale","resetVolumeSlider",23,None,None,None,1,None),
(12,26,"GtkAdjustment",None,25,None,None,None,None,None),
(12,27,"GtkLabel","resetVolumePercentage",23,None,None,None,2,None),
(12,28,"GtkProgressBar","resetVolumeMeter",22,None,None,None,1,None),
(12,29,"GtkSeparator",None,15,None,None,None,2,None),
@ -202,16 +201,17 @@
(12,47,"GtkImage",None,45,None,None,None,1,None),
(12,49,"GtkBox","resetSources",42,None,None,None,2,None),
(12,50,"GtkLabel",None,49,None,None,None,None,None),
(13,11,"GtkBox","resetOutpuStreamEntry",None,None,None,None,None,None),
(12,51,"GtkAdjustment",None,25,None,None,None,-1,None),
(13,11,"GtkBox","resetOutputStreamEntry",None,None,None,None,None,None),
(13,12,"GtkBox",None,11,None,None,None,None,None),
(13,13,"GtkLabel","resetSourceName",12,None,None,None,None,None),
(13,14,"GtkDropDown","resetSelectedSource",12,None,None,None,1,None),
(13,15,"GtkBox",None,11,None,None,None,1,None),
(13,16,"GtkButton","resetSourceMute",15,None,None,None,None,None),
(13,17,"GtkScale","resetVolumeSlider",15,None,None,None,1,None),
(13,18,"GtkAdjustment",None,17,None,None,None,None,None),
(13,19,"GtkLabel","resetVolumePercentage",15,None,None,None,2,None),
(13,20,"GtkProgressBar","resetVolumeMeter",11,None,None,None,2,None),
(13,21,"GtkAdjustment",None,17,None,None,None,-1,None),
(14,3,"GtkBox","resetSettingBox",None,None,None,None,-1,None),
(15,1,"GtkListBoxRow","resetListBoxRow",None,None,None,None,None,None),
(16,6,"GtkPopover","resetPopup",None,None,None,None,-1,None),
@ -230,10 +230,10 @@
(18,5,"GtkBox",None,1,None,None,None,1,None),
(18,6,"GtkButton","resetSinkMute",5,None,None,None,None,None),
(18,7,"GtkScale","resetVolumeSlider",5,None,None,None,1,None),
(18,8,"GtkAdjustment",None,7,None,None,None,None,None),
(18,9,"GtkLabel","resetVolumePercentage",5,None,None,None,2,None),
(18,10,"GtkProgressBar","resetVolumeMeter",1,None,None,None,2,None),
(18,11,"GtkCheckButton","resetSelectedSink",2,None,None,None,1,None),
(18,12,"GtkAdjustment",None,7,None,None,None,-1,None),
(19,1,"GtkBox","resetSourceEntry",None,None,None,None,None,None),
(19,2,"GtkBox",None,1,None,None,None,None,None),
(19,3,"GtkLabel","resetSourceName",2,None,None,None,None,None),
@ -241,9 +241,9 @@
(19,5,"GtkBox",None,1,None,None,None,1,None),
(19,6,"GtkButton","resetSourceMute",5,None,None,None,None,None),
(19,7,"GtkScale","resetVolumeSlider",5,None,None,None,1,None),
(19,8,"GtkAdjustment",None,7,None,None,None,None,None),
(19,9,"GtkLabel","resetVolumePercentage",5,None,None,None,2,None),
(19,10,"GtkProgressBar","resetVolumeMeter",1,None,None,None,2,None)
(19,10,"GtkProgressBar","resetVolumeMeter",1,None,None,None,2,None),
(19,12,"GtkAdjustment",None,7,None,None,None,-1,None)
</object>
<object_property>
(3,1,"GtkWidget","height-request","200",None,None,None,None,None,None,None,None,None),
@ -430,6 +430,7 @@
(7,4,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(7,5,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(7,6,"GtkLabel","label","text",None,None,None,None,None,None,None,None,None),
(7,6,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
(7,6,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(7,8,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(7,8,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
@ -437,9 +438,9 @@
(7,9,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(7,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(7,9,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","page-increment","655.36",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","step-increment","65536.0",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","upper","65536.0",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(7,10,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None),
(7,11,"GtkButton","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None),
(7,11,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(7,11,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
@ -495,12 +496,10 @@
(8,98,"GtkButton","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None),
(8,98,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(8,98,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(8,99,"GtkRange","adjustment",None,None,None,None,None,100,None,None,None,None),
(8,99,"GtkRange","adjustment",None,None,None,None,None,115,None,None,None,None),
(8,99,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(8,99,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(8,99,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(8,100,"GtkAdjustment","page-increment","5.0",None,None,None,None,None,None,None,None,None),
(8,100,"GtkAdjustment","upper","100.0",None,None,None,None,None,None,None,None,None),
(8,101,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
(8,101,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
(8,101,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
@ -519,6 +518,9 @@
(8,113,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
(8,113,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(8,113,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(8,115,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(8,115,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(8,115,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None),
(10,1,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(10,1,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(10,120,"AdwNavigationPage","tag","main",None,None,None,None,None,None,None,None,None),
@ -644,12 +646,10 @@
(12,24,"GtkButton","icon-name","audio-input-microphone-symbolic",None,None,None,None,None,None,None,None,None),
(12,24,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(12,24,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(12,25,"GtkRange","adjustment",None,None,None,None,None,26,None,None,None,None),
(12,25,"GtkRange","adjustment",None,None,None,None,None,51,None,None,None,None),
(12,25,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(12,25,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(12,25,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(12,26,"GtkAdjustment","page-increment","5.0",None,None,None,None,None,None,None,None,None),
(12,26,"GtkAdjustment","upper","100.0",None,None,None,None,None,None,None,None,None),
(12,27,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
(12,27,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
(12,27,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
@ -680,6 +680,9 @@
(12,49,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None),
(12,50,"GtkLabel","label","Input Devices",None,None,None,None,None,None,None,None,None),
(12,50,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
(12,51,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(12,51,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(12,51,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None),
(13,11,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(13,11,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(13,11,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
@ -687,6 +690,7 @@
(13,11,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(13,12,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(13,13,"GtkLabel","label","text",None,None,None,None,None,None,None,None,None),
(13,13,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
(13,13,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(13,14,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
(13,14,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
@ -696,16 +700,17 @@
(13,16,"GtkButton","icon-name","audio-input-microphone-symbolic",None,None,None,None,None,None,None,None,None),
(13,16,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(13,16,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(13,17,"GtkRange","adjustment",None,None,None,None,None,18,None,None,None,None),
(13,17,"GtkRange","adjustment",None,None,None,None,None,21,None,None,None,None),
(13,17,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(13,17,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(13,17,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(13,18,"GtkAdjustment","page-increment","5.0",None,None,None,None,None,None,None,None,None),
(13,18,"GtkAdjustment","upper","100.0",None,None,None,None,None,None,None,None,None),
(13,19,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
(13,19,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
(13,19,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
(13,20,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(13,21,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(13,21,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(13,21,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None),
(14,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(14,3,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None),
(14,3,"GtkWidget","width-request","500",None,None,None,None,None,None,None,None,None),
@ -741,19 +746,17 @@
(18,1,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(18,2,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(18,3,"GtkLabel","label","text",None,None,None,None,None,None,None,None,None),
(18,3,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
(18,3,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(18,5,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(18,5,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(18,6,"GtkButton","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None),
(18,6,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(18,6,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(18,7,"GtkRange","adjustment",None,None,None,None,None,8,None,None,None,None),
(18,7,"GtkRange","adjustment",None,None,None,None,None,12,None,None,None,None),
(18,7,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(18,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(18,7,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(18,8,"GtkAdjustment","page-increment","655.36",None,None,None,None,None,None,None,None,None),
(18,8,"GtkAdjustment","step-increment","65536.0",None,None,None,None,None,None,None,None,None),
(18,8,"GtkAdjustment","upper","65536.0",None,None,None,None,None,None,None,None,None),
(18,9,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
(18,9,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
(18,9,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
@ -761,6 +764,9 @@
(18,11,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
(18,11,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(18,11,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
(18,12,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(18,12,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(18,12,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None),
(19,1,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(19,1,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(19,1,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
@ -768,6 +774,7 @@
(19,1,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(19,2,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(19,3,"GtkLabel","label","text",None,None,None,None,None,None,None,None,None),
(19,3,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
(19,3,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(19,4,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
(19,4,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
@ -777,17 +784,17 @@
(19,6,"GtkButton","icon-name","microphone-sensitivity-high-symbolic",None,None,None,None,None,None,None,None,None),
(19,6,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(19,6,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(19,7,"GtkRange","adjustment",None,None,None,None,None,8,None,None,None,None),
(19,7,"GtkRange","adjustment",None,None,None,None,None,12,None,None,None,None),
(19,7,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
(19,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(19,7,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(19,8,"GtkAdjustment","page-increment","655.36",None,None,None,None,None,None,None,None,None),
(19,8,"GtkAdjustment","step-increment","65536.0",None,None,None,None,None,None,None,None,None),
(19,8,"GtkAdjustment","upper","65536.0",None,None,None,None,None,None,None,None,None),
(19,9,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
(19,9,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
(19,9,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
(19,10,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None)
(19,10,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(19,12,"GtkAdjustment","page-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(19,12,"GtkAdjustment","step-increment","2005.4016",None,None,None,None,None,None,None,None,None),
(19,12,"GtkAdjustment","upper","100270.08",None,None,None,None,None,None,None,None,None)
</object_property>
<object_data>
(3,42,"GtkWidget",1,1,None,None,None,None,None,None),

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.6"/>
<requires lib="libadwaita" version="1.4"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.16.0 -->
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetWifiEntry" parent="GtkBox">

View file

@ -15,6 +15,7 @@
<file compressed="true" preprocess="xml-stripblanks">resetAudioInput.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetInputStreamEntry.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetSinkEntry.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetSourceEntry.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetPopup.ui</file>
</gresource>
</gresources>