267 lines
7.6 KiB
ObjectPascal
267 lines
7.6 KiB
ObjectPascal
{
|
|
Apophysis Copyright (C) 2001-2004 Mark Townsend
|
|
Apophysis Copyright (C) 2005-2006 Ronald Hordijk, Piotr Borys, Peter Sdobnov
|
|
Apophysis Copyright (C) 2007-2008 Piotr Borys, Peter Sdobnov
|
|
|
|
Apophysis "3D hack" Copyright (C) 2007-2008 Peter Sdobnov
|
|
Apophysis "7X" Copyright (C) 2009-2010 Georg Kiehne
|
|
Apophysis AV "Phoenix Edition" Copyright (C) 2021-2022 Alice V. Koryagina
|
|
|
|
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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
}
|
|
unit FormFavorites;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ExtCtrls, ComCtrls, Vcl.Buttons;
|
|
|
|
type
|
|
TFavoritesForm = class(TForm)
|
|
ScriptList: TListView;
|
|
btnMoveUp: TSpeedButton;
|
|
btnMoveDown: TSpeedButton;
|
|
btnOK: TButton;
|
|
btnCancel: TButton;
|
|
btnAdd: TSpeedButton;
|
|
btnRemove: TSpeedButton;
|
|
btnSort: TSpeedButton;
|
|
btnClear: TSpeedButton;
|
|
procedure FormShow(Sender: TObject);
|
|
procedure btnOKClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure btnAddClick(Sender: TObject);
|
|
procedure btnRemoveClick(Sender: TObject);
|
|
procedure ScriptListChange(Sender: TObject; Item: TListItem;
|
|
Change: TItemChange);
|
|
procedure btnMoveUpClick(Sender: TObject);
|
|
procedure btnMoveDownClick(Sender: TObject);
|
|
procedure ScriptListInfoTip(Sender: TObject; Item: TListItem;
|
|
var InfoTip: string);
|
|
procedure btnSortClick(Sender: TObject);
|
|
procedure btnClearClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
Faves: TStringList;
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
FavoritesForm: TFavoritesForm;
|
|
|
|
implementation
|
|
|
|
uses Global, ScriptForm, Translation;
|
|
|
|
{$R *.DFM}
|
|
|
|
procedure TFavoritesForm.FormShow(Sender: TObject);
|
|
var
|
|
ListItem: TListItem;
|
|
i: integer;
|
|
s: string;
|
|
begin
|
|
Faves.Text := Favorites.Text;
|
|
ScriptList.Items.Clear;
|
|
for i := 0 to Favorites.Count - 1 do
|
|
begin
|
|
ListItem := ScriptList.Items.Add;
|
|
s := ExtractFileName(Favorites[i]);
|
|
s := Copy(s, 0, length(s) - Length(ExtractFileExt(s)));
|
|
Listitem.Caption := s;
|
|
end;
|
|
if Favorites.Count <> 0 then
|
|
ScriptList.Selected := ScriptList.Items[0];
|
|
|
|
ScriptListChange(Sender, ScriptList.Selected, ctText); // AV
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnOKClick(Sender: TObject);
|
|
begin
|
|
ModalResult := mrOK;
|
|
Faves.SaveToFile(AppPath + scriptFavsFilename);
|
|
end;
|
|
|
|
procedure TFavoritesForm.FormCreate(Sender: TObject);
|
|
begin
|
|
btnOK.Caption := TextByKey('common-ok');
|
|
btnCancel.Caption := TextByKey('common-cancel');
|
|
self.Caption := TextByKey('favscripts-title');
|
|
btnAdd.Caption := TextByKey('favscripts-add');
|
|
btnRemove.Caption := TextByKey('favscripts-remove');
|
|
btnMoveUp.Caption := TextByKey('favscripts-moveup');
|
|
btnMoveDown.Caption := TextByKey('favscripts-movedown');
|
|
btnSort.Caption := TextByKey('varorder-byname'); // AV
|
|
btnClear.Caption := TextByKey('common-clear'); // AV
|
|
|
|
Faves := TStringList.Create;
|
|
end;
|
|
|
|
procedure TFavoritesForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
Faves.Free;
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnAddClick(Sender: TObject);
|
|
var
|
|
ListItem: TListItem;
|
|
i : integer;
|
|
s: string;
|
|
begin
|
|
s := AppPath + 'Scripts';
|
|
if DirectoryExists(s) then
|
|
ScriptEditor.MainOpenDialog.InitialDir := s
|
|
else
|
|
ScriptEditor.MainOpenDialog.InitialDir := ParamFolder;
|
|
ScriptEditor.MainOpenDialog.Filter := Format('%s|*.aposcript;*.asc|%s|*.*',
|
|
[TextByKey('common-filter-scriptfiles'),
|
|
TextByKey('common-filter-allfiles')]);
|
|
if ScriptEditor.mainOpenDialog.Execute then
|
|
begin
|
|
for i := 0 to Faves.Count - 1 do
|
|
begin
|
|
if ScriptEditor.MainOpenDialog.Filename = Faves[i] then exit;
|
|
end;
|
|
|
|
Faves.add(ScriptEditor.MainOpenDialog.Filename);
|
|
ListItem := ScriptList.Items.Add;
|
|
s := ExtractFileName(ScriptEditor.MainOpenDialog.Filename);
|
|
s := Copy(s, 0, length(s) - Length(ExtractFileExt(s)));
|
|
Listitem.Caption := s;
|
|
ScriptList.Selected := ScriptList.Items[ScriptList.Items.Count - 1];
|
|
end;
|
|
|
|
ScriptListChange(Sender, ScriptList.Selected, ctText); // AV
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnRemoveClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
if not assigned(ScriptList.Selected) then exit; // AV
|
|
i := ScriptList.Selected.Index;
|
|
Faves.Delete(i);
|
|
ScriptList.Items[i].delete;
|
|
if ScriptList.Items.Count <> 0 then
|
|
if i < ScriptList.Items.Count then
|
|
ScriptList.Selected := ScriptList.Items[i]
|
|
else
|
|
ScriptList.Selected := ScriptList.Items[ScriptList.Items.Count - 1];
|
|
|
|
ScriptListChange(Sender, ScriptList.Selected, ctText); // AV
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnSortClick(Sender: TObject);
|
|
var
|
|
scripts: TStringList;
|
|
i : integer;
|
|
begin
|
|
if (ScriptList.Items.Count <= 1) then exit;
|
|
|
|
scripts := TStringList.Create;
|
|
for i := 0 to Faves.Count - 1 do
|
|
scripts.AddPair(ScriptList.Items[i].Caption, Faves[i]);
|
|
ScriptList.Items.BeginUpdate;
|
|
scripts.Sort;
|
|
for i := 0 to Faves.Count - 1 do
|
|
begin
|
|
ScriptList.Items[i].Caption := scripts.Names[i];
|
|
Faves[i] := scripts.ValueFromIndex[i];
|
|
end;
|
|
ScriptList.Items.EndUpdate;
|
|
scripts.Free;
|
|
ScriptListChange(Sender, ScriptList.Selected, ctText); // AV
|
|
end;
|
|
|
|
procedure TFavoritesForm.ScriptListChange(Sender: TObject; Item: TListItem;
|
|
Change: TItemChange);
|
|
var
|
|
n: smallint;
|
|
IsSel: boolean;
|
|
begin
|
|
n := ScriptList.Items.Count;
|
|
IsSel := assigned(ScriptList.Selected);
|
|
|
|
btnRemove.Enabled := (n > 0) and IsSel;
|
|
btnSort.Enabled := (n > 1);
|
|
|
|
if (n <= 1) or (not IsSel) then
|
|
begin
|
|
btnMoveDown.Enabled := False;
|
|
btnMoveUp.Enabled := False;
|
|
end
|
|
else begin
|
|
if (Item.Index = n - 1) then
|
|
btnMoveDown.Enabled := False
|
|
else
|
|
btnMoveDown.Enabled := True;
|
|
if (Item.Index = 0) then
|
|
btnMoveUp.Enabled := False
|
|
else
|
|
btnMoveUp.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TFavoritesForm.ScriptListInfoTip(Sender: TObject; Item: TListItem;
|
|
var InfoTip: string);
|
|
begin
|
|
InfoTip := Faves[Item.Index]; // AV: show the corresponding full file name
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnMoveUpClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
s: string;
|
|
begin
|
|
if not assigned(ScriptList.Selected) then exit; // AV
|
|
i := ScriptList.Selected.Index;
|
|
s := Faves[i];
|
|
Faves[i] := Faves[i - 1];
|
|
Faves[i - 1] := s;
|
|
s := ScriptList.Selected.Caption;
|
|
ScriptList.Selected.Caption := ScriptList.Items[i - 1].Caption;
|
|
ScriptList.Items[i - 1].Caption := s;
|
|
ScriptList.Selected := ScriptList.Items[i - 1];
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnClearClick(Sender: TObject);
|
|
begin
|
|
ScriptList.Items.Clear;
|
|
Faves.Clear;
|
|
ScriptListChange(Sender, ScriptList.Selected, ctText); // AV
|
|
end;
|
|
|
|
procedure TFavoritesForm.btnMoveDownClick(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
s: string;
|
|
begin
|
|
if not assigned(ScriptList.Selected) then exit; // AV
|
|
i := ScriptList.Selected.Index;
|
|
s := faves[i];
|
|
Faves[i] := Faves[i + 1];
|
|
Faves[i + 1] := s;
|
|
s := ScriptList.Selected.Caption;
|
|
ScriptList.Selected.Caption := ScriptList.Items[i + 1].Caption;
|
|
ScriptList.Items[i + 1].Caption := s;
|
|
ScriptList.Selected := ScriptList.Items[i + 1];
|
|
end;
|
|
|
|
end.
|
|
|