%% 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 = sizerInput contents = $space(10) contents = sizerButtons contents = $space(10) [wxBoxSizer sizerInput] contents = labelStyleLength contents = $space(10) contents = spinStyleLength [wxStaticText labelStyleLength] text = pText[226] [wxSpinCtrl spinStyleLength] id = WXD_ID_SL_LENGTH range = 1 255 value = 4 tip = pText[227] [wxStdDialogButtonSizer sizerButtons] contents = buttonOK contents = buttonCancel [wxButton buttonOK] id = wxID_OK text = pText[228] tip = pText[229] [wxButton buttonCancel] id = wxID_CANCEL text = pText[230] tip = pText[231] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** Dialog to mofify style length. The style length is the dash length in integer multiples of the line width. */ class WxdkdrawDlgStyleLength : public wxDialog { private: /** Events to handle. */ #if wxCHECK_VERSION(3,0,0) wxDECLARE_EVENT_TABLE(); #else DECLARE_EVENT_TABLE() #endif protected: /** Applications main frame. */ WxdkdrawFrame *m_pParent; /** Object to modify. */ Wxd_object_t *m_pObject; /** Original style length. */ uint8_t m_uLengthOriginal; /** Style length set up in dialog. */ uint8_t m_uLengthCurrent; /** Flag: Object is drawing element, not default style collection. */ bool m_bDrwElem; public: /** Window IDs for GUI components. */ enum { WXD_ID_SL_LENGTH = (wxID_HIGHEST + 1) /**< Spin control. */ }; /** Constructor. @param pParent Applications main frame. @param pObject Object to modify. @param bDrwElem Flag: Object is drawing element. @param pText Localized text fragments. */ WxdkdrawDlgStyleLength( WxdkdrawFrame *pParent, Wxd_object_t *pObject, bool bDrwElem, wxChar const * const *pText ); /** Handler for OK button. @param event Event to process. */ void OnOK(wxCommandEvent & event); /** Handler for Cancel button. @param event Event to process. */ void OnCancel(wxCommandEvent & event); /** Handler for spin control. @param event Event to process. */ void OnSpin(wxSpinEvent & event); %% class end }; %% header end %% module start #ifndef WXDKDRAWDLGSTYLELENGTH_H_INCLUDED #include "WxdkdrawDlgStyleLength.h" #endif $!trace-include /** Assign function calls to events. */ #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgStyleLength,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgStyleLength,wxDialog) #endif EVT_BUTTON(\ wxID_OK,\ WxdkdrawDlgStyleLength::OnOK\ ) EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgStyleLength::OnCancel\ ) EVT_SPINCTRL(\ WxdkdrawDlgStyleLength::WXD_ID_SL_LENGTH,\ WxdkdrawDlgStyleLength::OnSpin\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgStyleLength::WxdkdrawDlgStyleLength( WxdkdrawFrame *pParent, Wxd_object_t *pObject, bool bDrwElem, wxChar const * const *pText ) : wxDialog( pParent, wxID_ANY, pText[225], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { $? "+ WxdkdrawDlgStyleLength" m_pParent = pParent; m_pObject = pObject; m_bDrwElem = bDrwElem; m_uLengthOriginal = pObject->sl; m_uLengthCurrent = m_uLengthOriginal; %% constructor end if (dkctGUILayoutOK) { wxSize minsize = GetMinSize(); SetMaxSize(minsize); } $? "- WxdkdrawDlgStyleLength" } %% module end void WxdkdrawDlgStyleLength::OnOK(wxCommandEvent & WXUNUSED(event)) { bool bDoRefresh = false; $? "+ OnOK" m_uLengthCurrent = spinStyleLength->GetValue(); if ((m_bDrwElem) && (m_uLengthCurrent != m_pObject->sl)) { bDoRefresh = true; } m_pObject->sl = m_uLengthCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } $? "- OnOK" } void WxdkdrawDlgStyleLength::OnCancel(wxCommandEvent & WXUNUSED(event)) { bool bDoRefresh = false; $? "+ OnCancel" m_uLengthCurrent = m_uLengthOriginal; if ((m_bDrwElem) && (m_uLengthCurrent != m_pObject->sl)) { bDoRefresh = true; } m_pObject->sl = m_uLengthCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } $? "- OnCancel" } void WxdkdrawDlgStyleLength::OnSpin(wxSpinEvent & WXUNUSED(event)) { bool bDoRefresh = false; $? "+ OnSpin" m_uLengthCurrent = spinStyleLength->GetValue(); if ((m_bDrwElem) && (m_pObject->sl != m_uLengthCurrent)) { bDoRefresh = true; } m_pObject->sl = m_uLengthCurrent; if (bDoRefresh) { m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); } $? "- OnSpin %u", (unsigned)(m_uLengthCurrent) } /* vim: set ai sw=4 ts=4 : */