| 17 | namespace lfs::python { |
| 18 | |
| 19 | void register_operators(nb::module_& m) { |
| 20 | auto ops = m.def_submodule("ops", "Operator system"); |
| 21 | |
| 22 | nb::enum_<vis::op::OperatorResult>(ops, "OperatorResult") |
| 23 | .value("FINISHED", vis::op::OperatorResult::FINISHED) |
| 24 | .value("CANCELLED", vis::op::OperatorResult::CANCELLED) |
| 25 | .value("RUNNING_MODAL", vis::op::OperatorResult::RUNNING_MODAL) |
| 26 | .value("PASS_THROUGH", vis::op::OperatorResult::PASS_THROUGH); |
| 27 | |
| 28 | nb::enum_<vis::op::BuiltinOp>(ops, "BuiltinOp") |
| 29 | .value("SelectionStroke", vis::op::BuiltinOp::SelectionStroke) |
| 30 | .value("TransformSet", vis::op::BuiltinOp::TransformSet) |
| 31 | .value("TransformTranslate", vis::op::BuiltinOp::TransformTranslate) |
| 32 | .value("TransformRotate", vis::op::BuiltinOp::TransformRotate) |
| 33 | .value("TransformScale", vis::op::BuiltinOp::TransformScale) |
| 34 | .value("TransformApplyBatch", vis::op::BuiltinOp::TransformApplyBatch) |
| 35 | .value("AlignPickPoint", vis::op::BuiltinOp::AlignPickPoint) |
| 36 | .value("Undo", vis::op::BuiltinOp::Undo) |
| 37 | .value("Redo", vis::op::BuiltinOp::Redo) |
| 38 | .value("Delete", vis::op::BuiltinOp::Delete) |
| 39 | .value("SelectionClear", vis::op::BuiltinOp::SelectionClear) |
| 40 | .value("SceneSelectNode", vis::op::BuiltinOp::SceneSelectNode) |
| 41 | .value("CropBoxAdd", vis::op::BuiltinOp::CropBoxAdd) |
| 42 | .value("CropBoxSet", vis::op::BuiltinOp::CropBoxSet) |
| 43 | .value("CropBoxFit", vis::op::BuiltinOp::CropBoxFit) |
| 44 | .value("CropBoxReset", vis::op::BuiltinOp::CropBoxReset) |
| 45 | .value("EllipsoidAdd", vis::op::BuiltinOp::EllipsoidAdd) |
| 46 | .value("EllipsoidSet", vis::op::BuiltinOp::EllipsoidSet) |
| 47 | .value("EllipsoidFit", vis::op::BuiltinOp::EllipsoidFit) |
| 48 | .value("EllipsoidReset", vis::op::BuiltinOp::EllipsoidReset); |
| 49 | |
| 50 | nb::enum_<vis::op::BuiltinTool>(ops, "BuiltinTool") |
| 51 | .value("Select", vis::op::BuiltinTool::Select) |
| 52 | .value("Translate", vis::op::BuiltinTool::Translate) |
| 53 | .value("Rotate", vis::op::BuiltinTool::Rotate) |
| 54 | .value("Scale", vis::op::BuiltinTool::Scale) |
| 55 | .value("Mirror", vis::op::BuiltinTool::Mirror) |
| 56 | .value("Align", vis::op::BuiltinTool::Align); |
| 57 | |
| 58 | nb::enum_<vis::op::OperatorFlags>(ops, "OperatorFlags") |
| 59 | .value("NONE", vis::op::OperatorFlags::NONE) |
| 60 | .value("REGISTER", vis::op::OperatorFlags::REGISTER) |
| 61 | .value("UNDO", vis::op::OperatorFlags::UNDO) |
| 62 | .value("UNDO_GROUPED", vis::op::OperatorFlags::UNDO_GROUPED) |
| 63 | .value("INTERNAL", vis::op::OperatorFlags::INTERNAL) |
| 64 | .value("MODAL", vis::op::OperatorFlags::MODAL) |
| 65 | .value("BLOCKING", vis::op::OperatorFlags::BLOCKING) |
| 66 | .def("__or__", [](vis::op::OperatorFlags a, vis::op::OperatorFlags b) { return a | b; }) |
| 67 | .def("__and__", [](vis::op::OperatorFlags a, vis::op::OperatorFlags b) { return a & b; }); |
| 68 | |
| 69 | nb::class_<vis::op::OperatorDescriptor>(ops, "OperatorDescriptor") |
| 70 | .def(nb::init<>()) |
| 71 | .def_prop_ro("id", &vis::op::OperatorDescriptor::id, "Unique operator identifier") |
| 72 | .def_rw("label", &vis::op::OperatorDescriptor::label, "Display label") |
| 73 | .def_rw("description", &vis::op::OperatorDescriptor::description, "Tooltip description") |
| 74 | .def_rw("icon", &vis::op::OperatorDescriptor::icon, "Icon name") |
| 75 | .def_rw("shortcut", &vis::op::OperatorDescriptor::shortcut, "Keyboard shortcut string") |
| 76 | .def_rw("flags", &vis::op::OperatorDescriptor::flags, "Operator behavior flags"); |
no test coverage detected