Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
c4d52df3bc | |||
bb18b01514 | |||
b1422053ab | |||
9dd3340f78 | |||
63db43519c | |||
c2f5d01beb | |||
f83cf055be | |||
27a744c8f5 | |||
720d62dc51 | |||
79b59b6dfb | |||
bb5f502398 | |||
462119dd35 | |||
33da0caf2c | |||
455129be6b | |||
1ae0b284b4 | |||
80a7398350 | |||
60b804c3a1 | |||
c6cee9f6d8 | |||
07a1dc1d59 |
11
ChangeLog
11
ChangeLog
@ -12,6 +12,17 @@ or
|
||||
|
||||
https://bitbucket.org/muonspin/musrfit/commits/all
|
||||
|
||||
Release of V1.2.0, 2017/10/26
|
||||
=============================
|
||||
|
||||
Adopted to be ready for rpm builds in a first step. This will be followed by debian style
|
||||
packages.
|
||||
|
||||
Release of V1.1.0, 2017/10/26
|
||||
=============================
|
||||
|
||||
Added full DKS support, i.e. additionally to CUDA also OpenCL for GPU's and CPU's in place.
|
||||
|
||||
Release of V1.0.0, 2017/05/18
|
||||
=============================
|
||||
|
||||
|
53
configure.ac
53
configure.ac
@ -1,7 +1,7 @@
|
||||
AC_REVISION([m4_esyscmd_s([git describe --always])])
|
||||
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([musrfit],[1.0.0],[andreas.suter@psi.ch])
|
||||
AC_INIT([musrfit],[1.2.0],[andreas.suter@psi.ch])
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
AC_CANONICAL_HOST
|
||||
#AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}])
|
||||
@ -35,7 +35,7 @@ dnl -----------------------------------------------
|
||||
|
||||
#release versioning
|
||||
MUSR_MAJOR_VERSION=1
|
||||
MUSR_MINOR_VERSION=0
|
||||
MUSR_MINOR_VERSION=2
|
||||
MUSR_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
@ -421,7 +421,7 @@ dnl -----------------------------------------------
|
||||
dnl Check for ROOT
|
||||
dnl -----------------------------------------------
|
||||
|
||||
ROOT_PATH([5.22/00], [], AC_MSG_ERROR([Either ROOT is not installed correctly or the version is too old... please check!]))
|
||||
ROOT_PATH([6.06/00], [], AC_MSG_ERROR([Either ROOT is not installed correctly or the version is too old... please check!]))
|
||||
|
||||
ROOT_LIBS="-L${ROOTLIBDIR} ${ROOTGLIBS} ${ROOTAUXLIBS} -lMinuit2 -lMathMore -lXMLParser"
|
||||
ROOT_CFLAGS="-I${ROOTINCDIR} ${ROOTCFLAGS} ${ROOTAUXCFLAGS}"
|
||||
@ -1000,6 +1000,14 @@ if test "x$enable_editor" != "xno"; then
|
||||
[PKG_CHECK_MODULES(QT3MT, qt-mt >= 3.3.0 qt-mt < 4.0, [QT3MT_FOUND=yes], [QT3MT_FOUND=no])]
|
||||
)]
|
||||
)
|
||||
fi
|
||||
if test "x${QT5_FOUND}" != "xyes"; then
|
||||
PKG_CHECK_MODULES(QT5, Qt5WebEngine >= $QT5MINVER Qt5Xml >= $QT5MINVER, [QT5_FOUND=yes],
|
||||
[AC_MSG_NOTICE([Qt5 (including Qt5WebEngine and Qt5Xml) not found!])
|
||||
PKG_CHECK_MODULES(QT3, qt >= 3.3.0 qt < 4.0, [QT3_FOUND=yes],
|
||||
[PKG_CHECK_MODULES(QT3MT, qt-mt >= 3.3.0 qt-mt < 4.0, [QT3MT_FOUND=yes], [QT3MT_FOUND=no])]
|
||||
)]
|
||||
)
|
||||
fi]
|
||||
)
|
||||
|
||||
@ -1024,6 +1032,12 @@ if test "x$enable_editor" != "xno"; then
|
||||
QTEDITOR=musrgui
|
||||
fi
|
||||
|
||||
dnl if Qt5 but Qt5WebEngine instead of Qt5WebKit
|
||||
if test "x$QTPATH" = "x"; then
|
||||
QTPATH=$(pkg-config --variable=prefix Qt5WebEngine)
|
||||
QTEDITOR=musredit_qt5
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for qmake])
|
||||
if test "x${QTPATH}" != "xnone"; then
|
||||
if test "x$QTEDITOR" = "xmusredit_qt5"; then
|
||||
@ -1147,6 +1161,7 @@ case "$host" in
|
||||
*-*-darwin*)
|
||||
ARCH=DARWIN
|
||||
LOCAL_PSIBIN_LIB_CXXFLAGS="${LOCAL_LIB_CXXFLAGS} -D_Darwin_"
|
||||
LOCAL_BIN_LDFLAGS="${LOCAL_BIN_LDFLAGS} -Wl,-rpath ${ROOTLIBDIR}"
|
||||
;;
|
||||
*)
|
||||
ARCH=OTHERUNIX
|
||||
@ -1197,11 +1212,24 @@ else
|
||||
INSTALLDIR="${prefix}"
|
||||
fi
|
||||
|
||||
if test -d "${INSTALLDIR}/doc"
|
||||
dnl only define DOCDIR if not already present. This allows
|
||||
dnl to feed DOCDIR on the configure level which is useful when
|
||||
dnl for instance building a rpm. DOCDIR2 is needed for rpmbuild only
|
||||
if test "x${DOCDIR}" = "x"
|
||||
then
|
||||
DOCDIR="${INSTALLDIR}/doc/musrfit"
|
||||
if test -d "${INSTALLDIR}/doc"
|
||||
then
|
||||
DOCDIR="${INSTALLDIR}/doc/musrfit"
|
||||
else
|
||||
DOCDIR="${INSTALLDIR}/share/doc/musrfit"
|
||||
fi
|
||||
else
|
||||
DOCDIR="${INSTALLDIR}/share/doc/musrfit"
|
||||
if test -d "${INSTALLDIR}/doc"
|
||||
then
|
||||
DOCDIR2="${INSTALLDIR}/doc/musrfit"
|
||||
else
|
||||
DOCDIR2="${INSTALLDIR}/share/doc/musrfit"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(DOCDIR)
|
||||
@ -1426,12 +1454,21 @@ echo ""
|
||||
|
||||
dnl --------------
|
||||
dnl create header file that musredit knows at runtime where to find the documentation
|
||||
dnl the DOCDIR2 tag is used for rpmbuild only
|
||||
dnl --------------
|
||||
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit_qt5"; then
|
||||
echo \#define MUSRFIT_PREFIX \"${INSTALLDIR}\" > src/musredit_qt5/musrfit-info.h
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit_qt5/musrfit-info.h
|
||||
if test "x$DOCDIR2" = "x"; then
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit_qt5/musrfit-info.h
|
||||
else
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR2}\" >> src/musredit_qt5/musrfit-info.h
|
||||
fi
|
||||
fi
|
||||
if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTEDITOR}" = "xmusredit"; then
|
||||
echo \#define MUSRFIT_PREFIX \"${INSTALLDIR}\" > src/musredit/musrfit-info.h
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit/musrfit-info.h
|
||||
if test "x$DOCDIR2" = "x"; then
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit/musrfit-info.h
|
||||
else
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR2}\" >> src/musredit/musrfit-info.h
|
||||
fi
|
||||
fi
|
||||
|
BIN
doc/examples/data/deltat_tdc_dolly_1020.bin
Normal file
BIN
doc/examples/data/deltat_tdc_dolly_1020.bin
Normal file
Binary file not shown.
60
doc/examples/test-asy-LF-BaB6.msr
Normal file
60
doc/examples/test-asy-LF-BaB6.msr
Normal file
@ -0,0 +1,60 @@
|
||||
BaB6 T20K LF5G
|
||||
###############################################################
|
||||
FITPARAMETER
|
||||
# Nr. Name Value Step Pos_Error Boundaries
|
||||
1 alpha 0.7 0 none 0 none
|
||||
2 asy 0.2091 -0.0013 0.0013 0 0.33
|
||||
3 field 2.127 0 none 0 none
|
||||
4 width 0.5387 -0.0054 0.0055 0 100
|
||||
5 hopp 0.119 -0.013 0.014 0 100
|
||||
6 asyConst 0 0 none
|
||||
|
||||
###############################################################
|
||||
THEORY
|
||||
asymmetry 2
|
||||
dynGssKTLF fun1 4 5 (frequency damping hopping-rate)
|
||||
+
|
||||
asymmetry 6
|
||||
|
||||
###############################################################
|
||||
FUNCTIONS
|
||||
fun1 = par3 * gamma_mu
|
||||
|
||||
###############################################################
|
||||
RUN data/deltat_tdc_dolly_1020 PIE1 PSI PSI-BIN (name beamline institute data-file-format)
|
||||
fittype 2 (asymmetry fit)
|
||||
alpha 1
|
||||
map 0 0 0 0 0 0 0 0 0 0
|
||||
forward 2
|
||||
backward 1
|
||||
background 15 146 13 148 # estimated bkg: 20.4846 / 4.8731
|
||||
data 170 9956 168 9110
|
||||
t0 160.0 161.0
|
||||
fit 0.25 10
|
||||
packing 5
|
||||
|
||||
###############################################################
|
||||
COMMANDS
|
||||
MINIMIZE
|
||||
MINOS
|
||||
SAVE
|
||||
|
||||
###############################################################
|
||||
FOURIER
|
||||
units Gauss # units either 'Gauss', 'MHz', or 'Mc/s'
|
||||
fourier_power 12
|
||||
apodization STRONG # NONE, WEAK, MEDIUM, STRONG
|
||||
plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
|
||||
phase 8
|
||||
#range_for_phase_correction 50.0 70.0
|
||||
range 0 800
|
||||
|
||||
###############################################################
|
||||
PLOT 2 (asymmetry plot)
|
||||
runs 1
|
||||
range 0 9.5 -0.15 0.3
|
||||
view_packing 150
|
||||
|
||||
###############################################################
|
||||
STATISTIC --- 2013-07-01 20:40:44
|
||||
chisq = 1911.7, NDF = 1905, chisq/NDF = 1.003494
|
@ -23,7 +23,7 @@ PROJECT_NAME = musrfit
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 0.14.0
|
||||
PROJECT_NUMBER = 1.1.0
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
@ -462,8 +462,9 @@ WARN_LOGFILE =
|
||||
INPUT = musrfit.dox \
|
||||
../src/include/PFitterFcn.h \
|
||||
../src/include/PFitter.h \
|
||||
../src/include/PFourier.h \
|
||||
../src/include/PFourierCanvas.h \
|
||||
../src/include/PFourierCanvasLinkDef.h \
|
||||
../src/include/PFourier.h \
|
||||
../src/include/PFunctionGrammar.h \
|
||||
../src/include/PFunction.h \
|
||||
../src/include/PFunctionHandler.h \
|
||||
@ -476,12 +477,14 @@ INPUT = musrfit.dox \
|
||||
../src/include/PMusrT0LinkDef.h \
|
||||
../src/include/PPrepFourier.h \
|
||||
../src/include/PRunAsymmetry.h \
|
||||
../src/include/PRunAsymmetryRRF.h \
|
||||
../src/include/PRunBase.h \
|
||||
../src/include/PRunDataHandler.h \
|
||||
../src/include/PRunListCollection.h \
|
||||
../src/include/PRunMuMinus.h \
|
||||
../src/include/PRunNonMusr.h \
|
||||
../src/include/PRunSingleHisto.h \
|
||||
../src/include/PRunSingleHistoRRF.h \
|
||||
../src/include/PStartupHandler.h \
|
||||
../src/include/PStartupHandlerLinkDef.h \
|
||||
../src/include/PTheory.h \
|
||||
@ -490,8 +493,8 @@ INPUT = musrfit.dox \
|
||||
../src/include/PUserFcn.h \
|
||||
../src/classes/PFitter.cpp \
|
||||
../src/classes/PFitterFcn.cpp \
|
||||
../src/classes/PFourier.cpp \
|
||||
../src/classes/PFourierCanvas.cpp \
|
||||
../src/classes/PFourier.cpp \
|
||||
../src/classes/PFunction.cpp \
|
||||
../src/classes/PFunctionHandler.cpp \
|
||||
../src/classes/PMsr2Data.cpp \
|
||||
@ -501,12 +504,14 @@ INPUT = musrfit.dox \
|
||||
../src/classes/PMusrT0.cpp \
|
||||
../src/classes/PPrepFourier.cpp \
|
||||
../src/classes/PRunAsymmetry.cpp \
|
||||
../src/classes/PRunAsymmetryRRF.cpp \
|
||||
../src/classes/PRunBase.cpp \
|
||||
../src/classes/PRunDataHandler.cpp \
|
||||
../src/classes/PRunListCollection.cpp \
|
||||
../src/classes/PRunMuMinus.cpp \
|
||||
../src/classes/PRunNonMusr.cpp \
|
||||
../src/classes/PRunSingleHisto.cpp \
|
||||
../src/classes/PRunSingleHistoRRF.cpp \
|
||||
../src/classes/PStartupHandler.cpp \
|
||||
../src/classes/PTheory.cpp \
|
||||
../src/classes/PUserFcnBase.cpp \
|
||||
|
@ -4595,14 +4595,8 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
}
|
||||
} else { // set the x-/y-range to the previous fHistoFrame range
|
||||
dataXmin = xmin;
|
||||
@ -4620,16 +4614,13 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
if (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin = 1.0e-4 * dataYmax;
|
||||
}
|
||||
|
||||
// create histo frame in order to plot histograms possibly with different x-frames
|
||||
fHistoFrame = fDataTheoryPad->DrawFrame(dataXmin, dataYmin, dataXmax, dataYmax);
|
||||
@ -4751,14 +4742,8 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fNonMusrData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
}
|
||||
} else { // set the x-/y-range to the previous fHistoFrame range
|
||||
dataXmin = xmin;
|
||||
@ -4776,16 +4761,14 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fNonMusrData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
if (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
if (dataYmin <= 0.0)
|
||||
dataYmin = 1.0e-4 * dataYmax;
|
||||
}
|
||||
|
||||
// create fMultiGraphData, and add all data and theory
|
||||
fMultiGraphData = new TMultiGraph();
|
||||
|
@ -6154,7 +6154,7 @@ bool PRunDataHandler::DateToISO8601(string inDate, string &iso8601Date)
|
||||
return false;
|
||||
|
||||
TString str("");
|
||||
str.Form("%04d-%02d-%02d", 1900+tm.tm_year, tm.tm_mon, tm.tm_mday);
|
||||
str.Form("%04d-%02d-%02d", 1900+tm.tm_year, tm.tm_mon+1, tm.tm_mday);
|
||||
|
||||
iso8601Date = str.Data();
|
||||
|
||||
@ -6187,7 +6187,7 @@ void PRunDataHandler::SplitTimeDate(TString timeData, TString &time, TString &da
|
||||
}
|
||||
|
||||
time = TString::Format("%02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
|
||||
date = TString::Format("%04d-%02d-%02d", tm.tm_year+1900, tm.tm_mon, tm.tm_mday);
|
||||
date = TString::Format("%04d-%02d-%02d", tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
@ -629,8 +629,6 @@ Bool_t PStartupHandler::WriteDefaultStartupFile()
|
||||
fout << " <comment>" << endl;
|
||||
fout << " Defines default settings for the musrfit package" << endl;
|
||||
fout << " </comment>" << endl;
|
||||
fout << " <data_path>/mnt/data/nemu/his</data_path>" << endl;
|
||||
fout << " <data_path>/mnt/data/nemu/wkm</data_path>" << endl;
|
||||
fout << " <data_path>/afs/psi.ch/project/nemu/data/his</data_path>" << endl;
|
||||
fout << " <data_path>/afs/psi.ch/project/nemu/data/wkm</data_path>" << endl;
|
||||
fout << " <data_path>/afs/psi.ch/project/bulkmusr/data/gps</data_path>" << endl;
|
||||
|
@ -2687,14 +2687,14 @@ void PTheory::CalculateGaussLFIntegral(const Double_t *val) const
|
||||
fLFIntegral.push_back(0.0); // start value of the integral
|
||||
|
||||
ft = 0.0;
|
||||
Double_t step = 0.0, lastStep = 1.0, diff = 0.0;
|
||||
Double_t step = 0.0, lastft = 1.0, diff = 0.0;
|
||||
do {
|
||||
t += dt;
|
||||
step = 0.5*dt*preFactor*(exp(-0.5*pow(Delta * (t-dt), 2.0))*sin(w0*(t-dt))+
|
||||
exp(-0.5*pow(Delta * t, 2.0))*sin(w0*t));
|
||||
diff = fabs(fabs(step)-fabs(lastStep));
|
||||
lastStep = step;
|
||||
ft += step;
|
||||
diff = fabs(fabs(lastft)-fabs(ft));
|
||||
lastft = ft;
|
||||
fLFIntegral.push_back(ft);
|
||||
} while ((t <= 20.0) && (diff > 1.0e-10));
|
||||
}
|
||||
@ -2762,13 +2762,13 @@ void PTheory::CalculateLorentzLFIntegral(const Double_t *val) const
|
||||
ft += 0.5*dt*preFactor*(1.0+sin(w0*t)/(w0*t)*exp(-a*t));
|
||||
fLFIntegral.push_back(ft);
|
||||
// calculate all the other integral bin values
|
||||
Double_t step = 0.0, lastStep = 1.0, diff = 0.0;
|
||||
Double_t step = 0.0, lastft = 1.0, diff = 0.0;
|
||||
do {
|
||||
t += dt;
|
||||
step = 0.5*dt*preFactor*(sin(w0*(t-dt))/(w0*(t-dt))*exp(-a*(t-dt))+sin(w0*t)/(w0*t)*exp(-a*t));
|
||||
diff = fabs(fabs(step)-fabs(lastStep));
|
||||
lastStep = step;
|
||||
ft += step;
|
||||
diff = fabs(fabs(lastft)-fabs(ft));
|
||||
lastft = ft;
|
||||
fLFIntegral.push_back(ft);
|
||||
} while ((t <= 20.0) && (diff > 1.0e-10));
|
||||
}
|
||||
@ -2792,7 +2792,7 @@ Double_t PTheory::GetLFIntegralValue(const Double_t t) const
|
||||
if (idx + 2 > fLFIntegral.size())
|
||||
return fLFIntegral.back();
|
||||
|
||||
// linearly interpolate between the two relvant function bins
|
||||
// linearly interpolate between the two relevant function bins
|
||||
Double_t df = (fLFIntegral[idx+1]-fLFIntegral[idx])*(t/fSamplingTime-static_cast<Double_t>(idx));
|
||||
|
||||
return fLFIntegral[idx]+df;
|
||||
|
@ -2589,7 +2589,8 @@ void PTextEdit::musrSwapMsrMlog()
|
||||
// get current file name
|
||||
QString currentFileName = *fFilenames.find( currentEditor() );
|
||||
QString swapFileName;
|
||||
QString tempFileName = QString("__swap__.msr");
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
QString tempFileName = QString("%1/.musrfit/__swap__.msr").arg(env.value("HOME"));
|
||||
|
||||
// check if it is a msr-, mlog-, or another file
|
||||
int idx;
|
||||
@ -3027,10 +3028,15 @@ void PTextEdit::getTheme()
|
||||
|
||||
QString str = QIcon::themeName();
|
||||
|
||||
qDebug() << "debug> str=" << str << endl;
|
||||
|
||||
if (str.contains("dark", Qt::CaseInsensitive)) {
|
||||
fDarkTheme = true;
|
||||
if (str.contains("ubuntu", Qt::CaseInsensitive)) {
|
||||
fDarkToolBarIcon = false;
|
||||
} else if (str.contains("xfce", Qt::CaseInsensitive)) {
|
||||
fDarkTheme = false;
|
||||
fDarkToolBarIcon = false;
|
||||
} else {
|
||||
fDarkToolBarIcon = true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user