https://foro.gambas-es.org/viewtopic.php?f=1&t=3313
-----------------------------------
jsbsan
Viernes, 09 Agosto 2013, 16:22

Crear Un Componente En Gambas3
-----------------------------------
Estoy intentando crear un componente en gambas3, pero la version actual que tengo instalada (gamba3.4.1), parece que no tiene las mismas opciones que la que explica el gambadoc [url=http://gambasdoc.org/help/dev/gambas?es&v3]http://gambasdoc.org/help/dev/gambas?es&v3, es como si las hubiesen cambiado de sitio o ya no se hace igual.

El caso es que no se como añadir un nuevo componente a gambas3, no se en que carpeta hay que ponerlo (al crear el ejecutable no sale la opción que dice el manual "Puedes instalar el componente en el directorio de usuario chequeando la correspondiente opción en el diálogo "Crear ejecutable" , para que aparezca en los menus de Proyecto/Propiedades/Componente

Alguien sabe como se hace ahora, o es que estoy haciendo algo mal?


-----------------------------------
jsbsan
Lunes, 12 Agosto 2013, 09:14

Re: Crear Un Componente En Gambas3
-----------------------------------
Me respondo a mi mismo: Ahora es más fácil 

Lo que hay que hacer es:
1) crear el proyecto con la opción de "Programación de un componente", 
2) Añades el código de la clase ( tienes que poner Export a la clase ( y tambien a las  clases que dependan de el)
3) Creas un "Paquete de Instalacion" (proyecto/crear/paquete de instalacion). El nombre del paquete sigue esta regla: "gambas3-gb-"(esto lo pone solo el ide de gambas3) + nombre de tu proyecto. El paquete de instalación, puede ser del tipo .debian, y luego  le das varias veces al boton "siguiente".
4) Una vez creado el paquete ".deb", instalalo 
5) Arrancas de nuevo el Ide de gambas y creas un proyecto nuevo
6) Te vas a Proyecto/Propiedades/Componentes y el nuevo componete lo veras al final de la lista de componentes.


Saludos

