file manager
git clone https://git.lucas.co/cce-files.git
refactor: update dependencies and rename clear-ui to cce-ui
Cargo.toml | 2 +-
src/main.rs | 90 ++++++++++++++++++++++++++++-----------------------
src/pages/browse.rs | 32 +++++++++---------
src/pages/mod.rs | 8 ++---
src/pages/network.rs | 8 ++---
src/pages/preview.rs | 8 ++---
src/pages/settings.rs | 10 +++---
7 files changed, 83 insertions(+), 75 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
index ce53d62..937eadd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2024"
[dependencies]
-clear-ui = { path = "../clear-ui" }
+cce-ui = { path = "../cce-ui" }
wayland-client = { version = "0.31", features = ["system"] }
wgpu = "24"
bytemuck = { version = "1", features = ["derive"] }
diff --git a/src/main.rs b/src/main.rs
index 94b95ed..8d464a5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,9 +4,9 @@ mod services;
use wayland_client::QueueHandle;
use glyphon::FontSystem;
-use clear_ui::engine::{Application, LogicalPosition, LogicalSize, WindowSettings};
-use clear_ui::widget::{MouseButton, ElementState, MouseScrollDelta, KeyEvent, TextItem, Element, PageSelector, MenuController};
-use clear_ui::widget::{GraphController, PathController};
+use cce_ui::engine::{Application, LogicalPosition, LogicalSize, WindowSettings};
+use cce_ui::widget::{MouseButton, ElementState, MouseScrollDelta, KeyEvent, TextItem, Element, PageSelector, MenuController};
+use cce_ui::widget::{GraphController, PathController};
use notify::{Watcher, RecommendedWatcher, RecursiveMode, Config};
@@ -58,16 +58,16 @@ struct FilesystemApp {
height: u32,
scale_factor: f64,
sender: calloop::channel::Sender<Message>,
- page_buttons: Vec<(clear_ui::widget::Button, Message)>,
+ page_buttons: Vec<(cce_ui::widget::Button, Message)>,
cursor_x: f32,
cursor_y: f32,
- menubar: clear_ui::widget::MenuBar,
+ menubar: cce_ui::widget::MenuBar,
just_initialized: bool,
- ui_context: clear_ui::context::UiContext,
+ ui_context: cce_ui::context::UiContext,
watcher: Option<notify::RecommendedWatcher>,
fs_service: crate::services::fs::FsService,
context_menu: ContextMenu,
- open_with_dialog: Option<(std::path::PathBuf, clear_ui::widget::TextBox)>,
+ open_with_dialog: Option<(std::path::PathBuf, cce_ui::widget::TextBox)>,
}
// ── Messages ────────────────────────────────────────────────────────
@@ -141,8 +141,8 @@ impl FilesystemApp {
let mut widgets = Vec::new();
let mut text_items = Vec::new();
- clear_ui::widget::hover_animation::reset_frame_registration();
- clear_ui::widget::hover_animation::set_cursor_pos(self.cursor_x, self.cursor_y);
+ cce_ui::widget::hover_animation::reset_frame_registration();
+ cce_ui::widget::hover_animation::set_cursor_pos(self.cursor_x, self.cursor_y);
let mut pc = pages::PageContent::new();
@@ -163,7 +163,7 @@ impl FilesystemApp {
};
// Full window page background
- let bg_color = clear_ui::color::page_low_color();
+ let bg_color = cce_ui::color::page_low_color();
pc.rect(bg_color, 0.0, 0.0, self.width as f32, self.height as f32);
let mut menubar_pc = pages::PageContent::new();
@@ -171,7 +171,7 @@ impl FilesystemApp {
// 1. Render the Menubar widget directly
let page_idx = Page::ALL.iter().position(|&p| p == self.current_page).unwrap_or(0);
self.menubar.menus.set_selected(Some(page_idx));
- clear_ui::layout::render_widget(&mut menubar_pc, &mut self.menubar, 0.0, 0.0, sidebar_w, self.height as f32, &mut self.ui_context);
+ cce_ui::layout::render_widget(&mut menubar_pc, &mut self.menubar, 0.0, 0.0, sidebar_w, self.height as f32, &mut self.ui_context);
}
// 3. Draw Page content
@@ -230,9 +230,9 @@ impl FilesystemApp {
let r_f = col[0] as f32 / 255.0;
let g_f = col[1] as f32 / 255.0;
let b_f = col[2] as f32 / 255.0;
- let linear_col = clear_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
- if clear_ui::color::node_color() != linear_col {
- clear_ui::color::set_node_color(linear_col);
+ let linear_col = cce_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
+ if cce_ui::color::node_color() != linear_col {
+ cce_ui::color::set_node_color(linear_col);
}
}
}
@@ -448,7 +448,7 @@ impl FilesystemApp {
// Background
widgets.push(AppWidget {
x: cx + 1.0, y: cy + 1.0, w: cw - 2.0, h: ch - 2.0,
- color: clear_ui::color::popover_bg_color(), hover_color: clear_ui::color::popover_bg_color(),
+ color: cce_ui::color::popover_bg_color(), hover_color: cce_ui::color::popover_bg_color(),
hovering: false,
action: None,
});
@@ -645,20 +645,20 @@ impl FilesystemApp {
impl Application for FilesystemApp {
type Message = Message;
- fn new(_qh: &QueueHandle<clear_ui::engine::EngineState<Self>>, sender: calloop::channel::Sender<Self::Message>) -> Self {
+ fn new(_qh: &QueueHandle<cce_ui::engine::EngineState<Self>>, sender: calloop::channel::Sender<Self::Message>) -> Self {
// Parse command line arguments
let args: Vec<String> = std::env::args().collect();
let select_directory = args.iter().any(|arg| arg == "--select-dir");
let save_mode = args.iter().any(|arg| arg == "--save");
let select_mode = save_mode || args.iter().any(|arg| arg == "--select" || arg == "--select-dir");
- clear_ui::scale::set_scale_factor(1.0);
+ cce_ui::scale::set_scale_factor(1.0);
let browse = pages::browse::BrowseState::default();
let current_dir = browse.current_dir.clone();
let pages_names = Page::ALL.iter().map(|p| p.label().to_string()).collect::<Vec<_>>();
- let mut menubar = clear_ui::widget::MenuBar::new(0.0, 0.0, 56.0, 0.0)
+ let mut menubar = cce_ui::widget::MenuBar::new(0.0, 0.0, 56.0, 0.0)
.with_vertical(true);
menubar.set_sidebar_label(Some("CLEAR".to_string()));
menubar.set_pages(pages_names);
@@ -690,7 +690,7 @@ impl Application for FilesystemApp {
cursor_y: 0.0,
menubar,
just_initialized: true,
- ui_context: clear_ui::context::UiContext::new(),
+ ui_context: cce_ui::context::UiContext::new(),
watcher: None,
fs_service,
context_menu: ContextMenu {
@@ -858,7 +858,7 @@ impl Application for FilesystemApp {
std::process::exit(1);
}
Message::PromptOpenWith(path) => {
- let mut tb = clear_ui::widget::TextBox::new(String::new())
+ let mut tb = cce_ui::widget::TextBox::new(String::new())
.with_max_width(None)
.with_placeholder("Program/Command");
tb.focus();
@@ -920,8 +920,8 @@ impl Application for FilesystemApp {
let r_f = col[0] as f32 / 255.0;
let g_f = col[1] as f32 / 255.0;
let b_f = col[2] as f32 / 255.0;
- let linear_col = clear_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
- clear_ui::color::set_node_color(linear_col);
+ let linear_col = cce_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
+ cce_ui::color::set_node_color(linear_col);
*needs_rebuild = true;
self.needs_rebuild = true;
}
@@ -933,7 +933,7 @@ impl Application for FilesystemApp {
self.width = size.width as u32;
self.height = size.height as u32;
self.scale_factor = scale;
- clear_ui::scale::set_scale_factor(scale as f32);
+ cce_ui::scale::set_scale_factor(scale as f32);
self.rebuild_layout();
}
@@ -947,8 +947,8 @@ impl Application for FilesystemApp {
}
fn clear_color(&self) -> [f32; 4] {
- let mut color = clear_ui::color::page_low_color();
- if let Some(opacity) = clear_ui::color::read_opacity_if_configured() {
+ let mut color = cce_ui::color::page_low_color();
+ if let Some(opacity) = cce_ui::color::read_opacity_if_configured() {
color[3] = opacity;
}
color
@@ -1387,8 +1387,8 @@ impl Application for FilesystemApp {
let r_f = col[0] as f32 / 255.0;
let g_f = col[1] as f32 / 255.0;
let b_f = col[2] as f32 / 255.0;
- let linear_col = clear_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
- clear_ui::color::set_node_color(linear_col);
+ let linear_col = cce_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
+ cce_ui::color::set_node_color(linear_col);
}
changed = true;
}
@@ -1487,12 +1487,12 @@ impl Application for FilesystemApp {
}
if let Some((_path, textbox)) = &mut self.open_with_dialog {
- if event.logical_key == clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Enter) {
+ if event.logical_key == cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Enter) {
textbox.unfocus();
self.ui_context.clear_focus();
return Some(Message::OpenWithSubmit);
}
- if event.logical_key == clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Escape) {
+ if event.logical_key == cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Escape) {
textbox.unfocus();
self.ui_context.clear_focus();
return Some(Message::OpenWithCancel);
@@ -1504,8 +1504,16 @@ impl Application for FilesystemApp {
return None;
}
+ if self.current_page == Page::Network {
+ if self.network.graph.keyboard_input(event, &mut self.ui_context) {
+ *needs_rebuild = true;
+ self.needs_rebuild = true;
+ return None;
+ }
+ }
+
if self.context_menu.visible {
- if event.logical_key == clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Escape) {
+ if event.logical_key == cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Escape) {
self.context_menu.visible = false;
*needs_rebuild = true;
self.needs_rebuild = true;
@@ -1522,8 +1530,8 @@ impl Application for FilesystemApp {
let r_f = col[0] as f32 / 255.0;
let g_f = col[1] as f32 / 255.0;
let b_f = col[2] as f32 / 255.0;
- let linear_col = clear_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
- clear_ui::color::set_node_color(linear_col);
+ let linear_col = cce_ui::color::to_linear([r_f, g_f, b_f, 1.0]);
+ cce_ui::color::set_node_color(linear_col);
}
return None;
}
@@ -1548,7 +1556,7 @@ impl Application for FilesystemApp {
if self.browse.save_name_box.keyboard_input(event, &mut self.ui_context) {
*needs_rebuild = true;
self.needs_rebuild = true;
- if event.logical_key == clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Enter) {
+ if event.logical_key == cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Enter) {
self.browse.save_name_box.unfocus();
self.ui_context.clear_focus();
return Some(Message::SelectOpen);
@@ -1560,22 +1568,22 @@ impl Application for FilesystemApp {
// Global key navigation
if self.current_page == Page::Browse {
let key_char = match &event.logical_key {
- clear_ui::widget::Key::Character(c) => Some(c.as_str()),
+ cce_ui::widget::Key::Character(c) => Some(c.as_str()),
_ => None,
};
match &event.logical_key {
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::ArrowUp) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::ArrowUp) => {
if let Some(index) = pages::browse::next_selection_index(&self.browse, pages::browse::BrowseNavigation::Up) {
return Some(Message::Browse(pages::browse::BrowseMessage::SelectEntry(index)));
}
}
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::ArrowDown) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::ArrowDown) => {
if let Some(index) = pages::browse::next_selection_index(&self.browse, pages::browse::BrowseNavigation::Down) {
return Some(Message::Browse(pages::browse::BrowseMessage::SelectEntry(index)));
}
}
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Enter) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Enter) => {
if let Some(idx) = self.browse.selected {
if let Some(entry) = self.browse.entries.get(idx) {
if entry.is_dir && !is_project_dir(&entry.path) {
@@ -1593,17 +1601,17 @@ impl Application for FilesystemApp {
return Some(Message::SelectOpen);
}
}
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Delete) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Delete) => {
if let Some(idx) = self.browse.selected {
return Some(Message::Browse(pages::browse::BrowseMessage::DeleteEntry(idx)));
}
}
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Escape) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Escape) => {
if self.select_mode {
std::process::exit(1);
}
}
- clear_ui::widget::Key::Named(clear_ui::widget::NamedKey::Backspace) => {
+ cce_ui::widget::Key::Named(cce_ui::widget::NamedKey::Backspace) => {
if let Some(parent) = self.browse.current_dir.parent() {
return Some(Message::Browse(pages::browse::BrowseMessage::NavigateToPath(parent.to_path_buf())));
}
@@ -1655,5 +1663,5 @@ impl Application for FilesystemApp {
#[tokio::main]
async fn main() {
- clear_ui::engine::run::<FilesystemApp>();
+ cce_ui::engine::run::<FilesystemApp>();
}
diff --git a/src/pages/browse.rs b/src/pages/browse.rs
index 67bd6f1..6eccb8c 100644
--- a/src/pages/browse.rs
+++ b/src/pages/browse.rs
@@ -3,8 +3,8 @@ use std::os::unix::fs::PermissionsExt;
use std::path::{Path, PathBuf};
use crate::pages::PageContent;
-use clear_ui::widget::{Element, Breadcrumb, PathController};
-use clear_ui::layout::{ColumnLayout, LayoutStrategy};
+use cce_ui::widget::{Element, Breadcrumb, PathController};
+use cce_ui::layout::{ColumnLayout, LayoutStrategy};
// ── Data ────────────────────────────────────────────────────────────
@@ -24,11 +24,11 @@ pub struct BrowseState {
pub all_entries: Vec<DirEntry>,
pub entries: Vec<DirEntry>,
pub show_hidden: bool,
- pub search_box: clear_ui::widget::TextBox,
- pub list_box: clear_ui::widget::ScrollingList,
+ pub search_box: cce_ui::widget::TextBox,
+ pub list_box: cce_ui::widget::ScrollingList,
pub selected: Option<usize>,
pub breadcrumb: Breadcrumb,
- pub save_name_box: clear_ui::widget::TextBox,
+ pub save_name_box: cce_ui::widget::TextBox,
}
impl Default for BrowseState {
@@ -42,13 +42,13 @@ impl Default for BrowseState {
all_entries: Vec::new(),
entries: Vec::new(),
show_hidden: false,
- search_box: clear_ui::widget::TextBox::new(String::new())
+ search_box: cce_ui::widget::TextBox::new(String::new())
.with_max_width(None)
.with_placeholder("Search"),
- list_box: clear_ui::widget::ScrollingList::new(28.0, 2.0),
+ list_box: cce_ui::widget::ScrollingList::new(28.0, 2.0),
selected: None,
breadcrumb,
- save_name_box: clear_ui::widget::TextBox::new(String::new()).with_max_width(None),
+ save_name_box: cce_ui::widget::TextBox::new(String::new()).with_max_width(None),
};
state.list_box.scroll_box.show_border = false;
state.update_breadcrumb();
@@ -156,7 +156,7 @@ pub fn next_selection_index(state: &BrowseState, direction: BrowseNavigation) ->
// ── View ────────────────────────────────────────────────────────────
-pub fn view(state: &mut BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, select_mode: bool, ctx: &mut clear_ui::context::UiContext) -> PageContent {
+pub fn view(state: &mut BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, select_mode: bool, ctx: &mut cce_ui::context::UiContext) -> PageContent {
let mut pc = PageContent::new();
let text_dim = [0.53, 0.53, 0.60, 1.0];
let heading_fg = [0.56, 0.83, 0.56, 1.0]; // Color::from_rgb8(0x8f, 0xd4, 0x8f)
@@ -179,14 +179,14 @@ pub fn view(state: &mut BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, select_
// 1. Allocate and render Breadcrumb
let (bx, by, bw, bh) = layout.allocate(client_w, breadcrumb_h);
- clear_ui::layout::render_widget(&mut pc, &mut state.breadcrumb, bx, by, bw, bh, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.breadcrumb, bx, by, bw, bh, ctx);
// 2. Allocate and render ScrollingList (ScrollBox)
// The scrolling list height occupies the remaining vertical space:
// list_h = client_h - breadcrumb_h - textbox_h - (2 * gap)
let list_h_val = client_h - breadcrumb_h - textbox_h - 2.0 * gap;
let (list_x, list_y, list_w, list_h) = layout.allocate(client_w, list_h_val);
- clear_ui::layout::render_widget(&mut pc, &mut state.list_box, list_x, list_y, list_w, list_h, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.list_box, list_x, list_y, list_w, list_h, ctx);
state.list_box.update_bounds(state.entries.len(), list_y, list_h);
@@ -212,17 +212,17 @@ pub fn view(state: &mut BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, select_
let search_x = tx;
let search_w = sec_w;
state.search_box.set_row_rect(search_x, search_w);
- clear_ui::layout::render_widget(&mut pc, &mut state.search_box, search_x, ty, search_w, th, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.search_box, search_x, ty, search_w, th, ctx);
// Right column: File Name
let filename_x = tx + sec_w + 12.0;
let filename_w = sec_w;
state.save_name_box.set_row_rect(filename_x, filename_w);
- clear_ui::layout::render_widget(&mut pc, &mut state.save_name_box, filename_x, ty, filename_w, th, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.save_name_box, filename_x, ty, filename_w, th, ctx);
} else {
// Full width search textbox
state.search_box.set_row_rect(tx, tw);
- clear_ui::layout::render_widget(&mut pc, &mut state.search_box, tx, ty, tw, th, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.search_box, tx, ty, tw, th, ctx);
}
for (idx, entry) in state.entries.iter().enumerate() {
@@ -429,8 +429,8 @@ mod tests {
modified: String::new(),
})
.collect(),
- search_box: clear_ui::widget::TextBox::new(String::new()).with_max_width(None),
- list_box: clear_ui::widget::ScrollingList::new(28.0, 2.0),
+ search_box: cce_ui::widget::TextBox::new(String::new()).with_max_width(None),
+ list_box: cce_ui::widget::ScrollingList::new(28.0, 2.0),
..BrowseState::default()
}
}
diff --git a/src/pages/mod.rs b/src/pages/mod.rs
index b1c229f..efa5e93 100644
--- a/src/pages/mod.rs
+++ b/src/pages/mod.rs
@@ -3,7 +3,7 @@ pub mod preview;
pub mod network;
pub mod settings;
-use clear_ui::layout::RenderTarget;
+use cce_ui::layout::RenderTarget;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Page {
@@ -39,7 +39,7 @@ impl Page {
pub struct PageContent {
pub rects: Vec<([f32; 4], f32, f32, f32, f32)>,
pub texts: Vec<(String, f32, f32, f32, [f32; 4], Option<String>, Option<[f32; 4]>)>,
- pub buttons: Vec<(clear_ui::widget::Button, crate::Message)>,
+ pub buttons: Vec<(cce_ui::widget::Button, crate::Message)>,
}
impl PageContent {
@@ -75,7 +75,7 @@ impl PageContent {
label_color: [f32; 4],
action: crate::Message,
) {
- let btn = clear_ui::widget::Button::new(x, y, w, h)
+ let btn = cce_ui::widget::Button::new(x, y, w, h)
.with_label(label)
.with_bg(bg)
.with_hover_bg(hover_bg)
@@ -95,7 +95,7 @@ impl PageContent {
label_color: [f32; 4],
action: crate::Message,
) {
- let btn = clear_ui::widget::Button::new(x, y, w, h)
+ let btn = cce_ui::widget::Button::new(x, y, w, h)
.with_label(label)
.with_bg(bg)
.with_hover_bg(hover_bg)
diff --git a/src/pages/network.rs b/src/pages/network.rs
index faf8e5e..fbb6995 100644
--- a/src/pages/network.rs
+++ b/src/pages/network.rs
@@ -1,7 +1,7 @@
use std::path::{Path, PathBuf};
use crate::pages::PageContent;
use crate::pages::browse::{BrowseState, DirEntry};
-use clear_ui::widget::{Graph, GraphNode, Element, Breadcrumb, GraphController, PathController};
+use cce_ui::widget::{Graph, GraphNode, Element, Breadcrumb, GraphController, PathController};
pub struct NetworkState {
pub graph: Graph,
@@ -112,11 +112,11 @@ impl NetworkState {
}
}
-pub fn view(state: &mut NetworkState, browse: &BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, ctx: &mut clear_ui::context::UiContext) -> PageContent {
+pub fn view(state: &mut NetworkState, browse: &BrowseState, cx: f32, cy: f32, cw: f32, ch: f32, ctx: &mut cce_ui::context::UiContext) -> PageContent {
let mut pc = PageContent::new();
// Render the Breadcrumb widget into PageContent
- clear_ui::layout::render_widget(&mut pc, &mut state.breadcrumb, cx + 4.0, cy + 6.0, cw - 16.0, 24.0, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.breadcrumb, cx + 4.0, cy + 6.0, cw - 16.0, 24.0, ctx);
// Check if directory changed, or if last_dir is empty, and repopulate
if state.last_dir != browse.current_dir || state.graph.get_nodes().is_empty() {
@@ -162,7 +162,7 @@ pub fn view(state: &mut NetworkState, browse: &BrowseState, cx: f32, cy: f32, cw
}
// Render the Graph widget into PageContent, shifted down by 28.0 to leave room for the breadcrumb
- clear_ui::layout::render_widget(&mut pc, &mut state.graph, cx, cy + 28.0, cw, ch - 28.0, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.graph, cx, cy + 28.0, cw, ch - 28.0, ctx);
pc
}
diff --git a/src/pages/preview.rs b/src/pages/preview.rs
index d2dbbc7..27baaa4 100644
--- a/src/pages/preview.rs
+++ b/src/pages/preview.rs
@@ -1,7 +1,7 @@
use std::path::PathBuf;
use crate::pages::PageContent;
-use clear_ui::layout::SectionContext;
+use cce_ui::layout::SectionContext;
// ── Data ────────────────────────────────────────────────────────────
@@ -30,7 +30,7 @@ pub enum PreviewMessage {
impl PreviewState {
- pub fn handle_mouse_wheel(&mut self, delta: &clear_ui::widget::MouseScrollDelta, ch: f32) -> bool {
+ pub fn handle_mouse_wheel(&mut self, delta: &cce_ui::widget::MouseScrollDelta, ch: f32) -> bool {
let content = match &self.content_preview {
Some(c) => c,
None => return false,
@@ -53,10 +53,10 @@ impl PreviewState {
let max_scroll = total_lines.saturating_sub(max_visible_lines);
let scroll_speed = 3.0;
let diff = match delta {
- clear_ui::widget::MouseScrollDelta::LineDelta(_, y) => {
+ cce_ui::widget::MouseScrollDelta::LineDelta(_, y) => {
-y * scroll_speed
}
- clear_ui::widget::MouseScrollDelta::PixelDelta(pos) => {
+ cce_ui::widget::MouseScrollDelta::PixelDelta(pos) => {
-pos.y as f32 / 15.0
}
};
diff --git a/src/pages/settings.rs b/src/pages/settings.rs
index 9b70920..b9dcfa8 100644
--- a/src/pages/settings.rs
+++ b/src/pages/settings.rs
@@ -1,6 +1,6 @@
use crate::pages::PageContent;
-use clear_ui::widget::{ColorSelector, Element};
-use clear_ui::layout::SectionContext;
+use cce_ui::widget::{ColorSelector, Element};
+use cce_ui::layout::SectionContext;
// ── Data ────────────────────────────────────────────────────────────
@@ -10,7 +10,7 @@ pub struct SettingsState {
impl Default for SettingsState {
fn default() -> Self {
- let col = clear_ui::color::node_color();
+ let col = cce_ui::color::node_color();
let col_u8 = [
(col[0] * 255.0) as u8,
(col[1] * 255.0) as u8,
@@ -77,7 +77,7 @@ const SECTIONS: &[SectionData] = &[
// ── View ────────────────────────────────────────────────────────────
-pub fn view(state: &mut SettingsState, cx: f32, cy: f32, cw: f32, _ch: f32, ctx: &mut clear_ui::context::UiContext) -> PageContent {
+pub fn view(state: &mut SettingsState, cx: f32, cy: f32, cw: f32, _ch: f32, ctx: &mut cce_ui::context::UiContext) -> PageContent {
let mut pc = PageContent::new();
let accent = [0.36, 0.56, 0.38, 1.0];
let text_fg = [0.83, 0.83, 0.83, 1.0];
@@ -90,7 +90,7 @@ pub fn view(state: &mut SettingsState, cx: f32, cy: f32, cw: f32, _ch: f32, ctx:
let cs_y = cy + 48.0;
state.color_selector.set_row_rect(cx + 12.0, cs_w);
- clear_ui::layout::render_widget(&mut pc, &mut state.color_selector, cx + 12.0, cs_y, cs_w, cs_h, ctx);
+ cce_ui::layout::render_widget(&mut pc, &mut state.color_selector, cx + 12.0, cs_y, cs_w, cs_h, ctx);
let y = cs_y + cs_h + 32.0;