[Buoh-dev] Resucitando el buoh



Joe, no tengo mucho tiempo para mirar el c?digo nuevo, pero me parece
que era algo muy necesario. Alguna vez habia intentado retomarlo y la
estructura del buoh era una de las cosas que me echaban para atras.

Todas las ideas propuestas por Kal me han parecido buenas, sobre todo lo
del Manager de comics. Kal te lo has currao!

Ma?ana me piro de interrail asi que no podre ayudaros hasta que vuelva.
Pero ya me habeis picado :) 

Saludos.

El mi?, 13-07-2005 a las 17:10 +0200, Esteban S?nchez escribi?:
> El mi?, 13-07-2005 a las 16:36 +0200, Carlos Garcia Campos escribi?:
> > Buenas, 
> > 
> > el otro dia medio aburrido me di? por bajar el buoh del CVS. Lo cierto
> > es que, no lo tomeis a mal, pero no me gust? nada. Estuve hablando con
> > esteban que me coment? que ten?a pensado quitar cosas del fichero buoh.c
> > y ponerlas en otros. 
> > 
> > En mi opini?n el problema es mucho mas grave que eso, se trata de un
> > problema de base, es decir, de dise?o. Cuando empezamos con el proyecto
> > se coment? que seguir?amos un modelo orientado a objetos y lo cierto es
> > que el buoh a dia de hoy sigue un modelo orientado al kaos.
> 
> Bueno, en cierto modo es nuestra culpa porque al ser novatos en la
> programaci?n con GObject lo normal es que fuese ca?tico. Realmente
> ibamos probando cosas y al final lo met?amos todo dentro del mismo
> fichero. La verdad es que lo veo ahora y flipo, por eso no le he metido
> mucha mano en todo el verano.
> 
> > Visto que el proyecto andaba bastante parado, empec? a pensar en nuevo
> > dise?o y a tirar algunas l?neas de c?digo. El resultado ha sido
> > monstruoso, porque el buoh ha quedado casi reescrito. Paso a comentaros
> > el modelo que yo propongo:
> 
> Jejeje, se necesitaba un cambio gordo de la mano de alguien con
> experiencia, as? que gracias :)
> 
> > Buoh
> > -------
> > 
> > Este objeto representa la aplicaci?n en si y contiene los datos
> > "globales" (no os asusteis que no hay variables globales).
> > 
> > Padre: GObject
> > 
> > Atributos:
> > 
> > 	- BuohWindow   *window; Es la ventana de la aplicaci?n
> > 	- GtkTreeModel *comic_list; Modelo que contiene la lista de los comics
> > 	
> > M?todos p?blicos:
> > 
> > 	void          buoh_exit_app           (Buoh *buoh);
> > 	void          buoh_create_main_window (Buoh *buoh);
> > 	GtkTreeModel *buoh_get_comics_model   (Buoh *buoh);
> > 
> > Creo que no necesitan mucha explicaci?n.
> > 
> > Este objeto sigue un patr?n de dise?o singleton por dos motivos:
> > 
> > 	* Tan solo puedo haber una instancia del objeto. Solo hay una
> > aplicaci?n
> > 	* Es un truco que nos permite mantener una variable global sin usar una
> > variable 			global. Mirad el c?digo y vereis de que hablo.
> > 
> > El programa principal b?sicamente crea un objeto buoh e invoca el m?todo
> > create_main_window ()
> > 
> > BuohWindow
> > ----------------
> > 
> > Este objeto representa la ventana de la aplicaci?n. Lleva la gesti?n de
> > todo lo que tiene que ver con la ventana (menus, toolbar, etc.)
> > 
> > Padre: GtkWindow
> > 
> > Atributos:
> > 	- BuohView      *view; Es la vista de los comics, o mensajes como el de
> > bienvenida o error
> > 	- BuohComicList *comic_list; Es la lista de los comics disponibles del
> > usuario
> > 	- GtkWidget     *properties; Dialogo de propiedades de una comic
> > 	- GtkWidget     *add_dialog; Dialogo de a?adir comic
> > 
> > La vista y la lista de comics son widgets hijos del objeto.
> > 
> > BuohView
> > -------------
> > 
> > Es el objeto encargado de cargar y mostrar los comics.
> > 
> > Padre: GtkNotebook
> > 
> > Atributos:
> > 	- Comic           *comic; El comic que tiene que mostrar
> 
> ?No tendr?a un pixbuf loader y un GtkImage?
> 
> > BuohComicList
> > -------------------
> > 
> > Es la lista de los comics seleccionables por el usuario
> > 
> > Padre: GtkFrame
> > 
> > Atributos:
> > 	- GtkTreeModel *model; es un filtro del modelo global de la aplicaci?n
> > 	- BuohView     *view; un puntero a la vista
> > 
> > En este objeto no he trabajo el frame en cuanto a dise?o de HIG, porque
> > no estoy seguro de el. Es elago que quer?a comentaros. En mi opini?n el
> > fram aqui sobra. Se puede usar la cabecera del tree_view para poner
> > "Comic List", o bien dejar el frame, pero quitar la cabecera del
> > tree_view. Si quitamos el frame este objeto heredaria de GtkContainer o
> > GtkBin sin mayores complicaciones
> 
> Vaya, tienes raz?n, ahora que me fijo queda feo de cojones. Bueno, creo
> que la idea de poner la cabecera del tree view era para poder poner
> tambi?n el autor del comic. Puede ser algo irrelevante, as? que se
> podr?a quitar directamente y dejar el frame. Personalmente creo que
> queda m?s bonito con frame y sin cabeceras, pero si no se tiene que
> hacer as?...
> 
> > BuohPropertiesDialog
> > ----------------------------
> > 
> > Es el dialogo de propiedades de un comic. No tiene mucho misterio,
> > hereda de GtkDialog y contiene un puntero al comic del que tiene que
> > mostrar sus propiedades. Este todav?a no est? hecho. Est? hecho el
> > esqueleto, solo falta mostrar el contenido del dialogo
> > 
> > BuohAddComicDialog
> > ----------------------------
> > 
> > Muy similar al anterior, pero contiene la lista de los comics, usando el
> > modelo global de la aplicaci?n
> > 
> > El resto son los objetos comic. Todav?a que dan muchas cosas por hacer:
> > 
> > El objeto comic:
> > 
> > No se porque hay un objeto comic-simple, no se lo que es.
> 
> El objeto comic es una interfaz a los distintos tipos de comics. El
> comic-simple es el que tiene como caracter?sticas que las URIs de los
> comics tienen las fechas del d?a, por lo que es bastante sencillo
> conseguirlas.
> 
> Lo llam? as? pues porque no encontr? un adjetivo mejor, pero la verdad
> es que no me gustaba.
> 
> > El objeto comic debe llamarse BuohComic por consistencia con el resto de
> > objetos, por lo que hay que cambiarlo en todo el archivo.
> 
> Ahora con todos los cambios quiz?s tenga m?s sentido, pero la idea
> inicial era separar las clases de los comics de la del buoh. Quiz?s con
> la esperanza de hacer un "libcomic"...
> 
> > Hay mas cosas que no he hecho, a prop?sito:
> > 
> > La gesti?n de next y forward de los comics. Tal y como est? ahora es el
> > propio comic el que se encarga de eso. En mi opni?n un comic no es mas
> > que una uri y unas cuantas caracter?sticas, no existe ah? el concepto de
> > anterior ni siguiente. 
> 
> La eterna lucha :P
> 
> > La soluci?n ser?a usar un objeto en medio, por ejemplo BuohcomicManager,
> > que se encargue de esas gestiones. Tendr? los m?todos de siguiente,
> > anterior, primero, ?ltimo o buscar comic. 
> 
> Pues s?, me parece algo mejor porque de este modo se ve toda una serie
> de comics como un libro (tebeo) y se evita todo el tema de que el
> trabajo sucio lo haga el comic.
> 
> > El tema de la carga de los comics sigue siendo muy lento, es algo que
> > hay que solucionar, pero vamos, que es un problema ya antiguo.
> 
> ?Te refieres a la descarga de un comic o a la carga de la lista de
> comics (leer el XML)?
> 
> > He quitado a posta lo de redimensionar la ventana en funci?n del tama?o
> > del comic. No funcionaba del todo bien y se hace muy raro ver que la
> > ventana cambia de tama?o. 
> 
> S?, pero lo hice otra vez para probar y conocer un poco las funciones de
> un GtkWindows
> 
> > Hay cosas de dise?o que hay que mirar (HIG).
> 
> Algunas :P
> 
> > Bueno, pues abajo va un snapshot [1] de lo que he hecho. He preferido
> > hacerlo as? en vez de un parche porque son demasiados cambios y as? es
> > mas facil de ver y probar. 
> 
> Gracias, voy a echarle un vistazo
> 
> > Si quer?is seguir adelante con este dise?o, me registro en la forja y
> > hago commit para que sigamos currando todos a partir de el. 
> 
> Ahora te comento
> 
> > Seguro que se me olvidan cosas que comentar. Echad un vistazo al c?digo
> > que ah? si que est? todo
> > 
> > [1] http://carlosgc.linups.org/files/buoh-kal.tar.bz2
> > 
> > Salu2


		
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, m?s seguridad 
http://correo.yahoo.es



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