103 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from PySide6.QtWidgets import QToolBar
 | 
						|
from PySide6.QtGui import QAction, QIcon
 | 
						|
from PySide6.QtCore import QSize
 | 
						|
 | 
						|
from codes.common import clibs
 | 
						|
from codes.common.signal_bus import signal_bus
 | 
						|
from codes.common.qss_reloader import qss_reloader
 | 
						|
 | 
						|
 | 
						|
class SToolBar(QToolBar):
 | 
						|
    def __init__(self, parent=None):
 | 
						|
        super().__init__(parent)
 | 
						|
        self.pre_do()
 | 
						|
        self.init_ui()
 | 
						|
        self.post_do()
 | 
						|
 | 
						|
    def pre_do(self):
 | 
						|
        ...
 | 
						|
 | 
						|
    def init_ui(self):
 | 
						|
        self.setObjectName("SToolBar")
 | 
						|
        # switch
 | 
						|
        self.on_icon  = QIcon(clibs.on_icon)   # 开状态图标
 | 
						|
        self.off_icon = QIcon(clibs.off_icon)  # 关状态图标
 | 
						|
        self.ac_switch = QAction(self.on_icon, "", self)
 | 
						|
        self.ac_switch.setMenuRole(QAction.MenuRole.NoRole)
 | 
						|
        self.ac_switch.setStatusTip("Switch side bar")
 | 
						|
        self.ac_switch.setToolTip("Ctrl+Alt+T")
 | 
						|
        self.ac_switch.setCheckable(True)
 | 
						|
        self.ac_switch.setChecked(True)
 | 
						|
        self.setIconSize(QSize(30, 30))
 | 
						|
        self.addAction(self.ac_switch)
 | 
						|
        btn = self.widgetForAction(self.ac_switch)  # 取出实际 QToolButton
 | 
						|
        btn.setObjectName("ac_switch")
 | 
						|
 | 
						|
        # homepage
 | 
						|
        self.ac_homepage = QAction()
 | 
						|
        self.ac_homepage.setMenuRole(QAction.MenuRole.NoRole)
 | 
						|
        self.ac_homepage.setStatusTip("Go to home page")
 | 
						|
        self.ac_homepage.setToolTip("Ctrl+Alt+H")
 | 
						|
        self.ac_homepage.setText("主页")
 | 
						|
        self.addAction(self.ac_homepage)
 | 
						|
 | 
						|
        # setting
 | 
						|
        self.ac_setting = QAction()
 | 
						|
        self.ac_setting.setMenuRole(QAction.MenuRole.NoRole)
 | 
						|
        self.ac_setting.setStatusTip("Go to setting page")
 | 
						|
        self.ac_setting.setToolTip("Ctrl+Alt+S")
 | 
						|
        self.ac_setting.setText("设置")
 | 
						|
        self.addAction(self.ac_setting)
 | 
						|
 | 
						|
        # log
 | 
						|
        self.ac_log = QAction()
 | 
						|
        self.ac_log.setMenuRole(QAction.MenuRole.NoRole)
 | 
						|
        self.ac_log.setStatusTip("Go to log page")
 | 
						|
        self.ac_log.setToolTip("Ctrl+Alt+L")
 | 
						|
        self.ac_log.setText("日志")
 | 
						|
        self.addAction(self.ac_log)
 | 
						|
 | 
						|
        # about
 | 
						|
        self.ac_about = QAction()
 | 
						|
        self.ac_about.setMenuRole(QAction.MenuRole.NoRole)
 | 
						|
        self.ac_about.setStatusTip("Go to about page")
 | 
						|
        self.ac_about.setToolTip("Ctrl+Alt+A")
 | 
						|
        self.ac_about.setText("关于")
 | 
						|
        self.addAction(self.ac_about)
 | 
						|
 | 
						|
    def post_do(self):
 | 
						|
        qss_reloader.register(clibs.qss_toolbar, self)
 | 
						|
        self.setup_slot()
 | 
						|
 | 
						|
    def setup_slot(self):
 | 
						|
        self.ac_switch.toggled.connect(self.ac_sw)
 | 
						|
        self.ac_homepage.triggered.connect(self.ac_hp)
 | 
						|
        self.ac_setting.triggered.connect(self.ac_sp)
 | 
						|
        self.ac_log.triggered.connect(self.ac_lp)
 | 
						|
        self.ac_about.triggered.connect(self.ac_ap)
 | 
						|
        signal_bus.qa_switch_change.connect(self.change2hide)
 | 
						|
 | 
						|
    def ac_sw(self, checked: bool):
 | 
						|
        self.ac_switch.setIcon(self.on_icon if checked else self.off_icon)
 | 
						|
        signal_bus.list_widget_on_off.emit(checked)
 | 
						|
 | 
						|
    def ac_hp(self):
 | 
						|
        signal_bus.home_overlay_trigger.emit()
 | 
						|
 | 
						|
    def ac_sp(self):
 | 
						|
        signal_bus.stacked_page_switch.emit("w01_setting")
 | 
						|
        signal_bus.stacked_page_switch_setting.emit()
 | 
						|
 | 
						|
    def ac_lp(self):
 | 
						|
        signal_bus.stacked_page_switch.emit("w08_log")
 | 
						|
        signal_bus.stacked_page_switch_log.emit()
 | 
						|
 | 
						|
    def ac_ap(self):
 | 
						|
        signal_bus.stacked_page_switch.emit("w09_about")
 | 
						|
        signal_bus.stacked_page_switch_about.emit()
 | 
						|
 | 
						|
    def change2hide(self):
 | 
						|
        self.ac_switch.setChecked(False)
 | 
						|
        self.ac_switch.setIcon(self.off_icon)
 | 
						|
 |