jsketcher/web/app/cad/sketch/sketcherUIContrib.ts

80 lines
2.3 KiB
TypeScript

import objectToolActions from '../../sketcher/actions/objectToolActions';
import measureActions from '../../sketcher/actions/measureActions';
import {insertAfter} from 'gems/iterables';
import operationActions from "../../sketcher/actions/operationActions";
import constraintGlobalActions from "../../sketcher/actions/constraintGlobalActions";
import generalToolActions from "../../sketcher/actions/generalToolActions";
import sketcherControlActions from "./sketcherControlActions";
import {ApplicationContext} from "cad/context";
import {RiCompasses2Line} from "react-icons/ri";
export default function (ctx: ApplicationContext) {
const convertedActions = [
...constraintGlobalActions,
...measureActions,
...generalToolActions,
...objectToolActions,
...operationActions,
].map(convertSketcherAction);
const SKETCHER_MODE_HEADS_UP_ACTIONS = [
['sketchSaveAndExit', 'sketchExit'],
'-',
generalToolActions.map(a => toSketcherActionId(a.id)),
'-',
[
...objectToolActions.map(a => toSketcherActionId(a.id)),
toSketcherActionId('Offset'),
toSketcherActionId('MirrorStart'),
],
'-',
measureActions.map(a => toSketcherActionId(a.id)),
'-',
//constraintGlobalActions.map(a => toSketcherActionId(a.id)),
//'-',
['LookAtFace'],
'-',
['sketchOpenInTab']
];
insertAfter(SKETCHER_MODE_HEADS_UP_ACTIONS, SKETCHER_PREFIX + 'Export', '-');
insertAfter(SKETCHER_MODE_HEADS_UP_ACTIONS, SKETCHER_PREFIX + 'PanTool', '-');
insertAfter(SKETCHER_MODE_HEADS_UP_ACTIONS, SKETCHER_PREFIX + 'BezierTool', '-');
ctx.workbenchService.registerWorkbench({
workbenchId: 'sketcher',
internal: true,
features: [],
actions: [
...sketcherControlActions,
...convertedActions
],
ui: {
toolbar: SKETCHER_MODE_HEADS_UP_ACTIONS,
toolbarStyle: 'compact'
},
icon: RiCompasses2Line
});
}
const SKETCHER_PREFIX = 'sketcher.';
function toSketcherActionId(id: string): string {
return SKETCHER_PREFIX + id;
}
function convertSketcherAction(action) {
return {
id: toSketcherActionId(action.id),
appearance: {
icon: action.icon,
label: action.shortName,
info: action.description,
},
invoke: ({services}, e) => action.invoke(services.sketcher.inPlaceEditor.sketcherAppContext)
}
}