summaryrefslogtreecommitdiff
path: root/gtk2_ardour/luadialog.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-09-02 15:42:34 +0200
committerRobin Gareus <robin@gareus.org>2019-09-02 15:44:43 +0200
commit2d680f30610623d32c7db1b16be6068d7f71a87a (patch)
tree6647a8adafa52cf1d20b004a5ac3b8e64c64bbe7 /gtk2_ardour/luadialog.h
parent487503cab89eea17b74199c35eac6364e05d2c2c (diff)
Move LuaProgressDialog into "LuaDialog" namespace
Define class in header file Match C++ and Lua binding namespaces (for documentation)
Diffstat (limited to 'gtk2_ardour/luadialog.h')
-rw-r--r--gtk2_ardour/luadialog.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/gtk2_ardour/luadialog.h b/gtk2_ardour/luadialog.h
index 68d332d0a5..a2acff6574 100644
--- a/gtk2_ardour/luadialog.h
+++ b/gtk2_ardour/luadialog.h
@@ -22,6 +22,7 @@
#include <cassert>
#include <gtkmm/table.h>
#include <gtkmm/messagedialog.h>
+#include <gtkmm/progressbar.h>
#include "LuaBridge/LuaBridge.h"
@@ -98,6 +99,49 @@ private:
std::string _title;
};
+/** Synchronous GUI-thread Progress dialog
+ *
+ * This shows a modal progress dialog with an optional
+ * "Cancel" button. Since it runs in the UI thread
+ * the script needs to regularly call progress(),
+ * as well as close the dialog, as needed.
+ */
+class ProgressWindow : public ArdourDialog
+{
+public:
+ /** Create a new progress window.
+ * @param title Window title
+ * @param allow_cancel include a "Cancel" option
+ */
+ ProgressWindow (std::string const& title, bool allow_cancel);
+
+ /** Report progress and update GUI.
+ * @param prog progress in range 0..1 show a bar, values outside this range show a pulsing dialog.
+ * @param text optional text to show on the progress-bar
+ * @return true if cancel was clicked, false otherwise
+ */
+ bool progress (float prog, std::string const& text = "");
+
+ bool canceled () const {
+ return _canceled;
+ }
+
+ /** Close and hide the dialog.
+ *
+ * This is required to be at the end, since the dialog
+ * is modal and prevents other UI operations while visible.
+ */
+ void done ();
+
+private:
+ void cancel_clicked () {
+ _canceled = true;
+ }
+
+ Gtk::ProgressBar _bar;
+ bool _canceled;
+};
+
}; // namespace
#endif