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

« back to all changes in this revision

Viewing changes to console/console.js

  • Committer: William Grant
  • Date: 2012-06-28 01:52:02 UTC
  • Revision ID: me@williamgrant.id.au-20120628015202-f6ru7o367gt6nvgz
Hah

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
var magic = 'xyzzy';
2
 
 
3
 
function historyUp()
4
 
{
5
 
    if (this.cursor >= 0)
6
 
    {
7
 
        this.cursor--;
8
 
    }
9
 
}
10
 
 
11
 
function historyDown()
12
 
{
13
 
    if (this.cursor < this.items.length)
14
 
    {
15
 
        this.cursor++;
16
 
    }
17
 
}
18
 
 
19
 
function historyCurr()
20
 
{
21
 
    if (this.cursor < 0 || this.cursor >= this.items.length)
22
 
    {
23
 
        return "";
24
 
    }
25
 
    return this.items[this.cursor];
26
 
}
27
 
 
28
 
function historyAdd(text)
29
 
{
30
 
    this.items[this.items.length] = text;
31
 
    this.cursor = this.items.length
32
 
}
33
 
 
34
 
function historyShow()
35
 
{
36
 
    var res = "";
37
 
    if (this.cursor == -1)
38
 
    {
39
 
        res += "[]";
40
 
    }
41
 
    for (var i = 0; i < this.items.length; i++)
42
 
    {
43
 
        if (i == this.cursor)
44
 
        {
45
 
            res += "["
46
 
        }
47
 
        res += this.items[i].toString();
48
 
        if (i == this.cursor)
49
 
        {
50
 
            res += "]"
51
 
        }
52
 
        res += " "
53
 
    }
54
 
    if (this.cursor == this.items.length)
55
 
    {
56
 
        res += "[]";
57
 
    }
58
 
    return res;
59
 
}
60
 
 
61
 
function History()
62
 
{
63
 
    this.items = new Array();
64
 
    this.cursor = -1;
65
 
    this.up = historyUp;
66
 
    this.down = historyDown;
67
 
    this.curr = historyCurr;
68
 
    this.add = historyAdd;
69
 
    this.show = historyShow;
70
 
}
71
 
 
72
 
var hist = new History();
73
 
 
74
 
function make_query_string(pagename, args)
75
 
{
76
 
    var first = true;
77
 
    var qs = pagename;
78
 
    for (key in args)
79
 
    {
80
 
        vals = args[key];
81
 
        // vals can be an array, to make multiple args with the same name
82
 
        // To handle this, make non-array objects into an array, then loop
83
 
        if (!(vals instanceof Array))
84
 
            vals = [vals];
85
 
        for each (val in vals)
86
 
        {
87
 
            if (first)
88
 
            {
89
 
                qs += "?";
90
 
                first = false;
91
 
            }
92
 
            else
93
 
            {
94
 
                qs += "&";
95
 
            }
96
 
            qs += encodeURI(key) + "=" + encodeURI(val);
97
 
        }
98
 
    }
99
 
    return qs;
100
 
}
101
 
 
102
 
function make_post_body(args)
103
 
{
104
 
    var first = true;
105
 
    var qs = '';
106
 
    for (key in args)
107
 
    {
108
 
        vals = args[key];
109
 
        // vals can be an array, to make multiple args with the same name
110
 
        // To handle this, make non-array objects into an array, then loop
111
 
        if (!(vals instanceof Array))
112
 
            vals = [vals];
113
 
        for each (val in vals)
114
 
        {
115
 
            if (first)
116
 
            {
117
 
                first = false;
118
 
            }
119
 
            else
120
 
            {
121
 
                qs += "&";
122
 
            }
123
 
            qs += encodeURI(key) + "=" + encodeURI(val);
124
 
        }
125
 
    }
126
 
    return qs;
127
 
}
128
 
 
129
 
function enter_line()
130
 
{
131
 
    var inp = document.getElementById('inputText');
132
 
    var digest = hex_md5(inp.value + magic);
133
 
    var xmlhttp = new XMLHttpRequest();
134
 
    xmlhttp.open("POST", "chat", false);
135
 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
136
 
    xmlhttp.send(make_post_body({"digest":digest, "text":inp.value}))
137
 
    var res = JSON.parse(xmlhttp.responseText);
138
 
    var output = document.getElementById("output")
139
 
    {
140
 
        var pre = document.createElement("pre");
141
 
        pre.setAttribute("class", "inputMsg");
142
 
        pre.appendChild(document.createTextNode(inp.value + "\n"));
143
 
        output.appendChild(pre);
144
 
    }
145
 
    if (res.hasOwnProperty('okay'))
146
 
    {
147
 
        // Success!
148
 
        // print out the output (res.okay[0])
149
 
        var pre = document.createElement("pre");
150
 
        pre.setAttribute("class", "outputMsg");
151
 
        pre.appendChild(document.createTextNode(res.okay[0]));
152
 
        output.appendChild(pre);
153
 
        // print out the return value (res.okay[1])
154
 
        if (res.okay[1])
155
 
        {
156
 
            var pre = document.createElement("pre");
157
 
            pre.setAttribute("class", "outputMsg");
158
 
            pre.appendChild(document.createTextNode(res.okay[1] + "\n"));
159
 
            output.appendChild(pre);
160
 
        }
161
 
        // set the prompt to >>>
162
 
        var prompt = document.getElementById("prompt");
163
 
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
164
 
    }
165
 
    else if (res.hasOwnProperty('exc'))
166
 
    {
167
 
        // Failure!
168
 
        // print out the error message (res.exc)
169
 
        var pre = document.createElement("pre");
170
 
        pre.setAttribute("class", "errorMsg");
171
 
        pre.appendChild(document.createTextNode(res.exc));
172
 
        output.appendChild(pre);
173
 
    }
174
 
    else if (res.hasOwnProperty('more'))
175
 
    {
176
 
        // Need more input, so set the prompt to ...
177
 
        var prompt = document.getElementById("prompt");
178
 
        prompt.replaceChild(document.createTextNode("... "), prompt.firstChild);
179
 
    }
180
 
    else {
181
 
        // assert res.hasOwnProperty('input')
182
 
        var prompt = document.getElementById("prompt");
183
 
        prompt.replaceChild(document.createTextNode("+++ "), prompt.firstChild);
184
 
    }
185
 
}
186
 
 
187
 
function catch_input(key)
188
 
{
189
 
    var inp = document.getElementById('inputText');
190
 
    if (key == 13)
191
 
    {
192
 
        enter_line();
193
 
        hist.add(inp.value);
194
 
        inp.value = hist.curr();
195
 
    }
196
 
    if (key == 38)
197
 
    {
198
 
        hist.up();
199
 
        inp.value = hist.curr();
200
 
    }
201
 
    if (key == 40)
202
 
    {
203
 
        hist.down();
204
 
        inp.value = hist.curr();
205
 
    }
206
 
}