2 Commits

Author SHA1 Message Date
811670b372 provide an info popup when opening sounds folder 2022-01-16 15:47:39 +00:00
cb6c5329a2 update gtk-rs 2022-01-11 19:50:06 +00:00
2 changed files with 25 additions and 17 deletions

View File

@@ -9,9 +9,9 @@ edition = "2018"
[dependencies] [dependencies]
dirs = "^3.0.1" dirs = "^3.0.1"
gdk = "^0.13.2" gdk = "^0.14.3"
gio = "^0" gio = "^0.14.8"
gtk = "^0" gtk = "^0.14.3"
rodio = "^0.11.0" rodio = "^0.11.0"
serde = "^1.0.125" serde = "^1.0.125"
serde_derive = "^1.0.125" serde_derive = "^1.0.125"

View File

@@ -1,4 +1,3 @@
use std::env::args;
use std::fs::File; use std::fs::File;
use std::io::{BufReader}; use std::io::{BufReader};
use std::process::Command; use std::process::Command;
@@ -10,9 +9,9 @@ use rodio::{Sink, Source};
const SPACING: i32 = 16; const SPACING: i32 = 16;
fn error_popup(message: &str) { fn popup(title: &str, message: &str) -> gtk::Window {
let popup = gtk::Window::new(gtk::WindowType::Toplevel); let popup = gtk::Window::new(gtk::WindowType::Toplevel);
popup.set_title("error"); popup.set_title(title);
popup.set_border_width(SPACING as u32); popup.set_border_width(SPACING as u32);
popup.set_position(gtk::WindowPosition::Center); popup.set_position(gtk::WindowPosition::Center);
popup.set_default_size(256, 64); popup.set_default_size(256, 64);
@@ -22,7 +21,7 @@ fn error_popup(message: &str) {
let message = gtk::Label::new(Some(message)); let message = gtk::Label::new(Some(message));
popup.add(&message); popup.add(&message);
popup.show_all(); popup
} }
fn build_ui(application: &gtk::Application) { fn build_ui(application: &gtk::Application) {
@@ -41,6 +40,14 @@ fn build_ui(application: &gtk::Application) {
let button_manage_sounds = gtk::Button::with_label("open sounds folder"); let button_manage_sounds = gtk::Button::with_label("open sounds folder");
button_manage_sounds.connect_clicked(|_| { button_manage_sounds.connect_clicked(|_| {
popup(
"info",
concat!(
"after changing the sounds in this folder, ",
"you will need to restart lull to see your changes."
)
);
let mut file_manager = Command::new(crate::file_manager()); let mut file_manager = Command::new(crate::file_manager());
file_manager.arg(crate::get_sounds_dir()); file_manager.arg(crate::get_sounds_dir());
file_manager.output().unwrap(); file_manager.output().unwrap();
@@ -54,9 +61,9 @@ fn build_ui(application: &gtk::Application) {
columns.set_homogeneous(false); columns.set_homogeneous(false);
column_labels.set_homogeneous(true); column_labels.set_homogeneous(true);
column_sliders.set_homogeneous(true); column_sliders.set_homogeneous(true);
column_labels.set_property_expand(false); column_labels.set_expand(false);
column_sliders.set_property_expand(true); column_sliders.set_expand(true);
column_sliders.set_property_width_request(128); column_sliders.set_width_request(128);
window.add(&sounds_manage); window.add(&sounds_manage);
sounds_manage.add(&columns); sounds_manage.add(&columns);
@@ -92,11 +99,12 @@ fn build_ui(application: &gtk::Application) {
); );
if source.is_err() { if source.is_err() {
error_popup(&format!( popup("error", &format!(
"Couldn't parse file {}. \n{}.", "Couldn't parse file {}. \n{}.",
path.to_str().unwrap(), path.to_str().unwrap(),
source.err().unwrap() source.err().unwrap()
)); )).show_all();
continue; continue;
} }
@@ -127,7 +135,7 @@ fn build_ui(application: &gtk::Application) {
slider.set_draw_value(false); slider.set_draw_value(false);
slider.connect_value_changed(move |scale| { slider.connect_value_changed(move |scale| {
let volume = scale.get_value(); let volume = scale.value();
if volume == 0. { if volume == 0. {
sink.pause(); sink.pause();
@@ -144,8 +152,8 @@ fn build_ui(application: &gtk::Application) {
window.connect_delete_event(|window, _event| { window.connect_delete_event(|window, _event| {
crate::config::save_config(crate::config::Config { crate::config::save_config(crate::config::Config {
position: window.get_position(), position: window.position(),
size: window.get_size() size: window.size()
}); });
Inhibit(false) Inhibit(false)
@@ -162,11 +170,11 @@ pub(crate) fn instantiate() {
let application = gtk::Application::new( let application = gtk::Application::new(
Some("dev.tinybird.max.lull"), Some("dev.tinybird.max.lull"),
Default::default() Default::default()
).expect("Initialisation failed..."); );
application.connect_activate(|app| { application.connect_activate(|app| {
build_ui(app); build_ui(app);
}); });
application.run(&args().collect::<Vec<_>>()); application.run();
} }