Page 1 of 1

Trabajando con gtk con fivelinux

Posted: Tue Dec 06, 2011 3:59 pm
by jgayoso
Tengo el siguiente extracto de codigo, pero al mostrar el valor cPaso no me muestra ningun valor y yo esperaba que me mostrara "OPCION-33".
Me compila bien sin errores, pero no hace lo esperado.
Estoy con trabajando con FiveLinux y Linux Suse.

Desde ya se agradece cualquier ayuda.



Local oDlg, oBtn,oBtn2,cPaso

DEFINE DIALOG oDlg SIZE nAnchoDialogo, nAltoDialogo
@ nL, nC BUTTON oBtn PROMPT "OPCION-1" OF oDlg SIZE nLB*nAnchoLetra,nAltoLetra ACTION ( nSeleccion:=1, lExit := .T., oDlg:End() )
@nL, nC BUTTON oBtn2 PROMPT "OPCION-2" OF oDlg SIZE nLB*nAnchoLetra,nAltoLetra ACTION ( nSeleccion:=2, lExit := .T., oDlg:End() )

gtk_button_set_label(oBtn,"OPCION-33")
cPaso:=gtk_button_get_label(oBtn)

ACTIVATE DIALOG oDlg VALID lExit CENTER

msgalert(cPaso)



#IfDef __FIVELINUX__

#pragma BEGINDUMP

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

HB_FUNC( GTK_BUTTON_GET_LABEL ) // widget -> cExt
{
gchar *cText;
gchar *msg;
cText = ( gchar *) gtk_button_get_label( GTK_BUTTON( hb_parptr( 1 ) ) );
msg = ( gchar *) g_convert( cText, -1,"ISO-8859-1","UTF-8",NULL,NULL,NULL );
hb_retc( ( gchar * ) msg );
}

HB_FUNC( GTK_BUTTON_SET_LABEL ) // widget, cText
{
gchar *msg = g_convert( hb_parc(2), -1,"UTF-8","ISO-8859-1",NULL,NULL,NULL );
gtk_button_set_label( GTK_BUTTON( hb_parptr( 1 ) ), msg );
}

#pragma ENDDUMP
#Endif

Re: Trabajando con gtk con fivelinux

Posted: Tue Dec 06, 2011 5:48 pm
by Daniel Garcia-Gil
Hola

estas pasando un objeto a la funcion en C, debes pasar el handle (que esta representado por un numero y no por un puntero), entonces pienso que deberia quedar de esta manera

desde PRG

Code: Select all

gtk_button_set_label(oBtn:hWnd,"OPCION-33")
cPaso:=gtk_button_get_label(oBtn:hWnd)
desde C, cambia estas lineas

Code: Select all

 ( gchar *) gtk_button_get_label( ( GtkButton * ) hb_parnl( 1 ) );

Code: Select all

   gtk_button_set_label( ( GtkButton * ) hb_parnl( 1 ), msg );

Re: Trabajando con gtk con fivelinux

Posted: Tue Dec 06, 2011 7:44 pm
by Antonio Linares
Jorge,

Cambia estas líneas:

gtk_button_set_label(oBtn,"OPCION-33")
cPaso:=gtk_button_get_label(oBtn)

por:

oBtn:SetText( "OPCION-33" )
cPaso = oBtn:GetText()