X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=538d55edb60d75d851637af0ac157e6c3b392361;hb=86932d68dc115d304fddb290947fd04323d62cbd;hp=035866c2f50f1bef9b40f4f96c8b8d6a7d8bb20a;hpb=8e8f7200a0db9c816e5b508bc0cd377a393bda41;p=xboard.git diff --git a/xboard.c b/xboard.c index 035866c..538d55e 100644 --- a/xboard.c +++ b/xboard.c @@ -432,60 +432,60 @@ XtActionsRec boardActions[] = { }; char globalTranslations[] = - ":F9: MenuItem(ResignProc) \n \ - :Ctrln: MenuItem(NewGame) \n \ - :MetaV: MenuItem(NewVariant) \n \ - :Ctrlo: MenuItem(LoadGame) \n \ + ":F9: MenuItem(Actions.Resign) \n \ + :Ctrln: MenuItem(File.NewGame) \n \ + :MetaV: MenuItem(File.NewVariant) \n \ + :Ctrlo: MenuItem(File.LoadGame) \n \ :MetaNext: MenuItem(LoadNextGameProc) \n \ :MetaPrior: MenuItem(LoadPrevGameProc) \n \ :CtrlDown: LoadSelectedProc(3) \n \ :CtrlUp: LoadSelectedProc(-3) \n \ - :Ctrls: MenuItem(SaveGame) \n \ - :Ctrlc: MenuItem(CopyGame) \n \ - :Ctrlv: MenuItem(PasteGame) \n \ - :CtrlO: MenuItem(LoadPosition) \n \ + :Ctrls: MenuItem(File.SaveGame) \n \ + :Ctrlc: MenuItem(Edit.CopyGame) \n \ + :Ctrlv: MenuItem(Edit.PasteGame) \n \ + :CtrlO: MenuItem(File.LoadPosition) \n \ :ShiftNext: MenuItem(LoadNextPositionProc) \n \ :ShiftPrior: MenuItem(LoadPrevPositionProc) \n \ - :CtrlS: MenuItem(SavePosition) \n \ - :CtrlC: MenuItem(CopyPosition) \n \ - :CtrlV: MenuItem(PastePosition) \n \ - :Ctrlq: MenuItem(Exit) \n \ - :Ctrlw: MenuItem(MachineWhite) \n \ - :Ctrlb: MenuItem(MachineBlack) \n \ - :Ctrlt: MenuItem(TwoMachines) \n \ - :Ctrla: MenuItem(AnalysisMode) \n \ - :Ctrlg: MenuItem(AnalyzeFile) \n \ - :Ctrle: MenuItem(EditGame) \n \ - :CtrlE: MenuItem(EditPosition) \n \ - :MetaO: MenuItem(ShowEngineOutput) \n \ - :MetaE: MenuItem(ShowEvaluationGraph) \n \ - :MetaG: MenuItem(ShowGameList) \n \ - :MetaH: MenuItem(ShowMoveHistory) \n \ - :Pause: MenuItem(Pause) \n \ - :F3: MenuItem(Accept) \n \ - :F4: MenuItem(Decline) \n \ - :F12: MenuItem(Rematch) \n \ - :F5: MenuItem(CallFlag) \n \ - :F6: MenuItem(Draw) \n \ - :F7: MenuItem(Adjourn) \n \ - :F8: MenuItem(Abort) \n \ - :F10: MenuItem(StopObserving) \n \ - :F11: MenuItem(StopExamining) \n \ + :CtrlS: MenuItem(File.SavePosition) \n \ + :CtrlC: MenuItem(Edit.CopyPosition) \n \ + :CtrlV: MenuItem(Edit.PastePosition) \n \ + :Ctrlq: MenuItem(File.Quit) \n \ + :Ctrlw: MenuItem(Mode.MachineWhite) \n \ + :Ctrlb: MenuItem(Mode.MachineBlack) \n \ + :Ctrlt: MenuItem(Mode.TwoMachines) \n \ + :Ctrla: MenuItem(Mode.AnalysisMode) \n \ + :Ctrlg: MenuItem(Mode.AnalyzeFile) \n \ + :Ctrle: MenuItem(Mode.EditGame) \n \ + :CtrlE: MenuItem(Mode.EditPosition) \n \ + :MetaO: MenuItem(View.EngineOutput) \n \ + :MetaE: MenuItem(View.EvaluationGraph) \n \ + :MetaG: MenuItem(View.GameList) \n \ + :MetaH: MenuItem(View.MoveHistory) \n \ + :Pause: MenuItem(Mode.Pause) \n \ + :F3: MenuItem(Action.Accept) \n \ + :F4: MenuItem(Action.Decline) \n \ + :F12: MenuItem(Action.Rematch) \n \ + :F5: MenuItem(Action.CallFlag) \n \ + :F6: MenuItem(Action.Draw) \n \ + :F7: MenuItem(Action.Adjourn) \n \ + :F8: MenuItem(Action.Abort) \n \ + :F10: MenuItem(Action.StopObserving) \n \ + :F11: MenuItem(Action.StopExamining) \n \ :Ctrld: MenuItem(DebugProc) \n \ :Meta CtrlF12: MenuItem(DebugProc) \n \ - :MetaEnd: MenuItem(ToEnd) \n \ - :MetaRight: MenuItem(Forward) \n \ - :MetaHome: MenuItem(ToStart) \n \ - :MetaLeft: MenuItem(Backward) \n \ - :Left: MenuItem(Backward) \n \ - :Right: MenuItem(Forward) \n \ - :Home: MenuItem(Revert) \n \ - :End: MenuItem(TruncateGame) \n \ - :Ctrlm: MenuItem(MoveNow) \n \ - :Ctrlx: MenuItem(RetractMove) \n \ - :MetaJ: MenuItem(Adjudications) \n \ - :MetaU: MenuItem(CommonEngine) \n \ - :MetaT: MenuItem(TimeControl) \n \ + :MetaEnd: MenuItem(Edit.ForwardtoEnd) \n \ + :MetaRight: MenuItem(Edit.Forward) \n \ + :MetaHome: MenuItem(Edit.BacktoStart) \n \ + :MetaLeft: MenuItem(Edit.Backward) \n \ + :Left: MenuItem(Edit.Backward) \n \ + :Right: MenuItem(Edit.Forward) \n \ + :Home: MenuItem(Edit.Revert) \n \ + :End: MenuItem(Edit.TruncateGame) \n \ + :Ctrlm: MenuItem(Engine.MoveNow) \n \ + :Ctrlx: MenuItem(Engine.RetractMove) \n \ + :MetaJ: MenuItem(Options.Adjudications) \n \ + :MetaU: MenuItem(Options.CommonEngine) \n \ + :MetaT: MenuItem(Options.TimeControl) \n \ :CtrlP: MenuItem(PonderNextMove) \n " #ifndef OPTIONSDIALOG "\ @@ -496,8 +496,8 @@ char globalTranslations[] = :CtrlH: MenuItem(HideThinkingProc) \n " #endif "\ - :F1: MenuItem(Manual) \n \ - :F2: MenuItem(FlipView) \n \ + :F1: MenuItem(Help.ManXBoard) \n \ + :F2: MenuItem(View.FlipView) \n \ :Return: TempBackwardProc() \n \ :Return: TempForwardProc() \n"; @@ -2268,60 +2268,24 @@ CreateGrid () } } -int nrOfMenuItems = 7; -Widget menuWidget[150]; -MenuListItem menuItemList[150] = { - { "LoadNextGameProc", LoadNextGameProc }, - { "LoadPrevGameProc", LoadPrevGameProc }, - { "ReloadGameProc", ReloadGameProc }, - { "ReloadPositionProc", ReloadPositionProc }, -#ifndef OPTIONSDIALOG - { "AlwaysQueenProc", AlwaysQueenProc }, - { "AnimateDraggingProc", AnimateDraggingProc }, - { "AnimateMovingProc", AnimateMovingProc }, - { "AutoflagProc", AutoflagProc }, - { "AutoflipProc", AutoflipProc }, - { "BlindfoldProc", BlindfoldProc }, - { "FlashMovesProc", FlashMovesProc }, -#if HIGHDRAG - { "HighlightDraggingProc", HighlightDraggingProc }, -#endif - { "HighlightLastMoveProc", HighlightLastMoveProc }, -// { "IcsAlarmProc", IcsAlarmProc }, - { "MoveSoundProc", MoveSoundProc }, - { "PeriodicUpdatesProc", PeriodicUpdatesProc }, - { "PopupExitMessageProc", PopupExitMessageProc }, - { "PopupMoveErrorsProc", PopupMoveErrorsProc }, -// { "PremoveProc", PremoveProc }, - { "ShowCoordsProc", ShowCoordsProc }, - { "ShowThinkingProc", ShowThinkingProc }, - { "HideThinkingProc", HideThinkingProc }, - { "TestLegalityProc", TestLegalityProc }, -#endif - { "AboutGameProc", AboutGameEvent }, - { "DebugProc", DebugProc }, - { "NothingProc", NothingProc }, - {NULL, NothingProc} -}; - void MarkMenuItem (char *menuRef, int state) { - int nr = MenuToNumber(menuRef); -return; - if(nr >= 0) { + MenuItem *item = MenuNameToItem(menuRef); + + if(item) { Arg args[2]; XtSetArg(args[0], XtNleftBitmap, state ? xMarkPixmap : None); - XtSetValues(menuWidget[nr], args, 1); + XtSetValues(item->handle, args, 1); } } void EnableMenuItem (char *menuRef, int state) { - int nr = MenuToNumber(menuRef); -return; - if(nr >= 0) XtSetSensitive(menuWidget[nr], state); + MenuItem *item = MenuNameToItem(menuRef); + + if(item) XtSetSensitive(item->handle, state); } void @@ -2340,28 +2304,15 @@ SetMenuEnables (Enables *enab) } } -int -Equal(char *p, char *s) -{ // compare strings skipping spaces in second - while(*s) { - if(*s == ' ') { s++; continue; } - if(*s++ != *p++) return 0; - } - return !*p; -} - void KeyBindingProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) { // [HGM] new method of key binding: specify MenuItem(FlipView) in stead of FlipViewProc in translation string int i; char *p; + MenuItem *item; if(*nprms == 0) return; - for(i=0; menuItemList[i].name; i++) { - if(Equal(prms[0], menuItemList[i].name)) { - (menuItemList[i].proc) (); - return; - } - } + item = MenuNameToItem(prms[0]); + if(item) ((MenuProc *) item->proc) (); } static void @@ -2378,91 +2329,6 @@ MenuEngineSelect (Widget w, caddr_t addr, caddr_t index) RecentEngineEvent((int) (intptr_t) addr); } -// some stuff that must remain in front-end -static Widget mainBar, currentMenu; -static int wtot, nr = 0, widths[10]; - -void -AppendMenuItem (char *text, char *name, MenuProc *action) -{ - int j; - Widget entry; - Arg args[16]; - - j = 0; - XtSetArg(args[j], XtNleftMargin, 20); j++; - XtSetArg(args[j], XtNrightMargin, 20); j++; - - if (strcmp(text, "----") == 0) { - entry = XtCreateManagedWidget(text, smeLineObjectClass, - currentMenu, args, j); - } else { - XtSetArg(args[j], XtNlabel, XtNewString(_(text))); - entry = XtCreateManagedWidget(name, smeBSBObjectClass, - currentMenu, args, j+1); - XtAddCallback(entry, XtNcallback, - (XtCallbackProc) (strcmp(name, "recent") ? MenuBarSelect : MenuEngineSelect), - (caddr_t) action); - menuWidget[nrOfMenuItems] = entry; - } -} - -void -CreateMenuButton (char *name, Menu *mb) -{ // create menu button on main bar, and shell for pull-down list - int i, j; - Arg args[16]; - Dimension w; - - j = 0; - XtSetArg(args[j], XtNmenuName, XtNewString(name)); j++; - XtSetArg(args[j], XtNlabel, XtNewString(_(mb->name))); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; - mb->subMenu = XtCreateManagedWidget(mb->name, menuButtonWidgetClass, - mainBar, args, j); - currentMenu = XtCreatePopupShell(name, simpleMenuWidgetClass, - mainBar, NULL, 0); - j = 0; - XtSetArg(args[j], XtNwidth, &w); j++; - XtGetValues(mb->subMenu, args, j); - wtot += mb->textWidth = widths[nr++] = w; -} - -Widget -CreateMenuBar (Menu *mb, int boardWidth) -{ - int i, j; - Arg args[16]; - char menuName[MSG_SIZ]; - Dimension w; - Menu *ma = mb; - - // create bar itself - j = 0; - XtSetArg(args[j], XtNorientation, XtorientHorizontal); j++; - XtSetArg(args[j], XtNvSpace, 0); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; - mainBar = XtCreateWidget("menuBar", boxWidgetClass, - formWidget, args, j); - - CreateMainMenus(mb); // put menus in bar according to description in back-end - - // size buttons to make menu bar fit, clipping menu names where necessary - while(wtot > boardWidth - 40) { - int wmax=0, imax=0; - for(i=0; i wmax) wmax = widths[imax=i]; - widths[imax]--; - wtot--; - } - for(i=0; i