init
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using DTS.Common.Controls;
|
||||
using DTS.Common.Events;
|
||||
using Microsoft.Practices.Prism.Events;
|
||||
using Microsoft.Practices.ServiceLocation;
|
||||
|
||||
namespace DTS.Common.Behaviors
|
||||
{
|
||||
public class TextBoxPasteBehavior
|
||||
{
|
||||
public static readonly DependencyProperty PasteCommandProperty =
|
||||
DependencyProperty.RegisterAttached(
|
||||
"PasteCommand",
|
||||
typeof(ICommand),
|
||||
typeof(TextBoxPasteBehavior),
|
||||
new FrameworkPropertyMetadata(PasteCommandChanged)
|
||||
);
|
||||
|
||||
public static ICommand GetPasteCommand(DependencyObject target)
|
||||
{
|
||||
return (ICommand)target.GetValue(PasteCommandProperty);
|
||||
}
|
||||
|
||||
public static void SetPasteCommand(DependencyObject target, ICommand value)
|
||||
{
|
||||
target.SetValue(PasteCommandProperty, value);
|
||||
}
|
||||
|
||||
private static void PasteCommandChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (null == textBox && sender is ChannelCodeBuilder ccb)
|
||||
{
|
||||
textBox = ccb.MainEditBox;
|
||||
}
|
||||
else if (null == textBox && sender is ChannelNameBuilder cnb)
|
||||
{
|
||||
textBox = cnb.MainEditBox;
|
||||
}
|
||||
var newValue = (ICommand)e.NewValue;
|
||||
textBox.RemoveHandler(CommandManager.ExecutedEvent, new RoutedEventHandler(CommandExecuted));
|
||||
if (newValue != null)
|
||||
{
|
||||
textBox.AddHandler(CommandManager.ExecutedEvent, new RoutedEventHandler(CommandExecuted), true);
|
||||
}
|
||||
}
|
||||
|
||||
private static void CommandExecuted(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if( !(e is ExecutedRoutedEventArgs eArgs)) { return; }
|
||||
|
||||
if (eArgs.Command != ApplicationCommands.Paste)
|
||||
{
|
||||
if (eArgs.Command is RoutedUICommand secureUICommand)
|
||||
{
|
||||
if( secureUICommand.Name != "Paste") { return; }
|
||||
}
|
||||
else{ return; }
|
||||
}
|
||||
TextBox textBox = sender as TextBox;
|
||||
if (null == sender && sender is ChannelCodeBuilder ccb)
|
||||
{
|
||||
textBox = ccb.MainEditBox;
|
||||
}
|
||||
else if (null == sender && sender is ChannelNameBuilder cnb)
|
||||
{
|
||||
textBox = cnb.MainEditBox;
|
||||
}
|
||||
|
||||
var command = GetPasteCommand(textBox);
|
||||
|
||||
try
|
||||
{
|
||||
var text = Clipboard.GetText();
|
||||
var lines = text.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
|
||||
|
||||
if (command.CanExecute(null))
|
||||
command.Execute(textBox);
|
||||
e.Handled = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
|
||||
eventAggregator.GetEvent<PageErrorEvent>().Publish(new PageErrorArg(new[] {ex.Message}, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using DTS.Common.Enums;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.IO.Ports;
|
||||
|
||||
namespace DTS.Common.Interface.Sensors
|
||||
{
|
||||
public interface IUARTRecord
|
||||
{
|
||||
/// <summary>
|
||||
/// the database id of the sensor
|
||||
/// </summary>
|
||||
[Key]
|
||||
int Id { get; set; }
|
||||
/// <summary>
|
||||
/// Serial number of sensor
|
||||
/// [required to be unique]
|
||||
/// </summary>
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
string SerialNumber { get; set; }
|
||||
uint UartBaudRate { get; set; }
|
||||
uint UartDataBits { get; set; }
|
||||
[StringLength(50)]
|
||||
StopBits UartStopBits { get; set; }
|
||||
//FB 30486 removed set
|
||||
Handshake UartFlowControl { get;}
|
||||
[StringLength(50)]
|
||||
UartDataFormat UartDataFormat { get; set; }
|
||||
Parity UartParity { get; set; }
|
||||
DateTime LastModified { get; set; }
|
||||
string LastUpdatedBy { get; set; }
|
||||
/// <summary>
|
||||
/// bytes representing a delimited string of tag ids
|
||||
/// </summary>
|
||||
byte[] TagsBlobBytes { get; set; }
|
||||
bool DoNotUse { get; set; }
|
||||
bool Broken { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using DTS.Common.Base;
|
||||
|
||||
namespace DTS.Common.Interface
|
||||
{
|
||||
public interface IManageUsersViewModel :IBaseViewModel
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using DTS.Common.Base;
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace DTS.Common.Interface
|
||||
{
|
||||
public interface IISOSettingsViewModel : IBaseViewModel
|
||||
{
|
||||
IISOSettingsView View { get; set; }
|
||||
IISOSettingsData ISOData { get; set; }
|
||||
IISOSettingsModel Model { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,165 @@
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Data;
|
||||
using DTS.Common.Base.Classes;
|
||||
using DTS.Common.Converters;
|
||||
using DTS.Common.Enums.Sensors;
|
||||
using DTS.Common.Interface.Sensors.SoftwareFilters;
|
||||
using DTS.Common.Utils;
|
||||
using Xceed.Wpf.Toolkit.PropertyGrid.Attributes;
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace DTS.Common
|
||||
{
|
||||
[TypeConverter(typeof(EnumDescriptionTypeConverter))]
|
||||
public enum CFCFilter
|
||||
{
|
||||
[Description("None")]
|
||||
None = 0,
|
||||
[Description("Unfiltered")]
|
||||
Unfiltered = -2,
|
||||
[Description("CFC 10")]
|
||||
Class10 = 17,
|
||||
[Description("CFC 60")]
|
||||
Class60 = 100,
|
||||
[Description("CFC 180")]
|
||||
Class180 = 300,
|
||||
[Description("CFC 600")]
|
||||
Class600 = 1000,
|
||||
[Description("CFC 1000")]
|
||||
Class1000 = 1650
|
||||
}
|
||||
public class CFCFilterItemSource : IItemsSource
|
||||
{
|
||||
public ItemCollection GetValues()
|
||||
{
|
||||
return EnumUtil.GetValuesList<CFCFilter>();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// this class could be extended to become an IValueConverter, but for now it just serves as a mechanism for
|
||||
/// going from the serialized in DTS files form of CFC filter to enum and vice versa.
|
||||
/// </summary>
|
||||
public class CFCFilterDTSFileStringConverter
|
||||
{
|
||||
//returns a string representing the isocode field for software filter given a software filter
|
||||
//returns ? if filter is not known
|
||||
public static string GetIsoCodeFromString( string s, bool bUseZeroForUnfiltered = false)
|
||||
{
|
||||
var filter = GetFilterFromString(s);
|
||||
return CFCFilterToCFC(filter);
|
||||
}
|
||||
/// <summary>
|
||||
/// converts from a string (like in ITestChannel) to the CFC enum
|
||||
/// </summary>
|
||||
/// <param name="s"></param>
|
||||
/// <returns></returns>
|
||||
public static CFCFilter GetFilterFromString(string s)
|
||||
{
|
||||
if (string.IsNullOrEmpty(s)) return CFCFilter.Unfiltered;
|
||||
switch (s.ToLower())
|
||||
{
|
||||
case "cfc 10":
|
||||
//added because "CFC " is stripped off in some exports... (FTSS.TSV)
|
||||
case "10":
|
||||
return CFCFilter.Class10;
|
||||
case "cfc 60":
|
||||
case "60":
|
||||
return CFCFilter.Class60;
|
||||
case "cfc 180":
|
||||
case "180":
|
||||
return CFCFilter.Class180;
|
||||
case "cfc 600":
|
||||
case "600":
|
||||
return CFCFilter.Class600;
|
||||
case "cfc 1000":
|
||||
case "1000":
|
||||
return CFCFilter.Class1000;
|
||||
case "unfiltered":
|
||||
return CFCFilter.Unfiltered;
|
||||
case "none":
|
||||
return CFCFilter.None;
|
||||
default:
|
||||
return CFCFilter.Unfiltered;
|
||||
}
|
||||
}
|
||||
|
||||
//FB 13120 convert filter class to cfc filter string
|
||||
/// <summary>
|
||||
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
public static string FilterClassToString(IFilterClass filter)
|
||||
{
|
||||
if (filter == null)
|
||||
return "Unfiltered";
|
||||
|
||||
switch (filter.FClass)
|
||||
{
|
||||
case FilterClassType.CFC10: return "CFC 10";
|
||||
case FilterClassType.CFC60: return "CFC 60";
|
||||
case FilterClassType.CFC180: return "CFC 180";
|
||||
case FilterClassType.CFC600: return "CFC 600";
|
||||
case FilterClassType.CFC1000: return "CFC 1000";
|
||||
case FilterClassType.AdHoc: return filter.Frequency.ToString();
|
||||
case FilterClassType.Unfiltered: return "Unfiltered";
|
||||
case FilterClassType.None: return "None";
|
||||
default:
|
||||
return "Unfiltered";
|
||||
}
|
||||
}
|
||||
|
||||
//FB 13120 convert filter class to cfc string
|
||||
/// <summary>
|
||||
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public static string FilterClassToCFC(IFilterClass filter, bool bUseZeroForUnfiltered = false)
|
||||
{
|
||||
switch (filter.FClass)
|
||||
{
|
||||
case FilterClassType.Unfiltered:
|
||||
return bUseZeroForUnfiltered ? "0" : "P";
|
||||
case FilterClassType.None:
|
||||
return "P";
|
||||
case FilterClassType.CFC10:
|
||||
return "Q";
|
||||
case FilterClassType.CFC60:
|
||||
return "D";
|
||||
case FilterClassType.CFC180:
|
||||
return "C";
|
||||
case FilterClassType.CFC600:
|
||||
return "B";
|
||||
case FilterClassType.CFC1000:
|
||||
return "A";
|
||||
case FilterClassType.AdHoc:
|
||||
return "S";
|
||||
}
|
||||
return "S";
|
||||
}
|
||||
public static string CFCFilterToCFC(CFCFilter filter, bool bUseZeroForUnfiltered = false)
|
||||
{
|
||||
switch (filter)
|
||||
{
|
||||
case CFCFilter.Unfiltered:
|
||||
return bUseZeroForUnfiltered ? "0" : "P";
|
||||
case CFCFilter.None:
|
||||
return "P";
|
||||
case CFCFilter.Class10:
|
||||
return "Q";
|
||||
case CFCFilter.Class60:
|
||||
return "D";
|
||||
case CFCFilter.Class180:
|
||||
return "C";
|
||||
case CFCFilter.Class600:
|
||||
return "B";
|
||||
case CFCFilter.Class1000:
|
||||
return "A";
|
||||
}
|
||||
return "S";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user