src/scripttools/debugging/scripts/commands/frame.qs
changeset 0 1918ee327afb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/scripttools/debugging/scripts/commands/frame.qs	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,36 @@
+name = "frame";
+
+group = "stack";
+
+shortDescription = "Select and print a stack frame";
+
+longDescription = "";
+
+aliases = [ "f" ];
+
+function execute() {
+    if (arguments.length == 0)
+        requestedFrameIndex = getCurrentFrameIndex();
+    else
+        requestedFrameIndex = parseInt(arguments[0]);
+    scheduleGetContextInfo(requestedFrameIndex);
+    state = 1;
+};
+
+function handleResponse(resp, id) {
+    if (state == 1) {
+        var info = resp.result;
+        if (info == undefined) {
+            message("Frame index out of range.");
+            return;
+        }
+        setCurrentFrameIndex(requestedFrameIndex);
+        setCurrentScriptId(info.scriptId);
+        setCurrentLineNumber(info.lineNumber);
+        scheduleGetBacktrace();
+        state = 2;
+    } else if (state == 2) {
+        var backtrace = resp.result;
+        message("#" + getCurrentFrameIndex() + "  " + backtrace[getCurrentFrameIndex()]);
+    }
+}