https://foro.gambas-es.org/viewtopic.php?f=1&t=3759
-----------------------------------
shordi
Domingo, 06 Abril 2014, 17:55

Código Fuente De Gambas
-----------------------------------
He estado escarbando en el gambas sourceforge buscando el código fuente que usa gambas para abrir un proyecto. 
En concreto quisiera ver cómo hace para que aparezca la gamba como icono de las carpetas que contienen un proyecto de gambas, qué controles utiliza y cómo los maneja. 
Imagino que lo detectan por presencia de fichero, pero no he encontrado el código de esa ventana. 

¿Alguien sabe dónde está?


-----------------------------------
jsbsan
Domingo, 06 Abril 2014, 19:27

Re: Código Fuente De Gambas
-----------------------------------
Shordi:

[quote]En concreto quisiera ver cómo hace para que aparezca la gamba como icono de las carpetas que contienen un proyecto de gambas, qué controles utiliza y cómo los maneja. [/quote]

Creo que lo que hace es leer en las carpetas si esta el archivo ".project", si esta lo lee, alli se encuentra información del icono del proyecto.

 [img]http://foro.gambas-es.org/files/images/6/lectura_de_un_proyecto.png[/img] 

El control, usa un DrawArea ¿?  donde va añadiendo controles.. 

Para "personalizar" el icono, usa el evento _icon del  control es un DirView:
[code linenumbers=false syntax=gambas]Public Sub dchProject_Icon(Path As String)

  If Exist(Path &/ ".project") Then 
    dchProject.Icon = Project.GetIcon(Path)    
  Endif  

End[/code]

De esta manera personaliza el icono de la carpeta.

[b]Nota:[/b]
Para "descubrir" esto, lo que hago es abrir el codigo fuente del proyecto de gambas3
 [img]http://foro.gambas-es.org/files/images/6/codigo_fuente_de_gambas3.png[/img] 

Voy poniendo puntos de interrupción donde me interesa que se pare el programa, lo ejecuto.
Se parará donde he puesto los puntos de interrupción y empiezo a ver la "pila" y el valor de las variables.

 [img]http://foro.gambas-es.org/files/images/6/pila_de_ejecucion.png[/img]

Nota 2:
La subrutina GetIcon del módulo "Projetc"
[code linenumbers=false syntax=gambas]Public Function GetIcon(sPath As String, Optional iSize As Integer) As Picture
  
  Dim hFile As File
  Dim sLig As String
  Dim sIcon As String
  
  hFile = Open sPath &/ ".project"
  
  For Each sLig In hFile.Lines
    If Left$(sLig, 5) = "Icon=" Then
      sIcon = Mid$(sLig, 6)
      Break
    Endif
  Next
  
  Close #hFile
  
  If sIcon Then
    sPath = sPath &/ sIcon
  Else
    sPath = "img/logo/project.png"
  Endif
  
  If iSize Then
    Return StretchIcon(sPath, iSize).Picture
  Else
    Return Picture.Load(sPath)
  Endif
  
Catch
  
  sPath = "img/logo/project.png"
  
  If iSize Then
    Return StretchIcon(sPath, iSize).Picture
  Else
    Return Picture.Load(sPath)
  Endif
  
End[/code]


-----------------------------------
shordi
Lunes, 07 Abril 2014, 17:05

Re: Código Fuente De Gambas
-----------------------------------
[quote]Nota:
Para "descubrir" esto, lo que hago es abrir el codigo fuente del proyecto de gambas3[/quote]
Donde se demuestra lo tonto que llego a ser, yo buscaba el código del componente que necesitaba y lo estudiaba en la misma web sin bajármelo...
Lo hago contínuamente en mi código y no se ha ocurrido nunca hacerlo en el proyecto gambas... :oops: 

Me doy otra ración:
[img align=left]http://img.gawkerassets.com/img/181fjss7ygbi2gif/original.gif[/img]


