10000 Merge branch 'develop' · Code4Delphi/Delphi-AI-Developer@98f96b4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 98f96b4

Browse files
committed
Merge branch 'develop'
2 parents 700354e + 2e17ada commit 98f96b4

12 files changed

+399
-166
lines changed

Src/Chat/DelphiAIDev.Chat.View.dfm

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
285285
Left = 936
286286
Top = 8
287287
Width = 26
288-
Height = 95
288+
Height = 115
289289
Margins.Left = 0
290290
Margins.Top = 0
291291
Margins.Right = 0
@@ -296,12 +296,12 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
296296
TabOrder = 3
297297
DesignSize = (
298298
26
299-
95)
299+
115)
300300
object ShapeCommands: TShape
301301
Left = 0
302302
Top = 0
303303
Width = 26
304-
Height = 95
304+
Height = 115
305305
Margins.Left = 0
306306
Margins.Top = 0
307307
Margins.Right = 0
@@ -315,7 +315,7 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
315315
object btnCopy: TSpeedButton
316316
AlignWithMargins = True
317317
Left = 0
318-
Top = 23
318+
Top = 46
319319
Width = 26
320320
Height = 23
321321
Cursor = crHandPoint
@@ -354,7 +354,8 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
354354
FFFF00FFFF00FFFF00FFFF00FFB58C8CB58C8CB58C8CB58C8CB58C8CB58C8CB5
355355
8C8CBD8484FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
356356
OnClick = btnCopyClick
357-
ExplicitTop = 24
357+
ExplicitLeft = -8
358+
ExplicitTop = 55
358359
end
359360
object btnInsertAtCursor: TSpeedButton
360361
AlignWithMargins = True
@@ -389,7 +390,7 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
389390
object btnMoreActions: TSpeedButton
390391
AlignWithMargins = True
391392
Left = 0
392-
Top = 69
393+
Top = 92
393394
Width = 26
394395
Height = 23
395396
Cursor = crHandPoint
@@ -408,7 +409,7 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
408409
object btnCreateNewUnit: TSpeedButton
409410
AlignWithMargins = True
410411
Left = 0
411-
Top = 46
412+
Top = 23
412413
Width = 26
413414
Height = 23
414415
Cursor = crHandPoint
@@ -447,7 +448,41 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
447448
84FF00FFFF00FFFF00FFFF00FFFF00FF3184FF3184FF3184FFEFD6C6EFD6C6EF
448449
D6C6EFD6C6EFD6C6D6BDB5B58473FF00FFFF00FFFF00FFFF00FF}
449450
OnClick = btnCreateNewUnitClick
450-
ExplicitTop = 55
451+
end
452+
object btnCleanAll: TSpeedButton
453+
AlignWithMargins = True
454+
Left = 0
455+
Top = 69
456+
Width = 26
457+
Height = 23
458+
Cursor = crHandPoint
459+
Hint = 'Clean all and start a new chat'
460+
Margins.Left = 0
461+
Margins.Top = 0
462+
Margins.Right = 0
463+
Margins.Bottom = 0
464+
Align = alTop
465+
Flat = True
466+
Glyph.Data = {
467+
1A020000424D1A020000000000001A0100002800000010000000100000000100
468+
08000000000000010000210B0000210B00003900000039000000EA8F3100B66A
469+
5000AB735800C07B5800EAA15800FFB65800AB6A6000B67B6000C0846000A16A
470+
6A00A1736A00C0846A00A17B7300B68F7B00EAC07B00F4C07B00B68F8400EAC0
471+
8400F4C08400F4CA8400B6988F00C0988F00F4CA8F00C0A19800CAA19800B6AB
472+
9800F4CA9800F4D49800CAABA100D4ABA100D4B6A100E0B6A100EAB6A100EAC0
473+
A100F4CAA100F4D4A100FFD4A100EAC0AB00F4D4AB00E0D4B600F4D4B600F4E0
474+
B600E0C0C000E0CAC000F4E0C000E0CACA00F4E0CA00FFE0CA00FFEACA00FFEA
475+
D400FFEAE000FFF4E000FFF4EA00FFF4F400FFFFF400FF00FF00FFFFFF003737
476+
0909090909090909090909090937373710302926231A16110E0E0E1309373737
477+
10302C2826221611110E0E110937373714322E2C2826221A11110E1109373737
478+
14332E2C292823221A11110E093737371736322E2E2C2826221A111109373737
479+
183834322E2C2928261A1616093737371C383534312E2C292826221A09373737
480+
1C38383534322E2C28262323093737371D3838383532312E2C28282209373737
481+
1E3838383835323131302719093737371F383838383834342E0D0C0A09373737
482+
1F383838383838362A0204000137373725383838383838382B07050337373737
483+
1F353434343434342A070B37373737371F212121211F1F211C0637373737}
484+
OnClick = btnCleanAllClick
485+
ExplicitTop = 92
451486
end
452487
end
453488
object ImageList1: TImageList
@@ -787,10 +822,6 @@ object DelphiAIDevChatView: TDelphiAIDevChatView
787822
Caption = 'Save content to file'
788823
OnClick = SaveContentToFile1Click
789824
end
790-
object ClearContent1: TMenuItem
791-
Caption = 'Clear content'
792-
OnClick = ClearContent1Click
793-
end
794825
end
795826
object pMenuQuestions: TPopupMenu
796827
Left = 522

