OVH Cloud OVH Cloud

[Cocoa-IB]Quitter une appli en fermant sa fenêtre

17 réponses
Avatar
pere.noel
est-il possible avec IB de faire en sorte que cliquer sur le bouton
rouge d'une fenêtre quitte l'appli ?
--
une bévue

7 réponses

1 2
Avatar
pere.noel
Luc Heinrich wrote:

Ca ne m'étonne pas du tout. Le 'exit' est quand même un peu expéditif,
pour ne pas dire un peu porc... :)


je le savais ;-)

Le mieux, puisque c'est du Cocoa, est bien sur de quitter façon Cocoa et
donc d'invoquer la méthode [terminate:] de NSApplication, qui fait tout
proprement.


ok, merci pour ce tuyau.
--
une bévue

Avatar
pere.noel
Luc Heinrich wrote:

Le mieux, puisque c'est du Cocoa, est bien sur de quitter façon Cocoa et
donc d'invoquer la méthode [terminate:] de NSApplication, qui fait tout
proprement.


Deux choses :
- si je fais :
def quitter(sender)
OSX::NSApplication.terminate
end
j'ai un message d'erreur :
/Library/Frameworks/RubyCocoa.framework/Versions/A/Resources/ruby/osx/ob
jc/oc_wrapper.rb:17:in `NSApplicationMain': NSApplicationMain -
RBException_OSX::OCMessageSendException - NSApplication#terminate -
methodSignature is nil. (OSX::OCException)
from
/Users/yvon/work/RubyCocoa/AB2Web/build/Development/AB2Web.app/Contents/
Resources/rb_main.rb:49


la partie intéressante de rb_main.rb étant :
if $0 == __FILE__ then
rb_main_init
OSX.NSApplicationMain(0, nil) ### ligne 49
end


je dis ça parce que j'ai l'imprssion que je devrais quitter depuis
rb_main.rb, càd appeller rb_main.rb depuis Controller.rb pour lui
demander de terminer, du genre (dans rb_main.rb)

attr_accessor :application

dans def rb_main_init j'aouterais :

@application = OSX::NSApplication

et une méthode "quitmain" :

def quitmain
@application.terminate
end

cette méthode je l'appellerais depuis Contoller.rb

???

- ensuite, je remarque qu'aucune des applications proposées en exemple
(dans /Developer/Examples/RubyCocoa) n'a un bouton Quitter ou
equivalent.
Une difficulté spécifique à RubyCocoa peut-être ?
--
une bévue

Avatar
pere.noel
Luc Heinrich wrote:

Le mieux, puisque c'est du Cocoa, est bien sur de quitter façon Cocoa et
donc d'invoquer la méthode [terminate:] de NSApplication, qui fait tout
proprement.


bon, finalement quelqu'un m'a donné la manière de faire avec IB ;
lier le bouton a File's Owner et choisir terminate...
--
une bévue

Avatar
Eric Levenez
Le 7/02/06 9:00, dans
, « Patrick
Stadelmann » a écrit :

In article <C00D6CBE.549B2%,
Eric Levenez wrote:

Oui, ces petites applis ne sont pas logiques par rapport au système


Je trouve pas... Quand on ferme un document dans TextEdit, on a
peut-être envie d'en créer un nouveau ou d'en ouvrir un autre après,
normal que l'application reste ouverte. Avec la Calculette, quand on la
ferme ca ne va pas être le cas, logique donc que l'application quitte.


C'est pour cela que je disais qu'il faudrait ne pas avoir de bouton de
fermeture de fenêtre pour ce genre d'application.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
pere.noel
Eric Levenez wrote:


C'est pour cela que je disais qu'il faudrait ne pas avoir de bouton de
fermeture de fenêtre pour ce genre d'application.


perso j'ai supprimé ces trois boutons rouge, jaune vert.
j'utilise un bouton Quitter lié à File's Owner > terminate

j'ai remarqué que les exemples fournis avec RubyCocoa n'ont pas de
bouton Quit...
--
une bévue

Avatar
luc
Une bévue wrote:

- si je fais :
def quitter(sender)
OSX::NSApplication.terminate
end
j'ai un message d'erreur :


terminate est une méthode d'instance, pas une méthode de classe, il faut
faire:

OSX::NSApplication.sharedApplication.terminate

- ensuite, je remarque qu'aucune des applications proposées en exemple
(dans /Developer/Examples/RubyCocoa) n'a un bouton Quitter ou
equivalent.
Une difficulté spécifique à RubyCocoa peut-être ?


Aucun rapport. Aucune des applications proposées en exemple avec XCode
n'a de bouton "Quitter" non plus, pour la bonne et simple raison que ça
ne sert à rien :)

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:

terminate est une méthode d'instance, pas une méthode de classe, il faut
faire:

OSX::NSApplication.sharedApplication.terminate


oui, oui, j'ai pigé ça.

- ensuite, je remarque qu'aucune des applications proposées en exemple
(dans /Developer/Examples/RubyCocoa) n'a un bouton Quitter ou
equivalent.
Une difficulté spécifique à RubyCocoa peut-être ?


Aucun rapport. Aucune des applications proposées en exemple avec XCode
n'a de bouton "Quitter" non plus, pour la bonne et simple raison que ça
ne sert à rien :)


ah bon, c'est dans les guidelines Apple ?

perso ce que je n'aime pas sur macos x c'est la barre de menu en haut de
l'écran, il faut ballader la souris tout en haut, ou bien utiliser le
dock pour quitter.

je trouve plus "naturel" de mettre un bouton quit sur la seule fenêtre
d'une appli...
--
une bévue


1 2