gecko-dev/cmd/winfe/spellcli.h
1998-03-28 02:44:41 +00:00

271 lines
8.1 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef _SPELLCLI_H
#define _SPELLCLI_H
#include "spellchk.h" // spell checker library public header file
// the dialog box & string resources are in edtrcdll DLL
#include "edtrcdll\src\resource.h"
/**************************************************************************
* Public classes and functions.
**************************************************************************/
// forward declaration of the dialog box class
class CSpellCheckerDlg;
class CPersonalDictionaryDlg;
class CSpellCheckerClient
{
public:
CSpellCheckerClient(CWnd *pParentWnd);
~CSpellCheckerClient();
// Starts checking the document for spelling errors.
// Returns: 0 = success, non-zero = failure
int ProcessDocument();
protected:
// Functions to be provided by the derived classes
virtual XP_HUGE_CHAR_PTR GetBuffer() = 0;
virtual BOOL GetSelection(int32 &SelStart, int32 &SelEnd) = 0;
virtual char *GetFirstError() = 0;
virtual char *GetNextError() = 0;
virtual void ReplaceHilitedText(const char *NewText, int AllInstances) = 0;
virtual void IgnoreHilitedText(int AllInstances) = 0;
virtual void RemoveAllErrorHilites() {};
// Displays the modal personal dictionary dialog box
void ShowPersonalDictionaryDlg(CWnd *pParent = NULL);
// Restarts checking the document. Called by the dialog box when the
// user changes the default language.
int ReprocessDocument();
protected:
HINSTANCE m_hSpellCheckerDll;
CWnd *m_pParentWnd;
ISpellChecker *m_pSpellChecker;
CPersonalDictionaryDlg *m_pDictionaryDlg;
int32 m_BufferSize;
int32 m_SelStart, m_SelEnd;
static int m_InstanceCount;
friend class CSpellCheckerDlg;
friend class CHtmlSpellChecker;
friend class CPlainTextSpellChecker;
};
class CHtmlSpellChecker : public CSpellCheckerClient
{
public:
CHtmlSpellChecker(MWContext *pMWContext, CNetscapeEditView *pHtmlView);
// Starts checking the document for spelling errors.
// Returns: 0 = success, non-zero = failure
int ProcessDocument() {return CSpellCheckerClient::ProcessDocument(); };
protected:
// Implementation of base class virtuals.
XP_HUGE_CHAR_PTR GetBuffer();
BOOL GetSelection(int32 &SelStart, int32 &SelEnd);
char *GetFirstError();
char *GetNextError();
void ReplaceHilitedText(const char *NewText, int AllInstances);
void IgnoreHilitedText(int AllInstances);
void RemoveAllErrorHilites();
private:
MWContext *m_pMWContext;
CNetscapeEditView *m_pView;
};
class CPlainTextSpellChecker : public CSpellCheckerClient
{
public:
CPlainTextSpellChecker(CEdit *pTextView);
// Starts checking the document for spelling errors.
// Returns: 0 = success, non-zero = failure
int ProcessDocument() {return CSpellCheckerClient::ProcessDocument(); };
protected:
// Implentation of base class virtuals.
XP_HUGE_CHAR_PTR GetBuffer();
BOOL GetSelection(int32 &SelStart, int32 &SelEnd);
char *GetFirstError();
char *GetNextError();
void ReplaceHilitedText(const char *NewText, int AllInstances);
void IgnoreHilitedText(int AllInstances);
private:
CEdit *m_pTextView;
};
/**************************************************************************
* Dialog box implementation classes
**************************************************************************/
/////////////////////////////////////////////////////////////////////////////
// CSpellCheckerDlg dialog
class CSpellCheckerDlg : public CDialog
{
// Construction
public:
CSpellCheckerDlg(ISpellChecker *pSpellChecker, CSpellCheckerClient *pClient, CWnd* pParent = NULL);
// Dialog Data
//{{AFX_DATA(CSpellDlg)
enum { IDD = IDD_SPELL_CHECKER };
CListBox m_SuggestionsListBox;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSpellCheckerDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CSpellCheckerDlg)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
virtual BOOL OnInitDialog();
virtual void OnCancel();
afx_msg void OnChange();
afx_msg void OnIgnore();
afx_msg void OnChangeNewWord();
afx_msg void OnSetFocusNewWord();
afx_msg void OnSetFocusSuggestions();
afx_msg void OnSelChangeSuggestions();
afx_msg void OnIgnoreAll();
afx_msg void OnChangeAll();
afx_msg void OnAdd();
afx_msg void OnEditDictionary();
afx_msg void OnSelendokLanguage();
afx_msg void OnHelp();
afx_msg void OnCheckWord();
//}}AFX_MSG
#ifdef XP_WIN32
afx_msg BOOL OnHelpInfo(HELPINFO *);
#endif
void CommonOnChange(BOOL ChangeAll);
afx_msg LRESULT OnSetInitialFocus(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
private:
ISpellChecker *m_pSpellChecker;
CSpellCheckerClient *m_pClient;
CString m_MisspelledWord;
// Resource switcher object: It switches the default resource handle to the
// editorXX.dll, cause that's where the dialog box resource is.
CEditorResourceSwitcher m_DlgResource;
// strings loaded from the resource DLL
CString m_strChange, m_strChangeAll, m_strDelete,
m_strDeleteAll, m_strNoSuggestions,
m_strStop, m_strDone, m_strCorrectSpelling;
// The new word, either entered in the edit field or selected in
// the Suggestions listbox.
CString m_NewWord;
int m_NumSuggestions;
void SetAlternatives();
void GetFirstError();
void GetNextError();
void ProcessError(char *pMisspelledWord);
void InitLanguageList();
void ChangeState();
void UpdateChangeButton();
#ifdef XP_WIN16
// Win16 MFC 1.52 version of GetDlgItemText does not take a CString
void GetDlgItemText( int nID, CString& rString ) const
{ GetDlgItem(nID)->GetWindowText(rString); }
#endif
};
/////////////////////////////////////////////////////////////////////////////
// CPersonalDictionaryDlg dialog
class CPersonalDictionaryDlg : public CDialog
{
// Construction
public:
CPersonalDictionaryDlg(ISpellChecker *pSpellChecker, CWnd* pParent=NULL);
// Dialog Data
//{{AFX_DATA(CPersonalDictionaryDlg)
enum { IDD = IDD_CUSTOM_DICTIONARY };
CListBox m_WordList;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSpellCheckerDlg)
virtual BOOL OnInitDialog();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
virtual void OnOK();
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CSpellCheckerDlg)
//}}AFX_MSG
afx_msg void OnAddWord();
afx_msg void OnReplaceWord();
afx_msg void OnRemoveWord();
afx_msg void OnSelChangeWordList();
afx_msg void EnableButtons();
afx_msg void OnHelp();
#ifdef XP_WIN32
afx_msg BOOL OnHelpInfo(HELPINFO *);
#endif
DECLARE_MESSAGE_MAP()
private:
ISpellChecker *m_pSpellChecker;
// Resource switcher object: It switches the default resource handle to the
// editorXX.dll, cause that's where the dialog box resource is.
CEditorResourceSwitcher m_DlgResource;
#ifdef XP_WIN16
// Win16 MFC 1.52 version of GetDlgItemText does not take a CString
void GetDlgItemText( int nID, CString& rString ) const
{ GetDlgItem(nID)->GetWindowText(rString); }
#endif
};
#endif