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; fKeyWord = eMusrviewShowOneToOne;
} else if (qName == "enable_musrt0") { } else if (qName == "enable_musrt0") {
fKeyWord = eEnableMusrT0; fKeyWord = eEnableMusrT0;
} else if (qName == "ignore_theme_auto_detection") {
fKeyWord = eIgnoreThemeAutoDetection;
} else if (qName == "dark_theme_icons_menu") { } else if (qName == "dark_theme_icons_menu") {
fKeyWord = eDarkThemeIconsMenu; fKeyWord = eDarkThemeIconsMenu;
} else if (qName == "dark_theme_icons_toolbar") { } else if (qName == "dark_theme_icons_toolbar") {
@ -337,6 +339,13 @@ bool PAdminXMLParser::characters()
flag = false; flag = false;
fAdmin->setEnableMusrT0Flag(flag); fAdmin->setEnableMusrT0Flag(flag);
break; break;
case eIgnoreThemeAutoDetection:
if (str == "y")
flag = true;
else
flag = false;
fAdmin->setIgnoreThemeAutoDetection(flag);
break;
case eDarkThemeIconsMenu: case eDarkThemeIconsMenu:
if (str == "y") if (str == "y")
flag = true; flag = true;
@ -622,6 +631,7 @@ void PAdminXMLParser::dump()
std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl; std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl;
std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl; std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl;
std::cout << "debug> enable_musrt0 : " << fAdmin->getEnableMusrT0Flag() << 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_menu : " << fAdmin->getDarkThemeIconsMenuFlag() << std::endl;
std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl; std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl;
std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl; std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl;
@ -736,33 +746,6 @@ QString PAdminXMLParser::expandPath(const QString &str)
*/ */
PAdmin::PAdmin() : QObject() 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.runList = QString("");
fMsr2DataParam.runListFileName = QString(""); fMsr2DataParam.runListFileName = QString("");
fMsr2DataParam.msrFileExtension = QString(""); fMsr2DataParam.msrFileExtension = QString("");
@ -1028,6 +1011,12 @@ int PAdmin::savePrefs(QString pref_fln)
else else
data[i] = " <enable_musrt0>n</enable_musrt0>"; 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 (data[i].contains("<dark_theme_icons_menu>") && data[i].contains("</dark_theme_icons_menu>")) {
if (fDarkThemeIconsMenu) if (fDarkThemeIconsMenu)
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>"; data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";

View File

@ -73,7 +73,7 @@ class PAdminXMLParser
enum EAdminKeyWords {eEmpty, eTimeout, eKeepMinuit2Output, eDumpAscii, eDumpRoot, enum EAdminKeyWords {eEmpty, eTimeout, eKeepMinuit2Output, eDumpAscii, eDumpRoot,
eTitleFromDataFile, eChisqPreRunBlock, eEstimateN0, eYamlOut, eTitleFromDataFile, eChisqPreRunBlock, eEstimateN0, eYamlOut,
eMusrviewShowFourier, eMusrviewShowAvg, eMusrviewShowOneToOne, eEnableMusrT0, eMusrviewShowFourier, eMusrviewShowAvg, eMusrviewShowOneToOne, eEnableMusrT0,
eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eEditW, eEditH, eDarkThemeIconsMenu, eDarkThemeIconsToolbar, eIgnoreThemeAutoDetection, eEditW, eEditH,
eFontName, eFontSize, eExecPath, eDefaultSavePath, eFontName, eFontSize, eExecPath, eDefaultSavePath,
eRecentFile, eBeamline, eInstitute, eFileFormat, eLifetimeCorrection, eRecentFile, eBeamline, eInstitute, eFileFormat, eLifetimeCorrection,
eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel, eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel,
@ -131,6 +131,7 @@ class PAdmin : public QObject
bool getEstimateN0Flag() { return fEstimateN0; } bool getEstimateN0Flag() { return fEstimateN0; }
bool getYamlOutFlag() { return fYamlOut; } bool getYamlOutFlag() { return fYamlOut; }
bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; } bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; }
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection; }
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; } bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; }
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; } bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; }
int getEditWidth() { return fEditWidth; } int getEditWidth() { return fEditWidth; }
@ -160,6 +161,7 @@ class PAdmin : public QObject
void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; } void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; }
void setYamlOutFlag(const bool flag) { fYamlOut = flag; } void setYamlOutFlag(const bool flag) { fYamlOut = flag; }
void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; } void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; }
void setIgnoreThemeAutoDetection(const bool flag) { fIgnoreThemeAutoDetection = flag; }
void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; } void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; }
void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; } void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; }
void setEditWidth(const int width) { fEditWidth = width; } void setEditWidth(const int width) { fEditWidth = width; }
@ -186,38 +188,39 @@ class PAdmin : public QObject
private: private:
friend class PAdminXMLParser; friend class PAdminXMLParser;
int fTimeout; ///< timeout in seconds int fTimeout{3600}; ///< timeout in seconds
QString fFontName; ///< default font name QString fFontName{QString("Monospace")}; ///< default font name
int fFontSize; ///< default font size int fFontSize{11}; ///< default font size
QString fPrefPathName; ///< path-name of the musredit_startup.xml QString fPrefPathName{QString("")}; ///< path-name of the musredit_startup.xml
QString fExecPath; ///< system path to the musrfit executables QString fExecPath{QString("")}; ///< system path to the musrfit executables
QString fDefaultSavePath; ///< default path where the msr-file should be saved QString fDefaultSavePath{QString("")}; ///< default path where the msr-file should be saved
QString fTheoFuncPixmapPath; ///< path where the default pixmaps can be found QString fTheoFuncPixmapPath{QString("")}; ///< path where the default pixmaps can be found
QVector<QString> fRecentFile; ///< keep vector of recent path-file names 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 fMusrviewShowFourier{false}; ///< 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 fMusrviewShowAvg{false}; ///< 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 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; ///< flag indicating if the Minuit2 output shall be kept (default: no) bool fKeepMinuit2Output{false}; ///< 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 fDumpAscii{false}; ///< 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 fDumpRoot{false}; ///< 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 fTitleFromDataFile{true}; ///< 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 fChisqPreRunBlock{false}; ///< 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 fEstimateN0{true}; ///< 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 fYamlOut{false}; ///< 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 fEnableMusrT0{true}; ///< 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 fIgnoreThemeAutoDetection{false}; ///< flag indicating that the theme autodetection shall be ignored. (default: no)
bool fDarkThemeIconsToolbar; ///< flag indicating if dark theme icons shall be used in the toolbar (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 fEditWidth{900}; ///< startup edit width
int fEditHeight{800}; ///< startup edit height int fEditHeight{800}; ///< startup edit height
QString fBeamline; ///< name of the beamline. Used to generate default run header lines. QString fBeamline{QString("")}; ///< 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 fInstitute{QString("")}; ///< name of the institute. Used to generate default run header lines.
QString fFileFormat; ///< default file format. Used to generate default run header lines. QString fFileFormat{QString("")}; ///< 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. 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 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); fDarkThemeIconsToolbar_checkBox->setCheckState(Qt::Unchecked);
} }
if (fAdmin->getIgnoreThemeAutoDetection()) {
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Checked);
} else {
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Unchecked);
}
fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag()); fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag());
if (fAdmin->getDumpAsciiFlag() && !fAdmin->getDumpRootFlag()) { 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 getKeepRunPerBlockChisqFlag() { return fPerRunBlockChisq_checkBox->isChecked(); }
bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); } bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); }
bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); } bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); }
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection_checkBox->isChecked(); }
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); } bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); }
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); } bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); }
bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); } bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); }

