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

Programar para diferentes GUI
#1
Information 

Hola a todos.
Recientemente me han comentado que ciertos programas no funcionan en tal o cual sistema, que qt4 o qt5 no esta en el sistema etc. etc.
No es nada nuevo, de hecho casi siempre que uno hace un programa usando el componente gb.qt o gb.qt[4|5] o gb.gtk o gb.gtk3 alguien suele tener problemas con el programa.
La solución, que no siempre es posible, es usar el componente gb.gui esto asegura cierta compatibilidad en el paquete.
Digo que no siempre es posible ya que algunos componentes, desafortunadamente, no tienen soporte para todos los GUI.
En gambas siempre suele estar mejor soportado qt y esto funciono como regla mnemotécnica hasta que empezó a aparecer en escena qt5 en los sistemas. Luego vino una "era" que persiste actualmente de problemas qt4/5.
Algunos programadores argüían que usando gb.qt o gb.qt[4|5] no habría problemas, y en cierto modo si distribuían para sistemas que usaban qt esto funcionaba pero si el sistema usaba GTK o ahora sistemas que ya no tenian qt4 o todavia no tienen qt5, ahí si habría problemas.
Entonces que hacemos ¿Como programamos para que los TODOS los demás puedan usar los programas?
La regla que funciona en todas partes es "Usa el componente GB.GUI" esto asegura mas compatibilidad.
[Imagen: 47Pyifl.png]
https://es.wikipedia.org/wiki/Interfaz_g...de_usuario
Saludos.

1 Saludo.
    ¡Gracias!
#2

¿Pero estás seguro que usando gb.gui si el sistema de destino no tiene GTK y tampoco QT4 será capaz de seleccionar QT5?

Porque entonces, ¿para qué se creó el componente gb.qt.gui ? Para seleccionar entre qt4 y qt5, pero no sé si gb.gui será capaz de seleccionar qt5 llegado el caso.

Esa es mi duda y aún no he realizado las pruebas pertinentes, que podrían ser bastante tediosas. Quizá sea más fácil preguntar en la lista internacional, jaja...

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
    ¡Gracias!
#3

(17-08-2020, 22:13)jguardon escribió:  ¿Pero estás seguro que usando gb.gui si el sistema de destino no tiene GTK y tampoco QT4 será capaz de seleccionar QT5?
Porque entonces, ¿para qué se creó el componente gb.qt.gui ? Para seleccionar entre qt4 y qt5, pero no sé si gb.gui será capaz de seleccionar qt5 llegado el caso.
Esa es mi duda y aún no he realizado las pruebas pertinentes, que podrían ser bastante tediosas. Quizá sea más fácil preguntar en la lista internacional, jaja...
Analicemos un poco la cuestión. Cuando hacemos un programa con el componente gb.gui, luego, al empaquetar, aparecen los siguientes paquetes, en mi caso son de extensión tar.xz porque es una distro Arch, pero en la derivadas de Debian aparecerán .deb
Bash
  1. gambas-programita-0.0.123-1-any.pkg.tar.xz
  2. gambas-programita-gtk3-0.0.123-1-any.pkg.tar.xz
  3. gambas-programita-gtk-0.0.123-1-any.pkg.tar.xz
  4. gambas-programita-qt4-0.0.123-1-any.pkg.tar.xz
  5. gambas-programita-qt5-0.0.123-1-any.pkg.tar.xz


Bueno, gtk y qt en cualquiera de sus versiones, son las interfaces gráficas de usuario mas probables por ello creo que los paquetes generados por el empaquetador de gambas reflejan dicha realidad ya que hay programita-0.0.123-1 que es el se ejecuta para instalar y luego el instalador decide cual de los paquetes "gráficos" utilizar , es decir programita-[gtk|gtk3|qt4|qt5]-0.0.123-1
En este punto y respondiendo a la pregunta de Jguardon, al instalar el paquete, el instalador elegirá la GUI adecuada al sistema.
¿Como hace el instalador para elegir? No lo se.
El caso es que si hacemos ex porfeso el paquete para una sola de las GUI hay otras 3 que quedaran fuera de juego desde el punto de vista del paquete y habrá problemas de instalación.
Saludos.

1 Saludo.
    ¡Gracias!
#4

(18-08-2020, 13:06)tincho escribió:  El caso es que si hacemos ex porfeso el paquete para una sola de las GUI hay otras 3 que quedaran fuera de juego desde el punto de vista del paquete y habrá problemas de instalación.

Correcto. Pero puede que yo estuviera interesado en usar qt4|qt5 en lugar de GTK porque quizás algún control gráfico funcione mejor con qt... o por cualquier otra razón. Entonces, no soy yo el que decido, sino gb.gui. Si no encuentra paquetes qt en el sistema (algo bastante raro) la aplicación se instalará con librerías GTK que no es lo que yo quería en principio. Lo suyo es que al forzar mi programa a usar qt4 o qt5 (ahí sí entra en juego gb.qt.gui) dichos paquetes instalen las dependencias necesarias y de esa manera mi aplicación sea qt (y en ningún caso gtk). 

