Bladeren bron

Merge pull request #335 from rsredsq/RED-EDITOR-330

Shortcuts like Save File, Close File, Run, Build, now works
JoshEngebretson 10 jaren geleden
bovenliggende
commit
dec11569bb

+ 45 - 3
Script/AtomicEditor/ui/Shortcuts.ts

@@ -51,12 +51,48 @@ class Shortcuts extends Atomic.ScriptObject {
         this.sendEvent(EditorEvents.SaveResource);
     }
 
+    invokeUndo() {
+        this.invokeResourceFrameShortcut("undo");
+    }
+
+    invokeRedo() {
+        this.invokeResourceFrameShortcut("redo");
+    }
+
+    invokeCut() {
+        this.invokeResourceFrameShortcut("cut");
+    }
+
+    invokeCopy() {
+        this.invokeResourceFrameShortcut("copy");
+    }
+
+    invokePaste() {
+        this.invokeResourceFrameShortcut("paste");
+    }
+
+    invokeSelectAll() {
+        this.invokeResourceFrameShortcut("selectall");
+    }
+
+    invokeResourceFrameShortcut(shortcut:string) {
+        if (!ToolCore.toolSystem.project) return;
+        var resourceFrame = EditorUI.getMainFrame().resourceframe.currentResourceEditor;
+        if(resourceFrame) {
+            resourceFrame.invokeShortcut(shortcut);
+        }
+    }
 
     // global shortcut handler
     handleUIShortcut(ev: Atomic.UIShortcutEvent) {
+        var cmdKey;
+        if(Atomic.platform == "MacOSX") {
+            cmdKey = (Atomic.input.getKeyDown(Atomic.KEY_LGUI) || Atomic.input.getKeyDown(Atomic.KEY_RGUI));
+        } else {
+            cmdKey = (Atomic.input.getKeyDown(Atomic.KEY_LCTRL) || Atomic.input.getKeyDown(Atomic.KEY_RCTRL));
+        }
 
-        // global shortcuts without qualifiers
-        if (!ev.qualifiers) {
+        if (cmdKey) {
 
             if (ev.key == Atomic.KEY_S) {
                 this.invokeFileSave();
@@ -67,9 +103,15 @@ class Shortcuts extends Atomic.ScriptObject {
             else if (ev.key == Atomic.KEY_I) {
                 this.invokeFormatCode();
             }
-
             else if (ev.key == Atomic.KEY_P) {
                 this.invokePlay();
+            //if shift is pressed
+            } else if (ev.qualifiers & Atomic.QUAL_SHIFT) {
+                if (ev.key == Atomic.KEY_B) {
+                    EditorUI.getModelOps().showBuildSettings();
+                }
+            } else if (ev.key == Atomic.KEY_B) {
+                EditorUI.getModelOps().showBuild();
             }
 
         }

+ 33 - 3
Script/AtomicEditor/ui/frames/menus/MainFrameMenu.ts

@@ -5,9 +5,9 @@
 // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
 //
 
-import strings = require("ui/EditorStrings");
-import EditorEvents = require("editor/EditorEvents");
-import EditorUI = require("ui/EditorUI");
+import strings = require("../../EditorStrings");
+import EditorEvents = require("../../../editor/EditorEvents");
+import EditorUI = require("../../EditorUI");
 import MenuItemSources = require("./MenuItemSources");
 
 class MainFrameMenu extends Atomic.ScriptObject {
@@ -63,6 +63,36 @@ class MainFrameMenu extends Atomic.ScriptObject {
                 return true;
             }
 
+            if (refid == "edit undo") {
+                EditorUI.getShortcuts().invokeUndo();
+                return true;
+            }
+
+            if (refid == "edit redo") {
+                EditorUI.getShortcuts().invokeRedo();
+                return true;
+            }
+
+            if (refid == "edit cut") {
+                EditorUI.getShortcuts().invokeCut();
+                return true;
+            }
+
+            if (refid == "edit copy") {
+                EditorUI.getShortcuts().invokeCopy();
+                return true;
+            }
+
+            if (refid == "edit paste") {
+                EditorUI.getShortcuts().invokePaste();
+                return true;
+            }
+
+            if (refid == "edit select all") {
+                EditorUI.getShortcuts().invokeSelectAll();
+                return true;
+            }
+
             return false;
 
         } else if (target.id == "menu file popup") {

+ 7 - 0
Source/Atomic/UI/UIWidget.cpp

@@ -720,5 +720,12 @@ void UIWidget::InvalidateLayout()
 
 }
 
+void UIWidget::InvokeShortcut(const String& shortcut)
+{
+    TBWidgetEvent ev(EVENT_TYPE_SHORTCUT);
+    ev.ref_id = TBIDC(shortcut.CString());
+    widget_->OnEvent(ev);
+}
+
 
 }

+ 2 - 0
Source/Atomic/UI/UIWidget.h

@@ -247,6 +247,8 @@ class UIWidget : public Object, public tb::TBWidgetDelegate
 
     bool GetCapturing() { return widget_->GetCapturing(); }
 
+    void InvokeShortcut(const String& shortcut);
+
 protected:
 
     void ConvertEvent(UIWidget* handler, UIWidget* target, const tb::TBWidgetEvent &ev, VariantMap& data);

+ 7 - 0
Source/AtomicEditor/Editors/ResourceEditor.cpp

@@ -125,4 +125,11 @@ void ResourceEditor::Close(bool navigateToAvailableResource)
     SendEvent("EditorCloseResource", data);
 }
 
+void ResourceEditor::InvokeShortcut(const String& shortcut)
+{
+    TBWidgetEvent ev(EVENT_TYPE_SHORTCUT);
+    ev.ref_id = TBIDC(shortcut.CString());
+    OnEvent(ev);
+}
+
 }

+ 2 - 0
Source/AtomicEditor/Editors/ResourceEditor.h

@@ -50,6 +50,8 @@ public:
 
     UIWidget* GetRootContentWidget() { return rootContentWidget_; }
 
+    void InvokeShortcut(const String& shortcut);
+
 protected:
 
     String fullpath_;