Revert "Store a name with text content."
[dcpomatic.git] / src / wx / text_panel.cc
index 980dd36cb1c3d4312f5b9a7e0759edd8f75972fe..8c9ac7d6423d9c1b13c223160709751e928a5c1e 100644 (file)
@@ -90,45 +90,33 @@ TextPanel::TextPanel (ContentPanel* p, TextType t)
        grid->Add (_burn, wxGBPosition (r, 0), wxGBSpan (1, 2));
        ++r;
 
-       {
-               add_label_to_sizer (grid, this, _("X Offset"), true, wxGBPosition (r, 0));
-               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
-               _x_offset = new wxSpinCtrl (this);
-               s->Add (_x_offset);
-               add_label_to_sizer (s, this, _("%"), false);
-               grid->Add (s, wxGBPosition (r, 1));
-               ++r;
-       }
-
-       {
-               add_label_to_sizer (grid, this, _("Y Offset"), true, wxGBPosition (r, 0));
-               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
-               _y_offset = new wxSpinCtrl (this);
-               s->Add (_y_offset);
-               add_label_to_sizer (s, this, _("%"), false);
-               grid->Add (s, wxGBPosition (r, 1));
-               ++r;
-       }
-
-       {
-               add_label_to_sizer (grid, this, _("X Scale"), true, wxGBPosition (r, 0));
-               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
-               _x_scale = new wxSpinCtrl (this);
-               s->Add (_x_scale);
-               add_label_to_sizer (s, this, _("%"), false);
-               grid->Add (s, wxGBPosition (r, 1));
-               ++r;
-       }
+       add_label_to_sizer (grid, this, _("Offset"), true, wxGBPosition (r, 0));
+       wxBoxSizer* offset = new wxBoxSizer (wxHORIZONTAL);
+       add_label_to_sizer (offset, this, _("X"), true);
+       _x_offset = new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(64, -1));
+       offset->Add (_x_offset, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
+       wxStaticText* pc = new wxStaticText (this, wxID_ANY, _("%"));
+       offset->Add (pc, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP * 2);
+       add_label_to_sizer (offset, this, _("Y"), true);
+       _y_offset = new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(64, -1));
+       offset->Add (_y_offset, 0);
+       add_label_to_sizer (offset, this, _("%"), false);
+       grid->Add (offset, wxGBPosition (r, 1));
+       ++r;
 
-       {
-               add_label_to_sizer (grid, this, _("Y Scale"), true, wxGBPosition (r, 0));
-               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
-               _y_scale = new wxSpinCtrl (this);
-               s->Add (_y_scale);
-               add_label_to_sizer (s, this, _("%"), false);
-               grid->Add (s, wxGBPosition (r, 1));
-               ++r;
-       }
+       add_label_to_sizer (grid, this, _("Scale"), true, wxGBPosition (r, 0));
+       wxBoxSizer* scale = new wxBoxSizer (wxHORIZONTAL);
+       add_label_to_sizer (scale, this, _("X"), true);
+       _x_scale = new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(64, -1));
+       scale->Add (_x_scale, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
+       pc = new wxStaticText (this, wxID_ANY, _("%"));
+       scale->Add (pc, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP * 2);
+       add_label_to_sizer (scale, this, _("Y"), true);
+       _y_scale = new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(64, -1));
+       scale->Add (_y_scale, 0);
+       add_label_to_sizer (scale, this, _("%"), false);
+       grid->Add (scale, wxGBPosition (r, 1));
+       ++r;
 
        {
                add_label_to_sizer (grid, this, _("Line spacing"), true, wxGBPosition (r, 0));
@@ -170,6 +158,8 @@ TextPanel::TextPanel (ContentPanel* p, TextType t)
        _y_scale->SetRange (10, 1000);
        _line_spacing->SetRange (10, 1000);
 
+       content_selection_changed ();
+
        _reference->Bind                (wxEVT_CHECKBOX, boost::bind (&TextPanel::reference_clicked, this));
        _use->Bind                      (wxEVT_CHECKBOX, boost::bind (&TextPanel::use_toggled, this));
        _type->Bind                     (wxEVT_CHOICE,   boost::bind (&TextPanel::type_changed, this));
@@ -285,18 +275,25 @@ TextPanel::use_toggled ()
        }
 }
 
+/** @return the text type that is currently selected in the drop-down */
+TextType
+TextPanel::current_type () const
+{
+       switch (_type->GetSelection()) {
+       case 0:
+               return TEXT_OPEN_SUBTITLE;
+       case 1:
+               return TEXT_CLOSED_CAPTION;
+       }
+
+       return TEXT_UNKNOWN;
+}
+
 void
 TextPanel::type_changed ()
 {
        BOOST_FOREACH (shared_ptr<Content> i, _parent->selected_text()) {
-               switch (_type->GetSelection()) {
-               case 0:
-                       i->text_of_original_type(_original_type)->set_type (TEXT_OPEN_SUBTITLE);
-                       break;
-               case 1:
-                       i->text_of_original_type(_original_type)->set_type (TEXT_CLOSED_CAPTION);
-                       break;
-               }
+               i->text_of_original_type(_original_type)->set_type (current_type ());
        }
 }
 
@@ -344,21 +341,23 @@ TextPanel::setup_sensitivity ()
 
        bool const reference = _reference->GetValue ();
 
+       TextType const type = current_type ();
+
        /* Set up sensitivity */
        _use->Enable (!reference && any_subs > 0);
        bool const use = _use->GetValue ();
        _type->Enable (!reference && any_subs > 0 && use);
-       _burn->Enable (!reference && any_subs > 0 && use && _type->GetSelection() == 0);
-       _x_offset->Enable (!reference && any_subs > 0 && use);
-       _y_offset->Enable (!reference && any_subs > 0 && use);
-       _x_scale->Enable (!reference && any_subs > 0 && use);
-       _y_scale->Enable (!reference && any_subs > 0 && use);
-       _line_spacing->Enable (!reference && use);
+       _burn->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _x_offset->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _y_offset->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _x_scale->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _y_scale->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
+       _line_spacing->Enable (!reference && use && type == TEXT_OPEN_SUBTITLE);
        _language->Enable (!reference && any_subs > 0 && use);
        _stream->Enable (!reference && ffmpeg_subs == 1);
        _text_view_button->Enable (!reference);
-       _fonts_dialog_button->Enable (!reference);
-       _appearance_dialog_button->Enable (!reference && any_subs > 0 && use);
+       _fonts_dialog_button->Enable (!reference && type == TEXT_OPEN_SUBTITLE);
+       _appearance_dialog_button->Enable (!reference && any_subs > 0 && use && type == TEXT_OPEN_SUBTITLE);
 }
 
 void