/* treewm - an X11 window manager.
 * Copyright (c) 2001-2002 Thomas Jäger <TheHunter2000 at web dot de>
 * This code is released under the terms of the GNU GPL.
 * See the included file LICENSE for details.
 */

#include "menuinfo.h"
#include "action.h"

struct MenuItemList {
  MenuItem mi;
  MenuItemList *next;
};

MenuInfo::MenuInfo(Section *section) {
  s = section;
}

void MenuInfo::Init() {
  n = 0;
  MenuItemList *actions=0,*last=0;
  for (Entry *e=s->fe;e;e=e->next)
    if (e->tag) {
      // lower(e->value); // why? (RP)
      if (last) {
        last->next = new MenuItemList;
        last = last->next;
      } else {
        actions = new MenuItemList;
        last = actions;
      }
      last->mi.text = strdup(e->tag);
      last->mi.key = strdup(e->value);
      last->mi.client = 0;
      last->mi.flags = 0;
      last->mi.submenu = 0;
      last->next = 0;
      ++n;
    }
  if (!n) {
    menu = 0;
    return;
  }
  menu = new MenuItem[n];
  int k=0;
  while (actions) {
    menu[k] = actions->mi;
    last = actions;
    actions = actions->next;
    delete last;
    ++k;
  }
}

MenuInfo::~MenuInfo() {
  for (int i=0; i!=n; ++i) {
    free(menu[i].text);
    free(menu[i].key);
  }
  if (menu)
    delete [] menu;
}


syntax highlighted by Code2HTML, v. 0.9.1