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 >
Wrap
Pascal/Delphi Source File
|
1992-12-03
|
9KB
|
304 lines
{ Unit for passing found WAV files to the playlist }
unit PPlayDlg;
interface
uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
DataObj, CommDlg, MarkDlg, BrwsPDlg, saveDlg, DiskDlg, SrchDlg;
const
dn_PPlayDlg = 'PLSTPLAY';
id_ListerDB = 900;
id_ListerPP = 901;
id_Ins = 902;
id_Del = 903;
id_srch = 904;
id_Clear = 905;
id_Insert = 906;
id_PPBrwse = 908;
id_SavList = 909;
id_ShowVer = 910;
ID_PPlayDB = 911;
type
PPPlayDlg = ^TPPlayDlg;
TPPlayDlg = object(TDialog)
DataLB : PListBox;
PPlayLB : PListBox;
Check4Play : Byte;
CurrCollect : PWaveCollection;
constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection);
procedure SetupWindow; virtual;
procedure HandleDataLB(var Msg: TMessage);virtual id_first + id_ListerDB;
procedure HandlePPlayLB(var Msg: TMessage);virtual id_first + id_ListerPP;
Procedure HandleIns(Var Msg:TMessage); virtual id_first + id_Ins;
procedure HandleInsert(Var Msg:TMessage);virtual id_First + id_Insert;
procedure HandleDel(Var Msg:TMessage); virtual id_First + id_Del;
procedure HandleClear(VAR Msg : TMessage);virtual id_First + id_Clear;
Procedure HandleSrch (Var Msg:TMessage); virtual id_first + id_srch;
Procedure HandlePPBrwse (Var Msg:TMessage); virtual id_first + id_PPBrwse;
Procedure HandleSaveList(VAR Msg : TMessage);virtual id_First + id_SavList;
procedure HandlePlayDB(Var Msg:TMessage);virtual id_First + id_PPlayDB;
procedure OK(Var Msg:TMessage); virtual id_first + id_Ok;
Destructor Done;virtual;
end;
implementation
{ TPPlayDlg }
constructor TPPlayDlg.Init(AParent: PWindowsObject;
AName: PChar; ACollect : PWaveCollection);
begin
TDialog.Init(AParent, AName);
CurrCollect := ACollect;
DataLB := New(PListBox, InitResource( @Self, id_ListerDB));
PPlayLB := New(PListBox, InitResource( @Self, id_ListerPP));
PPlayLB^.Attr.Style := PPlayLB^.Attr.Style - lbs_Sort;
Check4Play := 1;
end;
procedure TPPlayDlg.SetupWindow;
VAR
ACount : Word;
Message : Integer;
begin
TDialog.SetupWindow;
WD_InsertAll(WaveCollect, DataLB);
WD_InsertAll(WavePlayColl, PPlayLB);
Message := 0;
IF NOT(Message >= WaveCollect^.Count) THEN BEGIN
PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
ShortMain[0] := WaveDummy.DiskDrive;
ShortMain[1] := #0;
StrCat(ShortMain,':');
StrCat(ShortMain,WaveDummy.PathName);
WD_NewShortHelp(ShortMain,28);
SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
DataLB^.SetSelIndex(0);
if WavePlayColl^.Count > 0 THEN PPlayLB^.SetSelIndex(0);
END;
end;
procedure TPPlayDlg.HandleDataLB(var Msg: TMessage);
VAR
Message : Integer;
begin
Check4Play := 1;
case Msg.LParamHi of
lbn_SelChange, lbn_DblClk:
begin
Message := DataLB^.GetSelIndex;
IF (Message < 0) OR (Message >= WaveCollect^.Count) THEN Exit;
PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
ShortMain[0] := WaveDummy.DiskDrive;
ShortMain[1] := #0;
StrCat(ShortMain,':');
StrCat(ShortMain,WaveDummy.PathName);
WD_NewShortHelp(ShortMain,28);
SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
if Msg.LParamHi = lbn_DblClk then HandleIns(Msg);
end;
{
lbn_KillFocus:
SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);
}
end;
end;
procedure TPPlayDlg.HandlePPlayLB(var Msg: TMessage);
VAR
Message : Integer;
begin
Check4Play := 2;
case Msg.LParamHi of
lbn_SelChange, lbn_DblClk:
begin
Message := PPlayLB^.GetSelIndex;
IF (Message < 0) OR (Message >= WavePlayColl^.Count) THEN Exit;
PWaveData(WavePlayColl^.At(Message))^.GetData(WaveDummy);
ShortMain[0] := WaveDummy.DiskDrive;
ShortMain[1] := #0;
StrCat(ShortMain,':');
StrCat(ShortMain,WaveDummy.PathName);
WD_NewShortHelp(ShortMain,28);
SetDlgItemText(HWindow, ID_ShowVer,ShortHelp);
if Msg.LParamHi = lbn_DblClk then HandlePlayDB(Msg);
end;
{
lbn_KillFocus:
SendMessage(Msg.LParamLo, lb_SetCurSel, Word(-1), 0);
}
end;
end;
procedure TPPlayDlg.HandlePlayDB(Var Msg:TMessage);
VAR
Message,IDx,BWCCMes : Integer;
PWTest : PWaveData;
MDummy : Array[0..100] of Char;
BEGIN
{--------------------------------------------------------------------}
{--------------------- Play dialog box ------------------------------}
IF Check4Play = 1 THEN BEGIN
Message := DataLB^.GetSelIndex;
IF (Message < 0) OR (Message >= WaveCollect^.Count) THEN Exit;
PWaveData(WaveCollect^.At(Message))^.GetData(WaveDummy);
END
ELSE IF Check4Play = 2 THEN BEGIN
Message := PPlayLB^.GetSelIndex;
IF (Message < 0) OR (Message >= WavePlayColl^.Count) THEN Exit;
PWaveData(WavePlayColl^.At(Message))^.GetData(WaveDummy);
END;
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
IF (DiskIntoDataBase = TRUE) THEN BEGIN
DiskIntoDataBase := FALSE;
StrCopy(MDummy,'You can only change 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 TPPlayDlg.HandleIns(Var Msg:TMessage);
var
Idx : Integer;
Out : array [0..5] of char;
PWTest : PWaveData;
BEGIN
Idx := DataLB^.GetSelIndex;
if idx >-1 then
Begin
PWTest := CurrCollect^.At(Idx);
WavePlayColl^.Insert(PWTest);
PWTest^.GetData(WaveDummy);
PPlayLB^.AddString (WaveDummy.FileName);
PPlayLB^.SetSelIndex(WavePlayColl^.Count-1);
End;
END;
procedure TPPlayDlg.HandleInsert(Var Msg:TMessage);
var
IdxDB : Integer;
IdxPB : Integer;
Out : array [0..5] of char;
PWTest : PWaveData;
BEGIN
IdxDB := DataLB^.GetSelIndex;
if IdxDB >-1 then
Begin
IdxPB := PPlayLB^.GetSelIndex;
IF IdxPB < 0 THEN IDxPB := 0;
PWTest := CurrCollect^.At(IdxDB);
WavePlayColl^.AtInsert(IdxPB,PWTest);
PWTest^.GetData(WaveDummy);
PPlayLB^.InsertString (WaveDummy.FileName, IdxPB);
{PPlayLB^.SetSelIndex(WavePlayColl^.Count-1);}
End;
END;
procedure TPPlayDlg.HandleDel(Var Msg:TMessage);
var
Idx : Integer;
Out : array [0..5] of char;
BEGIN
Idx := PPlayLB^.GetSelIndex;
if idx >-1 then
Begin
WavePlayColl^.AtDelete (idx);
PPlayLB^.DeleteString (idx);
IF idx > WavePlayColl^.Count-1 THEN idx := WavePlayColl^.Count-1;
PPlayLB^.SetSelIndex(idx);
End;
END;
procedure TPPLayDlg.HandleSrch(Var Msg:TMessage);
VAR
Idx : Integer;
LDialog : PMarkDlg;
TDialog : PSrchDlg;
PBuffer : ARRAY[0..12] OF CHAR;
BEGIN
LDialog := New(PMarkDlg, Init(@self, DN_MarkDlg,'HANS'));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN
TDialog := New(PSrchDlg, Init(@self, dn_SrchDlg,WaveCollect,1,0));
IF Application^.ExecDialog(TDialog) = ID_OK THEN
BEGIN END;
Idx := PPlayLB^.GetSelIndex;
PPlayLb^.ClearList;
WD_InsertAll(WavePlayColl, PPlayLB);
PPlayLB^.SetSelIndex(idx);
END;
END;
procedure TPPLayDlg.HandlePPBrwse(Var Msg:TMessage);
VAR
LDialog : PBrwsPPDlg;
PBuffer : ARRAY[0..12] OF CHAR;
BEGIN
IF (WavePlayColl^.Count <= 0) THEN BEGIN
BWCCMessageBox(HWindow,'Still no elements in list','Wicked Sounds for Windows: Note',mb_Ok + mb_IconStop);
END
ELSE BEGIN
LDialog := New(PBrwsPPDlg, Init(@self, DN_BrwsPPDlg,WavePlayColl));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN
PPlayLb^.ClearList;
WD_InsertAll(WavePlayColl, PPlayLB);
END;
END;
END;
procedure TPPLayDlg.HandleClear(Var Msg:TMessage);
BEGIN
PPlayLb^.ClearList;
WavePlayColl^.DeleteAll;
END;
procedure TPPLayDlg.HandleSaveList(Var Msg:TMessage);
VAR
MDialog : PSaveDlg;
BEGIN
MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,2));
IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
END;
END;
procedure TPPlayDlg.OK(Var Msg:TMessage);
VAR
LDialog : PCommentDlg;
PBuffer : ARRAY[0..12] OF CHAR;
Lommescount : Word;
pw : PWaveData;
BEGIN
TDialog.OK (Msg);
End;
Destructor TPPlayDlg.Done;
BEGIN
TDialog.Done;
END;
end.