mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
145 lines
4.3 KiB
ObjectPascal
145 lines
4.3 KiB
ObjectPascal
{
|
|
Double Commander
|
|
-------------------------------------------------------------------------
|
|
Content plugins search frame
|
|
|
|
Copyright (C) 2014-2016 Alexander Koblov (alexx2000@mail.ru)
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
}
|
|
|
|
unit fSearchPlugin;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, StdCtrls,
|
|
ComCtrls, Buttons, uFindFiles;
|
|
|
|
type
|
|
|
|
{ TfrmSearchPlugin }
|
|
|
|
TfrmSearchPlugin = class(TFrame)
|
|
btnDelete: TBitBtn;
|
|
btnAdd: TButton;
|
|
chkUsePlugins: TCheckBox;
|
|
HeaderControl: THeaderControl;
|
|
pnlHeader: TPanel;
|
|
pnlButtons: TPanel;
|
|
pnlTable: TScrollBox;
|
|
rbAnd: TRadioButton;
|
|
rbOr: TRadioButton;
|
|
procedure btnAddClick(Sender: TObject);
|
|
procedure btnDeleteClick(Sender: TObject);
|
|
procedure chkUsePluginsChange(Sender: TObject);
|
|
procedure pnlTableResize(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
public
|
|
procedure Save(var SearchTemplate: TSearchTemplateRec);
|
|
procedure Load(const SearchTemplate: TSearchTemplateRec);
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
uSearchContent;
|
|
|
|
{ TfrmSearchPlugin }
|
|
|
|
procedure TfrmSearchPlugin.Save(var SearchTemplate: TSearchTemplateRec);
|
|
var
|
|
I: Integer;
|
|
Plugin: TPluginPanel;
|
|
begin
|
|
SearchTemplate.ContentPlugin:= chkUsePlugins.Checked;
|
|
if not SearchTemplate.ContentPlugin then Exit;
|
|
SearchTemplate.ContentPluginCombine:= rbAnd.Checked;
|
|
SetLength(SearchTemplate.ContentPlugins, pnlTable.ControlCount);
|
|
for I:= 0 to pnlTable.ControlCount - 1 do
|
|
begin
|
|
Plugin:= TPluginPanel(pnlTable.Controls[I]);
|
|
SearchTemplate.ContentPlugins[I].Plugin:= Plugin.Plugin;
|
|
SearchTemplate.ContentPlugins[I].Field:= Plugin.Field;
|
|
SearchTemplate.ContentPlugins[I].UnitName:= Plugin.UnitName;
|
|
SearchTemplate.ContentPlugins[I].Compare:= Plugin.Compare;
|
|
SearchTemplate.ContentPlugins[I].FieldType:= Plugin.FieldType;
|
|
SearchTemplate.ContentPlugins[I].Value:= Plugin.Value;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmSearchPlugin.Load(const SearchTemplate: TSearchTemplateRec);
|
|
var
|
|
I: Integer;
|
|
Panel: TPluginPanel;
|
|
begin
|
|
chkUsePlugins.Checked:= SearchTemplate.ContentPlugin;
|
|
rbAnd.Checked:= SearchTemplate.ContentPluginCombine;
|
|
for I:= pnlTable.ControlCount - 1 downto 0 do pnlTable.Controls[I].Free;
|
|
for I:= Low(SearchTemplate.ContentPlugins) to High(SearchTemplate.ContentPlugins) do
|
|
begin
|
|
Panel:= TPluginPanel.Create(pnlTable);
|
|
Panel.Parent:= pnlTable;
|
|
Panel.Plugin:= SearchTemplate.ContentPlugins[I].Plugin;
|
|
Panel.Field:= SearchTemplate.ContentPlugins[I].Field;
|
|
Panel.UnitName:= SearchTemplate.ContentPlugins[I].UnitName;
|
|
Panel.Compare:= SearchTemplate.ContentPlugins[I].Compare;
|
|
Panel.Value:= SearchTemplate.ContentPlugins[I].Value;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmSearchPlugin.btnAddClick(Sender: TObject);
|
|
var
|
|
Panel: TPluginPanel;
|
|
begin
|
|
Panel:= TPluginPanel.Create(pnlTable);
|
|
Panel.Parent:= pnlTable;
|
|
end;
|
|
|
|
procedure TfrmSearchPlugin.btnDeleteClick(Sender: TObject);
|
|
var
|
|
Index: Integer;
|
|
begin
|
|
Index:= pnlTable.ControlCount - 1;
|
|
if Index >= 0 then pnlTable.Controls[Index].Free;
|
|
end;
|
|
|
|
procedure TfrmSearchPlugin.chkUsePluginsChange(Sender: TObject);
|
|
begin
|
|
rbAnd.Enabled:= chkUsePlugins.Checked;
|
|
rbOr.Enabled:= chkUsePlugins.Checked;
|
|
HeaderControl.Enabled:= chkUsePlugins.Checked;
|
|
pnlTable.Enabled:= chkUsePlugins.Checked;
|
|
pnlButtons.Enabled:= chkUsePlugins.Checked;
|
|
end;
|
|
|
|
procedure TfrmSearchPlugin.pnlTableResize(Sender: TObject);
|
|
var
|
|
I, ColumnWidth: Integer;
|
|
begin
|
|
ColumnWidth:= pnlTable.ClientWidth div HeaderControl.Sections.Count;
|
|
for I:= 0 to HeaderControl.Sections.Count - 1 do
|
|
begin
|
|
HeaderControl.Sections[I].Width:= ColumnWidth;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|