summaryrefslogtreecommitdiff
path: root/app/bin/menu.c
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2025-09-20 19:19:34 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2025-09-20 19:19:34 +0200
commite7d20cf352688bf717a01f4e6d9e6f497c2bea4c (patch)
treecfd2ef9b569f49af985a6f1ec44f2614f63c8e78 /app/bin/menu.c
parenta14a7a0ccc9de76aeab0b2e4bbf58f1a79deedc2 (diff)
New upstream version 5.3.1Beta2upstream/5.3.1Beta2
Diffstat (limited to 'app/bin/menu.c')
-rw-r--r--app/bin/menu.c225
1 files changed, 82 insertions, 143 deletions
diff --git a/app/bin/menu.c b/app/bin/menu.c
index ae2cfe2..814a0b5 100644
--- a/app/bin/menu.c
+++ b/app/bin/menu.c
@@ -36,9 +36,11 @@
#include "common-ui.h"
#include "ctrain.h"
-static paramData_t menuPLs[101] = { { PD_LONG, &toolbarSet, "toolbarset" }, {
- PD_LONG, &curTurnoutEp, "cur-turnout-ep"
- }
+#include "include/toolbar.h"
+
+static paramData_t menuPLs[101] = {
+ {PD_LONG, NULL, "toolbarset", PDO_NOPREF},
+ {PD_LONG, &curTurnoutEp, "cur-turnout-ep"}
};
static paramGroup_t menuPG = { "misc", PGO_RECORD, menuPLs, 2 };
@@ -62,6 +64,7 @@ EXPORT wMenuList_p fileList_ml;
EXPORT wMenuToggle_p snapGridEnableMI;
EXPORT wMenuToggle_p snapGridShowMI;
+static int cmdGroup;
/*--------------------------------------------------------------------*/
typedef struct {
@@ -115,78 +118,6 @@ static void MenuPlayback(char * line)
}
-/*****************************************************************************
- *
- * TOOLBAR
- *
- */
-
-
-/*
- * These array control the choices available in the Toolbar setup.
- * For each choice, the text is given and the respective mask is
- * specified in the following array.
- * Note: text and choices must be given in the same order.
- */
-static char *AllToolbarLabels[] = { N_("File Buttons"), N_("Print Buttons"), N_("Import/Export Buttons"),
- N_("Zoom Buttons"), N_("Undo Buttons"), N_("Easement Button"), N_("SnapGrid Buttons"),
- N_("Create Track Buttons"), N_("Layout Control Elements"),
- N_("Modify Track Buttons"), N_("Properties/Select"),
- N_("Track Group Buttons"), N_("Train Group Buttons"),
- N_("Create Misc Buttons"), N_("Ruler Button"),
- N_("Layer Buttons"), N_("Hot Bar"),
- NULL
- };
-static long AllToolbarMasks[] = { 1 << BG_FILE, 1<< BG_PRINT, 1<< BG_EXPORTIMPORT,
- 1<< BG_ZOOM, 1<< BG_UNDO, 1<< BG_EASE, 1 << BG_SNAP, 1 << BG_TRKCRT,
- 1<< BG_CONTROL, 1<< BG_TRKMOD, 1 << BG_SELECT, 1 << BG_TRKGRP, 1 << BG_TRAIN,
- 1<< BG_MISCCRT, 1<< BG_RULER, 1 << BG_LAYER, 1 << BG_HOTBAR
- };
-
-static wMenuToggle_p AllToolbarMI[ COUNT( AllToolbarMasks ) ];
-
-static void ToolbarAction(void * data)
-{
- int inx = (int)VP2L(data);
- CHECK( inx >=0 && inx < COUNT( AllToolbarMasks ) );
- wBool_t set = wMenuToggleGet( AllToolbarMI[inx] );
- long mask = AllToolbarMasks[inx];
- if (set) {
- toolbarSet |= mask;
- } else {
- toolbarSet &= ~mask;
- }
- wPrefSetInteger( "misc", "toolbarset", toolbarSet );
- MainProc( mainW, wResize_e, NULL, NULL );
- if (recordF)
- fprintf(recordF, "PARAMETER %s %s %ld", "misc", "toolbarset",
- toolbarSet);
-}
-
-/**
- * Create the Toolbar configuration submenu. Based on two arrays of descriptions and
- * masks, the toolbar submenu is created dynamically.
- *
- * \param toolbarM IN menu to which the toogles will be added
- */
-
-static void CreateToolbarM(wMenu_p toolbarM)
-{
- int inx, cnt;
- long *masks;
- char **labels;
- wBool_t set;
-
- cnt = COUNT(AllToolbarMasks);
- masks = AllToolbarMasks;
- labels = AllToolbarLabels;
- for (inx = 0; inx < cnt; inx++, masks++, labels++) {
- set = (toolbarSet & *masks) != 0;
- AllToolbarMI[inx] = wMenuToggleCreate(toolbarM, "toolbarM", _(*labels), 0, set,
- ToolbarAction, I2VP(inx));
- }
-}
-
/*****************************************************************************
*
@@ -224,7 +155,7 @@ static void ShowAddElevations(void * unused)
if (addElevW == NULL)
addElevW = ParamCreateDialog(&addElevPG,
MakeWindowTitle(_("Change Elevations")), _("Change"), DoAddElev,
- wHide, FALSE, NULL, 0, NULL);
+ ParamCancel_Current, FALSE, NULL, 0, NULL);
wShow(addElevW);
}
@@ -270,7 +201,7 @@ static void StartRotateDialog(void * funcVP)
rotateDialogCallBack_t func = funcVP;
if (rotateW == NULL)
rotateW = ParamCreateDialog(&rotatePG, MakeWindowTitle(_("Rotate")),
- _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL);
+ _("Ok"), RotateEnterOk, ParamCancel_Current, FALSE, NULL, 0, NULL);
ParamLoadControls(&rotatePG);
rotateDialogCallBack = func;
wShow(rotateW);
@@ -281,7 +212,7 @@ static void StartIndexDialog(void * funcVP)
indexDialogCallBack_t func = funcVP;
if (indexW == NULL)
indexW = ParamCreateDialog(&indexPG, MakeWindowTitle(_("Select Index")),
- _("Ok"), IndexEnterOk, wHide, FALSE, NULL, 0, NULL);
+ _("Ok"), IndexEnterOk, ParamCancel_Current, FALSE, NULL, 0, NULL);
ParamLoadControls(&indexPG);
indexDialogCallBack = func;
trackIndex[0] = '\0';
@@ -293,17 +224,19 @@ static void StartMoveDialog(void * funcVP)
moveDialogCallBack_t func = funcVP;
if (moveW == NULL)
moveW = ParamCreateDialog(&movePG, MakeWindowTitle(_("Move")), _("Ok"),
- MoveEnterOk, wHide, FALSE, NULL, 0, NULL);
+ MoveEnterOk, ParamCancel_Current, FALSE, NULL, 0, NULL);
ParamLoadControls(&movePG);
moveDialogCallBack = func;
- moveValue = zero;
wShow(moveW);
}
static void MoveEnterOk(void * unused)
{
ParamLoadData(&movePG);
- moveDialogCallBack(&moveValue);
+ if ( moveValue.x != 0.0 ||
+ moveValue.y != 0.0 ) {
+ moveDialogCallBack(&moveValue);
+ }
wHide(moveW);
}
@@ -317,10 +250,12 @@ static void IndexEnterOk(void * unused)
static void RotateEnterOk(void * unused)
{
ParamLoadData(&rotatePG);
- if (angleSystem == ANGLE_POLAR) {
- rotateDialogCallBack(I2VP(rotateValue * 1000));
- } else {
- rotateDialogCallBack(I2VP(rotateValue * 1000));
+ if ( rotateValue != 0.0 ) {
+ if (angleSystem == ANGLE_POLAR) {
+ rotateDialogCallBack(I2VP(rotateValue * 1000));
+ } else {
+ rotateDialogCallBack(I2VP(rotateValue * 1000));
+ }
}
wHide(rotateW);
}
@@ -436,10 +371,11 @@ EXPORT void SelectFont(void * unused)
EXPORT long stickySet = 0;
+static long stickySet1 = 0;
static wWin_p stickyW;
static const char * stickyLabels[33];
static paramData_t stickyPLs[] = { {
- PD_TOGGLE, &stickySet, "set", 0,
+ PD_TOGGLE, &stickySet1, "set", 0,
stickyLabels
}
};
@@ -449,6 +385,7 @@ static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs,
static void StickyOk(void * unused)
{
+ stickySet = stickySet1;
wHide(stickyW);
}
@@ -457,8 +394,9 @@ EXPORT void DoSticky(void * unused)
{
if (!stickyW)
stickyW = ParamCreateDialog(&stickyPG,
- MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, wHide,
+ MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, ParamCancel_Restore,
TRUE, NULL, 0, NULL);
+ stickySet1 = stickySet;
ParamLoadControls(&stickyPG);
wShow(stickyW);
}
@@ -496,7 +434,7 @@ static void CreateDebugW(void)
debugPG.paramCnt = debugCnt+1;
ParamRegister(&debugPG);
debugW = ParamCreateDialog(&debugPG, MakeWindowTitle(_("Debug")), _("Ok"),
- DebugOk, wHide, FALSE, NULL, 0, NULL);
+ DebugOk, ParamCancel_Current, FALSE, NULL, 0, NULL);
wHide(debugW);
}
@@ -698,11 +636,11 @@ EXPORT wButton_p AddToolbarButton(const char * helpStr, wIcon_p icon,
}
bb = wButtonCreate(mainW, 0, 0, helpStr, (char*) icon,
BO_ICON/*|((options&IC_CANCEL)?BB_CANCEL:0)*/, 0, action, context);
- AddToolbarControl((wControl_p) bb, options);
+ ToolbarControlAdd((wControl_p) bb, options, cmdGroup);
return bb;
}
-#include "bitmaps/down.xpm3"
+#include "bitmaps/down.image3"
static const char * buttonGroupMenuTitle;
static const char * buttonGroupHelpKey;
static const char * buttonGroupStickyLabel;
@@ -749,7 +687,7 @@ EXPORT wIndex_t AddMenuButton(wMenu_p menu, procCommand_t command,
}
if (buttonGroupMenuTitle != NULL && buttonGroupPopupM == NULL) {
if (openbuttIcon == NULL) {
- openbuttIcon = wIconCreatePixMap(down_xpm3[iconSize]);
+ openbuttIcon = wIconCreatePixMap(down_image3[iconSize]);
}
buttonGroupPopupM = wMenuPopupCreate(mainW, buttonGroupMenuTitle);
AddToolbarButton(buttonGroupHelpKey, openbuttIcon, IC_ABUT,
@@ -841,39 +779,37 @@ static void MiscMenuItemCreate(wMenu_p m1, wMenu_p m2, const char * name,
GetBalloonHelpStr(name);
}
menuPG.paramCnt++;
+ CHECK( menuPG.paramCnt < COUNT(menuPLs) );
}
-
-#include "bitmaps/zoom-in.xpm3"
-#include "bitmaps/zoom-choose.xpm3"
-#include "bitmaps/zoom-out.xpm3"
-#include "bitmaps/zoom-extent.xpm3"
-#include "bitmaps/undo.xpm3"
-#include "bitmaps/redo.xpm3"
-// #include "bitmaps/partlist.xpm" // unused
-#include "bitmaps/doc-export.xpm3"
-#include "bitmaps/doc-export-bmap.xpm3"
-#include "bitmaps/doc-export-dxf.xpm3"
+#include "bitmaps/zoom-in.image3"
+#include "bitmaps/zoom-choose.image3"
+#include "bitmaps/zoom-out.image3"
+#include "bitmaps/zoom-extent.image3"
+#include "bitmaps/undo.image3"
+#include "bitmaps/redo.image3"
+#include "bitmaps/doc-export.image3"
+#include "bitmaps/doc-export-bmap.image3"
+#include "bitmaps/doc-export-dxf.image3"
#if XTRKCAD_CREATE_SVG
-#include "bitmaps/doc-export-svg.xpm3"
+#include "bitmaps/doc-export-svg.image3"
#endif
-#include "bitmaps/doc-import.xpm3"
-#include "bitmaps/doc-import-mod.xpm3"
-#include "bitmaps/doc-new.xpm3"
-#include "bitmaps/doc-save.xpm3"
-#include "bitmaps/doc-open.xpm3"
-// #include "bitmaps/doc-print.xpm"
-#include "bitmaps/doc-setup.xpm3"
-#include "bitmaps/parameter.xpm3"
-#include "bitmaps/map.xpm3"
-#include "bitmaps/magnet.xpm3"
+#include "bitmaps/doc-import.image3"
+#include "bitmaps/doc-import-mod.image3"
+#include "bitmaps/doc-new.image3"
+#include "bitmaps/doc-save.image3"
+#include "bitmaps/doc-open.image3"
+#include "bitmaps/doc-setup.image3"
+#include "bitmaps/parameter.image3"
+#include "bitmaps/map.image3"
+#include "bitmaps/magnet.image3"
//static wMenu_p toolbarM;
static addButtonCallBack_t paramFilesCallback;
EXPORT void CreateMenus(void)
{
- wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM, toolbarM,
+ wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM,
manageM, addM, changeM, drawM;
wMenu_p zoomM, zoomSubM;
@@ -1018,11 +954,11 @@ EXPORT void CreateMenus(void)
wMenuSeparatorCreate(fileM);
cmdGroup = BG_FILE;
- AddToolbarButton("menuFile-clear", wIconCreatePixMap(doc_new_xpm3[iconSize]),
+ AddToolbarButton("menuFile-clear", wIconCreatePixMap(doc_new_image3[iconSize]),
IC_MODETRAIN_TOO, DoClear, NULL);
- AddToolbarButton("menuFile-load", wIconCreatePixMap(doc_open_xpm3[iconSize]),
+ AddToolbarButton("menuFile-load", wIconCreatePixMap(doc_open_image3[iconSize]),
IC_MODETRAIN_TOO, ChkLoad, NULL);
- AddToolbarButton("menuFile-save", wIconCreatePixMap(doc_save_xpm3[iconSize]),
+ AddToolbarButton("menuFile-save", wIconCreatePixMap(doc_save_image3[iconSize]),
IC_MODETRAIN_TOO, DoSave, NULL);
cmdGroup = BG_PRINT;
@@ -1030,15 +966,16 @@ EXPORT void CreateMenus(void)
ACCL_PRINTSETUP, (wMenuCallBack_p) wPrintSetup, 0,
I2VP(0));
InitCmdPrint(fileM);
- AddToolbarButton("menuFile-setup", wIconCreatePixMap(doc_setup_xpm3[iconSize]),
+ AddToolbarButton("menuFile-setup",
+ wIconCreatePixMap(doc_setup_image3[iconSize]),
IC_MODETRAIN_TOO, (wMenuCallBack_p) wPrintSetup, I2VP(0));
wMenuSeparatorCreate(fileM);
MiscMenuItemCreate(fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT,
- DoImport, 0, I2VP(0));
+ DoImportObjects, 0, I2VP(0));
MiscMenuItemCreate(fileM, NULL, "cmdImportModule", _("Import &Module"),
ACCL_IMPORT_MOD,
- DoImport, 0, I2VP(1));
+ DoImportModule, 0, I2VP(1));
MiscMenuItemCreate(fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"),
ACCL_PRINTBM, OutputBitMapInit(), 0,
NULL);
@@ -1069,28 +1006,28 @@ EXPORT void CreateMenus(void)
InitCmdExport();
AddToolbarButton("menuFile-parameter",
- wIconCreatePixMap(parameter_xpm3[iconSize]),
+ wIconCreatePixMap(parameter_image3[iconSize]),
IC_MODETRAIN_TOO, paramFilesCallback, NULL);
cmdGroup = BG_ZOOM;
zoomUpB = AddToolbarButton("cmdZoomIn",
- wIconCreatePixMap(zoom_in_xpm3[iconSize]),
+ wIconCreatePixMap(zoom_in_image3[iconSize]),
IC_MODETRAIN_TOO, DoZoomUp, NULL);
zoomM = wMenuPopupCreate(mainW, "");
- AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_choose_xpm3[iconSize]),
+ AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_choose_image3[iconSize]),
IC_MODETRAIN_TOO,
(wButtonCallBack_p) wMenuPopupShow, zoomM);
zoomDownB = AddToolbarButton("cmdZoomOut",
- wIconCreatePixMap(zoom_out_xpm3[iconSize]),
+ wIconCreatePixMap(zoom_out_image3[iconSize]),
IC_MODETRAIN_TOO, DoZoomDown, NULL);
zoomExtentsB = AddToolbarButton("cmdZoomExtent",
- wIconCreatePixMap(zoom_extent_xpm3[iconSize]),
+ wIconCreatePixMap(zoom_extent_image3[iconSize]),
IC_MODETRAIN_TOO, DoZoomExtents, NULL);
cmdGroup = BG_UNDO;
- undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(undo_xpm3[iconSize]), 0,
+ undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(undo_image3[iconSize]), 0,
UndoUndo, NULL);
- redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(redo_xpm3[iconSize]), 0,
+ redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(redo_image3[iconSize]), 0,
UndoRedo, NULL);
wControlActive((wControl_p) undoB, FALSE);
@@ -1211,8 +1148,9 @@ EXPORT void CreateMenus(void)
wMenuSeparatorCreate(viewM);
- toolbarM = wMenuMenuCreate(viewM, "toolbarM", _("&Tool Bar"));
- CreateToolbarM(toolbarM);
+ InitToolbar();
+ MiscMenuItemCreate(viewM, NULL, "cmdToolbarOpt", _("&Toolbar Options..."),
+ 0L, DoToolbar, IC_MODETRAIN_TOO, NULL);
cmdGroup = BG_EASE;
InitCmdEasement();
@@ -1220,12 +1158,13 @@ EXPORT void CreateMenus(void)
cmdGroup = BG_SNAP;
InitSnapGridButtons();
magnetsB = AddToolbarButton("cmdMagneticSnap",
- wIconCreatePixMap(magnet_xpm3[iconSize]),
+ wIconCreatePixMap(magnet_image3[iconSize]),
IC_MODETRAIN_TOO, MagneticSnapToggle, NULL);
wControlLinkedSet((wControl_p) magnetsMI, (wControl_p) magnetsB);
wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
- mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm3[iconSize]),
+ mapShowB = AddToolbarButton("cmdMapShow",
+ wIconCreatePixMap(map_image3[iconSize]),
IC_MODETRAIN_TOO, MapWindowToggleShow, NULL);
wControlLinkedSet((wControl_p) mapShowMI, (wControl_p) mapShowB);
wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
@@ -1234,7 +1173,7 @@ EXPORT void CreateMenus(void)
* ADD MENU
*/
- cmdGroup = BG_TRKCRT | BG_BIGGAP;
+ cmdGroup = BG_TRKCRT;
InitCmdStraight(addM);
InitCmdCurve(addM);
InitCmdParallel(addM);
@@ -1393,7 +1332,7 @@ EXPORT void CreateMenus(void)
* MANAGE MENU
*/
- cmdGroup = BG_TRAIN | BG_BIGGAP;
+ cmdGroup = BG_TRAIN;
InitCmdTrain(manageM);
wMenuSeparatorCreate(manageM);
@@ -1432,13 +1371,13 @@ EXPORT void CreateMenus(void)
MiscMenuItemCreate(manageM, NULL, "cmdPricelist", _("Price List..."),
ACCL_PRICELIST, PriceListInit(), 0, NULL);
- cmdGroup = BG_LAYER | BG_BIGGAP;
+ cmdGroup = BG_LAYER;
InitCmdSelect2(changeM);
InitCmdDescribe2(changeM);
InitCmdPan2(changeM);
- InitLayers();
+ InitLayers(BG_LAYER);
cmdGroup = BG_HOTBAR;
InitHotBar();
@@ -1461,25 +1400,25 @@ static void InitCmdExport(void)
ButtonGroupBegin( _("Import/Export"), "cmdExportImportSetCmd",
_("Import/Export") );
cmdGroup = BG_EXPORTIMPORT;
- AddToolbarButton("cmdExport", wIconCreatePixMap(doc_export_xpm3[iconSize]),
+ AddToolbarButton("cmdExport", wIconCreatePixMap(doc_export_image3[iconSize]),
IC_SELECTED | IC_ACCLKEY, DoExport, NULL);
AddToolbarButton("cmdExportDXF",
- wIconCreatePixMap(doc_export_dxf_xpm3[iconSize]),
+ wIconCreatePixMap(doc_export_dxf_image3[iconSize]),
IC_SELECTED | IC_ACCLKEY, DoExportDXF, I2VP(1));
AddToolbarButton("cmdExportBmap",
- wIconCreatePixMap(doc_export_bmap_xpm3[iconSize]), IC_ACCLKEY,
+ wIconCreatePixMap(doc_export_bmap_image3[iconSize]), IC_ACCLKEY,
OutputBitMapInit(), NULL);
#if XTRKCAD_CREATE_SVG
AddToolbarButton("cmdExportSVG",
- wIconCreatePixMap(doc_export_svg_xpm3[iconSize]),
+ wIconCreatePixMap(doc_export_svg_image3[iconSize]),
IC_ACCLKEY, DoExportSVG, NULL); // IC_SELECTED |
#endif
- AddToolbarButton("cmdImport", wIconCreatePixMap(doc_import_xpm3[iconSize]),
+ AddToolbarButton("cmdImport", wIconCreatePixMap(doc_import_image3[iconSize]),
IC_ACCLKEY,
- DoImport, I2VP(0));
+ DoImportObjects, I2VP(0));
AddToolbarButton("cmdImportModule",
- wIconCreatePixMap(doc_import_mod_xpm3[iconSize]), IC_ACCLKEY,
- DoImport, I2VP(1));
+ wIconCreatePixMap(doc_import_mod_image3[iconSize]), IC_ACCLKEY,
+ DoImportModule, I2VP(1));
ButtonGroupEnd();
ParamRegister( &menuPG );
AddPlaybackProc( "MENU", MenuPlayback, NULL );