Page 1 of 1

Usar GTK con FiveLinux

Posted: Thu Dec 29, 2011 2:22 pm
by jgayoso
Estoy tratando de cambiar el color del texto de un objeto SAY o BUTTOM, pero no hace nada.

Consulta ¿se puede hacer? ¿Qué estaré haciendo mal?

Se agradece cualquier ayuda.


DEFINE WINDOW oWnd_Principal TITLE hb_strtoutf8(cTitulo) SIZE 1024, 690

DEFINE FONT oFnt1 NAME "helvetica bold italic 130"
@ 36, 9 SAY oCaja PROMPT "CAJA "+alltrim(str(ncajax,2,0)) OF oWnd_Principal SIZE 800, 230 FONT oFnt1

@60,44 BUTTON oBtn PROMPT "Continuar" OF oWnd_Principal SIZE 120, nAltoLetra ACTION ( fRestauraPantallaPrincipal(oBtn), Pos_000() )

gtk_widget_modify_text(oCaja:hWnd)
gtk_widget_modify_text(oBtn:hWnd)

ACTIVATE WINDOW oWnd_Principal


#IfDef __FIVELINUX__

#pragma BEGINDUMP

#include <gtk/gtk.h>
#include "hbapi.h"

HB_FUNC( GTK_WIDGET_MODIFY_TEXT )
{
GdkColor color = { 0, 0, 0, 27500 };
gtk_widget_modify_text(( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_NORMAL, &color);
gtk_widget_modify_text(( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_ACTIVE, &color);
gtk_widget_modify_text(( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_PRELIGHT, &color);
gtk_widget_modify_text(( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_SELECTED, &color);
}


#pragma ENDDUMP
#Endif

Re: Usar GTK con FiveLinux

Posted: Thu Dec 29, 2011 7:51 pm
by thefull
En T-Gtk disponemos de una función para ello, quizás la puedas adaptar a FiveLinux.

Puedes ver un ejemplo de aplicación ;
http://www.gtxbase.org/devel/filedetail ... uttons.prg
Image

Code: Select all

// Funcion generica que cambia el color de un widget
/*
  STATE_NORMAL        # El estado durante la operacin normal
  STATE_ACTIVE        # El control est�activado, como cuando se pulsa un botn
  STATE_PRELIGHT      # El puntero del ratn est�sobre el control
  STATE_SELECTED      # El control est�seleccionado
  STATE_INSENSITIVE   # El control est�desactivado
*/

HB_FUNC( __GSTYLE )
{
   GtkWidget * widget = GTK_WIDGET( hb_parptr( 2 ) );

    gtk_widget_ensure_style( widget );  // Aseguramos que el Widget tengo el estilo
    GtkStyle* newstyle;              // Estilo a crear
    GdkColor color;
    int component = hb_parni( 3 );   // sobre que actuar
    int iState = hb_parni( 4 );      // Estado

    gdk_color_parse( hb_parc(1), &color);

    newstyle = gtk_style_copy( gtk_widget_get_style( widget ) );  // Copiamos el actual


     if (component & FGCOLOR)
         newstyle->fg[iState] = color;
     if (component &  BGCOLOR)
         newstyle->bg[iState] = color;
     if (component & BASECOLOR)
         newstyle->base[iState] = color;
     if (component &  TEXTCOLOR)
         newstyle->text[iState] = color;

    gtk_widget_set_style( widget, newstyle );  // Y se lo aplicamos

}
Al ser T-GTK un proyecto libre, puedes coger el código que necesites para adaptarlo a Fivelinux.
Miraté el código de la clase gButton.prg e intenta adaptarlo;
http://www.gtxbase.org/devel/filedetail ... button.prg

Re: Usar GTK con FiveLinux

Posted: Tue Jan 03, 2012 6:59 pm
by jgayoso
Ya lo solucione:

fLabel_Cambio_Color(oCaja:hWnd, 3);




HB_FUNC( FLABEL_CAMBIO_COLOR)
{
GdkColor tRojo = {0, 0xffff, 0x0000, 0x0000};
GdkColor tVerde = {0, 0x0000, 0xffff, 0x0000};
GdkColor tAzul = {0, 0x0000, 0x0000, 0xffff};
GdkColor tColor;

if (hb_parnl(2) == 1) {
tColor = tRojo;
} else if (hb_parnl(2) == 2) {
tColor = tVerde;
} else {
tColor = tAzul;
};

gtk_widget_modify_fg(( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_NORMAL, &tColor);
}

Saludos cordiales,

Re: Usar GTK con FiveLinux

Posted: Tue Jan 03, 2012 9:36 pm
by Antonio Linares
Jorge,

Puedes ampliarlo facilmente para que admita cualquier color :-)

Code: Select all

fLabel_Cambio_Color( oCaja:hWnd, 10, 20, 30 )

HB_FUNC( FLABEL_CAMBIO_COLOR ) 
{
   GdkColor color = { 0, hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ) };

   gtk_widget_modify_fg( ( GtkWidget * ) hb_parnl( 1 ), GTK_STATE_NORMAL, &color );
}