Fixed: filter configuration dialog
This commit is contained in:
parent
8faa61f358
commit
bf9df045af
Binary file not shown.
@ -53,6 +53,8 @@ contains
|
||||
CmpSwObjects in '..\..\Source\CmpSwObjects.pas',
|
||||
CmpSwFilters in '..\..\Source\CmpSwFilters.pas',
|
||||
CmpSwSettings in '..\..\Source\CmpSwSettings.pas',
|
||||
BaseSwSettings in '..\..\Source\BaseSwSettings.pas';
|
||||
BaseSwSettings in '..\..\Source\BaseSwSettings.pas',
|
||||
CmpSwConfiguration in '..\..\Source\CmpSwConfiguration.pas' {frmCmpSwConfiguration},
|
||||
CmpSwFilterConfiguration in '..\..\Source\CmpSwFilterConfiguration.pas' {frmCmpSwFilterConfiguration};
|
||||
|
||||
end.
|
||||
|
BIN
Resources/FilterAdd.ico
Normal file
BIN
Resources/FilterAdd.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/FilterDelete.ico
Normal file
BIN
Resources/FilterDelete.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/FilterEdit.ico
Normal file
BIN
Resources/FilterEdit.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
@ -28,68 +28,66 @@ object frmCmpSwConfiguration: TfrmCmpSwConfiguration
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
TabOrder = 0
|
||||
object tsGeneral: TTabSheet
|
||||
BorderWidth = 8
|
||||
Caption = 'Filters'
|
||||
ExplicitLeft = 0
|
||||
ExplicitTop = 0
|
||||
ExplicitWidth = 0
|
||||
ExplicitHeight = 0
|
||||
DesignSize = (
|
||||
312
|
||||
354)
|
||||
object btnDefault: TButton
|
||||
Left = 4
|
||||
Top = 323
|
||||
Width = 109
|
||||
Height = 25
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'Reset to &default'
|
||||
TabOrder = 0
|
||||
OnClick = btnDefaultClick
|
||||
end
|
||||
296
|
||||
338)
|
||||
object chkAllowEmptyResults: TCheckBox
|
||||
Left = 4
|
||||
Top = 292
|
||||
Left = 0
|
||||
Top = 320
|
||||
Width = 273
|
||||
Height = 17
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'Allow e&mpty results'
|
||||
TabOrder = 1
|
||||
TabOrder = 2
|
||||
end
|
||||
object lbFilters: TListBox
|
||||
Left = 4
|
||||
Top = 4
|
||||
Width = 301
|
||||
Height = 233
|
||||
Left = 0
|
||||
Top = 29
|
||||
Width = 296
|
||||
Height = 280
|
||||
Style = lbVirtual
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
Align = alTop
|
||||
ItemHeight = 16
|
||||
TabOrder = 2
|
||||
TabOrder = 1
|
||||
OnClick = lbFiltersClick
|
||||
OnData = lbFiltersData
|
||||
OnDataObject = lbFiltersDataObject
|
||||
OnDblClick = lbFiltersDblClick
|
||||
ExplicitLeft = 5
|
||||
ExplicitTop = 34
|
||||
end
|
||||
object btnAdd: TButton
|
||||
Left = 4
|
||||
Top = 243
|
||||
Width = 97
|
||||
Height = 25
|
||||
Action = actAdd
|
||||
Anchors = [akLeft, akBottom]
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnEdit: TButton
|
||||
Left = 108
|
||||
Top = 243
|
||||
Width = 97
|
||||
Height = 25
|
||||
Action = actEdit
|
||||
Anchors = [akLeft, akBottom]
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnRemove: TButton
|
||||
Left = 212
|
||||
Top = 243
|
||||
Width = 93
|
||||
Height = 25
|
||||
Action = actRemove
|
||||
Anchors = [akLeft, akBottom]
|
||||
TabOrder = 5
|
||||
object tbFilters: TToolBar
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 296
|
||||
Height = 29
|
||||
ButtonWidth = 73
|
||||
Caption = 'tbFilters'
|
||||
Images = ilsFilters
|
||||
List = True
|
||||
ShowCaptions = True
|
||||
TabOrder = 0
|
||||
object tbFilterAdd: TToolButton
|
||||
Left = 0
|
||||
Top = 0
|
||||
Action = actAdd
|
||||
end
|
||||
object tbFilterEdit: TToolButton
|
||||
Left = 73
|
||||
Top = 0
|
||||
Action = actEdit
|
||||
end
|
||||
object tbFilterRemove: TToolButton
|
||||
Left = 146
|
||||
Top = 0
|
||||
Action = actRemove
|
||||
end
|
||||
end
|
||||
end
|
||||
object tsAbout: TTabSheet
|
||||
@ -209,27 +207,184 @@ object frmCmpSwConfiguration: TfrmCmpSwConfiguration
|
||||
ModalResult = 1
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnDefault: TButton
|
||||
Left = 4
|
||||
Top = 392
|
||||
Width = 109
|
||||
Height = 25
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'Reset to &default'
|
||||
TabOrder = 3
|
||||
OnClick = btnDefaultClick
|
||||
end
|
||||
object dlgColor: TColorDialog
|
||||
Options = [cdFullOpen]
|
||||
Left = 24
|
||||
Top = 364
|
||||
end
|
||||
object alMain: TActionList
|
||||
Images = ilsFilters
|
||||
Left = 96
|
||||
Top = 364
|
||||
object actAdd: TAction
|
||||
Caption = '&Add...'
|
||||
ImageIndex = 0
|
||||
OnExecute = actAddExecute
|
||||
end
|
||||
object actEdit: TAction
|
||||
Caption = '&Edit...'
|
||||
Enabled = False
|
||||
ImageIndex = 1
|
||||
OnExecute = actEditExecute
|
||||
end
|
||||
object actRemove: TAction
|
||||
Caption = '&Remove'
|
||||
Enabled = False
|
||||
ImageIndex = 2
|
||||
OnExecute = actRemoveExecute
|
||||
end
|
||||
end
|
||||
object ilsFilters: TImageList
|
||||
Left = 164
|
||||
Top = 364
|
||||
Bitmap = {
|
||||
494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
0000000000003600000028000000400000001000000001002000000000000010
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000007F7F7F0074747400BABABA00007500000070
|
||||
0000006D00000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000007B7C8200888592009AAD9D00A1A1A100000000000000
|
||||
00000000000000000000000000000000000000000000383ABC000712AC006C6C
|
||||
A900000000002526AD002629BB00ADADCA008080800070707000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000A3A3A300ECECEC00D5D5D500D6D6D600007D000044DD
|
||||
7700007200000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000009BB2C70034B356002CB44400579E5D00000000000000
|
||||
000000000000000000000000000000000000000000001F20AC002C72FF001332
|
||||
D2001B30BF00174EFF00155CFF003539C500D4D4D40063636300000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000009D9D9D00E9E9E90000870000008500000081000048E1
|
||||
7B00007A00000075000000700000000000000000000000000000000000000000
|
||||
000000000000000000008BC6A00066FF98005AEC86002EAD4500619E66000000
|
||||
000000000000000000000000000000000000000000006D6DB6001023C3002C67
|
||||
FF00255DFF00205BFF00141FBA00D7D8EC00A6A6A60062626200000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000009E9E9E00E6E6E600008D00005EF791005AF38D0053EC
|
||||
860048E17B0045DE780000780000000000000000000000000000000000000000
|
||||
00000000000000000000C4D6C90055E17D006AFF9D0055E17D0028A23B0071A0
|
||||
75000000000000000000000000000000000000000000000000008B8BB2001022
|
||||
BF002D66FF001C49F4006D6DC100E7E7E7009191910060606000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000008E8E8E00E2E2E20000910000008D0000008B00005AF3
|
||||
8D000083000000810000007D0000000000000000000000000000000000000000
|
||||
00000000000000000000A1A1A100B5DDC10053EC81006AFF9D0050DC7700229B
|
||||
35000000000000000000000000000000000000000000000000001E1E9F003F7D
|
||||
FF001A3DDB002961FF001122C300C4C5D900929292005C5C5C00000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000A1A1A100F5F5F500E9E9E900E0E0E000DBDBDB00008F00005EF7
|
||||
910000890000D2D2D20000000000000000000000000000000000000000000000
|
||||
000000000000A1A1A100F5F5F500E1E1E1009DE0B20059F6880064FF970042DA
|
||||
69002F823A0000000000000000000000000000000000000000001119BC00396D
|
||||
FF007E7EC7003335B0002B6DFF00282BBE00D9D9D90073737300666666000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00009F9F9F00F6F6F600DCDCDC00D0D0D000B1B1B100D1D1D100009300000091
|
||||
0000008D00000000000000000000000000000000000000000000000000000000
|
||||
00009D9D9D00F5F5F500DCDCDC00D1D1D100D1D1D10079D7950055FC88009AC1
|
||||
A400CDBBB6006969880000000000000000000000000000000000000000003B3B
|
||||
BC00D5D5D500D3D3ED003232BD00BBBBEA00CACACA0084848400646464007676
|
||||
7600000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A5A5
|
||||
A500F7F7F700EEEEEE00DBDBDB00D4D4D400B9B9B900D6D6D600D6D6D600CFCF
|
||||
CF00A2A2A200000000000000000000000000000000000000000000000000A1A1
|
||||
A100F8F8F800F5F5F500DCDCDC00D1D1D100BCBBBA00C4C5C5009AC1A400F8F8
|
||||
F8007892F500203DDC00292AA10000000000000000000000000000000000D1D1
|
||||
D100F7F7F700F0F0F000EEEEEE00E2E2E200B9B9B90091919100727272005B5B
|
||||
5B008A8A8A000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000E8E8
|
||||
E800E3E3E300B7B7B700A1A1A1009E9E9E009898980086868600666666005151
|
||||
51004A4A4A00000000000000000000000000000000000000000000000000E8E8
|
||||
E800E1E1E100B7B7B7009D9D9D00A1A1A1009D9D9D008B8B8B00BCBBBA008290
|
||||
D5004277FF002D4AD8001F209F0000000000000000000000000000000000E8E8
|
||||
E800E3E3E300B7B7B700A2A2A2009E9E9E009898980086868600666666005151
|
||||
51004A4A4A000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000A1A1A1006B6B
|
||||
6B00575757006D6D6D0097979700C3C3C300E0E0E000F6F6F600FFFFFF00FAFA
|
||||
FA00AEAEAE005757570000000000000000000000000000000000A1A1A1006A6A
|
||||
6A00575757006A6A6A009D9D9D00C4C5C500DCDCDC00F5F5F500F8F8F800D9DC
|
||||
F7003546C6002C31A800B2B2C800000000000000000000000000A1A1A1006B6B
|
||||
6B00575757006D6D6D0097979700C3C3C300E0E0E000F6F6F600FFFFFF00FAFA
|
||||
FA00AEAEAE005757570000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000095959500303030004D4D
|
||||
4D006969690085858500A2A2A200C3C3C300D4D4D400E5E5E500F2F2F200FFFF
|
||||
FF00FFFFFF00FFFFFF0079797900000000000000000096969600303030004D4D
|
||||
4D006A6A6A0085858500A1A1A100C4C5C500D1D1D100E1E1E100F8F8F800F8F8
|
||||
F800F8F8F800F8F8F80085858500000000000000000095959500303030004D4D
|
||||
4D006969690085858500A2A2A200C3C3C300D4D4D400E5E5E500F2F2F200FFFF
|
||||
FF00FFFFFF00FFFFFF0079797900000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000008B8B8B003C3C3C005E5E
|
||||
5E00777777008E8E8E00A7A7A700C5C5C500D3D3D300E1E1E100ECECEC00F8F8
|
||||
F800FFFFFF00FFFFFF008D8D8D0000000000000000008B8B8B003C3C3C005757
|
||||
5700797979008B8B8B00A6A6A600C4C5C500D1D1D100E1E1E100E8E8E800F8F8
|
||||
F800F8F8F800F8F8F8009696960000000000000000008B8B8B003C3C3C005E5E
|
||||
5E00777777008E8E8E00A7A7A700C5C5C500D3D3D300E1E1E100ECECEC00F8F8
|
||||
F800FFFFFF00FFFFFF008D8D8D00000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000ABABAB007A7A
|
||||
7A007878780093939300ADADAD00C9C9C900D7D7D700E7E7E700F5F5F500FFFF
|
||||
FF00F2F2F2009D9D9D0000000000000000000000000000000000ACACAC007979
|
||||
79007979790096969600ACACAC00C9C9C900DCDCDC00E8E8E800F8F8F800F8F8
|
||||
F800F8F8F8009D9D9D0000000000000000000000000000000000ABABAB007A7A
|
||||
7A007878780093939300ADADAD00C9C9C900D7D7D700E7E7E700F5F5F500FFFF
|
||||
FF00F2F2F2009D9D9D0000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000B2B2B200A8A8A800A9A9A900ACACAC00AAAAAA00A8A8A8009D9D9D008C8C
|
||||
8C00000000000000000000000000000000000000000000000000000000000000
|
||||
0000B7B7B700A1A1A100ACACAC00ACACAC00ACACAC00A1A1A100A1A1A1008B8B
|
||||
8B00000000000000000000000000000000000000000000000000000000000000
|
||||
0000B2B2B200A8A8A800A9A9A900ACACAC00AAAAAA00A8A8A8009D9D9D008C8C
|
||||
8C00000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000424D3E000000000000003E000000
|
||||
2800000040000000100000000100010000000000800000000000000000000000
|
||||
000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FE07FC3F883F0000
|
||||
FC07FC3F803F0000FC01FC1F803F0000FC01FC0FC03F0000FC01FC0FC03F0000
|
||||
F803F807C01F0000F007F003E00F0000E007E001E0070000E007E001E0070000
|
||||
C003C001C003000080018001800100008001800180010000C003C003C0030000
|
||||
F00FF00FF00F0000FFFFFFFFFFFF000000000000000000000000000000000000
|
||||
000000000000}
|
||||
end
|
||||
end
|
||||
|
@ -16,7 +16,12 @@ uses
|
||||
ExtCtrls,
|
||||
Forms,
|
||||
Graphics,
|
||||
StdCtrls;
|
||||
ImgList,
|
||||
StdCtrls,
|
||||
ToolWin,
|
||||
|
||||
CmpSwFilters;
|
||||
|
||||
|
||||
type
|
||||
TfrmCmpSwConfiguration = class(TForm)
|
||||
@ -24,19 +29,21 @@ type
|
||||
actEdit: TAction;
|
||||
actRemove: TAction;
|
||||
alMain: TActionList;
|
||||
btnAdd: TButton;
|
||||
btnCancel: TButton;
|
||||
btnDefault: TButton;
|
||||
btnEdit: TButton;
|
||||
btnOk: TButton;
|
||||
btnRemove: TButton;
|
||||
chkAllowEmptyResults: TCheckBox;
|
||||
dlgColor: TColorDialog;
|
||||
ilsFilters: TImageList;
|
||||
imgAbout: TImage;
|
||||
lbFilters: TListBox;
|
||||
lblBugReport: TLabel;
|
||||
lblVersion: TLabel;
|
||||
pcConfiguration: TPageControl;
|
||||
tbFilterAdd: TToolButton;
|
||||
tbFilterEdit: TToolButton;
|
||||
tbFilterRemove: TToolButton;
|
||||
tbFilters: TToolBar;
|
||||
tsAbout: TTabSheet;
|
||||
tsGeneral: TTabSheet;
|
||||
|
||||
@ -48,6 +55,7 @@ type
|
||||
procedure lbFiltersClick(Sender: TObject);
|
||||
procedure lbFiltersData(Control: TWinControl; Index: Integer; var Data: String);
|
||||
procedure lbFiltersDataObject(Control: TWinControl; Index: Integer; var DataObject: TObject);
|
||||
procedure lbFiltersDblClick(Sender: TObject);
|
||||
private
|
||||
function InternalExecute(): Boolean;
|
||||
|
||||
@ -55,6 +63,9 @@ type
|
||||
procedure SaveSettings();
|
||||
|
||||
procedure RefreshFilters();
|
||||
function GetSelectedGroup(): TCmpSwFilterGroup;
|
||||
|
||||
property SelectedGroup: TCmpSwFilterGroup read GetSelectedGroup;
|
||||
public
|
||||
class function Execute(): Boolean;
|
||||
end;
|
||||
@ -62,9 +73,11 @@ type
|
||||
implementation
|
||||
uses
|
||||
ShellAPI,
|
||||
SysUtils,
|
||||
Windows,
|
||||
|
||||
CmpSwSettings, CmpSwFilters;
|
||||
CmpSwFilterConfiguration,
|
||||
CmpSwSettings;
|
||||
|
||||
|
||||
{$R *.dfm}
|
||||
@ -88,7 +101,7 @@ function TfrmCmpSwConfiguration.InternalExecute(): Boolean;
|
||||
begin
|
||||
LoadSettings();
|
||||
RefreshFilters();
|
||||
|
||||
|
||||
Result := (ShowModal() = mrOk);
|
||||
if Result then
|
||||
SaveSettings();
|
||||
@ -114,6 +127,14 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TfrmCmpSwConfiguration.GetSelectedGroup(): TCmpSwFilterGroup;
|
||||
begin
|
||||
Result := nil;
|
||||
if lbFilters.ItemIndex > -1 then
|
||||
Result := TCmpSwFilterGroup(lbFilters.Items.Objects[lbFilters.ItemIndex]);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmCmpSwConfiguration.btnDefaultClick(Sender: TObject);
|
||||
begin
|
||||
if MessageBox(Self.Handle, 'Are you sure you want to revert the ' +
|
||||
@ -128,20 +149,59 @@ end;
|
||||
|
||||
|
||||
procedure TfrmCmpSwConfiguration.actAddExecute(Sender: TObject);
|
||||
var
|
||||
newGroup: TCmpSwFilterGroup;
|
||||
|
||||
begin
|
||||
//
|
||||
newGroup := TCmpSwFilterGroup.Create(nil);
|
||||
try
|
||||
if TfrmCmpSwFilterConfiguration.Execute(newGroup) then
|
||||
begin
|
||||
newGroup.Collection := Settings.Filter;
|
||||
RefreshFilters();
|
||||
end;
|
||||
finally
|
||||
if not Assigned(newGroup.Collection) then
|
||||
FreeAndNil(newGroup);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmCmpSwConfiguration.actEditExecute(Sender: TObject);
|
||||
var
|
||||
group: TCmpSwFilterGroup;
|
||||
|
||||
begin
|
||||
//
|
||||
group := SelectedGroup;
|
||||
if Assigned(group) then
|
||||
begin
|
||||
if TfrmCmpSwFilterConfiguration.Execute(group) then
|
||||
lbFilters.Invalidate();
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmCmpSwConfiguration.actRemoveExecute(Sender: TObject);
|
||||
var
|
||||
group: TCmpSwFilterGroup;
|
||||
|
||||
begin
|
||||
//
|
||||
group := SelectedGroup;
|
||||
if Assigned(group) then
|
||||
begin
|
||||
if Application.MessageBox(PChar(Format('Do you want to remove the filter "%s"?',
|
||||
[group.Name])), 'Remove',
|
||||
MB_YESNO or MB_ICONQUESTION) = ID_YES then
|
||||
begin
|
||||
lbFilters.Items.BeginUpdate();
|
||||
try
|
||||
FreeAndNil(group);
|
||||
RefreshFilters();
|
||||
finally
|
||||
lbFilters.Items.EndUpdate();
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -176,4 +236,10 @@ begin
|
||||
DataObject := Settings.Filter[Index];
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmCmpSwConfiguration.lbFiltersDblClick(Sender: TObject);
|
||||
begin
|
||||
actEdit.Execute();
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -1,41 +1,64 @@
|
||||
inherited frmCmpSwDialog: TfrmCmpSwDialog
|
||||
Width = 358
|
||||
Height = 557
|
||||
Caption = 'ComponentSwitcher'
|
||||
ClientHeight = 530
|
||||
ClientWidth = 350
|
||||
ExplicitWidth = 358
|
||||
ExplicitHeight = 557
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
inherited sbStatus: TStatusBar
|
||||
Top = 511
|
||||
Width = 350
|
||||
ExplicitTop = 511
|
||||
ExplicitWidth = 350
|
||||
end
|
||||
inherited pnlMain: TPanel
|
||||
Width = 350
|
||||
Height = 402
|
||||
ExplicitWidth = 350
|
||||
ExplicitHeight = 402
|
||||
inherited pnlSearch: TPanel
|
||||
Width = 342
|
||||
TabOrder = 1
|
||||
ExplicitWidth = 342
|
||||
inherited cmbSearch: TComboBox
|
||||
Width = 342
|
||||
ExplicitWidth = 342
|
||||
end
|
||||
end
|
||||
inherited lstItems: TListBox
|
||||
Width = 342
|
||||
Height = 349
|
||||
TabOrder = 2
|
||||
ExplicitTop = 47
|
||||
ExplicitWidth = 342
|
||||
ExplicitHeight = 349
|
||||
end
|
||||
inherited pnlSubFilters: TPanel
|
||||
Width = 342
|
||||
TabOrder = 0
|
||||
ExplicitWidth = 342
|
||||
inherited lblSubFilters: TLabel
|
||||
Width = 343
|
||||
ExplicitWidth = 343
|
||||
end
|
||||
end
|
||||
end
|
||||
inherited pnlButtons: TPanel
|
||||
Top = 475
|
||||
Width = 350
|
||||
TabOrder = 2
|
||||
ExplicitTop = 477
|
||||
ExplicitWidth = 350
|
||||
inherited btnCancel: TButton
|
||||
Left = 271
|
||||
TabOrder = 2
|
||||
ExplicitLeft = 271
|
||||
end
|
||||
inherited btnOK: TButton
|
||||
Left = 190
|
||||
TabOrder = 1
|
||||
ExplicitLeft = 190
|
||||
end
|
||||
object btnConfiguration: TButton
|
||||
Left = 4
|
||||
@ -43,7 +66,7 @@ inherited frmCmpSwDialog: TfrmCmpSwDialog
|
||||
Width = 85
|
||||
Height = 25
|
||||
Caption = '&Configuration'
|
||||
TabOrder = 2
|
||||
TabOrder = 0
|
||||
OnClick = btnConfigurationClick
|
||||
end
|
||||
end
|
||||
@ -55,7 +78,7 @@ inherited frmCmpSwDialog: TfrmCmpSwDialog
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
BorderWidth = 4
|
||||
TabOrder = 3
|
||||
TabOrder = 1
|
||||
object gbFilters: TGroupBox
|
||||
Left = 4
|
||||
Top = 4
|
||||
|
@ -27,7 +27,7 @@ type
|
||||
FImageMap: TStringHash;
|
||||
protected
|
||||
procedure VisitItem(const AItem: TBaseSwItem); override;
|
||||
|
||||
|
||||
function GetComponentPackage(const AClassName: String): String;
|
||||
function LoadComponentImage(const APackageName, AClassName: String): Integer;
|
||||
procedure ResizeBitmap(const ABitmap: Graphics.TBitmap; const AWidth, AHeight: Integer);
|
||||
@ -311,9 +311,6 @@ var
|
||||
itemIndex: Integer;
|
||||
|
||||
begin
|
||||
pnlFilters.Visible := (ClassFilter.Groups.Count > 0);
|
||||
|
||||
|
||||
{ Update / extend the menu }
|
||||
itemIndex := 0;
|
||||
for groupIndex := 0 to Pred(ClassFilter.Groups.Count) do
|
||||
@ -388,7 +385,7 @@ begin
|
||||
begin
|
||||
group := ClassFilter.Groups[groupIndex];
|
||||
|
||||
if group.Visible then
|
||||
if group.Visible then
|
||||
begin
|
||||
checkBox := TCheckBox.Create(Self);
|
||||
checkBox.Top := checkBoxTop;
|
||||
@ -397,13 +394,19 @@ begin
|
||||
checkBox.Checked := not group.Enabled;
|
||||
checkBox.Tag := Integer(group);
|
||||
checkBox.OnClick := FilterCheckBoxClick;
|
||||
checkBox.Width := gbFilters.ClientWidth - 24;
|
||||
checkBox.Anchors := [akLeft, akTop, akRight];
|
||||
checkBox.Parent := gbFilters;
|
||||
|
||||
Inc(checkBoxTop, 20);
|
||||
end;
|
||||
end;
|
||||
|
||||
btnMoreFilters.BringToFront();
|
||||
|
||||
pnlFilters.Height := (2 * pnlFilters.BorderWidth) + checkBoxTop + 11;
|
||||
pnlButtons.Top := pnlFilters.Top + pnlFilters.Height;
|
||||
sbStatus.Top := MaxInt;
|
||||
end;
|
||||
|
||||
|
||||
|
@ -5,8 +5,8 @@ object frmCmpSwFilterConfiguration: TfrmCmpSwFilterConfiguration
|
||||
BorderStyle = bsDialog
|
||||
BorderWidth = 8
|
||||
Caption = 'Filter'
|
||||
ClientHeight = 343
|
||||
ClientWidth = 345
|
||||
ClientHeight = 477
|
||||
ClientWidth = 371
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
@ -20,24 +20,124 @@ object frmCmpSwFilterConfiguration: TfrmCmpSwFilterConfiguration
|
||||
object gbMain: TGroupBox
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 345
|
||||
Height = 308
|
||||
Width = 371
|
||||
Height = 442
|
||||
Align = alClient
|
||||
TabOrder = 0
|
||||
DesignSize = (
|
||||
371
|
||||
442)
|
||||
object lblName: TLabel
|
||||
Left = 12
|
||||
Top = 20
|
||||
Width = 31
|
||||
Height = 13
|
||||
Caption = '&Name:'
|
||||
end
|
||||
object lblFilter: TLabel
|
||||
Left = 12
|
||||
Top = 48
|
||||
Width = 44
|
||||
Height = 13
|
||||
Caption = '&Matches:'
|
||||
end
|
||||
object lblHelp: TLabel
|
||||
Left = 12
|
||||
Top = 260
|
||||
Width = 25
|
||||
Height = 13
|
||||
Caption = 'Help:'
|
||||
end
|
||||
object lblHelpText: TLabel
|
||||
Left = 72
|
||||
Top = 260
|
||||
Width = 285
|
||||
Height = 41
|
||||
AutoSize = False
|
||||
Caption =
|
||||
'Enter one match per line in the '#39'Matches'#39' box. If any of the lin' +
|
||||
'es match a component class name, the filter will apply to that c' +
|
||||
'omponent.'
|
||||
WordWrap = True
|
||||
end
|
||||
object lblHelpText2: TLabel
|
||||
Left = 72
|
||||
Top = 312
|
||||
Width = 249
|
||||
Height = 45
|
||||
AutoSize = False
|
||||
Caption =
|
||||
'You may use wildcards to specify a match. For example: '#39'TId*'#39' to' +
|
||||
' match all Indy components. See Delphi'#39's TMask documentation for' +
|
||||
' more information.'
|
||||
WordWrap = True
|
||||
end
|
||||
object lblHelpText3: TLabel
|
||||
Left = 72
|
||||
Top = 368
|
||||
Width = 285
|
||||
Height = 57
|
||||
AutoSize = False
|
||||
Caption =
|
||||
#39'Match descendant classes'#39' only applies to match lines which do ' +
|
||||
'not include wildcards. For example: '#39'TIdBaseComponent'#39' with '#39'Mat' +
|
||||
'ch descendant classes'#39' will match all Indy components.'
|
||||
WordWrap = True
|
||||
end
|
||||
object bvlHelp: TBevel
|
||||
Left = 12
|
||||
Top = 248
|
||||
Width = 349
|
||||
Height = 13
|
||||
Shape = bsTopLine
|
||||
end
|
||||
object chkIncludeDescendants: TCheckBox
|
||||
Left = 72
|
||||
Top = 196
|
||||
Width = 161
|
||||
Height = 17
|
||||
Caption = 'Match &descendant classes'
|
||||
TabOrder = 2
|
||||
end
|
||||
object edtName: TEdit
|
||||
Left = 72
|
||||
Top = 16
|
||||
Width = 289
|
||||
Height = 21
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
TabOrder = 0
|
||||
end
|
||||
object mmoFilter: TMemo
|
||||
Left = 72
|
||||
Top = 44
|
||||
Width = 289
|
||||
Height = 145
|
||||
ScrollBars = ssVertical
|
||||
TabOrder = 1
|
||||
WordWrap = False
|
||||
end
|
||||
object chkVisible: TCheckBox
|
||||
Left = 72
|
||||
Top = 220
|
||||
Width = 129
|
||||
Height = 17
|
||||
Caption = 'Show as &checkbox'
|
||||
TabOrder = 3
|
||||
end
|
||||
end
|
||||
object pnlButtons: TPanel
|
||||
Left = 0
|
||||
Top = 308
|
||||
Width = 345
|
||||
Top = 442
|
||||
Width = 371
|
||||
Height = 35
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
TabOrder = 1
|
||||
DesignSize = (
|
||||
345
|
||||
371
|
||||
35)
|
||||
object btnOk: TButton
|
||||
Left = 189
|
||||
Left = 215
|
||||
Top = 10
|
||||
Width = 75
|
||||
Height = 25
|
||||
@ -48,7 +148,7 @@ object frmCmpSwFilterConfiguration: TfrmCmpSwFilterConfiguration
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 270
|
||||
Left = 296
|
||||
Top = 10
|
||||
Width = 75
|
||||
Height = 25
|
||||
|
@ -19,10 +19,21 @@ uses
|
||||
|
||||
type
|
||||
TfrmCmpSwFilterConfiguration = class(TForm)
|
||||
gbMain: TGroupBox;
|
||||
pnlButtons: TPanel;
|
||||
btnOk: TButton;
|
||||
btnCancel: TButton;
|
||||
btnCancel: TButton;
|
||||
btnOk: TButton;
|
||||
bvlHelp: TBevel;
|
||||
chkIncludeDescendants: TCheckBox;
|
||||
chkVisible: TCheckBox;
|
||||
edtName: TEdit;
|
||||
gbMain: TGroupBox;
|
||||
lblFilter: TLabel;
|
||||
lblHelp: TLabel;
|
||||
lblHelpText: TLabel;
|
||||
lblHelpText2: TLabel;
|
||||
lblHelpText3: TLabel;
|
||||
lblName: TLabel;
|
||||
mmoFilter: TMemo;
|
||||
pnlButtons: TPanel;
|
||||
protected
|
||||
function InternalExecute(AGroup: TCmpSwFilterGroup): Boolean;
|
||||
public
|
||||
@ -50,7 +61,20 @@ end;
|
||||
|
||||
function TfrmCmpSwFilterConfiguration.InternalExecute(AGroup: TCmpSwFilterGroup): Boolean;
|
||||
begin
|
||||
edtName.Text := AGroup.Name;
|
||||
chkIncludeDescendants.Checked := AGroup.IncludeDescendants;
|
||||
chkVisible.Checked := AGroup.Visible;
|
||||
mmoFilter.Lines.Assign(AGroup.Filter);
|
||||
|
||||
Result := (ShowModal() = mrOk);
|
||||
|
||||
if Result then
|
||||
begin
|
||||
AGroup.Name := edtName.Text;
|
||||
AGroup.IncludeDescendants := chkIncludeDescendants.Checked;
|
||||
AGroup.Visible := chkVisible.Checked;
|
||||
AGroup.Filter.Assign(mmoFilter.Lines);
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -95,7 +95,7 @@ begin
|
||||
FFilter := TStringList.Create();
|
||||
TStringList(FFilter).OnChange := FilterChange;
|
||||
|
||||
FEnabled := True;
|
||||
FEnabled := False;
|
||||
FVisible := False;
|
||||
end;
|
||||
|
||||
@ -181,14 +181,20 @@ begin
|
||||
|
||||
for filterIndex := Pred(Filter.Count) downto 0 do
|
||||
begin
|
||||
if ContainsMask(Filter[filterIndex]) then
|
||||
if Length(Trim(Filter[filterIndex])) = 0 then
|
||||
begin
|
||||
mask := TMask.Create(Filter[filterIndex]);
|
||||
|
||||
FilterMasks.Add(mask);
|
||||
Filter.Objects[filterIndex] := mask;
|
||||
Filter.Delete(filterIndex);
|
||||
end else
|
||||
Filter.Objects[filterIndex] := nil;
|
||||
begin
|
||||
if ContainsMask(Filter[filterIndex]) then
|
||||
begin
|
||||
mask := TMask.Create(Filter[filterIndex]);
|
||||
|
||||
FilterMasks.Add(mask);
|
||||
Filter.Objects[filterIndex] := mask;
|
||||
end else
|
||||
Filter.Objects[filterIndex] := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
FFilterChanged := False;
|
||||
|
@ -347,9 +347,23 @@ var
|
||||
|
||||
begin
|
||||
AGroup.Name := ARegistry.ReadString('Name');
|
||||
AGroup.Enabled := ARegistry.ReadBool('Enabled');
|
||||
AGroup.IncludeDescendants := ARegistry.ReadBool('IncludeDescendants');
|
||||
AGroup.Visible := ARegistry.ReadBool('Visible');
|
||||
|
||||
|
||||
if ARegistry.ValueExists('Enabled') then
|
||||
AGroup.Enabled := ARegistry.ReadBool('Enabled')
|
||||
else
|
||||
AGroup.Enabled := False;
|
||||
|
||||
if ARegistry.ValueExists('IncludeDescendants') then
|
||||
AGroup.IncludeDescendants := ARegistry.ReadBool('IncludeDescendants')
|
||||
else
|
||||
AGroup.IncludeDescendants := False;
|
||||
|
||||
if ARegistry.ValueExists('Visible') then
|
||||
AGroup.Visible := ARegistry.ReadBool('Visible')
|
||||
else
|
||||
AGroup.Visible := False;
|
||||
|
||||
|
||||
if ARegistry.ValueExists('Filter') then
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user