RUST勉強中、11/17の積み上げ

ボタン処理の実装を行っていきます。

ライブラリはicedを使用しています。

use iced::{
    button, executor, Align, Application, Button, Column, Command, Element, Font,
    HorizontalAlignment, Length, Row, Settings, Subscription, Text,
};

const FONT: Font = Font::External {
    name: "PixelMplus12-Regular",
    bytes: include_bytes!("../rsc/PixelMplus12-Regular.ttf"),
};

#[derive(Debug, Clone)]
pub enum Message {
    Start,
    Stop,
    Reset,
}

pub enum TickState {
    Stopped,
    Ticking,
}

struct GUI {
    tick_state: TickState,
    start_stop_button_state: button::State,
    reset_button_state: button::State,
}

impl Application for GUI {
    type Executor = executor::Null;
    type Message = Message;
    type Flags = ();

    fn new(_flags: ()) -> (GUI, Command<Self::Message>) {
        (
            GUI {
                tick_state: TickState::Stopped,
                start_stop_button_state: button::State::new(),
                reset_button_state: button::State::new(),
            },
            Command::none(),
        )
    }

    fn title(&self) -> String {
        String::from("DEMO")
    }

    fn update(&mut self, message: Self::Message) -> Command<Self::Message> {
        match message {
            Message::Start => {
                self.tick_state = TickState::Ticking;
            }
            Message::Stop => {
                self.tick_state = TickState::Stopped;
            }
            Message::Reset => {}
        }
        Command::none()
    }

    fn view(&mut self) -> Element<Self::Message> {
        let duration_text = "00:00:00.00";

        let start_stop_text = match self.tick_state {
            TickState::Stopped => Text::new("Start")
                .horizontal_alignment(HorizontalAlignment::Center)
                .font(FONT),
            TickState::Ticking => Text::new("Stop")
                .horizontal_alignment(HorizontalAlignment::Center)
                .font(FONT),
        };

        let start_stop_message = match self.tick_state {
            TickState::Stopped => Message::Start,
            TickState::Ticking => Message::Stop,
        };
        
        let tick_text = Text::new("00:00:00.00").font(FONT).size(60);
        let start_stop_button = Button::new(&mut self.start_stop_button_state, start_stop_text)
            .min_width(80)
            .on_press(start_stop_message);
        let reset_button = Button::new(
            &mut self.reset_button_state,
            Text::new("Reset")
                .horizontal_alignment(HorizontalAlignment::Center)
                .font(FONT),
        )
            .min_width(80)
            .on_press(Message::Reset);

        Column::new()
            .push(tick_text)
            .push(
                Row::new()
                    .push(start_stop_button)
                    .push(reset_button)
                    .spacing(10),
            )
            .spacing(10)
            .padding(10)
            .width(Length::Fill)
            .height(Length::Fill)
            .align_items(Align::Center)
            .into()
    }
}

fn main() {
    let mut settings = Settings::default();
    settings.window.size = (400u32, 120u32);
    GUI::run(settings);
}

Messageの定義とTickStateの定義を追加しています。

またアプリケーションの状態として、tick_stateを追加しています。

型はTickStateです。

viewの処理に追加し、tick_stateの状態でボタンに表示するテキストstart_stop_textを決めています。

また、ボタン処理に飛ばすメッセージstart_stop_messageの値も決めています。

そして、ボタン押下時にstart_stop_messageを飛ばし、

それをupdate()で受け取って、tick_stateの値を変えています。

ITニュース(11/18)

【爆発の瞬間】8人ケガ「地震かと思った」 カメラが捉える – 日テレNEWS

16日午後5時半ごろ、韓国南部の大邱(テグ)にあるガススタンドで大きな爆発がありました。カメラには、ガススタンドで燃料を補給中のタクシーの周囲が、一瞬で火に覆われる様子が映っていました。近くの道路を走っていた車から捉えられた別の画像では、多くの車が走る横に大きな炎が上がっているのがわかります。サイレンとともに、た…

GitHubが「2022年に最も使用されたプログラミング言語」ランキングを発表 – GIGAZINE(ギガジン)

