Le widget Notebook est un ensemble de "pages" qui se superposent l'une sur l'autre. Chaque page est différente mais une seule sera visible à la fois. Les pages contiennent d'autres widgets que vous devez spécifier.
Pour créer un widget bloc-notes:
Une fois que le bloc-notes a été créé, il y a un certain nombre de fonctions et d'attributs qu'on peut utiliser pour le personnaliser. Les attributs suivant définissent la position des touches et si elles sont visibles ou non.
PositionType possède les constructeurs suivant: PosLeft, PosRight, PosTop (par défaut) et PosBottom.
Maintenant intéressons-nous à la façon d'ajouter des pages au bloc-notes. Il y a trois façons d'ajouter: Ajouter au début (prepend), ajouter à la fin (append) et l'insertion.
La fonction notebookPrependPage a exactement le même type. Bien sur il retournera 0 comme index. La fonction notebookInsertPage prend comme paramètre additionnel, l'index ou placer la page. Vous pouvez supprimer des pages avec notebookRemovePage.
Un Notebook est un widget conteneur qui peut contenir d'autres widgets comme par exemple des boites horizontales et verticales. De cette façon, on peut construire des pages assez complexes et les remplir avec les fonctions standards de remplissage.
Les fonctions listées pour ajouter et insérer des pages fonctionnent seulement pour des onglets à texte. Toutes les trois ont des versions qui permettent d'utiliser un menu déroulant et avec lesquelles on peut utiliser n'importe quel widget comme étiquette.
notebookPrependPageMenu et notebookInsertPageMenu placent la nouvelle page en premier ou à la place indiquée.
Certains attributs utiles sont :
Si il y a un grand nombre de pages, vous pouvez utiliser notebookScrollable. Utilisez notebookCurrentPage ou la fonction notebookSetCurrentPage pour ouvrir le bloc-note à une autre page que la première. L'attribut notebookEnablePopup détermine si l'utilisateur, en cliquant sur le bouton droit de la souris sur un onglet, verra un menu déroulant de toutes les pages disponibles.
Un widget Notebook a son propre signal:
La fonction que vous devez fournir prend un index de page (renvoyé par onSwitchPage) et doit exécuter quelques opérations.
Les exemples montrent un catalogue d’icônes StockItem.
Les StockItem ont été abordés sommairement dans le chapitre 4.5. Rappelons que un StockItem est reconnu par GTK+ (et Gtk2Hs). La fonction suivante produit une liste de tous les identifiants reconnus.
Un StockId est une chaîne de caractères String et dans Gtk2Hs a la forme stockCopy , stockDialogError, etc… L'exemple définit une fonction tabName pour convertir les identifiants GTK+ dans la liste des identifiants StockId pour les onglets du bloc-note. La fonction myNewPage utilise imageNewFromStock pour passer de l'icône à un widget Image qui est ensuite ajouté à la page. Elle retourne l'index de la page (Mais cela ne sert pas dans le programme). Pour obtenir une liste de toutes les pages utilisez séquence au lieu de séquence_
Notez que la taille de l'icône, en pixels, peut être restreinte. La valeur par défaut est 4 et la valeur utilisée ici est 6.
Une deuxième façon de montrer le catalogue est de mettre les icônes dans les onglets du bloc-note.