This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -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));
}
}
}
}

View File

@@ -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; }
}
}

View File

@@ -0,0 +1,8 @@
using DTS.Common.Base;
namespace DTS.Common.Interface
{
public interface IManageUsersViewModel :IBaseViewModel
{
}
}

View File

@@ -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; }
}
}

View File

@@ -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";
}
}
}