diff --git a/src/blackgui/blackgui.pro b/src/blackgui/blackgui.pro
index 7843ed26d..bbe3ac7fb 100644
--- a/src/blackgui/blackgui.pro
+++ b/src/blackgui/blackgui.pro
@@ -45,7 +45,7 @@ win32 {
RESOURCES +=
DESTDIR = ../../lib
-OTHER_FILES += ./qss/*.qss ./qss/*.css
+OTHER_FILES += ./qss/*.qss ./qss/*.css ./qss/*.ini
win32:isEmpty(MINGW_IN_SHELL): COPY = xcopy /yi
else: COPY = cp -r
diff --git a/src/blackgui/components/aircraftcomponent.ui b/src/blackgui/components/aircraftcomponent.ui
index 8070e5cc4..de2b98515 100644
--- a/src/blackgui/components/aircraftcomponent.ui
+++ b/src/blackgui/components/aircraftcomponent.ui
@@ -94,16 +94,16 @@
-
- BlackGui::Views::CAirportView
- QTableView
- blackgui/views/airportview.h
-
BlackGui::Views::CSimulatedAircraftView
QTableView
blackgui/views/simulatedaircraftview.h
+
+ BlackGui::Views::CAirportView
+ QTableView
+ blackgui/views/airportview.h
+
diff --git a/src/blackgui/components/audiocomponent.ui b/src/blackgui/components/audiocomponent.ui
index 367daf470..b6cc2aa56 100644
--- a/src/blackgui/components/audiocomponent.ui
+++ b/src/blackgui/components/audiocomponent.ui
@@ -14,10 +14,13 @@
Audio
- QFrame::StyledPanel
+ QFrame::NoFrame
- QFrame::Raised
+ QFrame::Plain
+
+
+ 0
@@ -51,8 +54,8 @@
0
0
- 396
- 296
+ 398
+ 298
diff --git a/src/blackgui/components/audiosetupcomponent.ui b/src/blackgui/components/audiosetupcomponent.ui
index 318bed65d..bb89231c6 100644
--- a/src/blackgui/components/audiosetupcomponent.ui
+++ b/src/blackgui/components/audiosetupcomponent.ui
@@ -14,10 +14,13 @@
Frame
- QFrame::StyledPanel
+ QFrame::NoFrame
- QFrame::Raised
+ QFrame::Plain
+
+
+ 0
diff --git a/src/blackgui/components/logcomponent.ui b/src/blackgui/components/logcomponent.ui
index 562058a54..0717411fb 100644
--- a/src/blackgui/components/logcomponent.ui
+++ b/src/blackgui/components/logcomponent.ui
@@ -20,10 +20,13 @@
Frame
- QFrame::StyledPanel
+ QFrame::NoFrame
- QFrame::Raised
+ QFrame::Plain
+
+
+ 0
@@ -46,7 +49,7 @@
0
-
+
Log
@@ -81,7 +84,7 @@
-
+
Console
diff --git a/src/blackgui/components/maininfoareacomponent.ui b/src/blackgui/components/maininfoareacomponent.ui
index 13262acaa..ac98c6f12 100644
--- a/src/blackgui/components/maininfoareacomponent.ui
+++ b/src/blackgui/components/maininfoareacomponent.ui
@@ -92,7 +92,7 @@
Qt::TopDockWidgetArea
- Aircrafts
+ Aircraft
4
diff --git a/src/blackgui/components/textmessagecomponent.ui b/src/blackgui/components/textmessagecomponent.ui
index b8c20f02a..868f626b8 100644
--- a/src/blackgui/components/textmessagecomponent.ui
+++ b/src/blackgui/components/textmessagecomponent.ui
@@ -11,32 +11,41 @@
- Frame
+ Text messages
- QFrame::StyledPanel
+ QFrame::NoFrame
- QFrame::Raised
+ QFrame::Plain
+
+
+ 0
- 2
+ 1
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
-
+
+
+ 0
+ 0
+
+
0
@@ -46,19 +55,19 @@
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
-
@@ -111,19 +120,19 @@
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
-
@@ -146,19 +155,19 @@
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
-
@@ -184,19 +193,19 @@
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
- 2
+ 0
-
diff --git a/src/blackgui/dockwidget.cpp b/src/blackgui/dockwidget.cpp
index 3fc686e4d..29eaaa006 100644
--- a/src/blackgui/dockwidget.cpp
+++ b/src/blackgui/dockwidget.cpp
@@ -47,7 +47,7 @@ namespace BlackGui
void CDockWidget::setEmptyTitleBar()
{
if (!this->m_titleBarWidgetOriginal) { this->initTitleBarWidgets(); }
- if (this->titleBarWidget() == this->m_titleBarWidgetEmpty) return; // on purpose, as I do not know what happens when I call setTitleBar
+ if (this->titleBarWidget() == this->m_titleBarWidgetEmpty) { return; } // on purpose, as I do not know what happens when I call setTitleBar
this->setTitleBarWidget(this->m_titleBarWidgetEmpty);
}
@@ -56,6 +56,26 @@ namespace BlackGui
this->setTitleBarWidget(nullptr);
}
+ void CDockWidget::setMarginsWhenFloating(const QMargins &margins)
+ {
+ this->m_marginsWhenFloating = margins;
+ }
+
+ void CDockWidget::setMarginsWhenFloating(int left, int top, int right, int bottom)
+ {
+ this->m_marginsWhenFloating = QMargins(left, top, right, bottom);
+ }
+
+ void CDockWidget::setMarginsWhenDocked(const QMargins &margins)
+ {
+ this->m_marginsWhenDocked = margins;
+ }
+
+ void CDockWidget::setMarginsWhenDocked(int left, int top, int right, int bottom)
+ {
+ this->m_marginsWhenDocked = QMargins(left, top, right, bottom);
+ }
+
void CDockWidget::setWindowTitle(const QString &title)
{
this->m_windowTitleBackup = title;
diff --git a/src/blackgui/dockwidget.h b/src/blackgui/dockwidget.h
index 8755c6af7..8321fb5e2 100644
--- a/src/blackgui/dockwidget.h
+++ b/src/blackgui/dockwidget.h
@@ -49,16 +49,16 @@ namespace BlackGui
void setNullTitleBar();
//! Margins when window is floating
- void setMarginsWhenFloating(const QMargins &margins) { this->m_marginsWhenFloating = margins; }
+ void setMarginsWhenFloating(const QMargins &margins);
//! Margins when window is floating
- void setMarginsWhenFloating(int left, int top, int right, int bottom) { this->m_marginsWhenFloating = QMargins(left, top, right, bottom); }
+ void setMarginsWhenFloating(int left, int top, int right, int bottom);
//! Margins when widget is floating
- void setMarginsWhenDocked(const QMargins &margins) { this->m_marginsWhenDocked = margins; }
+ void setMarginsWhenDocked(const QMargins &margins);
//! Margins when widget is floating
- void setMarginsWhenDocked(int left, int top, int right, int bottom) { this->m_marginsWhenDocked = QMargins(left, top, right, bottom); }
+ void setMarginsWhenDocked(int left, int top, int right, int bottom);
//! Window title backup
const QString &windowTitleBackup() const { return this->m_windowTitleBackup; }
diff --git a/src/blackgui/dockwidgetinfoarea.cpp b/src/blackgui/dockwidgetinfoarea.cpp
index 4b8a2898a..64befc8e0 100644
--- a/src/blackgui/dockwidgetinfoarea.cpp
+++ b/src/blackgui/dockwidgetinfoarea.cpp
@@ -38,7 +38,7 @@ namespace BlackGui
bool CDockWidgetInfoArea::isSelectedDockWidget() const
{
const CInfoArea *ia = getParentInfoArea();
- if (!ia) return false;
+ if (!ia) { return false; }
return ia->isSelectedDockWidgetInfoArea(this);
}
@@ -46,12 +46,12 @@ namespace BlackGui
{
// if the widget is invisible we are done
// but if it is visible, there is no guarantee it can be seen by the user
- if (!this->isVisible()) return false;
+ if (!this->isVisible()) { return false; }
// further checks
if (this->isFloating())
{
- if (this->isMinimized()) return false;
+ if (this->isMinimized()) { return false; }
return true;
}
else
@@ -125,7 +125,7 @@ namespace BlackGui
foreach(CDockWidgetInfoArea * ia, nestedInfoAreas)
{
QList nestedInfoAreaComponents = ia->findEmbeddedDockWidgetInfoAreaComponents();
- if (nestedInfoAreaComponents.isEmpty()) continue;
+ if (nestedInfoAreaComponents.isEmpty()) { continue; }
foreach(CEnableForDockWidgetInfoArea * iac, nestedInfoAreaComponents)
{
bool r = widgetsWithDockWidgetInfoAreaComponent.removeOne(iac);
diff --git a/src/blackgui/infoarea.cpp b/src/blackgui/infoarea.cpp
index d7f8592ae..fb9429061 100644
--- a/src/blackgui/infoarea.cpp
+++ b/src/blackgui/infoarea.cpp
@@ -46,8 +46,7 @@ namespace BlackGui
}
this->ps_setDockArea(Qt::TopDockWidgetArea);
- this->setMarginsWhenFloating(5, 5, 5, 5); // left, top, right bottom
- this->setMarginsWhenDocked(1, 1, 1, 1); // top has no effect
+ this->iniFileBasedSettings();
this->connectAllWidgets();
this->setFeaturesForDockableWidgets(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);
this->tabifyAllWidgets();
@@ -533,6 +532,30 @@ namespace BlackGui
return infoAreas;
}
+ void CInfoArea::iniFileBasedSettings()
+ {
+ const QSettings *settings = CStyleSheetUtility::instance().iniFile();
+ if (settings)
+ {
+ this->setMarginsWhenDocked(
+ settings->value("infoarea/margindocked.left").toInt(),
+ settings->value("infoarea/margindocked.top").toInt(),
+ settings->value("infoarea/margindocked.right").toInt(),
+ settings->value("infoarea/margindocked.bottom").toInt());
+ this->setMarginsWhenFloating(
+ settings->value("infoarea/marginfloating.left").toInt(),
+ settings->value("infoarea/marginfloating.top").toInt(),
+ settings->value("infoarea/marginfloating.right").toInt(),
+ settings->value("infoarea/marginfloating.bottom").toInt());
+ }
+ else
+ {
+ // some defaut if not available
+ this->setMarginsWhenFloating(10, 10, 20, 20); // left, top, right, bottom
+ this->setMarginsWhenDocked(1, 1, 1, 1); // top has no effect
+ }
+ }
+
void CInfoArea::ps_emitInfoAreaStatus()
{
int sia = this->getSelectedDockInfoAreaIndex();
@@ -664,6 +687,7 @@ namespace BlackGui
void CInfoArea::ps_onStyleSheetChanged()
{
+ this->iniFileBasedSettings();
if (this->m_tabBar)
{
QString qss = CStyleSheetUtility::instance().style(CStyleSheetUtility::fileNameDockWidgetTab());
diff --git a/src/blackgui/infoarea.h b/src/blackgui/infoarea.h
index b38b56b85..9ba8e3931 100644
--- a/src/blackgui/infoarea.h
+++ b/src/blackgui/infoarea.h
@@ -192,6 +192,9 @@ namespace BlackGui
//! \remarks result stored in m_dockableWidgets
QList findOwnDockWidgetInfoAreas() const;
+ //! Settings based on ini file
+ void iniFileBasedSettings();
+
private slots:
//! Tab bar has been double clicked
void ps_tabBarDoubleClicked(int tabBarIndex);
diff --git a/src/blackgui/qss/_buildingblocks.qss b/src/blackgui/qss/_buildingblocks.qss
deleted file mode 100644
index 52c0cc92c..000000000
--- a/src/blackgui/qss/_buildingblocks.qss
+++ /dev/null
@@ -1,12 +0,0 @@
-Useful blocks, currently not used but saved for future
-
-/** required when dock widget is floating **/
-/** background-image not working on QDockWidget, so I use direct children **/
-#sw_MainMiddle QDockWidget {
- background-color: black;
-}
-
-#sw_MainMiddle QDockWidget > QWidget {
- background-color: black;
- background-image: url(:/textures/icons/textures/texture-inner.jpg);
-}
diff --git a/src/blackgui/qss/gui.ini b/src/blackgui/qss/gui.ini
new file mode 100644
index 000000000..789928750
--- /dev/null
+++ b/src/blackgui/qss/gui.ini
@@ -0,0 +1,11 @@
+[infoarea]
+; margins as used in infoarea.cpp
+margindocked.left = 1
+margindocked.right = 1
+margindocked.top = 1
+margindocked.bottom = 1
+
+marginfloating.left = 5
+marginfloating.right = 20
+marginfloating.top = 5
+marginfloating.bottom = 20
diff --git a/src/blackgui/qss/mainwindow.qss b/src/blackgui/qss/mainwindow.qss
index 654159276..e4a00b40f 100644
--- a/src/blackgui/qss/mainwindow.qss
+++ b/src/blackgui/qss/mainwindow.qss
@@ -4,8 +4,8 @@ http://qt-project.org/doc/qt-5.3/stylesheet-examples.html
http://web.forret.com/tools/color.asp?RGB=2F4F4F&name=Dark+slate+gray
Remarks:
-there is no opacity with background image, so we need semitransparent images
-use -- instead of :: for namespaces
+1) there is no opacity with background image, so we need semitransparent images
+2) use -- instead of :: for namespaces
Used dynamic properties
frameless (infobar.qss , here)
@@ -21,20 +21,27 @@ QMainWindow {
/** background-image not working on QDockWidget, so I use direct children **/
#sw_MainMiddle BlackGui--CDockWidgetInfoArea {
background-color: black;
- background-image: url(:/textures/icons/textures/texture-inner.jpg);
}
+/** this is the first widget in the dock area **/
+/** all dock widgets shall have this QWidget as container **/
#sw_MainMiddle BlackGui--CDockWidgetInfoArea > QWidget {
background-color: black;
background-image: url(:/textures/icons/textures/texture-inner.jpg);
}
+/** the following QFrame, likely the component itself
+#sw_MainMiddle BlackGui--CDockWidgetInfoArea > QWidget > QFrame {
+ border: 0px;
+ padding: 0px;
+}
+
/** fix the menu, which is overridden by the above QWidget **/
#sw_MainMiddle BlackGui--CDockWidgetInfoArea > QMenu {
- border: 2px solid darkslategray; /* reserve space for selection border */
+ border: 1px solid darkslategray; /* reserve space for selection border */
background: lightgray;
color: black;
- padding: 2px;
+ padding: 0px;
}
/** required when info area is not floating **/
@@ -46,14 +53,8 @@ BlackGui--CInfoArea {
/** fix scroll areas **/
/** in flight plan **/
-QAbstractScrollArea #qw_FlightPlanTabMain {
- background-color: black;
- background-image: url(:/textures/icons/textures/texture-inner.jpg);
-}
-QAbstractScrollArea #qw_RemarksGenerator {
- background-color: transparent;
- background-image: url(:/textures/icons/textures/texture-inner.jpg);
-}
+QAbstractScrollArea #qw_FlightPlanTabMain { background-color: black; background-image: url(:/textures/icons/textures/texture-inner.jpg); }
+QAbstractScrollArea #qw_RemarksGenerator { background-color: transparent; background-image: url(:/textures/icons/textures/texture-inner.jpg); }
/** in log component **/
QAbstractScrollArea #pg_StatusPageMessages { background-color: black; }
diff --git a/src/blackgui/stylesheetutility.cpp b/src/blackgui/stylesheetutility.cpp
index 9648287bc..8ef16c59b 100644
--- a/src/blackgui/stylesheetutility.cpp
+++ b/src/blackgui/stylesheetutility.cpp
@@ -94,7 +94,13 @@ namespace BlackGui
bool CStyleSheetUtility::read()
{
QDir directory(qssDirectory());
- if (!directory.exists()) return false;
+ if (!directory.exists()) { return false; }
+
+ // ini file
+ QString iniFile = directory.absolutePath().append("/").append(fileNameIniFile());
+ m_iniFile.reset(new QSettings(iniFile, QSettings::IniFormat));
+
+ // qss/css files
directory.setNameFilters({"*.qss", "*.css"});
directory.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
@@ -130,7 +136,7 @@ namespace BlackGui
QString style;
foreach(QString fileName, fileNames)
{
- if (!this->containsStyle(fileName)) continue;
+ if (!this->containsStyle(fileName)) { continue; }
QString s = this->m_styleSheets[fileName.toLower()].trimmed();
if (s.isEmpty()) continue;
if (!style.isEmpty()) style.append("\n\n");
@@ -214,6 +220,78 @@ namespace BlackGui
return n;
}
+ CStyleSheetUtility &CStyleSheetUtility::instance()
+ {
+ static CStyleSheetUtility r;
+ return r;
+ }
+
+ const QString &CStyleSheetUtility::fileNameFonts()
+ {
+ static const QString f("fonts.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameMainWindow()
+ {
+ static const QString f("mainwindow.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameInfoBar()
+ {
+ static const QString f("infobar.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameDockWidgetTab()
+ {
+ static const QString f("dockwidgettab.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameInfoWindow()
+ {
+ static const QString f("stylesheetinfo.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameTextMessage()
+ {
+ static const QString f("textmessage.css");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameFilterDialog()
+ {
+ static const QString f("filterdialog.qss");
+ return f;
+ }
+
+ const QString &CStyleSheetUtility::fileNameIniFile()
+ {
+ static const QString f("gui.ini");
+ return f;
+ }
+
+ const QStringList &CStyleSheetUtility::fontWeights()
+ {
+ static const QStringList w( {"bold", "semibold", "light", "black", "normal"});
+ return w;
+ }
+
+ const QStringList &CStyleSheetUtility::fontStyles()
+ {
+ static const QStringList s( {"italic", "oblique", "normal"});
+ return s;
+ }
+
+ const QString &CStyleSheetUtility::transparentBackgroundColor()
+ {
+ static const QString t = "background-color: transparent;";
+ return t;
+ }
+
QString CStyleSheetUtility::qssDirectory()
{
QString dirPath = QCoreApplication::applicationDirPath();
diff --git a/src/blackgui/stylesheetutility.h b/src/blackgui/stylesheetutility.h
index 6fba5a324..a8e4fe487 100644
--- a/src/blackgui/stylesheetutility.h
+++ b/src/blackgui/stylesheetutility.h
@@ -17,6 +17,8 @@
#include
#include
#include
+#include
+#include
namespace BlackGui
{
@@ -48,6 +50,9 @@ namespace BlackGui
//! Current font color from style sheet
QString fontColor();
+ //! GUI ini file data
+ const QSettings *iniFile() const { return m_iniFile.data(); }
+
//! Get the font style
static QString fontStyle(const QString &combinedStyleAndWeight);
@@ -55,82 +60,40 @@ namespace BlackGui
static QString fontWeight(const QString &combinedStyleAndWeight);
//! Central reader
- static CStyleSheetUtility &instance()
- {
- static CStyleSheetUtility r;
- return r;
- }
+ static CStyleSheetUtility &instance();
//! File name fonts.qss
- static const QString &fileNameFonts()
- {
- static const QString f("fonts.qss");
- return f;
- }
+ static const QString &fileNameFonts();
//! File name mainwindow.qss
- static const QString &fileNameMainWindow()
- {
- static const QString f("mainwindow.qss");
- return f;
- }
+ static const QString &fileNameMainWindow();
//! File name infobar.qss
- static const QString &fileNameInfoBar()
- {
- static const QString f("infobar.qss");
- return f;
- }
+ static const QString &fileNameInfoBar();
//! File name dockwidgettab.qss
- static const QString &fileNameDockWidgetTab()
- {
- static const QString f("dockwidgettab.qss");
- return f;
- }
+ static const QString &fileNameDockWidgetTab();
//! File name maininfoarea.qss
- static const QString &fileNameInfoWindow()
- {
- static const QString f("stylesheetinfo.qss");
- return f;
- }
+ static const QString &fileNameInfoWindow();
//! File name textmessage.qss
- static const QString &fileNameTextMessage()
- {
- static const QString f("textmessage.css");
- return f;
- }
+ static const QString &fileNameTextMessage();
//! File name maininfoarea.qss
- static const QString &fileNameFilterDialog()
- {
- static const QString f("filterdialog.qss");
- return f;
- }
+ static const QString &fileNameFilterDialog();
+ //! File name ini file
+ static const QString &fileNameIniFile();
//! Font weights
- static const QStringList &fontWeights()
- {
- static const QStringList w( {"bold", "semibold", "light", "black", "normal"});
- return w;
- }
+ static const QStringList &fontWeights();
//! Font styles
- static const QStringList &fontStyles()
- {
- static const QStringList s( {"italic", "oblique", "normal"});
- return s;
- }
+ static const QStringList &fontStyles();
//! Transparent background color
- static const QString &transparentBackgroundColor()
- {
- static const QString t = "background-color: transparent;";
- return t;
- }
+ static const QString &transparentBackgroundColor();
//! qss directory
static QString qssDirectory();
@@ -157,6 +120,7 @@ namespace BlackGui
private:
QMap m_styleSheets; //!< filename, stylesheet
+ QScopedPointer m_iniFile;
//! Constructor
explicit CStyleSheetUtility(QObject *parent = nullptr);