use AudioClock::set_widget_name() for rec status in big clock, not set_name(), to...
[ardour.git] / gtk2_ardour / ardour_ui.cc
index 6f4d50aa029864d3c361cb469cc7e6d2c5d512eb..426e8e701474e7314450f352a8a4d4fce20e0ebd 100644 (file)
@@ -35,6 +35,7 @@
 #include <pbd/compose.h>
 #include <pbd/pathscanner.h>
 #include <pbd/failed_constructor.h>
+#include <pbd/enumwriter.h>
 #include <gtkmm2ext/gtk_ui.h>
 #include <gtkmm2ext/utils.h>
 #include <gtkmm2ext/click_box.h>
@@ -92,10 +93,10 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
 
        : Gtkmm2ext::UI ("ardour", argcp, argvp, rcfile),
          
-         primary_clock (X_("TransportClockDisplay"), true, false, true),
-         secondary_clock (X_("SecondaryClockDisplay"), true, false, true),
-         preroll_clock (X_("PreRollClock"), true, true),
-         postroll_clock (X_("PostRollClock"), true, true),
+         primary_clock (X_("primary"), false, X_("TransportClockDisplay"), true, false, true),
+         secondary_clock (X_("secondary"), false, X_("SecondaryClockDisplay"), true, false, true),
+         preroll_clock (X_("preroll"), false, X_("PreRollClock"), true, true),
+         postroll_clock (X_("postroll"), false, X_("PostRollClock"), true, true),
 
          /* adjuster table */
 
@@ -108,7 +109,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
 
          /* big clock */
 
-         big_clock ("BigClockNonRecording", true, false, true),
+         big_clock (X_("bigclock"), false, "BigClockNonRecording", true, false, true),
 
          /* transport */
 
@@ -247,6 +248,11 @@ ARDOUR_UI::set_engine (AudioEngine& e)
                throw failed_constructor();
        }
 
+       /* set default clock modes */
+
+       primary_clock.set_mode (AudioClock::SMPTE);
+       secondary_clock.set_mode (AudioClock::BBT);
+
        /* start the time-of-day-clock */
        
        update_wall_clock ();
@@ -1791,6 +1797,7 @@ ARDOUR_UI::load_session (const string & path, const string & snap_name, string*
        Session *new_session;
        int x;
        session_loaded = false;
+       
        x = unload_session ();
 
        if (x < 0) {
@@ -1802,9 +1809,8 @@ ARDOUR_UI::load_session (const string & path, const string & snap_name, string*
        /* if it already exists, we must have write access */
 
        if (::access (path.c_str(), F_OK) == 0 && ::access (path.c_str(), W_OK)) {
-               MessageDialog msg (*editor, _("\
-You do not have write access to this session.\n\
-This prevents the session from being loaded."));
+               MessageDialog msg (*editor, _("You do not have write access to this session.\n"
+                                             "This prevents the session from being loaded."));
                msg.run ();
                return -1;
        }
@@ -2401,10 +2407,10 @@ ARDOUR_UI::record_state_changed ()
 
        switch (session->record_status()) {
        case Session::Recording:
-               big_clock.set_name ("BigClockRecording");
+               big_clock.set_widget_name ("BigClockRecording");
                break;
        default:
-               big_clock.set_name ("BigClockNonRecording");
+               big_clock.set_widget_name ("BigClockNonRecording");
                break;
        }
 }
@@ -2429,3 +2435,19 @@ ARDOUR_UI::first_idle ()
        can_save_keybindings = true;
        return false;
 }
+
+void
+ARDOUR_UI::store_clock_modes ()
+{
+       XMLNode* node = new XMLNode(X_("ClockModes"));
+
+       for (vector<AudioClock*>::iterator x = AudioClock::clocks.begin(); x != AudioClock::clocks.end(); ++x) {
+               node->add_property ((*x)->name().c_str(), enum_2_string ((*x)->mode()));
+       }
+
+       session->add_extra_xml (*node);
+       session->set_dirty ();
+}
+
+
+