| 30 |
|
VTHPopup: TVTHeaderPopupMenu; |
| 31 |
|
btn_export: TButton; |
| 32 |
|
btn_import: TButton; |
| 33 |
+ |
vst_popup: TPopupMenu; |
| 34 |
+ |
vst_newRoot: TMenuItem; |
| 35 |
+ |
vst_setRoot: TMenuItem; |
| 36 |
|
procedure FormCreate(Sender: TObject); |
| 37 |
|
procedure VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode; |
| 38 |
|
var ChildCount: Cardinal); |
| 47 |
|
procedure VSTPaintText(Sender: TBaseVirtualTree; |
| 48 |
|
const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; |
| 49 |
|
TextType: TVSTTextType); |
| 50 |
+ |
procedure VSTGetPopupMenu(Sender: TBaseVirtualTree; Node: PVirtualNode; |
| 51 |
+ |
Column: TColumnIndex; const P: TPoint; var AskParent: Boolean; |
| 52 |
+ |
var PopupMenu: TPopupMenu); |
| 53 |
+ |
procedure vst_setRootClick(Sender: TObject); |
| 54 |
+ |
procedure vst_newRootClick(Sender: TObject); |
| 55 |
|
private |
| 56 |
|
root: TTreeElement; |
| 57 |
|
procedure NewCon(ID: Integer); |
| 58 |
|
public |
| 59 |
+ |
procedure SetRoot(TreeElem: TTreeElement); |
| 60 |
|
end; |
| 61 |
|
|
| 62 |
|
|
| 63 |
|
implementation |
| 64 |
|
{$R *.dfm} |
| 65 |
< |
uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes; |
| 65 |
> |
uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main; |
| 66 |
|
|
| 67 |
|
type |
| 68 |
|
PNodeData = ^TNodeData; |
| 84 |
|
|
| 85 |
|
|
| 86 |
|
procedure TForm_Meta.NewCon(ID: Integer); |
| 87 |
+ |
begin |
| 88 |
+ |
if ID >= 0 then |
| 89 |
+ |
SetRoot(ConManager.Connection[FConnectionID].MetaData.Root); |
| 90 |
+ |
end; |
| 91 |
+ |
|
| 92 |
+ |
|
| 93 |
+ |
procedure TForm_Meta.SetRoot(TreeElem: TTreeElement); |
| 94 |
|
var |
| 95 |
|
i: Integer; |
| 96 |
|
data: TNodeData; |
| 97 |
|
node: PVirtualNode; |
| 82 |
– |
Meta: TMetaManager; |
| 83 |
– |
root: TTreeElement; |
| 98 |
|
begin |
| 99 |
< |
if ID >= 0 then |
| 99 |
> |
if FConnectionID <> TreeElem.ConnectionID then |
| 100 |
> |
SelectConnection(TreeElem.ConnectionID); |
| 101 |
> |
root := TreeElem; |
| 102 |
> |
VST.Clear; |
| 103 |
> |
VST.BeginUpdate; |
| 104 |
> |
for i := 0 to root.ChildCount - 1 do |
| 105 |
|
begin |
| 106 |
< |
//VST |
| 107 |
< |
VST.Clear; |
| 108 |
< |
VST.BeginUpdate; |
| 90 |
< |
root := ConManager.Connection[FConnectionID].MetaData.Root; |
| 91 |
< |
for i := 0 to root.ChildCount - 1 do |
| 92 |
< |
begin |
| 93 |
< |
data.Field := root.Child[i]; |
| 94 |
< |
node := AddVSTEntry(VST, nil, data); |
| 106 |
> |
data.Field := root.Child[i]; |
| 107 |
> |
node := AddVSTEntry(VST, nil, data); |
| 108 |
> |
if data.Field.ChildCount > 0 then |
| 109 |
|
VST.HasChildren[node] := True; |
| 96 |
– |
end; |
| 97 |
– |
VST.EndUpdate; |
| 110 |
|
end; |
| 111 |
+ |
VST.EndUpdate; |
| 112 |
|
end; |
| 113 |
|
|
| 101 |
– |
|
| 114 |
|
procedure TForm_Meta.VSTInitChildren(Sender: TBaseVirtualTree; |
| 115 |
|
Node: PVirtualNode; var ChildCount: Cardinal); |
| 116 |
|
var |
| 122 |
|
begin |
| 123 |
|
data := Sender.GetNodeData(node); |
| 124 |
|
Meta := ConManager.Connection[ConnectionID].MetaData; |
| 113 |
– |
if data.Field is TExtension then |
| 114 |
– |
if TExtension(data.Field).ChildCount = 0 then |
| 115 |
– |
TExtension(data.Field).InitList; |
| 125 |
|
|
| 126 |
|
if data.Field.ChildCount > 0 then |
| 127 |
|
begin |
| 249 |
|
|
| 250 |
|
|
| 251 |
|
|
| 252 |
+ |
procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree; |
| 253 |
+ |
Node: PVirtualNode; Column: TColumnIndex; const P: TPoint; |
| 254 |
+ |
var AskParent: Boolean; var PopupMenu: TPopupMenu); |
| 255 |
+ |
var |
| 256 |
+ |
data: PNodeData; |
| 257 |
+ |
begin |
| 258 |
+ |
inherited; |
| 259 |
+ |
AskParent := False; |
| 260 |
+ |
if Assigned(Node) then |
| 261 |
+ |
begin |
| 262 |
+ |
Sender.Selected[Node] := True; |
| 263 |
+ |
Sender.FocusedNode := Node; |
| 264 |
+ |
data := Sender.GetNodeData(Node); |
| 265 |
+ |
if Column = 0 then |
| 266 |
+ |
begin |
| 267 |
+ |
if TTreeElement(data.Field).GetChildCount > 0 then |
| 268 |
+ |
PopupMenu := vst_popup |
| 269 |
+ |
else |
| 270 |
+ |
PopupMenu := nil; |
| 271 |
+ |
end; |
| 272 |
+ |
end; |
| 273 |
+ |
end; |
| 274 |
+ |
|
| 275 |
+ |
procedure TForm_Meta.vst_newRootClick(Sender: TObject); |
| 276 |
+ |
var |
| 277 |
+ |
data: PNodeData; |
| 278 |
+ |
form: TForm_BaseTemplate; |
| 279 |
+ |
begin |
| 280 |
+ |
inherited; |
| 281 |
+ |
data := VST.GetNodeData(VST.FocusedNode); |
| 282 |
+ |
form := nil; |
| 283 |
+ |
form := Form_Main.open_child('meta'); |
| 284 |
+ |
if form is TForm_Meta then |
| 285 |
+ |
TForm_Meta(form).SetRoot(data.Field); |
| 286 |
+ |
end; |
| 287 |
+ |
|
| 288 |
+ |
procedure TForm_Meta.vst_setRootClick(Sender: TObject); |
| 289 |
+ |
var |
| 290 |
+ |
data: PNodeData; |
| 291 |
+ |
begin |
| 292 |
+ |
inherited; |
| 293 |
+ |
data := VST.GetNodeData(VST.FocusedNode); |
| 294 |
+ |
SetRoot(data.Field); |
| 295 |
+ |
end; |
| 296 |
+ |
|
| 297 |
|
procedure TForm_Meta.FormClose(Sender: TObject; var Action: TCloseAction); |
| 298 |
|
begin |
| 299 |
|
// Meta.Free; |