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 >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
8KB
|
299 lines
{ Unit BrwsPDlg - for passing WAV files to the playlist }
unit BrwsPDlg;
interface
uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
DataObj, CommDlg, DiskDlg, Waveutil;
const
dn_BrwsPPDlg = 'BrwsPPDlg';
id_PPName = 1400;
id_PPPath = 1401;
id_PPLabl = 1402;
id_PPFSize = 1403;
id_PPDate = 1404;
id_PPComm = 1405;
id_PPKillEnt = 1406;
id_PPReverse = 1407;
id_PPForward = 1408;
id_PPNumber = 1410;
id_PPStart = 1411;
id_PPEnd = 1412;
id_PPPlay = 1413;
id_PPList = 1414;
id_PPSize = 1416;
type
PBrwsPPDlg = ^TBrwsPPDlg;
TBrwsPPDlg = object(TDialog)
CurrCollect : PCollection;
CurrNr : Integer;
MaxNr : Integer;
DataLB : PListBox;
constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PCollection);
procedure SetupWindow; virtual;
procedure HandleDataLB(var Msg: TMessage);virtual id_First + id_PPList;
procedure HandleKill(Var Msg:TMessage); virtual id_First + id_PPKillEnt;
procedure HandleReverse (Var Msg: TMessage); virtual id_First + id_PPReverse;
procedure HandleForward (Var Msg: TMessage); virtual id_First + id_PPForward;
procedure HandleStart (Var Msg: TMessage); virtual id_First + id_PPStart;
procedure HandleEnd (Var Msg: TMessage); virtual id_First + id_PPEnd;
procedure HandlePlay (Var Msg: TMessage); virtual id_First + id_PPPlay;
Destructor Done;virtual;
private
Procedure ShowItem(Nr : Integer);
end;
implementation
Procedure TBrwsPPDlg.ShowItem(Nr : Integer);
VAR
TDummy : DirStrP2;
DateTime : TDateTime;
DateDum : Array[0..6] OF Char;
SRate : WORD;
Chann : ARRAY[0..10] of CHAR;
CDumm : String[10];
Procedure Trim(PC : PChar);
VAR i : Integer;
BEGIN
For i := 0 to StrLen(PC) DO BEGIN
IF PC[i] = ' ' Then PC[i] := '0';
END;
END;
BEGIN
{ Display file information }
PWaveData(CurrCollect^.At(Nr))^.GetData(WaveDummy);
StrCopy(TDummy, WaveDummy.FileName);
StrCat(TDummy, ' ');
Str(WaveDummy.SampRate, CDumm); { Display }
StrPCopy(Chann, CDumm); { sampling }
StrCat(TDummy, Chann); { rate }
StrCat(TDummy, ' Hertz, '); { information }
IF WaveDummy.Channels = 1 THEN StrCopy(Chann,' Mono')
ELSE StrCopy(Chann,' Stereo');
StrCat(TDummy, Chann);
SetDlgItemText(HWindow, id_PPName,TDummy);
TDummy[0] := WaveDummy.DiskDrive;
TDummy[1] := #0;
StrCat(TDummy, ':');
StrCat(TDummy,WaveDummy.PathName);
WD_NewShortHelp(TDummy,40);
SetDlgItemText(HWindow, id_PPPath,ShortHelp);
SetDlgItemText(HWindow, id_PPLabl,WaveDummy.DiskLabel);
Str(WaveDummy.FileSize, TDummy); { Display }
StrCat(TDummy,' Bytes'); { file size }
IF (WaveDummy.Save2Wave = C2W_IsSaved) THEN
StrCat(TDummy, ', with comment chunk')
ELSE
IF (WaveDummy.Save2Wave = C2W_Save) THEN
StrCat(TDummy, ', appended comment chunk');
SetDlgItemText(HWindow, id_PPFSize,TDummy);
SetDlgItemText(HWindow, id_PPComm,WaveDummy.FileComment);
Str(Nr+1, TDummy);
SetDlgItemText(HWindow, id_PPNumber,TDummy);
Unpacktime(WaveDummy.CreationDate, DateTime);
{ Display date and time }
Str(DateTime.Month:2, DateDum);
StrCopy(TDummy, DateDum);
StrCat(TDummy,'-');
Str(DateTime.Day:2, DateDum);
StrCat(TDummy, DateDum);
StrCat(TDummy,'-');
Str(DateTime.Year:4, DateDum);
StrCat(TDummy, DateDum);
StrCat(TDummy,',(');
Str(DateTime.Hour:2, DateDum);
StrCat(TDummy, DateDum);
StrCat(TDummy,':');
Str(DateTime.Min:2, DateDum);
StrCat(TDummy, DateDum);
StrCat(TDummy,')');
DataLB^.SetSelIndex(Nr);
Trim(TDummy);
SetDlgItemText(HWindow, id_PPDate,TDummy);
Str(CurrCollect^.Count:5,CDumm);
StrPCopy(TDummy, CDumm);
Trim(TDummy);
SetDlgItemText(HWindow, id_PPSize, TDummy);
END;
constructor TBrwsPPDlg.Init(AParent: PWindowsObject;
AName: PChar; ACollect : PCollection);
begin
TDialog.Init(AParent, AName);
CurrCollect := ACollect;
CurrNr := 0;
MaxNr := CurrCollect^.Count-1;
DataLB := New(PListBox, InitResource(@Self, id_PPList));
DataLB^.Attr.Style := DataLB^.Attr.Style - lbs_Sort;
end;
procedure TBrwsPPDlg.SetupWindow;
VAR
ACount : Word;
Out : Array [0..6] of char;
begin
TDialog.SetupWindow;
WD_InsertAll(CurrCollect, DataLB);
ShowItem(CurrNr);
end;
procedure TBrwsPPDlg.HandleDataLB(var Msg: TMessage);
Var
Idx : Integer;
begin
case Msg.LParamHi of
lbn_SelChange, lbn_DblClk:
begin
if Msg.LParamHi = lbn_SelChange then BEGIN
Idx := DataLB^.GetSelIndex;
CurrNr := Idx;
ShowItem(CurrNr);
END;
if Msg.LParamHi = lbn_DblClk then BEGIN
HandlePlay(Msg);
END;
end;
{lbn_KillFocus:
SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);}
end;
end;
procedure TBrwsPPDlg.HandleReverse(Var Msg: TMessage);
Begin
IF (CurrNr > 0) THEN BEGIN
DEC(CurrNr);
ShowItem(CurrNr);
END;
End;
procedure TBrwsPPDlg.HandleForward(Var Msg: TMessage);
Begin
IF (CurrNr < MaxNr) THEN BEGIN
Inc(CurrNr);
ShowItem(CurrNr);
END;
End;
procedure TBrwsPPDlg.HandleStart(Var Msg: TMessage);
Begin
CurrNr := 0;
ShowItem(CurrNr);
End;
procedure TBrwsPPDlg.HandleEnd(Var Msg: TMessage);
Begin
CurrNr := MaxNr;
ShowItem(CurrNr);
End;
procedure TBrwsPPDlg.HandleKill(Var Msg:TMessage);
BEGIN
DataLB^.DeleteString(Currnr);
CurrCollect^.AtDelete (CurrNr);
Dec(MaxNr,1);
if (CurrNr > MaxNr) THEN CurrNr := MaxNr;
if Maxnr <0 then BEGIN
MaxNr := 0;
TDialog.OK(Msg);
END
ELSE ShowItem(CurrNr);
END;
procedure TBrwsPPDlg.HandlePlay(Var Msg:TMessage);
VAR
Message,IDx : Integer;
MDummy : Array[0..100] OF Char;
PWTest : PWaveData;
BWCCMes : Integer;
BEGIN
{--------------------------------------------------------------------}
{--------------------- Play dialog box ------------------------------}
PWaveData(CurrCollect^.At(CurrNr))^.GetData(WaveDummy);
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
IF (DiskIntoDataBase = TRUE) THEN BEGIN
DiskIntoDataBase := FALSE;
StrCopy(MDummy,'You can only edit the database from the Database dialog box');
BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
END
ELSE BEGIN
END;
DiskDummy[0] := WaveDummy.DiskDrive;
DiskDummy[1] := #0;
StrCat(DiskDummy, ':');
StrCat(DiskDummy,WaveDummy.PathName);
StrCat(DiskDummy,WaveDummy.FileName);
IF Message = idOK THEN sndPlaySound(DiskDummy,SND_Async);
{----------------------------------------------------------------------}
{----------------------------------------------------------------------}
END;
{
procedure TBrwsPPDlg.OK(Var Msg:TMessage);
VAR
LDialog : PCommentDlg;
Puffer : ARRAY[0..12] OF CHAR;
Lommescount : Word;
pw : PWaveData;
BEGIN
IF (CommNow = TRUE) Then
Begin
LDialog := New(PCommentDlg, Init(@self, DN_CommentDlg,WaveSelectColl,-1));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
End;
WD_CopyAll(WaveSelectColl, WaveCollect);
WD_ListAll(WaveCollect);
WaveStream := New ( PBufStream, Init(WF_TMP, stCreate, 512));
WaveStream^.Put(WaveCollect);
Dispose(WaveStream,Done);
WD_TMP2DAT;
TDialog.OK (Msg);
End;
}
Destructor TBrwsPPDlg.Done;
BEGIN
TDialog.Done;
END;
end.