1unit FeedbackDlg;
2
3{$mode objfpc}{$H+}
4
5interface
6
7uses
8  Forms, Controls, ButtonPanel, StdCtrls, ExtCtrls, Debugger, LazarusIDEStrConsts,
9  DbgIntfDebuggerBase;
10
11type
12
13  { TDbgFeedbackDlg }
14
15  TDbgFeedbackDlg = class(TForm)
16    ButtonPanel1: TButtonPanel;
17    lblMsg: TLabel;
18    Memo1: TMemo;
19    Panel1: TPanel;
20    procedure HelpButtonClick(Sender: TObject);
21  private
22    { private declarations }
23  public
24    { public declarations }
25    function Execute(const AText, AInfo: String;
26                     AType: TDBGFeedbackType; AButtons: TDBGFeedbackResults
27                    ): TDBGFeedbackResult;
28  end;
29
30var
31  DbgFeedbackDlg: TDbgFeedbackDlg;
32
33function ExecuteFeedbackDialog(const AText, AInfo: String;
34                               AType: TDBGFeedbackType; AButtons: TDBGFeedbackResults
35                              ): TDBGFeedbackResult;
36
37implementation
38
39function ExecuteFeedbackDialog(const AText, AInfo: String; AType: TDBGFeedbackType;
40  AButtons: TDBGFeedbackResults): TDBGFeedbackResult;
41var
42  ADialog: TDbgFeedbackDlg;
43begin
44  ADialog := TDbgFeedbackDlg.Create(Application);
45  try
46    Result := ADialog.Execute(AText, AInfo, AType, AButtons);
47  finally
48    ADialog.Free;
49  end;
50end;
51
52{ TDbgFeedbackDlg }
53
54procedure TDbgFeedbackDlg.HelpButtonClick(Sender: TObject);
55begin
56  AutoSize := False;
57  Memo1.Visible := not Memo1.Visible;
58  if Memo1.Visible then
59    ButtonPanel1.HelpButton.Caption := lisLess
60  else
61    ButtonPanel1.HelpButton.Caption := lisMore;
62  AutoSize := True;
63end;
64
65function TDbgFeedbackDlg.Execute(const AText, AInfo: String; AType: TDBGFeedbackType;
66  AButtons: TDBGFeedbackResults): TDBGFeedbackResult;
67begin
68  case AType of
69    ftInformation: begin
70        Caption := lisDebuggerFeedbackInformation;
71      end;
72    ftWarning: begin
73        Caption := lisDebuggerFeedbackWarning;
74      end;
75    ftError: begin
76        Caption := lisDebuggerFeedbackError;
77      end;
78  end;
79  lblMsg.Caption := AText;
80  memo1.Text := AInfo;
81  memo1.Visible := False;
82  if AInfo <> '' then begin
83    ButtonPanel1.HelpButton.Caption := lisMore;
84    ButtonPanel1.HelpButton.Visible := True;
85  end
86  else begin
87    ButtonPanel1.HelpButton.Visible := False;
88  end;
89
90  ButtonPanel1.OKButton.Visible := frOk in AButtons;
91  ButtonPanel1.CancelButton.Visible := frStop in AButtons;
92
93  ButtonPanel1.OKButton.Caption := lisMenuOk;
94  ButtonPanel1.CancelButton.Caption := lisStop;
95
96  case ShowModal of
97    mrOk: Result := frOk;
98    else {mrCancel:} Result := frStop;
99  end;
100end;
101
102{$R *.lfm}
103
104end.
105
106