Esempio n. 1
0
class RegEstablecimientos:
    def __init__(self, padre):
        self.padre = padre
        arch = leerglade.leer('nav_establecimientos.glade')
        self.nav = arch.get_object
        self.nav('window1').set_title('Registro de establecimientos')
        self.nav('window1').set_default_size(800, 600)
        self.nav('window1').set_position(1)
        self.nav('bt_nuevo').set_label('Nuevo')
        self.nav('bt_editar').set_label('Editar')
        self.nav('bt_eliminar').set_label('Eliminar')
        self.nav('bt_cerrar').set_label('Cerrar')
        self.entity = Establecimientos()
        self.empresas = Empresas()
        self.nav('window1').set_transient_for(self.padre.main('window1'))
        self.nav('window1').set_modal(True)
        self.nav('window1').set_border_width(5)
        self.nav('window1').show_all()
        arch.connect_signals(self)
        self.consultar()


    def consultar(self, widget=None):
        self.nav('liststore1').clear()
        color = False
        for row in self.entity.est_all():
            if not color:
                t_color = "#FFFFDA"
                color = True
            else:
                t_color = "#A9FFA9"
                color = False
            self.nav('liststore1').append([str(row[0]), row[1], row[2], row[3], t_color])

        if len(self.nav('liststore1')) == 0:
            self.nav('bt_editar').set_sensitive(False)
            self.nav('bt_eliminar').set_sensitive(False)
            self.nav('label1').set_text(' 0 Registros Encontrados')
        else:
            self.nav('bt_editar').set_sensitive(True)
            self.nav('bt_eliminar').set_sensitive(True)
            self.nav('label1').set_text(' %s Registros Encontrados' % len(self.nav('liststore1')))

        self.nav('entry1').set_text(self.nav('entry1').get_text().upper())

    def bt_nuevo_cb(self, widget):
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.get_max()))
        self.frm('entry1').grab_focus()

    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(idestablecimiento=pk)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.idestablecimiento))
        self.frm('entry2').set_text(self.entity.direccion)
        self.frm('entry3').set_text(self.entity.telefono)
        self.set_active_combo(self.entity.idempresa)



    def bt_eliminar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo")
            return
        res = msg.preguntaMsgBox(self.nav('window1'), "Eliminar Registro", "Estas Seguro?")

        if res == -8:
            kwargs = {
                self.entity.__pks__[0]: pk
            }
            datos = self.entity.find(**kwargs)
            if self.entity.delete():
                self.consultar()

    def bt_cerrar_cb(self, widget):
        self.nav('window1').destroy()

    def formulario(self):
        arch = leerglade.leer('frm_establecimientos.glade')
        self.frm = arch.get_object
        self.frm('window1').set_default_size(500, -1)
        self.frm('window1').set_transient_for(self.nav('window1'))
        self.frm('window1').set_position(1)
        self.frm('window1').set_modal(True)
        self.frm('window1').set_border_width(5)
        self.frm('window1').set_title('Formulario de Establecimientos')
        self.frm('window1').show_all()
        arch.connect_signals(self)
        self.validar_entrys(None)
        self.cargar_combos()

    def validar_entrys(self, widget=None):
        if len(self.frm('entry1').get_text()) == 0 \
            or len(self.frm('entry2').get_text()) == 0\
            or len(self.frm('entry3').get_text()) == 0:
            self.frm('button2').set_sensitive(False)
        else:
            self.frm('button2').set_sensitive(True)

        if widget is not None:
            #convierte todos los valores de los campos en mayusculas
            widget.set_text(widget.get_text().upper())

    def guardar_cb(self, widget):
        it = self.frm('combobox1').get_active()
        self.entity.idestablecimiento = self.frm('entry1').get_text()
        self.entity.direccion = self.frm('entry2').get_text()
        self.entity.telefono = self.frm('entry3').get_text()
        self.entity.idempresa = self.frm('liststore1')[it][0].split('-')[0]

        if self.entity.save():
            self.frm('window1').destroy()
            self.consultar()

    def cancelar_cb(self, widget):
        self.frm('window1').destroy()

    def cargar_combos(self):
        for row in self.empresas.all(order_by=1, razon_social__ilike="%%"):
            self.frm('liststore1').append([str(row[0])+'-'+row[1]])
        self.frm('combobox1').set_active(0)

    def set_active_combo(self, pk):
        it = 0
        for row in self.frm('liststore1'):
            if row[0].split('-')[0] == str(pk):
                self.frm('combobox1').set_active(it)
                break
            it += 1

    def set_focus(self, widget):
        widget.get_toplevel().child_focus(Gtk.DirectionType.TAB_FORWARD)