View File

@ -88,11 +88,11 @@
PTextEdit::PTextEdit( QWidget *parent ) PTextEdit::PTextEdit( QWidget *parent )
: QMainWindow( parent ) : QMainWindow( parent )
{ {
bool gotTheme = getTheme();
// reads and manages the conents of the xml-startup (musredit_startup.xml) file // reads and manages the conents of the xml-startup (musredit_startup.xml) file
fAdmin = std::make_unique<PAdmin>(); fAdmin = std::make_unique<PAdmin>();
bool gotTheme = getTheme();
// set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the // set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the
// one from the xml startup file. // one from the xml startup file.
if (gotTheme) { if (gotTheme) {
@ -134,7 +134,6 @@ PTextEdit::PTextEdit( QWidget *parent )
textFamily(fAdmin->getFontName()); textFamily(fAdmin->getFontName());
textSize(QString("%1").arg(fAdmin->getFontSize())); textSize(QString("%1").arg(fAdmin->getFontSize()));
fFontChanging = false;
QString iconName(""); QString iconName("");
if (fDarkMenuIcon) if (fDarkMenuIcon)
@ -1967,7 +1966,7 @@ void PTextEdit::editUncomment()
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
/** /**
* <p>Chances the font. * <p>Changes the font.
* *
* \param f font name * \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. * \param p font size in points.
*/ */
@ -2213,6 +2212,7 @@ void PTextEdit::musrMsr2Data()
fMsr2DataParam->keepMinuit2Output = fAdmin->getKeepMinuit2OutputFlag(); fMsr2DataParam->keepMinuit2Output = fAdmin->getKeepMinuit2OutputFlag();
fMsr2DataParam->titleFromDataFile = fAdmin->getTitleFromDataFileFlag(); fMsr2DataParam->titleFromDataFile = fAdmin->getTitleFromDataFileFlag();
fMsr2DataParam->estimateN0 = fAdmin->getEstimateN0Flag(); fMsr2DataParam->estimateN0 = fAdmin->getEstimateN0Flag();
fMsr2DataParam->yamlOut = fAdmin->getYamlOutFlag();
fMsr2DataParam->perRunBlockChisq = fAdmin->getChisqPerRunBlockFlag(); fMsr2DataParam->perRunBlockChisq = fAdmin->getChisqPerRunBlockFlag();
PMsr2DataDialog *dlg = new PMsr2DataDialog(fMsr2DataParam, fAdmin->getHelpUrl("msr2data")); PMsr2DataDialog *dlg = new PMsr2DataDialog(fMsr2DataParam, fAdmin->getHelpUrl("msr2data"));
@ -2235,6 +2235,7 @@ void PTextEdit::musrMsr2Data()
fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output); fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output);
fAdmin->setTitleFromDataFileFlag(fMsr2DataParam->titleFromDataFile); fAdmin->setTitleFromDataFileFlag(fMsr2DataParam->titleFromDataFile);
fAdmin->setEstimateN0Flag(fMsr2DataParam->estimateN0); fAdmin->setEstimateN0Flag(fMsr2DataParam->estimateN0);
fAdmin->setYamlOutFlag(fMsr2DataParam->yamlOut);
fAdmin->setChisqPerRunBlockFlag(fMsr2DataParam->perRunBlockChisq); fAdmin->setChisqPerRunBlockFlag(fMsr2DataParam->perRunBlockChisq);
// analyze parameters // analyze parameters
@ -2735,6 +2736,7 @@ void PTextEdit::musrPrefs()
} }
if (dlg->exec() == QDialog::Accepted) { if (dlg->exec() == QDialog::Accepted) {
fAdmin->setIgnoreThemeAutoDetection(dlg->getIgnoreThemeAutoDetection());
fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag()); fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag());
fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag()); fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag());
fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag()); fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag());
@ -3358,6 +3360,9 @@ void PTextEdit::jumpToBlock(int idx)
*/ */
bool PTextEdit::getTheme() bool PTextEdit::getTheme()
{ {
if (fAdmin->getIgnoreThemeAutoDetection())
return false;
fDarkMenuIcon = false; // true if theme is dark 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! 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)) { if (str.contains("dark", Qt::CaseInsensitive)) {
fDarkMenuIcon = true; fDarkMenuIcon = true;
if (str.contains("ubuntu", Qt::CaseInsensitive)) { if (str.contains("ubuntu", Qt::CaseInsensitive) ||
fDarkMenuIcon = false; str.contains("xfce", Qt::CaseInsensitive) ||
fDarkToolBarIcon = false; str.contains("mx", Qt::CaseInsensitive)) {
} else if (str.contains("xfce", Qt::CaseInsensitive)) {
fDarkMenuIcon = false; fDarkMenuIcon = false;
fDarkToolBarIcon = false; fDarkToolBarIcon = false;
} else { } else {

View File

@ -171,15 +171,15 @@ private slots:
void jumpToBlock(int idx); void jumpToBlock(int idx);
private: private:
bool fDarkMenuIcon; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs bool fDarkMenuIcon{false}; ///< 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 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<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. 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 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 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; QStringList fMusrFTPrevCmd;
int fEditW, fEditH; int fEditW{900}, fEditH{800};
QMap<QString, QAction*> fActions; QMap<QString, QAction*> fActions;
std::unique_ptr<QAction> fMusrT0Action; 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> fComboFont; ///< combo box for the font selector
std::unique_ptr<QComboBox> fComboSize; ///< combo box for the font size 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<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 std::unique_ptr<QTabWidget> fTabWidget; ///< tab widget in which the text editor(s) are placed

View File

@ -9,8 +9,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>452</width> <width>460</width>
<height>180</height> <height>200</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -20,20 +20,13 @@
<iconset> <iconset>
<normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset> <normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset>
</property> </property>
<widget class="QWidget" name="layoutWidget_0"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="geometry"> <item>
<rect>
<x>0</x>
<y>5</y>
<width>451</width>
<height>171</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QTabWidget" name="fTabWidget"> <widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="fGeneral_tab"> <widget class="QWidget" name="fGeneral_tab">
<attribute name="title"> <attribute name="title">
@ -43,7 +36,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>10</x>
<y>70</y> <y>80</y>
<width>421</width> <width>421</width>
<height>31</height> <height>31</height>
</rect> </rect>
@ -52,13 +45,13 @@
<string>Change Default Search Paths</string> <string>Change Default Search Paths</string>
</property> </property>
</widget> </widget>
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>12</x> <x>10</x>
<y>10</y> <y>10</y>
<width>415</width> <width>416</width>
<height>62</height> <height>61</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
@ -87,6 +80,13 @@
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <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> <item>
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox"> <widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
<property name="text"> <property name="text">
@ -305,7 +305,8 @@
</layout> </layout>
</item> </item>
</layout> </layout>
</widget> </item>
</layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>fTabWidget</tabstop> <tabstop>fTabWidget</tabstop>

View File

@ -19,6 +19,7 @@
<musrview_show_avg>n</musrview_show_avg> <musrview_show_avg>n</musrview_show_avg>
<musrview_show_one_to_one>n</musrview_show_one_to_one> <musrview_show_one_to_one>n</musrview_show_one_to_one>
<enable_musrt0>y</enable_musrt0> <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_menu>n</dark_theme_icons_menu>
<dark_theme_icons_toolbar>n</dark_theme_icons_toolbar> <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>
<edit_w>900</edit_w> <edit_w>900</edit_w>

View File

@ -150,6 +150,8 @@ bool PAdminXMLParser::startElement()
fKeyWord = eMusrviewShowOneToOne; fKeyWord = eMusrviewShowOneToOne;
} else if (qName == "enable_musrt0") { } else if (qName == "enable_musrt0") {
fKeyWord = eEnableMusrT0; fKeyWord = eEnableMusrT0;
} else if (qName == "ignore_theme_auto_detection") {
fKeyWord = eIgnoreThemeAutoDetection;
} else if (qName == "dark_theme_icons_menu") { } else if (qName == "dark_theme_icons_menu") {
fKeyWord = eDarkThemeIconsMenu; fKeyWord = eDarkThemeIconsMenu;
} else if (qName == "dark_theme_icons_toolbar") { } else if (qName == "dark_theme_icons_toolbar") {
@ -158,11 +160,11 @@ bool PAdminXMLParser::startElement()
fKeyWord = eEditW; fKeyWord = eEditW;
} else if (qName == "edit_h") { } else if (qName == "edit_h") {
fKeyWord = eEditH; fKeyWord = eEditH;
} else if (qName =="keep_minuit2_output") { } else if (qName == "keep_minuit2_output") {
fKeyWord = eKeepMinuit2Output; fKeyWord = eKeepMinuit2Output;
} else if (qName == "dump_ascii") { } else if (qName == "dump_ascii") {
fKeyWord = eDumpAscii; fKeyWord = eDumpAscii;
} else if (qName =="dump_root") { } else if (qName == "dump_root") {
fKeyWord = eDumpRoot; fKeyWord = eDumpRoot;
} else if (qName == "estimate_n0") { } else if (qName == "estimate_n0") {
fKeyWord = eEstimateN0; fKeyWord = eEstimateN0;
@ -281,7 +283,6 @@ bool PAdminXMLParser::endElement()
bool PAdminXMLParser::characters() bool PAdminXMLParser::characters()
{ {
QString str = fXml.text().toString(); QString str = fXml.text().toString();
if (str.isEmpty()) if (str.isEmpty())
return true; return true;
@ -344,6 +345,13 @@ bool PAdminXMLParser::characters()
flag = false; flag = false;
fAdmin->setEnableMusrT0Flag(flag); fAdmin->setEnableMusrT0Flag(flag);
break; break;
case eIgnoreThemeAutoDetection:
if (str == "y")
flag = true;
else
flag = false;
fAdmin->setIgnoreThemeAutoDetection(flag);
break;
case eDarkThemeIconsMenu: case eDarkThemeIconsMenu:
if (str == "y") if (str == "y")
flag = true; flag = true;
@ -405,6 +413,7 @@ bool PAdminXMLParser::characters()
flag = false; flag = false;
fAdmin->fMsr2DataParam.yamlOut = flag; fAdmin->fMsr2DataParam.yamlOut = flag;
fAdmin->setYamlOutFlag(flag); fAdmin->setYamlOutFlag(flag);
break;
case eChisqPreRunBlock: case eChisqPreRunBlock:
if (str == "y") if (str == "y")
flag = true; flag = true;
@ -628,6 +637,7 @@ void PAdminXMLParser::dump()
std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl; std::cout << "debug> musrview_show_fourier : " << fAdmin->getMusrviewShowFourierFlag() << std::endl;
std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl; std::cout << "debug> musrview_show_avg : " << fAdmin->getMusrviewShowAvgFlag() << std::endl;
std::cout << "debug> enable_musrt0 : " << fAdmin->getEnableMusrT0Flag() << 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_menu : " << fAdmin->getDarkThemeIconsMenuFlag() << std::endl;
std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl; std::cout << "debug> dark_theme_icons_toolbar : " << fAdmin->getDarkThemeIconsToolbarFlag() << std::endl;
std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl; std::cout << "debug> edit_w : " << fAdmin->getEditWidth() << std::endl;
@ -742,30 +752,6 @@ QString PAdminXMLParser::expandPath(const QString &str)
*/ */
PAdmin::PAdmin() : QObject() 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.runList = QString("");
fMsr2DataParam.runListFileName = QString(""); fMsr2DataParam.runListFileName = QString("");
fMsr2DataParam.msrFileExtension = QString(""); fMsr2DataParam.msrFileExtension = QString("");
@ -1031,6 +1017,12 @@ int PAdmin::savePrefs(QString pref_fln)
else else
data[i] = " <enable_musrt0>n</enable_musrt0>"; 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 (data[i].contains("<dark_theme_icons_menu>") && data[i].contains("</dark_theme_icons_menu>")) {
if (fDarkThemeIconsMenu) if (fDarkThemeIconsMenu)
data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>"; data[i] = " <dark_theme_icons_menu>y</dark_theme_icons_menu>";

View File

@ -131,6 +131,7 @@ class PAdmin : public QObject
bool getDumpRootFlag() { return fDumpRoot; } bool getDumpRootFlag() { return fDumpRoot; }
bool getEstimateN0Flag() { return fEstimateN0; } bool getEstimateN0Flag() { return fEstimateN0; }
bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; } bool getChisqPerRunBlockFlag() { return fChisqPreRunBlock; }
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection; }
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; } bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu; }
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; } bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar; }
int getEditWidth() { return fEditWidth; } int getEditWidth() { return fEditWidth; }
@ -160,6 +161,7 @@ class PAdmin : public QObject
void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; } void setEstimateN0Flag(const bool flag) { fEstimateN0 = flag; }
void setYamlOutFlag(const bool flag) { fYamlOut = flag; } void setYamlOutFlag(const bool flag) { fYamlOut = flag; }
void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; } void setChisqPerRunBlockFlag(const bool flag) { fChisqPreRunBlock = flag; }
void setIgnoreThemeAutoDetection(const bool flag) { fIgnoreThemeAutoDetection = flag; }
void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; } void setDarkThemeIconsMenuFlag(const bool flag) { fDarkThemeIconsMenu = flag; }
void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; } void setDarkThemeIconsToolbarFlag(const bool flag) { fDarkThemeIconsToolbar = flag; }
void setEditWidth(const int width) { fEditWidth = width; } void setEditWidth(const int width) { fEditWidth = width; }
@ -186,31 +188,32 @@ class PAdmin : public QObject
private: private:
friend class PAdminXMLParser; friend class PAdminXMLParser;
int fTimeout; ///< timeout in seconds int fTimeout{3600}; ///< timeout in seconds
QString fFontName; ///< default font name QString fFontName{QString("Monospace")}; ///< default font name
int fFontSize; ///< default font size int fFontSize{11}; ///< default font size
QString fPrefPathName; ///< path-name of the musredit_startup.xml QString fPrefPathName{QString("")}; ///< path-name of the musredit_startup.xml
QString fExecPath; ///< system path to the musrfit executables QString fExecPath{QString("")}; ///< system path to the musrfit executables
QString fDefaultSavePath; ///< default path where the msr-file should be saved QString fDefaultSavePath{QString("")}; ///< default path where the msr-file should be saved
QString fTheoFuncPixmapPath; ///< path where the default pixmaps can be found QString fTheoFuncPixmapPath{QString("")}; ///< path where the default pixmaps can be found
QVector<QString> fRecentFile; ///< keep vector of recent path-file names 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 fMusrviewShowFourier{false}; ///< 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 fMusrviewShowAvg{false}; ///< 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 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; ///< flag indicating if the Minuit2 output shall be kept (default: no) bool fKeepMinuit2Output{false}; ///< 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 fDumpAscii{false}; ///< 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 fDumpRoot{false}; ///< 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 fTitleFromDataFile{true}; ///< 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 fChisqPreRunBlock{false}; ///< 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 fEstimateN0{true}; ///< 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 fYamlOut{false}; ///< 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 fEnableMusrT0{true}; ///< 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 fIgnoreThemeAutoDetection{false}; ///< flag indicating that the theme autodetection shall be ignored. (default: no)
bool fDarkThemeIconsToolbar; ///< flag indicating if dark theme icons shall be used in the toolbar (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 fEditWidth{900}; ///< startup edit width
int fEditHeight{800}; ///< startup edit height int fEditHeight{800}; ///< startup edit height

