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

  1. { Unit for passing found WAV files to the playlist }
  2.  
  3. unit PPlayDlg;
  4.  
  5. interface
  6.  
  7. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
  8.      DataObj, CommDlg, MarkDlg, BrwsPDlg, saveDlg, DiskDlg, SrchDlg;
  9.  
  10. const
  11.   dn_PPlayDlg = 'PLSTPLAY';
  12.  
  13.   id_ListerDB  = 900;
  14.   id_ListerPP  = 901;
  15.   id_Ins      = 902;
  16.   id_Del      = 903;
  17.   id_srch     = 904;
  18.   id_Clear    = 905;
  19.   id_Insert   = 906;
  20.   id_PPBrwse  = 908;
  21.   id_SavList  = 909;
  22.   id_ShowVer  = 910;            
  23.   ID_PPlayDB  = 911;
  24.  
  25. type
  26.   PPPlayDlg = ^TPPlayDlg;
  27.   TPPlayDlg = object(TDialog)
  28.     DataLB : PListBox;
  29.     PPlayLB : PListBox;
  30.     Check4Play : Byte;
  31.     CurrCollect : PWaveCollection;
  32.     constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection);
  33.     procedure SetupWindow; virtual;
  34.     procedure HandleDataLB(var Msg: TMessage);virtual id_first + id_ListerDB;
  35.     procedure HandlePPlayLB(var Msg: TMessage);virtual id_first + id_ListerPP;
  36.     Procedure HandleIns(Var Msg:TMessage); virtual id_first + id_Ins;
  37.     procedure HandleInsert(Var Msg:TMessage);virtual id_First + id_Insert;
  38.     procedure HandleDel(Var Msg:TMessage); virtual id_First + id_Del;
  39.     procedure HandleClear(VAR Msg : TMessage);virtual id_First + id_Clear;
  40.     Procedure HandleSrch (Var Msg:TMessage); virtual id_first + id_srch;
  41.     Procedure HandlePPBrwse (Var Msg:TMessage); virtual id_first + id_PPBrwse;
  42.     Procedure HandleSaveList(VAR Msg : TMessage);virtual id_First + id_SavList;
  43.     procedure HandlePlayDB(Var Msg:TMessage);virtual id_First + id_PPlayDB;
  44.     procedure OK(Var Msg:TMessage); virtual id_first + id_Ok;
  45.     Destructor Done;virtual;
  46.   end;
  47.  
  48. implementation
  49.  
  50. { TPPlayDlg }
  51.  
  52. constructor TPPlayDlg.Init(AParent: PWindowsObject;
  53.   AName: PChar; ACollect : PWaveCollection);
  54. begin
  55.   TDialog.Init(AParent, AName);
  56.   CurrCollect := ACollect;
  57.   DataLB := New(PListBox, InitResource( @Self, id_ListerDB));
  58.   PPlayLB := New(PListBox, InitResource( @Self, id_ListerPP));
  59.   PPlayLB^.Attr.Style := PPlayLB^.Attr.Style - lbs_Sort;
  60.   Check4Play := 1;
  61. end;
  62.  
  63. procedure TPPlayDlg.SetupWindow;
  64. VAR
  65.    ACount : Word;
  66.    Message : Integer;
  67. begin
  68.   TDialog.SetupWindow;
  69.   WD_InsertAll(WaveCollect, DataLB);
  70.   WD_InsertAll(WavePlayColl, PPlayLB);
  71.   Message := 0;
  72.   IF NOT(Message >= WaveCollect^.Count) THEN BEGIN
  73.      PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
  74.      ShortMain[0] := WaveDummy.DiskDrive;
  75.      ShortMain[1] := #0;
  76.      StrCat(ShortMain,':');
  77.      StrCat(ShortMain,WaveDummy.PathName);
  78.      WD_NewShortHelp(ShortMain,28);
  79.      SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
  80.      DataLB^.SetSelIndex(0);
  81.      if WavePlayColl^.Count > 0 THEN PPlayLB^.SetSelIndex(0);
  82.      END;
  83. end;
  84.  
  85. procedure TPPlayDlg.HandleDataLB(var Msg: TMessage);
  86. VAR
  87.  Message : Integer;
  88. begin
  89.   Check4Play := 1;
  90.   case Msg.LParamHi of
  91.     lbn_SelChange, lbn_DblClk:
  92.       begin
  93.         Message := DataLB^.GetSelIndex;
  94.         IF (Message < 0) OR (Message >= WaveCollect^.Count) THEN Exit;
  95.         PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
  96.         ShortMain[0] := WaveDummy.DiskDrive;
  97.         ShortMain[1] := #0;
  98.         StrCat(ShortMain,':');
  99.         StrCat(ShortMain,WaveDummy.PathName);
  100.         WD_NewShortHelp(ShortMain,28);
  101.         SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
  102.         if Msg.LParamHi = lbn_DblClk then HandleIns(Msg);
  103.       end;
  104.     {
  105.     lbn_KillFocus:
  106.       SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);
  107.       }
  108.   end;
  109. end;
  110.  
  111. procedure TPPlayDlg.HandlePPlayLB(var Msg: TMessage);
  112. VAR
  113.  Message : Integer;
  114. begin
  115.   Check4Play := 2;
  116.   case Msg.LParamHi of
  117.     lbn_SelChange, lbn_DblClk:
  118.       begin
  119.         Message := PPlayLB^.GetSelIndex;
  120.         IF (Message < 0) OR (Message >= WavePlayColl^.Count) THEN Exit;
  121.         PWaveData(WavePlayColl^.At(Message))^.GetData(WaveDummy);
  122.         ShortMain[0] := WaveDummy.DiskDrive;
  123.         ShortMain[1] := #0;
  124.         StrCat(ShortMain,':');
  125.         StrCat(ShortMain,WaveDummy.PathName);
  126.         WD_NewShortHelp(ShortMain,28);
  127.         SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
  128.         if Msg.LParamHi = lbn_DblClk then HandlePlayDB(Msg);
  129.       end;
  130.     {
  131.     lbn_KillFocus:
  132.       SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);
  133.       }
  134.   end;
  135. end;
  136.  
  137. procedure TPPlayDlg.HandlePlayDB(Var Msg:TMessage);
  138. VAR
  139.    Message,IDx,BWCCMes : Integer;
  140.    PWTest : PWaveData;
  141.    MDummy : Array[0..100] of Char;
  142.  
  143. BEGIN
  144. {--------------------------------------------------------------------}
  145. {--------------------- Play dialog box ------------------------------}
  146.  
  147.    IF Check4Play = 1 THEN BEGIN
  148.       Message := DataLB^.GetSelIndex;
  149.       IF (Message < 0) OR (Message >= WaveCollect^.Count) THEN Exit;
  150.       PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
  151.       END
  152.    ELSE IF Check4Play = 2 THEN BEGIN
  153.       Message := PPlayLB^.GetSelIndex;
  154.       IF (Message < 0) OR (Message >= WavePlayColl^.Count) THEN Exit;
  155.       PWaveData(WavePlayColl^.At(Message))^.GetData(WaveDummy);
  156.       END;
  157.  
  158.    DPlayObj := New(PDiskPlay,Init(@self));
  159.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  160.    DPlayObj^.Done;
  161.  
  162.    IF (DiskIntoDataBase = TRUE) THEN BEGIN
  163.       DiskIntoDataBase := FALSE;
  164.       StrCopy(MDummy,'You can only change the database from the Database dialog box.');
  165.          BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
  166.          END
  167.       ELSE BEGIN
  168.          END;
  169.  
  170.  
  171.    DiskDummy[0] := WaveDummy.DiskDrive;
  172.    DiskDummy[1] := #0;
  173.    StrCat(DiskDummy, ':');
  174.    StrCat(DiskDummy,WaveDummy.PathName);
  175.    StrCat(DiskDummy,WaveDummy.FileName);
  176.  
  177.    IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
  178. {----------------------------------------------------------------------}
  179. {----------------------------------------------------------------------}
  180.    END;
  181.  
  182. procedure TPPlayDlg.HandleIns(Var Msg:TMessage);
  183. var
  184.     Idx : Integer;
  185.     Out : array [0..5] of char;
  186.     PWTest : PWaveData;
  187. BEGIN
  188.     Idx := DataLB^.GetSelIndex;
  189.     if idx >-1 then
  190.      Begin
  191.       PWTest := CurrCollect^.At(Idx);
  192.       WavePlayColl^.Insert(PWTest);
  193.       PWTest^.GetData(WaveDummy);
  194.       PPlayLB^.AddString (WaveDummy.FileName);
  195.       PPlayLB^.SetSelIndex(WavePlayColl^.Count-1);
  196.      End;
  197.    END;
  198.  
  199. procedure TPPlayDlg.HandleInsert(Var Msg:TMessage);
  200. var
  201.     IdxDB : Integer;
  202.     IdxPB : Integer;
  203.     Out : array [0..5] of char;
  204.     PWTest : PWaveData;
  205. BEGIN
  206.     IdxDB := DataLB^.GetSelIndex;
  207.     if IdxDB >-1 then
  208.      Begin
  209.       IdxPB := PPlayLB^.GetSelIndex;
  210.       IF IdxPB < 0 THEN IDxPB := 0;
  211.       PWTest := CurrCollect^.At(IdxDB);
  212.       WavePlayColl^.AtInsert(IdxPB,PWTest);
  213.       PWTest^.GetData(WaveDummy);
  214.       PPlayLB^.InsertString (WaveDummy.FileName, IdxPB);
  215.       {PPlayLB^.SetSelIndex(WavePlayColl^.Count-1);}
  216.      End;
  217.    END;
  218.  
  219. procedure TPPlayDlg.HandleDel(Var Msg:TMessage);
  220. var
  221.     Idx : Integer;
  222.     Out : array [0..5] of char;
  223. BEGIN
  224.     Idx := PPlayLB^.GetSelIndex;
  225.     if idx >-1 then
  226.      Begin
  227.       WavePlayColl^.AtDelete (idx);
  228.       PPlayLB^.DeleteString (idx);
  229.       IF idx > WavePlayColl^.Count-1 THEN idx := WavePlayColl^.Count-1;
  230.       PPlayLB^.SetSelIndex(idx);
  231.      End;
  232.    END;
  233.  
  234. procedure TPPLayDlg.HandleSrch(Var Msg:TMessage);
  235.  VAR
  236.    Idx  : Integer;
  237.    LDialog : PMarkDlg;
  238.    TDialog : PSrchDlg;
  239.    PBuffer : ARRAY[0..12] OF CHAR;
  240. BEGIN
  241.    LDialog := New(PMarkDlg, Init(@self, DN_MarkDlg,'HANS'));
  242.    IF Application^.ExecDialog(LDialog) = ID_Ok THEN
  243.     BEGIN
  244.        TDialog := New(PSrchDlg, Init(@self, dn_SrchDlg,WaveCollect,1,0));
  245.        IF Application^.ExecDialog(TDialog) = ID_OK THEN
  246.          BEGIN END;
  247.        Idx := PPlayLB^.GetSelIndex;
  248.        PPlayLb^.ClearList;
  249.        WD_InsertAll(WavePlayColl, PPlayLB);
  250.        PPlayLB^.SetSelIndex(idx);
  251.        END;
  252.    END;
  253.  
  254. procedure TPPLayDlg.HandlePPBrwse(Var Msg:TMessage);
  255.  VAR
  256.    LDialog : PBrwsPPDlg;
  257.    PBuffer : ARRAY[0..12] OF CHAR;
  258. BEGIN
  259.    IF (WavePlayColl^.Count <= 0) THEN BEGIN
  260.       BWCCMessageBox(HWindow,'Still no elements in list','Wicked Sounds for Windows: Note',mb_Ok + mb_IconStop);
  261.       END
  262.    ELSE BEGIN
  263.       LDialog := New(PBrwsPPDlg, Init(@self, DN_BrwsPPDlg,WavePlayColl));
  264.       IF Application^.ExecDialog(LDialog) = ID_Ok THEN
  265.        BEGIN
  266.           PPlayLb^.ClearList;
  267.           WD_InsertAll(WavePlayColl, PPlayLB);
  268.           END;
  269.       END;
  270.    END;
  271.  
  272. procedure TPPLayDlg.HandleClear(Var Msg:TMessage);
  273. BEGIN
  274.    PPlayLb^.ClearList;
  275.    WavePlayColl^.DeleteAll;
  276.    END;
  277.  
  278.  
  279. procedure TPPLayDlg.HandleSaveList(Var Msg:TMessage);
  280. VAR
  281.    MDialog : PSaveDlg;
  282. BEGIN
  283.    MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,2));
  284.    IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
  285.       END;
  286.    END;
  287.  
  288. procedure TPPlayDlg.OK(Var Msg:TMessage);
  289. VAR
  290.    LDialog : PCommentDlg;
  291.    PBuffer : ARRAY[0..12] OF CHAR;
  292.    Lommescount : Word;
  293.    pw : PWaveData;
  294. BEGIN
  295.    TDialog.OK (Msg);
  296. End;
  297.  
  298. Destructor TPPlayDlg.Done;
  299. BEGIN
  300.    TDialog.Done;
  301.    END;
  302.  
  303. end.
  304.