Page 1 of 1
RASPI / FiveLinux y el alineamiento de los SAY
Posted: Tue Feb 16, 2016 7:33 pm
by George
Como alinear (justify) a la izquierda y a la derecha los textos creados con el comando SAY?
Lo que sucede es que los SAY creados con FiveLinux en Raspbian (Debian en Raspberry PI) siempre salen centralizados.
Añadi el siguiente codigo:
http://forums.fivetechsupport.com/viewt ... 11&t=10992 Sugerido por un compañero del foro, pero no me funciono.
Alguien ha podido alinear los textos en SAY ?
Alguna sugerencia?
Estoy usando la mas reciente version de harbour y fivelinux para Raspberry Pi sugerida por Antonio.
Saludos,
George
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Tue Feb 16, 2016 8:43 pm
by Antonio Linares
George,
Cómo has llamado a la función SAYSETALIGN() ?
Que parámetros le has proporcionado ?
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Tue Feb 16, 2016 9:33 pm
by George
Antonio,
Este es el codigo que he usado acorde a lo indicado en el post:
@ 14, 2 SAY oSayName PROMPT "Name:" OF oFormCompany SIZE 100,20 PIXEL
oSayName:SetAlignment(0.0, 0.5)
No se ejecuta ningun cambio en el alineamiento del texto y en la consola sale el siguiente mensaje:
(main:1803): Gtk-CRITICAL **: IA__gtk_misc_set_alignment: assertion 'GTK_IS_MISd
Saludos,
George
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Wed Feb 17, 2016 9:08 am
by Antonio Linares
George,
Como has añadido el método SetAlignment() en la clase TSay ?
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Wed Feb 17, 2016 2:35 pm
by George
Antonio,
Estos son _ que hice para agregar el nuevo metodo SetAlignment a la clase TSay:
SAY.PRG
Code: Select all
#include "FiveLinux.ch"
//----------------------------------------------------------------------------//
CLASS TSay FROM TControl
METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate, oFont,;
lPixel, lDesign, cVarName )
METHOD cGenPrg()
METHOD SetText( cText ) INLINE SaySetText( ::hWnd, cText )
METHOD GetText() INLINE SayGetText( ::hWnd )
METHOD SetJustify( nType ) INLINE SaySetJustify( ::hWnd, nType ) // LEFT = 0, RIGHT = 1, CENTER = 2, FILL = 3
METHOD setangle(nAngle) INLINE SaySetAngle(::hWnd,nAngle)
// Added
METHOD SetAlignment( fHAlign, fVAlign ) INLINE SaySetAlign( ::hWnd, fHAlign, fVAlign )
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate, oFont,;
lPixel, lDesign, cVarName ) CLASS TSay
DEFAULT oWnd := GetWndDefault(), nWidth := 70, nHeight := 20,;
lUpdate := .f., lPixel := .F., lDesign := .F.
::hWnd = CreateSay( cText )
::lUpdate = lUpdate
::lDrag = lDesign
::cVarName = cVarName
oWnd:AddControl( Self )
SetParent( ::hWnd, oWnd:hWnd )
::SetPos( nRow * If( lPixel, 1, 10 ), nCol * If( lPixel, 1, 10 ) )
::SetSize( nWidth, nHeight )
if oFont != nil
::SetFont( oFont )
endif
::Link()
::Show()
return Self
//----------------------------------------------------------------------------//
METHOD cGenPrg() CLASS TSay
local cCode := CRLF + " @ " + Str( ::nTop, 3 ) + ", " + ;
Str( ::nLeft, 3 ) + " SAY " + ::cVarName + ;
' PROMPT "' + ::GetText() + '"' + ;
' SIZE ' + Str( ::nWidth, 3 ) + ", " + ;
Str( ::nHeight, 3 ) + " PIXEL OF " + ::oWnd:cVarName + CRLF
return cCode
SAY.C
Code: Select all
[code]#include <hbapi.h>
#include <gtk/gtk.h>
gboolean button_press_event( GtkWidget * hWnd, GdkEventButton * event );
gboolean motion_notify_event( GtkWidget * hWnd, GdkEventMotion * event );
HB_FUNC( CREATESAY )
{
GtkWidget * hWnd = gtk_label_new( hb_parc( 1 ) );
GtkWidget * event_box = gtk_event_box_new();
gtk_signal_connect( GTK_OBJECT( event_box ), "button_press_event",
( GtkSignalFunc ) button_press_event, NULL );
gtk_signal_connect( GTK_OBJECT( event_box ), "motion_notify_event",
( GtkSignalFunc ) motion_notify_event, NULL );
gtk_widget_set_events( event_box, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK
| GDK_BUTTON_PRESS_MASK
| GDK_POINTER_MOTION_MASK
| GDK_POINTER_MOTION_HINT_MASK );
gtk_container_add( GTK_CONTAINER( event_box ), hWnd );
gtk_widget_show( hWnd );
hb_retnl( ( HB_ULONG ) event_box );
}
HB_FUNC( SAYSETTEXT )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
gtk_label_set_text( children->data, hb_parc( 2 ) );
}
HB_FUNC( SAYGETTEXT )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
hb_retc( ( char * ) gtk_label_get_text( children->data ) );
}
HB_FUNC( SAYSETJUSTIFY )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
gtk_label_set_justify( ( GtkLabel * ) hWnd, ( GtkJustification ) hb_parnl( 2 ) );
}
HB_FUNC( SAYSETANGLE )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
gtk_label_set_angle( children->data , hb_parnl( 2 ) );
}
// Added
HB_FUNC( SAYSETALIGN )
{
GtkWidget * hWnd = (GtkWidget * ) hb_parnl( 1 );
gtk_misc_set_alignment( ( GtkMisc * ) hWnd, hb_parnd( 2 ), hb_parnd( 3 ) );
}
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Wed Feb 17, 2016 2:49 pm
by Antonio Linares
George,
He encontrado esto al revisar la documentación de gtk_misc_set_alignment():
https://developer.gnome.org/gtk3/stable ... -alignment
gtk_misc_set_alignment has been deprecated since version 3.14 and should not be used in newly-written code.
Use GtkWidget's alignment (“halign” and “valign”) and margin properties or GtkLabel's “xalign” and “yalign” properties
Re: RASPI / FiveLinux y el alineamiento de los SAY
Posted: Wed Feb 17, 2016 2:58 pm
by Antonio Linares
Para modificar esas propiedades prodriamos usar:
gtk_object_set_data()
Tienes ejemplos de uso en source\winapi\windows.c (fivelinux)