2013-04-29 4 views
2

Я пытаюсь выяснить, как создать многострочное текстовое поле внутри графического виджета. LablGTK2, по-видимому, довольно ограничен с точки зрения документации, и API недостаточно для вещей, которые начинают выглядеть так, как я хочу.OCaml + LablGTK2: многострочный текстовый блок

Я начал перекрестную ссылку на оригинальную документацию 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? Или лучшие рекомендации для учебных пособий, которые будут демонстрировать разработку многострочного текстового окна (что является довольно важной функцией в любой графической программе)? В идеале я хочу связать ввод текста в этот многострочный текст с модулем OCaml, который я написал, который обработает этот текст, а затем графический интерфейс отобразит результаты обработки в графическом интерфейсе. Любая помощь будет принята с благодарностью.

ответ

1

Вы правы, что документы очень разрежены. Поэтому мы должны учиться, копируя друг друга. Как обезьяны ...

Я готов держать пари, что ocamleditor должен содержать пример того, как сделать это: https://forge.ocamlcore.org/projects/ocamleditor/

Также OCP создает простой редактор OCaml, который также должен быть полезным: https://github.com/OCamlPro/ocp-edit-simple

1

В Исходный код 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 
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() 
+0

Это сладкое, именно то, что я искал для! – 9codeMan9

+0

Одно дополнение, знаете ли вы, как я мог бы вложить это многострочное текстовое поле? Я хочу, чтобы на панели меню отображалось выше и несколько кнопок ниже, но продолжайте получать следующую ошибку, когда я пытаюсь поместить многострочный код в системе: (myprog.exe: 9460): Gtk-WARNING * *: Попытка добавления виджета с типом GtkScrolledWindow в GtkWindow, но в качестве подкласса GtkBin GtkWindow может содержать только один виджет за раз; он уже содержит виджет типа GtkVBox – 9codeMan9

+0

@ 9codeMan9: GtkWindow может содержать только один виджет (как в примере выше); если у вас есть больше, вы должны упаковать прокручиваемое окно в соответствующий контейнер, то есть поле (скорее всего, vbox в вашем случае) или таблицу (для более сложного макета). См. Http://plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/c383.html для упаковки виджетов. –

Смежные вопросы