pets/visao/componentes/dialogo_adicionar_pet.py

97 lines
3.7 KiB
Python

import tkinter as tk
from tkinter import messagebox
class DialogoAdicionarPet(tk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.result = None
self.title("Adicionar Novo Pet")
self.geometry("300x200")
self.configure(bg="#1e1e1e")
self.transient(parent)
self.grab_set()
self._criar_widgets()
self.wait_window(self)
def _criar_widgets(self):
main_frame = tk.Frame(self, bg="#1e1e1e", padx=20, pady=20)
main_frame.pack(fill="both", expand=True)
tk.Label(main_frame, text="Nome:", bg="#1e1e1e", fg="white").pack(anchor="w")
self.entry_nome = tk.Entry(main_frame, bg="#2c2c2c", fg="white", insertbackground="white")
self.entry_nome.pack(fill="x", pady=(0, 10))
tk.Label(main_frame, text="Espécie:", bg="#1e1e1e", fg="white").pack(anchor="w")
self.entry_especie = tk.Entry(main_frame, bg="#2c2c2c", fg="white", insertbackground="white")
self.entry_especie.pack(fill="x", pady=(0, 20))
botoes_frame = tk.Frame(main_frame, bg="#1e1e1e")
botoes_frame.pack(fill="x")
btn_ok = tk.Button(botoes_frame, text="Adicionar", command=self._on_ok, bg="#4CAF50", fg="white", relief="flat")
btn_ok.pack(side="right", padx=(10, 0))
btn_cancelar = tk.Button(botoes_frame, text="Cancelar", command=self.destroy, bg="#f44336", fg="white", relief="flat")
btn_cancelar.pack(side="right")
self.entry_nome.focus_set()
def _on_ok(self):
nome = self.entry_nome.get().strip()
especie = self.entry_especie.get().strip()
if not nome or not especie:
messagebox.showwarning("Campos Vazios", "Por favor, preencha o nome e a espécie.", parent=self)
return
self.result = {"nome": nome, "especie": especie}
self.destroy()
class DialogoEditarPet(tk.Toplevel):
def __init__(self, parent, pet_atual):
super().__init__(parent)
self.result = None
self.pet_atual = pet_atual
self.title("Editar Pet")
self.geometry("300x200")
self.configure(bg="#1e1e1e")
self.transient(parent)
self.grab_set()
self._criar_widgets()
def _criar_widgets(self):
main_frame = tk.Frame(self, bg="#1e1e1e", padx=20, pady=20)
main_frame.pack(fill="both", expand=True)
tk.Label(main_frame, text="Nome:", bg="#1e1e1e", fg="white").pack(anchor="w")
self.entry_nome = tk.Entry(main_frame, bg="#2c2c2c", fg="white", insertbackground="white")
self.entry_nome.insert(0, self.pet_atual.nome)
self.entry_nome.pack(fill="x", pady=(0, 10))
tk.Label(main_frame, text="Espécie:", bg="#1e1e1e", fg="white").pack(anchor="w")
self.entry_especie = tk.Entry(main_frame, bg="#2c2c2c", fg="white", insertbackground="white")
self.entry_especie.insert(0, self.pet_atual.especie)
self.entry_especie.pack(fill="x", pady=(0, 20))
botoes_frame = tk.Frame(main_frame, bg="#1e1e1e")
botoes_frame.pack(fill="x")
btn_ok = tk.Button(botoes_frame, text="Salvar", command=self._on_ok, bg="#4CAF50", fg="white", relief="flat")
btn_ok.pack(side="right", padx=(10, 0))
btn_cancelar = tk.Button(botoes_frame, text="Cancelar", command=self.destroy, bg="#f44336", fg="white", relief="flat")
btn_cancelar.pack(side="right")
def _on_ok(self):
nome = self.entry_nome.get().strip()
especie = self.entry_especie.get().strip()
if not nome or not especie:
messagebox.showerror("Erro", "Nome e espécie não podem ser vazios.", parent=self)
return
self.result = {"nome": nome, "especie": especie}
self.destroy()