Primera consulta sobre fiveMac
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
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.
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.
Re: Primera consulta sobre fiveMac
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.
Saludos.
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.
Saludos.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Muy bien!
Excelente idea la de usar la carpeta de la aplicación para guardar los datos, DBFs, etc que necesite
Muy bien!
Excelente idea la de usar la carpeta de la aplicación para guardar los datos, DBFs, etc que necesite
Re: Primera consulta sobre fiveMac
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.
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
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 ] ];
}
Re: Primera consulta sobre fiveMac
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
# 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 $<
Re: Primera consulta sobre fiveMac
una captura de browse funcionando con la dbf dentro del contenedor y con su propio icono tambien en el contenedor .
Saludos.
Saludos.
Re: Primera consulta sobre fiveMac
Continuo avanzando con el tema del contenedor ... he conseguido que el ejemplo testimg encuentre la imagen dentro de la carpetas Resources del contenedor ...
_ son los siguientes :
en el archivo fivemac.ch
esto es algo provisional y rapido :
en la clase image :
Añade el metodo :
modificado metodo :
Añadida function al archivo images.m de la api .
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 :
Y con esta otra el path de la aplicacion :
)
_ son los siguientes :
en el archivo fivemac.ch
esto es algo provisional y rapido :
Code: Select all
#xcommand @ <nRow>, <nCol> RESIMAGE [ <oImg> ] ;
[ OF <oWnd> ] ;
[ SIZE <nWidth>, <nHeight> ] ;
[ FILENAME <cFileName> ] ;
=> ;
[ <oImg> := ] TImage():New( <nRow>, <nCol>, <nWidth>, <nHeight>, [<oWnd>],;
[<cFileName>] , .t. )
Añade el metodo :
Code: Select all
METHOD SetResfile(cFileName) INLINE ImgSetresFile( ::hWnd , cFileName )
Code: Select all
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
Code: Select all
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 ] ];
}
@ 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
HB_FUNC( RESPATH )
{
NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
hb_retc( [ bundlePath cStringUsingEncoding : NSASCIIStringEncoding ] );
}
Code: Select all
HB_FUNC( APPPATH )
{
NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
NSString *secondParentPath = [[bundlePath stringByDeletingLastPathComponent] stringByDeletingLastPathComponent];
hb_retc( [ secondParentPath cStringUsingEncoding : NSASCIIStringEncoding ] );
}
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Muchas gracias!
Actualizado para el próximo build que publiquemosHe estado corrigiendo el archivo makefile que viene en la distrbución con los nombres correctos de las librerias para que funcione . .
Muchas gracias!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
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!
Muy bien!browse funcionando con la dbf dentro del contenedor y con su propio icono tambien en el contenedor
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!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
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:
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
#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>] )
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Hemos publicado un nuevo build de FiveMac con _ más recientes
Gracias!
Hemos publicado un nuevo build de FiveMac con _ más recientes
Gracias!
Re: Primera consulta sobre fiveMac
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 :
Adjunto el ejectutable :
http://rapidshare.com/files/404424172/browse.zip.html
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
local cpath:=apppath()
USE ( cpath+"/Test" )
http://rapidshare.com/files/404424172/browse.zip.html
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Gracias!
Gracias!
Re: Primera consulta sobre fiveMac
Antonio la funcion apppath() creo que se puede simplificar asi ( FUNCIONA ) :
Por otro lado he realizado estas funciones para el manejo de imagenes FUNCIONA( por lo menos scalenonen y scaleajustratio ) :
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
Probablemente se podra realizar una sola función que resuma todas
Saludos.
Code: Select all
HB_FUNC( APPPATH2 )
{
NSString *buPath = [[NSBundle mainBundle] bundlePath];
hb_retc( [ buPath cStringUsingEncoding : NSASCIIStringEncoding ] );
}
Code: Select all
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 ];
}
(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
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 ] ;
}
Saludos.