view unit_Editor_CreateAR.pas @ 2:104f349dcfcc default tip

Added tag cdar-2.3 for changeset 87b91371db05b8cabe2dc3e2d2dc3ba830ab463b
author "Meillo r e t u r n s <meillo@marmaro.de>"
date Sun, 03 Dec 2006 21:56:41 +0100
parents ef71164288c1
children
line wrap: on
line source

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.//#########################################################################################