%% 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 = sizerButtons contents = $space(10) contents = buttonCancel centered-x contents = $space(10) [wxBoxSizer sizerButtons] contents = buttonSolid centered-y contents = $space(10) contents = buttonDashed centered-y contents = $space(10) contents = buttonDotted centered-y contents = $space(10) contents = buttonDashDot centered-y contents = $space(10) contents = buttonDashDotDot centered-y contents = $space(10) contents = buttonDashDotDotDot centered-y [wxBitmapButton buttonSolid] id = WXD_ID_LS_SOLID bitmap = pImages[0] tip = pTexts[217] [wxBitmapButton buttonDashed] id = WXD_ID_LS_DASH bitmap = pImages[1] tip = pTexts[218] [wxBitmapButton buttonDotted] id = WXD_ID_LS_DOT bitmap = pImages[2] tip = pTexts[219] [wxBitmapButton buttonDashDot] id = WXD_ID_LS_DASH_DOT bitmap = pImages[3] tip = pTexts[220] [wxBitmapButton buttonDashDotDot] id = WXD_ID_LS_DASH_DOT_DOT bitmap = pImages[4] tip = pTexts[221] [wxBitmapButton buttonDashDotDotDot] id = WXD_ID_LS_DASH_DOT_DOT_DOT bitmap = pImages[5] tip = pTexts[222] [wxButton buttonCancel] id = wxID_CANCEL text = pTexts[223] tip = pTexts[224] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** Dialog to change line style. */ class WxdkdrawDlgLineStyle : 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; /** Localized text fragments. */ wxChar const * const *m_pTexts; /** Line style button images. */ const char ** const *m_pImages; /** Line style from object. */ uint8_t m_uLineStyleOriginal; /** Line style selected in dialog. */ uint8_t m_uLineStyleCurrent; /** Is drawing element (true) or default style object (false). */ bool m_bDrwElem; public: /** Window IDs for the buttons. */ enum { WXD_ID_LS_SOLID = (wxID_HIGHEST + 1) , /**< Solid line. */ WXD_ID_LS_DASH , /**< Dashed line. */ WXD_ID_LS_DOT , /**< Dotted line. */ WXD_ID_LS_DASH_DOT , /**< Dash dot line. */ WXD_ID_LS_DASH_DOT_DOT , /**< Dash dot dot line. */ WXD_ID_LS_DASH_DOT_DOT_DOT /**< Dash dot dot dot. */ }; /** 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). */ WxdkdrawDlgLineStyle( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ); /** Handler for line style buttons. @param event Event to process. */ void OnStyleButton(wxCommandEvent & event); /** Handler for cancel button. @param event Event to process (ignored). */ void OnCancel(wxCommandEvent & event); #if 0 /** Retrieve line style. @return Line style modified in dialog. */ uint8_t GetLineStyle(void) const; #endif %% class end }; %% header end %% module start #ifndef WXDKDRAWDLGLINESTYLE_H_INCLUDED #include "WxdkdrawDlgLineStyle.h" #endif $!trace-include #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgLineStyle,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgLineStyle,wxDialog) #endif EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_SOLID,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_DASH,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_DOT,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_DASH_DOT,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_DASH_DOT_DOT,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ WxdkdrawDlgLineStyle::WXD_ID_LS_DASH_DOT_DOT_DOT,\ WxdkdrawDlgLineStyle::OnStyleButton\ ) EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgLineStyle::OnCancel\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgLineStyle::WxdkdrawDlgLineStyle( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ) : wxDialog( pParent, wxID_ANY, pTexts[216], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { m_pParent = pParent; m_pObject = pObject; m_pTexts = pTexts; m_pImages = pImages; m_bDrwElem = bDrwElem; m_uLineStyleOriginal = m_uLineStyleCurrent = pObject->ls; %% constructor end if (dkctGUILayoutOK) { wxSize minsize = GetMinSize(); SetMaxSize(minsize); } } %% module end void WxdkdrawDlgLineStyle::OnStyleButton(wxCommandEvent & event) { bool bDoRefresh = false; switch (event.GetId()) { case WXD_ID_LS_DASH : { m_uLineStyleCurrent = WXD_LS_DASH; } break; case WXD_ID_LS_DOT : { m_uLineStyleCurrent = WXD_LS_DOT; } break; case WXD_ID_LS_DASH_DOT : { m_uLineStyleCurrent = WXD_LS_DASH_DOT; } break; case WXD_ID_LS_DASH_DOT_DOT : { m_uLineStyleCurrent = WXD_LS_DASH_DOT_DOT; } break; case WXD_ID_LS_DASH_DOT_DOT_DOT : { m_uLineStyleCurrent = WXD_LS_DASH_DOT_DOT_DOT; } break; default : { /* solid */ m_uLineStyleCurrent = WXD_LS_SOLID; } break; } if ((m_bDrwElem) && (m_uLineStyleCurrent != m_pObject->ls)) { bDoRefresh = true; } m_pObject->ls = m_uLineStyleCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } } void WxdkdrawDlgLineStyle::OnCancel(wxCommandEvent & WXUNUSED(event)) { bool bDoRefresh = false; m_uLineStyleCurrent = m_uLineStyleOriginal; if ((m_bDrwElem) && (m_pObject->ls != m_uLineStyleCurrent)) { bDoRefresh = true; } m_pObject->ls = m_uLineStyleCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } } #if 0 uint8_t WxdkdrawDlgLineStyle::GetLineStyle(void) const { return m_uLineStyleCurrent; } #endif /* vim: set ai sw=4 ts=4 : */