%% 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) [wxBoxSizer sizerButtons] direction = horizontal contents = buttonLeft centered-y contents = $space(10) contents = buttonCentered centered-y contents = $space(10) contents = buttonRight centered-y [wxBitmapButton buttonLeft] id = WXD_ID_TA_LEFT bitmap = pImages[0] tip = pTexts[291] [wxBitmapButton buttonCentered] id = WXD_ID_TA_CENTERED bitmap = pImages[1] tip = pTexts[292] [wxBitmapButton buttonRight] id = WXD_ID_TA_RIGHT bitmap = pImages[2] tip = pTexts[293] [wxButton buttonCancel] id = wxID_CANCEL text = pTexts[294] tip = pTexts[295] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** Text alignment dialog. */ class WxdkdrawDlgTextAlign : 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; /** Text align set up in dialog. */ uint8_t m_uTextAlign; /** Is drawing element (true) or default style object (false). */ bool m_bDrwElem; public: /** Window IDs for text align buttons. */ enum { WXD_ID_TA_LEFT = (wxID_HIGHEST + 1), /**< Left aligned text. */ WXD_ID_TA_CENTERED , /**< Centered text. */ WXD_ID_TA_RIGHT /**< Right aligned text. */ }; /** 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). */ WxdkdrawDlgTextAlign( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ); /** Handler for text align buttons. @param event Event to process. */ void OnTextAlign(wxCommandEvent & event); /** Handler for Cancel button. @param event Event to process. */ void OnCancel(wxCommandEvent & event); #if 0 /** Retrieve text alignment. @return Text alignment selected in dialog. */ uint8_t GetTextAlign(void) const; #endif %% class end }; %% header end %% module start #ifndef WXDKDRAWDLGTEXTALIGN_H_INCLUDED #include "WxdkdrawDlgTextAlign.h" #endif $!trace-include /** Assign methods to events. */ #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgTextAlign,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgTextAlign,wxDialog) #endif EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgTextAlign::OnCancel\ ) EVT_BUTTON(\ WxdkdrawDlgTextAlign::WXD_ID_TA_LEFT,\ WxdkdrawDlgTextAlign::OnTextAlign\ ) EVT_BUTTON(\ WxdkdrawDlgTextAlign::WXD_ID_TA_CENTERED,\ WxdkdrawDlgTextAlign::OnTextAlign\ ) EVT_BUTTON(\ WxdkdrawDlgTextAlign::WXD_ID_TA_RIGHT,\ WxdkdrawDlgTextAlign::OnTextAlign\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgTextAlign::WxdkdrawDlgTextAlign( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts, const char ** const *pImages, bool bDrwElem ) : wxDialog( pParent, wxID_ANY, pTexts[290], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { m_pParent = pParent; m_pObject = pObject; m_uTextAlign = WXD_TA_LEFT; m_bDrwElem = bDrwElem; if (WXD_OT_TEXT == pObject->ot) { m_uTextAlign = (pObject->det).t.al; } %% constructor end if (dkctGUILayoutOK) { wxSize minsize = GetMinSize(); SetMaxSize(minsize); } } %% module end void WxdkdrawDlgTextAlign::OnTextAlign(wxCommandEvent & event) { bool bDoRefresh = false; switch (event.GetId()) { case WXD_ID_TA_LEFT : { m_uTextAlign = WXD_TA_LEFT; } break; case WXD_ID_TA_CENTERED : { m_uTextAlign = WXD_TA_CENTERED; } break; case WXD_ID_TA_RIGHT : { m_uTextAlign = WXD_TA_RIGHT; } break; } if ((m_bDrwElem) && ((m_pObject->det).t.al != m_uTextAlign)) { bDoRefresh = true; } (m_pObject->det).t.al = m_uTextAlign; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } } void WxdkdrawDlgTextAlign::OnCancel(wxCommandEvent & WXUNUSED(event)) { if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } } #if 0 uint8_t WxdkdrawDlgTextAlign::GetTextAlign(void) const { return m_uTextAlign; } #endif /* vim: set ai sw=4 ts=4 : */