papo-hackers
[Top][All Lists]
Advanced

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

[Papo-hackers] Informar al ConsistencyController de cambios en ViewContr


From: maram
Subject: [Papo-hackers] Informar al ConsistencyController de cambios en ViewController y propagar en hijos
Date: Wed, 22 Dec 2004 12:54:01 -0300

   Tengo lo siguiente:

   Un objeto ReceptionABM del tipo ConsistencyController
   que contiene un tab con un ReceptionData del tipo ViewController
   y otros tabs con controles similares 

   El tab ReceptionData tiene un control SearchLabeledEntry (modificacion del 
LabelTextEntry que agrega un boton "buscar" y la accion correspondiente)

   self.name=SearchLabeledEntry (
            parent=hh,
            label=u'Apellido y Nombre',
            actionButton=self.searchPerson,
            valueLoader=lambda *i: self.getName ()
            )

   Si en el textbox del control escribo parte de un nombre y presiono
el boton"buscar", ejecuta la siguiente accion:


    #en ReceptionData...
    def searchPerson(self,*i):               
        query= 'name ilike "*%s*"' % self.name.getValue()
        data= self.getEditingContext ().fetch ('Persona', query)        
        if len (data)==0:
            self.name.update()
        else:
            #deberia mostrar una grilla para elegir, pero bue... elige la
primera coincidencia
            chosen= data[0]            
            self.Manejador.changePerson(chosen)


Aqui el problema! Necesito un mecanismo para informarle al ConsistencyController
 ReceptionABM, que cambio un obj persona del modelo reception... y que este 
refresque el cambio en todos los tabs (ViewController) que contiene...
por ejemplo
que muestre la direccion en uno, la zona en otro, etc...

lo unico que se me ocurrio es agregar en ReceptionData, un atributo
"manejador",
que le dice que obj es el consistencycontroller que lo contiene...
ya que si hago ReceptionData.getParent(), me da el parent visual 
<Gtk2.Gtk2Notebook.Gtk2Notebook> , no el ReceptionABM...
y crear en el ConsistencyController ReceptionABM una funcion de respuesta para 
cada novedad que recibe, en este ejemplo:


     #en ReceptionABM...
     def changePerson(self,obj):
        """ Recibe un obj Persona y lo cambia en el modelo actual"""      
        model=self.getModel()
        model.setPersona(obj)
        self.changeModel (model)

Esto anda, pero cual seria la forma correcta de realizar lo anterior... ?

osea, que al cambiar un obj en un VC se notifique al CC y este a su
vez actualize todos los vc dependientes...





-- 
Marcelo Ametller
----------------------------------------------------------------------------------------------
Maram Sistemas - Debian Sarge - Linux User: 354777
www.maramsis.com.ar www.aeroenlace.com.ar www.grulic.org.ar




reply via email to

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