Annotation of nono/wx/wxstatuspanel.h, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2021 nono project
        !             4: // Licensed under nono-license.txt
        !             5: //
        !             6: 
        !             7: #pragma once
        !             8: 
        !             9: #include "wxheader.h"
        !            10: #include "wxbmp.h"
        !            11: #include "wxtextpanel.h"
        !            12: #include "scsibus.h"
        !            13: 
        !            14: class Indicator;
        !            15: class WXStatusPanel;
        !            16: 
        !            17: // インジケータ情報
        !            18: class Indicator
        !            19: {
        !            20:        using dispfunc_t = void (WXStatusPanel::*)(wxDC&, const Indicator&);
        !            21:        using dclickfunc_t = void (WXStatusPanel::*)(const Indicator&);
        !            22:  public:
        !            23:        Indicator(const std::string& text_, dispfunc_t draw_, int data_)
        !            24:                : Indicator(text_, draw_)
        !            25:        {
        !            26:                userdata = data_;
        !            27:        }
        !            28:        Indicator(const std::string& text_, dispfunc_t draw_) {
        !            29:                text = text_;
        !            30:                draw = draw_;
        !            31:        }
        !            32: 
        !            33:        // 表示する文字列。
        !            34:        // 描画関数はこの文字列を使っても使わなくてもよいが、InitIndicators() が
        !            35:        // この文字数に応じた大きさの枠を用意するため、使わない場合でも文字数
        !            36:        // だけは揃えておくこと。
        !            37:        std::string text {};
        !            38: 
        !            39:        // 描画関数
        !            40:        dispfunc_t draw {};
        !            41: 
        !            42:        // ダブルクリックの処理関数
        !            43:        dclickfunc_t dclick {};
        !            44: 
        !            45:        // ユーザデータ (ご自由にお使いください、SCSI ID とか)
        !            46:        int userdata {};
        !            47: 
        !            48:        // 枠の位置と大きさ (実行時に計算する)
        !            49:        wxRect rect {};
        !            50: };
        !            51: 
        !            52: // ステータスパネル
        !            53: class WXStatusPanel : public WXTextPanel
        !            54: {
        !            55:        using inherited = WXTextPanel;
        !            56:  public:
        !            57:        WXStatusPanel(wxWindow *parent);
        !            58:        virtual ~WXStatusPanel() override;
        !            59: 
        !            60:        void SetFontSize(FontId) override;
        !            61: 
        !            62:  private:
        !            63:        void OnCreate(wxCommandEvent&);
        !            64:        void OnClose(wxCloseEvent&);
        !            65:        void OnShow(wxShowEvent&);
        !            66:        void OnSize(wxSizeEvent&);
        !            67:        void OnTimer(wxTimerEvent&);
        !            68:        void OnPaint(wxPaintEvent&);
        !            69:        void OnLeftDClick(wxMouseEvent&);
        !            70: 
        !            71:        void DoSize();
        !            72:        bool UpdateStat();
        !            73:        void Draw(wxDC&);
        !            74:        void InitIndicators();
        !            75:        void LayoutIndicators();
        !            76:        void DrawPerf(wxDC&, const Indicator&);
        !            77:        void DrawSCSI(wxDC&, const Indicator&);
        !            78:        void DrawNet(wxDC&, const Indicator&);
        !            79:        void DrawPower(wxDC&, const Indicator&);
        !            80:        void DrawTextLED(wxDC&, const Indicator&,
        !            81:                const wxColour& fg, const wxColour& bg);
        !            82:        void DClickPerf(const Indicator&);
        !            83:        void UpdateFFMark();
        !            84: 
        !            85:        // コントロール全域のビットマップ
        !            86:        WXBitmap bitmap {};
        !            87: 
        !            88:        // 高速モードアイコン
        !            89:        std::unique_ptr<wxBitmap> ffmark {};
        !            90: 
        !            91:        // インジケータ情報
        !            92:        std::vector<Indicator> indicators {};
        !            93: 
        !            94:        // インジケータ表示用
        !            95:        bool ispower {};
        !            96:        bool last_ispower {};
        !            97:        int perf_mode {};
        !            98:        int last_perf_mode {};
        !            99:        int perf_rate {};
        !           100:        int last_perf_rate {};
        !           101:        std::shared_ptr<SCSIBus> scsibus {};
        !           102:        uint8 scsi_bsy {};
        !           103:        uint8 last_scsi_bsy {};
        !           104:        bool net_ok {};
        !           105: 
        !           106:        // タイマー
        !           107:        wxTimer timer {};
        !           108: 
        !           109:        // イベントテーブル
        !           110:        wxDECLARE_EVENT_TABLE();
        !           111: };
        !           112: 
        !           113: extern WXStatusPanel *gStatusPanel;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.