Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-07

Cambiar apariencia widget GTK2 programas para linux

4 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Sandro Amarain

Hola lista, tengo la necesidad de cambiar la apariencia visual de un programa en linux, el problema surge cuando ejecutan el programa en otra pc con un estilo GTk distinto, entonces se ven botones y fuentes desfasados. Buscando por la web no encuentro nada que lo solucione, en el wiki de lazarus aclaran que la LCL toma por defecto y da prioridad al tema instalado en el sistema por una cuesti�n de compatibildad multiplataforma.

Pero existe la posibilidad de aplicar un tema espec�fico?

Hay alternativas de pago para windows, como lazskin � themeEngine, pero busco otra cosa, algo gpl � la manera de hacerlo por c�digo para linux, aunque tambi�n habr�a versi�n para windows.

Por otro lado, el programa que estoy haciendo adem�s de ejecutarse en una lan por distintas pc, tiene la posibilidad de hacerlo (con distintas configuraciones) en diferentes instancias, es decir por ejemplo, como es un programa de gesti�n contable lo usan distintas empresas, y la idea es que cada empresa cuente con su propia configuraci�n adem�s de la visual. Esto ya lo tengo implementado sobre windows y con Visual Basic desde hace unos 7 a�os, por lo que est� en producci�n, en linux con ubuntu lo corro con wine, pero la idea es ir reemplazando con la versi�n en lazarus.

Agradezco opiniones.

Sandro Amarain

Reply by email

José Mejuto
to Sandro Amarain

Hello Sandro,

Wednesday, July 27, 2011, 5:00:44 PM, you wrote:

SA> Hola lista, tengo la necesidad de cambiar la apariencia visual de un SA> programa en linux, el problema surge cuando ejecutan el programa en otra SA> pc con un estilo GTk distinto, entonces se ven botones y fuentes SA> desfasados. Buscando por la web no encuentro nada que lo solucione, en SA> el wiki de lazarus aclaran que la LCL toma por defecto y da prioridad al SA> tema instalado en el sistema por una cuesti�n de compatibildad SA> multiplataforma.
SA> Pero existe la posibilidad de aplicar un tema espec�fico?

No. La soluci�n es que tu c�digo funcione correctamente est� como est� definido el skin de GTK. El mismo problema lo tendr�as en Windows con diferentes "themes" con o sin aero, classic Windows, etc... B�sicamente lo �nico que tienes que hacer es escalar los controles en funci�n del DPI del medio (pantalla en este caso) y opcionalmente en funci�n del tipo de fuente usado.

Recientemente se ha a�adido a Lazarus un ScaleBy que deber�a escalar los controles y el form. Yo no lo uso ya que me he escrito bastante antes mi propio scaleby que se adapta un poco mejor a mis gustos.

La idea b�sica es que en tiempo de dise�o calculo lo que ocupa un texto tipo como "The quick brown fox jumps over the lazy dog" y en tiempo de ejecuci�n lo comparo con la fuente actual y aplico el ScaleBy correspondiente.

Algo como:

Const
  TextReference='The quick brown fox jumps over the lazy dog';
  TextReferenceSizeX=233; //Por ejemplo
  TextReferenceSizeX=21;  //Por ejemplo
procedure Form1.AfterConstruction;
var
  X,Y: Single;
begin
  X:=Self.TextWidth(TextReference)/TextReferenceSizeX; //O era al rev�s?
  Y:=Self.TextHeight(TextReference)/TextReferenceSizeY;
  Self.ScaleBy(x,y);
end;

SA> Hay alternativas de pago para windows, como lazskin � themeEngine, pero SA> busco otra cosa, algo gpl � la manera de hacerlo por c�digo para linux, SA> aunque tambi�n habr�a versi�n para windows.

Es una mala idea aplicar skins a menos que tu aplicaci�n sea algo multimedia que quieres que quede "espectacular". Todos los skins suelen fallar en cosas, suelen ser lentos, y consumen memoria. En Linux adem�s est� "mal visto" tener un skin que se salga del standard definido por el usuario.

