|
|
1.1 ! root 1: /* ! 2: hierarchical menu test ! 3: dfn() [f1] gets called when moving to a pop-aside menu ! 4: also gets called when moving off right edge of any ! 5: non-heirarchical menu!--f3 gets called immediately after! ! 6: bfn() [f2] gets called when moving back to a lower menu ! 7: also gets called after f3 -- once per pop-aside menu ! 8: hfn() [f3] gets called when item is selected ! 9: */ ! 10: ! 11: #include "menu.h" ! 12: #include "jerq.h" ! 13: ! 14: #define DEFHEIGHT 14 ! 15: #define CLEARLN { rectf(&display,Rpt(Drect.org, \ ! 16: Pt(Drect.cor.x,Drect.org.y+DEFHEIGHT)),F_CLR);} ! 17: #define PRINT(S) {printf("%s\n",S);} ! 18: #define oPRINT(S) { CLEARLN; \ ! 19: string(&defont,(S),&display,Drect.org,F_STORE);} ! 20: void quit(), f1(), f2(), f3(); ! 21: ! 22: static NMenu m1, m2, m3, m4; ! 23: NMitem item1[] = { ! 24: "gods", "help me please!", 0,f1,f2,f3,0, ! 25: "men", "help me please!", 0,f1,f2,f3,1, ! 26: "art", "help me please!", 0,f1,f2,f3,2, ! 27: "snarf","help me please!", 0,f1,f2,f3,3, ! 28: 0 ! 29: }; ! 30: NMitem item2[] = { ! 31: "add all","help me please!", 0,f1,f2,f3,4, ! 32: "free all","help me please!", &m2,f1,f2,f3,5, ! 33: "move","help me please!", 0,f1,f2,f3,6, ! 34: "top","help me please!", 0,f1,f2,f3,7, ! 35: "bottom","help me please!", 0,f1,f2,f3,8, ! 36: "mark/unmark","help me please!", &m1,f1,f2,f3,9, ! 37: "free","help me please!", 0,f1,f2,f3,10, ! 38: "add all","help me please!", 0,f1,f2,f3,4, ! 39: "free all","help me please!", &m2,f1,f2,f3,5, ! 40: "move","help me please!", 0,f1,f2,f3,6, ! 41: "top","help me please!", 0,f1,f2,f3,7, ! 42: "bottom","help me please!", 0,f1,f2,f3,8, ! 43: "mark/unmark","help me please!", &m1,f1,f2,f3,9, ! 44: "free","help me please!", 0,f1,f2,f3,10, ! 45: "add all","help me please!", 0,f1,f2,f3,4, ! 46: "free all","help me please!", &m2,f1,f2,f3,5, ! 47: "move","help me please!", 0,f1,f2,f3,6, ! 48: "top","help me please!", 0,f1,f2,f3,7, ! 49: "bottom","help me please!", 0,f1,f2,f3,8, ! 50: "mark/unmark","help me please!", &m1,f1,f2,f3,9, ! 51: "free","help me please!", 0,f1,f2,f3,10, ! 52: 0 ! 53: }; ! 54: NMitem item3[] ={ ! 55: "save","help me please!", 0,f1,f2,f3,11, ! 56: "read","help me please!", &m4,f1,f2,f3,12, ! 57: "quit","help me please!", 0,f1,f2,f3,13, ! 58: 0 ! 59: }; ! 60: #ifdef old ! 61: NMitem item1[] = { ! 62: "gods", "help me please!", 0,0,0,0,0, ! 63: "men", "help me please!", 0,0,0,0,1, ! 64: "art", "help me please!", 0,0,0,0,2, ! 65: "philosophy","help me please!", 0,0,0,0,3, ! 66: 0 ! 67: }; ! 68: NMitem item2[] = { ! 69: "add all","help me please!", 0,0,0,0,4, ! 70: "free all","help me please!", &m2,0,0,0,5, ! 71: "move","help me please!", 0,0,0,0,6, ! 72: "top","help me please!", 0,0,0,0,7, ! 73: "bottom","help me please!", 0,0,0,0,8, ! 74: "mark/unmark","help me please!", &m1,0,0,0,9, ! 75: "free","help me please!", 0,0,0,0,10, ! 76: 0 ! 77: }; ! 78: NMitem item3[] ={ ! 79: "save","help me please!", 0,0,0,0,11, ! 80: "read","help me please!", &m4,0,0,0,12, ! 81: "quit","help me please!", 0,0,0,0,13, ! 82: 0 ! 83: }; ! 84: #endif ! 85: int a = 0; ! 86: int b = 0; ! 87: int c = 0; ! 88: char str[50]; ! 89: char *s = str; ! 90: ! 91: NMitem* ! 92: gen_func(n) ! 93: int n; ! 94: { ! 95: static NMitem men_item[4]; ! 96: ! 97: men_item[0].text = "zero"; ! 98: men_item[1].text = "one"; ! 99: men_item[2].text = "two"; ! 100: men_item[3].text = 0; ! 101: men_item[0].data = 0; ! 102: men_item[1].data = 1; ! 103: men_item[2].data = 2; ! 104: men_item[3].data = 0; ! 105: ! 106: if(n > 2) ! 107: return &men_item[3]; ! 108: return &men_item[n]; ! 109: } ! 110: ! 111: main (argc, argv) ! 112: int argc; ! 113: char **argv; ! 114: { ! 115: NMitem *gen_func(); ! 116: NMitem *temp; ! 117: ! 118: request(MOUSE); ! 119: initdisplay(argc, argv); ! 120: m1.item = item1; ! 121: m2.item = item2; ! 122: m3.item = item3; ! 123: m4.item = 0; ! 124: m4.generator = gen_func; ! 125: for(;;){ ! 126: nap(1); ! 127: if(button1() && (temp = hmenuhit(&m1,1))){ ! 128: switch(temp->data){ ! 129: case 0: ! 130: PRINT("m1, case 0"); ! 131: break; ! 132: case 1: ! 133: PRINT("m1, case 1"); ! 134: break; ! 135: case 2: ! 136: PRINT("m1, case 2"); ! 137: break; ! 138: case 3: ! 139: PRINT("m1, case 3"); ! 140: break; ! 141: } ! 142: /* while(button1()) ! 143: nap(1);*/ ! 144: } ! 145: else if(button2() && (temp = hmenuhit(&m2,2))){ ! 146: switch(temp->data){ ! 147: case 0: ! 148: PRINT("m1, case 0"); ! 149: break; ! 150: case 1: ! 151: PRINT("m1, case 1"); ! 152: break; ! 153: case 2: ! 154: PRINT("m1, case 2"); ! 155: break; ! 156: case 3: ! 157: PRINT("m1, case 3"); ! 158: break; ! 159: case 4: ! 160: PRINT("m2, case 0"); ! 161: break; ! 162: case 5: ! 163: PRINT("m2, case 1"); ! 164: break; ! 165: case 6: ! 166: PRINT("m2, case 2"); ! 167: break; ! 168: case 7: ! 169: PRINT("m2, case 3"); ! 170: break; ! 171: case 8: ! 172: PRINT("m2, case 4"); ! 173: break; ! 174: case 9: ! 175: PRINT("m2, case 5"); ! 176: break; ! 177: case 10: ! 178: PRINT("m2, case 6"); ! 179: break; ! 180: } ! 181: /* while(button2()) ! 182: nap(2);*/ ! 183: } ! 184: else if(button3() && (temp = hmenuhit(&m3,3))){ ! 185: switch(temp->data){ ! 186: case 0: ! 187: PRINT("m4, case 0"); ! 188: break; ! 189: case 1: ! 190: PRINT("m4, case 1"); ! 191: break; ! 192: case 2: ! 193: PRINT("m4, case 2"); ! 194: break; ! 195: case 11: ! 196: PRINT("m3, case 0"); ! 197: break; ! 198: case 12: ! 199: PRINT("m3, case 1"); ! 200: break; ! 201: case 13: ! 202: quit(); ! 203: break; ! 204: } ! 205: /* while(button3()) ! 206: nap(1);*/ ! 207: } ! 208: } ! 209: } ! 210: ! 211: void ! 212: quit() ! 213: { ! 214: PRINT("quitting soon"); ! 215: exit(); ! 216: } ! 217: ! 218: void ! 219: f1() ! 220: { ! 221: sprintf(s,"f1(): a = %d",a); ! 222: PRINT(s); ! 223: /* nap(2);*/ ! 224: a++; ! 225: } ! 226: ! 227: void ! 228: f2() ! 229: { ! 230: sprintf(s,"f2(): b = %d",b); ! 231: PRINT(s); ! 232: /* nap(2);*/ ! 233: b++; ! 234: } ! 235: ! 236: void ! 237: f3() ! 238: { ! 239: sprintf(s,"f3(): c = %d",c); ! 240: PRINT(s); ! 241: /* nap(2);*/ ! 242: c++; ! 243: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.