X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fnew_session_dialog.h;h=2a2081e56a5d58cd21257b593561932906d48f39;hb=1315ee3dff1e4966ab28bd47e81b5f003cac6e40;hp=155397ad3b930e953e91a301edf653ebf28a06da;hpb=8cfbdaae199595e79127e4cc533ea7cacc8065e9;p=ardour.git diff --git a/gtk2_ardour/new_session_dialog.h b/gtk2_ardour/new_session_dialog.h index 155397ad3b..2a2081e56a 100644 --- a/gtk2_ardour/new_session_dialog.h +++ b/gtk2_ardour/new_session_dialog.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ // -*- c++ -*- @@ -24,28 +23,37 @@ #define NEW_SESSION_DIALOG_H #include -#include - -#include "glade_factory.h" - -struct NewSessionDialogFactory : public GladeFactory -{ - static GladeRef create(); - - static const char* top_level_widget_name(); - -private: - - static const char* s_m_top_level_widget_name; - -}; - -class NewSessionDialog : public Gtk::Dialog +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "ardour_dialog.h" + +namespace Gtk { + class Entry; + class FileChooserButton; + class SpinButton; + class CheckButton; + class RadioButton; + class TreeView; + class Notebook; +} + +class NewSessionDialog : public ArdourDialog { public: - NewSessionDialog(BaseObjectType* cobject, - const Glib::RefPtr& xml); + NewSessionDialog(); void set_session_name(const Glib::ustring& name); @@ -74,20 +82,62 @@ public: bool connect_outs_to_master() const; bool connect_outs_to_physical() const ; -protected: - - void reset_name(); - void reset_template(); + bool on_new_session_page () const; + void set_current_page (int); + void reset_recent(); + // reset everything to default values. void reset(); - // references to widgets we care about. +protected: + void reset_name(); + void reset_template(); + + Gtk::Label * session_name_label; + Gtk::Label * session_location_label; + Gtk::Label * session_template_label; + Gtk::Label * chan_count_label_1; + Gtk::Label * chan_count_label_2; + 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::Expander * advanced_expander; + Gtk::Table * new_session_table; + Gtk::HBox * open_session_hbox; + Gtk::ScrolledWindow * recent_scrolledwindow; + + Gtk::Label * recent_sesion_label; + Gtk::Frame * recent_frame; + Gtk::VBox * open_session_vbox; Gtk::Entry* m_name; Gtk::FileChooserButton* m_folder; Gtk::FileChooserButton* m_template; - + Gtk::Label * open_session_file_label; + Gtk::CheckButton* m_create_master_bus; Gtk::SpinButton* m_master_bus_channel_count; @@ -104,7 +154,46 @@ protected: Gtk::RadioButton* m_connect_outputs_to_master; Gtk::RadioButton* m_connect_outputs_to_physical; - + Gtk::Button* m_okbutton; + + Gtk::FileChooserButton* m_open_filechooser; + Gtk::TreeView* m_treeview; + Gtk::Notebook* m_notebook; + + private: + struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord { + RecentSessionModelColumns() { + add (visible_name); + add (fullpath); + } + Gtk::TreeModelColumn visible_name; + Gtk::TreeModelColumn fullpath; + }; + + RecentSessionModelColumns recent_columns; + Glib::RefPtr recent_model; + + void recent_session_selection_changed (); + void nsd_redisplay_recent_sessions(); + void nsd_recent_session_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col); + struct RecentSessionsSorter { + bool operator() (std::pair a, std::pair b) const { + return cmp_nocase(a.first, b.first) == -1; + } + }; + void on_new_session_name_entry_changed(); + void notebook_page_changed (GtkNotebookPage*, uint); + void treeview_selection_changed (); + void file_chosen (); + void template_chosen (); + void recent_row_activated (const Gtk::TreePath&, Gtk::TreeViewColumn*); + void connect_inputs_clicked (); + void connect_outputs_clicked (); + void limit_inputs_clicked (); + void limit_outputs_clicked (); + void master_bus_button_clicked (); + void monitor_bus_button_clicked (); + }; #endif // NEW_SESSION_DIALOG_H