aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Converters/StringToFirstLineConverter.cs
blob: 2fa456054e45cf81f817f28a7fcb666dc59e2304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace Tango.MachineStudio.Logging.Converters
{
    public class StringToFirstLineConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value.ToString().ToLines().First();
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
/span>System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Logging; using Tango.PMR.Common; using Tango.Core.Commands; using Tango.Transport; using Tango.Core; namespace Tango.Emulations { /// <summary> /// Represents an <see cref="IEmulator"/> base class. /// </summary> /// <seealso cref="Tango.SharedUI.ExtendedObject" /> /// <seealso cref="Tango.Emulations.IEmulator" /> public abstract class EmulatorBase : ExtendedObject, IEmulator { #region Properties private bool _isStarted; /// <summary> /// Gets or sets a value indicating whether the emulator is started. /// </summary> public bool IsStarted { get { return _isStarted; } set { _isStarted = value; RaisePropertyChanged(nameof(IsStarted)); InvalidateRelayCommands(); } } private ITransporter _transporter; /// <summary> /// Gets or sets the transporter. /// </summary> public ITransporter Transporter { get { return _transporter; } set { _transporter = value; SetTransporter(_transporter); } } #endregion #region Commands /// <summary> /// Gets or sets the start command. /// </summary> public RelayCommand StartCommand { get; set; } /// <summary> /// Gets or sets the stop command. /// </summary> public RelayCommand StopCommand { get; set; } #endregion #region Constructors /// <summary> /// Initializes a new instance of the <see cref="EmulatorBase"/> class. /// </summary> public EmulatorBase() { StartCommand = new RelayCommand(async () => { await Start(); }, (x) => !IsStarted); StopCommand = new RelayCommand(async () => { await Stop(); }, (x) => IsStarted); } /// <summary> /// Initializes a new instance of the <see cref="EmulatorBase"/> class. /// </summary> /// <param name="transporter">The transporter.</param> public EmulatorBase(ITransporter transporter) : this() { Transporter = transporter; } #endregion #region Private Methods /// <summary> /// Sets the transporter. /// </summary> /// <param name="transporter">The transporter.</param> private void SetTransporter(ITransporter transporter) { if (_transporter != null) { _transporter.StateChanged -= OnTransporterStateChanged; } _transporter = transporter; _transporter.RequestReceived += OnTransporterRequestReceived; _transporter.StateChanged += OnTransporterStateChanged; } #endregion #region Public Methods /// <summary> /// Stops this instance. /// </summary> public virtual async Task Stop() { if (IsStarted) { await _transporter.Disconnect(); IsStarted = false; } } /// <summary> /// Starts this instance. /// </summary> public virtual async Task Start() { if (!IsStarted) { await _transporter.Connect(); IsStarted = true; } } #endregion #region Virtual Methods /// <summary> /// Called when transporter state has changed. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> protected virtual void OnTransporterStateChanged(object sender, TransportComponentState e) { LogManager.Log("Transporter state changed: " + e.ToString()); } #endregion #region Abstract Methods /// <summary> /// Called on new request message. /// </summary> /// <param name="sender">The sender.</param> /// <param name="container">The container.</param> protected abstract void OnTransporterRequestReceived(object sender, MessageContainer container); #endregion #region Dispose /// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { Stop().Wait(); if (Transporter != null) Transporter.Dispose(); } #endregion } }