Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Menu::build(string menuTree) {
- deleteAllItems();
- string temp;
- if (menuTree.length() > 0) {
- if (menuTree[0] == '(') {
- for (int i = 1; menuTree[i] != ';'; i++) {
- temp += menuTree[i];
- }
- vector<string> menuProp = splitString(temp, ',');
- if (menuProp.size() == 2) {
- this->s_name = menuProp[0];
- this->s_command = menuProp[1];
- string cuttedMenuTree = menuTree.substr(temp.length()+2);
- buildMenu(cuttedMenuTree);
- mapAllCommands();
- }
- }
- }
- }
- void Menu::mapAllCommands() {
- for (int i = 0; i < this->menuItems.size(); i++) {
- actions.insert(pair<string, MenuItem*>(menuItems[i]->getCommand(), menuItems[i]));
- if (menuItems[i]->getType() == TYPE_MENU) {
- Menu* submenu = (Menu*)menuItems[i];
- submenu->mapAllCommands();
- }
- }
- }
- void Menu::buildMenu(string& menuTree)
- {
- menuTree = trim(menuTree);
- if (menuTree[0] == '(') {
- string temp;
- for (int i = 1; menuTree[i] != ';'; i++) {
- temp += menuTree[i];
- }
- vector<string> menuProp = splitString(temp, ',');
- if (menuProp.size() == 2) {
- Menu* menu = new Menu(trim(menuProp[0]), trim(menuProp[1]));
- this->menuItems.push_back(menu);
- menuTree = menuTree.substr(temp.length() + 2);
- menu->buildMenu(menuTree);
- menuTree = menuTree.substr(1);
- }
- }
- if (menuTree[0] == '[') {
- string temp;
- for (int i = 1; menuTree[i] != ']'; i++) {
- temp += menuTree[i];
- }
- vector<string> menuProp = splitString(temp, ',');
- if (menuProp.size() == 3) {
- MenuCommand* menuCommand = new MenuCommand(trim(menuProp[0]), trim(menuProp[1]), trim(menuProp[2]));
- this->menuItems.push_back(menuCommand);
- menuTree = menuTree.substr(temp.length()+2);
- if (menuTree[0] == ',') {
- menuTree = menuTree.substr(1);
- this->buildMenu(menuTree);
- }
- else if (menuTree[0] == ')') {
- // do nothing
- }
- }
- }
- if (menuTree[0] == ',') {
- menuTree = menuTree.substr(1);
- this->buildMenu(menuTree);
- }
- if (menuTree[0] == ')') {
- // do nothing
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement