papo-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Papo-hackers] Algunas notas de mi interaccion con Cimarron... Luca


From: maram
Subject: [Papo-hackers] Algunas notas de mi interaccion con Cimarron... Luca
Date: Mon, 27 Sep 2004 15:26:30 -0300

Estas son algunas notas de mi interaccion con Cimarron... Luca

--::-- Trabajando con el archivo sigalv1.xot , se me planteo la
inquietud de si en los nombres de los campos (o tablas), se pueden
incluir otros caracteres ademas de letras...
(barras,guiones,espacios,acentos...)
Por las dudas utilizo "letras" y "guion bajo" solamente.

--::-- Planteo la duda siguiente:
Si tengo una tabla "Reception" que tiene una referencia a la tabla
"Sample", basta con indicar la relacion en la tabla referenciada
solamente? de la forma:
<tabla> "reception"
<field> "sample" references="sample" inverse="reception"

como le indico si es 1a1, vs a vs, 1 a vs ?


--::-- No pude generar el "modelo" (pymodel,sql,etc)  a partir de Xot,
pues hay errores en los scripts de xot,al menos los que estan en cvs.
Los corrijo y consigo generar el modelo y demas complementos.

--::-- Seria bueno un "chequeador" de sintaxis para "Xot", que informe
donde hay un problema.
Realize algunas modificaciones al archivo SIGALv1.xot y no podia
generar el modelo, por una "barra invertida" de mas en un cierre de
"field"costo encontrarla...

--::-- Al cerrar la ventana principal, da el siguiente error:

Traceback (most recent call last):
  File "/home/marceloa/src/papo_project/src/cimarron/src/Gtk2/Gtk2Window.py",
line 104, in __delete
    if not self.delete():
  File "/home/marceloa/src/papo_project/src/cimarron/src/Generic/Window.py",
line 133, in delete
    raise WindowError, _("Unable to delete")
Generic.Exceptions.WindowError: No pude borrarme:
... Traceback (most recent call last):
...   File "/home/marceloa/src/papo_project/src/cimarron/src/Generic/Window.py",
line 131, in delete
...     self._doDelete()
...   File 
"/home/marceloa/src/papo_project/src/cimarron/src/Gtk2/Gtk2Window.py",
line 111, in _doDelete
...     self.getParent().removeChild(self)
... AttributeError: 'NoneType' object has no attribute 'removeChild'

--::-- Al mostrar la pantalla principal da el siguiente error:
main.py:5583): Gtk-WARNING **: Attempting to add a widget with type
GtkFrame to a container of type GtkNotebook, but the widget is already
inside a container of type GtkNotebook, the GTK+ FAQ at
http://www.gtk.org/faq/ explains how to reparent a widget.

Este error se repite tantas veces como widget se hayan agregado. 


--::-- Al iniciar el programa da el siguiente mensaje:
accepted_image <class 'Gtk2.Gtk2SearchEntry.Gtk2SearchTextEntry'>
unknown_image <class 'Gtk2.Gtk2SearchEntry.Gtk2SearchTextEntry'>
notfound_image <class 'Gtk2.Gtk2SearchEntry.Gtk2SearchTextEntry'>
Que sera?

--::-- Estuve realizando distintas pantallas para ABM de varias tablas
similares.
Seria interesante un ViewController que mostrara una pantalla de ABM,
generica para casos similares del tipo:

         -------------------------------------
        !                     !                !
        ! BUSQUEDA  ! DATOS    !
        !                     !                !
         --------------------------------------
        !   campo1       !  campo1  !                   
        !      o              !  campo2  !
        !   campo2       !  campo3  !
        !                      !               !
         -------------------------------------

con los tabs:    Busqueda, Datos
con los campos:  campo1,campo2,campo3   
con botones:     "nuevo","guardar","re-establecer","borrar"

tambien seria bueno que uno le pase solamente el "modelo" y las
parejas, "label,campo" ha incluir (Por defecto todas...)

--::-- Seria bueno que hubiese un viewcontroller como el del punto
anterior pero ampliado a BUSQUEDA->DATOS->DATOS_RELACIONADOS,
similar a "Persona"->"Direccion" y que la pantalla relacionada agregue
los botones para "hojear" las diversas "DIRECCIONES"

