Shordi   21-02-2023, 11:21
#1
Pues eso, que si en algún momento os interesa el nombre de la imagen que se asignó a un control en tiempo de diseño, aquí tenéis un modo de saberlo.
Supongo que es algo que a nadie interesa, pero ya que lo he hecho y me ha costado un buebo encontrar la manera, pues no me resisto a hacerla pública aquí.

El proyecto adjunto hace lo siguiente:

Si no existe la carpeta user.home/StockIcons:
  -La crea y la rellena con todos los iconos del Stock de Gambas.
  -Luego crea un archivo de texto llamado PicShaSums con el shasum de todos los iconos.
Estos dos pasos tardarán un rato (son más de 1.800 iconos).

Después, cuando se necesita (en el ejemplo es cuando se hace click en uno de los botones), se llama a la función que devuelve el nombre del icono asociado al control pasado.
Al cerrar el programa os da opción a eliminar la carpeta creada. Si no se borra, en las siguientes ejecuciones es muy rápido.

Repito que, salvo Tincho, quizá, no creo que os sirva de nada... pero ahí está.

Saludos
Archivos adjuntos
.gz
showicons-0.0.1.tar.gz (Tamaño: 12.94 KB Descargas: 2)

No podemos regresar
tincho   21-02-2023, 15:31
#2
Hola,
Este fin de semana no pude mirar nada y recién hoy pude conectarme.
Por lo que veo Shordi ha revolucionado el mundo del ícono gambero  Big Grin
Me parace interesante lo de usar SHA de los archivos para identificar las imágenes, así que le echaré un vistazo.
Respecto a los Tag de los controles, si usas el tag para otra cosa diferente que para guardar el nombre del icono, puedes definir el Tag como String[] o Collection, ya que la propiedad Tag es variant.

Gracias por compartir.

1 Saludo.
tincho   21-02-2023, 17:01
#3
Acomodé un poco la función así:

Código:
'' This takes a while. In theory it should only be executed once on the first execution of the project.

Public Sub ExtractStockIcons2() 

  Dim sIcon As String
  Dim hPic As Picture

  For Each px In ["16", "22", "24", "32"]
    If Not Exist($path &/ px) Then
      Shell "mkdir -p " & $path &/ px Wait
    Endif
    For Each sIcon In Stock.Icons
      hPic = Stock[px &/ sIcon]
      hpic.Save($Path &/ px &/ sIcon & ".png")
    Next
  Next

End

Hay que echar un vistazo al archivo icon.map que parece contener la rutas de los iconos en el sistema.

1 Saludo.
Shordi   21-02-2023, 18:26
#4
Cita:Acomode un poco la funcion así:
Más elegante, sí señor. Te la robo.

Saludos

Y en la misma línea cambiamos esta:
Código:
Public Sub CreateShaSums()    'This takes a while. In theory it should only be executed once On the first execution Of the project.

  Dim sIcon, sum, px As String
  Dim aSums As New String[]

  For Each sIcon In Stock.Icons
    For Each px In ["16", "22", "24", "32"]
      Exec ["shasum", $Path &/ px &/ sIcon & ".png"] To sum
      aSums.Add(Split(sum, " ")[0] & "|" & px &/ sIcon)
    Next
  Next
  File.Save($Path &/ "PicShaSums", aSums.Join(gb.NewLine))

End

Saludos
Última modificación: 21-02-2023, 18:31 por Shordi.

No podemos regresar
Grandamakulo   22-02-2023, 10:54
#5
Reconozco que me será útil sólo como curiosidad. Eso sí, tiene narices lo de llamarse Picha Suma. Parece un fantasma de barra de bar, jajaja.
Última modificación: 22-02-2023, 10:54 por Grandamakulo.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
Shordi   22-02-2023, 12:10
#6
(22-02-2023, 10:54)Grandamakulo escribió:
Reconozco que me será útil sólo como curiosidad. Eso sí, tiene narices lo de llamarse Picha Suma. Parece un fantasma de barra de bar, jajaja.

No hablemos de juegos de palabras con los nombres... no hablemos... Big Grin Big Grin Big Grin Big Grin Big Grin

No podemos regresar
Shordi   23-02-2023, 13:11
#7
Revisando el tema, he decidido sustituir el archivo que a Grandamakulo tanta gracia le hacía por un archivo de la clase Settings. Es lo mismo que hice antes con los Shasums, pero dejando a la clase Settings el tema de recuperación y grabación del mismo. Me parece más pulcro y coherente.

También le he acortado algo el tiempo de ejecución usando
Código:
Left(sum, InStr(sum, " ") - 1)

en lugar de

[code]

que usaba en la versión anterior.

Saludos
Archivos adjuntos
.gz
ViewStock-0.0.2.tar.gz (Tamaño: 12.22 KB Descargas: 3)
Última modificación: 23-02-2023, 13:31 por Shordi.

No podemos regresar
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.