a-fluidsynth: implement LV2_BANKPATCH__notify
[ardour.git] / gtk2_ardour / ardour_ui.h
index 80baef517c7ecdba81f45ba5bdfb4ad78fe226d2..fbe1486736008289c3ded60fb763f32d274a93a6 100644 (file)
@@ -47,6 +47,8 @@
 #include <gtkmm/eventbox.h>
 #include <gtkmm/menu.h>
 #include <gtkmm/menuitem.h>
+#include <gtkmm/messagedialog.h>
+#include <gtkmm/notebook.h>
 #include <gtkmm/button.h>
 #include <gtkmm/togglebutton.h>
 #include <gtkmm/treeview.h>
@@ -123,9 +125,9 @@ class ConnectionEditor;
 class DuplicateRouteDialog;
 class MainClock;
 class Mixer_UI;
-class ArdourPrompter;
 class PublicEditor;
 class SaveAsDialog;
+class SaveTemplateDialog;
 class SessionDialog;
 class SessionOptionEditorWindow;
 class Splash;
@@ -151,7 +153,8 @@ namespace Gtk {
        class ProgressBar;
 }
 
-namespace Gtkmm2ext {
+namespace ArdourWidgets {
+       class Prompter;
        class Tabbable;
 }
 
@@ -185,7 +188,7 @@ public:
        int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
        bool session_loaded;
        bool session_load_in_progress;
-       int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile&);
+       int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile*);
        bool session_is_new() const { return _session_is_new; }
 
        ARDOUR::Session* the_session() { return _session; }
@@ -280,54 +283,21 @@ public:
        void flush_videotimeline_cache (bool localcacheonly=false);
        void export_video (bool range = false);
 
-       void session_add_vca (std::string const &, uint32_t);
-
        void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order);
-       void session_add_audio_track (
-               int input_channels,
-               int32_t output_channels,
-               ARDOUR::TrackMode mode,
-               ARDOUR::RouteGroup* route_group,
-               uint32_t how_many,
-               std::string const & name_template,
-               bool strict_io,
-               ARDOUR::PresentationInfo::order_t order
-               ) {
-               session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io, order);
-       }
-
-       void session_add_audio_bus (
-                       int input_channels,
-                       int32_t output_channels,
-                       ARDOUR::RouteGroup* route_group,
-                       uint32_t how_many,
-                       std::string const & name_template,
-                       bool strict_io,
-                       ARDOUR::PresentationInfo::order_t order
-                       ) {
-               session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io, order);
-       }
-
-       void session_add_midi_track (
-                       ARDOUR::RouteGroup* route_group,
-                       uint32_t how_many,
-                       std::string const & name_template,
-                       bool strict_io,
-                       ARDOUR::PluginInfoPtr instrument,
-                       ARDOUR::Plugin::PresetRecord* preset,
-                       ARDOUR::PresentationInfo::order_t order
-               ) {
-               session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument, preset, order);
-       }
-
-       void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool,
+
+       void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*,
+                                     uint32_t, std::string const &, bool strict_io,
                                      ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
                                      ARDOUR::PresentationInfo::order_t order);
-       void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
+
+       void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool strict_io,
+                                  ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
                                   ARDOUR::PresentationInfo::order_t order);
+
        void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
                                     ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*,
                                     ARDOUR::PresentationInfo::order_t order);
+
        void display_insufficient_ports_message ();
 
        void attach_to_engine ();
@@ -378,6 +348,8 @@ public:
 
        ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
 
+       std::map<std::string, std::string> route_setup_info (const std::string& script_path);
+
 protected:
        friend class PublicEditor;
 
@@ -414,15 +386,15 @@ private:
        bool          _initial_verbose_plugin_scan;
        bool           first_time_engine_run;
 
-       void show_tabbable (Gtkmm2ext::Tabbable*);
-       void hide_tabbable (Gtkmm2ext::Tabbable*);
-       void detach_tabbable (Gtkmm2ext::Tabbable*);
-       void attach_tabbable (Gtkmm2ext::Tabbable*);
-       void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
-       void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
+       void show_tabbable (ArdourWidgets::Tabbable*);
+       void hide_tabbable (ArdourWidgets::Tabbable*);
+       void detach_tabbable (ArdourWidgets::Tabbable*);
+       void attach_tabbable (ArdourWidgets::Tabbable*);
+       void button_change_tabbable_visibility (ArdourWidgets::Tabbable*);
+       void key_change_tabbable_visibility (ArdourWidgets::Tabbable*);
        void toggle_editor_and_mixer ();
 
-       void tabbable_state_change (Gtkmm2ext::Tabbable&);
+       void tabbable_state_change (ArdourWidgets::Tabbable&);
 
        void toggle_meterbridge ();
        void toggle_luawindow ();
@@ -650,10 +622,13 @@ private:
 
        void open_session ();
        void open_recent_session ();
-       bool process_save_template_prompter (ArdourPrompter& prompter);
+       void save_template_dialog_response (int response, SaveTemplateDialog* d);
        void save_template ();
        void manage_templates ();
 
+       void meta_session_setup (const std::string& script_path);
+       void meta_route_setup (const std::string& script_path);
+
        void edit_metadata ();
        void import_metadata ();
 
@@ -695,7 +670,7 @@ private:
 
        guint32  last_key_press_time;
 
-       bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it);
+       bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
        void snapshot_session (bool switch_to_it);
 
        void quick_snapshot_session (bool switch_to_it);  //does not promtp for name, just makes a timestamped file