home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 1995 May / pcw-0595.bin / demos / databeck / wsounds / setup.dir / wswsrc.exe / DISKDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1992-12-02  |  6KB  |  201 lines

  1. Unit DiskDlg;
  2.  
  3. INTERFACE
  4. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem,
  5.      DataObj, WaveUtil, WAVEIO;
  6.  
  7. const
  8.   dn_DiskDlg = 'DiskDlg';
  9.  
  10.   DS_OK = ID_Ok;
  11.   DS_Cancel = 2;
  12.  
  13.   ID_DInput = 1500;
  14.   ID_DMedInf= 1501;
  15.   ID_DinDB  = 1502;
  16.   ID_DRetry = 1503;
  17.   ID_DName  = 1504;
  18.   ID_DSDir  = 1505;
  19.   ID_DLabl  = 1506; 
  20.  
  21. type
  22.   PDiskDlg = ^TDiskDlg;
  23.   TDiskDlg = object(TDialog)
  24.     CurrCollect : PWaveCollection;
  25.     CurrNr      : Integer;
  26.     CurrWD      : WaveDataType;
  27.     constructor Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
  28.     Procedure   HandlePathInDB(VAR Msg : TMessage);virtual id_First + id_DinDB;
  29.     PROCEDURE   OK(VAR Msg : TMessage);Virtual id_First + id_Ok;
  30.     procedure   Cancel(var Msg: TMessage); virtual id_First + id_Cancel;
  31.     procedure SetupWindow; virtual;
  32.   end;
  33.  
  34.   PDiskPlay = ^TDiskPlay;
  35.   TDiskPlay = Object(TWindowsObject)
  36.       DiskDlgMessage : Integer;
  37.       DiskDummy : Array[0..130] OF CHar;
  38.       DiskTestDlg : Integer;
  39.       DiskDialog : PDiskDlg;
  40.       Constructor Init(AParent : PWindowsObject);
  41.       PROCEDURE DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
  42.       END;
  43.  
  44. VAR
  45.    DPlayObj : PDiskPlay;
  46.    {DiskDlgMessage : Integer;}
  47.    DiskDummy : Array[0..130] OF CHar;
  48.    DiskTestDlg : Integer;
  49.    DiskDialog : PDiskDlg;
  50.    DiskIntoDataBase : BOOLEAN;
  51.    NewWaveDummy : WaveDataType;
  52.  
  53. implementation
  54.  
  55. Constructor TDiskPlay.Init(AParent : PWindowsObject);
  56. BEGIN
  57.    TWindowsObject.Init(AParent);
  58.    DiskDlgMessage := idOK;
  59.    END;   
  60.  
  61. PROCEDURE TDiskPlay.DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
  62. VAR
  63.    TDummy, MDummy : ARRAY[0..100] OF CHAR;
  64.    DDialog : PDiskDlg;
  65.    TestDlg : Integer;
  66. BEGIN
  67.    {DiskDlgMessage := idOK;}
  68.    TDummy[0] := CurrWD.DiskDrive;
  69.    TDummy[1] := #0;
  70.    StrCat(TDummy, ':');
  71.    StrCat(TDummy,CurrWD.PathName);
  72.    StrCat(TDummy,CurrWD.FileName);
  73.    {WriteLn(TDummy);}
  74.    While ((DiskDlgMessage = DS_Ok) AND (Not(WAVExists(TDummy)))) DO BEGIN
  75.     DDialog := New(PDiskDlg, Init(@self, dn_DiskDlg, CurrWD));
  76.     {IF DDialog <> NIL THEN}
  77.      TestDlg := Application^.ExecDialog(DDialog);
  78.      IF TestDlg = id_OK THEN
  79.       BEGIN
  80.          TDummy[0] := CurrWD.DiskDrive;
  81.          TDummy[1] := #0;
  82.          StrCat(TDummy, ':');
  83.          StrCat(TDummy,CurrWD.PathName);
  84.          StrCat(TDummy,CurrWD.FileName);
  85.          {WriteLn('In program : ',TDummy);}
  86.          END
  87.        ELSE IF TestDlg = id_Cancel THEN BEGIN
  88.          DiskDlgMessage := id_Cancel;
  89.          END;
  90.       END;
  91.    Mess := DiskDlgMessage;
  92. END;
  93.  
  94. constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
  95. {constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection; ANum : Integer);}
  96. begin
  97.   TDialog.Init(AParent, AName);
  98. {
  99.   CurrCollect := ACollect;
  100.   CurrNr := ANum;
  101.   PWaveData(CurrCollect^.At(CurrNr))^.GetData(CurrWD);
  102. }
  103.   CurrWD := AWaveDummy;
  104.   DiskIntoDataBase := FALSE;
  105. {  DiskDlgMessage := idOK;}
  106. end;
  107.  
  108. procedure TDiskDlg.SetupWindow;
  109. VAR
  110.    Msg : TMessage;
  111.    TDummy : Array[0..100] OF Char;
  112. begin
  113.   TDialog.SetupWindow;
  114.   
  115.   TDummy[0] := WaveDummy.DiskDrive;
  116.   TDummy[1] := #0;
  117.   StrCat(TDummy, ':');
  118.   SetDlgItemText(HWindow, ID_DMedInf, TDummy);
  119.   StrCat(TDummy,WaveDummy.PathName);
  120.   
  121.   SendDlgItemMessage(HWindow, id_DInput, em_LimitText, Sizeof(DirStr)+2, 0);
  122.   
  123.   SetDlgItemText(HWindow, ID_DInput, TDummy);
  124.   SetDlgItemText(HWindow, ID_DSDir, TDummy);
  125.   StrCat(TDummy,CurrWD.FileName);
  126.   SetDlgItemText(HWindow, ID_DName, CurrWD.FileName);
  127.   SetDlgItemText(HWindow, ID_DLabl, CurrWD.DiskLabel);
  128. end;
  129.  
  130. procedure   TDiskDlg.Cancel(var Msg: TMessage); 
  131. BEGIN
  132.    DiskIntoDataBase := FALSE;
  133.    TDialog.Cancel(Msg);
  134.    END;
  135.  
  136. procedure   TDiskDlg.HandlePathInDB(var Msg: TMessage);
  137. VAR
  138.   SplitChars : DirStr;
  139.   Dummy : DirStr;
  140.   FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
  141.   Count : Integer;
  142.   OldComment : ARRAY[0..63] OF CHAR;  { WAV comment }
  143. BEGIN
  144.    GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStr));
  145.    if SplitChars[StrLen(SplitChars)-1] <> '\' then StrCat (SplitChars,'\');
  146.  
  147.    StrCopy(OldComment,WaveDummy.FileComment);
  148. {
  149.    WriteLn('--------------------------------------------------');
  150.    WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
  151.    WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
  152.    WriteLn(' Comm : ', WaveDummy.FileComment);
  153. }
  154.  
  155.    WD_ReadOneFileIntoWD(HWindow,SplitChars,WaveDummy.FileName,WaveDummy);
  156.  
  157.    IF WaveDummy.Save2Wave = C2W_DontSave THEN StrCopy(WaveDummy.FileComment,OldComment);
  158. {
  159.    WriteLn('+++++++++++++++++++++++++++++++++++++++++++++++++++++++');
  160.    WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
  161.    WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
  162.    WriteLn(' Comm : ', WaveDummy.FileComment);
  163. }
  164.  
  165.  
  166.    DiskIntoDataBase := TRUE;
  167.    TDialog.OK(Msg);
  168.    END;
  169.  
  170. PROCEDURE   TDiskDlg.OK(VAR Msg : TMessage);
  171. VAR
  172.   SplitChars : ARRAY[0..SizeOf(DirStr)+2] OF CHAR;
  173.   FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
  174.   Count : Integer;
  175. BEGIN
  176.    GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStrP2));
  177.    FileSplit(SplitChars, FPath, FNam, FExt);
  178. {
  179.    WriteLn('Path : ',FPath);
  180.    WriteLn('Name : ',FNam);
  181.    WriteLn('Ext  : ',FExt);
  182.  }
  183.    IF (StrLen(SplitChars) >= 3) AND (SplitChars[1] = ':') AND (SplitChars[2] = '\') THEN BEGIN
  184.       IF StrRScan(SplitChars, '\') = NIL THEN StrCat(SplitChars,'\');
  185.       WaveDummy.DiskDrive := SplitChars[0];
  186.       FOR COunt := 0 to 129 do WaveDummy.PathName[Count] := #0;
  187.       For Count := 2 to StrLen(FPath) DO BEGIN
  188.          WaveDummy.PathName[Count-2] := FPath[Count];
  189.          {WriteLn('Wavedummy : ',WaveDummy.PathName[2-Count],' FPath : ',FPath[Count],' gesamt : ',WaveDummy.PathName);}
  190.          END;
  191.       END;
  192.    {DiskDlgMessage := DS_Ok;}
  193.  
  194.    {WriteLn('In record : ',WaveDummy.PathName);}
  195.    DiskIntoDataBase := FALSE;
  196.    TDialog.OK(Msg);
  197.    END;
  198.  
  199. BEGIN
  200.    END.
  201.