Src/Chat/DelphiAIDev.Chat.View.pas

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ TDelphiAIDevChatView = class(TDockableForm)
6363
pMenuMoreActions: TPopupMenu;
6464
SaveContentToFile1: TMenuItem;
6565
btnCreateNewUnit: TSpeedButton;
66-
ClearContent1: TMenuItem;
6766
Clear1: TMenuItem;
6867
N2: TMenuItem;
6968
WordWrap1: TMenuItem;
@@ -72,6 +71,7 @@ TDelphiAIDevChatView = class(TDockableForm)
7271
btnCodeOnly: TButton;
7372
btnDefaultsQuestions: TButton;
7473
pMenuQuestions: TPopupMenu;
74+
btnCleanAll: TSpeedButton;
7575
procedure FormShow(Sender: TObject);
7676
procedure cBoxSizeFontKeyPress(Sender: TObject; var Key: Char);
7777
procedure Cut1Click(Sender: TObject);
@@ -92,13 +92,13 @@ TDelphiAIDevChatView = class(TDockableForm)
9292
procedure btnMoreActionsClick(Sender: TObject);
9393
procedure SaveContentToFile1Click(Sender: TObject);
9494
procedure btnCreateNewUnitClick(Sender: TObject);
95-
procedure ClearContent1Click(Sender: TObject);
9695
procedure btnUseCurrentUnitCodeClick(Sender: TObject);
9796
procedure FormResize(Sender: TObject);
9897
procedure WordWrap1Click(Sender: TObject);
9998
procedure btnCodeOnlyClick(Sender: TObject);
10099
procedure btnDefaultsQuestionsClick(Sender: TObject);
101100
procedure Clear1Click(Sender: TObject);
101+
procedure btnCleanAllClick(Sender: TObject);
102102
private
103103
FChat: TDelphiAIDevChat;
104104
FSettings: TDelphiAIDevSettings;
@@ -127,6 +127,7 @@ TDelphiAIDevChatView = class(TDockableForm)
127127
procedure DoProcessClickInItemDefaultQuestions(ACodeOnly: Boolean; AQuestion: string);
128128
procedure ProcessWordWrap;
129129
procedure ConfScreenOnCreate;
130+
procedure ValidateRegistrationOfSelectedAI;
130131
public
131132
constructor Create(AOwner: TComponent); override;
132133
destructor Destroy; override;
@@ -192,12 +193,12 @@ constructor TDelphiAIDevChatView.Create(AOwner: TComponent);
192193
FQuestionOnShow := '';
193194

