[Buoh-dev] Resucitando el buoh
- From: carlosgc at gnome.org (Carlos Garcia Campos)
- Subject: [Buoh-dev] Resucitando el buoh
- Date: Tue Aug 15 09:42:43 2006
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]