Question

J'expérimente actuellement l'utilisation conjointe d'OCaml et de GTK (en utilisant le lablgtk reliures).Cependant, la documentation n'est pas la meilleure et même si je peux comprendre comment utiliser la plupart des fonctionnalités, je suis obligé de modifier les pages du bloc-notes (en passant à un autre onglet).

j'ai trouvé la fonction que je dois utiliser, mais je ne sais pas comment pour l'utiliser.La documentation semble suggérer qu'il s'agit d'un sous-module de GtkPackProps.Notebook, mais je ne sais pas comment appeler ça.

De plus, cette fonction a une signature de type différente de toutes celles que j'ai vues auparavant.

 val switch_page : ([> `notebook ], Gpointer.boxed option -> int -> unit) GtkSignal.t

Je pense que ça renvoie un GtkSignal.t, mais je ne sais pas comment passer le premier paramètre à la fonction (la partie entière entre parenthèses).

Quelqu'un a-t-il un exemple de code montrant comment modifier la page du bloc-notes, ou peut-il me donner quelques conseils sur la façon de procéder ?

Était-ce utile?

La solution

Ce que vous avez trouvé n'est pas une fonction mais le signal.Le type fonctionnel que vous voyez dans son type est le type de rappel qui sera appelé lorsque le changement de page se produira, mais ne le provoquera pas.

à propos, le type de switch_page se lit comme :un signal (GtkSignal.t) soulevé par cahier [> `notebook ], dont les rappels sont de type Gpointer.boxed option -> int -> unit

D'une manière générale, avec lablgtk, vous feriez mieux de rester à l'écart des modules Gtk* de bas niveau et d'utiliser le module de niveau supérieur tge G[A-Z].Ces API de module ressemblent à celle de C Gtk, et j'utilise toujours la documentation principale de Gtk pour m'aider.

Dans votre cas, vous souhaitez utiliser l'objet GPack.notebook et sa méthode goto_page.

Autres conseils

Vous avez trouvé un variante polymorphe; ils sont décrits dans le manuel à la section 4.2, et les règles de frappe me cassent toujours la tête.Je crois que ce que dit la signature, c'est que la fonction switch_page attend comme argument un GtkSignal.t, qui est une abstraction paramétrée par deux types :

  • Le premier paramètre de type,

    [> `notebook]
    

    inclut comme valeurs toute variante polymorphe, y compris notebook (c'est ce que signifie le plus grand que).

  • Le deuxième paramètre de type est une fonction ordinaire.

Si je lis la documentation de GtkSignal.t correctement, ce n'est pas du tout une fonction ;c'est un enregistrement avec trois champs :

  • name est une chaîne.
  • classe est une variante polymorphe qui pourrait être « notebook » ou autre chose.
  • marshaller est un marshaller pour le type de fonction Gpointer.boxed option -> int -> unit.

J'espère que ça aide.Si vous rencontrez plus de problèmes, la section 4.2 du manuel, sur les variantes polymorphes, pourrait vous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top