home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
COMMDLG.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
6KB
|
211 lines
{ Unit CommDlg - for adding comments to the WAV files }
unit CommDlg;
interface
uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem, BWCC,
DataObj, DiskDlg, SaveDlg, RiffComm, WaveIO;
const
dn_CommentDlg = 'CommentDlg';
id_Path = 700;
id_FileName= 701;
id_Text = 702;
ID_ComPlay = 703;
ID_WCommCB = 704;
type
PCommentDlg = ^TCommentDlg;
TCommentDlg = object(TDialog)
Dummy : PWaveData;
actItem,MaxItem : Integer;
CurrCollect : PWaveCollection;
WAVECommCB : PCheckBox;
constructor Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection; IdxCode : Integer);
procedure SetupWindow; virtual;
procedure ReWrite;
procedure Prepare;
PROCEDURE HandlePlay(VAR Msg : TMessage);virtual id_First + id_ComPlay;
procedure CheckData;
Destructor Done;virtual;
procedure OK (var Msg: TMessage); virtual id_First+ id_OK;
end;
implementation
{ TCommentDlg }
constructor TCommentDlg.Init(AParent: PWindowsObject;
AName: PChar; ACollect : PWaveCollection; IdxCode: Integer);
begin
TDialog.Init(AParent, AName);
CurrCollect := ACollect;
WAVECommCB := New(PCheckBox, InitResource(@self, ID_WCommCB));
IF idxCode = -1 then
Begin
ActItem := 0;
MaxItem := CurrCollect^.Count;
End
Else
Begin
ActItem := IdxCode;
MaxItem := IdxCode;
End;
end;
Procedure TCommentDlg.Prepare;
Var Out: array [0..255] of char;
Begin
Dummy := CurrCollect^.At (actItem);
ShortMain[0] := Dummy^.WD.DiskDrive;
ShortMain[1] := #0;
StrCat (ShortMain,':');
StrCat (ShortMain,Dummy^.WD.PathName);
WD_NewShortHelp(ShortMain,30);
SetDlgItemText(HWindow, id_text,Dummy^.WD.FileComment);
SetDlgItemText(HWindow, id_path,ShortHelp);
SetDlgItemText(HWindow, id_FileName,Dummy^.WD.FileName);
Inc(ActItem,1);
End;
Procedure TCommentDlg.ReWrite;
Begin
CurrCollect^.AtPut ((actItem-1),Dummy);
End;
procedure TCommentDlg.CheckData;
VAR
Message, MMess, IDx : Integer;
PWTEst2 : PWaveData;
BWCCMes : Integer;
MDummy : Array[0..100] OF Char;
TDummy : DirStr;
KDummy : Array[0..63] OF CHAR;
BEGIN
IF (WaveCollect^.Count <= 0) THEN BEGIN
END
ELSE BEGIN
{--------------------------------------------------------------------}
Dummy := CurrCollect^.At (actItem-1);
Dummy^.GetData(WaveDummy);
IF WaveDummy.Save2Wave = C2W_DontSave THEN Exit;
Message := IDOk;
StrCopy(KDummy,WaveDUmmy.FileComment);
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
StrCopy(WaveDUmmy.FileComment,KDummy);
IF (DiskIntoDataBase = TRUE) THEN BEGIN
DiskIntoDataBase := FALSE;
PWTest2 := New(PWaveData, Init(WaveDummy));
IF (WaveCollect^.Search(PWTEst2,Idx) = True) THEN BEGIN
StrCopy(MDummy,'Database already contains a file with this name and path.');
BWCCMes := BWCCMessageBox(HWindow,MDummy,'Wicked Sounds for Windows: Note',MB_Ok+mb_IconInformation);
END
ELSE BEGIN
Move(WaveDummy,Dummy^.WD,SizeOf(WaveDummy));
ReWrite;
DBChanged := TRUE;
END;
Dispose(PWTest2,Done);
END;
{
Dummy := CurrCollect^.At (actItem-1);
Dummy^.GetData(WaveDummy);
}
DiskDummy[0] := WaveDummy.DiskDrive;
DiskDummy[1] := #0;
StrCat(DiskDummy, ':');
StrCat(DiskDummy,WaveDummy.PathName);
StrCopy(TDummy, DiskDummy);
StrCat(DiskDummy,WaveDummy.FileName);
IF Message = idOK THEN BEGIN
PutRIFFComment(Dummy^.WD, MMess);
CASE MMess of
MMWriteOK : BEGIN
WD_ReadOneFileIntoWD(HWindow,TDummy,WaveDummy.FileName,WaveDummy);
Dummy^.WD.Filesize := WaveDummy.FileSize;
Dummy^.WD.Save2Wave := C2W_IsSaved
END;
MMWriteCancel : BEGIN
Dummy^.WD.Save2Wave := C2W_DontSave;
END;
ELSE Dummy^.WD.Save2Wave := C2W_DontSave;
END;
END;
{----------------------------------------------------------------------}
{----------------------------------------------------------------------}
END;
END;
Procedure TCommentDlg.OK (var Msg: TMessage);
Begin
GetDlgItemText (HWindow,ID_text,Dummy^.WD.FileComment,63);
IF WAVECommCB^.GetCheck = BF_Unchecked THEN Dummy^.WD.Save2Wave := C2W_DontSave
ELSE
IF WAVECommCB^.GetCheck = BF_Checked THEN Dummy^.WD.Save2Wave := C2W_IsSaved; {C2W_Save;}
ReWrite;
IF ActItem >= MaxItem then
Begin
{WD_Check4Save2Wave(CurrCollect);}
CheckData;
TDialog.OK(Msg);
End
Else
Begin
CheckData;
WaveCommCB^.SetCheck(1);
Prepare;
End;
End;
procedure TCommentDlg.SetupWindow;
VAR
ACount : Word;
begin
TDialog.SetupWindow;
Prepare;
SendDlgItemMessage(HWindow, id_Text, em_LimitText, 62, 0);
WaveCommCB^.SetCheck(1);
end;
procedure TCommentDlg.HandlePlay(Var Msg:TMessage);
VAR
Message : Integer;
BEGIN
{--------------------------------------------------------------------}
{--------------------- Play dialog box ------------------------------}
PWaveData(CurrCollect^.At(ActItem-1))^.GetData(WaveDummy);
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
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;
Destructor TCommentDlg.Done;
BEGIN
Dispose(WaveCommCB,Done);
TDialog.Done;
END;
end.