Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 23 additions & 41 deletions logic/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from PIL import ImageTk, Image
from io import BytesIO
import webbrowser
from ui.ui import UserInterface, create_main_window
from ui.ui import UserInterface
from config.config import AppConfig
from utils.language_util import ImportLanguageDialog
from ui.file_menu import FileMenu
Expand Down Expand Up @@ -53,7 +53,8 @@ def __init__(self, root):

self.available_languages = {lang.name: lang.alpha2 for lang in iso639.languages}
self.server_running = False
self.setup_ui()
#self.setup_ui()

self.bind_events()
self.start_server_thread(start=True)

Expand Down Expand Up @@ -106,29 +107,7 @@ def set_scroll_to_center(self):
self.ui.canvas.configure(scrollregion=self.ui.canvas.bbox("all"))
self.ui.canvas.yview_moveto(0.1)

def setup_ui(self):
self.language_label = ctk.CTkLabel(self.ui.sidebar_frame, text="Switch Display Language:")
self.language_label.grid(row=4, column=0, padx=10, pady=0, sticky="nw")

self.language = tk.StringVar(self.root)
self.language.set("Choose")

self.language_switcher = ctk.CTkOptionMenu(self.ui.sidebar_frame, variable=self.language, state="normal", values=(), width=10)
self.language_switcher.grid(row=5, column=0, padx=10, pady=0, sticky="nwe")
self.language_switcher.configure(values=(), command=lambda choice: self.update_label())

self.imported_languages_label = ctk.CTkLabel(self.ui.sidebar_frame, fg_color="transparent", text_color=("gray10", "#DCE4EE"), text="Imported Languages:")
self.imported_languages_label.grid(row=6, column=0, padx=10, pady=10, sticky="w")

self.server_status_menu_label = ctk.CTkLabel(self.ui.sidebar_frame, fg_color="transparent", font=("", 20), text_color=("gray10", "#DCE4EE"), text=f"Server Status:")
self.server_status_menu_label.grid(row=7, column=0, padx=10, pady=0, sticky="nw")

self.server_status_label = ctk.CTkLabel(self.ui.sidebar_frame, fg_color="transparent", text_color=("gray10", "#DCE4EE"), text=f"{self.url}")
self.server_status_label.grid(row=8, column=0, padx=10, pady=0, sticky="nw")

self.server_indicator = tk.Canvas(self.ui.sidebar_frame, width=12, height=12, bg="red", bd=0, highlightthickness=0)
self.server_indicator.grid(row=7, column=0, padx=10, pady=10, sticky="e")



def bind_events(self):
self.root.bind("<KeyPress>", self.on_key_press)
Expand All @@ -143,24 +122,24 @@ def start_server_thread(self, start):
server_thread.start()
self.server_running = True
if self.local_ip == "127.0.0.1":
self.server_status_label.configure(text=f"LOCAL - No network detected")
self.server_indicator.configure(bg="red")
self.ui.server_status_label.configure(text=f"LOCAL - No network detected")
self.ui.server_indicator.configure(bg="red")
else:
self.server_status_label.configure(text=f"Live\n http://{self.local_ip}:{self.port_number}")
self.server_indicator.configure(bg="green")
self.ui.server_status_label.configure(text=f"Live\n http://{self.local_ip}:{self.port_number}")
self.ui.server_indicator.configure(bg="green")
else:
self.server_running = False
self.server_status_label.configure(text=f"Idle")
self.server_indicator.configure(bg="red")
self.ui.server_status_label.configure(text=f"Idle")
self.ui.server_indicator.configure(bg="red")

def change_port(self):
reserved_ports = [80, 443, 8080, 8443]

if self.server_running:
self.start_server_thread(start=False)
self.server_running = False
self.server_status_label.configure(text=f"Idle")
self.server_indicator.configure(bg="red")
self.ui.server_status_label.configure(text=f"Idle")
self.ui.server_indicator.configure(bg="red")

while True:
new_port = simpledialog.askstring("Change Port", "Enter new port number between 1024 and 65535:", parent=self.root)
Expand All @@ -174,11 +153,11 @@ def change_port(self):
server_thread.start()
self.server_running = True
if self.local_ip == "127.0.0.1":
self.server_status_label.configure(text=f"LOCAL - No network detected")
self.server_indicator.configure(bg="red")
self.ui.server_status_label.configure(text=f"LOCAL - No network detected")
self.ui.server_indicator.configure(bg="red")
else:
self.server_status_label.configure(text=f"Live\n http://{self.local_ip}:{self.port_number}")
self.server_indicator.configure(bg="green")
self.ui.server_status_label.configure(text=f"Live\n http://{self.local_ip}:{self.port_number}")
self.ui.server_indicator.configure(bg="green")
break
else:
tk.messagebox.showerror("Invalid Port", "The selected port is already reserved or invalid.")
Expand Down Expand Up @@ -244,10 +223,9 @@ def import_additional_translation(self, language_name, language_code):
if language_code not in self.language_switcher_values:
self.language_switcher_values.append(language_name)
self.language_switcher_values.sort()
self.language_switcher.configure(values=tuple(self.language_switcher_values))

self.language.set(language_name)
self.update_label()
self.ui.language_switcher.configure(command=lambda choice: self.update_label())
self.language.set(language_name)
self.update_label()


