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

« back to all changes in this revision

Viewing changes to www/media/browser/editor.js

  • Committer: mattgiuca
  • Date: 2008-01-29 23:52:19 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:329
Converted Console from an "app" into a "plugin". It can now be plugged in to
any app.
Added "plugins" directory in www. Added "console" plugin. This contains all of
the functionality of what was previously the console app, but modularized so
it can be imported by another app.

apps/console: Removed most of the logic (moved to plugins/console). Replaced
with a simple import of the console plugin. Should behave exactly the same.
apps/tutorial: As proof of concept, imported the console plugin. It now
appears at the bottom of the page (yet to make it have "pop up" behaviour).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
function disable_save_if_safe()
2
 
{
3
 
    /* If this is defined, this engine supports change notification, so is able
4
 
     * to enable the button again. Disable it for them. */
5
 
    if(editbox.editor.addChangeHandler)
6
 
    {
7
 
        var savebutton = document.getElementById("save_button");
8
 
        savebutton.disabled = true;
9
 
    }
10
 
}
 
1
saved_status = null;
11
2
 
12
3
function save_file()
13
4
{
14
 
    var filename = document.getElementById("save_filename").value;
15
 
    data = editbox.getCode();
16
 
    /* Do NOT refresh the page contents (causes problems for editarea and is
17
 
     * unnecessary). */
18
 
    do_action("putfile", filename,
19
 
              {"path":".", "data":data, "overwrite":"true"},
20
 
              "multipart/form-data", true);
21
 
    disable_save_if_safe();
 
5
    filename = document.getElementById("save_filename").value;
 
6
    data = editAreaLoader.getValue("editbox");
 
7
    do_action("putfile", filename, {"path":".", "data":data});
 
8
    saved_status.data = "Saved.";
22
9
}
23
10
 
24
11
function edit_text()
25
12
{
26
 
    var savebutton = document.getElementById("save_button");
27
 
    savebutton.disabled = false;
 
13
    saved_status.data = "Not saved.";
28
14
}
29
15
 
30
 
/** Presents the "editor heading" inserting it into a given element at
31
 
 *  the front. Note that the save widget is handled by the Python.
 
16
/** Presents the text editor.
32
17
 */
33
 
function present_editorhead(elem, path, handler_type)
 
18
function handle_text(path, text, handler_type)
34
19
{
35
 
    var div = document.getElementById("actions2");
 
20
    /* Create a textarea with the text in it
 
21
     * (The makings of a primitive editor).
 
22
     */
 
23
 
 
24
    setmode(true);
 
25
    var files = document.getElementById("filesbody");
 
26
    var div = document.createElement("div");
 
27
    files.appendChild(div);
 
28
    div.setAttribute("class", "padding");
 
29
 
 
30
    /* Set up minimal interface */
 
31
    var p = dom_make_text_elem("p", "Path: ");
 
32
    var pathname = document.createElement("input");
 
33
    pathname.setAttribute("type", "text");
 
34
    pathname.setAttribute("size", "30");
 
35
    pathname.setAttribute("id", "save_filename");
 
36
    pathname.setAttribute("value", path);
 
37
    p.appendChild(pathname);
 
38
    var savebutton = document.createElement("input");
 
39
    savebutton.setAttribute("type", "button");
 
40
    savebutton.setAttribute("value", "Save");
 
41
    savebutton.setAttribute("onclick", "save_file()");
 
42
    p.appendChild(savebutton);
 
43
    var t = document.createTextNode(" ");
 
44
    p.appendChild(t);
 
45
    saved_status = document.createTextNode("Saved.");
 
46
    //p.appendChild(saved_status);
 
47
    div.appendChild(p);
36
48
 
37
49
    /* Print a warning message if this is not actually a text file.
38
50
     */
44
56
            "you save this file, you could corrupt it.");
45
57
        div.appendChild(warn);
46
58
    }
47
 
}
48
 
 
49
 
/** Presents the text editor.
50
 
 */
51
 
function handle_text(path, text, handler_type)
52
 
{
53
 
    /* Create a textarea with the text in it
54
 
     * (The makings of a primitive editor).
55
 
     */
56
 
    var files = document.getElementById("filesbody");
57
 
    /* Put our UI at the top */
58
 
    present_editorhead(files, path, handler_type);
59
 
 
60
 
    var div = document.createElement("div");
61
 
    div.style.height = '100%';
62
 
    files.appendChild(div);
63
59
    var txt_elem = dom_make_text_elem("textarea",
64
60
        text.toString())
65
61
    div.appendChild(txt_elem);
66
62
    txt_elem.setAttribute("id", "editbox");
67
 
    language = language_from_mime(current_file.type)
68
 
 
69
 
    // Assume plaintext if no type can be determined.
70
 
    txt_elem.className = "codepress " + (language ? language : 'text');
71
63
    txt_elem.setAttribute("onchange", "edit_text()");
72
64
    /* TODO: Make CSS height: 100% work */
73
65
    txt_elem.setAttribute("rows", "35");
74
 
    CodePress.run();
75
 
 
76
 
    /* And set a callback so we know that the editor iframe is loaded so we
77
 
     * can set a callback so we know when to enable the save button.
78
 
     * We also take this opportunity to disable the save button, if
79
 
     * the browser is likely to reenable it as needed. */
80
 
    editbox.onload = function() {editbox.addChangeHandler(edit_text);
81
 
                                 disable_save_if_safe(); };
82
 
}
83
 
 
84
 
function language_from_mime(mime)
85
 
{
86
 
    return {'text/x-python': 'python',
87
 
            'application/javascript': 'javascript',
88
 
            'text/css': 'css',
89
 
            'text/plain': 'text',
90
 
            'text/html': 'html',
91
 
            'application/xhtml+xml': 'html'}[mime];
92
 
}
 
66
 
 
67
    /* Load EditArea into the editbox */
 
68
    editAreaLoader.init({
 
69
        id : "editbox",
 
70
        syntax: "python",
 
71
        start_highlight: true
 
72
    });
 
73
}
 
74