ソフトウェア開発プラットフォームのGitHubが、2022年に同プラットフォーム上で使用されたプログラミング言語に関する統計データをまとめたレポートを公開しました。2022年に最も使用されたプログラミング言語は「JavaScript」で、最も成長著しいプログラミング言語は「HCL(HashiCorp Configuration Language)」、使用率が減少したプログラミング言語は「PHP」です。

西 和彦氏が,MSX2のオリジナル公式エミュレータ「MSX 0」を発表。M5Stack上でMSXが動く – 4Gamer.net

「MSX 3」の開発を進める西 和彦氏は本日,Twitterを更新し,「MSX2」のオリジナル公式エミュレータである「MSX 0」を紹介した。ツイートでは,市販の小型マイコンモジュール「M5Stack」上でMSX-BASICが起動している様子などが確認できる。今後は,こちらにも力を入れていくようだ。

「気持ちがむしゃくしゃ」を理由に猛スピード 防犯カメラに衝突の瞬間 – FNNプライムオンライン

事故の直後、平然と歩く神山大容疑者(33)。車3台がからむ事故を起こし、1人を死亡させたとして逮捕された。その瞬間が、防犯カメラに記録されていた。現場は北海道・札幌市。画面左の黒い車が、被害に遭う車。信号は青、交差点に進んでいったその時、突然信号を無視し、右側から走ってきた車が激突。はずみで信号待ちしていたもう1…

「マスクつけて」注意に逆ギレ スマホで店員殴り男逮捕 「客に文句言うのか」と暴行 – FNNプライムオンライン

カメラを見るマスク姿の男。傷害の疑いで逮捕された自称会社員・河村真之助容疑者(43)です。飲食店の店員と客を殴ったとされる河村容疑者。きっかけはノーマスクを注意されたことでした。FNNプライムオンラインhttps://www.fnn.jp/

楽天モバイルも使う巨大通信衛星「BlueWalker 3」が明るすぎて天体観測を妨害&電波望遠鏡と電波干渉する可能性も – GIGAZINE(ギガジン)

楽天モバイルやAT&Tといった大手通信事業者が利用予定の通信衛星「BlueWalker 3」の通信アンテナ展開が2022年11月14日に完了しました。ところが、BlueWalker 3には「明るすぎる」という問題が存在しており、天体観測に影響を及ぼすことが明らかになりました。加えてBlueWalker 3が発する電波が電波望遠鏡の観測用電波と干渉する可能性も指摘されています。

COCOA停止に最終版のアップデート必要 そこに狙いあれど通知不足(2022年11月17日) – ANNnewsCH

機能の停止が決まった新型コロナウイルスの接触確認アプリ「COCOA」。インストールした人は「削除するため」だけに新たな作業が必要になるそうです。 すでに機能停止が決まっている新型コロナ接触確認アプリ「COCOA」に関し、また新たな問題が…。 河野太郎デジタル大臣:「COCOAの最終アップデート版は11月17日より…

40地銀がシステム統合検討 クラウド型でコスト大幅削減 – 日本経済新聞

京都銀行や横浜銀行などの40の地方銀行が、基幹システムをクラウド技術を使った新システムに切り替える検討に入る。メインフレームと呼ばれる巨大コンピューターを中心としたシステムから、ハードやデータセンターが不要なクラウドシステムへ移行し、大幅なコスト削減につなげる狙いだ。実現すれば、全地銀の半数近くがシステムでつながる巨大連合が誕生する。40地銀は現在、4つの陣営に分かれてNTTデータのシステムを

Windows 10にタスクバー・デスクトップが表示されなくなる問題、デバイスが応答不能になることも – 窓の杜

米Microsoftは11月16日(現地時間)、Windows 10の既知の問題を1件明らかにした。2022年8月のプレビュー更新プログラム「KB5016688」以降を適用した環境で、デスクトップまたはタスクバーが一瞬消えたり、デバイスの応答がなくなる問題があったという。

イーロン・マスク氏 ツイッター経営を別の人に任せる考え示す|TBS NEWS DIG – TBS NEWS DIG Powered by JNN

