/[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.6 by sysadm, Sun Mar 20 07:39:28 2005 UTC Revision 1.9 by sysadm, Sun Mar 20 17:23:17 2005 UTC
# Line 30  int Line 30  int
30  load_menu (MENU_SET * p_menu_set, const char *conf_file)  load_menu (MENU_SET * p_menu_set, const char *conf_file)
31  {  {
32    FILE *fin, *fout;    FILE *fin, *fout;
33    int i = 0, j, k;    int i = 0, j;
34    char buffer[256], screen_filename[256], temp[256];    char buffer[256], screen_filename[256], temp[256];
35    regmatch_t pmatch[10];    regmatch_t pmatch[10];
36    
# Line 47  load_menu (MENU_SET * p_menu_set, const Line 47  load_menu (MENU_SET * p_menu_set, const
47          case '#':          case '#':
48            break;            break;
49          case '%':          case '%':
50            if (ireg ("^%S_([A-Za-z0-9_]+)", buffer, 1, pmatch) == 0)            if (ireg ("^%S_([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0)
51              {              {
52                strncpy (temp, buffer + pmatch[0].rm_so,                strncpy (temp, buffer + pmatch[1].rm_so,
53                         pmatch[0].rm_eo - pmatch[0].rm_so);                         pmatch[1].rm_eo - pmatch[1].rm_so);
54                temp [pmatch[0].rm_eo - pmatch[0].rm_so] = '\0';                temp [pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';
55                sprintf (screen_filename, "%sMENU_SCR_%s", app_temp_dir, temp);                sprintf (screen_filename, "%sMENU_SCR_%s", app_temp_dir, temp);
56    
57                if ((fout = fopen (screen_filename, "w")) == NULL)                if ((fout = fopen (screen_filename, "w")) == NULL)
# Line 194  load_menu (MENU_SET * p_menu_set, const Line 194  load_menu (MENU_SET * p_menu_set, const
194                        continue;                        continue;
195                      }                      }
196                    if (ireg (                    if (ireg (
197                      "^title[[:space:]]*([0-9]+),"                      "^screen[[:space:]]*([0-9]+),"
198                      "[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)",                      "[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)",
199                      buffer, 4, pmatch) == 0)                      buffer, 4, pmatch) == 0)
200                      {                      {
# Line 267  display_menu (MENU * p_menu) Line 267  display_menu (MENU * p_menu)
267    show_top (p_menu->title.text);    show_top (p_menu->title.text);
268    
269    moveto (p_menu->screen.row, p_menu->screen.col);    moveto (p_menu->screen.row, p_menu->screen.col);
270    display_file (p_menu->screen.filename);    if (display_file (p_menu->screen.filename) != 0)
271        log_error ("Display menu screen <%s> failed!\n", p_menu->screen.filename);
272    
273    row = p_menu->items[0]->row;    row = p_menu->items[0]->row;
274    col = p_menu->items[0]->col;    col = p_menu->items[0]->col;
# Line 323  menu_control (MENU_SET * p_menu_set, int Line 324  menu_control (MENU_SET * p_menu_set, int
324      case KEY_RIGHT:      case KEY_RIGHT:
325        if (p_menu->items[p_menu->item_cur_pos]->submenu)        if (p_menu->items[p_menu->item_cur_pos]->submenu)
326          {          {
327              if (strcmp (p_menu->items[p_menu->item_cur_pos]->action, "..") == 0)
328                return menu_control (p_menu_set, KEY_LEFT);
329            p_menu_set->menu_select_depth ++;            p_menu_set->menu_select_depth ++;
330            p_menu =            p_menu =
331              p_menu_set->p_menu_select[p_menu_set->menu_select_depth] =              p_menu_set->p_menu_select[p_menu_set->menu_select_depth] =
# Line 333  menu_control (MENU_SET * p_menu_set, int Line 336  menu_control (MENU_SET * p_menu_set, int
336          }          }
337        else        else
338          {          {
339            if (strcmp (p_menu->items[p_menu->item_cur_pos]->action, "..") == 0)            return (p_menu->items[p_menu->item_cur_pos]->action);
             return menu_control (p_menu_set, KEY_LEFT);  
           else  
             return (p_menu->items[p_menu->item_cur_pos]->action);  
340          }          }
341      case KEY_LEFT:      case KEY_LEFT:
342        if (p_menu_set->menu_select_depth > 0)        if (p_menu_set->menu_select_depth > 0)
# Line 359  menu_control (MENU_SET * p_menu_set, int Line 359  menu_control (MENU_SET * p_menu_set, int
359          }          }
360      case KEY_UP:      case KEY_UP:
361        display_menu_cursor (p_menu, 0);        display_menu_cursor (p_menu, 0);
362        p_menu->item_cur_pos --;        do
363        while (!p_menu->items[p_menu->item_cur_pos]->display)        {
364          p_menu->item_cur_pos --;           p_menu->item_cur_pos --;
365        if (p_menu->item_cur_pos < 0)           if (p_menu->item_cur_pos < 0)
366          p_menu->item_cur_pos = p_menu->item_count - 1;             p_menu->item_cur_pos = p_menu->item_count - 1;
367        while (!p_menu->items[p_menu->item_cur_pos]->display)        } while (!p_menu->items[p_menu->item_cur_pos]->display);
         p_menu->item_cur_pos --;  
368        display_menu_cursor (p_menu, 1);        display_menu_cursor (p_menu, 1);
369        break;        break;
370      case KEY_DOWN:      case KEY_DOWN:
371        display_menu_cursor (p_menu, 0);        display_menu_cursor (p_menu, 0);
372        p_menu->item_cur_pos++;        do
373        while (!p_menu->items[p_menu->item_cur_pos]->display)        {
374          p_menu->item_cur_pos ++;          p_menu->item_cur_pos++;
375        if (p_menu->item_cur_pos >= p_menu->item_count)          if (p_menu->item_cur_pos >= p_menu->item_count)
376          p_menu->item_cur_pos = 0;            p_menu->item_cur_pos = 0;
377        while (!p_menu->items[p_menu->item_cur_pos]->display)        } while (!p_menu->items[p_menu->item_cur_pos]->display);
         p_menu->item_cur_pos ++;  
378        display_menu_cursor (p_menu, 1);        display_menu_cursor (p_menu, 1);
379        break;        break;
380      default:      default:


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

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