system settings
git clone https://git.lucas.co/cce-system-interface.git
Add status bar padding spinbox control
src/input_handler.rs | 3 +++
src/pages/interface.rs | 23 +++++++++++++++++++++++
src/renderer.rs | 3 +++
3 files changed, 29 insertions(+)
diff --git a/src/input_handler.rs b/src/input_handler.rs
index ead89e4..4535de3 100644
--- a/src/input_handler.rs
+++ b/src/input_handler.rs
@@ -258,6 +258,9 @@ impl SystemInterface {
if self.app.interface.status_box_corner_radius_spinbox.take_change() {
actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetStatusBoxCornerRadius(self.app.interface.status_box_corner_radius_spinbox.value as u16)));
}
+ if self.app.interface.status_padding_spinbox.take_change() {
+ actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetStatusPadding(self.app.interface.status_padding_spinbox.value as u16)));
+ }
if self.app.interface.button_padding_spinbox.take_change() {
actions.push(AppAction::Interface(pages::interface::InterfaceMessage::SetButtonPadding(self.app.interface.button_padding_spinbox.value as u16)));
diff --git a/src/pages/interface.rs b/src/pages/interface.rs
index a1f0e20..bdc07f5 100644
--- a/src/pages/interface.rs
+++ b/src/pages/interface.rs
@@ -289,6 +289,8 @@ pub struct InterfaceState {
pub status_box_background_color: [u8; 3],
pub status_box_corner_radius: u16,
pub status_box_corner_radius_spinbox: Spinbox,
+ pub status_padding: u16,
+ pub status_padding_spinbox: Spinbox,
pub nested_section_label_alignment: u8,
pub label_alignment_menu: Dropdown,
pub nested_section_label_offset: i16,
@@ -520,6 +522,8 @@ impl Default for InterfaceState {
status_box_background_color: [0x15, 0x15, 0x20],
status_box_corner_radius: 4,
status_box_corner_radius_spinbox: Spinbox::new(4, 0, 50, 1).with_label("Corner Radius").with_unit("px").with_config(CONFIG_PATH, "status_box_corner_radius"),
+ status_padding: 8,
+ status_padding_spinbox: Spinbox::new(8, 0, 32, 1).with_label("Padding").with_unit("px").with_config(CONFIG_PATH, "status_padding"),
custom_multicontrol: MultiControl::new("custom_parameters".to_string()).with_label("custom_parameters"),
}
}
@@ -562,6 +566,7 @@ pub enum InterfaceMessage {
SetLayerOpacity(f32),
SetStatusBoxBackgroundColor([u8; 3]),
SetStatusBoxCornerRadius(u16),
+ SetStatusPadding(u16),
SetPageMargin(u16),
SetGridMinColWidth(u16),
@@ -735,6 +740,7 @@ pub fn read_interface_config() -> InterfaceState {
let window_corner_radius = parse_surfaces_u16(&content, "window_corner_radius", 12);
let status_box_background_color = parse_color_from_key(&content, "status_box_background_color", [0x15, 0x15, 0x20]);
let status_box_corner_radius = parse_u16_from(&content, "status_box_corner_radius", 4);
+ let status_padding = parse_u16_from(&content, "status_padding", 8);
InterfaceState {
windows: read_windows_config(),
@@ -842,6 +848,8 @@ pub fn read_interface_config() -> InterfaceState {
status_box_background_color,
status_box_corner_radius,
status_box_corner_radius_spinbox: Spinbox::new(status_box_corner_radius as i32, 0, 50, 1).with_label("Corner Radius").with_unit("px").with_config(CONFIG_PATH, "status_box_corner_radius"),
+ status_padding,
+ status_padding_spinbox: Spinbox::new(status_padding as i32, 0, 32, 1).with_label("Padding").with_unit("px").with_config(CONFIG_PATH, "status_padding"),
nested_section_label_alignment,
label_alignment_menu: Dropdown::new(
vec!["Left".to_string(), "Center".to_string(), "Right".to_string()],
@@ -1873,6 +1881,11 @@ fn apply_status_box_corner_radius(radius: u16) {
status_interface_reload();
}
+fn apply_status_padding(padding: u16) {
+ write_config_value("status_padding", &padding.to_string());
+ status_interface_reload();
+}
+
fn apply_window_corner_radius(radius: u16) {
@@ -2499,6 +2512,9 @@ pub fn view(state: &mut InterfaceState, cx: f32, cy: f32, cw: f32, ch: f32, sec_
state.status_box_corner_radius_spinbox.value = state.status_box_corner_radius as i32;
sec.widget_full(&mut state.status_box_corner_radius_spinbox, 44.0, ctx);
sec.spacing(8.0);
+ state.status_padding_spinbox.value = state.status_padding as i32;
+ sec.widget_full(&mut state.status_padding_spinbox, 44.0, ctx);
+ sec.spacing(8.0);
});
// 4. Controls Section
@@ -3184,6 +3200,11 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
state.status_box_corner_radius_spinbox.value = radius as i32;
apply_status_box_corner_radius(radius);
}
+ InterfaceMessage::SetStatusPadding(padding) => {
+ state.status_padding = padding;
+ state.status_padding_spinbox.value = padding as i32;
+ apply_status_padding(padding);
+ }
InterfaceMessage::SetButtonPadding(padding) => {
state.button_padding = padding;
apply_button_padding(padding);
@@ -3432,6 +3453,7 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
let was_pl_cr_hovered = state.plate_corner_radius_spinbox.hovered();
let was_page_op_hovered = state.page_opacity_spinbox.hovered();
let was_layer_op_hovered = state.layer_opacity_spinbox.hovered();
+ let was_sp_pad_hovered = state.status_padding_spinbox.hovered();
let was_pm_hovered = state.page_margin_spinbox.hovered();
let was_gm_hovered = state.grid_min_col_width_spinbox.hovered();
@@ -3523,6 +3545,7 @@ pub fn update(state: &mut InterfaceState, msg: InterfaceMessage) {
state.menubar_opacity_spinbox.set_hovered(was_mo_hovered);
state.notification_opacity_spinbox.set_hovered(was_no_hovered);
state.window_corner_radius_spinbox.set_hovered(was_wcr_hovered);
+ state.status_padding_spinbox.set_hovered(was_sp_pad_hovered);
if typeface_loaded {
state.typeface_loaded = typeface_loaded;
diff --git a/src/renderer.rs b/src/renderer.rs
index d3e705e..fbc179e 100644
--- a/src/renderer.rs
+++ b/src/renderer.rs
@@ -143,6 +143,8 @@ impl SystemInterface {
self.app.interface.custom_multicontrol.set_parent(None, &mut self.ui_context);
self.app.interface.status_box_corner_radius_spinbox.clear_children(&mut self.ui_context);
self.app.interface.status_box_corner_radius_spinbox.set_parent(None, &mut self.ui_context);
+ self.app.interface.status_padding_spinbox.clear_children(&mut self.ui_context);
+ self.app.interface.status_padding_spinbox.set_parent(None, &mut self.ui_context);
self.app.interface.sans_box.clear_children(&mut self.ui_context); self.app.interface.sans_box.set_parent(None, &mut self.ui_context);
self.app.interface.serif_box.clear_children(&mut self.ui_context); self.app.interface.serif_box.set_parent(None, &mut self.ui_context);
@@ -303,6 +305,7 @@ impl SystemInterface {
link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.color_selectors[3], &mut self.ui_context);
link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.color_selectors[22], &mut self.ui_context);
link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.status_box_corner_radius_spinbox, &mut self.ui_context);
+ link_parent_child(&mut self.page_sec_containers[2], &mut self.app.interface.status_padding_spinbox, &mut self.ui_context);
// Section 3: Controls (parent of: Slider, MenuBar, Toggles, Spinbox, ColorSelector, Textbox, FontSelector)
link_parent_child(&mut self.page_sec_containers[3], &mut self.app.interface.color_selectors[5], &mut self.ui_context);