• Stars
    star
    3,081
  • Rank 14,604 (Top 0.3 %)
  • Language
    C
  • License
    GNU Lesser Genera...
  • Created over 6 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AWTK = Toolkit AnyWhere(a cross-platform embedded GUI)

AWTK = Toolkit AnyWhere

中文用户请看这里

I. Introduction

AWTK , the abbreviation of Toolkit AnyWhere, is an open source GUI engine developed by ZLG. It is a cross-platform GUI engine for embedded systems, WEB, mini programs, mobile phones and PC. It is a powerful, efficient, reliable and easy-to-use GUI engine for users to design beautiful GUI applications.

Welcome developers to join us in our development:Joint Ecology Building Plan

AWTK has two implications as follows:

  • Toolkit AnyWhere.
  • As the built-in GUI of AWorksOS, which is the ZLG IoT operating system.

AWTK source code repositories:

AWTK Designer - the UI design tool:

  • It is no longer necessary to write XML by yourself.
  • Design the UI by dragging and dropping. What you see is what you get.
  • Support quick preview and pack resources with one-click.
  • Registration and download: https://awtk.zlg.cn

AWTK Designer

Screenshots:

Chart-Demo

MusicPlayer-Demo

Watch

II. Ultimate Objectives

  • To support development of embedded applications.✔
  • To support development of Linux applications.
  • To support development of MacOS applications.✔
  • To support development of Windows applications.✔
  • To support development of Web applications.✔
  • To support development of Android applications.✔
  • To support development of iOS applications.✔
  • To support development of WeChat mini programs.
  • To support development of AliPay mini programs.
  • To support development of Baidu mini programs.
  • To support development of 2D mini games.

III. Main Features

1. Cross-platform

AWTK is a cross-platform GUI engine , which has two meanings as follows:

  • AWTK's code is cross-platform. At present, it is compatible with platforms such as ZLG AWorksOS, Windows, Linux, MacOS, embedded Linux, Android, iOS, Web and embedded raw systems. It can be easily ported to variety of different RTOS. In the future, AWTK can be also run as mini programs.

  • In addition, AWTK has a cross-platform library of basic tools, which includes lists, arrays, strings (UTF8 and widechar), event emitters, values, objects, file system, mutex, threads, formulas and string analysis, in order that the applications you develop with AWTK can really run across platforms.

2. Efficient

AWTK ensure efficiency through the following operations:

  • Update changed parts using dirty rectangles algorithms.
  • Support 3 FrameBuffer to make the UI run at the highest frame rate (optional).
  • UI description files and theme files are stored in efficient binary formats, in order that they can be analyzed more fast.
  • Support different GPU acceleration interfaces, including OpenGL, DirectX, Vulkan and Metal and so on.
  • Support 2D acceleration interfaces of embedded platforms, such as NXP's PXP interfaces and STM32's DMA2D interfaces, user can easy to adapt to other acceleration interfaces.

3. Stable

AWTK makes codes as stable and reliable as possible in following ways:

  • Perform static checks using cppcheck and facebook infer.
  • Dynamically check memory with valgrind.
  • With approximately 20,000 lines of codes for unit testing.
  • With support from the powerful GUI team of ZLG.
  • Has been validated in multiple practical projects.
  • Has been validated by multiple platforms and compilers.
  • With excellent architecture design.
  • Code Review.
  • Manual test.

4. Powerful

  • Abundant widgets (being add more widgets).
  • Support multiple image formats (png/jpg/gif/svg).
  • Support multiple font formats (bitmap and vector fonts).
  • Support window animation function.
  • Support widget animation function.
  • Support HD screen.
  • Support UI layout description file.
  • Support UI theme file.
  • Support switch themes in runtime.
  • Support custom rule for widget layout.
  • Support custom rule for highlighting dialogs.
  • With many auxiliary tools.
  • Support different CPU from low-end (such as Cortex M3) to high-end.
  • Support no-filesystem platform and custom filesystem.
  • Support raw systems platform and RTOS.