View File

@ -59,6 +59,12 @@ PPrefsDialog::PPrefsDialog(PAdmin *admin) : fAdmin(admin)
fDarkThemeIconsToolbar_checkBox->setCheckState(Qt::Unchecked); fDarkThemeIconsToolbar_checkBox->setCheckState(Qt::Unchecked);
} }
if (fAdmin->getIgnoreThemeAutoDetection()) {
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Checked);
} else {
fIgnoreThemeAutoDetection_checkBox->setCheckState(Qt::Unchecked);
}
fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag()); fKeepMn2Output_checkBox->setChecked(fAdmin->getKeepMinuit2OutputFlag());
if (fAdmin->getDumpAsciiFlag() && !fAdmin->getDumpRootFlag()) { 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 getKeepRunPerBlockChisqFlag() { return fPerRunBlockChisq_checkBox->isChecked(); }
bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); } bool getEstimateN0Flag() { return fEstimateN0_checkBox->isChecked(); }
bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); } bool getYamlOutFlag() { return fYamlOut_checkBox->isChecked(); }
bool getIgnoreThemeAutoDetection() { return fIgnoreThemeAutoDetection_checkBox->isChecked(); }
bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); } bool getDarkThemeIconsMenuFlag() { return fDarkThemeIconsMenu_checkBox->isChecked(); }
bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); } bool getDarkThemeIconsToolbarFlag() { return fDarkThemeIconsToolbar_checkBox->isChecked(); }
bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); } bool getOneToOneFlag() { return fOneToOne_checkBox->isChecked(); }

