aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/ConsoleViewVM.cs
blob: fd1567e0d45100dffc3cf0bf9956baf9108e8fca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Console;
using Tango.FSE.Common;

namespace Tango.FSE.PPCConsole.ViewModels
{
    public class ConsoleViewVM : FSEViewModel
    {
        private List<ConsoleSuggestion> _lastSuggestions;

        private ConsoleControlVM _consoleVM;
        public ConsoleControlVM ConsoleVM
        {
            get { return _consoleVM; }
            set { _consoleVM = value; RaisePropertyChangedAuto(); }
        }

        public ConsoleViewVM()
        {
            _lastSuggestions = new List<ConsoleSuggestion>();
            ConsoleVM = new ConsoleControlVM();
            ConsoleVM.CommandExecuting += ConsoleVM_CommandExecuting;
            ConsoleVM.Clear();
        }

        private async void ConsoleVM_CommandExecuting(object sender, ConsoleCommandExecutingEventArgs e)
        {
            try
            {
                var result = await MachineProvider.MachineOperator.SendGenericRequest<ConsoleCommandDTO, ConsoleCommandExecutionResult>(new ConsoleCommandDTO()
                {
                    Command = e.Command.CommandText,
                    WorkingFolder = e.Command.WorkingFolder,
                });
                _lastSuggestions = result.Suggestions;
                e.Complete(result);
            }
            catch (Exception ex)
            {
                e.Complete(new ConsoleCommandExecutionResult()
                {
                    Output = ex.FlattenMessage(),
                    WorkingFolder = e.Command.WorkingFolder,
                    Suggestions = _lastSuggestions
                });
            }
        }
    }
}
Graph.ZoomComplete += OnGraphZoomComplete; Graph.PanningComplete += OnGraphPanningComplete; Graph.MinMaxChanged += Graph_MinMaxChanged; Render(Graph); } } private void Graph_MinMaxChanged(object sender, EventArgs e) { OnGraphMinMaxChanged(); } public abstract void Render(RealTimeGraphExBase graph, bool animate = false); public void RemoveFromParent() { var parent = this.Parent; var child = this; var panel = parent as Panel; if (panel != null) { panel.Children.Remove(child); return; } var decorator = parent as Decorator; if (decorator != null) { if (decorator.Child == child) { decorator.Child = null; } return; } var contentPresenter = parent as ContentPresenter; if (contentPresenter != null) { if (contentPresenter.Content == child) { contentPresenter.Content = null; } return; } var contentControl = parent as ContentControl; if (contentControl != null) { if (contentControl.Content == child) { contentControl.Content = null; } return; } // maybe more } protected virtual void OnGraphZoomComplete(Point transformOrigin, double scaleX, double scaleY) { } protected virtual void OnGraphPanningComplete(Point translate) { } protected virtual void OnGraphMinMaxChanged() { } } }