xtool/Unit1.pas

222 lines
5.8 KiB
ObjectPascal

unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, System.Math, System.StrUtils,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.TabControl,
FMX.Layouts, FMX.ListBox, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Edit,
FMX.EditBox, FMX.SpinBox, FMX.Menus;
type
TForm1 = class(TForm)
StyleBook1: TStyleBook;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
Layout4: TLayout;
Button1: TButton;
GroupBox1: TGroupBox;
ComboBox2: TComboBox;
Edit1: TEdit;
SearchEditButton1: TSearchEditButton;
Layout1: TLayout;
GroupBox2: TGroupBox;
Layout3: TLayout;
VertScrollBox1: TVertScrollBox;
GroupBox3: TGroupBox;
Layout7: TLayout;
Edit3: TEdit;
SearchEditButton3: TSearchEditButton;
ComboBox3: TComboBox;
Label1: TLabel;
SpinBox1: TSpinBox;
Label2: TLabel;
SpinBox2: TSpinBox;
CheckBox1: TCheckBox;
Layout2: TLayout;
Label3: TLabel;
SpinBox3: TSpinBox;
GroupBox4: TGroupBox;
Layout6: TLayout;
GroupBox5: TGroupBox;
Layout8: TLayout;
Label7: TLabel;
SpinBox7: TSpinBox;
CheckBox5: TCheckBox;
CheckBox3: TCheckBox;
Label4: TLabel;
SpinBox4: TSpinBox;
CheckBox4: TCheckBox;
PopupMenu1: TPopupMenu;
MenuItem1: TMenuItem;
GroupBox6: TGroupBox;
Layout5: TLayout;
Edit2: TEdit;
Button2: TButton;
GroupBox7: TGroupBox;
Layout9: TLayout;
Edit4: TEdit;
SearchEditButton2: TSearchEditButton;
ComboBox1: TComboBox;
CheckBox2: TCheckBox;
CheckBox6: TCheckBox;
GroupBox8: TGroupBox;
Layout10: TLayout;
Edit5: TEdit;
SearchEditButton4: TSearchEditButton;
ComboBox4: TComboBox;
procedure FormShow(Sender: TObject);
procedure SearchEditButton1Click(Sender: TObject);
procedure SearchEditButton3Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure SearchEditButton2Click(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure SearchEditButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
CmdStr: TArray<String>;
implementation
{$R *.fmx}
uses
Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(CmdStr, 0);
Insert(ParamStr(0), CmdStr, Length(CmdStr));
Insert('precomp', CmdStr, Length(CmdStr));
Insert('-c' + SpinBox1.Text + 'mb', CmdStr, Length(CmdStr));
Insert('-t' + SpinBox2.Text, CmdStr, Length(CmdStr));
if CheckBox1.IsChecked then
Insert('-lm', CmdStr, Length(CmdStr));
Insert('-d' + SpinBox3.Text, CmdStr, Length(CmdStr));
if CheckBox2.IsChecked then
Insert('-s', CmdStr, Length(CmdStr));
if CheckBox6.IsChecked then
Insert('-v', CmdStr, Length(CmdStr));
Insert('-m' + Edit2.Text, CmdStr, Length(CmdStr));
if ComboBox1.ItemIndex = 1 then
Insert('-db', CmdStr, Length(CmdStr))
else if ComboBox1.ItemIndex > 1 then
Insert('-db' + Edit4.Text, CmdStr, Length(CmdStr));
if CheckBox3.IsChecked then
Insert('-dd' + IfThen(SpinBox4.Enabled, SpinBox4.Text, ''), CmdStr,
Length(CmdStr));
if CheckBox4.IsChecked then
Insert('--compress=' + 't' + SpinBox2.Text + ':l' + SpinBox7.Text + ':hi' +
IfThen(CheckBox5.IsChecked, '1', '0'), CmdStr, Length(CmdStr));
Insert(Edit1.Text, CmdStr, Length(CmdStr));
if ComboBox3.ItemIndex = 0 then
Insert(Edit3.Text, CmdStr, Length(CmdStr));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Left := Form1.Left + (Form1.Width div 2) - (Form2.Width div 2);
Form2.Top := Form1.Top + (Form1.Height div 2) - (Form2.Height div 2);
Form2.ShowModal;
Form2.Close;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Edit4.Enabled := ComboBox1.ItemIndex in [2, 3];
Edit4.Text := '';
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
SearchEditButton1.Enabled := ComboBox2.ItemIndex <> 2;
Edit1.ReadOnly := ComboBox2.ItemIndex <> 2;
if ComboBox2.ItemIndex = 2 then
Edit1.Text := 'http://mattmahoney.net/dc/silesia.zip'
else
Edit1.Text := '';
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
Edit3.Enabled := ComboBox3.ItemIndex <> 1;
end;
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
Edit5.Enabled := ComboBox4.ItemIndex > 0;
Edit5.Text := '';
end;
procedure TForm1.FormShow(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
if Components[I] is TSpinBox then
TSpinBox(Components[I]).Cursor := crDefault;
SpinBox2.Max := CPUCount * 2;
SpinBox2.Value := Max(1, CPUCount div 2);
end;
procedure TForm1.SearchEditButton1Click(Sender: TObject);
var
Dir: string;
begin
case ComboBox2.ItemIndex of
0:
begin
OpenDialog1.FileName := '';
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
end;
1:
if SelectDirectory('', '', Dir) then
Edit1.Text := Dir;
end;
end;
procedure TForm1.SearchEditButton2Click(Sender: TObject);
begin
if ComboBox1.ItemIndex = 2 then
begin
SaveDialog1.FileName := '';
if SaveDialog1.Execute then
Edit4.Text := SaveDialog1.FileName;
end
else if ComboBox1.ItemIndex = 3 then
begin
OpenDialog1.FileName := '';
if OpenDialog1.Execute then
Edit4.Text := OpenDialog1.FileName;
end;
end;
procedure TForm1.SearchEditButton3Click(Sender: TObject);
begin
SaveDialog1.FileName := '';
if SaveDialog1.Execute then
Edit3.Text := SaveDialog1.FileName;
end;
procedure TForm1.SearchEditButton4Click(Sender: TObject);
var
Dir: string;
begin
if SelectDirectory('', '', Dir) then
Edit5.Text := Dir;
end;
end.