From 202c0a2222c707fedc3707f80120240200669d66 Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Sat, 25 Feb 2006 18:10:02 +0000 Subject: [PATCH] Added Pomyk's patch to be able to choose from comments or not in selection dialogue Originally committed to SVN as r174. --- core/audio_provider_hd.h | 122 +++++++++++++++++++------------------- core/dialog_selection.cpp | 37 +++++++++++- core/dialog_selection.h | 11 ++++ core/options.cpp | 2 + 4 files changed, 110 insertions(+), 62 deletions(-) diff --git a/core/audio_provider_hd.h b/core/audio_provider_hd.h index 45be3d8fc..d3911819c 100644 --- a/core/audio_provider_hd.h +++ b/core/audio_provider_hd.h @@ -1,61 +1,61 @@ -// Copyright (c) 2006, Rodrigo Braz Monteiro -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * 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 -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// 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 -// POSSIBILITY OF SUCH DAMAGE. -// -// ----------------------------------------------------------------------------- -// -// AEGISUB -// -// Website: http://aegisub.cellosoft.com -// Contact: mailto:zeratul@cellosoft.com -// - - -#pragma once - - -/////////// -// Headers -#include "audio_provider.h" -#include - - -//////////////////////// -// Audio provider class -class HDAudioProvider : public AudioProvider { -private: - wxMutex diskmutex; - std::ifstream file_cache; - - static wxString DiskCachePath(); - static wxString DiskCacheName(); - -public: - HDAudioProvider(AudioProvider *source); - ~HDAudioProvider(); - - void GetAudio(void *buf, __int64 start, __int64 count); -}; +// Copyright (c) 2006, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * 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 +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// 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 +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + + +#pragma once + + +/////////// +// Headers +#include "audio_provider.h" +#include + + +//////////////////////// +// Audio provider class +class HDAudioProvider : public AudioProvider { +private: + wxMutex diskmutex; + std::ifstream file_cache; + + static wxString DiskCachePath(); + static wxString DiskCacheName(); + +public: + HDAudioProvider(AudioProvider *source); + ~HDAudioProvider(); + + void GetAudio(void *buf, __int64 start, __int64 count); +}; diff --git a/core/dialog_selection.cpp b/core/dialog_selection.cpp index b680fcb73..28283d372 100644 --- a/core/dialog_selection.cpp +++ b/core/dialog_selection.cpp @@ -60,6 +60,8 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION) Matches = new wxRadioButton(this,-1,_("Matches"),wxDefaultPosition,wxDefaultSize,wxRB_GROUP); DoesntMatch = new wxRadioButton(this,-1,_("Doesn't Match"),wxDefaultPosition,wxDefaultSize,0); 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 wxSizer *MatchSizer = new wxStaticBoxSizer(wxVERTICAL,this,_("Match")); @@ -82,6 +84,12 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION) actions.Add(_("Intersect with selection")); 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 wxArrayString field; field.Add(_("Text")); @@ -99,6 +107,7 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION) wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL); MainSizer->Add(MatchSizer,0,wxEXPAND|wxLEFT|wxTOP|wxRIGHT,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(ButtonSizer,0,wxEXPAND|wxALL,5); MainSizer->SetSizeHints(this); @@ -109,6 +118,8 @@ wxDialog (parent,-1,_("Select"),wxDefaultPosition,wxDefaultSize,wxCAPTION) Field->SetSelection(Options.AsInt(_T("Select Field"))); Action->SetSelection(Options.AsInt(_T("Select Action"))); 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 mode = Options.AsInt(_T("Select Mode")); if (condition == 1) DoesntMatch->SetValue(true); @@ -146,9 +157,16 @@ bool DialogSelection::StringMatches(AssDialogue *diag) { matching.LowerCase(); } } + + // Dialogue/Comment + bool dial = MatchDialogues->GetValue(); + bool comm = MatchComments->GetValue(); + if ((diag->Comment && !comm) || (!diag->Comment && !dial)) { + result = false; + } // Exact - if (Exact->GetValue()) { + else if (Exact->GetValue()) { if (text == matching) result = true; } @@ -263,6 +281,8 @@ void DialogSelection::SaveSettings() { Options.SetInt(_T("Select Action"),action); Options.SetInt(_T("Select Mode"),mode); 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) EVT_BUTTON(wxID_OK,DialogSelection::OnOK) EVT_BUTTON(wxID_CANCEL,DialogSelection::OnCancel) + EVT_CHECKBOX(MATCH_DIALOGUES_CHECKBOX, DialogSelection::OnDialogueCheckbox) + EVT_CHECKBOX(MATCH_COMMENTS_CHECKBOX, DialogSelection::OnCommentCheckbox) 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 void DialogSelection::OnOK(wxCommandEvent &event) { diff --git a/core/dialog_selection.h b/core/dialog_selection.h index 6f6c73198..d4cdbed11 100644 --- a/core/dialog_selection.h +++ b/core/dialog_selection.h @@ -56,6 +56,8 @@ private: SubtitlesGrid *grid; wxTextCtrl *Match; wxCheckBox *MatchCase; + wxCheckBox *MatchDialogues; + wxCheckBox *MatchComments; wxRadioButton *Matches; wxRadioButton *DoesntMatch; wxRadioBox *Action; @@ -70,6 +72,8 @@ private: void OnOK (wxCommandEvent &event); void OnCancel (wxCommandEvent &event); + void OnDialogueCheckbox(wxCommandEvent &event); + void OnCommentCheckbox(wxCommandEvent &event); public: DialogSelection(wxWindow *parent, SubtitlesGrid *grid); @@ -78,4 +82,11 @@ public: }; +/////// +// IDs +enum { + MATCH_DIALOGUES_CHECKBOX = 3000, + MATCH_COMMENTS_CHECKBOX +}; + #endif diff --git a/core/options.cpp b/core/options.cpp index f938df1f9..8deb8cc67 100644 --- a/core/options.cpp +++ b/core/options.cpp @@ -216,6 +216,8 @@ void OptionsManager::LoadDefaults() { SetInt(_T("Select Action"),0); SetInt(_T("Select Mode"),1); SetBool(_T("Select Match case"),false); + SetBool(_T("Select Match dialogues"),true); + SetBool(_T("Select Match comments"),false); SetBool(_T("Auto backup"),true); SetInt(_T("Auto save every seconds"),60);