Move parametric tools to their own ribbon tab

This commit is contained in:
Hakan Seven committed 2026-09-11 20:58:37 +03:00
1 parent d07e8cf7d4
commit cf33455e93
35 files changed
+114 -76

No files matched your search

-29
View File
@@ -2,7 +2,6 @@
mod changelog;
pub mod clipboard;
pub mod constrain;
pub mod defaults;
mod donate;
pub mod draw;
@@ -34,11 +33,6 @@ impl CadModule for DrawModule {
};
use crate::modules::insert::{create_block, insert_block};
use clipboard::{copy_clip, cut, paste};
use constrain::{
angle_tool, center_point_tool, coincident_tool, colinear, concentric, distance_tool, equal,
equal_distance_tool, fixed, horizontal, midpoint_tool, normal, parallel, perpendicular, point_on_curve_tool,
symmetric, tangent, vertical,
};
use draw::{arc, circle, ellipse, hatch, line, polyline, shapes};
use groups::{group, ungroup};
use layers::{
@@ -126,29 +120,6 @@ impl CadModule for DrawModule {
offset::tool().into(),
],
},
RibbonGroup {
title: "Constraints",
tools: vec![
horizontal::tool().into(),
vertical::tool().into(),
parallel::tool().into(),
perpendicular::tool().into(),
equal::tool().into(),
tangent::tool().into(),
normal::tool().into(),
coincident_tool::tool().into(),
distance_tool::tool().into(),
angle_tool::tool().into(),
concentric::tool().into(),
colinear::tool().into(),
fixed::tool().into(),
symmetric::tool().into(),
center_point_tool::tool().into(),
midpoint_tool::tool().into(),
point_on_curve_tool::tool().into(),
equal_distance_tool::tool().into(),
],
},
RibbonGroup {
title: "Annotation",
tools: vec![
+1
View File
@@ -27,6 +27,7 @@ pub use ocs_plugin_api::ribbon::{
pub mod annotate;
pub mod draw;
pub mod insert;
pub mod parametric;
pub mod model;
pub mod layout;
pub mod manage;
+1 -1
View File
@@ -47,7 +47,7 @@ impl CadModule for ModelModule {
"model"
}
fn title(&self) -> &'static str {
"Modelling"
"Model"
}
fn ribbon_groups(&self) -> &[RibbonGroup] {
@@ -24,7 +24,7 @@ pub mod coincident_tool {
id: "CCONSTRAINT",
label: "Coincident",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/coincident.svg"
"../../../assets/icons/constrain/coincident.svg"
)),
event: ModuleEvent::Command("CCONSTRAINT".to_string()),
}
@@ -17,7 +17,7 @@ pub mod equal_distance_tool {
id: "EDCONSTRAINT",
label: "Equal Distance",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/equal_distance.svg"
"../../../assets/icons/constrain/equal_distance.svg"
)),
event: ModuleEvent::Command("EDCONSTRAINT".to_string()),
}
@@ -36,3 +36,46 @@ pub use tools::{
tangent, vertical,
};
pub use value::{angle_tool, distance_tool, AngleConstraintCommand, DistanceConstraintCommand};
use crate::modules::{CadModule, RibbonGroup};
pub struct ParametricModule;
impl CadModule for ParametricModule {
fn id(&self) -> &'static str {
"parametric"
}
fn title(&self) -> &'static str {
"Parametric"
}
fn ribbon_groups(&self) -> &[RibbonGroup] {
static GROUPS: std::sync::OnceLock<Vec<RibbonGroup>> = std::sync::OnceLock::new();
GROUPS.get_or_init(|| {
vec![RibbonGroup {
title: "Constraints",
tools: vec![
horizontal::tool().into(),
vertical::tool().into(),
parallel::tool().into(),
perpendicular::tool().into(),
equal::tool().into(),
tangent::tool().into(),
normal::tool().into(),
coincident_tool::tool().into(),
distance_tool::tool().into(),
angle_tool::tool().into(),
concentric::tool().into(),
colinear::tool().into(),
fixed::tool().into(),
symmetric::tool().into(),
center_point_tool::tool().into(),
midpoint_tool::tool().into(),
point_on_curve_tool::tool().into(),
equal_distance_tool::tool().into(),
],
}]
})
}
}
@@ -25,7 +25,7 @@ pub mod center_point_tool {
id: "CPCONSTRAINT",
label: "Center Point",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/center_point.svg"
"../../../assets/icons/constrain/center_point.svg"
)),
event: ModuleEvent::Command("CPCONSTRAINT".to_string()),
}
@@ -39,7 +39,7 @@ pub mod midpoint_tool {
id: "MPCONSTRAINT",
label: "Midpoint",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/midpoint.svg"
"../../../assets/icons/constrain/midpoint.svg"
)),
event: ModuleEvent::Command("MPCONSTRAINT".to_string()),
}
@@ -53,7 +53,7 @@ pub mod point_on_curve_tool {
id: "OCCONSTRAINT",
label: "Point on Curve",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/point_on_curve.svg"
"../../../assets/icons/constrain/point_on_curve.svg"
)),
event: ModuleEvent::Command("OCCONSTRAINT".to_string()),
}
@@ -9,7 +9,7 @@ pub mod horizontal {
id: "HCONSTRAINT",
label: "Horizontal",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/horizontal.svg"
"../../../assets/icons/constrain/horizontal.svg"
)),
event: ModuleEvent::Command("HCONSTRAINT".to_string()),
}
@@ -23,7 +23,7 @@ pub mod vertical {
id: "VCONSTRAINT",
label: "Vertical",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/vertical.svg"
"../../../assets/icons/constrain/vertical.svg"
)),
event: ModuleEvent::Command("VCONSTRAINT".to_string()),
}
@@ -37,7 +37,7 @@ pub mod parallel {
id: "PCONSTRAINT",
label: "Parallel",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/parallel.svg"
"../../../assets/icons/constrain/parallel.svg"
)),
event: ModuleEvent::Command("PCONSTRAINT".to_string()),
}
@@ -51,7 +51,7 @@ pub mod perpendicular {
id: "QCONSTRAINT",
label: "Perpendicular",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/perpendicular.svg"
"../../../assets/icons/constrain/perpendicular.svg"
)),
event: ModuleEvent::Command("QCONSTRAINT".to_string()),
}
@@ -65,7 +65,7 @@ pub mod equal {
id: "ECONSTRAINT",
label: "Equal",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/equal.svg"
"../../../assets/icons/constrain/equal.svg"
)),
event: ModuleEvent::Command("ECONSTRAINT".to_string()),
}
@@ -79,7 +79,7 @@ pub mod tangent {
id: "TCONSTRAINT",
label: "Tangent",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/tangent.svg"
"../../../assets/icons/constrain/tangent.svg"
)),
event: ModuleEvent::Command("TCONSTRAINT".to_string()),
}
@@ -93,7 +93,7 @@ pub mod concentric {
id: "NCONSTRAINT",
label: "Concentric",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/concentric.svg"
"../../../assets/icons/constrain/concentric.svg"
)),
event: ModuleEvent::Command("NCONSTRAINT".to_string()),
}
@@ -114,7 +114,7 @@ pub mod normal {
id: "NRCONSTRAINT",
label: "Normal",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/normal.svg"
"../../../assets/icons/constrain/normal.svg"
)),
event: ModuleEvent::Command("NRCONSTRAINT".to_string()),
}
@@ -128,7 +128,7 @@ pub mod colinear {
id: "LCONSTRAINT",
label: "Colinear",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/colinear.svg"
"../../../assets/icons/constrain/colinear.svg"
)),
event: ModuleEvent::Command("LCONSTRAINT".to_string()),
}
@@ -142,7 +142,7 @@ pub mod fixed {
id: "FXCONSTRAINT",
label: "Fixed",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/fixed.svg"
"../../../assets/icons/constrain/fixed.svg"
)),
event: ModuleEvent::Command("FXCONSTRAINT".to_string()),
}
@@ -156,7 +156,7 @@ pub mod symmetric {
id: "SYCONSTRAINT",
label: "Symmetric",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/symmetric.svg"
"../../../assets/icons/constrain/symmetric.svg"
)),
event: ModuleEvent::Command("SYCONSTRAINT".to_string()),
}
@@ -53,7 +53,7 @@ pub mod distance_tool {
id: "DCONSTRAINT",
label: "Distance",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/distance.svg"
"../../../assets/icons/constrain/distance.svg"
)),
event: ModuleEvent::Command("DCONSTRAINT".to_string()),
}
@@ -67,7 +67,7 @@ pub mod angle_tool {
id: "ACONSTRAINT",
label: "Angle",
icon: IconKind::Svg(include_bytes!(
"../../../../assets/icons/constrain/angle.svg"
"../../../assets/icons/constrain/angle.svg"
)),
event: ModuleEvent::Command("ACONSTRAINT".to_string()),
}
+1
View File
@@ -14,6 +14,7 @@ use crate::modules::CadModule;
pub fn all_modules() -> Vec<Box<dyn CadModule>> {
vec![
Box::new(super::draw::DrawModule),
Box::new(super::parametric::ParametricModule),
Box::new(super::model::ModelModule),
Box::new(super::insert::InsertModule),
Box::new(super::annotate::AnnotateModule),