Skip to content

Commit 6d328c0

Browse files
committed
add-itens-in-setting
1 parent ad03b78 commit 6d328c0

File tree

4 files changed

+69
-40
lines changed

4 files changed

+69
-40
lines changed

Src/CodeCompletion/DelphiAIDev.CodeCompletion.Search.pas

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ procedure TDelphiAIDevCodeCompletionSearch.Process(const AContext: IOTAKeyContex
6666
begin
6767
FSettings.ValidateFillingSelectedAI(TShowMsg.No);
6868

69-
7069
FQuestions.Clear;
7170
FQuestions.Add(FSettings.LanguageQuestions.GetLanguageDefinition);
7271
FQuestions.Add(FSettings.LanguageQuestions.GetMsgCodeCompletionSuggestion);
@@ -80,15 +79,13 @@ procedure TDelphiAIDevCodeCompletionSearch.Process(const AContext: IOTAKeyContex
8079
LIOTAEditPosition.BackspaceDelete(TConsts.TAG_CODE_COMPLETION.Length);
8180
end;
8281

83-
//TUtils.ShowMsg('CodeCompletionSearch.Process - FQuestions.Text', FQuestions.Text);
8482
try
8583
FChat.ProcessSend(FQuestions.Text);
8684
except
8785
Abort;
8886
end;
8987

9088
FVars.Contents.Text := TUtils.ConfReturnAI(FChat.Response.Text);
91-
//TUtils.ShowMsg('CodeCompletionSearch.Process - FVars.Contents.Text', FVars.Contents.Text);
9289

9390
LRow := LIOTAEditPosition.Row;
9491
LColumn := LIOTAEditPosition.Column;
@@ -105,7 +102,6 @@ procedure TDelphiAIDevCodeCompletionSearch.Process(const AContext: IOTAKeyContex
105102
LIOTAEditPosition.InsertText(LText); //.TrimRight + sLineBreak);
106103
LIOTAEditPosition.Move(FVars.LineIni, LColumn);
107104

108-
109105
//LIOTAEditPositionMoveBOL;
110106
// //LTextCurrentLineOrBlock := Context.EditBuffer.EditBlock.Text;
111107
// LTextCurrentLineOrBlock := GetCurrentLineOrBlock(CnOtaGetTopMostEditView);

Src/KeyboardBinding/DelphiAIDev.KeyboardBinding.pas

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ TDelphiAIDevKeyboardBinding = class(TNotifierObject, IOTAKeyboardBinding)
2121
procedure KeyAltHome(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
2222
procedure KeyTab(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
2323
//procedure KeyProcBlockReturn(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
24-
procedure KeyProcBlockReturnAndAlt(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
24+
procedure CodeCompletionSearch(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
2525
protected
2626
function GetBindingType: TBindingType;
2727
function GetDisplayName: string;
@@ -96,34 +96,34 @@ procedure TDelphiAIDevKeyboardBinding.BindKeyboard(const BindingServices: IOTAKe
9696
if not(Trim(TDelphiAIDevSettings.GetInstance.CodeCompletionShortcutInvoke).IsEmpty) then
9797
LShortcut := TDelphiAIDevSettings.GetInstance.CodeCompletionShortcutInvoke;
9898

99-
TUtils.ShowMsg(LShortcut);
100-
BindingServices.AddKeyBinding([TextToShortCut(LShortcut)], Self.KeyProcBlockReturnAndAlt, nil);
99+
BindingServices.AddKeyBinding([TextToShortCut(LShortcut)], Self.CodeCompletionSearch, nil);
101100

102101
BindingServices.AddKeyBinding([Shortcut(VK_TAB, [])], Self.KeyTab, nil);
103102
BindingServices.AddKeyBinding([Shortcut(VK_HOME, [ssAlt])], Self.KeyAltHome, nil);
104103
end;
105104

106-
procedure TDelphiAIDevKeyboardBinding.KeyProcBlockReturnAndAlt(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
105+
procedure TDelphiAIDevKeyboardBinding.CodeCompletionSearch(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
107106
begin
108107
try
109-
TDelphiAIDevCodeCompletionSearch.New.Process(Context);
108+
if TDelphiAIDevSettings.GetInstance.CodeCompletionUse then
109+
TDelphiAIDevCodeCompletionSearch.New.Process(Context);
110110
finally
111111
BindingResult := TKeyBindingResult.krUnhandled;
112112
end;
113113
end;
114114

115115
procedure TDelphiAIDevKeyboardBinding.KeyTab(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);
116116
begin
117-
if KeyCode <> Shortcut(VK_TAB, []) then
118-
Exit;
117+
// if KeyCode <> Shortcut(VK_TAB, []) then
118+
// Exit;
119+
120+
BindingResult := TKeyBindingResult.krUnhandled;
119121

120122
if TDelphiAIDevCodeCompletionVars.GetInstance.LineIni > 0 then
121123
begin
122124
TDelphiAIDevCodeCompletionKeyTab.New.Process(Context);
123125
BindingResult := TKeyBindingResult.krHandled;
124-
end
125-
else
126-
BindingResult := TKeyBindingResult.krUnhandled;
126+
end;
127127
end;
128128

129129
procedure TDelphiAIDevKeyboardBinding.KeyAltHome(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);

Src/Settings/DelphiAIDev.Settings.View.dfm

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ object DelphiAIDevSettingsView: TDelphiAIDevSettingsView
1010
Font.Height = -11
1111
Font.Name = 'Tahoma'
1212
Font.Style = []
13+
KeyPreview = True
1314
OldCreateOrder = False
1415
Position = poScreenCenter
1516
OnClose = FormClose
@@ -1056,10 +1057,6 @@ object DelphiAIDevSettingsView: TDelphiAIDevSettingsView
10561057
BevelOuter = bvNone
10571058
ParentBackground = False
10581059
TabOrder = 0
1059-
ExplicitLeft = 3
1060-
ExplicitTop = 9
1061-
ExplicitWidth = 655
1062-
ExplicitHeight = 476
10631060
object Label15: TLabel
10641061
Left = 16
10651062
Top = 29
@@ -1070,14 +1067,27 @@ object DelphiAIDevSettingsView: TDelphiAIDevSettingsView
10701067
object Label16: TLabel
10711068
Left = 16
10721069
Top = 138
1073-
Width = 92
1070+
Width = 231
10741071
Height = 13
1075-
Caption = 'Shortcut for invoke'
1072+
Caption = 'Shortcut for invoke (Delphi IDE restart required)'
1073+
end
1074+
object Label17: TLabel
1075+
Left = 16
1076+
Top = 443
1077+
Width = 316
1078+
Height = 13
1079+
Caption = '* Attention! This feature is in Beta and may be unstable.'
1080+
Font.Charset = DEFAULT_CHARSET
1081+
Font.Color = clWindowText
1082+
Font.Height = -11
1083+
Font.Name = 'Tahoma'
1084+
Font.Style = [fsBold]
1085+
ParentFont = False
10761086
end
10771087
object ckCodeCompletionUse: TCheckBox
10781088
Left = 16
10791089
Top = 5
1080-
Width = 97
1090+
Width = 111
10811091
Height = 17
10821092
Cursor = crHandPoint
10831093
Caption = 'Code Completion'
@@ -1096,7 +1106,7 @@ object DelphiAIDevSettingsView: TDelphiAIDevSettingsView
10961106
object ColorBoxCodeCompletionSuggestionColor: TColorBox
10971107
Left = 16
10981108
Top = 102
1099-
Width = 133
1109+
Width = 333
11001110
Height = 22
11011111
TabOrder = 2
11021112
end
@@ -1108,20 +1118,13 @@ object DelphiAIDevSettingsView: TDelphiAIDevSettingsView
11081118
Cursor = crHandPoint
11091119
Caption = 'Suggestion Code Color'
11101120
TabOrder = 3
1111-
OnClick = ckColorHighlightCodeDelphiUseClick
1121+
OnClick = ckCodeCompletionSuggestionColorUseClick
11121122
end
1113-
object hotKeyCodeCompletionShortcutInvoke: THotKey
1123+
object edtCodeCompletionShortcutInvoke: TEdit
11141124
Left = 16
1115-
Top = 154
1116-
Width = 150
1117-
Height = 19
1118-
Cursor = crArrow
1119-
Hint = 'Customize Shortcut'
1120-
HotKey = 0
1121-
InvalidKeys = [hcNone]
1122-
Modifiers = []
1123-
ParentShowHint = False
1124-
ShowHint = True
1125+
Top = 155
1126+
Width = 333
1127+
Height = 21
11251128
TabOrder = 4
11261129
end
11271130
end

Src/Settings/DelphiAIDev.Settings.View.pas

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ interface
1818
Vcl.ComCtrls,
1919
Vcl.Menus,
2020
DelphiAIDev.Settings,
21-
DelphiAIDev.Types;
21+
DelphiAIDev.Types,
22+
DelphiAIDev.Consts;
2223

2324
type
2425
TDelphiAIDevSettingsView = class(TForm)
@@ -109,10 +110,11 @@ TDelphiAIDevSettingsView = class(TForm)
109110
cBoxCodeCompletionAIDefault: TComboBox;
110111
ColorBoxCodeCompletionSuggestionColor: TColorBox;
111112
ckCodeCompletionSuggestionColorUse: TCheckBox;
112-
hotKeyCodeCompletionShortcutInvoke: THotKey;
113113
Label16: TLabel;
114114
gboxData: TGroupBox;
115115
btnOpenDataFolder: TButton;
116+
edtCodeCompletionShortcutInvoke: TEdit;
117+
Label17: TLabel;
116118
procedure FormCreate(Sender: TObject);
117119
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
118120
procedure btnCloseClick(Sender: TObject);
@@ -131,6 +133,7 @@ TDelphiAIDevSettingsView = class(TForm)
131133
procedure btnIAsOfflineClick(Sender: TObject);
132134
procedure btnCodeCompletionClick(Sender: TObject);
133135
procedure btnOpenDataFolderClick(Sender: TObject);
136+
procedure ckCodeCompletionSuggestionColorUseClick(Sender: TObject);
134137
private
135138
FSettings: TDelphiAIDevSettings;
136139
procedure SaveSettings;
@@ -142,6 +145,8 @@ TDelphiAIDevSettingsView = class(TForm)
142145
procedure FillcBoxCodeCompletionAIDefault;
143146
procedure ShowPanel(const AButton: TButton; const APanel: TPanel);
144147
procedure PanelsSetParent;
148+
procedure ValidateCodeCompletionShortcutInvoke;
149+
procedure ConfigFieldsCodeCompletionSuggestionColor;
145150
public
146151

147152
end;
@@ -289,11 +294,38 @@ procedure TDelphiAIDevSettingsView.lbRestoreDefaultsClick(Sender: TObject);
289294

290295
procedure TDelphiAIDevSettingsView.btnConfirmClick(Sender: TObject);
291296
begin
297+
Self.ValidateCodeCompletionShortcutInvoke;
298+
292299
Self.SaveSettings;
293300
Self.Close;
294301
Self.ModalResult := mrOk;
295302
end;
296303

304+
procedure TDelphiAIDevSettingsView.ValidateCodeCompletionShortcutInvoke;
305+
var
306+
LShortcutStr: string;
307+
LShortCut: TShortCut;
308+
begin
309+
LShortcutStr := Trim(edtCodeCompletionShortcutInvoke.Text);
310+
if LShortcutStr.Length = 1 then
311+
raise Exception.Create('Invalid CodeCompletion shortcut');
312+
313+
LShortCut := TextToShortCut(LShortcutStr);
314+
315+
if ShortCutToText(LShortCut).Trim.IsEmpty then
316+
edtCodeCompletionShortcutInvoke.Text := TConsts.CODE_COMPLETION_SHORTCUT_INVOKE;
317+
end;
318+
319+
procedure TDelphiAIDevSettingsView.ckCodeCompletionSuggestionColorUseClick(Sender: TObject);
320+
begin
321+
Self.ConfigFieldsCodeCompletionSuggestionColor;
322+
end;
323+
324+
procedure TDelphiAIDevSettingsView.ConfigFieldsCodeCompletionSuggestionColor;
325+
begin
326+
ColorBoxCodeCompletionSuggestionColor.Enabled := ckCodeCompletionSuggestionColorUse.Checked;
327+
end;
328+
297329
procedure TDelphiAIDevSettingsView.ckColorHighlightCodeDelphiUseClick(Sender: TObject);
298330
begin
299331
Self.ConfigFieldsColorHighlightDelphi;
@@ -317,7 +349,7 @@ procedure TDelphiAIDevSettingsView.LoadSettings;
317349
cBoxCodeCompletionAIDefault.ItemIndex := Integer(FSettings.CodeCompletionAIDefault);
318350
ckCodeCompletionSuggestionColorUse.Checked := FSettings.CodeCompletionSuggestionColorUse;
319351
ColorBoxCodeCompletionSuggestionColor.Selected := FSettings.CodeCompletionSuggestionColor;
320-
hotKeyCodeCompletionShortcutInvoke.HotKey := TextToShortCut(FSettings.CodeCompletionShortcutInvoke);
352+
edtCodeCompletionShortcutInvoke.Text := FSettings.CodeCompletionShortcutInvoke;
321353

322354
edtBaseUrlGemini.Text := FSettings.BaseUrlGemini;
323355
cBoxModelGemini.ItemIndex := cBoxModelGemini.Items.IndexOf(FSettings.ModelGemini);
@@ -356,7 +388,7 @@ procedure TDelphiAIDevSettingsView.SaveSettings;
356388
FSettings.CodeCompletionAIDefault := TC4DAiAvailable(cBoxCodeCompletionAIDefault.ItemIndex);
357389
FSettings.CodeCompletionSuggestionColorUse := ckCodeCompletionSuggestionColorUse.Checked;
358390
FSettings.CodeCompletionSuggestionColor := ColorBoxCodeCompletionSuggestionColor.Selected;
359-
FSettings.CodeCompletionShortcutInvoke := ShortCutToText(hotKeyCodeCompletionShortcutInvoke.HotKey);
391+
FSettings.CodeCompletionShortcutInvoke := edtCodeCompletionShortcutInvoke.Text;
360392

361393
FSettings.BaseUrlGemini := edtBaseUrlGemini.Text;
362394
FSettings.ModelGemini := cBoxModelGemini.Text;
@@ -374,8 +406,6 @@ procedure TDelphiAIDevSettingsView.SaveSettings;
374406
FSettings.ModelOllama := cBoxModelOllama.Text;
375407
FSettings.ApiKeyOllama := edtApiKeyOllama.Text;
376408

377-
378-
379409
FSettings.SaveData;
380410
end;
381411

0 commit comments

Comments
 (0)