[Buoh-dev] Resucitando el buoh



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.

Si, es normal, por eso siempre se aconseja empezar con proyectos ya
existentes y aprender de ellos, en vez de empezar con un proyecto nuevo

> > 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.

pero hay mas tipos adem?s del comic-simple? quiz?s podr?amos hacer que
los comics sean plugins o algo as?.

> 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"...

lo del los plugins quiz?s sea la soluci?n

> > 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

sin duda, yo veo la necesidad de un comic-manager

> > 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)?

no, el tema del pixbuf-loader y dem?s. La carga de los ficheros xml se
hace una sola vez al principio y no cuesta na. Por cierto, se me olvid?
mecionar que no he implementado todav?a el tema de guardar los cambios
de la lista de comics seleccionados de nuevo a disco. No es que se me
haya olvidado es que no he tenido tiempo, pero se me olvid? comentarlo

> > 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

hab?a algunas cosas que estaban bien y yo las he jodido :-P Como el
frame de la lista de comics

> > 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
> > 

Salu2
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Carlos Garcia Campos a.k.a. KaL
   elkalmail yahoo es
   carlosgc gnome org
   http://carlosgc.linups.org
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=             
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://forge.novell.com/pipermail/buoh-dev/attachments/20050713/ff856acc/attachment.pgp


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