bg[NORMAL] = { 0.35, 0.35, 0.40 }
}
-
-style "red_frame"
-{
- fg[NORMAL] = { 1.0, 0.0, 0.0 }
- bg[NORMAL] = { 1.0, 0.0, 0.0 }
-}
-
style "transport_base" = "medium_bold_text"
{
bg[NORMAL] = { 0.10, 0.10, 0.10 }
bg[ACTIVE] = { 0.0, 0.0, 0.0 }
}
-style "big_clock_display" = "medium_entry"
+style "non_recording_big_clock_display" = "medium_entry"
{
- font_name = "courier bold 34"
+ font_name = "sans 60"
+
+ fg[NORMAL] = { 0.50, 1.0, 0.50 }
+ fg[ACTIVE] = { 1.0, 0, 0.0 }
+ fg[SELECTED] = { 1.0, 0, 0 }
+ fg[PRELIGHT] = { 1.0, 0, 0.0 }
+ fg[INSENSITIVE] = { 1.0, 0, 0.0 }
+
+ base[NORMAL] = { 0.0, 0.0, 0.0 }
+ base[ACTIVE] = { 0.0, 0.0, 0.0 }
+ bg[NORMAL] = { 0.0, 0.0, 0.0 }
+ bg[ACTIVE] = { 0.7, 0.0, 0.0 }
+}
+
+style "recording_big_clock_display" = "non_recording_big_clock_display"
+{
+ fg[NORMAL] = { 1.0, 0, 0 }
}
style "transport_clock_display"
style "tempo_meter_clock_display"
{
- font_name = "sans 8"
+ font_name = "sans 7"
fg[NORMAL] = { 1.0, 1.0, 1.0 }
fg[ACTIVE] = { 1.0, 1.0, 0.0 }
fg[SELECTED] = { 1.0, 0, 0 }
widget "*FatalMessage" style "fatal_message"
widget "*InfoMessage" style "info_message"
widget "*WarningMessage" style "warning_message"
-widget "*BigClockDisplay" style "big_clock_display"
+widget "*BigClockNonRecording" style "non_recording_big_clock_display"
+widget "*BigClockRecording" style "recording_big_clock_display"
widget "*TransportClockDisplay" style "transport_clock_display"
widget "*SecondaryClockDisplay" style "transport_clock_display"
-widget "*BBTTempoLabel" style "tempo_meter_clock_display"
-widget "*BBTMeterLabel" style "tempo_meter_clock_display"
+widget "*AudioClockFramesUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockFramesLowerInfo" style "tempo_meter_clock_display"
+widget "*AudioClockSMPTEUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockSMPTELowerInfo" style "tempo_meter_clock_display"
+widget "*AudioClockBBTUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockBBTLowerInfo" style "tempo_meter_clock_display"
widget "*SelectionStartClock" style "default_clock_display"
widget "*SelectionEndClock" style "default_clock_display"
widget "*EditCursorClock" style "default_clock_display"
widget "*FramesRuler" style "editor_time_ruler"
widget "*MinSecRuler" style "editor_time_ruler"
widget "*BaseFrame" style "base_frame"
-widget "*RedFrame" style "red_frame"
widget "*AudioTrackStripBase" style "audio_track_base"
widget "*TimeAxisViewControlsBaseUnselected" style "audio_track_base"
widget "*AudioTrackControlsBaseUnselected" style "audio_track_base"
10 /* Audio Frame */
};
-AudioClock::AudioClock (const string& name, bool allow_edit, bool duration, bool with_extras)
+AudioClock::AudioClock (std::string name, bool allow_edit, bool duration, bool with_info)
: is_duration (duration),
editable (allow_edit),
colon1 (":"),
ops_menu = 0;
dragging = false;
+ if (with_info) {
+ frames_upper_info_label = manage (new Label);
+ frames_lower_info_label = manage (new Label);
+ smpte_upper_info_label = manage (new Label);
+ smpte_lower_info_label = manage (new Label);
+ bbt_upper_info_label = manage (new Label);
+ bbt_lower_info_label = manage (new Label);
+
+ frames_upper_info_label->set_name ("AudioClockFramesUpperInfo");
+ frames_lower_info_label->set_name ("AudioClockFramesLowerInfo");
+ smpte_upper_info_label->set_name ("AudioClockSMPTEUpperInfo");
+ smpte_lower_info_label->set_name ("AudioClockSMPTELowerInfo");
+ bbt_upper_info_label->set_name ("AudioClockBBTUpperInfo");
+ bbt_lower_info_label->set_name ("AudioClockBBTLowerInfo");
+
+ frames_info_box.pack_start (*frames_upper_info_label, true, true);
+ frames_info_box.pack_start (*frames_lower_info_label, true, true);
+ smpte_info_box.pack_start (*smpte_upper_info_label, true, true);
+ smpte_info_box.pack_start (*smpte_lower_info_label, true, true);
+ bbt_info_box.pack_start (*bbt_upper_info_label, true, true);
+ bbt_info_box.pack_start (*bbt_lower_info_label, true, true);
+
+ } else {
+ frames_upper_info_label = 0;
+ frames_lower_info_label = 0;
+ smpte_upper_info_label = 0;
+ smpte_lower_info_label = 0;
+ bbt_upper_info_label = 0;
+ bbt_lower_info_label = 0;
+ }
+
audio_frames_ebox.add (audio_frames_label);
- frames_packer_hbox.set_border_width (2);
- frames_packer_hbox.pack_start (audio_frames_ebox, false, false);
+
+ frames_packer.set_homogeneous (false);
+ frames_packer.set_border_width (2);
+ frames_packer.pack_start (audio_frames_ebox, false, false);
+
+ if (with_info) {
+ frames_packer.pack_start (frames_info_box, false, false, 5);
+ }
+
+ frames_packer_hbox.pack_start (frames_packer, true, false);
hours_ebox.add (hours_label);
minutes_ebox.add (minutes_label);
smpte_packer.pack_start (colon3, false, false);
smpte_packer.pack_start (frames_ebox, false, false);
+ if (with_info) {
+ smpte_packer.pack_start (smpte_info_box, false, false, 5);
+ }
+
smpte_packer_hbox.pack_start (smpte_packer, true, false);
bbt_packer.set_homogeneous (false);
bbt_packer.pack_start (b2, false, false);
bbt_packer.pack_start (ticks_ebox, false, false);
- if (with_extras) {
-
- framerate_label = manage (new Label);
- pullup_label = manage (new Label);
-
- framerate_label->set_name ("BBTMeterLabel");
- pullup_label->set_name ("BBTTempoLabel");
-
- rate_pullup_box.pack_start (*framerate_label, true, true);
- rate_pullup_box.pack_start (*pullup_label, true, true);
-
- smpte_packer.pack_start (rate_pullup_box, false,false, 5);
-
- meter_label = manage (new Label);
- tempo_label = manage (new Label);
-
- meter_label->set_name ("BBTMeterLabel");
- tempo_label->set_name ("BBTTempoLabel");
-
- tempo_meter_box.pack_start (*meter_label, true, true);
- tempo_meter_box.pack_start (*tempo_label, true, true);
-
- bbt_packer.pack_start (tempo_meter_box, false, false, 5);
- } else {
- framerate_label = 0;
- pullup_label = 0;
- meter_label = 0;
- tempo_label = 0;
+ if (with_info) {
+ bbt_packer.pack_start (bbt_info_box, false, false, 5);
}
bbt_packer_hbox.pack_start (bbt_packer, true, false);
minsec_packer_hbox.pack_start (minsec_packer, true, false);
+ clock_frame.set_shadow_type (Gtk::SHADOW_IN);
+ clock_frame.set_name ("BaseFrame");
+
+ clock_frame.add (clock_base);
+
set_name (name);
+
+ _mode = BBT; /* lie to force mode switch */
+ set_mode (SMPTE);
+
+ pack_start (clock_frame, true, true);
+
+ /* the clock base handles button releases for menu popup regardless of
+ editable status. if the clock is editable, the clock base is where
+ we pass focus to after leaving the last editable "field", which
+ will then shutdown editing till the user starts it up again.
+
+ it does this because the focus out event on the field disables
+ keyboard event handling, and we don't connect anything up to
+ notice focus in on the clock base. hence, keyboard event handling
+ stays disabled.
+ */
+
+ clock_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
+ clock_base.signal_button_release_event().connect (bind (mem_fun (*this, &AudioClock::field_button_release_event), SMPTE_Hours));
+
+ Session::SMPTEOffsetChanged.connect (mem_fun (*this, &AudioClock::smpte_offset_changed));
+
+ if (editable) {
+ setup_events ();
+ }
+
+ set (last_when, true);
+}
+
+void
+AudioClock::set_name (string name)
+{
+ Widget::set_name (name);
+
clock_base.set_name (name);
audio_frames_label.set_name (name);
b1.set_name (name);
b2.set_name (name);
- clock_frame.set_shadow_type (Gtk::SHADOW_IN);
- clock_frame.set_name ("BaseFrame");
-
- clock_frame.add (clock_base);
-
- _mode = BBT; /* lie to force mode switch */
- set_mode (SMPTE);
-
- pack_start (clock_frame, true, true);
-
- /* the clock base handles button releases for menu popup regardless of
- editable status. if the clock is editable, the clock base is where
- we pass focus to after leaving the last editable "field", which
- will then shutdown editing till the user starts it up again.
-
- it does this because the focus out event on the field disables
- keyboard event handling, and we don't connect anything up to
- notice focus in on the clock base. hence, keyboard event handling
- stays disabled.
- */
-
- clock_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
- clock_base.signal_button_release_event().connect (bind (mem_fun (*this, &AudioClock::field_button_release_event), SMPTE_Hours));
-
- Session::SMPTEOffsetChanged.connect (mem_fun (*this, &AudioClock::smpte_offset_changed));
-
- if (editable) {
- setup_events ();
- }
-
- set (last_when, true);
+ queue_draw ();
}
void
char buf[32];
snprintf (buf, sizeof (buf), "%u", when);
audio_frames_label.set_text (buf);
+
+ if (frames_upper_info_label) {
+ nframes_t rate = session->frame_rate();
+
+ if (fmod (rate, 1000.0) == 0.000) {
+ sprintf (buf, "%uK", rate/1000);
+ } else {
+ sprintf (buf, "%.3fK", rate/1000.0f);
+ }
+
+ frames_upper_info_label->set_text (buf);
+
+ float vid_pullup = Config->get_video_pullup();
+
+ if (vid_pullup == 0.0) {
+ frames_lower_info_label->set_text(_("none"));
+ } else {
+ sprintf (buf, "%-6.4f", vid_pullup);
+ frames_lower_info_label->set_text (buf);
+ }
+ }
}
void
frames_label.set_text (buf);
last_frames = smpte.frames;
}
-
- if (framerate_label) {
- sprintf (buf, "%-5.2f", Config->get_smpte_frames_per_second());
- framerate_label->set_text (buf);
-
- float x = Config->get_video_pullup();
-
- if (x == 0.0) {
- pullup_label->set_text (_("none"));
+
+ if (smpte_upper_info_label) {
+ float smpte_frames = Config->get_smpte_frames_per_second();
+
+ if ( fmod(smpte_frames, 1.0) == 0.0) {
+ sprintf (buf, "%u", int (smpte_frames));
+ } else {
+ sprintf (buf, "%.2f", smpte_frames);
+ }
+
+ smpte_upper_info_label->set_text (buf);
+
+ if (Config->get_smpte_drop_frames()) {
+ sprintf (buf, "DF");
} else {
- sprintf (buf, "%-6.4f", x);
- pullup_label->set_text (buf);
+ sprintf (buf, "NDF");
}
+
+ smpte_lower_info_label->set_text (buf);
}
}
sprintf (buf, "%04" PRIu32, bbt.ticks);
ticks_label.set_text (buf);
- if (meter_label) {
+ if (bbt_upper_info_label) {
TempoMap::Metric m (session->tempo_map().metric_at (when));
sprintf (buf, "%-5.2f", m.tempo().beats_per_minute());
- tempo_label->set_text (buf);
+ bbt_lower_info_label->set_text (buf);
sprintf (buf, "%g|%g", m.meter().beats_per_bar(), m.meter().note_divisor());
- meter_label->set_text (buf);
+ bbt_upper_info_label->set_text (buf);
}
}
switch (_mode) {
case SMPTE:
- Gtkmm2ext::set_size_request_to_display_given_text (hours_label, "-88", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (minutes_label, "88", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (seconds_label, "88", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (frames_label, "88", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (hours_label, "-00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (minutes_label, "00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (seconds_label, "00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (frames_label, "00", 5, 5);
break;
case BBT:
- Gtkmm2ext::set_size_request_to_display_given_text (bars_label, "-888", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (beats_label, "88", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ticks_label, "8888", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (bars_label, "-000", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (beats_label, "00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (ticks_label, "0000", 5, 5);
break;
case MinSec:
- Gtkmm2ext::set_size_request_to_display_given_text (ms_hours_label, "99", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_minutes_label, "99", 2, 2);
- Gtkmm2ext::set_size_request_to_display_given_text (ms_seconds_label, "99.999", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_hours_label, "00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_minutes_label, "00", 5, 5);
+ Gtkmm2ext::set_size_request_to_display_given_text (ms_seconds_label, "00.000", 5, 5);
break;
case Frames:
- Gtkmm2ext::set_size_request_to_display_given_text (audio_frames_label, "4294967296", 2, 2);
+ Gtkmm2ext::set_size_request_to_display_given_text (audio_frames_label, "0000000000", 5, 5);
break;
case Off: