42 using std::make_unique;
45 using std::unique_ptr;
83 EditorView::EditorView(
PopUps* popUps)
86 engine = Engine::getInstance();
99 for (
auto& event: Engine::getInstance()->getGUI()->getKeyboardEvents()) {
101 if (event.isProcessed() ==
true)
return;
104 if (Character::toLowerCase(event.getKeyChar()) ==
'z' && event.isControlDown() ==
true && event.isShiftDown() ==
true) {
105 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
107 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_REDO);
109 event.setProcessed(
true);
111 if (Character::toLowerCase(event.getKeyChar()) ==
'z' && event.isControlDown() ==
true) {
112 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
114 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_UNDO);
116 event.setProcessed(
true);
119 if (Character::toLowerCase(event.getKeyChar()) ==
'a' && event.isControlDown() ==
true) {
120 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
122 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_SELECTALL);
124 event.setProcessed(
true);
126 if (Character::toLowerCase(event.getKeyChar()) ==
'x' && event.isControlDown() ==
true) {
127 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
129 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_CUT);
131 event.setProcessed(
true);
133 if (Character::toLowerCase(event.getKeyChar()) ==
'c' && event.isControlDown() ==
true) {
134 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
136 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_COPY);
138 event.setProcessed(
true);
140 if (Character::toLowerCase(event.getKeyChar()) ==
'v' && event.isControlDown() ==
true) {
141 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
143 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_PASTE);
145 event.setProcessed(
true);
147 if (Character::toLowerCase(event.getKeyChar()) ==
'f' && event.isControlDown() ==
true) {
148 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
150 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_FINDREPLACE);
152 event.setProcessed(
true);
154 if (Character::toLowerCase(event.getKeyChar()) ==
's' && event.isControlDown() ==
true) {
155 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
157 if (selectedTab !=
nullptr) selectedTab->getTabView()->getTabController()->onCommand(TabController::COMMAND_SAVE);
159 event.setProcessed(
true);
161 if (Character::toLowerCase(event.getKeyChar()) ==
'w' && event.isControlDown() ==
true) {
162 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
166 event.setProcessed(
true);
168 if (event.getKeyChar() >=
'0' && event.getKeyChar() <=
'9' && event.isControlDown() ==
true) {
169 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
170 if (event.getKeyChar() ==
'0') {
176 event.setProcessed(
true);
179 switch (event.getKeyCode()) {
180 case GUIKeyboardEvent::KEYCODE_PAGE_UP:
181 if (event.isControlDown() ==
true) {
182 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
189 event.setProcessed(
true);
192 case GUIKeyboardEvent::KEYCODE_PAGE_DOWN:
193 if (event.isControlDown() ==
true) {
194 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
201 event.setProcessed(
true);
204 case GUIKeyboardEvent::KEYCODE_F4:
205 if (event.isControlDown() ==
true) {
206 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
210 event.setProcessed(
true);
213 case GUIKeyboardEvent::KEYCODE_F11:
214 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
217 event.setProcessed(
true);
219 case GUIKeyboardEvent::KEYCODE_F12:
220 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
222 if (FileSystem::getStandardFileSystem()->exists(
"./screenshots") ==
false) FileSystem::getStandardFileSystem()->createPath(
"./screenshots");
223 Engine::getInstance()->makeScreenshot(
"./screenshots",
"TDME2-Screenshot-" + StringTools::replace(Time::getAsString(),
':',
'-') +
".png");
225 Console::println(
"EditorView::handleInputEvents(): Could not create screenshot: " +
string(exception.what()));
228 event.setProcessed(
true);
237 if (tabView !=
nullptr) {
241 if (lastTabView !=
nullptr) lastTabView->getTabView()->deactivate();
242 tabView->getTabView()->activate();
245 if (tabView->getTabView()->getEngine() !=
nullptr) {
249 int left, top, width, height, offsetX, offsetY;
250 getViewPort(tabView->getFrameBufferNode(), left, top, width, height, offsetX, offsetY);
252 for (
auto event: Engine::getInstance()->getGUI()->getMouseEvents()) {
254 auto eventX = (
event.getXUnscaled() - left) / xScale + offsetX;
255 auto eventY = (
event.getYUnscaled() - top) / yScale + offsetY;
257 if (eventX < 0 || eventX >= width || eventY < 0 || eventY >= height) {
258 switch (event.getType()) {
259 case GUIMouseEvent::MOUSEEVENT_RELEASED:
260 case GUIMouseEvent::MOUSEEVENT_DRAGGED:
271 switch (event.getType()) {
272 case GUIMouseEvent::MOUSEEVENT_PRESSED:
275 case GUIMouseEvent::MOUSEEVENT_RELEASED:
284 event.setXUnscaled(eventX);
285 event.setYUnscaled(eventY);
286 tabView->getTabView()->getEngine()->getGUI()->getMouseEvents().push_back(event);
289 for (
auto& event: Engine::getInstance()->getGUI()->getKeyboardEvents()) {
290 tabView->getTabView()->getEngine()->getGUI()->getKeyboardEvents().push_back(event);
293 tabView->getTabView()->handleInputEvents();
295 for (
auto i = 0; i < Engine::getInstance()->getGUI()->getKeyboardEvents().size(); i++) {
296 auto& srcEvent = Engine::getInstance()->getGUI()->getKeyboardEvents()[i];
297 const auto& dstEvent = tabView->getTabView()->getEngine()->getGUI()->getKeyboardEvents()[i];
298 if (dstEvent.isProcessed() ==
true) srcEvent.setProcessed(
true);
301 tabView->getTabView()->getEngine()->getGUI()->getMouseEvents().clear();
302 tabView->getTabView()->getEngine()->getGUI()->getKeyboardEvents().clear();
309 if (lastTabView !=
nullptr) lastTabView->getTabView()->deactivate();
317 if (tabView !=
nullptr) {
320 int left, top, width, height, offsetX, offsetY;
321 getViewPort(tabView->getFrameBufferNode()->getParentNode(), left, top, width, height, offsetX, offsetY);
324 auto reshaped =
false;
325 if (tabView->getTabView()->hasFixedSize() ==
false &&
326 tabView->getTabView()->getEngine() !=
nullptr &&
327 (tabView->getTabView()->getEngine()->getWidth() != width || tabView->getTabView()->getEngine()->getHeight() != height)) {
328 tabView->getTabView()->getEngine()->reshape(width, height);
331 if (tabView->getTabView()->getEngine() !=
nullptr) {
332 tabView->getFrameBufferNode()->setFrameBuffer(tabView->getTabView()->getEngine()->getFrameBuffer());
334 tabView->getTabView()->display();
335 if (reshaped ==
true) {
340 Audio::getInstance()->update();
355 Console::println(
"EditorView::initialize(): An error occurred: " +
string(exception.what()));
387 Engine::getInstance()->reset();
410 if (tabView !=
nullptr) {
411 TabView::OutlinerState outlinerState;
413 tabView->getTabView()->reloadOutliner();
414 if (newSelectionValue.empty() ==
false) outlinerState.value = newSelectionValue;
422 if (currentTab ==
nullptr)
return false;
423 getViewPort(currentTab->getFrameBufferNode(), left, top, width, height, offsetX, offsetY);
431 left =
static_cast<int>(
static_cast<float>(left) * xScale);
432 top =
static_cast<int>(
static_cast<float>(top) * yScale);
433 width =
static_cast<int>(
static_cast<float>(width) * xScale);
434 height =
static_cast<int>(
static_cast<float>(height) * yScale);
440 int left, top, width, height, offsetX, offsetY;
443 auto xScale =
static_cast<float>(Engine::getInstance()->getWidth()) /
static_cast<float>(screenNode->
getScreenWidth());
444 auto yScale =
static_cast<float>(Engine::getInstance()->getHeight()) /
static_cast<float>(screenNode->
getScreenHeight());
446 tooltipLeft = left + mouseX * xScale - offsetX * xScale;
447 tooltipTop = top + mouseY * yScale - offsetY * yScale;
Interface to audio module.
void setPartition(Partition *partition)
Set partition.
void reset()
Removes all entities and caches.
Bogus/Simple partition implementation.
void addRenderScreen(const string &screenId, int screenIdx=-1)
Add render screen.
void addScreen(const string &id, GUIScreenNode *screen)
Add screen.
void resetRenderScreens()
Reset render screens.
float computeParentChildrenRenderOffsetXTotal()
float computeParentChildrenRenderOffsetYTotal()
GUI screen node that represents a screen that can be rendered via GUI system.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
File system singleton class.
std::exception Exception
Exception base class.