Skip to content

Commit 14612c2

Browse files
committed
bk/2024-08-27-1044
1 parent be5cd83 commit 14612c2

File tree

4 files changed

+152
-2
lines changed

4 files changed

+152
-2
lines changed

Package/DelphiAIDeveloper.dpk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ contains
106106
DelphiAIDev.PopupMenuProjects.OnExecute in '..\Src\PopupMenuProjects\DelphiAIDev.PopupMenuProjects.OnExecute.pas',
107107
DelphiAIDev.Projects.Fields in '..\Src\Projects\DelphiAIDev.Projects.Fields.pas',
108108
DelphiAIDev.Projects.Model in '..\Src\Projects\DelphiAIDev.Projects.Model.pas',
109-
DelphiAIDev.Projects.Interfaces in '..\Src\Projects\DelphiAIDev.Projects.Interfaces.pas';
109+
DelphiAIDev.Projects.Interfaces in '..\Src\Projects\DelphiAIDev.Projects.Interfaces.pas',
110+
DelphiAIDev.CodeCompletion.Vars in '..\Src\CodeCompletion\DelphiAIDev.CodeCompletion.Vars.pas';
110111

111112
end.

Package/DelphiAIDeveloper.dproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@
222222
<DCCReference Include="..\Src\Projects\DelphiAIDev.Projects.Fields.pas"/>
223223
<DCCReference Include="..\Src\Projects\DelphiAIDev.Projects.Model.pas"/>
224224
<DCCReference Include="..\Src\Projects\DelphiAIDev.Projects.Interfaces.pas"/>
225+
<DCCReference Include="..\Src\CodeCompletion\DelphiAIDev.CodeCompletion.Vars.pas"/>
225226
<RcItem Include="Img\c4d_Logo.bmp">
226227
<ResourceType>BITMAP</ResourceType>
227228
<ResourceId>c4d_Logo</ResourceId>
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
unit DelphiAIDev.CodeCompletion.Vars;
2+
3+
interface
4+
5+
uses
6+
System.SysUtils,
7+
System.Classes;
8+
9+
type
10+
TDelphiAIDevCodeCompletionVars = class
11+
private
12+
FLineIni: Integer;
13+
FLineEnd: Integer;
14+
FRow: Integer;
15+
FColumn: Integer;
16+
FContents: TStrings;
17+
constructor Create;
18+
public
19+
class function GetInstance: TDelphiAIDevCodeCompletionVars;
20+
destructor Destroy; override;
21+
procedure Clear;
22+
property LineIni: Integer read FLineIni write FLineIni;
23+
property LineEnd: Integer read FLineEnd write FLineEnd;
24+
property Row: Integer read FRow write FRow;
25+
property Column: Integer read FColumn write FColumn;
26+
property Contents: TStrings read FContents write FContents;
27+
end;
28+
29+
implementation
30+
31+
var
32+
Instance: TDelphiAIDevCodeCompletionVars;
33+
34+
class function TDelphiAIDevCodeCompletionVars.GetInstance: TDelphiAIDevCodeCompletionVars;
35+
begin
36+
if not Assigned(Instance) then
37+
Instance := Self.Create;
38+
39+
Result := Instance;
40+
end;
41+
42+
constructor TDelphiAIDevCodeCompletionVars.Create;
43+
begin
44+
FContents := TStringList.Create;
45+
Self.Clear;
46+
end;
47+
48+
destructor TDelphiAIDevCodeCompletionVars.Destroy;
49+
begin
50+
FContents.Free;
51+
inherited;
52+
end;
53+
54+
procedure TDelphiAIDevCodeCompletionVars.Clear;
55+
begin
56+
FLineIni := 0;
57+
FLineEnd := 0;
58+
FRow := 0;
59+
FColumn := 0;
60+
FContents.Clear;
61+
end;
62+
63+
initialization
64+
65+
finalization
66+
if Assigned(Instance) then
67+
FreeAndNil(Instance);
68+
69+
end.

