AWTK

集成 AWTK 到 iotjs

删除回忆录丶 提交于 2021-02-19 11:03:34
集成 AWTK 到 iotjs iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 用 C 语言来扩展 iotjs 不是太难的事情,但是将 GUI 集成到 iotjs 却是有些麻烦的。主要原因在于 iotjs 有个主循环 (main loop),GUI 自己也有个主循环 (main loop),两者不同并存,只能选一个。这里 AWTK 为例,介绍一下如何将 GUI 集成到 iotjs 中,这对将 GUI 集成到 nodejs 也是有参考价值。 一、以谁为主 在集成 AWTK 到 iotjs 时,我选择了以 iotjs 的主循环为主。这并不是唯一的正确方案,做这个选择的主要原因有: 让 AWTK 作为 iotjs 的模块,保持 iotjs 本身的开发方式。 避免修改 iotjs。iotjs

设计模式学习(二):实现可动态注册的简单工厂模式(C语言)

痞子三分冷 提交于 2021-01-31 21:27:03
一、前言 上周学习了抽象工厂模式,该模式包含了简单工厂模式和工厂方法的某些特性,三者之间的区别详见: 上周博客 ,本周深入了解一下简单工厂模式,并对其进行优化,实现一个可动态注册的简单工厂,本次练习参考了AWTK源码中 widget_factory 的实现,感兴趣的可以查阅源码,GitHub仓库: https://github.com/zlgopen/awtk 。 AWTK是 ZLG 开发的开源 GUI 引擎,官网地址: https://www.zlg.cn/index/pub/awtk.html 。 二、简单工厂模式 简单工厂模式(Factory Pattern)是属于创建型模式,在该模式中,用户通过使用一个共同的接口来创建的具体对象。 简单理解 :工厂是对具体产品(对象)的抽象,工厂提供统一接口创建不同的产品。本质上就是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 目的 :给用户提供一个创建一系列相关对象的接口,但用户是不需要指定它们的具体类,其主要是解决接口选择的问题。 优点 : 一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 屏蔽产品的具体实现,调用者只关心产品的接口。 缺点 :每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加

AWTK javascript绑定原理

