mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
implement socket connection info
This commit is contained in:
parent
12df902983
commit
ec1a9cc66a
1 changed files with 43 additions and 1 deletions
|
|
@ -4,6 +4,7 @@ use adw::{
|
||||||
prelude::{ActionRowExt, PreferencesDialogExt, PreferencesGroupExt, PreferencesPageExt},
|
prelude::{ActionRowExt, PreferencesDialogExt, PreferencesGroupExt, PreferencesPageExt},
|
||||||
};
|
};
|
||||||
use gtk::glib::gformat;
|
use gtk::glib::gformat;
|
||||||
|
use sourceview::prelude::{SocketAddressExt, SocketConnectableExt};
|
||||||
|
|
||||||
pub trait Dialog {
|
pub trait Dialog {
|
||||||
fn info(info: &Info) -> Self;
|
fn info(info: &Info) -> Self;
|
||||||
|
|
@ -15,7 +16,6 @@ impl Dialog for PreferencesDialog {
|
||||||
.search_enabled(true)
|
.search_enabled(true)
|
||||||
.title("Page info")
|
.title("Page info")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
d.add(&{
|
d.add(&{
|
||||||
let p = PreferencesPage::builder()
|
let p = PreferencesPage::builder()
|
||||||
.title("General")
|
.title("General")
|
||||||
|
|
@ -58,6 +58,48 @@ impl Dialog for PreferencesDialog {
|
||||||
} // @TODO header size, total size, etc.
|
} // @TODO header size, total size, etc.
|
||||||
p
|
p
|
||||||
});
|
});
|
||||||
|
d.add(&{
|
||||||
|
let p = PreferencesPage::builder()
|
||||||
|
.title("Connection")
|
||||||
|
.icon_name("network-transmit-receive")
|
||||||
|
.build();
|
||||||
|
if let Some(ref socket) = info.socket {
|
||||||
|
use gtk::gio::SocketFamily;
|
||||||
|
fn f2s(socket_family: &SocketFamily) -> &str {
|
||||||
|
match socket_family {
|
||||||
|
SocketFamily::Invalid => "Invalid",
|
||||||
|
SocketFamily::Unix => "Unix",
|
||||||
|
SocketFamily::Ipv4 => "IPv4",
|
||||||
|
SocketFamily::Ipv6 => "IPv6",
|
||||||
|
_ => panic!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn r(title: &str, subtitle: &str) -> ActionRow {
|
||||||
|
ActionRow::builder()
|
||||||
|
.css_classes(["property"])
|
||||||
|
.subtitle_selectable(true)
|
||||||
|
.subtitle(subtitle)
|
||||||
|
.title_selectable(true)
|
||||||
|
.title(title)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
p.add(&{
|
||||||
|
let g = PreferencesGroup::builder().title("Remote").build();
|
||||||
|
g.add(&r("Address", &socket.remote_address.to_string()));
|
||||||
|
g.add(&r("Family", f2s(&socket.remote_address.family())));
|
||||||
|
g.add(&r("Location", "-")); // @TODO optional, MaxMind DB
|
||||||
|
g
|
||||||
|
});
|
||||||
|
p.add(&{
|
||||||
|
let g = PreferencesGroup::builder().title("Local").build();
|
||||||
|
g.add(&r("Address", &socket.local_address.to_string()));
|
||||||
|
g.add(&r("Family", f2s(&socket.local_address.family())));
|
||||||
|
g.add(&r("Location", "-")); // @TODO optional, MaxMind DB
|
||||||
|
g
|
||||||
|
});
|
||||||
|
}
|
||||||
|
p
|
||||||
|
});
|
||||||
if info.redirect.is_some() {
|
if info.redirect.is_some() {
|
||||||
d.add(&{
|
d.add(&{
|
||||||
let g = PreferencesGroup::new();
|
let g = PreferencesGroup::new();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue