From 10bde28b2eadedca10324dca5d83499c5d3a152d Mon Sep 17 00:00:00 2001 From: Nil Gradisnik Date: Sat, 2 Dec 2017 23:19:41 -0800 Subject: [PATCH] FileChooserDialog added to glade --- src/gtk-ui.glade | 130 ++++++++++++++++++++++++++++++++--------------- src/main.rs | 19 ++++--- 2 files changed, 100 insertions(+), 49 deletions(-) diff --git a/src/gtk-ui.glade b/src/gtk-ui.glade index a5d0585..aea537b 100644 --- a/src/gtk-ui.glade +++ b/src/gtk-ui.glade @@ -33,47 +33,13 @@ Author: Nil Gradisnik - - False - dialog - Markdown Rust - 0.1.0 - Fast, simple, distraction free Markdown editor. - https://github.com/nilgradisnik/markdown-rs - markdown-rs - Nil Gradisnik <nil.gradisnik@gmail.com> - text-x-generic - mit-x11 - - - False - vertical - 2 - - - False - end - - - - - - - - - False - False - 0 - - - - - - - - - - + + + text/markdown + + + *.md + False @@ -240,4 +206,86 @@ Author: Nil Gradisnik + + False + dialog + window + window + Markdown Rust + 0.1.0 + Fast, simple, distraction free Markdown editor. + https://github.com/nilgradisnik/markdown-rs + markdown-rs + Nil Gradisnik <nil.gradisnik@gmail.com> + text-x-generic + mit-x11 + + + False + vertical + 2 + + + False + end + + + + + + + + + False + False + 0 + + + + + + + + + + + + + False + center-on-parent + dialog + window + window + md_filter + + + False + vertical + 2 + + + False + end + + + + + + + + + False + False + 0 + + + + + + + + + + + diff --git a/src/main.rs b/src/main.rs index 84150d6..da9a694 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,7 +44,7 @@ macro_rules! clone { fn build_ui(application: >k::Application) { let glade_src = include_str!("gtk-ui.glade"); let builder = Builder::new(); - builder.add_from_string(glade_src).expect("Couldn't add from string"); + builder.add_from_string(glade_src).expect("Builder couldn't add from string"); let window: gtk::ApplicationWindow = builder.get_object("window").expect("Couldn't get window"); window.set_application(application); @@ -57,18 +57,21 @@ fn build_ui(application: >k::Application) { let text_view: sourceview::View = builder.get_object("text_view").unwrap(); let markdown_view: gtk::TextView = builder.get_object("markdown_view").unwrap(); + let file_chooser: gtk::FileChooserDialog = builder.get_object("file_chooser").unwrap(); + file_chooser.add_buttons(&[ + ("Open", gtk::ResponseType::Ok.into()), + ("Cancel", gtk::ResponseType::Cancel.into()), + ]); + let about_dialog: gtk::AboutDialog = builder.get_object("about_dialog").unwrap(); about_dialog.set_program_name(NAME); about_dialog.set_version(VERSION); about_dialog.set_authors(&[AUTHORS]); about_dialog.set_comments(DESCRIPTION); - open_button.connect_clicked(clone!(window, text_view, markdown_view => move |_| { - let file_chooser = gtk::FileChooserDialog::new(Some("Open File"), Some(&window), gtk::FileChooserAction::Open); - file_chooser.add_buttons(&[ - ("Open", gtk::ResponseType::Ok.into()), - ("Cancel", gtk::ResponseType::Cancel.into()), - ]); + open_button.connect_clicked(clone!(text_view, markdown_view => move |_| { + file_chooser.show(); + if file_chooser.run() == gtk::ResponseType::Ok.into() { let filename = file_chooser.get_filename().expect("Couldn't get filename"); let file = File::open(&filename).expect("Couldn't open file"); @@ -81,7 +84,7 @@ fn build_ui(application: >k::Application) { markdown_view.get_buffer().unwrap().set_text(&string_to_html(&contents)); } - file_chooser.destroy(); + file_chooser.hide(); })); text_view.connect_key_release_event(clone!(text_view, markdown_view, live_button => move |_, _| { -- 2.39.2