5. Easy-to-use

  • With many demonstration codes.
  • With complete API document and user guide document.
  • With technical support from the powerful team of ZLG.
  • With the UI designer, which also developed with AWTK (https://awtk.zlg.cn).
  • Use declarative UI description language. user can enable widget animation, window animation, and image display (png/jpg/svg/gif) with one line code.

6. Customizable

  • Support extend custom widgets.
  • Support extend custom animations.
  • Support implement custom main loop.
  • Support extend custom soft keyboard.
  • Support extend custom image loader.
  • Support extend custom font loader.
  • Support extend custom input method engine.
  • Support extend custom layout algorithms for widgets.
  • Support extend custom rule for highlighting dialogs.
  • Support implement custom LCD interface.
  • Support extend custom vector engines (e.g.skia/cairo).
  • All extended and built-in widgets are treated the same.

7. Multiple Development Languages

AWTK is been developed in the C Program Language. Scripts in different languages can be generated by the IDL. The binding code generated not only simply mapping the C API to the target script language, but also with the native code styles of the target script language. At present, following languages are supported (More languages will be added):

  • C
  • Go
  • C++
  • lua
  • java
  • python
  • Javascript on jerryscript
  • Javascript on nodejs
  • Javascript on quickjs

8. Internationalization

  • Support Unicode.
  • Support input methods.
  • Support translate strings.
  • Support translate images.
  • Support text bidirectional algorithms.

9. The MVVM framework for embedded software thoroughly separate user interfaces from business logic

  • High performances.
  • Low memory usage.
  • More thorough isolation.
  • Portable to other GUI.
  • Less codes (~5,000 lines).
  • No need for learning API of AWTK.
  • Support multiple programming languages (support C/JS at present).

For details, please see https://github.com/zlgopen/awtk-mvvm

10. Open source codes are freely available for commercial purposes (LGPL)

IV. Simulation Run

Code Downloading

  • Download with git

Git under Windows

Code Downloading

git clone https://github.com/zlgopen/awtk.git

Under Windows, codes can be downloaded by git with GUI tool.

Code Updating (in the awtk directory)

git pull

The advantage of using Git is that it is very convenient to update the code later.

  • Directly download the zip file.

Download the zip file. Once unzipped, the file shall be renamed awtk.

Mac

If nodejs, scons and sdl2 aren't installed, please run the following command in the terminal (assuming that brew has been installed):

brew install scons sdl2 node

Compile and run (Enter the directory where awtk is and run the following command in the terminal):

scons
./bin/demoui

Ubuntu (version >=16)

If scons and the dependent software pack aren't installed, please run the following command in the terminal:

sudo apt-get install gcc g++ scons libsndio-dev libgtk-3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev libasound2-dev libibus-1.0-dev fcitx-libs-dev git vim clang-format libharfbuzz-dev nodejs libreadline-dev

Compile and run (Enter the awtk directory and run the following command in the terminal):

scons
./bin/demoui

If it can't be run in Ubuntu 14, please refer to FAQ.

Windows

Please install python (64-bit python shall be installed for a 64-bit system), scons and Visual Studio C++ (version>=2017) first.

If pywin32 isn't installed, please use pip to install:

pip install pywin32

Compile and run (Enter the awtk directory and run the following command in the terminal):

Install nodejs

scons
bin\demoui

for all platforms

If PIL isn't installed, please use pip to install:

pip install Pillow

If nodejs glob isn't installed, please use npm to install:

npm install -g glob

V. Online Demonstration

VI. Platform Porting

VII. Language Binding

VIII. Related Projects

The third party provides:

IX. Documentation

X. Joint Ecology Building Plan

   

XI. Developer Community

Welcome any interested developer to evaluate and try to use AWTK. If you have any suggestions or questions about AWTK, please add the WeChat account zlgmcu-888 to enter the AWTK communication group, and ZLG R&D team will answer them for you.

More Repositories

1

awtk-linux-fb

awtk port for linux framebuffer
C
108
star
2

awtk-mvvm

Model-View-ViewModel for AWTK
C
85
star
3

awtk-examples

AWTK 演示例子
59
star
4

awtk-stm32f103ze-raw

awtk在stm32f103ze平台上的移植。
C
59
star
5

awtk-aworks-rt1052

awtk-aworks-rt1052
C
33
star
6

awtk-stm32f429igtx-raw

awtk在stm32f429igtx平台上的移植。
C
33
star
7

zyDownloader

固件下载工具,目前支持ymodem和TFTP等下载方式。
JavaScript
31
star
8

awtk-iotjs

run awtk with iotjs
JavaScript
31
star
9

awtk-quickjs

awtk-quickjs
C
30
star
10

awtk-c-demos

awtk-c-demos
HTML
25
star
11

awtk-web

在浏览器中运行AWTK应用程序
JavaScript
23
star
12

awtk-jerryscript

awtk javascript bindings.
JavaScript
22
star
13

gui-lib-evaluation

如何评估一个GUI引擎。
22
star
14

awtk-stm32f103ze-rtthread

awtk-stm32f103ze-rtthread
C
18
star
15

awtk-go

awtk-go binding
Go
16
star
16

awtk-lua

awtk lua bindings
C
14
star
17

awtk-docs

awtk books and manuals
13
star
18

awtk-sylixos

awtk port for sylixos
C
11
star
19

awtk-media-player

media player for awtk
C
10
star
20

tkc

ZLG ToolKit c library
C
10
star
21

awtk-patterns

以一个简单计算器为例,展示传统、MVC、MVP和MVVM几种模式在AWTK上的实现方法。
C
9
star
22

awtk-mvvm-c-hello

AWTK-MVVM完整演示项目
C
9
star
23

awtk-cpp

awtk cpp wrapper
C++
9
star
24

awtk-stm32f103ze-tencentos

AWTK 针对腾讯 OS(STM32f103ze) 的移植
C
7
star
25

awtk-stm32f767igtx-raw

awtk在stm32f767igtx平台上的移植。
C
7
star
26

ametal_applictions

基于AMetal架构的实际项目开发示例
C
7
star
27

awtk-hello

awtk模板工程
C
7
star
28

awtk-python

awtk python binding
C
7
star
29

awtk-vscode-plugin

awtk plugin for vscode
TypeScript
7
star
30

awtk-restful-httpd

a simple RESTful HTTP Server for embedded system
C
7
star
31

awtk-java

JAVA Binding for AWTK
Java
7
star
32

awtk-lite-service

AWTK基于线程实现的轻量级服务框架。用于实现网络、视频、音频和其它需要长时间的同步操作。
7
star
33

awtk-android

awtk-android port
Java
6
star
34

awtk-mobile-plugins

用于访问手机平台 (android/ios) 原生服务的插件(如分享、登录、相机、扫描二维码和蓝牙等)
C
6
star
35

awtk-previewer

awtk-previewer
C
6
star
36

awtk-stm32h743iitx-mvvm

awtk-stm32h743iitx-mvvm
C
6
star
37

awtk-nodejs

awtk nodejs binding
JavaScript
5
star
38

react-awtk

用reactjs的方式开发AWTK应用程序
TypeScript
5
star
39

awtk-stm32h743iitx-tencentos

awtk-stm32h743iitx-tencentos
C
5
star
40

awtk-minijvm

awtk for minijvm
C
5
star
41

awtk-widget-glview

draw opengl graphics in AWTK
C
5
star
42

awtk-widget-rive

rive player for awtk
C
4
star
43

awtk-ui-automation

awtk-ui-automation
C
4
star
44

awtk-stm32h743iitx-freertos

awtk for rtos
C
4
star
45

awtk-scons-armcc

build awtk with scons and armcc on windows
Python
4
star
46

awtk-msvc

build awtk with cmake and visual c++ on windows
CMake
4
star
47

awtk-gd32f450i-raw

C++
3
star
48

awtk-binding

code generator for awtk binding
C
3
star
49

awtk-lpc1768-raw

awtk-lpc1768-raw
C
3
star
50

awtk-examples.v2

v2 所有例子对 Designer 做了适配,可以用 Designer 打开工程文件 project.json 并编辑 UI 界面
ReScript
3
star
51

awtk-http-client

http client for awtk
Makefile
3
star
52

awtk-widget-rlottie

awtk rlottie player
C++
3
star
53

awtk-sqlite3

sqlite3 port for awtk
C
3
star
54

awtk-ios

awtk ios
Python
3
star
55

awtk-widget-generator

code generator for AWTK widget
JavaScript
2
star
56

awtk-widget-table-view

awtk-widget-table-view
C
2
star
57

awtk-widget-store

AWTK custom widgets repository
2
star
58

awtk-inter-win-communication

演示窗口之间的通信方式。
C
2
star
59

awtk-mvvm-c-examples

awtk-mvvm-c-examples
C
2
star
60

awtk-widget-html-view

awtk-widget-html-view
C
2
star
61

awtk-widget-vlabel

vlabel
C
2
star
62

awtk-stm32f103ze-raw-lite

use awtk lite
C
2
star
63

awtk-ftpd

awtk ftp server for embedded device
C
2
star
64

bgfx-awtk

bgfx用在awtk平台的版本
C
1
star
65

awtk-get

AWTK 包管理工具
1
star
66

awtk-widget-number-label

awtk-widget-number-label
C
1
star
67

appium-awtk-driver

appium-awtk-driver
JavaScript
1
star
68

awtk-widget-date-picker

date picker widget
C
1
star
69

awtk-database-repository

repository pattern for mvvm
C
1
star
70

awtk-widget-title-value

title value
C
1
star
71

awtk-port-ingenic

AWTK port for Ingenic
C
1
star
72

awtk-custom-asset-loader

custom asset loader
C
1
star
73

awtk-regression-test

regression test for awtk
JavaScript
1
star
74

awtk-csv-file

a library to access CSV file
C
1
star
75

awtk-widget-slidable-row

slidable-row
C
1
star
76

awtk-widget-qr

qrcode widget, generated by awtk-widget-generator
C
1
star
77

awtk-widget-layer-window

display a window on diff layer
C
1
star
78

awtk-nogui

awtk for nogui case
C
1
star
79

awtk-fs-adapter

filesystem adapter for awtk
C
1
star
80

awtk-widget-slider-circle

awtk-widget-slider-circle
C
1
star
81

awtk-modbus

awtk-modbus
C
1
star