Primera consulta sobre fiveMac

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Wed Jun 30, 2010 6:00 pm

Manuel,

Respecto a CurDir() yo creo que la solución es no usarlo y especificar una trayectoria absoluta.

Otra opción muy interesante, es la que comentas de poner las DBFs dentro de la propia carpeta del ejecutable.
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby mastintin » Wed Jun 30, 2010 9:51 pm

He cambiado la ruta del dbf en el ejemplo browse :

USE /Applications/browse.app/Test

He tenido en cuenta que las aplicaciones siempre se deben de instalar en la carpeta "aplicaciones" y he metido el dbf dentro del programa . Funciona a la perfección.
dejo una captura del Monitor de actividad donde se ve funcionando la aplicacion browse compilada en nativo a 64bits.
Image

Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Wed Jun 30, 2010 10:28 pm

Manuel,

Muy bien! :-)

Excelente idea la de usar la carpeta de la aplicación para guardar los datos, DBFs, etc que necesite :-)
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby mastintin » Thu Jul 01, 2010 3:32 pm

He mirado como podria conseguir una aplicacion la referencia de su paquete , para poder introducir en el una imagen( o cualquier cosa ) y poder llamarla sin tener que saber la ruta absoluta donde se tiene instalado el programa .
He creado esta funcion para cargarla , puede que no este bien , que tenga algun gazapo y ademas no puedo probarla pues ahora mismo estoy sobre windows , pero la idea es esa mas o menos ...La he llamado resfile para emular imagenes en recursos y el secreto esta en la clase NSBundle que es una clase de manejo del paquete .
Saludos.

Code: Select all  Expand view

HB_FUNC( IMGSETRESFILE )
{
   NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
   NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 2 ) ? hb_parc( 2 ) : "" ] autorelease ];
   NSString *myImagePath = [[[NSBundle mainBundle] resourcePath]  stringByAppendingString:@"/"+string];
   
   
   [ image setImage : [ [ NSImage alloc ] initWithContentsOfFile : myImagePath ] ];
}
 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby mastintin » Thu Jul 01, 2010 6:51 pm

He estado corrigiendo el archivo makefile que viene en la distrbución con los nombres correctos de las librerias para que funcione . .
Code: Select all  Expand view


# FiveMac makefile sample (c) FiveTech Software 2007
# Use TABs instead of spaces
# just type make to build it

all : ./one.app/Contents/MacOS/one
    ./one.app/Contents/MacOS/one
    reset
   
PRG_OBJS = ./one.o  \
    ./two.o \
    ./three.o   \

./one.app/Contents/MacOS/one : $(PRG_OBJS)
    if [ ! -d one.app ]; then mkdir one.app; fi
    if [ ! -d one.app/Contents ]; then mkdir one.app/Contents; fi
    if [ ! -d one.app/Contents/MacOS ]; then mkdir one.app/Contents/MacOS; fi
    gcc one.o two.o three.o -o ./one.app/Contents/MacOS/one -L./../lib -lfive -lfivec -L./../../harbour/lib -lhbdebug -lhbvm -lhbrtl -lhblang -lhbrdd -lhbrtl -lgtstd -lgttrm -lhbvm -lhbmacro -lhbpp -lrddntx -lrddcdx -lrddfpt -lhbsix -lhbcommon -framework Cocoa

./%.c : ./%.prg
    ./../../harbour/bin/harbour $< -o./$@ -n -I./../../harbour/include -I./../include

./%.o : ./%.c
    gcc -c -o $@ -I./../../harbour/include $<


 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby mastintin » Thu Jul 01, 2010 7:46 pm

una captura de browse funcionando con la dbf dentro del contenedor y con su propio icono tambien en el contenedor .
Image
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby mastintin » Thu Jul 01, 2010 8:57 pm

Continuo avanzando con el tema del contenedor ... he conseguido que el ejemplo testimg encuentre la imagen dentro de la carpetas Resources del contenedor ...
los cambios son los siguientes :
en el archivo fivemac.ch
esto es algo provisional y rapido :
Code: Select all  Expand view

#xcommand @ <nRow>, <nCol> RESIMAGE [ <oImg> ] ;
             [ OF <oWnd> ] ;
                 [ SIZE <nWidth>, <nHeight> ] ;
                 [ FILENAME <cFileName> ] ;
              => ;
                 [ <oImg> := ] TImage():New( <nRow>, <nCol>, <nWidth>, <nHeight>, [<oWnd>],;
                                             [<cFileName>] , .t. )
                               

 


