ciao a tutti, avrei un po' di domandine varie:
1) Quando creo un nuovo programma mi ritrovo sempre questo:
PUBLIC SUB _new()
......
End
Ha una funzione in particolare? Perché io non l'ho mai usato...
2) Dando uno sguardo all'esempio movieplayer, non ho mai capito come si utilizza
il programma movieplayer reindirizzando tutto alla drawingarea (se non sbaglio
è stata usata una drawingarea per visualizzare i filmati)
In pratica non ho capito come si utilizza un componente esterno.
Ad esempio in C si usa "includere" la libreria necessaria, ma in gambas?
Se volessi usare gstreamer al posto di mplayer come dovrei fare?
3) Se volessi individuare la posizione del mio mouse in una drawingarea e
scriverla in due valuebox in cui uno mi dia la posizione delle ascisse ed uno
quella delle ordinate, come dovrei fare? Mi occorrerebbe utilizzare anche un
timer che aggiorni i valori dei due valuebox?
Ciao e grazie mille!
1) Secondo me _new si usa per fare delle cose prima di aprire la Form con Form_Open, tipo impostare dei Settings o delle stringhe o verificare se ci sono le condizioni per aprire la Form, oppure impostare delle icone a seconda di una determinata situazione. Ho visto il codice dell'IDE di Gambas e mi sembra che Benoit lo usi così.
2) Se guardi il codice di movieplayer vedrai che nella chiamata di EXEC
EXEC ["mplayer", "-wid", lblMoviePlayer.Handle,
c'è l'opzione -wid di mplayer. Da "man mplayer":
It also supports the standard X11 -geometry option format.
If an external window is specified using the -wid option,
then the x and y coordinates are relative to the top-left
corner of the window rather than the screen.
In pratica si dice a mplayer di "riprodurre il video" sulle coordinate date da lblMoviePlayer.Handle. L'help della proprietà Handle in Gambas:
Control.Handle (gb.qt)
Syntax
PROPERTY READ Handle AS Pointer
Returns the internal X11 window handle of the control.
Per usare gstreamer devi trovare l'equivalente dell'opzione -wid di mplayer.
Per quanto riguarda l'uso di librerie esterne, in Gambas si usa EXTERN (guarda Help).
3) Devi impostare la proprietà tracking su TRUE.
DrawingArea1.Tracking = TRUE
poi usi l'evento MouseMove:
PUBLIC SUB DrawingArea1_MouseMove()
PRINT Mouse.X
PRINT Mouse.Y
END
Saluti.
Non so se puoi visualizzare il video in un pannello. Forse la drawing area è
fatta apposta per questi compiti. Però, tentare non nuoce.
-wid (also see -guiwid) (X11, OpenGL and DirectX only)
This tells MPlayer to attach to an existing window. Useful to em-
bed MPlayer in a browser (e.g. the plugger extension
Questa opzione dice a mplayer di attaccarsi a una finestra esistente.
La proprietà handle restitutisce l'identificativo della drawing area, in modo che "mplayer -wid"
sappia dove "attaccarsi".
la libmovieplayer io non la vedo nel codice :-)
C'è lblMoviePlayer che è il nome dato alla DrawingArea. Quindi lblMoviePlayer.Handle dà l'identificativo per l'opzione -wid di mplayer.
Ciao.
Il metodo "_new()" è il vero costruttore dell'oggetto (di qualsiasi tipo)!
Tramite questo metodo è possibile passare all'oggetto parametri, utili al condizionamento dell'oggetto stesso, ad esempio:
PUBLIC SUB _new(x AS Integer, y AS Integer)
ME.X = x
ME.Y = y
...
END
il passaggio dei parametri x,y permette di modificare la posizione iniziale dell'oggetto (una form ad esempio).
In questo modo puoi anche passare altre cose, tipo oggetti vari (esempio una form principale), che verrà utilizzata da questa form, magari associando il parametro ad una variabile privata:
PRIVATE $var AS Form
PUBLIC SUB _new(parent s Form)
$var = parent
...
END