| 5890 | } |
| 5891 | |
| 5892 | staticfn int |
| 5893 | handler_number_pad(void) |
| 5894 | { |
| 5895 | winid tmpwin; |
| 5896 | anything any; |
| 5897 | int i; |
| 5898 | static const char *const npchoices[] = { |
| 5899 | " 0 (off)", " 1 (on)", " 2 (on, MSDOS compatible)", |
| 5900 | " 3 (on, phone-style digit layout)", |
| 5901 | " 4 (on, phone-style layout, MSDOS compatible)", |
| 5902 | "-1 (off, 'z' to move upper-left, 'y' to zap wands)" |
| 5903 | }; |
| 5904 | menu_item *mode_pick = (menu_item *) 0; |
| 5905 | int clr = NO_COLOR; |
| 5906 | |
| 5907 | tmpwin = create_nhwindow(NHW_MENU); |
| 5908 | start_menu(tmpwin, MENU_BEHAVE_STANDARD); |
| 5909 | any = cg.zeroany; |
| 5910 | for (i = 0; i < SIZE(npchoices); i++) { |
| 5911 | any.a_int = i + 1; |
| 5912 | add_menu(tmpwin, &nul_glyphinfo, &any, 'a' + i, '0' + i, |
| 5913 | ATR_NONE, clr, npchoices[i], MENU_ITEMFLAGS_NONE); |
| 5914 | } |
| 5915 | end_menu(tmpwin, "Select number_pad mode:"); |
| 5916 | if (select_menu(tmpwin, PICK_ONE, &mode_pick) > 0) { |
| 5917 | switch (mode_pick->item.a_int - 1) { |
| 5918 | case 0: |
| 5919 | iflags.num_pad = FALSE; |
| 5920 | iflags.num_pad_mode = 0; |
| 5921 | break; |
| 5922 | case 1: |
| 5923 | iflags.num_pad = TRUE; |
| 5924 | iflags.num_pad_mode = 0; |
| 5925 | break; |
| 5926 | case 2: |
| 5927 | iflags.num_pad = TRUE; |
| 5928 | iflags.num_pad_mode = 1; |
| 5929 | break; |
| 5930 | case 3: |
| 5931 | iflags.num_pad = TRUE; |
| 5932 | iflags.num_pad_mode = 2; |
| 5933 | break; |
| 5934 | case 4: |
| 5935 | iflags.num_pad = TRUE; |
| 5936 | iflags.num_pad_mode = 3; |
| 5937 | break; |
| 5938 | /* last menu choice: number_pad == -1 */ |
| 5939 | case 5: |
| 5940 | iflags.num_pad = FALSE; |
| 5941 | iflags.num_pad_mode = 1; |
| 5942 | break; |
| 5943 | } |
| 5944 | reset_commands(FALSE); |
| 5945 | number_pad(iflags.num_pad ? 1 : 0); |
| 5946 | free((genericptr_t) mode_pick); |
| 5947 | } |
| 5948 | destroy_nhwindow(tmpwin); |
| 5949 | return optn_ok; |
no test coverage detected