setHidden: et Mac OS X < 10.3

00:52 modifié dans API AppKit #1
Bonjour,

Une question que je me pose actuellement. Je développe toutes mes applis de manière à  être compatible 10.2 et éventuellement GNUstep.

Les méthodes setHidden n'existent que depuis 10.3, comment on faisait avant pour cacher une vue ???

Bon du coup je ne masque pas mon bouton mais je le désactive donc ça ne me gène pas des masses mais je me demande quand même...

Réponses

  • 00:52 modifié #2
    Je crois qu'on devait y arriver avec des removeFromSuperView, et la retenant ailleurs, puis addSubview.

    Petite note comme ça: à  ta place, je laisserais tomber Jaguar et pour les petits trucs qui manquent à  GNUStep, tu le fais tois même et envoie la modification à  l'équipe de GNUStep.
  • 00:52 modifié #3
    Merci pour la façon de faire le setHidden: si j'ai le temps je le ferais de cette manière.

    Pour ce qui est de laisser tomber Jaguar j'attends que Tiger sorte. Si je n'étais pas développeur j'en serais encore à  Jaguar et je connais pas mal de monde autour de moi qui sont encore sous Jaguar donc je préfère être compatible avec l'avant dernière version.

    Jaguar marche encore trés bien (d'ailleurs il est en dual boot avec Ubuntu sur mon iMac). Et je ne vois pas l'intérêt d'acheter une autre licence de Panther (une fois Tiger sorti j'achèterais une licence de Tiger et je ferais monter toutes mes machines d'une version :-)
  • mpergandmpergand Membre
    janvier 2005 modifié #4
    Petite note comme ça: à  ta place, je laisserais tomber Jaguar


    Ah bon !

    Si l'on veut diffuser son appli, pourquoi la faire compatible Panther seulement, si elle n'utilise aucunes fonctionalités de celui-ci ?

    Il semble que la répartition des OS soit du genre: 30% OS9, 30% Jaguar et 30% Panther.

    Y a déjà  pas beaucoup de monde sur Mac si en plus vous en ciblez une partie seulement :)

    Et quelles sont les technos spécifiques à  Panther:
    - le webkit, je crois que l'on peut l'installer séparément sous Jaguar,
    - les bindings, c'est un outil pour le développeur mais n'apporte rien à  l'utilisateur

    Si, il y a les applis audio, le coreAudio ayant été modifié dans Panther (brisant plus ou moins la compatibilité), toutes les applis ont été mises à  jours pour Panther.


    Autre chose ? peut-être mais ça doit pas être fondamental...

    En gros Panther == zéro NT ;D

    Je sais bien que la majorité entre vous à  découvert OSX avec Panther, mais c'est pas une raison ignorer le reste des uilisateurs.


    Un dernier conseil, si vous faites des applis compatibles Jaguar/Panther, testez-les dans les deux OS, Panther c'est plein de bugs ! >:D
  • janvier 2005 modifié #5
    Bon mon intention n'était pas de lancer un troll, mais tant pis. Je donne quand même mon point de vue, et après je ne dis plus rien. ;)

    Les bindings n'apportent peut être rien à  l'utilisateur, mais permettent de libérer du temps pour que le développeur puisse se consacrer à  des choses plus spécialisées (et plus intéressantes pour l'utilisateur) que remplir des champs et attribuer des valeurs à  des objets.

    Peut être qu'il y a 30% de jaguar, mais tous les gens que je connais qui utilisent Jaguar sont du style à  se contenter de l'install de base avec en plus éventuellement un adobe ou un microsoft (en caricaturant). S'ils veulent un autre type de logiciel, ils iront chez le revendeur et demanderont à  avoir un truc dans une boà®te. Dans le pire des cas, ils prendront un soft sur le CD fourni par une revue. Ils n'iront jamais sur le web chercher des softs. Je généralise peut être un peu trop, mais c'est mon expérience perso (je suis conscient qu'il existe des exceptions ne vous inquiétez pas). Donc ce public ne m'intéresse pas, même s'il existe. Si j'avais plus de temps ou des codeurs à  ma disposition oui, mais ce n'est pas le cas.

    Il y a aussi d'autres choses. Pas spécialement dans le domaine audio. Au niveau typographie, les TypeSetter de Panther sont de loin plus intéressants que ceux de Jaguar, la gestion des polices est aussi facilitée, pas envie de faire une liste, mais les améliorations sont là .

    Donc tant qu'à  être "rétro compatible", je trouve plus intéressant d'être compatible GNUStep, qui reprend des classes OS X (parfois Panther). Au moins avec ça, on peut être compatible Windows.
  • 00:52 modifié #6

    Et qu'elles sont les technos spécifiques à  Panther:
    - le webkit, je crois que l'on peut l'intaller séparément sous Jaguar,


    WebKit est installé sur Jaguar à  partir du moment où on installe Safari. Mais surtout il est aussi installé à  partir de la version 10.2.7 si je me soubiens bien. Donc on peut considérer qu'il est présent sur Jaguar.

    Perso ce sont plutot toutes les méthodes dans les Foundation et AppKit rajoutées dans 10.3 qui m'inquiètent parce qu'il est facile d'en laisser passer une sans s'en rendre compte.

    Et pour Renaud je considère généralement que ce qui est arrivé dans 10.3 n'est pas dispo dans GNUstep mais maintenant que tu le dit je devrais vérifier si c'est bien vrai.
  • cbrandtcbrandt Membre
    janvier 2005 modifié #7
    Plutôt que de faire des removeFromSuperview/addSubview pour masquer/afficher une vue, il vaut mieux utiliser frame/setFrame en la déplaçant à  une coordonnée hors de la fenêtre...

    En effet, avec removeFromSuperview/addSubview il faut aussi mémoriser le superview avant de faire le removeFromSuperview, pour pouvoir plus tard faire le addSubview dans la bonne view (si je ne suis pas clair, je peux réexpliquer plus en détail), sauf si les views concernées sont subview de la contentview de la fenêtre...
  • BruBru Membre
    00:52 modifié #8
    dans 1105741517:

    Plutôt que de faire des removeFromSuperview/addSubview pour masquer/afficher une vue, il vaut mieux utiliser frame/setFrame en la déplaçant à  une coordonnée hors de la fenêtre...
    En effet, avec removeFromSuperview/addSubview il faut aussi mémoriser le superview avant de faire le removeFromSuperview, pour pouvoir plus tard faire le addSubview dans la bonne view


    Et pour frame/setFrame, ne faut il pas pas mémoriser la position/taille de la view pour la restaurer plus tard ?

    .
  • BruBru Membre
    00:52 modifié #9
    dans 1105743535:

    Et pour frame/setFrame, ne faut il pas pas mémoriser la position/taille de la view pour la restaurer plus tard ?


    Quoi que maintenant je me souviens : sous Classic, la méthode utilisée par Apple pour masquer un contrôle, c'était de soustraire 16384 aux coordonnées X et Y du contrôle (ce qui mettait le contrôle hors de vue, car Quickdraw ne gérait pas les coordonnées négatives). Ensuite pour réafficher ledit contrôle, il suffisait d'additionner 16384 pour retrouver les coords d'origine.

    Ce serait donc la solution que tu préconises, cbrandt ?

    Si oui, alors attention, bounds/setBounds (de la superview) accepte les coordonnées négatives, et donc il sera toujours possible (quoique rare) de voir ces views censées être invisibles.

    .
  • cbrandtcbrandt Membre
    00:52 modifié #10

    Ce serait donc la solution que tu préconises, cbrandt ?

    c'est bien ça...

    à  l'époque de jaguar, j'ajoutais 10000 à  x pour masquer, et je les retranchait pour réafficher... et pour savoir si la view était masquée, je regardais si x était supérieur ou égal à  10000

    d'ailleus je n'avais pas trouvé ça tout seul, il me semblait avoir vu la solution dans une mailing list
Connectez-vous ou Inscrivez-vous pour répondre.