ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Main.pas
(Generate patch)

Comparing oup/current/Main.pas (file contents):
Revision 209 by alloc, Mon Jun 4 22:07:29 2007 UTC vs.
Revision 248 by alloc, Mon Nov 26 11:02:28 2007 UTC

# Line 6 | Line 6 | uses
6    MPHexEditor, ToolWin, ImgList, Tabs,
7    MDITab, TB2Item, TB2Dock, TB2Toolbar, TB2MDI, OneInst,
8    Data, TypeDefs, ConnectionManager,
9 <  Functions, Settings, Template,
10 <  RawEdit, BinEdit, Extractor, Preview, TxmpReplace;
9 >  Functions, Settings,
10 >  RawEdit, BinEdit, Extractor, Preview, TxmpReplace,
11 >  _BaseTemplate, _TemplateFile, _TemplateFileList;
12  
13   type
14    TForm_Main = class(TForm)
# Line 43 | Line 44 | type
44      menu_windows_previous: TTBItem;
45      menu_sep2:  TTBSeparatorItem;
46      menu_About: TTBItem;
47 <    Toolbar:    TTBToolbar;
47 >    Toolbar_main: TTBToolbar;
48      tbOpen:     TTBItem;
49      DockLeft:   TTBDock;
50      DockRight:  TTBDock;
# Line 56 | Line 57 | type
57      menu_view_statusbar: TTBItem;
58      menu_view_toolbar: TTBItem;
59      tb_separator1: TTBSeparatorItem;
59    tb_preview: TTBItem;
60    tb_structure: TTBItem;
61    tb_compare: TTBItem;
62    tb_extractor: TTBItem;
63    tb_txmpreplacer: TTBItem;
64    tb_rawedit: TTBItem;
65    tb_datedit: TTBItem;
60      menu_windows_tilevert: TTBItem;
67    tb_meta: TTBItem;
61      menu_meta: TTBItem;
62      TBSeparatorItem1: TTBSeparatorItem;
63      tb_db2dat: TTBItem;
# Line 74 | Line 67 | type
67      Images_Close: TImageList;
68      menu_conns: TTBSubmenuItem;
69      menu_windows: TTBSubmenuItem;
70 +    menu_filemanager: TTBItem;
71 +    Toolbar_tools: TTBToolbar;
72 +    tb_preview: TTBItem;
73 +    tb_datedit: TTBItem;
74 +    tb_rawedit: TTBItem;
75 +    tb_txmpreplacer: TTBItem;
76 +    tb_extractor: TTBItem;
77 +    tb_meta: TTBItem;
78 +    tb_filemanager: TTBItem;
79 +    tb_compare: TTBItem;
80 +    tb_structure: TTBItem;
81 +    menu_view_toolbar_tools: TTBItem;
82      procedure FormClose(Sender: TObject; var Action: TCloseAction);
83      procedure FormResize(Sender: TObject);
84      procedure FormCreate(Sender: TObject);
# Line 88 | Line 93 | type
93        Shift: TShiftState; X, Y: Integer);
94      procedure MDITabMouseMove(Sender: TObject; Shift: TShiftState; X,
95        Y: Integer);
96 <    procedure ToolbarDockChanged(Sender: TObject);
96 >    procedure Toolbar_mainDockChanged(Sender: TObject);
97      procedure CreateConnection(filename: String);
98      function CheckConnectionCloseable(index: Integer): Boolean;
99  
# Line 107 | Line 112 | type
112      procedure menu_txmpreplaceClick(Sender: TObject);
113      procedure menu_previewClick(Sender: TObject);
114      procedure menu_metaClick(Sender: TObject);
110    function open_child(window_context: String; connection, fileid: Integer): TForm_ToolTemplate;
115  
116      procedure menu_windows_cascadeClick(Sender: TObject);
117      procedure menu_windows_tilevertClick(Sender: TObject);
# Line 124 | Line 128 | type
128      procedure menu_AboutClick(Sender: TObject);
129  
130      procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
131 +    procedure menu_filemanagerClick(Sender: TObject);
132 +    procedure menu_view_toolbar_toolsClick(Sender: TObject);
133    private
134    public
135 +    function open_child(window_context: String; Connection, FileID: Integer): TForm_BaseTemplate; overload;
136 +    function open_child(window_context: String; Connection: Integer): TForm_BaseTemplate; overload;
137 +    function open_child(window_context: String): TForm_BaseTemplate; overload;
138      procedure DefaultHandler(var Message); override;
139    end;
140  
# Line 135 | Line 144 | var
144   implementation
145  
146   uses
147 <  LevelDB, MetaEditor;
147 >  LevelDB, MetaEditor, FileManager;
148  
149   {$R *.dfm}
150  
# Line 167 | Line 176 | end;
176   function TForm_Main.CheckConnectionCloseable(index: Integer): Boolean;
177   var
178    i: Integer;
179 <  toolform: TForm_ToolTemplate;
179 >  toolform: TForm_BaseTemplate;
180   begin
181    Result := True;
182    if MDITab.MDIChildCount > 0 then
183    begin
184      for i := 0 to MDITab.MDIChildCount - 1 do
185      begin
186 <      if MDITab.MDIChildren[i] is TForm_ToolTemplate then
186 >      if MDITab.MDIChildren[i] is TForm_BaseTemplate then
187        begin
188 <        toolform := TForm_ToolTemplate(MDITab.MDIChildren[i]);
188 >        toolform := TForm_BaseTemplate(MDITab.MDIChildren[i]);
189          if toolform.ConnectionID = ConManager.ConnectionByIndex[index].ConnectionID then
190          begin
191            if not toolform.Closeable then
# Line 208 | Line 217 | begin
217        begin
218          ShowMessage('Load OPF-File: ' + ParamStr(2));
219        end
220 <      else if (strings.Strings[0] = 'oldb') or (strings.Strings[0] = 'dat') then
220 >      else if (strings.Strings[0] = 'oldb') or (strings.Strings[0] = 'dat') or (strings.Strings[0] = 'oni') then
221        begin
222          CreateConnection(strings.Strings[1]);
223        end;
# Line 244 | Line 253 | begin
253  
254    ConManager.OnCoonnectionListChanged := UpdateConLists;
255  
256 +  Application.HintPause := 250;
257 +  Application.HintHidePause := 5000;
258 +
259    if FileExists(ExtractFilepath(Application.EXEname) + '\oniunpacker.ini') then
260    begin
261      AssignFile(AppSettingsFile, ExtractFilepath(Application.EXEname) +
# Line 268 | Line 280 | begin
280    begin
281      ShowMessage('Load OPF-File: ' + ParamStr(2));
282    end
283 <  else if (MidStr(ParamStr(1), 1, 4) = 'oldb') or (MidStr(ParamStr(1), 1, 3) = 'dat') then
283 >  else if (MidStr(ParamStr(1), 1, 4) = 'oldb') or (MidStr(ParamStr(1), 1, 3) = 'dat') or (MidStr(ParamStr(1), 1, 3) = 'oni') then
284    begin
285      CreateConnection(ParamStr(2));
286    end;
# Line 322 | Line 334 | var
334    pt: TPoint;
335    tabIndex: Integer;
336    hint: String;
337 <  tool: TForm_ToolTemplate;
337 >  tool: TForm_BaseTemplate;
338   begin
339    pt.X := X;
340    pt.Y := Y;
# Line 331 | Line 343 | begin
343  
344    if tabIndex >= 0 then
345    begin
346 <    if MDITab.MDIChildren[tabIndex] is TForm_ToolTemplate then
346 >    if MDITab.MDIChildren[tabIndex] is TForm_BaseTemplate then
347      begin
348 <      tool := TForm_ToolTemplate(MDITab.MDIChildren[tabIndex]);
348 >      tool := TForm_BaseTemplate(MDITab.MDIChildren[tabIndex]);
349        if tool.ConnectionID > -1 then
350          hint := 'Connection: ' +
351 <              ExtractFileName(ConManager.Connection[tool.ConnectionID].FileName) + #13+#10
340 <      else
341 <        hint := 'Connection: none' + #13+#10;
342 <      if tool.SelectedFile.ID > -1 then
343 <        hint := hint + 'Selected File: ' +
344 <              FormatNumber(tool.SelectedFile.ID, 5, '0') + '-' +
345 <              tool.SelectedFile.Name + '.' +
346 <              tool.SelectedFile.Extension
351 >              ExtractFileName(ConManager.Connection[tool.ConnectionID].FileName)
352        else
353 <        hint := hint + 'Selected File: none';
353 >        hint := 'Connection: none';
354 >      if tool is TForm_TemplateFile then
355 >      begin
356 >        if TForm_TemplateFile(tool).SelectedFile.ID > -1 then
357 >          hint := hint + #13+#10 + 'Selected File: ' +
358 >                FormatNumber(TForm_TemplateFile(tool).SelectedFile.ID, 5, '0') + '-' +
359 >                TForm_TemplateFile(tool).SelectedFile.Name + '.' +
360 >                TForm_TemplateFile(tool).SelectedFile.Extension
361 >        else
362 >          hint := hint + #13+#10 + 'Selected File: none';
363 >      end;
364      end
365      else
366        hint := 'Window: ' + MDITab.MDIChildren[tabIndex].Caption;
# Line 441 | Line 456 | end;
456  
457  
458  
459 < procedure TForm_Main.ToolbarDockChanged(Sender: TObject);
459 > procedure TForm_Main.Toolbar_mainDockChanged(Sender: TObject);
460   var
461    toolbar: TTBToolbar;
462    position: TTBDockPosition;
# Line 480 | Line 495 | var
495   begin
496    if MDITab.MDIChildCount > 0 then
497      for i := 0 to MDITab.MDIChildCount - 1 do
498 <      if MDITab.MDIChildren[i] is TForm_ToolTemplate then
499 <        TForm_ToolTemplate(MDITab.MDIChildren[i]).UpdateConList;
498 >      if MDITab.MDIChildren[i] is TForm_BaseTemplate then
499 >        TForm_BaseTemplate(MDITab.MDIChildren[i]).UpdateConList;
500  
501    menu_conns.Clear;
502    if ConManager.Count > 0 then
# Line 493 | Line 508 | begin
508        entry.Name := 'menu_conn_' + IntToStr(i);
509        entry.OnClick := menu_conns_itemClick;
510        menu_conns.Add(entry);
496      entry := nil;
511      end;
512    end;
513   end;
# Line 504 | Line 518 | var
518    i: Integer;
519   begin
520    opend.InitialDir := AppSettings.DatPath;
521 <  opend.Filter     := 'Compatible level files|*.dat;*.oldb|Oni level (*.dat)|*.dat|OUP level database (*.oldb)|*.oldb|Any (*.*)|*';
521 >  opend.Filter     := 'Compatible level files|*.dat;*.oni;*.oldb|Oni level (*.dat)|*.dat|OniSplit Archive (*.oni)|*.oni|OUP level database (*.oldb)|*.oldb|Any (*.*)|*';
522    if typedb then
523 <    opend.FilterIndex := 3
523 >    opend.FilterIndex := 4
524    else
525      opend.FilterIndex := 2;
526    if opend.Execute then
# Line 552 | Line 566 | end;
566   {####################################}
567   procedure TForm_Main.menu_createdbClick(Sender: TObject);
568   begin
555 //  ShowMessage('Not yet usable');
556
569    opend.Filter     := 'Oni-Dat-Files|*.dat';
570    saved.Filter     := 'OUP-Level-DB (*.oldb)|*.oldb';
571    saved.DefaultExt := 'oldb';
# Line 565 | Line 577 | end;
577  
578   procedure TForm_Main.menu_createlvlClick(Sender: TObject);
579   begin
568 //  ShowMessage('Not yet usable');
569
580    opend.Filter     := 'OUP-Level-DB (*.oldb)|*.oldb';
581    saved.Filter     := 'Oni-Dat-Files|*.dat';
582    saved.DefaultExt := 'dat';
# Line 581 | Line 591 | end;
591   {#################################}
592   procedure TForm_Main.menu_previewClick(Sender: TObject);
593   begin
594 <  open_child('preview', -1, -1);
594 >  open_child('preview');
595   end;
596  
597   procedure TForm_Main.menu_bineditClick(Sender: TObject);
598   begin
599 <  open_child('binedit', -1, -1);
599 >  open_child('binedit');
600   end;
601  
602   procedure TForm_Main.menu_raweditClick(Sender: TObject);
603   begin
604 <  open_child('rawedit', -1, -1);
604 >  open_child('rawedit');
605   end;
606  
607   procedure TForm_Main.menu_txmpreplaceClick(Sender: TObject);
608   begin
609 <  open_child('txmpreplace', -1, -1);
609 >  open_child('txmpreplace');
610   end;
611  
612   procedure TForm_Main.menu_extractorClick(Sender: TObject);
613   begin
614 <  open_child('extractor', -1, -1);
614 >  open_child('extractor');
615   end;
616  
617   procedure TForm_Main.menu_metaClick(Sender: TObject);
608 var
609  toolform:    TForm_Meta;
610  i:           Integer;
611  tag:         Integer;
612  iconindex:   Integer;
618   begin
619 <  tag := 1;
615 <  if MDIChildCount > 0 then
616 <    for i := 0 to MDIChildCount - 1 do
617 <      if MDIChildren[i].Tag >= tag then
618 <        tag := MDIChildren[i].Tag + 1;
619 <
620 <  iconindex := -1;
621 <
622 <  toolform := nil;
623 <
624 <  toolform         := TForm_Meta.Create(Self);
625 <  toolform.Caption := 'MetaEditor' + ' ' + IntToStr(tag) + '       ';
626 <  iconindex        := 11;
627 <
628 <  if Assigned(toolform) then
629 <  begin
630 <    toolform.Name    := 'meta' + IntToStr(tag);
631 <    toolform.Tag     := tag;
632 <    MDITab.AddTab(TForm(toolform), iconindex);
633 <    toolform.Caption := AnsiReplaceStr(toolform.Caption, '       ', '');
634 <  end;
619 >  open_child('meta');
620   end;
621  
622   procedure TForm_Main.menu_filecompareClick(Sender: TObject);
623   begin
624 <  open_child('compare', -1, -1);
624 >  open_child('compare');
625   end;
626  
627  
628 < {#################################}
628 > procedure TForm_Main.menu_filemanagerClick(Sender: TObject);
629 > begin
630 >  open_child('filemanager');
631 > end;
632 >
633 > {#################################}
634   {#####   View-Menu-Handlers  #####}
635   {#################################}
636   procedure TForm_Main.menu_windows_cascadeClick(Sender: TObject);
# Line 705 | Line 695 | var
695    index: Integer;
696    RepMsg: TStatusMessages;
697   begin
708 //  name := TTBItem(Sender).Caption;
698    index := TTBItem(Sender).Parent.IndexOf(TTBItem(Sender));
699    name := ExtractFileName(ConManager.ConnectionByIndex[index].FileName);
700    if MessageBox(Handle, PChar('Do you really want to close data-connection to' +#13+#10+
# Line 726 | Line 715 | end;
715   procedure TForm_Main.menu_view_toolbarClick(Sender: TObject);
716   begin
717    menu_view_toolbar.Checked := not menu_view_toolbar.Checked;
718 <  Toolbar.Visible := menu_view_toolbar.Checked;
718 >  Toolbar_main.Visible := menu_view_toolbar.Checked;
719 > end;
720 >
721 > procedure TForm_Main.menu_view_toolbar_toolsClick(Sender: TObject);
722 > begin
723 >  menu_view_toolbar_tools.Checked := not menu_view_toolbar_tools.Checked;
724 >  Toolbar_tools.Visible := menu_view_toolbar_tools.Checked;
725   end;
726  
727   procedure TForm_Main.menu_view_statusbarClick(Sender: TObject);
# Line 752 | Line 747 | end;
747  
748  
749  
750 < function TForm_Main.open_child(window_context: String; connection, fileid: Integer): TForm_ToolTemplate;
750 > function TForm_Main.open_child(window_context: String; connection, fileid: Integer): TForm_BaseTemplate;
751   type
752 <  TTemplate = class of TForm_ToolTemplate;
752 >  TTemplate = class of TForm_BaseTemplate;
753    TTool = record
754        name: String;
755        icon: Integer;
# Line 762 | Line 757 | type
757        classt: TTemplate;
758    end;
759   const
760 <  Tools: array[0..4] of TTool = (
760 >  Tools: array[0..6] of TTool = (
761      (name: 'binedit';     icon: 5; caption: 'Binary .dat-Editor'; classt: TForm_BinEdit),
762      (name: 'extractor';   icon: 8; caption: 'Extractor';          classt: TForm_Extractor),
763      (name: 'preview';     icon: 4; caption: 'Preview-Window';     classt: TForm_Preview),
764      (name: 'rawedit';     icon: 6; caption: 'Binary .raw-Editor'; classt: TForm_RawEdit),
765 <    (name: 'txmpreplace'; icon: 7; caption: 'TXMP Replacer';      classt: TForm_TxmpReplace)
765 >    (name: 'txmpreplace'; icon: 7; caption: 'TXMP Replacer';      classt: TForm_TxmpReplace),
766 >    (name: 'filemanager'; icon:-1; caption: 'FileManager';        classt: TForm_FileManager),
767 >    (name: 'meta'; icon: 11; caption: 'MetaEditor'; classt: TForm_Meta)
768    );
769   var
770 <  toolform:    TForm_ToolTemplate;
770 >  toolform:    TForm_BaseTemplate;
771    i:           Integer;
772    tag:         Integer;
773    iconindex:   Integer;
# Line 805 | Line 802 | begin
802      toolform.Tag     := tag;
803      MDITab.AddTab(TForm(toolform), iconindex);
804      toolform.Caption := AnsiReplaceStr(toolform.Caption, '       ', '');
805 <    if connection > -1 then
805 >    if Connection > -1 then
806      begin
807        toolform.SelectConnection(connection);
808 <      if fileid > -1 then
809 <        toolform.SelectFileID(connection, fileid);
808 >      if (FileID > -1) and (toolform is TForm_TemplateFile) then
809 >        TForm_TemplateFile(toolform).SelectFileID(Connection, FileID);
810      end;
811      Result := toolform;
812    end;
813   end;
814  
815 + function TForm_Main.open_child(window_context: String; Connection: Integer): TForm_BaseTemplate;
816 + begin
817 +  Result := open_child(window_context, Connection, -1);
818 + end;
819 +
820 + function TForm_Main.open_child(window_context: String): TForm_BaseTemplate;
821 + begin
822 +  Result := open_child(window_context, -1, -1);
823 + end;
824 +
825   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)