Primera consulta sobre fiveMac
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- 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.
![Image](http://img338.imageshack.us/img338/3239/screencapturelo.png)
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.
![Image](http://img338.imageshack.us/img338/3239/screencapturelo.png)
Saludos.
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Muy bien!![Smile :-)](./images/smilies/icon_smile.gif)
Excelente idea la de usar la carpeta de la aplicación para guardar los datos, DBFs, etc que necesite![Smile :-)](./images/smilies/icon_smile.gif)
Muy bien!
![Smile :-)](./images/smilies/icon_smile.gif)
Excelente idea la de usar la carpeta de la aplicación para guardar los datos, DBFs, etc que necesite
![Smile :-)](./images/smilies/icon_smile.gif)
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 | Expand
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 | Expand
# 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 .
![Image](http://img684.imageshack.us/img684/2713/screencapturelj.png)
Saludos.
![Image](http://img684.imageshack.us/img684/2713/screencapturelj.png)
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 ...
los cambios 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 :
)
los cambios son los siguientes :
en el archivo fivemac.ch
esto es algo provisional y rapido :
Code: Select all | Expand
#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
METHOD SetResfile(cFileName) INLINE ImgSetresFile( ::hWnd , cFileName )
modificado metodo :
Code: Select all | Expand
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
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
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
HB_FUNC( APPPATH )
{
NSString *bundlePath = [[NSBundle mainBundle] resourcePath];
NSString *secondParentPath = [[bundlePath stringByDeletingLastPathComponent] stringByDeletingLastPathComponent];
hb_retc( [ secondParentPath cStringUsingEncoding : NSASCIIStringEncoding ] );
}
![Smile :-)](./images/smilies/icon_smile.gif)
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Actualizado para el próximo build que publiquemos![Smile :-)](./images/smilies/icon_smile.gif)
Muchas gracias!![Smile :-)](./images/smilies/icon_smile.gif)
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
![Smile :-)](./images/smilies/icon_smile.gif)
Muchas gracias!
![Smile :-)](./images/smilies/icon_smile.gif)
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Muy bien!![Smile :-)](./images/smilies/icon_smile.gif)
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!![Smile :-)](./images/smilies/icon_smile.gif)
browse funcionando con la dbf dentro del contenedor y con su propio icono tambien en el contenedor
Muy bien!
![Smile :-)](./images/smilies/icon_smile.gif)
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!
![Smile :-)](./images/smilies/icon_smile.gif)
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- 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![Smile :-)](./images/smilies/icon_smile.gif)
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
![Smile :-)](./images/smilies/icon_smile.gif)
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- 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 | Expand
#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: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
Re: Primera consulta sobre fiveMac
Manuel,
Hemos publicado un nuevo build de FiveMac con los cambios más recientes![Smile :-)](./images/smilies/icon_smile.gif)
Gracias!
Hemos publicado un nuevo build de FiveMac con los cambios más recientes
![Smile :-)](./images/smilies/icon_smile.gif)
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 | Expand
local cpath:=apppath()
USE ( cpath+"/Test" )
Adjunto el ejectutable :
http://rapidshare.com/files/404424172/browse.zip.html
- Antonio Linares
- Site Admin
- Posts: 42450
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 20 times
- Been thanked: 58 times
- Contact:
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![Wink ;-)](./images/smilies/icon_wink.gif)
Saludos.
Code: Select all | Expand
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
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
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
![Wink ;-)](./images/smilies/icon_wink.gif)
Saludos.