def __init__(self, padre): self.padre = padre arch = leerglade.leer('nav_expediciones.glade') self.nav = arch.get_object self.nav('window1').set_title('Registro de Punto de Expediciones') 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 = PuntoExpediciones() self.establecimeintos = Establecimientos() 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()
class RegExpediciones: def __init__(self, padre): self.padre = padre arch = leerglade.leer('nav_expediciones.glade') self.nav = arch.get_object self.nav('window1').set_title('Registro de Punto de Expediciones') 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 = PuntoExpediciones() self.establecimeintos = Establecimientos() 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.all(order_by=1, descripcion__ilike='%'+self.nav('entry1').get_text()+'%'): if not color: t_color = "#FFFFDA" color = True else: t_color = "#A9FFA9" color = False self.nav('liststore1').append([str(row[0]), row[1], str(row[2]), 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.cargar_combos() self.frm('entry1').set_text(str(self.entity.get_max_ex(self.get_active_text()))) 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) est = sl.get_value(it, 2) except: msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición") return datos = self.entity.find(idpunto_expedicion=pk, idestablecimiento=est) self.formulario() self.frm('entry1').set_text(str(self.entity.idpunto_expedicion)) self.frm('entry2').set_text(self.entity.descripcion) self.set_active_combo(self.entity.idestablecimiento) self.frm('combobox1').set_sensitive(False) def bt_eliminar_cb(self, widget): sl, it = self.nav('treeview1').get_selection().get_selected() try: pk = sl.get_value(it, 0) est = sl.get_value(it, 2) 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: datos = self.entity.find(idpunto_expedicion=pk, idestablecimiento=est) if self.entity.delete(): self.consultar() def bt_cerrar_cb(self, widget): self.nav('window1').destroy() def formulario(self): arch = leerglade.leer('frm_expediciones.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 Registro') 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: 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): self.entity.idpunto_expedicion = self.frm('entry1').get_text() self.entity.descripcion = self.frm('entry2').get_text() self.entity.idestablecimiento = self.get_active_text() if self.entity.save(): self.frm('window1').destroy() self.consultar() def cancelar_cb(self, widget): self.frm('window1').destroy() def cargar_combos(self): self.frm('liststore1').clear() for row in self.establecimeintos.all(order_by=1, direccion__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 get_active_text(self): it = self.frm('combobox1').get_active() if len(self.frm('liststore1')) == 0: return 0 else: return self.frm('liststore1')[it][0].split('-')[0] def combo_changed_cb(self, widget): self.frm('entry1').set_text(str(self.entity.get_max_ex(self.get_active_text()))) def set_focus(self, widget): widget.get_toplevel().child_focus(Gtk.DirectionType.TAB_FORWARD)