frontengine-dev 0.0.36__py3-none-any.whl → 0.0.37__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,10 +4,11 @@ from pathlib import Path
4
4
 
5
5
  from PySide6.QtCore import QTimer
6
6
  from PySide6.QtGui import QIcon, QAction
7
- from PySide6.QtWidgets import QMainWindow, QApplication, QGridLayout, QTabWidget, QSystemTrayIcon, QMenuBar
7
+ from PySide6.QtWidgets import QMainWindow, QApplication, QGridLayout, QTabWidget, QMenuBar
8
8
  from qt_material import apply_stylesheet, QtStyleTools
9
9
 
10
10
  from frontengine.ui.main.language_menu import build_language_menu
11
+ from frontengine.ui.main.system_tray.extend_system_tray import ExtendSystemTray
11
12
  from frontengine.ui.setting.chat_scene.chat_scene_setting import ChatSceneUI
12
13
  from frontengine.ui.setting.control_center.control_center_ui import ControlCenterUI
13
14
  from frontengine.ui.setting.gif.gif_setting_ui import GIFSettingUI
@@ -93,12 +94,15 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
93
94
  language_wrapper.language_word_dict.get("tab_control_center_text")
94
95
  )
95
96
  self.setCentralWidget(self.tab_widget)
97
+ # Set Icon
96
98
  self.icon_path = Path(os.getcwd() + "/je_driver_icon.ico")
97
99
  self.icon = QIcon(str(self.icon_path))
98
100
  if self.icon.isNull() is False:
99
101
  self.setWindowIcon(self.icon)
100
- self.system_icon = QSystemTrayIcon()
101
- self.system_icon.setIcon(self.icon)
102
+ if ExtendSystemTray.isSystemTrayAvailable():
103
+ self.system_tray = ExtendSystemTray(main_window=self)
104
+ self.system_tray.setIcon(self.icon)
105
+ self.system_tray.show()
102
106
  if debug:
103
107
  self.debug_timer = QTimer()
104
108
  self.debug_timer.setInterval(10000)
@@ -126,16 +130,20 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
126
130
  self.apply_stylesheet(self, self.sender().text())
127
131
 
128
132
  def closeEvent(self, event) -> None:
129
- super().closeEvent(event)
130
- self.video_setting_ui.video_widget_list.clear()
131
- self.image_setting_ui.image_widget_list.clear()
132
- self.web_setting_ui.web_widget_list.clear()
133
- self.gif_setting_ui.gif_widget_list.clear()
134
- self.sound_player_setting_ui.sound_widget_list.clear()
135
- self.text_setting_ui.text_widget_list.clear()
136
- self.chat_scene_ui.close_scene()
137
- self.chat_scene_ui.close()
138
- write_user_setting()
133
+ if self.system_tray.isVisible():
134
+ self.hide()
135
+ event.ignore()
136
+ else:
137
+ super().closeEvent(event)
138
+ self.video_setting_ui.video_widget_list.clear()
139
+ self.image_setting_ui.image_widget_list.clear()
140
+ self.web_setting_ui.web_widget_list.clear()
141
+ self.gif_setting_ui.gif_widget_list.clear()
142
+ self.sound_player_setting_ui.sound_widget_list.clear()
143
+ self.text_setting_ui.text_widget_list.clear()
144
+ self.chat_scene_ui.close_scene()
145
+ self.chat_scene_ui.close()
146
+ write_user_setting()
139
147
 
140
148
 
141
149
  def start_front_engine(debug: bool = False) -> None:
