Put the sidechain ports into a dedicated tab in PortMatrix
[ardour.git] / gtk2_ardour / export_file_notebook.h
index aed9a0fcc2a62a4403cc2c6ebc925ec4857dc447..d2545cb0ae61ddde9fd7e4b5de8f36d4a3a3b222 100644 (file)
 #define __export_file_notebook_h__
 
 #include <sigc++/signal.h>
-#include <gtkmm.h>
 
-#include <ardour/export_profile_manager.h>
+#include <gtkmm/alignment.h>
+#include <gtkmm/box.h>
+#include <gtkmm/button.h>
+#include <gtkmm/checkbutton.h>
+#include <gtkmm/label.h>
+#include <gtkmm/notebook.h>
+
+#include "ardour/export_profile_manager.h"
+#include "ardour/session_handle.h"
 
 #include "export_format_selector.h"
 #include "export_filename_selector.h"
+#include "soundcloud_export_selector.h"
 
-namespace ARDOUR {
-       class Session;
-}
-
-
-class ExportFileNotebook : public Gtk::Notebook
+class ExportFileNotebook : public Gtk::Notebook, public ARDOUR::SessionHandlePtr
 {
-  public:
-       
+public:
+
        ExportFileNotebook ();
-       
+
        void set_session_and_manager (ARDOUR::Session * s, boost::shared_ptr<ARDOUR::ExportProfileManager> manager);
        void sync_with_manager ();
-       
-       Glib::ustring get_nth_format_name (uint32_t n);
-       
+       void update_example_filenames();
+
+       boost::shared_ptr<SoundcloudExportSelector> soundcloud_export_selector;
+
        sigc::signal<void> CriticalSelectionChanged;
-       
-  private:
+
+private:
 
        typedef boost::shared_ptr<ARDOUR::ExportProfileManager> ManagerPtr;
        typedef boost::shared_ptr<ARDOUR::ExportFormatSpecification> FormatPtr;
        typedef boost::shared_ptr<ARDOUR::ExportFilename> FilenamePtr;
        class FilePage;
-       
+
        ManagerPtr        profile_manager;
-       ARDOUR::Session * session;
 
        void add_new_file_page ();
        void add_file_page (ARDOUR::ExportProfileManager::FormatStatePtr format_state, ARDOUR::ExportProfileManager::FilenameStatePtr filename_state);
        void remove_file_page (FilePage * page);
        void update_remove_file_page_sensitivity ();
-       
+       void update_soundcloud_upload ();
+
        sigc::connection page_change_connection;
        void handle_page_change (GtkNotebookPage*, uint32_t page);
-       
+
        Gtk::HBox    new_file_hbox;
        Gtk::Button  new_file_button;
        Gtk::VBox    new_file_dummy;
-       
+
        uint32_t     last_visible_page;
        uint32_t     page_counter;
 
-       class FilePage : public Gtk::VBox {
-         public:
-               FilePage (ARDOUR::Session * s, ManagerPtr profile_manager, ExportFileNotebook * parent, uint32_t number, 
+       class FilePage : public Gtk::VBox
+       {
+       public:
+               FilePage (ARDOUR::Session * s, ManagerPtr profile_manager, ExportFileNotebook * parent, uint32_t number,
                          ARDOUR::ExportProfileManager::FormatStatePtr format_state,
                          ARDOUR::ExportProfileManager::FilenameStatePtr filename_state);
-               
+
                virtual ~FilePage ();
-               
+
                Gtk::Widget & get_tab_widget () { return tab_widget; }
                void set_remove_sensitive (bool value);
-               Glib::ustring get_format_name () const;
-               
+               std::string get_format_name () const;
+               bool get_soundcloud_upload () const;
+
+               void update_example_filename();
+
+               void update_analysis_button ();
+               void update_soundcloud_upload_button ();
+
                ARDOUR::ExportProfileManager::FormatStatePtr   get_format_state () const { return format_state; }
                ARDOUR::ExportProfileManager::FilenameStatePtr get_filename_state () const { return filename_state; }
-               
+
                sigc::signal<void> CriticalSelectionChanged;
-               
-         private:
+
+       private:
                void save_format_to_manager (FormatPtr format);
                void update_tab_label ();
-               
+               void critical_selection_changed ();
+               void analysis_changed ();
+               void soundcloud_upload_changed ();
+
                ARDOUR::ExportProfileManager::FormatStatePtr   format_state;
                ARDOUR::ExportProfileManager::FilenameStatePtr filename_state;
                ManagerPtr                                     profile_manager;
-       
+
                /* GUI components */
-       
+
                Gtk::Label              format_label;
                Gtk::Alignment          format_align;
                ExportFormatSelector    format_selector;
-       
+               PBD::ScopedConnection   format_connection;
+
                Gtk::Label              filename_label;
                Gtk::Alignment          filename_align;
                ExportFilenameSelector  filename_selector;
-       
+
+               Gtk::CheckButton        soundcloud_upload_button;
+               Gtk::CheckButton        analysis_button;
                Gtk::HBox               tab_widget;
                Gtk::Label              tab_label;
                Gtk::Alignment          tab_close_alignment;