Ejemplo n.º 1
0
        /// <summary>
        /// On Key down, one of two things will happen:
        /// 1) This is the first key being held down and we store it
        /// 2) This is the second key being pressed, and we initiate
        ///    adding a node to the graph
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void View_KeyDown(object sender, KeyEventArgs e)
        {
            if (lastChar == null)
            {
                char[] chars = e.Key.ToString().ToCharArray();
                if (chars.Length == 1)
                {
                    lastChar = chars[0];
                }
            }
            else
            {
                WorkspaceView      wsV  = View.ChildOfType <WorkspaceView>();
                WorkspaceViewModel wsVM = wsV.ViewModel as WorkspaceViewModel;

                var sel = wsVM.Model.CurrentSelection;
                var childrenNodeViews = View.ChildrenOfType <NodeView>();

                char[] chars = e.Key.ToString().ToCharArray();
                if (chars.Length == 1)
                {
                    string key = lastChar.ToString() + chars[0].ToString();

                    TryAndPlaceNode(key);
                    lastChar = null;
                }
            }
        }
Ejemplo n.º 2
0
        private void TryAndPlaceNode(string key)
        {
            string nodeName = GetNodeNameFromKeysEntered(NodeShortcuts, key);

            if (nodeName != null)
            {
                DynamoViewModel      vm = view.DataContext as DynamoViewModel;
                System.Windows.Point pnt;
                System.Windows.Point adjusted = new System.Windows.Point(0, 0);
                try
                {
                    //todo playl with how to apply the scale and x/y values.  x/y kind works
                    WorkspaceView wsV = view.ChildOfType <WorkspaceView>();
                    pnt = Mouse.GetPosition(wsV);
                    double scale = wsV.ViewModel.Zoom;
                    double X     = wsV.ViewModel.Model.X;
                    double Y     = wsV.ViewModel.Model.Y;
                    adjusted = new System.Windows.Point(pnt.X / scale - X / scale, pnt.Y / scale - Y / scale);
                }
                catch (Exception)
                {
                    pnt = new System.Windows.Point(0, 0);
                }
                try
                {
                    vm.Model.ExecuteCommand(new CreateNodeCommand(Guid.NewGuid().ToString(), nodeName, adjusted.X, adjusted.Y, false, false));
                }
                catch
                {
                }
            }
        }