--- oup/current/Main.pas 2006/12/18 23:35:30 43 +++ oup/current/Main.pas 2006/12/23 22:16:42 51 @@ -6,10 +6,10 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StrUtils, Clipbrd, ExtCtrls, ComCtrls, Menus, Grids, MPHexEditor, ToolWin, ImgList, Tabs, - Code_Functions, Data, Code_DataStructures, - Helper_LevelDB, Code_Exporters, Settings, - Tool_Preview, Tool_TxmpReplace, Tool_BinEdit, Tool_Extractor, Tool_RawEdit, - Code_OniDataClass, MDITab, TB2Item, TB2Dock, TB2Toolbar, TB2MDI; + MDITab, TB2Item, TB2Dock, TB2Toolbar, TB2MDI, + Data, Functions, DataStructures, OniDataClass, Exporters, + Helper_LevelDB, Settings, Template, + BinEdit, Extractor, Preview, RawEdit, TxmpReplace; type TForm_Main = class(TForm) @@ -65,6 +65,12 @@ type tb_txmpreplacer: TTBItem; tb_rawedit: TTBItem; tb_datedit: TTBItem; + menu_windows_tilevert: TTBItem; + tb_meta: TTBItem; + menu_meta: TTBItem; + TBSeparatorItem1: TTBSeparatorItem; + tb_db2dat: TTBItem; + tb_dat2db: TTBItem; function TryCloseAll: Boolean; procedure menu_AboutClick(Sender: TObject); procedure menu_settingsClick(Sender: TObject); @@ -76,7 +82,7 @@ type procedure menu_windows_previousClick(Sender: TObject); procedure menu_windows_nextClick(Sender: TObject); procedure menu_windows_tileClick(Sender: TObject); - function open_child(window_context: String): Boolean; + function open_child(window_context: String; fileid: Integer): TForm_ToolTemplate; procedure menu_windows_closeallClick(Sender: TObject); procedure menu_windows_cascadeClick(Sender: TObject); procedure menu_bineditClick(Sender: TObject); @@ -96,6 +102,9 @@ type procedure ActivateTools(active: Boolean); procedure MDITabMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure menu_windows_tilevertClick(Sender: TObject); + procedure menu_metaClick(Sender: TObject); + procedure ToolbarDockChanged(Sender: TObject); private public end; @@ -277,6 +286,28 @@ end; +procedure TForm_Main.ToolbarDockChanged(Sender: TObject); +var + toolbar: TTBToolbar; + position: TTBDockPosition; + mode: TTBItemDisplayMode; + i: Integer; + isEnabled: Boolean; +begin + toolbar := TTBToolbar(Sender); + if toolbar.Floating then + mode := nbdmImageAndText + else begin + position := toolbar.CurrentDock.Position; + if position in [dpLeft, dpRight] then + mode := nbdmDefault + else + mode := nbdmImageAndText; + end; + for i := 0 to toolbar.Items.Count - 1 do + toolbar.Items.Items[i].DisplayMode := mode; +end; + function TForm_Main.TryCloseAll: Boolean; begin menu_windows_closeallClick(Self); @@ -304,14 +335,16 @@ begin begin ext := ExtractFileExt(opend.FileName); if ext = '.dat' then + begin if not CreateDataConnection(opend.FileName, ODB_Dat) then ShowMessage('Error while loading the file:' + CrLf + opend.FileName + - CrLf + 'Perhaps not an Oni-.dat-file?') - else if ext = '.oldb' then + CrLf + 'Perhaps not an Oni-.dat-file?'); + end else if ext = '.oldb' then + begin if not CreateDataConnection(opend.FileName, ODB_ADB) then ShowMessage('Error while loading the file:' + CrLf + opend.FileName + - CrLf + 'Perhaps not an OniUnPacker-LevelDatabase-file?') - else + CrLf + 'Perhaps not an OniUnPacker-LevelDatabase-file?'); + end else ShowMessage('Incompatible file'); AppSettings.DatPath := ExtractFilepath(opend.FileName); end; @@ -393,37 +426,43 @@ end; {#################################} procedure TForm_Main.menu_previewClick(Sender: TObject); begin - open_child('preview'); + open_child('preview', -1); end; procedure TForm_Main.menu_txmpreplaceClick(Sender: TObject); begin - open_child('txmpreplace'); + open_child('txmpreplace', -1); end; procedure TForm_Main.menu_bineditClick(Sender: TObject); begin - open_child('binedit'); + open_child('binedit', -1); end; procedure TForm_Main.menu_raweditClick(Sender: TObject); begin - open_child('rawedit'); + open_child('rawedit', -1); end; procedure TForm_Main.menu_extractorClick(Sender: TObject); begin - open_child('extractor'); + open_child('extractor', -1); +end; + + +procedure TForm_Main.menu_metaClick(Sender: TObject); +begin + ShowMessage('TBD'); end; procedure TForm_Main.menu_filecompareClick(Sender: TObject); begin - open_child('compare'); + open_child('compare', -1); end; @@ -472,6 +511,11 @@ begin Self.Tile; end; +procedure TForm_Main.menu_windows_tilevertClick(Sender: TObject); +begin + Self.TileMode := tbVertical; + Self.Tile; +end; procedure TForm_Main.menu_windows_closeallClick(Sender: TObject); @@ -514,14 +558,14 @@ end; -function TForm_Main.open_child(window_context: String): Boolean; +function TForm_Main.open_child(window_context: String; fileid: Integer): TForm_ToolTemplate; var - form: TCustomForm; + toolform: TForm_ToolTemplate; i: Integer; tag: Integer; iconindex: Integer; begin - Result := True; + Result := nil; tag := 1; if MDIChildCount > 0 then @@ -533,40 +577,44 @@ begin if window_context = 'binedit' then begin - form := TForm_BinEdit.Create(Application); - TForm_BinEdit(form).Recreatelist; - form.Caption := 'Binary .dat-Editor ' + IntToStr(tag); - iconindex := 0; + toolform := TForm_BinEdit.Create(Self); + toolform.Caption := 'Binary .dat-Editor ' + IntToStr(tag); + iconindex := 4; end; - if window_context = 'rawedit' then + if window_context = 'extractor' then begin - form := TForm_RawEdit.Create(Application); - TForm_RawEdit(form).Recreatelist; - form.Caption := 'Binary .raw-Editor ' + IntToStr(tag); + toolform := TForm_Extractor.Create(Self); + toolform.Caption := 'Extractor ' + IntToStr(tag); + iconindex := 7; end; if window_context = 'preview' then begin - form := TForm_Preview.Create(Application); - TForm_Preview(form).Recreatelist; - form.Caption := 'Preview-Window ' + IntToStr(tag); + toolform := TForm_Preview.Create(Self); + toolform.Caption := 'Preview-Window ' + IntToStr(tag); + iconindex := 3; end; - if window_context = 'txmpreplace' then + if window_context = 'rawedit' then begin - form := TForm_TxmpReplace.Create(Application); - TForm_TxmpReplace(form).Recreatelist; - form.Caption := 'TXMP Replacer ' + IntToStr(tag); + toolform := TForm_RawEdit.Create(Self); + toolform.Caption := 'Binary .raw-Editor ' + IntToStr(tag); + iconindex := 5; end; - if window_context = 'extractor' then + if window_context = 'txmpreplace' then begin - form := TForm_Extractor.Create(Application); - TForm_Extractor(form).Recreatelist; - form.Caption := 'Extractor ' + IntToStr(tag); + toolform := TForm_TxmpReplace.Create(Application); + toolform.Caption := 'TXMP Replacer ' + IntToStr(tag); + iconindex := 6; end; - form.Name := window_context + IntToStr(tag); - form.Tag := tag; - - MDITab.AddTab(TForm(form), iconindex); + if Assigned(toolform) then + begin + toolform.Name := window_context + IntToStr(tag); + toolform.Tag := tag; + MDITab.AddTab(TForm(toolform), iconindex); + if fileid > -1 then + toolform.SelectFileID(fileid); + Result := toolform; + end; end; end.