ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Tools/_TemplateFileList.pas
(Generate patch)

Comparing oup/current/Tools/_TemplateFileList.pas (file contents):
Revision 227 by alloc, Tue Jun 19 22:06:10 2007 UTC vs.
Revision 229 by alloc, Wed Jun 20 10:57:51 2007 UTC

# Line 54 | Line 54 | type
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;
# Line 72 | Line 79 | type
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;
# Line 107 | Line 133 | var
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
# Line 129 | Line 159 | 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  
# Line 216 | Line 258 | begin
258    Form_Main.open_child(context, FConnectionID, id);
259   end;
260  
261 +
262   procedure TForm_TemplateFileList.filepopupPopup(Sender: TObject);
263   var
264    ext: String;
# Line 337 | Line 380 | var
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;
# Line 355 | Line 402 | begin
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.

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)