Changeset 232 for oup/current


Ignore:
Timestamp:
Jun 28, 2007, 11:24:08 AM (18 years ago)
Author:
alloc
Message:
 
Location:
oup/current
Files:
7 edited

Legend:

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

    r215 r232  
    1010    public
    1111      procedure InitDataFields; override;
     12      procedure InitEditor; override;
    1213  end;
    1314
     
    1516
    1617uses
    17   ConnectionManager, Math, Classes, TypeDefs, _DataTypes;
     18  ConnectionManager, Math, Classes, TypeDefs, _DataTypes, ExtCtrls, StdCtrls,
     19  Controls, Forms;
    1820
    1921{ TFile_TXMP }
     
    106108
    107109
     110procedure TFile_TXMP.InitEditor;
     111var
     112  group: TGroupBox;
     113  splitter: TSplitter;
     114begin
     115  inherited;
     116  FEditor := TFrame.Create(nil);
     117  group := TGroupBox.Create(FEditor);
     118  group.Align := alTop;
     119  group.Height := 150;
     120  group.Caption := '1. ';
     121  group.Parent := FEditor;
     122
     123  splitter := TSplitter.Create(FEditor);
     124  splitter.Align := alTop;
     125  splitter.Top := group.Height + 10;
     126  splitter.AutoSnap := False;
     127  splitter.MinSize := 100;
     128  splitter.Beveled := True;
     129  splitter.Height := 8;
     130  splitter.Parent := FEditor;
     131
     132  group := TGroupBox.Create(FEditor);
     133  group.Align := alClient;
     134  group.Caption := '2. ';
     135  group.Parent := FEditor;
     136end;
     137
    108138end.
    109139
  • oup/current/FileClasses/_FileTypes.pas

    r231 r232  
    3434      function GetRawPartByIndex(ID: Integer): TRawDataInfo;
    3535      function GetChildCount: Integer;
     36      function GetRawCount: Integer;
    3637    public
    3738      constructor Create(ConnectionID, FileID: Integer); virtual;
     
    5859      property FieldByIndex[ID: Integer]: TDataField read GetFieldByIndex;
    5960
     61      property RawCount: Integer read GetRawCount;
    6062      property RawPartByOffset[Offset: Integer]: TRawDataInfo read GetRawPartByOffset;
    6163      property RawPartByIndex[ID: Integer]: TRawDataInfo read GetRawPartByIndex;
     
    177179end;
    178180
     181function TFile.GetRawCount: Integer;
     182var
     183  i: Integer;
     184begin
     185  Result := Length(FRawParts);
     186  if Result > 0 then
     187  begin
     188    Result := 0;
     189    for i := 0 to High(FRawParts) do
     190      if FRawParts[i].RawSize > 0 then
     191        Inc(Result);
     192  end;
     193end;
     194
    179195function TFile.GetRawPartByIndex(ID: Integer): TRawDataInfo;
    180 begin
    181   if ID < Length(FRawParts) then
    182     Result := FRawParts[ID]
     196var
     197  i: Integer;
     198  valids: Integer;
     199begin
     200  if ID < GetRawCount then
     201  begin
     202    valids := 0;
     203    i := 0;
     204    repeat
     205      if FRawParts[i].RawSize > 0 then
     206      begin
     207        Inc(valids);
     208      end;
     209      Inc(i);
     210    until valids > ID;
     211    Result := FRawParts[i - 1];
     212  end
    183213  else
    184214    with Result do
  • oup/current/Tools/MetaEditor.dfm

    r229 r232  
    11inherited Form_Meta: TForm_Meta
    22  Caption = 'Form_Meta'
     3  ClientHeight = 449
    34  OnCreate = FormCreate
     5  ExplicitWidth = 606
     6  ExplicitHeight = 476
    47  PixelsPerInch = 96
    58  TextHeight = 13
    69  inherited panel_basecontent: TPanel
     10    Height = 424
    711    ExplicitLeft = 0
    812    ExplicitTop = 25
     
    1014    ExplicitHeight = 532
    1115    object splitter: TSplitter
    12       Left = 502
     16      Left = 190
    1317      Top = 0
    1418      Width = 8
    15       Height = 532
     19      Height = 424
    1620      Align = alRight
    1721      AutoSnap = False
    1822      Beveled = True
    1923      MinSize = 200
    20       ExplicitLeft = 353
     24      ExplicitLeft = 287
     25      ExplicitTop = 16
     26      ExplicitHeight = 532
    2127    end
    2228    object VST: TVirtualStringTree
    2329      Left = 0
    2430      Top = 0
    25       Width = 502
    26       Height = 532
     31      Width = 190
     32      Height = 424
    2733      Align = alClient
    2834      AnimationDuration = 0
     
    4248      OnPaintText = VSTPaintText
    4349      OnInitChildren = VSTInitChildren
     50      ExplicitWidth = 502
     51      ExplicitHeight = 532
    4452      Columns = <
    4553        item
     
    6169        end>
    6270    end
    63     object Panel2: TPanel
    64       Left = 510
     71    object rightPages: TPageControl
     72      Left = 198
    6573      Top = 0
    66       Width = 88
    67       Height = 532
     74      Width = 400
     75      Height = 424
     76      ActivePage = tab_hex
    6877      Align = alRight
    69       BevelOuter = bvNone
    70       Caption = 'Panel2'
    7178      TabOrder = 1
     79      object tab_meta: TTabSheet
     80        Caption = 'Meta Edit'
     81        ImageIndex = 1
     82        ExplicitWidth = 192
     83        ExplicitHeight = 504
     84      end
     85      object tab_hex: TTabSheet
     86        Caption = 'Binary Edit'
     87        ExplicitWidth = 192
     88        ExplicitHeight = 504
     89        object splitter_hex_1: TSplitter
     90          Left = 0
     91          Top = 100
     92          Width = 392
     93          Height = 8
     94          Cursor = crVSplit
     95          Align = alTop
     96          AutoSnap = False
     97          Beveled = True
     98          MinSize = 40
     99          ExplicitTop = 209
     100          ExplicitWidth = 192
     101        end
     102        object splitter_hex_2: TSplitter
     103          Left = 0
     104          Top = 250
     105          Width = 392
     106          Height = 8
     107          Cursor = crVSplit
     108          Align = alBottom
     109          AutoSnap = False
     110          Beveled = True
     111          MinSize = 40
     112          ExplicitTop = 300
     113          ExplicitWidth = 192
     114        end
     115        object panel_hex_actions: TPanel
     116          Left = 0
     117          Top = 355
     118          Width = 392
     119          Height = 41
     120          Align = alBottom
     121          BevelOuter = bvNone
     122          Caption = 'panel_hex_actions'
     123          TabOrder = 0
     124          ExplicitLeft = 3
     125          ExplicitTop = 354
     126          ExplicitWidth = 192
     127        end
     128        object hex: TMPHexEditor
     129          Left = 0
     130          Top = 0
     131          Width = 392
     132          Height = 100
     133          Cursor = crIBeam
     134          Align = alTop
     135          Font.Charset = DEFAULT_CHARSET
     136          Font.Color = clWindowText
     137          Font.Height = -16
     138          Font.Name = 'Courier'
     139          Font.Style = []
     140          ParentFont = False
     141          TabOrder = 1
     142          BytesPerRow = 16
     143          Translation = tkASCII
     144          OffsetFormat = '6!10:0x|'
     145          Colors.Background = clWindow
     146          Colors.ChangedBackground = clWindow
     147          Colors.ChangedText = clRed
     148          Colors.CursorFrame = clNavy
     149          Colors.Offset = clBlack
     150          Colors.OddColumn = clBlue
     151          Colors.EvenColumn = clNavy
     152          Colors.CurrentOffsetBackground = clBtnShadow
     153          Colors.OffsetBackground = clBtnFace
     154          Colors.CurrentOffset = clBtnHighlight
     155          Colors.Grid = clBtnFace
     156          Colors.NonFocusCursorFrame = clAqua
     157          Colors.ActiveFieldBackground = clWindow
     158          FocusFrame = True
     159          NoSizeChange = True
     160          AllowInsertMode = False
     161          DrawGridLines = False
     162          Version = 'december 06, 2006; '#169' markus stephany, vcl[at]mirkes[dot]de'
     163          ShowPositionIfNotFocused = True
     164          ExplicitWidth = 192
     165        end
     166        object value_viewer: TWrapGrid
     167          Left = 0
     168          Top = 108
     169          Width = 392
     170          Height = 142
     171          Align = alClient
     172          ColCount = 1
     173          DefaultColWidth = 80
     174          DefaultRowHeight = 18
     175          FixedCols = 0
     176          RowCount = 8
     177          FixedRows = 0
     178          Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing]
     179          ScrollBars = ssVertical
     180          TabOrder = 2
     181          ExplicitTop = 363
     182          ExplicitWidth = 192
     183          ExplicitHeight = 0
     184        end
     185        object structviewer: TVirtualStringTree
     186          Left = 0
     187          Top = 258
     188          Width = 392
     189          Height = 97
     190          Align = alBottom
     191          AnimationDuration = 0
     192          AutoExpandDelay = 300
     193          BiDiMode = bdLeftToRight
     194          Colors.UnfocusedSelectionColor = clGradientActiveCaption
     195          Colors.UnfocusedSelectionBorderColor = clGradientActiveCaption
     196          Ctl3D = True
     197          DragOperations = []
     198          DrawSelectionMode = smBlendedRectangle
     199          EditDelay = 200
     200          Font.Charset = DEFAULT_CHARSET
     201          Font.Color = clWindowText
     202          Font.Height = -11
     203          Font.Name = 'Tahoma'
     204          Font.Style = []
     205          Header.AutoSizeIndex = 0
     206          Header.Font.Charset = DEFAULT_CHARSET
     207          Header.Font.Color = clWindowText
     208          Header.Font.Height = -11
     209          Header.Font.Name = 'Tahoma'
     210          Header.Font.Style = []
     211          Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoVisible]
     212          Header.Style = hsFlatButtons
     213          HintAnimation = hatNone
     214          HintMode = hmTooltip
     215          Indent = 14
     216          ParentBiDiMode = False
     217          ParentCtl3D = False
     218          ParentFont = False
     219          ParentShowHint = False
     220          ShowHint = True
     221          TabOrder = 3
     222          TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning]
     223          TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toShowHorzGridLines, toShowRoot, toShowTreeLines, toShowVertGridLines, toUseBlendedImages]
     224          TreeOptions.SelectionOptions = [toExtendedFocus, toFullRowSelect, toRightClickSelect]
     225          OnFocusChanged = VSTFocusChanged
     226          OnGetText = VSTGetText
     227          ExplicitLeft = -6
     228          ExplicitTop = 161
     229          ExplicitWidth = 192
     230          Columns = <
     231            item
     232              MaxWidth = 300
     233              MinWidth = 100
     234              Options = [coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible]
     235              Position = 0
     236              Spacing = 20
     237              Width = 150
     238              WideText = 'Name'
     239              WideHint = 'Name of the item.'
     240            end
     241            item
     242              MaxWidth = 110
     243              MinWidth = 80
     244              Options = [coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible]
     245              Position = 1
     246              Spacing = 20
     247              Width = 85
     248              WideText = 'Offset'
     249              WideHint = 'Offset of the data-item.'
     250            end
     251            item
     252              MaxWidth = 110
     253              MinWidth = 75
     254              Options = [coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible]
     255              Position = 2
     256              Width = 75
     257              WideText = 'Type'
     258              WideHint = 'Data type of the item.'
     259            end
     260            item
     261              MaxWidth = 250
     262              MinWidth = 80
     263              Options = [coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible]
     264              Position = 3
     265              Width = 100
     266              WideText = 'Value'
     267              WideHint = 'Value of the item.'
     268            end
     269            item
     270              MaxWidth = 400
     271              MinWidth = 80
     272              Options = [coDraggable, coEnabled, coParentBidiMode, coParentColor, coResizable, coShowDropMark, coVisible]
     273              Position = 4
     274              Width = 400
     275              WideText = 'Description'
     276            end>
     277          WideDefaultText = ''
     278        end
     279      end
    72280    end
    73281  end
  • oup/current/Tools/MetaEditor.pas

    r231 r232  
    55uses
    66  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    7   Dialogs, _BaseTemplate, ExtCtrls, VirtualTrees, StdCtrls;
     7  Dialogs, _BaseTemplate, ExtCtrls, VirtualTrees, StdCtrls, ComCtrls, Grids,
     8  MPHexEditor, Wrapgrid;
    89
    910type
    1011  TForm_Meta = class(TForm_BaseTemplate)
    1112    VST: TVirtualStringTree;
    12     Panel2: TPanel;
    1313    splitter: TSplitter;
     14    rightPages: TPageControl;
     15    tab_hex: TTabSheet;
     16    tab_meta: TTabSheet;
     17    panel_hex_actions: TPanel;
     18    hex: TMPHexEditor;
     19    splitter_hex_1: TSplitter;
     20    value_viewer: TWrapGrid;
     21    splitter_hex_2: TSplitter;
     22    structviewer: TVirtualStringTree;
    1423    procedure FormCreate(Sender: TObject);
    1524    procedure VSTInitChildren(Sender: TBaseVirtualTree; Node: PVirtualNode;
     
    3443implementation
    3544{$R *.dfm}
    36 uses _MetaManager, _MetaTypes, ConnectionManager, Data;
     45uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes;
    3746
    3847type
     
    6170  node: PVirtualNode;
    6271  Meta: TMetaManager;
     72  root: TExtensions;
    6373begin
    6474  if ID >= 0 then
    6575  begin
     76    //VST
    6677    VST.Clear;
    6778    VST.BeginUpdate;
    68     Meta := ConManager.Connection[ID].MetaData;
    69     for i := 0 to Meta.FileCount - 1 do
    70     begin
    71       if Assigned(Meta.FileById[i]) then
    72       begin
    73         data.Field := Meta.FileById[i];
    74         node := AddVSTEntry(VST, nil, data);
    75         if Meta.FileById[i].ChildCount > 0 then
    76           VST.HasChildren[node] := True;
    77       end;
     79    root := ConManager.Connection[FConnectionID].MetaData.Root;
     80    for i := 0 to High(root) do
     81    begin
     82      data.Field := root[i];
     83      node := AddVSTEntry(VST, nil, data);
     84      VST.HasChildren[node] := True;
    7885    end;
    7986    VST.EndUpdate;
     
    93100begin
    94101  data := Sender.GetNodeData(node);
    95   Meta := ConManager.Connection[ID].MetaData;
    96   for i := 0 to TFile(data.Field).ChildCount - 1 do
    97   begin
    98     id := TFile(data.Field).LinkByIndex[i].DestID;
    99     Meta.InitFile(id);
    100     newdata.Field := Meta.FileById[id];
    101     newnode := AddVSTEntry(TCustomVirtualStringTree(Sender), Node, newdata);
    102     if Meta.FileById[id].ChildCount > 0 then
    103       Sender.HasChildren[newnode] := True;
     102  Meta := ConManager.Connection[ConnectionID].MetaData;
     103  if data.Field is TFile then
     104  begin
     105    if TFile(data.Field).ChildCount > 0 then
     106    begin
     107      for i := 0 to TFile(data.Field).ChildCount - 1 do
     108      begin
     109        id := TFile(data.Field).LinkByIndex[i].DestID;
     110        Meta.InitFile(id);
     111        newdata.Field := Meta.FileById[id];
     112        newnode := AddVSTEntry(TCustomVirtualStringTree(Sender), Node, newdata);
     113        if Meta.FileById[id].ChildCount > 0 then
     114          Sender.HasChildren[newnode] := True;
     115      end;
     116    end;
     117    if TFile(data.Field).RawCount > 0 then
     118    begin
     119      for i := 0 to TFile(data.Field).RawCount - 1 do
     120      begin
     121//        Exit;
     122      end;
     123    end;
     124  end;
     125  if data.Field is TExtension then
     126  begin
     127    if TExtension(data.Field).FileCount = 0 then
     128      TExtension(data.Field).InitList;
     129    for i := 0 to TExtension(data.Field).FileCount - 1 do
     130    begin
     131      id := TExtension(data.Field).Files[i];
     132      Meta.InitFile(id);
     133      newdata.Field := Meta.FileById[id];
     134      newnode := AddVSTEntry(TCustomVirtualStringTree(Sender), Node, newdata);
     135      if Meta.FileById[id].ChildCount > 0 then
     136        Sender.HasChildren[newnode] := True;
     137    end;
    104138  end;
    105139  ChildCount := Sender.ChildCount[Node];
     
    118152    if Assigned(TFile(data.Field).Editor) then
    119153    begin
    120       panel2.InsertControl(TFile(data.Field).Editor);
     154      TFile(data.Field).Editor.Align := alClient;
     155      tab_meta.InsertControl(TFile(data.Field).Editor);
    121156      TFile(data.Field).Opened := True;
    122157    end;
     
    148183      if TFile(data.Field).Opened then
    149184      begin
    150         if panel2.ControlCount > 0 then
    151           for i := 0 to panel2.ControlCount - 1 do
    152             panel2.RemoveControl(panel2.Controls[i]);
     185        if tab_meta.ControlCount > 0 then
     186          for i := 0 to tab_meta.ControlCount - 1 do
     187            tab_meta.RemoveControl(tab_meta.Controls[i]);
    153188        TFile(data.Field).Opened := False;
    154189      end;
     
    176211              CellText := 'Unnamed';
    177212          end;
     213          if Data.Field is TExtension then
     214            CellText := TExtension(Data.Field).Ext;
    178215        end;
    179216      1:
  • oup/current/Tools/TxmpReplace.dfm

    r224 r232  
    11inherited Form_TxmpReplace: TForm_TxmpReplace
    22  Caption = 'Form_TxmpReplace'
    3   ClientHeight = 573
     3  ClientHeight = 438
    44  OnCreate = FormCreate
    5   ExplicitHeight = 600
     5  ExplicitHeight = 465
    66  PixelsPerInch = 96
    77  TextHeight = 13
    88  inherited panel_basecontent: TPanel
    9     Height = 548
     9    Height = 413
     10    ExplicitHeight = 548
    1011    inherited splitter_content: TSplitter
    11       Height = 548
     12      Height = 413
    1213      OnMoved = Splitter1Moved
     14      ExplicitHeight = 548
    1315    end
    1416    inherited panel_files: TPanel
    15       Height = 548
     17      Height = 413
     18      ExplicitHeight = 548
    1619      inherited FilePages: TPageControl
    17         Height = 547
     20        Height = 412
    1821        Constraints.MinHeight = 250
    19         ExplicitHeight = 280
     22        ExplicitHeight = 547
    2023        inherited tab_files: TTabSheet
    21           inherited panel_extension: TPanel
    22             inherited edit_filtername: TEdit
    23               ExplicitWidth = 189
    24             end
    25           end
     24          ExplicitHeight = 467
    2625          inherited filelist: TListBox
    27             Height = 394
     26            Height = 259
     27            ExplicitHeight = 342
    2828          end
    2929        end
     
    3232          ExplicitTop = 24
    3333          ExplicitWidth = 190
    34           ExplicitHeight = 424
     34          ExplicitHeight = 519
     35          inherited filelist_meta: TVirtualStringTree
     36            Height = 384
     37            ExplicitHeight = 519
     38          end
    3539        end
    3640      end
    3741    end
    3842    inherited panel_content: TPanel
    39       Height = 548
     43      Height = 413
     44      ExplicitHeight = 548
    4045      object Splitter1: TSplitter
    4146        Left = 0
    42         Top = 220
     47        Top = 200
    4348        Width = 390
    4449        Height = 8
     
    5358      object group_options: TGroupBox
    5459        Left = 0
    55         Top = 469
     60        Top = 334
    5661        Width = 390
    5762        Height = 79
     
    6065        Enabled = False
    6166        TabOrder = 0
    62         ExplicitTop = 441
    63         ExplicitWidth = 492
     67        ExplicitTop = 469
    6468        object btn_replace: TButton
    6569          Left = 4
     
    8993        end
    9094      end
    91       object GroupBox1: TGroupBox
     95      object group_txmp: TGroupBox
    9296        Left = 0
    9397        Top = 0
    9498        Width = 390
    95         Height = 220
     99        Height = 200
    96100        Align = alTop
    97101        Caption = '1. Select a TXMP to be replaced'
     
    101105          Top = 15
    102106          Width = 386
    103           Height = 173
     107          Height = 153
    104108          Align = alClient
    105109          ExplicitLeft = 0
     
    110114        object panel_txmppreview: TPanel
    111115          Left = 2
    112           Top = 188
     116          Top = 168
    113117          Width = 386
    114118          Height = 30
     
    116120          BevelOuter = bvNone
    117121          TabOrder = 0
    118           ExplicitLeft = 0
    119           ExplicitTop = 411
    120           ExplicitWidth = 200
     122          ExplicitTop = 188
    121123          object btn_save: TButton
    122124            Left = 2
     
    132134      object group_bmpselect: TGroupBox
    133135        Left = 0
    134         Top = 228
     136        Top = 208
    135137        Width = 390
    136         Height = 241
     138        Height = 126
    137139        Align = alClient
    138140        Caption = '2. Open BMP to replace with'
    139141        Enabled = False
    140142        TabOrder = 2
    141         ExplicitTop = 0
    142         ExplicitWidth = 283
    143         ExplicitHeight = 441
     143        ExplicitLeft = -2
     144        ExplicitTop = 206
    144145        object image_bmppreview: TImage
    145146          AlignWithMargins = True
     
    147148          Top = 48
    148149          Width = 380
    149           Height = 188
     150          Height = 73
    150151          Align = alClient
    151152          ExplicitLeft = 2
     
    184185    Options = [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]
    185186    Left = 352
    186     Top = 212
     187    Top = 196
    187188  end
    188189  object opend: TOpenDialog
    189190    Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing]
    190191    Left = 352
    191     Top = 264
     192    Top = 248
    192193  end
    193194end
  • oup/current/Tools/TxmpReplace.pas

    r224 r232  
    66  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    77  Dialogs, _TemplateFileList, Menus, StdCtrls, Buttons, ComCtrls, ExtCtrls,
    8   OniImgClass, TypeDefs;
     8  OniImgClass, TypeDefs, VirtualTrees;
    99
    1010type
     
    1414    check_transparency: TCheckBox;
    1515    check_fading: TCheckBox;
    16     GroupBox1: TGroupBox;
     16    group_txmp: TGroupBox;
    1717    Splitter1: TSplitter;
    1818    group_bmpselect: TGroupBox;
Note: See TracChangeset for help on using the changeset viewer.