46{
49
50 auto bg = parent->GetBackgroundColour();
51 this->SetBackgroundColour(bg);
52
56 );
57
61 );
62
63 auto bmp_size =
m_on.GetBmpSize();
66 int rows = (direction & wxHORIZONTAL) ? item_limit :
count;
67 int cols = (direction & wxHORIZONTAL) ?
count : item_limit;
68 wxFlexGridSizer* f_sizer = new wxFlexGridSizer(rows, cols, 0, 0);
69
70 SetDoubleBuffered(true);
71
73 auto rb =
new wxStaticBitmap(
this, wxID_ANY,
m_off.bmp(), wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxNO_BORDER);
75 rb->Bind(wxEVT_LEFT_DOWN ,([
this, i](wxMouseEvent e) {
SetSelection(i,
true) ; e.Skip();}));
76 rb->Bind(wxEVT_ENTER_WINDOW,([
this, i](wxMouseEvent e) {
SetRadioIcon(i,
true) ; e.Skip();}));
77 rb->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) {
78
79 auto win = wxFindWindowAtPoint(wxGetMousePosition());
82 e.Skip();
83 }));
84
85 auto tx =
new Button(
this,
m_labels[i]);
86 if(i != 0)
87 tx->SetCanFocus(false);
88 tx->SetPaddingSize(FromDIP(wxSize(5,2)));
89 tx->SetBackgroundColor(bg);
90 tx->SetCornerRadius(0);
91 tx->SetBorderWidth(FromDIP(1));
95 tx->Bind(wxEVT_BUTTON ,([
this, i](wxCommandEvent e) {
SetSelection(i,
true) ; e.Skip();}));
96 tx->Bind(wxEVT_ENTER_WINDOW,([
this, i](wxMouseEvent e) {
SetRadioIcon(i,
true) ; e.Skip();}));
97 tx->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) {
98
99 auto win = wxFindWindowAtPoint(wxGetMousePosition());
102 e.Skip();
103 }));
104 tx->Bind(wxEVT_CHAR_HOOK, ([this, tx](wxKeyEvent&e){
105 if(tx->HasFocus()){
106 int k = e.GetKeyCode();
107 bool is_next = (k == WXK_DOWN || k == WXK_RIGHT);
108 bool is_prev = (k == WXK_LEFT || k == WXK_UP);
111 e.Skip(!(is_next || is_prev));
112 }else{
113 e.Skip();
114 }
115 }));
117
118 wxBoxSizer* radio_sizer = new wxBoxSizer(wxHORIZONTAL);
119 radio_sizer->Add(rb, 0, wxALIGN_CENTER_VERTICAL);
120 radio_sizer->Add(tx, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, this->FromDIP(10));
121 f_sizer->Add(radio_sizer, 0, wxTOP | wxBOTTOM, this->FromDIP(4));
122 }
124 SetSizer(f_sizer);
125}
static unsigned int count
Definition AuxiliaryDataViewModel.cpp:246
static wxFont Body_14
Definition Label.hpp:53
StateColor m_focus_color
Definition RadioGroup.hpp:66
std::vector< wxString > m_labels
Definition RadioGroup.hpp:57
std::vector< Button * > m_labelButtons
Definition RadioGroup.hpp:59
void SetRadioIcon(int i, bool hover)
Definition RadioGroup.cpp:163
std::vector< wxStaticBitmap * > m_radioButtons
Definition RadioGroup.hpp:58
void SelectPrevious(bool focus=true)
Definition RadioGroup.cpp:158
int m_item_count
Definition RadioGroup.hpp:62
void SetSelection(int index, bool focus=false)
Definition RadioGroup.cpp:127
StateColor m_text_color
Definition RadioGroup.hpp:67
void SelectNext(bool focus=true)
Definition RadioGroup.cpp:153
@ NotFocused
Definition StateColor.hpp:24
@ Disabled
Definition StateColor.hpp:22
@ Enabled
Definition StateColor.hpp:17
@ Focused
Definition StateColor.hpp:19
size_t cols(const T &raster)
Definition MarchingSquares.hpp:173
size_t rows(const T &raster)
Definition MarchingSquares.hpp:171