summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/startup.cc199
-rw-r--r--gtk2_ardour/startup.h15
2 files changed, 93 insertions, 121 deletions
diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc
index 286aa7f813..18770df69e 100644
--- a/gtk2_ardour/startup.cc
+++ b/gtk2_ardour/startup.cc
@@ -81,7 +81,7 @@ Ardour will play NO role in monitoring"))
new_user_page_index = -1;
default_folder_page_index = -1;
monitoring_page_index = -1;
- session_page_index = -1;
+ new_session_page_index = -1;
final_page_index = -1;
session_options_page_index = -1;
new_only = false;
@@ -157,7 +157,7 @@ Ardour will play NO role in monitoring"))
setup_initial_choice_page ();
}
- setup_session_page ();
+ setup_new_session_page ();
setup_more_options_page ();
if (new_user) {
@@ -530,6 +530,10 @@ greater control in monitoring without affecting the mix."));
void
ArdourStartup::setup_initial_choice_page ()
{
+ initial_choice_index = append_page (ic_vbox);
+ set_page_title (ic_vbox, _("What would you like to do ?"));
+ set_page_header_image (ic_vbox, icon_pixbuf);
+
ic_vbox.set_spacing (6);
ic_vbox.set_border_width (24);
@@ -544,6 +548,53 @@ ArdourStartup::setup_initial_choice_page ()
centering_vbox->pack_start (ic_new_session_button, false, true);
centering_vbox->pack_start (ic_existing_session_button, false, true);
+ recent_session_model = TreeStore::create (recent_session_columns);
+ redisplay_recent_sessions ();
+
+ if (!new_session_hbox.get_children().empty()) {
+ new_session_hbox.remove (**new_session_hbox.get_children().begin());
+ }
+
+ if (session_existing_vbox.get_children().empty()) {
+
+ recent_session_display.set_model (recent_session_model);
+ recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
+ recent_session_display.set_headers_visible (false);
+ recent_session_display.get_selection()->set_mode (SELECTION_BROWSE);
+
+ recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::recent_session_row_selected));
+
+ recent_scroller.add (recent_session_display);
+ recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+ recent_scroller.set_shadow_type (Gtk::SHADOW_IN);
+
+ recent_session_display.show();
+
+ recent_scroller.show();
+ int cnt = redisplay_recent_sessions ();
+ recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &ArdourStartup::recent_row_activated));
+
+ if (cnt > 4) {
+ recent_scroller.set_size_request (-1, 300);
+ }
+
+ centering_vbox->pack_start (recent_scroller, true, true);
+
+ existing_session_chooser.set_title (_("Select session file"));
+ existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected));
+
+#ifdef GTKOSX
+ existing_session_chooser.add_shortcut_folder ("/Volumes");
+#endif
+
+ HBox* hbox = manage (new HBox);
+ hbox->set_spacing (4);
+ hbox->pack_start (*manage (new Label (_("Browse:"))), PACK_SHRINK);
+ hbox->pack_start (existing_session_chooser);
+ centering_vbox->pack_start (*hbox, false, false);
+ hbox->show_all ();
+ }
+
ic_new_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_press), false);
ic_new_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false);
@@ -556,10 +607,6 @@ ArdourStartup::setup_initial_choice_page ()
ic_vbox.show_all ();
- initial_choice_index = append_page (ic_vbox);
- set_page_title (ic_vbox, _("What would you like to do ?"));
- set_page_header_image (ic_vbox, icon_pixbuf);
-
/* user could just click on "Forward" if default
* choice is correct.
*/
@@ -570,8 +617,8 @@ ArdourStartup::setup_initial_choice_page ()
bool
ArdourStartup::initial_button_press (GdkEventButton *event)
{
- if (event && event->type == GDK_2BUTTON_PRESS && session_page_index != -1) {
- set_current_page(session_page_index);
+ if (event && event->type == GDK_2BUTTON_PRESS && new_session_page_index != -1) {
+ set_current_page (new_session_page_index);
return true;
} else {
return false;
@@ -581,20 +628,7 @@ ArdourStartup::initial_button_press (GdkEventButton *event)
void
ArdourStartup::initial_button_activated ()
{
- set_current_page(session_page_index);
-}
-
-void
-ArdourStartup::setup_session_page ()
-{
- session_vbox.set_border_width (24);
-
- session_vbox.pack_start (session_hbox, true, true);
- session_vbox.show_all ();
-
- session_page_index = append_page (session_vbox);
- /* initial setting */
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
+ set_current_page (new_session_page_index);
}
void
@@ -657,22 +691,13 @@ ArdourStartup::on_apply ()
void
ArdourStartup::on_prepare (Gtk::Widget* page)
{
- if (page == &session_vbox) {
-
- if (ic_new_session_button.get_active()) {
- /* new session requested */
- setup_new_session_page ();
- } else {
- /* existing session requested */
- setup_existing_session_page ();
-
- }
+ if (page == &new_session_vbox) {
/* HACK HACK HACK ... change the "Apply" button label
to say "Open"
*/
- Gtk::Widget* tl = session_vbox.get_toplevel();
+ Gtk::Widget* tl = new_session_vbox.get_toplevel();
Gtk::Window* win;
if ((win = dynamic_cast<Gtk::Window*>(tl)) != 0) {
/* ::get_default_widget() is not wrapped in gtkmm */
@@ -718,8 +743,8 @@ lost_name_entry_focus (GdkEventFocus*)
void
ArdourStartup::setup_new_session_page ()
{
- if (!session_hbox.get_children().empty()) {
- session_hbox.remove (**session_hbox.get_children().begin());
+ if (!new_session_hbox.get_children().empty()) {
+ new_session_hbox.remove (**new_session_hbox.get_children().begin());
}
session_new_vbox.set_spacing (18);
@@ -737,11 +762,10 @@ ArdourStartup::setup_new_session_page ()
label1->set_text (_("Session name:"));
-
if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
new_name_entry.set_text (Glib::path_get_basename (ARDOUR_COMMAND_LINE::session_name));
/* name provided - they can move right along */
- set_page_complete (session_vbox, true);
+ set_page_complete (new_session_vbox, true);
}
new_name_entry.signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::new_name_changed));
@@ -865,12 +889,18 @@ ArdourStartup::setup_new_session_page ()
}
session_new_vbox.show_all ();
- session_hbox.pack_start (session_new_vbox, true, true);
- set_page_title (session_vbox, _("New Session"));
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
+ new_session_hbox.pack_start (session_new_vbox, true, true);
+
+ new_session_vbox.set_border_width (24);
+ new_session_vbox.pack_start (new_session_hbox, true, true);
+ new_session_vbox.show_all ();
+ new_session_page_index = append_page (new_session_vbox);
+ /* initial setting */
+ set_page_type (new_session_vbox, ASSISTANT_PAGE_CONFIRM);
+ set_page_title (new_session_vbox, _("New Session"));
if (more_new_session_options_button.get_active()) {
- set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT);
+ set_page_type (new_session_vbox, ASSISTANT_PAGE_CONTENT);
}
new_name_entry.signal_map().connect (sigc::mem_fun (*this, &ArdourStartup::new_name_mapped));
@@ -888,9 +918,9 @@ void
ArdourStartup::new_name_changed ()
{
if (!new_name_entry.get_text().empty()) {
- set_page_complete (session_vbox, true);
+ set_page_complete (new_session_vbox, true);
} else {
- set_page_complete (session_vbox, false);
+ set_page_complete (new_session_vbox, false);
}
}
@@ -980,79 +1010,21 @@ void
ArdourStartup::recent_session_row_selected ()
{
if (recent_session_display.get_selection()->count_selected_rows() > 0) {
- set_page_complete (session_vbox, true);
+ set_page_complete (ic_vbox, true);
} else {
- set_page_complete (session_vbox, false);
+ set_page_complete (ic_vbox, false);
}
}
void
-ArdourStartup::setup_existing_session_page ()
-{
- recent_session_model = TreeStore::create (recent_session_columns);
- redisplay_recent_sessions ();
-
- if (!session_hbox.get_children().empty()) {
- session_hbox.remove (**session_hbox.get_children().begin());
- }
-
- if (session_existing_vbox.get_children().empty()) {
-
- recent_session_display.set_model (recent_session_model);
- recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name);
- recent_session_display.set_headers_visible (false);
- recent_session_display.get_selection()->set_mode (SELECTION_BROWSE);
-
- recent_session_display.get_selection()->signal_changed().connect (sigc::mem_fun (*this, &ArdourStartup::recent_session_row_selected));
-
- recent_scroller.add (recent_session_display);
- recent_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
- recent_scroller.set_shadow_type (Gtk::SHADOW_IN);
-
- recent_session_display.show();
-
- recent_scroller.show();
- int cnt = redisplay_recent_sessions ();
- recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &ArdourStartup::recent_row_activated));
-
- if (cnt > 4) {
- recent_scroller.set_size_request (-1, 300);
- }
-
- session_existing_vbox.set_spacing (8);
- session_existing_vbox.pack_start (recent_scroller, true, true);
-
- existing_session_chooser.set_title (_("Select session file"));
- existing_session_chooser.signal_file_set().connect (sigc::mem_fun (*this, &ArdourStartup::existing_session_selected));
-
-#ifdef GTKOSX
- existing_session_chooser.add_shortcut_folder ("/Volumes");
-#endif
-
- HBox* hbox = manage (new HBox);
- hbox->set_spacing (4);
- hbox->pack_start (*manage (new Label (_("Browse:"))), PACK_SHRINK);
- hbox->pack_start (existing_session_chooser);
- session_existing_vbox.pack_start (*hbox, false, false);
- hbox->show_all ();
- }
-
- session_existing_vbox.show_all ();
- session_hbox.pack_start (session_existing_vbox, true, true);
-
- set_page_title (session_vbox, _("Select a session"));
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
-}
-
-void
ArdourStartup::more_new_session_options_button_clicked ()
{
if (more_new_session_options_button.get_active()) {
more_options_vbox.show_all ();
set_page_type (more_options_vbox, ASSISTANT_PAGE_CONFIRM);
- set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT);
+ set_page_type (new_session_vbox, ASSISTANT_PAGE_CONTENT);
} else {
- set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM);
+ set_page_type (new_session_vbox, ASSISTANT_PAGE_CONFIRM);
more_options_vbox.hide ();
}
}
@@ -1356,7 +1328,7 @@ ArdourStartup::move_along_now ()
{
gint cur = get_current_page ();
- if (cur == session_page_index) {
+ if (cur == new_session_page_index) {
if (more_new_session_options_button.get_active()) {
set_current_page (session_options_page_index);
} else {
@@ -1368,17 +1340,22 @@ ArdourStartup::move_along_now ()
void
ArdourStartup::recent_row_activated (const Gtk::TreePath&, Gtk::TreeViewColumn*)
{
- set_page_complete (session_vbox, true);
- move_along_now ();
+ ic_existing_session_button.set_active (true);
+ ic_new_session_button.set_active (false);
+ set_page_type (ic_vbox, ASSISTANT_PAGE_CONFIRM);
+ set_page_complete (ic_vbox, true);
+ on_apply ();
}
void
ArdourStartup::existing_session_selected ()
{
+ ic_new_session_button.set_active (false);
+ ic_existing_session_button.set_active (true);
_existing_session_chooser_used = true;
-
- set_page_complete (session_vbox, true);
- move_along_now ();
+ set_page_type (ic_vbox, ASSISTANT_PAGE_CONFIRM);
+ set_page_complete (ic_vbox, true);
+ on_apply ();
}
sys::path
diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h
index 052a168a37..956af395ef 100644
--- a/gtk2_ardour/startup.h
+++ b/gtk2_ardour/startup.h
@@ -136,15 +136,11 @@ class ArdourStartup : public Gtk::Assistant {
Gtk::RadioButton no_monitor_section_button;
void setup_monitor_section_choice_page ();
- /* session page (could be new or existing) */
+ /* new session page */
- void setup_session_page ();
- Gtk::VBox session_vbox;
- Gtk::HBox session_hbox;
-
- /* recent sessions */
-
- void setup_existing_session_page ();
+ void setup_new_session_page ();
+ Gtk::VBox new_session_vbox;
+ Gtk::HBox new_session_hbox;
struct RecentSessionsSorter {
bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
@@ -179,7 +175,6 @@ class ArdourStartup : public Gtk::Assistant {
/* new sessions */
- void setup_new_session_page ();
Gtk::Entry new_name_entry;
Gtk::FileChooserButton new_folder_chooser;
Gtk::FileChooserButton session_template_chooser;
@@ -284,7 +279,7 @@ class ArdourStartup : public Gtk::Assistant {
gint default_folder_page_index;
gint monitoring_page_index;
gint monitor_section_page_index;
- gint session_page_index;
+ gint new_session_page_index;
gint initial_choice_index;
gint final_page_index;
gint session_options_page_index;