en la clase image :

Añade el metodo :
Code: Select all  Expand view

  METHOD SetResfile(cFileName) INLINE ImgSetresFile( ::hWnd , cFileName )
 


modificado metodo :
Code: Select all  Expand view

METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, cFileName, lres ) CLASS TImage

   DEFAULT nWidth := 100, nHeight := 100
   DEFAULT lres:= .f.

   ::hWnd = ImgCreate( nTop, nLeft, nWidth, nHeight, oWnd:hWnd )
   ::oWnd  = oWnd

   if lres
     if ! Empty( cFileName )  
       ::SetresFile( cFileName )
   endif  
  else
   if ! Empty( cFileName ) .and. File( cFileName )
      ::SetFile( cFileName )
   endif  
   endif
   oWnd:AddControl( Self )
   
return Self  

 


Añadida function al archivo images.m de la api .
Code: Select all  Expand view

HB_FUNC( IMGSETRESFILE )
{
    NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
    NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 2 ) ? hb_parc( 2 ) : "" ] autorelease ];
    NSString *myImagePath = [[[NSBundle mainBundle] resourcePath]  stringByAppendingString:string];
    [ image setImage : [ [ NSImage alloc ] initWithContentsOfFile : myImagePath ] ];
   
   
}
 


cambiando en el programa la linea :

@ 100, 139 RESIMAGE oImg OF oWnd SIZE 107, 91 FILENAME "/error.tif"

Funciona perfectamente y sabe en todo momento donde debe buscar los archivos de imagen . Supongo que sacar la ruta del contenedor no será demasiado complicado .
Saludos.

---------------- editado para añadir ---------------------

Con esta otra funcion conseguimos el path de la carpeta resource correcto :
Code: Select all  Expand view

HB_FUNC( RESPATH )
{
        NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
        hb_retc( [ bundlePath cStringUsingEncoding : NSASCIIStringEncoding ] );
}  
 


Y con esta otra el path de la aplicacion :

Code: Select all  Expand view

HB_FUNC( APPPATH )
{
        NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
        NSString *secondParentPath = [[bundlePath stringByDeletingLastPathComponent] stringByDeletingLastPathComponent];
        hb_retc( [ secondParentPath cStringUsingEncoding : NSASCIIStringEncoding ] );
}  

 


:-))
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Thu Jul 01, 2010 9:45 pm

Manuel,

He estado corrigiendo el archivo makefile que viene en la distrbución con los nombres correctos de las librerias para que funcione . .


Actualizado para el próximo build que publiquemos :-)

Muchas gracias! :-)
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Thu Jul 01, 2010 9:48 pm

Manuel,

browse funcionando con la dbf dentro del contenedor y con su propio icono tambien en el contenedor


Muy bien! :-)

Podrias publicar aqui el código del ejemplo browse.prg modificado ? gracias

En que subcarpeta has situado el icono ? Algún requerimiento en especial en cuanto a tamaño, formato, etc ?

Muchas gracias por tus valiosas aportaciones! :-)
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Thu Jul 01, 2010 11:27 pm

Manuel,

gracias por las funciones AppPath() y ResPath(). Añadidas para el próximo build de FiveMac.

Hemos probado hb_ArgV( 0 ) y devuelve bien el path del ejecutable. Esto es algo propio de los compiladores en C.

Vamos ahora a probar tu trabajo relativo a las imágenes. Muchas gracias por tus aportaciones que estan siendo muy interesantes y útiles :-)
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Thu Jul 01, 2010 11:46 pm

Manuel,

La nueva cláusula del comando para imágenes creemos que es preferible implementarla de esta manera por mantener la mayor compatibilidad posible con FiveWin:
Code: Select all  Expand view

#xcommand @ <nRow>, <nCol> IMAGE [ <oImg> ] ;
                 [ OF <oWnd> ] ;
                 [ SIZE <nWidth>, <nHeight> ] ;
                 [ FILENAME <cFileName> ] ;
                 [ <resource: NAME, RESOURCE, RESNAME> <cResName> ] ;
              => ;
                 [ <oImg> := ] TImage():New( <nRow>, <nCol>, <nWidth>, <nHeight>, [<oWnd>],;
                                             [<cFileName>], [<cResName>] )
 
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Fri Jul 02, 2010 12:01 am

