refactor(ui): remove the viewport navigation bar

Sağ kenardaki dikey orbit/pan/zoom/zoom-extents araç çubuğu tümüyle
kaldırıldı: viewport render'ı, overlay::nav_toolbar fonksiyonu,
show_navbar state + ToggleNavbar mesajı/handler'ı, NAVBAR komutu, View
şeridindeki "Navigation Bar" aracı ve navbar modülü/ikonu. Aynı
gezinme işlemleri komutlar (3DORBIT, PAN, ZOOM*) ve ViewCube üzerinden
erişilebilir durumda.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-05-27 17:49:23 +03:00
commit fda0f2dbb9
8 changed files with 3 additions and 114 deletions

View file

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="9" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="3" x2="12" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="16" x2="12" y2="21" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="3" y1="12" x2="8" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="16" y1="12" x2="21" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<text x="9.5" y="7" font-size="4.5" fill="#4cc9f0" stroke="none">N</text>
</svg>

Before

Width:  |  Height:  |  Size: 604 B

View file

@ -4756,11 +4756,6 @@ impl OpenCADStudio {
return Task::done(Message::ToggleViewCube);
}
// ── NAVBAR — toggle navigation toolbar visibility ────────────────────
"NAVBAR" => {
return Task::done(Message::ToggleNavbar);
}
// ── PROPERTIES — toggle Properties panel visibility ──────────────────
"PROPERTIES" | "PR" | "PROPS" => {
return Task::done(Message::ToggleProperties);

View file

@ -74,8 +74,6 @@ pub(super) struct OpenCADStudio {
show_ucs_icon: bool,
/// Whether the ViewCube 3D gizmo is visible in model space (NAVVCUBE).
show_viewcube: bool,
/// Whether the navigation toolbar is shown in the viewport (NAVBAR).
show_navbar: bool,
/// Whether the Properties panel is shown on the left (PROPERTIES).
show_properties: bool,
/// Whether the document file tabs are shown at the top (FILETAB).
@ -408,8 +406,6 @@ pub enum Message {
ToggleGridSnap,
/// Toggle the ViewCube 3D gizmo visibility (NAVVCUBE).
ToggleViewCube,
/// Toggle the navigation toolbar visibility (NAVBAR).
ToggleNavbar,
/// Toggle the Properties panel visibility (PROPERTIES).
ToggleProperties,
/// Toggle the document file tabs at the top (FILETAB).
@ -746,7 +742,6 @@ impl OpenCADStudio {
dyn_input: true,
show_ucs_icon: true,
show_viewcube: true,
show_navbar: true,
show_properties: true,
show_file_tabs: true,
show_layout_tabs: true,

View file

@ -2720,10 +2720,6 @@ impl OpenCADStudio {
self.show_viewcube ^= true;
Task::none()
}
Message::ToggleNavbar => {
self.show_navbar ^= true;
Task::none()
}
Message::ToggleProperties => {
self.show_properties ^= true;
Task::none()

View file

@ -529,24 +529,6 @@ impl OpenCADStudio {
.height(Fill)
};
if self.show_navbar && !tab.is_start {
// Anchor the nav toolbar to the vertical centre of the
// viewport area, flush against the right edge with a small
// gutter, so it stays aligned no matter how tall the
// window is.
let nav = container(overlay::nav_toolbar())
.align_right(Fill)
.align_y(iced::alignment::Vertical::Center)
.height(Fill)
.padding(iced::Padding {
top: 0.0,
right: 8.0,
bottom: 0.0,
left: 0.0,
});
viewport_stack = viewport_stack.push(nav);
}
if self.show_viewcube && !is_paper && !tab.is_start {
let cube_click: Element<'_, Message> = container(
mouse_area(container(

View file

@ -4,7 +4,6 @@ mod cascade;
mod file_tabs;
mod hidden;
mod layout_tabs;
mod navbar;
mod orbit;
mod ortho;
mod pan;
@ -53,7 +52,6 @@ impl CadModule for ViewModule {
tools: vec![
RibbonItem::LargeTool(ucs_icon::tool()),
RibbonItem::LargeTool(viewcube::tool()),
RibbonItem::LargeTool(navbar::tool()),
],
},
// ── Navigate ─────────────────────────────────────────────────────

View file

@ -1,10 +0,0 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/navbar.svg"));
pub fn tool() -> ToolDef {
ToolDef {
id: "NAVBAR",
label: "Navigation\nBar",
icon: ICON,
event: ModuleEvent::Command("NAVBAR".to_string()),
}
}

View file

@ -1,10 +1,9 @@
//! Viewport overlay widgets:
//! • nav_toolbar() — vertical orbit/pan/zoom buttons on the right
//! Viewport overlay widgets.
use glam::{Mat4, Vec3};
use iced::mouse;
use iced::widget::{button, canvas, column, container, text};
use iced::{Background, Border, Color, Element, Length, Point, Size, Theme};
use iced::widget::canvas;
use iced::{Color, Element, Length, Point, Size, Theme};
use crate::app::Message;
use crate::scene::object::GripShape;
@ -29,64 +28,6 @@ pub struct GripMarker {
pub is_hot: bool,
}
// ── Nav toolbar ───────────────────────────────────────────────────────────
pub fn nav_toolbar<'a>() -> Element<'a, Message> {
let b = |icon: &'a str, cmd: &'a str| -> Element<'a, Message> {
button(text(icon).size(14).color(Color::WHITE))
.on_press(Message::Command(cmd.into()))
.style(|_: &Theme, status| button::Style {
background: Some(Background::Color(match status {
button::Status::Hovered => Color {
r: 0.32,
g: 0.32,
b: 0.32,
a: 0.95,
},
button::Status::Pressed => Color {
r: 0.18,
g: 0.42,
b: 0.70,
a: 1.00,
},
_ => Color {
r: 0.20,
g: 0.20,
b: 0.20,
a: 0.85,
},
})),
border: Border {
color: Color {
r: 0.30,
g: 0.30,
b: 0.30,
a: 1.0,
},
width: 1.0,
radius: 2.0.into(),
},
text_color: Color::WHITE,
shadow: iced::Shadow::default(),
snap: false,
})
.padding([6, 8])
.into()
};
container(
column![
b("", "3DORBIT"),
b("", "PAN"),
b("", "ZOOMIN"),
b("", "ZOOMOUT"),
b("", "ZOOMEXTENTS")
]
.spacing(2),
)
.padding(4)
.into()
}
// ── Grid display params ───────────────────────────────────────────────────
/// Which world-space plane the grid is drawn on — switches with camera angle.