[Rust] 05 FLTK_RS : ランチャーアプリ製作 ButtonのBool値

[M1 Mac, Big Sur 11.6.7, Rust 1.62.0]

ButtonのON/OFF状態は本家FLTKと同様にvalue()関数で取得できます。ボタン群を波カッコで囲むとスコープが閉ざされてしまうので削除しました。end()関数で閉じていれば問題ありません。

関数外での変数の設定が簡単にはできず、データの改ざんなどがしにくいようスコープを狭くする傾向があるようです。

あとはPythonスクリプトを実行できるようにして仮完成です。

今後FLTKアプリを配布することがあればRustで書こうかと考えています。

まあ重大な不具合を発生させるほど複雑なアプリをC++で作っているわけではないですが、RustがこれからもC/C++の代替言語として影響力を拡げていく可能性もありますし、今から慣れておくのも悪くないでしょう。

コンパイラから細かいところで指導が入るのがうっとうしいものの、C++の影響をかなり受けていて頻出するletとmut以外そんなに違和感はないです。

use fltk::{app, prelude::*, button::*, window::Window, group::{Group}};

fn main() {
    let app = app::App::default();
    let mut window = Window::new(100, 100, 360, 190, "Tool Launcher");
 
    let grp = Group::new(15, 15, 285 , 160, "");
    let mut _btn1= RadioRoundButton::new(15, 15, 140, 20, "PhotoSorting");
    _btn1.set(true);
    let mut _btn2= RadioRoundButton::new(15, 50, 140, 20, "");
    let mut _btn3= RadioRoundButton::new(15, 85, 140, 20, "");
    let mut _btn4= RadioRoundButton::new(15, 120, 140, 20, "");
    let mut _btn5= RadioRoundButton::new(15, 155, 140, 20, "");
    let mut _btn6= RadioRoundButton::new(160, 15, 140, 20, "");
    let mut _btn7= RadioRoundButton::new(160, 50, 140, 20, "");
    let mut _btn8= RadioRoundButton::new(160, 85, 140, 20, "");
    let mut _btn9= RadioRoundButton::new(160, 120, 140, 20, "");
    let mut _btn10= RadioRoundButton::new(160, 155, 140, 20, "");
    grp.end();

    let mut _btn = Button::new(300, 15, 50, 25, "実行");
    _btn.set_callback(move |_| {
        let _onoff1 = _btn1.value();let _onoff2 = _btn2.value();let _onoff3 = _btn3.value();
        let _onoff4 = _btn4.value();let _onoff5 = _btn5.value();let _onoff6 = _btn6.value();
        let _onoff7 = _btn7.value();let _onoff8 = _btn8.value();let _onoff9 = _btn9.value();
        let _onoff10 = _btn10.value();

        if _onoff1 == true{
            println!("onoff1");
        }
    });

    window.end();
    window.show();
    app.run().unwrap();
}