天大地大妈咪最大 提交于 2021-01-27 06:43:26
AWTK javascript绑定原理 一、基本架构 Javascript的绑定方法和lua的绑定方法有些不同,主要原因是javascript的引擎有很多种,比如嵌入式系统常用的jerryscript和PC上常用的V8。不同的引擎提供注册C/C++函数的能力不同,所以在绑定时我们只对引擎做一个最低能力的要求:提供注册全局函数的能力。 我们把绑定的代码分两层: 引擎相关的代码负责把awtk的函数一一映射到js层面。 引擎无关的代码(awtk.ts)负责把awtk的函数包装成面向对象的接口。 基本架构如下: 这样的好处有: 实现简单。绑定全局函数是最简单的,而且每种引擎都有大量的示例可以参考。 代码的重用度高。awtk.ts的代码产生器只需要一份即可。 为上层提供一个统一的接口,换javascript引擎不会对上层应用程序造成影响。 二、引擎相关的代码(jerryscript为例) 1.成员函数的绑定 C语言里面的成员函数其实都是全局函数,按全局函数的绑定方式绑定即可,构造函数和非构造函数按同样的方式处理。如: jerry_value_t wrap_button_create(const jerry_value_t func_obj_val, const jerry_value_t this_p, const jerry_value_t args_p[], const jerry

AWTK-MVVM学习(二):数据绑定与命令绑定

蓝咒 提交于 2021-01-03 19:55:08
一、前言 上周简单介绍了AWTK-MVVM,并按照规则设计了图书管理系统的Model,详见文章: AWTK-MVVM学习(一) 。本周学习了AWTK-MVVM的数据绑定和命令绑定,本文记录其中的关键内容,更详细的教程请参考awtk-mvvm/docs下的md文档。 awtk-mvvm仓库: http://github.com/zlgopen/awtk-mvvm 二、数据绑定 在进行数据绑定之前,先要建立 View(UI界面)与 ViewModel的联系。在AWTK 中用XML文件来描述用户界面,即View,在上周的博客中,设计了一个图书管理系统的Model,可根据注释生成 ViewModel 的代码,实现数据绑定的步骤如下: (1)为界面绑定模型,即将 View 与 ViewModel 关联起来,在AWTK-MVVM中有一个 v-model 属性,该属性用来指定 ViewModel 的名称,将控件与模型绑定起来,通常我们在窗口上指定,XML如下: <window v-model="book_controller"> ... </window> (2)为控件绑定数据,即将某些控件的属性与 Model 中的指定属性(变量)绑定起来,这个绑定的具体操作由 ViewModel 完成,我们只需要在XML文件中指定属性即可,例如将 label 控件的文本(text属性)和 Model 中的书名

《痞子衡嵌入式半月刊》 第 9 期

ぃ、小莉子 提交于 2020-08-13 04:13:55
痞子衡嵌入式半月刊: 第 9 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly ),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 : 《痞子衡嵌入式半月刊: 第 8 期》 唠两句 今天是芒种,芒种节气在农耕上有着相当重要的意义,它指导着农事耕种。民谚有“芒种不种,再种无用”一说。 近期总理提出的地摊经济正席卷全国,这是特殊时期的一种特殊经济刺激手段。地摊经济,是最传统的经济模式,这意味着人人可以无门槛做生意。还等什么,痞子衡打算淘宝进一批7天无理由退货的小玩意去步行街摆摊了。 本期共收录 3条资讯、3个项目、1个工具、1个RT产品,希望对你有帮助! 资讯类 1、瑞芯微AI芯片加持百度飞桨,携手加速AI应用落地 瑞芯微Rockchip近日宣布,旗下AI芯片RK1808、RK1806适配百度飞桨(PaddlePaddle)开源深度学习平台,充分兼容飞桨轻量化推理引擎Paddle Lite。此次瑞芯微与百度合作,旨在为AI行业赋能更多应用场景,加速AI产品落地进程。 资讯主页: https://www.rock-chips.com/a/cn/news/rockchip/2020/0513/1084.html

AWTK Designer 0.1.6正式发布,持续打造新一代GUI设计平台

断了今生、忘了曾经 提交于 2020-07-28 09:46:39
今天,我们迎来了Designer 0.1.6的发布。在这个版本中,我们完善了许多细节,并增加了部分新功能,如:项目管理器窗口支持简洁模式、窗体预览支持多种渲染模式以及许可管理页面添加续期功能等。 AWTK Designer是专门用来制作AWTK应用程序的UI界面的实用工具,只要通过拖曳和点击就可以完成复杂的界面设计,而且可以随时预览效果图。通过AWTK Designer即可完成UI界面元素的布局、设置控件属性、给控件添加动画效果和设置样式等。 得益于AWTK强大的功能和跨平台特性,AWTK Designer本身也是基于AWTK构建的。 今天,我们迎来了Designer 0.1.6的发布。在这个版本中,我们完善了许多细节,并增加了部分新功能,如:项目管理器窗口支持简洁模式、窗体预览支持多种渲染模式以及许可管理页面添加续期功能等。具体内容如下: 支持简洁模式 项目管理器窗口支持简洁模式与常规模式之间的切换,简洁模式下仅显示UI文件列表,并支持修改启动页面和打开样式文件。 简洁模式(左)与常规模式(右) 支持多种渲染模式 点击“预览”按钮,有多种渲染模式可供选择:AGGE-BGR565、AGGE-BGRA8888、AGGE-MONO以及OpenGL,方便用户观看同一UI界面在不同渲染模式下的效果图。 AGGE-BGR565(左)与AGGE-MONO(右) 注

《痞子衡嵌入式半月刊》 第 9 期

