rework menu system

This commit is contained in:
2026-03-28 00:28:43 -07:00
parent 4baadd4c3e
commit 4368aeb4a0
5 changed files with 99 additions and 41 deletions

View File

@@ -12,18 +12,19 @@ from typing import Any
MENU_LAYOUT: dict[str, list[str]] = {
"Add": [
"Input": [
"Image",
"ImageDemo",
"Folder",
"ColorMap",
"Number",
"RangeSlider",
"Coordinate",
"CoordinatePair",
"Font",
],
"Output": [
"Display": [
"ColorMap",
"Font",
"ColormapAdjust",
"PreviewImage",
"ValueDisplay",
"View3D",
@@ -36,11 +37,10 @@ MENU_LAYOUT: dict[str, list[str]] = {
"Annotations",
"AngleMeasure",
],
"Modify": [
"Geometry": [
"CropResizeField",
"RotateField",
"FlipField",
"ColormapAdjust",
],
"Filter": [
"GaussianFilter",
@@ -50,25 +50,31 @@ MENU_LAYOUT: dict[str, list[str]] = {
"FFTFilter2D",
"ScarRemoval",
],
"Frequency": [
"PSDF",
"Spectral": [
"FFT2D",
"InverseFFT2D",
"FFTFilter1D",
"FFTFilter2D",
"ACF",
"PSDF",
],
"Flatten": [
"Level & Correct": [
"FixZero",
"LineCorrection",
"PlaneLevelField",
"PolyLevelField",
"FacetLevelField",
"LineCorrection",
"ScarRemoval",
],
"Measure": [
"AngleMeasure",
"CrossSection",
"Histogram",
"Cursors",
"Curvature",
"FractalDimension",
"ACF",
"PSDF",
"Statistics",
"Stats",
],
@@ -78,12 +84,14 @@ MENU_LAYOUT: dict[str, list[str]] = {
"MaskMorphology",
"MaskInvert",
"MaskOperations",
],
"Grains": [
"GrainAnalysis",
"GrainDistanceTransform",
"WatershedSegmentation",
],
"Grains": [
"GrainDistanceTransform",
"WatershedSegmentation",
"GrainAnalysis",
],
}
@@ -91,11 +99,17 @@ _CATEGORY_ORDER = {category: index for index, category in enumerate(MENU_LAYOUT)
_NODE_METADATA: dict[str, dict[str, Any]] = {}
for category, class_names in MENU_LAYOUT.items():
for node_order, class_name in enumerate(class_names):
_NODE_METADATA[class_name] = {
metadata = _NODE_METADATA.setdefault(class_name, {
"category": category,
"category_order": _CATEGORY_ORDER[category],
"menu_order": node_order,
}
"menu_categories": [],
})
metadata["menu_categories"].append({
"category": category,
"category_order": _CATEGORY_ORDER[category],
"menu_order": node_order,
})
def get_menu_metadata(class_name: str) -> dict[str, Any]:
@@ -107,4 +121,9 @@ def get_menu_metadata(class_name: str) -> dict[str, Any]:
"category": "Unsorted",
"category_order": len(_CATEGORY_ORDER),
"menu_order": 10_000,
"menu_categories": [{
"category": "Unsorted",
"category_order": len(_CATEGORY_ORDER),
"menu_order": 10_000,
}],
}