Nota:
En la documentacion en español de gambadoc ( [url=http://gambasdoc.org/help/dev/gambas?es&v3]http://gambasdoc.org/help/dev/gambas?es&v3 ), el apartado de "Depuración, instalación y empaquetado del componente", ya la instalación se hace atraves del "empaquetado del componente" e instalar el propio paquete que se crea.


-----------------------------------
angelnu
Jueves, 22 Agosto 2013, 13:04

Re: Crear Un Componente En Gambas3
-----------------------------------
Al tratar de instalar el paquete creado me da el error

Error: Dependency is not satisfiable: gambas3-runtime (>= 3.0.90)

Tengo gambas instalado mediante subversion


-----------------------------------
jsbsan
Jueves, 22 Agosto 2013, 16:45

Re: Crear Un Componente En Gambas3
-----------------------------------
[quote]Tengo gambas instalado mediante subversion[/quote]
Yo tengo gambas instalado con el ppa de nemh, y no me da ese error cuando instala el componente que he creado.... (uso gambas3.4.1)


Pero...Lo que si me pasa,es que cuando creo un programa en gambas que usa ese nuevo componente, y luego creo el paquete .deb de programa, al instalarlo si me da ese error...  preguntaré en las listas porque se debe eso.

Nota:
Para ejecutar el programa que usa el nuevo componente, lo si puedo, es ejecutarlo creando el .gambas


-----------------------------------
jguardon
Viernes, 23 Agosto 2013, 16:43

Re: Crear Un Componente En Gambas3
-----------------------------------
[quote user="jsbsan" post="18751"]Pero...Lo que si me pasa,es que cuando creo un programa en gambas que usa ese nuevo componente, y luego creo el paquete .deb de programa, al instalarlo si me da ese error...  preguntaré en las listas porque se debe eso.[/quote]

Eso ocurre porque en el fichero de control interno del paquete .deb, tu nuevo componente aparece como una dependencia más, como cualquier otro componente oficial de gambas.

La solución no es otra que tengas la suerte (lo cual te deseo muchísimo) de que tu componente llegue a ser oficial, es decir, que se incluya dentro de gambas3 o bien que crees un repositorio con tus componentes y requieras que ese repositorio esté instalado previamente en el sistema del cliente, igual que una PPA o justo eso, una PPA si sólo necesitas llegar a distribuciones Ubuntu y derivadas.

Entonces la instalación de tu programa que depende de tu componente no dará error en ninguna máquina que cumpla lo anterior.

Por cierto, mi más sincera enhorabuena por tu trabajo en el componente gb.latex, lamento no haber podido echarte la mano que te prometí por falta de tiempo. De hecho es que no soy capaz ni siquiera de acabar mis proyectos que deberían ser prioritarios... y menos ahora que estoy de vacaciones, merecidas vacaciones, no hace falta decirlo  :cool: 

Saludos


-----------------------------------
jguardon
Viernes, 23 Agosto 2013, 23:04

Re: Crear Un Componente En Gambas3
-----------------------------------
Por cierto Julio, ¿Cómo es que no has usado forge.gambas-es para subir los ficheros de ejemplo y el tar del código fuente? Tienes las herramientas para hacerlo, en el menú Archivos. Veo también que en la lista hablas de código en google code. ¿Estás usando ambos sistemas para el mismo proyecto?

Me interesa que se conozca la existencia de forge.gambas-es.org aunque sea entre los usuarios de la lista de gambas-user en inglés, eso nos daría cierto prestigio.

Ah, otra cosa importante: en la descripción del proyecto es interesante poner o explicar la forma de obtener el código a través de svn, que en tu caso sería:

[code linenumbers=false syntax=bash]svn co http://forge.gambas-es.org/svn/classlatex classlatex[/code]

Si no lo pones, es difícil que alguien pueda descargar la versión en desarrollo u otra revisión anterior. Eso no impide que se faciliten los ficheros fuente comprimidos, como antes expliqué.

Saludos


-----------------------------------
jsbsan
Sabado, 24 Agosto 2013, 13:51

Re: Crear Un Componente En Gambas3
-----------------------------------
Jguardon:

[quote] Veo también que en la lista hablas de código en google code. [/quote]
Como vi que habia que hacer muchos cambios por los comentarios de Tobi, fue lo primero que escribi. 

[quote]Me interesa que se conozca la existencia de forge.gambas-es.org aunque sea entre los usuarios de la lista de gambas-user en inglés, eso nos daría cierto prestigio.[/quote]
Ok, cuando tenga un rato, monto unos nuevos proyectos "latex2" y el ejemplo de uso de "latex2" en forge.gambas-es.
El original lo dejo "classlatex" lo dejo alli, ya que era como lo pense primero, pero hablando con Sebikul, me comentó de hacerlo como componente, y asi esta montado el latex2.

[quote] mi más sincera enhorabuena por tu trabajo en el componente gb.latex[/quote]
Gracias  :mryellow:  :mryellow: , pero creo que aun le falta mucho... me han comentado que use el gb.xml... para hacerlo mas orientado a objeto... pero ni idea oiga.. ¿como se hace eso?... :shock:


-----------------------------------
sebikul
Lunes, 26 Agosto 2013, 00:53

Re: Crear Un Componente En Gambas3
-----------------------------------
[quote user="jsbsan" post="18772"]Jguardon:
Gracias  :mryellow:  :mryellow: , pero creo que aun le falta mucho... me han comentado que use el gb.xml... para hacerlo mas orientado a objeto... pero ni idea oiga.. ¿como se hace eso?... :shock:[/quote]

Con esto se refiere a que cada vez que el usuario agregue una sección al documento latex, este se haga mediante objetos. Por ejemplo, en el gb.xml.html, cada etiqueta es un objeto con propiedades y métodos que permiten operar sobre ella sin alterar el resto del documento. Si tengo una etiqueta  en la posición [5] del documento XmlDocument guerdado en la variable xDoc (representado como una matriz internamente), el método xDoc[5].GetChilds() me permitiría obtener otra estructura XmlDocument nueva, solo con las etiquetas debajo del  previamente mencionado.

La razón por la cual esto es mejor es que si se quiere modificar el documento, solo se debe modificar una propiedad de una subestructura. Si se quiere borrar una estructura, solo se debe eliminar su referencia del "array principal" o raíz. O, si se quieren realizar operaciones a la hora de guardarlo en el disco, solo se debe pedirle al programa que compile el documento, esto implica pedirle a cada subestructura (etiqueta en el caso del html) que compile su contenido (de forma recursiva, obviamente. Al pedirle al  que devuelva su contenido previamente compilara todas las estructuras hijas). De esta forma no se debe estar jugando con una gran variable String buscando en su contenido. Es cierto que esta forma de almacenar los datos consumirá mucha mas memoria que utilizar una simple cadena como se hace actualmente, pero sus ventajas superan en gran cantidad a sus contras.

El motivo por el cual no te mencione esto en un principio es que latex no es xml. Son completamente distintos, y la abstracción que se debe tener para llevar una estructura xml a objetos es distinta a la de latex. Te explico, en xml solo se tienen etiquetas con contenido y atributos, no mucho mas. Representar esta estructura en un objeto (en cualquier lenguaje de poo) es trivial si solo se busca una representación basica. 

En latex la historia es muy distinta. Las estructuras no están forzadas a ser padre-hijo, sino que también pueden estar sueltas dentro del documento. La sintaxis varia mucho dependiendo de que es lo que se quiera representar. La especificación original añade el concepto de paquetes, y estos deben ser tenidos en cuenta a la hora de compilar el documento. Todo esto hace que la representación mediante objetos sea muy larga y propenso a errores.

Si de verdad quieres seguir este camino pues te felicito  ;-)  Considero que no hay mejor forma de aprender POO que representar un texto puro en objetos. Mi recomendación antes de que te embarques, es que hagas un proyecto de prueba que analice un documento xml o html, lo cargue como una estructura, permita que sea modificado a gusto, y vuelva a guardarlo. Una vez que lo termines, empieza a analizar como se puede representar un documento latex utilizando solo clases, métodos y propiedades, nada de texto y etiquetas. Va a llevar tiempo, pero veras que al final tendrás una perspectiva completamente distinta sobre como se trabaja en objetos realmente. Para cualquier problema que te encuentras, aquí estamos nosotros!

Saludos


