+ Case handling for CodeComplete

This commit is contained in:
pierre 2001-08-07 21:28:06 +00:00
parent 513c329b25
commit cc1bf40f41

View File

@ -2,7 +2,7 @@ unit FPCodCmp; { CodeComplete }
interface interface
uses Objects,Drivers, uses Objects,Drivers,Dialogs,
WUtils,WViews; WUtils,WViews;
type type
@ -17,6 +17,7 @@ type
procedure HandleEvent(var Event: TEvent); virtual; procedure HandleEvent(var Event: TEvent); virtual;
private private
CodeCompleteLB : PAdvancedListBox; CodeCompleteLB : PAdvancedListBox;
RB : PRadioButtons;
procedure Add; procedure Add;
procedure Edit; procedure Edit;
procedure Delete; procedure Delete;
@ -30,12 +31,16 @@ function StoreCodeComplete(var S: TStream): boolean;
procedure DoneCodeComplete; procedure DoneCodeComplete;
const CodeCompleteWords : PCodeCompleteWordList = nil; const CodeCompleteWords : PCodeCompleteWordList = nil;
type
TCodeCompleteCase = (ccc_unchanged, ccc_lower, ccc_upper, ccc_mixed);
const
CodeCompleteCase : TCodeCompleteCase = ccc_unchanged;
procedure RegisterCodeComplete; procedure RegisterCodeComplete;
implementation implementation
uses Views,Dialogs,MsgBox, uses Views,MsgBox,
{$ifdef FVISION} {$ifdef FVISION}
FVConsts, FVConsts,
{$else} {$else}
@ -64,7 +69,12 @@ begin
Text:=CodeCompleteWords^.Lookup(WordS,Index); Text:=CodeCompleteWords^.Lookup(WordS,Index);
OK:=(Index<>-1) and (length(Text)<>length(WordS)); OK:=(Index<>-1) and (length(Text)<>length(WordS));
end; end;
if OK=false then Text:=''; if OK=false then Text:=''
else case CodeCompleteCase of
ccc_upper : Text:=UpcaseStr(Text);
ccc_lower : Text:=LowcaseStr(Text);
ccc_mixed : Text:=UpCase(Text[1])+LowCaseStr(Copy(Text,2,High(Text)));
end;
FPCompleteCodeWord:=OK; FPCompleteCodeWord:=OK;
end; end;
@ -97,6 +107,7 @@ begin
begin begin
if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done); if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done);
CodeCompleteWords:=C; CodeCompleteWords:=C;
S.Read(CodeCompleteCase,Sizeof(TCodeCompleteCase));
end end
else else
if Assigned(C) then if Assigned(C) then
@ -111,6 +122,7 @@ begin
if OK then if OK then
begin begin
CodeCompleteWords^.Store(S); CodeCompleteWords^.Store(S);
S.Write(CodeCompleteCase,Sizeof(TCodeCompleteCase));
OK:=OK and (S.Status=stOK); OK:=OK and (S.Status=stOK);
end; end;
StoreCodeComplete:=OK; StoreCodeComplete:=OK;
@ -124,12 +136,14 @@ end;
constructor TCodeCompleteDialog.Init; constructor TCodeCompleteDialog.Init;
var R,R2,R3: TRect; var R,R2,R3: TRect;
Items: PSItem;
SB: PScrollBar; SB: PScrollBar;
begin begin
R.Assign(0,0,46,16); R.Assign(0,0,46,20);
inherited Init(R,dialog_codecomplete); inherited Init(R,dialog_codecomplete);
HelpCtx:=hcCodeCompleteOptions; HelpCtx:=hcCodeCompleteOptions;
GetExtent(R); R.Grow(-3,-2); Inc(R.A.Y); R3.Copy(R); Dec(R.B.X,12); GetExtent(R); R.Grow(-3,-2); Inc(R.A.Y); R3.Copy(R); Dec(R.B.X,12);
Dec(R.B.Y,5);
R2.Copy(R); R2.Move(1,0); R2.A.X:=R2.B.X-1; R2.Copy(R); R2.Move(1,0); R2.A.X:=R2.B.X-1;
New(SB, Init(R2)); Insert(SB); New(SB, Init(R2)); Insert(SB);
New(CodeCompleteLB, Init(R,1,SB)); New(CodeCompleteLB, Init(R,1,SB));
@ -137,6 +151,17 @@ begin
R2.Copy(R); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Dec(R2.A.X); R2.Copy(R); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Dec(R2.A.X);
Insert(New(PLabel, Init(R2, label_codecomplete_keywords, CodeCompleteLB))); Insert(New(PLabel, Init(R2, label_codecomplete_keywords, CodeCompleteLB)));
R.Copy(R3); R.A.Y:=R.B.Y-4; Dec(R.B.X,14); Inc(R.A.X);
Items:=NewSItem('Unc~h~anged',
NewSItem('~L~ower',
NewSItem('~U~pper',
NewSItem('~M~ixed',nil))));
RB:=New(PRadioButtons,Init(R,Items));
RB^.SetData(ord(CodeCompleteCase));
R2.Copy(R); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Dec(R2.A.X);
Insert(New(PLabel, Init(R2, 'Case handling', RB)));
Insert(RB);
R.Copy(R3); R.A.X:=R.B.X-10; R.B.Y:=R.A.Y+2; R.Copy(R3); R.A.X:=R.B.X-10; R.B.Y:=R.A.Y+2;
Insert(New(PButton, Init(R, button_OK, cmOK, bfNormal))); Insert(New(PButton, Init(R, button_OK, cmOK, bfNormal)));
R.Move(0,2); R.Move(0,2);
@ -202,6 +227,7 @@ begin
begin begin
if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done); if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done);
CodeCompleteWords:=C; CodeCompleteWords:=C;
CodeCompleteCase:=TCodeCompleteCase(RB^.Value);
end end
else else
Dispose(C, Done); Dispose(C, Done);