def setDao(self, dao):
     if dao is None:
         # Crea un nuovo Dao vuoto
         self.dao = Promemoria()
         self._is_changing = False
     else:
         # Ricrea il Dao con una connessione al DBMS SQL
         self.dao = Promemoria().getRecord(id= dao.id)
         self._is_changing = True
     self._refresh()
     return self.dao
class AnagraficaPromemoriaEdit(AnagraficaEdit):
    """ Modifica un record dell'anagrafica dei clienti """

    def __init__(self, anagrafica, selectedData=None):
        AnagraficaEdit.__init__(self,
                                anagrafica,
                                'Dati promemoria',
                                root='anagrafica_promemoria_detail_table',
                                path='_anagrafica_promemoria_elements.glade')
        self._widgetFirstFocus = self.data_scadenza_entry
        self.selectedData = selectedData

    def draw(self,cplx=False):
        textBuffer = gtk.TextBuffer()
        self.descrizione_textview.set_buffer(textBuffer)
#        self.annotazioneHTML = createHtmlObj(self)
#        self.annotazione_scrolled.add(self.annotazioneHTML)
        textBuffer = gtk.TextBuffer()
        self.annotazione_textview.set_buffer(textBuffer)
        fillComboboxIncaricatiPromemoria(self.incaricato_combobox_entry)
        fillComboboxAutoriPromemoria(self.autore_combobox_entry)

    def setDao(self, dao):
        if dao is None:
            # Crea un nuovo Dao vuoto
            self.dao = Promemoria()
            self._is_changing = False
        else:
            # Ricrea il Dao con una connessione al DBMS SQL
            self.dao = Promemoria().getRecord(id= dao.id)
            self._is_changing = True
        self._refresh()
        return self.dao

    def setPreavvisoSpinLimit(self, diffe):
        adj = self.giorni_preavviso_entry.get_adjustment()
        adj.set_upper(diffe)

    def on_data_scadenza_entry_focus_out_event(self, entry, event):
        differenze = 0
        data_scadenza = stringToDateTime(self.data_scadenza_entry.get_text())
        data_inserimento = stringToDateTime(self.data_inserimento_entry.get_text())
        if data_scadenza:
            differenze = int((data_scadenza - data_inserimento).days)
            self.setPreavvisoSpinLimit(differenze)

    def _refresh(self):
        self.data_scadenza_entry.set_text(dateTimeToString(self.dao.data_scadenza) or '')
        self.oggetto_entry.set_text(self.dao.oggetto or '')
        self.incaricato_combobox_entry.get_child().set_text(self.dao.incaricato or '')
        self.autore_combobox_entry.get_child().set_text(self.dao.autore or '')
        self.descrizione_textview.get_buffer().set_text(self.dao.descrizione or '')
#        static = self.dao.annotazione or "test"
#        pageData = {"file": "promemoria_annotazioni.html",
#                    "static":static,
#                    }
#        self.hhttmmll = renderTemplate(pageData)
#        renderHTML(self.annotazioneHTML,self.hhttmmll)
        self.annotazione_textview.get_buffer().set_text(self.dao.annotazione or '')
        self.riferimento_combobox_entry.get_child().set_text(self.dao.riferimento or '')
        self.giorni_preavviso_entry.set_text(str(self.dao.giorni_preavviso or ''))
        self.in_scadenza_checkbutton.set_active(self.dao.in_scadenza or False)
