Merge branch 'master' into cairocanvas
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / prompter.h
index 5997cc8b243c88ab936f9d5933afc65def2d349f..72d9f2149bdf0bfc066958bbaedad363d64f6a87 100644 (file)
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __gtkmm2ext_prompter_h__
 #define __gtkmm2ext_prompter_h__
 
 #include <string>
-#include <gtkmm.h>
+#include <gtkmm/box.h>
+#include <gtkmm/entry.h>
+#include <gtkmm/label.h>
+#include <gtkmm/dialog.h>
 #include <sigc++/sigc++.h>
 
+namespace Gtk {
+       class Window;
+}
+
 namespace Gtkmm2ext {
 
-class Prompter : public Gtk::Window
+class Prompter : public Gtk::Dialog
 
 {
   public:
        Prompter (bool modal = false);
+       Prompter (Gtk::Window& parent, bool modal = false);
        ~Prompter () {};
 
        void set_prompt (std::string prompt) {
@@ -45,40 +52,23 @@ class Prompter : public Gtk::Window
 
        void change_labels (std::string ok, std::string cancel);
 
-       enum PrompterStatus {
-               entered,
-               cancelled
-       };
-
-       PrompterStatus status;
-       void get_result (std::string &str);
-
-       /* the prompter will send a `done' signal when it is finished.
-          the "caller" can then check `status' and if it wants to
-          can then call `get_result()'.
-       */
-
-       sigc::signal<void> done;
+       void get_result (std::string &str, bool strip=true);
 
   protected:
        Gtk::Entry& the_entry() { return entry; }
 
+       void on_entry_changed ();
+       void on_show ();
+
   private:
-       Gtk::VBox packer;
-       Gtk::HBox buttonBox;
        Gtk::Entry entry;
-       Gtk::VBox entryBox;
+       Gtk::HBox entryBox;
        Gtk::Label entryLabel;
-       Gtk::Button ok;
-       Gtk::Button cancel;
-
-       void activated ();
-       void cancel_click ();
-
-       bool deleted (GdkEventAny *);
+       bool first_show;
+       bool can_accept_from_entry;
 
-       void on_realize ();
-       void on_map ();
+       void init ();
+       void entry_activated ();
 };
 
 } /* namespace */