+TimingPanel::add_to_grid ()
+{
+ bool const full = Config::instance()->interface_complexity() == Config::INTERFACE_FULL;
+
+ int r = 0;
+
+ wxSizer* labels = new wxBoxSizer (wxHORIZONTAL);
+ labels->Add (_h_label, 1, wxEXPAND);
+ add_label_to_sizer (labels, _colon[0], false);
+ labels->Add (_m_label, 1, wxEXPAND);
+ add_label_to_sizer (labels, _colon[1], false);
+ labels->Add (_s_label, 1, wxEXPAND);
+ add_label_to_sizer (labels, _colon[2], false);
+ labels->Add (_f_label, 1, wxEXPAND);
+ _grid->Add (labels, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (_grid, _position_label, true, wxGBPosition(r, 0));
+ _grid->Add (_position, wxGBPosition(r, 1));
+ ++r;
+
+ _move_to_start_of_reel->Show (full);
+ _full_length_label->Show (full);
+ _full_length->Show (full);
+ _trim_start_label->Show (full);
+ _trim_start->Show (full);
+ _trim_start_to_playhead->Show (full);
+ _trim_end_label->Show (full);
+ _trim_end->Show (full);
+ _trim_end_to_playhead->Show (full);
+ _play_length_label->Show (full);
+ _play_length->Show (full);
+ _video_frame_rate_label->Show (full);
+ _video_frame_rate->Show (full);
+ _set_video_frame_rate->Show (full);
+ _tip->Show (full);
+
+ if (full) {
+ _grid->Add (_move_to_start_of_reel, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (_grid, _full_length_label, true, wxGBPosition(r, 0));
+ _grid->Add (_full_length, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (_grid, _trim_start_label, true, wxGBPosition(r, 0));
+ _grid->Add (_trim_start, wxGBPosition(r, 1));
+ ++r;
+
+ _grid->Add (_trim_start_to_playhead, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (_grid, _trim_end_label, true, wxGBPosition(r, 0));
+ _grid->Add (_trim_end, wxGBPosition(r, 1));
+ ++r;
+
+ _grid->Add (_trim_end_to_playhead, wxGBPosition(r, 1));
+ ++r;
+
+ add_label_to_sizer (_grid, _play_length_label, true, wxGBPosition(r, 0));
+ _grid->Add (_play_length, wxGBPosition(r, 1));
+ ++r;
+
+ {
+ add_label_to_sizer (_grid, _video_frame_rate_label, true, wxGBPosition(r, 0));
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ s->Add (_video_frame_rate, 1, wxEXPAND);
+ s->Add (_set_video_frame_rate, 0, wxLEFT | wxRIGHT, 8);
+ _grid->Add (s, wxGBPosition(r, 1), wxGBSpan(1, 2));
+ }
+ ++r;
+
+ _grid->Add (_tip, wxGBPosition(r, 1), wxGBSpan(1, 2));
+ }
+
+ /* Completely speculative fix for #891 */
+ _grid->Layout ();
+}
+
+void
+TimingPanel::update_full_length ()
+{
+ set<DCPTime> check;
+ BOOST_FOREACH (shared_ptr<const Content> i, _parent->selected ()) {
+ check.insert (i->full_length ());
+ }
+
+ if (check.size() == 1) {
+ _full_length->set (_parent->selected().front()->full_length (), _parent->film()->video_frame_rate ());
+ } else {
+ _full_length->clear ();
+ }
+}
+
+void
+TimingPanel::update_play_length ()