⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settings.cpp

📁 Dream.exe soft source (Visual C++)
💻 CPP
📖 第 1 页 / 共 3 页
字号:


#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 + -