[ Au197/79 @ 24.07.2003. 13:38 ] @
Radim u wxPython-u program za koji sam dobio ideju od HTTrack-a. Svidelo mi se što on stvara jedan index.html falj kojim objedinjuje razne projekte. Tako sam ja došao na ideju da napišem program koji će stvarati takve fajleove u pomoću kojih ću moći da povežem sve knjige i tutuorijal koje imam u elektronskom obliku (kao html, ps i pdf). Već sam manje više ostvario ono što sam zamislio ali mi se javio jedan propust kojeg me mogu da se oslobodim a problem je više u domenu wx-a nego pitona. Program parsira html fajlove i izdvaja iz njega linkove ka e-knjgama. On od svakog linka stvara objekat klase Veza sa atributom koji označava ime veze (tj. ono između <a ...> i </a>) i putanjom (ono u href). Ovi objekti se smeštaju u niz koji sam ja nazvao veze. Od atributa objekata u nizu vrši se popunjavanje tabele (wxGrid). Znači tabela samo odslikava niz veze. Polja u 1. koloni tabele su imena veza i ona se mogu menjati. Kada se izmeni vrednost i kada se selektuje drugo polje tabele javlja se GrigCellChange događaj koji menja atribut u odgovarajućem objektu niza veze. Problem je u situacii kada se izvrši promena polja tabele, a ne selektuje se drugo polje. Tada nema GrigCellChange događaja. I ako se u toj situaciji pritisne neko od dugmića nastaje haos. Počinje da se odigrava događaj vezan za to dugme (npr. Novi ili Otvori). On ili obriše ili učita nove objekte u niz veze. Tabela će prvo izbrisati sve redove da bi ih popunila sa novim stanjem niza veze. U toku tog brisanja će se okinuti GrigCellChange koji će ili pokušati da pristupi članu niza koji ne postoji => IndexError, ili će promeniti totalno deseti objekat klase Veza, koji pripada nekom drugom fajlu koji je u međuvremenu isparsiran. Kako da napravim da se GrigCellChange javi čim se klikne negde van tabele i to pre nego što se javi događaj povezan sa elementom na koji se klikće? Prikačio sam čitav program i napisao sam gomilu print naredbi iz kojih se vidi kako problem nastaje. |