mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-24 20:01:53 +00:00
Added all the new options (--no-attachments, --no-tags, --disable-lacing, --enable-durations, --enable-timeslices). Fixed saving/restoring the input file settings. Added two buttons (start, copy to clipboard) at the bottom of the main window.
This commit is contained in:
parent
a24bb211d5
commit
ca3e6bce69
@ -131,6 +131,8 @@ mmg_dialog::mmg_dialog(): wxFrame(NULL, -1, "mkvmerge GUI v" VERSION,
|
|||||||
wxSize(520, 718),
|
wxSize(520, 718),
|
||||||
#endif
|
#endif
|
||||||
wxCAPTION | wxMINIMIZE_BOX | wxSYSTEM_MENU) {
|
wxCAPTION | wxMINIMIZE_BOX | wxSYSTEM_MENU) {
|
||||||
|
mdlg = this;
|
||||||
|
|
||||||
file_menu = new wxMenu();
|
file_menu = new wxMenu();
|
||||||
file_menu->Append(ID_M_FILE_LOAD, _T("&Load settings\tCtrl-L"),
|
file_menu->Append(ID_M_FILE_LOAD, _T("&Load settings\tCtrl-L"),
|
||||||
_T("Load muxing settings from a file"));
|
_T("Load muxing settings from a file"));
|
||||||
@ -220,31 +222,49 @@ mmg_dialog::mmg_dialog(): wxFrame(NULL, -1, "mkvmerge GUI v" VERSION,
|
|||||||
notebook->AddPage(settings_page, _("Settings"));
|
notebook->AddPage(settings_page, _("Settings"));
|
||||||
notebook->AddPage(chapter_editor_page, _("Chapter Editor"));
|
notebook->AddPage(chapter_editor_page, _("Chapter Editor"));
|
||||||
|
|
||||||
bs_main->Add(notebook, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
bs_main->Add(notebook, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 5);
|
||||||
|
|
||||||
wxStaticBox *sb_low = new wxStaticBox(panel, -1, _("Output filename"));
|
wxStaticBox *sb_low = new wxStaticBox(panel, -1, _("Output filename"));
|
||||||
wxStaticBoxSizer *sbs_low = new wxStaticBoxSizer(sb_low, wxHORIZONTAL);
|
wxStaticBoxSizer *sbs_low = new wxStaticBoxSizer(sb_low, wxHORIZONTAL);
|
||||||
bs_main->Add(sbs_low, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
|
bs_main->Add(sbs_low, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 5);
|
||||||
|
|
||||||
tc_output =
|
tc_output =
|
||||||
new wxTextCtrl(panel, ID_TC_OUTPUT, _(""), wxDefaultPosition,
|
new wxTextCtrl(panel, ID_TC_OUTPUT, _(""), wxDefaultPosition,
|
||||||
wxSize(400, -1), 0);
|
wxSize(400, -1), 0);
|
||||||
sbs_low->Add(tc_output, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
sbs_low->Add(tc_output, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 5);
|
||||||
|
|
||||||
b_browse_output =
|
b_browse_output =
|
||||||
new wxButton(panel, ID_B_BROWSEOUTPUT, _("Browse"), wxDefaultPosition,
|
new wxButton(panel, ID_B_BROWSEOUTPUT, _("Browse"), wxDefaultPosition,
|
||||||
wxDefaultSize, 0);
|
wxDefaultSize, 0);
|
||||||
sbs_low->Add(b_browse_output, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
sbs_low->Add(b_browse_output, 0, wxALIGN_CENTER_VERTICAL | wxALL, 3);
|
||||||
|
|
||||||
wxStaticBox *sb_low2 = new wxStaticBox(panel, -1, _("Command line"));
|
sb_commandline =
|
||||||
wxStaticBoxSizer *sbs_low2 = new wxStaticBoxSizer(sb_low2, wxHORIZONTAL);
|
new wxStaticBox(panel, -1, _("Command line"));
|
||||||
bs_main->Add(sbs_low2, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
|
wxStaticBoxSizer *sbs_low2 =
|
||||||
|
new wxStaticBoxSizer(sb_commandline, wxHORIZONTAL);
|
||||||
|
bs_main->Add(sbs_low2, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 5);
|
||||||
|
|
||||||
tc_cmdline =
|
tc_cmdline =
|
||||||
new wxTextCtrl(panel, ID_TC_CMDLINE, _(""), wxDefaultPosition,
|
new wxTextCtrl(panel, ID_TC_CMDLINE, _(""), wxDefaultPosition,
|
||||||
wxSize(490, 50), wxTE_READONLY | wxTE_LINEWRAP |
|
wxSize(490, 50), wxTE_READONLY | wxTE_LINEWRAP |
|
||||||
wxTE_MULTILINE);
|
wxTE_MULTILINE);
|
||||||
sbs_low2->Add(tc_cmdline, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
sbs_low2->Add(tc_cmdline, 0, wxALIGN_CENTER_VERTICAL | wxALL, 3);
|
||||||
|
|
||||||
|
wxBoxSizer *bs_buttons = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
|
b_start_muxing =
|
||||||
|
new wxButton(panel, ID_B_STARTMUXING, _("Sta&rt muxing"),
|
||||||
|
wxDefaultPosition, wxSize(130, -1));
|
||||||
|
bs_buttons->Add(b_start_muxing, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 8);
|
||||||
|
|
||||||
|
b_copy_to_clipboard =
|
||||||
|
new wxButton(panel, ID_B_COPYTOCLIPBOARD, _("&Copy to clipboard"),
|
||||||
|
wxDefaultPosition, wxSize(130, -1));
|
||||||
|
bs_buttons->Add(10, 0);
|
||||||
|
bs_buttons->Add(b_copy_to_clipboard, 0, wxALIGN_CENTER_HORIZONTAL | wxALL,
|
||||||
|
8);
|
||||||
|
|
||||||
|
bs_main->Add(bs_buttons, 0, wxALIGN_CENTER_HORIZONTAL);
|
||||||
|
|
||||||
last_open_dir = "";
|
last_open_dir = "";
|
||||||
cmdline = "\"" + mkvmerge_path + "\" -o \"" + tc_output->GetValue() + "\" ";
|
cmdline = "\"" + mkvmerge_path + "\" -o \"" + tc_output->GetValue() + "\" ";
|
||||||
@ -661,6 +681,10 @@ void mmg_dialog::update_command_line() {
|
|||||||
cmdline += "--no-attachments ";
|
cmdline += "--no-attachments ";
|
||||||
clargs.Add("--no-attachments");
|
clargs.Add("--no-attachments");
|
||||||
}
|
}
|
||||||
|
if (f->no_tags) {
|
||||||
|
cmdline += "--no-tags ";
|
||||||
|
clargs.Add("--no-tags");
|
||||||
|
}
|
||||||
if (no_video) {
|
if (no_video) {
|
||||||
cmdline += "-D ";
|
cmdline += "-D ";
|
||||||
clargs.Add("-D");
|
clargs.Add("-D");
|
||||||
@ -790,9 +814,19 @@ void mmg_dialog::update_command_line() {
|
|||||||
clargs.Add("--no-clusters-in-meta-seek");
|
clargs.Add("--no-clusters-in-meta-seek");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (global_page->cb_enable_lacing->IsChecked()) {
|
if (global_page->cb_disable_lacing->IsChecked()) {
|
||||||
cmdline += "--enable-lacing ";
|
cmdline += "--disable-lacing ";
|
||||||
clargs.Add("--enable-lacing");
|
clargs.Add("--disable-lacing");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (global_page->cb_enable_durations->IsChecked()) {
|
||||||
|
cmdline += "--enable-durations ";
|
||||||
|
clargs.Add("--enable-durations");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (global_page->cb_enable_timeslices->IsChecked()) {
|
||||||
|
cmdline += "--enable-timeslices ";
|
||||||
|
clargs.Add("--enable-timeslices");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_cmdline != cmdline)
|
if (old_cmdline != cmdline)
|
||||||
@ -896,6 +930,8 @@ void mmg_dialog::on_window_selected(wxCommandEvent &evt) {
|
|||||||
IMPLEMENT_CLASS(mmg_dialog, wxFrame);
|
IMPLEMENT_CLASS(mmg_dialog, wxFrame);
|
||||||
BEGIN_EVENT_TABLE(mmg_dialog, wxFrame)
|
BEGIN_EVENT_TABLE(mmg_dialog, wxFrame)
|
||||||
EVT_BUTTON(ID_B_BROWSEOUTPUT, mmg_dialog::on_browse_output)
|
EVT_BUTTON(ID_B_BROWSEOUTPUT, mmg_dialog::on_browse_output)
|
||||||
|
EVT_BUTTON(ID_B_STARTMUXING, mmg_dialog::on_run)
|
||||||
|
EVT_BUTTON(ID_B_COPYTOCLIPBOARD, mmg_dialog::on_copy_to_clipboard)
|
||||||
EVT_TIMER(ID_T_UPDATECMDLINE, mmg_dialog::on_update_command_line)
|
EVT_TIMER(ID_T_UPDATECMDLINE, mmg_dialog::on_update_command_line)
|
||||||
EVT_TIMER(ID_T_STATUSBAR, mmg_dialog::on_clear_status_bar)
|
EVT_TIMER(ID_T_STATUSBAR, mmg_dialog::on_clear_status_bar)
|
||||||
EVT_MENU(ID_M_FILE_EXIT, mmg_dialog::on_quit)
|
EVT_MENU(ID_M_FILE_EXIT, mmg_dialog::on_quit)
|
||||||
|
@ -98,7 +98,7 @@ using namespace libmatroska;
|
|||||||
#define ID_TC_SEGMENTTITLE 10051
|
#define ID_TC_SEGMENTTITLE 10051
|
||||||
#define ID_CB_NOCUES 10052
|
#define ID_CB_NOCUES 10052
|
||||||
#define ID_CB_NOCLUSTERSINMETASEEK 10053
|
#define ID_CB_NOCLUSTERSINMETASEEK 10053
|
||||||
#define ID_CB_ENABLELACING 10054
|
#define ID_CB_DISABLELACING 10054
|
||||||
#define ID_B_MUX_OK 10055
|
#define ID_B_MUX_OK 10055
|
||||||
#define ID_B_MUX_SAVELOG 10056
|
#define ID_B_MUX_SAVELOG 10056
|
||||||
#define ID_B_MUX_ABORT 10057
|
#define ID_B_MUX_ABORT 10057
|
||||||
@ -117,6 +117,11 @@ using namespace libmatroska;
|
|||||||
#define ID_CB_CHAPTERSELECTCOUNTRYCODE 10070
|
#define ID_CB_CHAPTERSELECTCOUNTRYCODE 10070
|
||||||
#define ID_B_ADDSUBCHAPTER 10071
|
#define ID_B_ADDSUBCHAPTER 10071
|
||||||
#define ID_CB_NOATTACHMENTS 10072
|
#define ID_CB_NOATTACHMENTS 10072
|
||||||
|
#define ID_CB_NOTAGS 10073
|
||||||
|
#define ID_B_STARTMUXING 10074
|
||||||
|
#define ID_B_COPYTOCLIPBOARD 10075
|
||||||
|
#define ID_CB_ENABLEDURATIONS 10076
|
||||||
|
#define ID_CB_ENABLETIMESLICES 10077
|
||||||
|
|
||||||
#define ID_M_FILE_LOAD 20000
|
#define ID_M_FILE_LOAD 20000
|
||||||
#define ID_M_FILE_SAVE 20001
|
#define ID_M_FILE_SAVE 20001
|
||||||
@ -164,8 +169,9 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
wxString *file_name;
|
wxString *file_name;
|
||||||
|
int container;
|
||||||
vector<mmg_track_t> *tracks;
|
vector<mmg_track_t> *tracks;
|
||||||
bool no_chapters, no_attachments;
|
bool no_chapters, no_attachments, no_tags;
|
||||||
} mmg_file_t;
|
} mmg_file_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -192,7 +198,8 @@ class tab_input: public wxPanel {
|
|||||||
protected:
|
protected:
|
||||||
wxListBox *lb_input_files;
|
wxListBox *lb_input_files;
|
||||||
wxButton *b_add_file, *b_remove_file, *b_browse_tags;
|
wxButton *b_add_file, *b_remove_file, *b_browse_tags;
|
||||||
wxCheckBox *cb_no_chapters, *cb_no_attachments, *cb_default, *cb_aac_is_sbr;
|
wxCheckBox *cb_no_chapters, *cb_no_attachments, *cb_no_tags;
|
||||||
|
wxCheckBox *cb_default, *cb_aac_is_sbr;
|
||||||
wxCheckListBox *clb_tracks;
|
wxCheckListBox *clb_tracks;
|
||||||
wxComboBox *cob_language, *cob_cues, *cob_sub_charset;
|
wxComboBox *cob_language, *cob_cues, *cob_sub_charset;
|
||||||
wxComboBox *cob_aspect_ratio, *cob_fourcc;
|
wxComboBox *cob_aspect_ratio, *cob_fourcc;
|
||||||
@ -212,6 +219,7 @@ public:
|
|||||||
void on_track_enabled(wxCommandEvent &evt);
|
void on_track_enabled(wxCommandEvent &evt);
|
||||||
void on_nochapters_clicked(wxCommandEvent &evt);
|
void on_nochapters_clicked(wxCommandEvent &evt);
|
||||||
void on_noattachments_clicked(wxCommandEvent &evt);
|
void on_noattachments_clicked(wxCommandEvent &evt);
|
||||||
|
void on_notags_clicked(wxCommandEvent &evt);
|
||||||
void on_default_track_clicked(wxCommandEvent &evt);
|
void on_default_track_clicked(wxCommandEvent &evt);
|
||||||
void on_aac_is_sbr_clicked(wxCommandEvent &evt);
|
void on_aac_is_sbr_clicked(wxCommandEvent &evt);
|
||||||
void on_language_selected(wxCommandEvent &evt);
|
void on_language_selected(wxCommandEvent &evt);
|
||||||
@ -270,6 +278,7 @@ class tab_settings: public wxPanel {
|
|||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
protected:
|
protected:
|
||||||
wxTextCtrl *tc_mkvmerge;
|
wxTextCtrl *tc_mkvmerge;
|
||||||
|
wxCheckBox *cb_show_commandline;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
tab_settings(wxWindow *parent);
|
tab_settings(wxWindow *parent);
|
||||||
@ -296,7 +305,8 @@ public:
|
|||||||
wxRadioButton *rb_split_by_size, *rb_split_by_time;
|
wxRadioButton *rb_split_by_size, *rb_split_by_time;
|
||||||
wxComboBox *cob_split_by_size, *cob_split_by_time;
|
wxComboBox *cob_split_by_size, *cob_split_by_time;
|
||||||
wxComboBox *cob_chap_language, *cob_chap_charset;
|
wxComboBox *cob_chap_language, *cob_chap_charset;
|
||||||
wxCheckBox *cb_no_cues, *cb_no_clusters, *cb_enable_lacing;
|
wxCheckBox *cb_no_cues, *cb_no_clusters, *cb_disable_lacing;
|
||||||
|
wxCheckBox *cb_enable_durations, *cb_enable_timeslices;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
tab_global(wxWindow *parent);
|
tab_global(wxWindow *parent);
|
||||||
@ -401,6 +411,7 @@ class mmg_dialog: public wxFrame {
|
|||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
protected:
|
protected:
|
||||||
wxButton *b_browse_output;
|
wxButton *b_browse_output;
|
||||||
|
wxStaticBox *sb_commandline;
|
||||||
wxTextCtrl *tc_output, *tc_cmdline;
|
wxTextCtrl *tc_output, *tc_cmdline;
|
||||||
|
|
||||||
wxString cmdline;
|
wxString cmdline;
|
||||||
@ -421,6 +432,8 @@ protected:
|
|||||||
tab_settings *settings_page;
|
tab_settings *settings_page;
|
||||||
tab_chapters *chapter_editor_page;
|
tab_chapters *chapter_editor_page;
|
||||||
|
|
||||||
|
wxButton *b_start_muxing, *b_copy_to_clipboard;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
mmg_dialog();
|
mmg_dialog();
|
||||||
|
|
||||||
|
@ -208,26 +208,41 @@ tab_global::tab_global(wxWindow *parent):
|
|||||||
"on the 'input' tab."));
|
"on the 'input' tab."));
|
||||||
|
|
||||||
new wxStaticBox(this, -1, _("Advanced options (DO NOT CHANGE!)"),
|
new wxStaticBox(this, -1, _("Advanced options (DO NOT CHANGE!)"),
|
||||||
wxPoint(10, 415), wxSize(475, 50));
|
wxPoint(10, 390), wxSize(475, 70));
|
||||||
cb_no_cues =
|
cb_no_cues =
|
||||||
new wxCheckBox(this, ID_CB_NOCUES, _("No cues"), wxPoint(15, 435),
|
new wxCheckBox(this, ID_CB_NOCUES, _("No cues"), wxPoint(15, 405),
|
||||||
wxDefaultSize, 0);
|
wxDefaultSize, 0);
|
||||||
cb_no_cues->SetToolTip(_T("Do not write the cues (the index). DO NOT "
|
cb_no_cues->SetToolTip(_T("Do not write the cues (the index). DO NOT "
|
||||||
"ENABLE this option unless you REALLY know "
|
"ENABLE this option unless you REALLY know "
|
||||||
"what you're doing!"));
|
"what you're doing!"));
|
||||||
cb_no_clusters =
|
cb_no_clusters =
|
||||||
new wxCheckBox(this, ID_CB_NOCLUSTERSINMETASEEK,
|
new wxCheckBox(this, ID_CB_NOCLUSTERSINMETASEEK,
|
||||||
_("No clusters in meta seek"), wxPoint(110, 435),
|
_("No clusters in meta seek"), wxPoint(145, 405),
|
||||||
wxDefaultSize, 0);
|
wxDefaultSize, 0);
|
||||||
cb_no_clusters->SetToolTip(_T("Do not put all the clusters into the cues "
|
cb_no_clusters->SetToolTip(_T("Do not put all the clusters into the cues "
|
||||||
"(the index). DO NOT ENABLE this option "
|
"(the index). DO NOT ENABLE this option "
|
||||||
"unless you REALLY know what you're doing!"));
|
"unless you REALLY know what you're doing!"));
|
||||||
cb_enable_lacing =
|
cb_disable_lacing =
|
||||||
new wxCheckBox(this, ID_CB_ENABLELACING, _("Enable lacing"),
|
new wxCheckBox(this, ID_CB_DISABLELACING, _("Disable lacing"),
|
||||||
wxPoint(300, 435), wxDefaultSize, 0);
|
wxPoint(325, 405), wxDefaultSize, 0);
|
||||||
cb_enable_lacing->SetToolTip(_T("Enable lacing for audio tracks. DO NOT "
|
cb_disable_lacing->SetToolTip(_T("Disable lacing for audio tracks. DO NOT "
|
||||||
"ENABLE this option unless you REALLY know "
|
"ENSABLE this option unless you REALLY "
|
||||||
"what you're doing!"));
|
"know what you're doing!"));
|
||||||
|
cb_enable_durations =
|
||||||
|
new wxCheckBox(this, ID_CB_ENABLEDURATIONS, _("Enable durations"),
|
||||||
|
wxPoint(15, 430), wxDefaultSize, 0);
|
||||||
|
cb_enable_durations->SetToolTip(_T("Enable durations for all blocks and not "
|
||||||
|
"only for blocks that definitely need "
|
||||||
|
"them (subtitles). DO NOT "
|
||||||
|
"ENABLE this option unless you REALLY "
|
||||||
|
"know what you're doing!"));
|
||||||
|
cb_enable_timeslices =
|
||||||
|
new wxCheckBox(this, ID_CB_ENABLETIMESLICES, _("Enable timeslices"),
|
||||||
|
wxPoint(145, 430), wxDefaultSize, 0);
|
||||||
|
cb_enable_durations->SetToolTip(_T("Enable timeslices for laced blocks. "
|
||||||
|
"DO NOT "
|
||||||
|
"ENSABLE this option unless you REALLY "
|
||||||
|
"know what you're doing!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tab_global::on_browse_global_tags(wxCommandEvent &evt) {
|
void tab_global::on_browse_global_tags(wxCommandEvent &evt) {
|
||||||
@ -320,8 +335,12 @@ void tab_global::load(wxConfigBase *cfg) {
|
|||||||
cb_no_cues->SetValue(b);
|
cb_no_cues->SetValue(b);
|
||||||
cfg->Read("no_clusters", &b);
|
cfg->Read("no_clusters", &b);
|
||||||
cb_no_clusters->SetValue(b);
|
cb_no_clusters->SetValue(b);
|
||||||
cfg->Read("enable_lacing", &b);
|
cfg->Read("disable_lacing", &b);
|
||||||
cb_enable_lacing->SetValue(b);
|
cb_disable_lacing->SetValue(b);
|
||||||
|
cfg->Read("enable_durations", &b);
|
||||||
|
cb_enable_durations->SetValue(b);
|
||||||
|
cfg->Read("enable_timeslices", &b);
|
||||||
|
cb_enable_timeslices->SetValue(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tab_global::save(wxConfigBase *cfg) {
|
void tab_global::save(wxConfigBase *cfg) {
|
||||||
@ -346,7 +365,9 @@ void tab_global::save(wxConfigBase *cfg) {
|
|||||||
|
|
||||||
cfg->Write("no_cues", cb_no_cues->IsChecked());
|
cfg->Write("no_cues", cb_no_cues->IsChecked());
|
||||||
cfg->Write("no_clusters", cb_no_clusters->IsChecked());
|
cfg->Write("no_clusters", cb_no_clusters->IsChecked());
|
||||||
cfg->Write("enable_lacing", cb_enable_lacing->IsChecked());
|
cfg->Write("disable_lacing", cb_disable_lacing->IsChecked());
|
||||||
|
cfg->Write("enable_durations", cb_enable_durations->IsChecked());
|
||||||
|
cfg->Write("enable_timeslices", cb_enable_timeslices->IsChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool tab_global::validate_settings() {
|
bool tab_global::validate_settings() {
|
||||||
|
@ -73,6 +73,14 @@ tab_input::tab_input(wxWindow *parent):
|
|||||||
cb_no_attachments->SetToolTip(_("Do not copy attachments from this file. "
|
cb_no_attachments->SetToolTip(_("Do not copy attachments from this file. "
|
||||||
"Only applies to Matroska files."));
|
"Only applies to Matroska files."));
|
||||||
cb_no_attachments->Enable(false);
|
cb_no_attachments->Enable(false);
|
||||||
|
cb_no_tags =
|
||||||
|
new wxCheckBox(this, ID_CB_NOTAGS, _("No tags"), wxPoint(230, 110),
|
||||||
|
wxDefaultSize, 0);
|
||||||
|
cb_no_tags->SetValue(false);
|
||||||
|
cb_no_tags->SetToolTip(_("Do not copy tags from this file. Only "
|
||||||
|
"applies to Matroska files."));
|
||||||
|
cb_no_tags->Enable(false);
|
||||||
|
|
||||||
new wxStaticText(this, wxID_STATIC, _("Tracks:"), wxPoint(5, 140),
|
new wxStaticText(this, wxID_STATIC, _("Tracks:"), wxPoint(5, 140),
|
||||||
wxDefaultSize, 0);
|
wxDefaultSize, 0);
|
||||||
clb_tracks =
|
clb_tracks =
|
||||||
@ -379,6 +387,39 @@ void tab_input::on_add_file(wxCommandEvent &evt) {
|
|||||||
track.fourcc = new wxString("");
|
track.fourcc = new wxString("");
|
||||||
|
|
||||||
file.tracks->push_back(track);
|
file.tracks->push_back(track);
|
||||||
|
|
||||||
|
} else if (output[i].Find("container:") > 0) {
|
||||||
|
wxString container;
|
||||||
|
|
||||||
|
container = output[i].AfterLast(' ');
|
||||||
|
if (container == "AAC")
|
||||||
|
file.container = TYPEAAC;
|
||||||
|
else if (container == "AC3")
|
||||||
|
file.container = TYPEAC3;
|
||||||
|
else if (container == "AVI")
|
||||||
|
file.container = TYPEAVI;
|
||||||
|
else if (container == "DTS")
|
||||||
|
file.container = TYPEDTS;
|
||||||
|
else if (container == "Matroska")
|
||||||
|
file.container = TYPEMATROSKA;
|
||||||
|
else if (container == "MP2/MP3")
|
||||||
|
file.container = TYPEMP3;
|
||||||
|
else if (container == "Ogg/OGM")
|
||||||
|
file.container = TYPEOGM;
|
||||||
|
else if (container == "Quicktime/MP4")
|
||||||
|
file.container = TYPEQTMP4;
|
||||||
|
else if (container == "RealMedia")
|
||||||
|
file.container = TYPEREAL;
|
||||||
|
else if (container == "SRT")
|
||||||
|
file.container = TYPESRT;
|
||||||
|
else if (container == "SSA/ASS")
|
||||||
|
file.container = TYPESSA;
|
||||||
|
else if (container == "VobSub")
|
||||||
|
file.container = TYPEVOBSUB;
|
||||||
|
else if (container == "WAV")
|
||||||
|
file.container = TYPEWAV;
|
||||||
|
else
|
||||||
|
file.container = TYPEUNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,6 +473,7 @@ void tab_input::on_remove_file(wxCommandEvent &evt) {
|
|||||||
selected_file = -1;
|
selected_file = -1;
|
||||||
cb_no_chapters->Enable(false);
|
cb_no_chapters->Enable(false);
|
||||||
cb_no_attachments->Enable(false);
|
cb_no_attachments->Enable(false);
|
||||||
|
cb_no_tags->Enable(false);
|
||||||
b_remove_file->Enable(false);
|
b_remove_file->Enable(false);
|
||||||
clb_tracks->Enable(false);
|
clb_tracks->Enable(false);
|
||||||
no_track_mode();
|
no_track_mode();
|
||||||
@ -445,13 +487,24 @@ void tab_input::on_file_selected(wxCommandEvent &evt) {
|
|||||||
wxString label;
|
wxString label;
|
||||||
|
|
||||||
b_remove_file->Enable(true);
|
b_remove_file->Enable(true);
|
||||||
cb_no_chapters->Enable(true);
|
|
||||||
cb_no_attachments->Enable(true);
|
|
||||||
selected_file = -1;
|
selected_file = -1;
|
||||||
new_sel = lb_input_files->GetSelection();
|
new_sel = lb_input_files->GetSelection();
|
||||||
f = &files[new_sel];
|
f = &files[new_sel];
|
||||||
cb_no_chapters->SetValue(f->no_chapters);
|
if (f->container == TYPEMATROSKA) {
|
||||||
cb_no_attachments->SetValue(f->no_attachments);
|
cb_no_chapters->Enable(true);
|
||||||
|
cb_no_attachments->Enable(true);
|
||||||
|
cb_no_tags->Enable(true);
|
||||||
|
cb_no_chapters->SetValue(f->no_chapters);
|
||||||
|
cb_no_attachments->SetValue(f->no_attachments);
|
||||||
|
cb_no_tags->SetValue(f->no_tags);
|
||||||
|
} else {
|
||||||
|
cb_no_chapters->Enable(false);
|
||||||
|
cb_no_attachments->Enable(false);
|
||||||
|
cb_no_tags->Enable(false);
|
||||||
|
cb_no_chapters->SetValue(false);
|
||||||
|
cb_no_attachments->SetValue(false);
|
||||||
|
cb_no_tags->SetValue(false);
|
||||||
|
}
|
||||||
|
|
||||||
clb_tracks->Clear();
|
clb_tracks->Clear();
|
||||||
for (i = 0; i < f->tracks->size(); i++) {
|
for (i = 0; i < f->tracks->size(); i++) {
|
||||||
@ -474,15 +527,20 @@ void tab_input::on_file_selected(wxCommandEvent &evt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void tab_input::on_nochapters_clicked(wxCommandEvent &evt) {
|
void tab_input::on_nochapters_clicked(wxCommandEvent &evt) {
|
||||||
if (selected_file -1)
|
if (selected_file != -1)
|
||||||
files[selected_file].no_chapters = cb_no_chapters->GetValue();
|
files[selected_file].no_chapters = cb_no_chapters->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void tab_input::on_noattachments_clicked(wxCommandEvent &evt) {
|
void tab_input::on_noattachments_clicked(wxCommandEvent &evt) {
|
||||||
if (selected_file -1)
|
if (selected_file != -1)
|
||||||
files[selected_file].no_attachments = cb_no_attachments->GetValue();
|
files[selected_file].no_attachments = cb_no_attachments->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tab_input::on_notags_clicked(wxCommandEvent &evt) {
|
||||||
|
if (selected_file != -1)
|
||||||
|
files[selected_file].no_tags = cb_no_tags->GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
void tab_input::on_track_selected(wxCommandEvent &evt) {
|
void tab_input::on_track_selected(wxCommandEvent &evt) {
|
||||||
mmg_file_t *f;
|
mmg_file_t *f;
|
||||||
mmg_track_t *t;
|
mmg_track_t *t;
|
||||||
@ -646,8 +704,10 @@ void tab_input::save(wxConfigBase *cfg) {
|
|||||||
s.Printf("file %u", fidx);
|
s.Printf("file %u", fidx);
|
||||||
cfg->SetPath(s);
|
cfg->SetPath(s);
|
||||||
cfg->Write("file_name", *f->file_name);
|
cfg->Write("file_name", *f->file_name);
|
||||||
|
cfg->Write("container", f->container);
|
||||||
cfg->Write("no_chapters", f->no_chapters);
|
cfg->Write("no_chapters", f->no_chapters);
|
||||||
cfg->Write("no_attachments", f->no_attachments);
|
cfg->Write("no_attachments", f->no_attachments);
|
||||||
|
cfg->Write("no_tags", f->no_tags);
|
||||||
|
|
||||||
cfg->Write("number_of_tracks", (int)f->tracks->size());
|
cfg->Write("number_of_tracks", (int)f->tracks->size());
|
||||||
for (tidx = 0; tidx < f->tracks->size(); tidx++) {
|
for (tidx = 0; tidx < f->tracks->size(); tidx++) {
|
||||||
@ -734,8 +794,10 @@ void tab_input::load(wxConfigBase *cfg) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
fi.file_name = new wxString(s);
|
fi.file_name = new wxString(s);
|
||||||
|
cfg->Read("container", &fi.container);
|
||||||
cfg->Read("no_chapters", &fi.no_chapters);
|
cfg->Read("no_chapters", &fi.no_chapters);
|
||||||
cfg->Read("no_attachments", &fi.no_attachments);
|
cfg->Read("no_attachments", &fi.no_attachments);
|
||||||
|
cfg->Read("no_tags", &fi.no_tags);
|
||||||
fi.tracks = new vector<mmg_track_t>;
|
fi.tracks = new vector<mmg_track_t>;
|
||||||
|
|
||||||
for (tidx = 0; tidx < (uint32_t)num_tracks; tidx++) {
|
for (tidx = 0; tidx < (uint32_t)num_tracks; tidx++) {
|
||||||
@ -924,6 +986,7 @@ BEGIN_EVENT_TABLE(tab_input, wxPanel)
|
|||||||
|
|
||||||
EVT_CHECKBOX(ID_CB_NOCHAPTERS, tab_input::on_nochapters_clicked)
|
EVT_CHECKBOX(ID_CB_NOCHAPTERS, tab_input::on_nochapters_clicked)
|
||||||
EVT_CHECKBOX(ID_CB_NOATTACHMENTS, tab_input::on_noattachments_clicked)
|
EVT_CHECKBOX(ID_CB_NOATTACHMENTS, tab_input::on_noattachments_clicked)
|
||||||
|
EVT_CHECKBOX(ID_CB_NOTAGS, tab_input::on_notags_clicked)
|
||||||
EVT_CHECKBOX(ID_CB_MAKEDEFAULT, tab_input::on_default_track_clicked)
|
EVT_CHECKBOX(ID_CB_MAKEDEFAULT, tab_input::on_default_track_clicked)
|
||||||
EVT_CHECKBOX(ID_CB_AACISSBR, tab_input::on_aac_is_sbr_clicked)
|
EVT_CHECKBOX(ID_CB_AACISSBR, tab_input::on_aac_is_sbr_clicked)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user