rust_widgets 0.0.2

Pure Rust cross-platform native GUI architecture
# rust_widgets

Pure Rust cross-platform native GUI architecture.

## Quick Start

```bash
cargo check
cargo check --examples
cargo run --example demo_main
```

## Runtime Profiles

- `default + full`: complete desktop-oriented stack.
- `embedded`: minimal runtime for embedded targets (excludes `xml`, `i18n`, `theme`, and `bindings` modules at compile time).
- `mobile-api`: reserved unified extension points for mobile targets.

## Feature Toggle Examples

```bash
# Full profile (default)
cargo check

# Embedded-lite profile
cargo check --no-default-features --features embedded

# Full profile + mobile API reservation
cargo check --features "full,mobile-api"

# Embedded profile + mobile API reservation
cargo check --no-default-features --features "embedded,mobile-api"
```

## v2 Runtime and Validation Workflow

- Lifecycle routing is now profile-explicit:
    - desktop (`not embedded`) routes `init/run/quit` directly to native platform backends
    - embedded routes lifecycle through `RenderEngine`
- Runtime route diagnostics can be enabled with:

```bash
RUST_WIDGETS_TRACE_RUNTIME=1 cargo run --example demo_main
```

- Unified validation scripts:

```bash
# default + examples + embedded profile matrix
tools/check_profiles.sh

# ABI consistency gate (version + symbols + generated header drift)
tools/check_abi.sh
```

## v3 Release Workflow

```bash
# demo smoke (default + embedded)
tools/smoke_demos.sh

# package validation without upload
cargo publish --dry-run
```

## Platform Scope

- Desktop: Windows (Win32), macOS (Cocoa), Linux (GTK), Harmony Desktop.
- Embedded: embedded Linux / embedded Harmony (lite profile path).
- Mobile: Android / iOS / Harmony mobile reserved API (architecture-ready, implementation to be expanded later).

## Core Modules

- `core`, `object`, `event`, `signal`, `widget`, `layout`, `xml`, `i18n`
- `platform`, `theme`, `style`, `bindings`
- `print`, `pdf`, `chart` (feature-gated)

## Documentation Index

- Changelog: [CHANGELOG.md]CHANGELOG.md
- Architecture: [docs/ARCHITECTURE.md]docs/ARCHITECTURE.md
- v3 handoff template: [docs/V3_HANDOFF_TEMPLATE.md]docs/V3_HANDOFF_TEMPLATE.md
- Commenting Guidelines: [docs/COMMENTING_GUIDELINES.md]docs/COMMENTING_GUIDELINES.md
- Demo catalog: [demos/README.md]demos/README.md
- Help (English): [docs/HELP.en.md]docs/HELP.en.md
- 帮助(简体中文): [docs/HELP.zh-CN.md]docs/HELP.zh-CN.md
- 幫助(繁體中文): [docs/HELP.zh-TW.md]docs/HELP.zh-TW.md
- Aide (Français): [docs/HELP.fr.md]docs/HELP.fr.md
- Справка (Русский): [docs/HELP.ru.md]docs/HELP.ru.md
- C ABI Quickstart: [docs/C_ABI_QUICKSTART.md]docs/C_ABI_QUICKSTART.md
- Harmony Native Bridge: [docs/HARMONY_NATIVE_BRIDGE.md]docs/HARMONY_NATIVE_BRIDGE.md
- 鸿蒙原生桥接(简体中文): [docs/HARMONY_NATIVE_BRIDGE.zh-CN.md]docs/HARMONY_NATIVE_BRIDGE.zh-CN.md
- 鴻蒙原生橋接(繁體中文): [docs/HARMONY_NATIVE_BRIDGE.zh-TW.md]docs/HARMONY_NATIVE_BRIDGE.zh-TW.md
- Pont natif Harmony (Français): [docs/HARMONY_NATIVE_BRIDGE.fr.md]docs/HARMONY_NATIVE_BRIDGE.fr.md
- Нативный мост Harmony (Русский): [docs/HARMONY_NATIVE_BRIDGE.ru.md]docs/HARMONY_NATIVE_BRIDGE.ru.md

## Demo Highlights

- Main and architecture demos: `demo_main`, `demo_layout`, `demo_xml`, `demo_i18n`
- UI control demos: window/dialog/popup, input controls, data-view controls,
  containers, menu/tool/status controls, table/grid/chart/canvas

For the complete categorized list and command set, open [demos/README.md](demos/README.md).

## C ABI Samples

- Header: [examples/rust_widgets.h]examples/rust_widgets.h
- Typed trigger polling demo: [examples/c_abi_poll_demo.c]examples/c_abi_poll_demo.c
- Harmony NAPI bridge sample: [examples/harmony_napi_bridge_sample.c]examples/harmony_napi_bridge_sample.c
- Harmony NAPI bridge flow: [examples/harmony_napi_bridge_flow.md]examples/harmony_napi_bridge_flow.md
- Full build/run guide: [docs/C_ABI_QUICKSTART.md]docs/C_ABI_QUICKSTART.md
- Harmony direct callback bridge: [docs/HARMONY_NATIVE_BRIDGE.md]docs/HARMONY_NATIVE_BRIDGE.md

Build and run (from project root):

```bash
# 1) Build dynamic library
cargo build

# 2) Compile C sample (macOS)
clang -Iexamples examples/c_abi_poll_demo.c -Ltarget/debug -lrust_widgets -o target/debug/c_abi_poll_demo

# 3) Run (macOS)
DYLD_LIBRARY_PATH=target/debug ./target/debug/c_abi_poll_demo
```

Linux:

```bash
LD_LIBRARY_PATH=target/debug ./target/debug/c_abi_poll_demo
```

Windows (MSYS2/MinGW style): use `set PATH=target\\debug;%PATH%` before running the executable.