%% 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 centered-x contents = $space(10) contents = buttonCancel centered-x contents = $space(10) [wxGridBagSizer sizerButtons] 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 contents = b24 4 0 1 1 centered-x centered-y contents = b25 4 1 1 1 centered-x centered-y contents = b26 4 2 1 1 centered-x centered-y contents = b27 4 3 1 1 centered-x centered-y contents = b28 4 4 1 1 centered-x centered-y contents = b29 4 5 1 1 centered-x centered-y [wxBitmapButton b00] id = WXD_AT_ID_NONE bitmap = pImages[0] [wxBitmapButton b01] id = WXD_AT_ID_N_STROKE bitmap = pImages[1] [wxBitmapButton b02] id = WXD_AT_ID_N_WHITE bitmap = pImages[2] [wxBitmapButton b03] id = WXD_AT_ID_N_FILLED bitmap = pImages[3] [wxBitmapButton b04] id = WXD_AT_ID_N_HALF_FILLED_LEFT bitmap = pImages[4] [wxBitmapButton b05] id = WXD_AT_ID_N_HALF_FILLED_RIGHT bitmap = pImages[5] [wxBitmapButton b06] id = WXD_AT_ID_I_WHITE bitmap = pImages[6] [wxBitmapButton b07] id = WXD_AT_ID_I_FILLED bitmap = pImages[7] [wxBitmapButton b08] id = WXD_AT_ID_I_HALF_FILLED_LEFT bitmap = pImages[8] [wxBitmapButton b09] id = WXD_AT_ID_I_HALF_FILLED_RIGHT bitmap = pImages[9] [wxBitmapButton b10] id = WXD_AT_ID_B_WHITE bitmap = pImages[10] [wxBitmapButton b11] id = WXD_AT_ID_B_FILLED bitmap = pImages[11] [wxBitmapButton b12] id = WXD_AT_ID_B_HALF_FILLED_LEFT bitmap = pImages[12] [wxBitmapButton b13] id = WXD_AT_ID_B_HALF_FILLED_RIGHT bitmap = pImages[13] [wxBitmapButton b14] id = WXD_AT_ID_RA_WHITE bitmap = pImages[14] [wxBitmapButton b15] id = WXD_AT_ID_RA_FILLED bitmap = pImages[15] [wxBitmapButton b16] id = WXD_AT_ID_RA_HALF_FILLED_LEFT bitmap = pImages[16] [wxBitmapButton b17] id = WXD_AT_ID_RA_HALF_FILLED_RIGHT bitmap = pImages[17] [wxBitmapButton b18] id = WXD_AT_ID_RE_WHITE bitmap = pImages[18] [wxBitmapButton b19] id = WXD_AT_ID_RE_FILLED bitmap = pImages[19] [wxBitmapButton b20] id = WXD_AT_ID_RE_HALF_FILLED_LEFT bitmap = pImages[20] [wxBitmapButton b21] id = WXD_AT_ID_RE_HALF_FILLED_RIGHT bitmap = pImages[21] [wxBitmapButton b22] id = WXD_AT_ID_RE_STROKE bitmap = pImages[22] [wxBitmapButton b23] id = WXD_AT_ID_T_WHITE bitmap = pImages[23] [wxBitmapButton b24] id = WXD_AT_ID_T_FILLED bitmap = pImages[24] [wxBitmapButton b25] id = WXD_AT_ID_T_HALF_FILLED_LEFT bitmap = pImages[25] [wxBitmapButton b26] id = WXD_AT_ID_T_HALF_FILLED_RIGHT bitmap = pImages[26] [wxBitmapButton b27] id = WXD_AT_ID_C_WHITE bitmap = pImages[27] [wxBitmapButton b28] id = WXD_AT_ID_C_FILLED bitmap = pImages[28] [wxBitmapButton b29] id = WXD_AT_ID_T_STROKE bitmap = pImages[29] [wxButton buttonCancel] id = wxID_CANCEL text = pTexts[252] tip = pTexts[253] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** The arrow type dialog lets the user choose the arrow type. */ class WxdkdrawDlgArrowType : public wxDialog { private: /** Events to handle. */ #if wxCHECK_VERSION(3,0,0) wxDECLARE_EVENT_TABLE(); #else DECLARE_EVENT_TABLE() #endif protected: /** Program main window. */ WxdkdrawFrame *m_pParent; /** Object to modify. */ Wxd_object_t *m_pObject; /** Current arrow type in dialog. */ uint8_t m_uArrowTypeCurrent; /** Original arrow type when opening dialog. */ uint8_t m_uArrowTypeOriginal; /** Modify backward arrowhead (true) or forward arrowhead (false). */ bool m_bBackward; /** Modify drawing element (true) or default style object (false). */ bool m_bDrwElem; public: /** Window IDs for arrow type buttons. */ enum { WXD_AT_ID_NONE = (wxID_HIGHEST + 1), /**< No arrow. */ WXD_AT_ID_N_STROKE , /**< Normal, stroked. */ WXD_AT_ID_N_WHITE , /**< Normal, white filled. */ WXD_AT_ID_N_FILLED , /**< Normal, colour filled. */ WXD_AT_ID_N_HALF_FILLED_LEFT , /**< Normal, left half filled. */ WXD_AT_ID_N_HALF_FILLED_RIGHT , /**< Normal, right half filled. */ WXD_AT_ID_I_WHITE , /**< Indented, white filled. */ WXD_AT_ID_I_FILLED , /**< Indented, colour filled. */ WXD_AT_ID_I_HALF_FILLED_LEFT , /**< Indented, left half. */ WXD_AT_ID_I_HALF_FILLED_RIGHT , /**< Indented, right half. */ WXD_AT_ID_B_WHITE , /**< Butted, white filled. */ WXD_AT_ID_B_FILLED , /**< Butted, colour filled. */ WXD_AT_ID_B_HALF_FILLED_LEFT , /**< Butted, left half. */ WXD_AT_ID_B_HALF_FILLED_RIGHT , /**< Butted, right half. */ WXD_AT_ID_RA_WHITE , /**< Raute, white filled. */ WXD_AT_ID_RA_FILLED , /**< Raute, colour filled. */ WXD_AT_ID_RA_HALF_FILLED_LEFT , /**< Raute, left half. */ WXD_AT_ID_RA_HALF_FILLED_RIGHT, /**< Raute, right half. */ WXD_AT_ID_RE_WHITE , /**< Rectangle, white filled. */ WXD_AT_ID_RE_FILLED , /**< Rectangle, colour filled. */ WXD_AT_ID_RE_HALF_FILLED_LEFT , /**< Rectangle, left half. */ WXD_AT_ID_RE_HALF_FILLED_RIGHT, /**< Rectangle, right half. */ WXD_AT_ID_RE_STROKE, /**< Rectangle, stroked. */ WXD_AT_ID_T_WHITE , /**< Triangle, white filled. */ WXD_AT_ID_T_FILLED , /**< Triangle, colour filled. */ WXD_AT_ID_T_HALF_FILLED_LEFT , /**< Triangle, left half. */ WXD_AT_ID_T_HALF_FILLED_RIGHT , /**< Triangle, right half. */ WXD_AT_ID_C_WHITE , /**< Circle, white filled. */ WXD_AT_ID_C_FILLED , /**< Circle, colour filled. */ WXD_AT_ID_T_STROKE /**< T stroke over line end. */ }; /** 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 Modify drawing element (or default style). @param bBackward Modify backward arrow (or forward). */ WxdkdrawDlgArrowType( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem, bool bBackward ); /** Handler for arrow type buttons. @param event Event to process. */ void OnArrowType(wxCommandEvent & event); /** Handler for Cancel button. @param event Event to process. */ void OnCancel(wxCommandEvent & event); #if 0 /** Retrieve arrow type. @return Arrow type selected in dialog. */ uint8_t GetArrowType(void) const; #endif %% class end }; %% header end %% module start #ifndef WXDKDRAWDLGARROWTYPE_H_INCLUDED #include "WxdkdrawDlgArrowType.h" #endif $!trace-include /** Assign methods to events. */ #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgArrowType,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgArrowType,wxDialog) #endif EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgArrowType::OnCancel\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_NONE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_N_STROKE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_N_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_N_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_N_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_N_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_I_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_I_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_I_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_I_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_B_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_B_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_B_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_B_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RA_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RA_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RA_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RA_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RE_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RE_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RE_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RE_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_RE_STROKE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_T_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_T_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_T_HALF_FILLED_LEFT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_T_HALF_FILLED_RIGHT,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_C_WHITE,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_C_FILLED,\ WxdkdrawDlgArrowType::OnArrowType\ ) EVT_BUTTON(\ WxdkdrawDlgArrowType::WXD_AT_ID_T_STROKE,\ WxdkdrawDlgArrowType::OnArrowType\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgArrowType::WxdkdrawDlgArrowType( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem, bool bBackward ) : wxDialog( pParent, wxID_ANY, pTexts[251], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { m_pParent = pParent; m_pObject = pObject; m_bDrwElem = bDrwElem; m_bBackward = bBackward; m_uArrowTypeOriginal = m_uArrowTypeCurrent = ((bBackward) ? (pObject->abt) : (pObject->aft)); %% constructor end } %% module end void WxdkdrawDlgArrowType::OnArrowType(wxCommandEvent & event) { bool bDoRefresh = false; switch (event.GetId()) { case WXD_AT_ID_NONE : { m_uArrowTypeCurrent = 0U; } break; case WXD_AT_ID_N_STROKE : { m_uArrowTypeCurrent = 1U; } break; case WXD_AT_ID_N_WHITE : { m_uArrowTypeCurrent = 2U; } break; case WXD_AT_ID_N_FILLED : { m_uArrowTypeCurrent = 3U; } break; case WXD_AT_ID_N_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 4U; } break; case WXD_AT_ID_N_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 5U; } break; case WXD_AT_ID_I_WHITE : { m_uArrowTypeCurrent = 6U; } break; case WXD_AT_ID_I_FILLED : { m_uArrowTypeCurrent = 7U; } break; case WXD_AT_ID_I_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 8U; } break; case WXD_AT_ID_I_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 9U; } break; case WXD_AT_ID_B_WHITE : { m_uArrowTypeCurrent = 10U; } break; case WXD_AT_ID_B_FILLED : { m_uArrowTypeCurrent = 11U; } break; case WXD_AT_ID_B_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 12U; } break; case WXD_AT_ID_B_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 13U; } break; case WXD_AT_ID_RA_WHITE : { m_uArrowTypeCurrent = 14U; } break; case WXD_AT_ID_RA_FILLED : { m_uArrowTypeCurrent = 15U; } break; case WXD_AT_ID_RA_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 16U; } break; case WXD_AT_ID_RA_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 17U; } break; case WXD_AT_ID_RE_WHITE : { m_uArrowTypeCurrent = 18U; } break; case WXD_AT_ID_RE_FILLED : { m_uArrowTypeCurrent = 19U; } break; case WXD_AT_ID_RE_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 20U; } break; case WXD_AT_ID_RE_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 21U; } break; case WXD_AT_ID_RE_STROKE : { m_uArrowTypeCurrent = 22U; } break; case WXD_AT_ID_T_WHITE : { m_uArrowTypeCurrent = 23U; } break; case WXD_AT_ID_T_FILLED : { m_uArrowTypeCurrent = 24U; } break; case WXD_AT_ID_T_HALF_FILLED_LEFT : { m_uArrowTypeCurrent = 25U; } break; case WXD_AT_ID_T_HALF_FILLED_RIGHT : { m_uArrowTypeCurrent = 26U; } break; case WXD_AT_ID_C_WHITE : { m_uArrowTypeCurrent = 27U; } break; case WXD_AT_ID_C_FILLED : { m_uArrowTypeCurrent = 28U; } break; case WXD_AT_ID_T_STROKE : { m_uArrowTypeCurrent = 29U; } break; } if (m_bBackward) { if ((m_bDrwElem) && (m_uArrowTypeCurrent != m_pObject->abt)) { bDoRefresh = true; } m_pObject->abt = m_uArrowTypeCurrent; } else { if ((m_bDrwElem) && (m_uArrowTypeCurrent != m_pObject->aft)) { bDoRefresh = true; } m_pObject->aft = m_uArrowTypeCurrent; } if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } } void WxdkdrawDlgArrowType::OnCancel(wxCommandEvent & WXUNUSED(event)) { if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } } #if 0 uint8_t WxdkdrawDlgArrowType::GetArrowType(void) const { return m_uArrowTypeCurrent; } #endif /* vim: set ai sw=4 ts=4 : */