X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fprompter.cc;h=6bcce00c6f4905fcb25c3e6e702af35b13a48778;hb=9747fa891093251d1c828cd9acadebc4a432d6cf;hp=83a64e78d4f1260fafadb3d66d90af28f2dc92ab;hpb=d09f6b3016bacbc2871a8946cbb24ad705076509;p=ardour.git diff --git a/libs/gtkmm2ext/prompter.cc b/libs/gtkmm2ext/prompter.cc index 83a64e78d4..6bcce00c6f 100644 --- a/libs/gtkmm2ext/prompter.cc +++ b/libs/gtkmm2ext/prompter.cc @@ -20,6 +20,9 @@ #include +#include + +#include #include #include "i18n.h" @@ -27,92 +30,57 @@ using namespace std; using namespace Gtkmm2ext; +Prompter::Prompter (Gtk::Window& parent, bool modal) + : Gtk::Dialog ("", parent, modal) +{ + init (); +} + Prompter::Prompter (bool modal) - : Gtk::Window (Gtk::WINDOW_POPUP), - ok (_("OK")), - cancel (_("Cancel")) + : Gtk::Dialog ("", modal) { + init (); +} + +void +Prompter::init () +{ + set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG); set_position (Gtk::WIN_POS_MOUSE); set_name ("Prompter"); - set_modal (modal); - - add (packer); + set_default_response (Gtk::RESPONSE_ACCEPT); + + add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); + add_button (Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT); + entryLabel.set_line_wrap (true); entryLabel.set_name ("PrompterLabel"); entryBox.set_homogeneous (false); - entryBox.set_spacing (25); + entryBox.set_spacing (5); entryBox.set_border_width (10); entryBox.pack_start (entryLabel); entryBox.pack_start (entry, false, false); - buttonBox.set_homogeneous (true); - buttonBox.set_border_width (10); - buttonBox.pack_start (ok, false, true); - buttonBox.pack_start (cancel, false, true); - - packer.pack_start (entryBox); - packer.pack_start (buttonBox); - - entry.signal_activate().connect(mem_fun(*this,&Prompter::activated)); - ok.signal_clicked().connect(mem_fun(*this,&Prompter::activated)); - cancel.signal_clicked().connect(mem_fun(*this,&Prompter::cancel_click)); - signal_delete_event().connect (mem_fun (*this, &Prompter::deleted)); + get_vbox()->pack_start (entryBox); + show_all_children(); + entry.signal_activate().connect (bind (mem_fun (*this, &Prompter::response), Gtk::RESPONSE_ACCEPT)); } void Prompter::change_labels (string okstr, string cancelstr) { - dynamic_cast(ok.get_child())->set_text (okstr); - dynamic_cast(cancel.get_child())->set_text (cancelstr); + // dynamic_cast(ok.get_child())->set_text (okstr); + // dynamic_cast(cancel.get_child())->set_text (cancelstr); } void -Prompter::on_realize () -{ - Gtk::Window::on_realize (); - Glib::RefPtr win (get_window()); - win->set_decorations (Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH|Gdk::DECOR_MENU)); -} - -void -Prompter::on_map () -{ - entry.grab_focus(); - Gtk::Window::on_map (); -} - -void -Prompter::activated () - -{ - status = entered; - hide_all (); - done (); -} - -void -Prompter::cancel_click () - -{ - entry.set_text (""); - status = cancelled; - hide_all (); - done (); -} - -bool -Prompter::deleted (GdkEventAny *ev) -{ - cancel_click (); - return false; -} - -void -Prompter::get_result (string &str) - +Prompter::get_result (string &str, bool strip) { str = entry.get_text (); + if (strip) { + strip_whitespace_edges (str); + } }