diff --git a/modules/ui/components/Window.jsx b/modules/ui/components/Window.jsx
index 3f12f3cd..b8972a2c 100644
--- a/modules/ui/components/Window.jsx
+++ b/modules/ui/components/Window.jsx
@@ -12,7 +12,7 @@ export default class Window extends React.Component {
resizeHelper = new ResizeHelper();
render() {
- let {initWidth, initHeight, initLeft, initTop, setFocus, className,
+ let {initWidth, initHeight, initLeft, initTop, initRight, initBottom, setFocus, className,
resizeCapturingBuffer, resize,
children, title, icon, minimizable, onClose, ...props} = this.props;
return
@@ -97,7 +97,7 @@ export default class Window extends React.Component {
if (el === null) {
return;
}
- let {initWidth, initHeight, initLeft, initTop, resize, resizeCapturingBuffer, onResize, ...props} = this.props;
+ let {initWidth, initHeight, initLeft, initTop, initRight, initBottom, resize, resizeCapturingBuffer, onResize, ...props} = this.props;
if (initWidth) {
el.style.width = initWidth + 'px';
}
@@ -106,10 +106,13 @@ export default class Window extends React.Component {
}
if (initLeft) {
el.style.left = initLeft + 'px';
-
+ } else if (initRight) {
+ el.style.left = (window.innerWidth - el.offsetWidth - initRight) + 'px';
}
if (initTop) {
el.style.top = initTop + 'px';
+ } else if (initBottom) {
+ el.style.top = (window.innerHeight - el.offsetHeight - initBottom) + 'px';
}
this.resizeHelper.registerResize(el, resize, resizeCapturingBuffer);
this.el = el;
@@ -121,10 +124,11 @@ Window.defaultProps = {
minimizable: false,
};
-class ResizeHelper {
+export class ResizeHelper {
- constructor () {
+ constructor (controlGlobalListeners = false) {
this.moveHandler = null;
+ this.controlGlobalListeners = controlGlobalListeners;
}
captureResize(el, dirMask, e, onResize) {
@@ -166,6 +170,20 @@ class ResizeHelper {
if (onResize !== undefined) {
onResize();
}
+ };
+ if (this.controlGlobalListeners) {
+ const moveListener = e => {
+ if (this.moveHandler) {
+ this.moveHandler(e);
+ }
+ };
+ const quitListener = e => {
+ this.moveHandler = null;
+ document.removeEventListener("mousemove", moveListener);
+ document.removeEventListener("mouseup", quitListener);
+ };
+ document.addEventListener("mousemove", moveListener);
+ document.addEventListener("mouseup", quitListener);
}
};
diff --git a/modules/ui/components/controls/NumberControl.jsx b/modules/ui/components/controls/NumberControl.jsx
index b23d2166..d56f9db9 100644
--- a/modules/ui/components/controls/NumberControl.jsx
+++ b/modules/ui/components/controls/NumberControl.jsx
@@ -36,7 +36,7 @@ export default class NumberControl extends React.Component {
}
this.input.value = val;
onChange(val);
- e.preventDefault();
+ // e.preventDefault();
e.stopPropagation();
}
}
diff --git a/modules/ui/components/controls/RadioButtons.less b/modules/ui/components/controls/RadioButtons.less
index d9291cd6..1ffdb34d 100644
--- a/modules/ui/components/controls/RadioButtons.less
+++ b/modules/ui/components/controls/RadioButtons.less
@@ -1,3 +1,3 @@
.radioButton {
- margin-left: 1px;
+ margin-left: 5px;
}
\ No newline at end of file
diff --git a/modules/ui/styles/mixins.less b/modules/ui/styles/mixins.less
index 0a44320c..559a4ddb 100644
--- a/modules/ui/styles/mixins.less
+++ b/modules/ui/styles/mixins.less
@@ -8,10 +8,12 @@
.button-behavior(@color) {
&:hover {
- background-color: @color;
+ background-color: @color;
+ border-color: @color;
}
&:active {
background-color: darken(@color, 20%);
+ border-color: darken(@color, 20%);
}
}
diff --git a/web/app/cad/sketch/sketcherConstraintsActions.js b/web/app/cad/sketch/sketcherConstraintsActions.js
index 788b08be..2da60cc4 100644
--- a/web/app/cad/sketch/sketcherConstraintsActions.js
+++ b/web/app/cad/sketch/sketcherConstraintsActions.js
@@ -152,7 +152,7 @@ export default [
appearance: {
info: 'Point On Line',
label: 'point & line',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/pointOnLine.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
@@ -165,7 +165,7 @@ export default [
appearance: {
info: 'Point On Arc / Ellipse',
label: 'point & arc',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/pointOnArc.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
@@ -178,7 +178,7 @@ export default [
appearance: {
info: 'Point In the Middle',
label: 'point @ middle',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/pointInMiddle.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
@@ -191,7 +191,7 @@ export default [
appearance: {
info: 'Angle Between 2 Lines',
label: 'angle',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/angle.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
@@ -204,7 +204,7 @@ export default [
appearance: {
info: 'Symmetry',
label: 'symmetry',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/symmetry.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
@@ -228,7 +228,7 @@ export default [
appearance: {
info: 'Lock Convexity',
label: 'convex',
- icon32: 'ui.styles.init.svg'
+ icon32: 'img/vec/convex.svg'
},
invoke: ({services}) => {
let viewer = services.sketcher.inPlaceEditor.viewer;
diff --git a/web/app/sketcher.js b/web/app/sketcher.js
index e58d1198..4026f744 100644
--- a/web/app/sketcher.js
+++ b/web/app/sketcher.js
@@ -1,24 +1,20 @@
-import '../css/app.less'
import 'ui/styles/init/index.less';
+import '../css/app.less'
import App2D from './sketcher/sketcher-app';
-import {Layer} from './sketcher/viewer2d';
-import * as ui from './ui/ui.js';
-import * as toolkit from './ui/toolkit';
import {Constraints} from './sketcher/parametric'
-import './utils/jqueryfy'
import ReactDOM from "react-dom";
import {SketcherApp} from "./sketcher/components/SketcherApp";
import React from "react";
-import {stream} from "lstream";
import {loadUIState, saveUIState} from "./sketcher/uiState";
import {Scope} from "./sketcher/components/Scope";
+import {createElement} from "./utils/domUtils";
function initializeSketcherApplication() {
- var app = new App2D();
+ const app = new App2D();
window.__CAD_APP = app;
- var sketchId = app.getSketchId();
+ const sketchId = app.getSketchId();
if (sketchId === App2D.STORAGE_PREFIX + '__sample2D__') {
// var sample = '{"layers":[{"name":"_dim","style":{"lineWidth":1,"strokeStyle":"#bcffc1","fillStyle":"#00FF00"},"data":[{"id":0,"_class":"TCAD.TWO.DiameterDimension","obj":90},{"id":1,"_class":"TCAD.TWO.DiameterDimension","obj":95},{"id":2,"_class":"TCAD.TWO.DiameterDimension","obj":42},{"id":3,"_class":"TCAD.TWO.Dimension","a":5,"b":8,"flip":false},{"id":4,"_class":"TCAD.TWO.DiameterDimension","obj":105}]},{"name":"sketch","style":{"lineWidth":2,"strokeStyle":"#ffffff","fillStyle":"#000000"},"data":[{"id":11,"_class":"TCAD.TWO.Segment","points":[[5,[6,110.1295615870824],[7,313.66509156975803]],[8,[9,419.44198895058975],[10,516.7065215258621]]]},{"id":18,"_class":"TCAD.TWO.Segment","points":[[12,[13,489.1218947877601],[14,477.98601743930897]],[15,[16,481.90945628911174],[17,182.9391540301952]]]},{"id":25,"_class":"TCAD.TWO.Segment","points":[[19,[20,427.6872468325118],[21,163.96220645927505]],[22,[23,349.9023145352797],[24,256.7344291384989]]]},{"id":32,"_class":"TCAD.TWO.Segment","points":[[26,[27,306.81261277555075],[28,273.1404656521002]],[29,[30,135.09050734792822],[31,247.98348666778958]]]},{"id":42,"_class":"TCAD.TWO.Arc","points":[[33,[34,489.1218947877601],[35,477.98601743930897]],[36,[37,419.44198895058975],[38,516.7065215258621]],[39,[40,444.1353623657045],[41,479.08688157090376]]]},{"id":53,"_class":"TCAD.TWO.Arc","points":[[44,[45,427.6872468325118],[46,163.96220645927505]],[47,[48,481.90945628911174],[49,182.9391540301952]],[50,[51,451.2148840882273],[52,183.68960424767275]]]},{"id":64,"_class":"TCAD.TWO.Arc","points":[[55,[56,349.9023145352797],[57,256.7344291384989]],[58,[59,306.81261277555075],[60,273.1404656521002]],[61,[62,313.6665992835383],[63,226.35256652594512]]]},{"id":75,"_class":"TCAD.TWO.Arc","points":[[66,[67,110.1295615870824],[68,313.66509156975803]],[69,[70,135.09050734792822],[71,247.98348666778958]],[72,[73,129.8749213918784],[74,283.58516027516237]]]},{"id":80,"_class":"TCAD.TWO.Circle","c":[77,[78,444.1353623657045],[79,479.08688157090376]],"r":17},{"id":85,"_class":"TCAD.TWO.Circle","c":[82,[83,451.2148840882273],[84,183.68960424767275]],"r":17},{"id":90,"_class":"TCAD.TWO.Circle","c":[87,[88,129.8749213918784],[89,283.58516027516237]],"r":17},{"id":95,"_class":"TCAD.TWO.Circle","c":[92,[93,364.7627927122075],[94,358.27520724354514]],"r":50},{"id":100,"_class":"TCAD.TWO.Circle","c":[97,[98,450.6425914465028],[99,356.1758703461729]],"r":13},{"id":105,"_class":"TCAD.TWO.Circle","c":[102,[103,281.1241663120215],[104,360.3197585470608]],"r":13}]},{"name":"_construction_","style":{"lineWidth":1,"strokeStyle":"#aaaaaa","fillStyle":"#000000"},"data":[{"id":113,"_class":"TCAD.TWO.Segment","points":[[107,[108,366.96497096679207],[109,448.36204633886825]],[110,[111,362.6842565514955],[112,273.2463262825022]]]},{"id":120,"_class":"TCAD.TWO.Segment","points":[[114,[115,254.60331148100178],[116,360.9680624545806]],[117,[118,474.9222739434132],[119,355.5823520325097]]]}]}],"constraints":[["Tangent",[42,18]],["Tangent",[42,11]],["coi",[33,12]],["coi",[36,8]],["Tangent",[53,25]],["Tangent",[53,18]],["coi",[44,19]],["coi",[47,15]],["Tangent",[64,25]],["Tangent",[64,32]],["coi",[55,22]],["coi",[58,26]],["Tangent",[75,11]],["Tangent",[75,32]],["coi",[66,5]],["coi",[69,29]],["coi",[77,39]],["coi",[82,50]],["coi",[87,72]],["RR",[80,85]],["RR",[85,90]],["parallel",[113,18]],["perpendicular",[120,113]],["Symmetry",[92,120]],["PointOnLine",[92,113]],["PointOnLine",[102,120]],["PointOnLine",[97,120]],["RR",[105,100]]]}';
// localStorage.setItem(sketchId, sample);
@@ -27,111 +23,12 @@ function initializeSketcherApplication() {
app.fit();
-
const constraintsView = app.dock.views['Constraints'];
-
- // function configureConstraintsFilter() {
- // var constraintsCaption = constraintsView.node.find('.tool-caption');
- // var constraintsFilterBtn = ui.faBtn("filter");
- // constraintsFilterBtn.css({'float': 'right', 'margin-right': '10px', cursor: 'pointer'});
- // constraintsCaption.append(constraintsFilterBtn);
- // var constraintsFilterWin = new ui.Window($('#constrFilter'), app.winManager);
- // ui.bindOpening(constraintsFilterBtn, constraintsFilterWin);
- // var content = constraintsFilterWin.root.find('.content');
- //
- // var constrTypes = [], constrType;
- // for (var cname in Constraints) {
- // c = Constraints[cname];
- // if (c.prototype !== undefined && c.prototype.UI_NAME !== undefined && !c.prototype.aux) {
- // constrTypes.push(c);
- // }
- // }
- // constrTypes.sort(function (a, b) {
- // if (a.prototype.NAME == 'coi') {
- // return b.prototype.NAME == 'coi' ? 0 : -1;
- // }
- // return a.prototype.UI_NAME.localeCompare(b.prototype.UI_NAME)
- // });
- // for (var i = 0; i < constrTypes.length; i++) {
- // var c = constrTypes[i];
- // if (c.prototype !== undefined && c.prototype.UI_NAME !== undefined && !c.prototype.aux) {
- // var checkbox = $('
', {type : 'checkbox', checked : 'checked', value : c.prototype.NAME});
- // content.append(
- // $('
-}
\ No newline at end of file
+}
+
+
+// function configureConstraintsFilter() {
+// var constraintsCaption = constraintsView.node.find('.tool-caption');
+// var constraintsFilterBtn = ui.faBtn("filter");
+// constraintsFilterBtn.css({'float': 'right', 'margin-right': '10px', cursor: 'pointer'});
+// constraintsCaption.append(constraintsFilterBtn);
+// var constraintsFilterWin = new ui.Window($('#constrFilter'), app.winManager);
+// ui.bindOpening(constraintsFilterBtn, constraintsFilterWin);
+// var content = constraintsFilterWin.root.find('.content');
+//
+// var constrTypes = [], constrType;
+// for (var cname in Constraints) {
+// c = Constraints[cname];
+// if (c.prototype !== undefined && c.prototype.UI_NAME !== undefined && !c.prototype.aux) {
+// constrTypes.push(c);
+// }
+// }
+// constrTypes.sort(function (a, b) {
+// if (a.prototype.NAME == 'coi') {
+// return b.prototype.NAME == 'coi' ? 0 : -1;
+// }
+// return a.prototype.UI_NAME.localeCompare(b.prototype.UI_NAME)
+// });
+// for (var i = 0; i < constrTypes.length; i++) {
+// var c = constrTypes[i];
+// if (c.prototype !== undefined && c.prototype.UI_NAME !== undefined && !c.prototype.aux) {
+// var checkbox = $('