more work for dark theme under macOS.

This commit is contained in:
suter_a 2019-05-01 09:01:27 +02:00
parent d9b5e8d737
commit 492bb4b20e
4 changed files with 31 additions and 9 deletions

View File

@ -94,6 +94,8 @@ bool PAdminXMLParser::startElement( const QString&, const QString&,
fKeyWord = eMusrviewShowAvg;
} else if (qName == "enable_musrt0") {
fKeyWord = eEnableMusrT0;
} else if (qName == "dark_theme_icons") {
fKeyWord = eDarkThemeIcons;
} else if (qName == "keep_minuit2_output") {
fKeyWord = eKeepMinuit2Output;
} else if (qName == "dump_ascii") {
@ -268,6 +270,13 @@ bool PAdminXMLParser::characters(const QString& str)
flag = false;
fAdmin->setEnableMusrT0Flag(flag);
break;
case eDarkThemeIcons:
if (str == "y")
flag = true;
else
flag = false;
fAdmin->setDarkThemeIconsFlag(flag);
break;
case eKeepMinuit2Output:
if (str == "y")
flag = true;
@ -867,6 +876,12 @@ int PAdmin::savePrefs(QString pref_fln)
else
data[i] = " <enable_musrt0>n</enable_musrt0>";
}
if (data[i].contains("<dark_theme_icons>") && data[i].contains("</dark_theme_icons>")) {
if (fDarkThemeIcons)
data[i] = " <dark_theme_icons>y</dark_theme_icons>";
else
data[i] = " <dark_theme_icons>n</dark_theme_icons>";
}
if (data[i].contains("<font_name>") && data[i].contains("</font_name>")) {
data[i] = QString(" <font_name>%1</font_name>").arg(fFontName);
}

View File

@ -70,7 +70,7 @@ class PAdminXMLParser : public QXmlDefaultHandler
private:
enum EAdminKeyWords {eEmpty, eTimeout, eKeepMinuit2Output, eDumpAscii, eDumpRoot,
eTitleFromDataFile, eChisqPreRunBlock, eEstimateN0,
eMusrviewShowFourier, eMusrviewShowAvg, eEnableMusrT0,
eMusrviewShowFourier, eMusrviewShowAvg, eEnableMusrT0, eDarkThemeIcons,
eFontName, eFontSize, eExecPath, eDefaultSavePath,
eRecentFile, eBeamline, eInstitute, eFileFormat, eLifetimeCorrection,
eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel,

View File

@ -85,13 +85,19 @@
PTextEdit::PTextEdit( QWidget *parent, Qt::WindowFlags f )
: QMainWindow( parent, f )
{
getTheme();
bool gotTheme = getTheme();
// reads and manages the conents of the xml-startup (musredit_startup.xml) file
fAdmin = new PAdmin();
// set default setting of the fDarkThemeIcons
// set default setting of the fDarkThemeIcons only if a theme has been recognized, otherwise take the
// one from the xml startup file.
if (gotTheme) {
fAdmin->setDarkThemeIconsFlag(fDarkToolBarIcon);
} else {
fDarkTheme = fAdmin->getDarkThemeIconsFlag();
fDarkToolBarIcon = fAdmin->getDarkThemeIconsFlag();
}
// enable file system watcher. Needed to get notification if the msr-file is changed outside of musrfit at runtime
fFileSystemWatcherActive = true;
@ -3244,23 +3250,22 @@ void PTextEdit::setFileSystemWatcherActive()
/**
* @brief PTextEdit::getTheme
*/
void PTextEdit::getTheme()
bool PTextEdit::getTheme()
{
fDarkTheme = 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!
QString str = QIcon::themeName();
qDebug() << "debug> theme name=" << str << endl;
if (str.isEmpty()) { // this is ugly and eventually needs to be fixed in a more coherent way
str = QProcessEnvironment::systemEnvironment().value("HOME", QString("??"));
str += "/.kde4/share/config/kdeglobals";
bool done = false;
if (QFile::exists(str)) {
QFile fln(str);
fln.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream fin(&fln);
QString line("");
bool done = false;
while (!fin.atEnd() && !done) {
line = fin.readLine();
if (line.contains("ColorScheme")) {
@ -3273,7 +3278,7 @@ void PTextEdit::getTheme()
}
fln.close();
}
return;
return done;
}
if (str.contains("dark", Qt::CaseInsensitive)) {
@ -3287,6 +3292,8 @@ void PTextEdit::getTheme()
fDarkToolBarIcon = true;
}
}
return true;
}
//----------------------------------------------------------------------------------------------------

View File

@ -187,7 +187,7 @@ private:
QMenu *fRecentFilesMenu; ///< recent file menu
QAction *fRecentFilesAction[MAX_RECENT_FILES]; ///< array of the recent file actions
void getTheme();
bool getTheme();
void fillRecentFiles();
QStringList getRunList(QString runListStr, bool &ok);
bool fileAlreadyOpen(QFileInfo &finfo, int &idx);