Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. void Menu::build(string menuTree) {
  2.     deleteAllItems();
  3.  
  4.     string temp;
  5.     if (menuTree.length() > 0) {
  6.         if (menuTree[0] == '(') {
  7.             for (int i = 1; menuTree[i] != ';'; i++) {
  8.                     temp += menuTree[i];
  9.             }
  10.             vector<string> menuProp = splitString(temp, ',');
  11.             if (menuProp.size() == 2) {
  12.                 this->s_name = menuProp[0];
  13.                 this->s_command = menuProp[1];
  14.                 string cuttedMenuTree = menuTree.substr(temp.length()+2);
  15.                 buildMenu(cuttedMenuTree);
  16.                 mapAllCommands();
  17.             }
  18.         }
  19.     }
  20. }
  21.  
  22. void Menu::mapAllCommands() {
  23.     for (int i = 0; i < this->menuItems.size(); i++) {
  24.         actions.insert(pair<string, MenuItem*>(menuItems[i]->getCommand(), menuItems[i]));
  25.         if (menuItems[i]->getType() == TYPE_MENU) {
  26.             Menu* submenu = (Menu*)menuItems[i];
  27.             submenu->mapAllCommands();
  28.         }
  29.     }
  30. }
  31.  
  32. void Menu::buildMenu(string& menuTree)
  33. {
  34.    
  35.     menuTree = trim(menuTree);
  36.    
  37.     if (menuTree[0] == '(') {
  38.         string temp;
  39.         for (int i = 1; menuTree[i] != ';'; i++) {
  40.             temp += menuTree[i];
  41.         }
  42.         vector<string> menuProp = splitString(temp, ',');
  43.         if (menuProp.size() == 2) {
  44.             Menu* menu = new Menu(trim(menuProp[0]), trim(menuProp[1]));
  45.             this->menuItems.push_back(menu);
  46.             menuTree = menuTree.substr(temp.length() + 2);
  47.             menu->buildMenu(menuTree);
  48.  
  49.             menuTree = menuTree.substr(1);
  50.  
  51.         }
  52.     }
  53.  
  54.     if (menuTree[0] == '[') {
  55.         string temp;
  56.         for (int i = 1; menuTree[i] != ']'; i++) {
  57.             temp += menuTree[i];
  58.         }
  59.         vector<string> menuProp = splitString(temp, ',');
  60.         if (menuProp.size() == 3) {
  61.             MenuCommand* menuCommand = new MenuCommand(trim(menuProp[0]), trim(menuProp[1]), trim(menuProp[2]));
  62.             this->menuItems.push_back(menuCommand);
  63.            
  64.             menuTree = menuTree.substr(temp.length()+2);
  65.            
  66.             if (menuTree[0] == ',') {
  67.                 menuTree = menuTree.substr(1);
  68.                 this->buildMenu(menuTree);
  69.             }
  70.             else if (menuTree[0] == ')') {
  71.                 // do nothing
  72.             }
  73.         }
  74.  
  75.        
  76.     }
  77.     if (menuTree[0] == ',') {
  78.         menuTree = menuTree.substr(1);
  79.         this->buildMenu(menuTree);
  80.     }
  81.    
  82.     if (menuTree[0] == ')') {
  83.         // do nothing
  84.        
  85.     }
  86.    
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement