Pregunta

Actualmente estoy experimentando con el uso de OCaml y GTK juntos (utilizando el lablgtk los enlaces).Sin embargo, la documentación no es la mejor, y mientras yo pueda trabajar como la mayoría de las características, estoy atascado con el cambio de las páginas de notebook (cambiar a otra pestaña).

He encontrado la función que necesito para usar, pero no sé ¿ para utilizarlo.La documentación parece sugerir que se trata de un sub-módulo de GtkPackProps.Notebook, pero no sé cómo llamar a esto.

Además, esta función tiene un tipo de firma diferente a cualquier otro que yo haya visto antes.

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

Creo que devuelve un GtkSignal.t, pero no tengo idea de cómo pasar el primer parámetro de la función (toda la parte entre paréntesis).

Ha alguien tiene algún código de ejemplo que muestra cómo cambiar la página de notebook, o puede que tal vez me dé algunos consejos sobre cómo hacer esto?

¿Fue útil?

Solución

Lo que ha encontrado no es una función sino la señal.El tipo funcional que ve en su tipo es el tipo de devolución de llamada que se llamará cuando suceda el interruptor de página, pero no lo causará.

Por cierto, el tipo de switch_page se lee como: una señal (GtkSignal.t) recaudada por notebook [> `notebook ], cuyas devoluciones de llamada tienen un tipo Gpointer.boxed option -> int -> unit

En términos generales, con LablgTK, es mejor que se mantenga alejado de los módulos de bajo nivel de GTK * y use el módulo de nivel superior TGE G [A-Z].Esos módulos API se parecen a la C GTK, y siempre uso el Doc principal GTK para ayudarme a mí mismo.

En su caso, desea utilizar el objeto GPACK.NoteBook y su método GOTO_PAGE.

Otros consejos

Usted ha encontrado un variante polimórfica; están descritas en el manual en la Sección 4.2, y la tipificación de las reglas siempre se rompen mi cabeza.Yo creo que lo que la firma dice es que la función switch_page espera como argumento de una GtkSignal.t, que es una abstracción parametrizada por dos tipos:

  • El primer parámetro de tipo,

    [> `notebook]
    

    incluye como valores de cualquier variante polimórfica incluyendo notebook (que es lo que la mayor-que significa).

  • El segundo tipo de parámetro es un funcionamiento normal.

Si estoy leyendo la documentación de GtkSignal.t correctamente, no es una función a todos los;se trata de un registro con tres campos:

  • name es una cadena.
  • classe es una variante polimórfica que podría ser `notebook " o algo más.
  • marshaller es un contador de referencias para el tipo de función Gpointer.boxed option -> int -> unit.

Espero que esto ayude.Si tienes más problemas, en la sección 4.2 del manual, en las variantes polimórficas, podría solucionarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top