mirror of https://github.com/odrling/Aegisub
177 lines
4.9 KiB
C++
177 lines
4.9 KiB
C++
// Copyright (c) 2005, Ghassan Nassar
|
|
// 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
|
|
//
|
|
|
|
|
|
#include "setup.h"
|
|
#if USE_ASPELL == 1
|
|
|
|
#pragma once
|
|
#include <wx/wxprec.h>
|
|
|
|
extern "C" {
|
|
#include <aspell.h>
|
|
}
|
|
#include "ass_dialogue.h"
|
|
#include "ass_file.h"
|
|
#include "subs_grid.h"
|
|
|
|
// Z:\SVN\Aspell\lib\libaspell-15-dll.lib
|
|
|
|
#ifndef DIALOG_SPELL_CHECK_H
|
|
#define DIALOG_SPELL_CHECK_H
|
|
|
|
class wxArrayInt;
|
|
|
|
class DialogSpellCheck : public wxDialog {
|
|
|
|
public:
|
|
DialogSpellCheck (wxWindow *parent, AssFile *_subs, wxArrayInt* selList, SubtitlesGrid *_grid);
|
|
~DialogSpellCheck(void);
|
|
private:
|
|
|
|
////////////
|
|
// Privates
|
|
|
|
|
|
|
|
/////
|
|
//UI
|
|
wxSizer *MainSizer;
|
|
wxTextCtrl *Textbox;
|
|
wxListBox *SuggestionsList;
|
|
wxButton *AddtoCustomDic; //
|
|
wxButton *AcceptSuggestion; //
|
|
wxButton *SkipError; //
|
|
wxButton *Exit; //
|
|
wxButton *Options; //
|
|
|
|
SubtitlesGrid *grid;
|
|
wxArrayInt lnList;
|
|
|
|
// Dealing with Subs
|
|
AssFile *subs;
|
|
AssDialogue * current_line; //depreciated (sorta?)
|
|
|
|
// Aspell:
|
|
AspellToken token;
|
|
AspellConfig * aspellConfig;
|
|
AspellSpeller* aspellSpeller;
|
|
AspellDocumentChecker* aspellChecker;
|
|
bool pDictionaryChanged;
|
|
wxArrayString lIgnore;
|
|
wxArrayString sList;
|
|
wxString strReplacementText;
|
|
wxString misspelled_word;
|
|
|
|
//Internals
|
|
int start;
|
|
int end;
|
|
int nDiff;
|
|
int curLineNumber;
|
|
size_t curBlockNumber;
|
|
bool nLine;
|
|
wxString current_block;
|
|
|
|
|
|
//
|
|
//Functions
|
|
//
|
|
void Stage0();
|
|
void Stage1();
|
|
void Stage2();
|
|
void Stage3();
|
|
|
|
bool IncLines(); /* Incremenet lines */
|
|
void LineSetUp(); /* First Run Operation Deals With User Selection */
|
|
bool LineComputation(); /* Returns Block Text To Edit */
|
|
bool SetDefaultOptions(); /* Sets MY Aspell Default Options. TODO Make user able to set optinos */
|
|
bool SetOptions(wxString Option,wxString Value); /* Sets Options Generic Function */
|
|
void InitSpellCheck(); /* First Run Operation Deals With Variable Set up */
|
|
bool Uninit(); /*Future Usage */
|
|
void LineEnd(); /*Run At End Of Lines, Cleans up. */
|
|
bool LineBegin(); /*Run At Line Begining. Sets up variables */
|
|
bool Precheck(); /*Not Really Pre anymore, it does the work. */
|
|
void Populate(wxString misspelling); /* Populate Gui. */
|
|
void UILock(bool enable); /* Lock Interface */
|
|
void ComputeAction(int action); /* Send Enum, Do Work. Does most of the On* calls. */
|
|
int AddWordToDictionary(wxString strWord); /*Adds word to dictionary */
|
|
wxArrayString GetSuggestions(wxString strMisspelledWord); /*Gets suggestions for misspelled word */
|
|
wxArrayString GetWordListAsArray(); /*Same as above... legacy code marked to be removed. */
|
|
void BlockStore(); /* Save Changes. */
|
|
|
|
|
|
/////
|
|
//Events
|
|
void OnClose (wxCommandEvent &event);
|
|
void OnAccept (wxCommandEvent &event);
|
|
void OnOptions (wxCommandEvent &event);
|
|
void OnExit (wxCommandEvent &event);
|
|
void OnSkip (wxCommandEvent &event);
|
|
void OnAdd (wxCommandEvent &event);
|
|
void OnListDoubleClick (wxCommandEvent &event);
|
|
void OnTextChange(wxCommandEvent &event);
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
|
|
|
|
enum actioncodes {
|
|
ACTION_ACCEPT = 1,
|
|
ACTION_SKIP,
|
|
ACTION_ADD,
|
|
ACTION_EXIT,
|
|
ACTION_USER_CUSTOM,
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
|
|
|
///////
|
|
// IDs
|
|
enum {
|
|
BUTTON_EXIT = 100,
|
|
BUTTON_ACCEPT,
|
|
BUTTON_SKIP,
|
|
BUTTON_ADDCUSTOM,
|
|
BUTTON_PREFERENCES,
|
|
LIST_SUGGESTIONS,
|
|
TEXTBOX_LINE
|
|
};
|
|
|
|
#endif
|
|
|
|
#endif
|