Fly my pretties!
[ardour.git] / gtk2_ardour / new_session_dialog.h
1 #ifndef __gtk_ardour_new_session_dialog_h__
2 #define __gtk_ardour_new_session_dialog_h__
3
4 #include <gtkmm/adjustment.h>
5 #include <gtkmm/radiobutton.h>
6 #include <gtkmm/frame.h>
7 #include <gtkmm/box.h>
8 #include <gtkmm/checkbutton.h>
9
10 namespace Gtk {
11         class CList;
12 }
13
14 namespace ARDOUR {
15         class AudioEngine;
16 }
17
18 #include <gtkmm2ext/click_box.h>
19 #include <gtkmm2ext/selector.h>
20 #include <gtkmm2ext/newsavedialog.h>
21 #include "ardour_dialog.h"
22
23 class NewSessionDialog : public ArdourDialog
24 {
25   public:
26         NewSessionDialog (ARDOUR::AudioEngine&, bool startup, std::string path);
27         
28         Gtkmm2ext::NewSaveDialog file_selector;
29         Gtk::Combo control_out_channel_combo;
30         Gtk::Combo master_out_channel_combo;
31         Gtk::CheckButton use_control_button;
32         Gtk::CheckButton use_master_button;
33         Gtk::CheckButton connect_to_physical_inputs_button;
34
35         Gtk::RadioButton connect_to_master_button;
36         Gtk::RadioButton connect_to_physical_outputs_button;
37         Gtk::RadioButton manual_connect_outputs_button;
38
39         Gtk::VBox input_vbox;
40         Gtk::VBox manual_vbox;
41         Gtk::VBox output_vbox;
42         Gtk::VBox vbox;
43
44         Gtk::Adjustment in_count_adjustment;
45         Gtk::Adjustment out_count_adjustment;
46
47         string get_template_name ();
48
49   private:
50         Gtk::Notebook notebook;
51         Gtk::VBox     main_vbox;
52         Gtk::VBox     fsbox;
53
54         Gtk::Frame control_out_config_frame;
55         Gtk::Frame master_out_config_frame;
56         Gtk::Label output_label;
57         Gtk::Label input_label;
58         Gtk::Frame sr_frame;
59         Gtk::Frame template_frame;
60         Gtk::Frame manual_frame;
61         Gtk::HBox control_hbox;
62         Gtk::HBox master_hbox;
63         Gtk::Table io_table;
64         Gtk::VBox template_box;
65         Gtk::HBox output_hbox;
66         Gtk::HBox input_hbox;
67         Gtk::HBox option_hbox;
68         Gtk::VBox io_box;
69         Gtk::Label sr_label2;
70         Gtk::Label sr_label1;
71         Gtk::VBox  sr_box;
72         Gtk::Button expansion_button;
73         Gtk::Table out_table;
74         Gtk::CheckButton show_again;
75         Gtk::Combo   template_combo;
76         list<string> templates;
77         Gtk::SpinButton in_count_spinner;
78         Gtk::SpinButton out_count_spinner;
79         Gtk::Label      in_count_label;
80         Gtk::Label      out_count_label;
81
82         void reset_templates ();
83         
84         static void _mix_template_refiller (Gtk::CList &clist, void *);
85         void mix_template_refiller (Gtk::CList &clist);
86
87         void mix_template_shift (Gtkmm2ext::Selector *, Gtkmm2ext::SelectionResult*);
88         void mix_template_control (Gtkmm2ext::Selector *, Gtkmm2ext::SelectionResult*);
89
90         void fixup_at_realize ();
91         void fixup_at_show ();
92         void toggle_expansion ();
93         void file_selector_expansion (bool);
94
95         void show_again_toggled ();
96 };
97
98 #endif // __gtk_ardour_new_session_dialog_h__ */