Así es como yo lo veo, pero no entiendo la problemática salvo por la transición entre qt4 o 5 que aún se está produciendo en algunas distros...

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
    ¡Gracias!
#5

(18-08-2020, 20:50)jguardon escribió:  Correcto. Pero puede que yo estuviera interesado en usar qt4|qt5 en lugar de GTK porque quizás algún control gráfico funcione mejor con qt... o por cualquier otra razón.
Si, estoy de acuerdo, de hecho existen controles que solo funcionan con qt como webview por nombrar uno y no queda alternativa que especificar directamente qt.
Cada cual es dueño de hacer lo que le desee con sus programas, pero si lo hacen con gb.gui aumenta la probabilidad de que los demás lo usen y revisen.
Este tema que publique tiene la intensión de informar sobre este echo, nada mas.
[Imagen: wmKi7Yu.png]
Creo que por defecto se debe usar gb.gui, y solo si no queda otra usar gb.qt o gb-qt[4|5] así los demás usuarios y programadores pueden instalar los programas.
Saludos.

1 Saludo.
    ¡Gracias!
#6

Que escritorios usan, gtk o kde?
Saludos.

1 Saludo.
    ¡Gracias!
#7

Yo uso xfce, y casi todo lo hago con QT y me funcionan bien. 
Con qtk, algunas veces tengo problemas, o se ve raro los formularios.
    ¡Gracias!
#8

(28-08-2020, 13:43)jsbsan escribió:  Yo uso xfce, y casi todo lo hago con QT y me funcionan bien. 
Con qtk, algunas veces tengo problemas, o se ve raro los formularios.

Yo también uso xfce pero en mi  caso es al revés, funciona mejor con componentes GUI. Solo tira un error en la consola de gambas relacionado con que no encuentra gtk3 y usara gtk en su lugar (lo cual es lógico porque xfce es gtk no gtk3).
Uso la distro manjaro y se ve perfecto.
Mira dejo aquí una capturas de pantalla de los dos modos, donde el segundo ademas le modifique los iconos para que use los del escritorio y no los naranjas originales.
También dejo el código fuente modificado por si a ti a a alguien le interesa
[Imagen: zaKsJez.png][Imagen: 0JF8Juy.png]
Saludos.


Archivos adjuntos
.gz naranjito-gui-0.0.6.tar.gz Tamaño: 136.01 KB  Descargas: 3

1 Saludo.
    ¡Gracias!
#9

Hola Tincho

Yo trabajo con Manjaro KDE y utilizo gb.gui desde que descarté webview (ahora mando todo al navegador por defecto del sistema) y 0 (cero) problemas, la aplicación más importante que tengo corre también en otra máquina con Linux Mint y también 0 (cero) problemas de interfaz, utilizo iconos propios (descarto los del sistema adrede), así que ahí tampoco hay problemas.

Sls
    ¡Gracias!
#10

(29-08-2023, 19:46)alberto-moyano escribió:  utilizo iconos propios (descarto los del sistema adrede), así que ahí tampoco hay problemas.

Si, eso unas veces es deseable y otras no, depende del programa y el nivel de integración que debe tener el programa en el escritorio.
Lo ideal es que el usuario de tu programa pueda elegir el juego de iconos propio o el del tema de escritorio, lo que es mas fácil decirlo que hacerlo.
Yo hice un programa de ejemplo que permite cambiar lo iconos a voluntad, pero requiere una adaptación del programa donde cada botón tiene que tener un .Tag del estilo "actions/document-new" que es como se llama el icono en los diferentes temas de escritorio y entonces luego podes cambiar en tiempo d ejecución el aspecto de la app con un método recursivo como el siguiente:
GAMBAS
  1. '' Este método escanea todos los botones del formulario y les asigna (si corresponde) un icono SVG en el directorio ./var/svg.
  2. '' Por ejemplo, si la etiqueta de un botón es "actualizar", entonces debe existir un icono llamado ./var/svg/actualizar.svg.
  3.  
  4. Static Public Sub Update(obj As Object, Optional sTheme As String = "default", Optional sLang As String = "en", Optional oTags As Collection)
  5.  
  6.   Dim myclass As Class
  7.  
  8.   myclass = Object.Class(obj)
  9.  
  10.   If myclass.Symbols.Exist("Arrangement") Then
  11.     For Each ch In obj.Children
  12.       If Object.Type(ch) = "ToolButton" And Not IsNull(ch.tag) Then
  13.         ch.Picture = TagPic(ch.Tag, ch.W - 7,, sTheme)
  14.         If oTags Then
  15.           If oTags.Exist(sLang) Then
  16.             If oTags[sLang].Exist(ch.Tag) Then
  17.               ch.Tooltip = oTags[sLang][ch.Tag]
  18.             Endif
  19.           Endif
  20.         Endif
  21.       Else
  22.         Update(ch, sTheme, sLang, oTags)
  23.       Endif
  24.     Next


Nota: el programa lo podes ver en https://gambas-es.org/showthread.php?tid=1422

1 Saludo.
    ¡Gracias!


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

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)