[EN] [IT]
  [INFO] [ACQUÉRIR] [PLAN] [RESSOURCES]


LES NOUVEAUTÉS DE LA RELEASE 6

Ce document présente les nouveautés de la Release 6 de FB^3.

Carbon
Nous offrons maintenant la compatibilité avec Carbon ! Compilez vos applications pour Carbon et elles s'exécuteront aussi bien dans le Système 9 que sous OS X en mode natif.

Runtime Appearance
Le runtime Appearance est maintenant tout fait opérationnel et il est vraiment très cool !



Communiqué:
Paris, 25/02/2002

[haut de la page]

Fenêtres de l'Appearance
  • Fenêtres flottantes

    Il n'y a plus de raisons pour gaspiller du temps à faire tenir les choses à leur place. Nos fenêtres flottantes restent dans leur propre plan d'exécution. Elles sont automatiquement masquées lorsque votre programme passe à l'arrière-plan et bien sûr automatiquement réaffichées lorsqu'il est ramené au premier plan. (mais vous pouvez changer ce comportement si vous le souhaitez)


  • Fenêtre feuillets

    feuillet


    Dans OS X, une fenêtre feuillet peut apparaître à l'écran avec grâce, comme sortie d'une fenêtre-mère. Testez ça !


  • Fenêtres à barre d'outils

    barre d'outils


    Super ! Vous pouvez cliquer dans le bouton barre d'outils localisé dans la barre de titre de la fenêtre et votre panoplie d'outils peut être affichée ou masquée quand bon vous semble.


  • Fonds thématiques

    fond


    Vous pouvez attribuer à une fenêtre le fond sophistiqué des fenêtres de OS X. Lorsque votre programme est exécuté sous OS 9, il utilisera le fond gris traditionnel de l'Appearance Manager. Tout cela est géré avec la simple commande DEF SETWINDOWBACKGROUND.


  • Paramètres étendus pour les fenêtres

    Lassé des 256 mêmes fenêtres ? Avec la commande APPEARANCE WINDOW cette limite passe dorénavant à 2 147 483 647 !

    La catégorie d'une fenêtre (anciennement appelée sa classe) peut être maintenant représentée sur un entier long - ou bien un OSType si vous préférez.
    Vous pouvez attribuer une catégorie à une fenêtre avec la commande : DEF WINDOWCATEGORY(wNum&, categorie&)
    Lorsque vous créez une fenêtre de l'Appearance, vous lui assignez une classe et des attributs qui détermineront son plan d'exécution (avant/arrière plan) et les outils contenus dans sa barre de titre. Sera-ce une fenêtre flottante avec un titre sur le côté ? Sera-ce une fenêtre document avec une case de zoom horizontal ? Pourra-t'elle se loger dans le dock ? A vous de décider.


  • Positionnement des fenêtres

    Jusqu'à présent nous n'avions que deux options : centrer la fenêtre, ou calculer manuellement sa position à l'écran. A présent, les fenêtres peuvent être créées ou repositionnées à l'aide de constantes du système et de deux nouvelles commandes :
    DEF WINDOWREPOSITION et DEF NEWWINDOWPOSITIONMETHOD

    Les paramètres acceptés comprennent :
    _kWindowCenterOnMainScreen,
    _kWindowCascadeOnMainScreen,
    _kWindowAlertPositionOnMainScreen

    Vous voulez continuer à calculer la position des fenêtres avec votre propre code ? On peut vous aider là aussi. La nouvelle fonction FBGETSCREENRECT vous retournera la zone de l'écran disponible pour le placement des fenêtres.


  • Shazoooom

    Lorsque vos fenêtres sont ouvertes, finie leur plate apparition. Laissez-les zoomer depuis un endroit particulier... comme d'un bouton que l'utilisateur vient de cliquer par exemple. Rien de plus simple avec la nouvelle commande DEF TRANSITIONRECT.


  • Graphiques bufferisés

    Une des plus importantes nouveautés dans OS X est probablement la façon remarquable dont les fenêtres sont bufferisées. Tout est fait hors écran, pour être affiché sans accoups par la suite. C'est sans doute une bonne chose, mais si vous avez besoin d'une mise à jour de l'écran, vous allez avoir des problèmes. Enfin, pas longtemps, car vous n'avez qu'à utiliser la nouvelle commande FLUSHWINDOWBUFFER. Dessinez tout à loisir, puis videz le tampon mémoire pour forcer la mise à jour de l'écran lorsque c'est nécessaire, et voilà.


  • Nouvelles fonctions WINDOW

    Avec toutes ces nouvelles caractéristiques pour les fenêtres, vous vous doutez bien que nous n'allions pas vous laisser sans outils.
    La fonction WINDOW a été étendue pour retourner des informations relatives non seulement à la taille de la zone de contenu d'une fenêtre, mais aussi à la taille de sa structure. Vous pouvez extraire le pointeur d'une fenêtre aussi bien que l'adresse de son port graphique (sous OS X ces entités sont maintenant séparées). Classe, attributs, catégorie, tout est là...



  • [haut de la page]

    Code Glue
    Beaucoup d'appels Toolbox que nous avons pris l'habitude d'utiliser dans nos programmes ne fonctionnent plus comme il se doit. Mais, n'ayiez crainte ! FB arrive doté de code glue pour vous soulager. Par exemple, deux fonctions importantes ont été ajoutées au langage, FN INVALRECT et FN VALIDRECT qui viennent remplacer les procédures de la Toolbox InvalRect et ValidRect qui ne sont plus supportées dans OS X. Ces nouvelles commandes seront opérationnelles du 68K jusqu'à Carbon sans travail additionnel de votre part.



    [haut de la page]

    Menus
  • Menus contextuels

    Menu ContextuelNous vous montrons comment construire des menus contextuels à la volée. (Ce sont les menus qui surgissent lorsque l'utilisateur clique sur une zone sensible d'une fenêtre tout en maintenant la touche Contrôle enfoncée).

    Nous vous offrons même un nouvel événement que vous pouvez intercepter dans votre gestionnaire d'événements de dialogue habituel à l'aide d'une nouvelle constante. DIALOG(_cntxtMenuClick) vous informera s'il est temps de construire et d'afficher le menu.


  • Placement des menus dans OS X

    Les choses paraissaient simples auparavant. L'article Quitter était toujours au bas du menu Fichier et l'article Préférences au bas du menu Edition. OS X a changé cela et ces deux articles se retrouvent maintenant dans le menu Application. Les programmes qui sont exécutés sous OS 9 installent les menus à une place, mais lorsqu'ils sont exécutés sous X, il faut les mettre ailleurs. Un cauchemar pour les programmeurs !
    Enfin... pour ceux qui utilisent d'autres langages. Parce qu'avec FB, on peut laisser le runtime se charger de ces opérations. La nouvelle commande MENU PREFERENCES placera l'article de menu à l'endroit approprié et s'assurera que votre application recevra les mêmes informations qu'elle soit en fonctionnement sous 9 ou sous X. L'article de menu Quitter est aussi géré automatiquement.



  • [haut de la page]

    Préférences
    Il y a deux deux raisons seulement pour lesquelles vous ne sauvegardez pas d'informations dans un fichier de préférences : votre application est plus petite qu'une chiure de mouche, ou alors c'est trop de soucis à programmer.
    Oui, mais maintenant FB vous procure toute l'aide dont vous avez besoin pour construire et maintenir un fichier de préférences. Indiquez-lui un nom de fichier et une variable record contenant les réglages des préférences de vos utilisateurs et il s'occupera du reste. Trois nouvelles commandes sont à votre disposition : GET PREFERENCES (pour charger les réglages dans votre programme), PUT PREFERENCES (pour stocker vos préférences sur le disque), et KILL PREFERENCES (pour effacer le fichier). FB prend en charge le travail nécessaire pour localiser le dossier des préférences adéquat et ce, quelle que soit la version du logiciel système en activité.



    [haut de la page]

    En-tête de fichier
    Si vous envoyez un fichier de programme à un autre utilisateur de FB dont les préférences sont réglées sur d'autres valeurs que les vôtres, il se peut que votre programme ne puisse être compilé immédiatement. Un nouvel article de menu, "Insérer l'en-tête", placera en haut de votre code source une zone de commentaires avec les options des préférences parfaitement visibles et compréhensibles. Ces remarques sont collectées par l'Editeur lorsque vous souhaitez exécuter ou construire votre application, puis elles sont utilisées temporairement pour remplacer les préférences générales. Le résultat est que votre programme fonctionnera immédiatement quels que soient les réglages actifs sur un autre ordinateur.



    [haut de la page]

    Interception des erreurs
    A chaque Release, nous améliorons l'interception des erreurs et la Release 6 ne fait pas exception à la règle. Mais, là, vous allez être bluffé par cette nouvelle option : la vérification de la validité des appels Toolbox.
    PrefsEn programmant pour le PPC, il est possible d'utiliser des appels Toolbox (comme une toute nouvelle fonction pour QuickTime 5) et tout va bien. Jusqu'au moment où vous lancez votre programme sur une autre machine qui n'est équipée que de QuickTime 4. Votre programme ne manquera pas de planter sévèrement en vous laissant vous creuser la tête pour savoir ce qui peut bien se passer.
    La solution ?
    Elle se trouve maintenant dans la boîte de dialogue des Préférences. Règlez l'option qui force votre programme à vérifier au démarrage que tous les appels Toolbox utilisés sont disponibles. Si une entrée vient à manquer, votre programme vous informera de l'erreur et offrira à l'utilisateur final l'opportunité d'abandonner élégamment le programme.



    [haut de la page]

    Curseurs
    Un curseur peut parfois en dire plus qu'une longue explication. Un curseur c'est quelque chose qui sert à montrer du doigt. Rien d'étonnant qu'on en ait une pleine poignée (si ce n'est deux) maintenant.


  • Curseurs animés

    L'animation des curseurs a toujours été une travail ardu à programmer impliquant le réglage d'une tâche VBL ou bien l'examen attentif de l'horloge système afin de mettre à jour le pointeur au moment opportun. Avec FB, aujourd'hui, il suffit d'utiliser le type de curseur _themeCursorAnimate et de laisser le système s'occuper du travail.


  • Plus de choix

    Nul doute que vous allez aussi aimer, les nouveaux curseurs disponibles :

    La fonction SYSTEM peut ici venir vous épauler également. Un nouveau paramètre (_lastCursType) vous informera si le pointeur en utilisation est animé(_themeCursorAnimate) ou statique (_themeCursorStatic).



  • [haut de la page]

    ON FINDERINFO
    Cela a toujours été un casse-tête de gérer les fichiers déposés sur l'icône de votre application ou ceux qui on été double-cliqués dans le Finder. Avec notre nouveau vecteur ON FINDERINFO, vous laisserez le runtime vous notifier lorsque des fichiers ont besoin d'être ouverts.



    [haut de la page]

    Fichiers
    Ouch ! Tout a changé ici. OS X n'accepte plus comme paramètre nos numéros de référence de volume depuis longtemps éprouvés. Pas de panique ! Le runtime BASIC Standard gardera votre code opérationnel en maintenant une liste de valeurs appropriées et en les passant de manière transparente aux fonctions de gestion des fichiers qui ont été modifiées de telle sorte que vos anciens programmes pourront s'exécuter sans modifications.


  • Records File Spec

    Quand vous serez prêt à basculer vos programmes (et votre façon de penser) vers le nouveau record File Spec, FB sera toujours là pour vous aider. Les fonctions FILES$ ont été améliorées afin d'inclure désormais des paramètres tels que _FSSpecOpen, _FSSpecOpenPreview, et _FSSpecSave.


  • Nouvelles routines utilitaires pour les fichiers

    Dans ce domaine, il y a tant de choses qu'on aimerait faire, mais qui peuvent sembler trop complexes. Nos nouvelles routines viennent enfin à la rescousse. Elles vous permettront de déplacer ou de copier des fichiers, de tester leur existence, de les jeter à la Corbeille et d'autres choses encore. Il y a même une routine pour passer en revue le contenu d'un dossier pour vous faciliter la recherche de fichiers spécifiques.


  • Fonctions SYSTEM supplémentaires

    De nouveaux paramètres sont disponibles avec la fonction SYSTEM. L'un vous retournera le numéro de référence de volume, tandis que l'autre renverra l'identifiant du répertoire parent (Parent ID). Vous pourrez utiliser ces deux valeurs pour créer un record File Spec. du dossier de votre application, par exemple.


  • Nouveau paramètre pour la commande OPEN

    Enfin, les records File Spec. peuvent être utilisés dans la commande OPEN en lieu et place du nom de fichier grâce à l'opérateur @ :

    OPEN "O",#1,@monRecordFSSpec



  • [haut de la page]

    Champs d'édition
    Avec le runtime Appearance, il y a deux sortes de champs d'édition. Le premier est un contrôle créé comme un bouton ordinaire avec la commande APPEARANCE BUTTON. Ils sont, somme toute, peu puissants et ils ne peuvent pas contenir de texte avec des styles multiples. Leurs limitations les rendent adaptés à une utilisation dans les boîtes de dialogue qui acceptent la saisie de texte.

    Le deuxième type de champ est créé avec la commande EDIT FIELD. (Tu parles d'une nouveauté ! huh ?). Ce que vous ne voyez pas, c'est qu'il s'agit aussi d'un bouton - un genre de bouton très spécial. On utilise le même mécanisme que celui des boutons, mais nous introduisons un champ d'édition réel dans ce qu'on appelle un panneau utilisateur (user pane). Les avantages sont considérables comme vous le verrez une fois que vous aurez pris connaissance des nouveaux contrôles de l'Appearance Manager.


  • Roger. Copie moi ça !

    Un nouveau type de champ a fait son apparition avec l'attribut appelé _copyOnlyFramed (ou _copyOnlyNoFramed). Vos programmes ont la possibilité d'afficher des données que l'utilisateur peut sélectionner et copier, mais pas modifier.


  • Filtres de touches clavier

    Un unique, mais très puissant paramètre a été ajouté à la commande EDIT FIELD pour y passer l'adresse d'une procédure.
    A la fin de tous les autres paramètres, vous pouvez ajouter @FN monFiltreTouche et chaque enfoncement de touche lorsque, ce champ est actif, redirigera le flux du programme vers la fonction désignée qui pourra ainsi valider ou non la touche enfoncée. L'ancien vecteur ON EDIT FN n'a pas été abandonné pour autant et il continuera à fonctionner, mais dès que vous aurez pris goût à cette nouvelle méthode vous verrez l'ancienne comme un rouleau compresseur pour écraser une mouche.


  • Nouveaux comportements

    Maintenant que nous sommes rentrés dans le monde moderne, nous devons adopter des pratiques modernes aussi. La première est d'utiliser les encadrements de sélection (focus ring). Il s'agit du rectangle de surlignement qui se forme autour d'un champ d'édition ou de tout autre élément pour le désigner comme la cible de l'interaction de l'utilisateur avec le clavier. Par défaut, ceci est géré automatiquement par le runtime Appearance. Mais vous pouvez modifier ces réglages en donnant des attributs spécifiques au champ lors de sa création. Par exemple, avec l'attribut _noDrawFocus, vous pouvez indiquer au runtime Appearance de ne pas afficher de surlignement pour un champ en particulier. Vous pouvez également éliminer l'aspect 3D de l'encadrement avec _usePlainFrame. Vous pouvez même faire en sorte que le champ soit automatiquement grisé (ou pas) lorsque la fenêtre dans lequel il réside est désactivée.


  • Désactivation et plus

    Un champ peut être désactivé en utilisant la commande EDIT FIELD avec un paramètre négatif (EDIT FIELD -1). Les numéros de champ, tout comme les numéros de fenêtre et de bouton sont limités à 2 milliards !
    Et voici, une astuce : le type OSType est réellement un entier long, si bien qu'un numéro de référence pour un champ pourrait ressembler à ceci : _"Nom1".



  • [haut de la page]

    Champs image
    Les nouveaux champs image possèdent les avantages des champs d'édition améliorés avec leur propres particularités. De nouveaux attributs peuvent rendre l'image cliquable et/ou faire apparaître l'image en vidéo inverse lorsqu'elle est cliquée. Un autre paramètre peut rendre l'image transparente de telle sorte que ses parties blanches laissent apparaître le fond sur lequel elle repose.



    [haut de la page]

    Boutons
    On pénètre ici dans un nouveau monde où tout ne semble être que bouton. Vous pouvez utiliser la commande APPEARANCE BUTTON pour afficher des images, des icônes, des lignes, des placards, des menus locaux, des barres de progression, des champs date et heure, des glissières, et, ah oui... des boutons.


  • Le secret c'est l'imbrication

    Une nouvelle commande vous permet d'imbriquer un bouton dans un autre. L'intérêt ici est que toute action exercée sur le bouton-père impliquera automatiquement tous les autres boutons qui lui auront été imbriqués.
    ongletsPrenons l'exemple d'un bouton à onglets. Pour chacun des onglets un panneau est construit (oui, un panneau est aussi un bouton). Puis tous, les éléments qui seront visibles sur le panneau lui sont imbriqués. Cette opération doit être répétée autant de fois qu'il y a de panneaux à construire. Le résultat final est que l'on peut rendre visible un panneau et tous ses boutons imbriqués, champs, lignes, etc. seront rendus visibles avec lui par cette seule opération. Vous serez étonné par les effets que peut avoir un petit bout de code dans votre routine de gestion des boutons.

    Est-ce que FB peut vous aider dans le processus d'imbrication ?
    Sûr ! Votre programme débute le processus avec la commande DEF EMBEDBUTTON. Vous pouvez (si nécessaire) retrouver le bouton-père d'un bouton imbriqué ou passer en revue tous les boutons-fils d'un bouton-père. Il devient facile de gérer des boutons radio par exemple.

  • Nouveaux paramètres pour la fonction BUTTON

    Antérieurement, la fonction BUTTON n'acceptait qu'un seul paramètre - le numéro de référence du bouton. Cette fonction a été améliorée pour accepter également un sélecteur qui déterminera quelle information vous souhaitez extraire du bouton. Il y a plus d'une douzaine de nouveaux paramètres possibles pour récupérer toutes les informations concernant un bouton comme ses valeurs minimales et maximales, ou le contrôle-racine de la fenêtre, la date ou l'heure (pour un bouton date/heure), le handle d'un menu (pour un contrôle à menu local) ou encore TEHandle d'un champ de texte associé à un contrôle.

    listeIl y a d'autres routines utilitaires comme la puissante commande DEF GETBUTTONDATA, ou celles qui sont relatives aux boutons textuels telle que DEF GETBUTTONTEXTSELECTION. (Est-ce que vous avez remarqué que les noms deviennent de plus en plus longs, presque plus longs que des jours sans pain ?)

    SliderLa Release 6 offre le spectre complet des possibilités associées aux boutons de l'Appearance Manager. Tout cela est accompli avec la nouvelle commande APPEARANCE BUTTON. Elle donne à votre programme un accès direct à tous les paramètres utilisés dans la fonction de la Toolbox NewControl, vous pourrez d'ailleurs utiliser les constantes définies dans les headers universels d'Apple avec cette commande. Nous ne fournissons pas un ou deux types de boutons glissières mais tous les types possibles avec l'Appearance Manager.

    Case Même les cases à cocher peuvent être améliorées grâce à la selection en mode mixte qui est maintenant autorisée.


  • Attente

    attente Tôt ou tard, monsieur votre utilisateur va devoir attendre pendant que votre programme traitera une quantité importante de données. Vous avez déjà vu que les curseurs animés pouvaient être mis à contribution (le ballon de plage tournoyant, les doigts qui comptent, la montre animée), mais il y a d'autres indicateurs disponibles aussi. Une petite zone dans votre fenêtre peut inclure des flèches qui se poursuivent, ou bien vous pouvez afficher une barre de progression dans un dialogue (oui, il y a cela aussi en stock). Est-ce que tout ça peut être encore plus facile ? Qu'à cela ne tienne, ces indicateurs s'animent d'eux-mêmes. Pas possible, si ça continue, je vais transformer ma femme en un bouton !


  • Vous avez l'heure ?

    heure Date et heure semblent se donner rendez-vous dans toutes les applications de nos jours. Les programmeurs les gèrent de différentes façons. C'est pourquoi nous avons inclus les boutons date/heure ainsi que les fonctions nécessaires pour récupérer le contenu de ces contrôles. Vous pouvez construire de tels contrôles qui se mettent régulièrement à jour à l'écran, vous pouvez n'afficher que le mois et l'année (comme pour les dates d'expiration des cartes de crédit). Vous pouvez affiner l'information que vous souhaitez récupérer, comme le jour de la semaine par exemple, ou bien récupérer l'heure sélectionnée par l'utilisateur.


  • [haut de la page]

    La partie immergée de l'iceberg
    Prenez tout ce que vous avez lu jusqu'ici et multipliez-le par une floppée, parce que c'est vraiment le nombre d'options que vous avez.
    Prenez les boutons à onglets par exemple, vous avez vu les illustrations et lu les explications, et vous avez pensé "C'est trop cool !". Mais nous ne vous avons pas dit que les onglets pouvaient être grands ou petits, ou bien orientés au nord, au sud, à l'est ou à l'ouest.
    Nous n'avons pas parlé non plus des nouveaux paramètres de la fonction SYSTEM comme ceux qui vous permettent de connaître la vitesse du processeur. On ne vous a pas parlé non plus des fonctions utilitaires telle que FN FBGETCONTROLRECT. Nous n'avons pas mentionné les nouveaux records qui ont été introduits pour vous permettre d'accèder facilement à toutes les informations que vous pouvez imaginer concernant les boutons ou les fenêtres. Nous n'avons même pas évoqué les nouveaux messages d'événements de dialogue qui vous disent si le pointeur de la souris est au-dessus d'un champ image ou d'un champ d'édition. Est-ce que j'ai oublié de parler des centaines de nouveaux appels à la Toolbox, et des nouveaux paramètres de couleur pour la commande EDIT TEXT et de Programme Generator qui est aussi supporté, et...

    Si vous voulez connaître tout ce qu'on ne vous a pas dit, vous avez vraiment intérêt à examiner de plus prêt la nouvelle Release 6.
    Et vous allez craquer !

      © 2000 Pix&Mix  
      Tous droits réservés
    INFO  |  ACQUÉRIR |  PLAN  |  RESSOURCES

      FutureBASIC est une marque déposée appartenant à Staz Software, Inc et utilisée avec permission.