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

  1. { Unit for passing WAV files to the database }
  2.  
  3. unit TakeDlg;
  4.  
  5. interface
  6.  
  7. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
  8.      DataObj, CommDlg, saveDlg, DiskDlg, EventDlg;
  9.  
  10. const
  11.   dn_TakeDlg = 'TakeDlg';
  12.   id_Lister   = 600;
  13.   id_titles  = 601;
  14.   id_kill    = 602;
  15.   id_comment = 603;
  16.   ID_TakePlay= 604;
  17.  
  18. type
  19.   PTakeDlg = ^TTakeDlg;
  20.   TTakeDlg = object(TDialog)
  21.     CommNow : BOOL;
  22.     Count2Get : Integer;
  23.     ChooseLB : PListBox;
  24.     CurrCollect : PWaveCollection;
  25.     constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection);
  26.     function CanClose: Boolean; virtual;
  27.     procedure SetupWindow; virtual;
  28.     procedure HandleChooseLB(var Msg: TMessage);virtual id_First + id_Lister;
  29.     procedure HandleKill(Var Msg:TMessage); virtual id_First + id_Kill;
  30.     procedure HandleNow (Var Msg: TMessage); virtual id_First + id_comment;
  31.     Procedure HandlePlay(VAR Msg : TMessage);virtual id_First + id_TakePlay;
  32.     procedure OK(Var Msg:TMessage); virtual id_first + id_Ok;
  33.     Destructor Done;virtual;
  34.   end;
  35.  
  36. implementation
  37.  
  38. { TTakeDlg }
  39.  
  40. constructor TTakeDlg.Init(AParent: PWindowsObject;
  41.   AName: PChar; ACollect : PWaveCollection);
  42. begin
  43.   TDialog.Init(AParent, AName);
  44.   CurrCollect := ACollect;
  45.   CommNow := FALSE;
  46.   ChooseLB := New(PListBox, InitResource( @Self, id_Lister));
  47.   WD_KillDoubles(Count2Get);
  48. end;
  49.  
  50. function TTakeDlg.CanClose: Boolean;
  51. begin
  52.   CanClose := True;
  53. end;
  54.  
  55. procedure TTakeDlg.SetupWindow;
  56. VAR
  57.    ACount : Word;
  58.    Out    : Array [0..6] of char;
  59. begin
  60.   TDialog.SetupWindow;
  61.   WD_InsertAll(CurrCollect, ChooseLb);
  62.   Str (CurrCollect^.Count:5,Out);
  63.   SetDlgItemText(HWindow, id_titles,out);
  64.   CommNow := FALSE;
  65.   ChooseLB^.SetSelIndex(0);
  66. end;
  67.  
  68. procedure TTakeDlg.HandleNow (Var Msg: TMessage);
  69. Begin
  70.  if CommNow = FALSE Then
  71.   Begin
  72.    CommNow := TRUE;
  73.   End
  74.  Else
  75.   Begin
  76.    CommNow := FALSE;
  77.   End;
  78. End;
  79.  
  80. procedure TTakeDlg.HandleKill(Var Msg:TMessage);
  81. var
  82.     Idx : Integer;
  83.     Out : array [0..5] of char;
  84. BEGIN
  85.     Idx := ChooseLB^.GetSelIndex;
  86.     if idx >-1 then
  87.      Begin
  88.       {WaveSelectColl^.AtDelete (idx);}
  89.       CurrCollect^.AtDelete (idx);
  90.       ChooseLb^.DeleteString (idx);
  91.       {Str (WaveSelectColl^.Count:5,Out);}
  92.       Str (CurrCollect^.Count:5,Out);
  93.       SetDlgItemText(HWindow, id_titles,out);
  94.      End;
  95.    END;
  96.  
  97. procedure TTakeDlg.OK(Var Msg:TMessage);
  98. VAR
  99.    LDialog : PCommentDlg;
  100.    MDialog : PSaveDlg;
  101.    Puffer  : ARRAY[0..12] OF CHAR;
  102.    Lommescount : Word;
  103.    pw : PWaveData;
  104. BEGIN
  105.     IF (CommNow = TRUE) Then
  106.     Begin
  107.      {LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,WaveSelectColl,-1));}
  108.      LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,CurrCollect,-1));
  109.      IF Application^.ExecDialog(LDialog) = ID_Ok THEN
  110.         BEGIN END;
  111.      End;
  112.  
  113.    {WD_CopyAll(WaveSelectColl, WaveCollect);}
  114.    WD_CopyAll(CurrCollect, WaveCollect);
  115.  
  116.    MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,1));
  117.     IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
  118.         END;
  119. {
  120.    Dispose(WaveCollect,Done);
  121.    WaveCollect := New(PWaveCollection, Init(20,5));
  122.    IF Exists(WF_DAT) THEN BEGIN
  123.       WaveStream := New ( PBufStream, Init(WF_DAT,  stOpen, 512));
  124.       WaveCollect := PWaveCollection(WaveStream^.Get);
  125.       Dispose(WaveStream,Done);
  126.       END
  127.       ELSE Halt(999);
  128. }
  129.  
  130. {   WD_Save_n_Copy;}
  131.  
  132.    CheckEvents;
  133.  
  134.    TDialog.OK (Msg);
  135. End;
  136.  
  137. procedure TTakeDlg.HandlePlay(Var Msg:TMessage);
  138. VAR
  139.    Message, BWCCMEs : Integer;
  140.    MDummy : Array[0..70] of ChAR;
  141. BEGIN
  142. {--------------------------------------------------------------------}
  143. {--------------------- Play   dialog --------------------------------}
  144.    Message := ChooseLB^.GetSelIndex;
  145.    IF (Message < 0) OR (Message >= WaveSelectColl^.Count) THEN Exit;
  146.    PWaveData(WaveSelectColl^.At(Message))^.GetData(WaveDummy);
  147.  
  148.    DPlayObj := New(PDiskPlay,Init(@self));
  149.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  150.    DPlayObj^.Done;
  151.  
  152.    IF (DiskIntoDataBase = TRUE) THEN BEGIN
  153.       DiskIntoDataBase := FALSE;
  154.       StrCopy(MDummy,'You can only edit the database from the Database dialog box');
  155.          BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
  156.          END
  157.       ELSE BEGIN
  158.          END;
  159.  
  160.    DiskDummy[0] := WaveDummy.DiskDrive;
  161.    DiskDummy[1] := #0;
  162.    StrCat(DiskDummy, ':');
  163.    StrCat(DiskDummy,WaveDummy.PathName);
  164.    StrCat(DiskDummy,WaveDummy.FileName);
  165.  
  166.    IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
  167. {----------------------------------------------------------------------}
  168. {----------------------------------------------------------------------}
  169.    END;
  170.  
  171. procedure TTakeDlg.HandleChooseLB(var Msg: TMessage);
  172. Var
  173.    Idx : Integer;
  174. begin
  175.   case Msg.LParamHi of
  176.     lbn_SelChange, lbn_DblClk:
  177.       begin
  178.         if Msg.LParamHi = lbn_DblClk then BEGIN
  179.            HandlePlay(Msg);
  180.            END;
  181.       end;
  182.   end;
  183. end;
  184.  
  185. Destructor TTakeDlg.Done;
  186. BEGIN
  187.    TDialog.Done;
  188.    END;
  189.  
  190. end.
  191.