diff options
Diffstat (limited to 'app/bin/menu.c')
| -rw-r--r-- | app/bin/menu.c | 225 | 
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 );  | 
