File: breakpropertydlggroups.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (127 lines) | stat: -rw-r--r-- 3,129 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
unit BreakPropertyDlgGroups;

{$mode objfpc}{$H+}

interface

uses
  Classes,
  // LCL
  Forms, Controls, ButtonPanel, StdCtrls, CheckLst,
  // IDE
  Debugger, LazarusIDEStrConsts;

type

  TBreakPointGroupAction = (bgaEnable, bgaDisable);

  { TBreakPointGroupDlg }

  TBreakPointGroupDlg = class(TForm)
    ButtonPanel1: TButtonPanel;
    CheckListBox1: TCheckListBox;
    Label1: TLabel;
  protected
    FBrkPointPoint: TIDEBreakPoint;
    FGroupList: TStringList;
    FAvailableGroups: TIDEBreakPointGroups;
  public
    { public declarations }
    constructor Create(ABrkPointPoint: TIDEBreakPoint;
                       AGroupList: String;
                       AAvailableGroups: TIDEBreakPointGroups;
                       AAction: TBreakPointGroupAction
                      ); reintroduce;
    destructor Destroy; override;
    function ShowModal: Integer; override;
  end; 


function ExecuteBreakPointGroupDlg(ABrkPointPoint: TIDEBreakPoint;
                               var AGroupList: String;
                               AAvailableGroups: TIDEBreakPointGroups;
                               AAction: TBreakPointGroupAction
                              ): TModalResult;


implementation

function ExecuteBreakPointGroupDlg(ABrkPointPoint: TIDEBreakPoint;
  var AGroupList: String; AAvailableGroups: TIDEBreakPointGroups;
  AAction: TBreakPointGroupAction): TModalResult;
var
  dlg: TBreakPointGroupDlg;
begin
  Result := mrAbort;
  dlg := TBreakPointGroupDlg.Create(ABrkPointPoint, AGroupList, AAvailableGroups, AAction);
  try
    Result := dlg.ShowModal;
    if Result = mrOK then
      AGroupList := dlg. FGroupList.DelimitedText;
  finally
    dlg.Free;
  end;
end;

{ TBreakPointGroupDlg }

constructor TBreakPointGroupDlg.Create(ABrkPointPoint: TIDEBreakPoint;
  AGroupList: String; AAvailableGroups: TIDEBreakPointGroups;
  AAction: TBreakPointGroupAction);
var
  g: TIDEBreakPointGroup;
  i, j: Integer;
begin
  inherited Create(nil);
  FBrkPointPoint := ABrkPointPoint;
  FAvailableGroups := AAvailableGroups;
  FGroupList := TStringList.Create;
  FGroupList.Delimiter := ';';
  FGroupList.DelimitedText := AGroupList;

  Caption := dbgBreakGroupDlgCaption;
  case AAction of
    bgaEnable:
      Label1.Caption := dbgBreakGroupDlgHeaderEnable;
    bgaDisable:
      Label1.Caption := dbgBreakGroupDlgHeaderDisable;
  end;

  for i := 0 to FAvailableGroups.Count - 1 do begin
    g := FAvailableGroups[i];
    j := CheckListBox1.Items.Add(g.Name);
    CheckListBox1.Checked[j] := FGroupList.IndexOf(g.Name) >= 0;
  end;
end;

destructor TBreakPointGroupDlg.Destroy;
begin
  inherited Destroy;
  FGroupList.Free;
end;

function TBreakPointGroupDlg.ShowModal: Integer;
var
  i, j: Integer;
  g: TIDEBreakPointGroup;
begin
  Result := inherited ShowModal;

  FGroupList.Clear;
  if Result = mrOK then begin
    for i := 0 to FAvailableGroups.Count - 1 do begin
      g := FAvailableGroups[i];
      j := CheckListBox1.Items.IndexOf(g.Name);
      if j < 0 then continue;

      if CheckListBox1.Checked[j] then begin
        FGroupList.Add(g.Name);
      end;
    end;
  end;
end;

{$R *.lfm}

end.