-
Notifications
You must be signed in to change notification settings - Fork 0
/
assistant_with_gui.py
114 lines (98 loc) · 2.92 KB
/
assistant_with_gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import traceback
from typing import List
import pyttsx3
import speech_recognition as sr
import wikipedia
import webbrowser
import datetime
import os
import time
import requests
from plyer import notification
from urllib.parse import quote
import keyboard
import threading
import logging
from collections import deque
import importlib.util
import requests
# (import) skills
import skills.openapplications as openapplications
try:
import skills.findfiles as findfiles
except:
pass
try:
import skills.weather as weather
except:
pass
try:
import skills.chat as chat
except:
pass
try:
import skills.fonts as fonts
except:
pass
try:
import skills.sendmail as sendmail
except:
pass
try:
import skills.definition as definition
except:
pass
from assistant_wrapper import Wrapper
from gui import GraphicalUserInterface
class GUI_Assistant(Wrapper):
def __init__(self, gui_instance):
super().__init__(name="Aira", mode=1, gui_instance=gui_instance)
self.app_gui = None # Initialize app_gui attribute
def gui_process_command(self, query):
"""
Process a command from the GUI, show user input, and provide appropriate responses based on the query.
Parameters:
query (str): The command/query received from the GUI input.
Returns:
None
"""
query = query.lower()
self.assistant_gui_show_user_input(query)
if "the time" in query:
strTime = datetime.datetime.now().strftime("%H:%M:%S")
response = f"It is currently {strTime}"
self.assistant_output(response)
elif "exit" in query:
self.assistant_output("Thanks for giving me your time")
self.farewell()
else:
response = "I don't understand that yet"
self.assistant_output(response)
def start_gui(self):
if self.gui_instance is None:
# Pass self.gui_process_command as process_command_func
self.app_gui = GraphicalUserInterface(
process_command_func=self.gui_process_command
)
self.app_gui.start_gui()
return self.app_gui
else:
print("GUI instance already provided.")
return self.gui_instance
if __name__ == "__main__":
try:
# Create an instance of AssistantGUI
assistant_gui_instance = GraphicalUserInterface()
# Create an instance of AssistantWithGUI with the gui_instance provided
assistant_with_gui = GUI_Assistant(
gui_instance=assistant_gui_instance
)
# Set the process_command_func of the AssistantGUI instance
assistant_gui_instance.process_command_func = (
assistant_with_gui.gui_process_command
)
# Start the GUI
assistant_gui_instance.start_gui()
except Exception as e:
print(f"An error occurred: {e}")
traceback.print_exc()