Skip to content

Commit

Permalink
Non-editable step file (#235)
Browse files Browse the repository at this point in the history
* Non-editable step file

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Make editable property readonly

Co-authored-by: Duc Trung Le <[email protected]>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Duc Trung Le <[email protected]>
  • Loading branch information
3 people committed Dec 15, 2023
1 parent ab6637d commit 0201e9d
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 14 deletions.
72 changes: 60 additions & 12 deletions packages/base/src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,11 @@ export function addCommands(

commands.addCommand(CommandIDs.redo, {
label: trans.__('Redo'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
execute: args => {
const current = tracker.currentWidget;

Expand All @@ -441,7 +445,11 @@ export function addCommands(

commands.addCommand(CommandIDs.undo, {
label: trans.__('Undo'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
execute: args => {
const current = tracker.currentWidget;

Expand All @@ -454,7 +462,11 @@ export function addCommands(
commands.addCommand(CommandIDs.newSketch, {
label: trans.__('New Sketch'),
iconClass: 'fa fa-pencil',
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
execute: async args => {
const current = tracker.currentWidget;

Expand All @@ -478,63 +490,99 @@ export function addCommands(

commands.addCommand(CommandIDs.newBox, {
label: trans.__('New Box'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: boxIcon,
execute: Private.createPart('box', tracker)
});

commands.addCommand(CommandIDs.newCylinder, {
label: trans.__('New Cylinder'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: cylinderIcon,
execute: Private.createPart('cylinder', tracker)
});

commands.addCommand(CommandIDs.newSphere, {
label: trans.__('New Sphere'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: sphereIcon,
execute: Private.createPart('sphere', tracker)
});

commands.addCommand(CommandIDs.newCone, {
label: trans.__('New Cone'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: coneIcon,
execute: Private.createPart('cone', tracker)
});

commands.addCommand(CommandIDs.newTorus, {
label: trans.__('New Torus'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: torusIcon,
execute: Private.createPart('torus', tracker)
});

commands.addCommand(CommandIDs.extrusion, {
label: trans.__('Extrusion'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: extrusionIcon,
execute: Private.executeOperator('extrusion', tracker)
});

commands.addCommand(CommandIDs.cut, {
label: trans.__('Cut'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: cutIcon,
execute: Private.executeOperator('cut', tracker)
});

commands.addCommand(CommandIDs.union, {
label: trans.__('Union'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: unionIcon,
execute: Private.executeOperator('union', tracker)
});

commands.addCommand(CommandIDs.intersection, {
label: trans.__('Intersection'),
isEnabled: () => Boolean(tracker.currentWidget),
isEnabled: () => {
return tracker.currentWidget
? tracker.currentWidget.context.model.sharedModel.editable
: false;
},
icon: intersectionIcon,
execute: Private.executeOperator('intersection', tracker)
});
Expand Down
1 change: 1 addition & 0 deletions packages/schema/src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ export interface IJupyterCadDoc extends YDocument<IJupyterCadDocChange> {
objects: Array<IJCadObject>;
options: JSONObject;
metadata: JSONObject;
readonly editable: boolean;

objectExists(name: string): boolean;
getObjectByName(name: string): IJCadObject | undefined;
Expand Down
6 changes: 4 additions & 2 deletions packages/schema/src/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import {
Pointer
} from './interfaces';

// import { IJCadContent, IJCadModel, IJCadObject, IJCadOptions } from './index';
export class JupyterCadModel implements IJupyterCadModel {
constructor(options: JupyterCadModel.IOptions) {
const { annotationModel, sharedModel } = options;
Expand Down Expand Up @@ -428,6 +427,8 @@ export class JupyterCadDoc
return new JupyterCadDoc();
}

editable = true;

private _getObjectAsYMapByName(name: string): Y.Map<any> | undefined {
for (const obj of this._objects) {
if (obj.get('name') === name) {
Expand Down Expand Up @@ -485,7 +486,6 @@ export class JupyterCadDoc
);
}

// TODO Change the IJupyterCadDoc interface to add an "editable" property allowing to make read-only docs?
export class JupyterCadStepDoc extends JupyterCadDoc {
constructor() {
super();
Expand Down Expand Up @@ -527,6 +527,8 @@ export class JupyterCadStepDoc extends JupyterCadDoc {
return new JupyterCadStepDoc();
}

editable = false;

private _sourceObserver = (events: Y.YEvent<any>[]): void => {
const changes: Array<{
name: string;
Expand Down

0 comments on commit 0201e9d

Please sign in to comment.