make the theme handling in musredit more flexible. At the same time adopted some part to more modern c++.

This commit is contained in:
suter_a 2024-12-11 09:25:28 +01:00
parent 458913ca31
commit 9f8f89db6d
16 changed files with 716 additions and 714 deletions

View File

@ -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,17 +1011,23 @@ 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>";
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";
else
data[i] = " <dark_theme_icons_menu>n</dark_theme_icons_menu>";
data[i] = " <dark_theme_icons_menu>n</dark_theme_icons_menu>";
}
if (data[i].contains("<dark_theme_icons_toolbar>") && data[i].contains("</dark_theme_icons_toolbar>")) {
if (fDarkThemeIconsToolbar)
data[i] = " <dark_theme_icons_toolbar>y</dark_theme_icons_toolbar>";
data[i] = " <dark_theme_icons_toolbar>y</dark_theme_icons_toolbar>";
else
data[i] = " <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>";
data[i] = " <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>";
}
if (data[i].contains("<font_name>") && data[i].contains("</font_name>")) {
data[i] = QString(" <font_name>%1</font_name>").arg(fFontName);

View File

@ -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

View File

@ -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()) {

View File

@ -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(); }

View File

@ -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)
@ -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 {

View File

@ -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

View File

@ -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,292 +20,293 @@
<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="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="fGeneral_tab">
<attribute name="title">
<string>general</string>
</attribute>
<widget class="QPushButton" name="fDefaultPath_pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>421</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Change Default Search Paths</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="fGeneral_tab">
<attribute name="title">
<string>general</string>
</attribute>
<widget class="QPushButton" name="fDefaultPath_pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>421</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Change Default Search Paths</string>
</property>
</widget>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>416</width>
<height>61</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="fTimeout_lineEdit"/>
</item>
<item>
<widget class="QLabel" name="fTimeout_label">
<property name="text">
<string>timeout</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>38</width>
<height>30</height>
</size>
</property>
</spacer>
</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">
<string>Dark Theme Icons Menu</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="fDarkThemeIconsToolbar_checkBox">
<property name="text">
<string>Dark Theme Icons Toolbar</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>12</x>
<y>10</y>
<width>415</width>
<height>62</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="fTimeout_lineEdit"/>
</item>
<item>
<widget class="QLabel" name="fTimeout_label">
<property name="text">
<string>timeout</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>38</width>
<height>30</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
<property name="text">
<string>Dark Theme Icons Menu</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="fDarkThemeIconsToolbar_checkBox">
<property name="text">
<string>Dark Theme Icons Toolbar</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
<widget class="QWidget" name="fMusrfit_tab">
<attribute name="title">
<string>musrfit</string>
</attribute>
<widget class="QCheckBox" name="fKeepMn2Output_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>keep minuit2 output</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpAscii_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>35</y>
<width>151</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump ascii</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpRoot_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump root</string>
</property>
</widget>
<widget class="QCheckBox" name="fTitleFromData_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>take title from data file</string>
</property>
</widget>
<widget class="QCheckBox" name="fPerRunBlockChisq_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>35</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>keep per run block chisq</string>
</property>
</widget>
<widget class="QCheckBox" name="fEstimateN0_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>60</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>estimate N0</string>
</property>
</widget>
<widget class="QCheckBox" name="fYamlOut_checkBox">
<property name="geometry">
<rect>
<x>350</x>
<y>10</y>
<width>85</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>yaml out</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrview_tab">
<attribute name="title">
<string>musrview</string>
</attribute>
<widget class="QCheckBox" name="fFourier_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>421</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>start with Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fAvg_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>421</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>start with averaged data/Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fOneToOne_checkBox">
<property name="geometry">
<rect>
<x>260</x>
<y>10</y>
<width>181</width>
<height>26</height>
</rect>
</property>
<property name="text">
<string>theo at data points only</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrt0_tab">
<attribute name="title">
<string>musrt0</string>
</attribute>
<widget class="QCheckBox" name="fEnableMusrT0_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>enable it</string>
</property>
</widget>
</widget>
</widget>
<widget class="QWidget" name="fMusrfit_tab">
<attribute name="title">
<string>musrfit</string>
</attribute>
<widget class="QCheckBox" name="fKeepMn2Output_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>keep minuit2 output</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpAscii_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>35</y>
<width>151</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump ascii</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpRoot_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump root</string>
</property>
</widget>
<widget class="QCheckBox" name="fTitleFromData_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>take title from data file</string>
</property>
</widget>
<widget class="QCheckBox" name="fPerRunBlockChisq_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>35</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>keep per run block chisq</string>
</property>
</widget>
<widget class="QCheckBox" name="fEstimateN0_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>60</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>estimate N0</string>
</property>
</widget>
<widget class="QCheckBox" name="fYamlOut_checkBox">
<property name="geometry">
<rect>
<x>350</x>
<y>10</y>
<width>85</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>yaml out</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrview_tab">
<attribute name="title">
<string>musrview</string>
</attribute>
<widget class="QCheckBox" name="fFourier_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>421</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>start with Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fAvg_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>421</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>start with averaged data/Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fOneToOne_checkBox">
<property name="geometry">
<rect>
<x>260</x>
<y>10</y>
<width>181</width>
<height>26</height>
</rect>
</property>
<property name="text">
<string>theo at data points only</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrt0_tab">
<attribute name="title">
<string>musrt0</string>
</attribute>
<widget class="QCheckBox" name="fEnableMusrT0_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>enable it</string>
</property>
</widget>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="fHelp_pushButton">
<property name="text">
<string>&amp;Help</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>88</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="fOk_pushButton">
<property name="text">
<string>&amp;OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fCancel_pushButton">
<property name="text">
<string>&amp;Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="fHelp_pushButton">
<property name="text">
<string>&amp;Help</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>88</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="fOk_pushButton">
<property name="text">
<string>&amp;OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fCancel_pushButton">
<property name="text">
<string>&amp;Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>fTabWidget</tabstop>

View File

@ -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>

View File

@ -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,17 +1017,23 @@ 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>";
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";
else
data[i] = " <dark_theme_icons_menu>n</dark_theme_icons_menu>";
data[i] = " <dark_theme_icons_menu>n</dark_theme_icons_menu>";
}
if (data[i].contains("<dark_theme_icons_toolbar>") && data[i].contains("</dark_theme_icons_toolbar>")) {
if (fDarkThemeIconsToolbar)
data[i] = " <dark_theme_icons_toolbar>y</dark_theme_icons_toolbar>";
data[i] = " <dark_theme_icons_toolbar>y</dark_theme_icons_toolbar>";
else
data[i] = " <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>";
data[i] = " <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>";
}
if (data[i].contains("<font_name>") && data[i].contains("</font_name>")) {
data[i] = QString(" <font_name>%1</font_name>").arg(fFontName);

View File

@ -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

View File

@ -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()) {

View File

@ -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(); }

