summaryrefslogtreecommitdiff
path: root/support/dktools/WxdkdrawDlgArrowSize.wxc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-20 03:03:26 +0000
committerNorbert Preining <norbert@preining.info>2020-09-20 03:03:26 +0000
commit1f457376b478257b88d4a857f5ec1b6155442dd7 (patch)
tree2a06a60551dea362cf8cb0cb0ba66c78608717c4 /support/dktools/WxdkdrawDlgArrowSize.wxc
parentac690ca29ad5bf8a5203a65fd6252f7b564f4727 (diff)
CTAN sync 202009200303
Diffstat (limited to 'support/dktools/WxdkdrawDlgArrowSize.wxc')
-rw-r--r--support/dktools/WxdkdrawDlgArrowSize.wxc475
1 files changed, 475 insertions, 0 deletions
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 : */