|
|
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:
1.1.1.7 ! root 9: #include "wxnono.h"
1.1.1.6 root 10:
11: class WXPaddingPanel;
1.1.1.2 root 12:
1.1 root 13: //
14: // サブウィンドウ
15: //
16: // メインウィンドウのメニューから表示されて、表示されてる間チェック状態を
17: // 維持するタイプのウィンドウ。クローズ処理が共通に必要なだけで、中身に
18: // ついては関与していない。
1.1.1.7 ! root 19: class WXSubWindow : public wxFrame
1.1 root 20: {
1.1.1.7 ! root 21: using inherited = wxFrame;
1.1 root 22: public:
23: static const int DEFAULT_STYLE =
24: (wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT)
25: & ~wxMAXIMIZE_BOX
26: & ~wxRESIZE_BORDER;
27:
28: public:
29: WXSubWindow(wxWindow *parent, wxWindowID id, const wxString& name,
30: int style);
1.1.1.7 ! root 31: WXSubWindow(wxWindow *parent, wxWindowID id, const wxString& name)
! 32: : WXSubWindow(parent, id, name, DEFAULT_STYLE) { }
1.1.1.5 root 33: virtual ~WXSubWindow() override;
1.1 root 34:
1.1.1.3 root 35: // テキスト系パネルのフォントサイズ変更
36: virtual void SetFontSize(FontId fontid);
1.1 root 37:
38: private:
39: void OnClose(wxCloseEvent& event);
40:
41: wxDECLARE_EVENT_TABLE();
42: };
1.1.1.3 root 43:
44:
45: //
46: // 縦リサイズ可能なサブウィンドウ
47: //
48: class WXVResizeSubWindow : public WXSubWindow
49: {
50: using inherited = WXSubWindow;
51: public:
52: WXVResizeSubWindow(wxWindow *parent, wxWindowID id, const wxString& name);
53: virtual ~WXVResizeSubWindow() override;
54:
55: // テキスト系パネルのフォントサイズ変更
56: void SetFontSize(FontId fontid) override;
57:
58: // ウィンドウサイズ再計算 (継承先による)
59: virtual void DoSize() = 0;
60:
61: protected:
62: // ウィンドウサイズを再計算の共通部分 (継承先 DoSize() から呼ばれる)
63: void CalcVSize(int fixed);
64:
65: // 全体を収納する sizer
1.1.1.4 root 66: wxBoxSizer *topsizer {};
1.1.1.3 root 67:
68: // テキストパネル
1.1.1.4 root 69: WXTextScreen *screen {};
1.1.1.3 root 70:
71: // 上下パディング
1.1.1.6 root 72: WXPaddingPanel *padding1 {};
73: WXPaddingPanel *padding2 {};
74: };
75:
76: //
77: // パディングパネル
78: //
79: // モニタウィンドウ系で使うテキストパネルは単純なキャラクタビットマップ構造
80: // のため、クライアント領域の端の1ピクセルまでふんだんに使用している。
81: // モニタウィンドウは本来このテキストパネルを一つ持つだけの単純なウィンドウ
82: // でよいはずだった。しかし、ウィンドウマネージャ側でこのウィンドウに余白なり
83: // 枠なりをつけてくれる場合はそれで問題ないが、余白(ふち)を一切つけないタイプ
84: // のウィンドウマネージャでこのウィンドウを表示するとウィンドウ境界に接する
85: // 文字の視認性が(文字とウィンドウ外の背景によっては)すこぶる悪い。
86: // そのため、こちらで余白パネルを用意する。なお wxSizer にも似たような
87: // パディング機能はあるが、このパディング領域の背景色はテキストパネルの背景色
88: // と異なっているため悪目立ちしてしまう。そのため、テキストパネルと背景色を
89: // 揃えたパネルをわざわざ用意する。
90: // サブウィンドウ系の人は、このパネルを四辺に貼り付けること。
91: class WXPaddingPanel : public wxPanel
92: {
93: using inherited = wxPanel;
94:
95: // デフォルトの余白幅もしくは高さ [px]
96: // 余白は、リサイズ可能なテキストウィンドウのリサイズ方向では1行の高さや
97: // 1文字の幅の整数倍にしなければならない(したい)ので都度計算する必要が
98: // あるが、そうでない固定方向については現在のフォントから計算とかも面倒
99: // なのでとりあえず固定値としておく。単位は px。
100: static const int DefaultPadding = 3;
101:
102: public:
103: WXPaddingPanel(wxWindow *parent);
104: WXPaddingPanel(wxWindow *parent_, const wxSize& size_);
105: virtual ~WXPaddingPanel();
1.1.1.3 root 106: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.