From 1f457376b478257b88d4a857f5ec1b6155442dd7 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 20 Sep 2020 03:03:26 +0000 Subject: CTAN sync 202009200303 --- support/dktools/WxdkdrawDlgArrowSize.wxc | 475 +++++++++++++++++++++++++++++++ 1 file changed, 475 insertions(+) create mode 100644 support/dktools/WxdkdrawDlgArrowSize.wxc (limited to 'support/dktools/WxdkdrawDlgArrowSize.wxc') diff --git a/support/dktools/WxdkdrawDlgArrowSize.wxc b/support/dktools/WxdkdrawDlgArrowSize.wxc new file mode 100644 index 0000000000..6c1e5c619d --- /dev/null +++ b/support/dktools/WxdkdrawDlgArrowSize.wxc @@ -0,0 +1,475 @@ +%% 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 = sizerButtons centered-x +contents = $space(10) + +[wxGridBagSizer sizerContents] +grid = 5 5 +contents = labelLength 0 0 1 1 right centered-y +contents = spinLength . +1 1 1 left centered-y +contents = labelWidth +1 0 1 1 right centered-y +contents = spinWidth . +1 1 1 left centered-y + +[wxStaticText labelLength] +text = pTexts[255] + +[wxSpinCtrl spinLength] +id = WXD_ID_AS_LENGTH +tip = pTexts[257] +range = 1 255 +value = 1 + +[wxStaticText labelWidth] +text = pTexts[256] + +[wxSpinCtrl spinWidth] +id = WXD_ID_AS_WIDTH +tip = pTexts[258] +range = 1 255 +value = 1 + +[wxStdDialogButtonSizer sizerButtons] +contents = buttonOK +contents = buttonCancel + +[wxButton buttonOK] +id = wxID_OK +text = pTexts[259] +tip = pTexts[261] + +[wxButton buttonCancel] +id = wxID_CANCEL +text = pTexts[260] +tip = pTexts[262] + + + +%% header start + +#ifndef WXDKDRAW_H_INCLUDED +#include "wxdkdraw.h" +#endif + +#ifndef WXDKDRAWFRAME_H_INCLUDED +#include "WxdkdrawFrame.h" +#endif + + +%% class start + +/** The arrow size dialog asks the user to set arrow length and + width in multiples of the line width. +*/ +class WxdkdrawDlgArrowSize : public wxDialog +{ + + private: + + /** Events to handle. + */ +#if wxCHECK_VERSION(3,0,0) + wxDECLARE_EVENT_TABLE(); +#else + DECLARE_EVENT_TABLE() +#endif + + protected: + + /** Parent frame (the programs main window). + */ + WxdkdrawFrame *m_pParent; + + /** Graphics object the arrowhead is attached to. + */ + Wxd_object_t *m_pObject; + + /** Arrow length. + */ + uint8_t m_uLengthOriginal; + + /** Arrow width. + */ + uint8_t m_uWidthOriginal; + + /** Arrow length. + */ + uint8_t m_uLengthCurrent; + + /** Arrow width. + */ + uint8_t m_uWidthCurrent; + + /** Flag: Changing a real drawing element. + */ + bool m_bDrwElem; + + /** Flag: Changing backward arrow (false for forward arrow). + */ + bool m_bBackward; + + public: + + /** Window IDs. + */ + enum { + WXD_ID_AS_LENGTH = (wxID_HIGHEST + 1), /**< Length spin ctrl. */ + WXD_ID_AS_WIDTH /**< Width spin ctrl. */ + }; + + + /** Constructor. + @param pParent Applications main frame. + @param pObject Object to modify. + @param pTexts Localized text fragments. + @param bDrwElem Flag: Changing real drawing element. + @param bBackward Flag: Changing backward arrow. + */ + WxdkdrawDlgArrowSize( + WxdkdrawFrame *pParent, + Wxd_object_t *pObject, + wxChar const * const *pTexts, + bool bDrwElem, + bool bBackward + ); + + /** OK button handler. + @param event Event to process. + */ + void + OnOK(wxCommandEvent & event); + + /** Cancel button handler. + @param event Event to process. + */ + void + OnCancel(wxCommandEvent & event); + + /** Length spin control handler. + @param event Event to process. + */ + void + OnLength(wxSpinEvent & event); + + /** Width spin control handler. + @param event Event to process. + */ + void + OnWidth(wxSpinEvent & event); + +#if 0 + /** Retrieve arrow length. + @return Arrow length. + */ + uint8_t + GetArrowLength(void) const; + + /** Retrieve arrow width. + @return Arrow width. + */ + uint8_t + GetArrowWidth(void) const; +#endif + + protected: + + void + TransferLength(void); + + void + TransferWidth(void); + +%% class end +}; + + +%% header end + +%% module start + +#ifndef WxdkdrawDlgArrowSize_H_INCLUDED +#include "WxdkdrawDlgArrowSize.h" +#endif + + + +$!trace-include + +/** Assign methods to event IDs. +*/ +#if wxCHECK_VERSION(3,0,0) +wxBEGIN_EVENT_TABLE(WxdkdrawDlgArrowSize,wxDialog) +#else +BEGIN_EVENT_TABLE(WxdkdrawDlgArrowSize,wxDialog) +#endif + EVT_BUTTON(\ + wxID_OK,\ + WxdkdrawDlgArrowSize::OnOK\ + ) + EVT_BUTTON(\ + wxID_CANCEL,\ + WxdkdrawDlgArrowSize::OnCancel\ + ) + EVT_SPINCTRL(\ + WxdkdrawDlgArrowSize::WXD_ID_AS_LENGTH,\ + WxdkdrawDlgArrowSize::OnLength\ + ) + EVT_SPINCTRL(\ + WxdkdrawDlgArrowSize::WXD_ID_AS_WIDTH,\ + WxdkdrawDlgArrowSize::OnWidth\ + ) +#if wxCHECK_VERSION(3,0,0) +wxEND_EVENT_TABLE() +#else +END_EVENT_TABLE() +#endif + + +%% constructor start +WxdkdrawDlgArrowSize::WxdkdrawDlgArrowSize( + WxdkdrawFrame *pParent, + Wxd_object_t *pObject, + wxChar const * const *pTexts, + bool bDrwElem, + bool bBackward +) : wxDialog( + pParent, wxID_ANY, pTexts[254], + wxDefaultPosition, wxDefaultSize, + ( + (wxDEFAULT_DIALOG_STYLE) + & (~(wxRESIZE_BORDER)) + & (~(wxCLOSE_BOX)) + & (~(wxSYSTEM_MENU)) + ) +) +{ + m_pParent = pParent; + m_pObject = pObject; + m_bDrwElem = bDrwElem; + m_bBackward = bBackward; + if (bBackward) { + m_uLengthOriginal = pObject->abl; + m_uWidthOriginal = pObject->abw; + } + else { + m_uLengthOriginal = pObject->afl; + m_uWidthOriginal = pObject->afw; + } + if (1U > m_uLengthOriginal) { m_uLengthOriginal = 1U; } + if (1U > m_uWidthOriginal) { m_uWidthOriginal = 1U; } + m_uLengthCurrent = m_uLengthOriginal; + m_uWidthCurrent = m_uWidthOriginal; +%% constructor end + if (dkctGUILayoutOK) { + spinLength->SetValue(m_uLengthOriginal); + spinWidth->SetValue(m_uWidthOriginal); + if (bBackward) { + switch ( (int)(pObject->abt) ) { + case 27: case 28: { + spinWidth->Enable(false); + } break; + case 29: { + spinLength->Enable(false); + } break; + } + } + else { + switch ( (int)(pObject->aft) ) { + case 27: case 28: { + spinWidth->Enable(false); + } break; + case 29: { + spinLength->Enable(false); + } break; + } + } + wxSize minsize = GetMinSize(); + SetMaxSize(minsize); + } +} + +%% module end + + + +void +WxdkdrawDlgArrowSize::TransferLength(void) +{ + bool bDoRefresh = false; + m_uLengthCurrent = spinLength->GetValue(); + if (m_bBackward) { + if (m_uLengthCurrent != m_pObject->abl) { + if (m_bDrwElem) { + bDoRefresh = true; + } + m_pObject->abl = m_uLengthCurrent; + } + } + else { + if (m_uLengthCurrent != m_pObject->afl) { + if (m_bDrwElem) { + bDoRefresh = true; + } + m_pObject->afl = m_uLengthCurrent; + } + } + if (bDoRefresh) { + m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); + } +} + + + +void +WxdkdrawDlgArrowSize::TransferWidth(void) +{ + bool bDoRefresh = false; + m_uWidthCurrent = spinWidth->GetValue(); + if (m_bBackward) { + if (m_uWidthCurrent != m_pObject->abw) { + if (m_bDrwElem) { + bDoRefresh = true; + } + m_pObject->abw = m_uWidthCurrent; + } + } + else { + if (m_uWidthCurrent != m_pObject->afw) { + if (m_bDrwElem) { + bDoRefresh = true; + } + m_pObject->afw = m_uWidthCurrent; + } + } + if (bDoRefresh) { + m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); + } +} + + + +void +WxdkdrawDlgArrowSize::OnOK(wxCommandEvent & WXUNUSED(event)) +{ + $? "+ OnOK" + TransferLength(); + TransferWidth(); + if(IsModal()) { + EndModal(wxID_OK); + } + else { + SetReturnCode(wxID_OK); + Show(false); + } + $? "- OnOK" +} + + + +void +WxdkdrawDlgArrowSize::OnCancel(wxCommandEvent & WXUNUSED(event)) +{ + bool bDoRefresh = false; + $? "+ OnCancel" + if (m_bBackward) { + if (m_uLengthOriginal != m_pObject->abl) { + m_pObject->abl = m_uLengthOriginal; + if (m_bDrwElem) { + bDoRefresh = true; + } + } + if (m_uWidthOriginal != m_pObject->abw) { + m_pObject->abw = m_uWidthOriginal; + if (m_bDrwElem) { + bDoRefresh = true; + } + } + } + else { + if (m_uLengthOriginal != m_pObject->afl) { + m_pObject->afl = m_uLengthOriginal; + if (m_bDrwElem) { + bDoRefresh = true; + } + } + if (m_uWidthOriginal != m_pObject->afw) { + m_pObject->afw = m_uWidthOriginal; + if (m_bDrwElem) { + bDoRefresh = true; + } + } + } + if (bDoRefresh) { + m_pParent->RequireRedraw(WXD_REFRESH_DRAWING); + } + if(IsModal()) { + EndModal(wxID_CANCEL); + } + else { + SetReturnCode(wxID_CANCEL); + Show(false); + } + $? "- OnCancel" +} + + + +void +WxdkdrawDlgArrowSize::OnLength(wxSpinEvent & WXUNUSED(event)) +{ + $? "+ OnLength" + TransferLength(); + $? "- OnLength" +} + + + +void +WxdkdrawDlgArrowSize::OnWidth(wxSpinEvent & WXUNUSED(event)) +{ + $? "+ OnWidth" + TransferWidth(); + $? "- OnWidth" +} + + +#if 0 + +uint8_t +WxdkdrawDlgArrowSize::GetArrowLength(void) +const +{ + return m_uLengthCurrent; +} + + + +uint8_t +WxdkdrawDlgArrowSize::GetArrowWidth(void) +const +{ + return m_uWidthCurrent; +} + +#endif + +/* vim: set ai sw=4 ts=4 : */ -- cgit v1.2.3