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

  1.  
  2. { Unit BrwsPDlg - for passing WAV files to the playlist }
  3.  
  4. unit BrwsPDlg;
  5.  
  6. interface
  7.  
  8. uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
  9.      DataObj, CommDlg, DiskDlg, Waveutil;
  10.  
  11. const
  12.   dn_BrwsPPDlg = 'BrwsPPDlg';
  13.  
  14.   id_PPName     = 1400;
  15.   id_PPPath     = 1401;
  16.   id_PPLabl     = 1402;
  17.   id_PPFSize    = 1403;
  18.   id_PPDate     = 1404;
  19.   id_PPComm     = 1405;
  20.   id_PPKillEnt  = 1406;
  21.   id_PPReverse  = 1407;
  22.   id_PPForward  = 1408;
  23.   id_PPNumber   = 1410;
  24.   id_PPStart    = 1411;
  25.   id_PPEnd      = 1412;
  26.   id_PPPlay     = 1413;
  27.   id_PPList     = 1414;
  28.   id_PPSize     = 1416;
  29.  
  30. type
  31.   PBrwsPPDlg = ^TBrwsPPDlg;
  32.   TBrwsPPDlg = object(TDialog)
  33.     CurrCollect : PCollection;
  34.     CurrNr : Integer;
  35.     MaxNr  : Integer;
  36.     DataLB : PListBox;
  37.     constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PCollection);
  38.     procedure SetupWindow; virtual;
  39.     procedure HandleDataLB(var Msg: TMessage);virtual id_First + id_PPList;
  40.     procedure HandleKill(Var Msg:TMessage); virtual id_First + id_PPKillEnt;
  41.     procedure HandleReverse (Var Msg: TMessage); virtual id_First + id_PPReverse;
  42.     procedure HandleForward (Var Msg: TMessage); virtual id_First + id_PPForward;
  43.     procedure HandleStart (Var Msg: TMessage); virtual id_First + id_PPStart;
  44.     procedure HandleEnd   (Var Msg: TMessage); virtual id_First + id_PPEnd;
  45.     procedure HandlePlay  (Var Msg: TMessage); virtual id_First + id_PPPlay;
  46.     Destructor Done;virtual;
  47.    private
  48.     Procedure ShowItem(Nr : Integer);
  49.   end;
  50.  
  51. implementation
  52.  
  53. Procedure TBrwsPPDlg.ShowItem(Nr : Integer);
  54. VAR
  55.   TDummy   : DirStrP2;
  56.   DateTime : TDateTime;
  57.   DateDum : Array[0..6] OF Char;
  58.   SRate   : WORD;
  59.   Chann   : ARRAY[0..10] of CHAR;
  60.   CDumm   : String[10];
  61.  
  62. Procedure Trim(PC : PChar);
  63. VAR i : Integer;
  64. BEGIN
  65.    For i := 0 to StrLen(PC) DO BEGIN
  66.       IF PC[i] = ' ' Then PC[i] := '0';
  67.       END;
  68. END;
  69.  
  70. BEGIN
  71.  
  72. { Display file information }
  73.  
  74.    PWaveData(CurrCollect^.At(Nr))^.GetData(WaveDummy);
  75.    StrCopy(TDummy, WaveDummy.FileName);
  76.    StrCat(TDummy, '    ');
  77.    Str(WaveDummy.SampRate, CDumm);   { Display     }
  78.    StrPCopy(Chann, CDumm);           { sampling    }
  79.    StrCat(TDummy, Chann);            { rate        }
  80.    StrCat(TDummy, ' Hertz, ');       { information }
  81.    IF WaveDummy.Channels = 1 THEN StrCopy(Chann,' Mono')
  82.                              ELSE StrCopy(Chann,' Stereo');
  83.    StrCat(TDummy, Chann);
  84.    SetDlgItemText(HWindow, id_PPName,TDummy);
  85.  
  86.    TDummy[0] := WaveDummy.DiskDrive;
  87.    TDummy[1] := #0;
  88.    StrCat(TDummy, ':');
  89.    StrCat(TDummy,WaveDummy.PathName);
  90.  
  91.    WD_NewShortHelp(TDummy,40);
  92.  
  93.    SetDlgItemText(HWindow, id_PPPath,ShortHelp);
  94.  
  95.    SetDlgItemText(HWindow, id_PPLabl,WaveDummy.DiskLabel);
  96.  
  97.    Str(WaveDummy.FileSize, TDummy);   { Display   }
  98.    StrCat(TDummy,' Bytes');           { file size }
  99.  
  100.    IF (WaveDummy.Save2Wave = C2W_IsSaved) THEN
  101.       StrCat(TDummy, ', with comment chunk')
  102.    ELSE
  103.    IF (WaveDummy.Save2Wave = C2W_Save) THEN
  104.       StrCat(TDummy, ', appended comment chunk');
  105.    
  106.    SetDlgItemText(HWindow, id_PPFSize,TDummy);
  107.  
  108.    SetDlgItemText(HWindow, id_PPComm,WaveDummy.FileComment);
  109.    Str(Nr+1, TDummy);
  110.    SetDlgItemText(HWindow, id_PPNumber,TDummy);
  111.  
  112.    Unpacktime(WaveDummy.CreationDate, DateTime);
  113.  
  114. { Display date and time }
  115.  
  116.    Str(DateTime.Month:2, DateDum);
  117.    StrCopy(TDummy, DateDum);
  118.    StrCat(TDummy,'-');
  119.  
  120.    Str(DateTime.Day:2, DateDum);
  121.    StrCat(TDummy, DateDum);
  122.    StrCat(TDummy,'-');
  123.  
  124.    Str(DateTime.Year:4, DateDum);
  125.    StrCat(TDummy, DateDum);
  126.    StrCat(TDummy,',(');
  127.  
  128.    Str(DateTime.Hour:2, DateDum);
  129.    StrCat(TDummy, DateDum);
  130.    StrCat(TDummy,':');
  131.  
  132.    Str(DateTime.Min:2, DateDum);
  133.    StrCat(TDummy, DateDum);
  134.    StrCat(TDummy,')');
  135.  
  136.    DataLB^.SetSelIndex(Nr);
  137.  
  138.    Trim(TDummy);
  139.  
  140.    SetDlgItemText(HWindow, id_PPDate,TDummy);
  141.  
  142.    Str(CurrCollect^.Count:5,CDumm);
  143.    StrPCopy(TDummy, CDumm);
  144.    Trim(TDummy);
  145.    SetDlgItemText(HWindow, id_PPSize, TDummy);
  146.    END;
  147.  
  148. constructor TBrwsPPDlg.Init(AParent: PWindowsObject;
  149.   AName: PChar; ACollect : PCollection);
  150. begin
  151.   TDialog.Init(AParent, AName);
  152.   CurrCollect := ACollect;
  153.   CurrNr := 0;
  154.   MaxNr := CurrCollect^.Count-1;
  155.   DataLB := New(PListBox, InitResource(@Self, id_PPList));
  156.   DataLB^.Attr.Style := DataLB^.Attr.Style - lbs_Sort;
  157. end;
  158.  
  159. procedure TBrwsPPDlg.SetupWindow;
  160. VAR
  161.    ACount : Word;
  162.    Out    : Array [0..6] of char;
  163. begin
  164.   TDialog.SetupWindow;
  165.   WD_InsertAll(CurrCollect, DataLB);
  166.   ShowItem(CurrNr);
  167. end;
  168.  
  169. procedure TBrwsPPDlg.HandleDataLB(var Msg: TMessage);
  170. Var
  171.    Idx : Integer;
  172. begin
  173.   case Msg.LParamHi of
  174.     lbn_SelChange, lbn_DblClk:
  175.       begin
  176.         if Msg.LParamHi = lbn_SelChange then BEGIN
  177.            Idx := DataLB^.GetSelIndex;
  178.            CurrNr := Idx;
  179.            ShowItem(CurrNr);
  180.            END;
  181.         if Msg.LParamHi = lbn_DblClk then BEGIN
  182.            HandlePlay(Msg);
  183.            END;
  184.       end;
  185.     {lbn_KillFocus:
  186.       SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);}
  187.   end;
  188. end;
  189.  
  190. procedure TBrwsPPDlg.HandleReverse(Var Msg: TMessage);
  191. Begin
  192.    IF (CurrNr > 0) THEN BEGIN
  193.       DEC(CurrNr);
  194.       ShowItem(CurrNr);
  195.       END;
  196.    End;
  197.  
  198. procedure TBrwsPPDlg.HandleForward(Var Msg: TMessage);
  199. Begin
  200.    IF (CurrNr < MaxNr) THEN BEGIN
  201.       Inc(CurrNr);
  202.       ShowItem(CurrNr);
  203.       END;
  204.    End;
  205.  
  206. procedure TBrwsPPDlg.HandleStart(Var Msg: TMessage);
  207. Begin
  208.    CurrNr := 0;
  209.    ShowItem(CurrNr);
  210.    End;
  211.  
  212. procedure TBrwsPPDlg.HandleEnd(Var Msg: TMessage);
  213. Begin
  214.    CurrNr := MaxNr;
  215.    ShowItem(CurrNr);
  216.    End;
  217.  
  218. procedure TBrwsPPDlg.HandleKill(Var Msg:TMessage);
  219. BEGIN
  220.   DataLB^.DeleteString(Currnr);
  221.   CurrCollect^.AtDelete (CurrNr);
  222.   Dec(MaxNr,1);
  223.   if (CurrNr > MaxNr) THEN CurrNr := MaxNr;
  224.   if Maxnr <0 then BEGIN
  225.      MaxNr := 0;
  226.      TDialog.OK(Msg);
  227.      END
  228.   ELSE ShowItem(CurrNr);
  229.   END;
  230.  
  231. procedure TBrwsPPDlg.HandlePlay(Var Msg:TMessage);
  232. VAR
  233.    Message,IDx : Integer;
  234.    MDummy : Array[0..100] OF Char;
  235.    PWTest : PWaveData;
  236.    BWCCMes : Integer;
  237. BEGIN
  238.  
  239. {--------------------------------------------------------------------}
  240. {--------------------- Play dialog box ------------------------------}
  241.  
  242.    PWaveData(CurrCollect^.At(CurrNr))^.GetData(WaveDummy);
  243.  
  244.    DPlayObj := New(PDiskPlay,Init(@self));
  245.    DPlayObj^.DiskPlayDlg(WaveDummy, Message);
  246.    DPlayObj^.Done;
  247.  
  248.    IF (DiskIntoDataBase = TRUE) THEN BEGIN
  249.       DiskIntoDataBase := FALSE;
  250.       StrCopy(MDummy,'You can only edit the database from the Database dialog box');
  251.          BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
  252.          END
  253.       ELSE BEGIN
  254.          END;
  255.  
  256.    DiskDummy[0] := WaveDummy.DiskDrive;
  257.    DiskDummy[1] := #0;
  258.    StrCat(DiskDummy, ':');
  259.    StrCat(DiskDummy,WaveDummy.PathName);
  260.    StrCat(DiskDummy,WaveDummy.FileName);
  261.  
  262.    IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
  263.  
  264. {----------------------------------------------------------------------}
  265. {----------------------------------------------------------------------}
  266.  
  267.    END;
  268.  
  269. {
  270. procedure TBrwsPPDlg.OK(Var Msg:TMessage);
  271. VAR
  272.    LDialog : PCommentDlg;
  273.    Puffer  : ARRAY[0..12] OF CHAR;
  274.    Lommescount : Word;
  275.    pw : PWaveData;
  276. BEGIN
  277.     IF (CommNow = TRUE) Then
  278.     Begin
  279.      LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,WaveSelectColl,-1));
  280.      IF Application^.ExecDialog(LDialog) = ID_Ok THEN
  281.         BEGIN END;
  282.      End;
  283.    WD_CopyAll(WaveSelectColl, WaveCollect);
  284.    WD_ListAll(WaveCollect);
  285.    WaveStream := New ( PBufStream, Init(WF_TMP,  stCreate, 512));
  286.    WaveStream^.Put(WaveCollect);
  287.    Dispose(WaveStream,Done);
  288.    WD_TMP2DAT;
  289.    TDialog.OK (Msg);
  290. End;
  291. }
  292.  
  293. Destructor TBrwsPPDlg.Done;
  294. BEGIN
  295.    TDialog.Done;
  296.    END;
  297.  
  298. end.
  299.