[C++] 19 FLTK:setTextとgetTextに相当する機能

FLTKでJava・SwingのsetTextとgetTextに相当する機能を探すのに少々時間がかかりました。

Swing : setText FLTK : value(const char *)
Swing : getText FLTK : value()

value関数が両方の機能を担っています。Fl_Inputの文字列を全削除する時はvalue(“”)と書きます。value()では消去ではなくコピーするので要注意です。こういった仕組みは軽量高速化のために余計な関数を設定しないという思想の表れと理解しました。

一方、Qtは速さを犠牲にしてsetTextやgetTextを導入しています。JavaやPythonからプログラミングの世界に入った方々はQtに親しみを覚え、FLTKには違和感しかないでしょう。

私もvalueの機能を知った時は脱力しましたが、一貫した設計思想に感銘を受けました。

ところで、新興言語のRustがFLTKを積極的に活用しているようでそちらに興味が向きはじめました。

C++版が完成したら次は学習を兼ねたRust版作成を課題候補にしておきます。

<関連する関数>

void inspect(void){
    output_line->insert("inspect\n");
    const char *path = input_line->value();
    output_line->insert(path);
    output_line->insert("\n");
}
void resize(void){
    output_line->insert("resize\n");
}
void icns(void){
    output_line->insert("icns\n");
}

void execute_cb(Fl_Widget*, void*) {
    onoff_inspect = inspect_rbtn->value(); 
    onoff_resize = resize_rbtn->value();
    onoff_icns = icns_rbtn->value();

    if (onoff_inspect == 1){
        inspect();
    } else if (onoff_resize == 1){
        resize();
    } else {
        icns();
    }
}
void clear_cb(Fl_Widget*, void*) {
    input_line->value("");
}