diff --git a/src/App.js b/src/App.js
index 895d69192..ec51550c8 100644
--- a/src/App.js
+++ b/src/App.js
@@ -36,13 +36,13 @@ const commandsManagerConfig = {
getActiveContexts: () => store.getState().ui.activeContexts,
};
-const _commandsManager = new CommandsManager(commandsManagerConfig);
-const _hotkeysManager = new HotkeysManager(_commandsManager);
+const commandsManager = new CommandsManager(commandsManagerConfig);
+const hotkeysManager = new HotkeysManager(commandsManager);
// TODO: Should be done in extensions w/ commandsModule
// ~~ ADD COMMANDS
-appCommands.init(_commandsManager);
-_hotkeysManager.setHotkeys(window.config.hotkeys, true);
+appCommands.init(commandsManager);
+hotkeysManager.setHotkeys(window.config.hotkeys, true);
// Force active contexts for now. These should be set in Viewer/ActiveViewer
store.dispatch({
@@ -148,3 +148,5 @@ class App extends Component {
}
export default App;
+
+export { commandsManager, hotkeysManager };
diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js
index 51c3ad744..9d53d8215 100644
--- a/src/components/Header/Header.js
+++ b/src/components/Header/Header.js
@@ -1,16 +1,18 @@
-import React, { Component } from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'react-router-dom';
-import { Dropdown } from 'react-viewerbase';
import './Header.css';
+
+import { Link, withRouter } from 'react-router-dom';
+import React, { Component } from 'react';
+
+import { Dropdown } from 'react-viewerbase';
import OHIFLogo from '../OHIFLogo/OHIFLogo.js';
-import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js';
+import PropTypes from 'prop-types';
+import { UserPreferencesModal } from 'react-viewerbase';
+import { hotkeysManager } from './../../App.js';
class Header extends Component {
static propTypes = {
home: PropTypes.bool.isRequired,
location: PropTypes.object.isRequired,
- openUserPreferencesModal: PropTypes.func,
children: PropTypes.node,
};
@@ -19,12 +21,25 @@ class Header extends Component {
children: OHIFLogo(),
};
+ // onSave: data => {
+ // const contextName = window.store.getState().commandContext.context;
+ // const preferences = cloneDeep(window.store.getState().preferences);
+ // preferences[contextName] = data;
+ // dispatch(setUserPreferences(preferences));
+ // dispatch(setUserPreferencesModalOpen(false));
+ // OHIF.hotkeysUtil.setHotkeys(data.hotKeysData);
+ // },
+ // onResetToDefaults: () => {
+ // dispatch(setUserPreferences());
+ // dispatch(setUserPreferencesModalOpen(false));
+ // OHIF.hotkeysUtil.setHotkeys();
+ // },
+
constructor(props) {
super(props);
+ this.state = { isUserPreferencesOpen: false };
- this.state = {
- userPreferencesOpen: false,
- };
+ const onClick = this.toggleUserPreferences.bind(this);
this.options = [
{
@@ -32,7 +47,7 @@ class Header extends Component {
icon: {
name: 'user',
},
- onClick: this.props.openUserPreferencesModal,
+ onClick: onClick,
},
{
title: 'About',
@@ -42,6 +57,24 @@ class Header extends Component {
link: 'http://ohif.org',
},
];
+
+ this.hotKeysData = hotkeysManager.hotkeyDefinitions;
+ }
+
+ toggleUserPreferences() {
+ const isOpen = this.state.isUserPreferencesOpen;
+
+ this.setState({
+ isUserPreferencesOpen: !isOpen,
+ });
+ }
+
+ onUserPreferencesSave({ windowLevelData, hotKeysData }) {
+ console.log(windowLevelData);
+ console.log(hotKeysData);
+
+ // TODO: Update hotkeysManager
+ // TODO: reset `this.hotKeysData`
}
render() {
@@ -75,7 +108,14 @@ class Header extends Component {
INVESTIGATIONAL USE ONLY
-
+
);
diff --git a/src/connectedComponents/ConnectedHeader.js b/src/connectedComponents/ConnectedHeader.js
index 73644c976..1f39315b6 100644
--- a/src/connectedComponents/ConnectedHeader.js
+++ b/src/connectedComponents/ConnectedHeader.js
@@ -1,6 +1,5 @@
import Header from '../components/Header/Header.js';
import { connect } from 'react-redux';
-import { setUserPreferencesModalOpen } from '../store/layout/actions.js';
const mapStateToProps = state => {
return {
@@ -8,17 +7,6 @@ const mapStateToProps = state => {
};
};
-const mapDispatchToProps = dispatch => {
- return {
- openUserPreferencesModal: () => {
- dispatch(setUserPreferencesModalOpen(true));
- },
- };
-};
-
-const ConnectedHeader = connect(
- mapStateToProps,
- mapDispatchToProps
-)(Header);
+const ConnectedHeader = connect(mapStateToProps)(Header);
export default ConnectedHeader;
diff --git a/src/connectedComponents/ConnectedUserPreferencesModal.js b/src/connectedComponents/ConnectedUserPreferencesModal.js
deleted file mode 100644
index 26ed515eb..000000000
--- a/src/connectedComponents/ConnectedUserPreferencesModal.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import OHIF from 'ohif-core';
-import { UserPreferencesModal } from 'react-viewerbase';
-import cloneDeep from 'lodash.clonedeep';
-import { connect } from 'react-redux';
-import { setUserPreferencesModalOpen } from './../store/layout/actions.js';
-
-const { setUserPreferences } = OHIF.redux.actions;
-
-const mapStateToProps = state => {
- const contextName = window.store.getState().commandContext.context;
- return {
- isOpen: state.ui.userPreferencesModalOpen,
- windowLevelData: state.preferences[contextName]
- ? state.preferences[contextName].windowLevelData
- : {},
- hotKeysData: state.preferences[contextName]
- ? state.preferences[contextName].hotKeysData
- : {},
- };
-};
-
-const mapDispatchToProps = dispatch => {
- return {
- onCancel: () => {
- dispatch(setUserPreferencesModalOpen(false));
- },
- onSave: data => {
- const contextName = window.store.getState().commandContext.context;
- const preferences = cloneDeep(window.store.getState().preferences);
- preferences[contextName] = data;
- dispatch(setUserPreferences(preferences));
- dispatch(setUserPreferencesModalOpen(false));
- OHIF.hotkeysUtil.setHotkeys(data.hotKeysData);
- },
- onResetToDefaults: () => {
- dispatch(setUserPreferences());
- dispatch(setUserPreferencesModalOpen(false));
- OHIF.hotkeysUtil.setHotkeys();
- },
- };
-};
-
-const ConnectedUserPreferencesModal = connect(
- mapStateToProps,
- mapDispatchToProps
-)(UserPreferencesModal);
-
-export default ConnectedUserPreferencesModal;
diff --git a/src/store/layout/actions.js b/src/store/layout/actions.js
index 54e3a16ca..319628c08 100644
--- a/src/store/layout/actions.js
+++ b/src/store/layout/actions.js
@@ -23,11 +23,6 @@ export const setRightSidebarOpen = state => ({
state,
});
-export const setUserPreferencesModalOpen = state => ({
- type: 'SET_USER_PREFERENCES_MODAL_OPEN',
- state,
-});
-
const actions = {
addActiveContext,
removeActiveContext,
@@ -35,7 +30,6 @@ const actions = {
//
setLeftSidebarOpen,
setRightSidebarOpen,
- setUserPreferencesModalOpen,
};
export default actions;
diff --git a/src/store/layout/reducers.js b/src/store/layout/reducers.js
index ea87caef4..6659d72a7 100644
--- a/src/store/layout/reducers.js
+++ b/src/store/layout/reducers.js
@@ -1,7 +1,6 @@
const defaultState = {
leftSidebarOpen: true,
rightSidebarOpen: false,
- userPreferencesModalOpen: false,
labelling: {},
contextMenu: {},
activeContexts: [],
@@ -30,10 +29,6 @@ const ui = (state = defaultState, action) => {
return Object.assign({}, state, { leftSidebarOpen: action.state });
case 'SET_RIGHT_SIDEBAR_OPEN':
return Object.assign({}, state, { rightSidebarOpen: action.state });
- case 'SET_USER_PREFERENCES_MODAL_OPEN':
- return Object.assign({}, state, {
- userPreferencesModalOpen: action.state,
- });
case 'SET_LABELLING_FLOW_DATA': {
const labelling = Object.assign({}, action.labellingFlowData);