~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/console/media/console.js

  • Committer: William Grant
  • Date: 2009-07-05 07:54:29 UTC
  • mto: (1294.4.2 ui-the-third)
  • mto: This revision was merged to the branch mainline in revision 1353.
  • Revision ID: grantw@unimelb.edu.au-20090705075429-qyh9midyp0v73gnv
Add export details for the breadcrumb chevron SVG.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
 
37
37
interrupted = false;
38
38
 
39
 
 
40
 
function get_console_start_directory()
41
 
{
42
 
    if((typeof(current_path) != 'undefined') && current_file)
43
 
    {
44
 
        // We have a current_path - give a suggestion to the server
45
 
        var path;
46
 
        if (current_file.isdir)
47
 
        {
48
 
            // Browser
49
 
            return path_join("/home", current_path);
50
 
        }
51
 
        else
52
 
        {
53
 
            // Editor - need to chop off filename
54
 
            var tmp_path = current_path.split('/');
55
 
            tmp_path.pop();
56
 
            return path_join("/home", tmp_path.join('/'));
57
 
        }
58
 
    }
59
 
    else
60
 
    {
61
 
        // No current_path - let the server decide
62
 
        return '';
63
 
    }
64
 
}
65
 
 
66
39
/* Starts the console server, if it isn't already.
67
40
 * This can be called any number of times - it only starts the one server.
68
41
 * Note that this is asynchronous. It will return after signalling to start
85
58
    var callback1 = function(xhr)
86
59
        {
87
60
            var json_text = xhr.responseText;
88
 
            try
89
 
            {
90
 
                server_key = JSON.parse(json_text).key;
91
 
                server_started = true;
92
 
                var args = {
93
 
                    "ivle.op": "chat", "kind": "splash", "key": server_key
94
 
                };
95
 
                var callback2 = function(xhr)
96
 
                {
97
 
                    console_response(null, null, xhr.responseText);
98
 
                    if (callback != null)
99
 
                        callback();
100
 
                };
101
 
                ajax_call(callback2, "console", "service", args, "POST");
102
 
            }
103
 
            catch (e)
104
 
            {
105
 
                alert("An error occured when starting the IVLE console. " +
106
 
                    "Please refresh the page and try again.\n" +
107
 
                    "Details have been logged for further examination.")
108
 
            }
 
61
            server_key = JSON.parse(json_text).key;
 
62
            server_started = true;
 
63
            if (callback != null)
 
64
                callback();
109
65
        }
110
66
 
111
 
    ajax_call(
112
 
        callback1, "console", "service",
113
 
        {"ivle.op": "start", "cwd": get_console_start_directory()}, 
114
 
        "POST");
 
67
    //var current_path;
 
68
    if((typeof(current_path) != 'undefined') && current_file)
 
69
    {
 
70
        // We have a current_path - give a suggestion to the server
 
71
        var path;
 
72
        if (current_file.isdir)
 
73
        {
 
74
            // Browser
 
75
            path = path_join("/home", current_path);
 
76
        }
 
77
        else
 
78
        {
 
79
            // Editor - need to chop off filename
 
80
            var tmp_path = current_path.split('/');
 
81
            tmp_path.pop();
 
82
            path = path_join("/home", tmp_path.join('/'));
 
83
        }
 
84
        ajax_call(callback1, "console", "service", {"ivle.op": "start", "cwd": path}, "POST");
 
85
    }
 
86
    else
 
87
    {
 
88
        // No current_path - let the server decide
 
89
        ajax_call(callback1, "console", "service", {"ivle.op": "start"}, "POST");
 
90
    }
115
91
}
116
92
 
117
93
/** Initialises the console. All apps which import console are required to
141
117
function console_minimize()
142
118
{
143
119
    if (!windowpane_mode) return;
144
 
    console_body.setAttribute("class", "console_body windowpane minimal");
 
120
    console_body.setAttribute("class", "windowpane minimal");
145
121
    console_filler.setAttribute("class", "windowpane minimal");
146
122
}
147
123
 
150
126
function console_maximize()
151
127
{
152
128
    if (!windowpane_mode) return;
153
 
    console_body.setAttribute("class", "console_body windowpane maximal");
 
129
    console_body.setAttribute("class", "windowpane maximal");
154
130
    console_filler.setAttribute("class", "windowpane maximal");
155
131
}
156
132
 
303
279
        span.appendChild(document.createTextNode(inputline));
304
280
        output.appendChild(span);
305
281
    }
306
 
    var args = {
307
 
        "ivle.op": "chat", "kind": which, "key": server_key,
308
 
        "text": inputline, "cwd": get_console_start_directory()
309
 
        };
 
282
    var args = {"ivle.op": "chat", "kind": which, "key": server_key, "text":inputline};
310
283
    var callback = function(xhr)
311
284
        {
312
285
            console_response(inputbox, inputline, xhr.responseText);
383
356
        {
384
357
            var kind = "chat";
385
358
        }
386
 
        var args = {
387
 
            "ivle.op": "chat", "kind": kind, "key": server_key,
388
 
            "text": '', "cwd": get_console_start_directory()
389
 
            };
 
359
        var args = {"ivle.op": "chat", "kind": kind, "key": server_key, "text":''};
390
360
        ajax_call(callback, "console", "service", args, "POST");
391
361
 
392
362
        // Open up the console so we can see the output
399
369
        // Return early, so we don't re-enable the input box.
400
370
        return;
401
371
    }
402
 
    else if (res.hasOwnProperty('input'))
403
 
    {
404
 
        set_prompt("+++");
405
 
    }
406
372
    else
407
373
    {
408
 
        alert("An internal error occurred in the python console.");
409
 
        return;
 
374
        // assert res.hasOwnProperty('input')
 
375
        set_prompt("...");
410
376
    }
411
377
 
412
378
    if (inputbox != null)
468
434
            hist.submit(inp.value);
469
435
            inp.value = hist.curr();
470
436
        }
471
 
 
472
 
        /* Disable the text box. This will be redone by
473
 
         * console_enter_line, but we do it here too in case start_server
474
 
         * takes a while.
475
 
         */
476
 
        inp.setAttribute("disabled", "disabled");
477
437
        /* Start the server if it hasn't already been started */
478
438
        start_server(callback);
479
439
        break;
480
440
    case 38:                /* Up arrow */
481
441
        hist.up(inp.value);
482
442
        inp.value = hist.curr();
483
 
        /* Inhibit further responses to this event, or WebKit moves the
484
 
         * cursor to the start. */
485
 
        return false;
486
443
        break;
487
444
    case 40:                /* Down arrow */
488
445
        hist.down(inp.value);
489
446
        inp.value = hist.curr();
490
 
        return false;
491
447
        break;
492
448
    }
493
449
}
507
463
    }
508
464
    else
509
465
    {
510
 
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key, "cwd": get_console_start_directory()}, "POST");
 
466
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key}, "POST");
511
467
        console_response(null, null, xhr.responseText);
512
468
    }
513
469
}