/[LeafOK_CVS]/lbbs/src/menu.c
ViewVC logotype

Diff of /lbbs/src/menu.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.3 by sysadm, Sat Mar 19 13:34:20 2005 UTC Revision 1.5 by sysadm, Sat Mar 19 15:54:14 2005 UTC
# Line 70  load_menu (MENU_SET * p_menu_set, const Line 70  load_menu (MENU_SET * p_menu_set, const
70                break;                break;
71              }              }
72    
73            if (ireg ("^%menu ([A-Za-z0-9_]+)", buffer, 1, pmatch) == 0)            if (ireg ("^%menu ([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0)
74              {              {
75                p_menu_set->p_menu[i] = malloc (sizeof (MENU));                p_menu_set->p_menu[i] = malloc (sizeof (MENU));
76    
77                strncpy (p_menu_set->p_menu[i]->name,                strncpy (p_menu_set->p_menu[i]->name,
78                  buffer + pmatch[0].rm_so,                  buffer + pmatch[1].rm_so,
79                  pmatch[0].rm_eo - pmatch[0].rm_so + 1);                  pmatch[1].rm_eo - pmatch[1].rm_so + 1);
80                  
81                j = 0;                j = 0;
82                                
83                while (fgets (buffer, 255, fin))                while (fgets (buffer, 255, fin))
# Line 94  load_menu (MENU_SET * p_menu_set, const Line 94  load_menu (MENU_SET * p_menu_set, const
94                      break;                      break;
95                    }                    }
96                    if (ireg (                    if (ireg (
97                      "^!M_([A-Za-z0-9_]+)[[:space:]]*([0-9]+),"                      "^!([A-Za-z0-9_.]+)[[:space:]]*([0-9]+),"
98                      "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+),"                      "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+),"
99                      "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"",                      "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"",
100                      buffer, 6, pmatch) == 0)                      buffer, 7, pmatch) == 0)
101                      {                      {
102                        p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM));                        p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM));
103                        p_menu_set->p_menu[i]->items[j]->submenu = 1;                        p_menu_set->p_menu[i]->items[j]->submenu = 1;
104                        strncpy (p_menu_set->p_menu[i]->items[j]->action,                        strncpy (p_menu_set->p_menu[i]->items[j]->action,
                         buffer + pmatch[0].rm_so,  
                         pmatch[0].rm_eo - pmatch[0].rm_so + 1);  
                       strncpy (temp,  
105                          buffer + pmatch[1].rm_so,                          buffer + pmatch[1].rm_so,
106                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);
                       p_menu_set->p_menu[i]->items[j]->row = atoi (temp);  
107                        strncpy (temp,                        strncpy (temp,
108                          buffer + pmatch[2].rm_so,                          buffer + pmatch[2].rm_so,
109                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);
110                        p_menu_set->p_menu[i]->items[j]->col = atoi (temp);                        p_menu_set->p_menu[i]->items[j]->row = atoi (temp);
111                        strncpy (temp,                        strncpy (temp,
112                          buffer + pmatch[3].rm_so,                          buffer + pmatch[3].rm_so,
113                          pmatch[3].rm_eo - pmatch[3].rm_so + 1);                          pmatch[3].rm_eo - pmatch[3].rm_so + 1);
114                        p_menu_set->p_menu[i]->items[j]->priv = atoi (temp);                        p_menu_set->p_menu[i]->items[j]->col = atoi (temp);
115                        strncpy (p_menu_set->p_menu[i]->items[j]->name,                        strncpy (temp,
116                          buffer + pmatch[4].rm_so,                          buffer + pmatch[4].rm_so,
117                          pmatch[4].rm_eo - pmatch[4].rm_so + 1);                          pmatch[4].rm_eo - pmatch[4].rm_so + 1);
118                        strncpy (p_menu_set->p_menu[i]->items[j]->text,                        p_menu_set->p_menu[i]->items[j]->priv = atoi (temp);
119                          strncpy (p_menu_set->p_menu[i]->items[j]->name,
120                          buffer + pmatch[5].rm_so,                          buffer + pmatch[5].rm_so,
121                          pmatch[5].rm_eo - pmatch[5].rm_so + 1);                          pmatch[5].rm_eo - pmatch[5].rm_so + 1);
122                          strncpy (p_menu_set->p_menu[i]->items[j]->text,
123                            buffer + pmatch[6].rm_so,
124                            pmatch[6].rm_eo - pmatch[6].rm_so + 1);
125                        j++;                        j++;
126                        continue;                        continue;
127                      }                      }
# Line 129  load_menu (MENU_SET * p_menu_set, const Line 129  load_menu (MENU_SET * p_menu_set, const
129                      "^@([A-Za-z0-9_]+)[[:space:]]*([0-9]+),"                      "^@([A-Za-z0-9_]+)[[:space:]]*([0-9]+),"
130                      "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+),"                      "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+),"
131                      "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"",                      "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"",
132                      buffer, 6, pmatch) == 0)                      buffer, 7, pmatch) == 0)
133                      {                      {
134                        p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM));                        p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM));
135                        p_menu_set->p_menu[i]->items[j]->submenu = 0;                        p_menu_set->p_menu[i]->items[j]->submenu = 0;
136                        strncpy (p_menu_set->p_menu[i]->items[j]->action,                        strncpy (p_menu_set->p_menu[i]->items[j]->action,
                         buffer + pmatch[0].rm_so,  
                         pmatch[0].rm_eo - pmatch[0].rm_so + 1);  
                       strncpy (temp,  
137                          buffer + pmatch[1].rm_so,                          buffer + pmatch[1].rm_so,
138                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);
                       p_menu_set->p_menu[i]->items[j]->row = atoi (temp);  
139                        strncpy (temp,                        strncpy (temp,
140                          buffer + pmatch[2].rm_so,                          buffer + pmatch[2].rm_so,
141                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);
142                        p_menu_set->p_menu[i]->items[j]->col = atoi (temp);                        p_menu_set->p_menu[i]->items[j]->row = atoi (temp);
143                        strncpy (temp,                        strncpy (temp,
144                          buffer + pmatch[3].rm_so,                          buffer + pmatch[3].rm_so,
145                          pmatch[3].rm_eo - pmatch[3].rm_so + 1);                          pmatch[3].rm_eo - pmatch[3].rm_so + 1);
146                        p_menu_set->p_menu[i]->items[j]->priv = atoi (temp);                        p_menu_set->p_menu[i]->items[j]->col = atoi (temp);
147                        strncpy (p_menu_set->p_menu[i]->items[j]->name,                        strncpy (temp,
148                          buffer + pmatch[4].rm_so,                          buffer + pmatch[4].rm_so,
149                          pmatch[4].rm_eo - pmatch[4].rm_so + 1);                          pmatch[4].rm_eo - pmatch[4].rm_so + 1);
150                        strncpy (p_menu_set->p_menu[i]->items[j]->text,                        p_menu_set->p_menu[i]->items[j]->priv = atoi (temp);
151                          strncpy (p_menu_set->p_menu[i]->items[j]->name,
152                          buffer + pmatch[5].rm_so,                          buffer + pmatch[5].rm_so,
153                          pmatch[5].rm_eo - pmatch[5].rm_so + 1);                          pmatch[5].rm_eo - pmatch[5].rm_so + 1);
154                          strncpy (p_menu_set->p_menu[i]->items[j]->text,
155                            buffer + pmatch[6].rm_so,
156                            pmatch[6].rm_eo - pmatch[6].rm_so + 1);
157                        j++;                        j++;
158                        continue;                        continue;
159                      }                      }
160                    if (ireg (                    if (ireg (
161                      "^title[[:space:]]*([0-9]+),"                      "^title[[:space:]]*([0-9]+),"
162                      "[[:space:]]*([0-9]+),[[:space:]]*\"([^\"]+)\"",                      "[[:space:]]*([0-9]+),[[:space:]]*\"([^\"]+)\"",
163                      buffer, 3, pmatch) == 0)                      buffer, 4, pmatch) == 0)
164                      {                      {
165                        strncpy (temp,                        strncpy (temp,
                         buffer + pmatch[0].rm_so,  
                         pmatch[0].rm_eo - pmatch[0].rm_so + 1);  
                       p_menu_set->p_menu[i]->title.row = atoi (temp);  
                       strncpy (temp,  
166                          buffer + pmatch[1].rm_so,                          buffer + pmatch[1].rm_so,
167                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);
168                        p_menu_set->p_menu[i]->title.col = atoi (temp);                        p_menu_set->p_menu[i]->title.row = atoi (temp);
169                        strncpy (p_menu_set->p_menu[i]->title.text,                        strncpy (temp,
170                          buffer + pmatch[2].rm_so,                          buffer + pmatch[2].rm_so,
171                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);
172                          p_menu_set->p_menu[i]->title.col = atoi (temp);
173                          strncpy (p_menu_set->p_menu[i]->title.text,
174                            buffer + pmatch[3].rm_so,
175                            pmatch[3].rm_eo - pmatch[3].rm_so + 1);
176                        continue;                        continue;
177                      }                      }
178                    if (ireg (                    if (ireg (
179                      "^title[[:space:]]*([0-9]+),"                      "^title[[:space:]]*([0-9]+),"
180                      "[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)",                      "[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)",
181                      buffer, 3, pmatch) == 0)                      buffer, 4, pmatch) == 0)
182                      {                      {
183                        strncpy (temp,                        strncpy (temp,
                         buffer + pmatch[0].rm_so,  
                         pmatch[0].rm_eo - pmatch[0].rm_so + 1);  
                       p_menu_set->p_menu[i]->screen.row = atoi (temp);  
                       strncpy (temp,  
184                          buffer + pmatch[1].rm_so,                          buffer + pmatch[1].rm_so,
185                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);                          pmatch[1].rm_eo - pmatch[1].rm_so + 1);
186                        p_menu_set->p_menu[i]->screen.col = atoi (temp);                        p_menu_set->p_menu[i]->screen.row = atoi (temp);
187                        strncpy (temp,                        strncpy (temp,
188                          buffer + pmatch[2].rm_so,                          buffer + pmatch[2].rm_so,
189                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);                          pmatch[2].rm_eo - pmatch[2].rm_so + 1);
190                          p_menu_set->p_menu[i]->screen.col = atoi (temp);
191                          strncpy (temp,
192                            buffer + pmatch[3].rm_so,
193                            pmatch[3].rm_eo - pmatch[3].rm_so + 1);
194                        sprintf (p_menu_set->p_menu[i]->screen.filename,                        sprintf (p_menu_set->p_menu[i]->screen.filename,
195                          "%sMENU_SCR_%s", app_temp_dir, temp);                          "%sMENU_SCR_%s", app_temp_dir, temp);
196                        continue;                        continue;
# Line 214  MENU * Line 214  MENU *
214  get_menu (MENU_SET * p_menu_set, const char * menu_name)  get_menu (MENU_SET * p_menu_set, const char * menu_name)
215  {  {
216    int i;    int i;
217    
218    for (i = 0; i < p_menu_set->menu_count; i++)    for (i = 0; i < p_menu_set->menu_count; i++)
219    {    {
220      if (strcmp(p_menu_set->p_menu[i]->name, menu_name) == 0)      if (strcmp(p_menu_set->p_menu[i]->name, menu_name) == 0)
221      {      {
222    log_std ("%s %s\n", p_menu_set->p_menu[i]->name, menu_name);
223        return p_menu_set->p_menu[i];        return p_menu_set->p_menu[i];
224      }      }
225    }    }
226    
227    log_std ("%d:)\n", i);
228      return NULL;
229  }  }
230    
231  void  void
# Line 237  display_menu (MENU * p_menu) Line 242  display_menu (MENU * p_menu)
242  {  {
243    int i, row, col, menu_selectable = 0;    int i, row, col, menu_selectable = 0;
244    
245      if (p_menu == NULL)
246        return -1;
247    
248    show_top (p_menu->title.text);    show_top (p_menu->title.text);
249    
250    moveto (p_menu->screen.row, p_menu->screen.col);    moveto (p_menu->screen.row, p_menu->screen.col);
# Line 257  display_menu (MENU * p_menu) Line 265  display_menu (MENU * p_menu)
265    
266          menu_selectable = 1;          menu_selectable = 1;
267                    
268          if (p_menu->items[i]->row == 0)          if (p_menu->items[i]->row != 0)
           row ++;  
         else  
269            row = p_menu->items[i]->row;            row = p_menu->items[i]->row;
         p_menu->items[i]->r_row = row;  
         if (p_menu->items[i]->col == 0)  
           col ++;  
270          else          else
271              row ++;
272            p_menu->items[i]->r_row = row;
273            if (p_menu->items[i]->col != 0)
274            col = p_menu->items[i]->col;            col = p_menu->items[i]->col;
275          p_menu->items[i]->r_col = col;          p_menu->items[i]->r_col = col;
276          moveto (row, col);          moveto (row, col);
# Line 308  menu_control (MENU_SET * p_menu_set, int Line 314  menu_control (MENU_SET * p_menu_set, int
314          }          }
315        else        else
316          {          {
317            return (p_menu->items[p_menu->item_cur_pos]->action);            if (strcmp (p_menu->items[p_menu->item_cur_pos]->action, "..") == 0)
318                return menu_control (p_menu_set, KEY_LEFT);
319              else
320                return (p_menu->items[p_menu->item_cur_pos]->action);
321          }          }
322      case KEY_LEFT:      case KEY_LEFT:
323        if (p_menu_set->menu_select_depth > 0)        if (p_menu_set->menu_select_depth > 0)


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1