FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveLinux / FiveDroid (Android) Usar GTK con FiveLinux
Posts: 170
Joined: Sat Aug 07, 2010 11:36 PM
Usar GTK con FiveLinux
Posted: Thu Dec 29, 2011 02:22 PM

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

Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Usar GTK con FiveLinux
Posted: Thu Dec 29, 2011 07:51 PM
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


Code (fw): Select all Collapse
// 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
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 170
Joined: Sat Aug 07, 2010 11:36 PM
Re: Usar GTK con FiveLinux
Posted: Tue Jan 03, 2012 06:59 PM

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,

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Usar GTK con FiveLinux
Posted: Tue Jan 03, 2012 09:36 PM
Jorge,

Puedes ampliarlo facilmente para que admita cualquier color :-)

Code (fw): Select all Collapse
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 );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion