def setDao(self, dao):
     self.dao = dao
     if dao is None:
         self.dao = Banca()
     self._refresh()
     return self.dao
 def updateDao(self):
     self.dao = Banca().getRecord(id=self.dao.id)
class AnagraficaBancheEdit(GladeWidget):
    """ Dettaglio dell'anagrafica delle banche """

    def __init__(self, anagrafica, dao=None, codice=None):
        GladeWidget.__init__(self,
                             root='banca_edit_window',
                             path='_anagrafica_banche_edit.glade')
        self.codice = codice
        self.setDao(dao)
        self.anagrafica = anagrafica
        self._refresh()

    def setDao(self, dao):
        self.dao = dao
        if dao is None:
            self.dao = Banca()
        self._refresh()
        return self.dao

    def updateDao(self):
        self.dao = Banca().getRecord(id=self.dao.id)

    def _refresh(self):
        if self.dao and self.dao.denominazione:
            self.denominazione_banca_entry.set_text(str(self.dao.denominazione))
            self.agenzia_entry.set_text(str(self.dao.agenzia or ''))
            self.iban_entry.set_text(str(self.dao.iban or ''))
            self.abi_entry.set_text(str(self.dao.abi or ''))
            self.cab_entry.set_text(str(self.dao.cab or ''))
            self.bic_swift_entry.set_text(str(self.dao.bic_swift or ''))

    def saveDao(self, tipo=None):
        denominazione = self.denominazione_banca_entry.get_text()
        if not denominazione:
            obligatoryField(self.anagrafica.getTopLevel(),
                    self.denominazione_banca_entry)
            return
        self.dao.denominazione = denominazione
        self.dao.agenzia = self.agenzia_entry.get_text()
        self.dao.bic_swift = self.bic_swift_entry.get_text()
        self.dao.abi = self.abi_entry.get_text()
        self.dao.cab = self.cab_entry.get_text()

        iban = self.iban_entry.get_text() or ''
        if iban:
            try:
                cc, cs, cin, abi, cab, conto = dividi_iban(iban)
            except:
                messageError(msg="Il codice IBAN inserito non è corretto.",
                                   transient=self.getTopLevel())
                return
            else:
                self.dao.abi = abi
                self.dao.cab = cab
                self.dao.iban = iban
        else:
            self.dao.iban = ''

        self.dao.persist()

    def deleteDao(self):
        if self.dao and self.dao.denominazione:
            self.dao.delete()

    def on_elimina_banca_button_clicked(self, button):
        self.deleteDao()
        self.anagrafica.refresh()
#        self.duplica_button.set_sensitive(False)
        self.anagrafica.record_new_button.set_sensitive(True)
        self.anagrafica.record_new_menu.set_sensitive(True)

        self.anagrafica.record_edit_button.set_sensitive(False)
        self.anagrafica.record_edit_menu.set_sensitive(False)

        self.anagrafica.record_save_button.set_sensitive(False)
        self.anagrafica.record_save_menu.set_sensitive(False)

        self.anagrafica.record_cancel_button.set_sensitive(False)
        self.anagrafica.record_cancel_menu.set_sensitive(False)

        self.anagrafica.record_undo_button.set_sensitive(False)
        self.anagrafica.record_undo_menu.set_sensitive(False)

        self.anagrafica.record_delete_button.set_sensitive(False)
        self.anagrafica.record_delete_menu.set_sensitive(False)
        self.getTopLevel().destroy()
#        self.anagrafica.setToolTip(False)
        self.anagrafica.setFocus()

    def on_ok_banche_edit_button_clicked(self, button):
        self.saveDao()
        self.anagrafica.refresh()

        self.anagrafica.record_new_button.set_sensitive(True)
        self.anagrafica.record_new_menu.set_sensitive(True)
#        self.duplica_button.set_sensitive(False)
        self.anagrafica.record_edit_button.set_sensitive(False)
        self.anagrafica.record_edit_menu.set_sensitive(False)

        self.anagrafica.record_save_button.set_sensitive(False)
        self.anagrafica.record_save_menu.set_sensitive(False)

        self.anagrafica.record_cancel_button.set_sensitive(False)
        self.anagrafica.record_cancel_menu.set_sensitive(False)

        self.anagrafica.record_undo_button.set_sensitive(False)
        self.anagrafica.record_undo_menu.set_sensitive(False)

        self.anagrafica.record_delete_button.set_sensitive(False)
        self.anagrafica.record_delete_menu.set_sensitive(False)
        self.getTopLevel().destroy()
#        self.anagrafica.setToolTip(False)
        self.anagrafica.setFocus()

    def on_chiudi_banche_edit_button_clicked(self, button):
#        self.anagrafica.refresh()
#        self.anagrafica.anagrafica_treeview.grab_focus()
        self.anagrafica.filterTopLevel.set_sensitive(True)
#        self.anagrafica.anagrafica_filter_navigation_hbox.set_sensitive(True)
#        self.anagrafica.anagrafica_filter_frame.set_sensitive(True)
#        self.anagrafica.anagrafica_treeview_set_edit(False)
#        self.anagrafica.anagrafica_treeview.set_headers_clickable(True)
#        self.anagrafica.anagrafica_treeview.set_enable_search(True)

        self.anagrafica.refresh()

        self.anagrafica.record_new_button.set_sensitive(True)
        self.anagrafica.record_new_menu.set_sensitive(True)
#        self.duplica_button.set_sensitive(False)
        self.anagrafica.record_edit_button.set_sensitive(False)
        self.anagrafica.record_edit_menu.set_sensitive(False)

        self.anagrafica.record_save_button.set_sensitive(False)
        self.anagrafica.record_save_menu.set_sensitive(False)

        self.anagrafica.record_cancel_button.set_sensitive(False)
        self.anagrafica.record_cancel_menu.set_sensitive(False)

        self.anagrafica.record_undo_button.set_sensitive(False)
        self.anagrafica.record_undo_menu.set_sensitive(False)

        self.anagrafica.record_delete_button.set_sensitive(False)
        self.anagrafica.record_delete_menu.set_sensitive(False)
        self.getTopLevel().destroy()
#        self.anagrafica.setToolTip(False)
        self.anagrafica.setFocus()