Spaces:
Runtime error
Runtime error
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton | |
from PyQt5.QtCore import Qt | |
from ..utils.db import * | |
from ..agent.chat_history import clear_chat_history | |
def settings_popup(self): | |
""" | |
Display a settings popup dialog for configuring various options. | |
This function creates a settings dialog with options to reset chat history, enable/disable the just text model, | |
and change the active profile. | |
Parameters: | |
- self: Reference to the main application window. | |
Returns: | |
- None | |
""" | |
from ..gpt_computer_assistant import the_main_window | |
settings_dialog = QDialog() | |
settings_dialog.setWindowTitle("Settings") | |
settings_dialog.setWindowModality(Qt.ApplicationModal) | |
settings_dialog.setLayout(QVBoxLayout()) | |
reset_memory_button = QPushButton("Reset Memory") | |
def clear_chat_history_(): | |
""" | |
Clear the chat history and update the main window. | |
This function clears the chat history and updates the main window with a notification. | |
Returns: | |
- None | |
""" | |
clear_chat_history() | |
the_main_window.update_from_thread("Cleared Chat History") | |
settings_dialog.close() | |
reset_memory_button.clicked.connect(clear_chat_history_) | |
settings_dialog.layout().addWidget(reset_memory_button) | |
just_text_button = QPushButton("Enable Just Text Model") | |
settings_dialog.layout().addWidget(just_text_button) | |
if is_just_text_model_active(): | |
just_text_button.setText("Disable Just Text Model") | |
def deactivate_just_text_model_(): | |
""" | |
Deactivate the just text model and update the main window. | |
This function deactivates the just text model and updates the main window with a notification. | |
Returns: | |
- None | |
""" | |
deactivate_just_text_model() | |
the_main_window.update_from_thread("Disabled Just Text Model") | |
settings_dialog.close() | |
just_text_button.clicked.connect(deactivate_just_text_model_) | |
else: | |
def activate_just_text_model_(): | |
""" | |
Activate the just text model and update the main window. | |
This function activates the just text model and updates the main window with a notification. | |
Returns: | |
- None | |
""" | |
activate_just_text_model() | |
the_main_window.update_from_thread("Enabled Just Text Model") | |
settings_dialog.close() | |
just_text_button.clicked.connect(activate_just_text_model_) | |
settings_dialog.layout().addWidget(QLabel("Profile")) | |
profile_input = QLineEdit() | |
profile_input.setText(get_profile()) | |
settings_dialog.layout().addWidget(profile_input) | |
profile_save_button = QPushButton("Save") | |
def set_profile_(profile): | |
""" | |
Set the active profile and update the main window. | |
This function sets the active profile based on user input and updates the main window with a notification. | |
Parameters: | |
- profile (str): The profile name to set. | |
Returns: | |
- None | |
""" | |
set_profile(profile) | |
the_main_window.update_from_thread("Saved Profile") | |
settings_dialog.close() | |
profile_save_button.clicked.connect(lambda: set_profile_(profile_input.text())) | |
settings_dialog.layout().addWidget(profile_save_button) | |
dark_mode_button = QPushButton("Enable Dark Mode") | |
settings_dialog.layout().addWidget(dark_mode_button) | |
if is_dark_mode_active(): | |
dark_mode_button.setText("Disable Dark Mode") | |
def deactivate_dark_mode_(): | |
""" | |
Deactivate dark mode and update the main window. | |
This function deactivates dark mode and updates the main window with a notification. | |
Returns: | |
- None | |
""" | |
deactivate_dark_mode() | |
the_main_window.update_from_thread("Disabled Dark Mode") | |
the_main_window.light_mode() | |
settings_dialog.close() | |
dark_mode_button.clicked.connect(deactivate_dark_mode_) | |
else: | |
def activate_dark_mode_(): | |
""" | |
Activate dark mode and update the main window. | |
This function activates dark mode and updates the main window with a notification. | |
Returns: | |
- None | |
""" | |
activate_dark_mode() | |
the_main_window.update_from_thread("Enabled Dark Mode") | |
the_main_window.dark_mode() | |
settings_dialog.close() | |
dark_mode_button.clicked.connect(activate_dark_mode_) | |
predefined_agents_button = QPushButton("Enable Predefined Agents (Good Results, Long Response Time)") | |
settings_dialog.layout().addWidget(predefined_agents_button) | |
try: | |
import crewai | |
if is_predefined_agents_setting_active(): | |
predefined_agents_button.setText("Disable Predefined Agents (Bad Results, Short Response Time)") | |
def deactivate_predefined_agents_(): | |
deactivate_predefined_agents_setting() | |
the_main_window.update_from_thread("Disabled Predefined Agents (Bad Results, Short Response Time)") | |
settings_dialog.close() | |
predefined_agents_button.clicked.connect(deactivate_predefined_agents_) | |
else: | |
def activate_predefined_agents_(): | |
activate_predefined_agents_setting() | |
the_main_window.update_from_thread("Enabled Predefined Agents (Good Results, Long Response Time)") | |
settings_dialog.close() | |
predefined_agents_button.clicked.connect(activate_predefined_agents_) | |
except: | |
predefined_agents_button.setText("Install gpt-computer-assistant[agentic]") | |
online_tools_button = QPushButton("Enable Upsonic Tiger Tools - More Capability (Recommended)") | |
settings_dialog.layout().addWidget(online_tools_button) | |
if is_online_tools_setting_active(): | |
online_tools_button.setText("Disable Upsonic Tiger Tools - Low Capability (Not Recommended)") | |
def deactivate_online_tools_(): | |
deactivate_online_tools_setting() | |
the_main_window.update_from_thread("Disabled Upsonic Tiger Tools - Low Capability (Not Recommended)") | |
settings_dialog.close() | |
online_tools_button.clicked.connect(deactivate_online_tools_) | |
else: | |
def activate_online_tools_(): | |
activate_online_tools_setting() | |
the_main_window.update_from_thread("Enabled Upsonic Tiger Tools - More Capability (Recommended)") | |
settings_dialog.close() | |
online_tools_button.clicked.connect(activate_online_tools_) | |
auto_stop_recording_button = QPushButton("Enable Auto Stop Recording") | |
settings_dialog.layout().addWidget(auto_stop_recording_button) | |
if is_auto_stop_recording_setting_active(): | |
auto_stop_recording_button.setText("Disable Auto Stop Recording") | |
def deactivate_auto_stop_recording_(): | |
deactivate_auto_stop_recording_setting() | |
the_main_window.update_from_thread("Disabled Auto Stop Recording") | |
settings_dialog.close() | |
auto_stop_recording_button.clicked.connect(deactivate_auto_stop_recording_) | |
else: | |
def activate_auto_stop_recording_(): | |
activate_auto_stop_recording_setting() | |
the_main_window.update_from_thread("Enabled Auto Stop Recording") | |
settings_dialog.close() | |
auto_stop_recording_button.clicked.connect(activate_auto_stop_recording_) | |
api_key_label = QLabel("Wakeword - Pvporcupine API Key") | |
settings_dialog.layout().addWidget(api_key_label) | |
api_key_input = QLineEdit() | |
api_key = load_pvporcupine_api_key() | |
api_key_input.setText(api_key) | |
settings_dialog.layout().addWidget(api_key_input) | |
save_button = QPushButton("Save") | |
def save_api_key_(api_key): | |
first_time = True | |
if api_key != "CHANGE_ME": | |
first_time = False | |
save_pvporcupine_api_key(api_key) | |
the_main_window.update_from_thread("Wake word activated, just say 'Her Computer' or jarvis to activate the assistant") | |
if first_time: | |
the_main_window.wake_word_trigger() | |
settings_dialog.close() | |
save_button.clicked.connect(lambda: save_api_key_(api_key_input.text())) | |
settings_dialog.layout().addWidget(save_button) | |
wake_word_button = QPushButton("Enable Wake Word") | |
settings_dialog.layout().addWidget(wake_word_button) | |
missing_parts = False | |
try: | |
import pyaudio | |
except: | |
missing_parts = True | |
if api_key == "CHANGE_ME": | |
wake_word_button.setText("Please Set Pvporcupine API Key First") | |
elif missing_parts: | |
wake_word_button.setText("Please Install gpt-computer-assistant[wakeword]") | |
else: | |
if is_wake_word_active(): | |
wake_word_button.setText("Disable Wake Word") | |
def deactivate_wake_word_(): | |
deactivate_wake_word() | |
the_main_window.update_from_thread("Disabled Wake Word") | |
the_main_window.wake_word_active = False | |
settings_dialog.close() | |
wake_word_button.clicked.connect(deactivate_wake_word_) | |
else: | |
def activate_wake_word_(): | |
activate_wake_word() | |
the_main_window.update_from_thread("Enabled Wake Word") | |
the_main_window.wake_word_active = True | |
the_main_window.wake_word_trigger() | |
settings_dialog.close() | |
wake_word_button.clicked.connect(activate_wake_word_) | |
wake_word_screen_button = QPushButton("Enable Screen Input for Wake Word Mode") | |
settings_dialog.layout().addWidget(wake_word_screen_button) | |
if is_wake_word_screen_setting_active(): | |
wake_word_screen_button.setText("Disable Screen Input for Wake Word Mode") | |
def deactivate_auto_stop_recording_(): | |
deactivate_wake_word_screen_setting() | |
the_main_window.update_from_thread("Disabled Screen Input for Wake Word Mode") | |
settings_dialog.close() | |
wake_word_screen_button.clicked.connect(deactivate_auto_stop_recording_) | |
else: | |
def activate_auto_stop_recording_(): | |
activate_wake_word_screen_setting() | |
the_main_window.update_from_thread("Enabled Screen Input for Wake Word Mode") | |
settings_dialog.close() | |
wake_word_screen_button.clicked.connect(activate_auto_stop_recording_) | |
continuously_conversations_button = QPushButton("Enable Continuously Conversations") | |
settings_dialog.layout().addWidget(continuously_conversations_button) | |
if is_continuously_conversations_setting_active(): | |
continuously_conversations_button.setText("Disable Continuously Conversations") | |
def deactivate_auto_stop_recording_(): | |
deactivate_continuously_conversations_setting() | |
the_main_window.update_from_thread("Disabled Continuously Conversations") | |
settings_dialog.close() | |
continuously_conversations_button.clicked.connect(deactivate_auto_stop_recording_) | |
else: | |
def activate_auto_stop_recording_(): | |
activate_continuously_conversations_setting() | |
the_main_window.update_from_thread("Enabled Continuously Conversations") | |
settings_dialog.close() | |
continuously_conversations_button.clicked.connect(activate_auto_stop_recording_) | |
settings_dialog.exec_() | |