テキスト
このページではテキストの入力をするためのウィジェットと、表示するためのウィジェットを紹介します。 最も基本となるのはFl_Inputクラスです。 ボタンと同じように、そこからより特化された用途のウィジェットが派生クラスとして提供されています。 しかし、Fl_Inputクラスをベースとしたウィジェット以外にもテキストの入力と表示に利用できるウィジェットがあるります。 そこで、このページではFl_Inputクラスの派生クラスに限定しないでそれらを紹介したいと思います。
Fl_Inputクラス
#include <FL/Fl.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 300, "Fl_Input demo"};
auto input1 = new Fl_Input{150, 85, 200, 30, "Your name"};
auto input2 = new Fl_Input{150, 135, 200, 30, "Your e-mail address"};
auto input3 = new Fl_Input{150, 185, 200, 30, "Message body"};
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Multiline_Inputクラス
#include <FL/Fl.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 400, "Fl_Multiline_Input demo"};
auto input1 = new Fl_Multiline_Input{150, 85, 200, 30, "Your name"};
auto input2 = new Fl_Multiline_Input{150, 135, 200, 30, "Your e-mail address"};
auto input3 = new Fl_Multiline_Input{150, 185, 200, 100, "Message body"};
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Outputクラス
#include <FL/Fl.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 300, "Fl_Output demo"};
auto output1 = new Fl_Output{130, 85, 200, 30, "Message 1"};
auto output2 = new Fl_Output{130, 135, 200, 30, "Message 2"};
auto output3 = new Fl_Output{130, 185, 200, 30, "Mesasge 3"};
output1->value("Hello, SMALL world! 入力不可");
output2->value("Hello, MEDIUM world! 入力不可");
output3->value("Hello, LARGE world! 入力不可");
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Multiline_Outputクラス
#include <FL/Fl.H>
#include <FL/Fl_Multiline_Output.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 400, "Fl_Multiline_Output demo"};
auto output1 = new Fl_Multiline_Output{130, 85, 200, 30, "Message 1"};
auto output2 = new Fl_Multiline_Output{130, 135, 200, 30, "Message 2"};
auto output3 = new Fl_Multiline_Output{130, 185, 200, 100, "Mesasge 3"};
output1->value("Hello, SMALL world!");
output2->value("Hello, MEDIUM world!");
output3->value("Hello, LARGE world!\nHello, more LARGE world!\nHello, X-LARGE world!\n入力不可です。");
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Text_Displayクラス
#include <FL/Fl.H>
#include <FL/Fl_Text_Display.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 400, "Fl_Text_Display demo"};
auto disp1 = new Fl_Text_Display{50, 50, 300, 50, "Label 1 shown on upper"};
auto disp2 = new Fl_Text_Display{50, 130, 300, 50, "Label 2 shown on upper"};
auto disp3 = new Fl_Text_Display{50, 220, 300, 100, "Label 3 shown on upper"};
auto buffer1 = new Fl_Text_Buffer;
auto buffer2 = new Fl_Text_Buffer;
auto buffer3 = new Fl_Text_Buffer;
disp1->buffer(buffer1);
disp2->buffer(buffer2);
disp3->buffer(buffer3);
disp1->insert("Hello, SMALL world!");
disp2->insert("Hello, MEDIUM world!");
disp3->insert("Hello, LARGE world!");
disp3->insert("Hello, LARGE world!");
disp3->insert("\nHello, X-LARGE world! Hello, lager than X-LARGE world!");
disp3->insert("\nテキストは編集不可です。");
disp3->insert("\n編集領域から溢れたらスクロールバーが表示されます。");
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Text_Editorクラス
#include <FL/Fl.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 400, "Fl_Text_Editor demo"};
auto editor1 = new Fl_Text_Editor{50, 50, 300, 50, "Label 1 shown on upper"};
auto editor2 = new Fl_Text_Editor{50, 130, 300, 50, "Label 2 shown on upper"};
auto editor3 = new Fl_Text_Editor{50, 220, 300, 100, "Label 3 shown on upper"};
auto buffer1 = new Fl_Text_Buffer;
auto buffer2 = new Fl_Text_Buffer;
auto buffer3 = new Fl_Text_Buffer;
editor1->buffer(buffer1);
editor2->buffer(buffer2);
editor3->buffer(buffer3);
editor1->insert("Hello, SMALL world!");
editor2->insert("Hello, MEDIUM world!");
editor3->insert("Hello, LARGE world!");
editor3->insert("\nHello, X-LARGE world! Hello, lager than X-LARGE world!");
editor3->insert("\nテキストは編集できます。");
editor3->insert("\n編集領域から溢れたらスクロールバーが表示されます。");
window->end();
window->show(argc, argv);
return Fl::run();
}
Fl_Help_Viewクラス
#include <FL/Fl.H>
#include <FL/Fl_Help_View.H>
#include <FL/Fl_Window.H>
#include <cassert>
#include <string>
using namespace std::string_literals;
int main(int argc, char **argv) {
auto window = new Fl_Window{400, 400, "Fl_Help_View demo"};
auto help_view1 = new Fl_Help_View{50, 50, 300, 50, "Label1"};
auto help_view2 = new Fl_Help_View{50, 120, 300, 50, "Label2"};
auto help_view3 = new Fl_Help_View{50, 200, 300, 150, "Label3"};
help_view1->value(R"(<p>Hello, <font size="1" color="red" face="sans"><b>SMALL</b></font> world!</p>)");
help_view2->value(R"(<p>Hello, <font size="4" color="red" face="sans"><b>MEDIUM</b></font> world!</p>)");
help_view3->value(R"(
<head>
<title>Lorem Ipsum</title>
</head>
<body bgcolor="#a0e0f0">
<p>
Hello, <font size="7" color="red" face="sans"><b>LARGE</b></font> world!
</p>
<h1>Lorem Ipsum</h1>
<p>
Lorem <a href="https://example.com">ipsum</a> dolor sit amet, consectetur adipiscing elit.
Morbi id <kbd>tortor</kbd> nibh. <i><strong>Donec luctus</strong></i> mauris quis purus
pretium, sit amet dapibus nisi sodales. Donec id dolor ut
metus suscipit iaculis eu interdum orci. Cras quis odio
ullamcorper velit mollis egestas vitae quis purus. Nam et
justo ipsum. Nam pellentesque maximus magna ut blandit.
Suspendisse aliquam nunc mauris, vitae lacinia mauris
tristique vitae. Donec nec malesuada lectus, nec ultrices
justo.
</p>
</body>
)");
assert(help_view3->title() == "Lorem Ipsum"s);
window->end();
window->show(argc, argv);
return Fl::run();
}