modlink_ui
class
MainWindow(qfluentwidgets.window.fluent_window.MSFluentWindow):
17class MainWindow(MSFluentWindow): 18 """Application shell for ModLink Studio.""" 19 20 def __init__(self, engine: QtModLinkBridge, parent: QWidget | None = None) -> None: 21 super().__init__(parent=parent) 22 self.engine = engine 23 24 # Keep window composition stable when chart views use OpenGL viewport. 25 if hasattr(self, "setMicaEffectEnabled"): 26 self.setMicaEffectEnabled(False) 27 28 self.live_page = LivePage(engine=self.engine, parent=self) 29 self.replay_page = ReplayPage(engine=self.engine, parent=self) 30 self.device_page = DevicePage(engine=self.engine, parent=self) 31 self.settings_page = SettingsPage(engine=self.engine, parent=self) 32 33 self.addSubInterface(self.live_page, FIF.HOME, "实时展示", isTransparent=False) 34 self.addSubInterface(self.replay_page, FIF.PLAY, "回放", isTransparent=False) 35 self.addSubInterface( 36 self.device_page, 37 FIF.IOT, 38 "设备", 39 position=NavigationItemPosition.BOTTOM, 40 isTransparent=False, 41 ) 42 self.addSubInterface( 43 self.settings_page, 44 FIF.SETTING, 45 "设置", 46 position=NavigationItemPosition.BOTTOM, 47 isTransparent=False, 48 ) 49 50 self.resize(980, 680) 51 self.setMinimumSize(920, 640) 52 self.setWindowTitle("ModLink Studio") 53 54 self.navigationInterface.setIndicatorAnimationEnabled(False) 55 if hasattr(self.navigationInterface, "setAcrylicEnabled"): 56 self.navigationInterface.setAcrylicEnabled(False) 57 self.stackedWidget.setAnimationEnabled(False) 58 59 def showEvent(self, event: QShowEvent) -> None: 60 super().showEvent(event) 61 self._apply_windows_round_corner_preference() 62 63 def _apply_windows_round_corner_preference(self) -> None: 64 if sys.platform != "win32": 65 return 66 67 try: 68 hwnd = int(self.winId()) 69 # Win11 DWM attribute values. 70 DWMWA_WINDOW_CORNER_PREFERENCE = 33 71 DWMWCP_ROUND = 2 72 corner_preference = ctypes.c_int(DWMWCP_ROUND) 73 74 ctypes.windll.dwmapi.DwmSetWindowAttribute( 75 ctypes.c_void_p(hwnd), 76 ctypes.c_uint(DWMWA_WINDOW_CORNER_PREFERENCE), 77 ctypes.byref(corner_preference), 78 ctypes.sizeof(corner_preference), 79 ) 80 except Exception: 81 # Best-effort only; unsupported OS/builds should continue normally. 82 return
Application shell for ModLink Studio.
MainWindow( engine: modlink_ui.bridge.engine.QtModLinkBridge, parent: PyQt6.QtWidgets.QWidget | None = None)
20 def __init__(self, engine: QtModLinkBridge, parent: QWidget | None = None) -> None: 21 super().__init__(parent=parent) 22 self.engine = engine 23 24 # Keep window composition stable when chart views use OpenGL viewport. 25 if hasattr(self, "setMicaEffectEnabled"): 26 self.setMicaEffectEnabled(False) 27 28 self.live_page = LivePage(engine=self.engine, parent=self) 29 self.replay_page = ReplayPage(engine=self.engine, parent=self) 30 self.device_page = DevicePage(engine=self.engine, parent=self) 31 self.settings_page = SettingsPage(engine=self.engine, parent=self) 32 33 self.addSubInterface(self.live_page, FIF.HOME, "实时展示", isTransparent=False) 34 self.addSubInterface(self.replay_page, FIF.PLAY, "回放", isTransparent=False) 35 self.addSubInterface( 36 self.device_page, 37 FIF.IOT, 38 "设备", 39 position=NavigationItemPosition.BOTTOM, 40 isTransparent=False, 41 ) 42 self.addSubInterface( 43 self.settings_page, 44 FIF.SETTING, 45 "设置", 46 position=NavigationItemPosition.BOTTOM, 47 isTransparent=False, 48 ) 49 50 self.resize(980, 680) 51 self.setMinimumSize(920, 640) 52 self.setWindowTitle("ModLink Studio") 53 54 self.navigationInterface.setIndicatorAnimationEnabled(False) 55 if hasattr(self.navigationInterface, "setAcrylicEnabled"): 56 self.navigationInterface.setAcrylicEnabled(False) 57 self.stackedWidget.setAnimationEnabled(False)