This commit is contained in:
Guangzong Chen 2021-10-01 13:44:36 -04:00
parent 2eaca282bd
commit dbcd7c11b2
No known key found for this signature in database
GPG Key ID: E3E141D720E7F9A3

View File

@ -54,7 +54,6 @@ fn main() {
.application_id("org.example.HelloWorld") .application_id("org.example.HelloWorld")
.build(); .build();
app.connect_activate(|app| { app.connect_activate(|app| {
let provider = CssProvider::new(); let provider = CssProvider::new();
provider.load_from_data(include_bytes!("style.css")); provider.load_from_data(include_bytes!("style.css"));
StyleContext::add_provider_for_display( StyleContext::add_provider_for_display(
@ -71,7 +70,6 @@ fn main() {
.build(); .build();
let ui_layout_main_box = gtk4::Box::new(Orientation::Vertical, 1); let ui_layout_main_box = gtk4::Box::new(Orientation::Vertical, 1);
let ui_main_scroller_window = ScrolledWindow::builder().build(); let ui_main_scroller_window = ScrolledWindow::builder().build();
let ui_command_editor = gtk4::Entry::new(); let ui_command_editor = gtk4::Entry::new();
@ -82,15 +80,13 @@ fn main() {
ui_log_view.set_css_classes(&["textview1"]); ui_log_view.set_css_classes(&["textview1"]);
ui_log_view.set_vexpand(true); ui_log_view.set_vexpand(true);
ui_main_scroller_window.set_child(Some(&ui_log_view)); ui_main_scroller_window.set_child(Some(&ui_log_view));
ui_main_window.set_child(Some(&ui_layout_main_box)); ui_main_window.set_child(Some(&ui_layout_main_box));
ui_layout_main_box.append(&ui_main_scroller_window); ui_layout_main_box.append(&ui_main_scroller_window);
ui_layout_main_box.append(&ui_command_editor); ui_layout_main_box.append(&ui_command_editor);
ui_command_editor.add_css_class("entry1"); ui_command_editor.add_css_class("entry1");
ui_command_editor.show(); ui_command_editor.show();
ui_layout_main_box.show(); ui_layout_main_box.show();
ui_log_view.show();
let ui_receive_windows = ApplicationWindow::builder() let ui_receive_windows = ApplicationWindow::builder()
@ -99,19 +95,33 @@ fn main() {
.title("log") .title("log")
.build(); .build();
ui_receive_windows.set_hide_on_close(true); ui_receive_windows.set_hide_on_close(true);
let ui_receive_box = gtk4::Box::new(Orientation::Vertical, 1);
let menu_bar = gtk4::PopoverMenuBar::builder().build();
let ui_receive_scroll_window = ScrolledWindow::builder().build();
let ui_receive_view = gtk4::TextView::new(); let ui_receive_view = gtk4::TextView::new();
let menu_item_first = gtk4::MenuButton::new();
menu_item_first.set_label("hello");
menu_bar.add_child(&menu_item_first,"first");
menu_bar.show();
ui_receive_box.append(&menu_bar);
ui_receive_box.append(&ui_receive_scroll_window);
ui_receive_scroll_window.set_child(Some(&ui_receive_view));
ui_receive_view.set_vexpand(true); ui_receive_view.set_vexpand(true);
ui_receive_view.set_vscroll_policy(ScrollablePolicy::Natural); ui_receive_view.set_vscroll_policy(ScrollablePolicy::Natural);
ui_receive_view.set_editable(false); ui_receive_view.set_editable(false);
ui_receive_view.show(); ui_receive_view.show();
ui_receive_windows.set_child(Some(&ui_receive_view)); // ui_receive_windows.set_child(Some(&ui_receive_scroll_window));
ui_receive_windows.set_child(Some(&ui_receive_box));
ui_receive_windows.show(); ui_receive_windows.show();
ui_main_window.show(); ui_main_window.show();
ui_log_view.show();
// add short cut to open command panel.
// ui_receive_windows.
let trigger = gtk4::ShortcutTrigger::parse_string("<Control>P").unwrap();
let shortcut = gtk4::Shortcut::builder().trigger(&trigger).build();
let (sender_ui_upd, receiver_ui_upd) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); let (sender_ui_upd, receiver_ui_upd) = glib::MainContext::channel(glib::PRIORITY_DEFAULT);
@ -338,11 +348,23 @@ fn main_proc(to_main_tx: Sender<Message>, rx: Receiver<Message>, ui_upd: glib::S
} }
} }
Message::PortHaveData(data) => { Message::PortHaveData(data) => {
ui_upd.send(Message::UiUpdateReceiveMsg(String::from_utf8_lossy(&*data).parse().unwrap())).unwrap(); let mut message_show = String::new();
for i in data {
// let char = i as char;
// // let char = 'i';
if i.is_ascii_alphanumeric() || i.is_ascii_whitespace() || i.is_ascii_punctuation() || i.is_ascii_graphic() {
message_show.push(i as char);
}
}
// ui_upd.send(Message::UiUpdateReceiveMsg(String::from_utf8_lossy(&*data).parse().unwrap())).unwrap();
ui_upd.send(Message::UiUpdateReceiveMsg(message_show)).unwrap();
} }
Message::PortCloseSucceed => { Message::PortCloseSucceed => {
ui_upd.send(Message::UiUpdateLog("Close port succeed\n".to_string())).unwrap(); ui_upd.send(Message::UiUpdateLog("Close port succeed\n".to_string())).unwrap();
} }
Message::PortError(msg) => {
ui_upd.send(Message::UiUpdateLog(format!("port closed by error: {}", msg))).unwrap();
}
_ => {} _ => {}
} }
} }