X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fsession_dialog.h;h=3aee9affa90b74442317f0b253228fa160bd7f53;hb=79731a716deae9a90be646695480f06f92c268f5;hp=c2efd3ab2b3d2a5ecec0fda18fcdb518cbd1b836;hpb=2f7c91c7da3793713482880864dded1a8cf4e820;p=ardour.git diff --git a/gtk2_ardour/session_dialog.h b/gtk2_ardour/session_dialog.h index c2efd3ab2b..3aee9affa9 100644 --- a/gtk2_ardour/session_dialog.h +++ b/gtk2_ardour/session_dialog.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -45,52 +46,45 @@ 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, bool cancel_not_quit); - SessionDialog (); +class SessionDialog : public ArdourDialog +{ +public: + 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 (); + void clear_given (); std::string session_name (bool& should_be_new); std::string session_folder (); - bool use_session_template(); + bool use_session_template() const; std::string session_template_name(); - // advanced session options + uint32_t master_channel_count(); - bool create_master_bus() const; - int master_channel_count() 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; + } - bool connect_inputs() const; - bool limit_inputs_used_for_connection() const; - int input_limit_count() const; - - bool connect_outputs() const; - bool limit_outputs_used_for_connection() const; - int output_limit_count() const; - - bool connect_outs_to_master() const; - bool connect_outs_to_physical() const; - - private: +private: bool new_only; - std::string _provided_session_name; - std::string _provided_session_path; + std::string _provided_session_name; + std::string _provided_session_path; bool on_delete_event (GdkEventAny*); - Gtk::Button* cancel_button; - Gtk::Button* open_button; - Gtk::Button* back_button; - Gtk::Button* quit_button; + Gtk::Button* cancel_button; + Gtk::Button* open_button; + Gtk::Button* back_button; + Gtk::Button* quit_button; - bool back_button_pressed (GdkEventButton*); + bool back_button_pressed (GdkEventButton*); + bool open_button_pressed (GdkEventButton*); - Gtk::Frame info_frame; + Gtk::Frame info_frame; /* initial choice page */ @@ -98,50 +92,57 @@ class SessionDialog : public ArdourDialog { void setup_recent_sessions (); Gtk::VBox ic_vbox; Gtk::Button ic_new_session_button; - void new_session_button_clicked (); + void new_session_button_clicked (); /* recent sessions */ void setup_existing_session_page (); - struct RecentSessionsSorter { - bool operator() (std::pair a, std::pair b) const { - return ARDOUR::cmp_nocase(a.first, b.first) == -1; - } + struct RecentSessionsSorter + { + bool operator() (std::pair a, std::pair b) const { + return ARDOUR::cmp_nocase(a.first, b.first) == -1; + } }; struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord { - RecentSessionModelColumns() { - add (visible_name); - add (tip); - add (fullpath); - add (sample_rate); - add (disk_format); - add (time_modified); - add (time_formatted); - } - Gtk::TreeModelColumn visible_name; - Gtk::TreeModelColumn tip; - Gtk::TreeModelColumn fullpath; - Gtk::TreeModelColumn sample_rate; - Gtk::TreeModelColumn disk_format; - Gtk::TreeModelColumn time_modified; - Gtk::TreeModelColumn time_formatted; + RecentSessionModelColumns() + { + add (visible_name); + add (tip); + add (fullpath); + add (sample_rate); + add (disk_format); + add (modified_with); + add (time_modified); + add (time_formatted); + } + Gtk::TreeModelColumn visible_name; + Gtk::TreeModelColumn tip; + Gtk::TreeModelColumn fullpath; + Gtk::TreeModelColumn sample_rate; + Gtk::TreeModelColumn disk_format; + Gtk::TreeModelColumn modified_with; + Gtk::TreeModelColumn time_modified; + Gtk::TreeModelColumn time_formatted; }; RecentSessionModelColumns recent_session_columns; Gtk::TreeView recent_session_display; Glib::RefPtr 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 */ @@ -153,88 +154,44 @@ class SessionDialog : public ArdourDialog { SessionTemplateColumns () { add (name); add (path); + add (description); + add (modified_with_short); + add (modified_with_long); } Gtk::TreeModelColumn name; Gtk::TreeModelColumn path; + Gtk::TreeModelColumn description; + Gtk::TreeModelColumn modified_with_short; + Gtk::TreeModelColumn modified_with_long; }; SessionTemplateColumns session_template_columns; - Glib::RefPtr template_model; - Gtk::ComboBox template_chooser; + + Glib::RefPtr template_model; + Gtk::TreeView template_chooser; + Gtk::ScrolledWindow template_scroller; + + void template_row_selected (); + + Gtk::TextView template_desc; + Gtk::Frame template_desc_frame; Gtk::VBox session_new_vbox; Gtk::VBox session_existing_vbox; - Gtk::Expander more_new_session_options_button; - Gtk::CheckButton use_template_button; - std::string load_template_override; + std::string load_template_override; - void more_new_session_options_button_clicked(); void new_name_changed (); void new_name_activated (); void populate_session_templates (); - /* more options for new sessions */ - - Gtk::VBox more_options_vbox; - - Gtk::Label chan_count_label_1; - Gtk::Label chan_count_label_3; - Gtk::Label chan_count_label_4; - Gtk::Table advanced_table; - Gtk::HBox input_port_limit_hbox; - Gtk::VBox input_port_vbox; - Gtk::Table input_table; - Gtk::HBox input_hbox; - - Gtk::Label bus_label; - Gtk::Frame bus_frame; - Gtk::Table bus_table; - Gtk::HBox bus_hbox; - - Gtk::Label input_label; - Gtk::Frame input_frame; - Gtk::HBox output_port_limit_hbox; - Gtk::VBox output_port_vbox; - Gtk::VBox output_conn_vbox; - Gtk::VBox output_vbox; - Gtk::HBox output_hbox; - - Gtk::Label output_label; - Gtk::Frame output_frame; - Gtk::VBox advanced_vbox; - Gtk::Label advanced_label; - - Gtk::CheckButton _create_master_bus; - Gtk::SpinButton _master_bus_channel_count; - - Gtk::CheckButton _connect_inputs; - Gtk::CheckButton _limit_input_ports; - Gtk::SpinButton _input_limit_count; - - Gtk::CheckButton _connect_outputs; - Gtk::CheckButton _limit_output_ports; - Gtk::SpinButton _output_limit_count; - - Gtk::RadioButtonGroup connect_outputs_group; - Gtk::RadioButton _connect_outputs_to_master; - Gtk::RadioButton _connect_outputs_to_physical; - - Gtk::Adjustment _output_limit_count_adj; - Gtk::Adjustment _input_limit_count_adj; - Gtk::Adjustment _master_bus_channel_count_adj; - - void connect_inputs_clicked (); - void connect_outputs_clicked (); - void limit_inputs_clicked (); - void limit_outputs_clicked (); - void master_bus_button_clicked (); - void setup_more_options_box (); - /* --disable plugins UI */ Gtk::CheckButton _disable_plugins; void disable_plugins_clicked (); + /* meta-template */ + uint32_t meta_master_bus_profile (std::string script) const; + /* always there */ Glib::RefPtr layout; @@ -242,10 +199,10 @@ class SessionDialog : public ArdourDialog { bool _existing_session_chooser_used; ///< set to true when the existing session chooser has been used Gtk::Label info_scroller_label; - std::string::size_type info_scroller_count; - bool info_scroller_update(); + std::string::size_type info_scroller_count; + bool info_scroller_update(); sigc::connection info_scroller_connection; - void updates_button_clicked (); + void updates_button_clicked (); }; #endif /* __gtk2_ardour_session_dialog_h__ */