Ignore:
Timestamp:
Jan 14, 2007, 9:19:08 PM (18 years ago)
Author:
alloc
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • oup/current/Tools/Template.pas

    r83 r86  
    1010type
    1111  TNewFileSelectedEvent = procedure(fileinfo: TFileInfo) of object;
     12  TNewConnectionEvent = procedure(connection: TOniData) of object;
    1213
    1314  TForm_ToolTemplate = class(TForm)
     
    3637    Label1: TLabel;
    3738    Label2: TLabel;
     39    Label3: TLabel;
     40    combo_connection: TComboBox;
     41    Bevel1: TBevel;
    3842    procedure RecreateList;
     43    procedure UpdateList;
     44    procedure RecreateExtList;
    3945    procedure LoadFileNames;
    4046    procedure SelectFileName(filename: String);
     
    5662    procedure btn_sortClick(Sender: TObject);
    5763    procedure FormActivate(Sender: TObject);
     64    procedure combo_connectionChange(Sender: TObject);
    5865  private
    5966    FSortBy: TSortType;
    6067    FOnNewFileSelected: TNewFileSelectedEvent;
     68    FOnNewConnection: TNewConnectionEvent;
    6169    FAllowedExts: String;
    6270    FAllowMultiSelect: Boolean;
    6371    FSelectedFile: TFileInfo;
     72    FConnection: TOniData;
    6473    procedure SetAllowedExts(exts: String);
    6574    procedure SetMultiSelect(allow: Boolean);
     
    6978  published
    7079    property OnNewFileSelected: TNewFileSelectedEvent read FOnNewFileSelected write FOnNewFileSelected;
     80    property OnNewConnection: TNewConnectionEvent read FOnNewConnection write FOnNewConnection;
    7181    property AllowedExts: String read FAllowedExts write SetAllowedExts;
    7282    property AllowMultiSelect: Boolean read FAllowMultiSelect write SetMultiSelect;
    7383    property SelectedFile: TFileInfo read FSelectedFile;
     84    property Connection: TOniData read FConnection;
    7485  end;
    7586
     
    8394
    8495
     96procedure TForm_ToolTemplate.UpdateList;
     97var
     98  i: Integer;
     99  fn, datatype, boxstring: String;
     100  level: Integer;
     101  oldcon: String;
     102begin
     103  oldcon := combo_connection.Items.Strings[combo_connection.ItemIndex];
     104  combo_connection.Items.Clear;
     105  for i := 0 to High(DataConnections) do
     106  begin
     107    level := DataConnections[i].LevelInfo.LevelNumber;
     108    fn := ExtractFileName(DataConnections[i].FileName);
     109    if DataConnections[i].Backend = ODB_Dat then
     110      datatype := 'ONI-.dat: '
     111    else if DataConnections[i].Backend = ODB_ADB then
     112      datatype := 'OUP-DB: '
     113    else
     114      datatype := 'Unknown: ';
     115    boxstring := datatype + fn + ' (Level: ' + IntToStr(level) + ')';
     116    combo_connection.Items.Add(boxstring);
     117    if oldcon = boxstring then
     118      combo_connection.ItemIndex := combo_connection.Items.Count - 1;
     119  end;
     120end;
     121
    85122procedure TForm_ToolTemplate.RecreateList;
     123var
     124  i: Integer;
     125  fn, datatype: String;
     126  level: Integer;
     127begin
     128  combo_connection.Items.Clear;
     129  for i := 0 to High(DataConnections) do
     130  begin
     131    level := DataConnections[i].LevelInfo.LevelNumber;
     132    fn := ExtractFileName(DataConnections[i].FileName);
     133    if DataConnections[i].Backend = ODB_Dat then
     134      datatype := 'ONI-.dat: '
     135    else if DataConnections[i].Backend = ODB_ADB then
     136      datatype := 'OUP-DB: '
     137    else
     138      datatype := 'Unknown: ';
     139    combo_connection.Items.Add(datatype + fn + ' (Level: ' + IntToStr(level) + ')');
     140  end;
     141  FConnection := DataConnections[0];
     142  combo_connection.ItemIndex := 0;
     143  combo_connectionChange(Self);
     144end;
     145
     146procedure TForm_ToolTemplate.RecreateExtList;
    86147var
    87148  i:    LongWord;
     
    90151  combo_extension.Items.Clear;
    91152  combo_extension.Items.Add('_All files_ (' +
    92     IntToStr(OniDataConnection.GetFilesCount) + ')');
    93   exts := OniDataConnection.GetExtensionsList;
     153    IntToStr(FConnection.GetFilesCount) + ')');
     154  exts := FConnection.GetExtensionsList;
    94155  for i := 0 to High(exts) do
    95156    if Length(FAllowedExts) > 0 then
     
    127188      Extension := '';
    128189
    129   files := OniDataConnection.GetFilesList(extension, pattern, no_zero_bytes, FSortBy);
     190  files := FConnection.GetFilesList(extension, pattern, no_zero_bytes, FSortBy);
    130191
    131192  filelist.Visible := False;
     
    143204  ext: String;
    144205begin
    145   id := OniDataConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
     206  id := FConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
    146207  ext := RightStr(filelist.Items.Strings[filelist.ItemIndex], 4);
    147208  exportd.Filter := 'Files of matching extension (*.' + ext + ')|*.' + ext + '|All files|*.*';
    148209  exportd.DefaultExt := ext;
    149210  if exportd.Execute then
    150     ExportDatFile(id, exportd.FileName);
     211    ExportDatFile(FConnection, id, exportd.FileName);
    151212end;
    152213
     
    158219  data: TData;
    159220begin
    160   id := OniDataConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
    161   finfo := OniDataConnection.GetFileInfo(id);
     221  id := FConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
     222  finfo := FConnection.GetFileInfo(id);
    162223
    163224  importd.Filter := 'Files of matching extension (*.' + finfo.Extension + ')|*.' +
     
    174235      SetLength(data, fs.Size);
    175236      fs.Read(data[0], fs.Size);
    176       OniDataConnection.UpdateDatFile(id, data);
     237      FConnection.UpdateDatFile(id, data);
    177238      Self.listClick(Self);
    178239    end;
     
    187248begin
    188249  sender_name := TComponent(Sender).Name;
    189   id := OniDataConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
     250  id := FConnection.ExtractFileID(filelist.Items.Strings[filelist.ItemIndex]);
    190251  context := MidStr(sender_name, Pos('_', sender_name) + 1, Length(sender_name) - Pos('_', sender_name));
    191252  Form_Main.open_child(context, id);
    192253end;
    193254
     255procedure TForm_ToolTemplate.combo_connectionChange(Sender: TObject);
     256var
     257  name: String;
     258  nstart, nend: Integer;
     259  i: Integer;
     260begin
     261  if combo_connection.ItemIndex >= 0 then
     262  begin
     263    name := combo_connection.Items.Strings[combo_connection.ItemIndex];
     264    nstart := Pos(' ', name) + 1;
     265    nend := Pos('(', name) - 1;
     266    name := MidStr(name, nstart, nend - nstart);
     267
     268    for i := 0 to High(DataConnections) do
     269    begin
     270      if ExtractFileName(DataConnections[i].FileName) = name then
     271      begin
     272        FConnection := DataConnections[i];
     273        Break;
     274      end;
     275    end;
     276    if i = Length(DataConnections) then
     277      FConnection := nil;
     278
     279    RecreateExtList;
     280    if Assigned(FOnNewConnection) then
     281      FOnNewConnection(FConnection);
     282  end;
     283end;
     284
    194285procedure TForm_ToolTemplate.combo_extensionClick(Sender: TObject);
    195286begin
     
    205296  inherited;
    206297  RecreateList;
     298  FConnection := nil;
    207299  FSelectedFile.ID := -1;
    208300  FSelectedFile.FileName := '';
     
    270362  if filelist.ItemIndex > -1 then
    271363  begin
    272     fileid := OniDataConnection.ExtractFileID(
     364    fileid := FConnection.ExtractFileID(
    273365          filelist.Items.Strings[filelist.ItemIndex]);
    274     FSelectedFile := OniDataConnection.GetFileInfo(fileid);
     366    FSelectedFile := FConnection.GetFileInfo(fileid);
    275367    if Assigned(FOnNewFileSelected) then
    276368      FOnNewFileSelected(FSelectedFile);
     
    298390  if filelist.Items.Count > 0 then
    299391    for i := 0 to filelist.Items.Count - 1 do
    300       if OniDataConnection.ExtractFileID(filelist.Items.Strings[i]) = id then
     392      if FConnection.ExtractFileID(filelist.Items.Strings[i]) = id then
    301393      begin
    302394        filelist.ItemIndex := i;
     
    321413begin
    322414  FAllowedExts := exts;
    323   RecreateList;
     415  RecreateExtList;
    324416end;
    325417
     
    368460  Self.Height := 300;
    369461  FOnNewFileSelected := nil;
     462  FOnNewConnection := nil;
    370463  FAllowedExts := '';
    371464  FAllowMultiSelect := False;
Note: See TracChangeset for help on using the changeset viewer.