OCaml + LablGTK2: многострочное текстовое поле
Я пытаюсь понять, как создать многострочное текстовое поле внутри графического виджета. LablGTK2, по-видимому, довольно ограничен в плане документации, а API мало для того, что начинает выглядеть так, как я хочу.
Я начал перекрестную ссылку на оригинальную документацию GTK2, https://developer.gnome.org/gtk3/stable/gtkobjects.html, на документацию Lablgtk2, http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk/html/GText.html.
Тем не менее, лучший учебник или простой / понятный пример, который я нашел, использует очень ограничивающий однострочный текстовый блок ввода: http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/x1155.html
Я обнаружил, что некоторые простые простые производные примеры отлично подходят для изучения основ. У кого-нибудь есть пример виньетки, которая показывает, как настроить многострочный текст с помощью OCaml & Lablgtk/lablgtk2? Или лучше рекомендации для учебников, которые покажут, как разработать многострочное текстовое поле (что является довольно важной функцией в любой программе на основе GUI)? В идеале я хочу подключить ввод текста в этот многострочный текст к написанному мной модулю OCaml, который будет обрабатывать этот текст, а затем графический интерфейс отображает результаты обработки обратно в графическом интерфейсе. Любая помощь будет принята с благодарностью.
3 ответа
Вы можете использовать виджет GtkTextView для многострочного текста:
let _ =
(* prepare main window *)
let window = GWindow.window () in
window#connect#destroy ~callback:GMain.Main.quit;
(* add text view with scroll bars *)
let scroll = GBin.scrolled_window
~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC
~packing:window#add () in
let textview = GText.view ~packing:scroll#add_with_viewport () in
(* set text *)
textview#buffer#set_text "multi-\nline\ntext";
(* show everything and enter main loop *)
window#show ();
GMain.Main.main ()
Вы правы, что документы очень скудные. Поэтому мы должны учиться, копируя друг друга. Как обезьяны...
Держу пари, что ocamleditor
должен содержать пример того, как это сделать: https://forge.ocamlcore.org/projects/ocamleditor/
Также OCP создает простой редактор OCaml, который также должен быть полезным: https://github.com/OCamlPro/ocp-edit-simple
Исходный код lablgtk2 предоставляет базовые фрагменты кода, которые легко понять с самого начала (по крайней мере, проще, чем код реального мира)
Если вы используете godi, они устанавливаются в $GODI_PRFIX/doc/godi-lablgtk2/examples . Вы можете увидеть их в действии из командной строки с помощью скрипта lablgtk2, например
lablgtk2 /opt/wodi32/doc/godi-lablgtk2/examples/editor.ml
lablgtk2 /opt/wodi32/doc/godi-lablgtk2/examples/text/text-demo.ml