From e7d20cf352688bf717a01f4e6d9e6f497c2bea4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 20 Sep 2025 19:19:34 +0200 Subject: New upstream version 5.3.1Beta2 --- app/bin/menu.c | 225 +++++++++++++++++++++------------------------------------ 1 file changed, 82 insertions(+), 143 deletions(-) (limited to 'app/bin/menu.c') 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 ); -- cgit v1.2.3