Las Clases De GambasCAD


Objetivo: Las Clases De GambasCAD
Hilo para ir exponiendo problemas y necesidades.
Las clases de gambasCADE son tanto las entidades del dibujo como las herramientas de modificación. Como pueden tanto invocarse desde el botón dedicado como por comando (próximamente) , ademas de agruparse convenientemente en familias, me parece que nos quedamos cortos con "gender"
' gambas class file

' Entity maintained by Terco
' V2 La version de la clase
Public gender As String = ("doslineas")
Public Const DrawingOrder As Integer = 1 ' 1 = draws first


pero viendo la expansion que va teniendo me parece que con "gender" nos quedamos cortos
Public Const BELONGS As String = "gambasCADE" ' permitiria buscarla entre todas las clases de gambas y argegarla a la lista de comandos automaticamente
Public Const NAME As String = "doslineas"
Public nickname As String = ("doslineas") ' unico traducible, el nombre del comando a escribir para usar esta clase
Public Const SURNAME As String = "lineas" ' esta entidad debera ser agrupada junto a otras en un solo boton
Public Const UseWith As String = "clsElementBuilder" ' esta clase no puede ser asignada a clsJob, debe utilizarse a traves de la clase clsElementBuilder

última edición por tercoIDE el Martes, 05 May 2020, 02:43; editado 1 vez
Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
Este codigo lee todas las clases que tiene cargadas gambas, y podria servir para ordenarlas por familia basandose en la carpeta donde estan. Pero falla en algo:
si nos las invocamos primero, no estan en el listado. Alguien saba como podriamos obligar a gambas a leer todas nuestras clases antes que las hayamos usado?

(el codigo sirve para cualquier programa)


Dim cadaClase As Class
Dim simbolo As String
Dim o As Object
Dim nuestra As Boolean


For Each cadaClase In Classes
' cargamos un objeto con la clase
o = Class.Load(cadaClase.Name)
nuestra = False ' presuponemos que no es nuestra
For Each simbolo In cadaClase.Symbols

If simbolo = "BELONGS" Then ' La clase nos puede pertenecer pertenece
If Object.GetProperty(o, simbolo) = "gambasCAD&E" Then
Print cadaClase.Name
nuestra = True ' es nuestra!!
Else
Break ' no tiene sentido seguir revisando
Endif
Endif
Next

If nuestra Then
For Each simbolo In cadaClase.Symbols
If simbolo = "NAME" Then Print "Nombre:" & Object.GetProperty(o, simbolo)
If simbolo = "FAMILY" Then Print "Familia:" & Object.GetProperty(o, simbolo)
Next

Endif

o = Null


Next

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tercoIDE escribió:  
Este codigo lee todas las clases que tiene cargadas gambas, y podria servir para ordenarlas por familia basandose en la carpeta donde estan. Pero falla en algo:
si nos las invocamos primero, no estan en el listado. Alguien saba como podriamos obligar a gambas a leer todas nuestras clases antes que las hayamos usado?

En principio podría hacerse listando los archivos .class y luego leyendo en su interior para buscar algo en particular.
Una vez que se tiene la lista y el contrnido buscado se plasma en un archivo de texto interno en el directorio raíz del programa por ejemplo.
Luego se lee este archivo al estilo gb.settings y listo.
Esta claro que esto se hace antes de "compilar" el .gambas luego cuando se usa el programa compilado ya no tiene sentido volver a correr dicho código.
Saludos.

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tincho escribió:  

En principio podría hacerse listando los archivos .class y luego leyendo en su interior para buscar algo en particular.
Una vez que se tiene la lista y el contrnido buscado se plasma en un archivo de texto interno en el directorio raíz del programa por ejemplo.
Luego se lee este archivo al estilo gb.settings y listo.
Esta claro que esto se hace antes de "compilar" el .gambas luego cuando se usa el programa compilado ya no tiene sentido volver a correr dicho código.
Saludos.


Claro, pero si distribuimos el ejecutable esto no va a ser posible.

Me parece que deberian estar en settings:

[Entities]
1=clsLine
2=clsLosa

[Tools]
1=clsFileLoadSave
2=clsMove


Luego leemos los settings, cargamos las clases y leemos nombre y familia para ubicarlas correctamente en las barras de herrmientas.

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tercoIDE escribió:  
..Claro, pero si distribuimos el ejecutable esto no va a ser posible...

No, cuando distribuis el ejecutable ete ya incluira la información, y como justamente es un ejecutable nunca agregaras o quitaras clases.
Olvidate de settings, no es viable porque no va dentro del ejecutable sino que es un archivo externo.
Saludos.

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados

asi de simple

ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class

y mas si esta en el directorio Entities.....

"keep it simple and stupid"

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tercoIDE escribió:  
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados
asi de simple
ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class
y mas si esta en el directorio Entities.....
"keep it simple and stupid"

ok, si estoy de acuerdo como te decía antes, pero hay que tener en cuenta que cuando nombras una clase en gambas que interfiere con una del ide como copy por ejemplo creo que ahí hay problemas.
Le damos para adelante. voy a hacer una lista de clases y lo que hacen cada una y pongo acá la lista con el nombre actual y el que tendría que ir ¿Te parece?
Saludos.

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tincho escribió:  
tercoIDE escribió:  
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados
asi de simple
ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class
y mas si esta en el directorio Entities.....
"keep it simple and stupid"

ok, si estoy de acuerdo como te decía antes, pero hay que tener en cuenta que cuando nombras una clase en gambas que interfiere con una del ide como copy por ejemplo creo que ahí hay problemas.
Le damos para adelante. voy a hacer una lista de clases y lo que hacen cada una y pongo acá la lista con el nombre actual y el que tendría que ir ¿Te parece?
Saludos.


es verdad, sigamos con el cls

Perfil MP  
Objetivo: Re: Las Clases De GambasCADE
tercoIDE escribió:  


es verdad, sigamos con el cls


o mejor "cad" que es mas elocuente

cadLine.Class es menos redundante que clsLine.Class , y nos evita los conflictos con las clases nativas...

ademas, y como sugirio Julio, deberiamos hacer heredar todo lo comun, pero eso tiene dos inconvenientes: nos agrega un Me. a todo y nos acomoda las clases en el IDE abajo de la clase padre, eso para 10 clases esta OK pero para 200 no esta tan bien

como alternativa a este problema se me ocurrio pedirle a Benoit que ponga una Opcion en la configuracion de IDE de que no haga esto

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4517s (PHP: -69% SQL: 169%)
Consultas SQL: 29 - Debug off - GZIP Activado