src/scripttools/debugging/scripts/commands/up.qs
changeset 0 1918ee327afb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/scripttools/debugging/scripts/commands/up.qs	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,37 @@
+name = "up";
+
+group = "stack";
+
+shortDescription = "Select and print the stack frame above the current one";
+
+longDescription = "";
+
+seeAlso = [ "down", "frame" ];
+
+function execute() {
+    scheduleGetContextCount();
+    state = 1;
+}
+
+function handleResponse(resp) {
+    if (state == 1) {
+        var count = resp.result;
+        var idx = getCurrentFrameIndex() + 1;
+        if (idx == count) {
+            warning("Already at top (outermost) frame.");
+            return;
+        }
+        setCurrentFrameIndex(idx);
+        scheduleGetContextInfo(idx);
+        state = 2;
+    } else if (state == 2) {
+        var info = resp.result;
+        setCurrentScriptId(info.scriptId);
+        setCurrentLineNumber(info.lineNumber);
+        scheduleGetBacktrace();
+        state = 3;
+    } else if (state == 3) {
+        var backtrace = resp.result;
+        message("#" + getCurrentFrameIndex() + "  " + backtrace[getCurrentFrameIndex()]);
+    }
+}