Best regards, Jos�

Reply by email

Sandro Amarain

Hola Jos�,

El 28/07/11 07:00, lazarus-es-request en lists.lazarus.freepascal.org escribi�:

Show quoted text 45 lines
Hello Sandro, Wednesday, July 27, 2011, 5:00:44 PM, you wrote: SA> Hola lista, tengo la necesidad de cambiar la apariencia visual de un SA> programa en linux, el problema surge cuando ejecutan el programa en otra SA> pc con un estilo GTk distinto, entonces se ven botones y fuentes SA> desfasados. Buscando por la web no encuentro nada que lo solucione, en SA> el wiki de lazarus aclaran que la LCL toma por defecto y da prioridad al SA> tema instalado en el sistema por una cuesti�n de compatibildad SA> multiplataforma. SA> Pero existe la posibilidad de aplicar un tema espec�fico? No. La soluci�n es que tu c�digo funcione correctamente est� como est� definido el skin de GTK. El mismo problema lo tendr�as en Windows con diferentes "themes" con o sin aero, classic Windows, etc... B�sicamente lo �nico que tienes que hacer es escalar los controles en funci�n del DPI del medio (pantalla en este caso) y opcionalmente en funci�n del tipo de fuente usado. Recientemente se ha a�adido a Lazarus un ScaleBy que deber�a escalar los controles y el form. Yo no lo uso ya que me he escrito bastante antes mi propio scaleby que se adapta un poco mejor a mis gustos. La idea b�sica es que en tiempo de dise�o calculo lo que ocupa un texto tipo como "The quick brown fox jumps over the lazy dog" y en tiempo de ejecuci�n lo comparo con la fuente actual y aplico el ScaleBy correspondiente. Algo como: Const TextReference='The quick brown fox jumps over the lazy dog'; TextReferenceSizeX=233; //Por ejemplo TextReferenceSizeX=21; //Por ejemplo procedure Form1.AfterConstruction; var X,Y: Single; begin X:=Self.TextWidth(TextReference)/TextReferenceSizeX; //O era al rev�s? Y:=Self.TextHeight(TextReference)/TextReferenceSizeY; Self.ScaleBy(x,y); end;

Muchas gracias, toda tu explicaci�n ha sido muy clara.

Show quoted text 10 lines
SA> Hay alternativas de pago para windows, como lazskin � themeEngine, pero SA> busco otra cosa, algo gpl � la manera de hacerlo por c�digo para linux, SA> aunque tambi�n habr�a versi�n para windows. Es una mala idea aplicar skins a menos que tu aplicaci�n sea algo multimedia que quieres que quede "espectacular". Todos los skins suelen fallar en cosas, suelen ser lentos, y consumen memoria. En Linux adem�s est� "mal visto" tener un skin que se salga del standard definido por el usuario.

En cuanto a los skins, mis usuarios no dicen lo mismo, les gusta que las distintas identificaciones de las empresas tengan distintos colorcitos... Saludos y reitero las gracias por tu tiempo y explicaci�n.

Reply by email

José Mejuto
to Sandro Amarain

Hello Sandro,

Thursday, July 28, 2011, 2:06:34 PM, you wrote:

SA> En cuanto a los skins, mis usuarios no dicen lo mismo, les gusta que las SA> distintas identificaciones de las empresas tengan distintos colorcitos... SA> Saludos y reitero las gracias por tu tiempo y explicaci�n.

jajajaja, hay que educar a los usuarios :) Ahora en serio, lo de los colorcitos no son skins o themes, en tal caso son "ownerdraw controls" o similares. Un skin o theme cambia no s�lo los colores, sin� la forma de las ventanas (y controles), el comportamiento de los mismos, etc. Por ejemplo un theme o skin puede indicar que en vez de click para activar algo, se tenga que usar doble click, que las scrollbars son invisibles hasta que se pasa por encima de donde deber�an estar, que los textbox por defecto van en negrita e it�lica, ......

Best regards, Jos�

Reply by email