aboutsummaryrefslogtreecommitdiff
path: root/Source/toolbarunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'Source/toolbarunit.pas')
-rw-r--r--Source/toolbarunit.pas410
1 files changed, 205 insertions, 205 deletions
diff --git a/Source/toolbarunit.pas b/Source/toolbarunit.pas
index 39bd20a..5627e64 100644
--- a/Source/toolbarunit.pas
+++ b/Source/toolbarunit.pas
@@ -1,205 +1,205 @@
-unit toolbarunit;
-
-interface
-
-uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ComCtrls, ToolWin, Buttons, ExtCtrls, StdCtrls, ImgList,
- SendKeys, Filez;
-
-type
- Ttoolbar = class(TForm)
- bar: TStatusBar;
- sd: TScanDir;
- Panel3: TPanel;
- PageControl1: TPageControl;
- TabSheet1: TTabSheet;
- TabSheet2: TTabSheet;
- Panel2: TPanel;
- LVTools: TListView;
- m1: TMemo;
- Panel1: TPanel;
- LVFilters: TListView;
- procedure FormCreate(Sender: TObject);
- procedure LVFiltersCustomDrawItem(Sender: TCustomListView;
- Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
- procedure LVFiltersChange(Sender: TObject; Item: TListItem;
- Change: TItemChange);
- procedure LVFiltersSelectItem(Sender: TObject; Item: TListItem;
- Selected: Boolean);
- procedure LVToolsSelectItem(Sender: TObject; Item: TListItem;
- Selected: Boolean);
- procedure sdHandleFile(const SearchRec: TSearchRec;
- const FullPath: String);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure PageControl1Change(Sender: TObject);
- private
- { Private declarations }
- SendKey: TSendKey;
- public
- { Public declarations }
- procedure UpdateLists;
- end;
-
-var
- toolbar: Ttoolbar;
-
-implementation
-
-uses
- mainunit, strz;
-
-{$R *.DFM}
-
-procedure Ttoolbar.sdHandleFile(const SearchRec: TSearchRec;
- const FullPath: String);
-begin
- if ExtractFileExt(UpperCase(FullPath))<>'.8BF' then Exit;
-
- with LVFilters.Items.Add do begin
- Caption := ExtractFileName(FullPath);
- Caption := Copy(Caption, 1, Length(Caption)-4);
- Data := Pointer(-1);
- end;
-end;
-
-procedure Ttoolbar.UpdateLists;
-var
- i: Integer;
-begin
- // Load tools
- if FileExists(main.FSFolder+'\toolbar.txt') then begin
- LVTools.Items.Clear;
- m1.Lines.LoadFromFile(main.FSFolder+'\toolbar.txt');
- if m1.Lines.Count>0 then
- for i:=0 to m1.Lines.Count-1 do begin
- with LVTools.Items.Add do begin
- Caption := ExtractWord(1, m1.Lines[i], [';']);
- Data := Pointer(i);
- end;
- end;
- end;
-
- // Load plugins
- if main.Plugins.Names.Count>0 then begin
- LVFilters.Items.Clear;
- for i:=0 to main.Plugins.Names.Count-1 do begin
- with LVFilters.Items.Add do begin
- Caption := main.Plugins.Names[i];
- SubItems.Add(main.Plugins.Info(i));
- Data := Pointer(i);
- end;
- end;
- end;
-
- // Load photoshop-filters
- sd.Scan(main.FSFolder+'\Filters');
-end;
-
-procedure Ttoolbar.FormCreate(Sender: TObject);
-begin
- UpdateLists;
- SendKey := TSendKey.Create(Self);
-// Show;
-end;
-
-const
- it: TListItem = nil;
-
-procedure Ttoolbar.LVFiltersChange(Sender: TObject; Item: TListItem;
- Change: TItemChange);
-begin
-
-(* Trying to provide "paste objects to patches" feature,
- real toolbar-style, but:
-
- disabled together with CustomDrawItem -
- doesn't work well enough, might introduce new bugs etc.
-
- if Item.Selected then
- it := item;
- if Item.ListView.Selected=nil then it:=nil;
-*)
-
-end;
-
-procedure Ttoolbar.LVFiltersCustomDrawItem(Sender: TCustomListView;
- Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
-var
- Title: array[0..255] of Char;
- s: String;
- h: THandle;
-begin
-
-(* NOT GOOD ENOUGH
-
- if (it=nil) or (Item.Caption='') then Exit;
- if it.Caption=item.Caption then begin
- Sleep(50); // wait for pd window to get focus
- h := GetForegroundWindow;
- if GetWindowText(h, Title, SizeOf(Title))>0 then begin
- s := StrPas(@Title);
- if Pos(' - ', S)>0 then begin
- Delete(S, Pos(' - ', S), 255);
- if Pos('*', S)>0 then Delete(S, Pos('*', S), 255);
-// main.Post(Item.Caption+' -> '+S);
- if Item.ListView=LVFilters then
- main.SendReturnValues('obj pd-'+S+'=msg 10 10 '+Item.Caption+';')
- else begin
- SendKey.Delay := 100;
- SendKey.TitleText := S;
- SendKey.Keys := '{^1}'+Item.Caption;
- SendKey.execute;
-// Self.Hide;
- end;
- Item.ListView.Selected := nil;
- end;
- end;
- end;
-*)
-
-end;
-
-procedure Ttoolbar.LVFiltersSelectItem(Sender: TObject; Item: TListItem;
- Selected: Boolean);
-var
- i: Longint;
- S: String;
-begin
- i := Longint(Item.Data);
- if i=-1 then bar.SimpleText := Item.Caption+': Photoshop-filter'
- else begin
- S := main.Plugins.Info(i);
- if S='' then
- bar.SimpleText := Item.Caption+': <no info available>'
- else
- bar.SimpleText := Item.Caption+': '+S;
- end;
-end;
-
-procedure Ttoolbar.LVToolsSelectItem(Sender: TObject; Item: TListItem;
- Selected: Boolean);
-var
- S: String;
- i: Integer;
-begin
- i := Integer(Item.Data);
- if (i>=0) and (i<m1.Lines.Count) then begin
- S := m1.Lines[i];
- if Pos(';', S)>0 then Delete(S, 1, Pos(';', S));
- bar.SimpleText := S;
- end;
-end;
-
-procedure Ttoolbar.FormClose(Sender: TObject; var Action: TCloseAction);
-begin
- main.MiToolbar.Checked := False;
-end;
-
-procedure Ttoolbar.PageControl1Change(Sender: TObject);
-begin
- bar.SimpleText := '';
-end;
-
-end.
-
+unit toolbarunit;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+ ComCtrls, ToolWin, Buttons, ExtCtrls, StdCtrls, ImgList,
+ SendKeys, Filez;
+
+type
+ Ttoolbar = class(TForm)
+ bar: TStatusBar;
+ sd: TScanDir;
+ Panel3: TPanel;
+ PageControl1: TPageControl;
+ TabSheet1: TTabSheet;
+ TabSheet2: TTabSheet;
+ Panel2: TPanel;
+ LVTools: TListView;
+ m1: TMemo;
+ Panel1: TPanel;
+ LVFilters: TListView;
+ procedure FormCreate(Sender: TObject);
+ procedure LVFiltersCustomDrawItem(Sender: TCustomListView;
+ Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
+ procedure LVFiltersChange(Sender: TObject; Item: TListItem;
+ Change: TItemChange);
+ procedure LVFiltersSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+ procedure LVToolsSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+ procedure sdHandleFile(const SearchRec: TSearchRec;
+ const FullPath: String);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ procedure PageControl1Change(Sender: TObject);
+ private
+ { Private declarations }
+ SendKey: TSendKey;
+ public
+ { Public declarations }
+ procedure UpdateLists;
+ end;
+
+var
+ toolbar: Ttoolbar;
+
+implementation
+
+uses
+ mainunit, strz;
+
+{$R *.DFM}
+
+procedure Ttoolbar.sdHandleFile(const SearchRec: TSearchRec;
+ const FullPath: String);
+begin
+ if ExtractFileExt(UpperCase(FullPath))<>'.8BF' then Exit;
+
+ with LVFilters.Items.Add do begin
+ Caption := ExtractFileName(FullPath);
+ Caption := Copy(Caption, 1, Length(Caption)-4);
+ Data := Pointer(-1);
+ end;
+end;
+
+procedure Ttoolbar.UpdateLists;
+var
+ i: Integer;
+begin
+ // Load tools
+ if FileExists(main.FSFolder+'\toolbar.txt') then begin
+ LVTools.Items.Clear;
+ m1.Lines.LoadFromFile(main.FSFolder+'\toolbar.txt');
+ if m1.Lines.Count>0 then
+ for i:=0 to m1.Lines.Count-1 do begin
+ with LVTools.Items.Add do begin
+ Caption := ExtractWord(1, m1.Lines[i], [';']);
+ Data := Pointer(i);
+ end;
+ end;
+ end;
+
+ // Load plugins
+ if main.Plugins.Names.Count>0 then begin
+ LVFilters.Items.Clear;
+ for i:=0 to main.Plugins.Names.Count-1 do begin
+ with LVFilters.Items.Add do begin
+ Caption := main.Plugins.Names[i];
+ SubItems.Add(main.Plugins.Info(i));
+ Data := Pointer(i);
+ end;
+ end;
+ end;
+
+ // Load photoshop-filters
+ sd.Scan(main.FSFolder+'\Filters');
+end;
+
+procedure Ttoolbar.FormCreate(Sender: TObject);
+begin
+ UpdateLists;
+ SendKey := TSendKey.Create(Self);
+// Show;
+end;
+
+const
+ it: TListItem = nil;
+
+procedure Ttoolbar.LVFiltersChange(Sender: TObject; Item: TListItem;
+ Change: TItemChange);
+begin
+
+(* Trying to provide "paste objects to patches" feature,
+ real toolbar-style, but:
+
+ disabled together with CustomDrawItem -
+ doesn't work well enough, might introduce new bugs etc.
+
+ if Item.Selected then
+ it := item;
+ if Item.ListView.Selected=nil then it:=nil;
+*)
+
+end;
+
+procedure Ttoolbar.LVFiltersCustomDrawItem(Sender: TCustomListView;
+ Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
+var
+ Title: array[0..255] of Char;
+ s: String;
+ h: THandle;
+begin
+
+(* NOT GOOD ENOUGH
+
+ if (it=nil) or (Item.Caption='') then Exit;
+ if it.Caption=item.Caption then begin
+ Sleep(50); // wait for pd window to get focus
+ h := GetForegroundWindow;
+ if GetWindowText(h, Title, SizeOf(Title))>0 then begin
+ s := StrPas(@Title);
+ if Pos(' - ', S)>0 then begin
+ Delete(S, Pos(' - ', S), 255);
+ if Pos('*', S)>0 then Delete(S, Pos('*', S), 255);
+// main.Post(Item.Caption+' -> '+S);
+ if Item.ListView=LVFilters then
+ main.SendReturnValues('obj pd-'+S+'=msg 10 10 '+Item.Caption+';')
+ else begin
+ SendKey.Delay := 100;
+ SendKey.TitleText := S;
+ SendKey.Keys := '{^1}'+Item.Caption;
+ SendKey.execute;
+// Self.Hide;
+ end;
+ Item.ListView.Selected := nil;
+ end;
+ end;
+ end;
+*)
+
+end;
+
+procedure Ttoolbar.LVFiltersSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+var
+ i: Longint;
+ S: String;
+begin
+ i := Longint(Item.Data);
+ if i=-1 then bar.SimpleText := Item.Caption+': Photoshop-filter'
+ else begin
+ S := main.Plugins.Info(i);
+ if S='' then
+ bar.SimpleText := Item.Caption+': <no info available>'
+ else
+ bar.SimpleText := Item.Caption+': '+S;
+ end;
+end;
+
+procedure Ttoolbar.LVToolsSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+var
+ S: String;
+ i: Integer;
+begin
+ i := Integer(Item.Data);
+ if (i>=0) and (i<m1.Lines.Count) then begin
+ S := m1.Lines[i];
+ if Pos(';', S)>0 then Delete(S, 1, Pos(';', S));
+ bar.SimpleText := S;
+ end;
+end;
+
+procedure Ttoolbar.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ main.MiToolbar.Checked := False;
+end;
+
+procedure Ttoolbar.PageControl1Change(Sender: TObject);
+begin
+ bar.SimpleText := '';
+end;
+
+end.
+