ツイッターを買収したイーロン・マスク氏が、経営を別の人物に任せる考えを示しました。ロイター通信によりますと、マスク氏は16日、電気自動車大手テスラに関する裁判で発言し、「ツイッターにいる時間を減らす」と述べたうえで、ツイッターの経営を任せられる新たなリーダーを見つける考えを示しました。マスク氏はツイッターの買収後…

ゲームとスマホの音声をミックスできるSkullcandyヘッドセット「PLYR」が発売、有線/無線両対応 – AKIBA PC Hotline!

有線+無線両対応のゲーミングヘッドセットに新モデルが登場、Skullcandyの「PLYR Black DigiHype」が発売された。店頭価格は19,800円。

COCOA機能停止版が配信。約2年半の歴史に幕 – PC Watch

新型コロナウイルス接触確認アプリ(COCOA)の機能を完全停止させるアップデート「Ver 3.0.0」が配信開始となった。2020年6月のプレビュー版公開から約2年半でその役目を終えた。

ヤマハ、平面磁界型「オルソダイナミック」搭載の最上位ヘッドフォン – AV Watch

ヤマハは、同社がこだわるTRUE SOUNDと“極上の装着感”を実現したというハイエンド有線ヘッドフォン「YH-5000SE」を12月下旬に発売する。独自の「オルソダイナミックドライバー」を搭載し、価格は495,000円。付属アクセサリーを除くヘッドフォン本体には、5年間のメーカー製品保証が標準で付与される。

経済ニュース(11/18)

米国株、ダウ続落し7ドル安 FRB高官のタカ派発言が重荷 ナスダックも下落 – 日本経済新聞

【NQNニューヨーク=古江敦子】17日の米株式市場でダウ工業株30種平均は小幅に続落し、前日比7ドル51セント(0.02%)安の3万3546ドル32セントで終えた。米連邦準備理事会(FRB)高官が金融引き締めに積極的な「タカ派」姿勢を示した。米長期金利が上昇し、株式の相対的な割高感を意識した売りが優勢となった。もっとも、好決算を発表した銘柄などが上昇し、取引終了にかけて下げ幅を縮小した。セント

「大バーゲン」がやって来る、リセッション接近で-オークツリー – ブルームバーグ

ディストレスト債投資を手掛けるオークツリー・キャピタル・マネジメントの共同創業者ハワード・マークス氏は、世界金融危機以降で有数の好機が訪れると見込む。金利上昇とリセッション(景気後退)の接近で、苦境に陥る企業が増えている。

ホンダが新型電池・ロケット 最多の研究開発費の果実は – 日本経済新聞

ホンダが研究開発投資を加速している。2023年3月期の研究開発費は前期比7%増の8600億円と過去最高を見込み、売上高に対する比率も4.9%と米テスラやトヨタ自動車を上回る。次世代の全固体電池やロケットなど広く種まきする。自動車の業界構造が激変するなか、早期に事業化することがこれまで以上に求められる。「車のそばは危ないので、自動販売機の近くに停車してもいいですか?」。小型の電話ボックスのような

スバル、米国で新型「インプレッサ」世界初公開 2.5リッター「RS」モデル登場 – Car Watch

スバルは11月17日(現地時間)、新型「インプレッサ」を米国で世界初公開した。米国で展開する新型インプレッサはハッチバックモデルのみとなり、標準モデルとスポーツモデルに加えて、2.5リッターエンジンを搭載するRSモデルが設定された。

次世代半導体、雪辱の2トップ 日米足場に新会社主導 – 日本経済新聞

次世代半導体の国産プロジェクトが動き出す。国の補助金やトヨタ自動車、NTTなど国内8社の出資を得て、新会社「Rapidus」(ラピダス)が始動した。主導したのは半導体業界に40年以上身を置いてきた、名うての2人の経営者だ。大学や海外企業も巻き込みながら、日本勢が10年以上足踏みしてきた領域にいま一度挑む。ラピダスは、演算に使うロジック半導体の次世代製造技術の確立、量産ラインの構築と、日本での製

米国株、ダウ続落で始まる 米利上げ減速観測がやや後退 – 日本経済新聞