194195
Self.ConfScreenOnCreate;
195-
Self.FillMemoReturnWithFile; ////
196+
Self.FillMemoReturnWithFile;
196197
end;
197198

198199
destructor TDelphiAIDevChatView.Destroy;
199200
begin
200-
Self.SaveMemoReturnInFile; ////
201+
Self.SaveMemoReturnInFile;
201202
FPopupMenuQuestions.Free;
202203
FChat.Free;
203204
inherited;
@@ -207,11 +208,8 @@ procedure TDelphiAIDevChatView.FormShow(Sender: TObject);
207208
begin
208209
Self.ConfScreenOnShow;
209210
Self.InitializeRichEditReturn;
210-
////Self.FillMemoReturnWithFile;
211211
Self.ProcessWordWrap;
212-
213212
Self.AddIt F987 emsPopupMenuQuestion;
214-
215213
TUtils.MemoFocusOnTheEnd(mmQuestion);
216214
end;
217215

@@ -296,7 +294,6 @@ procedure TDelphiAIDevChatView.mmQuestionKeyUp(Sender: TObject; var Key: Word; S
296294

297295
procedure TDelphiAIDevChatView.FormClose(Sender: TObject; var Action: TCloseAction);
298296
begin
299-
////Self.SaveMemoReturnInFile;
300297
Self.WaitingFormOFF;
301298
end;
302299

@@ -423,6 +420,8 @@ procedure TDelphiAIDevChatView.ProcessSend;
423420
if mmQuestion.Lines.Text.Trim.IsEmpty then
424421
TUtils.ShowMsgAndAbort('No questions have been added', mmQuestion);
425422

423+
Self.ValidateRegistrationOfSelectedAI;
424+
426425
mmReturn.Lines.Clear;
427426
Self.WaitingFormON;
428427

@@ -432,7 +431,7 @@ procedure TDelphiAIDevChatView.ProcessSend;
432431
LQuestion := TUtilsOTA.GetSelectedBlockOrAllCodeUnit.Trim + sLineBreak;
433432

434433
if btnCodeOnly.ImageIndex = CodeOnly_ImageIndex_ON then
435-
LQuestion := LQuestion + 'Faça a seguinte ação sem adicionar comentários: ' + sLineBreak;
434+
LQuestion := LQuestion + FSettings.LanguageQuestions.GetMsgCodeOnly;
436435

437436
LQuestion := LQuestion + mmQuestion.Lines.Text;
438437

@@ -447,7 +446,7 @@ procedure TDelphiAIDevChatView.ProcessSend;
447446
TThread.Synchronize(nil,
448447
procedure
449448
begin
450-
Self.AddResponseSimple('Unable to perform processing.' + sLineBreak + E.Message);
449+
Self.AddResponseSimple('Unable to perform processing.' + sLineBreak + TUtils.GetExceptionMessage(E));
451450
Abort;
452451
end);
453452
end;
@@ -475,6 +474,37 @@ procedure TDelphiAIDevChatView.ProcessSend;
475474
LTask.Start;
476475
end;
477476

477+
procedure TDelphiAIDevChatView.ValidateRegistrationOfSelectedAI;
478+
const
479+
MSG = '"%s" for IA %s not specified in settings.' + sLineBreak + sLineBreak +
480+
'Access menu > AI Developer > Settings';
481+
begin
482+
case FSettings.AIDefault of
483+
TC4DAIsAvailable.Gemini:
484+
begin
485+
if FSettings.BaseUrlGemini.Trim.IsEmpty then
486+
TUtils.ShowMsgAndAbort(Format(MSG, ['Base URL', 'Gemini']));
487+
488+
if FSettings.ModelGemini.Trim.IsEmpty then
489+
TUtils.ShowMsgAndAbort(Format(MSG, ['Model', 'Gemini']));
490+
491+
if FSettings.ApiKeyGemini.Trim.IsEmpty then
492+
TUtils.ShowMsgAndAbort(Format(MSG, ['API Key', 'Gemini']));
493+
end;
494+
TC4DAIsAvailable.OpenAI:
495+
begin
496+
if FSettings.BaseUrlOpenAI.Trim.IsEmpty then
497+
TUtils.ShowMsgAndAbort(Format(MSG, ['Base URL', 'ChatGPT']));
498+
499+
if FSettings.ModelOpenAI.Trim.IsEmpty then
500+
TUtils.ShowMsgAndAbort(Format(MSG, ['Model', 'ChatGPT']));
501+
502+
if FSettings.ApiKeyOpenAI.Trim.IsEmpty then
503+
TUtils.ShowMsgAndAbort(Format(MSG, ['API Key', 'ChatGPT']));
504+
end;
505+
end;
506+
end;
507+
478508
procedure TDelphiAIDevChatView.AddResponseSimple(const AString: string);
479509
begin
480510
Self.Last;
@@ -685,19 +715,13 @@ procedure TDelphiAIDevChatView.Clear1Click(Sender: TObject);
685715
mmReturn.Lines.Clear;
686716
end;
687717

688-
procedure TDelphiAIDevChatView.ClearContent1Click(Sender: TObject);
689-
begin
690-
mmReturn.Lines.Clear;
691-
end;
692-
693718
procedure TDelphiAIDevChatView.btnMoreActionsClick(Sender: TObject);
694719
begin
695720
pMenuMoreActions.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
696721
end;
697722

698723
procedure TDelphiAIDevChatView.InitializeRichEditReturn;
699724
begin
700-
//mmReturn.Lines.Clear;
701725
mmReturn.SelAttributes.Name := 'Courier New';
702726
mmReturn.SelAttributes.Size := 10;
703727

@@ -751,6 +775,12 @@ procedure TDelphiAIDevChatView.Gemini1Click(Sender: TObject);
751775
Self.ConfLabelCurrentAI;
752776
end;
753777

778+
procedure TDelphiAIDevChatView.btnCleanAllClick(Sender: TObject);
779+
begin
780+
mmQuestion.Lines.Clear;
781+
mmReturn.Lines.Clear;
782+
end;
783+
754784
initialization
755785

756786
finalization

Src/Consts/DelphiAIDev.Consts.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ interface
55
type
66
TConsts = class
77
public const
8-
SEMANTIC_VERSION = '1.6.0';
8+
SEMANTIC_VERSION = '1.7.0';
99
SEMANTIC_VERSION_LB = 'Version: ' + SEMANTIC_VERSION;
1010
WIN_CONTROL_FOCU_NIL = nil;
1111
DELPHI_AI_DEVELOPER_DPROJ = 'DelphiAIDeveloper.dproj';

Src/DefaultsQuestions/DelphiAIDev.DefaultsQuestions.PopupMenu.pas

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ interface
1111
DelphiAIDev.Types,
1212
DelphiAIDev.DefaultsQuestions.Fields,
1313
DelphiAIDev.DefaultsQuestions.Model,
14-
DelphiAIDev.Utils.ABMenuAction;
14+
DelphiAIDev.Utils.ABMenuAction,
15+
DelphiAIDev.DefaultsQuestions.View;
1516

1617
type
1718
TDelphiAIDevDefaultsQuestionsPopupMenu = class
@@ -25,6 +26,8 @@ TDelphiAIDevDefaultsQuestionsPopupMenu = class
2526
const AFields: TDelphiAIDevDefaultsQuestionsFields): TMenuItem;
2627
procedure ItemMenuClick(Sender: TObject);
2728
procedure ClickFromString(const AStringClick: String);
29+
procedure CreateItemCustomize;
30+
procedure CustomizeClick(Sender: TObject);
2831
public
2932
function ProcessClickInItem(AProc: TProc<Boolean, string>): TDelphiAIDevDefaultsQuestionsPopupMenu;
3033
procedure CreateMenus(const APopupMenu: TPopupMenu);
@@ -52,6 +55,8 @@ procedure TDelphiAIDevDefaultsQuestionsPopupMenu.CreateMenus(const APopupMenu: T
5255
FPopupMenu := APopupMenu;
5356
FPopupMenu.Items.Clear;
5457

58+
Self.CreateItemCustomize;
59+
5560
FList.Clear;
5661

5762
TDelphiAIDevDefaultsQuestionsModel.New.ReadData(
@@ -79,7 +84,6 @@ procedure TDelphiAIDevDefaultsQuestionsPopupMenu.CreateMenus(const APopupMenu: T
7984
LFields.CodeOnly := AFields.CodeOnly;
8085

8186
FList.Add(LFields);
82-
8387
end
8488
);
8589

@@ -172,7 +176,7 @@ function TDelphiAIDevDefaultsQuestionsPopupMenu.CreateSubMenu(const AMenuItemPar
172176
else
173177
LMenuItem := TMenuItem.Create(FPopupMenu);
174178

175-
LMenuItem.Name := 'DelphiAIDevItemMenu' + TUtils.IncInt(FCont).ToString;
179+
LMenuItem.Name := 'C4DDefaultsQuestionsItemMenu' + TUtils.IncInt(FCont).ToString;
176180
LMenuItem.Caption := AFields.Caption;
177181
LMenuItem.OnClick := Self.ItemMenuClick;
178182
LMenuItem.Hint := AFields.CodeOnly.ToString(TUseBoolStrs.True)
@@ -187,6 +191,34 @@ function TDelphiAIDevDefaultsQuestionsPopupMenu.CreateSubMenu(const AMenuItemPar
187191
Result := LMenuItem;
188192
end;
189193

194+
procedure TDelphiAIDevDefaultsQuestionsPopupMenu.CreateItemCustomize;
195+
var
196+
LMenuItem: TMenuItem;
197+
begin
198+
LMenuItem := TMenuItem.Create(FPopupMenu);
199+
LMenuItem.Name := 'C4DDefaultsQuestionsCustomize1';
200+
LMenuItem.Caption := 'Customize...';
201+
LMenuItem.OnClick := Self.CustomizeClick;
202+
LMenuItem.Hint := 'Customize Questions';
203+
LMenuItem.ImageIndex := -1;
204+
FPopupMenu.Items.Add(LMenuItem);
205+
end;
206+
207+
procedure TDelphiAIDevDefaultsQuestionsPopupMenu.CustomizeClick(Sender: TObject);
208+
var
209+
LView: TDelphiAIDevDefaultsQuestionsView;
210+
begin
211+
LView := TDelphiAIDevDefaultsQuestionsView.Create(nil);
212+
try
213+
LView.ShowModal;
214+
215+
if LView.MadeChanges then
216+
Self.CreateMenus(FPopupMenu);
217+
finally
218+
FreeAndNil(LView);
219+
end;
220+
end;
221+
190222
procedure TDelphiAIDevDefaultsQuestionsPopupMenu.ItemMenuClick(Sender: TObject);
191223
var
192224
LMenuItem: TMenuItem;

Src/DefaultsQuestions/DelphiAIDev.DefaultsQuestions.View.dfm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ object DelphiAIDevDefaultsQuestionsView: TDelphiAIDevDefaultsQuestionsView
1414
KeyPreview = True
1515
OldCreateOrder = False
1616
Position = poScreenCenter
17-
OnClose = FormClose
1817
OnCreate = FormCreate
1918
OnKeyDown = FormKeyDown
2019
OnShow = FormShow

0 commit comments

Comments
 (0)
0