重启项目
This commit is contained in:
parent
89e908fe21
commit
76abef7a94
11
aardiowin/config.json
Normal file
11
aardiowin/config.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"app" : "awin",
|
||||
"title" : "awin",
|
||||
"icon" : "",
|
||||
"backend" : "",
|
||||
"frontend" : "",
|
||||
"window" : {
|
||||
"width" : 500,
|
||||
"height" : 500
|
||||
}
|
||||
}
|
@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project ver="10" name="awin" libEmbed="true" icon="..." ui="win" output="awin.exe" CompanyName="aardio" FileDescription="awin" LegalCopyright="Copyright (C) 作者 2024" ProductName="awin" InternalName="awin" FileVersion="0.0.0.1" ProductVersion="0.0.0.1" publishDir="/dist/" dstrip="false">
|
||||
<project ver="10" name="awin" libEmbed="true" icon="..." ui="win" output="awin.exe" CompanyName="aardio" FileDescription="awin" LegalCopyright="Copyright (C) 作者 2024" ProductName="awin" InternalName="awin" FileVersion="0.0.0.1" ProductVersion="0.0.0.1" publishDir="/dist/" dstrip="false" local="false" ignored="false">
|
||||
<file name="main" path="main.aardio"/>
|
||||
<folder name="窗体" path="forms" comment="" embed="true" local="false" ignored="false"/>
|
||||
<folder name="网页" path="web" embed="true" comment="目录" local="true">
|
||||
<folder name="网页" path="web" embed="true" comment="目录" local="true" ignored="false">
|
||||
<file name="index.html" path="web\index.html" comment="web\index.html"/>
|
||||
<file name="index.js" path="web\index.js" comment="web\index.js"/>
|
||||
</folder>
|
||||
<folder name="网页源码" path="web.src" embed="false" comment="目录" local="false" ignored="true"/>
|
||||
</project>
|
||||
|
106
aardiowin/lib/init.aardio
Normal file
106
aardiowin/lib/init.aardio
Normal file
@ -0,0 +1,106 @@
|
||||
// init 初始化
|
||||
import log
|
||||
|
||||
|
||||
|
||||
// 临时日志
|
||||
var gLog = log( "awin" );
|
||||
var gDebug = false;
|
||||
|
||||
namespace init{
|
||||
import fsys
|
||||
import string
|
||||
import web.json
|
||||
|
||||
// 日志对象
|
||||
getDebug = function(){
|
||||
return gDebug;
|
||||
}
|
||||
|
||||
// 日志对象
|
||||
getLog = function(){
|
||||
return gLog;
|
||||
}
|
||||
|
||||
// 配置载入函数
|
||||
loadConfigs = function() {
|
||||
|
||||
|
||||
gLog.print("dir");
|
||||
var configs = {};
|
||||
var currentPath = fsys.getCurDir();
|
||||
gLog.print("currentPath", currentPath);
|
||||
var appDataPath = string.getenv("APPDATA");
|
||||
gLog.print("appDataPath", appDataPath);
|
||||
|
||||
// 读取当前路径下的 config.json
|
||||
var currentConfigPath = currentPath ++ "/config.json";
|
||||
if (io.exist(currentConfigPath)) {
|
||||
var currentConfigContent = string.load(currentConfigPath);
|
||||
configs = web.json.parse(currentConfigContent);
|
||||
}
|
||||
|
||||
// 从当前路径下的 config.json 中读取 app 值
|
||||
var appValue = configs.app;
|
||||
if (!appValue) {
|
||||
error("'app' value not found in the config file.");
|
||||
}
|
||||
gLog.print("app", appValue);
|
||||
|
||||
// 构建 %APPDATA%/%app% 路径
|
||||
var appDir = appDataPath ++ "/" ++ appValue;
|
||||
if (! io.exist( appDir )) {
|
||||
fsys.createDir( appDir )
|
||||
}
|
||||
var appDataConfigPath = appDataPath ++ "/" ++ appValue ++ "/config.json";
|
||||
|
||||
// 读取 %APPDATA%/%app% 路径下的 config.json
|
||||
if (io.exist(appDataConfigPath)) {
|
||||
var appDataConfigContent = string.load(appDataConfigPath);
|
||||
var appDataConfig = web.json.parse(appDataConfigContent);
|
||||
|
||||
// 合并配置,后读取的覆盖先读取的
|
||||
object.merge(configs, appDataConfig, true);
|
||||
}
|
||||
|
||||
return configs;
|
||||
};
|
||||
|
||||
checkConfig = function (config){
|
||||
if( ! config.window ){
|
||||
config.window = {}
|
||||
}
|
||||
if( ! config.window.width ) {
|
||||
config.window.width = 500
|
||||
}
|
||||
if( ! config.window.height ) {
|
||||
config.window.height = 500
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
|
||||
1. 读取当前路径下的 config.json
|
||||
2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。
|
||||
%app% 为当前路径下的 config.json 中配置的 app
|
||||
|
||||
*/
|
||||
init = function(){
|
||||
gLog.print("init")
|
||||
gConfig = {}
|
||||
// 使用示例
|
||||
try {
|
||||
gLog.print("loadConfigs")
|
||||
io.print("")
|
||||
gConfig = loadConfigs()
|
||||
io.print("2")
|
||||
gConfig = checkConfig( gConfig )
|
||||
gLog.print(configs);
|
||||
} catch (e) {
|
||||
io.print("错误会中断try语句块" ++ e)
|
||||
gLog.print(e);
|
||||
}
|
||||
}
|
||||
}
|
40
aardiowin/lib/log.aardio
Normal file
40
aardiowin/lib/log.aardio
Normal file
@ -0,0 +1,40 @@
|
||||
// log 日志
|
||||
import fsys
|
||||
import fsys.log
|
||||
import time
|
||||
|
||||
var getToday = function(){
|
||||
var $now = time.now() //当前时间
|
||||
return "" ++ $now.year ++ $now.month ++ $now.day
|
||||
}
|
||||
|
||||
var todayLogFile = function( name ) {
|
||||
|
||||
var appDataPath = string.getenv("APPDATA");
|
||||
var appPath = appDataPath ++ "/" ++ name;
|
||||
if (! io.exist( appPath )) {
|
||||
fsys.createDir( appPath )
|
||||
}
|
||||
return appPath ++ "/" ++ name ++ "." ++ getToday() ++ ".log"
|
||||
}
|
||||
|
||||
|
||||
class log {
|
||||
ctor( name ){
|
||||
|
||||
path = todayLogFile(name);
|
||||
|
||||
this = ..fsys.log(path) //调用基类构造对象原型
|
||||
this.basePrint = this.print;
|
||||
};
|
||||
|
||||
print = function(...){
|
||||
var t = ..time.now()
|
||||
t.format="%Y%m%d-%H%M%S ";
|
||||
|
||||
var args = {...}
|
||||
..table.insert(args, tostring(t)) // 通常时间非重要信息,以...作视觉区分方便查看
|
||||
|
||||
this.basePrint( ..table.unpack(args) )
|
||||
};
|
||||
}
|
@ -1,27 +1,21 @@
|
||||
import win.ui;
|
||||
import init;
|
||||
|
||||
/*
|
||||
|
||||
载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
|
||||
1. 读取当前路径下的 config.json
|
||||
2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。
|
||||
%app% 为当前路径下的 config.json 中配置的 app
|
||||
|
||||
*/
|
||||
gConfig = {}
|
||||
// 使用示例
|
||||
try {
|
||||
gConfig = loadConfigs()
|
||||
console.log(configs);
|
||||
} catch (e) {
|
||||
console.error(e.message);
|
||||
}
|
||||
// 初始化
|
||||
init.init();
|
||||
var gConfig = init.loadConfigs();
|
||||
var gDebug = init.getDebug();
|
||||
|
||||
/*DSG{{*/
|
||||
mainForm = win.form(text="awin";right=759;bottom=469)
|
||||
mainForm = win.form(text="awin";right=gConfig.window.width;bottom=gConfig.window.height;border="thin";max=false;min=false)
|
||||
mainForm.add()
|
||||
/*}}*/
|
||||
|
||||
|
||||
// 启动界面
|
||||
var gLog = init.getLog();
|
||||
gLog.print("web view")
|
||||
import web.view;
|
||||
var theView = web.view(mainForm);
|
||||
|
||||
@ -42,44 +36,13 @@ import wsock.tcp.simpleHttpServer;
|
||||
去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
|
||||
否则打开 http://localhost:37151
|
||||
*/
|
||||
theView.go("\web\index.html",37151);
|
||||
if( gDebug ){
|
||||
theView.go("\web\index.html",37151);
|
||||
} else {
|
||||
theView.go("\web\index.html");
|
||||
}
|
||||
|
||||
|
||||
mainForm.show();
|
||||
win.loopMessage();
|
||||
|
||||
|
||||
// 配置载入函数
|
||||
function loadConfigs() {
|
||||
var configs = {};
|
||||
var currentPath = file.dir();
|
||||
var appDataPath = env.get("APPDATA");
|
||||
|
||||
// 读取当前路径下的 config.json
|
||||
var currentConfigPath = file.path(currentPath, "config.json");
|
||||
if (file.exists(currentConfigPath)) {
|
||||
var currentConfigContent = file.read(currentConfigPath);
|
||||
configs = json.parse(currentConfigContent);
|
||||
}
|
||||
|
||||
// 从当前路径下的 config.json 中读取 app 值
|
||||
var appValue = configs.app;
|
||||
if (!appValue) {
|
||||
error("'app' value not found in the config file.");
|
||||
}
|
||||
|
||||
// 构建 %APPDATA%/%app% 路径
|
||||
var appDataConfigPath = file.path(appDataPath, appValue, "config.json");
|
||||
|
||||
// 读取 %APPDATA%/%app% 路径下的 config.json
|
||||
if (file.exists(appDataConfigPath)) {
|
||||
var appDataConfigContent = file.read(appDataConfigPath);
|
||||
var appDataConfig = json.parse(appDataConfigContent);
|
||||
|
||||
// 合并配置,后读取的覆盖先读取的
|
||||
object.merge(configs, appDataConfig, true);
|
||||
}
|
||||
|
||||
return configs;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,14 +2,33 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
.loader {
|
||||
border: 16px solid #f3f3f3;
|
||||
border-radius: 50%;
|
||||
border-top: 16px solid #3498db;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
margin: auto;
|
||||
-webkit-animation: spin 2s linear infinite; /* Safari */
|
||||
animation: spin 2s linear infinite;
|
||||
}
|
||||
|
||||
/* Safari */
|
||||
@-webkit-keyframes spin {
|
||||
0% { -webkit-transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style="margin:50px;white-space: pre;">
|
||||
请在工程中右键点击「网页源码」目录,
|
||||
然后在弹出菜单中点击「用外部编辑器」打开。
|
||||
|
||||
在 VSCode 中打开以后,运行 npm install 安装依赖,
|
||||
然后再运行 npm run build 编译网页代码。
|
||||
|
||||
最后在 aardio 中点击发布生成 EXE 文件。
|
||||
<body style="margin:50px;text-align: center; ">
|
||||
<div class="loader"></div>
|
||||
<div style="margin-top: 50px"><p>AWin 已经启动,但是 AWin 只是一个没有灵魂的外壳,这里需要被正确替换成真正的应用~</p></div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user