#        self.setPreavvisoSpinLimit()
        if self._is_changing:
            self.scaduto_checkbutton.set_property('visible',True)
            self.completato_checkbutton.set_property('visible',True)
            self.scaduto_checkbutton.set_active(self.dao.scaduto)
            self.completato_checkbutton.set_active(self.dao.completato)
            self.data_inserimento_entry.set_text(dateTimeToString(self.dao.data_inserimento))
        else:
            self.scaduto_checkbutton.set_property('visible',False)
            self.completato_checkbutton.set_property('visible',False)
            if self.selectedData:
                self.data_inserimento_entry.set_text(self.selectedData)
            else:
                self.data_inserimento_entry.set_text(dateTimeToString(datetime.datetime.now()) or '')

        fillComboboxIncaricatiPromemoria(self.incaricato_combobox_entry)
        fillComboboxAutoriPromemoria(self.autore_combobox_entry)

    def saveDao(self, tipo=None):
        if self.data_scadenza_entry.get_text() == '':
            obligatoryField(self.dialogTopLevel, self.data_scadenza_entry,
                     msg = 'Data scadenza. \nCampo obbligatorio')
        if self.oggetto_entry.get_text() == '':
            obligatoryField(self.dialogTopLevel, self.oggetto_entry,
                     msg = 'Oggetto. \nCampo obbligatorio')
        self.dao.data_inserimento = stringToDateTime(self.data_inserimento_entry.get_text())
        self.dao.data_scadenza = stringToDateTime(self.data_scadenza_entry.get_text())
        self.dao.oggetto = self.oggetto_entry.get_text()
        #GTK3 +
        self.dao.incaricato = self.incaricato_combobox_entry.get_child().get_text()
        self.dao.autore = self.autore_combobox_entry.get_child().get_text()
        #GTK3 -
        #self.dao.incaricato = self.incaricato_combobox_entry.get_active_text()
        #self.dao.autore = self.autore_combobox_entry.get_active_text()
        textBuffer = self.descrizione_textview.get_buffer()
        self.dao.descrizione = textBuffer.get_text(textBuffer.get_start_iter(), textBuffer.get_end_iter(),True)
        textBuffer = self.annotazione_textview.get_buffer()
        self.dao.annotazione = textBuffer.get_text(textBuffer.get_start_iter(), textBuffer.get_end_iter(),True)
        #GTK3 +
        self.dao.riferimento = self.riferimento_combobox_entry.get_child().get_text()
        #GTK3 -
        #self.dao.riferimento = self.riferimento_combobox_entry.get_active_text()
        if self.giorni_preavviso_entry.get_text() == '':
            self.giorni_preavviso_entry.set_text('0')
            self.in_scadenza_checkbutton.set_active(True)
        self.dao.giorni_preavviso = self.giorni_preavviso_entry.get_text()
        self.dao.in_scadenza = self.in_scadenza_checkbutton.get_active()
        self.dao.scaduto = self.scaduto_checkbutton.get_active()
        self.dao.completato = self.completato_checkbutton.get_active()

        self.dao.persist()

    def on_riferimento_combobox_entry_changed(self, combobox):
        stringContatti = 'Contatti..'
        stringClienti = 'Clienti..'
        stringFornitori = 'Fornitori..'


        def refresh_combobox(anagWindow, tipo):
            if anag.dao is None:
                id = None
            else:
                id = anag.dao.id
            if tipo == 'fornitore':
                res = leggiFornitore(id)
            elif tipo == 'cliente':
                res = leggiCliente(id)
            elif tipo == 'contatto':
                res = leggiContatto(id)

            if "ragioneSociale" in res and res["ragioneSociale"] != '':
                self.riferimento_combobox_entry.get_child().set_text(res["ragioneSociale"])
            else:
                self.riferimento_combobox_entry.get_child().set_text(res["cognome"] + ' ' + res["nome"])
            anag.on_ricerca_window_close(self)

        if combobox.get_child().get_text() == stringClienti:
            from promogest.ui.RicercaComplessaClienti import RicercaComplessaClienti
            anag = RicercaComplessaClienti()
            anag.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            anagWindow = anag.getTopLevel()
            anagWindow.connect("hide", refresh_combobox, 'cliente')
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anag.show_all()
        elif combobox.get_child().get_text() == stringFornitori:
            from promogest.ui.RicercaComplessaFornitori import RicercaComplessaFornitori
            anag = RicercaComplessaFornitori()
            anag.setTreeViewSelectionType(GTK_SELECTIONMODE_SINGLE)
            anagWindow = anag.getTopLevel()
            anagWindow.connect("hide", refresh_combobox, 'fornitore')
            returnWindow = combobox.get_toplevel()
            anagWindow.set_transient_for(returnWindow)
            anag.show_all()
        elif combobox.get_child().get_text() == stringContatti:
            if posso("CN"):
                from promogest.ui.Contatti.RicercaContatti import RicercaContatti
                anag = RicercaContatti()
                anagWindow = anag.getTopLevel()
                anagWindow.connect("hide", refresh_combobox, 'contatto')
                returnWindow = combobox.get_toplevel()
                anagWindow.set_transient_for(returnWindow)
                anag.show_all()
            else:
                fenceDialog()