2009-02-09 21:15:56 +00:00
|
|
|
/***************************************************************************
|
|
|
|
cfg.c - description
|
|
|
|
-------------------
|
|
|
|
begin : Sun Nov 16 2003
|
|
|
|
copyright : (C) 2003 by Pete Bernert
|
|
|
|
email : BlackDove@addcom.de
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. See also the license.txt file for *
|
|
|
|
* additional informations. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
//*************************************************************************//
|
|
|
|
// History of changes:
|
|
|
|
//
|
|
|
|
// 2003/11/16 - Pete
|
|
|
|
// - generic cleanup for the Peops release
|
|
|
|
//
|
|
|
|
//*************************************************************************//
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "resource.h"
|
|
|
|
#define _IN_CFG
|
|
|
|
#include "externals.h"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// read config from registry
|
|
|
|
|
|
|
|
void ReadConfig(void)
|
|
|
|
{
|
|
|
|
HKEY myKey;DWORD temp,type,size;
|
|
|
|
|
|
|
|
// init values
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
iCD_AD=-1;
|
|
|
|
iCD_TA=-1;
|
2009-02-09 21:15:56 +00:00
|
|
|
iCD_LU=-1;
|
|
|
|
iRType=0;
|
|
|
|
iUseSpeedLimit=0;
|
|
|
|
iSpeedLimit=2;
|
|
|
|
iNoWait=0;
|
|
|
|
iMaxRetry=5;
|
|
|
|
iShowReadErr=0;
|
|
|
|
iUsePPF=0;
|
|
|
|
iUseSubReading=0;
|
|
|
|
iUseDataCache=0;
|
|
|
|
iCheckTrayStatus=0;
|
|
|
|
memset(szPPF,0,260);
|
|
|
|
memset(szSUBF,0,260);
|
|
|
|
|
|
|
|
// read values
|
|
|
|
|
|
|
|
if (RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\PS2Eplugin\\CDVD\\CDVDPeops",0,KEY_ALL_ACCESS,&myKey)==ERROR_SUCCESS)
|
|
|
|
{
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"Adapter",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iCD_AD=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"Target",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iCD_TA=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"LUN",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iCD_LU=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"UseCaching",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iUseCaching=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"UseDataCache",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iUseDataCache=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"UseSpeedLimit",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iUseSpeedLimit=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"SpeedLimit",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iSpeedLimit=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"NoWait",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iNoWait=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"CheckTrayStatus",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iCheckTrayStatus=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"MaxRetry",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iMaxRetry=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"ShowReadErr",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iShowReadErr=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"UsePPF",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iUsePPF=(int)temp;
|
|
|
|
size = 4;
|
|
|
|
if(RegQueryValueEx(myKey,"UseSubReading",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
|
|
|
|
iUseSubReading=(int)temp;
|
|
|
|
size=259;
|
|
|
|
RegQueryValueEx(myKey,"PPFFile",0,&type,(LPBYTE)szPPF,&size);
|
|
|
|
size=259;
|
|
|
|
RegQueryValueEx(myKey,"SCFile",0,&type,(LPBYTE)szSUBF,&size);
|
|
|
|
|
|
|
|
RegCloseKey(myKey);
|
|
|
|
}
|
2010-04-25 00:31:27 +00:00
|
|
|
|
|
|
|
// disabled for now
|
|
|
|
iUsePPF=0;
|
2009-02-09 21:15:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// write user config
|
|
|
|
|
|
|
|
void WriteConfig(void)
|
|
|
|
{
|
|
|
|
HKEY myKey;DWORD myDisp,temp;
|
2010-04-25 00:31:27 +00:00
|
|
|
|
2009-02-09 21:15:56 +00:00
|
|
|
RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\PS2Eplugin\\CDVD\\CDVDPeops",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&myKey,&myDisp);
|
|
|
|
temp=iInterfaceMode;
|
|
|
|
RegSetValueEx(myKey,"InterfaceMode",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iCD_AD;
|
|
|
|
RegSetValueEx(myKey,"Adapter",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iCD_TA;
|
|
|
|
RegSetValueEx(myKey,"Target",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iCD_LU;
|
|
|
|
RegSetValueEx(myKey,"LUN",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iUseCaching;
|
|
|
|
RegSetValueEx(myKey,"UseCaching",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iUseDataCache;
|
|
|
|
RegSetValueEx(myKey,"UseDataCache",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iUseSpeedLimit;
|
|
|
|
RegSetValueEx(myKey,"UseSpeedLimit",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iSpeedLimit;
|
|
|
|
RegSetValueEx(myKey,"SpeedLimit",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iNoWait;
|
|
|
|
RegSetValueEx(myKey,"NoWait",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iCheckTrayStatus ;
|
|
|
|
RegSetValueEx(myKey,"CheckTrayStatus",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iMaxRetry;
|
|
|
|
RegSetValueEx(myKey,"MaxRetry",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iShowReadErr;
|
|
|
|
RegSetValueEx(myKey,"ShowReadErr",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iUsePPF;
|
|
|
|
RegSetValueEx(myKey,"UsePPF",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
temp=iUseSubReading;
|
|
|
|
RegSetValueEx(myKey,"UseSubReading",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
RegSetValueEx(myKey,"PPFFile",0,REG_BINARY,(LPBYTE)szPPF,259);
|
|
|
|
RegSetValueEx(myKey,"SCFile",0,REG_BINARY,(LPBYTE)szSUBF,259);
|
2009-02-09 21:15:56 +00:00
|
|
|
|
|
|
|
RegCloseKey(myKey);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// choose ppf/sbi/m3s file name
|
|
|
|
|
|
|
|
void OnChooseFile(HWND hW,int iFType)
|
|
|
|
{
|
|
|
|
OPENFILENAME ofn;char szB[260];BOOL b;
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.lStructSize=sizeof(OPENFILENAME);
|
|
|
|
ofn.hwndOwner=hW;
|
|
|
|
ofn.hInstance=NULL;
|
|
|
|
if(iFType==0) ofn.lpstrFilter="PPF Files\0*.PPF\0\0\0";
|
|
|
|
else if(iFType==1) ofn.lpstrFilter="SBI Files\0*.SBI\0M3S Files\0*.M3S\0\0\0";
|
|
|
|
else if(iFType==2) ofn.lpstrFilter="SUB Files\0*.SUB\0\0\0";
|
|
|
|
else if(iFType==3) ofn.lpstrFilter="SBI Files\0*.SBI\0\0\0";
|
|
|
|
else ofn.lpstrFilter="M3S Files\0*.M3S\0\0\0";
|
2009-02-09 21:15:56 +00:00
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.lpstrCustomFilter=NULL;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.nMaxCustFilter=0;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.nFilterIndex=0;
|
2009-02-09 21:15:56 +00:00
|
|
|
if(iFType==0) GetDlgItemText(hW,IDC_PPFFILE,szB,259);
|
|
|
|
else if(iFType==1) GetDlgItemText(hW,IDC_SUBFILE,szB,259);
|
|
|
|
else if(iFType==2) GetDlgItemText(hW,IDC_SUBFILEEDIT,szB,259);
|
|
|
|
else if(iFType==3) GetDlgItemText(hW,IDC_OUTFILEEDIT,szB,259);
|
|
|
|
else GetDlgItemText(hW,IDC_OUTFILEEDIT,szB,259);
|
|
|
|
|
|
|
|
ofn.lpstrFile=szB;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.nMaxFile=259;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.lpstrFileTitle=NULL;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.nMaxFileTitle=0;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.lpstrInitialDir=NULL;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.lpstrTitle=NULL;
|
2009-02-09 21:15:56 +00:00
|
|
|
if(iFType<3)
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.Flags=OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR|OFN_HIDEREADONLY;
|
2009-02-09 21:15:56 +00:00
|
|
|
else
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.Flags=OFN_CREATEPROMPT|OFN_NOCHANGEDIR|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT;
|
|
|
|
ofn.nFileOffset=0;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.nFileExtension=0;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.lpstrDefExt=0;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.lCustData=0;
|
2010-04-25 00:31:27 +00:00
|
|
|
ofn.lpfnHook=NULL;
|
2009-02-09 21:15:56 +00:00
|
|
|
ofn.lpTemplateName=NULL;
|
2010-04-25 00:31:27 +00:00
|
|
|
|
2009-02-09 21:15:56 +00:00
|
|
|
if(iFType<3)
|
|
|
|
b=GetOpenFileName(&ofn);
|
|
|
|
else b=GetSaveFileName(&ofn);
|
2010-04-25 00:31:27 +00:00
|
|
|
|
2009-02-09 21:15:56 +00:00
|
|
|
if(b)
|
|
|
|
{
|
|
|
|
if(iFType==0) SetDlgItemText(hW,IDC_PPFFILE,szB);
|
|
|
|
else if(iFType==1) SetDlgItemText(hW,IDC_SUBFILE,szB);
|
|
|
|
else if(iFType==2) SetDlgItemText(hW,IDC_SUBFILEEDIT,szB);
|
|
|
|
else if(iFType==3) SetDlgItemText(hW,IDC_OUTFILEEDIT,szB);
|
|
|
|
else SetDlgItemText(hW,IDC_OUTFILEEDIT,szB);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// file drive combo
|
|
|
|
|
|
|
|
void EnumDrives(HWND hW)
|
|
|
|
{
|
|
|
|
HWND hWC;char szB[256];int i=0,k=0,iNum;
|
|
|
|
char * p, * pBuf, * pN;
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_DRIVE);
|
|
|
|
ComboBox_ResetContent(hWC);
|
|
|
|
ComboBox_AddString(hWC,"NONE"); // add always existing 'none'
|
|
|
|
|
|
|
|
wsprintf(szB,"[%d:%d:%d",iCD_AD,iCD_TA,iCD_LU); // make current user info text
|
|
|
|
|
|
|
|
pN=pBuf=(char *)malloc(32768);
|
|
|
|
memset(pBuf,0,32768);
|
|
|
|
iNum=GetGenCDDrives(pBuf); // get the system cd drives list
|
|
|
|
|
|
|
|
for(i=0;i<iNum;i++) // loop drives
|
|
|
|
{
|
|
|
|
ComboBox_AddString(hWC,pN); // -> add drive name
|
|
|
|
p=strchr(pN,']');
|
|
|
|
if(p)
|
|
|
|
{
|
|
|
|
*p=0;
|
|
|
|
if(strcmp(szB,pN)==0) k=i+1; // -> is it the current user drive? sel it
|
|
|
|
*p=']';
|
|
|
|
}
|
|
|
|
pN+=strlen(pN)+1; // next drive in buffer
|
|
|
|
}
|
|
|
|
|
|
|
|
free(pBuf);
|
|
|
|
|
|
|
|
ComboBox_SetCurSel(hWC,k); // do the drive sel
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// get curr selected drive
|
|
|
|
|
|
|
|
void GetCDRInfos(HWND hW,int * iA, int * iT,int * iL)
|
|
|
|
{
|
|
|
|
HWND hWC=GetDlgItem(hW,IDC_DRIVE);
|
|
|
|
char szB[256];int i;char * p;
|
|
|
|
|
|
|
|
i=ComboBox_GetCurSel(hWC);
|
|
|
|
if(i<=0) // none selected
|
|
|
|
{
|
|
|
|
*iA=-1;*iT=-1;*iL=-1;
|
|
|
|
MessageBox(hW,"Please select a cdrom drive!","Config error",MB_OK|MB_ICONINFORMATION);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
ComboBox_GetLBText(hWC,i,szB); // get cd text
|
|
|
|
p=szB+1;
|
|
|
|
*iA=atoi(p); // get AD,TA,LU
|
|
|
|
p=strchr(szB,':')+1;
|
|
|
|
*iT=atoi(p);
|
|
|
|
p=strchr(p,':')+1;
|
|
|
|
*iL=atoi(p);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// interface mode has changed
|
|
|
|
|
|
|
|
void OnIMode(HWND hW)
|
|
|
|
{
|
|
|
|
HWND hWC=GetDlgItem(hW,IDC_IMODE);
|
|
|
|
int iM = ComboBox_GetCurSel(hWC);
|
|
|
|
|
|
|
|
GetCDRInfos(hW,&iCD_AD,&iCD_TA,&iCD_LU); // get sel drive
|
|
|
|
CloseGenInterface(); // close current interface
|
|
|
|
iInterfaceMode=iM; // set new interface mode
|
|
|
|
OpenGenInterface(); // open new interface
|
|
|
|
ComboBox_SetCurSel(hWC,iInterfaceMode); // sel interface again (maybe it was not supported on open)
|
|
|
|
EnumDrives(hW); // enum drives again
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// cache mode has changed
|
|
|
|
|
|
|
|
void OnCache(HWND hW)
|
|
|
|
{
|
|
|
|
HWND hWC=GetDlgItem(hW,IDC_CACHE);
|
|
|
|
if(ComboBox_GetCurSel(hWC)<=0)
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_DATACACHE),SW_HIDE);
|
|
|
|
else ShowWindow(GetDlgItem(hW,IDC_DATACACHE),SW_SHOW);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// show/hide files depending on subc mode
|
|
|
|
|
|
|
|
void ShowSubFileStuff(HWND hW)
|
|
|
|
{
|
|
|
|
HWND hWC=GetDlgItem(hW,IDC_SUBCHAN0);
|
|
|
|
int iShow,iSel=ComboBox_GetCurSel(hWC);
|
|
|
|
|
|
|
|
if(iSel==2) iShow=SW_SHOW;
|
2010-04-25 00:31:27 +00:00
|
|
|
else iShow=SW_HIDE;
|
2009-02-09 21:15:56 +00:00
|
|
|
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_SFSTATIC),iShow);
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_SUBFILE),iShow);
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_CHOOSESUBF),iShow);
|
|
|
|
|
|
|
|
if(iSel==1)
|
|
|
|
{
|
|
|
|
ComboBox_SetCurSel(GetDlgItem(hW,IDC_CACHE),0);
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_DATACACHE),SW_HIDE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// init dialog
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
BOOL OnInitCDRDialog(HWND hW)
|
2009-02-09 21:15:56 +00:00
|
|
|
{
|
|
|
|
HWND hWC;int i=0;
|
|
|
|
|
|
|
|
ReadConfig(); // read config
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_IMODE); // interface
|
|
|
|
ComboBox_AddString(hWC,"NONE");
|
|
|
|
ComboBox_AddString(hWC,"W9X/ME - ASPI scsi commands");
|
|
|
|
ComboBox_AddString(hWC,"W2K/XP - IOCTL scsi commands");
|
2010-04-25 00:31:27 +00:00
|
|
|
|
|
|
|
// not supported with my dvd drive - DISABLED!
|
2009-02-09 21:15:56 +00:00
|
|
|
// ComboBox_AddString(hWC,"W2K/XP - IOCTL raw reading");
|
|
|
|
|
|
|
|
ComboBox_SetCurSel(hWC,iInterfaceMode);
|
|
|
|
|
|
|
|
EnumDrives(hW); // enum drives
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_CACHE); // caching
|
|
|
|
ComboBox_AddString(hWC,"None - reads one sector");
|
|
|
|
ComboBox_AddString(hWC,"Read ahead - fast, reads more sectors at once");
|
|
|
|
ComboBox_AddString(hWC,"Async read - faster, additional asynchronous reads");
|
|
|
|
ComboBox_AddString(hWC,"Thread read - fast with IOCTL, always async reads");
|
2015-01-12 12:27:09 +00:00
|
|
|
ComboBox_AddString(hWC,"Smooth read - for drives with PS2 CD/DVD reading troubles");
|
2009-02-09 21:15:56 +00:00
|
|
|
ComboBox_SetCurSel(hWC,iUseCaching);
|
|
|
|
|
|
|
|
if(iUseDataCache)
|
|
|
|
CheckDlgButton(hW,IDC_DATACACHE,TRUE);
|
|
|
|
if(!iUseCaching)
|
|
|
|
ShowWindow(GetDlgItem(hW,IDC_DATACACHE),SW_HIDE);
|
|
|
|
|
|
|
|
if(iUseSpeedLimit) // speed limit
|
|
|
|
CheckDlgButton(hW,IDC_SPEEDLIMIT,TRUE);
|
|
|
|
|
|
|
|
if(iNoWait) // wait for drive
|
|
|
|
CheckDlgButton(hW,IDC_NOWAIT,TRUE);
|
2010-04-25 00:31:27 +00:00
|
|
|
|
2009-02-09 21:15:56 +00:00
|
|
|
if(iCheckTrayStatus) // tray status
|
|
|
|
CheckDlgButton(hW,IDC_TRAYSTATE,TRUE);
|
|
|
|
|
|
|
|
SetDlgItemInt(hW,IDC_RETRY,iMaxRetry,FALSE); // retry on error
|
|
|
|
if(iMaxRetry) CheckDlgButton(hW,IDC_TRYAGAIN,TRUE);
|
|
|
|
if(iShowReadErr) CheckDlgButton(hW,IDC_SHOWREADERR,TRUE);
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_SUBCHAN0); // subchannel mode
|
|
|
|
ComboBox_AddString(hWC,"Don't read subchannels");
|
|
|
|
ComboBox_AddString(hWC,"Read subchannels (slow, few drives support it, best chances with BE mode)");
|
|
|
|
ComboBox_AddString(hWC,"Use subchannel SBI/M3S info file (recommended)");
|
|
|
|
ComboBox_SetCurSel(hWC,iUseSubReading);
|
|
|
|
|
|
|
|
ShowSubFileStuff(hW); // show/hide subc controls
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_SPEED); // speed limit
|
|
|
|
ComboBox_AddString(hWC,"2 X");
|
|
|
|
ComboBox_AddString(hWC,"4 X");
|
|
|
|
ComboBox_AddString(hWC,"8 X");
|
|
|
|
ComboBox_AddString(hWC,"16 X");
|
|
|
|
|
|
|
|
i=0;
|
|
|
|
if(iSpeedLimit==4) i=1;
|
|
|
|
if(iSpeedLimit==8) i=2;
|
|
|
|
if(iSpeedLimit==16) i=3;
|
|
|
|
|
|
|
|
ComboBox_SetCurSel(hWC,i);
|
|
|
|
|
|
|
|
if(iUsePPF) CheckDlgButton(hW,IDC_USEPPF,TRUE); // ppf
|
|
|
|
SetDlgItemText(hW,IDC_PPFFILE,szPPF);
|
|
|
|
SetDlgItemText(hW,IDC_SUBFILE,szSUBF);
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
return TRUE;
|
2009-02-09 21:15:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
void OnCDROK(HWND hW)
|
2009-02-09 21:15:56 +00:00
|
|
|
{
|
|
|
|
int iA,iT,iL,iR;
|
|
|
|
HWND hWC=GetDlgItem(hW,IDC_RTYPE);
|
|
|
|
|
|
|
|
GetCDRInfos(hW,&iA,&iT,&iL);
|
|
|
|
if(iA==-1) return;
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_CACHE);
|
|
|
|
iUseCaching=ComboBox_GetCurSel(hWC);
|
|
|
|
if(iUseCaching<0) iUseCaching=0;
|
|
|
|
if(iUseCaching>4) iUseCaching=4;
|
|
|
|
|
|
|
|
iCD_AD=iA;iCD_TA=iT;iCD_LU=iL;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_SPEEDLIMIT))
|
|
|
|
iUseSpeedLimit=1;
|
|
|
|
else iUseSpeedLimit=0;
|
|
|
|
|
|
|
|
iUseSubReading=0;
|
|
|
|
hWC=GetDlgItem(hW,IDC_SUBCHAN0);
|
|
|
|
iUseSubReading=ComboBox_GetCurSel(hWC);
|
|
|
|
if(iUseSubReading<0) iUseSubReading=0;
|
|
|
|
if(iUseSubReading>2) iUseSubReading=2;
|
|
|
|
if(iUseSubReading==1) iUseCaching=0;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_DATACACHE))
|
|
|
|
iUseDataCache=1;
|
|
|
|
else iUseDataCache=0;
|
|
|
|
if(iUseCaching==0) iUseDataCache=0;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_NOWAIT))
|
|
|
|
iNoWait=1;
|
|
|
|
else iNoWait=0;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_TRAYSTATE))
|
|
|
|
iCheckTrayStatus=1;
|
|
|
|
else iCheckTrayStatus=0;
|
|
|
|
|
|
|
|
iMaxRetry=GetDlgItemInt(hW,IDC_RETRY,NULL,FALSE);
|
|
|
|
if(iMaxRetry<1) iMaxRetry=1;
|
|
|
|
if(iMaxRetry>10) iMaxRetry=10;
|
|
|
|
if(!IsDlgButtonChecked(hW,IDC_TRYAGAIN)) iMaxRetry=0;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_SHOWREADERR))
|
|
|
|
iShowReadErr=1;
|
|
|
|
else iShowReadErr=0;
|
|
|
|
|
|
|
|
hWC=GetDlgItem(hW,IDC_SPEED);
|
|
|
|
iR=ComboBox_GetCurSel(hWC);
|
|
|
|
|
|
|
|
iSpeedLimit=2;
|
|
|
|
if(iR==1) iSpeedLimit=4;
|
|
|
|
if(iR==2) iSpeedLimit=8;
|
|
|
|
if(iR==3) iSpeedLimit=16;
|
|
|
|
|
|
|
|
if(IsDlgButtonChecked(hW,IDC_USEPPF))
|
|
|
|
iUsePPF=1;
|
|
|
|
else iUsePPF=0;
|
|
|
|
|
|
|
|
GetDlgItemText(hW,IDC_PPFFILE,szPPF,259);
|
|
|
|
GetDlgItemText(hW,IDC_SUBFILE,szSUBF,259);
|
|
|
|
|
|
|
|
WriteConfig(); // write registry
|
|
|
|
|
|
|
|
EndDialog(hW,TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2010-04-25 00:31:27 +00:00
|
|
|
void OnCDRCancel(HWND hW)
|
2009-02-09 21:15:56 +00:00
|
|
|
{
|
|
|
|
EndDialog(hW,FALSE);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
BOOL CALLBACK CDRDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
|
{
|
|
|
|
switch(uMsg)
|
|
|
|
{
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
return OnInitCDRDialog(hW);
|
|
|
|
|
|
|
|
case WM_COMMAND:
|
|
|
|
{
|
|
|
|
switch(LOWORD(wParam))
|
|
|
|
{
|
2010-04-25 00:31:27 +00:00
|
|
|
case IDC_SUBCHAN0: if(HIWORD(wParam)==CBN_SELCHANGE)
|
2009-02-09 21:15:56 +00:00
|
|
|
{ShowSubFileStuff(hW);return TRUE;}
|
2010-04-25 00:31:27 +00:00
|
|
|
case IDC_IMODE: if(HIWORD(wParam)==CBN_SELCHANGE)
|
2009-02-09 21:15:56 +00:00
|
|
|
{OnIMode(hW);return TRUE;}
|
|
|
|
break;
|
2010-04-25 00:31:27 +00:00
|
|
|
case IDC_CACHE: if(HIWORD(wParam)==CBN_SELCHANGE)
|
2009-02-09 21:15:56 +00:00
|
|
|
{OnCache(hW);return TRUE;}
|
|
|
|
break;
|
|
|
|
case IDCANCEL: OnCDRCancel(hW); return TRUE;
|
|
|
|
case IDOK: OnCDROK(hW); return TRUE;
|
|
|
|
case IDC_CHOOSEFILE: OnChooseFile(hW,0);return TRUE;
|
|
|
|
case IDC_CHOOSESUBF: OnChooseFile(hW,1);return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
BOOL CALLBACK AboutDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
|
{
|
|
|
|
switch(uMsg)
|
|
|
|
{
|
|
|
|
case WM_COMMAND:
|
|
|
|
{
|
|
|
|
switch(LOWORD(wParam))
|
|
|
|
{
|
|
|
|
case IDCANCEL: EndDialog(hW,FALSE);return TRUE;
|
|
|
|
case IDOK: EndDialog(hW,FALSE);return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|