【NQNニューヨーク=川内資子】17日の米株式相場でダウ工業株30種平均は続落して始まり、午前9時35分現在は前日比249ドル67セント安の3万3304ドル16セントで推移している。米連邦準備理事会(FRB)高官の発言を受けて積極的な金融引き締めの姿勢が改めて意識され、米長期金利が上昇。相対的な割高感から株式の売りが優勢となった。セントルイス連銀のブラード総裁は17日朝の講演で、米政策金利につ

インボイス導入「税負担増を最小化」 公明党税調会長 – 日本経済新聞

公明党の西田実仁税制調査会長は17日、2023年10月に始まる消費税のインボイス(適格請求書等保存方式)制度導入に向けた小規模事業者への支援に意欲を示した。「(事業者の)税負担増を最小化していく検討をしたい」

セントルイス連銀総裁、「最低」でも5-5.25%への利上げ必要に – ブルームバーグ

米セントルイス連銀のブラード総裁は、インフレを鈍化させるため金融当局は政策金利を「最低」でも5ー5.25%に引き上げるべきだと述べた。

自動車の走行距離課税、自工会の豊田会長が反対姿勢…「税金をどう活用するか議論してほしい」 – 読売新聞オンライン

日本自動車工業会(自工会)は17日の記者会見で、車の走行距離に応じて課税する仕組みに反対する姿勢を示した。2023年4月に期限を迎える「エコカー減税」についても、現行制度のまま期限を延長するよう求めた。  政府税制調査

米新規失業保険申請、前週比4000件減の22.2万件-予想22.8万件 – ブルームバーグ

先週の米新規失業保険申請件数は予想外に若干減少した。歴史的な低水準近くにとどまり、労働市場の強さを示した。

トヨタ プリウス PHEV 新型、パワーもEVモードの航続も5割増し…ロサンゼルスモーターショー2022 – レスポンス

トヨタ自動車の米国部門は11月16日、PHEVセダンの『プリウス・プライム』(日本名:『プリウスPHEV』に相当)新型の米国仕様車を、ロサンゼルスモーターショー2022のプレビューイベントで初公開した。

医療費、所得に応じ負担 後期高齢者4割で保険料上げ – 日本経済新聞

厚生労働省は17日、75歳以上が加入する後期高齢者医療制度の見直し案の骨格を示した。所得比例部分の負担を増やし、加入者の約4割を対象に保険料を上げる。保険料上限も年66万円から80万円にする。試算では820億円の負担増となる。能力に応じた負担を強め、現役世代の負担を抑える。ただ給付抑制や効率化の議論は低調で、医療費急増への備えは半ばだ。同日の社会保障審議会(厚労相の諮問機関)の部会に示した。後

【明日の好悪材料】を開示情報でチェック! (11月17日発表分) – 株探ニュース

「肺がんコンパクトパネル Dx マルチコンパニオン診断システム」の高度管理医療機器製造販売承認を取得。■翻訳センター <2483> [東証S]プロネクサス <7893> [東証P]と有価証券報告書英文開示サービスを共同開発・・・。

イオン「明日18日だけ」「無料です」18日にイオンに行って買い物をすると・・・ – goo

全国の「イオン」「イオンスタイル」などでは、2022年11月18日から「イオン ブラックフライデー」がスタートすると、東京バーゲンマニアが紹介しています。

お買い得商品が数多く販売されるのはもちろん、「プレゼント企画」も見逃せません。

注目の…

【速報】ボージョレヌーヴォー2022 解禁【今年はレアヌーヴォー】 – オモコロ

2022年 ボージョレヌーヴォー解禁!!!!!!!

コラム:巨額貿易赤字で円安継続か、日銀想定外の物価上昇も 景気に懸念 – ロイター (Reuters Japan)

日本の10月貿易収支は、大幅な円安にもかかわらず2兆2992億円(季節調整済み)の赤字となった。このペースが続けば2022年度は20兆円を超す過去最大の貿易赤字を記録するだけでなく、巨額赤字が継続する公算も大きくなっている。

【↓】日経平均 大引け| 3日ぶり反落、半導体関連株中心に売り優勢 (11月17日) – minkabu PRESS

日経平均株価始…