落爺英雄遲暮 提交于 2020-07-26 14:19:27
痞子衡嵌入式半月刊: 第 9 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly ),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 : 《痞子衡嵌入式半月刊: 第 8 期》 唠两句 今天是芒种,芒种节气在农耕上有着相当重要的意义,它指导着农事耕种。民谚有“芒种不种,再种无用”一说。 近期总理提出的地摊经济正席卷全国,这是特殊时期的一种特殊经济刺激手段。地摊经济,是最传统的经济模式,这意味着人人可以无门槛做生意。还等什么,痞子衡打算淘宝进一批7天无理由退货的小玩意去步行街摆摊了。 本期共收录 3条资讯、3个项目、1个工具、1个RT产品,希望对你有帮助! 资讯类 1、瑞芯微AI芯片加持百度飞桨,携手加速AI应用落地 瑞芯微Rockchip近日宣布,旗下AI芯片RK1808、RK1806适配百度飞桨(PaddlePaddle)开源深度学习平台,充分兼容飞桨轻量化推理引擎Paddle Lite。此次瑞芯微与百度合作,旨在为AI行业赋能更多应用场景,加速AI产品落地进程。 资讯主页: https://www.rock-chips.com/a/cn/news/rockchip/2020/0513/1084.html

如何在C++中嵌入JAVA

柔情痞子 提交于 2019-12-20 18:46:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如何在C++中嵌入JAVA 最近在为 AWTK 增加 JAVA 绑定,在 Windows 和 Linux 下工作正常,但是在 MACOS 上运行起来遇到下列问题: java[5714:260503] WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exception in the future. Called from ( 0 AppKit 0x00007fff50d21607 -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 378 1 AppKit 0x00007fff50d1e9f7 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1479 2 AppKit 0x00007fff50d1e42a -[NSWindow initWithContentRect:styleMask:backing:defer:] + 45 3 AppKit

AWTK 控件焦点相关问题

。_饼干妹妹 提交于 2019-12-05 02:34:28
控件焦点相关问题 一、启用焦点停留 (tab stop) 除了 edit 控件外,其它控件如果需要焦点停留功能,可以指定控件的 focusable 属性为 true 来实现。 在 XML 中,可以这样指定: <button ... focusable="true"/> 在 C 代码中,可以这样指定: widget_set_prop_bool(widget, WIDGET_PROP_FOCUSABLE, TRUE); 如果指定了 fucusable 属性为 true,请确保控件的 style 中定义了 focused 状态的数据,否则会因为 focused 状态没有 style 数据而无法显示。如: <style name="default" border_color="#a0a0a0" text_color="black"> <normal bg_color="#f0f0f0" /> <pressed bg_color="#c0c0c0" x_offset="1" y_offset="1"/> <over bg_color="#e0e0e0" /> <focused bg_color="#e0e0e0" /> <disable bg_color="gray" text_color="#d0d0d0" /> </style> <focused bg_color="#e0e0e0" /

在 AWTK 中 如何让文本滚动起来

余生颓废 提交于 2019-12-04 13:42:19
如何让文本滚动起来 在很多时候,特别是在小屏幕的硬件上,控件比较小而要显示的文本比较长。 此时,我们需要在控件获得焦点时/或点击时,让文本滚动起来,以便让用户看到完整的信息。 AWTK 提供了 hscroll_label_t 控件,可以轻松满足文本滚动的需求。 一、基本用法 示例: <window anim_hint="htranslate" text="hscroll_label" children_layout="default(c=1,h=30,xm=10,s=5)"> <hscroll_label text="炫酷的 GUI 引擎。" /> <hscroll_label text="炫酷的 GUI 引擎。" style="right"/> <hscroll_label lull="1000" loop="true" yoyo="true" ellipses="true" focusable="true" text="(always ellipses loop yoyo) 为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。" /> <hscroll_label focusable="true" only_focus="true" text="(only_focus noloop) 为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的