View File

@ -88,11 +88,11 @@
PTextEdit::PTextEdit( QWidget *parent ) PTextEdit::PTextEdit( QWidget *parent )
: QMainWindow( parent ) : QMainWindow( parent )
{ {
bool gotTheme = getTheme();
// reads and manages the conents of the xml-startup (musredit_startup.xml) file // reads and manages the conents of the xml-startup (musredit_startup.xml) file
fAdmin = std::make_unique<PAdmin>(); fAdmin = std::make_unique<PAdmin>();
bool gotTheme = getTheme();
// set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the // set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the
// one from the xml startup file. // one from the xml startup file.
if (gotTheme) { if (gotTheme) {
@ -117,8 +117,6 @@ PTextEdit::PTextEdit( QWidget *parent )
} }
// initialize stuff // initialize stuff
//as35 fMusrT0Action = nullptr;
fMsr2DataParam = nullptr; fMsr2DataParam = nullptr;
fFindReplaceData = nullptr; fFindReplaceData = nullptr;
@ -136,7 +134,6 @@ PTextEdit::PTextEdit( QWidget *parent )
textFamily(fAdmin->getFontName()); textFamily(fAdmin->getFontName());
textSize(QString("%1").arg(fAdmin->getFontSize())); textSize(QString("%1").arg(fAdmin->getFontSize()));
fFontChanging = false;
QString iconName(""); QString iconName("");
if (fDarkMenuIcon) if (fDarkMenuIcon)
@ -165,12 +162,6 @@ PTextEdit::PTextEdit( QWidget *parent )
*/ */
void PTextEdit::aboutToQuit() void PTextEdit::aboutToQuit()
{ {
/* //as35
if (fMusrT0Action) {
delete fMusrT0Action;
fMusrT0Action = nullptr;
}
*/ //as35
if (fMsr2DataParam) { if (fMsr2DataParam) {
delete fMsr2DataParam; delete fMsr2DataParam;
fMsr2DataParam = nullptr; fMsr2DataParam = nullptr;
@ -1193,7 +1184,6 @@ void PTextEdit::fileNew()
PSubTextEdit *edit = new PSubTextEdit( fAdmin.get() ); PSubTextEdit *edit = new PSubTextEdit( fAdmin.get() );
edit->setFont(QFont(fAdmin->getFontName(), fAdmin->getFontSize())); edit->setFont(QFont(fAdmin->getFontName(), fAdmin->getFontSize()));
edit->setCenterOnScroll(true); edit->setCenterOnScroll(true);
doConnections( edit ); doConnections( edit );
fTabWidget->addTab( edit, tr( "noname" ) ); fTabWidget->addTab( edit, tr( "noname" ) );
fTabWidget->setCurrentIndex(fTabWidget->indexOf(edit)); fTabWidget->setCurrentIndex(fTabWidget->indexOf(edit));
@ -2732,6 +2722,7 @@ void PTextEdit::musrPrefs()
} }
if (dlg->exec() == QDialog::Accepted) { if (dlg->exec() == QDialog::Accepted) {
fAdmin->setIgnoreThemeAutoDetection(dlg->getIgnoreThemeAutoDetection());
fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag()); fAdmin->setDarkThemeIconsMenuFlag(dlg->getDarkThemeIconsMenuFlag());
fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag()); fAdmin->setDarkThemeIconsToolbarFlag(dlg->getDarkThemeIconsToolbarFlag());
fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag()); fAdmin->setMusrviewShowFourierFlag(dlg->getMusrviewShowFourierFlag());
@ -3346,6 +3337,9 @@ void PTextEdit::jumpToBlock(int idx)
*/ */
bool PTextEdit::getTheme() bool PTextEdit::getTheme()
{ {
if (fAdmin->getIgnoreThemeAutoDetection())
return false;
fDarkMenuIcon = false; // true if theme is dark 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! 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)) { if (str.contains("dark", Qt::CaseInsensitive)) {
fDarkMenuIcon = true; fDarkMenuIcon = true;
if (str.contains("ubuntu", Qt::CaseInsensitive)) { if (str.contains("ubuntu", Qt::CaseInsensitive) ||
fDarkMenuIcon = false; str.contains("xfce", Qt::CaseInsensitive) ||
fDarkToolBarIcon = false; str.contains("mx", Qt::CaseInsensitive)) {
} else if (str.contains("xfce", Qt::CaseInsensitive)) {
fDarkMenuIcon = false; fDarkMenuIcon = false;
fDarkToolBarIcon = false; fDarkToolBarIcon = false;
} else { } else {

View File

@ -30,6 +30,8 @@
#ifndef _PTEXTEDIT_H_ #ifndef _PTEXTEDIT_H_
#define _PTEXTEDIT_H_ #define _PTEXTEDIT_H_
#include <memory>
#include <QAction> #include <QAction>
#include <QMainWindow> #include <QMainWindow>
#include <QString> #include <QString>
@ -46,8 +48,6 @@
#include <QtDebug> #include <QtDebug>
#include <memory>
#include "PAdmin.h" #include "PAdmin.h"
#include "musredit.h" #include "musredit.h"
@ -171,15 +171,15 @@ private slots:
void jumpToBlock(int idx); void jumpToBlock(int idx);
private: private:
bool fDarkMenuIcon; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs bool fDarkMenuIcon{false}; ///< 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 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<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. 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 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 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; QStringList fMusrFTPrevCmd;
int fEditW, fEditH; int fEditW{900}, fEditH{800};
QMap<QString, QAction*> fActions; QMap<QString, QAction*> fActions;
std::unique_ptr<QAction> fMusrT0Action; 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> fComboFont; ///< combo box for the font selector
std::unique_ptr<QComboBox> fComboSize; ///< combo box for the font size 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<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 std::unique_ptr<QTabWidget> fTabWidget; ///< tab widget in which the text editor(s) are placed

View File

@ -9,8 +9,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>452</width> <width>460</width>
<height>180</height> <height>200</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -20,20 +20,13 @@
<iconset> <iconset>
<normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset> <normaloff>:/images/musrfit.xpm</normaloff>:/images/musrfit.xpm</iconset>
</property> </property>
<widget class="QWidget" name="layoutWidget_0"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="geometry"> <item>
<rect>
<x>0</x>
<y>5</y>
<width>451</width>
<height>171</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QTabWidget" name="fTabWidget"> <widget class="QTabWidget" name="fTabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="fGeneral_tab"> <widget class="QWidget" name="fGeneral_tab">
<attribute name="title"> <attribute name="title">
@ -43,7 +36,7 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>10</x>
<y>70</y> <y>80</y>
<width>421</width> <width>421</width>
<height>31</height> <height>31</height>
</rect> </rect>
@ -52,13 +45,13 @@
<string>Change Default Search Paths</string> <string>Change Default Search Paths</string>
</property> </property>
</widget> </widget>
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>12</x> <x>10</x>
<y>10</y> <y>10</y>
<width>415</width> <width>416</width>
<height>62</height> <height>61</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
@ -87,6 +80,13 @@
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <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> <item>
<widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox"> <widget class="QCheckBox" name="fDarkThemeIconsMenu_checkBox">
<property name="text"> <property name="text">
@ -154,7 +154,7 @@
<rect> <rect>
<x>170</x> <x>170</x>
<y>10</y> <y>10</y>
<width>171</width> <width>161</width>
<height>23</height> <height>23</height>
</rect> </rect>
</property> </property>
@ -167,7 +167,7 @@
<rect> <rect>
<x>170</x> <x>170</x>
<y>35</y> <y>35</y>
<width>241</width> <width>181</width>
<height>22</height> <height>22</height>
</rect> </rect>
</property> </property>
@ -180,7 +180,7 @@
<rect> <rect>
<x>170</x> <x>170</x>
<y>60</y> <y>60</y>
<width>101</width> <width>171</width>
<height>22</height> <height>22</height>
</rect> </rect>
</property> </property>
@ -191,7 +191,7 @@
<widget class="QCheckBox" name="fYamlOut_checkBox"> <widget class="QCheckBox" name="fYamlOut_checkBox">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>360</x> <x>350</x>
<y>10</y> <y>10</y>
<width>85</width> <width>85</width>
<height>21</height> <height>21</height>
@ -305,7 +305,8 @@
</layout> </layout>
</item> </item>
</layout> </layout>
</widget> </item>
</layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>fTabWidget</tabstop> <tabstop>fTabWidget</tabstop>

View File

@ -19,6 +19,7 @@
<musrview_show_avg>n</musrview_show_avg> <musrview_show_avg>n</musrview_show_avg>
<musrview_show_one_to_one>n</musrview_show_one_to_one> <musrview_show_one_to_one>n</musrview_show_one_to_one>
<enable_musrt0>y</enable_musrt0> <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_menu>n</dark_theme_icons_menu>
<dark_theme_icons_toolbar>n</dark_theme_icons_toolbar> <dark_theme_icons_toolbar>n</dark_theme_icons_toolbar>
<edit_w>900</edit_w> <edit_w>900</edit_w>