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

  1. { Unit CommDlg - for adding comments to the WAV files }
  2.  
  3. unit CommDlg;
  4.  
  5. interface
  6.  
  7. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
  8.      DataObj, DiskDlg, SaveDlg, RiffComm, WaveIO;
  9.  
  10.  
  11. const
  12.   dn_CommentDlg = 'CommentDlg';
  13.  
  14.   id_Path    = 700;
  15.   id_FileName= 701;
  16.   id_Text    = 702;
  17.   ID_ComPlay = 703;
  18.   ID_WCommCB = 704;
  19.  
  20. type
  21.   PCommentDlg = ^TCommentDlg;
  22.   TCommentDlg = object(TDialog)
  23.     Dummy : PWaveData;
  24.     actItem,MaxItem : Integer;
  25.     CurrCollect : PWaveCollection;
  26.     WAVECommCB : PCheckBox;
  27.     constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection; IdxCode : Integer);
  28.     procedure SetupWindow; virtual;
  29.     procedure ReWrite;
  30.     procedure Prepare;
  31.     PROCEDURE HandlePlay(VAR Msg : TMessage);virtual id_First + id_ComPlay;
  32.     procedure CheckData;
  33.     Destructor Done;virtual;
  34.     procedure OK (var Msg: TMessage); virtual id_First+ id_OK;
  35.   end;
  36.  
  37. implementation
  38.  
  39. { TCommentDlg }
  40.  
  41. constructor TCommentDlg.Init(AParent: PWindowsObject;
  42.   AName: PChar; ACollect : PWaveCollection; IdxCode: Integer);
  43. begin
  44.   TDialog.Init(AParent, AName);
  45.   CurrCollect := ACollect;
  46.   WAVECommCB := New(PCheckBox, InitResource(@self, ID_WCommCB));
  47.   IF idxCode = -1 then
  48.    Begin
  49.     ActItem := 0;
  50.     MaxItem := CurrCollect^.Count;
  51.    End
  52.   Else
  53.    Begin
  54.     ActItem := IdxCode;
  55.     MaxItem := IdxCode;
  56.    End;
  57. end;
  58.  
  59. Procedure TCommentDlg.Prepare;
  60. Var Out: array [0..255] of char;
  61. Begin
  62.   Dummy := CurrCollect^.At (actItem);
  63.   ShortMain[0] := Dummy^.WD.DiskDrive;
  64.   ShortMain[1] := #0;
  65.   StrCat  (ShortMain,':');
  66.   StrCat  (ShortMain,Dummy^.WD.PathName);
  67.   WD_NewShortHelp(ShortMain,30);
  68.   SetDlgItemText(HWindow, id_text,Dummy^.WD.FileComment);
  69.   SetDlgItemText(HWindow, id_path,ShortHelp);
  70.   SetDlgItemText(HWindow, id_FileName,Dummy^.WD.FileName);
  71.   Inc(ActItem,1);
  72. End;
  73.  
  74. Procedure TCommentDlg.ReWrite;
  75. Begin
  76.  CurrCollect^.AtPut ((actItem-1),Dummy);
  77. End;
  78.  
  79. procedure TCommentDlg.CheckData;
  80. VAR
  81.    Message, MMess, IDx : Integer;
  82.    PWTEst2 : PWaveData;
  83.    BWCCMes : Integer;
  84.    MDummy : Array[0..100] OF Char;
  85.    TDummy : DirStr;
  86.    KDummy : Array[0..63] OF CHAR;
  87. BEGIN
  88.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  89.       END
  90.    ELSE BEGIN
  91. {--------------------------------------------------------------------}
  92.    Dummy := CurrCollect^.At (actItem-1);
  93.    Dummy^.GetData(WaveDummy);
  94.  
  95.    IF WaveDummy.Save2Wave = C2W_DontSave THEN Exit;
  96.  
  97.    Message := IDOk;
  98.  
  99.    StrCopy(KDummy,WaveDUmmy.FileComment);
  100.    DPlayObj := New(PDiskPlay,Init(@self));
  101.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  102.    DPlayObj^.Done;
  103.    StrCopy(WaveDUmmy.FileComment,KDummy);
  104.  
  105.    IF (DiskIntoDataBase = TRUE) THEN BEGIN
  106.       DiskIntoDataBase := FALSE;
  107.       PWTest2 := New(PWaveData, Init(WaveDummy));
  108.  
  109.       IF (WaveCollect^.Search(PWTEst2,Idx) = True) THEN BEGIN
  110.          StrCopy(MDummy,'Database already contains a file with this name and path.');
  111.          BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
  112.          END
  113.       ELSE BEGIN
  114.          Move(WaveDummy,Dummy^.WD,SizeOf(WaveDummy));
  115.          ReWrite;
  116.          DBChanged := TRUE;
  117.          END;
  118.       Dispose(PWTest2,Done);
  119.       END;
  120. {
  121.    Dummy := CurrCollect^.At (actItem-1);
  122.    Dummy^.GetData(WaveDummy);
  123. }
  124.    DiskDummy[0] := WaveDummy.DiskDrive;
  125.    DiskDummy[1] := #0;
  126.    StrCat(DiskDummy, ':');
  127.    StrCat(DiskDummy,WaveDummy.PathName);
  128.    StrCopy(TDummy, DiskDummy);
  129.    StrCat(DiskDummy,WaveDummy.FileName);
  130.  
  131.    IF Message = idOK THEN BEGIN
  132.       PutRIFFComment(Dummy^.WD, MMess);
  133.        CASE MMess of
  134.           MMWriteOK     : BEGIN
  135.                            WD_ReadOneFileIntoWD(HWindow,TDummy,WaveDummy.FileName,WaveDummy);
  136.                            Dummy^.WD.Filesize := WaveDummy.FileSize;
  137.                            Dummy^.WD.Save2Wave := C2W_IsSaved
  138.                            END;
  139.           MMWriteCancel : BEGIN
  140.                            Dummy^.WD.Save2Wave := C2W_DontSave;
  141.                            END;
  142.           ELSE Dummy^.WD.Save2Wave := C2W_DontSave;
  143.           END;
  144.       END;
  145. {----------------------------------------------------------------------}
  146. {----------------------------------------------------------------------}
  147.    END;
  148.    END;
  149.  
  150. Procedure TCommentDlg.OK (var Msg: TMessage);
  151. Begin
  152.  GetDlgItemText (HWindow,ID_text,Dummy^.WD.FileComment,63);
  153.  IF WAVECommCB^.GetCheck = BF_Unchecked THEN Dummy^.WD.Save2Wave := C2W_DontSave
  154.  ELSE
  155.  IF WAVECommCB^.GetCheck = BF_Checked THEN Dummy^.WD.Save2Wave := C2W_IsSaved; {C2W_Save;}
  156.  ReWrite;
  157.  IF ActItem >= MaxItem then
  158.   Begin
  159.    {WD_Check4Save2Wave(CurrCollect);}
  160.    CheckData;
  161.    TDialog.OK(Msg);
  162.   End
  163.  Else
  164.   Begin
  165.    CheckData;
  166.    WaveCommCB^.SetCheck(1);
  167.    Prepare;
  168.  End;
  169. End;
  170.  
  171. procedure TCommentDlg.SetupWindow;
  172. VAR
  173.    ACount : Word;
  174. begin
  175.   TDialog.SetupWindow;
  176.   Prepare;
  177.   SendDlgItemMessage(HWindow, id_Text, em_LimitText, 62, 0);
  178.   WaveCommCB^.SetCheck(1);
  179. end;
  180.  
  181. procedure TCommentDlg.HandlePlay(Var Msg:TMessage);
  182. VAR
  183.    Message : Integer;
  184. BEGIN
  185. {--------------------------------------------------------------------}
  186. {--------------------- Play dialog box ------------------------------}
  187.    PWaveData(CurrCollect^.At(ActItem-1))^.GetData(WaveDummy);
  188.  
  189.    DPlayObj := New(PDiskPlay,Init(@self));
  190.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  191.    DPlayObj^.Done;
  192.  
  193.    DiskDummy[0] := WaveDummy.DiskDrive;
  194.    DiskDummy[1] := #0;
  195.    StrCat(DiskDummy, ':');
  196.    StrCat(DiskDummy,WaveDummy.PathName);
  197.    StrCat(DiskDummy,WaveDummy.FileName);
  198.  
  199.    IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
  200. {----------------------------------------------------------------------}
  201. {----------------------------------------------------------------------}
  202.    END;
  203.  
  204. Destructor TCommentDlg.Done;
  205. BEGIN
  206.    Dispose(WaveCommCB,Done);
  207.    TDialog.Done;
  208. END;
  209.  
  210. end.
  211.