📄 settings.cpp
字号:
/******************************************************************************\
* 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 + -