Add newline to DEBUG::Soundcloud so that it's readable & flushed
[ardour.git] / gtk2_ardour / session_dialog.h
index 21d2f5ea3ffb0fa46954d1fc65ab4824070db76c..a464e5a5ef182fe09ed70f7a1b79e39d4dfcf6f0 100644 (file)
@@ -47,9 +47,13 @@ class EngineControl;
 
 class SessionDialog : public ArdourDialog {
   public:
-        SessionDialog (bool require_new, const std::string& session_name, const std::string& session_path, const std::string& template_name);
+        SessionDialog (bool require_new, const std::string& session_name, const std::string& session_path,
+                      const std::string& template_name, bool cancel_not_quit);
+        SessionDialog ();
        ~SessionDialog ();
 
+        void clear_given ();
+
        std::string session_name (bool& should_be_new);
        std::string session_folder ();
 
@@ -72,6 +76,11 @@ class SessionDialog : public ArdourDialog {
        bool connect_outs_to_master() const;
        bool connect_outs_to_physical() const;
 
+       void set_provided_session(const std::string& session_name, const std::string& session_path) {
+               _provided_session_name = session_name;
+               _provided_session_path = session_path;
+       }
+
   private:
        bool new_only;
         std::string _provided_session_name;
@@ -85,12 +94,14 @@ class SessionDialog : public ArdourDialog {
         Gtk::Button* quit_button;
 
         bool back_button_pressed (GdkEventButton*);
+        bool open_button_pressed (GdkEventButton*);
 
         Gtk::Frame info_frame;
 
        /* initial choice page */
 
        void setup_initial_choice_box ();
+       void setup_recent_sessions ();
        Gtk::VBox ic_vbox;
        Gtk::Button ic_new_session_button;
         void new_session_button_clicked ();
@@ -101,7 +112,7 @@ class SessionDialog : public ArdourDialog {
 
        struct RecentSessionsSorter {
            bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
-                   return cmp_nocase(a.first, b.first) == -1;
+                   return ARDOUR::cmp_nocase(a.first, b.first) == -1;
            }
        };
 
@@ -112,26 +123,34 @@ class SessionDialog : public ArdourDialog {
                    add (fullpath);
                    add (sample_rate);
                    add (disk_format);
+                   add (time_modified);
+                   add (time_formatted);
            }
            Gtk::TreeModelColumn<std::string> visible_name;
            Gtk::TreeModelColumn<std::string> tip;
            Gtk::TreeModelColumn<std::string> fullpath;
            Gtk::TreeModelColumn<std::string> sample_rate;
            Gtk::TreeModelColumn<std::string> disk_format;
+           Gtk::TreeModelColumn<int64_t>     time_modified;
+           Gtk::TreeModelColumn<std::string> time_formatted;
        };
 
        RecentSessionModelColumns    recent_session_columns;
        Gtk::TreeView                recent_session_display;
        Glib::RefPtr<Gtk::TreeStore> recent_session_model;
        Gtk::ScrolledWindow          recent_scroller;
-        Gtk::Label                   recent_label;
+       Gtk::Label                   recent_label;
        Gtk::FileChooserButton       existing_session_chooser;
        int redisplay_recent_sessions ();
        void recent_session_row_selected ();
+       void recent_session_sort_changed ();
        void recent_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col);
+       bool recent_button_press (GdkEventButton*);
+       void recent_context_mennu (GdkEventButton*);
+       void recent_remove_selected ();
 
        void existing_session_selected ();
-        void session_selected ();
+       void session_selected ();
 
        /* new sessions */
 
@@ -221,6 +240,10 @@ class SessionDialog : public ArdourDialog {
        void master_bus_button_clicked ();
        void setup_more_options_box ();
 
+       /* --disable plugins UI */
+       Gtk::CheckButton _disable_plugins;
+       void disable_plugins_clicked ();
+
        /* always there */
 
        Glib::RefPtr<Pango::Layout> layout;