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

📄 settings.cpp

📁 Dream.exe soft source (Visual C++)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************\
 * Technische Universitaet Darmstadt, Institut fuer Nachrichtentechnik
 * Copyright (c) 2004
 *
 * Author(s):
 *	Volker Fischer, Tomi Manninen, Stephane Fillod, Robert Kesterson
 *
 * Description:
 *
 * 10/03/2003 Tomi Manninen / OH2BNS
 *  - Initial (basic) code for command line argument parsing (argv)
 * 04/15/2004 Tomi Manninen, Stephane Fillod
 *  - Hamlib
 * 07/27/4002
 *  - included stlini routines written by Robert Kesterson
 *
 ******************************************************************************
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
\******************************************************************************/

#include "Settings.h"


/* Implementation *************************************************************/
_BOOLEAN CSettings::Load(int argc, char** argv)
{
	/* First load settings from init-file and then parse command line arguments.
	   The command line arguments overwrite settings in init-file! */
	ReadIniFile();

	return ParseArguments(argc, argv);
}

void CSettings::Save()
{
	/* Just write settings in init-file */
	WriteIniFile();
}


/* Read and write init-file ***************************************************/
void CSettings::ReadIniFile()
{
	int			iValue;
	_BOOLEAN	bValue;

	/* Load data from init-file */
	INIFile ini = LoadIni(DREAM_INIT_FILE_NAME);


	/* Receiver ------------------------------------------------------------- */
	/* Flip spectrum flag */
	if (GetFlagIniSet(ini, "Receiver", "flipspectrum", bValue) == TRUE)
		pDRMRec->GetReceiver()->SetFlippedSpectrum(bValue);


	/* Mute audio flag */
	if (GetFlagIniSet(ini, "Receiver", "muteaudio", bValue) == TRUE)
		pDRMRec->GetWriteData()->MuteAudio(bValue);


	/* Reverberation flag */
	if (GetFlagIniSet(ini, "Receiver", "reverb", bValue) == TRUE)
		pDRMRec->GetAudSorceDec()->SetReverbEffect(bValue);


	/* Bandpass filter flag */
	if (GetFlagIniSet(ini, "Receiver", "filter", bValue) == TRUE)
		pDRMRec->GetFreqSyncAcq()->SetRecFilter(bValue);


	/* Modified metrics flag */
	if (GetFlagIniSet(ini, "Receiver", "modmetric", bValue) == TRUE)
		pDRMRec->GetChanEst()->SetIntCons(bValue);


	/* Sound In device */
	if (GetNumericIniSet(ini, "Receiver", "snddevin", 0, MAX_NUM_SND_DEV, iValue) == TRUE)
		pDRMRec->GetSoundInterface()->SetInDev(iValue);


	/* Sound Out device */
	if (GetNumericIniSet(ini, "Receiver", "snddevout", 0, MAX_NUM_SND_DEV, iValue) == TRUE)
		pDRMRec->GetSoundInterface()->SetOutDev(iValue);


	/* Number of iterations for MLC setting */
	if (GetNumericIniSet(ini, "Receiver", "mlciter", 0, MAX_NUM_MLC_IT, iValue) == TRUE)
		pDRMRec->GetMSCMLC()->SetNumIterations(iValue);


#ifdef USE_QT_GUI
	/* Logfile -------------------------------------------------------------- */
	/* Start log file flag */
	if (GetNumericIniSet(ini, "Logfile", "startlog", 0, MAX_SEC_LOG_FI_START, iValue) == TRUE)
		pDRMRec->GetParameters()->ReceptLog.SetDelLogStart(iValue);


	/* Frequency for log file */
	if (GetNumericIniSet(ini, "Logfile", "frequency", 0, MAX_FREQ_LOG_FILE, iValue) == TRUE)
		pDRMRec->GetParameters()->ReceptLog.SetFrequency(iValue);


	/* Latitude string for log file */
	pDRMRec->GetParameters()->ReceptLog.SetLatitude(
		GetIniSetting(ini, "Logfile", "latitude"));


	/* Longitude string for log file */
	pDRMRec->GetParameters()->ReceptLog.SetLongitude(
		GetIniSetting(ini, "Logfile", "longitude"));


	/* Seconds for preview into Stations Dialog if zero then inactive */
	if (GetNumericIniSet(ini, "Stations dialog", "preview", 0, MAX_NUM_SEC_PREVIEW, iValue) == TRUE)
		pDRMRec->iSecondsPreview = iValue;


	/* Window geometry ------------------------------------------------------ */
	/* Main window */
	if (GetNumericIniSet(ini, "Window geometry", "mainxpos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomFdrmdialog.iXPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "mainypos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomFdrmdialog.iYPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "mainhsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomFdrmdialog.iHSize = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "mainwsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomFdrmdialog.iWSize = iValue;

	/* System evaluation window */
	if (GetNumericIniSet(ini, "Window geometry", "sysevxpos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomSystemEvalDlg.iXPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "sysevypos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomSystemEvalDlg.iYPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "sysevhsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomSystemEvalDlg.iHSize = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "sysevwsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomSystemEvalDlg.iWSize = iValue;
	if (GetFlagIniSet(ini, "Window geometry", "sysevvis", bValue) == TRUE)
		pDRMRec->GeomSystemEvalDlg.bVisible = bValue;

	/* Multimedia window */
	if (GetNumericIniSet(ini, "Window geometry", "multdlgxpos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomMultimediaDlg.iXPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "multdlgypos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomMultimediaDlg.iYPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "multdlghsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomMultimediaDlg.iHSize = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "multdlgwsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomMultimediaDlg.iWSize = iValue;
	if (GetFlagIniSet(ini, "Window geometry", "multdlgvis", bValue) == TRUE)
		pDRMRec->GeomMultimediaDlg.bVisible = bValue;

	/* Stations dialog */
	if (GetNumericIniSet(ini, "Window geometry", "statdlgxpos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomStationsDlg.iXPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "statdlgypos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomStationsDlg.iYPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "statdlghsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomStationsDlg.iHSize = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "statdlgwsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomStationsDlg.iWSize = iValue;
	if (GetFlagIniSet(ini, "Window geometry", "statdlgvis", bValue) == TRUE)
		pDRMRec->GeomStationsDlg.bVisible = bValue;

	/* Analog demodulation dialog */
	if (GetNumericIniSet(ini, "Window geometry", "analdemxpos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomAnalogDemDlg.iXPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "analdemypos", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomAnalogDemDlg.iYPos = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "analdemhsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomAnalogDemDlg.iHSize = iValue;
	if (GetNumericIniSet(ini, "Window geometry", "analdemwsize", 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
		pDRMRec->GeomAnalogDemDlg.iWSize = iValue;
	if (GetFlagIniSet(ini, "Window geometry", "analdemvis", bValue) == TRUE)
		pDRMRec->GeomAnalogDemDlg.bVisible = bValue;

	/* Chart windows */
	int iNumChartWin = 0;
	if (GetNumericIniSet(ini, "Window geometry", "numchartwin", 0, MAX_NUM_CHART_WIN_EV_DLG, iValue) == TRUE)
		iNumChartWin = iValue;

	pDRMRec->GeomChartWindows.Init(iNumChartWin);
	for (int i = 0; i < iNumChartWin; i++)
	{
		/* Convert number to string */
		char chNumTmpLong[256];

		sprintf(chNumTmpLong, "chwin%dxpos", i);
		if (GetNumericIniSet(ini, "Window geometry", chNumTmpLong, 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
			pDRMRec->GeomChartWindows[i].iXPos = iValue;

		sprintf(chNumTmpLong, "chwin%dypos", i);
		if (GetNumericIniSet(ini, "Window geometry", chNumTmpLong, 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
			pDRMRec->GeomChartWindows[i].iYPos = iValue;

		sprintf(chNumTmpLong, "chwin%dhsize", i);
		if (GetNumericIniSet(ini, "Window geometry", chNumTmpLong, 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
			pDRMRec->GeomChartWindows[i].iHSize = iValue;

		sprintf(chNumTmpLong, "chwin%dwsize", i);
		if (GetNumericIniSet(ini, "Window geometry", chNumTmpLong, 0, MAX_WIN_GEOM_VAL, iValue) == TRUE)
			pDRMRec->GeomChartWindows[i].iWSize = iValue;

		sprintf(chNumTmpLong, "chwin%dtype", i);
		if (GetNumericIniSet(ini, "Window geometry", chNumTmpLong, 0, MAX_IND_CHART_TYPES, iValue) == TRUE)
			pDRMRec->GeomChartWindows[i].iType = iValue;
	}


	/* Other ---------------------------------------------------------------- */
	/* Color scheme main plot */
	if (GetNumericIniSet(ini, "GUI", "colorscheme", 0, MAX_COLOR_SCHEMES_VAL, iValue) == TRUE)
		pDRMRec->iMainPlotColorStyle = iValue;

	/* System evaluation dialog plot type. Maximum value is the last element
	   in the plot type enum! */
	if (GetNumericIniSet(ini, "GUI", "sysevplottype", 0, CDRMPlot::NONE_OLD, iValue) == TRUE)
		pDRMRec->iSysEvalDlgPlotType = iValue;
#endif


#ifdef HAVE_LIBHAMLIB
	/* Hamlib --------------------------------------------------------------- */
	/* Hamlib Model ID */
	if (GetNumericIniSet(ini, "Hamlib",	"hamlib-model", 0, MAX_ID_HAMLIB, iValue) == TRUE)
		pDRMRec->GetHamlib()->SetHamlibModelID(iValue);

	/* Hamlib configuration string */
	pDRMRec->GetHamlib()->SetHamlibConf(GetIniSetting(ini, "Hamlib", "hamlib-config"));

# ifdef USE_QT_GUI
	/* Enable s-meter flag */
	if (GetFlagIniSet(ini, "Hamlib", "ensmeter", bValue) == TRUE)
		pDRMRec->bEnableSMeter = bValue;
# endif

	/* Enable DRM modified receiver flag */
	if (GetFlagIniSet(ini, "Hamlib", "enmodrig", bValue) == TRUE)
		pDRMRec->GetHamlib()->SetEnableModRigSettings(bValue);
#endif
}

void CSettings::WriteIniFile()
{
	INIFile ini;

	/* Receiver ------------------------------------------------------------- */
	/* Flip spectrum flag */
	SetFlagIniSet(ini, "Receiver", "flipspectrum",
		pDRMRec->GetReceiver()->GetFlippedSpectrum());


	/* Mute audio flag */
	SetFlagIniSet(ini, "Receiver", "muteaudio",
		pDRMRec->GetWriteData()->GetMuteAudio());


	/* Reverberation */
	SetFlagIniSet(ini, "Receiver", "reverb",
		pDRMRec->GetAudSorceDec()->GetReverbEffect());


	/* Bandpass filter flag */
	SetFlagIniSet(ini, "Receiver", "filter",
		pDRMRec->GetFreqSyncAcq()->GetRecFilter());


	/* Modified metrics flag */
	SetFlagIniSet(ini, "Receiver", "modmetric",
		pDRMRec->GetChanEst()->GetIntCons());


	/* Sound In device */
	SetNumericIniSet(ini, "Receiver", "snddevin",
		pDRMRec->GetSoundInterface()->GetInDev());


	/* Sound Out device */
	SetNumericIniSet(ini, "Receiver", "snddevout",
		pDRMRec->GetSoundInterface()->GetOutDev());


	/* Number of iterations for MLC setting */
	SetNumericIniSet(ini, "Receiver", "mlciter",
		pDRMRec->GetMSCMLC()->GetInitNumIterations());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -