3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
\r
4 <link href="./mimic.css" rel="stylesheet" type="text/css" />
\r
5 <link rel="stylesheet" href="./c/codemirror-mini.css">
\r
6 <script src="./slib.js"></script>
\r
7 <script src="./c/codemirror-mini.js"></script>
\r
8 <script src="./c/css-mini.js"></script>
\r
9 <script src="./c/htmlmixed-mini.js"></script>
\r
10 <script src="./c/javascript-mini.js"></script>
\r
11 <script src="./c/xml-mini.js"></script>
\r
13 <style id="user-style-nyatla-bg-img">
\r
35 background-color:#ffffff;
\r
41 background-color:#eeeeee;
\r
50 #menu2_stop,#menu2_run,#menu2_save{
\r
51 width:50px;height:40px;
\r
57 background-color:#4169E1;
\r
60 padding:0px 1px 1px 3px;
\r
61 margin:3px 0px 2px 1px;
\r
64 <link href="./mimic.css" rel="stylesheet" type="text/css">
\r
65 <script type="text/javascript">
\r
68 function getElem(id){return document.getElementById(id);}
\r
69 var Mui=new Object();
\r
73 * textboxのコンソールコントロール。
\r
76 [id] コンソールにするtextbox
\r
78 Mui.TextAreaConsole=function(id)
\r
83 tag:getElem(id+"_tag")
\r
85 _t.is_auto_scroll=false;
\r
86 _t.write=function(s){
\r
87 _t._tags.text.value+=s;
\r
88 if(_t.is_auto_scroll){
\r
89 _t._tags.text.scrollTop =_t._tags.text.scrollHeight;
\r
92 _t.writeln=function(s){
\r
96 _t._tags.text.value="";
\r
98 _t.getText=function(){
\r
99 return _t._tags.text.value;
\r
103 Mui.CodeEditor=function(id)
\r
109 this._tags={text:getElem(id)};
\r
111 this.is_auto_scroll=false;
\r
114 scriptTypes: [{matches: /\/x-handlebars-template|\/x-mustache/i,mode: null}]
\r
116 this._cm=CodeMirror.fromTextArea(this._tags.text,{
\r
118 styleActiveLine: true,
\r
120 lineWrapping:true});
\r
121 this.selectall=function(){
\r
123 e.setSelection({line:0,ch:0},{line:e.lineCount(),ch:0});
\r
125 this.getText=function(){
\r
126 return _t._cm.getValue();
\r
128 this.readOnly=function(b)
\r
130 _t._cm.setOption("readOnly",b);
\r
133 this._cm.on("change", function() {
\r
134 if(tid!=undefined){
\r
137 tid = setTimeout(function(){if(_t.events.onUpdate!=null){_t.events.onUpdate();}}, 300);
\r
142 Mui.Command=function(id)
\r
146 run:getElem(id+"_run"),
\r
147 stop:getElem(id+"_stop"),
\r
148 save:getElem(id+"_save")
\r
153 _t._onCommand=function(eid){
\r
154 if(_t.events.onCommand!=null){
\r
155 _t.events.onCommand(eid);
\r
158 this._is_run=false;
\r
159 this._tags.run.disabled=false;
\r
160 this._tags.stop.disabled=true;
\r
164 this._tags.run.onclick=function(){
\r
165 _t._tags.run.disabled=true;
\r
166 _t._tags.stop.disabled=false;
\r
167 _t._onCommand(_t.CM_RUN);
\r
169 this._tags.stop.onclick=function()
\r
171 _t._tags.run.disabled=false;
\r
172 _t._tags.stop.disabled=true;
\r
173 _t._onCommand(_t.CM_STOP);
\r
175 this._tags.save.onclick=function(){_t._onCommand(_t.CM_SAVE);};
\r
178 Mui.Preview=function(id)
\r
181 this.updatePreview=function(str){
\r
182 var elem = getElem(id);
\r
183 var pv = elem.contentDocument || elem.contentWindow.document;
\r
184 str=str.replace(/<[^<script]*script[^\/>]*\/>/gi,"<noscript/>");
\r
185 str=str.replace(/<[^<script]*script[^<]*<[^<\/script]*(\/script[^>]*>)/gi,"<noscript></noscript>");
\r
190 this.updateRun=function(str){
\r
191 var elem = getElem(id);
\r
192 var pv = elem.contentDocument || elem.contentWindow.document;
\r
201 function Application()
\r
205 source:new Mui.CodeEditor("src"),
\r
206 cmd:new Mui.Command("menu2"),
\r
207 preview:new Mui.Preview("preview")
\r
211 ui.cmd.events.onCommand=function(id)
\r
214 case ui.cmd.CM_RUN:
\r
215 ui.source.readOnly(true);
\r
216 ui.preview.updateRun(ui.source.getText());
\r
218 case ui.cmd.CM_STOP:
\r
219 ui.preview.updatePreview(ui.source.getText());
\r
220 ui.source.readOnly(false);
\r
222 case ui.cmd.CM_SAVE:
\r
223 slib.downloadAsFile("miapp.htm",ui.source.getText());
\r
224 ui.source.selectall();
\r
227 alert("unknown command id");
\r
230 ui.preview.updatePreview(ui.source.getText());
\r
231 ui.source.events.onUpdate=function()
\r
233 ui.preview.updatePreview(ui.source.getText());
\r
237 function away(event) {
\r
238 event = event || window.event;
\r
239 return event.returnValue = 'Entries will be lost.\nDo you navigate away from the page?';
\r
241 if (window.addEventListener){
\r
242 window.addEventListener('beforeunload', away, false);
\r
243 }else if (window.attachEvent) {
\r
244 window.attachEvent('onbeforeunload', away);
\r
251 app=new Application();
\r
259 <body onload="init();">
\r
260 <h1>MiMic Javascript Editor</h1>
\r
263 <button id="menu2_run"/>Play</button><button id="menu2_stop" />Stop</button><button id="menu2_save"/>Save</button>
\r
265 <div class="tagp" style="width:60%;position:relative;">
\r
266 <div class="tag" id="src_tag">Source code</div>
\r
267 <textarea id="src"><!DOCTYPE html>
\r
269 <meta charset="UTF-8">
\r
270 <script src="/rom/m/MiMicCore-mini.js"></script>
\r
271 <script src="/rom/m/MbedM3.All-mini.js"></script>
\r
272 <script type="text/javascript">
\r
275 //DIGITAL OUT pin-option
\r
276 var DIGITAL_OUT={dir:1,pin:{mode:1,od:0}};
\r
278 var mcu=new MbedM3.Mcu(location.host);
\r
279 var pin=mcu.getPin(MbedM3.LED[0],"GPIO");
\r
280 pin.setOpt(DIGITAL_OUT);
\r
282 setInterval(function(){pin.setValue((i++)%2);},500);
\r
284 alert("catch exception!\n"+e);
\r
289 <h1 id="title">LED Blink</h1>
\r
290 <body onload="start()">
\r
293 <div class="tagp" style="width:40%">
\r
294 <div class="tag">Preview</div>
\r
295 <iframe id="preview"></iframe>
\r
298 <div class="footer" style="clear:both">
\r
299 <a href="http://nyatla.jp/mimic/wp" alt="http://nyatla.jp/mimic/wp"><img src="mimiclogo.png"/></a>
\r
300 MiMic project<br/>Copyright (C) 2011-2013 <a href="http://nyatla.jp">nyatla.jp</a> All Rights Reserved.
\r