Primera consulta sobre fiveMac

User avatar
Antonio Linares
Site Admin
Posts: 42727
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 94 times
Been thanked: 108 times
Contact:

Re: Primera consulta sobre fiveMac

Post by Antonio Linares »

Manuel,

El warning que comentas se debe a un requerimiento que se ha implementado para el API del 10.6 (Snow Leopard 64) y que se denomina el "protocolo NSToolbarDelegate": http://developer.apple.com/mac/library/documentation/cocoa/reference/NSToolbarDelegate_Protocol/Reference/Reference.html

Dicho warning se soluciona facilmente con este cambio en toolbars.m:

Code: Select all | Expand

@interface ToolBar : NSToolbar <NSToolbarDelegate> 

lo que ocurre es que si ponemos esa claúsula entonces da error para el API del 10.5 (Leopard 32). Es preferible que tengamos un warning con el OSX 10.6 y que compile para ambos :-)

Con esas funciones que estas implementando podemos ir añadiendo nuevos métodos a la clase TImage :-)

Por cierto, son apreciaciones mias, ó Snow Leopard es más lento refrescando la pantalla ? He leido comentarios de otros usuarios de OSX que tambien indican una lentitud de pintado del Snow Leopard respecto al Leopard. Tal vez sea una cuestión solo de drivers y que aún no están afinados.

Tambien el iOS 4.0 (iPhone) esta dando muchos problemas por lentitud a un montón de usuarios. O tal vez sea que requiere un hardware mas potente como el que usa el iPhone 4:
http://www.applesfera.com/curiosidades/problemas-de-lentitud-con-el-ios-4-en-tu-iphone-3g-prueba-esto
Curiosidades... :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

Antonio Linares wrote:Por cierto, son apreciaciones mias, ó Snow Leopard es más lento refrescando la pantalla ? He leido comentarios de otros usuarios de OSX que tambien indican una lentitud de pintado del Snow Leopard respecto al Leopard. Tal vez sea una cuestión solo de drivers y que aún no están afinados.

En mi macbook blanco ( core2duo -grafica intel - 2 Gg memoria ) no noto ninguna lentitud de pintado respecto a leopard ,la "actualización" a hecho que el portatil funcione mas rápido en general y le ha dado una segunda vida .
En mi Imac de última hornada ( nunca ha tenido leopard ) la cosa cambia . Es una verguenza . Los drivers de ATI tanto para win7 ( bootcamp) como para MAcosX son de traca , poco mas que básicos .
En bootcamp se arregla colocando los de la página de ATI ,que aunque no son optimos para el equipo van mil veces mejor que la porqueria que propone apple .
En Macosx , yo he experimentado problemas de refresco de pantalla con refrescos ocasionales lentos que dejan artefactos a lo largo de todo el monitor . Se sulucionaba temporalmente limpiando la PRAM del equipo pero volvía al poco tiempo . Ha mejorado algo con la última actualización , y segun creo los drivers para nvidia van "discretamente bien " pero lejos de los de windows , pero los de ATI son para denunciar .

Respecto al ipone con iOS4 ( yo no tengo iphone :-) ) por lo que sé ( tengo uno en estos momentos en la mano para poder hablar ), el problema radica en que la gente está haciendo una actualización "sucia" del sistema . Si se formatea el sistema y se instala el iOs 4 " de cero" y luego sincronizas los datos con el itunes , no notas diferencia alguna respecto al iphone 3.1.3 ( hablo siempre de un terminal 3GS ) .
Saludos.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

Otras cuantas functiones sin probar , ahora para la progressbar :

Code: Select all | Expand

}HB_FUNC( PROGRESSSETMAX ) {    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );    [ progressIndicator setMaxValue: hb_parnl( 2 ) ];}HB_FUNC( PROGRESSSETMIN ) {    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );    [ progressIndicator setMinValue: hb_parnl( 2 ) ];}HB_FUNC( PROGRESSINCREMEN ) {    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );    [ progressIndicator incrementBy: hb_parnl( 2 ) ];}HB_FUNC( PROGRESSSETSPIN ) {    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );    [ progressIndicator setStyle: NSProgressIndicatorSpinningStyle  ];}HB_FUNC( PROGRESSSETBAR ) {    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );    [ progressIndicator setStyle:  NSProgressIndicatorBarStyle  ];} 


