From 5b76c3bcda4438ef89058cb6e646cd142d530f2d Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Sat, 13 Apr 2024 00:14:44 +0200 Subject: [PATCH] add hostname entry row with clipboard button --- Cargo.lock | 37 +++++++++++++++++++++++++++--- Cargo.toml | 1 + resources/client_row.ui | 10 ++++++++ resources/resources.gresource.xml | 2 +- resources/window.ui | 19 +++++++++++++++ src/frontend/gtk.rs | 3 +-- src/frontend/gtk/client_row/imp.rs | 7 ++++++ src/frontend/gtk/window/imp.rs | 26 ++++++++++++++++++++- 8 files changed, 98 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7fe20e..92e659a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1142,6 +1142,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "hostname" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" +dependencies = [ + "cfg-if", + "libc", + "windows 0.52.0", +] + [[package]] name = "humantime" version = "2.1.0" @@ -1241,6 +1252,7 @@ dependencies = [ "futures-core", "glib-build-tools", "gtk4", + "hostname 0.4.0", "keycode", "libadwaita", "libc", @@ -1259,7 +1271,7 @@ dependencies = [ "wayland-protocols", "wayland-protocols-misc", "wayland-protocols-wlr", - "windows", + "windows 0.54.0", "x11", ] @@ -1733,7 +1745,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" dependencies = [ - "hostname", + "hostname 0.3.1", "quick-error", ] @@ -2331,13 +2343,32 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.4", +] + [[package]] name = "windows" version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ - "windows-core", + "windows-core 0.54.0", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ "windows-targets 0.52.4", ] diff --git a/Cargo.toml b/Cargo.toml index 584fd98..f09c21c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ async-channel = { version = "2.1.1", optional = true } keycode = "0.4.0" once_cell = "1.19.0" num_enum = "0.7.2" +hostname = "0.4.0" [target.'cfg(unix)'.dependencies] libc = "0.2.148" diff --git a/resources/client_row.ui b/resources/client_row.ui index ecb44e6..2bdd726 100644 --- a/resources/client_row.ui +++ b/resources/client_row.ui @@ -11,6 +11,16 @@ enable + + + + + network-wired-symbolic + center + end + resolve dns + + diff --git a/resources/resources.gresource.xml b/resources/resources.gresource.xml index eb701a0..b5d9209 100644 --- a/resources/resources.gresource.xml +++ b/resources/resources.gresource.xml @@ -5,6 +5,6 @@ client_row.ui - de.feschber.LanMouse.svg + de.feschber.LanMouse.svg diff --git a/resources/window.ui b/resources/window.ui index 88c6270..ea094b7 100644 --- a/resources/window.ui +++ b/resources/window.ui @@ -99,6 +99,25 @@ + + + hostname + + + <span font_style="italic" font_weight="light" foreground="darkgrey">could not determine hostname</span> + true + center + + + + + edit-copy-symbolic + center + + + + + diff --git a/src/frontend/gtk.rs b/src/frontend/gtk.rs index 2664c8c..a074aa4 100644 --- a/src/frontend/gtk.rs +++ b/src/frontend/gtk.rs @@ -12,8 +12,7 @@ use crate::frontend::gtk::window::Window; use adw::Application; use gtk::{ - gdk::Display, glib::clone, prelude::*, subclass::prelude::ObjectSubclassIsExt, - IconTheme, + gdk::Display, glib::clone, prelude::*, subclass::prelude::ObjectSubclassIsExt, IconTheme, }; use gtk::{gio, glib, prelude::ApplicationExt}; diff --git a/src/frontend/gtk/client_row/imp.rs b/src/frontend/gtk/client_row/imp.rs index 35c0927..d6dead2 100644 --- a/src/frontend/gtk/client_row/imp.rs +++ b/src/frontend/gtk/client_row/imp.rs @@ -14,6 +14,8 @@ pub struct ClientRow { #[template_child] pub enable_switch: TemplateChild, #[template_child] + pub dns_button: TemplateChild, + #[template_child] pub hostname: TemplateChild, #[template_child] pub port: TemplateChild, @@ -76,6 +78,11 @@ impl ClientRow { true // dont run default handler } + #[template_callback] + fn handle_request_dns(&self) -> bool { + false + } + #[template_callback] fn handle_client_delete(&self, _button: &Button) { log::debug!("delete button pressed -> requesting delete"); diff --git a/src/frontend/gtk/window/imp.rs b/src/frontend/gtk/window/imp.rs index de3ecf5..74c0591 100644 --- a/src/frontend/gtk/window/imp.rs +++ b/src/frontend/gtk/window/imp.rs @@ -8,7 +8,8 @@ use std::os::unix::net::UnixStream; use adw::subclass::prelude::*; use adw::{prelude::*, ActionRow, ToastOverlay}; use glib::subclass::InitializingObject; -use gtk::{gio, glib, Button, CompositeTemplate, Entry, ListBox}; +use gtk::glib::clone; +use gtk::{gdk, gio, glib, Button, CompositeTemplate, Entry, Label, ListBox}; use crate::config::DEFAULT_PORT; @@ -26,6 +27,8 @@ pub struct Window { #[template_child] pub port_entry: TemplateChild, #[template_child] + pub hostname_label: TemplateChild