mirror of https://github.com/odrling/Aegisub
Merge branch 'wangqr_gui' into feature
This commit is contained in:
commit
b8b85eb580
17
meson.build
17
meson.build
|
@ -403,8 +403,15 @@ subdir('tests')
|
||||||
aegisub_cpp_pch = ['src/include/agi_pre.h']
|
aegisub_cpp_pch = ['src/include/agi_pre.h']
|
||||||
aegisub_c_pch = ['src/include/agi_pre_c.h']
|
aegisub_c_pch = ['src/include/agi_pre_c.h']
|
||||||
|
|
||||||
|
link_args = []
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
manifest_file = configure_file(copy: true, input: 'src/res/aegisub.exe.manifest', output: 'aegisub.exe.manifest')
|
||||||
|
link_args += ['/MANIFEST:EMBED', '/MANIFESTINPUT:@0@'.format(manifest_file)]
|
||||||
|
endif
|
||||||
|
|
||||||
aegisub = executable('aegisub', aegisub_src, version_h, acconf,
|
aegisub = executable('aegisub', aegisub_src, version_h, acconf,
|
||||||
link_with: [libresrc, libluabins, libaegisub],
|
link_with: [libresrc, libluabins, libaegisub],
|
||||||
|
link_args: link_args,
|
||||||
include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc, include_directories('src')],
|
include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc, include_directories('src')],
|
||||||
cpp_pch: aegisub_cpp_pch,
|
cpp_pch: aegisub_cpp_pch,
|
||||||
c_pch: aegisub_c_pch,
|
c_pch: aegisub_c_pch,
|
||||||
|
@ -412,13 +419,3 @@ aegisub = executable('aegisub', aegisub_src, version_h, acconf,
|
||||||
install_dir: bindir,
|
install_dir: bindir,
|
||||||
dependencies: deps,
|
dependencies: deps,
|
||||||
win_subsystem: 'windows')
|
win_subsystem: 'windows')
|
||||||
|
|
||||||
if host_machine.system() == 'windows'
|
|
||||||
mt_exe = find_program('mt.exe')
|
|
||||||
apply_manifest = find_program(meson.project_source_root() / 'tools/apply-manifest.py')
|
|
||||||
custom_target('apply-manifest',
|
|
||||||
input: aegisub,
|
|
||||||
output: 'applied_manifest',
|
|
||||||
command: [apply_manifest, mt_exe, '@INPUT@'],
|
|
||||||
build_by_default: true)
|
|
||||||
endif
|
|
||||||
|
|
|
@ -131,7 +131,12 @@ void ShowAboutDialog(wxWindow *parent) {
|
||||||
wxChar copySymbol = 0xA9;
|
wxChar copySymbol = 0xA9;
|
||||||
aboutString.Replace("(c)", wxString(copySymbol));
|
aboutString.Replace("(c)", wxString(copySymbol));
|
||||||
|
|
||||||
wxTextCtrl *textctrl = new wxTextCtrl(&d, -1, aboutString, wxDefaultPosition, wxSize(-1, 200), wxTE_MULTILINE | wxTE_READONLY | wxBORDER_NONE);
|
wxTextCtrl *textctrl = new wxTextCtrl(&d, -1, aboutString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxBORDER_NONE);
|
||||||
|
#if defined(__WXGTK__) && !wxCHECK_VERSION(3, 1, 3)
|
||||||
|
// Workaround for https://trac.wxwidgets.org/ticket/18507
|
||||||
|
textctrl->InvalidateBestSize();
|
||||||
|
textctrl->SetInitialSize();
|
||||||
|
#endif
|
||||||
|
|
||||||
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
MainSizer->Add(new wxStaticBitmap(&d, -1, GETIMAGE(splash)), 0, wxCENTER, 0);
|
MainSizer->Add(new wxStaticBitmap(&d, -1, GETIMAGE(splash)), 0, wxCENTER, 0);
|
||||||
|
|
|
@ -569,9 +569,10 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
|
||||||
wxString modes[] = { _("RGB/R"), _("RGB/G"), _("RGB/B"), _("HSL/L"), _("HSV/H") };
|
wxString modes[] = { _("RGB/R"), _("RGB/G"), _("RGB/B"), _("HSL/L"), _("HSV/H") };
|
||||||
colorspace_choice = new wxChoice(this, -1, wxDefaultPosition, wxDefaultSize, 5, modes);
|
colorspace_choice = new wxChoice(this, -1, wxDefaultPosition, wxDefaultSize, 5, modes);
|
||||||
|
|
||||||
wxSize colorinput_size = GetTextExtent(" &H10117B& ");
|
ass_input = new wxTextCtrl(this, -1);
|
||||||
colorinput_size.SetHeight(-1);
|
wxSize colorinput_size = ass_input->GetSizeFromTextSize(GetTextExtent(wxS("&H10117B&")));
|
||||||
wxSize colorinput_labelsize(40, -1);
|
ass_input->SetMinSize(colorinput_size);
|
||||||
|
ass_input->SetSize(colorinput_size);
|
||||||
|
|
||||||
wxSizer *rgb_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("RGB color"));
|
wxSizer *rgb_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("RGB color"));
|
||||||
wxSizer *hsl_box = new wxStaticBoxSizer(wxVERTICAL, this, _("HSL color"));
|
wxSizer *hsl_box = new wxStaticBoxSizer(wxVERTICAL, this, _("HSL color"));
|
||||||
|
@ -580,7 +581,7 @@ DialogColorPicker::DialogColorPicker(wxWindow *parent, agi::Color initial_color,
|
||||||
for (auto& elem : rgb_input)
|
for (auto& elem : rgb_input)
|
||||||
elem = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
|
elem = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
|
||||||
|
|
||||||
ass_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
|
// ass_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
|
||||||
html_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
|
html_input = new wxTextCtrl(this, -1, "", wxDefaultPosition, colorinput_size);
|
||||||
alpha_input = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
|
alpha_input = new wxSpinCtrl(this, -1, "", wxDefaultPosition, colorinput_size, wxSP_ARROW_KEYS, 0, 255);
|
||||||
|
|
||||||
|
|
|
@ -80,13 +80,14 @@ static ResolutionShortcut resolutions[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
wxSpinCtrl *spin_ctrl(wxWindow *parent, int min, int max, int *value) {
|
wxSpinCtrl *spin_ctrl(wxWindow *parent, int min, int max, int *value) {
|
||||||
auto ctrl = new wxSpinCtrl(parent, -1, "", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, min, max, *value);
|
auto ctrl = new wxSpinCtrl(parent, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, min, max, *value);
|
||||||
ctrl->SetValidator(wxGenericValidator(value));
|
ctrl->SetValidator(wxGenericValidator(value));
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: change the misleading function name, this is TextCtrl in fact
|
||||||
wxControl *spin_ctrl(wxWindow *parent, double min, double max, double *value) {
|
wxControl *spin_ctrl(wxWindow *parent, double min, double max, double *value) {
|
||||||
return new wxTextCtrl(parent, -1, "", wxDefaultPosition, wxSize(50, -1), 0, DoubleValidator(value, min, max));
|
return new wxTextCtrl(parent, -1, "", wxDefaultPosition, wxDefaultSize, 0, DoubleValidator(value, min, max));
|
||||||
}
|
}
|
||||||
|
|
||||||
wxComboBox *resolution_shortcuts(wxWindow *parent, int width, int height) {
|
wxComboBox *resolution_shortcuts(wxWindow *parent, int width, int height) {
|
||||||
|
|
|
@ -110,6 +110,8 @@ int ShowEbuExportConfigurationDialog(wxWindow *owner, EbuExportSettings &s) {
|
||||||
wxRadioBox *tv_standard_box = new wxRadioBox(&d, -1, _("TV standard"), wxDefaultPosition, wxDefaultSize, 6, tv_standards, 0, wxRA_SPECIFY_ROWS);
|
wxRadioBox *tv_standard_box = new wxRadioBox(&d, -1, _("TV standard"), wxDefaultPosition, wxDefaultSize, 6, tv_standards, 0, wxRA_SPECIFY_ROWS);
|
||||||
|
|
||||||
wxTextCtrl *timecode_offset_entry = new wxTextCtrl(&d, -1, "00:00:00:00");
|
wxTextCtrl *timecode_offset_entry = new wxTextCtrl(&d, -1, "00:00:00:00");
|
||||||
|
timecode_offset_entry->SetMinSize(timecode_offset_entry->GetSizeFromTextSize(timecode_offset_entry->GetTextExtent(wxS("00:00:00:00"))));
|
||||||
|
timecode_offset_entry->SetSize(timecode_offset_entry->GetSizeFromTextSize(timecode_offset_entry->GetTextExtent(wxS("00:00:00:00"))));
|
||||||
wxCheckBox *inclusive_end_times_check = new wxCheckBox(&d, -1, _("Out-times are inclusive"));
|
wxCheckBox *inclusive_end_times_check = new wxCheckBox(&d, -1, _("Out-times are inclusive"));
|
||||||
|
|
||||||
wxString text_encodings[] = {
|
wxString text_encodings[] = {
|
||||||
|
@ -129,7 +131,9 @@ int ShowEbuExportConfigurationDialog(wxWindow *owner, EbuExportSettings &s) {
|
||||||
_("Skip lines that are too long")
|
_("Skip lines that are too long")
|
||||||
};
|
};
|
||||||
|
|
||||||
wxSpinCtrl *max_line_length_ctrl = new wxSpinCtrl(&d, -1, wxString(), wxDefaultPosition, wxSize(65, -1));
|
wxSpinCtrl *max_line_length_ctrl = new wxSpinCtrl(&d, -1, wxString());
|
||||||
|
max_line_length_ctrl->SetMinSize(max_line_length_ctrl->GetSizeFromTextSize(max_line_length_ctrl->GetTextExtent(wxS("00"))));
|
||||||
|
max_line_length_ctrl->SetSize(max_line_length_ctrl->GetSizeFromTextSize(max_line_length_ctrl->GetTextExtent(wxS("00"))));
|
||||||
wxComboBox *wrap_mode_ctrl = new wxComboBox(&d, -1, wrap_modes[0], wxDefaultPosition, wxDefaultSize, 4, wrap_modes, wxCB_DROPDOWN | wxCB_READONLY);
|
wxComboBox *wrap_mode_ctrl = new wxComboBox(&d, -1, wrap_modes[0], wxDefaultPosition, wxDefaultSize, 4, wrap_modes, wxCB_DROPDOWN | wxCB_READONLY);
|
||||||
wxCheckBox *translate_alignments_check = new wxCheckBox(&d, -1, _("Translate alignments"));
|
wxCheckBox *translate_alignments_check = new wxCheckBox(&d, -1, _("Translate alignments"));
|
||||||
|
|
||||||
|
|
|
@ -116,8 +116,8 @@ DialogProperties::DialogProperties(agi::Context *c)
|
||||||
TopSizer->Add(TopSizerGrid,1,wxALL | wxEXPAND,0);
|
TopSizer->Add(TopSizerGrid,1,wxALL | wxEXPAND,0);
|
||||||
|
|
||||||
// Resolution box
|
// Resolution box
|
||||||
ResX = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50, -1),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResX")));
|
ResX = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxDefaultSize,0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResX")));
|
||||||
ResY = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxSize(50, -1),0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResY")));
|
ResY = new wxTextCtrl(&d,-1,"",wxDefaultPosition,wxDefaultSize,0,IntValidator(c->ass->GetScriptInfoAsInt("PlayResY")));
|
||||||
|
|
||||||
wxButton *FromVideo = new wxButton(&d,-1,_("From &video"));
|
wxButton *FromVideo = new wxButton(&d,-1,_("From &video"));
|
||||||
if (!c->project->VideoProvider())
|
if (!c->project->VideoProvider())
|
||||||
|
@ -176,7 +176,7 @@ DialogProperties::DialogProperties(agi::Context *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogProperties::AddProperty(wxSizer *sizer, wxString const& label, std::string const& property) {
|
void DialogProperties::AddProperty(wxSizer *sizer, wxString const& label, std::string const& property) {
|
||||||
wxTextCtrl *ctrl = new wxTextCtrl(&d, -1, to_wx(c->ass->GetScriptInfo(property)), wxDefaultPosition, wxSize(200, -1));
|
wxTextCtrl *ctrl = new wxTextCtrl(&d, -1, to_wx(c->ass->GetScriptInfo(property)));
|
||||||
sizer->Add(new wxStaticText(&d, -1, label), wxSizerFlags().Center().Left());
|
sizer->Add(new wxStaticText(&d, -1, label), wxSizerFlags().Center().Left());
|
||||||
sizer->Add(ctrl, wxSizerFlags(1).Expand());
|
sizer->Add(ctrl, wxSizerFlags(1).Expand());
|
||||||
properties.push_back({property, ctrl});
|
properties.push_back({property, ctrl});
|
||||||
|
|
|
@ -112,7 +112,7 @@ DialogResample::DialogResample(agi::Context *c, ResampleSettings &settings)
|
||||||
|
|
||||||
// Create all controls and set validators
|
// Create all controls and set validators
|
||||||
for (size_t i = 0; i < 4; ++i) {
|
for (size_t i = 0; i < 4; ++i) {
|
||||||
margin_ctrl[i] = new wxSpinCtrl(&d, -1, "0", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, -9999, 9999, 0);
|
margin_ctrl[i] = new wxSpinCtrl(&d, -1, "0", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -9999, 9999, 0);
|
||||||
margin_ctrl[i]->SetValidator(wxGenericValidator(&settings.margin[i]));
|
margin_ctrl[i]->SetValidator(wxGenericValidator(&settings.margin[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,12 +122,12 @@ DialogResample::DialogResample(agi::Context *c, ResampleSettings &settings)
|
||||||
margin_ctrl[RIGHT]->Enable(false);
|
margin_ctrl[RIGHT]->Enable(false);
|
||||||
margin_ctrl[BOTTOM]->Enable(false);
|
margin_ctrl[BOTTOM]->Enable(false);
|
||||||
|
|
||||||
source_x = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 1, INT_MAX);
|
source_x = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, INT_MAX);
|
||||||
source_y = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 1, INT_MAX);
|
source_y = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, INT_MAX);
|
||||||
source_matrix = new wxComboBox(&d, -1, "", wxDefaultPosition,
|
source_matrix = new wxComboBox(&d, -1, "", wxDefaultPosition,
|
||||||
wxDefaultSize, to_wx(MatrixNames()), wxCB_READONLY);
|
wxDefaultSize, to_wx(MatrixNames()), wxCB_READONLY);
|
||||||
dest_x = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 1, INT_MAX);
|
dest_x = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, INT_MAX);
|
||||||
dest_y = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 1, INT_MAX);
|
dest_y = new wxSpinCtrl(&d, -1, "", wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, INT_MAX);
|
||||||
dest_matrix = new wxComboBox(&d, -1, "", wxDefaultPosition, wxDefaultSize,
|
dest_matrix = new wxComboBox(&d, -1, "", wxDefaultPosition, wxDefaultSize,
|
||||||
to_wx(MatrixNames()), wxCB_READONLY);
|
to_wx(MatrixNames()), wxCB_READONLY);
|
||||||
|
|
||||||
|
|
|
@ -190,11 +190,12 @@ DialogShiftTimes::DialogShiftTimes(agi::Context *context)
|
||||||
shift_frames->Disable();
|
shift_frames->Disable();
|
||||||
|
|
||||||
// Position controls
|
// Position controls
|
||||||
wxSizer *shift_amount_sizer = new wxFlexGridSizer(2, 2, 5, 5);
|
wxFlexGridSizer* shift_amount_sizer = new wxFlexGridSizer(2, 2, 5, 5);
|
||||||
|
shift_amount_sizer->AddGrowableCol(1, 1);
|
||||||
shift_amount_sizer->Add(shift_by_time, wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL));
|
shift_amount_sizer->Add(shift_by_time, wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL));
|
||||||
shift_amount_sizer->Add(shift_time, wxSizerFlags(1));
|
shift_amount_sizer->Add(shift_time, wxSizerFlags().Expand());
|
||||||
shift_amount_sizer->Add(shift_by_frames, wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL));
|
shift_amount_sizer->Add(shift_by_frames, wxSizerFlags(0).Align(wxALIGN_CENTER_VERTICAL));
|
||||||
shift_amount_sizer->Add(shift_frames, wxSizerFlags(1));
|
shift_amount_sizer->Add(shift_frames, wxSizerFlags().Expand());
|
||||||
|
|
||||||
wxSizer *shift_direction_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxSizer *shift_direction_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
shift_direction_sizer->Add(shift_forward, wxSizerFlags(1).Expand());
|
shift_direction_sizer->Add(shift_forward, wxSizerFlags(1).Expand());
|
||||||
|
|
|
@ -151,7 +151,7 @@ DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Con
|
||||||
|
|
||||||
auto num_text_ctrl = [&](double *value, double min, double max, double step) -> wxSpinCtrlDouble * {
|
auto num_text_ctrl = [&](double *value, double min, double max, double step) -> wxSpinCtrlDouble * {
|
||||||
auto scd = new wxSpinCtrlDouble(this, -1, "", wxDefaultPosition,
|
auto scd = new wxSpinCtrlDouble(this, -1, "", wxDefaultPosition,
|
||||||
wxSize(75, -1), wxSP_ARROW_KEYS, min, max, *value, step);
|
wxDefaultSize, wxSP_ARROW_KEYS, min, max, *value, step);
|
||||||
scd->SetValidator(DoubleSpinValidator(value));
|
scd->SetValidator(DoubleSpinValidator(value));
|
||||||
scd->Bind(wxEVT_SPINCTRLDOUBLE, [=](wxSpinDoubleEvent &evt) {
|
scd->Bind(wxEVT_SPINCTRLDOUBLE, [=](wxSpinDoubleEvent &evt) {
|
||||||
evt.Skip();
|
evt.Skip();
|
||||||
|
@ -197,10 +197,12 @@ DialogStyleEditor::DialogStyleEditor(wxWindow *parent, AssStyle *style, agi::Con
|
||||||
new ColourButton(this, wxSize(55, 16), true, style->outline, ColorValidator(&work->outline)),
|
new ColourButton(this, wxSize(55, 16), true, style->outline, ColorValidator(&work->outline)),
|
||||||
new ColourButton(this, wxSize(55, 16), true, style->shadow, ColorValidator(&work->shadow))
|
new ColourButton(this, wxSize(55, 16), true, style->shadow, ColorValidator(&work->shadow))
|
||||||
};
|
};
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++) {
|
||||||
margin[i] = new wxSpinCtrl(this, -1, std::to_wstring(style->Margin[i]),
|
margin[i] = new wxSpinCtrl(this, -1, std::to_wstring(style->Margin[i]),
|
||||||
wxDefaultPosition, wxSize(60, -1),
|
wxDefaultPosition, wxDefaultSize,
|
||||||
wxSP_ARROW_KEYS, -9999, 99999, style->Margin[i]);
|
wxSP_ARROW_KEYS, -9999, 9999, style->Margin[i]);
|
||||||
|
margin[i]->SetInitialSize(margin[i]->GetSizeFromTextSize(GetTextExtent(wxS("0000"))));
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
auto Outline = num_text_ctrl(&work->outline_w, 0.0, 1000.0, 0.1);
|
auto Outline = num_text_ctrl(&work->outline_w, 0.0, 1000.0, 0.1);
|
||||||
|
|
|
@ -197,7 +197,7 @@ DialogTimingProcessor::DialogTimingProcessor(agi::Context *c)
|
||||||
make_ctrl(&d, adjBoxes, _("Max overlap:"), &adjOverlap, adjsEnable,
|
make_ctrl(&d, adjBoxes, _("Max overlap:"), &adjOverlap, adjsEnable,
|
||||||
_("Maximum overlap between the end and start time for two subtitles to be made continuous, in milliseconds"));
|
_("Maximum overlap between the end and start time for two subtitles to be made continuous, in milliseconds"));
|
||||||
|
|
||||||
adjacentBias = new wxSlider(&d, -1, mid<int>(0, OPT_GET("Tool/Timing Post Processor/Adjacent Bias")->GetDouble() * 100, 100), 0, 100, wxDefaultPosition, wxSize(-1,20));
|
adjacentBias = new wxSlider(&d, -1, mid<int>(0, OPT_GET("Tool/Timing Post Processor/Adjacent Bias")->GetDouble() * 100, 100), 0, 100);
|
||||||
adjacentBias->SetToolTip(_("Sets how to set the adjoining of lines. If set totally to left, it will extend or shrink start time of the second line; if totally to right, it will extend or shrink the end time of the first line."));
|
adjacentBias->SetToolTip(_("Sets how to set the adjoining of lines. If set totally to left, it will extend or shrink start time of the second line; if totally to right, it will extend or shrink the end time of the first line."));
|
||||||
|
|
||||||
auto adjSliderSizer = new wxBoxSizer(wxHORIZONTAL);
|
auto adjSliderSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
|
@ -78,8 +78,8 @@ wxWindow *AssTransformFramerateFilter::GetConfigDialogWindow(wxWindow *parent, a
|
||||||
initialInput = "23.976";
|
initialInput = "23.976";
|
||||||
FromVideo->Enable(false);
|
FromVideo->Enable(false);
|
||||||
}
|
}
|
||||||
InputFramerate = new wxTextCtrl(base,-1,initialInput,wxDefaultPosition,wxSize(60,20));
|
InputFramerate = new wxTextCtrl(base,-1,initialInput);
|
||||||
InputSizer->Add(InputFramerate,0,wxEXPAND | wxLEFT,5);
|
InputSizer->Add(InputFramerate, 0, wxEXPAND);
|
||||||
InputSizer->Add(FromVideo, 0, wxEXPAND | wxLEFT, 5);
|
InputSizer->Add(FromVideo, 0, wxEXPAND | wxLEFT, 5);
|
||||||
InputSizer->AddStretchSpacer(1);
|
InputSizer->AddStretchSpacer(1);
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ wxWindow *AssTransformFramerateFilter::GetConfigDialogWindow(wxWindow *parent, a
|
||||||
|
|
||||||
// Output top line
|
// Output top line
|
||||||
RadioOutputVFR = new wxRadioButton(base,-1,_("V&ariable"),wxDefaultPosition,wxDefaultSize,wxRB_GROUP);
|
RadioOutputVFR = new wxRadioButton(base,-1,_("V&ariable"),wxDefaultPosition,wxDefaultSize,wxRB_GROUP);
|
||||||
OutputSizerTop->Add(RadioOutputVFR,0,wxEXPAND,0);
|
OutputSizerTop->Add(RadioOutputVFR, wxEXPAND);
|
||||||
|
|
||||||
// Output bottom line
|
// Output bottom line
|
||||||
RadioOutputCFR = new wxRadioButton(base,-1,_("&Constant: "));
|
RadioOutputCFR = new wxRadioButton(base,-1,_("&Constant: "));
|
||||||
|
@ -99,8 +99,8 @@ wxWindow *AssTransformFramerateFilter::GetConfigDialogWindow(wxWindow *parent, a
|
||||||
RadioOutputVFR->Enable(false);
|
RadioOutputVFR->Enable(false);
|
||||||
RadioOutputCFR->SetValue(true);
|
RadioOutputCFR->SetValue(true);
|
||||||
}
|
}
|
||||||
OutputFramerate = new wxTextCtrl(base,-1,initialOutput,wxDefaultPosition,wxSize(60,20));
|
OutputFramerate = new wxTextCtrl(base,-1,initialOutput);
|
||||||
OutputSizerBottom->Add(RadioOutputCFR,0,wxEXPAND,0);
|
OutputSizerBottom->Add(RadioOutputCFR, wxEXPAND);
|
||||||
OutputSizerBottom->Add(OutputFramerate, 0, wxEXPAND | wxLEFT, 5);
|
OutputSizerBottom->Add(OutputFramerate, 0, wxEXPAND | wxLEFT, 5);
|
||||||
OutputSizerBottom->AddStretchSpacer(1);
|
OutputSizerBottom->AddStretchSpacer(1);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<description>Aegisub subtitle editor</description>
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Windows 10 and Windows 11 -->
|
||||||
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
|
||||||
|
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness>
|
||||||
|
</windowsSettings>
|
||||||
|
</application>
|
||||||
|
</assembly>
|
|
@ -120,12 +120,11 @@ SubsEditBox::SubsEditBox(wxWindow *parent, agi::Context *context)
|
||||||
// Only supported in wxgtk
|
// Only supported in wxgtk
|
||||||
comment_box->SetCanFocus(false);
|
comment_box->SetCanFocus(false);
|
||||||
#endif
|
#endif
|
||||||
top_sizer->Add(comment_box, 0, wxRIGHT | wxALIGN_CENTER, 5);
|
top_sizer->Add(comment_box, wxSizerFlags().Expand().Border(wxRIGHT, 5));
|
||||||
|
|
||||||
style_box = MakeComboBox("Default", wxCB_READONLY, &SubsEditBox::OnStyleChange, _("Style for this line"));
|
style_box = MakeComboBox("Default", wxCB_READONLY, &SubsEditBox::OnStyleChange, _("Style for this line"));
|
||||||
|
|
||||||
style_edit_button = new wxButton(this, -1, _("Edit"), wxDefaultPosition,
|
style_edit_button = new wxButton(this, -1, _("Edit"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
|
||||||
wxSize(GetTextExtent(_("Edit")).GetWidth() + 20, -1));
|
|
||||||
style_edit_button->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
style_edit_button->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
||||||
if (active_style) {
|
if (active_style) {
|
||||||
wxArrayString font_list = wxFontEnumerator::GetFacenames();
|
wxArrayString font_list = wxFontEnumerator::GetFacenames();
|
||||||
|
@ -133,28 +132,35 @@ SubsEditBox::SubsEditBox(wxWindow *parent, agi::Context *context)
|
||||||
DialogStyleEditor(this, active_style, c, nullptr, "", font_list).ShowModal();
|
DialogStyleEditor(this, active_style, c, nullptr, "", font_list).ShowModal();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
top_sizer->Add(style_edit_button, wxSizerFlags().Center().Border(wxRIGHT));
|
top_sizer->Add(style_edit_button, wxSizerFlags().Expand().Border(wxRIGHT));
|
||||||
|
|
||||||
actor_box = new Placeholder<wxComboBox>(this, _("Actor"), wxSize(110, -1), wxCB_DROPDOWN | wxTE_PROCESS_ENTER, _("Actor name for this speech. This is only for reference, and is mainly useless."));
|
actor_box = new Placeholder<wxComboBox>(this, _("Actor"), wxDefaultSize, wxCB_DROPDOWN | wxTE_PROCESS_ENTER, _("Actor name for this speech. This is only for reference, and is mainly useless."));
|
||||||
Bind(wxEVT_TEXT, &SubsEditBox::OnActorChange, this, actor_box->GetId());
|
Bind(wxEVT_TEXT, &SubsEditBox::OnActorChange, this, actor_box->GetId());
|
||||||
Bind(wxEVT_COMBOBOX, &SubsEditBox::OnActorChange, this, actor_box->GetId());
|
Bind(wxEVT_COMBOBOX, &SubsEditBox::OnActorChange, this, actor_box->GetId());
|
||||||
top_sizer->Add(actor_box, wxSizerFlags(2).Center().Border(wxRIGHT));
|
top_sizer->Add(actor_box, wxSizerFlags(2).Expand().Border(wxRIGHT));
|
||||||
|
|
||||||
effect_box = new Placeholder<wxComboBox>(this, _("Effect"), wxSize(80,-1), wxCB_DROPDOWN | wxTE_PROCESS_ENTER, _("Effect for this line. This can be used to store extra information for karaoke scripts, or for the effects supported by the renderer."));
|
effect_box = new Placeholder<wxComboBox>(this, _("Effect"), wxDefaultSize, wxCB_DROPDOWN | wxTE_PROCESS_ENTER, _("Effect for this line. This can be used to store extra information for karaoke scripts, or for the effects supported by the renderer."));
|
||||||
Bind(wxEVT_TEXT, &SubsEditBox::OnEffectChange, this, effect_box->GetId());
|
Bind(wxEVT_TEXT, &SubsEditBox::OnEffectChange, this, effect_box->GetId());
|
||||||
Bind(wxEVT_COMBOBOX, &SubsEditBox::OnEffectChange, this, effect_box->GetId());
|
Bind(wxEVT_COMBOBOX, &SubsEditBox::OnEffectChange, this, effect_box->GetId());
|
||||||
top_sizer->Add(effect_box, 3, wxALIGN_CENTER, 5);
|
top_sizer->Add(effect_box, wxSizerFlags(3).Expand());
|
||||||
|
|
||||||
char_count = new wxTextCtrl(this, -1, "0", wxDefaultPosition, wxSize(30, -1), wxTE_READONLY | wxTE_CENTER);
|
char_count = new wxTextCtrl(this, -1, "0", wxDefaultPosition, wxDefaultSize, wxTE_READONLY | wxTE_CENTER);
|
||||||
|
char_count->SetInitialSize(char_count->GetSizeFromTextSize(GetTextExtent(wxS("000"))));
|
||||||
char_count->SetToolTip(_("Number of characters in the longest line of this subtitle."));
|
char_count->SetToolTip(_("Number of characters in the longest line of this subtitle."));
|
||||||
top_sizer->Add(char_count, 0, wxALIGN_CENTER, 5);
|
top_sizer->Add(char_count, wxSizerFlags().Expand());
|
||||||
|
|
||||||
// Middle controls
|
// Middle controls
|
||||||
middle_left_sizer = new wxBoxSizer(wxHORIZONTAL);
|
middle_left_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
layer = new wxSpinCtrl(this,-1,"",wxDefaultPosition,wxSize(50,-1), wxSP_ARROW_KEYS | wxTE_PROCESS_ENTER,0,0x7FFFFFFF,0);
|
layer = new wxSpinCtrl(this,-1,"",wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS | wxTE_PROCESS_ENTER,0,0x7FFFFFFF,0);
|
||||||
|
#ifndef __WXGTK3__
|
||||||
|
// GTK3 has a bug that we cannot shrink the size of a widget, so do nothing there. See:
|
||||||
|
// http://gtk.10911.n7.nabble.com/gtk-widget-set-size-request-stopped-working-with-GTK3-td26274.html
|
||||||
|
// https://trac.wxwidgets.org/ticket/18568
|
||||||
|
layer->SetInitialSize(layer->GetSizeFromTextSize(GetTextExtent(wxS("00"))));
|
||||||
|
#endif
|
||||||
layer->SetToolTip(_("Layer number"));
|
layer->SetToolTip(_("Layer number"));
|
||||||
middle_left_sizer->Add(layer, wxSizerFlags().Center());
|
middle_left_sizer->Add(layer, wxSizerFlags().Expand());
|
||||||
middle_left_sizer->AddSpacer(5);
|
middle_left_sizer->AddSpacer(5);
|
||||||
|
|
||||||
start_time = MakeTimeCtrl(_("Start time"), TIME_START);
|
start_time = MakeTimeCtrl(_("Start time"), TIME_START);
|
||||||
|
@ -191,22 +197,27 @@ SubsEditBox::SubsEditBox(wxWindow *parent, agi::Context *context)
|
||||||
split_box = new wxCheckBox(this,-1,_("Show Original"));
|
split_box = new wxCheckBox(this,-1,_("Show Original"));
|
||||||
split_box->SetToolTip(_("Show the contents of the subtitle line when it was first selected above the edit box. This is sometimes useful when editing subtitles or translating subtitles into another language."));
|
split_box->SetToolTip(_("Show the contents of the subtitle line when it was first selected above the edit box. This is sometimes useful when editing subtitles or translating subtitles into another language."));
|
||||||
split_box->Bind(wxEVT_CHECKBOX, &SubsEditBox::OnSplit, this);
|
split_box->Bind(wxEVT_CHECKBOX, &SubsEditBox::OnSplit, this);
|
||||||
middle_right_sizer->Add(split_box, wxSizerFlags().Center().Left());
|
middle_right_sizer->Add(split_box, wxSizerFlags().Expand());
|
||||||
|
|
||||||
// Main sizer
|
// Main sizer
|
||||||
wxSizer *main_sizer = new wxBoxSizer(wxVERTICAL);
|
wxSizer *main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
main_sizer->Add(top_sizer,0,wxEXPAND | wxALL,3);
|
main_sizer->Add(top_sizer, wxSizerFlags().Expand().Border(wxALL, 3));
|
||||||
main_sizer->Add(middle_left_sizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3);
|
main_sizer->Add(middle_left_sizer, wxSizerFlags().Expand().Border(wxLEFT | wxRIGHT | wxBOTTOM, 3));
|
||||||
main_sizer->Add(middle_right_sizer,0,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3);
|
main_sizer->Add(middle_right_sizer, wxSizerFlags().Expand().Border(wxLEFT | wxRIGHT | wxBOTTOM, 3));
|
||||||
|
|
||||||
// Text editor
|
// Text editor
|
||||||
edit_ctrl = new SubsTextEditCtrl(this, wxSize(300,50), wxBORDER_SUNKEN, c);
|
edit_ctrl = new SubsTextEditCtrl(this, wxDefaultSize, wxBORDER_SUNKEN, c);
|
||||||
edit_ctrl->Bind(wxEVT_CHAR_HOOK, &SubsEditBox::OnKeyDown, this);
|
edit_ctrl->Bind(wxEVT_CHAR_HOOK, &SubsEditBox::OnKeyDown, this);
|
||||||
|
|
||||||
secondary_editor = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(300,50), wxBORDER_SUNKEN | wxTE_MULTILINE | wxTE_READONLY);
|
secondary_editor = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN | wxTE_MULTILINE | wxTE_READONLY);
|
||||||
|
// Here we use the height of secondary_editor as the initial size of edit_ctrl,
|
||||||
|
// which is more reasonable than the default given by wxWidgets.
|
||||||
|
// See: https://trac.wxwidgets.org/ticket/18471#ticket
|
||||||
|
// https://github.com/wangqr/Aegisub/issues/4
|
||||||
|
edit_ctrl->SetInitialSize(secondary_editor->GetSize());
|
||||||
|
|
||||||
main_sizer->Add(secondary_editor,1,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3);
|
main_sizer->Add(secondary_editor, wxSizerFlags(1).Expand().Border(wxLEFT | wxRIGHT | wxBOTTOM, 3));
|
||||||
main_sizer->Add(edit_ctrl,1,wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,3);
|
main_sizer->Add(edit_ctrl, wxSizerFlags(1).Expand().Border(wxLEFT | wxRIGHT | wxBOTTOM, 3));
|
||||||
main_sizer->Hide(secondary_editor);
|
main_sizer->Hide(secondary_editor);
|
||||||
|
|
||||||
bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
@ -250,10 +261,11 @@ SubsEditBox::~SubsEditBox() {
|
||||||
}
|
}
|
||||||
|
|
||||||
wxTextCtrl *SubsEditBox::MakeMarginCtrl(wxString const& tooltip, int margin, wxString const& commit_msg) {
|
wxTextCtrl *SubsEditBox::MakeMarginCtrl(wxString const& tooltip, int margin, wxString const& commit_msg) {
|
||||||
wxTextCtrl *ctrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(40,-1), wxTE_CENTRE | wxTE_PROCESS_ENTER, IntValidator(0, true));
|
wxTextCtrl *ctrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_CENTRE | wxTE_PROCESS_ENTER, IntValidator(0, true));
|
||||||
|
ctrl->SetInitialSize(ctrl->GetSizeFromTextSize(GetTextExtent(wxS("0000"))));
|
||||||
ctrl->SetMaxLength(5);
|
ctrl->SetMaxLength(5);
|
||||||
ctrl->SetToolTip(tooltip);
|
ctrl->SetToolTip(tooltip);
|
||||||
middle_left_sizer->Add(ctrl, wxSizerFlags().Center());
|
middle_left_sizer->Add(ctrl, wxSizerFlags().Expand());
|
||||||
|
|
||||||
Bind(wxEVT_TEXT, [=](wxCommandEvent&) {
|
Bind(wxEVT_TEXT, [=](wxCommandEvent&) {
|
||||||
int value = agi::util::mid(-9999, atoi(ctrl->GetValue().utf8_str()), 99999);
|
int value = agi::util::mid(-9999, atoi(ctrl->GetValue().utf8_str()), 99999);
|
||||||
|
@ -265,17 +277,18 @@ wxTextCtrl *SubsEditBox::MakeMarginCtrl(wxString const& tooltip, int margin, wxS
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeEdit *SubsEditBox::MakeTimeCtrl(wxString const& tooltip, TimeField field) {
|
TimeEdit *SubsEditBox::MakeTimeCtrl(wxString const& tooltip, TimeField field) {
|
||||||
TimeEdit *ctrl = new TimeEdit(this, -1, c, "", wxSize(GetTextExtent(wxS(" 0:00:00.000 ")).GetWidth(),-1), field == TIME_END);
|
TimeEdit *ctrl = new TimeEdit(this, -1, c, "", wxDefaultSize, field == TIME_END);
|
||||||
|
ctrl->SetInitialSize(ctrl->GetSizeFromTextSize(GetTextExtent(wxS("0:00:00.000"))));
|
||||||
ctrl->SetToolTip(tooltip);
|
ctrl->SetToolTip(tooltip);
|
||||||
Bind(wxEVT_TEXT, [=](wxCommandEvent&) { CommitTimes(field); }, ctrl->GetId());
|
Bind(wxEVT_TEXT, [=](wxCommandEvent&) { CommitTimes(field); }, ctrl->GetId());
|
||||||
ctrl->Bind(wxEVT_CHAR_HOOK, time_edit_char_hook);
|
ctrl->Bind(wxEVT_CHAR_HOOK, time_edit_char_hook);
|
||||||
middle_left_sizer->Add(ctrl, wxSizerFlags().Center());
|
middle_left_sizer->Add(ctrl, wxSizerFlags().Expand());
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SubsEditBox::MakeButton(const char *cmd_name) {
|
void SubsEditBox::MakeButton(const char *cmd_name) {
|
||||||
cmd::Command *command = cmd::get(cmd_name);
|
cmd::Command *command = cmd::get(cmd_name);
|
||||||
wxBitmapButton *btn = new wxBitmapButton(this, -1, command->Icon(16, retina_helper->GetScaleFactor()));
|
wxBitmapButton *btn = new wxBitmapButton(this, -1, command->Icon(OPT_GET("App/Toolbar Icon Size")->GetInt(), retina_helper->GetScaleFactor()));
|
||||||
ToolTipManager::Bind(btn, command->StrHelp(), "Subtitle Edit Box", cmd_name);
|
ToolTipManager::Bind(btn, command->StrHelp(), "Subtitle Edit Box", cmd_name);
|
||||||
|
|
||||||
middle_right_sizer->Add(btn, wxSizerFlags().Expand());
|
middle_right_sizer->Add(btn, wxSizerFlags().Expand());
|
||||||
|
@ -293,9 +306,9 @@ wxButton *SubsEditBox::MakeBottomButton(const char *cmd_name) {
|
||||||
|
|
||||||
wxComboBox *SubsEditBox::MakeComboBox(wxString const& initial_text, int style, void (SubsEditBox::*handler)(wxCommandEvent&), wxString const& tooltip) {
|
wxComboBox *SubsEditBox::MakeComboBox(wxString const& initial_text, int style, void (SubsEditBox::*handler)(wxCommandEvent&), wxString const& tooltip) {
|
||||||
wxString styles[] = { "Default" };
|
wxString styles[] = { "Default" };
|
||||||
wxComboBox *ctrl = new wxComboBox(this, -1, initial_text, wxDefaultPosition, wxSize(110,-1), 1, styles, style | wxTE_PROCESS_ENTER);
|
wxComboBox *ctrl = new wxComboBox(this, -1, initial_text, wxDefaultPosition, wxDefaultSize, 1, styles, style | wxTE_PROCESS_ENTER);
|
||||||
ctrl->SetToolTip(tooltip);
|
ctrl->SetToolTip(tooltip);
|
||||||
top_sizer->Add(ctrl, wxSizerFlags(2).Center().Border(wxRIGHT));
|
top_sizer->Add(ctrl, wxSizerFlags(2).Expand().Border(wxRIGHT));
|
||||||
Bind(wxEVT_COMBOBOX, handler, this, ctrl->GetId());
|
Bind(wxEVT_COMBOBOX, handler, this, ctrl->GetId());
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -215,9 +215,15 @@ void AddFullScreenButton(wxWindow *) { }
|
||||||
void SetFloatOnParent(wxWindow *) { }
|
void SetFloatOnParent(wxWindow *) { }
|
||||||
|
|
||||||
// OS X implementation in retina_helper.mm
|
// OS X implementation in retina_helper.mm
|
||||||
RetinaHelper::RetinaHelper(wxWindow *) { }
|
RetinaHelper::RetinaHelper(wxWindow* w) { window = w; }
|
||||||
RetinaHelper::~RetinaHelper() { }
|
RetinaHelper::~RetinaHelper() { }
|
||||||
int RetinaHelper::GetScaleFactor() const { return 1; }
|
int RetinaHelper::GetScaleFactor() const {
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
return int(window->GetContentScaleFactor());
|
||||||
|
#else
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxString FontFace(std::string opt_prefix) {
|
wxString FontFace(std::string opt_prefix) {
|
||||||
|
|
|
@ -42,7 +42,13 @@ static const DraggableFeatureType DRAG_ORIGIN = DRAG_BIG_TRIANGLE;
|
||||||
static const DraggableFeatureType DRAG_START = DRAG_BIG_SQUARE;
|
static const DraggableFeatureType DRAG_START = DRAG_BIG_SQUARE;
|
||||||
static const DraggableFeatureType DRAG_END = DRAG_BIG_CIRCLE;
|
static const DraggableFeatureType DRAG_END = DRAG_BIG_CIRCLE;
|
||||||
|
|
||||||
#define ICON(name) (OPT_GET("App/Toolbar Icon Size")->GetInt() == 16 ? GETIMAGE(name ## _16) : GETIMAGE(name ## _24))
|
#define ICON(name) ( \
|
||||||
|
OPT_GET("App/Toolbar Icon Size")->GetInt() >= 64 ? GETIMAGE(name##_64) : \
|
||||||
|
OPT_GET("App/Toolbar Icon Size")->GetInt() >= 48 ? GETIMAGE(name##_48) : \
|
||||||
|
OPT_GET("App/Toolbar Icon Size")->GetInt() >= 32 ? GETIMAGE(name##_32) : \
|
||||||
|
OPT_GET("App/Toolbar Icon Size")->GetInt() >= 24 ? GETIMAGE(name##_24) : \
|
||||||
|
GETIMAGE(name##_16) \
|
||||||
|
)
|
||||||
|
|
||||||
VisualToolDrag::VisualToolDrag(VideoDisplay *parent, agi::Context *context)
|
VisualToolDrag::VisualToolDrag(VideoDisplay *parent, agi::Context *context)
|
||||||
: VisualTool<VisualToolDragDraggableFeature>(parent, context)
|
: VisualTool<VisualToolDragDraggableFeature>(parent, context)
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import sys, subprocess, pathlib, os
|
|
||||||
|
|
||||||
mt_exe, executable = sys.argv[1:]
|
|
||||||
|
|
||||||
subprocess.run([mt_exe, '-manifest', executable + '.manifest', '-outputresource:' + executable + ';1'])
|
|
||||||
pathlib.Path(os.path.join(os.path.dirname(executable), 'applied_manifest')).touch()
|
|
Loading…
Reference in New Issue