Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
ebdb0feb7f | |||
e67d92fc05 | |||
ead1674b13 | |||
fd22884ce8 | |||
20dd08fbef | |||
3e66760c26 | |||
d6bcdf52b8 | |||
30bd2b2876 | |||
9f8f89db6d | |||
458913ca31 |
@ -1,7 +1,7 @@
|
||||
# - musrfit
|
||||
cmake_minimum_required(VERSION 3.17)
|
||||
|
||||
project(musrfit VERSION 1.9.6 LANGUAGES C CXX)
|
||||
project(musrfit VERSION 1.9.7 LANGUAGES C CXX)
|
||||
|
||||
#--- musrfit specific options -------------------------------------------------
|
||||
option(nexus "build optional NeXus support. Needed for ISIS" OFF)
|
||||
|
21
ChangeLog
21
ChangeLog
@ -12,6 +12,27 @@ or
|
||||
|
||||
https://bitbucket.org/muonspin/musrfit/commits/all
|
||||
|
||||
Release of V1.9.7, 2025/01/18
|
||||
=============================
|
||||
|
||||
allow spaces in RUN block path-filename
|
||||
|
||||
Release of V1.9.6, 2024/12/02
|
||||
=============================
|
||||
|
||||
added jump to block feature in musredit.
|
||||
|
||||
|
||||
Release of V1.9.5, 2024/06/24
|
||||
=============================
|
||||
|
||||
yaml export of ALL fit-parameters, as initiated by R.M.L. McFadden.
|
||||
|
||||
Release of V1.9.4, 2024/06/08
|
||||
=============================
|
||||
|
||||
enable OpenMP for macOS.
|
||||
|
||||
Release of V1.9.3, 2024/04/19
|
||||
=============================
|
||||
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "Minuit2/MnPrint.h"
|
||||
#include "Minuit2/MnScan.h"
|
||||
#include "Minuit2/MnSimplex.h"
|
||||
#include "Minuit2/MnStrategy.h"
|
||||
#include "Minuit2/MnUserParameterState.h"
|
||||
#include "Minuit2/MinosError.h"
|
||||
|
||||
@ -1763,7 +1764,7 @@ Bool_t PFitter::ExecuteMigrad()
|
||||
|
||||
// create migrad object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnMigrad migrad((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMigrad migrad((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -1839,7 +1840,7 @@ Bool_t PFitter::ExecuteMinimize()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnMinimize minimize((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMinimize minimize((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -2656,7 +2657,7 @@ Bool_t PFitter::ExecuteSimplex()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnSimplex simplex((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnSimplex simplex((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is 10*MINUIT2 Default maxfcn
|
||||
|
@ -140,9 +140,12 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
strLine.str(line);
|
||||
strLine >> firstOnLine;
|
||||
if (!to_lower_copy(firstOnLine).compare("run")) {
|
||||
// for path-names with spaces
|
||||
std::string::size_type loc{0};
|
||||
while (!strLine.eof()) {
|
||||
firstOnLine.clear();
|
||||
strLine >> firstOnLine;
|
||||
std::string::size_type loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
if ( loc != std::string::npos ) {
|
||||
while ( loc > 0 ) {
|
||||
if (isdigit(firstOnLine.at(--loc))) {
|
||||
@ -154,7 +157,8 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
in->close();
|
||||
fRunVectorIter = fRunVector.begin(); // set back the runlist-iterator which might have changed during the search for the correct file
|
||||
return 0;
|
||||
} else {
|
||||
}
|
||||
}
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** The first processed run file number does not match the \"file index\"!";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** The number of digits to be used for formatting the run numbers cannot be determined!";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Please check the first msr-file that should be processed;";
|
||||
@ -164,7 +168,6 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Please check the first msr-file that should be processed;";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** this is either some template or the first file from the run list.";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Obviously it contains no RUN block...";
|
||||
@ -558,11 +561,23 @@ bool PMsr2Data::PrepareNewInputFile(unsigned int tempRun, bool calledFromGlobalM
|
||||
strLine.str(line);
|
||||
strLine >> firstOnLine;
|
||||
if (!to_lower_copy(firstOnLine).compare("run")) {
|
||||
strLine >> firstOnLine;
|
||||
std::string::size_type loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
// needed for path-fln with spaces
|
||||
std::string::size_type loc;
|
||||
std::string sstr{""};
|
||||
firstOnLine.clear();
|
||||
while (!strLine.eof()) {
|
||||
strLine >> sstr;
|
||||
if (firstOnLine.empty())
|
||||
firstOnLine = sstr;
|
||||
else
|
||||
firstOnLine += " " + sstr;
|
||||
loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
if ( loc != std::string::npos ) {
|
||||
firstOnLine.replace(loc, fRunNumberDigits, newRunNumber.str());
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (strLine.eof()) {
|
||||
std::cerr << std::endl << ">> msr2data: **WARNING** The template run file number does not match the \"file index\"";
|
||||
std::cerr << std::endl << ">> msr2data: **WARNING** Unexpected things will happen... (for sure)";
|
||||
std::cerr << std::endl;
|
||||
@ -694,7 +709,6 @@ bool PMsr2Data::PrepareGlobalInputFile(unsigned int tempRun, const std::string &
|
||||
msrParamList->at(i).fIsGlobal = true;
|
||||
++fNumGlobalParam;
|
||||
}
|
||||
// std::cout << "debug> " << msrParamList->at(i).fNo << ": " << msrParamList->at(i).fName.Data() << " is global: " << msrParamList->at(i).fIsGlobal << std::endl;
|
||||
}
|
||||
|
||||
// there should be at least one run specific parameter, otherwise the GLOBAL option doesn't make sense
|
||||
@ -1801,6 +1815,9 @@ int PMsr2Data::WriteOutput(const std::string &outfile, const std::vector<unsigne
|
||||
rawRunData = fDataHandler->GetRunData((*msrRunList)[0].GetRunName()->Data());
|
||||
}
|
||||
|
||||
if (rawRunData == nullptr)
|
||||
return -1;
|
||||
|
||||
switch (rawRunData->GetNoOfTemperatures()) {
|
||||
case 1:
|
||||
dataParamNames.push_back("dataT");
|
||||
|
@ -3244,7 +3244,7 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines)
|
||||
while ((iter != lines.end()) && !error) {
|
||||
// remove potential comment at the end of lines
|
||||
str = iter->fLine;
|
||||
Ssiz_t idx = str.Index("#");
|
||||
Ssiz_t idx = str.Index("(");
|
||||
if (idx != -1)
|
||||
str.Remove(idx);
|
||||
|
||||
@ -3274,23 +3274,29 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines)
|
||||
}
|
||||
|
||||
// get run name, beamline, institute, and file-format
|
||||
// the path/filename could potentially contain spaces! Hence the run name needs to be reconstructed from the parsing
|
||||
if (tokens->GetEntries() < 5) {
|
||||
error = true;
|
||||
} else {
|
||||
// run name
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(1));
|
||||
str = ostr->GetString();
|
||||
str = TString("");
|
||||
for (Int_t i=1; i<tokens->GetEntries()-3; i++) {
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(i));
|
||||
str += ostr->GetString();
|
||||
if (i<tokens->GetEntries()-4)
|
||||
str += TString(" ");
|
||||
}
|
||||
param.SetRunName(str);
|
||||
// beamline
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(2));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-3));
|
||||
str = ostr->GetString();
|
||||
param.SetBeamline(str);
|
||||
// institute
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(3));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-2));
|
||||
str = ostr->GetString();
|
||||
param.SetInstitute(str);
|
||||
// data file format
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(4));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-1));
|
||||
str = ostr->GetString();
|
||||
param.SetFileFormat(str);
|
||||
}
|
||||
|
@ -765,7 +765,7 @@ Bool_t PStartupHandler::WriteDefaultStartupFile(bool reset_startup_file)
|
||||
fout << " <!-- Color as RGB coded string -->" << std::endl;
|
||||
fout << " <color>0,0,0</color> <!-- kBlack -->" << std::endl;
|
||||
fout << " <color>255,0,0</color> <!-- kRed -->" << std::endl;
|
||||
fout << " <color>0,255,0</color> <!-- kGreen -->" << std::endl;
|
||||
fout << " <color>0,153,0</color> <!-- kGreen+2 -->" << std::endl;
|
||||
fout << " <color>0,0,255</color> <!-- kBlue -->" << std::endl;
|
||||
fout << " <color>255,0,255</color> <!-- kMagenta -->" << std::endl;
|
||||
fout << " <color>0,255,255</color> <!-- kCyan -->" << std::endl;
|
||||
|
@ -638,7 +638,7 @@ void PmuppGui::fileOpen()
|
||||
this,
|
||||
"muSR Parameter Files",
|
||||
"./",
|
||||
"db-files (*.db);; All Params (*.msr *.db *.dat);; Msr-Files (*.msr);; dat-Files (*.dat);; All (*)");
|
||||
"dat-files (*.dat);; db-Files (*.db);; All Params (*.msr *.db *.dat);; Msr-Files (*.msr);; All (*)");
|
||||
|
||||
if (list.count() == 0)
|
||||
return;
|
||||
|
@ -144,6 +144,8 @@ bool PAdminXMLParser::startElement()
|
||||
fKeyWord = eMusrviewShowOneToOne;
|
||||
} else if (qName == "enable_musrt0") {
|
||||
fKeyWord = eEnableMusrT0;
|
||||
} else if (qName == "ignore_theme_auto_detection") {
|
||||
fKeyWord = eIgnoreThemeAutoDetection;
|
||||
} else if (qName == "dark_theme_icons_menu") {
|
||||
fKeyWord = eDarkThemeIconsMenu;
|
||||
} else if (qName == "dark_theme_icons_toolbar") {
|
||||
@ -337,6 +339,13 @@ bool PAdminXMLParser::characters()
|
||||
flag = false;
|
||||
fAdmin->setEnableMusrT0Flag(flag);
|
||||
break;
|
||||
case eIgnoreThemeAutoDetection:
|
||||
if (str == "y")
|
||||
flag = true;
|
||||
else
|
||||
flag = false;
|
||||
fAdmin->setIgnoreThemeAutoDetection(flag);
|
||||
break;
|
||||
case eDarkThemeIconsMenu:
|
||||
if (str == "y")
|
||||
flag = true;
|
||||
@ -622,6 +631,7 @@ void PAdminXMLParser::dump()
|
||||
std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl;
|
||||
std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl;
|
||||
std::cout << "debug> enable_musrt0 : " << fAdmin->getEnableMusrT0Flag() << std::endl;
|
||||
std::cout << "debug> ignore_theme_auto_detection : " << fAdmin->getIgnoreThemeAutoDetection() << std::endl;
|
||||
std::cout << "debug> dark_theme_icons_menu : " << fAdmin->getDarkThemeIconsMenuFlag() << std::endl;
|
||||
std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl;
|
||||
std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl;
|
||||
@ -736,33 +746,6 @@ QString PAdminXMLParser::expandPath(const QString &str)
|
||||
*/
|
||||
PAdmin::PAdmin() : QObject()
|
||||
{
|
||||
fTimeout = 3600;
|
||||
|
||||
fFontName = QString("Courier"); // default font
|
||||
fFontSize = 11; // default font size
|
||||
|
||||
fPrefPathName = QString("");
|
||||
fExecPath = QString("");
|
||||
fDefaultSavePath = QString("");
|
||||
fTheoFuncPixmapPath = QString("");
|
||||
|
||||
fBeamline = QString("");
|
||||
fInstitute = QString("");
|
||||
fFileFormat = QString("");
|
||||
|
||||
fMusrviewShowFourier = false;
|
||||
fMusrviewShowAvg = false;
|
||||
|
||||
fTitleFromDataFile = false;
|
||||
fEnableMusrT0 = false;
|
||||
fLifetimeCorrection = true;
|
||||
fEstimateN0 = true;
|
||||
fYamlOut = false;
|
||||
fChisqPreRunBlock = false;
|
||||
|
||||
fEditWidth = 900;
|
||||
fEditHeight = 800;
|
||||
|
||||
fMsr2DataParam.runList = QString("");
|
||||
fMsr2DataParam.runListFileName = QString("");
|
||||
fMsr2DataParam.msrFileExtension = QString("");
|
||||
@ -1028,6 +1011,12 @@ int PAdmin::savePrefs(QString pref_fln)
|
||||
else
|
||||
data[i] = " <enable_musrt0>n</enable_musrt0>";
|
||||
}
|
||||
if (data[i].contains("<ignore_theme_auto_detection>")) {
|
||||
if (fIgnoreThemeAutoDetection)
|
||||
data[i] = " <ignore_theme_auto_detection>y</ignore_theme_auto_detection>";
|
||||
else
|
||||
data[i] = " <ignore_theme_auto_detection>n</ignore_theme_auto_detection>";
|
||||
}
|
||||
if (data[i].contains("<dark_theme_icons_menu>") && data[i].contains("</dark_theme_icons_menu>")) {
|
||||
if (fDarkThemeIconsMenu)
|
||||
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";
|
||||
|
@ -73,7 +73,7 @@ class PAdminXMLParser
|
||||
enum EAdminKeyWords {eEmpty, eTimeout, eKeepMinuit2Output, eDumpAscii, eDumpRoot,
|
||||
eTitleFromDataFile, eChisqPreRunBlock, eEstimateN0, eYamlOut,
|
||||
eMusrviewShowFourier, eMusrviewShowAvg, eMusrviewShowOneToOne, eEnableMusrT0,
|
||||
eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eEditW, eEditH,
|
||||
eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eIgnoreThemeAutoDetection, eEditW, eEditH,
|
||||
eFontName, eFontSize, eExecPath, eDefaultSavePath,
|
||||
eRecentFile, eBeamline, eInstitute, eFileFormat, eLifetimeCorrection,
|
||||
eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel,
|
||||
@ -131,6 +131,7 @@ class PAdmin : public QObject
|
||||
bool getEstimateN0Flag() { return fEstimateN0; }
|
||||
bool getYamlOutFlag() { return fYamlOut; }
|
||||
bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; }
|
||||
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection; }
|
||||
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; }
|
||||
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; }
|
||||
int getEditWidth() { return fEditWidth; }
|
||||
@ -160,6 +161,7 @@ class PAdmin : public QObject
|
||||
void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; }
|
||||
void setYamlOutFlag(const bool flag) { fYamlOut = flag; }
|
||||
void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; }
|
||||
void setIgnoreThemeAutoDetection(const bool flag) { fIgnoreThemeAutoDetection = flag; }
|
||||
void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; }
|
||||
void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; }
|
||||
void setEditWidth(const int width) { fEditWidth = width; }
|
||||
@ -186,38 +188,39 @@ class PAdmin : public QObject
|
||||
private:
|
||||
friend class PAdminXMLParser;
|
||||
|
||||
int fTimeout; ///< timeout in seconds
|
||||
int fTimeout{3600}; ///< timeout in seconds
|
||||
|
||||
QString fFontName; ///< default font name
|
||||
int fFontSize; ///< default font size
|
||||
QString fFontName{QString("Monospace")}; ///< default font name
|
||||
int fFontSize{11}; ///< default font size
|
||||
|
||||
QString fPrefPathName; ///< path-name of the musredit_startup.xml
|
||||
QString fExecPath; ///< system path to the musrfit executables
|
||||
QString fDefaultSavePath; ///< default path where the msr-file should be saved
|
||||
QString fTheoFuncPixmapPath; ///< path where the default pixmaps can be found
|
||||
QString fPrefPathName{QString("")}; ///< path-name of the musredit_startup.xml
|
||||
QString fExecPath{QString("")}; ///< system path to the musrfit executables
|
||||
QString fDefaultSavePath{QString("")}; ///< default path where the msr-file should be saved
|
||||
QString fTheoFuncPixmapPath{QString("")}; ///< path where the default pixmaps can be found
|
||||
|
||||
QVector<QString> fRecentFile; ///< keep vector of recent path-file names
|
||||
|
||||
bool fMusrviewShowFourier; ///< flag indicating if musrview should show at startup data (=false) or Fourier of data (=true).
|
||||
bool fMusrviewShowAvg; ///< flag indicating if musrview should show at startup averaged (=true) or original (=false) data/Fourier.
|
||||
bool fMusrviewShowOneToOne; ///< flag indicating if theory points are calculate only at the data points (=true) or a higher density theory points is calculated
|
||||
bool fKeepMinuit2Output; ///< flag indicating if the Minuit2 output shall be kept (default: no)
|
||||
bool fDumpAscii; ///< flag indicating if musrfit shall make an ascii-dump file (for debugging purposes, default: no).
|
||||
bool fDumpRoot; ///< flag indicating if musrfit shall make an root-dump file (for debugging purposes, default: no).
|
||||
bool fTitleFromDataFile; ///< flag indicating if the title should be extracted from the data file (default: yes).
|
||||
bool fChisqPreRunBlock; ///< flag indicating if musrfit shall write 'per run block' chisq to the msr-file (default: no).
|
||||
bool fEstimateN0; ///< flag indicating if musrfit shall estimate N0 for single histogram fits (default: yes).
|
||||
bool fYamlOut; ///< flag indicating if the MINUIT2.OUTPUT file should also be written as <msr-file>.yaml output. (default: no).
|
||||
bool fEnableMusrT0; ///< flag indicating if musrT0 shall be enabled at startup from within musredit (default: yes).
|
||||
bool fDarkThemeIconsMenu; ///< flag indicating if dark theme icons shall be used in the menu (default: no)
|
||||
bool fDarkThemeIconsToolbar; ///< flag indicating if dark theme icons shall be used in the toolbar (default: no)
|
||||
bool fMusrviewShowFourier{false}; ///< flag indicating if musrview should show at startup data (=false) or Fourier of data (=true).
|
||||
bool fMusrviewShowAvg{false}; ///< flag indicating if musrview should show at startup averaged (=true) or original (=false) data/Fourier.
|
||||
bool fMusrviewShowOneToOne{false}; ///< flag indicating if theory points are calculate only at the data points (=true) or a higher density theory points is calculated
|
||||
bool fKeepMinuit2Output{false}; ///< flag indicating if the Minuit2 output shall be kept (default: no)
|
||||
bool fDumpAscii{false}; ///< flag indicating if musrfit shall make an ascii-dump file (for debugging purposes, default: no).
|
||||
bool fDumpRoot{false}; ///< flag indicating if musrfit shall make an root-dump file (for debugging purposes, default: no).
|
||||
bool fTitleFromDataFile{true}; ///< flag indicating if the title should be extracted from the data file (default: yes).
|
||||
bool fChisqPreRunBlock{false}; ///< flag indicating if musrfit shall write 'per run block' chisq to the msr-file (default: no).
|
||||
bool fEstimateN0{true}; ///< flag indicating if musrfit shall estimate N0 for single histogram fits (default: yes).
|
||||
bool fYamlOut{false}; ///< flag indicating if the MINUIT2.OUTPUT file should also be written as <msr-file>.yaml output. (default: no).
|
||||
bool fEnableMusrT0{true}; ///< flag indicating if musrT0 shall be enabled at startup from within musredit (default: yes).
|
||||
bool fIgnoreThemeAutoDetection{false}; ///< flag indicating that the theme autodetection shall be ignored. (default: no)
|
||||
bool fDarkThemeIconsMenu{false}; ///< flag indicating if dark theme icons shall be used in the menu (default: no)
|
||||
bool fDarkThemeIconsToolbar{false}; ///< flag indicating if dark theme icons shall be used in the toolbar (default: no)
|
||||
int fEditWidth{900}; ///< startup edit width
|
||||
int fEditHeight{800}; ///< startup edit height
|
||||
|
||||
QString fBeamline; ///< name of the beamline. Used to generate default run header lines.
|
||||
QString fInstitute; ///< name of the institute. Used to generate default run header lines.
|
||||
QString fFileFormat; ///< default file format. Used to generate default run header lines.
|
||||
bool fLifetimeCorrection; ///< flag indicating if by default the lifetime-correction-flag in a single histo file shall be set.
|
||||
QString fBeamline{QString("")}; ///< name of the beamline. Used to generate default run header lines.
|
||||
QString fInstitute{QString("")}; ///< name of the institute. Used to generate default run header lines.
|
||||
QString fFileFormat{QString("")}; ///< default file format. Used to generate default run header lines.
|
||||
bool fLifetimeCorrection{true}; ///< flag indicating if by default the lifetime-correction-flag in a single histo file shall be set.
|
||||
|
||||
mutable PMsr2DataParam fMsr2DataParam; ///< keeps msr2data default parameter flags
|
||||
|
||||
|
@ -59,6 +59,12 @@ PPrefsDialog::PPrefsDialog(PAdmin *admin) : fAdmin(admin)
|
||||
fDarkThemeIconsToolbar_checkBox->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
|
||||
if (fAdmin->getIgnoreThemeAutoDetection()) {
|
||||
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Checked);
|
||||
} else {
|
||||
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
|
||||
fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag());
|
||||
|
||||
if (fAdmin->getDumpAsciiFlag() && !fAdmin->getDumpRootFlag()) {
|
||||
|
@ -55,6 +55,7 @@ class PPrefsDialog : public QDialog, private Ui::PPrefsDialog
|
||||
bool getKeepRunPerBlockChisqFlag() { return fPerRunBlockChisq_checkBox->isChecked(); }
|
||||
bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); }
|
||||
bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); }
|
||||
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection_checkBox->isChecked(); }
|
||||
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); }
|
||||
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); }
|
||||
bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); }
|
||||
|
@ -88,11 +88,11 @@
|
||||
PTextEdit::PTextEdit( QWidget *parent )
|
||||
: QMainWindow( parent )
|
||||
{
|
||||
bool gotTheme = getTheme();
|
||||
|
||||
// reads and manages the conents of the xml-startup (musredit_startup.xml) file
|
||||
fAdmin = std::make_unique<PAdmin>();
|
||||
|
||||
bool gotTheme = getTheme();
|
||||
|
||||
// set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the
|
||||
// one from the xml startup file.
|
||||
if (gotTheme) {
|
||||
@ -134,7 +134,6 @@ PTextEdit::PTextEdit( QWidget *parent )
|
||||
|
||||
textFamily(fAdmin->getFontName());
|
||||
textSize(QString("%1").arg(fAdmin->getFontSize()));
|
||||
fFontChanging = false;
|
||||
|
||||
QString iconName("");
|
||||
if (fDarkMenuIcon)
|
||||
@ -1419,18 +1418,18 @@ void PTextEdit::fileSavePrefs()
|
||||
QString msg("");
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("Which Preferences do you want to open?");
|
||||
msgBox.addButton("Default", QMessageBox::AcceptRole);
|
||||
msgBox.addButton("Custom", QMessageBox::AcceptRole);
|
||||
QAbstractButton *def = msgBox.addButton("Default", QMessageBox::AcceptRole);
|
||||
QAbstractButton *cust = msgBox.addButton("Custom", QMessageBox::AcceptRole);
|
||||
msgBox.setStandardButtons(QMessageBox::Cancel);
|
||||
int result = msgBox.exec();
|
||||
if (result == QMessageBox::Cancel) {
|
||||
return;
|
||||
} else if (result == 0) { // default dir
|
||||
} else if (msgBox.clickedButton() == def) { // default dir
|
||||
fln = fAdmin->getDefaultPrefPathName();
|
||||
msg = QString("Current Default Preferences Path-Name:\n") + fln;
|
||||
if (QMessageBox::information(this, "Info", msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Cancel)
|
||||
return;
|
||||
} else if (result == 1) { // custom dir
|
||||
} else if (msgBox.clickedButton() == cust) { // custom dir
|
||||
fln = QFileDialog::getSaveFileName( this,
|
||||
tr( "Save Prefs As" ), "musredit_startup.xml",
|
||||
tr( "xml-Files (*.xml);;All Files (*)" ) );
|
||||
@ -1967,7 +1966,7 @@ void PTextEdit::editUncomment()
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Chances the font.
|
||||
* <p>Changes the font.
|
||||
*
|
||||
* \param f font name
|
||||
*/
|
||||
@ -1984,7 +1983,7 @@ void PTextEdit::textFamily( const QString &f )
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Chances the font size.
|
||||
* <p>Changes the font size.
|
||||
*
|
||||
* \param p font size in points.
|
||||
*/
|
||||
@ -2213,6 +2212,7 @@ void PTextEdit::musrMsr2Data()
|
||||
fMsr2DataParam->keepMinuit2Output = fAdmin->getKeepMinuit2OutputFlag();
|
||||
fMsr2DataParam->titleFromDataFile = fAdmin->getTitleFromDataFileFlag();
|
||||
fMsr2DataParam->estimateN0 = fAdmin->getEstimateN0Flag();
|
||||
fMsr2DataParam->yamlOut = fAdmin->getYamlOutFlag();
|
||||
fMsr2DataParam->perRunBlockChisq = fAdmin->getChisqPerRunBlockFlag();
|
||||
|
||||
PMsr2DataDialog *dlg = new PMsr2DataDialog(fMsr2DataParam, fAdmin->getHelpUrl("msr2data"));
|
||||
@ -2235,6 +2235,7 @@ void PTextEdit::musrMsr2Data()
|
||||
fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output);
|
||||
fAdmin->setTitleFromDataFileFlag(fMsr2DataParam->titleFromDataFile);
|
||||
fAdmin->setEstimateN0Flag(fMsr2DataParam->estimateN0);
|
||||
fAdmin->setYamlOutFlag(fMsr2DataParam->yamlOut);
|
||||
fAdmin->setChisqPerRunBlockFlag(fMsr2DataParam->perRunBlockChisq);
|
||||
|
||||
// analyze parameters
|
||||
@ -2735,6 +2736,7 @@ void PTextEdit::musrPrefs()
|
||||
}
|
||||
|
||||
if (dlg->exec() == QDialog::Accepted) {
|
||||
fAdmin->setIgnoreThemeAutoDetection(dlg->getIgnoreThemeAutoDetection());
|
||||
fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag());
|
||||
fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag());
|
||||
fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag());
|
||||
@ -3358,6 +3360,9 @@ void PTextEdit::jumpToBlock(int idx)
|
||||
*/
|
||||
bool PTextEdit::getTheme()
|
||||
{
|
||||
if (fAdmin->getIgnoreThemeAutoDetection())
|
||||
return false;
|
||||
|
||||
fDarkMenuIcon = false; // true if theme is dark
|
||||
fDarkToolBarIcon = false; // needed for ubuntu dark since there the menu icons are dark, however the toolbar icons are plain!
|
||||
|
||||
@ -3389,10 +3394,9 @@ bool PTextEdit::getTheme()
|
||||
|
||||
if (str.contains("dark", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = true;
|
||||
if (str.contains("ubuntu", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = false;
|
||||
fDarkToolBarIcon = false;
|
||||
} else if (str.contains("xfce", Qt::CaseInsensitive)) {
|
||||
if (str.contains("ubuntu", Qt::CaseInsensitive) ||
|
||||
str.contains("xfce", Qt::CaseInsensitive) ||
|
||||
str.contains("mx", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = false;
|
||||
fDarkToolBarIcon = false;
|
||||
} else {
|
||||
|
@ -171,15 +171,15 @@ private slots:
|
||||
void jumpToBlock(int idx);
|
||||
|
||||
private:
|
||||
bool fDarkMenuIcon; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs
|
||||
bool fDarkToolBarIcon; ///< flag indicating if a dark or plain icon shall be used in the toolbar
|
||||
bool fDarkMenuIcon{false}; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs
|
||||
bool fDarkToolBarIcon{false}; ///< flag indicating if a dark or plain icon shall be used in the toolbar
|
||||
std::unique_ptr<PAdmin> fAdmin; ///< pointer to the xml-startup file informations. Needed for different purposes like default working- and executable directories etc.
|
||||
std::unique_ptr<QFileSystemWatcher> fFileSystemWatcher; ///< checks if msr-files are changing on the disk while being open in musredit.
|
||||
bool fFileSystemWatcherActive; ///< flag to enable/disable the file system watcher
|
||||
QTimer fFileSystemWatcherTimeout; ///< timer used to re-enable file system watcher. Needed to delay the re-enabling
|
||||
QString fLastDirInUse; ///< string holding the path from where the last file was loaded.
|
||||
QString fLastDirInUse{QString("")}; ///< string holding the path from where the last file was loaded.
|
||||
QStringList fMusrFTPrevCmd;
|
||||
int fEditW, fEditH;
|
||||
int fEditW{900}, fEditH{800};
|
||||
|
||||
QMap<QString, QAction*> fActions;
|
||||
std::unique_ptr<QAction> fMusrT0Action;
|
||||
@ -189,7 +189,7 @@ private:
|
||||
|
||||
std::unique_ptr<QComboBox> fComboFont; ///< combo box for the font selector
|
||||
std::unique_ptr<QComboBox> fComboSize; ///< combo box for the font size
|
||||
bool fFontChanging; ///< flag needed to prevent some textChanged feature to occure when only the font changed
|
||||
bool fFontChanging{false}; ///< flag needed to prevent some textChanged feature to occure when only the font changed
|
||||
std::unique_ptr<QComboBox> fJumpToBlock; ///< combo box used to jump to the msr-file blocks
|
||||
|
||||
std::unique_ptr<QTabWidget> fTabWidget; ///< tab widget in which the text editor(s) are placed
|
||||
|
@ -9,8 +9,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>452</width>
|
||||
<height>180</height>
|
||||
<width>460</width>
|
||||
<height>200</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -20,20 +20,13 @@
|
||||
<iconset>
|
||||
<normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="layoutWidget_0">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>5</y>
|
||||
<width>451</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="fTabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="fGeneral_tab">
|
||||
<attribute name="title">
|
||||
@ -43,7 +36,7 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>70</y>
|
||||
<y>80</y>
|
||||
<width>421</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
@ -52,13 +45,13 @@
|
||||
<string>Change Default Search Paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>12</x>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>415</width>
|
||||
<height>62</height>
|
||||
<width>416</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
@ -87,6 +80,13 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fIgnoreThemeAutoDetection_checkBox">
|
||||
<property name="text">
|
||||
<string>Ignore Theme Auto Detect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
|
||||
<property name="text">
|
||||
@ -305,7 +305,8 @@
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>fTabWidget</tabstop>
|
||||
|
@ -19,6 +19,7 @@
|
||||
<musrview_show_avg>n</musrview_show_avg>
|
||||
<musrview_show_one_to_one>n</musrview_show_one_to_one>
|
||||
<enable_musrt0>y</enable_musrt0>
|
||||
<ignore_theme_auto_detection>n</ignore_theme_auto_detection>
|
||||
<dark_theme_icons_menu>n</dark_theme_icons_menu>
|
||||
<dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>
|
||||
<edit_w>900</edit_w>
|
||||
|
@ -637,7 +637,7 @@ void PmuppGui::fileOpen()
|
||||
this,
|
||||
"muSR Parameter Files",
|
||||
"./",
|
||||
"db-files (*.db);; All Params (*.msr *.db *.dat);; Msr-Files (*.msr);; dat-Files (*.dat);; All (*)");
|
||||
"dat-files (*.dat);; db-Files (*.db);; All Params (*.msr *.db *.dat);; Msr-Files (*.msr);; All (*)");
|
||||
|
||||
if (list.count() == 0)
|
||||
return;
|
||||
|
@ -150,6 +150,8 @@ bool PAdminXMLParser::startElement()
|
||||
fKeyWord = eMusrviewShowOneToOne;
|
||||
} else if (qName == "enable_musrt0") {
|
||||
fKeyWord = eEnableMusrT0;
|
||||
} else if (qName == "ignore_theme_auto_detection") {
|
||||
fKeyWord = eIgnoreThemeAutoDetection;
|
||||
} else if (qName == "dark_theme_icons_menu") {
|
||||
fKeyWord = eDarkThemeIconsMenu;
|
||||
} else if (qName == "dark_theme_icons_toolbar") {
|
||||
@ -158,11 +160,11 @@ bool PAdminXMLParser::startElement()
|
||||
fKeyWord = eEditW;
|
||||
} else if (qName == "edit_h") {
|
||||
fKeyWord = eEditH;
|
||||
} else if (qName =="keep_minuit2_output") {
|
||||
} else if (qName == "keep_minuit2_output") {
|
||||
fKeyWord = eKeepMinuit2Output;
|
||||
} else if (qName == "dump_ascii") {
|
||||
fKeyWord = eDumpAscii;
|
||||
} else if (qName =="dump_root") {
|
||||
} else if (qName == "dump_root") {
|
||||
fKeyWord = eDumpRoot;
|
||||
} else if (qName == "estimate_n0") {
|
||||
fKeyWord = eEstimateN0;
|
||||
@ -281,7 +283,6 @@ bool PAdminXMLParser::endElement()
|
||||
bool PAdminXMLParser::characters()
|
||||
{
|
||||
QString str = fXml.text().toString();
|
||||
|
||||
if (str.isEmpty())
|
||||
return true;
|
||||
|
||||
@ -344,6 +345,13 @@ bool PAdminXMLParser::characters()
|
||||
flag = false;
|
||||
fAdmin->setEnableMusrT0Flag(flag);
|
||||
break;
|
||||
case eIgnoreThemeAutoDetection:
|
||||
if (str == "y")
|
||||
flag = true;
|
||||
else
|
||||
flag = false;
|
||||
fAdmin->setIgnoreThemeAutoDetection(flag);
|
||||
break;
|
||||
case eDarkThemeIconsMenu:
|
||||
if (str == "y")
|
||||
flag = true;
|
||||
@ -405,6 +413,7 @@ bool PAdminXMLParser::characters()
|
||||
flag = false;
|
||||
fAdmin->fMsr2DataParam.yamlOut = flag;
|
||||
fAdmin->setYamlOutFlag(flag);
|
||||
break;
|
||||
case eChisqPreRunBlock:
|
||||
if (str == "y")
|
||||
flag = true;
|
||||
@ -628,6 +637,7 @@ void PAdminXMLParser::dump()
|
||||
std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl;
|
||||
std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl;
|
||||
std::cout << "debug> enable_musrt0 : " << fAdmin->getEnableMusrT0Flag() << std::endl;
|
||||
std::cout << "debug> ignore_theme_auto_detection : " << fAdmin->getIgnoreThemeAutoDetection() << std::endl;
|
||||
std::cout << "debug> dark_theme_icons_menu : " << fAdmin->getDarkThemeIconsMenuFlag() << std::endl;
|
||||
std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl;
|
||||
std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl;
|
||||
@ -742,30 +752,6 @@ QString PAdminXMLParser::expandPath(const QString &str)
|
||||
*/
|
||||
PAdmin::PAdmin() : QObject()
|
||||
{
|
||||
fTimeout = 3600;
|
||||
|
||||
fFontName = QString("Courier"); // default font
|
||||
fFontSize = 11; // default font size
|
||||
|
||||
fPrefPathName = QString("");
|
||||
fExecPath = QString("");
|
||||
fDefaultSavePath = QString("");
|
||||
fTheoFuncPixmapPath = QString("");
|
||||
|
||||
fBeamline = QString("");
|
||||
fInstitute = QString("");
|
||||
fFileFormat = QString("");
|
||||
|
||||
fMusrviewShowFourier = false;
|
||||
fMusrviewShowAvg = false;
|
||||
|
||||
fTitleFromDataFile = false;
|
||||
fEnableMusrT0 = false;
|
||||
fLifetimeCorrection = true;
|
||||
fEstimateN0 = true;
|
||||
fYamlOut = false;
|
||||
fChisqPreRunBlock = false;
|
||||
|
||||
fMsr2DataParam.runList = QString("");
|
||||
fMsr2DataParam.runListFileName = QString("");
|
||||
fMsr2DataParam.msrFileExtension = QString("");
|
||||
@ -1031,6 +1017,12 @@ int PAdmin::savePrefs(QString pref_fln)
|
||||
else
|
||||
data[i] = " <enable_musrt0>n</enable_musrt0>";
|
||||
}
|
||||
if (data[i].contains("<ignore_theme_auto_detection>")) {
|
||||
if (fIgnoreThemeAutoDetection)
|
||||
data[i] = " <ignore_theme_auto_detection>y</ignore_theme_auto_detection>";
|
||||
else
|
||||
data[i] = " <ignore_theme_auto_detection>n</ignore_theme_auto_detection>";
|
||||
}
|
||||
if (data[i].contains("<dark_theme_icons_menu>") && data[i].contains("</dark_theme_icons_menu>")) {
|
||||
if (fDarkThemeIconsMenu)
|
||||
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";
|
||||
|
@ -73,7 +73,7 @@ class PAdminXMLParser
|
||||
enum EAdminKeyWords {eEmpty, eTimeout, eKeepMinuit2Output, eDumpAscii, eDumpRoot,
|
||||
eTitleFromDataFile, eChisqPreRunBlock, eEstimateN0, eYamlOut,
|
||||
eMusrviewShowFourier, eMusrviewShowAvg, eMusrviewShowOneToOne, eEnableMusrT0,
|
||||
eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eEditW, eEditH,
|
||||
eIgnoreThemeAutoDetection, eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eEditW, eEditH,
|
||||
eFontName, eFontSize, eExecPath, eDefaultSavePath,
|
||||
eRecentFile, eBeamline, eInstitute, eFileFormat, eLifetimeCorrection,
|
||||
eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel,
|
||||
@ -131,6 +131,7 @@ class PAdmin : public QObject
|
||||
bool getDumpRootFlag() { return fDumpRoot; }
|
||||
bool getEstimateN0Flag() { return fEstimateN0; }
|
||||
bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; }
|
||||
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection; }
|
||||
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; }
|
||||
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; }
|
||||
int getEditWidth() { return fEditWidth; }
|
||||
@ -160,6 +161,7 @@ class PAdmin : public QObject
|
||||
void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; }
|
||||
void setYamlOutFlag(const bool flag) { fYamlOut = flag; }
|
||||
void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; }
|
||||
void setIgnoreThemeAutoDetection(const bool flag) { fIgnoreThemeAutoDetection = flag; }
|
||||
void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; }
|
||||
void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; }
|
||||
void setEditWidth(const int width) { fEditWidth = width; }
|
||||
@ -186,31 +188,32 @@ class PAdmin : public QObject
|
||||
private:
|
||||
friend class PAdminXMLParser;
|
||||
|
||||
int fTimeout; ///< timeout in seconds
|
||||
int fTimeout{3600}; ///< timeout in seconds
|
||||
|
||||
QString fFontName; ///< default font name
|
||||
int fFontSize; ///< default font size
|
||||
QString fFontName{QString("Monospace")}; ///< default font name
|
||||
int fFontSize{11}; ///< default font size
|
||||
|
||||
QString fPrefPathName; ///< path-name of the musredit_startup.xml
|
||||
QString fExecPath; ///< system path to the musrfit executables
|
||||
QString fDefaultSavePath; ///< default path where the msr-file should be saved
|
||||
QString fTheoFuncPixmapPath; ///< path where the default pixmaps can be found
|
||||
QString fPrefPathName{QString("")}; ///< path-name of the musredit_startup.xml
|
||||
QString fExecPath{QString("")}; ///< system path to the musrfit executables
|
||||
QString fDefaultSavePath{QString("")}; ///< default path where the msr-file should be saved
|
||||
QString fTheoFuncPixmapPath{QString("")}; ///< path where the default pixmaps can be found
|
||||
|
||||
QVector<QString> fRecentFile; ///< keep vector of recent path-file names
|
||||
|
||||
bool fMusrviewShowFourier; ///< flag indicating if musrview should show at startup data (=false) or Fourier of data (=true).
|
||||
bool fMusrviewShowAvg; ///< flag indicating if musrview should show at startup averaged (=true) or original (=false) data/Fourier.
|
||||
bool fMusrviewShowOneToOne; ///< flag indicating if theory points are calculate only at the data points (=true) or a higher density theory points is calculated
|
||||
bool fKeepMinuit2Output; ///< flag indicating if the Minuit2 output shall be kept (default: no)
|
||||
bool fDumpAscii; ///< flag indicating if musrfit shall make an ascii-dump file (for debugging purposes, default: no).
|
||||
bool fDumpRoot; ///< flag indicating if musrfit shall make an root-dump file (for debugging purposes, default: no).
|
||||
bool fTitleFromDataFile; ///< flag indicating if the title should be extracted from the data file (default: yes).
|
||||
bool fChisqPreRunBlock; ///< flag indicating if musrfit shall write 'per run block' chisq to the msr-file (default: no).
|
||||
bool fEstimateN0; ///< flag indicating if musrfit shall estimate N0 for single histogram fits (default: yes).
|
||||
bool fYamlOut; ///< flag indicating if the MINUIT2.OUTPUT file should also be written as <msr-file>.yaml output. (default: no).
|
||||
bool fEnableMusrT0; ///< flag indicating if musrT0 shall be enabled at startup from within musredit (default: yes).
|
||||
bool fDarkThemeIconsMenu; ///< flag indicating if dark theme icons shall be used in the menu (default: no)
|
||||
bool fDarkThemeIconsToolbar; ///< flag indicating if dark theme icons shall be used in the toolbar (default: no)
|
||||
bool fMusrviewShowFourier{false}; ///< flag indicating if musrview should show at startup data (=false) or Fourier of data (=true).
|
||||
bool fMusrviewShowAvg{false}; ///< flag indicating if musrview should show at startup averaged (=true) or original (=false) data/Fourier.
|
||||
bool fMusrviewShowOneToOne{false}; ///< flag indicating if theory points are calculate only at the data points (=true) or a higher density theory points is calculated
|
||||
bool fKeepMinuit2Output{false}; ///< flag indicating if the Minuit2 output shall be kept (default: no)
|
||||
bool fDumpAscii{false}; ///< flag indicating if musrfit shall make an ascii-dump file (for debugging purposes, default: no).
|
||||
bool fDumpRoot{false}; ///< flag indicating if musrfit shall make an root-dump file (for debugging purposes, default: no).
|
||||
bool fTitleFromDataFile{true}; ///< flag indicating if the title should be extracted from the data file (default: yes).
|
||||
bool fChisqPreRunBlock{false}; ///< flag indicating if musrfit shall write 'per run block' chisq to the msr-file (default: no).
|
||||
bool fEstimateN0{true}; ///< flag indicating if musrfit shall estimate N0 for single histogram fits (default: yes).
|
||||
bool fYamlOut{false}; ///< flag indicating if the MINUIT2.OUTPUT file should also be written as <msr-file>.yaml output. (default: no).
|
||||
bool fEnableMusrT0{true}; ///< flag indicating if musrT0 shall be enabled at startup from within musredit (default: yes).
|
||||
bool fIgnoreThemeAutoDetection{false}; ///< flag indicating that the theme autodetection shall be ignored. (default: no)
|
||||
bool fDarkThemeIconsMenu{false}; ///< flag indicating if dark theme icons shall be used in the menu (default: no)
|
||||
bool fDarkThemeIconsToolbar{false}; ///< flag indicating if dark theme icons shall be used in the toolbar (default: no)
|
||||
int fEditWidth{900}; ///< startup edit width
|
||||
int fEditHeight{800}; ///< startup edit height
|
||||
|
||||
|
@ -59,6 +59,12 @@ PPrefsDialog::PPrefsDialog(PAdmin *admin) : fAdmin(admin)
|
||||
fDarkThemeIconsToolbar_checkBox->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
|
||||
if (fAdmin->getIgnoreThemeAutoDetection()) {
|
||||
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Checked);
|
||||
} else {
|
||||
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Unchecked);
|
||||
}
|
||||
|
||||
fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag());
|
||||
|
||||
if (fAdmin->getDumpAsciiFlag() && !fAdmin->getDumpRootFlag()) {
|
||||
|
@ -55,6 +55,7 @@ class PPrefsDialog : public QDialog, private Ui::PPrefsDialog
|
||||
bool getKeepRunPerBlockChisqFlag() { return fPerRunBlockChisq_checkBox->isChecked(); }
|
||||
bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); }
|
||||
bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); }
|
||||
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection_checkBox->isChecked(); }
|
||||
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); }
|
||||
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); }
|
||||
bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); }
|
||||
|
@ -88,11 +88,11 @@
|
||||
PTextEdit::PTextEdit( QWidget *parent )
|
||||
: QMainWindow( parent )
|
||||
{
|
||||
bool gotTheme = getTheme();
|
||||
|
||||
// reads and manages the conents of the xml-startup (musredit_startup.xml) file
|
||||
fAdmin = std::make_unique<PAdmin>();
|
||||
|
||||
bool gotTheme = getTheme();
|
||||
|
||||
// set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the
|
||||
// one from the xml startup file.
|
||||
if (gotTheme) {
|
||||
@ -117,8 +117,6 @@ PTextEdit::PTextEdit( QWidget *parent )
|
||||
}
|
||||
|
||||
// initialize stuff
|
||||
//as35 fMusrT0Action = nullptr;
|
||||
|
||||
fMsr2DataParam = nullptr;
|
||||
fFindReplaceData = nullptr;
|
||||
|
||||
@ -136,7 +134,6 @@ PTextEdit::PTextEdit( QWidget *parent )
|
||||
|
||||
textFamily(fAdmin->getFontName());
|
||||
textSize(QString("%1").arg(fAdmin->getFontSize()));
|
||||
fFontChanging = false;
|
||||
|
||||
QString iconName("");
|
||||
if (fDarkMenuIcon)
|
||||
@ -165,12 +162,6 @@ PTextEdit::PTextEdit( QWidget *parent )
|
||||
*/
|
||||
void PTextEdit::aboutToQuit()
|
||||
{
|
||||
/* //as35
|
||||
if (fMusrT0Action) {
|
||||
delete fMusrT0Action;
|
||||
fMusrT0Action = nullptr;
|
||||
}
|
||||
*/ //as35
|
||||
if (fMsr2DataParam) {
|
||||
delete fMsr2DataParam;
|
||||
fMsr2DataParam = nullptr;
|
||||
@ -1193,7 +1184,6 @@ void PTextEdit::fileNew()
|
||||
PSubTextEdit *edit = new PSubTextEdit( fAdmin.get() );
|
||||
edit->setFont(QFont(fAdmin->getFontName(), fAdmin->getFontSize()));
|
||||
edit->setCenterOnScroll(true);
|
||||
|
||||
doConnections( edit );
|
||||
fTabWidget->addTab( edit, tr( "noname" ) );
|
||||
fTabWidget->setCurrentIndex(fTabWidget->indexOf(edit));
|
||||
@ -1427,18 +1417,18 @@ void PTextEdit::fileSavePrefs()
|
||||
QString msg("");
|
||||
QMessageBox msgBox;
|
||||
msgBox.setText("Which Preferences do you want to open?");
|
||||
msgBox.addButton("Default", QMessageBox::AcceptRole);
|
||||
msgBox.addButton("Custom", QMessageBox::AcceptRole);
|
||||
QAbstractButton *def = msgBox.addButton("Default", QMessageBox::AcceptRole);
|
||||
QAbstractButton *cust = msgBox.addButton("Custom", QMessageBox::AcceptRole);
|
||||
msgBox.setStandardButtons(QMessageBox::Cancel);
|
||||
int result = msgBox.exec();
|
||||
if (result == QMessageBox::Cancel) {
|
||||
return;
|
||||
} else if (result == 0) { // default dir
|
||||
} else if (msgBox.clickedButton() == def) { // default dir
|
||||
fln = fAdmin->getDefaultPrefPathName();
|
||||
msg = QString("Current Default Preferences Path-Name:\n") + fln;
|
||||
if (QMessageBox::information(this, "INFO", msg, QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Cancel)
|
||||
return;
|
||||
} else if (result == 1) { // custom dir
|
||||
} else if (msgBox.clickedButton() == cust) { // custom dir
|
||||
fln = QFileDialog::getSaveFileName( this,
|
||||
tr( "Save Prefs As" ), "musredit_startup.xml",
|
||||
tr( "xml-Files (*.xml);;All Files (*)" ) );
|
||||
@ -2732,6 +2722,7 @@ void PTextEdit::musrPrefs()
|
||||
}
|
||||
|
||||
if (dlg->exec() == QDialog::Accepted) {
|
||||
fAdmin->setIgnoreThemeAutoDetection(dlg->getIgnoreThemeAutoDetection());
|
||||
fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag());
|
||||
fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag());
|
||||
fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag());
|
||||
@ -3346,6 +3337,9 @@ void PTextEdit::jumpToBlock(int idx)
|
||||
*/
|
||||
bool PTextEdit::getTheme()
|
||||
{
|
||||
if (fAdmin->getIgnoreThemeAutoDetection())
|
||||
return false;
|
||||
|
||||
fDarkMenuIcon = false; // true if theme is dark
|
||||
fDarkToolBarIcon = false; // needed for ubuntu dark since there the menu icons are dark, however the toolbar icons are plain!
|
||||
|
||||
@ -3377,10 +3371,9 @@ bool PTextEdit::getTheme()
|
||||
|
||||
if (str.contains("dark", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = true;
|
||||
if (str.contains("ubuntu", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = false;
|
||||
fDarkToolBarIcon = false;
|
||||
} else if (str.contains("xfce", Qt::CaseInsensitive)) {
|
||||
if (str.contains("ubuntu", Qt::CaseInsensitive) ||
|
||||
str.contains("xfce", Qt::CaseInsensitive) ||
|
||||
str.contains("mx", Qt::CaseInsensitive)) {
|
||||
fDarkMenuIcon = false;
|
||||
fDarkToolBarIcon = false;
|
||||
} else {
|
||||
|
@ -30,6 +30,8 @@
|
||||
#ifndef _PTEXTEDIT_H_
|
||||
#define _PTEXTEDIT_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <QAction>
|
||||
#include <QMainWindow>
|
||||
#include <QString>
|
||||
@ -46,8 +48,6 @@
|
||||
|
||||
#include <QtDebug>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "PAdmin.h"
|
||||
#include "musredit.h"
|
||||
|
||||
@ -171,15 +171,15 @@ private slots:
|
||||
void jumpToBlock(int idx);
|
||||
|
||||
private:
|
||||
bool fDarkMenuIcon; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs
|
||||
bool fDarkToolBarIcon; ///< flag indicating if a dark or plain icon shall be used in the toolbar
|
||||
bool fDarkMenuIcon{false}; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs
|
||||
bool fDarkToolBarIcon{false}; ///< flag indicating if a dark or plain icon shall be used in the toolbar
|
||||
std::unique_ptr<PAdmin> fAdmin; ///< pointer to the xml-startup file informations. Needed for different purposes like default working- and executable directories etc.
|
||||
std::unique_ptr<QFileSystemWatcher> fFileSystemWatcher; ///< checks if msr-files are changing on the disk while being open in musredit.
|
||||
bool fFileSystemWatcherActive; ///< flag to enable/disable the file system watcher
|
||||
QTimer fFileSystemWatcherTimeout; ///< timer used to re-enable file system watcher. Needed to delay the re-enabling
|
||||
QString fLastDirInUse; ///< string holding the path from where the last file was loaded.
|
||||
QString fLastDirInUse{QString("")}; ///< string holding the path from where the last file was loaded.
|
||||
QStringList fMusrFTPrevCmd;
|
||||
int fEditW, fEditH;
|
||||
int fEditW{900}, fEditH{800};
|
||||
|
||||
QMap<QString, QAction*> fActions;
|
||||
std::unique_ptr<QAction> fMusrT0Action;
|
||||
@ -189,7 +189,7 @@ private:
|
||||
|
||||
std::unique_ptr<QComboBox> fComboFont; ///< combo box for the font selector
|
||||
std::unique_ptr<QComboBox> fComboSize; ///< combo box for the font size
|
||||
bool fFontChanging; ///< flag needed to prevent some textChanged feature to occure when only the font changed
|
||||
bool fFontChanging{false}; ///< flag needed to prevent some textChanged feature to occure when only the font changed
|
||||
std::unique_ptr<QComboBox> fJumpToBlock; ///< combo box used to jump to the msr-file blocks
|
||||
|
||||
std::unique_ptr<QTabWidget> fTabWidget; ///< tab widget in which the text editor(s) are placed
|
||||
|
@ -9,8 +9,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>452</width>
|
||||
<height>180</height>
|
||||
<width>460</width>
|
||||
<height>200</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -20,20 +20,13 @@
|
||||
<iconset>
|
||||
<normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="layoutWidget_0">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>5</y>
|
||||
<width>451</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="fTabWidget">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="fGeneral_tab">
|
||||
<attribute name="title">
|
||||
@ -43,7 +36,7 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>70</y>
|
||||
<y>80</y>
|
||||
<width>421</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
@ -52,13 +45,13 @@
|
||||
<string>Change Default Search Paths</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<widget class="QWidget" name="">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>12</x>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>415</width>
|
||||
<height>62</height>
|
||||
<width>416</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
@ -87,6 +80,13 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fIgnoreThemeAutoDetection_checkBox">
|
||||
<property name="text">
|
||||
<string>Ignore Theme Auto Detect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
|
||||
<property name="text">
|
||||
@ -154,7 +154,7 @@
|
||||
<rect>
|
||||
<x>170</x>
|
||||
<y>10</y>
|
||||
<width>171</width>
|
||||
<width>161</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -167,7 +167,7 @@
|
||||
<rect>
|
||||
<x>170</x>
|
||||
<y>35</y>
|
||||
<width>241</width>
|
||||
<width>181</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -180,7 +180,7 @@
|
||||
<rect>
|
||||
<x>170</x>
|
||||
<y>60</y>
|
||||
<width>101</width>
|
||||
<width>171</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -191,7 +191,7 @@
|
||||
<widget class="QCheckBox" name="fYamlOut_checkBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>360</x>
|
||||
<x>350</x>
|
||||
<y>10</y>
|
||||
<width>85</width>
|
||||
<height>21</height>
|
||||
@ -305,7 +305,8 @@
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>fTabWidget</tabstop>
|
||||
|
@ -19,6 +19,7 @@
|
||||
<musrview_show_avg>n</musrview_show_avg>
|
||||
<musrview_show_one_to_one>n</musrview_show_one_to_one>
|
||||
<enable_musrt0>y</enable_musrt0>
|
||||
<ignore_theme_auto_detection>n</ignore_theme_auto_detection>
|
||||
<dark_theme_icons_menu>n</dark_theme_icons_menu>
|
||||
<dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>
|
||||
<edit_w>900</edit_w>
|
||||
|
Reference in New Issue
Block a user