AppleScript et Qtime plein écran

Lupin sansei

Membre émérite
18 Août 2002
506
9
Bonjour,

lors de mes recherches sur le net, j'ai trouvé sur Mac OS Hints de quoi créer une application Applescript en plein écran, sans dock ni barre de menu.

un fichier FullScreen.h
<font class="small">Code:</font><hr /><pre> #import &lt;Foundation/Foundation.h&gt;
#import &lt;AppKit/AppKit.h&gt;
@interface NSApplication (ASKAFullScreen)
- (NSWindow *)beginFullScreen;
- (void)endFullScreen;
@end </pre><hr />

et un fichier FullScreen.mm
<font class="small">Code:</font><hr /><pre>
#import "FullScreen.h"
NSWindow *fsWindow;
@implementation NSApplication (ASKAFullScreen)
- (NSWindow *)beginFullScreen
{ fsWindow = [
[NSWindow alloc]
initWithContentRect:[[NSScreen mainScreen] frame]
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
NSView *fsView=[[NSView alloc] initWithFrame:[fsWindow frame]];
[fsWindow setContentView:fsView];
NSImageView *fsImage = [[NSImageView alloc] initWithFrame:[fsView frame]];
[fsView addSubview:fsImage];
[fsWindow setBackgroundColor:[NSColor blackColor]];
[NSMenu setMenuBarVisible:0];
[fsWindow setHasShadow: NO];
[fsWindow makeKeyAndOrderFront:fsWindow];
return fsWindow;
}
- (void)endFullScreen
{ [NSMenu setMenuBarVisible:1];
[fsWindow setHasShadow: YES];
[fsWindow close];
}
@end
</pre><hr />

Ensuite on "se sert" de ces fichiers par les commandes

<font class="small">Code:</font><hr /><pre> set theWindow to (call method "beginFullScreen")
ou
call method "endFullScreen"
</pre><hr />
pour activer ou désactiver le plein écran.

En fait, je me suis apperçu que ça créée une fenetre noire en fond d'écran et les autres fentres de l'application, notamment la fenetre principale sont par dessus.
Je voudrais "poser" un viewer quicktime, non pas sur la fentre "principale" mais directement sur cette fenêtre noire pour faire du plein écran. Evidemment, je ne peux pas le faire via interface builder.
Peut être en faisant une "custom class" à partir de ces 2 fichiers et IB?..

est ce possible et si oui, quelle est la marche à suivre?....

ou alors y a t'il un moyen de faire disparaitre de la fentre principale les 3 boutons de controle rouge orange vert et la barre qui les porte? (sans faire disparaitre la fentre quicktime?

merci
 

la tortue

Membre confirmé
6 Novembre 2003
397
1
Tu ne peux pas changer le style (stylemask) d'un fenêtre une fois créée, donc tu ne peux pas supprimer la barre de titre de ta fenêtre comme-ça paf.

En revanche, pour résoudre ton problème (que j'avoue je n'ai pas très bien compris) tu peux essayer de placer ta fenêtre plein-écran par dessus les autres, en utilisant par exemple:
<font class="small">Code:</font><hr /><pre>
[fsWindow setLevel:NSFloatingWindowLevel];
</pre><hr />
 

Lupin sansei

Membre émérite
18 Août 2002
506
9
En fait mon problème, c'est que je veux faire mon propre player quicktime et qu'il puisse faire du plein écran.
les 2 fichiers ci-dessus permettent de faire disparaitre le dock, la barre de menus et afficher un fond noir. Le probleme c'est que mon objet NSMovieView, qui permet de jouer mes séquences, est posé sur une fenêtre NSWindow.
Si je fais du plein écran en agrandissant le plus possible NSMovieView et NSWindow, il reste toujours la barre du haut de la fenêtre et les 3 boutons.

Puisque manifestement on ne peut pas masquer cette barre, je voudrai "poser" l'objet NSMovieView directement sur la fenêtre noire créée par ces 2 fichiers, et me passer ainsi d' une fenêtre classique.

Ma question:
Comment faire?
Je ne connais rien au language Objetcive C
mais je bidouille applescript

je sais sinon que l'on peut scripter Qt pour faire du plein écran même si on a que la version de base, mais ça n'est pas ce que je veux.

merci
 

la tortue

Membre confirmé
6 Novembre 2003
397
1
Tu peux remplacer le contenu de la fenêtre plein écran par ta MovieView:
<font class="small">Code:</font><hr /><pre>
NSView *fsView=[[NSView alloc] initWithFrame:[fsWindow frame]];
[fsWindow setContentView:fsView];
NSImageView *fsImage = [[NSImageView alloc] initWithFrame:[fsView frame]];
[fsView addSubview:fsImage];
</pre><hr />

Comme ça par exemple:
<font class="small">Code:</font><hr /><pre>
NSView *movieView=[[NSMovieView alloc] initWithFrame:[fsWindow frame]];
[fsWindow setContentView: movieView];
</pre><hr />

Evidemment il faut ensuite que tu retrouve ta MovieView avec AppleScript
(et là j'y connais rien à part: "tell AppleScript to find your movie view")