--- oup/current/Tools/MetaEditor.pas 2007/07/14 23:12:26 240 +++ oup/current/Tools/MetaEditor.pas 2007/07/17 22:27:16 241 @@ -52,6 +52,9 @@ type var PopupMenu: TPopupMenu); procedure vst_setRootClick(Sender: TObject); procedure vst_newRootClick(Sender: TObject); + procedure VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; + Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; + var HintText: WideString); private root: TTreeElement; procedure NewCon(ID: Integer); @@ -62,7 +65,8 @@ type implementation {$R *.dfm} -uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main; +uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main, + TypeDefs; type PNodeData = ^TNodeData; @@ -87,6 +91,7 @@ procedure TForm_Meta.NewCon(ID: Integer) begin if ID >= 0 then SetRoot(ConManager.Connection[FConnectionID].MetaData.Root); +//SetRoot(ConManager.Connection[FConnectionID].MetaData.FileById[454]); end; @@ -118,10 +123,8 @@ var newdata: TNodeData; newnode: PVirtualNode; i: Integer; - Meta: TMetaManager; begin data := Sender.GetNodeData(node); - Meta := ConManager.Connection[ConnectionID].MetaData; if data.Field.ChildCount > 0 then begin @@ -151,9 +154,9 @@ begin ffile := nil; if data.Field is TFile then ffile := TFile(data.Field); - if data.Field is TDatLink then - if Assigned(TDatLink(data.Field).TargetFile) then - ffile := TFile(TDatLink(data.Field).TargetFile); + if data.Field is _MetaTypes.TDatLink then + if Assigned(_MetaTypes.TDatLink(data.Field).TargetFile) then + ffile := TFile(_MetaTypes.TDatLink(data.Field).TargetFile); if Assigned(ffile) then begin if Assigned(ffile.Editor) then @@ -213,22 +216,10 @@ begin if TextType = ttNormal then begin case Column of - 0: - begin - CellText := Data.Field.GetCaption; - end; - 1: - begin - if Data.Field is TFile then - CellText := TFile(Data.Field).FileInfo.Extension; - end; + 0: CellText := Data.Field.Caption; + 1: CellText := data.Field.VType; 2: begin - if Data.Field is TFile then - CellText := IntToStr(TFile(Data.Field).FileInfo.ID); - end; - 3: - begin if Data.Field is TDataField then CellText := TDataField(Data.Field).ValueAsString; end; @@ -263,6 +254,48 @@ end; +procedure TForm_Meta.VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode; + Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle; + var HintText: WideString); +var + data: PNodeData; + CellText: WideString; + + i: Integer; + links: TStrings; +begin + inherited; + if Assigned(Node) then + begin + VSTGetText(Sender, Node, Column, ttNormal, CellText); + if Length(CellText) > 0 then + begin + data := Sender.GetNodeData(Node); + if data.Field is TDataField then + begin + case Column of + 0,1: HintText := TDataField(data.Field).Description; + 2: HintText := ''; + end; + end; + if (data.Field is _MetaTypes.TDatLink) and (Column = 2) then + begin + links := nil; + links := ConManager.Connection[FConnectionID].GetFilesList(_MetaTypes.TDatLink(data.Field).PosExts, '', False, ST_NameAsc); + HintText := IntToStr(links.Count); + for i := 0 to Min(links.Count - 1, 99) do + begin + if (i mod 5) = 0 then + HintText := HintText + #13+#10; + HintText := HintText + links.Strings[i] + ' '; + end; + end; + end; + end + else + HintText := ''; +end; + procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; const P: TPoint; var AskParent: Boolean; var PopupMenu: TPopupMenu); @@ -278,7 +311,7 @@ begin data := Sender.GetNodeData(Node); if Column = 0 then begin - if TTreeElement(data.Field).GetChildCount > 0 then + if TTreeElement(data.Field).ChildCount > 0 then PopupMenu := vst_popup else PopupMenu := nil;