Annotation of nono/wx/wxlogmonitor.h, revision 1.1.1.3

1.1       root        1: //
                      2: // nono
1.1.1.2   root        3: // Copyright (C) 2020 nono project
                      4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
                      7: #pragma once
                      8: 
                      9: #include "wxsubwindow.h"
                     10: #include "wxtextscreen.h"
                     11: 
1.1.1.3 ! root       12: class WXLogMonitor : public WXVResizeSubWindow, public IMonitor
1.1       root       13: {
1.1.1.3 ! root       14:        using inherited = WXVResizeSubWindow;
1.1       root       15: 
                     16:  public:
                     17:        WXLogMonitor(wxWindow *, wxWindowID);
1.1.1.3 ! root       18:        virtual ~WXLogMonitor() override;
1.1       root       19: 
1.1.1.3 ! root       20:        nnSize GetMonitorSize() override;
        !            21:        void MonitorUpdate(TextScreen& ts) override;
1.1       root       22: 
                     23:  private:
1.1.1.3 ! root       24:        // サイズ変更イベント
        !            25:        void OnSize(wxSizeEvent&);
1.1       root       26: 
1.1.1.3 ! root       27:        // マウスホイールイベント
        !            28:        void OnMouseWheel(wxMouseEvent&);
        !            29: 
        !            30:        // スクロールイベント
        !            31:        void OnScroll(wxScrollEvent&);
        !            32: 
        !            33:        // スクロールバー再設定
        !            34:        void SetScroll();
        !            35: 
        !            36:        // スクロール処理
        !            37:        void DoScroll(int pos);
        !            38: 
        !            39:        // ウィンドウサイズ再計算
        !            40:        void DoSize() override;
        !            41: 
        !            42:        // バックログに追加
1.1       root       43:        void Append(const char *);
                     44: 
1.1.1.3 ! root       45:        // 1行追加された時の下請け処理
        !            46:        void IncLines();
1.1       root       47: 
1.1.1.3 ! root       48:        // スクロールバー
        !            49:        wxScrollBar *vscroll = NULL;
1.1       root       50: 
                     51:        int col = 0;
                     52:        int row = 0;
                     53: 
1.1.1.3 ! root       54:        // 表示開始位置
        !            55:        // パネル最下行に表示する行を、最新行からのオフセットで表す。
        !            56:        // 0 ならパネル最下行は最新行、1 なら一つ手前の行…となる。
        !            57:        int vpos = 0;
        !            58: 
        !            59:        // 現在のログ行数
        !            60:        int lines = 0;
        !            61: 
        !            62:        // ログ全体の行数(上限)
        !            63:        const int backlog = 10000;
        !            64: 
1.1       root       65:        // ログバッファ
                     66:        // ここは属性フィールドを持たないテキストによる循環バッファ
1.1.1.3 ! root       67:        std::vector<uint8> logbuf {};
1.1       root       68: 
1.1.1.3 ! root       69:        // 今から書き込む行の先頭 (logbuf からのオフセット)
        !            70:        int cursor {};
1.1       root       71: 
                     72:        // UTF-8 -> CP932 変換
                     73:        wxCSConv conv { "CP932" };
                     74: 
                     75:        // イベントテーブル
                     76:        wxDECLARE_EVENT_TABLE();
                     77: };

unix.superglobalmegacorp.com

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