mirror of
https://github.com/odrling/Aegisub
synced 2025-04-11 22:56:02 +02:00
Added Pomyk's patch to be able to choose from comments or not in selection dialogue
Originally committed to SVN as r174.
This commit is contained in:
parent
ed55a9e430
commit
202c0a2222
@ -1,61 +1,61 @@
|
|||||||
// Copyright (c) 2006, Rodrigo Braz Monteiro
|
// Copyright (c) 2006, Rodrigo Braz Monteiro
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
//
|
//
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
// this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
// and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
// * Neither the name of the Aegisub Group nor the names of its contributors
|
||||||
// may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
// without specific prior written permission.
|
// without specific prior written permission.
|
||||||
//
|
//
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
//
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// AEGISUB
|
// AEGISUB
|
||||||
//
|
//
|
||||||
// Website: http://aegisub.cellosoft.com
|
// Website: http://aegisub.cellosoft.com
|
||||||
// Contact: mailto:zeratul@cellosoft.com
|
// Contact: mailto:zeratul@cellosoft.com
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
// Headers
|
// Headers
|
||||||
#include "audio_provider.h"
|
#include "audio_provider.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
|
||||||
////////////////////////
|
////////////////////////
|
||||||
// Audio provider class
|
// Audio provider class
|
||||||
class HDAudioProvider : public AudioProvider {
|
class HDAudioProvider : public AudioProvider {
|
||||||
private:
|
private:
|
||||||
wxMutex diskmutex;
|
wxMutex diskmutex;
|
||||||
std::ifstream file_cache;
|
std::ifstream file_cache;
|
||||||
|
|
||||||
static wxString DiskCachePath();
|
static wxString DiskCachePath();
|
||||||
static wxString DiskCacheName();
|
static wxString DiskCacheName();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HDAudioProvider(AudioProvider *source);
|
HDAudioProvider(AudioProvider *source);
|
||||||
~HDAudioProvider();
|
~HDAudioProvider();
|
||||||
|
|
||||||
void GetAudio(void *buf, __int64 start, __int64 count);
|
void GetAudio(void *buf, __int64 start, __int64 count);
|
||||||
};
|
};
|
||||||
|
@ -60,6 +60,8 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION)
|
|||||||
Matches = new wxRadioButton(this,-1,_("Matches"),wxDefaultPosition,wxDefaultSize,wxRB_GROUP);
|
Matches = new wxRadioButton(this,-1,_("Matches"),wxDefaultPosition,wxDefaultSize,wxRB_GROUP);
|
||||||
DoesntMatch = new wxRadioButton(this,-1,_("Doesn't Match"),wxDefaultPosition,wxDefaultSize,0);
|
DoesntMatch = new wxRadioButton(this,-1,_("Doesn't Match"),wxDefaultPosition,wxDefaultSize,0);
|
||||||
MatchCase = new wxCheckBox(this,-1,_("Match case"));
|
MatchCase = new wxCheckBox(this,-1,_("Match case"));
|
||||||
|
MatchDialogues = new wxCheckBox(this,MATCH_DIALOGUES_CHECKBOX,_("Dialogues"));
|
||||||
|
MatchComments = new wxCheckBox(this,MATCH_COMMENTS_CHECKBOX,_("Comments"));
|
||||||
|
|
||||||
// Matches box sizer
|
// Matches box sizer
|
||||||
wxSizer *MatchSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Match"));
|
wxSizer *MatchSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Match"));
|
||||||
@ -82,6 +84,12 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION)
|
|||||||
actions.Add(_("Intersect with selection"));
|
actions.Add(_("Intersect with selection"));
|
||||||
Action = new wxRadioBox(this,-1,_("Action"),wxDefaultPosition,wxDefaultSize,actions,1);
|
Action = new wxRadioBox(this,-1,_("Action"),wxDefaultPosition,wxDefaultSize,actions,1);
|
||||||
|
|
||||||
|
// Dialogues / Comments box
|
||||||
|
wxSizer *DialogueSizer = new wxStaticBoxSizer(wxHORIZONTAL,this,_("Match dialogues/comments"));
|
||||||
|
DialogueSizer->Add(MatchDialogues,0, wxRIGHT|wxEXPAND,5);
|
||||||
|
DialogueSizer->Add(MatchComments,0, wxEXPAND);
|
||||||
|
|
||||||
|
|
||||||
// Fields box
|
// Fields box
|
||||||
wxArrayString field;
|
wxArrayString field;
|
||||||
field.Add(_("Text"));
|
field.Add(_("Text"));
|
||||||
@ -99,6 +107,7 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION)
|
|||||||
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
MainSizer->Add(MatchSizer,0,wxEXPAND|wxLEFT|wxTOP|wxRIGHT,5);
|
MainSizer->Add(MatchSizer,0,wxEXPAND|wxLEFT|wxTOP|wxRIGHT,5);
|
||||||
MainSizer->Add(Field,0,wxEXPAND|wxLEFT|wxRIGHT|wxTOP,5);
|
MainSizer->Add(Field,0,wxEXPAND|wxLEFT|wxRIGHT|wxTOP,5);
|
||||||
|
MainSizer->Add(DialogueSizer,0,wxEXPAND|wxLEFT|wxRIGHT|wxTOP,5);
|
||||||
MainSizer->Add(Action,0,wxEXPAND|wxLEFT|wxRIGHT|wxTOP,5);
|
MainSizer->Add(Action,0,wxEXPAND|wxLEFT|wxRIGHT|wxTOP,5);
|
||||||
MainSizer->Add(ButtonSizer,0,wxEXPAND|wxALL,5);
|
MainSizer->Add(ButtonSizer,0,wxEXPAND|wxALL,5);
|
||||||
MainSizer->SetSizeHints(this);
|
MainSizer->SetSizeHints(this);
|
||||||
@ -109,6 +118,8 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION)
|
|||||||
Field->SetSelection(Options.AsInt(_T("Select Field")));
|
Field->SetSelection(Options.AsInt(_T("Select Field")));
|
||||||
Action->SetSelection(Options.AsInt(_T("Select Action")));
|
Action->SetSelection(Options.AsInt(_T("Select Action")));
|
||||||
MatchCase->SetValue(Options.AsBool(_T("Select Match case")));
|
MatchCase->SetValue(Options.AsBool(_T("Select Match case")));
|
||||||
|
MatchDialogues->SetValue(Options.AsBool(_T("Select Match dialogues")));
|
||||||
|
MatchComments->SetValue(Options.AsBool(_T("Select Match comments")));
|
||||||
int condition = Options.AsInt(_T("Select Condition"));
|
int condition = Options.AsInt(_T("Select Condition"));
|
||||||
int mode = Options.AsInt(_T("Select Mode"));
|
int mode = Options.AsInt(_T("Select Mode"));
|
||||||
if (condition == 1) DoesntMatch->SetValue(true);
|
if (condition == 1) DoesntMatch->SetValue(true);
|
||||||
@ -146,9 +157,16 @@ bool DialogSelection::StringMatches(AssDialogue *diag) {
|
|||||||
matching.LowerCase();
|
matching.LowerCase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dialogue/Comment
|
||||||
|
bool dial = MatchDialogues->GetValue();
|
||||||
|
bool comm = MatchComments->GetValue();
|
||||||
|
if ((diag->Comment && !comm) || (!diag->Comment && !dial)) {
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Exact
|
// Exact
|
||||||
if (Exact->GetValue()) {
|
else if (Exact->GetValue()) {
|
||||||
if (text == matching) result = true;
|
if (text == matching) result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,6 +281,8 @@ void DialogSelection::SaveSettings() {
|
|||||||
Options.SetInt(_T("Select Action"),action);
|
Options.SetInt(_T("Select Action"),action);
|
||||||
Options.SetInt(_T("Select Mode"),mode);
|
Options.SetInt(_T("Select Mode"),mode);
|
||||||
Options.SetBool(_T("Select Match case"),MatchCase->IsChecked());
|
Options.SetBool(_T("Select Match case"),MatchCase->IsChecked());
|
||||||
|
Options.SetBool(_T("Select Match dialogues"),MatchDialogues->IsChecked());
|
||||||
|
Options.SetBool(_T("Select Match comments"),MatchComments->IsChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -271,9 +291,24 @@ void DialogSelection::SaveSettings() {
|
|||||||
BEGIN_EVENT_TABLE(DialogSelection,wxDialog)
|
BEGIN_EVENT_TABLE(DialogSelection,wxDialog)
|
||||||
EVT_BUTTON(wxID_OK,DialogSelection::OnOK)
|
EVT_BUTTON(wxID_OK,DialogSelection::OnOK)
|
||||||
EVT_BUTTON(wxID_CANCEL,DialogSelection::OnCancel)
|
EVT_BUTTON(wxID_CANCEL,DialogSelection::OnCancel)
|
||||||
|
EVT_CHECKBOX(MATCH_DIALOGUES_CHECKBOX, DialogSelection::OnDialogueCheckbox)
|
||||||
|
EVT_CHECKBOX(MATCH_COMMENTS_CHECKBOX, DialogSelection::OnCommentCheckbox)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////
|
||||||
|
// Dialogue/Comment checkboxes
|
||||||
|
void DialogSelection::OnDialogueCheckbox(wxCommandEvent &event) {
|
||||||
|
if(!event.IsChecked() && !MatchComments->GetValue())
|
||||||
|
MatchComments->SetValue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DialogSelection::OnCommentCheckbox(wxCommandEvent &event) {
|
||||||
|
if(!event.IsChecked() && !MatchDialogues->GetValue())
|
||||||
|
MatchDialogues->SetValue(true);
|
||||||
|
}
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// OK pressed
|
// OK pressed
|
||||||
void DialogSelection::OnOK(wxCommandEvent &event) {
|
void DialogSelection::OnOK(wxCommandEvent &event) {
|
||||||
|
@ -56,6 +56,8 @@ private:
|
|||||||
SubtitlesGrid *grid;
|
SubtitlesGrid *grid;
|
||||||
wxTextCtrl *Match;
|
wxTextCtrl *Match;
|
||||||
wxCheckBox *MatchCase;
|
wxCheckBox *MatchCase;
|
||||||
|
wxCheckBox *MatchDialogues;
|
||||||
|
wxCheckBox *MatchComments;
|
||||||
wxRadioButton *Matches;
|
wxRadioButton *Matches;
|
||||||
wxRadioButton *DoesntMatch;
|
wxRadioButton *DoesntMatch;
|
||||||
wxRadioBox *Action;
|
wxRadioBox *Action;
|
||||||
@ -70,6 +72,8 @@ private:
|
|||||||
|
|
||||||
void OnOK (wxCommandEvent &event);
|
void OnOK (wxCommandEvent &event);
|
||||||
void OnCancel (wxCommandEvent &event);
|
void OnCancel (wxCommandEvent &event);
|
||||||
|
void OnDialogueCheckbox(wxCommandEvent &event);
|
||||||
|
void OnCommentCheckbox(wxCommandEvent &event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DialogSelection(wxWindow *parent, SubtitlesGrid *grid);
|
DialogSelection(wxWindow *parent, SubtitlesGrid *grid);
|
||||||
@ -78,4 +82,11 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
///////
|
||||||
|
// IDs
|
||||||
|
enum {
|
||||||
|
MATCH_DIALOGUES_CHECKBOX = 3000,
|
||||||
|
MATCH_COMMENTS_CHECKBOX
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -216,6 +216,8 @@ void OptionsManager::LoadDefaults() {
|
|||||||
SetInt(_T("Select Action"),0);
|
SetInt(_T("Select Action"),0);
|
||||||
SetInt(_T("Select Mode"),1);
|
SetInt(_T("Select Mode"),1);
|
||||||
SetBool(_T("Select Match case"),false);
|
SetBool(_T("Select Match case"),false);
|
||||||
|
SetBool(_T("Select Match dialogues"),true);
|
||||||
|
SetBool(_T("Select Match comments"),false);
|
||||||
|
|
||||||
SetBool(_T("Auto backup"),true);
|
SetBool(_T("Auto backup"),true);
|
||||||
SetInt(_T("Auto save every seconds"),60);
|
SetInt(_T("Auto save every seconds"),60);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user