diff unit_Editor_CreateAR.pas @ 0:ef71164288c1

begin of using hg for cdar
author "Meillo r e t u r n s <meillo@marmaro.de>"
date Sun, 03 Dec 2006 21:54:43 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/unit_Editor_CreateAR.pas	Sun Dec 03 21:54:43 2006 +0100
@@ -0,0 +1,319 @@
+unit unit_Editor_CreateAR;
+
+interface//####################################################################################
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Grids, ValEdit, ShellApi;
+
+type
+  Tform_editor_CreateAR = class(TForm)
+    btn_Finish: TButton;
+    btn_Back: TButton;
+    FinalSettings: TValueListEditor;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure btn_BackClick(Sender: TObject);
+    procedure btn_FinishClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  form_editor_CreateAR: Tform_editor_CreateAR;
+
+implementation//###############################################################################
+uses unit_Editor, unit_Editor_tutorial, unit_Start;
+{$R *.dfm}//###################################################################################
+{$I-}
+
+//------------------------------------------------------------------------------ form create
+procedure Tform_editor_CreateAR.FormCreate(Sender: TObject);
+begin
+  //
+    form_Editor_CreateAR.Caption := 'Create your CD-Autorunner';
+    btn_Finish.Caption := 'Finish';
+    btn_Back.Caption := 'Back';
+    FinalSettings.TitleCaptions.Strings[0] := ' Settings';
+    FinalSettings.TitleCaptions.Strings[1] := ' Value';
+    FinalSettings.Keys[1] := 'Background-Picture';
+    FinalSettings.Keys[2] := 'Enter-Picture';
+    FinalSettings.Keys[3] := 'Autorun-Icon';
+    FinalSettings.Keys[4] := 'CD-Root-Dir';
+    FinalSettings.Keys[6] := 'Enter X-Position';
+    FinalSettings.Keys[7] := 'Enter Y-Position';
+    FinalSettings.Keys[8] := 'Welcome-Kind';
+    FinalSettings.Keys[9] := 'Delay';
+    FinalSettings.Keys[10] := 'Starts File/Dir';
+end;//--------------------------------------------------------------------------
+//------------------------------------------------------------------------------ form show
+procedure Tform_editor_CreateAR.FormShow(Sender: TObject);
+begin
+  // disable drag'n'drop of 'img_button'
+    form_editor.draggingstatus := 3;
+  // disable menu
+    form_editor.mnu_Tutorial.enabled := false;
+    form_editor.mnu_WelcomeScreen.Enabled := false;
+    form_editor.mnu_Autorun.Enabled := false;
+    form_editor.mnu_CreateAR.enabled := false;
+    form_editor.mnu_Sprache.enabled := false;
+
+  // show final settings
+    finalsettings.Values['Background-Picture'] := form_Editor.PfadHG_alt;
+    finalsettings.Values['Enter-Picture'] := form_Editor.PfadEnter_alt;
+    finalsettings.values['Autorun-Icon'] := form_Editor.PfadIcon_alt;
+    finalsettings.Values['CD-Root-Dir'] := form_Editor.CDRoot_alt;
+
+    finalsettings.Values['Enter X-Position'] := inttostr(form_Editor.xEnter_alt);
+    finalsettings.Values['Enter Y-Position'] := inttostr(form_Editor.yEnter_alt);
+    finalsettings.Values['Welcome-Kind'] := form_Editor.WelcomeKind_alt;
+    finalsettings.Values['Delay'] := form_Editor.delay;
+    finalsettings.Values['Starts File/Dir'] := form_Editor.StartsFD_alt;
+
+  // disable everything not needed
+    if form_Editor.WelcomeKind_alt = 'none' then
+      begin
+        finalsettings.Values['Background-Picture'] := '< not used / nicht genutzt >';
+        finalsettings.Values['Enter-Picture'] := '< not used / nicht genutzt >';
+        finalsettings.Values['Enter X-Position'] := '< not used / nicht genutzt >';
+        finalsettings.Values['Enter Y-Position'] := '< not used / nicht genutzt >';
+        finalsettings.Values['Delay'] := '< not used / nicht genutzt >';
+      end
+    else
+      begin
+        if form_Editor.WelcomeKind_alt = 'time' then
+          begin
+            finalsettings.Values['Enter-Picture'] := '< not used / nicht genutzt >';
+            finalsettings.Values['Enter X-Position'] := '< not used / nicht genutzt >';
+            finalsettings.Values['Enter Y-Position'] := '< not used / nicht genutzt >';
+            if form_Editor.PfadHG_alt = '' then
+              begin
+                finalsettings.Values['Background-Picture'] := '#### missing / fehlt ####';
+                btn_finish.Enabled := false;
+              end;
+          end
+        else  // klick
+          begin
+            finalsettings.Values['Delay'] := '< not used / nicht genutzt >';
+            if form_Editor.PfadHG_alt = '' then
+              begin
+                // if the 'enter'-picture is full size, then dont use the 'background'-picture
+                if (form_editor.img_button.Width = form_editor.img_Background.Width) and
+                   (form_editor.img_button.Height = form_editor.img_Background.Height) then
+                  begin
+                    finalsettings.Values['Background-Picture'] := '< not used / nicht genutzt >';
+                  end
+                else
+                  begin
+                    finalsettings.Values['Background-Picture'] := '#### missing / fehlt ####';
+                    btn_finish.Enabled := false;
+                  end;
+              end;
+            if form_Editor.PfadEnter_alt = '' then
+              begin
+                finalsettings.Values['Enter-Picture'] := '#### missing / fehlt ####';
+                btn_finish.Enabled := false;
+              end;
+          end;
+      end;
+
+  //
+    if form_Editor.pfadIcon_alt = '' then
+      begin
+        finalsettings.values['Autorun-Icon'] := '(The banana / Die Banane)';
+      end;
+
+  //
+    if form_Editor.StartsFD_alt = '' then
+      begin
+        finalsettings.Values['Starts File/Dir'] := '(CD-Root-Dir / CD-Wurzelverzeichnis)';
+      end;
+  //
+    if form_Editor.StartsFD_alt = '-' then
+      begin
+        if form_Editor.WelcomeKind_alt = 'none' then
+          begin
+            finalsettings.Values['Starts File/Dir'] := '#### CDAR does not do anything! / CDAR macht gar nichts! ####';
+            btn_finish.Enabled := false;
+          end
+        else
+          begin
+            finalsettings.Values['Starts File/Dir'] := '(Just shows Welcome-Screen / Zeigt nur ein Willkommensbild)';
+          end;
+      end;
+
+        // use German if set so
+    if form_editor.englisch = false then
+      begin
+        form_Editor_CreateAR.Caption := 'Autorunner erstellen';
+        btn_Finish.Caption := 'Fertigstellen';
+        btn_Back.caption := 'Zurück';
+        FinalSettings.TitleCaptions.Strings[0] := ' Einstellung';
+        FinalSettings.TitleCaptions.Strings[1] := ' Wert';
+        FinalSettings.Keys[1] := 'Hintergrundbild';
+        FinalSettings.Keys[2] := 'Enterbild';
+        FinalSettings.Keys[3] := 'Autorun-Icon';
+        FinalSettings.Keys[4] := 'CD-Grundverzeichnis';
+        FinalSettings.Keys[6] := 'Enter X-Position';
+        FinalSettings.Keys[7] := 'Enter Y-Position';
+        FinalSettings.Keys[8] := 'Willkommensart';
+        FinalSettings.Keys[9] := 'Zeitverzögerung';
+        FinalSettings.Keys[10] := 'Startet Datei/Verz.';
+      end;
+end;//--------------------------------------------------------------------------
+//------------------------------------------------------------------------------ Form Close
+procedure Tform_editor_CreateAR.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  // enable drag'n'drop of 'img_button' again
+    form_editor.draggingstatus := 0;
+  // enable menu again
+    form_editor.mnu_Tutorial.enabled := true;
+    form_editor.mnu_WelcomeScreen.Enabled := true;
+    form_editor.mnu_Autorun.Enabled := true;
+    form_editor.mnu_CreateAR.enabled := true;
+    form_editor.mnu_Sprache.enabled := true;
+end;//--------------------------------------------------------------------------
+
+//#############################################################################################
+
+//------------------------------------------------------------------------------ Click Back
+procedure Tform_editor_CreateAR.btn_BackClick(Sender: TObject);
+begin
+  // close CreateAR
+    form_editor_createar.Close;
+end;//--------------------------------------------------------------------------
+//------------------------------------------------------------------------------ Click Finish
+procedure Tform_editor_CreateAR.btn_FinishClick(Sender: TObject);
+  var f : textfile;
+      i : integer;
+      CDRoot1 : string;
+      CDRoot2 : string;
+begin
+  // create 'CDRoot' directory if not exists
+  cdRoot1 := form_Editor.CDRoot_alt;
+
+  if DirectoryExists(CDRoot1) = false then
+    begin
+      for i := 5 to length(CDRoot1) do
+        begin
+          if copy(CDRoot1, i, 1) = '\' then
+            begin
+              CDRoot2 := copy(CDRoot1, 1, i);
+              if DirectoryExists(CDRoot2) = false then
+                begin
+                  mkdir(cdroot2);
+                end;
+            end;
+        end;
+    end;
+
+
+  // create Autorun.inf
+    try
+      AssignFile(f, form_Editor.CDRoot_alt + 'Autorun.inf');
+          ReWrite(f);
+          Writeln(f, '[Autorun]');
+          Writeln(f, 'Open= "_CDAR\cdar.exe welcome"');
+          if finalsettings.Cells[1,3] = '(The banana / Die Banane)' then
+            begin
+              Writeln(f, 'Icon= "_CDAR\cdar.exe"');
+            end
+          else
+            begin
+              Writeln(f, 'Icon= "_CDAR\Autorun.ico"');
+            end;
+      CloseFile(f);
+    except
+      showmessage('"Autorun.inf" konnte nicht erstellt werden'+ #10
+        +'Vermutlich ist der Pfad zum CD-Wurzelverzeichnis ungültig'+ #10
+        + #10
+        +'"Autorun.inf" could not be created'+ #10
+        +'probably the path to the CD root directory is corrupt');
+    end;
+
+  // create directory '_CDAR' if not exists
+    if DirectoryExists(CDRoot1 + '_CDAR') = false then
+      begin
+        mkdir(form_Editor.CDRoot_alt + '_CDAR\');
+      end;
+
+  // create 'cdar.ini'
+    try
+      AssignFile(f, form_Editor.CDRoot_alt + '_CDAR\cdar.ini');
+      ReWrite(f);
+        Writeln(f, form_Editor.WelcomeKind_alt);
+        Writeln(f, form_Editor.Delay);
+        Writeln(f, inttostr(form_Editor.xEnter_alt));
+        Writeln(f, inttostr(form_Editor.yEnter_alt));
+        Writeln(f, '..\' + form_Editor.StartsFD_alt);
+      CloseFile(f);
+    except
+      showmessage('"cdar.ini"  konnte nicht erstellt werden'+ #10
+        +'Vermutlich ist der Pfad zum CD-Wurzelverzeichnis ungültig'+ #10
+        + #10
+        +'"cdar.ini" could not be created'+ #10
+        +'probably the path to the CD root directory is corrupt');
+    end;
+
+  // create 'cdar.bat'
+    try
+      AssignFile(f, 'C:\cdar.bat');
+      ReWrite(f);
+        Writeln(f, 'Rem This File was built by CD-Autorunner');
+        Writeln(f, 'Rem It is not needed anymore you can delete it');
+        Writeln(f, 'Rem');
+        Writeln(f, 'Rem Diese Datei wurde von CD-Autorunner erzeugt');
+        Writeln(f, 'Rem Sie wird nicht mehr gebraucht und kann geloescht werden');
+        Writeln(f, 'Rem ###############################################');
+        Writeln(f, 'Rem');
+        Writeln(f, 'Rem');
+      // copy 'Autorun.ico' if necessary
+        if finalsettings.Cells[1,3] <> '(The banana / Die Banane)' then
+          begin
+                Writeln(f, 'Copy %1 %2');
+          end;
+      // copy 'background'-picture if necessary
+        if finalsettings.Cells[1,1] <> '< not used / nicht genutzt >' then
+          begin
+            Writeln(f, 'Copy %3 %4');
+          end;
+      // copy 'enter'-picture if necessary
+        if finalsettings.Cells[1,2] <> '< not used / nicht genutzt >' then
+          begin
+            Writeln(f, 'Copy %5 %6');
+          end;
+      // copy 'cdar.exe'
+        Writeln(f, 'Copy %7 %8');
+      // self destruction
+        Writeln(f, 'del "C:\cdar.bat"');
+      // exit script
+        Writeln(f, 'exit');
+      // close file
+      CloseFile(f);
+    except
+      showmessage('"cdar.bat" konnte nicht erstellt werden'+ #10#10
+        +'"cdar.bat" could not be created');
+    end;
+
+    try
+      ShellExecute(application.Handle, 'open', pchar('C:\cdar.bat'),
+        pchar('"'
+          + form_Editor.PfadIcon_alt + '" "' + form_Editor.CDRoot_alt + '_CDAR\Autorun.ico" "'
+          + form_Editor.PfadHG_alt + '" "' + form_Editor.CDRoot_alt + '_CDAR\Welcome.jpg" "'
+          + form_Editor.PfadEnter_alt + '" "' + form_Editor.CDRoot_alt + '_CDAR\Enter.jpg" "'
+          + paramstr(0) + '" "' + form_Editor.CDRoot_alt + '_CDAR\cdar.exe"'
+        ), nil, sw_shownormal);
+    except
+      showmessage('"cdar.bat" konnte nicht ausgeführt werden'+ #10#10
+        +'was not able to run "cdar.bat"');
+    end;
+
+  // return to 'form_Editor'
+    form_editor_createar.Close;
+end;//--------------------------------------------------------------------------
+
+end.//#########################################################################################