ImRAD, trình dựng GUI cho thư viện ImGui
(github.com/tpecholt)ImRAD
ImRAD là một trình dựng GUI dành cho thư viện ImGui. Nó có thể sinh và phân tích mã C++ để dùng trực tiếp trong ứng dụng. ImRAD có thể chạy trên Windows, Linux và MacOS.
Tính năng
ImRAD đang được phát triển tích cực và các tính năng chính như sau:
-
Hỗ trợ nhiều kiểu thiết kế cửa sổ
- Cửa sổ nổi, popup và modal popup. Độc lập với backend ImGui
- MainWindow thông qua tích hợp GLFW. ImRAD sinh các lời gọi GLFW để đồng bộ cửa sổ ImGui với cửa sổ OS (thanh tiêu đề, cờ cho phép đổi kích thước, tự động đổi kích thước, v.v.)
- Activity. Cửa sổ không viền lấp đầy toàn bộ vùng viewport. Chủ yếu dùng cho ứng dụng Android
- Bao gồm mẫu GLFW sinh ra
main.cppthông thường - Bao gồm mẫu Android sinh ra
MainActivity.java+manifest+main.cpp
-
Hỗ trợ nhiều widget
- Các widget cơ bản như
Text,Checkbox,Combo,Button,Slider,ColorEdit - Các widget container như
Child,Table,CollapsingHeader,TreeNode,TabBar - Các widget đặc biệt như
Splitter - Chỉnh sửa
MenuBarvà menu ngữ cảnh CustomWidgetcho mã người dùng (placeholder)
- Các widget cơ bản như
-
Tạo layout bằng
SameLine/Spacing/NextColumn- Điều này đảm bảo widget luôn tuân thủ nhất quán khoảng cách giữa các mục và phần đệm khung
- Quan hệ cha-con rõ ràng giữa các widget và thứ tự của widget con là quan trọng
-
Hỗ trợ box layout
- Cơ chế layout mạnh mẽ và dễ dùng được xây dựng trên các tính năng của ImGui
- Có thể kéo giãn các widget có thể thay đổi kích thước theo chiều ngang hoặc dọc
- Có thể chèn spacer để căn chỉnh
- Có thể tạo layout ngang bằng helper layout dạng bảng
-
Hỗ trợ ràng buộc thuộc tính
- Biến lớp có thể được quản lý bằng trình wizard lớp đơn giản hoặc hộp thoại binding
- UI được tạo thông qua ràng buộc thuộc tính vừa động vừa có thể thiết kế cùng lúc
-
Sinh trình xử lý sự kiện và mã hỗ trợ khác
- Ví dụ, hộp thoại modal sẽ sinh hàm thành viên
OpenPopupvà callback lambda được gọi khi hộp thoại đóng lại - Trình xử lý sự kiện tách biệt mã người dùng với phần được sinh ra để trình thiết kế tiếp tục hoạt động
- Ví dụ, hộp thoại modal sẽ sinh hàm thành viên
-
Mã được sinh ra được phân tách bằng marker comment và người dùng có thể tự do thêm mã bổ sung
- Có thể dùng để gọi Draw cho popup phụ thuộc hoặc tính toán biến
- Có thể dùng
CustomWidgetđể gọi callback mã người dùng
-
Kiểu dáng cửa sổ đích có thể cấu hình hoàn toàn
- Ngoài các kiểu mặc định do ImGui cung cấp, người dùng có thể định nghĩa kiểu mới và lưu dưới dạng tệp INI trong thư mục
style - ImRAD tuân theo thiết lập kiểu khi thiết kế UI
- Các kiểu đã lưu có thể được nạp trong ứng dụng bằng một hàm
imrad.hđơn giản
- Ngoài các kiểu mặc định do ImGui cung cấp, người dùng có thể định nghĩa kiểu mới và lưu dưới dạng tệp INI trong thư mục
-
Mã được sinh ra có thể dùng ngay trong dự án và chỉ cần thư viện ImGui cùng một tệp header (
imrad.h)- Một số tính năng như MainWindow hoặc widget Image cần phụ thuộc GLFW. Có thể bật bằng cách biên dịch với
IMRAD_WITH_GLFW - Hiện tại widget Image cũng cần thư viện stb. Có thể biên dịch với
IMRAD_WITH_STBhoặc cung cấpLoadTextureFromFile() - Hỗ trợ tùy chọn cho thư viện phổ biến
fmtcó thể được bật bằng cách định nghĩaIMRAD_WITH_FMT. Điều này cho phép dùng cờ định dạng cho mọi thuộc tính chuỗi
- Một số tính năng như MainWindow hoặc widget Image cần phụ thuộc GLFW. Có thể bật bằng cách biên dịch với
-
ImRAD theo dõi các thay đổi của tệp đang mở để có thể thiết kế và chỉnh sửa tệp trong IDE
- Tính năng tự động lưu có thể hữu ích
Giấy phép
- Mã nguồn ImRAD được cấp phép theo GPL
- Mã được công cụ sinh ra không thuộc GPL và có thể được đưa vào dự án mã nguồn mở hoặc thương mại. Người dùng tự quyết định giấy phép
imrad.hcũng không thuộc giấy phép GPL
Tải xuống
Phiên bản mới nhất có thể được lấy bằng cách clone kho lưu trữ và build bằng CMake. Cần lấy cả submodule trong thư mục 3rdparty. Các phiên bản cũ hơn một chút có thể tải từ Releases
Tóm tắt của GN⁺
- ImRAD là một trình dựng GUI mạnh mẽ cho thư viện ImGui, hỗ trợ nhiều loại cửa sổ và widget
- Có thể thiết kế UI động và linh hoạt nhờ tính năng ràng buộc thuộc tính và sinh trình xử lý sự kiện
- Mã được sinh ra có thể dùng ngay trong dự án và hỗ trợ nhiều phụ thuộc khác nhau
- ImRAD đang được phát triển tích cực và cho phép người dùng tự do định nghĩa, lưu kiểu dáng
- Các dự án khác có tính năng tương tự gồm Qt Designer và Dear ImGui
1 bình luận
Ý kiến trên Hacker News