@staticmethod
Expand Down Expand Up @@ -367,6 +345,10 @@ def update_label(self):
self.ui.current_line_label.bind("<Button-1>", lambda event, line=self.current_line: self.set_current_line(line))

self.ui.progress.set(self.current_line / (max(len(self.combined_lines), max(len(lang_lines) for lang_lines in self.additional_languages.values())) - 1))

self.ui.server_status_label.configure(text=f"http://{self.local_ip}:{self.port_number}")
self.ui.server_indicator.configure(bg="green")


for i in range(5):
prev_index = max(self.current_line - (5-i), 0)
Expand Down
7 changes: 3 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ MouseInfo==0.1.3
networkx==3.2.1
numpy==1.26.3
openai==1.6.1
-e git+ssh://git@github.com/odonald/Opera-Access.git@d4f7fc933ce37067654cff218c7c1fb299fc45d8#egg=Opera_Access
outcome==1.3.0.post0
packaging==23.2
pathspec==0.12.1
Expand All @@ -73,9 +72,9 @@ Pygments==2.17.2
pyinstaller==6.0.0
pyinstaller-hooks-contrib==2023.9
PyMsgBox==1.0.9
pyobjc-core==10.2
pyobjc-framework-Cocoa==10.2
pyobjc-framework-Quartz==10.2
#pyobjc-core==10.2
#pyobjc-framework-Cocoa==10.2
#pyobjc-framework-Quartz==10.2
pypandoc==1.12
pyparsing==3.1.1
pyperclip==1.8.2
Expand Down
53 changes: 47 additions & 6 deletions ui/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,20 @@ def __init__(self, root):
self.previous_line_button = self.create_previous_line_button()
self.next_line_button = self.create_next_line_button()
self.line_number_entry = self.create_line_number_entry()
self.go_button = self.create_go_button(None) # The actual command will be set in Application class
self.website_button = self.create_website_button() # This line remains unchanged
self.show_qr_button = self.create_show_qr_button() # Pass the actual command
self.import_translation_button = self.create_import_translation_button() # This line remains unchanged
self.previous_line_button = self.create_previous_line_button() # This line remains unchanged
self.next_line_button = self.create_next_line_button() # This line remains unchanged
self.go_button = self.create_go_button(None)
self.website_button = self.create_website_button()
self.show_qr_button = self.create_show_qr_button()
self.import_translation_button = self.create_import_translation_button()
self.previous_line_button = self.create_previous_line_button()
self.next_line_button = self.create_next_line_button()

# New methods added from setup_ui
self.language_label = self.create_language_label()
self.language_switcher = self.create_language_switcher()
self.imported_languages_label = self.create_imported_languages_label()
self.server_status_menu_label = self.create_server_status_menu_label()
self.server_status_label = self.create_server_status_label()
self.server_indicator = self.create_server_indicator()

def create_website_button(self):
website_button = ctk.CTkButton(self.sidebar_frame, fg_color="transparent", text_color=("gray10", "#DCE4EE"), border_width=2, text="Open Website")
Expand Down Expand Up @@ -131,6 +139,39 @@ def labels_inner_frame(self):
for index, label in enumerate(next_line_labels, start=6):
label.grid(row=index, column=0, padx=10, pady=10)
return current_line_label, prev_line_labels, next_line_labels

def create_language_label(self):
language_label = ctk.CTkLabel(self.sidebar_frame, text="Switch Display Language:")
language_label.grid(row=4, column=0, padx=10, pady=0, sticky="nw")
return language_label

def create_language_switcher(self):
language = tk.StringVar(self.root)
language.set("Choose")
language_switcher = ctk.CTkOptionMenu(self.sidebar_frame, variable=language, state="normal", values=(), width=10)
language_switcher.grid(row=5, column=0, padx=10, pady=0, sticky="nwe")
language_switcher.configure(values=(), command=lambda choice: None) # Update command later
return language_switcher

def create_imported_languages_label(self):
imported_languages_label = ctk.CTkLabel(self.sidebar_frame, fg_color="transparent", text_color=("gray10", "#DCE4EE"), text="Imported Languages:")
imported_languages_label.grid(row=6, column=0, padx=10, pady=10, sticky="w")
return imported_languages_label

def create_server_status_menu_label(self):
server_status_menu_label = ctk.CTkLabel(self.sidebar_frame, fg_color="transparent", font=("", 20), text_color=("gray10", "#DCE4EE"), text=f"Server Status:")
server_status_menu_label.grid(row=7, column=0, padx=10, pady=0, sticky="nw")
return server_status_menu_label

def create_server_status_label(self):
server_status_label = ctk.CTkLabel(self.sidebar_frame, fg_color="transparent", text_color=("gray10", "#DCE4EE"), text=f"")
server_status_label.grid(row=8, column=0, padx=10, pady=0, sticky="nw")
return server_status_label

def create_server_indicator(self):
server_indicator = tk.Canvas(self.sidebar_frame, width=12, height=12, bg="red", bd=0, highlightthickness=0)
server_indicator.grid(row=7, column=0, padx=10, pady=10, sticky="e")
return server_indicator

class Events:
def change_appearance_mode_event(new_appearance_mode: str):
Expand Down