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

« back to all changes in this revision

Viewing changes to www/media/console/console.js

  • Committer: me at id
  • Date: 2009-01-14 23:21:43 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1140
ivle.conf, ivle.dispatch: Redo some of Nick's changes made between the
    creation of the 'setup-refactor' branch and its merging into trunk.

svn merge support is absolutely awful and decided to clobber those
    changes without bothering to tell anybody. Thankyou Subversion.

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
91
64
                callback();
92
65
        }
93
66
 
94
 
    ajax_call(
95
 
        callback1, "console", "service",
96
 
        {"ivle.op": "start", "cwd": get_console_start_directory()}, 
97
 
        "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, "consoleservice", "start", {"startdir": path}, "POST");
 
85
    }
 
86
    else
 
87
    {
 
88
        // No current_path - let the server decide
 
89
        ajax_call(callback1, "consoleservice", "start", {}, "POST");
 
90
    }
98
91
}
99
92
 
100
93
/** Initialises the console. All apps which import console are required to
261
254
 
262
255
    if (typeof(inputbox) == "string")
263
256
    {
264
 
        var inputline = inputbox + "\n";
 
257
        var inputline = inputbox;
265
258
        inputbox = null;
 
259
        var graytimer = null;
266
260
    }
267
261
    else
268
262
    {
269
 
        /* Disable the text box */
270
 
        inputbox.setAttribute("disabled", "disabled");
271
 
 
 
263
        GLOBAL_inputbox = inputbox;     /* For timer */
272
264
        var inputline = inputbox.value + "\n";
 
265
        var graytimer = setTimeout("GLOBAL_inputbox.setAttribute(\"class\", "
 
266
            + "\"disabled\");", 100);
273
267
    }
274
268
    var output = document.getElementById("console_output");
275
269
    {
277
271
        var span = document.createElement("span");
278
272
        span.setAttribute("class", "inputPrompt");
279
273
        span.appendChild(document.createTextNode(
280
 
              document.getElementById("console_prompt").firstChild.nodeValue)
 
274
              document.getElementById("console_prompt").firstChild.textContent)
281
275
                        );
282
276
        output.appendChild(span);
283
277
        // Print input line itself in a span
286
280
        span.appendChild(document.createTextNode(inputline));
287
281
        output.appendChild(span);
288
282
    }
289
 
    var args = {
290
 
        "ivle.op": "chat", "kind": which, "key": server_key,
291
 
        "text": inputline, "cwd": get_console_start_directory()
292
 
        };
 
283
    var args = {"key": server_key, "text":inputline};
293
284
    var callback = function(xhr)
294
285
        {
295
 
            console_response(inputbox, inputline, xhr.responseText);
 
286
            console_response(inputbox, graytimer, inputline, xhr.responseText);
296
287
        }
297
 
    ajax_call(callback, "console", "service", args, "POST");
 
288
    /* Disable the text box */
 
289
    if (inputbox != null)
 
290
        inputbox.setAttribute("disabled", "disabled");
 
291
    ajax_call(callback, "consoleservice", which, args, "POST");
298
292
}
299
293
 
300
 
function console_response(inputbox, inputline, responseText)
 
294
function console_response(inputbox, graytimer, inputline, responseText)
301
295
{
302
296
    try
303
297
    {
356
350
        }
357
351
        var callback = function(xhr)
358
352
            {
359
 
                console_response(inputbox, null, xhr.responseText);
 
353
                console_response(inputbox, graytimer,
 
354
                                 null, xhr.responseText);
360
355
            }
361
356
        if (interrupted)
362
357
        {
366
361
        {
367
362
            var kind = "chat";
368
363
        }
369
 
        var args = {
370
 
            "ivle.op": "chat", "kind": kind, "key": server_key,
371
 
            "text": '', "cwd": get_console_start_directory()
372
 
            };
373
 
        ajax_call(callback, "console", "service", args, "POST");
 
364
        var args = {"key": server_key, "text":''};
 
365
        ajax_call(callback, "consoleservice", kind, args, "POST");
374
366
 
375
367
        // Open up the console so we can see the output
376
368
        // FIXME: do we need to maximize here?
391
383
    if (inputbox != null)
392
384
    {
393
385
        /* Re-enable the text box */
 
386
        clearTimeout(graytimer);
394
387
        inputbox.removeAttribute("disabled");
 
388
        inputbox.removeAttribute("class");
395
389
        interrupted = false;
396
390
    }
397
391
 
447
441
            hist.submit(inp.value);
448
442
            inp.value = hist.curr();
449
443
        }
450
 
 
451
 
        /* Disable the text box. This will be redone by
452
 
         * console_enter_line, but we do it here too in case start_server
453
 
         * takes a while.
454
 
         */
455
 
        inp.setAttribute("disabled", "disabled");
456
444
        /* Start the server if it hasn't already been started */
457
445
        start_server(callback);
458
446
        break;
459
447
    case 38:                /* Up arrow */
460
448
        hist.up(inp.value);
461
449
        inp.value = hist.curr();
462
 
        /* Inhibit further responses to this event, or WebKit moves the
463
 
         * cursor to the start. */
464
 
        return false;
465
450
        break;
466
451
    case 40:                /* Down arrow */
467
452
        hist.down(inp.value);
468
453
        inp.value = hist.curr();
469
 
        return false;
470
454
        break;
471
455
    }
472
456
}
486
470
    }
487
471
    else
488
472
    {
489
 
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key, "cwd": get_console_start_directory()}, "POST");
490
 
        console_response(null, null, xhr.responseText);
 
473
        xhr = ajax_call(null, "consoleservice", "restart", {"key": server_key}, "POST");
 
474
        console_response(null, null, null, xhr.responseText);
491
475
    }
492
476
}
493
477