Masquer la barre de titre d'une fenêtre HUD

bxdieselbxdiesel Membre
00:28 modifié dans API AppKit #1
Je voudrais faire une palette flottante de type HUD et j'ai pensé utiliser un NSPanel en cochant HUD dans IB.
Mais je ne veux pas de la barre de titre, or il me semble que le seul moyen d'enlever la barre de titre d'une fenêtre est de l'instancier par code en spéficiant NSBorderlessWindowMask comme styleMask.
Mais du coup, je ne sais pas comment préciser par code que ma fenêtre doit être de type HUD...

Réponses

  • GreensourceGreensource Membre
    00:28 modifié #2
    Si tu adjoins un controller à  cette fenêtre, tu pourras ensuite mettre à  jour ses property dans awakeFromNib.
  • fouffouf Membre
    00:28 modifié #3
    Sinon, tu sous-classe NSPanel et en particulier la méthode initWithContentRect:styleMask:backing:defer et tu utilises setBackgroundColor: et setOpaque:.

    En gros, tu reprogrammes toi-même l'affichage du fond de ta fenêtre.
  • bxdieselbxdiesel Membre
    00:28 modifié #4
    J'ai fait un petit essai en sous-classant NSPanel et ça a l'air nickel  ::)
    Merci pour les conseils.
  • yoannyoann Membre
    00:28 modifié #5
    dans 1248083449:

    Sinon, tu sous-classe NSPanel et en particulier la méthode initWithContentRect:styleMask:backing:defer et tu utilises setBackgroundColor: et setOpaque:.

    En gros, tu reprogrammes toi-même l'affichage du fond de ta fenêtre.


    Heu, si la sous classe ne sert qu'à  faire un setBackgroundColor: et setOpaque: lors de l'init, pourquoi ne pas le faire sans sous classe depuis le code ? Plus propre quand même.

    Ou au pire si vous voulez vraiment économiser 2 ligne de code faite une catégorie en rajoutant une méthode de convenance newHUDPanelWith...

    Quel est l'intérêt de la sous classe ici ?
  • fouffouf Membre
    00:28 modifié #6
    Pouvoir remplir la fenetre depuis IB avec les vues que l'on desire, comme une fenetre normale, mais en ayant en fait une fenetre "customizee".
  • yoannyoann Membre
    00:28 modifié #7
    Ok, pas idiot en effet, je serais plus passé par le NSWindowController pour appliquer la modif au chargement de la fenêtre
  • FloFlo Membre
    00:28 modifié #8

    je serais plus passé par le NSWindowController pour appliquer la modif au chargement de la fenêtre


    Il me semble que c'est la méthode prônée par Apple non ?
  • yoannyoann Membre
    00:28 modifié #9
    dans 1248863005:


    je serais plus passé par le NSWindowController pour appliquer la modif au chargement de la fenêtre


    Il me semble que c'est la méthode prônée par Apple non ?


    C'est possible, dans l'idée si on peut faire autrement que part une sous classe autant le faire, ça évite des ennuies si Apple change sa manière de faire sur tel ou tel chose
  • GreensourceGreensource Membre
    00:28 modifié #10
    De ce que j'ai compris de mes lectures Cocoa est fait pour composer plutôt que sous-classer. Confère le début du chapitre sur le mécanisme Target-Action du bouquin d'Hillegass.

    Et ça colle mieux avec le principe d'envoi de message je trouve.
  • fouffouf Membre
    00:28 modifié #11
    Vous avez surement raison, mais au niveau de la gestion des fenêtres HUD, j'en suis un peu resté à  ce qui existait avant Leopard, c'est-a-dire à  l'absence totale de fenêtres HUD et donc au besoin de tout recoder à  la main. Lorsqu'il s'agit de faire cela, la nécessité de sous-classer me parait évidente, ne serai-ce que pour des critères de ré-utillisation (faire du copier-coller de code pour des sous-classes de NSWindowController me semble moyen).

    De toutes façons, comme Apple ne fournit toujours pas les controles HUD qui vont avec les fenêtres, on aura toujours des trucs de ce style à  faire (sous-classer des vues) tant que l'on ne pourra pas rajouter un style (NSBezelStyle) aux controles Cocoa sans-sous classer.
Connectez-vous ou Inscrivez-vous pour répondre.