Saludos.

----------------------- editado para ampliar -------------------------

Las funciones anteriores estan probadas y funcionando a ellas añado estas mas :

Code: Select all | Expand

HB_FUNC( PROGRESSSETINDETERMINATE ){    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );        [ progressIndicator setIndeterminate : YES ];}HB_FUNC( PROGRESSSTARTANIME ){    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );        [ progressIndicator startAnimation :  progressIndicator  ];}HB_FUNC( PROGRESSSTOPANIME ){    NSProgressIndicator * progressIndicator = ( NSProgressIndicator * ) hb_parnl( 1 );        [ progressIndicator stopAnimation : progressIndicator   ];} 


el testprog modificado para las pruebas :

Code: Select all | Expand

function Main()local nPos := 0   local oWnd, oProg      DEFINE WINDOW oWnd TITLE "TEST PROGRESS" ;      FROM 20, 100 TO 420, 90 TEXTURED         oWnd:Center()         oProg = TProgress():New( 40, 10, 400, 30, oWnd, 0 )       //Progresssetspin(oProg:hWnd)   PROGRESSSETMAX(oProg:hWnd, 10)     PROGRESSSETMAX(oProg:hWnd, 5)     PROGRESSSETINDETERMINATE (oProg:hWnd)   PROGRESSSTARTANIME(oProg:hWnd)    @ 2, 1 BUTTON "Ok" OF oWnd ACTION  PROGRESSSTopANIME(oProg:hWnd)     //oProg:Update( nPos += 1 )  // ProgressRun( oProg, oWnd )     ACTIVATE WINDOW oWnd     return nil 



Las funciones de la toolbar están tambien Funcionando bien . Pero no consiguo que se ejecute la "ACTION" de sus botones , ¿ Es cosa mia , o está sin implementar ?
Saludos.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

posible implementacion de la clase progress :

Code: Select all | Expand

#include "FiveMac.ch"//----------------------------------------------------------------------------//CLASS TProgress FROM TControl   DATA   nMin, nMax, nPos, nStep  AS NUMERIC   METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, nProg )      METHOD Update( nProg ) INLINE ProgressUpdate( ::hWnd, nProg )   METHOD SetStep( nStepInc ) INLINE ( PROGRESSINCREMEN ( ::hWnd, nStepInc ) , ::nStep := nStepInc )    METHOD SetMin( nMin ) INLINE ( PROGRESSSETMIN ( ::hWnd, nMin ) , ::nMin  := nMin  )   METHOD SetMax( nMax ) INLINE ( PROGRESSSETMAX ( ::hWnd, nMax ) , ::nMax  := nMax )   METHOD Setindeterminate() INLINE PROGRESSSETINDETERMINATE( ::hWnd )   METHOD SetSpinner(lspinner) INLINE  iif ( lspinner , PROGRESSSETSPIN( ::hWnd ) ,  PROGRESSSETBAR( ::hWnd ) )   METHOD SetAnimate(lestado ) INLINE  iif ( lestado  , PROGRESSsTartAnime( ::hWnd ) ,  PROGRESSsTopAnime( ::hWnd ) )ENDCLASS   //----------------------------------------------------------------------------//METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, nProg ) CLASS TProgress   DEFAULT nWidth := 100, nHeight := 100 ,nProg := 0   ::oWnd  = oWnd   ::hWnd = ProgressCreate( nTop, nLeft, nWidth, nHeight, oWnd:hWnd, nProg )   ::Update( nProg )   oWnd:AddControl( Self )    
User avatar
Antonio Linares
Site Admin
Posts: 42727
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 94 times
Been thanked: 108 times
Contact:

Re: Primera consulta sobre fiveMac

Post by Antonio Linares »

Manuel,

Las funciones de la toolbar están tambien Funcionando bien . Pero no consiguo que se ejecute la "ACTION" de sus botones , ¿ Es cosa mia , o está sin implementar ?


Estas usando el build más reciente de FiveMac ? Gracias a una modificación realizada por Dino Alessandri conseguimos que los botones de las barras de botones volviesen a ejecutar sus acciones.

