forked from enviPath/enviPy
143 lines
3.4 KiB
JavaScript
143 lines
3.4 KiB
JavaScript
/****************************************************************************
|
|
* Copyright 2017 EPAM Systems
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
***************************************************************************/
|
|
|
|
import { bond as bondSchema } from '../structschema';
|
|
import { toBondType } from '../structconv';
|
|
|
|
const toolActions = {
|
|
"select-lasso": {
|
|
title: "Lasso Selection",
|
|
shortcut: "Escape",
|
|
action: { tool: 'select', opts: 'lasso' }
|
|
},
|
|
"select-rectangle": {
|
|
title: "Rectangle Selection",
|
|
shortcut: "Escape",
|
|
action: { tool: 'select', opts: 'rectangle' }
|
|
},
|
|
"select-fragment": {
|
|
title: "Fragment Selection",
|
|
shortcut: "Escape",
|
|
action: { tool: 'select', opts: 'fragment' }
|
|
},
|
|
"erase": {
|
|
title: "Erase",
|
|
shortcut: ["Delete", "Backspace"],
|
|
action: { tool: 'eraser', opts: 1 } // TODO last selector mode is better
|
|
},
|
|
"chain": {
|
|
title: "Chain",
|
|
action: { tool: 'chain' }
|
|
},
|
|
"chiral-flag": {
|
|
title: "Chiral Flag",
|
|
action: { tool: 'chiralFlag' },
|
|
selected: editor => editor.struct().isChiral
|
|
},
|
|
"charge-plus": {
|
|
shortcut: "5",
|
|
title: "Charge Plus",
|
|
action: { tool: 'charge', opts: 1 }
|
|
},
|
|
"charge-minus": {
|
|
shortcut: "5",
|
|
title: "Charge Minus",
|
|
action: { tool: 'charge', opts: -1 }
|
|
},
|
|
"transform-rotate": {
|
|
shortcut: "Alt+r",
|
|
title: "Rotate Tool",
|
|
action: { tool: 'rotate' }
|
|
},
|
|
"transform-flip-h": {
|
|
shortcut: "Alt+h",
|
|
title: "Horizontal Flip",
|
|
action: { tool: 'rotate', opts: 'horizontal' }
|
|
},
|
|
"transform-flip-v": {
|
|
shortcut: "Alt+v",
|
|
title: "Vertical Flip",
|
|
action: { tool: 'rotate', opts: 'vertical' }
|
|
},
|
|
"sgroup": {
|
|
shortcut: "Mod+g",
|
|
title: "S-Group",
|
|
action: { tool: 'sgroup' }
|
|
},
|
|
"sgroup-data": {
|
|
shortcut: "Mod+g",
|
|
title: "Data S-Group",
|
|
action: { tool: 'sgroup', opts: 'DAT' }
|
|
},
|
|
"reaction-arrow": {
|
|
title: "Reaction Arrow Tool",
|
|
action: { tool: 'reactionarrow' }
|
|
},
|
|
"reaction-plus": {
|
|
title: "Reaction Plus Tool",
|
|
action: { tool: 'reactionplus' }
|
|
},
|
|
"reaction-map": {
|
|
title: "Reaction Mapping Tool",
|
|
action: { tool: 'reactionmap' }
|
|
},
|
|
"reaction-unmap": {
|
|
title: "Reaction Unmapping Tool",
|
|
action: { tool: 'reactionunmap' }
|
|
},
|
|
"rgroup-label": {
|
|
shortcut: "Mod+r",
|
|
title: "R-Group Label Tool",
|
|
action: { tool: 'rgroupatom' }
|
|
},
|
|
"rgroup-fragment": {
|
|
shortcut: ["Mod+Shift+r", "Mod+r"],
|
|
title: "R-Group Fragment Tool",
|
|
action: { tool: 'rgroupfragment' }
|
|
},
|
|
"rgroup-attpoints": {
|
|
shortcut: "Mod+r",
|
|
title: "Attachment Point Tool",
|
|
action: { tool: 'apoint' }
|
|
},
|
|
};
|
|
|
|
const bondCuts = {
|
|
"single": "1",
|
|
"double": "2",
|
|
"triple": "3",
|
|
"up": "1",
|
|
"down": "1",
|
|
"updown": "1",
|
|
"crossed": "2",
|
|
"any": "0",
|
|
"aromatic": "4",
|
|
};
|
|
|
|
const typeSchema = bondSchema.properties.type;
|
|
|
|
export default typeSchema.enum.reduce((res, type, i) => {
|
|
res[`bond-${type}`] = {
|
|
title: `${typeSchema.enumNames[i]} Bond`,
|
|
shortcut: bondCuts[type],
|
|
action: {
|
|
tool: 'bond',
|
|
opts: toBondType(type)
|
|
}
|
|
};
|
|
return res;
|
|
}, toolActions);
|