diff --git a/app/frontend/components/login.py b/app/frontend/components/login.py index 02f559e0b3036b8e1a11763e16482d88688c43a6..935ffaf1b47e638371bf47e29edbea7054882875 100644 --- a/app/frontend/components/login.py +++ b/app/frontend/components/login.py @@ -1,5 +1,5 @@ import ttkbootstrap as tb -from ttkbootstrap.constants import * +import ttkbootstrap.constants from tkinter import messagebox import requests # Import requests for API communication @@ -7,10 +7,6 @@ import requests # Import requests for API communication def login_frame(parent, switch_func, api_url): # Added api_url parameter frame = tb.Frame(parent) - def login(): - email = entry_email.get() - password = entry_password.get() - def login(): email = entry_email.get() password = entry_password.get() @@ -38,22 +34,14 @@ def login_frame(parent, switch_func, api_url): # Added api_url parameter tb.Label(frame, text="Login", font=("Helvetica", 18, "bold")).pack(pady=10) - tb.Label(frame, text="Email:").pack(pady=5) - entry_email = tb.Entry(frame, bootstyle="info") - entry_email.pack(pady=5) tb.Label(frame, text="Email:").pack(pady=5) entry_email = tb.Entry(frame, bootstyle="info") entry_email.pack(pady=5) - tb.Label(frame, text="Password:").pack(pady=5) - entry_password = tb.Entry(frame, bootstyle="info", show="*") - entry_password.pack(pady=5) tb.Label(frame, text="Password:").pack(pady=5) entry_password = tb.Entry(frame, bootstyle="info", show="*") entry_password.pack(pady=5) - btn_login = tb.Button(frame, text="Login", bootstyle="primary", command=login) - btn_login.pack(pady=15) btn_login = tb.Button(frame, text="Login", bootstyle="primary", command=login) btn_login.pack(pady=15) diff --git a/app/frontend/components/register.py b/app/frontend/components/register.py index eda5e9db03519b539c97d59e9615ab5e131d42a8..ee85f6c24e173b8970b8edd6ce7b3cfd5f52ed3e 100644 --- a/app/frontend/components/register.py +++ b/app/frontend/components/register.py @@ -1,73 +1,8 @@ import ttkbootstrap as tb -from ttkbootstrap.constants import * +import ttkbootstrap.constants from tkinter import messagebox import requests # Import requests for API communication -<<<<<<< HEAD -def register_frame(parent, switch_func, api_url): # Added api_url parameter - frame = tb.Frame(parent) - - def register(): - username = entry_username.get() - email = entry_email.get() - phone_number = entry_phone.get() - password = entry_password.get() - confirm_password = entry_confirm_password.get() - - if not username or not email or not phone_number or not password or not confirm_password: - messagebox.showwarning("Input Error", "All fields are required!") - return - - if password != confirm_password: - messagebox.showerror("Password Error", "Passwords do not match!") - return - - # Sending registration data to backend - response = requests.post(f"{api_url}/auth/signup", json={ - "username": username, - "email": email, - "phone_number": phone_number, - "password": password - }) - - try: - response_data = response.json() - if response.status_code == 200: - messagebox.showinfo("Registration Successful", f"Welcome, {username}!") - switch_func("login") # Switch to login after successful registration - else: - messagebox.showerror("Registration Failed", response_data.get("detail", "Unknown error")) - except requests.exceptions.JSONDecodeError: - messagebox.showerror("Registration Failed", f"Server returned an invalid response.") - - tb.Label(frame, text="Register", font=("Helvetica", 18, "bold")).pack(pady=10) - - tb.Label(frame, text="Username:").pack(pady=5) - entry_username = tb.Entry(frame, bootstyle="info") - entry_username.pack(pady=5) - - tb.Label(frame, text="Email:").pack(pady=5) - entry_email = tb.Entry(frame, bootstyle="info") - entry_email.pack(pady=5) - - tb.Label(frame, text="Phone Number:").pack(pady=5) - entry_phone = tb.Entry(frame, bootstyle="info") - entry_phone.pack(pady=5) - - tb.Label(frame, text="Password:").pack(pady=5) - entry_password = tb.Entry(frame, bootstyle="info", show="*") - entry_password.pack(pady=5) - - tb.Label(frame, text="Confirm Password:").pack(pady=5) - entry_confirm_password = tb.Entry(frame, bootstyle="info", show="*") - entry_confirm_password.pack(pady=5) - - btn_register = tb.Button(frame, text="Register", bootstyle="success", command=register) - btn_register.pack(pady=15) - - tb.Button(frame, text="Already have an account? Login", bootstyle="link", - command=lambda: switch_func("login")).pack() -======= def register_frame(parent, switch_func, api_url): # Added api_url parameter frame = tb.Frame(parent) @@ -151,6 +86,5 @@ def register_frame(parent, switch_func, api_url): # Added api_url parameter bootstyle="link", command=lambda: switch_func("login"), ).pack() ->>>>>>> 510d2b0 (resolve merge) return frame diff --git a/app/frontend/main.py b/app/frontend/main.py index eb1b435db1c7121097478cba72550a1bfc204745..5d1dd42c4b5278983067759bcbbe1bbb55de06ce 100644 --- a/app/frontend/main.py +++ b/app/frontend/main.py @@ -1,8 +1,6 @@ import ttkbootstrap as tb from components.login import login_frame from components.register import register_frame -from components.login import login_frame -from components.register import register_frame # Backend API URL API_URL = "http://127.0.0.1:8000" @@ -18,7 +16,6 @@ def switch_frame(frame_name): # Create main window root = tb.Window(themename="superhero") -root = tb.Window(themename="superhero") root.title("Shopping App") root.geometry("900x800") @@ -28,12 +25,7 @@ register = register_frame(root, switch_frame, API_URL) for frame in (login, register): frame.place(relx=0, rely=0.2, relwidth=1, relheight=1) -# Create Frames -login = login_frame(root, switch_frame, API_URL) -register = register_frame(root, switch_frame, API_URL) -for frame in (login, register): - frame.place(relx=0, rely=0.2, relwidth=1, relheight=1) # Show Login Frame First switch_frame("login") diff --git a/run_app.py b/run_app.py new file mode 100644 index 0000000000000000000000000000000000000000..523ca5b5dfc9c244f2bc780dcd31179b840aaaa0 --- /dev/null +++ b/run_app.py @@ -0,0 +1,21 @@ +import threading +import uvicorn +from app.backend.main import app # Your FastAPI app +import os + + +def run_fastapi(): + uvicorn.run(app, host="127.0.0.1", port=8000) + + +def start_tkinter_app(): + os.system("python app/frontend/main.py") + + +if __name__ == "__main__": + # Start FastAPI in a separate thread + fastapi_thread = threading.Thread(target=run_fastapi, daemon=True) + fastapi_thread.start() + + # Start Tkinter in the main thread + start_tkinter_app()