Construye samples\osxpro.prg y pulsa el botón "New" de la barra de botones superior.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

Correcto , funciona perfecto . Estaba usando la versión anterior por los cambios que tenía hechos para añadir funciones .
Saludos.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

En el ejemplo testslid.prg , parece que el evento bchange de los sliders no funciona .
Saludos.
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

Nueva funcion para borrar directorios , ficheros o enlaces hecha usando la clase filemanager de Macosx ( porpietaria del sistema ) :

Code: Select all | Expand

HB_FUNC( REMOVE ){    NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 1 ) ? hb_parc( 1 ) : "" ] autorelease ];        NSFileManager *filemgr = [NSFileManager defaultManager];    hb_retl(( [filemgr removeItemAtPath: string  error: NULL]  == YES ) );  } HB_FUNC( MACEXEC ){    NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 1 ) ? hb_parc( 1 ) : "" ] autorelease ];        NSWorkspace *theProcess = [[[NSWorkspace alloc] init]autorelease ];     hb_retl([theProcess launchApplication:string]);       } HB_FUNC( HIDEAPPS ){    NSWorkspace *theProcess = [[[NSWorkspace alloc] init]autorelease ];     [theProcess hideOtherApplications];   } HB_FUNC( SPOTLITE ){    NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 1 ) ? hb_parc( 1 ) : "" ] autorelease ];        NSWorkspace *theProcess = [[[NSWorkspace alloc] init]autorelease ];     hb_retl([theProcess showSearchResultsForQueryString:string]);     } HB_FUNC( HIDEAPPS ){    NSWorkspace *theProcess = [[[NSWorkspace alloc] init]autorelease ];     [theProcess hideOtherApplications];   } HB_FUNC( OPENFILE ){    NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 1 ) ? hb_parc( 1 ) : "" ] autorelease ];        NSWorkspace *theProcess = [[[NSWorkspace alloc] init]autorelease ];     hb_retl([theProcess openFile:string]);    }  
User avatar
mastintin
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Primera consulta sobre fiveMac

Post by mastintin »

Funcion para mejora de los botones :

Code: Select all | Expand

HB_FUNC( BTNSETBEZEL ){    NSButton * button = ( NSButton * ) hb_parnl( 1 );    [ button setBezelStyle :hb_parnl( 2 )];}  

usado el testdlg2.prg

Code: Select all | Expand

#include "FiveMac.ch"#define   NSRoundedBezelStyle           = 1#define    NSRegularSquareBezelStyle     = 2#define    NSThickSquareBezelStyle       = 3#define    NSThickerSquareBezelStyle     = 4 #define   NSDisclosureBezelStyle        = 5 #define   NSShadowlessSquareBezelStyle  = 6#define    NSCircularBezelStyle          = 7 #define   NSTexturedSquareBezelStyle    = 8#define    NSHelpButtonBezelStyle        = 9#define    NSSmallSquareBezelStyle       = 10#define    NSTexturedRoundedBezelStyle   = 11#define    NSRoundRectBezelStyle         = 12#define    NSRecessedBezelStyle          = 13#define    NSRoundedDisclosureBezelStyle = 14function Main()   local oDlg, cFirst := Space( 20 ), cLast := Space( 20 )   local obtn   DEFINE DIALOG oDlg TITLE "Testing Gets" ;      FROM 270, 350 TO 389, 206         @ 139, 50 SAY "First:" OF oDlg SIZE 50, 17         @ 137, 108 GET cFirst OF oDlg SIZE 208, 22 ;      VALID If( Empty( cFirst ), ( MsgInfo( "Please type something" ), .f. ), .t. )      @  98, 50 SAY "Last:" OF oDlg SIZE 50, 17      @  96, 108 GET cLast OF oDlg SIZE 208, 22      @34, 83 BUTTON obtn PROMPT "OK" OF oDlg ACTION oDlg:End()   BTNSETBEZEL(obtn:hWnd,11)      @ 34, 218 BUTTON "Cancel" OF oDlg ACTION oDlg:End()      ACTIVATE DIALOG oDlg CENTERED   return nil    
Post Reply