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