RASPI / FiveLinux y el alineamiento de los SAY

Post Reply
George
Posts: 710
Joined: Tue Oct 18, 2005 6:49 pm

RASPI / FiveLinux y el alineamiento de los SAY

Post 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.


Image
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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post by Antonio Linares »

George,

Cómo has llamado a la función SAYSETALIGN() ?

Que parámetros le has proporcionado ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
George
Posts: 710
Joined: Tue Oct 18, 2005 6:49 pm

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post by Antonio Linares »

George,

Como has añadido el método SetAlignment() en la clase TSay ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
George
Posts: 710
Joined: Tue Oct 18, 2005 6:49 pm

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post 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 ) );
}
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: RASPI / FiveLinux y el alineamiento de los SAY

Post by Antonio Linares »

Para modificar esas propiedades prodriamos usar:

gtk_object_set_data()

Tienes ejemplos de uso en source\winapi\windows.c (fivelinux)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply