No description
Find a file
Jason Lee 327d40e0e0
chore: Upgrade GPUI 3 (#587)
The pervious version has keep on
[gpui2](https://github.com/longbridge/gpui-component/tree/gpui2) branch,
if there need to use.

Ref https://github.com/zed-industries/zed/pull/22632

## Prepare

### Generate index.scip

```bash
rust-analyzer scip ./ > index.scip
```

### Get [refactor](https://github.com/zed-industries/refactor)

```bash
https://github.com/zed-industries/refactor.git
```

## Refactor exist code

```bash
cd refactor
cargo run -- ~/work/gpui-component
```

Then will get result if successed:

```
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s
     Running `target/debug/refactor /Users/jason/work/gpui-component`
Loaded 115 SCIP documents
Processing files starting with focus path: ""
Changed 90 files
```

-------------

## Changes

```diff
- View<T>
- Model<T>
+ Entity<T>

- WeakView<T>
+ WeakEntity<T>

- FocusableView
+ Focusable

- cx.bounds()
+ window.bounds()
- cx.refresh()
+ window.refresh()
- cx.focused()
+ window.focused(cx)
- cx.with_optional_element_state
- window.with_optional_element_state
```

```diff
- &mut WindowContext
+ &mut Window, &mut App

- cx: &mut WindowContext
+ window: &mut Window, cx: &mut App

- &mut ViewContext<
+ &mut Window, &mut Context<

- cx: &mut ViewContext<
+ window: &mut Window, cx: &mut Context<
```

```diff
- cx.spawn(|_, mut cx| async move { 
+ cx.spawn_in(window, |_, mut cx| async move {
- cx.dispatch_action(Box::new(...))
+ window.dispatch_action(Box::new(...), cx)
```

`cx.spawn`

```diff
- cx.spawn(|view, mut cx| async move {
+ cx.spawn_in(window, |view, mut window| async move {
+     _ = view.update_in(&mut window, move |view, window, cx| {
```
2025-01-27 03:58:48 +08:00
.cargo windows: Set the default stack size to 8M on Windows. (#228) 2024-09-09 13:51:10 +08:00
.github title_bar: Fix move window support for Linux. (#368) 2024-10-21 15:23:36 +08:00
assets table: Improve sort icon color and fix stripe row display. (#578) 2025-01-26 16:25:34 +08:00
crates chore: Upgrade GPUI 3 (#587) 2025-01-27 03:58:48 +08:00
script script: Fix install script on Ubuntu. (#366) 2024-10-18 23:14:55 +08:00
.gitignore chore: Upgrade GPUI 3 (#587) 2025-01-27 03:58:48 +08:00
Cargo.lock chore: Upgrade GPUI 3 (#587) 2025-01-27 03:58:48 +08:00
Cargo.toml chore: Upgrade GPUI 3 (#587) 2025-01-27 03:58:48 +08:00
DEVELOPMENT tiles: Add Tiles (#435) 2024-12-16 20:33:14 +08:00
LICENSE-APACHE chore: Update LICENSE-APACHE file to add copyright info. 2024-12-13 11:46:00 +08:00
README.md story: Add TitleBar to examples. (#586) 2025-01-26 15:07:34 +08:00
refactor.sh chore: Upgrade GPUI 3 (#587) 2025-01-27 03:58:48 +08:00

GPUI Component

This is still an early stage of development, we may change API frequently. But the features is ok to use, you must keep tracking our changes.

UI components for building fantastic desktop application by using GPUI.

Features

  • Theming
  • TitleBar
  • Dock, Tiles
  • TextInput, TextArea, OtpInput
  • Button, Link
  • Label
  • Icon
  • Checkbox, Radio, Switch
  • Dropdown
  • Tabs
  • Notification
  • Tooltip
  • Popover
  • Resizable
  • Progress & Indicator
  • Slider
  • Skeleton
  • DatePicker, DateRangePicker, Calendar
  • ColorPicker
  • List
  • Table
  • Menu
  • Drawer
  • Modal
  • WebView
  • Accordion
  • Sidebar
  • Breadcrumb
  • Badge

Showcase

Here is the first application: Longbridge that is built by using GPUI Component.

It still under development, not published yet.

SCR-20250107-kagq SCR-20250107-kaky SCR-20250107-kapd SCR-20250107-kfvk

We build multi-themes support in application, this feature is not including in GPUI Component. It is based on Theme feature, so it easy to do.

Usage

GPUI and GPUI Component still in development, so we need add dependency by git.

And GPUI Component depends on gpui by special version (It keep updated to upstream) for including WebView support.

gpui = { git = "https://github.com/huacnlee/zed.git", branch = "export-platform-window" }
ui = { git = "https://github.com/longbridge/gpui-component.git" }

More usage can be found in story directory.

Demo

If you want to see the demo, here is a some demo applications.

Development

cargo run

More examples can be found in examples directory.

Checkout DEVELOPMENT to see more details.

License

Apache-2.0