//创建应用
 
//如果希望自动安装electron到系统目录,请先导入electron.runtime 
import electron.runtime;
import electron.app;//导入electron扩展库

/*
这句的作用是把electron嵌入aardio窗口,
用主窗口或子窗口放electron都可以,子窗口的四边固定边距属性都设为true，以支持自动缩放
*/
var theApp = electron.app();

//这是启动electron主进程的main.js
theApp.jsMain =/**  
    const aardio = require('aardio')  //启动RPC服务允许调aardio/electron互调函数,创建BrowserWindow主窗口
    const app = require('electron').app //管理electron进程的生命周期
 
    /*
     * aardio-electron 主进程已准备就绪,
     * 主窗口(BrowserWindow)已创建触发此事件,
     * 可叠加注册多个回调
     */
	aardio.ready( win=> { 
		//if( !aardio.studioInvoke  ){
			win.removeMenu()
		//} 
		
       /*
        * 不建议用下面的代码打开调试工具,
        * 会有一些诡异的问题，例如不能输入中文,
        * 建议改为在aardio中调用 web.socket.chrome从外部打开调试工具.
        */
       // mainWindow.webContents.openDevTools ()  
	} )

  
    app.on('window-all-closed', () => {
        app.quit();
          
    }) 
**/


// 可选在这里直接指定index.html的代码，实际开发请写到工程文件里
theApp.html = /** 
<!DOCTYPE html>
<html> 
  <head>
    <meta charset="UTF-8">
    <title>aardio嵌入electron演示</title>
  </head>
  
  <body>
  
   <h2 onmousedown="aardio.hitCaption();return false;" 
    	style="-webkit-user-select: none;cursor:default;">按这里调用aardio.hitCaption()拖动窗口!</h2>
   
   <button onclick="aardio.exit();">点这里调用aardio关闭窗口</button> <br><br>
   
   <button id="aardio">点这里跟aardio互调一下函数</button><br><br>
    
    <?
    response.write("在electron中执行aardio代码")
    ?>
    
    </body>    
  
    <script type="text/javascript">   
    
    /*导入aardio中的app.external 对象*/
    aardio = require("aardio");
  
  	/*响应按钮点击事件*/
    document.querySelector("#aardio").onclick = function(e){ 
        
    	//调用aardio中的函数,hello要调用的函数名字,后面可以跟任意个调用参数
    	aardio.ex.hello( "你点击了" + e.target.innerHTML,1,2,3,"有几个参数写几个" )
    		.then( 
         		function(message){
         			document.getElementById("aardio").innerText = "aardio返回值" + message;
         		} 
        	)
    }
   	
   	/*响应aardio服务端发起的调查任务*/
   	aardio.on("getUrl",function(){
   		return document.location.href;
   	});
   	
    </script>
    
</html>
**/

/*
在下面的external对象中指定允许electron渲染进程中使用JS直接调用的函数
下面的external 会直接转换为js中的aardio对象，在JS中require('aardio')就可以使用
*/
theApp.external = {
    
    ex = {
        hello = function(...){
        	win.msgbox( {...} ,"electron调用了aardio函数 hello " )
        	return "electron,我是aardio.ex.hello，一起玩怎么样！？"
        } 
    }
     
    
    exit = function(){
    	theApp.close();//关闭主窗口，退出程序
    }
    
    //如果函数名第一个字符是$，则第一个回调参数$用于表示当前客户端,可作为xcall的参数使用
    $test = function($){
    	theApp.xcall($,"js函数")
    }
}

theApp.onUrlReady = function(hSocket,url){
    // 加载一个页面完成都会触发这个事件
}

/*
启动electron,下面使用一个aardio表对象指定的启动参数，
在electron的主进程、渲染进程中都可以直接通过  aardio.startEnviron 访问。
*/
theApp.start(  
    
    //electron打开的第一个页面,必须指定应用程序目录下的aardio代码文件
    indexUrl = "/res/main.aardio";
    
    //指定electron创建浏览器窗口的启动参数, 可以不写,aardio会自动给出正确参数
    browserWindow = {
        frame = false;
        webPreferences =  {
            nodeIntegration = true;
        }
    }
    
    /*
    可选用args字段指定Chrome命令行参数,
    必须在main.js中创建窗口以前就导入aardio模块才会生效
    */
    args ={
        
    }
);

//调查任务结束，JS代码汇报结果到这里
theApp.callback("getUrl",function(hSocket,result,err){
	win.msgbox(result,"打开了页面")
})

theApp.onReady = function(){
	//对所有页面发起调查任务,
	theApp.survey("getUrl");
} 
 
win.loopMessage();
