NavigationView Example
from DevMachines import __pyside2__, __pyside6__
from DevMachines.QtitanBase import Qtitan, ColorPickerButton
from DevMachines.QtitanStyle import ColorizedStyle
from DevMachines.QtitanNavigationDesignUI import NavigationMainWindow
if __pyside2__:
from PySide2 import QtCore
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QWidget, QComboBox, QLabel, QHBoxLayout, QVBoxLayout, QLayout
if __pyside6__:
from PySide6 import QtCore
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QWidget, QComboBox, QLabel, QHBoxLayout, QVBoxLayout, QLayout
class SettingsWidget(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
l = QVBoxLayout(self)
l.setSizeConstraint(QLayout.SetNoConstraint)
l.setAlignment(Qt.AlignCenter)
l.setSpacing(20)
style = qApp.style()
if not isinstance(style, ColorizedStyle):
return
label = QLabel(self)
label.setText(self.tr("Navigation Theme:"))
themeComboBox = QComboBox(self)
themeComboBox.addItem("Light")
themeComboBox.addItem("Dark")
themeComboBox.addItem("Blue")
themeComboBox.addItem("Light Blue")
themeComboBox.addItem("Red")
themeComboBox.addItem("Custom")
self.connect(themeComboBox, QtCore.SIGNAL("activated(int)"), self.themeActivated)
label.setBuddy(themeComboBox)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(themeComboBox)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Navigation Area:"))
areComboBox = QComboBox(self)
areComboBox.addItem("Top")
areComboBox.addItem("Left")
areComboBox.addItem("Right")
areComboBox.addItem("Bottom")
self.connect(areComboBox, QtCore.SIGNAL("activated(int)"), self.areaActivated)
label.setBuddy(areComboBox)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(areComboBox)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Window Color:"))
self.windowColorPicker = ColorPickerButton()
self.connect(self.windowColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setWindowColor(const QColor&)"))
label.setBuddy(self.windowColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.windowColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Window Text Color:"))
self.windowTextColorPicker = ColorPickerButton()
self.connect(self.windowTextColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setWindowTextColor(const QColor&)"))
label.setBuddy(self.windowTextColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.windowTextColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Material Color:"))
self.materialColorColorPicker = ColorPickerButton()
self.connect(self.materialColorColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setMaterialColor(const QColor&)"))
label.setBuddy(self.materialColorColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.materialColorColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Tile Menu Color:"))
self.tileMenuColorPicker = ColorPickerButton()
self.connect(self.tileMenuColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setTileMenuColor(const QColor&)"))
label.setBuddy(self.tileMenuColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.tileMenuColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Menu Color:"))
self.menuColorPicker = ColorPickerButton()
self.connect(self.menuColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setMenuColor(const QColor&)"))
label.setBuddy(self.menuColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.menuColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Link Color:"))
self.linkColorPicker = ColorPickerButton()
self.connect(self.linkColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setLinkColor(const QColor&)"))
label.setBuddy(self.linkColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.linkColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Item Color:"))
self.itemColorPicker = ColorPickerButton()
self.connect(self.itemColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setItemColor(const QColor&)"))
label.setBuddy(self.itemColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.itemColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Item Text Color:"))
self.itemTextColorPicker = ColorPickerButton()
self.connect(self.itemTextColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setItemTextColor(const QColor&)"))
label.setBuddy(self.itemTextColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.itemTextColorPicker)
l.addLayout(hl)
label = QLabel(self)
label.setText(self.tr("Caption Color:"))
self.captionColorPicker = ColorPickerButton()
self.connect(self.captionColorPicker, QtCore.SIGNAL("colorSelected(const QColor&)"),
style, QtCore.SLOT("setCaptionColor(const QColor&)"))
label.setBuddy(self.captionColorPicker)
hl = QHBoxLayout()
hl.addWidget(label)
hl.addWidget(self.captionColorPicker)
l.addLayout(hl)
def updateSettings(self):
style = qApp.style()
if not isinstance(style, ColorizedStyle):
return
self.windowColorPicker.setColor(style.windowColor())
self.windowTextColorPicker.setColor(style.windowTextColor())
self.materialColorColorPicker.setColor(style.materialColor())
self.tileMenuColorPicker.setColor(style.tileMenuColor())
self.menuColorPicker.setColor(style.menuColor())
self.linkColorPicker.setColor(style.linkColor())
self.itemColorPicker.setColor(style.itemColor())
self.itemTextColorPicker.setColor(style.itemTextColor())
self.captionColorPicker.setColor(style.captionColor())
@QtCore.Slot(int)
def themeActivated(self, index):
style = qApp.style()
if not isinstance(style, ColorizedStyle):
return
style.setTheme(ColorizedStyle.Theme(index))
self.updateSettings()
@QtCore.Slot(int)
def areaActivated(self, index):
w = self.window()
if not isinstance(w, NavigationMainWindow):
return
if index == 0:
w.setNavigationBarArea(Qtitan.TopArea)
elif index == 1:
w.setNavigationBarArea(Qtitan.LeftArea)
elif index == 2:
w.setNavigationBarArea(Qtitan.RightArea)
else:
w.setNavigationBarArea(Qtitan.BottomArea)