Hide the alpha controls when the alpha isn't used

This commit is contained in:
Thomas Goyne 2013-01-13 11:19:13 -08:00
parent 7a3b221847
commit 0b5674e6aa
9 changed files with 27 additions and 18 deletions

View file

@ -246,7 +246,7 @@ namespace Automation4 {
wxControl *Create(wxWindow *parent) wxControl *Create(wxWindow *parent)
{ {
agi::Color colour(from_wx(text)); agi::Color colour(from_wx(text));
wxControl *cw = new ColourButton(parent, wxSize(50*width,10*height), colour, ColorValidator(&text)); wxControl *cw = new ColourButton(parent, wxSize(50*width,10*height), false, colour, ColorValidator(&text));
cw->SetToolTip(hint); cw->SetToolTip(hint);
return cw; return cw;
} }

View file

@ -25,14 +25,14 @@
wxDEFINE_EVENT(EVT_COLOR, wxThreadEvent); wxDEFINE_EVENT(EVT_COLOR, wxThreadEvent);
ColourButton::ColourButton(wxWindow *parent, wxSize const& size, agi::Color col, wxValidator const& validator) ColourButton::ColourButton(wxWindow *parent, wxSize const& size, bool alpha, agi::Color col, wxValidator const& validator)
: wxButton(parent, -1, "", wxDefaultPosition, wxSize(size.GetWidth() + 6, size.GetHeight() + 6), 0, validator) : wxButton(parent, -1, "", wxDefaultPosition, wxSize(size.GetWidth() + 6, size.GetHeight() + 6), 0, validator)
, bmp(size) , bmp(size)
, colour(col) , colour(col)
{ {
UpdateBitmap(); UpdateBitmap();
Bind(wxEVT_COMMAND_BUTTON_CLICKED, [=](wxCommandEvent&) { Bind(wxEVT_COMMAND_BUTTON_CLICKED, [=](wxCommandEvent&) {
GetColorFromUser(GetParent(), colour, [=](agi::Color new_color) { GetColorFromUser(GetParent(), colour, alpha, [=](agi::Color new_color) {
colour = new_color; colour = new_color;
UpdateBitmap(); UpdateBitmap();

View file

@ -35,8 +35,9 @@ public:
/// Constructor /// Constructor
/// @param parent Parent window /// @param parent Parent window
/// @param size Size of the bitmap (note: not the size of the button) /// @param size Size of the bitmap (note: not the size of the button)
/// @param alpha Let the user adjust the color's alpha
/// @param color Initial color to display /// @param color Initial color to display
ColourButton(wxWindow *parent, wxSize const& size, agi::Color color = agi::Color(), wxValidator const& validator = wxDefaultValidator); ColourButton(wxWindow *parent, wxSize const& size, bool alpha, agi::Color color = agi::Color(), wxValidator const& validator = wxDefaultValidator);
/// Get the currently selected color /// Get the currently selected color
agi::Color GetColor() { return colour; } agi::Color GetColor() { return colour; }

View file

@ -310,7 +310,7 @@ void show_color_picker(const agi::Context *c, agi::Color (AssStyle::*field), con
color = get_value(blocks, blockn, color, tag, alt); color = get_value(blocks, blockn, color, tag, alt);
int commit_id = -1; int commit_id = -1;
bool ok = GetColorFromUser(c->parent, color, [&](agi::Color new_color) { bool ok = GetColorFromUser(c->parent, color, true, [&](agi::Color new_color) {
set_tag(line, blocks, tag, new_color.GetAssOverrideFormatted(), sel_start, sel_end); set_tag(line, blocks, tag, new_color.GetAssOverrideFormatted(), sel_start, sel_end);
set_tag(line, blocks, alpha, str(boost::format("&H%02X&") % (int)new_color.a), sel_start, sel_end); set_tag(line, blocks, alpha, str(boost::format("&H%02X&") % (int)new_color.a), sel_start, sel_end);
commit_text(c, _("set color"), sel_start, sel_end, &commit_id); commit_text(c, _("set color"), sel_start, sel_end, &commit_id);

View file

@ -514,7 +514,7 @@ class DialogColorPicker : public wxDialog {
std::function<void (agi::Color)> callback; std::function<void (agi::Color)> callback;
public: public:
DialogColorPicker(wxWindow *parent, agi::Color initial_color, std::function<void (agi::Color)> callback); DialogColorPicker(wxWindow *parent, agi::Color initial_color, std::function<void (agi::Color)> callback, bool alpha);
~DialogColorPicker(); ~DialogColorPicker();
void SetColor(agi::Color new_color); void SetColor(agi::Color new_color);
@ -532,7 +532,7 @@ static wxBitmap make_slider(Func func) {
return wxBitmap(img); return wxBitmap(img);
} }
DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color, std::function<void (agi::Color)> callback) DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color, std::function<void (agi::Color)> callback, bool alpha)
: wxDialog(parent, -1, _("Select Color")) : wxDialog(parent, -1, _("Select Color"))
, callback(callback) , callback(callback)
{ {
@ -603,6 +603,7 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
spectop_sizer->Add(colorspace_choice, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT); spectop_sizer->Add(colorspace_choice, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT);
spectop_sizer->Add(5, 5, 1, wxEXPAND); spectop_sizer->Add(5, 5, 1, wxEXPAND);
spectop_sizer->Add(preview_box, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT); spectop_sizer->Add(preview_box, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT);
wxSizer *spectrum_sizer = new wxFlexGridSizer(3, 5, 5); wxSizer *spectrum_sizer = new wxFlexGridSizer(3, 5, 5);
spectrum_sizer->Add(spectop_sizer, wxEXPAND); spectrum_sizer->Add(spectop_sizer, wxEXPAND);
spectrum_sizer->AddStretchSpacer(1); spectrum_sizer->AddStretchSpacer(1);
@ -610,6 +611,9 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
spectrum_sizer->Add(spectrum); spectrum_sizer->Add(spectrum);
spectrum_sizer->Add(slider); spectrum_sizer->Add(slider);
spectrum_sizer->Add(alpha_slider); spectrum_sizer->Add(alpha_slider);
if (!alpha)
spectrum_sizer->Hide(alpha_slider);
spectrum_box->Add(spectrum_sizer, 0, wxALL, 3); spectrum_box->Add(spectrum_sizer, 0, wxALL, 3);
wxString rgb_labels[] = { _("Red:"), _("Green:"), _("Blue:") }; wxString rgb_labels[] = { _("Red:"), _("Green:"), _("Blue:") };
@ -617,7 +621,10 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
wxString ass_labels[] = { "ASS:", "HTML:", _("Alpha:") }; wxString ass_labels[] = { "ASS:", "HTML:", _("Alpha:") };
wxControl *ass_ctrls[] = { ass_input, html_input, alpha_input }; wxControl *ass_ctrls[] = { ass_input, html_input, alpha_input };
rgb_box->Add(MakeColorInputSizer(ass_labels, ass_ctrls), 0, wxALL|wxCENTER|wxEXPAND, 3); auto ass_colors_sizer = MakeColorInputSizer(ass_labels, ass_ctrls);
if (!alpha)
ass_colors_sizer->Hide(alpha_input);
rgb_box->Add(ass_colors_sizer, 0, wxALL|wxCENTER|wxEXPAND, 3);
wxString hsl_labels[] = { _("Hue:"), _("Sat.:"), _("Lum.:") }; wxString hsl_labels[] = { _("Hue:"), _("Sat.:"), _("Lum.:") };
hsl_box->Add(MakeColorInputSizer(hsl_labels, hsl_input), 0, wxALL|wxEXPAND, 3); hsl_box->Add(MakeColorInputSizer(hsl_labels, hsl_input), 0, wxALL|wxEXPAND, 3);
@ -1106,8 +1113,8 @@ void DialogColorPicker::OnCaptureLost(wxMouseCaptureLostEvent&) {
} }
bool GetColorFromUser(wxWindow* parent, agi::Color original, std::function<void (agi::Color)> callback) { bool GetColorFromUser(wxWindow* parent, agi::Color original, bool alpha, std::function<void (agi::Color)> callback) {
DialogColorPicker dialog(parent, original, callback); DialogColorPicker dialog(parent, original, callback, alpha);
bool ok = dialog.ShowModal() == wxID_OK; bool ok = dialog.ShowModal() == wxID_OK;
if (!ok) if (!ok)
callback(original); callback(original);

View file

@ -28,6 +28,7 @@ class wxWindow;
/// @brief Get a color from the user via a color picker dialog /// @brief Get a color from the user via a color picker dialog
/// @param parent Parent window /// @param parent Parent window
/// @param original Initial color to select /// @param original Initial color to select
/// @param alpha Include controls for alpha
/// @param callback Function called whenever the selected color changes /// @param callback Function called whenever the selected color changes
/// @return Did the user accept the new color? /// @return Did the user accept the new color?
bool GetColorFromUser(wxWindow* parent, agi::Color original, std::function<void (agi::Color)> callback); bool GetColorFromUser(wxWindow* parent, agi::Color original, bool alpha, std::function<void (agi::Color)> callback);

View file

@ -104,7 +104,7 @@ DialogDummyVideo::DialogDummyVideo(wxWindow *parent)
res_sizer->Add(spin_ctrl(this, 1, 10000, &height), wxSizerFlags(1).Expand()); res_sizer->Add(spin_ctrl(this, 1, 10000, &height), wxSizerFlags(1).Expand());
wxBoxSizer *color_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *color_sizer = new wxBoxSizer(wxHORIZONTAL);
ColourButton *color_btn = new ColourButton(this, wxSize(30, 17), color); ColourButton *color_btn = new ColourButton(this, wxSize(30, 17), false, color);
color_sizer->Add(color_btn, wxSizerFlags().DoubleBorder(wxRIGHT)); color_sizer->Add(color_btn, wxSizerFlags().DoubleBorder(wxRIGHT));
color_sizer->Add(new wxCheckBox(this, -1, _("Checkerboard &pattern"), wxDefaultPosition, wxDefaultSize, 0, wxGenericValidator(&pattern)), wxSizerFlags(1).Center()); color_sizer->Add(new wxCheckBox(this, -1, _("Checkerboard &pattern"), wxDefaultPosition, wxDefaultSize, 0, wxGenericValidator(&pattern)), wxSizerFlags(1).Center());

View file

@ -191,10 +191,10 @@ DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Con
BoxItalic = new wxCheckBox(this, -1, _("&Italic")); BoxItalic = new wxCheckBox(this, -1, _("&Italic"));
BoxUnderline = new wxCheckBox(this, -1, _("&Underline")); BoxUnderline = new wxCheckBox(this, -1, _("&Underline"));
BoxStrikeout = new wxCheckBox(this, -1, _("&Strikeout")); BoxStrikeout = new wxCheckBox(this, -1, _("&Strikeout"));
colorButton[0] = new ColourButton(this, wxSize(55, 16), style->primary); colorButton[0] = new ColourButton(this, wxSize(55, 16), true, style->primary);
colorButton[1] = new ColourButton(this, wxSize(55, 16), style->secondary); colorButton[1] = new ColourButton(this, wxSize(55, 16), true, style->secondary);
colorButton[2] = new ColourButton(this, wxSize(55, 16), style->outline); colorButton[2] = new ColourButton(this, wxSize(55, 16), true, style->outline);
colorButton[3] = new ColourButton(this, wxSize(55, 16), style->shadow); colorButton[3] = new ColourButton(this, wxSize(55, 16), true, style->shadow);
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
margin[i] = spin_ctrl(this, style->Margin[i], 9999); margin[i] = spin_ctrl(this, style->Margin[i], 9999);
Alignment = new wxRadioBox(this, -1, _("Alignment"), wxDefaultPosition, wxDefaultSize, 9, alignValues, 3, wxRA_SPECIFY_COLS); Alignment = new wxRadioBox(this, -1, _("Alignment"), wxDefaultPosition, wxDefaultSize, 9, alignValues, 3, wxRA_SPECIFY_COLS);
@ -324,7 +324,7 @@ DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Con
ColourButton *previewButton = 0; ColourButton *previewButton = 0;
if (!SubtitlesProviderFactory::GetClasses().empty()) { if (!SubtitlesProviderFactory::GetClasses().empty()) {
PreviewText = new wxTextCtrl(this, -1, to_wx(OPT_GET("Tool/Style Editor/Preview Text")->GetString())); PreviewText = new wxTextCtrl(this, -1, to_wx(OPT_GET("Tool/Style Editor/Preview Text")->GetString()));
previewButton = new ColourButton(this, wxSize(45, 16), OPT_GET("Colour/Style Editor/Background/Preview")->GetColor()); previewButton = new ColourButton(this, wxSize(45, 16), false, OPT_GET("Colour/Style Editor/Background/Preview")->GetColor());
SubsPreview = new SubtitlesPreview(this, wxSize(100, 60), wxSUNKEN_BORDER, OPT_GET("Colour/Style Editor/Background/Preview")->GetColor()); SubsPreview = new SubtitlesPreview(this, wxSize(100, 60), wxSUNKEN_BORDER, OPT_GET("Colour/Style Editor/Background/Preview")->GetColor());
SubsPreview->SetToolTip(_("Preview of current style")); SubsPreview->SetToolTip(_("Preview of current style"));

View file

@ -150,7 +150,7 @@ wxControl *OptionPage::OptionAdd(wxFlexGridSizer *flex, const wxString &name, co
} }
case agi::OptionValue::Type_Color: { case agi::OptionValue::Type_Color: {
ColourButton *cb = new ColourButton(this, wxSize(40,10), opt->GetColor()); ColourButton *cb = new ColourButton(this, wxSize(40,10), false, opt->GetColor());
cb->Bind(EVT_COLOR, ColourUpdater(opt_name, parent)); cb->Bind(EVT_COLOR, ColourUpdater(opt_name, parent));
Add(flex, name, cb); Add(flex, name, cb);
return cb; return cb;