Annotation of nono/wx/wxstatuspanel.h, revision 1.1.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.