| 54 |
|
procedure popup_opentool(Sender: TObject); |
| 55 |
|
procedure popup_linkshereClick(Sender: TObject); |
| 56 |
|
procedure filepopupPopup(Sender: TObject); |
| 57 |
+ |
procedure filelist_metaGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; |
| 58 |
+ |
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); |
| 59 |
+ |
procedure filelist_metaInitChildren(Sender: TBaseVirtualTree; |
| 60 |
+ |
Node: PVirtualNode; var ChildCount: Cardinal); |
| 61 |
+ |
procedure filelist_metaPaintText(Sender: TBaseVirtualTree; |
| 62 |
+ |
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; |
| 63 |
+ |
TextType: TVSTTextType); |
| 64 |
|
private |
| 65 |
|
FSortBy: TSortType; |
| 66 |
|
FAllowedExts: String; |
| 79 |
|
implementation |
| 80 |
|
{$R *.dfm} |
| 81 |
|
uses ConnectionManager, Exporters, Functions, StrUtils, WhatLinksHere, Main, |
| 82 |
< |
_BaseTemplate; |
| 82 |
> |
_BaseTemplate, _MetaTypes, Data, _MetaManager, _FileTypes; |
| 83 |
> |
|
| 84 |
> |
type |
| 85 |
> |
PNodeData = ^TNodeData; |
| 86 |
> |
|
| 87 |
> |
TNodeData = record |
| 88 |
> |
Field: TObject; |
| 89 |
> |
end; |
| 90 |
> |
|
| 91 |
> |
function AddVSTEntry(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; |
| 92 |
> |
ARecord: TNodeData): PVirtualNode; |
| 93 |
> |
var |
| 94 |
> |
Data: PNodeData; |
| 95 |
> |
begin |
| 96 |
> |
Result := AVST.AddChild(ANode); |
| 97 |
> |
Data := AVST.GetNodeData(Result); |
| 98 |
> |
AVST.ValidateNode(Result, False); |
| 99 |
> |
Data^ := ARecord; |
| 100 |
> |
end; |
| 101 |
> |
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
procedure TForm_TemplateFileList.RecreateExtList; |
| 133 |
|
no_zero_bytes: Boolean; |
| 134 |
|
pattern: String; |
| 135 |
|
files: TStrings; |
| 136 |
+ |
root: TExtensions; |
| 137 |
+ |
i: Integer; |
| 138 |
+ |
data: TNodeData; |
| 139 |
+ |
node: PVirtualNode; |
| 140 |
|
begin |
| 141 |
|
if FConnectionID > -1 then |
| 142 |
|
begin |
| 159 |
|
if files.Count > 0 then |
| 160 |
|
filelist.Items.AddStrings(files); |
| 161 |
|
filelist.Visible := True; |
| 162 |
+ |
|
| 163 |
+ |
//VST |
| 164 |
+ |
filelist_meta.Clear; |
| 165 |
+ |
filelist_meta.BeginUpdate; |
| 166 |
+ |
root := ConManager.Connection[FConnectionID].MetaData.Root; |
| 167 |
+ |
for i := 0 to High(root) do |
| 168 |
+ |
begin |
| 169 |
+ |
data.Field := root[i]; |
| 170 |
+ |
node := AddVSTEntry(filelist_meta, nil, data); |
| 171 |
+ |
filelist_meta.HasChildren[node] := True; |
| 172 |
+ |
end; |
| 173 |
+ |
filelist_meta.EndUpdate; |
| 174 |
|
end; |
| 175 |
|
end; |
| 176 |
|
|
| 258 |
|
Form_Main.open_child(context, FConnectionID, id); |
| 259 |
|
end; |
| 260 |
|
|
| 261 |
+ |
|
| 262 |
|
procedure TForm_TemplateFileList.filepopupPopup(Sender: TObject); |
| 263 |
|
var |
| 264 |
|
ext: String; |
| 380 |
|
item: TMenuItem; |
| 381 |
|
begin |
| 382 |
|
inherited; |
| 383 |
+ |
filelist_meta.NodeDataSize := SizeOf(TNodeData); |
| 384 |
+ |
filelist_meta.Font.Charset := AppSettings.CharSet; |
| 385 |
+ |
filelist_meta.Clear; |
| 386 |
+ |
|
| 387 |
|
FAllowedExts := ''; |
| 388 |
|
FAllowMultiSelect := False; |
| 389 |
|
FOnNewConnection := NewCon; |
| 402 |
|
end; |
| 403 |
|
|
| 404 |
|
|
| 405 |
+ |
|
| 406 |
+ |
procedure TForm_TemplateFileList.filelist_metaGetText(Sender: TBaseVirtualTree; |
| 407 |
+ |
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; |
| 408 |
+ |
var CellText: WideString); |
| 409 |
+ |
var |
| 410 |
+ |
data: PNodeData; |
| 411 |
+ |
begin |
| 412 |
+ |
inherited; |
| 413 |
+ |
data := Sender.GetNodeData(Node); |
| 414 |
+ |
if data.Field is TExtension then |
| 415 |
+ |
begin |
| 416 |
+ |
CellText := TExtension(data.Field).Ext; |
| 417 |
+ |
end; |
| 418 |
+ |
if data.Field is TFile then |
| 419 |
+ |
begin |
| 420 |
+ |
if TFile(data.Field).FileName = '' then |
| 421 |
+ |
CellText := TFile(data.Field).FileExt + ' (unnamed)' |
| 422 |
+ |
else |
| 423 |
+ |
CellText := TFile(data.Field).FileExt + ': ' + TFile(data.Field).FileName; |
| 424 |
+ |
end; |
| 425 |
+ |
end; |
| 426 |
+ |
|
| 427 |
+ |
|
| 428 |
+ |
procedure TForm_TemplateFileList.filelist_metaInitChildren( |
| 429 |
+ |
Sender: TBaseVirtualTree; Node: PVirtualNode; var ChildCount: Cardinal); |
| 430 |
+ |
var |
| 431 |
+ |
data: PNodeData; |
| 432 |
+ |
i: Integer; |
| 433 |
+ |
newdata: TNodeData; |
| 434 |
+ |
newnode: PVirtualNode; |
| 435 |
+ |
id: Integer; |
| 436 |
+ |
begin |
| 437 |
+ |
inherited; |
| 438 |
+ |
data := Sender.GetNodeData(Node); |
| 439 |
+ |
if data.Field is TExtension then |
| 440 |
+ |
begin |
| 441 |
+ |
if TExtension(data.Field).FileCount = 0 then |
| 442 |
+ |
TExtension(data.Field).InitList; |
| 443 |
+ |
for i := 0 to TExtension(data.Field).FileCount - 1 do |
| 444 |
+ |
begin |
| 445 |
+ |
id := TExtension(data.Field).Files[i]; |
| 446 |
+ |
ConManager.Connection[FConnectionID].MetaData.InitFile(id); |
| 447 |
+ |
newdata.Field := ConManager.Connection[FConnectionID].MetaData.FileById[id]; |
| 448 |
+ |
newnode := AddVSTEntry(filelist_meta, Node, newdata); |
| 449 |
+ |
if ConManager.Connection[FConnectionID].MetaData.FileById[id].ChildCount > 0 then |
| 450 |
+ |
filelist_meta.HasChildren[newnode] := True; |
| 451 |
+ |
ChildCount := filelist_meta.ChildCount[node]; |
| 452 |
+ |
end; |
| 453 |
+ |
end; |
| 454 |
+ |
if data.Field is TFile then |
| 455 |
+ |
begin |
| 456 |
+ |
for i := 0 to TFile(data.Field).ChildCount - 1 do |
| 457 |
+ |
begin |
| 458 |
+ |
id := TFile(data.Field).LinkByIndex[i].DestID; |
| 459 |
+ |
ConManager.Connection[FConnectionID].MetaData.InitFile(id); |
| 460 |
+ |
newdata.Field := ConManager.Connection[FConnectionID].MetaData.FileById[id]; |
| 461 |
+ |
newnode := AddVSTEntry(filelist_meta, Node, newdata); |
| 462 |
+ |
if ConManager.Connection[FConnectionID].MetaData.FileById[id].ChildCount > 0 then |
| 463 |
+ |
filelist_meta.HasChildren[newnode] := True; |
| 464 |
+ |
end; |
| 465 |
+ |
ChildCount := filelist_meta.ChildCount[node]; |
| 466 |
+ |
end; |
| 467 |
+ |
end; |
| 468 |
+ |
|
| 469 |
+ |
procedure TForm_TemplateFileList.filelist_metaPaintText( |
| 470 |
+ |
Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; Node: PVirtualNode; |
| 471 |
+ |
Column: TColumnIndex; TextType: TVSTTextType); |
| 472 |
+ |
var |
| 473 |
+ |
Data: PNodeData; |
| 474 |
+ |
begin |
| 475 |
+ |
Data := Sender.GetNodeData(Node); |
| 476 |
+ |
if Data.Field is TFile then |
| 477 |
+ |
begin |
| 478 |
+ |
if Length(TFile(Data.Field).FileName) = 0 then |
| 479 |
+ |
TargetCanvas.Font.Color := $C06060; |
| 480 |
+ |
if TFile(Data.Field).FileSize = 0 then |
| 481 |
+ |
TargetCanvas.Font.Color := $2020A0; |
| 482 |
+ |
end; |
| 483 |
+ |
end; |
| 484 |
+ |
|
| 485 |
|
end. |