%% options copyright owner = Dirk Krause copyright year = 2019-xxxx SPDX-License-Identifier: BSD-3-Clause %% wx-gui type = dialog contents = sizerHorizontal [wxBoxSizer sizerHorizontal] direction = horizontal contents = $space(10) contents = sizerVertical contents = $space(10) [wxBoxSizer sizerVertical] direction = vertical contents = $space(10) contents = sizerContents centered-x contents = $space(10) contents = buttonCancel centered-x contents = $space(10) [wxGridBagSizer sizerContents] grid = 5 5 contents = b00 0 0 1 1 centered-x centered-y contents = b01 0 1 1 1 centered-x centered-y contents = b02 0 2 1 1 centered-x centered-y contents = b03 0 3 1 1 centered-x centered-y contents = b04 0 4 1 1 centered-x centered-y contents = b05 0 5 1 1 centered-x centered-y contents = b06 1 0 1 1 centered-x centered-y contents = b07 1 1 1 1 centered-x centered-y contents = b08 1 2 1 1 centered-x centered-y contents = b09 1 3 1 1 centered-x centered-y contents = b10 1 4 1 1 centered-x centered-y contents = b11 1 5 1 1 centered-x centered-y contents = b12 2 0 1 1 centered-x centered-y contents = b13 2 1 1 1 centered-x centered-y contents = b14 2 2 1 1 centered-x centered-y contents = b15 2 3 1 1 centered-x centered-y contents = b16 2 4 1 1 centered-x centered-y contents = b17 2 5 1 1 centered-x centered-y contents = b18 3 0 1 1 centered-x centered-y contents = b19 3 1 1 1 centered-x centered-y contents = b20 3 2 1 1 centered-x centered-y contents = b21 3 3 1 1 centered-x centered-y contents = b22 3 4 1 1 centered-x centered-y contents = b23 3 5 1 1 centered-x centered-y [wxBitmapButton b00] id = WXD_ID_FS_NONE tip = pTexts[264] bitmap = pImages[0] [wxBitmapButton b01] id = WXD_ID_FS_PURE tip = pTexts[265] bitmap = pImages[1] [wxBitmapButton b02] id = WXD_ID_FS_LEFT_DIAG_30 tip = pTexts[266] bitmap = pImages[2] [wxBitmapButton b03] id = WXD_ID_FS_RIGHT_DIAG_30 tip = pTexts[267] bitmap = pImages[3] [wxBitmapButton b04] id = WXD_ID_FS_SIEVE_30 tip = pTexts[268] bitmap = pImages[4] [wxBitmapButton b05] id = WXD_ID_FS_LEFT_DIAG_45 tip = pTexts[269] bitmap = pImages[5] [wxBitmapButton b06] id = WXD_ID_FS_RIGHT_DIAG_45 tip = pTexts[270] bitmap = pImages[6] [wxBitmapButton b07] id = WXD_ID_FS_SIEVE_45 tip = pTexts[271] bitmap = pImages[7] [wxBitmapButton b08] id = WXD_ID_FS_BRICKS_HOR tip = pTexts[272] bitmap = pImages[8] [wxBitmapButton b09] id = WXD_ID_FS_BRICKS_VER tip = pTexts[273] bitmap = pImages[9] [wxBitmapButton b10] id = WXD_ID_FS_LINES_HOR tip = pTexts[274] bitmap = pImages[10] [wxBitmapButton b11] id = WXD_ID_FS_LINES_VER tip = pTexts[275] bitmap = pImages[11] [wxBitmapButton b12] id = WXD_ID_FS_SIEVE_HOR_VER tip = pTexts[276] bitmap = pImages[12] [wxBitmapButton b13] id = WXD_ID_FS_SHINGLES_HOR_1 tip = pTexts[277] bitmap = pImages[13] [wxBitmapButton b14] id = WXD_ID_FS_SHINGLES_HOR_2 tip = pTexts[278] bitmap = pImages[14] [wxBitmapButton b15] id = WXD_ID_FS_SHINGLES_VER_1 tip = pTexts[279] bitmap = pImages[15] [wxBitmapButton b16] id = WXD_ID_FS_SHINGLES_VER_2 tip = pTexts[280] bitmap = pImages[16] [wxBitmapButton b17] id = WXD_ID_FS_FISH_SCALES_L tip = pTexts[281] bitmap = pImages[17] [wxBitmapButton b18] id = WXD_ID_FS_FISH_SCALES_S tip = pTexts[282] bitmap = pImages[18] [wxBitmapButton b19] id = WXD_ID_FS_CIRCLES tip = pTexts[283] bitmap = pImages[19] [wxBitmapButton b20] id = WXD_ID_FS_HEXAGONS tip = pTexts[284] bitmap = pImages[20] [wxBitmapButton b21] id = WXD_ID_FS_OCTAGONS tip = pTexts[285] bitmap = pImages[21] [wxBitmapButton b22] id = WXD_ID_FS_TIRES_HOR tip = pTexts[286] bitmap = pImages[22] [wxBitmapButton b23] id = WXD_ID_FS_TIRES_VER tip = pTexts[287] bitmap = pImages[23] [wxButton buttonCancel] id = wxID_CANCEL text = pTexts[288] tip = pTexts[289] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** Dialog to modify fill style. */ class WxdkdrawDlgFillStyle : public wxDialog { private: /** Events to handle. */ #if wxCHECK_VERSION(3,0,0) wxDECLARE_EVENT_TABLE(); #else DECLARE_EVENT_TABLE() #endif protected: /** Parent frame. */ WxdkdrawFrame *m_pParent; /** Object to modify. */ Wxd_object_t *m_pObject; /** Selected fill style. */ uint8_t m_uFillStyleCurrent; /** Original fill style when starting dialog. */ uint8_t m_uFillStyleOriginal; /** Is drawing element (true) or default style object (false). */ bool m_bDrwElem; public: /** Window IDs for buttons. */ enum { WXD_ID_FS_NONE = (wxID_HIGHEST + 1), /**< No fill. */ WXD_ID_FS_PURE , /**< Pure colour fill. */ WXD_ID_FS_LEFT_DIAG_30 , /**< 30 degree diagonal left lines. */ WXD_ID_FS_RIGHT_DIAG_30 , /**< 30 degree diagonal right lines. */ WXD_ID_FS_SIEVE_30 , /**< 30 degree diagonal sieve. */ WXD_ID_FS_LEFT_DIAG_45 , /**< 45 degree diagonal left lines. */ WXD_ID_FS_RIGHT_DIAG_45 , /**< 45 degree diagonal right lines. */ WXD_ID_FS_SIEVE_45 , /**< 45 degree diagonal sieve. */ WXD_ID_FS_BRICKS_HOR , /**< Horizontal bricks. */ WXD_ID_FS_BRICKS_VER , /**< Vertical bricks. */ WXD_ID_FS_LINES_HOR , /**< Horizontal lines. */ WXD_ID_FS_LINES_VER , /**< Vertical lines. */ WXD_ID_FS_SIEVE_HOR_VER , /**< Horizontal-vertical sieve. */ WXD_ID_FS_SHINGLES_HOR_1 , /**< Horizontal shingles 1. */ WXD_ID_FS_SHINGLES_HOR_2 , /**< Horizontal shingles 2. */ WXD_ID_FS_SHINGLES_VER_1 , /**< Vertical shingles 1. */ WXD_ID_FS_SHINGLES_VER_2 , /**< Vertical shingles 2. */ WXD_ID_FS_FISH_SCALES_L , /**< Large fish scales. */ WXD_ID_FS_FISH_SCALES_S , /**< Small fish scales. */ WXD_ID_FS_CIRCLES , /**< Circles. */ WXD_ID_FS_HEXAGONS , /**< Hexagons. */ WXD_ID_FS_OCTAGONS , /**< Octagons. */ WXD_ID_FS_TIRES_HOR , /**< Horizontal tire treads. */ WXD_ID_FS_TIRES_VER /**< Vertical tire treads. */ }; /** Constructor. @param pParent Applications main frame. @param pObject Object to modify. @param pTexts Localized text fragments. @param pImages Images for line style buttons. @param bDrwElem Is drawing element (true) or default (false). */ WxdkdrawDlgFillStyle( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ); /** Handler for fill style buttons. @param event Event to process. */ void OnFillStyle(wxCommandEvent & event); /** Handler for Cancel button. @param event Event to process. */ void OnCancel(wxCommandEvent & event); %% class end }; %% header end %% module start #ifndef WXDKDRAWDLGFILLSTYLE_H_INCLUDED #include "WxdkdrawDlgFillStyle.h" #endif $!trace-include /** Assign methods to event IDs. */ #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgFillStyle,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgFillStyle,wxDialog) #endif EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgFillStyle::OnCancel\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_NONE,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_PURE,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_LEFT_DIAG_30,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_RIGHT_DIAG_30,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SIEVE_30,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_LEFT_DIAG_45,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_RIGHT_DIAG_45,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SIEVE_45,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_BRICKS_HOR,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_BRICKS_VER,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_LINES_HOR,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_LINES_VER,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SIEVE_HOR_VER,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SHINGLES_HOR_1,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SHINGLES_HOR_2,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SHINGLES_VER_1,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_SHINGLES_VER_2,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_FISH_SCALES_L,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_FISH_SCALES_S,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_CIRCLES,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_HEXAGONS,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_OCTAGONS,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_TIRES_HOR,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) EVT_BUTTON(\ WxdkdrawDlgFillStyle::WXD_ID_FS_TIRES_VER,\ WxdkdrawDlgFillStyle::OnFillStyle\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgFillStyle::WxdkdrawDlgFillStyle( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ) : wxDialog( pParent, wxID_ANY, pTexts[263], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { m_pParent = pParent; m_pObject = pObject; m_bDrwElem = bDrwElem; m_uFillStyleOriginal = m_uFillStyleCurrent = pObject->fs; %% constructor end if (dkctGUILayoutOK) { wxSize minsize = GetMinSize(); SetMaxSize(minsize); } } %% module end void WxdkdrawDlgFillStyle::OnFillStyle(wxCommandEvent & event) { bool bDoRefresh = false; switch (event.GetId()) { case WXD_ID_FS_NONE : { m_uFillStyleCurrent = 0; } break; case WXD_ID_FS_PURE : { m_uFillStyleCurrent = 1; } break; case WXD_ID_FS_LEFT_DIAG_30 : { m_uFillStyleCurrent = 2; } break; case WXD_ID_FS_RIGHT_DIAG_30 : { m_uFillStyleCurrent = 3; } break; case WXD_ID_FS_SIEVE_30 : { m_uFillStyleCurrent = 4; } break; case WXD_ID_FS_LEFT_DIAG_45 : { m_uFillStyleCurrent = 5; } break; case WXD_ID_FS_RIGHT_DIAG_45 : { m_uFillStyleCurrent = 6; } break; case WXD_ID_FS_SIEVE_45 : { m_uFillStyleCurrent = 7; } break; case WXD_ID_FS_BRICKS_HOR : { m_uFillStyleCurrent = 8; } break; case WXD_ID_FS_BRICKS_VER : { m_uFillStyleCurrent = 9; } break; case WXD_ID_FS_LINES_HOR : { m_uFillStyleCurrent = 10; } break; case WXD_ID_FS_LINES_VER : { m_uFillStyleCurrent = 11; } break; case WXD_ID_FS_SIEVE_HOR_VER : { m_uFillStyleCurrent = 12; } break; case WXD_ID_FS_SHINGLES_HOR_1 : { m_uFillStyleCurrent = 13; } break; case WXD_ID_FS_SHINGLES_HOR_2 : { m_uFillStyleCurrent = 14; } break; case WXD_ID_FS_SHINGLES_VER_1 : { m_uFillStyleCurrent = 15; } break; case WXD_ID_FS_SHINGLES_VER_2 : { m_uFillStyleCurrent = 16; } break; case WXD_ID_FS_FISH_SCALES_L : { m_uFillStyleCurrent = 17; } break; case WXD_ID_FS_FISH_SCALES_S : { m_uFillStyleCurrent = 18; } break; case WXD_ID_FS_CIRCLES : { m_uFillStyleCurrent = 19; } break; case WXD_ID_FS_HEXAGONS : { m_uFillStyleCurrent = 20; } break; case WXD_ID_FS_OCTAGONS : { m_uFillStyleCurrent = 21; } break; case WXD_ID_FS_TIRES_HOR : { m_uFillStyleCurrent = 22; } break; case WXD_ID_FS_TIRES_VER : { m_uFillStyleCurrent = 23; } break; } if ((m_bDrwElem) && (m_uFillStyleCurrent != m_pObject->fs)) { bDoRefresh = true; } m_pObject->fs = m_uFillStyleCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } } void WxdkdrawDlgFillStyle::OnCancel(wxCommandEvent & WXUNUSED(event)) { if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } } /* vim: set ai sw=4 ts=4 : */