/*
- Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
+#include "lib/job.h"
#include "content_sub_panel.h"
+#include "wx_ptr.h"
+
-class wxCheckBox;
+class CheckBox;
class wxSpinCtrl;
+class LanguageTagWidget;
class TextView;
class FontsDialog;
+class SpinCtrl;
+class SubtitleAnalysis;
+
class TextPanel : public ContentSubPanel
{
public:
TextPanel (ContentPanel *, TextType t);
- void film_changed (Film::Property);
- void film_content_changed (int);
- void content_selection_changed ();
+ void create () override;
+ void film_changed(FilmProperty) override;
+ void film_content_changed (int) override;
+ void content_selection_changed () override;
private:
void use_toggled ();
void x_scale_changed ();
void y_scale_changed ();
void line_spacing_changed ();
- void language_changed ();
+ void dcp_track_changed ();
void stream_changed ();
void text_view_clicked ();
void fonts_dialog_clicked ();
void reference_clicked ();
void appearance_dialog_clicked ();
+ void outline_subtitles_changed ();
+ TextType current_type () const;
+ void update_dcp_tracks ();
+ void update_dcp_track_selection ();
+ void add_to_grid () override;
+ void try_to_load_analysis ();
+ void analysis_finished(Job::Result result);
+ void language_changed ();
+ void language_is_additional_changed ();
void setup_sensitivity ();
+ void setup_visibility ();
+
+ void update_outline_subtitles_in_viewer ();
+ void clear_outline_subtitles ();
- wxCheckBox* _reference;
+ CheckBox* _reference;
wxStaticText* _reference_note;
- wxCheckBox* _use;
+ CheckBox* _outline_subtitles = nullptr;
+ CheckBox* _use;
wxChoice* _type;
- wxCheckBox* _burn;
- wxSpinCtrl* _x_offset;
- wxSpinCtrl* _y_offset;
- wxSpinCtrl* _x_scale;
- wxSpinCtrl* _y_scale;
- wxSpinCtrl* _line_spacing;
- wxTextCtrl* _language;
+ CheckBox* _burn;
+ wxStaticText* _offset_label;
+ wxStaticText* _x_offset_label;
+ wxStaticText* _x_offset_pc_label;
+ wxStaticText* _y_offset_label;
+ wxStaticText* _y_offset_pc_label;
+ SpinCtrl* _x_offset;
+ SpinCtrl* _y_offset;
+ wxStaticText* _scale_label;
+ wxStaticText* _x_scale_label;
+ wxStaticText* _x_scale_pc_label;
+ wxStaticText* _y_scale_label;
+ wxStaticText* _y_scale_pc_label;
+ SpinCtrl* _x_scale;
+ SpinCtrl* _y_scale;
+ wxStaticText* _line_spacing_label;
+ wxStaticText* _line_spacing_pc_label;
+ SpinCtrl* _line_spacing;
+ wxStaticText* _dcp_track_label = nullptr;
+ wxChoice* _dcp_track = nullptr;
+ wxStaticText* _stream_label;
wxChoice* _stream;
wxButton* _text_view_button;
- TextView* _text_view;
+ wx_ptr<TextView> _text_view;
wxButton* _fonts_dialog_button;
- FontsDialog* _fonts_dialog;
+ wx_ptr<FontsDialog> _fonts_dialog;
wxButton* _appearance_dialog_button;
TextType _original_type;
+ wxStaticText* _language_label = nullptr;
+ LanguageTagWidget* _language = nullptr;
+ wxSizer* _language_sizer = nullptr;
+ wxChoice* _language_type = nullptr;
+
+ int _outline_subtitles_row;
+ int _ccap_track_or_language_row;
+
+ std::weak_ptr<Content> _analysis_content;
+ boost::signals2::scoped_connection _analysis_finished_connection;
+ std::shared_ptr<SubtitleAnalysis> _analysis;
+ bool _loading_analysis = false;
};