DEADSOFTWARE

gui: fix test executable selection on osx
[d2df-editor.git] / src / editor / f_maptest.pas
index 69f7f40f0568c338ddfee771a442719314fac0e8..6f819eda6e51a273031ff8a2c03f8636e3e7db75 100644 (file)
@@ -10,10 +10,14 @@ uses
   ComCtrls;
 
 type
+
+  { TMapTestForm }
+
   TMapTestForm = class (TForm)
     bOK: TButton;
     bCancel: TButton;
     GroupBox1: TGroupBox;
+    LabelArgs: TLabel;
   // Режим игры:
     rbDM: TRadioButton;
     rbTDM: TRadioButton;
@@ -38,6 +42,7 @@ type
   // Путь:
     LabelPath: TLabel;
     edD2dexe: TEdit;
+    edD2DArgs: TEdit;
     bChooseD2d: TButton;
     FindD2dDialog: TOpenDialog;
 
@@ -59,7 +64,7 @@ var
 implementation
 
 uses
-  f_main, CONFIG;
+  f_main, g_options, CONFIG;
 
 {$R *.lfm}
 
@@ -70,7 +75,7 @@ var
   n: Integer;
   
 begin
-  config := TConfig.CreateFile(EditorDir+'Editor.cfg');
+  config := TConfig.CreateFile(CfgFileName);
 
   if rbTDM.Checked then
     s := 'TDM'
@@ -113,8 +118,10 @@ begin
   
   config.WriteStr('TestRun', 'Exe', edD2dExe.Text);
   TestD2dExe := edD2dExe.Text;
+  config.WriteStr('TestRun', 'Args', edD2DArgs.Text);
+  TestD2DArgs := edD2DArgs.Text;
 
-  config.SaveFile(EditorDir+'Editor.cfg');
+  config.SaveFile(CfgFileName);
   config.Free();
   Close();
 end;
@@ -146,6 +153,7 @@ begin
   cbMonstersDM.Checked := TestOptionsMonstersDM;
   cbMapOnce.Checked := TestMapOnce;
   edD2dExe.Text := TestD2dExe;
+  edD2DArgs.Text := TestD2DArgs;
 end;
 
 procedure TMapTestForm.FormCreate(Sender: TObject);
@@ -153,7 +161,7 @@ var
   config: TConfig;
   
 begin
-  config := TConfig.CreateFile(EditorDir+'Editor.cfg');
+  config := TConfig.CreateFile(CfgFileName);
 
   TestGameMode := config.ReadStr('TestRun', 'GameMode', 'DM');
   TestLimTime := config.ReadStr('TestRun', 'LimTime', '0');
@@ -164,11 +172,27 @@ begin
   TestOptionsWeaponStay := config.ReadBool('TestRun', 'WeaponStay', False);
   TestOptionsMonstersDM := config.ReadBool('TestRun', 'MonstersDM', False);
   TestMapOnce := config.ReadBool('TestRun', 'MapOnce', False);
-  TestD2dExe := config.ReadStr('TestRun', 'Exe', EditorDir+'Doom2DF.exe');
+  TestD2dExe := config.ReadStr('TestRun', 'Exe', GameExeFile);
+  TestD2DArgs := config.ReadStr('TestRun', 'Args', '');
 
   config.Free();
 
-  FindD2dDialog.InitialDir := TestD2dExe;
+  {$IF DEFINED(DARWIN)}
+    if LowerCase(ExtractFileExt(TestD2dExe)) = '.app' then
+      FindD2dDialog.InitialDir := ExtractFileDir(TestD2dExe)
+    else
+      FindD2dDialog.InitialDir := TestD2dExe;
+    FindD2dDialog.DefaultExt := '.app';
+    FindD2dDialog.Filter := 'Doom 2D Forever.app|*.app|Doom 2D Forever (Unix Executable)|Doom2DF;*';
+  {$ELSEIF DEFINED(WINDOWS)}
+    FindD2dDialog.InitialDir := TestD2dExe;
+    FindD2dDialog.DefaultExt := '.exe';
+    FindD2dDialog.Filter := 'Doom2DF.exe|Doom2DF.exe;*.exe';
+  {$ELSE}
+    FindD2dDialog.InitialDir := TestD2dExe;
+    FindD2dDialog.DefaultExt := '';
+    FindD2dDialog.Filter := 'Doom2DF|Doom2DF;*';
+  {$ENDIF}
 end;
 
 procedure TMapTestForm.bChooseD2dClick(Sender: TObject);