📄 settings.cpp
字号:
#ifdef USE_QT_GUI
/* Logfile -------------------------------------------------------------- */
/* Start log file delayed */
SetNumericIniSet(ini, "Logfile", "startlog",
pDRMRec->GetParameters()->ReceptLog.GetDelLogStart());
/* Frequency for log file */
SetNumericIniSet(ini, "Logfile", "frequency",
pDRMRec->GetParameters()->ReceptLog.GetFrequency());
/* Latitude string for log file */
PutIniSetting(ini, "Logfile", "latitude",
pDRMRec->GetParameters()->ReceptLog.GetLatitude().c_str());
/* Longitude string for log file */
PutIniSetting(ini, "Logfile", "longitude",
pDRMRec->GetParameters()->ReceptLog.GetLongitude().c_str());
/* Seconds for preview into Stations Dialog if zero then inactive */
SetNumericIniSet(ini, "Stations dialog", "preview",
pDRMRec->iSecondsPreview);
/* Window geometry ------------------------------------------------------ */
/* Main window */
SetNumericIniSet(ini, "Window geometry", "mainxpos", pDRMRec->GeomFdrmdialog.iXPos);
SetNumericIniSet(ini, "Window geometry", "mainypos", pDRMRec->GeomFdrmdialog.iYPos);
SetNumericIniSet(ini, "Window geometry", "mainhsize", pDRMRec->GeomFdrmdialog.iHSize);
SetNumericIniSet(ini, "Window geometry", "mainwsize", pDRMRec->GeomFdrmdialog.iWSize);
/* System evaluation window */
SetNumericIniSet(ini, "Window geometry", "sysevxpos", pDRMRec->GeomSystemEvalDlg.iXPos);
SetNumericIniSet(ini, "Window geometry", "sysevypos", pDRMRec->GeomSystemEvalDlg.iYPos);
SetNumericIniSet(ini, "Window geometry", "sysevhsize", pDRMRec->GeomSystemEvalDlg.iHSize);
SetNumericIniSet(ini, "Window geometry", "sysevwsize", pDRMRec->GeomSystemEvalDlg.iWSize);
SetFlagIniSet(ini, "Window geometry", "sysevvis", pDRMRec->GeomSystemEvalDlg.bVisible);
/* Multimedia window */
SetNumericIniSet(ini, "Window geometry", "multdlgxpos", pDRMRec->GeomMultimediaDlg.iXPos);
SetNumericIniSet(ini, "Window geometry", "multdlgypos", pDRMRec->GeomMultimediaDlg.iYPos);
SetNumericIniSet(ini, "Window geometry", "multdlghsize", pDRMRec->GeomMultimediaDlg.iHSize);
SetNumericIniSet(ini, "Window geometry", "multdlgwsize", pDRMRec->GeomMultimediaDlg.iWSize);
SetFlagIniSet(ini, "Window geometry", "multdlgvis", pDRMRec->GeomMultimediaDlg.bVisible);
/* Stations dialog */
SetNumericIniSet(ini, "Window geometry", "statdlgxpos", pDRMRec->GeomStationsDlg.iXPos);
SetNumericIniSet(ini, "Window geometry", "statdlgypos", pDRMRec->GeomStationsDlg.iYPos);
SetNumericIniSet(ini, "Window geometry", "statdlghsize", pDRMRec->GeomStationsDlg.iHSize);
SetNumericIniSet(ini, "Window geometry", "statdlgwsize", pDRMRec->GeomStationsDlg.iWSize);
SetFlagIniSet(ini, "Window geometry", "statdlgvis", pDRMRec->GeomStationsDlg.bVisible);
/* Analog demodulation dialog */
SetNumericIniSet(ini, "Window geometry", "analdemxpos", pDRMRec->GeomAnalogDemDlg.iXPos);
SetNumericIniSet(ini, "Window geometry", "analdemypos", pDRMRec->GeomAnalogDemDlg.iYPos);
SetNumericIniSet(ini, "Window geometry", "analdemhsize", pDRMRec->GeomAnalogDemDlg.iHSize);
SetNumericIniSet(ini, "Window geometry", "analdemwsize", pDRMRec->GeomAnalogDemDlg.iWSize);
SetFlagIniSet(ini, "Window geometry", "analdemvis", pDRMRec->GeomAnalogDemDlg.bVisible);
/* Chart windows */
const int iNumChartWin = pDRMRec->GeomChartWindows.Size();
SetNumericIniSet(ini, "Window geometry", "numchartwin", iNumChartWin);
for (int i = 0; i < iNumChartWin; i++)
{
/* Convert number to string */
char chNumTmpLong[256];
sprintf(chNumTmpLong, "chwin%dxpos", i);
SetNumericIniSet(ini, "Window geometry", chNumTmpLong, pDRMRec->GeomChartWindows[i].iXPos);
sprintf(chNumTmpLong, "chwin%dypos", i);
SetNumericIniSet(ini, "Window geometry", chNumTmpLong, pDRMRec->GeomChartWindows[i].iYPos);
sprintf(chNumTmpLong, "chwin%dhsize", i);
SetNumericIniSet(ini, "Window geometry", chNumTmpLong, pDRMRec->GeomChartWindows[i].iHSize);
sprintf(chNumTmpLong, "chwin%dwsize", i);
SetNumericIniSet(ini, "Window geometry", chNumTmpLong, pDRMRec->GeomChartWindows[i].iWSize);
sprintf(chNumTmpLong, "chwin%dtype", i);
SetNumericIniSet(ini, "Window geometry", chNumTmpLong, pDRMRec->GeomChartWindows[i].iType);
}
/* Other ---------------------------------------------------------------- */
/* Color scheme main plot */
SetNumericIniSet(ini, "GUI", "colorscheme", pDRMRec->iMainPlotColorStyle);
/* System evaluation dialog plot type */
SetNumericIniSet(ini, "GUI", "sysevplottype", pDRMRec->iSysEvalDlgPlotType);
#endif
#ifdef HAVE_LIBHAMLIB
/* Hamlib --------------------------------------------------------------- */
/* Hamlib Model ID */
SetNumericIniSet(ini, "Hamlib", "hamlib-model",
pDRMRec->GetHamlib()->GetHamlibModelID());
/* Hamlib configuration string */
PutIniSetting(ini, "Hamlib", "hamlib-config", pDRMRec->GetHamlib()->GetHamlibConf().c_str());
# ifdef USE_QT_GUI
/* Enable s-meter flag */
SetFlagIniSet(ini, "Hamlib", "ensmeter", pDRMRec->bEnableSMeter);
# endif
/* Enable DRM modified receiver flag */
SetFlagIniSet(ini, "Hamlib", "enmodrig", pDRMRec->GetHamlib()->GetEnableModRigSettings());
#endif
/* Save settings in init-file */
SaveIni(ini, DREAM_INIT_FILE_NAME);
}
_BOOLEAN CSettings::GetNumericIniSet(INIFile& theINI, string strSection,
string strKey, int iRangeStart,
int iRangeStop, int& iValue)
{
/* Init return value */
_BOOLEAN bReturn = FALSE;
const string strGetIni =
GetIniSetting(theINI, strSection.c_str(), strKey.c_str());
/* Check if it is a valid parameter */
if (!strGetIni.empty())
{
iValue = atoi(strGetIni.c_str());
/* Check range */
if ((iValue >= iRangeStart) && (iValue <= iRangeStop))
bReturn = TRUE;
}
return bReturn;
}
void CSettings::SetNumericIniSet(INIFile& theINI, string strSection,
string strKey, int iValue)
{
char cString[256];
sprintf(cString, "%d", iValue);
PutIniSetting(theINI, strSection.c_str(), strKey.c_str(), cString);
}
_BOOLEAN CSettings::GetFlagIniSet(INIFile& theINI, string strSection,
string strKey, _BOOLEAN& bValue)
{
/* Init return value */
_BOOLEAN bReturn = FALSE;
const string strGetIni =
GetIniSetting(theINI, strSection.c_str(), strKey.c_str());
if (!strGetIni.empty())
{
if (atoi(strGetIni.c_str()))
bValue = TRUE;
else
bValue = FALSE;
bReturn = TRUE;
}
return bReturn;
}
void CSettings::SetFlagIniSet(INIFile& theINI, string strSection, string strKey,
_BOOLEAN bValue)
{
if (bValue == TRUE)
PutIniSetting(theINI, strSection.c_str(), strKey.c_str(), "1");
else
PutIniSetting(theINI, strSection.c_str(), strKey.c_str(), "0");
}
/* Command line argument parser ***********************************************/
_BOOLEAN CSettings::ParseArguments(int argc, char** argv)
{
_BOOLEAN bIsReceiver = TRUE;
_REAL rArgument;
string strArgument;
_REAL rFreqAcSeWinSize = (_REAL) 0.0;
_REAL rFreqAcSeWinCenter = (_REAL) 0.0;
/* QT docu: argv()[0] is the program name, argv()[1] is the first
argument and argv()[argc()-1] is the last argument.
Start with first argument, therefore "i = 1" */
for (int i = 1; i < argc; i++)
{
/* DRM transmitter mode flag ---------------------------------------- */
if (GetFlagArgument(argc, argv, i, "-t", "--transmitter") == TRUE)
{
bIsReceiver = FALSE;
continue;
}
/* Flip spectrum flag ----------------------------------------------- */
if (GetFlagArgument(argc, argv, i, "-p", "--flipspectrum") == TRUE)
{
pDRMRec->GetReceiver()->SetFlippedSpectrum(TRUE);
continue;
}
/* Mute audio flag -------------------------------------------------- */
if (GetFlagArgument(argc, argv, i, "-m", "--muteaudio") == TRUE)
{
pDRMRec->GetWriteData()->MuteAudio(TRUE);
continue;
}
/* Bandpass filter flag --------------------------------------------- */
if (GetFlagArgument(argc, argv, i, "-F", "--filter") == TRUE)
{
pDRMRec->GetFreqSyncAcq()->SetRecFilter(TRUE);
continue;
}
/* Modified metrics flag -------------------------------------------- */
if (GetFlagArgument(argc, argv, i, "-D", "--modmetric") == TRUE)
{
pDRMRec->GetChanEst()->SetIntCons(TRUE);
continue;
}
/* Sound In device -------------------------------------------------- */
if (GetNumericArgument(argc, argv, i, "-I", "--snddevin", 0,
MAX_NUM_SND_DEV, rArgument) == TRUE)
{
pDRMRec->GetSoundInterface()->SetInDev((int) rArgument);
continue;
}
/* Sound Out device ------------------------------------------------- */
if (GetNumericArgument(argc, argv, i, "-O", "--snddevout", 0,
MAX_NUM_SND_DEV, rArgument) == TRUE)
{
pDRMRec->GetSoundInterface()->SetOutDev((int) rArgument);
continue;
}
/* Do not use sound card, read from file ---------------------------- */
if (GetStringArgument(argc, argv, i, "-f", "--fileio",
strArgument) == TRUE)
{
pDRMRec->SetReadDRMFromFile(strArgument);
continue;
}
/* Write output data to file as WAV --------------------------------- */
if (GetStringArgument(argc, argv, i, "-w", "--writewav",
strArgument) == TRUE)
{
pDRMRec->GetWriteData()-> StartWriteWaveFile(strArgument);
continue;
}
/* Number of iterations for MLC setting ----------------------------- */
if (GetNumericArgument(argc, argv, i, "-i", "--mlciter", 0,
MAX_NUM_MLC_IT, rArgument) == TRUE)
{
pDRMRec->GetMSCMLC()->SetNumIterations((int) rArgument);
continue;
}
/* Sample rate offset start value ----------------------------------- */
if (GetNumericArgument(argc, argv, i, "-s", "--sampleoff",
MIN_SAM_OFFS_INI, MAX_SAM_OFFS_INI, rArgument) == TRUE)
{
pDRMRec->SetInitResOff(rArgument);
continue;
}
/* Frequency acquisition search window size ------------------------- */
if (GetNumericArgument(argc, argv, i, "-S", "--fracwinsize", 0,
MAX_FREQ_AQC_SE_WIN_SI, rArgument) == TRUE)
{
rFreqAcSeWinSize = rArgument;
continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -