Prepare central engine check and user notification
[ardour.git] / gtk2_ardour / export_file_notebook.h
index 720c3b4bfde9a3bc000e05ad4bb61553a7880857..d2545cb0ae61ddde9fd7e4b5de8f36d4a3a3b222 100644 (file)
 #define __export_file_notebook_h__
 
 #include <sigc++/signal.h>
-#include <gtkmm.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"
 
 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 ();
+       void update_example_filenames();
 
-       Glib::ustring get_nth_format_name (uint32_t n);
+       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;
@@ -56,6 +64,7 @@ class ExportFileNotebook : public Gtk::Notebook, public ARDOUR::SessionHandlePtr
        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);
@@ -67,8 +76,9 @@ class ExportFileNotebook : public Gtk::Notebook, public ARDOUR::SessionHandlePtr
        uint32_t     last_visible_page;
        uint32_t     page_counter;
 
-       class FilePage : public Gtk::VBox {
-         public:
+       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);
@@ -77,16 +87,25 @@ class ExportFileNotebook : public Gtk::Notebook, public ARDOUR::SessionHandlePtr
 
                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;
@@ -97,11 +116,14 @@ class ExportFileNotebook : public Gtk::Notebook, public ARDOUR::SessionHandlePtr
                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;