You've already forked lazarus-ccr
jvcllaz: Make JvSpellChecker platform-independent
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6238 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -4,9 +4,6 @@
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<UseDefaultCompilerOptions Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<Title Value="JvSpellCheckerDemo"/>
|
||||
|
@ -1,14 +1,16 @@
|
||||
program JvSpellCheckerDemo;
|
||||
|
||||
uses
|
||||
Forms, Interfaces,
|
||||
Forms, Interfaces, LCLVersion,
|
||||
MainFrm in 'MainFrm.pas' {frmMain},
|
||||
JvSpellCheckerForm in 'JvSpellCheckerForm.pas' {frmSpellChecker};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
{$IF LCL_FullVersion >= 1080000}
|
||||
Application.Scaled := True;
|
||||
{$ENDIF}
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TfrmMain, frmMain);
|
||||
Application.CreateForm(TfrmSpellChecker, frmSpellChecker);
|
||||
|
@ -1,104 +1,107 @@
|
||||
object frmSpellChecker: TfrmSpellChecker
|
||||
object frmSpellChecker: TfrmSpellChecker
|
||||
Left = 338
|
||||
Height = 334
|
||||
Top = 177
|
||||
Width = 384
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Spell check document'
|
||||
ClientHeight = 334
|
||||
ClientWidth = 384
|
||||
Color = clBtnFace
|
||||
DefaultMonitor = dmDesktop
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Shell Dlg 2'
|
||||
Font.Style = []
|
||||
FormStyle = fsStayOnTop
|
||||
OldCreateOrder = False
|
||||
Position = poMainFormCenter
|
||||
Scaled = False
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
Scaled = False
|
||||
object Label1: TLabel
|
||||
Left = 16
|
||||
Height = 15
|
||||
Top = 16
|
||||
Width = 72
|
||||
Height = 13
|
||||
Width = 81
|
||||
Caption = 'Not in wordlist:'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 16
|
||||
Height = 15
|
||||
Top = 102
|
||||
Width = 62
|
||||
Height = 13
|
||||
Width = 67
|
||||
Caption = 'Suggestions:'
|
||||
ParentColor = False
|
||||
end
|
||||
object lblNoSuggestions: TLabel
|
||||
Left = 179
|
||||
AnchorSideRight.Control = edNewWord
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 166
|
||||
Height = 15
|
||||
Top = 101
|
||||
Width = 93
|
||||
Height = 13
|
||||
Width = 104
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '(nothing to display)'
|
||||
ParentColor = False
|
||||
Visible = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 16
|
||||
Height = 15
|
||||
Top = 56
|
||||
Width = 65
|
||||
Height = 13
|
||||
Width = 70
|
||||
Caption = 'Replace with:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edNewWord: TEdit
|
||||
Left = 16
|
||||
Height = 23
|
||||
Top = 72
|
||||
Width = 254
|
||||
Height = 21
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
TabOrder = 1
|
||||
end
|
||||
object lbSuggestions: TListBox
|
||||
Left = 16
|
||||
Height = 82
|
||||
Top = 120
|
||||
Width = 254
|
||||
Height = 82
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
ItemHeight = 13
|
||||
TabOrder = 2
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
ItemHeight = 0
|
||||
OnClick = lbSuggestionsClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnIgnore: TButton
|
||||
Left = 294
|
||||
Height = 25
|
||||
Top = 32
|
||||
Width = 75
|
||||
Height = 25
|
||||
Action = acIgnore
|
||||
Anchors = [akTop, akRight]
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnIgnoreAll: TButton
|
||||
Left = 294
|
||||
Height = 25
|
||||
Top = 61
|
||||
Width = 75
|
||||
Height = 25
|
||||
Action = acIgnoreAll
|
||||
Anchors = [akTop, akRight]
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnChange: TButton
|
||||
Left = 294
|
||||
Height = 25
|
||||
Top = 120
|
||||
Width = 75
|
||||
Height = 25
|
||||
Action = acChange
|
||||
Anchors = [akTop, akRight]
|
||||
TabOrder = 5
|
||||
end
|
||||
object btnClose: TButton
|
||||
Left = 294
|
||||
Top = 286
|
||||
Width = 75
|
||||
Height = 25
|
||||
Top = 289
|
||||
Width = 75
|
||||
Action = acClose
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
@ -106,68 +109,78 @@
|
||||
end
|
||||
object btnAdd: TButton
|
||||
Left = 294
|
||||
Height = 25
|
||||
Top = 149
|
||||
Width = 75
|
||||
Height = 25
|
||||
Action = acAdd
|
||||
Anchors = [akTop, akRight]
|
||||
TabOrder = 6
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 16
|
||||
Top = 209
|
||||
Width = 257
|
||||
Height = 105
|
||||
Top = 209
|
||||
Width = 254
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Caption = ' Ignore: '
|
||||
ClientHeight = 85
|
||||
ClientWidth = 250
|
||||
TabOrder = 7
|
||||
object chkUpperCase: TCheckBox
|
||||
AnchorSideTop.Control = GroupBox1
|
||||
Left = 24
|
||||
Top = 23
|
||||
Width = 207
|
||||
Height = 17
|
||||
Height = 19
|
||||
Top = 4
|
||||
Width = 118
|
||||
BorderSpacing.Top = 4
|
||||
Caption = '&UPPERCASE words'
|
||||
TabOrder = 0
|
||||
end
|
||||
object chkNumber: TCheckBox
|
||||
AnchorSideTop.Control = chkUpperCase
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 24
|
||||
Top = 39
|
||||
Width = 207
|
||||
Height = 17
|
||||
Height = 19
|
||||
Top = 23
|
||||
Width = 130
|
||||
Caption = 'Words with &numbers'
|
||||
TabOrder = 1
|
||||
end
|
||||
object chkURL: TCheckBox
|
||||
AnchorSideTop.Control = chkNumber
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 24
|
||||
Top = 55
|
||||
Width = 207
|
||||
Height = 17
|
||||
Height = 19
|
||||
Top = 42
|
||||
Width = 135
|
||||
Caption = 'Internet and file &paths'
|
||||
TabOrder = 2
|
||||
end
|
||||
object chkHTML: TCheckBox
|
||||
AnchorSideTop.Control = chkURL
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 24
|
||||
Top = 71
|
||||
Width = 207
|
||||
Height = 17
|
||||
Height = 19
|
||||
Top = 61
|
||||
Width = 82
|
||||
Caption = 'HT&ML code'
|
||||
TabOrder = 3
|
||||
end
|
||||
end
|
||||
object edBadWord: TEdit
|
||||
Left = 16
|
||||
Height = 23
|
||||
Top = 32
|
||||
Width = 254
|
||||
Height = 21
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Color = clBtnFace
|
||||
ReadOnly = True
|
||||
TabOrder = 0
|
||||
end
|
||||
object alSpell: TActionList
|
||||
OnUpdate = alSpellUpdate
|
||||
Left = 296
|
||||
Top = 224
|
||||
left = 296
|
||||
top = 224
|
||||
object acIgnore: TAction
|
||||
Caption = '&Ignore'
|
||||
OnExecute = acIgnoreExecute
|
||||
@ -186,8 +199,8 @@
|
||||
end
|
||||
object acClose: TAction
|
||||
Caption = '&Close'
|
||||
ShortCut = 27
|
||||
OnExecute = acCloseExecute
|
||||
ShortCut = 27
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -29,10 +29,10 @@ unit JvSpellCheckerForm;
|
||||
interface
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
//{$I jvcl.inc}
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
||||
LCLIntf, LMessages,
|
||||
SysUtils, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, StdCtrls, JvSpellChecker, ActnList;
|
||||
|
||||
type
|
||||
@ -94,6 +94,7 @@ type
|
||||
ASpellChecker: TJvSpellChecker;
|
||||
FOnReplaceText: TJvReplaceTextEvent;
|
||||
FOnSelectText: TJvSelectTextEvent;
|
||||
procedure AsyncClose(Data: PtrInt);
|
||||
procedure CloseAndReport(ReportSuccess: boolean);
|
||||
function GetNextWord: boolean;
|
||||
procedure DoReplaceText(Sender: TObject; StartIndex, ALength: integer; const NewText: string);
|
||||
@ -116,6 +117,11 @@ implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
procedure TfrmSpellChecker.AsyncClose(Data: PtrInt);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfrmSpellChecker.FormCreate(Sender: TObject);
|
||||
var S:string;
|
||||
begin
|
||||
@ -256,7 +262,8 @@ begin
|
||||
S := 'There is nothing to spell check';
|
||||
ShowMessage(S);
|
||||
// delay since we might have been called from the OnShow event (can't close in OnShow)
|
||||
PostMessage(Handle, WM_CLOSE, 0, 0);
|
||||
Application.QueueAsyncCall(@AsyncClose, 0);
|
||||
// PostMessage(Handle, LM_CLOSE, 0, 0);
|
||||
end;
|
||||
|
||||
procedure TfrmSpellChecker.acIgnoreExecute(Sender: TObject);
|
||||
|
@ -26,11 +26,13 @@
|
||||
|
||||
unit MainFrm;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, StdCtrls, Menus, ComCtrls, JvComponent;
|
||||
SysUtils, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, StdCtrls, Menus, ComCtrls;
|
||||
|
||||
type
|
||||
TfrmMain = class(TForm)
|
||||
@ -68,7 +70,9 @@ type
|
||||
var
|
||||
frmMain: TfrmMain;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
JvSpellCheckerForm;
|
||||
|
||||
|
@ -30,14 +30,12 @@ Known Issues:
|
||||
unit JvSpellChecker;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
//{$I jvcl.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes,
|
||||
Windows, Controls, Messages,
|
||||
JvSpellIntf; //, JvComponentBase;
|
||||
JvSpellIntf;
|
||||
|
||||
type
|
||||
TJvSpellChecker = class(TComponent) //TJvComponent)
|
||||
@ -69,20 +67,10 @@ type
|
||||
property OnCanIgnore: TJvSpellCheckIgnoreEvent read GetCanIgnore write SetCanIgnore;
|
||||
end;
|
||||
|
||||
{$IFDEF UNITVERSIONING}
|
||||
const
|
||||
UnitVersioning: TUnitVersionInfo = (
|
||||
RCSfile: '$URL$';
|
||||
Revision: '$Revision$';
|
||||
Date: '$Date$';
|
||||
LogPath: 'JVCL\run'
|
||||
);
|
||||
{$ENDIF UNITVERSIONING}
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
// JclStrings, // StrAddRef, StrDecRef
|
||||
JvTypes, JvResources;
|
||||
|
||||
// NOTE: hash table and soundex lookup code originally from Julian Bucknall's
|
||||
|
@ -30,7 +30,6 @@ Known Issues:
|
||||
unit JvSpellIntf;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
//{$I jvcl.inc}
|
||||
|
||||
interface
|
||||
|
||||
@ -100,25 +99,7 @@ type
|
||||
var
|
||||
CreateSpellChecker: function: IJvSpellChecker = nil;
|
||||
|
||||
{$IFDEF UNITVERSIONING}
|
||||
const
|
||||
UnitVersioning: TUnitVersionInfo = (
|
||||
RCSfile: '$URL$';
|
||||
Revision: '$Revision$';
|
||||
Date: '$Date$';
|
||||
LogPath: 'JVCL\run'
|
||||
);
|
||||
{$ENDIF UNITVERSIONING}
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
{$IFDEF UNITVERSIONING}
|
||||
initialization
|
||||
RegisterUnitVersion(HInstance, UnitVersioning);
|
||||
|
||||
finalization
|
||||
UnregisterUnitVersion(HInstance);
|
||||
{$ENDIF UNITVERSIONING}
|
||||
|
||||
end.
|
||||
|
@ -1,64 +1,69 @@
|
||||
object JvSpellerForm: TJvSpellerForm
|
||||
object JvSpellerForm: TJvSpellerForm
|
||||
Left = 306
|
||||
Height = 153
|
||||
Top = 251
|
||||
Width = 371
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Spelling checker'
|
||||
ClientHeight = 153
|
||||
ClientWidth = 371
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
LCLVersion = '1.9.0.0'
|
||||
object LblContext: TLabel
|
||||
Left = 0
|
||||
Top = 33
|
||||
Width = 371
|
||||
Left = 8
|
||||
Height = 86
|
||||
Hint = 'look ahead box'
|
||||
Top = 33
|
||||
Width = 355
|
||||
Align = alClient
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'LblContext'
|
||||
ParentColor = False
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
WordWrap = True
|
||||
end
|
||||
object TextPanel: TPanel
|
||||
Left = 0
|
||||
Height = 33
|
||||
Top = 0
|
||||
Width = 371
|
||||
Height = 33
|
||||
Align = alTop
|
||||
BevelInner = bvRaised
|
||||
BevelOuter = bvLowered
|
||||
ClientHeight = 33
|
||||
ClientWidth = 371
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
object TxtSpell: TEdit
|
||||
Left = 7
|
||||
Left = 8
|
||||
Height = 23
|
||||
Top = 7
|
||||
Width = 293
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
Text = 'TxtSpell'
|
||||
end
|
||||
end
|
||||
object ButtonPanel: TPanel
|
||||
Left = 0
|
||||
Height = 34
|
||||
Top = 119
|
||||
Width = 371
|
||||
Height = 34
|
||||
Align = alBottom
|
||||
BevelInner = bvRaised
|
||||
BevelOuter = bvLowered
|
||||
ClientHeight = 34
|
||||
ClientWidth = 371
|
||||
TabOrder = 1
|
||||
object BtnSkip: TButton
|
||||
Left = 13
|
||||
Top = 7
|
||||
Width = 61
|
||||
Height = 20
|
||||
Hint = 'Skip this word'
|
||||
Top = 7
|
||||
Width = 61
|
||||
Caption = '&Skip'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
@ -66,10 +71,10 @@
|
||||
end
|
||||
object BtnChange: TButton
|
||||
Left = 228
|
||||
Top = 7
|
||||
Width = 60
|
||||
Height = 20
|
||||
Hint = 'Change to corrected word'
|
||||
Top = 7
|
||||
Width = 60
|
||||
Caption = '&Change'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
@ -77,10 +82,10 @@
|
||||
end
|
||||
object BtnCancel: TButton
|
||||
Left = 299
|
||||
Top = 7
|
||||
Width = 61
|
||||
Height = 20
|
||||
Hint = 'Abort all changes'
|
||||
Top = 7
|
||||
Width = 61
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
ParentShowHint = False
|
||||
@ -89,10 +94,10 @@
|
||||
end
|
||||
object BtnAdd: TButton
|
||||
Left = 156
|
||||
Top = 7
|
||||
Width = 61
|
||||
Height = 20
|
||||
Hint = 'Add to user Dictionary'
|
||||
Top = 7
|
||||
Width = 61
|
||||
Caption = '&Add'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
@ -100,10 +105,10 @@
|
||||
end
|
||||
object BtnSkipAll: TButton
|
||||
Left = 85
|
||||
Top = 7
|
||||
Width = 60
|
||||
Height = 20
|
||||
Hint = 'Skip all, update and finish'
|
||||
Top = 7
|
||||
Width = 60
|
||||
Caption = 'S&kip All'
|
||||
ModalResult = 1
|
||||
ParentShowHint = False
|
||||
|
@ -26,14 +26,11 @@ Known Issues:
|
||||
unit JvSpellerForm;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
//{$I jvcl.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes, Windows, Messages, Graphics, Controls, Forms, Dialogs,
|
||||
StdCtrls, ExtCtrls,
|
||||
JvComponent;
|
||||
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
|
||||
|
||||
type
|
||||
TJvSpeller = class;
|
||||
@ -89,23 +86,11 @@ type
|
||||
property UserDictionary: TFileName read FUserDictionary write SetUserDictionary;
|
||||
end;
|
||||
|
||||
{$IFDEF UNITVERSIONING}
|
||||
const
|
||||
UnitVersioning: TUnitVersionInfo = (
|
||||
RCSfile: '$URL$';
|
||||
Revision: '$Revision$';
|
||||
Date: '$Date$';
|
||||
LogPath: 'JVCL\run'
|
||||
);
|
||||
{$ENDIF UNITVERSIONING}
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
StrUtils,
|
||||
{$IFNDEF COMPILER12_UP}
|
||||
JvJCLUtils,
|
||||
{$ENDIF ~COMPILER12_UP}
|
||||
JvConsts, JvResources, JvTypes;
|
||||
|
||||
{$R *.lfm}
|
||||
|
Reference in New Issue
Block a user