summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-14 23:26:25 +0100
committerRobin Gareus <robin@gareus.org>2019-12-14 23:26:25 +0100
commit901bf1ab80d7b7a74f7e703c205a34c6528f4c28 (patch)
tree27c061c0fdc0e9243a1d5c3926de502044a8ee8a
parent514c05a44edca946d07f6c9028b36698a049a3d7 (diff)
Add a MessageDialog wrapper that handles the splash-screen
-rw-r--r--gtk2_ardour/ardour_message.cc98
-rw-r--r--gtk2_ardour/ardour_message.h53
-rw-r--r--gtk2_ardour/wscript1
3 files changed, 152 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour_message.cc b/gtk2_ardour/ardour_message.cc
new file mode 100644
index 0000000000..d6302fb2c6
--- /dev/null
+++ b/gtk2_ardour/ardour_message.cc
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2019 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "ardour_message.h"
+#include "splash.h"
+
+using namespace Gtk;
+
+ArdourMessageDialog::ArdourMessageDialog (const Glib::ustring& message,
+ bool use_markup,
+ Gtk::MessageType type,
+ Gtk::ButtonsType buttons,
+ bool modal)
+ : Gtk::MessageDialog (message, use_markup, type, buttons, modal)
+ , _splash_pushed (false)
+{
+ set_position (WIN_POS_MOUSE);
+}
+
+ArdourMessageDialog::ArdourMessageDialog (Gtk::Window& parent,
+ const Glib::ustring& message,
+ bool use_markup,
+ Gtk::MessageType type,
+ Gtk::ButtonsType buttons,
+ bool modal)
+ : Gtk::MessageDialog (parent, message, use_markup, type, buttons, modal)
+ , _splash_pushed (false)
+{
+ set_transient_for (parent);
+ set_position (WIN_POS_MOUSE);
+}
+
+ArdourMessageDialog::~ArdourMessageDialog ()
+{
+ pop_splash ();
+}
+
+int
+ArdourMessageDialog::run ()
+{
+ push_splash ();
+ int rv = Gtk::MessageDialog::run ();
+ pop_splash ();
+ return rv;
+}
+
+void
+ArdourMessageDialog::show ()
+{
+ push_splash ();
+ Gtk::MessageDialog::show ();
+}
+
+void
+ArdourMessageDialog::hide ()
+{
+ Gtk::MessageDialog::hide ();
+ pop_splash ();
+}
+
+void
+ArdourMessageDialog::pop_splash ()
+{
+ if (_splash_pushed) {
+ Splash* spl = Splash::instance();
+ if (spl) {
+ spl->pop_front();
+ }
+ _splash_pushed = false;
+ }
+}
+
+void
+ArdourMessageDialog::push_splash ()
+{
+ if (Splash::exists()) {
+ Splash* spl = Splash::instance();
+ if (spl->is_visible()) {
+ spl->pop_back_for (*this);
+ _splash_pushed = true;
+ }
+ }
+}
diff --git a/gtk2_ardour/ardour_message.h b/gtk2_ardour/ardour_message.h
new file mode 100644
index 0000000000..d9de74b0df
--- /dev/null
+++ b/gtk2_ardour/ardour_message.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2019 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _ardour_message_h_
+#define _ardour_message_h_
+
+#include <gtkmm/messagedialog.h>
+
+class ArdourMessageDialog : public Gtk::MessageDialog
+{
+public:
+ ArdourMessageDialog (const Glib::ustring& message,
+ bool use_markup = false,
+ Gtk::MessageType type = Gtk::MESSAGE_INFO,
+ Gtk::ButtonsType buttons = Gtk::BUTTONS_OK,
+ bool modal = false);
+
+ ArdourMessageDialog (Gtk::Window& parent,
+ const Glib::ustring& message,
+ bool use_markup = false,
+ Gtk::MessageType type = Gtk::MESSAGE_INFO,
+ Gtk::ButtonsType buttons = Gtk::BUTTONS_OK,
+ bool modal = false);
+
+ virtual ~ArdourMessageDialog ();
+
+ int run ();
+ void show ();
+ void hide ();
+
+protected:
+ void pop_splash ();
+ void push_splash ();
+
+ bool _splash_pushed;
+};
+
+#endif
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index fe9e618c61..b670932940 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -33,6 +33,7 @@ gtk2_ardour_sources = [
'analysis_window.cc',
'ardour_dialog.cc',
'ardour_http.cc',
+ 'ardour_message.cc',
'ardour_ui.cc',
'ardour_ui2.cc',
'ardour_ui3.cc',