Src/KeyboardBinding/DelphiAIDev.KeyboardBinding.pas

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ interface
1414
type
1515
TDelphiAIDevKeyboardBinding = class(TNotifierObject, IOTAKeyboardBinding)
1616
private
17+
procedure KeyAltHome(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
18+
procedure KeyTab(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
1719
//procedure KeyProcBlockReturn(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
1820
procedure KeyProcBlockReturnAndAlt(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
21+
procedure AddBlockText;
1922
protected
2023
function GetBindingType: TBindingType;
2124
function GetDisplayName: string;
@@ -31,7 +34,8 @@ implementation
3134

3235
uses
3336
DelphiAIDev.Utils,
34-
DelphiAIDev.Utils.OTA;
37+
DelphiAIDev.Utils.OTA,
38+
DelphiAIDev.CodeCompletion.Vars;
3539

3640
var
3741
Index: Integer = -1;
@@ -82,6 +86,9 @@ procedure TDelphiAIDevKeyboardBinding.BindKeyboard(const BindingServices: IOTAKe
8286
// if TUtilsOTA.CurrentProjectIsDelphiAIDeveloperDPROJ then
8387
// Exit;
8488

89+
BindingServices.AddKeyBinding([Shortcut(VK_HOME, [ssAlt])], Self.KeyAltHome, nil);
90+
BindingServices.AddKeyBinding([Shortcut(VK_TAB, [])], Self.KeyTab, nil);
91+
8592
//BindingServices.AddKeyBinding([Shortcut(VK_RETURN, [])], Self.KeyProcBlockReturn, nil);
8693
BindingServices.AddKeyBinding([Shortcut(VK_RETURN, [ssAlt])], Self.KeyProcBlockReturnAndAlt, nil);
8794
end;
@@ -116,6 +123,78 @@ procedure TDelphiAIDevKeyboardBinding.KeyProcBlockReturnAndAlt(const Context: IO
116123
BindingResult := TKeyBindingResult.krUnhandled; //krNextProc;
117124
end;
118125

126+
procedure TDelphiAIDevKeyboardBinding.AddBlockText;
127+
begin
128+
TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Clear;
129+
TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Add(' TUtils.AddLog(EmptyStr);');
130+
TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Add(' TUtils.ShowMsg(EmptyStr);');
131+
end;
132+
133+
procedure TDelphiAIDevKeyboardBinding.KeyAltHome(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
134+
var
135+
LRow: Integer;
136+
LColumn: Integer;
137+
i: Integer;
138+
LText: string;
139+
begin
140+
if KeyCode <> Shortcut(VK_HOME, [ssAlt]) then
141+
Exit;
142+
143+
Self.AddBlockText;
144+
145+
LRow := Context.EditBuffer.EditPosition.Row;
146+
LColumn := Context.EditBuffer.EditPosition.Column;
147+
148+
TDelphiAIDevCodeCompletionVars.GetInstance.LineIni := LRow; // + 1;
149+
TDelphiAIDevCodeCompletionVars.GetInstance.LineEnd := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + (TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count); // + 1 //TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + 1;
150+
151+
//Context.EditBuffer.EditPosition.InsertText(sLineBreak + sLineBreak);
152+
LText := '';
153+
for i := 0 to Pred(TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count) do
154+
LText := LText + sLineBreak;
155+
156+
Context.EditBuffer.EditPosition.InsertText(LText.TrimRight + sLineBreak);
157+
Context.EditBuffer.EditPosition.Move(TDelphiAIDevCodeCompletionVars.GetInstance.LineIni, LColumn);
158+
159+
TDelphiAIDevCodeCompletionVars.GetInstance.Row := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni;
160+
TDelphiAIDevCodeCompletionVars.GetInstance.Column := LColumn;
161+
162+
//Context.EditBuffer.EditPosition.MoveBOL;
163+
// //LTextCurrentLineOrBlock := Context.EditBuffer.EditBlock.Text;
164+
// LTextCurrentLineOrBlock := GetCurrentLineOrBlock(CnOtaGetTopMostEditView);
165+
// if LTextCurrentLineOrBlock.Trim.IsEmpty then
166+
// Exit;
167+
168+
BindingResult := TKeyBindingResult.krUnhandled; //krNextProc;
169+
end;
170+
171+
procedure TDelphiAIDevKeyboardBinding.KeyTab(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
172+
var
173+
LText: string;
174+
i: Integer;
175+
begin
176+
TUtils.AddLog('KeyTab ' + TDelphiAIDevCodeCompletionVars.GetInstance.LineIni.ToString);
177+
178+
if KeyCode <> Shortcut(VK_TAB, []) then
179+
Exit;
180+
181+
if TDelphiAIDevCodeCompletionVars.GetInstance.LineIni > 0 then
182+
begin
183+
//Context.EditBuffer.EditPosition.InsertText('Minha linha 01' + sLineBreak + 'Linha 2');
184+
LText := '';
185+
for i := 0 to Pred(TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count) do
186+
LText := LText + TDelphiAIDevCodeCompletionVars.GetInstance.Contents[i].Trim + sLineBreak;
187+
188+
Context.EditBuffer.EditPosition.InsertText(LText.Trim);
189+
//Context.EditBuffer.EditPosition.Move(TDelphiAIDevCodeCompletionVars.GetInstance.LineEnd, 20);
190+
191+
TDelphiAIDevCodeCompletionVars.GetInstance.Clear;
192+
end;
193+
194+
BindingResult := TKeyBindingResult.krUnhandled; //krNextProc;
195+
TUtils.AddLog('KeyTab krUnhandled');
196+
end;
197+
119198
initialization
120199

121200
finalization

0 commit comments

Comments
 (0)