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

  1. Unit SaveDlg;
  2.  
  3. INTERFACE
  4. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem,
  5.      DataObj, RiffComm, EventDlg;
  6.  
  7. const
  8.   dn_SaveDlg = 'SaveDlg';
  9.  
  10.   id_StartSV = 395;
  11. type
  12.   PSaveDlg = ^TSaveDlg;
  13.   TSaveDlg = object(TDialog)
  14.     CurrCollect : PWaveCollection;
  15.     SaveFlag : Integer;
  16.     constructor Init(AParent: PWindowsObject;AName: PChar; AFlag: Integer);
  17.     procedure SetupWindow; virtual;
  18.     Procedure HandleStartSave(VAR Msg : TMessage);virtual id_First + id_StartSV;
  19.   end;
  20.  
  21. PROCEDURE WD_Check4SAve2Wave(DataSource : PWaveCollection);
  22.  
  23. implementation
  24.  
  25. PROCEDURE WD_Check4SAve2Wave(DataSource : PWaveCollection);
  26. {
  27.  *** Input     : Pointer to source collection
  28.  *** Output    : None
  29.  *** Remarks   : Checks whether comment has been written to WAV file
  30. }
  31.  
  32.    PROCEDURE Check_One(Item : PWaveData); FAR;
  33.    VAR
  34.       Message : Integer;
  35.    BEGIN
  36.       Item^.GetData(WaveDummy);
  37.       IF (WaveDummy.Save2Wave = C2W_Save) THEN BEGIN
  38.           PutRIFFComment(WaveDummy, Message);
  39.           CASE Message of
  40.           MMWriteOK     : BEGIN
  41.                            WaveDummy.Save2Wave := C2W_IsSaved
  42.                            END;
  43.           MMWriteCancel : BEGIN
  44.                            WaveDummy.Save2Wave := C2W_DontSave;
  45.                            END;
  46.           ELSE WaveDummy.Save2Wave := C2W_DontSave;
  47.           END;
  48.          END;
  49.       Move(WaveDummy,Item^.WD,SizeOf(WaveDummy));
  50.       END;
  51. BEGIN
  52.    WaveCollect^.ForEach(@Check_One);
  53.    END;
  54.  
  55.  
  56. constructor TSaveDlg.Init(AParent: PWindowsObject;AName: PChar; AFlag: Integer);
  57. begin
  58.   TDialog.Init(AParent, AName);
  59.   SaveFlag := AFlag;
  60. end;
  61.  
  62. procedure TSaveDlg.SetupWindow;
  63. VAR
  64.    Msg : TMessage;
  65. begin
  66.   TDialog.SetupWindow;
  67.   TWindowsObject.Show(sw_Show);
  68.   {WD_Check4Save2Wave(WaveCollect);}
  69.   HandleStartSave(Msg);
  70.   {PostMessage(HWindow, wm_Command, id_StartSV, 0);}
  71. end;
  72.  
  73. Procedure TSaveDlg.HandleStartSave(VAR Msg : TMessage);
  74. BEGIN
  75.    {
  76.    SetDlgItemText(HWindow,396,'Save');
  77.    SetDlgItemText(HWindow,397,'Database');
  78.    }
  79.    UpdateWindow(HWindow);
  80.    IF SaveFlag = 1 THEN BEGIN
  81.       SetDlgItemText(HWindow,397,'Database');
  82.       WaveStream := New ( PBufStream, Init(WF_TMP,  stCreate, 512));
  83.       WaveStream^.Put(WaveCollect);
  84.       Dispose(WaveStream,Done);
  85.       WD_TMP2DAT;
  86.       END
  87.    ELSE
  88.    IF SaveFlag = 2 THEN BEGIN
  89.       SetDlgItemText(HWindow,397,'Program list');
  90.       WaveStream := New ( PBufStream, Init(WF_CAS,  stCreate, 512));
  91.       WaveStream^.Put(WavePlayColl);
  92.       Dispose(WaveStream,Done);
  93.       {WD_TMP2DAT;}
  94.       END;
  95.    LoadEvents;
  96.    TDialog.OK(Msg);
  97.    end;
  98.  
  99. BEGIN
  100.    END.
  101.