从 XPCE 中的编辑器中读出文本
Reading out text from an editor in XPCE
我正在编写一个 XPCE 程序,用户可以在其中输入文本 window,然后由 Prolog 程序进一步处理(例如,通过 运行 拼写检查) .
因此,我需要一个文本window,可以在其中自由输入文本(包括段落、标点符号等),然后将文本存储在Prolog变量中以供进一步处理。
使用 text_item 这很容易(并且效果很好),如下所示:
send(D, append(new(Text, text_item('Enter Text'))))
但是,这只允许输入一行,不适合较长的文本。
"editor" 环境看起来很适合这项任务;我可以使用
创建一个编辑器
send(D, append(new(Text1,editor),below))
这里可以输入多行文字,包括段落等。
但是现在,我如何访问用户输入的文本?它显然没有存储在变量 Text1 中。我读到一个text_buffer,但我不知道如何link它给编辑。
改编自XPCE guide
:- use_module(library(pce)).
multiline_input(Text) :-
new(D, dialog('Prompting for name')),
send(D, append, new(TI, editor)),
send(D, append,
button(ok, message(D, return,
TI?contents))),
send(D, append,
button(cancel, message(D, return, @nil))),
send(D, default_button, ok), % Ok: default button
get(D, confirm, Answer), % This blocks!
send(D, destroy),
Answer \== @nil, % canceled
get(Answer, value, Text).
刚刚用编辑器替换了 text_item,获取其内容,然后从中获取价值。
我正在编写一个 XPCE 程序,用户可以在其中输入文本 window,然后由 Prolog 程序进一步处理(例如,通过 运行 拼写检查) .
因此,我需要一个文本window,可以在其中自由输入文本(包括段落、标点符号等),然后将文本存储在Prolog变量中以供进一步处理。
使用 text_item 这很容易(并且效果很好),如下所示:
send(D, append(new(Text, text_item('Enter Text'))))
但是,这只允许输入一行,不适合较长的文本。
"editor" 环境看起来很适合这项任务;我可以使用
创建一个编辑器send(D, append(new(Text1,editor),below))
这里可以输入多行文字,包括段落等。 但是现在,我如何访问用户输入的文本?它显然没有存储在变量 Text1 中。我读到一个text_buffer,但我不知道如何link它给编辑。
改编自XPCE guide
:- use_module(library(pce)).
multiline_input(Text) :-
new(D, dialog('Prompting for name')),
send(D, append, new(TI, editor)),
send(D, append,
button(ok, message(D, return,
TI?contents))),
send(D, append,
button(cancel, message(D, return, @nil))),
send(D, default_button, ok), % Ok: default button
get(D, confirm, Answer), % This blocks!
send(D, destroy),
Answer \== @nil, % canceled
get(Answer, value, Text).
刚刚用编辑器替换了 text_item,获取其内容,然后从中获取价值。