--::-- Tratando de ver como imprimir reportes tipo "listado", bajo
ruff. Pero al tratar de probar el "example" que trae no funciona.
Sugerencias...

--::-- Las pantallas de ABM no tienen boton Borrar. 

--::-- Trato de depurar los errores anteriores
Encuentro que en responder.py la funcion setParent(), esta rota.
En realidad no esta asignando el parent y sale antes de terminar.

La funcion original:

   def setParent(self, parent):
        # this is plainly *wrong*
        if __debug__:
            print 'responder: setting parent of %s to %s' % (self, parent)
        if self._parent:
            # this should break the infinite loop
            print 'warning: responder: not setting parent'
            return
        self._parent = parent
        if self._parent is not None:
            parent, self._parent = self._parent, None
            if __debug__:
                print 'responder: parenting %s to %s' % (self, parent)
            parent.addChild(self)


modifico la funcion asi:

    def setParent(self, parent):     
        if __debug__:
            print 'responder: al hijo %s le aviso que su padre es %s'
% (self, parent)
        self._parent = parent

        parent.addChild(self)


Con esto se soluciona el error, por el cual no salia del programa al
cerrar la ventana principal.
Ya que no encontraba el parent application de window.

Tambien se solucionan los errores en los warnig de GTK, que intentaban
parentizar dos veces.

SOLO queda el error de warning en Notebook.
Si a un Notebook le agrego una pagina, (un vbox) alguien lo parentiza
2 veces a notebook.

creo que esto lo hace self._doaddchild(child) en la funcion addChild
de CompositeResponder.

No entiendo porque necesito hacer _doaddChild? aqui. No es la
superclase Composite con la funcion addChild() quien asigna los hijos
a los padres?

ademas si elimino la linea self._doaddchild(child) no se producen
warning por reparentizacion, pero se produce otro error visual, ya que
al hacer show() de un window, no me muestra los hijos de window...



Segun entiendo, cada vez que se "crea" un objeto, se lo parentiza
generalmente con setParent de responder.py , y el setParent se encarga
de decirle al padre que agregue un nuevo hijo, con Parent.addChild(),
generalmente en composite.py

HAbria que revisar si esta coherencia se mantiene en todos los widgets.
Por ejemplo: en aplication.py

    def addChild(self, child):
        """
        Add a child. This should usually be a Window.
        """
        if self.delegate('will_add_child', args=child):  
            if __debug__:
                print "al padre",self ," le digo agrega el hijo ",child
            self._children.append(child)
        
            #child.setParent(self)
            return True
        return False

En algun momento se pretendio, setear el parent de cada hijo, desde la
funcion que agrega los hijos al padre. Pero esto se supone que ya se
seteo antes y desde alli se llamo a esta funcion. y si volvemos a
hacer setParent aqui, bucle infinito...

No revise por las funcionesclases que quitan "hijos y padres", pero
creo que debiera haber la misma coherencia.
y en esta misma clase aplication, eso no se cumple.

    def removeChild(self, child):
        """
        Remove a child.
        """
        if self.delegate('will_remove_child', args=child):
            self._children.remove(child)
            child.setParent(None)
            if not self.shownChildren():
                self.stop()
            return True
        return False

ya que borra un hijo del padre y tambien trata de borrar del hijo al
padre.supongo que eso lo debe hacer otra clase.

--::-- Si bien se arreglaron los errores de parentizacion que habia,
aperencen nuevos.!!! y esta vez los genere yo solito!...

Al cerrar una aplicacion, trata de cerrar pantallaABM, pero en
Application.ShownChildren
da el error pantallaABM, object has no attributte "isHidden".

--::-- Al querer ejecutar la accion de un boton que muestra la
pantalla, aparece un error en responder.py del tipo:
parent.addChild(self), "noneType" object has no atributte addChild
no puedo rastrear quien trata de agregarse...

--::-- En definitiva he perdido un par de jornadas con el tema de la
parentizacion, sin solucionarlo.
Arreglo una cosa y se desarma otra...

maram




reply via email to

[Prev in Thread] Current Thread [Next in Thread]