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_()) | |