Changeset 238 for oup/current


Ignore:
Timestamp:
Jul 14, 2007, 6:50:55 PM (17 years ago)
Author:
alloc
Message:
 
Location:
oup/current
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • oup/current/FileClasses/_EmptyFile.pas

    r236 r238  
    88type
    99  TFile_Empty = class(TFile)
    10     public
    11       procedure InitDataFields; override;
    1210  end;
    1311
    1412implementation
    1513
    16 uses
    17   ConnectionManager, Math, Classes, TypeDefs, _DataTypes;
    18 
    19 procedure TFile_Empty.InitDataFields;
    20 begin
    21   inherited;
    22   FDataFields := TBlock.Create(Self, nil, 'Base', '', []);
    23 end;
    24 
    25 
    2614end.
    2715
  • oup/current/FileClasses/_FileTypes.pas

    r237 r238  
    6666  FChanged := False;
    6767
     68  FDataFields := nil;
     69  FEditor := nil;
     70
    6871  if not (Self is TFile_Empty) then
    69   begin
    70     FDataFields := nil;
    7172    InitDataFields;
    72     FEditor := nil;
    73   end
    74   else
    75   begin
    76     FEditor := nil;
    77   end;
    7873end;
    7974
     
    106101begin
    107102  if FDataFields <> nil then
    108     Result := FDataFields.ChildCount;
     103    Result := FDataFields.ChildCount
     104  else
     105    Result := 0;
    109106end;
    110107
  • oup/current/FileClasses/_TreeElement.pas

    r233 r238  
    1111    private
    1212    public
     13      property ConnectionID: Integer read FConnectionID;
    1314      property ChildCount: Integer read GetChildCount;
    1415      property Child[ID: Integer]: TTreeElement read GetChild;
  • oup/current/Tools/MetaEditor.dfm

    r237 r238  
    4747      OnGetText = VSTGetText
    4848      OnPaintText = VSTPaintText
     49      OnGetPopupMenu = VSTGetPopupMenu
    4950      OnInitChildren = VSTInitChildren
    5051      Columns = <
     
    7980        Caption = 'Meta Edit'
    8081        ImageIndex = 1
    81         ExplicitLeft = 0
    82         ExplicitTop = 0
    83         ExplicitWidth = 0
    84         ExplicitHeight = 0
    8582      end
    8683      object tab_hex: TTabSheet
     
    313310    Top = 340
    314311  end
     312  object vst_popup: TPopupMenu
     313    AutoHotkeys = maManual
     314    Left = 80
     315    Top = 204
     316    object vst_newRoot: TMenuItem
     317      Caption = 'Set as root element in new window'
     318    end
     319    object vst_setRoot: TMenuItem
     320      Caption = 'Set as root element here'
     321      OnClick = vst_setRootClick
     322    end
     323  end
    315324end
  • oup/current/Tools/MetaEditor.pas

    r237 r238  
    3131    btn_export: TButton;
    3232    btn_import: TButton;
     33    vst_popup: TPopupMenu;
     34    vst_newRoot: TMenuItem;
     35    vst_setRoot: TMenuItem;
    3336    procedure FormCreate(Sender: TObject);
    3437    procedure VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode;
     
    4548      const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
    4649      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);
    4754  private
    4855    root: TTreeElement;
    4956    procedure NewCon(ID: Integer);
    5057  public
     58    procedure SetRoot(TreeElem: TTreeElement);
    5159  end;
    5260
     
    7684
    7785procedure TForm_Meta.NewCon(ID: Integer);
     86begin
     87  if ID >= 0 then
     88    SetRoot(ConManager.Connection[FConnectionID].MetaData.Root);
     89end;
     90
     91
     92procedure TForm_Meta.SetRoot(TreeElem: TTreeElement);
    7893var
    7994  i: Integer;
    8095  data: TNodeData;
    8196  node: PVirtualNode;
    82   Meta: TMetaManager;
    83   root: TTreeElement;
    84 begin
    85   if ID >= 0 then
    86   begin
    87     //VST
    88     VST.Clear;
    89     VST.BeginUpdate;
    90 //    root := ConManager.Connection[FConnectionID].MetaData.Root;
    91     root := ConManager.Connection[FConnectionID].MetaData.FileById[454];
    92     for i := 0 to root.ChildCount - 1 do
    93     begin
    94       data.Field := root.Child[i];
    95       node := AddVSTEntry(VST, nil, data);
     97begin
     98  if FConnectionID <> TreeElem.ConnectionID then
     99    SelectConnection(TreeElem.ConnectionID);
     100  root := TreeElem;
     101  VST.Clear;
     102  VST.BeginUpdate;
     103  for i := 0 to root.ChildCount - 1 do
     104  begin
     105    data.Field := root.Child[i];
     106    node := AddVSTEntry(VST, nil, data);
     107    if data.Field.ChildCount > 0 then
    96108      VST.HasChildren[node] := True;
    97     end;
    98     VST.EndUpdate;
    99   end;
    100 end;
    101 
     109  end;
     110  VST.EndUpdate;
     111end;
    102112
    103113procedure TForm_Meta.VSTInitChildren(Sender: TBaseVirtualTree;
     
    239249
    240250
     251procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree;
     252  Node: PVirtualNode; Column: TColumnIndex; const P: TPoint;
     253  var AskParent: Boolean; var PopupMenu: TPopupMenu);
     254var
     255  data: PNodeData;
     256begin
     257  inherited;
     258  AskParent := False;
     259  if Assigned(Node) then
     260  begin
     261    Sender.Selected[Node] := True;
     262    Sender.FocusedNode := Node;
     263    data := Sender.GetNodeData(Node);
     264    if Column = 0 then
     265    begin
     266      if TTreeElement(data.Field).GetChildCount > 0 then
     267        PopupMenu := vst_popup
     268      else
     269        PopupMenu := nil;
     270    end;
     271  end;
     272end;
     273
     274procedure TForm_Meta.vst_setRootClick(Sender: TObject);
     275var
     276  data: PNodeData;
     277begin
     278  inherited;
     279  data := VST.GetNodeData(VST.FocusedNode);
     280  SetRoot(data.Field);
     281end;
     282
    241283procedure TForm_Meta.FormClose(Sender: TObject; var Action: TCloseAction);
    242284begin
Note: See TracChangeset for help on using the changeset viewer.