初始化项目
This commit is contained in:
commit
89e908fe21
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/.idea/
|
9
Readme.md
Normal file
9
Readme.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# AWin
|
||||||
|
一个基于 aardio 简单封装的窗口,只运行于 Windows 下。用于使用 web 技术快速开发 windows 程序。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
[ ] 静态 tray
|
||||||
|
[ ] 动态 tray
|
||||||
|
[ ] 日志模块
|
10
aardiowin/default.aproj
Normal file
10
aardiowin/default.aproj
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?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">
|
||||||
|
<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">
|
||||||
|
<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>
|
17
aardiowin/lib/config.aardio
Normal file
17
aardiowin/lib/config.aardio
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//config 配置文件
|
||||||
|
import fsys.config;
|
||||||
|
config = fsys.config("/config/");
|
||||||
|
//config = fsys.config( io.appData("/软件作者/应用程序名/") );
|
||||||
|
|
||||||
|
//不需要序列化的配置名字前请添加下划线
|
||||||
|
namespace config {
|
||||||
|
__appName = "应用程序名";
|
||||||
|
__website = "http://www.aardio.com/";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**intellisense(config)
|
||||||
|
__appName = 应用程序名
|
||||||
|
__website = 官方网站
|
||||||
|
saveAll() = 写入所有配置到文件
|
||||||
|
? = 获取值时指定不以下划线开始的配置表名称,\n返回一个可自动序列化到同名配置文件的表对象。\n如果此对象名以下划线开始,则可以正常读写值不会序列化为配置文件。\n否则不能对此对象直接赋值,只能对配置表对象的成员赋值。\n\n配置表可自动自文件加载,退出线程前自动序列化并存入文件。\n仅序列化以字符串、数值为键的元素,\n仅序列化值为字符串、数值、buffer 以及定义了 _serialize 元方法的成员。\n循环引用的值转换为 null,序列化时忽略成员函数\n!fsys_table.
|
||||||
|
end intellisense**/
|
85
aardiowin/main.aardio
Normal file
85
aardiowin/main.aardio
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
import win.ui;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*DSG{{*/
|
||||||
|
mainForm = win.form(text="awin";right=759;bottom=469)
|
||||||
|
mainForm.add()
|
||||||
|
/*}}*/
|
||||||
|
|
||||||
|
import web.view;
|
||||||
|
var theView = web.view(mainForm);
|
||||||
|
|
||||||
|
//导出为 JavaScript 中的 aardio 对象
|
||||||
|
theView.external = {
|
||||||
|
onCounterUpdate = function(name,value){
|
||||||
|
if(name!==null && value!==null){
|
||||||
|
return "aardio 返回的值:网页中 React 状态值改变了:value:"+value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
import wsock.tcp.simpleHttpServer;
|
||||||
|
/*
|
||||||
|
如果导入 simpleHttpServer,则单个斜杠开头的路径会转换为嵌入式 HTTP 地址,
|
||||||
|
如果同时文件名为 index.html ,则上级目录自动设为根目录,前端应用发布根目录使用默认的 "/" 即可,不需要改动。
|
||||||
|
|
||||||
|
去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
|
||||||
|
否则打开 http://localhost:37151
|
||||||
|
*/
|
||||||
|
theView.go("\web\index.html",37151);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
15
aardiowin/web/index.html
Normal file
15
aardiowin/web/index.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
</head>
|
||||||
|
<body style="margin:50px;white-space: pre;">
|
||||||
|
请在工程中右键点击「网页源码」目录,
|
||||||
|
然后在弹出菜单中点击「用外部编辑器」打开。
|
||||||
|
|
||||||
|
在 VSCode 中打开以后,运行 npm install 安装依赖,
|
||||||
|
然后再运行 npm run build 编译网页代码。
|
||||||
|
|
||||||
|
最后在 aardio 中点击发布生成 EXE 文件。
|
||||||
|
</body>
|
||||||
|
</html>
|
11
portable-template/config.json
Normal file
11
portable-template/config.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"app" : "",
|
||||||
|
"title" : "",
|
||||||
|
"icon" : "",
|
||||||
|
"backend" : "",
|
||||||
|
"frontend" : "",
|
||||||
|
"window" : {
|
||||||
|
"width" : "",
|
||||||
|
"height" : ""
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user