File without changes
@@ -0,0 +1,36 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from frontengine.ui.main.main_ui import FrontEngineMainUI
7
+ import sys
8
+
9
+ from PySide6.QtGui import QAction
10
+ from PySide6.QtWidgets import QSystemTrayIcon, QMenu
11
+
12
+
13
+ class ExtendSystemTray(QSystemTrayIcon):
14
+
15
+ def __init__(self, main_window: FrontEngineMainUI):
16
+ super().__init__(parent=main_window)
17
+ self.menu = QMenu()
18
+ self.main_window = main_window
19
+ self.hide_main_window_action = QAction("Hide")
20
+ self.hide_main_window_action.triggered.connect(self.main_window.hide)
21
+ self.menu.addAction(self.hide_main_window_action)
22
+ self.maximized_main_window_action = QAction("Maximized")
23
+ self.maximized_main_window_action.triggered.connect(self.main_window.showMaximized)
24
+ self.menu.addAction(self.maximized_main_window_action)
25
+ self.normal_main_window_action = QAction("Normal")
26
+ self.normal_main_window_action.triggered.connect(self.main_window.showNormal)
27
+ self.menu.addAction(self.normal_main_window_action)
28
+ self.close_main_window_action = QAction("Close")
29
+ self.close_main_window_action.triggered.connect(self.close_all)
30
+ self.menu.addAction(self.close_main_window_action)
31
+ self.setContextMenu(self.menu)
32
+
33
+ def close_all(self):
34
+ self.setVisible(False)
35
+ self.main_window.close()
36
+ sys.exit(0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: frontengine-dev
3
- Version: 0.0.36
3
+ Version: 0.0.37
4
4
  Summary: FrontEngine is BingGPT that can use-define front end or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  License: MIT
@@ -34,7 +34,9 @@ frontengine/ui/dialog/choose_file_dialog.py,sha256=UvQEc0sjGgJdfx2YbTANtCrIiXTlw
34
34
  frontengine/ui/dialog/save_file_dialog.py,sha256=e-sgUsmEAU1JSvzzmTmc2pf9rnW61alOgd48ESTYG1I,373
35
35
  frontengine/ui/main/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  frontengine/ui/main/language_menu.py,sha256=oIUW20LPZKIQ0IjTHchgkPeqCpQZidAzFkN29qKQ3OU,2039
37
- frontengine/ui/main/main_ui.py,sha256=r0lp7ya88cTZruTo5dGkntN005aAchYnz7HJvLFaPRA,6658
37
+ frontengine/ui/main/main_ui.py,sha256=-LwvioGb1yTOIPXeyPgZLD4NXwLXW_YEqcMkMgQg0Ig,7016
38
+ frontengine/ui/main/system_tray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ frontengine/ui/main/system_tray/extend_system_tray.py,sha256=beKmawtwmvpkbMgRMzzq5CBFdwrMAVYMwPhxUcdWnsc,1450
38
40
  frontengine/ui/setting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
41
  frontengine/ui/setting/chat_scene/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
42
  frontengine/ui/setting/chat_scene/chat_scene_setting.py,sha256=NkEnwswNpxv_Q0iiteas7m8Tx0QRaCVp7bGHzvUx9ZQ,8060
@@ -99,8 +101,8 @@ frontengine/utils/multi_language/language_wrapper.py,sha256=KBqsG6ng5LSJkGqmu_YD
99
101
  frontengine/utils/multi_language/traditional_chinese.py,sha256=Oeabbu7iFNz5WNt_2P0-qc9DtYP3Ccska6MrclOSMYI,4982
100
102
  frontengine/utils/redirect_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
103
  frontengine/utils/redirect_manager/redirect_manager_class.py,sha256=zGJeVpjRU12MCnhVAdksAIhK_IhddI4cNKVb7DMgOZA,1888
102
- frontengine_dev-0.0.36.dist-info/LICENSE,sha256=b3VlPBXnrDylKGffOEOLWMgOX-yfd65XC7PA1_sox2o,1085
103
- frontengine_dev-0.0.36.dist-info/METADATA,sha256=13gbKBGYiUOvYG5IDXX0oQUa9gZQN78b3Z4QChWxbL8,3546
104
- frontengine_dev-0.0.36.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
105
- frontengine_dev-0.0.36.dist-info/top_level.txt,sha256=btCybScN_ubeQ8phsSDBB0T-HyHjqt7b-WPy61uTox0,12
106
- frontengine_dev-0.0.36.dist-info/RECORD,,
104
+ frontengine_dev-0.0.37.dist-info/LICENSE,sha256=b3VlPBXnrDylKGffOEOLWMgOX-yfd65XC7PA1_sox2o,1085
105
+ frontengine_dev-0.0.37.dist-info/METADATA,sha256=THZ2ZOtXtTyr0benAq8fqw3IUqvsxkQVPUPzjY_h4Us,3546
106
+ frontengine_dev-0.0.37.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
107
+ frontengine_dev-0.0.37.dist-info/top_level.txt,sha256=btCybScN_ubeQ8phsSDBB0T-HyHjqt7b-WPy61uTox0,12
108
+ frontengine_dev-0.0.37.dist-info/RECORD,,