From 732236b19de66991f41a8eb313df2197193ed9aa Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Mon, 24 Jan 2022 09:09:59 +0100 Subject: [PATCH] add basic UI of scrolling through focus layers --- Cargo.lock | 210 +++++++++++++++++++--------------------------------- Cargo.toml | 7 +- src/main.rs | 95 +++++++++++++++++------- 3 files changed, 149 insertions(+), 163 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 364993d..37cb90c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,14 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "adwaita-demo" -version = "0.1.0" -dependencies = [ - "gtk4", - "libadwaita", -] - [[package]] name = "anyhow" version = "1.0.51" @@ -30,9 +22,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "cairo-rs" -version = "0.14.9" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482" +checksum = "b869e97a87170f96762f9f178eae8c461147e722ba21dd8814105bf5716bf14a" dependencies = [ "bitflags", "cairo-sys-rs", @@ -43,22 +35,13 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.14.9" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ "glib-sys", "libc", - "system-deps 3.2.0", -] - -[[package]] -name = "cfg-expr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" -dependencies = [ - "smallvec", + "system-deps", ] [[package]] @@ -70,12 +53,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - [[package]] name = "field-offset" version = "0.3.4" @@ -86,6 +63,14 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "focus-annotator" +version = "0.1.0" +dependencies = [ + "gtk4", + "libadwaita", +] + [[package]] name = "futures-channel" version = "0.3.19" @@ -139,10 +124,11 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" +checksum = "172dfe1d9dfb62936bf7ad3ede2913a1b21b1e3db56990e46e00789201de9070" dependencies = [ + "bitflags", "gdk-pixbuf-sys", "gio", "glib", @@ -151,22 +137,22 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" +checksum = "413424d9818621fa3cfc8a3a915cdb89a7c3c507d56761b4ec83a9a98e587171" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 3.2.0", + "system-deps", ] [[package]] name = "gdk4" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97a162c17214d1bf981af3f683156a0b1667dd1927057c4f0a68513251ecf0f" +checksum = "319c74160dbe3e29cc1bf36ae4a08b9072f352b751e9e3e5501b3aa3ca633f66" dependencies = [ "bitflags", "cairo-rs", @@ -180,26 +166,26 @@ dependencies = [ [[package]] name = "gdk4-sys" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9498f4e06969fb96a4e4234dfe1d308a3ac6b120b3c6d93e3ec5c77fe88bc6d5" +checksum = "48a39e34abe35ee2cf54a1e29dd983accecd113ad30bdead5050418fa92f2a1b" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gio-sys", "glib-sys", "gobject-sys", - "graphene-sys", "libc", "pango-sys", - "system-deps 5.0.0", + "pkg-config", + "system-deps", ] [[package]] name = "gio" -version = "0.14.8" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0" +checksum = "5e14e0166f772d6295cfda361d227a63194497641a42da81b9e531c9f5a4d77f" dependencies = [ "bitflags", "futures-channel", @@ -214,22 +200,22 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" +checksum = "04b57719ccaacf2a0d9c79f151be629f3a3ef3991658ee2af0bb66287e4ea86c" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 3.2.0", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.14.8" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4" +checksum = "30a3e6b2e5ef2ecfb10c1e083074a81160b8f6408fcc08195c872e9de37a361b" dependencies = [ "bitflags", "futures-channel", @@ -242,16 +228,17 @@ dependencies = [ "libc", "once_cell", "smallvec", + "thiserror", ] [[package]] name = "glib-macros" -version = "0.14.1" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" +checksum = "54c0c7194ee4c597b334e3ce84d22d929405e94497828e1c54da762cbe8e3d93" dependencies = [ "anyhow", - "heck", + "heck 0.4.0", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -261,30 +248,30 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" +checksum = "c668102c6e15e0a7f6b99b59f602c2e806967bb86414f617b77e19b1de5b3fac" dependencies = [ "libc", - "system-deps 3.2.0", + "system-deps", ] [[package]] name = "gobject-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" +checksum = "6edb1f0b3e4c08e2a0a490d1082ba9e902cdff8ff07091e85c6caec60d17e2ab" dependencies = [ "glib-sys", "libc", - "system-deps 3.2.0", + "system-deps", ] [[package]] name = "graphene-rs" -version = "0.14.8" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3380f132530ef9eb9e0a2bac180e30390aa5e49892d20294f822a974117a563" +checksum = "7c54f9fbbeefdb62c99f892dfca35f83991e2cb5b46a8dc2a715e58612f85570" dependencies = [ "glib", "graphene-sys", @@ -293,21 +280,21 @@ dependencies = [ [[package]] name = "graphene-sys" -version = "0.14.8" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9ac7450b3aa80792513a3c029920a2ede419de13fb5169a4e51b07a5685332" +checksum = "03f311acb023cf7af5537f35de028e03706136eead7f25a31e8fd26f5011e0b3" dependencies = [ "glib-sys", "libc", "pkg-config", - "system-deps 3.2.0", + "system-deps", ] [[package]] name = "gsk4" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff59ca46c4fc5087fd7a0c3770a71ea4b6e94f8c24c12e2c2e8538f9f6fd764" +checksum = "0672c63e4101e19d5e9cb4a0aed8b3278e9573529bd0b6a86d9c748c71bd9882" dependencies = [ "bitflags", "cairo-rs", @@ -321,9 +308,9 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aa53ce70234da02f9954339d988d5ab853d746a8f47a4ae17735ff873545b5" +checksum = "e31d21d7ce02ba261bb24c50c4ab238a10b41a2c97c32afffae29471b7cca69b" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -332,14 +319,14 @@ dependencies = [ "graphene-sys", "libc", "pango-sys", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "gtk4" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58a04f421d1485ba4739e723199f5828bca05ab4e622ed39a96a342b6b1a6a3d" +checksum = "b5020aeb559e0431930d66d85b8f16fc453fc0863466b13b7e1e1b800cf1a47b" dependencies = [ "bitflags", "cairo-rs", @@ -360,13 +347,11 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.3.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5068d4354af02454f44687adc613100aa98ae11e273cdcac84f89dc08be2b4a1" +checksum = "573db42bb64973a4d5f718b73caa7204285a1a665308a23b11723d0ee56ec305" dependencies = [ "anyhow", - "heck", - "itertools", "proc-macro-crate", "proc-macro-error", "proc-macro2", @@ -376,9 +361,9 @@ dependencies = [ [[package]] name = "gtk4-sys" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e20a64c8f0ddcff8902ff04c130747f2fb7834a43530f75d03d6c71335733b49" +checksum = "1544614a8d44f38719a2fdfd608d644d5f385beab33e5852688f48a983a2b583" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -390,7 +375,7 @@ dependencies = [ "gsk4-sys", "libc", "pango-sys", - "system-deps 5.0.0", + "system-deps", ] [[package]] @@ -403,19 +388,16 @@ dependencies = [ ] [[package]] -name = "itertools" -version = "0.10.3" +name = "heck" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" [[package]] name = "libadwaita" -version = "0.1.0-beta-1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef1e2d4b5490caff8a1d44648f68721ab917f765a7fa1d0226fcdac42d86552" +checksum = "0d4b1d54d907dfa5d6663fdf4bdbe46c34747258b85c787adbf66187ccbaac81" dependencies = [ "gdk-pixbuf", "gdk4", @@ -430,9 +412,9 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.1.0-beta-1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a165d8c96824753ec072b70a9149790efa3d5abb07e130cda7eb04ef2006d4c" +checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8" dependencies = [ "gdk4-sys", "gio-sys", @@ -440,7 +422,7 @@ dependencies = [ "gobject-sys", "gtk4-sys", "libc", - "system-deps 3.2.0", + "system-deps", ] [[package]] @@ -466,9 +448,9 @@ checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "pango" -version = "0.14.8" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581" +checksum = "79211eff430c29cc38c69e0ab54bc78fa1568121ca9737707eee7f92a8417a94" dependencies = [ "bitflags", "glib", @@ -479,14 +461,14 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" +checksum = "7022c2fb88cd2d9d55e1a708a8c53a3ae8678234c4a54bf623400aeb7f31fac2" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 3.2.0", + "system-deps", ] [[package]] @@ -613,24 +595,6 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "syn" version = "1.0.82" @@ -644,30 +608,12 @@ dependencies = [ [[package]] name = "system-deps" -version = "3.2.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" +checksum = "7b1487aaddaacbc5d60a2a507ba1617c5ca66c57dd0dd07d0c5efd5b693841d4" dependencies = [ - "anyhow", - "cfg-expr 0.8.1", - "heck", - "itertools", - "pkg-config", - "strum", - "strum_macros", - "thiserror", - "toml", - "version-compare", -] - -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.0", - "heck", + "cfg-expr", + "heck 0.3.3", "pkg-config", "toml", "version-compare", @@ -722,9 +668,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "version-compare" -version = "0.0.11" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" [[package]] name = "version_check" diff --git a/Cargo.toml b/Cargo.toml index e4b6e9d..93bdd3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,11 @@ [package] -name = "adwaita-demo" +name = "focus-annotator" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -adw = { version = "0.1.0-beta-1", package = "libadwaita" } -gtk = { version = "0.3", package = "gtk4" } \ No newline at end of file +adw = { version = "0.1.0", package = "libadwaita" } +gtk = { version = "0.4.4", package = "gtk4" } + diff --git a/src/main.rs b/src/main.rs index 8cde061..8972b2b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,13 @@ use adw::prelude::*; use gtk::prelude::*; -use adw::{ActionRow, ApplicationWindow, HeaderBar}; -use gtk::{Application, Box, ListBox, Orientation}; +use adw::{ApplicationWindow, HeaderBar}; +use gtk::{Adjustment, Application, Box, Image, Orientation, Scale}; + +const MARGIN_TOP: i32 = 32; +const MARGIN_BOTTOM: i32 = 32; +const MARGIN_LEFT: i32 = 32; +const MARGIN_RIGHT: i32 = 32; fn main() { let application = Application::builder() @@ -14,45 +19,79 @@ fn main() { }); application.connect_activate(|app| { - // ActionRows are only available in Adwaita - let row = ActionRow::builder() - .activatable(true) - .selectable(false) - .title("Click me") + let adjustment = Adjustment::builder() + .lower(0.0) + .upper(10.0) + .value(5.0) + .step_increment(1.0) .build(); - row.connect_activated(|x| { - eprintln!("Clicked! {:?}", x); + + let image = Image::builder() + .file("/var/home/hannes/Downloads/test/I12982_X022_Y029_Z5048.jpg") + .vexpand(true) + .hexpand(true) + .margin_top(MARGIN_TOP) + .margin_end(MARGIN_RIGHT) + .margin_bottom(MARGIN_BOTTOM) + .margin_start(MARGIN_LEFT) + .build(); + + let scale = Scale::builder() + .orientation(Orientation::Vertical) + .adjustment(&adjustment) + .vexpand(true) + .margin_top(MARGIN_TOP) + .margin_bottom(MARGIN_BOTTOM) + .margin_start(MARGIN_LEFT) + .draw_value(true) + .inverted(true) + .round_digits(0) + .digits(0) + //(|x| eprintln!("Changed! {:?}", x)) + .build(); + + let content = Box::builder() + //.hexpand(true) + .orientation(Orientation::Horizontal) + .spacing(0) + .build(); + + content.append(&scale); + content.append(&image); + + scale.connect_value_changed(move |x| { + eprintln!("Changed value! {:?}", x.value()); + let path = if x.value() > 6.0 { + "/var/home/hannes/Downloads/test/I12982_X022_Y029_Z5048.jpg" + } else if x.value() > 3.0 { + "/var/home/hannes/Downloads/test/I12984_X022_Y029_Z5146.jpg" + } else { + "/var/home/hannes/Downloads/test/I12985_X022_Y029_Z5195.jpg" + }; + image.set_from_file(Some(path)); }); - - let list = ListBox::builder() - .margin_top(32) - .margin_end(32) - .margin_bottom(32) - .margin_start(32) - // the content class makes the list look nicer - .css_classes(vec![String::from("content")]) + //let show_start_title_buttons = Button::new(); + let header_bar = HeaderBar::builder() + .title_widget(&adw::WindowTitle::new("First App", "")) .build(); - list.append(&row); // Combine the content in a box - let content = Box::new(Orientation::Vertical, 0); + let title_widget_content = Box::new(Orientation::Vertical, 0); // Adwaitas' ApplicationWindow does not include a HeaderBar - content.append( - &HeaderBar::builder() - .title_widget(&adw::WindowTitle::new("First App", "")) - .build(), - ); - content.append(&list); + + title_widget_content.append(&header_bar); + title_widget_content.append(&content); let window = ApplicationWindow::builder() .application(app) - .default_width(350) + .default_width(800) + .default_height(600) // add content to window - .content(&content) + .content(&title_widget_content) .build(); window.show(); }); application.run(); -} \ No newline at end of file +}