class CimModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon=None): self._kon = kon self._cim = None super().__init__(szulo, title="Cím módosítása") def body(self, szulo): self._nev_valaszto = Valaszto("név", self._nevsor(), self) self._nev_valaszto.valaszto.bind("<<ComboboxSelected>>", self._elerhetosegek) self._nev_valaszto.pack(ipadx=2, ipady=2) self._cim_valaszto = Valaszto("módosítandó cím", self._cimek(), self) self._cim_valaszto.valaszto.bind("<<ComboboxSelected>>", self._kiir_elerhetoseg) self._cim_valaszto.pack(ipadx=2, ipady=2) self._cim_urlap = CimUrlap(self) self._cim_urlap.pack(ipadx=2, ipady=2) self._kiir_elerhetoseg(1) return self._nev_valaszto.valaszto def validate(self): if not self._cim_valaszto.elem: return False else: self._cim = self._uj_cim() if not self._cim: messagebox.showwarning("Hiányos adat!", "Legalább a helységet add meg!", parent=self) return False else: return True def apply(self): if self._cim.ment(self._kon.szemely): print("Bejegyzés módosítva.") else: print("Nem sikerült módosítani.") self._elerhetosegek(1) def _nevsor(self): return sorted(map(lambda szemely: Szemely(**szemely), self._kon.szemely.select("szemely")), key=repr) def _cimek(self): szemely = self._nev_valaszto.elem return [Cim(**cim) for cim in self._kon.szemely.select("cim", szemely=szemely.azonosito)] def _elerhetosegek(self, event): self._cim_valaszto.beallit(self._cimek()) self._kiir_elerhetoseg(1) def _kiir_elerhetoseg(self, event): self._cim_urlap.beallit(self._cim_valaszto.elem or Cim()) def _uj_cim(self): cim = self._cim_valaszto.elem if cim: cim.adatok = self._cim_urlap.export() return cim
class MunkareszModositoUrlap(simpledialog.Dialog): def __init__(self, szulo, kon): self._kon = kon # super() előtt kell legyen super().__init__(szulo, title="Munkarész módosítása") def body(self, szulo): self._munkaresz_valaszto = Valaszto("munkarész", self._munkareszek(), self) self._munkaresz_valaszto.set_callback(self._munkaresz_megjelenit) self._munkaresz_valaszto.pack(ipadx=2, ipady=2) munkaresz = LabelFrame(self, text="munkarész") self._munkaresz_urlap = MunkareszUrlap(munkaresz) self._munkaresz_urlap.pack(ipadx=2, ipady=2) munkaresz.pack(fill=X, padx=2, pady=2) cim = LabelFrame(self, text="munkarész címe") self._cim_urlap = CimUrlap(cim) self._cim_urlap.pack(ipadx=2, ipady=2) cim.pack(padx=2, pady=2) jelleg = LabelFrame(self, text="munkarész jellege") self._jelleg_urlap = JellegUrlap(jelleg) self._jelleg_urlap.pack(ipadx=2, ipady=2) jelleg.pack(fill=X, padx=2, pady=2) self._munkaresz_megjelenit(1) return self._munkaresz_valaszto.valaszto def validate(self): munkaresz = self._munkaresz_urlap.export() cim = self._cim_urlap.export() jelleg = self._jelleg_urlap.export() if not munkaresz: messagebox.showwarning("Hiányos adat!", "Legalább a nevet add meg!", parent=self) return False if munkaresz.meglevo(self._kon.projekt) and cim.meglevo( self._kon.projekt) and jelleg.meglevo(self._kon.projekt): messagebox.showwarning("Létező munkarész!", "Pontosítsd!", parent=self) return False return True def apply(self): munkaresz, cim, jelleg = self._modositott_munkaresz() if munkaresz.ment(self._kon.projekt) and cim.ment( self._kon.projekt) and jelleg.ment(self._kon.projekt): print("Bejegyzés mentve.") else: print("Nem sikerült elmenteni!") def _munkareszek(self): return sorted(map(lambda jelleg: Jelleg(kon=self._kon, **jelleg), self._kon.projekt.select("jelleg")), key=repr) def _munkaresz_kivalaszt(self, event): self._munkaresz_valaszto.beallit(self._munkareszek()) self._munkaresz_megjelenit(1) def _munkaresz_megjelenit(self, event): munkaresz, cim, jelleg = self._meglevo_munkaresz() self._munkaresz_urlap.beallit(munkaresz) self._cim_urlap.beallit(cim) self._jelleg_urlap.beallit(jelleg) def _meglevo_munkaresz(self): jelleg = self._munkaresz_valaszto.elem munkaresz = self._kon.projekt.select( "munkaresz", azonosito=jelleg.munkaresz).fetchone() munkaresz = Munkaresz(**munkaresz) cim = self._kon.projekt.select( "cim", munkaresz=munkaresz.azonosito).fetchone() cim = Cim(**cim) return (munkaresz, cim, jelleg) def _modositott_munkaresz(self): munkaresz, cim, jelleg = self._meglevo_munkaresz() munkaresz.adatok = self._munkaresz_urlap.export() cim.adatok = self._cim_urlap.export() jelleg.adatok = self._jelleg_urlap.export() return (munkaresz, cim, jelleg)