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

  1. {
  2.               Unit BrwsDlg - for passing
  3.               WAV files to the database
  4. }
  5.  
  6. unit BrwsDlg;
  7.  
  8. interface
  9.  
  10. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
  11.      DataObj, CommDlg, SaveDlg, DiskDlg, Waveutil, Scandlg, TakeDlg, MarkDlg, SrchDlg, EventDlg;
  12.  
  13.  
  14. const
  15.   dn_BrwsDlg = 'BrowseDlg';
  16.  
  17.   id_FName     = 800;
  18.   id_FPath     = 801;
  19.   id_FLabl     = 802;
  20.   id_FSize     = 803;
  21.   id_FDate     = 804;
  22.   id_FComm     = 805;
  23.   id_ChngComm  = 806;
  24.   id_Reverse   = 807;
  25.   id_Forward   = 808;
  26.   id_KillEntry = 809;
  27.   id_DBNumber  = 810;
  28.   id_DBStart   = 811;
  29.   id_DBEnd     = 812;
  30.   id_DBPlay    = 813;
  31.   id_NewSrch   = 814;
  32.   id_NextSrch  = 815;
  33.   id_DBSize    = 816;
  34.   ID_SaveDB    = 817;
  35.   ID_UpdateCom = 818;
  36.   ID_IsinWAV   = 819;
  37.   id_DBList    = 820;
  38.   ID_NewInDB   = 825;
  39.   ID_StopSampl = 826;
  40.   ID_SveCheck  = 827;
  41.   ID_DelWaveCB = 828;
  42.  
  43. type
  44.   PBrwsDlg = ^TBrwsDlg;
  45.   TBrwsDlg = object(TDialog)
  46.     CurrCollect : PWaveCollection;
  47.     CurrNr : Integer;
  48.     MaxNr  : Integer;
  49.     DataLB : PListBox;
  50.     CurrSrch : Integer;
  51.     LocalCr : WAVECriteria;
  52.     SaveChckB : PCheckBox;
  53.     SaveCheck: Boolean;
  54.     DelWaveCB : PCheckBox;
  55.     {DBChanged : Boolean;}
  56.  
  57.     constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection);
  58.     procedure SetupWindow; virtual;
  59.     procedure HandleDataLB(var Msg: TMessage);virtual id_First + id_DBList;
  60.     procedure HandleChngComm(var Msg: TMessage);virtual id_First + id_ChngComm;
  61.     procedure HandleKill(Var Msg:TMessage); virtual id_First + id_KillEntry;
  62.     Procedure HandleDelKey(VAR Msg:TMessage);virtual WM_KeyDown;
  63.     procedure HandleReverse (Var Msg: TMessage); virtual id_First + id_Reverse;
  64.     procedure HandleForward (Var Msg: TMessage); virtual id_First + id_Forward;
  65.     procedure HandleStart (Var Msg: TMessage); virtual id_First + id_DBStart;
  66.     procedure HandleEnd   (Var Msg: TMessage); virtual id_First + id_DBEnd;
  67.     procedure HandlePlay  (Var Msg: TMessage); virtual id_First + id_DBPlay;
  68.     procedure HandleStopPlay(Var Msg: TMessage); virtual id_First + id_StopSampl;
  69.     Procedure HandleSaveDB(VAR Msg : TMessage); virtual id_First + id_SaveDB;
  70.     Procedure HandleNewData(VAR Msg : Tmessage);virtual id_First + id_NewInDB;
  71.     Procedure HandleNewSrch(VAR Msg : Tmessage);virtual id_First + id_NewSrch;
  72.     Procedure HandleNextSrch(VAR Msg : Tmessage);virtual id_First + id_NextSrch;
  73.     Procedure HandleSaveCheck(VAR Msg : Tmessage);virtual id_First + id_SveCheck;
  74.     Procedure HandleDelWaveCB(VAR Msg : Tmessage);virtual id_First + id_DelWaveCB;
  75.     Procedure InfoNoList;
  76.     Procedure ClearLocalCr;
  77.     Procedure DeleteWaveFile;
  78.     procedure OK(Var Msg:TMessage);virtual id_First + id_Ok;
  79.     Destructor Done;virtual;
  80.    private
  81.     Procedure ShowItem(Nr : Integer);
  82.   end;
  83.  
  84. implementation
  85.  
  86. Procedure TBrwsDlg.DeleteWaveFile;
  87. VAR
  88.  Message, Idx : Integer;
  89.  MDummy : DirStr;
  90.  F : File;
  91. BEGIN
  92.    StrCopy(MDummy,'Do you want the WAV file deleted physically from the drive?');
  93.    Message := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_OkCancel+MB_IconQuestion);
  94.  
  95.    IF Message = IDOk THEN BEGIN
  96.       PWaveData(CurrCollect^.At(CurrNr))^.GetData(WaveDummy);
  97.    
  98.       DPlayObj := New(PDiskPlay,Init(@self));
  99.       DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  100.       DPlayObj^.Done;
  101.  
  102.  
  103.       IF (DiskIntoDataBase = TRUE) THEN BEGIN
  104.          DiskIntoDataBase := FALSE;
  105.          Exit;
  106.          END;
  107.  
  108.       DiskDummy[0] := WaveDummy.DiskDrive;
  109.       DiskDummy[1] := #0;
  110.       StrCat(DiskDummy, ':');
  111.       StrCat(DiskDummy,WaveDummy.PathName);
  112.       StrCat(DiskDummy,WaveDummy.FileName);
  113. {$I-}
  114.       Assign(F,DiskDummy);
  115.       Erase(f);
  116. {$I+}
  117.       IF IOResult <> 0 THEN BEGIN
  118.          StrCopy(MDummy,'Attention: The WAV file could not be physically deleted.');
  119.          Message := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_OkCancel+MB_IconInformation);
  120.          END;
  121.       END;
  122.  
  123.    END;
  124.  
  125. Procedure TBrwsDlg.ClearLocalCr;
  126. BEGIN
  127.    With LocalCr DO BEGIN
  128.       WName[0] := #0;
  129.       WPath[0] := #0;
  130.       WBase[0] := #0;
  131.       WLim1[0] := #0;
  132.       WLim2[0] := #0;
  133.       WDay [0] := #0;
  134.       WMon [0] := #0;
  135.       WYear[0] := #0;
  136.       WDat := 0;
  137.       WCon0 := 0;
  138.       WCon1 := 0;
  139.       WCon2 := 0;
  140.       END;
  141.    END;
  142.  
  143. Procedure TBrwsDlg.ShowItem(Nr : Integer);
  144. VAR
  145.   TDummy : DirStrP2;
  146.   DateTime : TDateTime;
  147.   DateDum : Array[0..6] OF Char;
  148.   SRate   : WORD;
  149.   Chann   : ARRAY[0..10] of CHAR;
  150.   CDumm   : String[10];
  151.   SPDummy : DirStr;
  152.   SPSDum  : Array[0..50] OF Char;
  153.  
  154. Procedure Trim(PC : PChar);
  155. VAR i : Integer;
  156. BEGIN
  157.    For i := 0 to StrLen(PC) DO BEGIN
  158.       IF PC[i] = ' ' Then PC[i] := '0';
  159.       END;
  160.    END;
  161.  
  162. BEGIN
  163.  
  164.    PWaveData(CurrCollect^.At(Nr))^.GetData(WaveDummy);
  165.    StrCopy(TDummy, WaveDummy.FileName);
  166.    StrCat(TDummy, '    ');
  167.    Str(WaveDummy.SampRate, CDumm);
  168.    StrPCopy(Chann, CDumm);
  169.    StrCat(TDummy, Chann);
  170.    StrCat(TDummy, ' Hertz, ');
  171.    IF WaveDummy.Channels = 1 THEN StrCopy(Chann,' Mono')
  172.                              ELSE StrCopy(Chann,' Stereo');
  173.    StrCat(TDummy, Chann);
  174.    SetDlgItemText(HWindow, id_FName,TDummy);
  175.  
  176.    TDummy[0] := WaveDummy.DiskDrive;
  177.    TDummy[1] := #0;
  178.    StrCat(TDummy, ':');
  179.    StrCat(TDummy,WaveDummy.PathName);
  180.  
  181.    WD_NewShortHelp(TDummy,50);
  182.  
  183.    SetDlgItemText(HWindow, id_FPath,ShortHelp);
  184.    SetDlgItemText(HWindow, id_FLabl,WaveDummy.DiskLabel);
  185.    Str(WaveDummy.FileSize, TDummy);
  186.    StrCat(TDummy,' bytes');
  187.  
  188.    IF (WaveDummy.Save2Wave = C2W_IsSaved) THEN
  189.       StrCat(TDummy, ', with comment chunk')
  190.    ELSE
  191.    IF (WaveDummy.Save2Wave = C2W_Save) THEN
  192.       StrCat(TDummy, ', appended comment chunk');
  193.    
  194.    SetDlgItemText(HWindow, id_FSize,TDummy);
  195.    SetDlgItemText(HWindow, id_FComm,WaveDummy.FileComment);
  196.    Str(Nr+1, TDummy);
  197.    SetDlgItemText(HWindow, id_DBNumber,TDummy);
  198.  
  199.    Unpacktime(WaveDummy.CreationDate, DateTime);
  200.    
  201. { Displays date and time }
  202.  
  203.    Str(DateTime.Month:2, DateDum);
  204.    StrCopy(TDummy, DateDum);
  205.    StrCat(TDummy,'-');
  206.  
  207.    Str(DateTime.Day:2, DateDum);
  208.    StrCat(TDummy, DateDum);
  209.    StrCat(TDummy,'-');
  210.  
  211.    Str(DateTime.Year:4, DateDum);
  212.    StrCat(TDummy, DateDum);
  213.    StrCat(TDummy,',(');
  214.  
  215.    Str(DateTime.Hour:2, DateDum);
  216.    StrCat(TDummy, DateDum);
  217.    StrCat(TDummy,':');
  218.  
  219.    Str(DateTime.Min:2, DateDum);
  220.    StrCat(TDummy, DateDum);
  221.    StrCat(TDummy,')');
  222.  
  223.    DataLB^.SetSelIndex(Nr);
  224.  
  225.    Trim(TDummy);
  226.  
  227.    SetDlgItemText(HWindow, id_FDate,TDummy);
  228.  
  229.    Str(CurrCollect^.Count:5,CDumm);
  230.    StrPCopy(TDummy, CDumm);
  231.    Trim(TDummy);
  232.    SetDlgItemText(HWindow, id_DBSize, TDummy);
  233.  
  234.    END;
  235.  
  236.  
  237. constructor TBrwsDlg.Init(AParent: PWindowsObject;
  238.   AName: PChar; ACollect : PWaveCollection);
  239. begin
  240.   TDialog.Init(AParent, AName);
  241.   CurrCollect := ACollect;
  242.   CurrNr := 0;
  243.   CurrSrch := -1;
  244.   MaxNr := CurrCollect^.Count-1;
  245.   DataLB := New(PListBox, InitResource(@self, id_DBList));
  246.   DataLB^.Attr.Style := DataLB^.Attr.Style - lbs_Sort;
  247.   DBChanged := FALSE;
  248.   ClearLocalCr;
  249.   SaveCheck := TRUE;
  250.   SaveChckB := New(PCheckBox, InitResource(@self ,ID_SveCheck));
  251.   DelWaveCB := New(PCheckBox, InitResource(@self ,ID_DelWaveCB));
  252. end;
  253.  
  254. procedure TBrwsDlg.SetupWindow;
  255. VAR
  256.    ACount : Word;
  257.    Out    : Array [0..6] of char;
  258. begin
  259.   TDialog.SetupWindow;
  260.   SaveChckB^.SetCheck(1);
  261.   DelWaveCB^.SetCheck(0);
  262.   IF (WaveCollect^.Count >0) THEN BEGIN
  263.      WD_InsertAll(WaveCollect, DataLB);
  264.      ShowItem(CurrNr);
  265.      END;
  266. end;
  267.  
  268. procedure TBrwsDlg.HandleSaveCheck(VAR Msg:TMessage);
  269. BEGIN
  270.    IF SAveCheck = FALSE THEN BEGIN
  271.       SaveCheck := True;
  272.       SaveChckB^.SetCheck(1);
  273.       END
  274.    ELSE BEGIN
  275.       SaveCheck := FALSE;
  276.       SaveChckB^.SetCheck(0);
  277.       END;
  278.    END;
  279.  
  280.  
  281. procedure TBrwsDlg.HandleDelWaveCB(VAR Msg:TMessage);
  282. BEGIN
  283.    IF (DelWaveCB^.GetCheck = BF_Unchecked) THEN BEGIN
  284.       DelWaveCB^.SetCheck(1);
  285.       END
  286.    ELSE BEGIN
  287.       DelWaveCB^.SetCheck(0);
  288.       END;
  289.    END;
  290.  
  291. procedure TBrwsDlg.HandleDataLB(var Msg: TMessage);
  292. Var
  293.    Idx : Integer;
  294. begin
  295.   IF (WaveCollect^.Count <= 0) THEN BEGIN
  296.       InfoNoList;
  297.       END
  298.   ELSE BEGIN
  299.     case Msg.LParamHi of
  300.        lbn_SelChange, lbn_DblClk:
  301.          begin
  302.            if Msg.LParamHi = lbn_SelChange then BEGIN
  303.               Idx := DataLB^.GetSelIndex;
  304.               CurrNr := Idx;
  305.               ShowItem(CurrNr);
  306.               END;
  307.            if Msg.LParamHi = lbn_DblClk then BEGIN
  308.               HandlePlay(Msg);
  309.               END;
  310.          end;
  311.      end;
  312.      END;
  313. end;
  314.  
  315. procedure TBrwsDlg.HandleChngComm(var Msg: TMessage);
  316. VAR
  317.    LDialog : PCommentDlg;
  318.    MDialog : PSaveDlg;
  319.    Puffer  : ARRAY[0..12] OF CHAR;
  320.    Lommescount : Word;
  321.    pw : PWaveData;
  322. BEGIN
  323.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  324.       InfoNoList;
  325.       END
  326.    ELSE BEGIN
  327.       LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,WaveCollect,CurrNr));
  328.       IF Application^.ExecDialog(LDialog) = ID_Ok THEN BEGIN
  329.           {HandleSaveDB(Msg);}
  330.           ShowItem(CurrNr);
  331.           DBChanged := TRUE;
  332.           END;
  333.       END;
  334.    End;
  335.  
  336. procedure TBrwsDlg.HandleReverse(Var Msg: TMessage);
  337. Begin
  338.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  339.       InfoNoList;
  340.       Exit;
  341.       END
  342.    ELSE BEGIN
  343.       IF (CurrNr > 0) THEN BEGIN
  344.          DEC(CurrNr);
  345.          ShowItem(CurrNr);
  346.          END;
  347.       END;
  348.    End;
  349.  
  350. procedure TBrwsDlg.HandleForward(Var Msg: TMessage);
  351. Begin
  352.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  353.       InfoNoList;
  354.       Exit;
  355.       END
  356.    ELSE BEGIN
  357.       IF (CurrNr < MaxNr) THEN BEGIN
  358.          Inc(CurrNr);
  359.          ShowItem(CurrNr);
  360.          END;
  361.       END;
  362.    End;
  363.  
  364. procedure TBrwsDlg.HandleStart(Var Msg: TMessage);
  365. Begin
  366.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  367.       InfoNoList;
  368.       END
  369.    ELSE BEGIN
  370.       CurrNr := 0;
  371.       ShowItem(CurrNr);
  372.       END;
  373.    End;
  374.  
  375. procedure TBrwsDlg.HandleEnd(Var Msg: TMessage);
  376. Begin
  377.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  378.       InfoNoList;
  379.       END
  380.    ELSE BEGIN
  381.       CurrNr := MaxNr;
  382.       ShowItem(CurrNr);
  383.       END;
  384.    End;
  385.  
  386. procedure TBrwsDlg.HandleKill(Var Msg:TMessage);
  387. VAR
  388.    Message : Integer;
  389.    MDummy : ARRAY[0..70] of CHAR;
  390. BEGIN
  391.   IF (WaveCollect^.Count <= 0) THEN BEGIN
  392.       InfoNoList;
  393.       END
  394.   ELSE BEGIN
  395.   IF SaveCheck THEN BEGIN
  396.      StrCopy(MDummy,'Do you really want this record removed from the database?');
  397.      Message := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_OkCancel+MB_IconQuestion);
  398.      END
  399.   ELSE Message := IDOk;
  400.   IF Message = IDOk THEN BEGIN
  401.  
  402.      IF (DelWaveCB^.GetCheck = BF_Checked) THEN BEGIN
  403.       DeleteWaveFile;
  404.       END;
  405.  
  406.      DataLB^.DeleteString(Currnr);
  407.      WaveCollect^.AtDelete (CurrNr);
  408.      DBChanged := TRUE;
  409.      Dec(MaxNr,1);
  410.  
  411.      CheckEvents;
  412.  
  413.      if (CurrNr > MaxNr) THEN CurrNr := MaxNr;
  414.      WaveCollect^.Pack;
  415.      {HandleSaveDB(Msg);}
  416.      if Maxnr <0 then BEGIN
  417.         MaxNr := 0;
  418.         {TDialog.OK(Msg);}
  419.         SetDlgItemText(HWindow, id_FName,' ');
  420.         SetDlgItemText(HWindow, id_FPath,' ');
  421.         SetDlgItemText(HWindow, id_FLabl,' ');
  422.         SetDlgItemText(HWindow, id_FSize,' ');
  423.         SetDlgItemText(HWindow, id_FComm,' ');
  424.         SetDlgItemText(HWindow, id_DBNumber,' ');
  425.         SetDlgItemText(HWindow, id_FDate,' ');
  426.         SetDlgItemText(HWindow, id_DBSize, ' ');
  427.         END
  428.      ELSE ShowItem(CurrNr);
  429.      END;
  430.      END;
  431.   END;
  432.  
  433. procedure TBrwsDlg.HandleDelKey(Var Msg:TMessage);
  434. BEGIN
  435.    {
  436.    HandleKill(Msg);
  437.    }
  438.    END;
  439.  
  440. procedure TBrwsDlg.HandleSaveDB(Var Msg:TMessage);
  441. VAR
  442.    MDialog : PSaveDlg;
  443. BEGIN
  444.   IF (WaveCollect^.Count <= 0) THEN BEGIN
  445.       InfoNoList;
  446.       END
  447.   ELSE BEGIN
  448.   MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,1));
  449.     IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
  450.         END;
  451.   DBChanged := FALSE;
  452.   END;
  453.   END;
  454.  
  455. procedure TBrwsDlg.HandleNewData(Var Msg:TMessage);
  456. VAR
  457.    LDialog : PScanDlg;
  458.    TkDialog : PTakeDlg;
  459.    Puffer  : ARRAY[0..12] OF CHAR;
  460.    FileName: ARRAY[0..fsPathName] OF Char;
  461. BEGIN
  462.    GetCurDir(FileName,0);
  463.    {WriteLn(FileName);}
  464.    IF ((UpCase(FileName[0]) = 'A') OR (UpCase(FileName[0]) = 'B')) THEN SetCurDir(RootDir);
  465.    LDialog := New(PScanDlg, Init(@self, dn_ScanDlg,StrCopy(FileName, '*.WAV')));
  466.    IF Application^.ExecDialog(LDialog) = ID_OK THEN
  467.     BEGIN
  468.       IF (WaveSelectColl^.Count > 0) THEN BEGIN
  469.          TkDialog := New(PTakeDlg, Init(@self, DN_TakeDlg,WaveSelectColl));
  470.          IF Application^.ExecDialog(TkDialog) = ID_Ok THEN
  471.           BEGIN
  472.              {DBChanged := True;} {Only needed if not saving immediately}
  473.              CurrNr := 0;
  474.              MaxNr := CurrCollect^.Count-1;
  475.              DataLB^.ClearList;
  476.              WD_InsertAll(WaveCollect, DataLB);
  477.              ShowItem(CurrNr);
  478.              DataLB^.SetSelIndex(CurrNr);
  479.             END;
  480.          END;
  481.      END;
  482.   END;
  483.  
  484. procedure TBrwsDlg.HandleNewSrch(Var Msg:TMessage);
  485. VAR
  486.    LDialog : PMarkDlg;
  487.    TDialog : PSrchDlg;
  488.    Puffer  : ARRAY[0..12] OF CHAR;
  489.    FileName: ARRAY[0..fsPathName] OF Char;
  490. BEGIN
  491.   IF (WaveCollect^.Count <= 0) THEN BEGIN
  492.       InfoNoList;
  493.       END
  494.   ELSE BEGIN
  495.  
  496.    LDialog := New(PMarkDlg, Init(@self, DN_MarkDlg,'HANS'));
  497.    IF Application^.ExecDialog(LDialog) = ID_Ok THEN
  498.     BEGIN
  499.       CurrSrch := -1;
  500.       CurrNr := 0;
  501.       ShowItem(CurrNr);
  502.       HandleNextSrch(Msg);
  503.       {
  504.       ClearLocalCr;
  505.       Move(WaveDCrit,LocalCr, SizeOf(WaveDCrit));
  506.       }
  507.       END;
  508.    END;
  509.   END;
  510.  
  511. procedure TBrwsDlg.HandleNextSrch(Var Msg:TMessage);
  512. VAR
  513.    SDialog : PSrchDlg;
  514.    Count : Integer;
  515.    PWTest : PWaveData;
  516. BEGIN
  517. {
  518.   Count := CurrNr+1;
  519.   While (Count <= (WaveCollect^.Count-1)) DO BEGIN
  520.      PWTest := WaveCollect^.At(Count);
  521.      IF (WD_SearchNext(Count, PWTest, LocalCr) = Count) THEN BEGIN
  522.         CurrSrch := Count;
  523.         CurrNr := CurrSrch;
  524.         ShowItem(CurrNr);
  525.         Count:= WaveCollect^.Count+2;
  526.         END;
  527.      Inc(Count);
  528.      END;
  529.   IF (Count = WaveCollect^.Count) THEN BEGIN
  530.      StrCopy(ShortMain,'No more data records found');
  531.      BWCCMessageBox(HWindow,ShortMain, 'Wicked Sounds for Windows: Note',MB_Ok+MB_IconInformation);
  532.      END
  533. }
  534.   IF (WaveCollect^.Count <= 0) THEN BEGIN
  535.       InfoNoList;
  536.       END
  537.   ELSE BEGIN
  538.  
  539.   SDialog := New(PSrchDlg, Init(@self, dn_SrchDlg,WaveCollect,0,CurrNr));
  540.   IF Application^.ExecDialog(SDialog) = ID_OK THEN
  541.     BEGIN
  542.     CurrNr := SrchBack;
  543.     ShowItem(CurrNr);
  544.     END;
  545.   END;
  546.   END;
  547.  
  548. procedure TBrwsDlg.InfoNoList;
  549. BEGIN
  550.   {
  551.   BWCCMessageBox(HWindow,'No more elements in list','Wicked Sounds for Windows: Note',mb_Ok + mb_IconStop);
  552.   }
  553.   END;
  554.  
  555.  
  556. procedure TBrwsDlg.HandlePlay(Var Msg:TMessage);
  557. VAR
  558.    Message,IDx : Integer;
  559.    PWTest : PWaveData;
  560.    BWCCMes : Integer;
  561.    MDummy : Array[0..100] OF Char;
  562. BEGIN
  563.    IF (WaveCollect^.Count <= 0) THEN BEGIN
  564.       InfoNoList;
  565.       END
  566.    ELSE BEGIN
  567. {--------------------------------------------------------------------}
  568. {--------------------- Play dialog box ------------------------------}
  569.  
  570.    PWaveData(CurrCollect^.At(CurrNr))^.GetData(WaveDummy);
  571.  
  572.    DPlayObj := New(PDiskPlay,Init(@self));
  573.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  574.    DPlayObj^.Done;
  575.  
  576.    IF (DiskIntoDataBase = TRUE) THEN BEGIN
  577.       DiskIntoDataBase := FALSE;
  578.       PWTest := New(PWaveData, Init(WaveDummy));
  579.       IF (WaveCollect^.Search(PWTEst,Idx) = True) THEN BEGIN
  580.          StrCopy(MDummy,'Database already contains a file with this name and path.');
  581.          BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
  582.          Dispose(PWTest,Done);
  583.          END
  584.       ELSE BEGIN
  585.          CurrCollect^.AtPut(CurrNr,New(PWaveData, Init(WaveDummy)));
  586.          ShowItem(CurrNr);
  587.          DBChanged := TRUE;
  588.          END;
  589.       END;
  590.  
  591.    DiskDummy[0] := WaveDummy.DiskDrive;
  592.    DiskDummy[1] := #0;
  593.    StrCat(DiskDummy, ':');
  594.    StrCat(DiskDummy,WaveDummy.PathName);
  595.    StrCat(DiskDummy,WaveDummy.FileName);
  596.  
  597.    IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
  598. {----------------------------------------------------------------------}
  599. {----------------------------------------------------------------------}
  600.    END;
  601.    END;
  602.  
  603. procedure TBrwsDlg.HandleStopPlay(Var Msg:TMessage);
  604. BEGIN
  605.    sndPlaySound(NIL,SND_Async);
  606.    END;
  607.  
  608. procedure TBrwsDlg.OK(Var Msg:TMessage);
  609. VAR
  610.    Message : Integer;
  611.    MDummy : Array[0..100] of Char;
  612. BEGIN
  613.    IF DBChanged THEN BEGIN
  614.       StrCopy(MDummy, 'Database changed since last save.');
  615.       StrCat(MDummy,' Save changes?');
  616.       Message := BWCCMessageBox(HWindow,MDummy, 'Wicked Sounds for Windows: Note', MB_OkCancel+mb_IconHand);
  617.       IF Message = idOK THEN HandleSaveDB(Msg); 
  618.       END;
  619.    TDialog.OK (Msg);
  620. End;
  621.  
  622. Destructor TBrwsDlg.Done;
  623. BEGIN
  624.    Dispose(SaveChckB,Done);
  625.    Dispose(DelWaveCB,Done);
  626.    Dispose(DataLb,Done);
  627.    TDialog.Done;
  628.    END;
  629.  
  630. end.
  631.