Spaces:
Build error
Build error
| import os | |
| import platform | |
| import sys | |
| import webbrowser | |
| from PyQt5.QtWidgets import QApplication | |
| from PyQt5.QtGui import * | |
| from PyQt5.QtWidgets import * | |
| from PyQt5.QtCore import Qt | |
| from pynput import keyboard | |
| def start(api=False): | |
| """ | |
| Starts the computer assistant application. | |
| This function starts the computer assistant application, which includes parsing command-line arguments | |
| to set the profile, initializing the graphical user interface, and starting the application event loop. | |
| Command-line Arguments: | |
| --profile (str): The profile to use for the application. | |
| Raises: | |
| ImportError: If the required modules or packages are not found. | |
| Returns: | |
| None | |
| """ | |
| try: | |
| pass | |
| except: | |
| pass | |
| # get --profile argument with library | |
| import argparse | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--profile", help="profile to use") | |
| parser.add_argument("--api", help="Enable API mode", action="store_true") | |
| parser.add_argument("--set_tts_provider", help="Set tts provider only") | |
| parser.add_argument("--set_stt_provider", help="Set stt provider only") | |
| parser.add_argument("--set_llm", help="Set llm model only") | |
| args = parser.parse_args() | |
| set_tts_provider = args.set_tts_provider | |
| if set_tts_provider is not None: | |
| from .utils.db import save_tts_model_settings | |
| save_tts_model_settings(set_tts_provider) | |
| return | |
| set_stt_provider = args.set_stt_provider | |
| if set_stt_provider is not None: | |
| from .utils.db import save_stt_model_settings | |
| save_stt_model_settings(set_stt_provider) | |
| return | |
| set_llm = args.set_llm | |
| if set_llm is not None: | |
| from .utils.db import save_model_settings | |
| save_model_settings(set_llm) | |
| return | |
| profile = args.profile | |
| api_arg = args.api | |
| print("Profile:", profile) | |
| if profile is not None: | |
| from .utils.db import set_profile | |
| set_profile(profile) | |
| try: | |
| from .utils.db import ( | |
| load_tts_model_settings, | |
| load_stt_model_settings, | |
| is_logo_active_setting_active, | |
| load_logo_file_path, | |
| ) | |
| except ImportError: | |
| from utils.db import ( | |
| load_tts_model_settings, | |
| load_stt_model_settings, | |
| load_logo_file_path, | |
| ) | |
| if load_tts_model_settings() != "openai": | |
| from .audio.tts_providers.microsoft_local import preload_tts_microsoft_local | |
| preload_tts_microsoft_local() | |
| if load_stt_model_settings() != "openai": | |
| from .audio.stt_providers.openai_whisper_local import ( | |
| preload_stt_openai_whisper_local, | |
| ) | |
| preload_stt_openai_whisper_local() | |
| try: | |
| from .gpt_computer_agent import MainWindow | |
| except ImportError: | |
| from gpt_computer_agent import MainWindow | |
| os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1" | |
| if api or api_arg: | |
| print("API Enabled") | |
| MainWindow.api_enabled = True | |
| app = QApplication(sys.argv) | |
| ex = MainWindow() | |
| from PyQt5 import QtGui | |
| from PyQt5 import QtCore | |
| app_icon = QtGui.QIcon() | |
| app_icon.addFile(load_logo_file_path(), QtCore.QSize(48, 48)) | |
| app.setWindowIcon(app_icon) | |
| ex.the_app = app | |
| # Create the tray | |
| menu_icon = QtGui.QIcon() | |
| menu_icon.addFile(load_logo_file_path(), QtCore.QSize(48, 48)) | |
| menu_active_icon = QtGui.QIcon() | |
| menu_active_icon.addFile(load_logo_file_path(), QtCore.QSize(48, 48)) | |
| tray = QSystemTrayIcon() | |
| tray.setIcon(menu_icon) | |
| tray.setVisible(True) | |
| ex.tray = tray | |
| ex.tray_active_icon = menu_active_icon | |
| ex.tray_icon = menu_icon | |
| # Create the menu | |
| menu = QMenu() | |
| ex.the_tray = tray | |
| show_menu = QAction("Show") | |
| def show_menu_connect(): | |
| ex.setWindowState(Qt.WindowNoState) | |
| show_menu.triggered.connect(show_menu_connect) | |
| menu.addAction(show_menu) | |
| hide_menu = QAction("Hide") | |
| hide_menu.triggered.connect(ex.showMinimized) | |
| menu.addAction(hide_menu) | |
| menu.addSeparator() | |
| if platform.system() == "Darwin": | |
| the_text_of_screenshot_and_microphone = ( | |
| "Action: ⌃+⌥+⌘+up Screenshot and Microphone" | |
| ) | |
| else: | |
| the_text_of_screenshot_and_microphone = ( | |
| "Action: ctrl+alt+windows+up Screenshot and Microphone" | |
| ) | |
| screenshot_and_microphone = QAction(the_text_of_screenshot_and_microphone) | |
| def screenshot_and_microphone_connect(): | |
| ex.setWindowState(Qt.WindowNoState) | |
| ex.screenshot_and_microphone_button_action() | |
| screenshot_listener = keyboard.GlobalHotKeys( | |
| {"<ctrl>+<alt>+<cmd>+<up>": screenshot_and_microphone_connect} | |
| ) | |
| screenshot_listener.start() | |
| screenshot_and_microphone.triggered.connect(screenshot_and_microphone_connect) | |
| menu.addAction(screenshot_and_microphone) | |
| menu.addSeparator() | |
| action = QAction("Open GitHub Issues") | |
| action.triggered.connect( | |
| lambda: webbrowser.open( | |
| "https://github.com/khulnasoft/gpt-computer-agent/issues" | |
| ) | |
| ) | |
| menu.addAction(action) | |
| # Add a Quit option to the menu. | |
| quit = QAction("Quit") | |
| quit.triggered.connect(app.quit) | |
| menu.addAction(quit) | |
| # Add the menu to the tray | |
| tray.setContextMenu(menu) | |
| sys.exit(app.exec_()) | |