Manuel,

Hemos publicado un nuevo build de FiveMac con los cambios más recientes :-)

Gracias!
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby mastintin » Fri Jul 02, 2010 5:57 am

en browse he realizado "a mano" (parte de ello se puede hacer en build.sh ) lo siguiente :

He colocado dentro de brwse.app el fichero test.dbf ( se podría crear un carpeta llamada dbf para colocar todos los archivos dbf dentro) .
Detro de la carpeta Contents he creado una carpeta Resources donde he metido todas las imagenes que se necesiten en el programa , en esta caso el icono .
El icono lo he realizado con el programa Icon composer ( en developper->applications->utilidades) y tiene un formato ICNS con todos los tamaños dentro (512,256,128,32,16) .
Tambien he introducido dentro de Contents un archivo info.plist ( archivo xml con información del programa ) donde le he dicho como se llama el icono del programa .
A nivel de codigo el cambio es minimo :
so lo he puesto estas dos lineas :
Code: Select all  Expand view

 local cpath:=apppath()
   USE  ( cpath+"/Test" )
 

Adjunto el ejectutable :
http://rapidshare.com/files/404424172/browse.zip.html
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Postby Antonio Linares » Fri Jul 02, 2010 7:01 am

Manuel,

Gracias! :-)
regards, saludos

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

Re: Primera consulta sobre fiveMac

Postby mastintin » Fri Jul 02, 2010 10:20 am

Antonio la funcion apppath() creo que se puede simplificar asi ( FUNCIONA ) :
Code: Select all  Expand view

 HB_FUNC( APPPATH2 )
{
   NSString *buPath = [[NSBundle mainBundle] bundlePath];
   hb_retc( [ buPath cStringUsingEncoding : NSASCIIStringEncoding ] );
}
 


Por otro lado he realizado estas funciones para el manejo de imagenes FUNCIONA( por lo menos scalenonen y scaleajustratio ) :
Code: Select all  Expand view


 HB_FUNC( IMGSETSCALENONE )
{
   NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
 
   [ image setImageScaling : NSImageScaleNone ];
}

  HB_FUNC( IMGSETSCALEAJUST )
{
   NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
 
   [ image setImageScaling : NSImageScaleProportionallyDown ];
}

 HB_FUNC( IMGSETSCALEINDEPENDEN )
{
   NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
 
   [ image setImageScaling : NSImageScaleAxesIndependently ];
}

 HB_FUNC( IMGSETSCALEAJUSTRATIO )
{
   NSImageView * image = ( NSImageView * ) hb_parnl( 1 );
 
   [ image setImageScaling :NSImageScaleProportionallyUpOrDown  ];
}
 


Tambien para el toolbar ( sin probar ) :
(nota ) no lo he conseguido probar porque al intentar compilar toolbars.m me da este error :

toolbars.m: In function ‘HB_FUN_TBRCREATE’:
toolbars.m:54: warning: class 'ToolBar' does not implement the 'NSToolbarDelegate' protocol


Code: Select all  Expand view

HB_FUNC( TBSETMODEICOLBL )
{
 ToolBar * toolbar = ( ToolBar * ) hb_parnl( 1 );
[toolbar setDisplayMode : NSToolbarDisplayModeIconAndLabel   ] ;
}

HB_FUNC( TBSETMODEICO )
{
 ToolBar * toolbar = ( ToolBar * ) hb_parnl( 1 );
[toolbar setDisplayMode : NSToolbarDisplayModeIconOnly   ] ;
}

HB_FUNC( TBSETMODEICOLBL )
{
 ToolBar * toolbar = ( ToolBar * ) hb_parnl( 1 );
[toolbar setDisplayMode : NSToolbarDisplayModeLabelOnly   ] ;
}

HB_FUNC( TBSETMODEDEFAULT )
{
 ToolBar * toolbar = ( ToolBar * ) hb_parnl( 1 );
[toolbar setDisplayMode : NSToolbarDisplayModeDefault  ] ;
}
 


Probablemente se podra realizar una sola función que resuma todas ;-)

Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

PreviousNext

Return to FiveMac / FivePhone (iPhone, iPad)

Who is online

Users browsing this forum: No registered users and 4 guests