Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  ¿Como determinar si un programa usa GTK o QT?
#1
Bug 

Hola.
¿Alguien podria decir como saber en tiempo de ejecución que componente usa un programa?
Busco una forma similar a como se hace para saber si el tema de escritorio es dark o no.
Ej:
GAMBAS
  1. If Application.DarkTheme Then
  2.   Print "Hi Anakin"
  3.   Print "Hi Obi-Wan"


Nota: Existen algunas llamadas (no se si es el temino correcto) a OpenGL que no funcionan en GTK3 mientras que en QT5 si lo hacen. Entonces deseo eludir lo que no funciona cuando el programa corre.
Ademas de la solucion que propuso Charly, agrego dos maneras mas de abordar el tema que recibi por la lista internacional de gambas:
GAMBAS
  1.   If Component.IsLoaded("gb.gtk3") Then
  2.     Print "Benoit dice que el toolkit es:" & "gb.gtk3"
  3.  
  4.   Print "Bruce dice que el toolkit es:" & Env["GB_GUI"]




Gracias.

1 Saludo.
    ¡Gracias!
#2

Espero que este código haga lo que quieres.

GAMBAS
  1. ' Gambas class file
  2.  
  3. Public Sub Form_Open()
  4.  
  5.   Dim GridView1 As GridView
  6.   Dim sData As New String[]
  7.   Dim MyComponent As Component
  8.   Dim sLib As String
  9.   Dim iCol, iRow As Integer
  10.   Dim sHeader As String[] = ["Component.Name", "Component.Version", "Component.Library"]
  11.  
  12.   For Each MyComponent In Components
  13.     If MyComponent.Library = True Then sLib = "True" Else sLib = "False"
  14.     sData.Add(MyComponent.Name & "," & MyComponent.Version & "," & sLib)
  15.   Next
  16.  
  17.   With Me
  18.     .Height = 400
  19.     .Width = 450
  20.     .Padding = 5
  21.     .Arrangement = Arrange.Vertical
  22.     .Center
  23.  
  24.   With GridView1 = New GridView(Me) As "Gridview1"
  25.     .Clear
  26.     .Rows.Count = sData.Count
  27.     .Columns.Count = 3
  28.     .Expand = True
  29.     .Header = Gridview.both
  30.  
  31.   For iCol = 0 To 2
  32.     Gridview1.Columns[iCol].Title = sHeader[iCol]
  33.   Next
  34.  
  35.   For iRow = 0 To sData.Max
  36.     For iCol = 0 To 2
  37.       Gridview1[iRow, iCol].Text = Split(sData[iRow])[iCol]
  38.     Next
  39.   Next
  40.  
  41.   GridView1.Columns.Width = -1
  42.  


[-] Los siguientes 2 usuarios dicen gracias a cogier por este post:
  • Shell, tincho
    ¡Gracias!
#3

(24-09-2022, 17:54)cogier escribió:  Espero que este código haga lo que quieres.

Si, muy didactico, le agregue una funcion y un panel con un boton para mostrar que toolkit usa el programa.
GAMBAS
  1. ' Gambas class file
  2.  
  3. Public Sub Form_Open()
  4.  
  5.   Dim GridView1 As GridView
  6.   Dim sData As New String[]
  7.   Dim MyComponent As Component
  8.   Dim sLib As String
  9.   Dim iCol, iRow As Integer
  10.   Dim sHeader As String[] = ["Component.Name", "Component.Version", "Component.Library"]
  11.  
  12.   Dim pnl As Panel
  13.   Dim btn As Button
  14.  
  15.   For Each MyComponent In Components
  16.     If MyComponent.Library = True Then sLib = "True" Else sLib = "False"
  17.     sData.Add(MyComponent.Name & "," & MyComponent.Version & "," & sLib)
  18.   Next
  19.  
  20.   With pnl = New Panel(Me) As "Panel1"
  21.     .h = 42
  22.     .w = 120
  23.     .Arrangement = Arrange.Horizontal
  24.     .Margin = True
  25.  
  26.   With btn = New Button(pnl) As "Button11"
  27.     .h = 42
  28.     .w = 60
  29.     If gtkToolkit() Then
  30.       .Text = "GTK"
  31.     Else
  32.       .Text = "QT"
  33.     Endif
  34.  
  35.  
  36.   With Me
  37.     .Height = 400
  38.     .Width = 450
  39.     .Padding = 5
  40.     .Arrangement = Arrange.Vertical
  41.     .Center
  42.  
  43.   With GridView1 = New GridView(Me) As "Gridview1"
  44.     .Clear
  45.     .Rows.Count = sData.Count
  46.     .Columns.Count = 3
  47.     .Expand = True
  48.     .Header = Gridview.both
  49.  
  50.   For iCol = 0 To 2
  51.     Gridview1.Columns[iCol].Title = sHeader[iCol]
  52.   Next
  53.  
  54.   For iRow = 0 To sData.Max
  55.     For iCol = 0 To 2
  56.       Gridview1[iRow, iCol].Text = Split(sData[iRow])[iCol]
  57.     Next
  58.   Next
  59.  
  60.   GridView1.Columns.Width = -1
  61.  
  62.  
  63. Public Function gtkToolkit() As Boolean
  64.  
  65.   Dim MyComponent As Component
  66.   Dim bgtk As Boolean
  67.  
  68.   For Each MyComponent In Components
  69.     If MyComponent.Name = "gb.gtk3" Then
  70.       bgtk = True
  71.       Break
  72.     Endif
  73.   Next
  74.  
  75.   Return bgtk
  76.  



1 Saludo.
[-] Los siguientes 2 usuarios dicen gracias a tincho por este post:
  • Shell, tercoide
    ¡Gracias!
#4

Buenas!.

Tengo un proyecto que está hecho para QT5. Los componentes que están en uso o cargados son: (por defecto).

gb.form
gb.gui.qt
gb.image

He seleccionado que el gui que se inicie con QT5 en cambio aparece gb.gui.qt (eso es raro) y también he seleccionado el componente qt5 manualmente
para ver la diferencia. La respuesta en la lista del GridView en la columna de Component.Library siempre es Falso.Que no son librerías.

[Imagen: 039Zy53.png]

Incluso he probado con el componente gb.cairo que dice que es una "librería gráfica", pero luego me dice el ejemplo que no es una librería. Confused

Saludos

"Pero no toques, por qué tocas? - Amador"
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)