Annotation of researchv9/jtools/src/sunlib/t5.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.