View File

@ -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));
@ -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 {

View File

@ -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

View File

@ -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,292 +20,293 @@
<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="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="fGeneral_tab">
<attribute name="title">
<string>general</string>
</attribute>
<widget class="QPushButton" name="fDefaultPath_pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>421</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Change Default Search Paths</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="fGeneral_tab">
<attribute name="title">
<string>general</string>
</attribute>
<widget class="QPushButton" name="fDefaultPath_pushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>421</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Change Default Search Paths</string>
</property>
</widget>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>416</width>
<height>61</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="fTimeout_lineEdit"/>
</item>
<item>
<widget class="QLabel" name="fTimeout_label">
<property name="text">
<string>timeout</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>38</width>
<height>30</height>
</size>
</property>
</spacer>
</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">
<string>Dark Theme Icons Menu</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="fDarkThemeIconsToolbar_checkBox">
<property name="text">
<string>Dark Theme Icons Toolbar</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>12</x>
<y>10</y>
<width>415</width>
<height>62</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="fTimeout_lineEdit"/>
</item>
<item>
<widget class="QLabel" name="fTimeout_label">
<property name="text">
<string>timeout</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>38</width>
<height>30</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
<property name="text">
<string>Dark Theme Icons Menu</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="fDarkThemeIconsToolbar_checkBox">
<property name="text">
<string>Dark Theme Icons Toolbar</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
<widget class="QWidget" name="fMusrfit_tab">
<attribute name="title">
<string>musrfit</string>
</attribute>
<widget class="QCheckBox" name="fKeepMn2Output_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>keep minuit2 output</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpAscii_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>35</y>
<width>151</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump ascii</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpRoot_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump root</string>
</property>
</widget>
<widget class="QCheckBox" name="fTitleFromData_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>take title from data file</string>
</property>
</widget>
<widget class="QCheckBox" name="fPerRunBlockChisq_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>35</y>
<width>181</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>keep per run block chisq</string>
</property>
</widget>
<widget class="QCheckBox" name="fEstimateN0_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>60</y>
<width>171</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>estimate N0</string>
</property>
</widget>
<widget class="QCheckBox" name="fYamlOut_checkBox">
<property name="geometry">
<rect>
<x>350</x>
<y>10</y>
<width>85</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>yaml out</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrview_tab">
<attribute name="title">
<string>musrview</string>
</attribute>
<widget class="QCheckBox" name="fFourier_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>421</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>start with Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fAvg_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>421</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>start with averaged data/Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fOneToOne_checkBox">
<property name="geometry">
<rect>
<x>260</x>
<y>10</y>
<width>181</width>
<height>26</height>
</rect>
</property>
<property name="text">
<string>theo at data points only</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrt0_tab">
<attribute name="title">
<string>musrt0</string>
</attribute>
<widget class="QCheckBox" name="fEnableMusrT0_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>enable it</string>
</property>
</widget>
</widget>
</widget>
<widget class="QWidget" name="fMusrfit_tab">
<attribute name="title">
<string>musrfit</string>
</attribute>
<widget class="QCheckBox" name="fKeepMn2Output_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>161</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>keep minuit2 output</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpAscii_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>35</y>
<width>151</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump ascii</string>
</property>
</widget>
<widget class="QCheckBox" name="fDumpRoot_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>dump root</string>
</property>
</widget>
<widget class="QCheckBox" name="fTitleFromData_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>10</y>
<width>171</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>take title from data file</string>
</property>
</widget>
<widget class="QCheckBox" name="fPerRunBlockChisq_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>35</y>
<width>241</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>keep per run block chisq</string>
</property>
</widget>
<widget class="QCheckBox" name="fEstimateN0_checkBox">
<property name="geometry">
<rect>
<x>170</x>
<y>60</y>
<width>101</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>estimate N0</string>
</property>
</widget>
<widget class="QCheckBox" name="fYamlOut_checkBox">
<property name="geometry">
<rect>
<x>360</x>
<y>10</y>
<width>85</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>yaml out</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrview_tab">
<attribute name="title">
<string>musrview</string>
</attribute>
<widget class="QCheckBox" name="fFourier_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>421</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>start with Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fAvg_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>421</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>start with averaged data/Fourier</string>
</property>
</widget>
<widget class="QCheckBox" name="fOneToOne_checkBox">
<property name="geometry">
<rect>
<x>260</x>
<y>10</y>
<width>181</width>
<height>26</height>
</rect>
</property>
<property name="text">
<string>theo at data points only</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="fMusrt0_tab">
<attribute name="title">
<string>musrt0</string>
</attribute>
<widget class="QCheckBox" name="fEnableMusrT0_checkBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>131</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>enable it</string>
</property>
</widget>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="fHelp_pushButton">
<property name="text">
<string>&amp;Help</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>88</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="fOk_pushButton">
<property name="text">
<string>&amp;OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fCancel_pushButton">
<property name="text">
<string>&amp;Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="fHelp_pushButton">
<property name="text">
<string>&amp;Help</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>88</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="fOk_pushButton">
<property name="text">
<string>&amp;OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="fCancel_pushButton">
<property name="text">
<string>&amp;Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>fTabWidget</tabstop>

View File

@ -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>