source: oup/current/Main.pas@ 118

Last change on this file since 118 was 113, checked in by alloc, 18 years ago
File size: 22.2 KB
RevLine 
[93]1unit Main;
2interface
3uses
4 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
5 Dialogs, StdCtrls, StrUtils, Clipbrd, ExtCtrls, ComCtrls, Menus, Grids,
6 MPHexEditor, ToolWin, ImgList, Tabs,
7 MDITab, TB2Item, TB2Dock, TB2Toolbar, TB2MDI, OneInst,
8 Data, TypeDefs, ConnectionManager,
9// Functions, Exporters, DataStructures,
[97]10 Functions,
[93]11 Settings, {Helper_LevelDB, }
[97]12 Template,
[105]13 RawEdit, BinEdit, Extractor, Preview, TxmpReplace;
[93]14
15type
16 TForm_Main = class(TForm)
17 saved: TSaveDialog;
18 opend: TOpenDialog;
19 statbar: TStatusBar;
20 MenuImages: TImageList;
21 DockTop: TTBDock;
22 MainMenu: TTBToolbar;
23 menu_main: TTBSubmenuItem;
24 menu_loadfile: TTBItem;
25 menu_sep1: TTBSeparatorItem;
26 menu_settings: TTBItem;
27 menu_sep4: TTBSeparatorItem;
28 menu_exit: TTBItem;
29 menu_convert: TTBSubmenuItem;
30 menu_createdb: TTBItem;
31 menu_createlvl: TTBItem;
32 menu_tools: TTBSubmenuItem;
33 menu_preview: TTBItem;
34 menu_binedit: TTBItem;
35 menu_rawedit: TTBItem;
36 menu_txmpreplace: TTBItem;
37 menu_extractor: TTBItem;
38 menu_filecompare: TTBItem;
39 menu_levelstructedit: TTBItem;
40 menu_view: TTBSubmenuItem;
41 menu_windows_cascade: TTBItem;
42 menu_windows_tile: TTBItem;
43 menu_windows_closeall: TTBItem;
44 menu_sep3: TTBSeparatorItem;
45 menu_windows_next: TTBItem;
46 menu_windows_previous: TTBItem;
47 menu_sep2: TTBSeparatorItem;
48 menu_About: TTBItem;
49 Toolbar: TTBToolbar;
50 tbOpen: TTBItem;
51 DockLeft: TTBDock;
52 DockRight: TTBDock;
53 DockBottom: TTBDock;
54 MDIToolbar: TTBToolbar;
55 TBControlItem1: TTBControlItem;
56 MDITab: TMDITab;
57 menu_toolbars: TTBSubmenuItem;
58 menu_view_mdibar: TTBItem;
59 menu_view_statusbar: TTBItem;
60 menu_view_toolbar: TTBItem;
61 tb_separator1: TTBSeparatorItem;
62 tb_preview: TTBItem;
63 tb_structure: TTBItem;
64 tb_compare: TTBItem;
65 tb_extractor: TTBItem;
66 tb_txmpreplacer: TTBItem;
67 tb_rawedit: TTBItem;
68 tb_datedit: TTBItem;
69 menu_windows_tilevert: TTBItem;
70 tb_meta: TTBItem;
71 menu_meta: TTBItem;
72 TBSeparatorItem1: TTBSeparatorItem;
73 tb_db2dat: TTBItem;
74 tb_dat2db: TTBItem;
75 menu_loaddb: TTBItem;
76 tb_opendb: TTBItem;
77 Images_Close: TImageList;
78 menu_conns: TTBSubmenuItem;
79 menu_windows: TTBSubmenuItem;
80 procedure FormClose(Sender: TObject; var Action: TCloseAction);
81 procedure FormResize(Sender: TObject);
82 procedure FormCreate(Sender: TObject);
83 procedure ActivateTools(active: Boolean);
84 procedure UpdateStatBar;
85 procedure UpdateConLists;
86 procedure LoadFile(typedb: Boolean);
87 function TryCloseAll: Boolean;
88 procedure MDITabDrawTab(Control: TCustomTabControl; TabIndex: Integer;
89 const Rect: TRect; Active: Boolean);
90 procedure MDITabMouseUp(Sender: TObject; Button: TMouseButton;
91 Shift: TShiftState; X, Y: Integer);
92 procedure MDITabMouseMove(Sender: TObject; Shift: TShiftState; X,
93 Y: Integer);
94 procedure ToolbarDockChanged(Sender: TObject);
95 procedure CreateConnection(filename: String);
[97]96 function CheckConnectionCloseable(index: Integer): Boolean;
[93]97
98 procedure menu_loadfileClick(Sender: TObject);
99 procedure menu_loaddbClick(Sender: TObject);
100 procedure menu_settingsClick(Sender: TObject);
101 procedure menu_exitClick(Sender: TObject);
102
103 procedure menu_createlvlClick(Sender: TObject);
104 procedure menu_createdbClick(Sender: TObject);
105
106 procedure menu_bineditClick(Sender: TObject);
107 procedure menu_filecompareClick(Sender: TObject);
108 procedure menu_raweditClick(Sender: TObject);
109 procedure menu_extractorClick(Sender: TObject);
110 procedure menu_txmpreplaceClick(Sender: TObject);
111 procedure menu_previewClick(Sender: TObject);
112 procedure menu_metaClick(Sender: TObject);
113 function open_child(window_context: String; connection, fileid: Integer): TForm_ToolTemplate;
114
115 procedure menu_windows_cascadeClick(Sender: TObject);
116 procedure menu_windows_tilevertClick(Sender: TObject);
117 procedure menu_windows_tileClick(Sender: TObject);
118 procedure menu_windows_closeallClick(Sender: TObject);
119 procedure menu_windows_previousClick(Sender: TObject);
120 procedure menu_windows_nextClick(Sender: TObject);
121 procedure menu_conns_itemClick(Sender: TObject);
122 procedure menu_windows_itemClick(Sender: TObject);
123 procedure menu_view_mdibarClick(Sender: TObject);
124 procedure menu_view_statusbarClick(Sender: TObject);
125 procedure menu_view_toolbarClick(Sender: TObject);
126
127 procedure menu_AboutClick(Sender: TObject);
128
129 procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
130 private
131 public
132 procedure DefaultHandler(var Message); override;
133 end;
134
135var
136 Form_Main: TForm_Main;
137
138implementation
139
140{$R *.dfm}
141
142
143procedure ShowOpenMsg(msg: TStatusMessages);
144begin
145 case msg of
146 SM_AlreadyOpened: ShowMessage('File already opened.');
147 SM_FileNotFound: ShowMessage('File not found.');
148 SM_UnknownExtension: ShowMessage('Unknown extension.');
149 SM_IncompatibleFile: ShowMessage('Incompatible file format.');
150 SM_UnknownError: ShowMessage('Unknown error.');
151 end;
152end;
153
154procedure TForm_Main.CreateConnection(filename: String);
155var
156 RepMsg: TStatusMessages;
157begin
[97]158 ConManager.OpenConnection(filename, RepMsg);
[93]159 ShowOpenMsg(RepMsg);
160 if RepMsg = SM_OK then
161 begin
162 UpdateStatBar;
[105]163 UpdateConLists;
[93]164 end;
165end;
166
[97]167function TForm_Main.CheckConnectionCloseable(index: Integer): Boolean;
168var
169 i: Integer;
170 toolform: TForm_ToolTemplate;
171begin
[113]172 Result := True;
[97]173 if MDITab.MDIChildCount > 0 then
174 begin
175 for i := 0 to MDITab.MDIChildCount - 1 do
176 begin
177 if MDITab.MDIChildren[i] is TForm_ToolTemplate then
178 begin
179 toolform := TForm_ToolTemplate(MDITab.MDIChildren[i]);
180 if toolform.ConnectionID = ConManager.ConnectionByIndex[index].ConnectionID then
181 begin
182 if not toolform.Closeable then
[113]183 begin
184 ShowMessage('Can not close toolwindow: ' + toolform.Caption);
185 Result := False;
186 end;
[97]187 end;
188 end;
189 end;
190 end;
191end;
192
193
[93]194{ Eine zweite Instanz hat uns ihre Kommandozeilenparameter geschickt }
195procedure TForm_Main.WMCopyData(var Msg: TWMCopyData);
196var
197 strings: TStringList;
198begin
199 if (Msg.CopyDataStruct.dwData = SecondInstMsgId) and (SecondInstMsgId <> 0) then
200 begin
201 Application.BringToFront;
202
203 strings := TStringList.Create;
204 strings.Text := ParamBlobToStr(Msg.CopyDataStruct.lpData);
205 if strings.Count = 2 then
206 begin
207 if strings.Strings[0] = 'opf' then
208 begin
209 ShowMessage('Load OPF-File: ' + ParamStr(2));
210 end
211 else if (strings.Strings[0] = 'oldb') or (strings.Strings[0] = 'dat') then
212 begin
213 CreateConnection(strings.Strings[1]);
214 end;
215 end;
216 end
217 else
218 inherited;
219end;
220
221{----------------------------------------------------------------------------}
222{ Wir überschreiben den DefaultHandler, der alle Nachrichten zuerst bekommt, }
223{ damit wir auf die Nachricht mit der ID SecondInstMsgId reagieren können. }
224{ (Dies ist notwendig, da wir jetzt noch nicht wissen welchen Wert }
225{ die ID haben wird, weswegen wir keine statische Message-Prozedure, }
226{ so wie bei WM_COPYDATA, schreiben können.) }
227{----------------------------------------------------------------------------}
228procedure TForm_Main.DefaultHandler(var Message);
229begin
230 if TMessage(Message).Msg = SecondInstMsgId then
231 { Eine zweite Instanz hat uns nach dem Handle gefragt }
232 { Es wird in die Message-Queue des Threads gepostet. }
233 PostThreadMessage(TMessage(Message).WParam, SecondInstMsgId, Handle, 0)
234 else
235 inherited;
236end;
237
238
239
240procedure TForm_Main.FormCreate(Sender: TObject);
241begin
242 Self.Caption := 'Oni Un/Packer ' + version;
243 Self.FormResize(Self);
244
[97]245 ConManager.OnCoonnectionListChanged := UpdateConLists;
[93]246
247 if FileExists(ExtractFilepath(Application.EXEname) + '\oniunpacker.ini') then
248 begin
249 AssignFile(AppSettingsFile, ExtractFilepath(Application.EXEname) +
250 '\oniunpacker.ini');
251 Reset(AppSettingsFile);
252 Read(AppSettingsFile, AppSettings);
253 CloseFile(AppSettingsFile);
254 end
255 else
256 begin
257 AppSettings.DatPath := ExtractFilepath(Application.EXEname);
258 AppSettings.ExtractPath := ExtractFilepath(Application.EXEname) + '\extract';
259 AppSettings.CharSet := DEFAULT_CHARSET;
260 AppSettings.HideUnusedData := False;
261 end;
262
263 if MidStr(ParamStr(1), 1, 3) = 'opf' then
264 begin
265 ShowMessage('Load OPF-File: ' + ParamStr(2));
266 end
267 else if (MidStr(ParamStr(1), 1, 4) = 'oldb') or (MidStr(ParamStr(1), 1, 3) = 'dat') then
268 begin
269 CreateConnection(ParamStr(2));
270 end;
271 UpdateStatBar;
272end;
273
274
275
276
277procedure TForm_Main.FormResize(Sender: TObject);
278begin
279 statbar.Panels.Items[0].Width := Self.Width - 200;
280 MDITab.Width := Self.Width - 20;
281end;
282
283
284
285
286procedure TForm_Main.MDITabDrawTab(Control: TCustomTabControl;
287 TabIndex: Integer; const Rect: TRect; Active: Boolean);
288var
289 x, y: Integer;
290 iconindex: Integer;
291 caption: String;
292begin
293 iconindex := TMDITab(Control).Glyphs[TabIndex];
294 caption := TMDITab(Control).Captions[TabIndex];
295 if active then
296 begin
297 Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsItalic];
298 y := Rect.Top + 1;
299 end else
300 y := Rect.Top;
301 if iconindex >= 0 then
302 begin
303 TMDITab(Control).Images.Draw(Control.Canvas, Rect.Left + 4, y, iconindex);
304 x := Rect.Left + 26;
305 end else
306 x := Rect.Left + 4;
307 Control.Canvas.TextOut(x, y + 2, caption);
308 if active then
309 Images_Close.Draw(Control.Canvas, Rect.Right - 18, y, 0)
310 else
311 Images_Close.Draw(Control.Canvas, Rect.Right - 18, y, 1);
312end;
313
314
315procedure TForm_Main.MDITabMouseMove(Sender: TObject; Shift: TShiftState; X,
316 Y: Integer);
317var
318 pt: TPoint;
319 tabIndex: Integer;
320 hint: String;
[97]321 tool: TForm_ToolTemplate;
[93]322begin
323 pt.X := X;
324 pt.Y := Y;
325 tabIndex := MDITab.GetTabAtPos(pt);
326 hint := '';
327
328 if tabIndex >= 0 then
329 begin
330 if MDITab.MDIChildren[tabIndex] is TForm_ToolTemplate then
331 begin
[97]332 tool := TForm_ToolTemplate(MDITab.MDIChildren[tabIndex]);
333 if tool.ConnectionID > -1 then
[93]334 hint := 'Connection: ' +
[97]335 ExtractFileName(ConManager.Connection[tool.ConnectionID].FileName) + #13+#10
[93]336 else
337 hint := 'Connection: none' + #13+#10;
[97]338 if tool.SelectedFile.ID > -1 then
[93]339 hint := hint + 'Selected File: ' +
[97]340 FormatNumber(tool.SelectedFile.ID, 5, '0') + '-' +
341 tool.SelectedFile.Name + '.' +
342 tool.SelectedFile.Extension
[93]343 else
344 hint := hint + 'Selected File: none';
345 end
346 else
347 hint := 'Window: ' + MDITab.MDIChildren[tabIndex].Caption;
348 if hint <> MDITab.Hint then
349 begin
350 MDITab.Hint := hint;
351 MDITab.ShowHint := True;
352 end;
353 end
354 else
355 begin
356 MDITab.ShowHint := False;
357 MDITab.Hint := '';
358 end;
359end;
360
361procedure TForm_Main.MDITabMouseUp(Sender: TObject; Button: TMouseButton;
362 Shift: TShiftState; X, Y: Integer);
363var
364 pt: TPoint;
365 tabIndex: Integer;
366 tabRect: TRect;
367 tabX, tabY, tabWidth: Integer;
368begin
369 pt.X := X;
370 pt.Y := Y;
371 tabIndex := MDITab.GetTabAtPos(pt);
372
373// if (Button = mbRight) and (tabIndex >= 0) then
374// MDITab.MDIChildren[tabIndex].Close;
375
376 if (Button = mbLeft) and (tabIndex >= 0) then
377 begin
378 tabrect := MDITab.TabRect(tabIndex);
379 tabX := X - tabrect.Left;
380 tabY := Y - tabrect.Top;
381 tabwidth := tabrect.Right - tabrect.Left;
382 if (tabY >= 4) and (tabY <= 17) then
383 if (tabX >= tabwidth - 19) and (tabX <= tabwidth - 7) then
384 MDITab.MDIChildren[tabIndex].Close;
385 end;
386end;
387
388
389
390
391procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
392begin
393 AssignFile(AppSettingsFile, ExtractFilepath(Application.EXEname) + '\oniunpacker.ini');
394 if FileExists(ExtractFilepath(Application.EXEname) + '\oniunpacker.ini') then
395 Reset(AppSettingsFile)
396 else
397 Rewrite(AppSettingsFile);
398 Write(AppSettingsFile, AppSettings);
399 CloseFile(AppSettingsFile);
400 Action := caFree;
401end;
402
403
404
405procedure TForm_Main.ActivateTools(active: Boolean);
406begin
407 menu_tools.Enabled := active;
408 tb_preview.Enabled := active;
409 tb_datedit.Enabled := active;
410 tb_rawedit.Enabled := active;
411 tb_txmpreplacer.Enabled := active;
412 tb_extractor.Enabled := active;
413// tb_compare.Enabled := active;
414// tb_structure.Enabled := active;
415end;
416
417procedure TForm_Main.UpdateStatBar;
418begin
[97]419 if ConManager.Count > 0 then
[93]420 begin
421 Self.Caption := 'Oni Un/Packer ' + version;
422 ActivateTools(True);
[97]423 statbar.Panels.Items[1].Text := 'Connections: ' + IntToStr(ConManager.Count);
[93]424 end
425 else
426 begin
427 Self.Caption := 'Oni Un/Packer ' + version;
428 statbar.Panels.Items[0].Text := '';
429 statbar.Panels.Items[1].Text := 'Connections: -';
430 statbar.Panels.Items[2].Text := '';
431 ActivateTools(False);
432 end;
[97]433 menu_conns.Enabled := ConManager.Count > 0;
[93]434end;
435
436
437
438
439procedure TForm_Main.ToolbarDockChanged(Sender: TObject);
440var
441 toolbar: TTBToolbar;
442 position: TTBDockPosition;
443 mode: TTBItemDisplayMode;
444 i: Integer;
445begin
446 toolbar := TTBToolbar(Sender);
447 if toolbar.Floating then
448 mode := nbdmImageAndText
449 else begin
450 position := toolbar.CurrentDock.Position;
451 if position in [dpLeft, dpRight] then
452 mode := nbdmDefault
453 else
454 mode := nbdmImageAndText;
455 end;
456 for i := 0 to toolbar.Items.Count - 1 do
457 toolbar.Items.Items[i].DisplayMode := mode;
458end;
459
460function TForm_Main.TryCloseAll: Boolean;
461begin
462 menu_windows_closeallClick(Self);
463 Application.ProcessMessages;
464 if MDITab.MDIChildCount = 0 then
465 Result := True
466 else
467 Result := False;
468end;
469
470
471procedure TForm_Main.UpdateConLists;
472var
473 i: Integer;
474 entry: TTBItem;
475begin
476 if MDITab.MDIChildCount > 0 then
477 for i := 0 to MDITab.MDIChildCount - 1 do
478 if MDITab.MDIChildren[i] is TForm_ToolTemplate then
479 TForm_ToolTemplate(MDITab.MDIChildren[i]).UpdateConList;
480
481 menu_conns.Clear;
[97]482 if ConManager.Count > 0 then
[93]483 begin
[97]484 for i := 0 to ConManager.Count - 1 do
[93]485 begin
486 entry := TTBItem.Create(menu_conns);
[97]487 entry.Caption := ExtractFileName(ConManager.ConnectionByIndex[i].FileName);
[93]488 entry.Name := 'menu_conn_' + IntToStr(i);
489 entry.OnClick := menu_conns_itemClick;
490 menu_conns.Add(entry);
491 entry := nil;
492 end;
493 end;
494end;
495
496
497procedure TForm_Main.LoadFile(typedb: Boolean);
498var
[105]499 i: Integer;
[93]500begin
501 opend.InitialDir := AppSettings.DatPath;
502 opend.Filter := 'Compatible level files|*.dat;*.oldb|Oni level (*.dat)|*.dat|OUP level database (*.oldb)|*.oldb|Any (*.*)|*';
503 if typedb then
504 opend.FilterIndex := 3
505 else
506 opend.FilterIndex := 2;
507 if opend.Execute then
508 begin
[105]509 if opend.Files.Count > 0 then
510 for i := 0 to opend.Files.Count - 1 do
511 CreateConnection(opend.Files.Strings[i]);
[93]512 AppSettings.DatPath := ExtractFilepath(opend.FileName);
513 end;
514 UpdateStatBar;
515end;
516
517
518 {#################################}
519 {##### Main-Menu-Handlers #####}
520 {#################################}
521procedure TForm_Main.menu_loaddbClick(Sender: TObject);
522begin
523 LoadFile(True);
524end;
525
526procedure TForm_Main.menu_loadfileClick(Sender: TObject);
527begin
528 LoadFile(False);
529end;
530
531
532procedure TForm_Main.menu_settingsClick(Sender: TObject);
533begin
534 Form_Settings.Visible := True;
535 Self.Enabled := False;
536end;
537
538
539procedure TForm_Main.menu_exitClick(Sender: TObject);
540begin
541 Self.Close;
542end;
543
544
545 {####################################}
546 {##### Converters-Menu-Handlers #####}
547 {####################################}
548procedure TForm_Main.menu_createdbClick(Sender: TObject);
549begin
550 ShowMessage('Not yet usable');
551{
552 opend.Filter := 'Oni-Dat-Files|*.dat';
553 saved.Filter := 'OUP-Level-DB (*.oldb)|*.oldb';
554 saved.DefaultExt := 'oldb';
555 if opend.Execute then
556 if saved.Execute then
557 Form_LevelDB.CreateDatabase(opend.FileName, saved.FileName);
558}
559end;
560
561
562procedure TForm_Main.menu_createlvlClick(Sender: TObject);
563begin
564 ShowMessage('Not yet usable');
565{
566 opend.Filter := 'OUP-Level-DB (*.oldb)|*.oldb';
567 saved.Filter := 'Oni-Dat-Files|*.dat';
568 saved.DefaultExt := 'dat';
569 if opend.Execute then
570 if saved.Execute then
571 Form_LevelDB.CreateLevel(opend.FileName, saved.FileName);
572}
573end;
574
575
576 {#################################}
577 {##### Tools-Menu-Handlers #####}
578 {#################################}
579procedure TForm_Main.menu_previewClick(Sender: TObject);
580begin
[97]581 open_child('preview', -1, -1);
[93]582end;
583
584procedure TForm_Main.menu_bineditClick(Sender: TObject);
585begin
[97]586 open_child('binedit', -1, -1);
[93]587end;
588
589procedure TForm_Main.menu_raweditClick(Sender: TObject);
590begin
[97]591 open_child('rawedit', -1, -1);
[93]592end;
593
594procedure TForm_Main.menu_txmpreplaceClick(Sender: TObject);
595begin
[97]596 open_child('txmpreplace', -1, -1);
[93]597end;
598
599procedure TForm_Main.menu_extractorClick(Sender: TObject);
600begin
[97]601 open_child('extractor', -1, -1);
[93]602end;
603
604procedure TForm_Main.menu_metaClick(Sender: TObject);
605begin
606 ShowMessage('TBD');
607end;
608
609procedure TForm_Main.menu_filecompareClick(Sender: TObject);
610begin
[97]611 open_child('compare', -1, -1);
[93]612end;
613
614
615 {#################################}
616 {##### View-Menu-Handlers #####}
617 {#################################}
618procedure TForm_Main.menu_windows_cascadeClick(Sender: TObject);
619begin
620 Self.Cascade;
621end;
622
623procedure TForm_Main.menu_windows_tilevertClick(Sender: TObject);
624begin
625 Self.TileMode := tbVertical;
626 Self.Tile;
627end;
628
629procedure TForm_Main.menu_windows_tileClick(Sender: TObject);
630begin
631 Self.TileMode := tbHorizontal;
632 Self.Tile;
633end;
634
635procedure TForm_Main.menu_windows_closeallClick(Sender: TObject);
636begin
637 MDITab.CloseAll;
638end;
639
640procedure TForm_Main.menu_windows_nextClick(Sender: TObject);
641begin
642 if MDIChildCount > 1 then
643 if MDITab.TabIndex = MDITab.MDIChildCount - 1 then
644 MDITab.MDIChildren[0].BringToFront
645 else
646 MDITab.MDIChildren[MDITab.TabIndex + 1].BringToFront;
647end;
648
649procedure TForm_Main.menu_windows_previousClick(Sender: TObject);
650begin
651 if MDIChildCount > 1 then
652 if MDITab.TabIndex = 0 then
653 MDITab.MDIChildren[MDITab.MDIChildCount - 1].BringToFront
654 else
655 MDITab.MDIChildren[MDITab.TabIndex - 1].BringToFront;
656end;
657
658
659 {##################################}
660 {##### Windows-Menu-Handlers #####}
661 {##################################}
662procedure TForm_Main.menu_windows_itemClick(Sender: TObject);
663var
664 name: String;
665begin
666 name := TTBItem(Sender).Name;
667end;
668
669
670
671 {######################################}
672 {##### Connections-Menu-Handlers #####}
673 {######################################}
674procedure TForm_Main.menu_conns_itemClick(Sender: TObject);
675var
676 name: String;
[97]677 index: Integer;
678 RepMsg: TStatusMessages;
[93]679begin
[97]680// name := TTBItem(Sender).Caption;
681 index := TTBItem(Sender).Parent.IndexOf(TTBItem(Sender));
682 name := ExtractFileName(ConManager.ConnectionByIndex[index].FileName);
[93]683 if MessageBox(Handle, PChar('Do you really want to close data-connection to' +#13+#10+
684 name + '?'), PChar('Close?'), MB_YESNO + MB_ICONQUESTION) = ID_YES then
685 begin
[97]686 CheckConnectionCloseable(index);
687 ConManager.CloseConnectionByIndex(index, RepMsg);
[105]688 ShowOpenMsg(RepMsg);
689 UpdateConLists;
[93]690 end;
691 UpdateStatBar;
692end;
693
694
695 {###################################}
696 {##### Toolbars-Menu-Handlers #####}
697 {###################################}
698procedure TForm_Main.menu_view_toolbarClick(Sender: TObject);
699begin
700 menu_view_toolbar.Checked := not menu_view_toolbar.Checked;
701 Toolbar.Visible := menu_view_toolbar.Checked;
702end;
703
704procedure TForm_Main.menu_view_statusbarClick(Sender: TObject);
705begin
706 menu_view_statusbar.Checked := not menu_view_statusbar.Checked;
707 statbar.Visible := menu_view_statusbar.Checked;
708end;
709
710procedure TForm_Main.menu_view_mdibarClick(Sender: TObject);
711begin
712 menu_view_mdibar.Checked := not menu_view_mdibar.Checked;
713 mditoolbar.Visible := menu_view_mdibar.Checked;
714end;
715
716
717
718procedure TForm_Main.menu_AboutClick(Sender: TObject);
719begin
720 ShowMessage('Will be implemented later ;)');
721end;
722
723
724
725
726
727function TForm_Main.open_child(window_context: String; connection, fileid: Integer): TForm_ToolTemplate;
728var
729 toolform: TForm_ToolTemplate;
730 i: Integer;
731 tag: Integer;
732 caption_end: String;
733 iconindex: Integer;
734begin
735 Result := nil;
736
737 tag := 1;
738 if MDIChildCount > 0 then
739 for i := 0 to MDIChildCount - 1 do
740 if MDIChildren[i].Tag >= tag then
741 tag := MDIChildren[i].Tag + 1;
742
743 iconindex := -1;
744 caption_end := IntToStr(tag) + ' ';
745
[113]746 toolform := nil;
747
[93]748 if window_context = 'binedit' then
749 begin
[105]750 toolform := TForm_BinEdit.Create(Self);
[93]751 toolform.Caption := 'Binary .dat-Editor ' + caption_end;
752 iconindex := 5;
753 end;
754 if window_context = 'extractor' then
755 begin
[105]756 toolform := TForm_Extractor.Create(Self);
[93]757 toolform.Caption := 'Extractor ' + caption_end;
758 iconindex := 8;
759 end;
760 if window_context = 'preview' then
761 begin
762 toolform := TForm_Preview.Create(Self);
763 toolform.Caption := 'Preview-Window ' + caption_end;
764 iconindex := 4;
765 end;
766 if window_context = 'rawedit' then
767 begin
[105]768 toolform := TForm_RawEdit.Create(Self);
[93]769 toolform.Caption := 'Binary .raw-Editor ' + caption_end;
770 iconindex := 6;
771 end;
772 if window_context = 'txmpreplace' then
773 begin
[105]774 toolform := TForm_TxmpReplace.Create(Self);
[93]775 toolform.Caption := 'TXMP Replacer ' + caption_end;
776 iconindex := 7;
777 end;
778
779 if Assigned(toolform) then
780 begin
781 toolform.Name := window_context + IntToStr(tag);
782 toolform.Tag := tag;
783 MDITab.AddTab(TForm(toolform), iconindex);
784 toolform.Caption := AnsiReplaceStr(toolform.Caption, ' ', '');
[97]785 if connection > -1 then
[93]786 begin
[97]787 toolform.SelectConnection(connection);
788 if fileid > -1 then
789 toolform.SelectFileID(connection, fileid);
[93]790 end;
791 Result := toolform;
792 end;
793end;
794
795end.
Note: See TracBrowser for help on using the repository browser.