WAGE: Implement Cut and Clear actions

This commit is contained in:
Eugene Sandulenko
2016-02-14 17:13:06 +01:00
parent 1b27abafdc
commit 5cea5a4d3a
4 changed files with 55 additions and 2 deletions
+43
View File
@@ -348,6 +348,49 @@ void Gui::actionUndo() {
_menu->enableCommand(kMenuEdit, kMenuActionUndo, false);
}
void Gui::actionClear() {
int startPos = _selectionStartX;
int endPos = _selectionEndX;
if (startPos > endPos)
SWAP(startPos, endPos);
Common::String beg(_lines[_selectionStartY].c_str(), &_lines[_selectionStartY].c_str()[startPos]);
Common::String end(&_lines[_selectionStartY].c_str()[endPos]);
_undobuffer = _engine->_inputText;
_engine->_inputText = beg + end;
drawInput();
_menu->enableCommand(kMenuEdit, kMenuActionUndo, true);
_selectionStartY = -1;
_selectionEndY = -1;
}
void Gui::actionCut() {
int startPos = _selectionStartX;
int endPos = _selectionEndX;
if (startPos > endPos)
SWAP(startPos, endPos);
Common::String beg(_lines[_selectionStartY].c_str(), &_lines[_selectionStartY].c_str()[startPos]);
Common::String mid(&_lines[_selectionStartY].c_str()[startPos], &_lines[_selectionStartY].c_str()[endPos]);
Common::String end(&_lines[_selectionStartY].c_str()[endPos]);
_undobuffer = _engine->_inputText;
_engine->_inputText = beg + end;
_clipboard = mid;
drawInput();
_menu->enableCommand(kMenuEdit, kMenuActionUndo, true);
_menu->enableCommand(kMenuEdit, kMenuActionPaste, true);
_selectionStartY = -1;
_selectionEndY = -1;
}
void Gui::disableUndo() {
_menu->enableCommand(kMenuEdit, kMenuActionUndo, false);
}
+8
View File
@@ -485,6 +485,14 @@ Designed *Gui::mouseUp(int x, int y) {
_menu->enableCommand(kMenuEdit, kMenuActionCopy, false);
} else {
_menu->enableCommand(kMenuEdit, kMenuActionCopy, true);
bool cutAllowed = false;
if (_selectionStartY == _selectionEndY && _selectionStartY == _lines.size() - 1)
cutAllowed = true;
_menu->enableCommand(kMenuEdit, kMenuActionCut, cutAllowed);
_menu->enableCommand(kMenuEdit, kMenuActionClear, cutAllowed);
}
}
+2
View File
@@ -107,6 +107,8 @@ public:
void actionCopy();
void actionPaste();
void actionUndo();
void actionClear();
void actionCut();
void disableUndo();
private:
+2 -2
View File
@@ -519,7 +519,7 @@ void Menu::executeCommand(MenuSubItem *subitem) {
_gui->actionUndo();
break;
case kMenuActionCut:
warning("STUB: Unhandled shortcut");
_gui->actionCut();
break;
case kMenuActionCopy:
_gui->actionCopy();
@@ -528,7 +528,7 @@ void Menu::executeCommand(MenuSubItem *subitem) {
_gui->actionPaste();
break;
case kMenuActionClear:
warning("STUB: Unhandled shortcut");
_gui->actionClear();
break;
case kMenuActionCommand: