Browse Source

1.与Venus分开,删除冗余代码
2.Recipe MaxReflectPower功能移到Tolerance
3.暂时移除流气动画

lixiang 6 months ago
parent
commit
6ec37ea42c
70 changed files with 14 additions and 4726 deletions
  1. 1 0
      Venus/Framework/Common/Routine/IRoutine.cs
  2. 0 47
      Venus/RecipeEditorControl/Command/DelegatedCommand.cs
  3. 0 32
      Venus/RecipeEditorControl/Converter/BoolConverter.cs
  4. 0 49
      Venus/RecipeEditorControl/Converter/CellBorderConverter.cs
  5. 0 35
      Venus/RecipeEditorControl/Converter/CellForeColorConverter.cs
  6. 0 35
      Venus/RecipeEditorControl/Converter/ErrColorConverter.cs
  7. 0 33
      Venus/RecipeEditorControl/Converter/ErrContentConverter.cs
  8. 0 38
      Venus/RecipeEditorControl/Converter/ErrItemDisplayConverter.cs
  9. 0 39
      Venus/RecipeEditorControl/Converter/ErrTooltipConverter.cs
  10. 0 40
      Venus/RecipeEditorControl/Converter/NumConverter.cs
  11. 0 35
      Venus/RecipeEditorControl/Converter/RecipeHeadStringConverter.cs
  12. 0 57
      Venus/RecipeEditorControl/Converter/RecipeInfoConverter.cs
  13. 0 47
      Venus/RecipeEditorControl/Converter/TimeSpanConverter.cs
  14. 0 61
      Venus/RecipeEditorControl/Converter/VisibilityConverter.cs
  15. 0 178
      Venus/RecipeEditorControl/Core/Gloabals.cs
  16. BIN
      Venus/RecipeEditorControl/Images/arrow_redo.png
  17. BIN
      Venus/RecipeEditorControl/Images/arrow_undo.png
  18. BIN
      Venus/RecipeEditorControl/Images/barcode.png
  19. BIN
      Venus/RecipeEditorControl/Images/edit_add.png
  20. BIN
      Venus/RecipeEditorControl/Images/excel.png
  21. BIN
      Venus/RecipeEditorControl/Images/expand.png
  22. BIN
      Venus/RecipeEditorControl/Images/help.png
  23. BIN
      Venus/RecipeEditorControl/Images/hideSame.png
  24. BIN
      Venus/RecipeEditorControl/Images/open.png
  25. BIN
      Venus/RecipeEditorControl/Images/property.png
  26. BIN
      Venus/RecipeEditorControl/Images/save.png
  27. BIN
      Venus/RecipeEditorControl/Images/toggle.png
  28. BIN
      Venus/RecipeEditorControl/Images/warning.png
  29. 0 13
      Venus/RecipeEditorControl/Item.cs
  30. 0 75
      Venus/RecipeEditorControl/Models/RecipeModel.cs
  31. 0 55
      Venus/RecipeEditorControl/Properties/AssemblyInfo.cs
  32. 0 63
      Venus/RecipeEditorControl/Properties/Resources.Designer.cs
  33. 0 117
      Venus/RecipeEditorControl/Properties/Resources.resx
  34. 0 26
      Venus/RecipeEditorControl/Properties/Settings.Designer.cs
  35. 0 7
      Venus/RecipeEditorControl/Properties/Settings.settings
  36. 0 237
      Venus/RecipeEditorControl/RecipeEditorControl.csproj
  37. 0 48
      Venus/RecipeEditorControl/Resources/StringResources.en-US.xaml
  38. 0 39
      Venus/RecipeEditorControl/Resources/StringResources.zh-CN.xaml
  39. 0 265
      Venus/RecipeEditorControl/View/EndPointDlg.xaml
  40. 0 101
      Venus/RecipeEditorControl/View/EndPointDlg.xaml.cs
  41. 0 22
      Venus/RecipeEditorControl/View/ErrorInformationDetailsView.xaml
  42. 0 43
      Venus/RecipeEditorControl/View/ErrorInformationDetailsView.xaml.cs
  43. 0 67
      Venus/RecipeEditorControl/View/RecipeEditorControl.xaml
  44. 0 308
      Venus/RecipeEditorControl/View/RecipeEditorControl.xaml.cs
  45. 0 10
      Venus/RecipeEditorControl/View/RecipeHelpView.xaml
  46. 0 70
      Venus/RecipeEditorControl/View/RecipeHelpView.xaml.cs
  47. 0 95
      Venus/RecipeEditorControl/View/RecipeInfoEditor.xaml
  48. 0 89
      Venus/RecipeEditorControl/View/RecipeInfoEditor.xaml.cs
  49. 0 24
      Venus/RecipeEditorControl/View/RecipeNameInputDlg.xaml
  50. 0 98
      Venus/RecipeEditorControl/View/RecipeNameInputDlg.xaml.cs
  51. 0 61
      Venus/RecipeEditorControl/View/SmartCellEditor.xaml
  52. 0 27
      Venus/RecipeEditorControl/View/SmartCellEditor.xaml.cs
  53. 0 10
      Venus/RecipeEditorControl/View/UserNameInput.xaml
  54. 0 52
      Venus/RecipeEditorControl/View/UserNameInput.xaml.cs
  55. 0 1091
      Venus/RecipeEditorControl/ViewModel/RecipeEditorControlViewModel.cs
  56. 0 196
      Venus/RecipeEditorControl/ViewModel/SmartCellData.cs
  57. 0 23
      Venus/RecipeEditorControl/map.xml
  58. 1 1
      Venus/Venus_RT/Modules/PMs/GasBoxLeakCheckRoutine.cs
  59. 0 155
      Venus/Venus_RT/Modules/PMs/LLPickRoutine.cs
  60. 0 128
      Venus/Venus_RT/Modules/PMs/LLPlaceRoutine.cs
  61. 0 107
      Venus/Venus_RT/Modules/PMs/LoadLockLeakCheckRoutine.cs
  62. 0 79
      Venus/Venus_RT/Modules/PMs/LoadLockPumpRoutine.cs
  63. 0 83
      Venus/Venus_RT/Modules/PMs/LoadLockPurgeRoutine.cs
  64. 0 92
      Venus/Venus_RT/Modules/PMs/LoadLockVentRoutine.cs
  65. 2 2
      Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs
  66. 3 1
      Venus/Venus_RT/Modules/PMs/ProcessDefine.cs
  67. 1 1
      Venus/Venus_RT/Modules/RouteManager.cs
  68. 2 11
      Venus/Venus_RT/Modules/SystemDispatcher.cs
  69. 3 7
      Venus/Venus_RT/Venus_RT.csproj
  70. 1 1
      Venus/Venus_Themes/UserControls/FlowPipe.xaml

+ 1 - 0
Venus/Framework/Common/Routine/IRoutine.cs

@@ -64,6 +64,7 @@ namespace Aitex.Core.RT.Routine
         protected readonly int _delay_2m = 120000;
         protected readonly int _delay_3m = 180000;
         protected readonly int _delay_5m = 300000;
+        protected readonly int _delay_10d = 1000 * 60 * 60 * 24 * 10;
 
         public ModuleRoutineBase(ModuleName module)
         {

+ 0 - 47
Venus/RecipeEditorControl/Command/DelegatedCommand.cs

@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Input;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class DelegatedCommand : ICommand
-    {
-        public DelegatedCommand(Predicate<object> CanExecute, Action<object> Execute)
-        {
-            _canExecute = CanExecute;
-            _execute = Execute;
-        }
-
-        Predicate<object> _canExecute;
-
-        Action<object> _execute;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="parameter"></param>
-        /// <returns></returns>
-        public bool CanExecute(object parameter)
-        {
-            if (_canExecute != null)
-                return _canExecute.Invoke(parameter);
-            return true;
-        }
-
-        public event EventHandler CanExecuteChanged;
-
-        public void Execute(object parameter)
-        {
-            if (_execute != null)
-                _execute.Invoke(parameter);
-        }
-
-        public void RaiseCanExecuteChanged()
-        {
-            if (CanExecuteChanged != null)
-                CanExecuteChanged(this, EventArgs.Empty);
-        }
-    }
-}

+ 0 - 32
Venus/RecipeEditorControl/Converter/BoolConverter.cs

@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class BoolConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                string v = (string)value;
-                if (String.Compare(v, "true", true) == 0)
-                    return true;
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return false;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return value.ToString();
-        }
-    }
-}

+ 0 - 49
Venus/RecipeEditorControl/Converter/CellBorderConverter.cs

@@ -1,49 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class CellBorderConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                bool v = (bool)value;
-                if (v)
-                    return new System.Windows.Thickness(4, 0, 4, 0);
-                else
-                    return new System.Windows.Thickness(0, 0, 0, 0);
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return new System.Windows.Thickness(0, 0, 0, 0);
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-
-    public class JumpCellBorderConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            bool v;
-            bool.TryParse(value.ToString(), out v);
-            double t = v ? 2 : 0;
-            return new System.Windows.Thickness(t, t, t, t);
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 35
Venus/RecipeEditorControl/Converter/CellForeColorConverter.cs

@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows.Media;
-using Xceed.Wpf.DataGrid;
-using System.Data;
-using System.Windows;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class CellForeColorConverter : IMultiValueConverter
-    {
-        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            var cell = values[0] as DataCell;
-            if (cell == null) return Brushes.Black;
-            
-            RecipeEditorControlViewModel controlViewModel = values[1] as RecipeEditorControlViewModel;
-            if (controlViewModel == null) return Brushes.Black;
-            if (!(cell.DataContext is DataRowView)) return Brushes.Black;
-            var dataRowView = cell.DataContext as DataRowView;
-            System.Data.DataRow row = dataRowView.Row;
-            int currentRowIndex = row.Table.Rows.IndexOf(row);
-
-            return Brushes.Black;
-        }
-
-        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 35
Venus/RecipeEditorControl/Converter/ErrColorConverter.cs

@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows;
-using System.Windows.Media;
-
-namespace Aitex.UI.RecipeEditor
-{
-    class ErrColorConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                if (value == null) return Brushes.White;
-                var errors = value as List<Tuple<int/*row no*/, int/*col no*/, string/*var name*/, string/*reason*/>>;
-                if (errors.Count > 0)
-                    return Brushes.Red;
-                return Brushes.White;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return Brushes.White;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 33
Venus/RecipeEditorControl/Converter/ErrContentConverter.cs

@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows;
-using System.Windows.Media;
-
-namespace Aitex.UI.RecipeEditor
-{
-    class ErrContentConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                if (value == null) return " Valid";
-                var errors = value as List<Tuple<int/*row no*/, int/*col no*/, string/*var name*/, string/*reason*/>>;
-                return string.Format(" {0} Error", errors.Count);
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return " Error";
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 38
Venus/RecipeEditorControl/Converter/ErrItemDisplayConverter.cs

@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class ErrItemDisplayConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                if (value == null)
-                    return "";
-                var list1 = value as List<Tuple<int, int, string, string>>;
-                var list2 = new List<string>();
-                int no = 1;
-                foreach (var item in list1)
-                {
-                    list2.Add(string.Format("{0}. 第{1}步,第{2}行,变量名:{3},原因:{4}", no++, item.Item2 + 1, item.Item1 + 1, item.Item3, item.Item4));
-                }
-                return list2;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return null;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return value.ToString();
-        }
-    }
-}

+ 0 - 39
Venus/RecipeEditorControl/Converter/ErrTooltipConverter.cs

@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows;
-using System.Windows.Media;
-
-namespace Aitex.UI.RecipeEditor
-{
-    class ErrTooltipConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                if (value == null) return " 0 Error";
-                var errors = value as List<Tuple<int/*row no*/, int/*col no*/, string/*var name*/, string/*reason*/>>;
-                string errStr = string.Format("Found {0} erros\r\n", errors.Count);
-                int index = 1;
-                foreach (var e in errors)
-                {
-                    errStr += string.Format("\r\n({0}). step {1},Line {2},{3},{4}。", index++, e.Item2 + 1, e.Item1 + 1, e.Item3, e.Item4);
-                }
-                return errStr;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return " Unknown Error";
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 40
Venus/RecipeEditorControl/Converter/NumConverter.cs

@@ -1,40 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class NumConverter :IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                string s = (string)value;
-                decimal d;
-                if (!decimal.TryParse(s, out d)) return 0;
-                return d;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return 0;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                return value.ToString();
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return "0";
-        }
-    }
-}

+ 0 - 35
Venus/RecipeEditorControl/Converter/RecipeHeadStringConverter.cs

@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows;
-using System.Windows.Media;
-
-namespace Aitex.UI.RecipeEditor
-{
-    class RecipeHeadStringConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            //try
-            //{
-            //    if (value == null) return " (Empty)";
-            //    var recipeHead = value as RecipeHead;
-            //    if (recipeHead == null) return " (Empty)";
-            //    return string.Format("Recipe Version:{0}\r\n\r\nLast Modified By:{2}\r\nLast Modified Time:{3}\r\nDescription:{1}",
-            //        recipeHead.RecipeVariation, recipeHead.Description, /*recipeHead.CreationTime, recipeHead.CreatedBy, */recipeHead.LastModifiedBy, recipeHead.LastRevisionTime);
-            //}
-            //catch (Exception ex)
-            //{
-            //    System.Diagnostics.Debug.WriteLine(ex.Message);
-            //}
-            return " (Empty)";
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 57
Venus/RecipeEditorControl/Converter/RecipeInfoConverter.cs

@@ -1,57 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Collections.ObjectModel;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class RecipeInfoConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            //try
-            //{
-            //    if (value == null) return "";
-            //    var recipeRows = value as ObservableCollection<RecipeRow>;
-            //    if (recipeRows == null) return "";
-            //    int timeStepRowId = -1;
-            //    for (int i = 0; i < recipeRows.Count; i++)
-            //    {
-            //        if (recipeRows[i].TechnicalName == "Time")
-            //        {
-            //            timeStepRowId = i;
-            //            break;
-            //        }
-            //    }
-            //    TimeSpan tspan = new TimeSpan();
-            //    for (int stepNo = 0; stepNo < recipeRows[timeStepRowId].RecipeItems.Count; stepNo++)
-            //    {
-            //        var timeDuration = recipeRows[timeStepRowId].RecipeItems[stepNo].Value;
-            //        var timeArr = timeDuration.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
-            //        if (timeArr.Length == 3)
-            //        {
-            //            int h, mi, s;
-            //            if (int.TryParse(timeArr[0], out h) && int.TryParse(timeArr[1], out mi) && int.TryParse(timeArr[2], out s))
-            //            {
-            //                var ts = new TimeSpan(h, mi, s);
-            //                tspan += ts;
-            //            }
-            //        }
-            //    }
-            //    return string.Format("共{0}步,总时间{1}:{2}:{3}", recipeRows.Count, (int)tspan.TotalHours, tspan.Minutes, tspan.Seconds);
-            //}
-            //catch (Exception ex)
-            //{
-            //    System.Diagnostics.Debug.WriteLine(ex.Message);
-            //}
-            return "";
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return null;
-        }
-    }
-}

+ 0 - 47
Venus/RecipeEditorControl/Converter/TimeSpanConverter.cs

@@ -1,47 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows.Media;
-using Xceed.Wpf.DataGrid;
-using System.Data;
-using System.Windows;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class TimeSpanConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                string v = (string)value;
-                DateTime dt;
-                if (!DateTime.TryParse(v, out dt))
-                    return new DateTime(0);
-                dt = new DateTime(1, 1, 1, dt.Hour, dt.Minute, dt.Second);
-                return dt;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return new DateTime(0);
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                DateTime dt = (DateTime)value;
-                return string.Format("{0}:{1}:{2}", dt.Hour.ToString("00"), dt.Minute.ToString("00"), dt.Second.ToString("00"));
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return "00:00:00";
-        }
-    }
-}

+ 0 - 61
Venus/RecipeEditorControl/Converter/VisibilityConverter.cs

@@ -1,61 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Data;
-using System.Windows;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class BoolToVisibilityConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            if (value == null) return Visibility.Collapsed;
-
-            return ((bool)value) ? Visibility.Visible:Visibility.Collapsed;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            if (value == null) return null;
-            return object.Equals(value, parameter);
-        }
-    }
-
-    class VisibilityConverter : IValueConverter
-    {
-        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            try
-            {
-                SmartCellData cellData = value as SmartCellData;
-                if (cellData == null) return Visibility.Collapsed;
-                CellType cellType = cellData.RecipeVariableDefine.CellType;
-                bool isMasked = cellData.IsMasked;
-                string controlName = (string)parameter;
-                if (
-                    (controlName == "ReadonlyComboBox" && (cellType == CellType.ReadOnlySelection) && !isMasked) ||
-                    (controlName == "EditableComboBox" && (cellType == CellType.EditableSelection) && !isMasked) ||
-                    (controlName == "TextBox" && (cellType == CellType.TextInput) && !isMasked) ||
-                    (controlName == "DecimalUpDown" && (cellType == CellType.NumInput) && !isMasked) ||
-                    (controlName == "CheckBox" && (cellType == CellType.CheckBox) && !isMasked) ||
-                    (controlName == "EndPoint" && (cellType == CellType.EndPointSetting) && !isMasked) ||
-                    (controlName == "TextBlock" && (cellType == CellType.ReadOnly || isMasked) && (cellType!=CellType.EndPointSetting)) ||
-                    (controlName == "TimePicker" && (cellType == CellType.TimeInput) && !isMasked))
-                    return Visibility.Visible;
-                return Visibility.Collapsed;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-            return Visibility.Collapsed;
-        }
-
-        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
-        {
-            return Visibility.Collapsed;
-        }
-    }
-}

+ 0 - 178
Venus/RecipeEditorControl/Core/Gloabals.cs

@@ -1,178 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Runtime.Serialization;
-using System.IO;
-using System.Xml;
-using System.Xml.Serialization;
-
-namespace Aitex.UI.RecipeEditor.Core
-{
-        /// <summary>
-        /// Endby condition define
-        /// </summary>
-        [Serializable]
-        [DataContract]
-        public enum EndByCondition
-        {
-            /// <summary>
-            /// Reactor temperature greate than
-            /// </summary>
-            [EnumMember]
-            PmTempGt,
-
-            /// <summary>
-            /// Reactor temperature less than
-            /// </summary>
-            [EnumMember]
-            PmTempLt,
-
-            /// <summary>
-            /// Reactor A zone temperature greate than
-            /// </summary>
-            [EnumMember]
-            AZoneTempGt,
-
-            /// <summary>
-            /// Reactor A zone temperature less than
-            /// </summary> 
-            [EnumMember]
-            AZoneTempLt,
-
-            /// <summary>
-            /// Reactor B zone temperature greate than
-            /// </summary> 
-            [EnumMember]
-            BZoneTempGt,
-
-            /// <summary>
-            /// Reactor B zone temperature less than
-            /// </summary> 
-            [EnumMember]
-            BZoneTempLt,
-
-            /// <summary>
-            /// Reactor C zone temperature greate than
-            /// </summary> 
-            [EnumMember]
-            CZoneTempGt,
-
-            /// <summary>
-            /// Reactor C zone temperature less than
-            /// </summary> 
-            [EnumMember]
-            CZoneTempLt,
-
-            /// <summary>
-            /// Reactor D zone temperature greate than
-            /// </summary> 
-            [EnumMember]
-            DZoneTempGt,
-
-            /// <summary>
-            /// Reactor D zone temperature less than
-            /// </summary> 
-            [EnumMember]
-            DZoneTempLt,
-
-            /// <summary>
-            /// Reactor pressure greate than
-            /// </summary> 
-            [EnumMember]
-            PmPresGt,
-
-            /// <summary>
-            /// Reactorpressure less than
-            /// </summary> 
-            [EnumMember]
-            PmPresLt,
-
-            /// <summary>
-            /// TC value great than
-            /// </summary>
-            [EnumMember]
-            TcGt,
-
-            /// <summary>
-            /// TC value less than
-            /// </summary>
-            [EnumMember]
-            TcLt,
-
-            /// <summary>
-            /// spindle speed great than
-            /// </summary>
-            [EnumMember]
-            RpmGt,
-
-            /// <summary>
-            /// spindle speed less than
-            /// </summary>
-            [EnumMember]
-            RpmLt,
-    }
-
-        public class CustomXmlSerializer
-        {
-            static public void Serialize<T>(T t, string fileName)
-            {
-                using (FileStream fileWriter = new FileStream(fileName, FileMode.Create))
-                using (XmlWriter writer = XmlTextWriter.Create(fileWriter))
-                {
-                    XmlSerializer serializer = new XmlSerializer(t.GetType());
-
-                    serializer.Serialize(writer, t);
-                    writer.Flush();
-                }
-            }
-            static public string Serialize<T>(T t)
-            {
-                StringBuilder buffer = new StringBuilder();
-                using (StringWriter writer = new StringWriter(buffer))
-                {
-                    XmlSerializer serializer = new XmlSerializer(typeof(T));
-                    serializer.Serialize(writer, t);
-                }
-
-                return buffer.ToString();
-            }
-
-            static public T Deserialize<T>(string xmlString)
-            {
-                if (string.IsNullOrWhiteSpace(xmlString))
-                    throw new ArgumentNullException("xmlString");
-
-                using (StringReader reader = new StringReader(xmlString))
-                {
-                    XmlSerializer serializer = new XmlSerializer(typeof(T));
-                    return (T)serializer.Deserialize(reader);
-                }
-            }
-
-            static public T Deserialize<T>(Stream streamReader)
-            {
-                if (streamReader == null)
-                    throw new ArgumentNullException("streamReader");
-                if (streamReader.Length <= 0)
-                    throw new EndOfStreamException("The stream is blank");
-
-                using (XmlReader reader = XmlTextReader.Create(streamReader))
-                {
-                    XmlSerializer deserializer = new XmlSerializer(typeof(T));
-                    return (T)deserializer.Deserialize(reader);
-                }
-            }
-
-            static public T Deserialize<T>(FileInfo fi)
-            {
-                if (fi == null)
-                    throw new ArgumentNullException("fi");
-                if (!fi.Exists)
-                    throw new FileNotFoundException(fi.FullName);
-
-                using (FileStream fileReader = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read))
-                    return Deserialize<T>(fileReader);
-            }
-        }
-}

BIN
Venus/RecipeEditorControl/Images/arrow_redo.png


BIN
Venus/RecipeEditorControl/Images/arrow_undo.png


BIN
Venus/RecipeEditorControl/Images/barcode.png


BIN
Venus/RecipeEditorControl/Images/edit_add.png


BIN
Venus/RecipeEditorControl/Images/excel.png


BIN
Venus/RecipeEditorControl/Images/expand.png


BIN
Venus/RecipeEditorControl/Images/help.png


BIN
Venus/RecipeEditorControl/Images/hideSame.png


BIN
Venus/RecipeEditorControl/Images/open.png


BIN
Venus/RecipeEditorControl/Images/property.png


BIN
Venus/RecipeEditorControl/Images/save.png


BIN
Venus/RecipeEditorControl/Images/toggle.png


BIN
Venus/RecipeEditorControl/Images/warning.png


+ 0 - 13
Venus/RecipeEditorControl/Item.cs

@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Aitex.Controls.RecipeCompare
-{
-    public class Item
-    {
-        public string No { get; set; }
-        public string Name { get; set; }
-    }
-}

+ 0 - 75
Venus/RecipeEditorControl/Models/RecipeModel.cs

@@ -1,75 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Aitex.UI.RecipeEditor
-{
-    public class RecipeModel : INotifyPropertyChanged
-    {
-        public string Name { get; set; }
-        public string RecipeType { get; set; }
-        public string StepName { get; set; }
-        public int StepTime { get; set; }
-
-        //private string m_StepEndMode;
-        //public string StepEndMode
-        //{
-        //    get { return m_StepEndMode; }
-        //    set { m_StepEndMode = value;}
-        //}
-        public string StepEndMode { get; set; }
-        public int MinEndPointTime { get; set; }
-        public int Pressure { get; set; }
-        public int SRFPower { get; set; }
-        public int SRFPowerMax { get; set; }
-        public int SRFC1Position { get; set; }
-        public int SRFC2Position { get; set; }
-        public int BRFPower { get; set; }
-        public int BRFPowerMax { get; set; }
-        public int BRFC1Position { get; set; }
-        public int BRFC2Position { get; set; }
-        private int m_Gas1;
-        public int Gas1
-        {
-            get { return m_Gas1; }
-            set { m_Gas1 = value;  }
-        }
-        public int Gas2 { get; set; }
-        public int Gas3 { get; set; }
-        public int Gas4 { get; set; }
-        public int Gas5 { get; set; }
-        public int Gas6 { get; set; }
-        public int Gas7 { get; set; }
-        public int Gas8 { get; set; }
-        public int Helium { get; set; }
-        public int HeliumFlowMax { get; set; }
-        public int HeliumFlowMin { get; set; }
-        public int ESCTemperature { get; set; }
-        public int ESCClampVpltage { get; set; }
-        //private string m_ValveControlMode;
-        //public string ValveControlMode
-        //{
-        //    get { return m_ValveControlMode; }
-        //    set { m_ValveControlMode = value; }
-        //}
-        public string ValveControlMode { get; set; }
-        public int ValvePosition{ get; set; }
-        public int ValvePresetPosition { get; set; }
-        public int ValveHoldDelay { get; set; }
-        public string LiftPinState { get; set; }
-        public string EndPointType { get; set; }
-
-        public event PropertyChangedEventHandler PropertyChanged;
-
-        public void InvokePropertyChanged(string propertyName)
-        {
-            if (PropertyChanged != null)
-            {
-                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-}

+ 0 - 55
Venus/RecipeEditorControl/Properties/AssemblyInfo.cs

@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("RecipeEditorControl")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("RecipeEditorControl")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set 
-//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
-//inside a <PropertyGroup>.  For example, if you are using US english
-//in your source files, set the <UICulture> to en-US.  Then uncomment
-//the NeutralResourceLanguage attribute below.  Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
-    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
-    //(used if a resource is not found in the page, 
-    // or application resource dictionaries)
-    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
-    //(used if a resource is not found in the page, 
-    // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]

+ 0 - 63
Venus/RecipeEditorControl/Properties/Resources.Designer.cs

@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     此代码由工具生成。
-//     运行时版本:4.0.30319.42000
-//
-//     对此文件的更改可能会导致不正确的行为,并且如果
-//     重新生成代码,这些更改将会丢失。
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Aitex.Ui.RecipeEditor.Properties {
-    using System;
-    
-    
-    /// <summary>
-    ///   一个强类型的资源类,用于查找本地化的字符串等。
-    /// </summary>
-    // 此类是由 StronglyTypedResourceBuilder
-    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
-    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
-    // (以 /str 作为命令选项),或重新生成 VS 项目。
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources() {
-        }
-        
-        /// <summary>
-        ///   返回此类使用的缓存的 ResourceManager 实例。
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Aitex.Ui.RecipeEditor.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   重写当前线程的 CurrentUICulture 属性,对
-        ///   使用此强类型资源类的所有资源查找执行重写。
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-    }
-}

+ 0 - 117
Venus/RecipeEditorControl/Properties/Resources.resx

@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>

+ 0 - 26
Venus/RecipeEditorControl/Properties/Settings.Designer.cs

@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     此代码由工具生成。
-//     运行时版本:4.0.30319.42000
-//
-//     对此文件的更改可能会导致不正确的行为,并且如果
-//     重新生成代码,这些更改将会丢失。
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Aitex.Ui.RecipeEditor.Properties {
-    
-    
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-        
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-        
-        public static Settings Default {
-            get {
-                return defaultInstance;
-            }
-        }
-    }
-}

+ 0 - 7
Venus/RecipeEditorControl/Properties/Settings.settings

@@ -1,7 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>

+ 0 - 237
Venus/RecipeEditorControl/RecipeEditorControl.csproj

@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{C226E370-E9FB-48E7-BF40-89A33F88EF17}</ProjectGuid>
-    <OutputType>library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Aitex.Ui.RecipeEditor</RootNamespace>
-    <AssemblyName>RecipeEditorControl</AssemblyName>
-    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-    <FileAlignment>512</FileAlignment>
-    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <WarningLevel>4</WarningLevel>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <Prefer32Bit>false</Prefer32Bit>
-    <NoWarn>CS0168</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="EPDViewerLib">
-      <HintPath>..\ThirdParty\EpdViewerLib.dll</HintPath>
-    </Reference>
-    <Reference Include="ExcelLibrary">
-      <HintPath>..\ThirdParty\ExcelLibrary.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" />
-    <Reference Include="OpenSEMI.Core">
-      <HintPath>..\ThirdParty\OpenSEMI.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="OpenSEMI.Ctrlib">
-      <HintPath>..\ThirdParty\OpenSEMI.Ctrlib.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Windows.Interactivity">
-      <HintPath>..\ThirdParty\System.Windows.Interactivity.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Xml" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="System.Xaml">
-      <RequiredTargetFramework>4.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="WindowsBase" />
-    <Reference Include="PresentationCore" />
-    <Reference Include="PresentationFramework" />
-    <Reference Include="Xceed.Wpf.AvalonDock">
-      <HintPath>..\ThirdParty\Xceed.Wpf.AvalonDock.dll</HintPath>
-    </Reference>
-    <Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero">
-      <HintPath>..\ThirdParty\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
-    </Reference>
-    <Reference Include="Xceed.Wpf.DataGrid">
-      <HintPath>..\ThirdParty\Xceed.Wpf.DataGrid.dll</HintPath>
-    </Reference>
-    <Reference Include="Xceed.Wpf.Toolkit">
-      <HintPath>..\ThirdParty\Xceed.Wpf.Toolkit.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Converter\BoolConverter.cs" />
-    <Compile Include="Converter\CellBorderConverter.cs" />
-    <Compile Include="Converter\CellForeColorConverter.cs" />
-    <Compile Include="Converter\ErrColorConverter.cs" />
-    <Compile Include="Converter\ErrContentConverter.cs" />
-    <Compile Include="Converter\ErrItemDisplayConverter.cs" />
-    <Compile Include="Converter\ErrTooltipConverter.cs" />
-    <Compile Include="Converter\NumConverter.cs" />
-    <Compile Include="Converter\RecipeHeadStringConverter.cs" />
-    <Compile Include="Converter\RecipeInfoConverter.cs" />
-    <Compile Include="Converter\TimeSpanConverter.cs" />
-    <Compile Include="Converter\VisibilityConverter.cs" />
-    <Compile Include="Command\DelegatedCommand.cs" />
-    <Compile Include="Core\Gloabals.cs" />
-    <Compile Include="Item.cs" />
-    <Compile Include="Models\RecipeModel.cs" />
-    <Compile Include="View\ErrorInformationDetailsView.xaml.cs">
-      <DependentUpon>ErrorInformationDetailsView.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="View\RecipeInfoEditor.xaml.cs">
-      <DependentUpon>RecipeInfoEditor.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="View\EndPointDlg.xaml.cs">
-      <DependentUpon>EndPointDlg.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="View\RecipeNameInputDlg.xaml.cs">
-      <DependentUpon>RecipeNameInputDlg.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="View\UserNameInput.xaml.cs">
-      <DependentUpon>UserNameInput.xaml</DependentUpon>
-    </Compile>
-    <Resource Include="Resources\StringResources.en-US.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Resource>
-    <Resource Include="Resources\StringResources.zh-CN.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Resource>
-    <Page Include="View\ErrorInformationDetailsView.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="View\RecipeEditorControl.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="View\RecipeHelpView.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="View\RecipeInfoEditor.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="View\EndPointDlg.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="View\RecipeNameInputDlg.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
-    <Page Include="View\SmartCellEditor.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Compile Include="View\RecipeEditorControl.xaml.cs">
-      <DependentUpon>RecipeEditorControl.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="ViewModel\RecipeEditorControlViewModel.cs" />
-    <Compile Include="View\RecipeHelpView.xaml.cs">
-      <DependentUpon>RecipeHelpView.xaml</DependentUpon>
-    </Compile>
-    <Compile Include="ViewModel\SmartCellData.cs" />
-    <Compile Include="View\SmartCellEditor.xaml.cs">
-      <DependentUpon>SmartCellEditor.xaml</DependentUpon>
-    </Compile>
-    <Page Include="View\UserNameInput.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <AppDesigner Include="Properties\" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Images\arrow_redo.png" />
-    <Resource Include="Images\arrow_undo.png" />
-    <Resource Include="Images\edit_add.png" />
-    <Resource Include="Images\excel.png" />
-    <Resource Include="Images\expand.png" />
-    <Resource Include="Images\help.png" />
-    <Resource Include="Images\open.png" />
-    <Resource Include="Images\property.png" />
-    <Resource Include="Images\save.png" />
-    <Resource Include="Images\toggle.png" />
-    <Resource Include="Images\warning.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Images\hideSame.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Resource Include="Images\barcode.png" />
-    <Content Include="map.xml">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Venus_Core\Venus_Core.csproj">
-      <Project>{e40639dd-94a7-4ecd-8137-11496bd0bfa3}</Project>
-      <Name>Venus_Core</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

+ 0 - 48
Venus/RecipeEditorControl/Resources/StringResources.en-US.xaml

@@ -1,48 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-xmlns:system="clr-namespace:System;assembly=mscorlib">
-
-
-    <system:String x:Key="GlobalLableButtonUndo"> Undo</system:String>
-    <system:String x:Key="GlobalLableButtonRedo"> Redo</system:String>
-    <system:String x:Key="GlobalLableButtonExpand">Expand</system:String>
-    <system:String x:Key="GlobalLableButtonToggle">Toggle</system:String>
-    <system:String x:Key="GlobalLableButtonHideSame">HideSame</system:String>
-    <system:String x:Key="GlobalLableButtonExport">Export</system:String>
-    <system:String x:Key="GlobalLableButtonSetting">Setting</system:String>
-
-    <system:String x:Key="GlobalLableInfoProperty">Property</system:String>
-    <system:String x:Key="GlobalLableInfoOwner">Owner</system:String>
-    <system:String x:Key="GlobalLableInfoLastModifiedBy">Last Modified By:</system:String>
-    <system:String x:Key="GlobalLableInfoLastRevisionTime">Last Revision Time:</system:String>
-    <system:String x:Key="GlobalLableInfoLastDescription">Description</system:String>
-    <system:String x:Key="GlobalLableInfoCommonSetting">Common Setting</system:String>
-    <system:String x:Key="GlobalLableInfoBasePressure">Base Pressure(mTor)</system:String>
-    <system:String x:Key="GlobalLableInfoPumpDownLimit">Pump Down Limit(s)</system:String>
-    <system:String x:Key="GlobalLableInfoElectrodeTemp">Electrode Temp(c)</system:String>
-    <system:String x:Key="GlobalLableInfoPurgeActive">Purge Active</system:String>
-    <system:String x:Key="GlobalLableInfoNotToPurgeOrVent">Not To Purge Or Vent</system:String>
-    <system:String x:Key="GlobalLableInfoElectrodeTempCritical">E.Ctritical Temp(℃)</system:String>
-    <system:String x:Key="GlobalLableInfoSubstrateTemp">Substrate Temp(℃)</system:String>
-    <system:String x:Key="PumpingPinState">Pumping LiftPin SetState</system:String>
-    <system:String x:Key="GlobalLableInfoHeaterTemp">Heater Temp(℃)</system:String>
-
-    <system:String x:Key="GlobalLableInfoSetting">Setting</system:String>
-
-    <system:String x:Key="GlobalLableTitleRecipeNameInput">Recipe Name Input</system:String>
-    <system:String x:Key="GlobalLableInfoRecipeNameInput">Please input the recipe file name:</system:String>
-
-    <system:String x:Key="GlobalLableButtonOk">OK</system:String>
-    <system:String x:Key="GlobalLableButtonCancel">Cancel</system:String>
-
-    <system:String x:Key="GlobalLableUserInforInput">User Information Input</system:String>
-    <system:String x:Key="GlobalLableSavedInRecipe">The name will be saved in the recipe file</system:String>
-    <system:String x:Key="GlobalLableInputName">Please Input your name:</system:String>
-
-    <system:String x:Key="VentingPinState">Venting LiftPin SetState</system:String>
-    <system:String x:Key="PinDownPressure">Pin Down Pressure(mTor)</system:String>
-
-
-
-
-</ResourceDictionary>

+ 0 - 39
Venus/RecipeEditorControl/Resources/StringResources.zh-CN.xaml

@@ -1,39 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:system="clr-namespace:System;assembly=mscorlib">
-    <!-- 登录页面 -->
-    <system:String x:Key="GlobalLableButtonUndo"> 撤销</system:String>
-    <system:String x:Key="GlobalLableButtonRedo">恢复</system:String>
-    <system:String x:Key="GlobalLableButtonExpand">展开</system:String>
-    <system:String x:Key="GlobalLableButtonToggle">收拢</system:String>
-    <system:String x:Key="GlobalLableButtonHideSame">优化</system:String>
-    <system:String x:Key="GlobalLableButtonExport">导出</system:String>
-    <system:String x:Key="GlobalLableButtonSetting">设置</system:String>
-
-    <system:String x:Key="GlobalLableInfoProperty">属性</system:String>
-    <system:String x:Key="GlobalLableInfoOwner">创建者</system:String>
-    <system:String x:Key="GlobalLableInfoLastModifiedBy">最后修改:</system:String>
-    <system:String x:Key="GlobalLableInfoLastRevisionTime">最后修改时间:</system:String>
-    <system:String x:Key="GlobalLableInfoSetting">设置</system:String>
-
- 
-    <system:String x:Key="GlobalLableInfoLastDescription">备注</system:String>
-    <system:String x:Key="GlobalLableInfoCommonSetting">工艺参数设置</system:String>
-    <system:String x:Key="GlobalLableInfoBasePressure">抽气低压(毫托)</system:String>
-    <system:String x:Key="GlobalLableInfoPumpDownLimit">抽气时间阈值(秒)</system:String>
-    <system:String x:Key="GlobalLableInfoElectrodeTemp">电极温度(度)</system:String>
-    <system:String x:Key="GlobalLableInfoPurgeActive">工艺后是否吹扫</system:String>
-    <system:String x:Key="GlobalLableInfoNotToPurgeOrVent">工艺后保持真空</system:String>
-    <system:String x:Key="GlobalLableInfoElectrodeTempCritical">电极板报警温度(℃)</system:String>
-
-    <system:String x:Key="GlobalLableTitleRecipeNameInput">输入菜单文件名称</system:String>
-    <system:String x:Key="GlobalLableInfoRecipeNameInput">请输入菜单文件的名称:</system:String>
-
-    <system:String x:Key="GlobalLableButtonOk">确认</system:String>
-    <system:String x:Key="GlobalLableButtonCancel">取消</system:String>
-
-    <system:String x:Key="GlobalLableUserInforInput">修改者信息</system:String>
-    <system:String x:Key="GlobalLableSavedInRecipe">这个名字会被保存在菜单文件中</system:String>
-    <system:String x:Key="GlobalLableInputName">请输入修改者名字:</system:String>
-</ResourceDictionary>
-    

+ 0 - 265
Venus/RecipeEditorControl/View/EndPointDlg.xaml

@@ -1,265 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.View.EndPointDlg"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:controls="http://OpenSEMI.Ctrlib.com/presentation"
-    Title="EndPoint Setting"
-        WindowStartupLocation="CenterOwner"
-        WindowStyle="SingleBorderWindow"  ShowInTaskbar="False"
-        Background="LightSkyBlue" SizeToContent="WidthAndHeight" Width="700" Height="520">
-    <Grid>
-        <Grid.RowDefinitions>
-            <RowDefinition Height="10"></RowDefinition>
-            <RowDefinition Height="35"></RowDefinition>
-            <RowDefinition Height="35"></RowDefinition>
-            <RowDefinition Height="*"></RowDefinition>
-            <RowDefinition Height="40"></RowDefinition>
-        </Grid.RowDefinitions>
-        <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="362"></ColumnDefinition>
-            <ColumnDefinition Width="330"></ColumnDefinition>
-        </Grid.ColumnDefinitions>
-
-        <!--<StackPanel Orientation="Horizontal" Margin="0" Width="362" Height="25" Grid.Row="1">
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="10,0,0,0" Height="25" Width="130">
-                <TextBlock Text="Select EPD Config" HorizontalAlignment="Right" FontSize="12" Margin="0,0,10,0" Foreground="White"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Height="25" Width="190">
-                <ComboBox SelectedIndex="5"    FontSize="13"  >
-                    <ComboBoxItem>TrigAtPeek</ComboBoxItem>
-                    <ComboBoxItem>ValleyDelay15</ComboBoxItem>
-                    <ComboBoxItem>RangeIn50</ComboBoxItem>
-                    <ComboBoxItem>MonitorEPDDelay15</ComboBoxItem>
-                    <ComboBoxItem>ValleyDelay20</ComboBoxItem>
-                    <ComboBoxItem>BelowValue3</ComboBoxItem>
-                </ComboBox>
-            </Border>
-        </StackPanel>-->
-
-        <StackPanel Orientation="Horizontal" Margin="0" Width="362" Height="25" Grid.Row="2">
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="10,0,0,0" Height="25" Width="200">
-                <TextBlock Text="CCD Exposure Time(ms)" HorizontalAlignment="Right" FontSize="12" Margin="0,0,10,0" Foreground="White"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Height="25" Width="120">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch" x:Name="textBoxInput" FontSize="12"  Text="{Binding ExposureTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="2" Height="20"/>
-            </Border>
-        </StackPanel>
-        <Grid Margin="10,0,0,10" Grid.Row="3">
-            <Grid.RowDefinitions>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"/>
-            </Grid.RowDefinitions>
-            <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="80"></ColumnDefinition>
-                <ColumnDefinition Width="120"></ColumnDefinition>
-                <ColumnDefinition Width="120"/>
-            </Grid.ColumnDefinitions>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Row="1">
-                <TextBlock Grid.Row="1" Text="A" HorizontalAlignment="Center" FontSize="12" Height="14" Margin="0,6"   Foreground="White" />
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Row="2">
-                <TextBlock Grid.Row="2" Text="B" HorizontalAlignment="Center" FontSize="12" Height="14" Margin="0,6"  Foreground="White"  />
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Row="3">
-                <TextBlock Grid.Row="3" Text="C" HorizontalAlignment="Center" FontSize="12" Height="14" Margin="0,6"   Foreground="White" />
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Row="4">
-                <TextBlock Grid.Row="4" Text="D" HorizontalAlignment="Center" FontSize="12" Height="14" Margin="0,6"  Foreground="White"  />
-            </Border>
- 
-
-
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25">
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Column="1">
-                <TextBlock Grid.Row="0" Text="Wave Length(nm)" HorizontalAlignment="Center" FontSize="12" Height="15" Margin="0" Width="104" Grid.Column="1" Foreground="White"  />
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0" Height="25" Grid.Column="2">
-                <TextBlock Grid.Row="0" Grid.Column="2" Text="Binning(nm)" HorizontalAlignment="Center" FontSize="12" Height="15" Margin="0" Width="74"  Foreground="White" />
-            </Border>
-
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="1" Grid.Row="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch" Text="{Binding WaveLengthA, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="1" Grid.Row="2" >
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding WaveLengthB, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Grid.ColumnSpan="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="1" Grid.Row="3">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding WaveLengthC, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Grid.ColumnSpan="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="1" Grid.Row="4">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding WaveLengthD, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" TextAlignment="Center"  FontSize="12"  Width="115"  Height="20" Margin="2" Grid.ColumnSpan="2" Foreground="Black"/>
-            </Border>
- 
-
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Grid.Column="2" Margin="0" Grid.Row="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"   Text="{Binding BinningA, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Grid.Column="2" Margin="0" Grid.Row="2">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"   Text="{Binding BinningB, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="2" Grid.Row="3" >
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"   Text="{Binding BinningC, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0" Grid.Column="2" Grid.Row="4" >
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding BinningD, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" TextAlignment="Center"  FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-
- 
-        </Grid>
-
-        <Grid Grid.Row="1" Grid.RowSpan="3" Grid.Column="1" Margin="0,0,0,0">
-            <Grid.RowDefinitions>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="0"></RowDefinition>
-                <RowDefinition Height="0"></RowDefinition>
-                <RowDefinition Height="0"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-                <RowDefinition Height="25"></RowDefinition>
-            </Grid.RowDefinitions>
-            <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="200"></ColumnDefinition>
-                <ColumnDefinition Width="120"></ColumnDefinition>
-            </Grid.ColumnDefinitions>
-
-            <Border Grid.Row="0" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Text="F(d)" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White" />
-            </Border>
-            <Border Grid.Row="1" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Text="Pre-filter time window(ms)" HorizontalAlignment="Right"  Margin="0,0,10,0" FontSize="12" Foreground="White"/>
-            </Border>
-            <Border Grid.Row="2" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="2" Text="Post-filter time window(ms)" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"/>
-            </Border>
-            <Border Grid.Row="3" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="3" Text="Algorithm Type" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"/>
-            </Border>
-            <Border Grid.Row="4" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="4" Text="Criteria" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"/>
-            </Border>
-            <Border Grid.Row="5" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="5" Text="Delay Time(ms)" HorizontalAlignment="Right"  Margin="0,0,10,0" FontSize="12" Foreground="White" />
-            </Border>
-            <Border Grid.Row="6" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="6" Text="Validation Time(ms)" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <Border Grid.Row="7" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="7" Text="Validation Value" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <Border Grid.Row="8" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="8" Text="Time window(ms)" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <Border Grid.Row="9" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="9" Text="Minimal EP Time(ms)" HorizontalAlignment="Right"  Margin="0,0,10,0" FontSize="12" Foreground="White" />
-            </Border>
-            <Border Grid.Row="10" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="10" Text="Postpone Time(ms)" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <Border Grid.Row="11" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="11" Text="Control" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <Border Grid.Row="12" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="12" Text="Normalization" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12"  Foreground="White" />
-            </Border>
-            <!--<Border Grid.Row="13" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="13" Text="Postpone Percent" HorizontalAlignment="Right"  Margin="0,0,10,0" FontSize="12" Foreground="White" />
-            </Border>
-            <Border Grid.Row="14" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="14" Text="Criteria Percent" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"  />
-            </Border>-->
-            <!--<Border Grid.Row="15" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="15" Text="Trigger Mode" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"  />
-            </Border>-->
-            <Border Grid.Row="16" BorderBrush="White" BorderThickness="1" Background="#376092" Margin="0">
-                <TextBlock Grid.Row="16" Text="Fault if no EP recognized" HorizontalAlignment="Right" Margin="0,0,10,0" FontSize="12" Foreground="White"  />
-            </Border>
-
-            <Border Grid.Row="0" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding Fd, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"
-                                    PreviewMouseLeftButtonUp="TextBoxEx_PreviewMouseLeftButtonUp"
-                                    TextChanged="TextBoxEx_TextChanged"/>
-            </Border>
-            <Border Grid.Row="1" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding PrefilterTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="2" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding PostfilterTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2"  Foreground="Black"/>
-            </Border>
-            <ComboBox Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" HorizontalContentAlignment="Left"
-                      DisplayMemberPath="AlogarithmName"
-                      SelectedValuePath="AlogarithmName" ItemsSource="{Binding AlgorithmTypes, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
-                      SelectedValue="{Binding AlgorithmType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   FontSize="12" Width="121"  Height="25" Margin="0"  >
-
-            </ComboBox>
-            <Border Grid.Row="4" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding Criteria, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center" TextAlignment="Center"  FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black" />
-            </Border>
-            <Border Grid.Row="5" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding DelayTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Center"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="6" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding ValidationTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="7" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding ValidationValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="8" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch"  Text="{Binding TimeWindow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center"  FontSize="12" Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="9" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch" Text="{Binding MinimalTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center" TextAlignment="Center"  FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="10" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <controls:TextBoxEx HorizontalContentAlignment="Stretch" Text="{Binding PostponeTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center"  TextAlignment="Center" FontSize="12"  Width="115"  Height="20" Margin="2" Foreground="Black"/>
-            </Border>
-            <Border Grid.Row="11" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding Control, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>
-            <Border Grid.Row="12" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding Normalization, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>
-            <!--<Border Grid.Row="13" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding EnablePostponePercent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>
-            <Border Grid.Row="14" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding EnableCriterialPercent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>-->
-            <!--<Border Grid.Row="15" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding EnableEventTrigger, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"   HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>-->
- 
-            <Border Grid.Row="16" BorderBrush="White" BorderThickness="1" Background="#95B3D7" Margin="0,0,0,0" Grid.Column="1">
-                <CheckBox  IsChecked="{Binding IsFaultIfNoTrigger, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"    HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"  VerticalAlignment="Center"   FontSize="12"  Height="23"   />
-            </Border>
-
-
-        </Grid>
-
-        <StackPanel Grid.Row="4" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="232,0,250,0" Width="210">
-            <Button Content="{DynamicResource GlobalLableButtonOk}" x:Name="buttonOK" Margin="0,0,5,0" Width="75" Height="30" FontSize="12" IsDefault="True" Click="buttonOK_Click" />
-            <Button Content="{DynamicResource GlobalLableButtonCancel}" x:Name="buttonCancel" Margin="50,0,5,0" Width="75" Height="30"  FontSize="12" IsCancel="True" Click="buttonCancel_Click" />
-        </StackPanel>
-    </Grid>
-</Window>

+ 0 - 101
Venus/RecipeEditorControl/View/EndPointDlg.xaml.cs

@@ -1,101 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-using System.Text.RegularExpressions;
-using EPDViewerLib;
-
-namespace Aitex.UI.RecipeEditor.View
-{
-    /// <summary>
-    /// Interaction logic for RecipeNameInputDlg.xaml
-    /// </summary>
-    public partial class EndPointDlg : Window
-    {
-        //public EndPointConfigItem ConfigItem
-        //{
-        //    get;
-        //    set;
-        //}
-
-        public class AlogarithmTypeItem
-        {
-            public string AlogarithmName { get; set; }
-        }
-
-        public List<AlogarithmTypeItem> AlgorithmTypes { get; set; }
-
-        public string SelectedConfig { get; set; }
-
-        public EndPointDlg( )
-        {
-            InitializeComponent();
-
-            AlgorithmTypes = new List<AlogarithmTypeItem>()
-            {
-                new AlogarithmTypeItem() { AlogarithmName = "Unknown"},
-                new AlogarithmTypeItem() { AlogarithmName = "Above_ABS_Value"},
-                new AlogarithmTypeItem() { AlogarithmName = "Below_ABS_Value"},
-                new AlogarithmTypeItem() { AlogarithmName = "Drop_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Up_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Range_In"},
-                new AlogarithmTypeItem() { AlogarithmName = "Gradient"},
-                new AlogarithmTypeItem() { AlogarithmName = "Peek"},
-                new AlogarithmTypeItem() { AlogarithmName = "Valley"},
-                new AlogarithmTypeItem() { AlogarithmName = "Min_Drop_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Min_Up_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Max_Drop_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Max_Up_Percent"},
-                new AlogarithmTypeItem() { AlogarithmName = "Rise_Fall"},
-                new AlogarithmTypeItem() { AlogarithmName = "Fall_Rise"},
-            };
-
-            //Loaded += new RoutedEventHandler(EndPointDlg_Loaded);
-
-            SelectedConfig = "BelowValue3";
-        }
-
-        //void EndPointDlg_Loaded(object sender, RoutedEventArgs e)
-        //{
-        //    DataContext = ConfigItem;
-        //}
-
-        private void buttonCancel_Click(object sender, RoutedEventArgs e)
-        {
-            this.DialogResult = false;
-        }
-
-        private void buttonOK_Click(object sender, RoutedEventArgs e)
-        {            
-            this.DialogResult = true;
-        }
-
-        private void TextBoxEx_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
-        {
-            if (sender is TextBox txt)
-            {
-                var regionList = new List<string> { "A", "B", "C", "D"};
-                var input = new ExpressionWindow(txt, regionList);
-                input.Show();
-            }
-        }
-
-        private void TextBoxEx_TextChanged(object sender, TextChangedEventArgs e)
-        {
-            if (sender is TextBox txt)
-            {
-                var regionList = new List<string> { "A", "B", "C", "D" };
-                var res = ExpressionWindow.TransExpression(txt.Text, regionList);
-                txt.Foreground = res ? Brushes.Black : Brushes.Red;
-            }
-        }
-    }
-}

+ 0 - 22
Venus/RecipeEditorControl/View/ErrorInformationDetailsView.xaml

@@ -1,22 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.ErrorInformationDetailsView"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        Title="Error Information" Height="275" Width="479" WindowStyle="SingleBorderWindow"
-        xmlns:app="clr-namespace:Aitex.UI.RecipeEditor"
-        Topmost="True" Closing="Window_Closing"
-        WindowStartupLocation="CenterOwner" 
-        Background="LightYellow" FontFamily="Arial,SimSun" 
-        ResizeMode="NoResize">
-    <Grid Background="Transparent">
-        <Grid.Resources>
-            <app:ErrItemDisplayConverter x:Key="errItemDisplayConverter"/>
-        </Grid.Resources>
-
-        <DataGrid  AutoGenerateColumns="False" Margin="0" Padding="0" ItemsSource="{Binding Errors,Converter={StaticResource errItemDisplayConverter}}" >
-
-            <DataGrid.Columns>
-                <DataGridTextColumn Header="Error Items" Width="450" IsReadOnly="True" Binding="{Binding}" />
-            </DataGrid.Columns>
-        </DataGrid>
-    </Grid>
-</Window>

+ 0 - 43
Venus/RecipeEditorControl/View/ErrorInformationDetailsView.xaml.cs

@@ -1,43 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-
-namespace Aitex.UI.RecipeEditor
-{
-    /// <summary>
-    /// Interaction logic for ErrorInformationDetailsView.xaml
-    /// </summary>
-    public partial class ErrorInformationDetailsView : Window
-    {
-        readonly static Lazy<ErrorInformationDetailsView> _instace =
-            new Lazy<ErrorInformationDetailsView>(() => new ErrorInformationDetailsView(), true);
-
-        public static ErrorInformationDetailsView Instance
-        {
-            get
-            {
-                return _instace.Value;
-            }
-        }
-
-        ErrorInformationDetailsView()
-        {
-            InitializeComponent();
-        }
-
-        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
-        {
-            Hide();
-            e.Cancel = true;
-        }
-    }
-}

+ 0 - 67
Venus/RecipeEditorControl/View/RecipeEditorControl.xaml

@@ -1,67 +0,0 @@
-<UserControl x:Class="Aitex.UI.RecipeEditor.RecipeEditorControl"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             mc:Ignorable="d"
-             xmlns:s="clr-namespace:System;assembly=mscorlib"
-             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
-             xmlns:app="clr-namespace:Aitex.UI.RecipeEditor"
-             xmlns:xctl="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
-             xmlns:toolkit="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
-             xmlns:xctk="http://schemas.xceed.com/wpf/xaml/datagrid"
-             xmlns:local="clr-namespace:Aitex.UI.RecipeEditor"
-             d:DesignHeight="452" d:DesignWidth="1201" FontFamily="Arial,SimSun">
-    <Grid x:Name="grid1">
-        <Grid.RowDefinitions>
-            <RowDefinition  Height="Auto"/>
-            <RowDefinition  />
-        </Grid.RowDefinitions>
-        <Grid.Resources>
-            <!--<ResourceDictionary>
-                <ResourceDictionary.MergedDictionaries>
-                    <ResourceDictionary Source="pack://application:,,,/Venus_Themes;component/Styles/Button.xaml"/>
-                </ResourceDictionary.MergedDictionaries>
-            </ResourceDictionary>-->
-            <!--<ResourceDictionary Source="pack://application:,,,/Venus_Themes;component/Styles/Button.xaml"/>-->
-            <app:CellForeColorConverter x:Key="CellForeColorConverter" />
-            <app:ErrColorConverter x:Key="ErrColorConverter" />
-            <app:ErrContentConverter x:Key="ErrContentConverter" />
-            <app:ErrTooltipConverter x:Key="ErrTooltipConverter" />
-            <app:RecipeHeadStringConverter x:Key="RecipeHeadStringConverter" />
-            <app:CellBorderConverter x:Key="cellBorderConverter" />
-            <app:JumpCellBorderConverter x:Key="jumpCellBorderConverter"/>
-            <DataTemplate x:Key="columnRedTitleTemplate">
-                <TextBlock Text="{Binding}" Foreground="Red"/>
-            </DataTemplate>
-
-            <DataTemplate x:Key="columnBlackTitleTemplate">
-                <TextBlock Text="{Binding}" Foreground="Black"/>
-            </DataTemplate>
-
-            <DataTemplate x:Key="CustomTemplate">
-                <Border BorderThickness="{Binding IsRunning,Converter={StaticResource cellBorderConverter}}" BorderBrush="Blue">
-                    <TextBlock Text="{Binding Display}"  Foreground="{Binding Foreground}" Background="{Binding Background}" ToolTip="{Binding ToolTip}"  FontWeight="{Binding FontWeight}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
-                </Border>
-            </DataTemplate>
-            <DataTemplate x:Key="RowHeadTemplate">
-                <TextBlock Text="{Binding Path=FriendlyName}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="Black"/>
-            </DataTemplate>
-
-            <xctk:DataGridCollectionViewSource x:Key="recipeData" Source="{Binding RecipeRows}">
-        <xctk:DataGridCollectionViewSource.GroupDescriptions>
-                    <PropertyGroupDescription PropertyName="CatalogName" />
-                </xctk:DataGridCollectionViewSource.GroupDescriptions>
-            </xctk:DataGridCollectionViewSource>
-        </Grid.Resources>
-        <Grid Grid.Row="0">
-            <Expander Grid.Row="1" Header="RecipeHead" FontSize="15" Margin="10,0,0,0">
-                <WrapPanel  x:Name="headStackpanel" Orientation="Horizontal">
-                </WrapPanel>
-            </Expander>
-        </Grid>
-        <ScrollViewer Grid.Row="1"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
-            <StackPanel   x:Name="stackPanel1" Orientation="Horizontal" Grid.Row="1" ScrollViewer.VerticalScrollBarVisibility="Visible"/>
-        </ScrollViewer>
-    </Grid>
-</UserControl>

+ 0 - 308
Venus/RecipeEditorControl/View/RecipeEditorControl.xaml.cs

@@ -1,308 +0,0 @@
-using System;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Media;
-using System.Xml;
-using System.Diagnostics;
-using System.Windows.Controls.Primitives;
-
-namespace Aitex.UI.RecipeEditor
-{
-    /// <summary>
-    /// Interaction logic for RecipeEditorControl.xaml
-    /// </summary>
-    public partial class RecipeEditorControl : UserControl
-    {
-        public RecipeEditorControl()
-        {
-            InitializeComponent();
-            ControlViewModel = new RecipeEditorControlViewModel() { GridStackPanel = stackPanel1,HeadWrapPanel =headStackpanel};
-            Loaded += new RoutedEventHandler(RecipeEditorView_Loaded);
-        }
-
-        /// <summary>
-        /// RecipeEditor's view model
-        /// </summary>
-        public RecipeEditorControlViewModel ControlViewModel { get; set; }
-
-       
-        private void RecipeEditorView_Loaded(object sender, RoutedEventArgs e)
-        {
-            grid1.DataContext = ControlViewModel;
-        }      
-
-        /// <summary>
-        /// update recipe variations
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void NewButtonPanelLoaded(object sender, RoutedEventArgs e)
-        {
-            try
-            {
-                string variation = (string)((Button)sender).Tag;
-                //newButton.IsOpen = false;
-                XmlDocument doc = new XmlDocument();
-                var dir = new System.IO.FileInfo(Process.GetCurrentProcess().MainModule.FileName).Directory;
-                string xmlPath = dir + "\\Config\\" + variation + ".xml";
-                doc.Load(xmlPath);
-                //ControlViewModel.LoadRecipe(doc.SelectSingleNode("/Aitex/TableRecipeFormat").OuterXml, doc.SelectSingleNode("/Aitex/TableRecipeData").OuterXml);
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-        }     
-    }
-    public class GridOptions
-    {
-        //暂时不处理实时显示的事情
-        #region 显示边框信息
-        public static readonly DependencyProperty ShowBorderProperty =
-            DependencyProperty.RegisterAttached("ShowBorder", typeof(bool), typeof(GridOptions)
-                , new PropertyMetadata(OnShowBorderChanged));
-        public static bool GetShowBorder(DependencyObject obj)
-        {
-            return (bool)obj.GetValue(ShowBorderProperty);
-        }
-
-        //private static bool flag = false;
-
-        public static void SetShowBorder(DependencyObject obj, bool value)
-        {
-            GridLoaded(obj as Grid, null);
-            obj.SetValue(ShowBorderProperty, value);
-        }
-
-        public static void OnShowBorderChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        {
-            var grid = d as Grid;
-            if ((bool)e.OldValue)
-                grid.Loaded -= (s, arg) => { };
-            else
-            {
-                grid.Loaded += new RoutedEventHandler(GridLoaded);
-            }
-        }
-        #endregion
-        #region 线宽信息
-        public static readonly DependencyProperty LineThicknessProperty =
-           DependencyProperty.RegisterAttached("LineThickness", typeof(double), typeof(GridOptions),
-               new PropertyMetadata(1d, OnGridLineThicknessChanged));
-        public static double GetLineThickness(DependencyObject obj)
-        {
-            return (double)obj.GetValue(LineThicknessProperty);
-        }
-
-        public static void SetLineThickness(DependencyObject obj, double value)
-        {
-            obj.SetValue(LineThicknessProperty, value);
-        }
-
-
-        public static void OnGridLineThicknessChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        {
-
-        }
-        #endregion
-
-        public static readonly DependencyProperty LineBrushProperty =
-            DependencyProperty.RegisterAttached("LineBrush", typeof(Brush), typeof(GridOptions),
-                new PropertyMetadata(Brushes.Gray, OnGridLineBrushChanged));
-
-        #region 线画刷问题
-        public static Brush GetLineBrush(DependencyObject obj)
-        {
-            var brush = (Brush)obj.GetValue(LineBrushProperty);
-            return brush ?? Brushes.LightGray;
-        }
-
-        public static void SetLineBrush(DependencyObject obj, Brush value)
-        {
-            obj.SetValue(LineBrushProperty, value);
-        }
-
-        public static void OnGridLineBrushChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        {
-
-        }
-        #endregion
-
-        private static void GridLoaded(object sender, RoutedEventArgs e)
-        {
-
-            #region 思路
-            /*
-             * 1、覆盖所有单元格都要包围上边框。
-             * 2、边框线不能存在重复。每个单元格绘制【右下】部分,主体绘制右上部分
-             */
-            #endregion
-            var grid = sender as Grid;
-            foreach (UIElement item in grid.Children)
-            {
-                if (item is Border)
-                {
-                    return;
-                }
-            }
-            var rowCount = Math.Max(1, grid.RowDefinitions.Count);
-            var columnCount = Math.Max(1, grid.ColumnDefinitions.Count);
-            #region 初始化标准数组
-            int[,] flagArray = new int[rowCount, columnCount];
-            #endregion
-            var controls = grid.Children;
-            var count = controls.Count;
-            var settingThickness = GetLineThickness(grid);
-            var borderBrush = GetLineBrush(grid);
-            for (int i = 0; i < count; i++)
-            {
-                var item = controls[i] as FrameworkElement;
-                var row = Grid.GetRow((item));
-                var column = Grid.GetColumn(item);
-                var rowSpan = Grid.GetRowSpan(item);
-                var columnSpan = Grid.GetColumnSpan(item);
-                for (int rowTemp = 0; rowTemp < rowSpan; rowTemp++)
-                {
-                    for (int colTemp = 0; colTemp < columnSpan; colTemp++)
-                    {
-                        flagArray[rowTemp + row, colTemp + column] = 1;
-                    }
-                }
-
-                var border = CreateBorder(row, column, rowSpan, columnSpan, settingThickness);
-                border.BorderBrush = borderBrush;
-
-                grid.Children.RemoveAt(i);
-                border.Child = item;
-                grid.Children.Insert(i, border);
-            }
-
-            #region 整理为填充单元格
-            for (int i = 0; i < rowCount; i++)
-            {
-                for (int k = 0; k < columnCount; k++)
-                {
-                    if (flagArray[i, k] == 0)
-                    {
-                        var border = CreateBorder(i, k, 1, 1, settingThickness);
-                        border.BorderBrush = borderBrush;
-                        grid.Children.Add(border);
-                    }
-                }
-            }
-            #endregion
-
-
-        }
-
-        private static Border CreateBorder(int row, int column, int rowSpan, int columnSpan, double thickness)
-        {
-            var useThickness = new Thickness(0, 0, thickness, thickness);
-            if (row == 0)
-                useThickness.Top = thickness;
-            if (column == 0)
-                useThickness.Left = thickness;
-            var border = new Border()
-            {
-                BorderThickness = useThickness,
-            };
-            Grid.SetRow(border, row);
-            Grid.SetColumn(border, column);
-            Grid.SetRowSpan(border, rowSpan);
-            Grid.SetColumnSpan(border, columnSpan);
-            return border;
-        }
-    }
-    public class ItemsControlHelper
-    {
-        /// <summary>
-        /// 绑定 enum 类型所有值给 ItemsSource 赋值
-        /// 必须绑定 SelectedItem
-        /// </summary>
-        public static readonly DependencyProperty EnumValuesToItemsSourceProperty = DependencyProperty.RegisterAttached(
-            "EnumValuesToItemsSource", typeof(bool), typeof(ItemsControlHelper), new PropertyMetadata(default(bool), OnEnumValuesToItemsSourceChanged));
-
-        public static void SetEnumValuesToItemsSource(DependencyObject element, bool value)
-        {
-            element.SetValue(EnumValuesToItemsSourceProperty, value);
-        }
-
-        public static bool GetEnumValuesToItemsSource(DependencyObject element)
-        {
-            return (bool)element.GetValue(EnumValuesToItemsSourceProperty);
-        }
-
-        private static void OnEnumValuesToItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        {
-            if (d is ItemsControl itemsControl && GetEnumValuesToItemsSource(itemsControl))
-            {
-                if (itemsControl.IsLoaded)
-                {
-                    SetItemsSource(itemsControl);
-                }
-                else
-                {
-                    itemsControl.Loaded += ItemsControl_Loaded;
-                }
-            }
-        }
-
-        private static void SetItemsSource(ItemsControl itemsControl)
-        {
-            var itemsBindingExpression = BindingOperations.GetBinding(itemsControl, ItemsControl.ItemsSourceProperty);
-            if (itemsBindingExpression != null)
-            {
-                throw new InvalidOperationException("When using ItemsControlHelper.EnumValuesToItemsSource, cannot be used ItemsSource at the same time.");
-            }
-
-            if (itemsControl.Items.Count > 0)
-            {
-                throw new InvalidOperationException("When using ItemsControlHelper.EnumValuesToItemsSource, Items Collection must be null");
-            }
-
-            var bindingExpression = BindingOperations.GetBindingExpression(itemsControl, Selector.SelectedItemProperty);
-            if (bindingExpression == null)
-            {
-                throw new InvalidOperationException("ItemsControl must be binding SelectedItem property");
-            }
-
-            var binding = bindingExpression.ParentBinding;
-            var dataType = bindingExpression.DataItem?.GetType();
-            var paths = binding.Path.Path.Split('.');
-            foreach (var path in paths)
-            {
-                var propertyInfo = dataType?.GetProperty(path);
-                if (propertyInfo == null)
-                {
-                    return;
-                }
-
-                dataType = propertyInfo.PropertyType;
-            }
-
-            if (dataType!=null&&!dataType.IsEnum)
-            {
-                var underlyingType = Nullable.GetUnderlyingType(dataType);
-                if (underlyingType == null)
-                {
-                    return;
-                }
-
-                dataType = underlyingType;
-            }
-
-            var itemsSourceBinding = new Binding();
-            itemsSourceBinding.Source = Enum.GetValues(dataType);
-            itemsSourceBinding.Mode = BindingMode.OneWay;
-            itemsControl.SetBinding(ItemsControl.ItemsSourceProperty, itemsSourceBinding);
-        }
-
-        private static void ItemsControl_Loaded(object sender, RoutedEventArgs e)
-        {
-            var itemsControl = (ItemsControl)sender;
-            itemsControl.Loaded -= ItemsControl_Loaded;
-            SetItemsSource(itemsControl);
-        }
-    }
-}

+ 0 - 10
Venus/RecipeEditorControl/View/RecipeHelpView.xaml

@@ -1,10 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.RecipeHelpView"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        Title="Help" Height="275" Width="479"  WindowStyle="SingleBorderWindow" 
-        xmlns:app="clr-namespace:Aitex.UI.RecipeEditor"
-        Topmost="True" WindowStartupLocation="CenterOwner" 
-        xmlns:toolkit="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
-        Background="White" FontFamily="Arial,SimSun" ResizeMode="CanResize">
-        <toolkit:RichTextBox x:Name="_richTextBox" BorderBrush="Gray" IsReadOnly="True" Text="{Binding Notes}"  ScrollViewer.VerticalScrollBarVisibility="Auto" />
-</Window>

+ 0 - 70
Venus/RecipeEditorControl/View/RecipeHelpView.xaml.cs

@@ -1,70 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-using System.Diagnostics;
-using System.IO;
-
-namespace Aitex.UI.RecipeEditor
-{
-    /// <summary>
-    /// Interaction logic for RecipeHelpView.xaml
-    /// </summary>
-    public partial class RecipeHelpView : Window
-    {
-
-        readonly static Lazy<RecipeHelpView> _instace =
-        new Lazy<RecipeHelpView>(() => new RecipeHelpView(), true);
-
-        public static RecipeHelpView Instance
-        {
-            get
-            {
-                return _instace.Value;
-            }
-        }
-
-        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
-        {
-            Hide();
-            e.Cancel = true;
-        }
-
-
-        RecipeHelpView()
-        {
-            InitializeComponent();
-            Closing += new System.ComponentModel.CancelEventHandler(Window_Closing);
-            IsVisibleChanged += new DependencyPropertyChangedEventHandler(RecipeHelpView_IsVisibleChanged);
-            try
-            {
-                var dir = new FileInfo(Process.GetCurrentProcess().MainModule.FileName).Directory;
-                string docFile = dir + "\\HelpDoc.rtf";
-                using (var swr = new System.IO.StreamReader(docFile))
-                {
-                    Notes = swr.ReadToEnd();
-                }
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine(ex.Message);
-            }
-        }
-
-        void RecipeHelpView_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
-        {
-            DataContext = null;
-            DataContext = this;            
-        }
-
-        public string Notes { get; set; }
-    }
-}

+ 0 - 95
Venus/RecipeEditorControl/View/RecipeInfoEditor.xaml

@@ -1,95 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.View.RecipeInfoEditor"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:recipeEditor="clr-namespace:Aitex.UI.RecipeEditor"
-        Title="{DynamicResource GlobalLableInfoProperty}" Height="530" Width="680" ResizeMode="NoResize" Topmost="True" ShowInTaskbar="True" Background="#FFC5D0D8" WindowStartupLocation="CenterOwner">
-    <Window.Resources>
-        <recipeEditor:BoolConverter x:Key="boolConverter"/>
-    </Window.Resources>
-    <Grid>
-        <Grid.RowDefinitions>
-            <RowDefinition Height="423" />
-            <RowDefinition Height="45" />
-        </Grid.RowDefinitions>
-        <StackPanel>
-            <GroupBox Header="{DynamicResource GlobalLableInfoOwner}" FontSize="14" Height="101" VerticalAlignment="Top">
-                <Grid>
-                    <Label Content="{DynamicResource GlobalLableInfoLastModifiedBy}" Height="28" HorizontalAlignment="Left" Margin="6,10,0,0" VerticalAlignment="Top" FontSize="13" />
-                    <Label Content="{Binding LastModifiedBy}" HorizontalAlignment="Left" Margin="139,10,0,40" FontSize="13" />
-                    <Label Content="{DynamicResource GlobalLableInfoLastRevisionTime}" Height="28" HorizontalAlignment="Left" Margin="6,42,0,0" VerticalAlignment="Top" FontSize="13" />
-                    <Label Content="{Binding LastRevisionTime}" Height="28" HorizontalAlignment="Left" Margin="139,42,0,0" VerticalAlignment="Top" FontSize="13" />
-                    <!--Label Content="压力模式:" Height="28" HorizontalAlignment="Left" Margin="6,48,0,0" VerticalAlignment="Top" FontSize="13"  />
-                    <ComboBox Text="{Binding PressureMode,Mode=TwoWay}" IsEditable="True" Height="23" HorizontalAlignment="Left" Margin="89,51,0,0" Name="comboBox_PressureMode" VerticalAlignment="Top" Width="120" /-->
-                </Grid>
-            </GroupBox>
-            <GroupBox Header="{DynamicResource GlobalLableInfoLastDescription}" FontSize="14" Height="80" VerticalAlignment="Center" >
-                <TextBox x:Name="desc" Text="{Binding Description,Mode=OneWay}" Margin="0"  Background="#8DFFFFFF" AcceptsReturn="True" AcceptsTab="True" />
-            </GroupBox>
-            <GroupBox Header="{DynamicResource GlobalLableInfoCommonSetting}" FontSize="14" Height="227" VerticalAlignment="Bottom">
-                <Grid>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="50"/>
-                        <RowDefinition Height="50"/>
-                        <RowDefinition Height="50"/>
-                        <RowDefinition Height="50"/>
-                    </Grid.RowDefinitions>
-                    <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="192" />
-                        <ColumnDefinition Width="138" />
-                        <ColumnDefinition Width="192" />
-                        <ColumnDefinition Width="138" />
-                    </Grid.ColumnDefinitions>
-                    <Rectangle Grid.Row="0" Grid.Column="0" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="0" Grid.Column="0" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource GlobalLableInfoBasePressure}" Foreground="White" />
-                    <Rectangle Grid.Row="0" Grid.Column="1" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBox  Grid.Row="0" Grid.Column="1"  PreviewTextInput="OnPreviewTextInput" Margin="5" TextAlignment="Center" FontSize="11" x:Name="basePressure" Text="{Binding BasePressure,Mode=OneWay}"/>
-
-                    <Rectangle Grid.Row="0" Grid.Column="2" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="0" Grid.Column="2" FontSize="15" Margin="5" VerticalAlignment="Center"  Text="{DynamicResource GlobalLableInfoPumpDownLimit}" Foreground="White" />
-                    <Rectangle Grid.Row="0" Grid.Column="3" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBox  Grid.Row="0" Grid.Column="3"  PreviewTextInput="OnPreviewTextInput" Margin="5" TextAlignment="Center" FontSize="11" x:Name="pumpDownLimit" Text="{Binding PumpDownLimit,Mode=OneWay}" />
-
-                    <Rectangle Grid.Row="1" Grid.Column="0" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="1" Grid.Column="0" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource GlobalLableInfoPurgeActive}" Foreground="White" />
-                    <Rectangle Grid.Row="1" Grid.Column="1" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <CheckBox  Grid.Row="1" Grid.Column="1" Margin="60 10 0 0" x:Name="purgeActive" IsChecked="{Binding Path=PurgeActive, Converter={StaticResource boolConverter}, Mode=OneWay}"/>
-
-                    <Rectangle Grid.Row="1" Grid.Column="2" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="1" Grid.Column="2" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource GlobalLableInfoSubstrateTemp}" Foreground="White" />
-                    <Rectangle Grid.Row="1" Grid.Column="3" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBox  Grid.Row="1" Grid.Column="3"  PreviewTextInput="OnPreviewTextInput" Margin="5" TextAlignment="Center" FontSize="11" x:Name="substrateTemp" Text="{Binding SubstrateTemp,Mode=OneWay}" />
-
-                    <Rectangle Grid.Row="2" Grid.Column="0" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="2" Grid.Column="0" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource PumpingPinState}" Foreground="White" />
-                    <Rectangle Grid.Row="2" Grid.Column="1" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <ComboBox Grid.Row="2" Grid.Column="1" Name="pumpingPinState">
-                        <ComboBoxItem Content="Up"></ComboBoxItem>
-                        <ComboBoxItem Content="Down"></ComboBoxItem>
-                    </ComboBox>
-
-                    <Rectangle Grid.Row="2" Grid.Column="2" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="2" Grid.Column="2" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource GlobalLableInfoNotToPurgeOrVent}" Foreground="White" />
-                    <Rectangle Grid.Row="2" Grid.Column="3" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <CheckBox  Grid.Row="2" Grid.Column="3" Margin="60 10 0 0" x:Name="notToPurgeOrVent" IsChecked="{Binding Path=NotToPurgeOrVent, Converter={StaticResource boolConverter}, Mode=OneWay}"/>
-
-                    <Rectangle Grid.Row="3" Grid.Column="0" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="3" Grid.Column="0" FontSize="15" Margin="5" VerticalAlignment="Center" Text="{DynamicResource VentingPinState}" Foreground="White" />
-                    <Rectangle Grid.Row="3" Grid.Column="1" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <ComboBox Grid.Row="3" Grid.Column="1" Name="ventingPinState">
-                        <ComboBoxItem Content="Up"></ComboBoxItem>
-                        <ComboBoxItem Content="Down"></ComboBoxItem>
-                    </ComboBox>
-
-                    <Rectangle Grid.Row="3" Grid.Column="2" Fill="#376092" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBlock Grid.Row="3" Grid.Column="2" FontSize="15" Margin="5" VerticalAlignment="Center"  Text="{DynamicResource PinDownPressure}" Foreground="White" />
-                    <Rectangle Grid.Row="3" Grid.Column="3" Fill="#95B3D7" Margin="0" Stroke="White" StrokeThickness="1"></Rectangle>
-                    <TextBox  Grid.Row="3" Grid.Column="3"  PreviewTextInput="OnPreviewTextInput" Margin="5" TextAlignment="Center" FontSize="11" x:Name="pinDownPressure" Text="{Binding PinDownPressure,Mode=OneWay}" />
-                </Grid>
-            </GroupBox>
-        </StackPanel>
-        <Grid Grid.Row="1">
-            <Button Content="{DynamicResource GlobalLableButtonOk}" Margin="254,10,0,0" Width="70" Height="24" HorizontalAlignment="Left" Click="Button_OK_Click" />
-            <Button Content="{DynamicResource GlobalLableButtonCancel}" Margin="385,10,0,0" Width="70" Height="24" HorizontalAlignment="Left" Click="Button_Cancel_Click" />
-        </Grid>
-    </Grid>
-</Window>

+ 0 - 89
Venus/RecipeEditorControl/View/RecipeInfoEditor.xaml.cs

@@ -1,89 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-
-namespace Aitex.UI.RecipeEditor.View
-{
-    /// <summary>
-    /// Interaction logic for RecipeInfoEditor.xaml
-    /// </summary>
-    public partial class RecipeInfoEditor : Window
-    {
-        //public RecipeHead RecipeHead
-        //{
-        //    get;
-        //    set;
-        //}
-
-        public RecipeInfoEditor()
-        {
-            InitializeComponent();
-
-            //comboBox_PressureMode.Items.Add("TV");
-            //comboBox_PressureMode.Items.Add("N2Flow");
-
-            Loaded += new RoutedEventHandler(RecipeInfoEditor_Loaded);
-        }
-
-        void RecipeInfoEditor_Loaded(object sender, RoutedEventArgs e)
-        {
-            //DataContext = RecipeHead;
-            //if (RecipeHead == null)
-            //{
-            //    pumpingPinState.SelectedIndex = -1;
-            //    ventingPinState.SelectedIndex = -1;
-            //}
-            //else
-            //{
-            //    pumpingPinState.SelectedIndex = RecipeHead.PumpingPinState == "Up" ? 0 : RecipeHead.PumpingPinState == "Down" ? 1 : -1;
-            //    ventingPinState.SelectedIndex = RecipeHead.VentingPinState == "Up" ? 0 : RecipeHead.VentingPinState == "Down" ? 1 : -1;
-            //    pinDownPressure.Text = RecipeHead.PinDownPressure;
-            //}
-        }
-
-        private void Button_OK_Click(object sender, RoutedEventArgs e)
-        {
-            //if (RecipeHead != null)
-            //{
-            //    RecipeHead.Description = desc.Text;
-            //    RecipeHead.BasePressure = basePressure.Text;
-            //    RecipeHead.PumpDownLimit = pumpDownLimit.Text;
-            //    RecipeHead.PurgeActive = (purgeActive.IsChecked.HasValue && purgeActive.IsChecked.Value) ? "true" : "false";
-            //    RecipeHead.NotToPurgeOrVent = (notToPurgeOrVent.IsChecked.HasValue && notToPurgeOrVent.IsChecked.Value) ? "true" : "false";
-            //    RecipeHead.SubstrateTemp = substrateTemp.Text;
-            //    RecipeHead.PumpingPinState = ((ComboBoxItem)pumpingPinState.SelectedItem).Content.ToString();
-            //    RecipeHead.VentingPinState = ((ComboBoxItem)ventingPinState.SelectedItem).Content.ToString();
-            //    RecipeHead.PinDownPressure = pinDownPressure.Text;
-            //}
-            //Close();
-        }
-
-        private void Button_Cancel_Click(object sender, RoutedEventArgs e)
-        {
-            Close();
-        }
-
-
-
-        private void OnPreviewTextInput(object sender, TextCompositionEventArgs e)
-        {
-            e.Handled = !IsTextAllowed(e.Text);
-        }
-
-        private static bool IsTextAllowed(string text)
-        {
-            Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
-            return !regex.IsMatch(text);
-        }
-    }
-}

+ 0 - 24
Venus/RecipeEditorControl/View/RecipeNameInputDlg.xaml

@@ -1,24 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.View.RecipeNameInputDlg"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    Title="新建配方"
-        WindowStartupLocation="CenterOwner"
-        WindowStyle="SingleBorderWindow" ResizeMode="NoResize" ShowInTaskbar="False"
-        Background="LightSkyBlue" SizeToContent="WidthAndHeight">
-    <StackPanel>
-        <TextBlock Text="请选择配方类型:" HorizontalAlignment="Left" FontSize="12" Margin="15" />
-        <StackPanel Orientation="Horizontal" Margin="5,0,0,0">
-            <RadioButton Content="Chuck"      Margin="5,0,0,0" IsChecked="True" Checked="RadioButton_Checked"/>
-            <RadioButton Content="DeChuck"    Margin="5,0,0,0" Checked="RadioButton_Checked"/>
-            <RadioButton Content="Process"    Margin="5,0,0,0" Checked="RadioButton_Checked"/>
-            <RadioButton Content="Clean"      Margin="5,0,0,0" Checked="RadioButton_Checked"/>
-        </StackPanel>
-        <TextBlock Text="请输入配方名称:" HorizontalAlignment="Left" FontSize="12" Margin="15" x:Name="labelCaption"/>
-        <TextBox x:Name="textBoxInput" FontSize="12"  TextChanged="textBoxInput_TextChanged"  Width="150" HorizontalAlignment="Left" Margin="15,0,150,0" BorderThickness="0,0,0,1" Background="Transparent"/>
-
-        <StackPanel Orientation="Horizontal"  Margin="10">
-            <Button Content="OK" x:Name="buttonOK" Margin="5,3,5,0" Width="75" FontSize="12" IsDefault="True" Click="buttonOK_Click" />
-            <Button Content="Cancel" x:Name="buttonCancel" Margin="20,3,5,0" Width="75" FontSize="12" IsCancel="True" Click="buttonCancel_Click" />
-        </StackPanel>
-    </StackPanel>
-</Window>

+ 0 - 98
Venus/RecipeEditorControl/View/RecipeNameInputDlg.xaml.cs

@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-using System.Text.RegularExpressions;
-
-namespace Aitex.UI.RecipeEditor.View
-{
-    /// <summary>
-    /// Interaction logic for RecipeNameInputDlg.xaml
-    /// </summary>
-    public partial class RecipeNameInputDlg : Window
-    {
-        public RecipeNameInputDlg(string caption)
-        {
-            InitializeComponent();
-            labelCaption.Text = caption;
-            this.buttonOK.IsEnabled = false;
-            this.textBoxInput.Focus();
-        }
-        public RecipeNameInputDlg(string caption, string title)
-        {
-            InitializeComponent();
-            Title = title;
-            labelCaption.Text = caption;
-            this.buttonOK.IsEnabled = false;
-            this.textBoxInput.Focus();
-        }
-        private void buttonCancel_Click(object sender, RoutedEventArgs e)
-        {
-            this.DialogResult = false;
-        }
-
-        private void buttonOK_Click(object sender, RoutedEventArgs e)
-        {            
-            this.DialogResult = true;
-        }
-
-        private void textBoxInput_TextChanged(object sender, TextChangedEventArgs e)
-        {
-            if (textBoxInput.Text == "")
-            {
-                this.buttonOK.IsEnabled=false;
-            }
-            else
-            { 
-            this.buttonOK.IsEnabled = IsValidFileName(textBoxInput.Text);
-
-            }
-        }
-
-        /// <summary>
-        /// 输入文字
-        /// </summary>
-        public string InputText
-        {
-            get
-            {
-                return this.textBoxInput.Text;
-            }
-            set
-            {
-                this.textBoxInput.Text = value;
-            }
-        }
-
-        public string SelectedType { get; set; }
-        /// <summary>
-        /// 文件名校验
-        /// </summary>
-        /// <param name="strIn"></param>
-        /// <returns></returns>
-        bool IsValidFileName(string strIn)
-        {
-            string[] paths = strIn.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
-            Regex regEx = new Regex(@"^[^ \\/:*?""<>|]+([ ]+[^ \\/:*?""<>|]+)*$");
-            foreach (var path in paths)
-            {
-                if (!regEx.IsMatch(path))
-                    return false;
-            }
-            return true;
-        }
-
-        private void RadioButton_Checked(object sender, RoutedEventArgs e)
-        {
-            SelectedType = (sender as RadioButton).Content.ToString();
-        }
-    }
-}

+ 0 - 61
Venus/RecipeEditorControl/View/SmartCellEditor.xaml

@@ -1,61 +0,0 @@
-<UserControl x:Class="Aitex.UI.RecipeEditor.SmartCellEditor"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:Aitex.UI.RecipeEditor"
-             mc:Ignorable="d" 
-             xmlns:xceed="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
-             d:DesignHeight="20" d:DesignWidth="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
-    
-    <UserControl.Resources>
-        <local:VisibilityConverter x:Key="visConverter" />
-        <local:TimeSpanConverter x:Key="timeSpanConverter" />
-        <local:NumConverter x:Key="numConverter" />
-        <local:BoolConverter x:Key="boolConverter" />
-        <local:BoolToVisibilityConverter x:Key="boolToVisibilityConverter"/>
-    </UserControl.Resources>
-
-    <StackPanel>
-        
-        <!--TextBlock-->
-        <TextBlock x:Name="textBlock" 
-                   Background="{Binding Background}" 
-                   Foreground="{Binding Foreground}" 
-                   Text="{Binding Path=Display,Mode=OneWay}"  
-                   ToolTip="{Binding ToolTip}" 
-                   FontWeight="{Binding FontWeight}" 
-                   Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=TextBlock}"/>
-
-        <!--Editable ComboBox-->
-        <ComboBox x:Name="editableComboBox" ItemsSource="{Binding RecipeVariableDefine.DropdownItemList}" IsEditable="True" 
-                  DisplayMemberPath="Item2" Text="{Binding Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
-                  Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=EditableComboBox}" />
-
-        <!--Readonly ComboBox-->
-        <ComboBox x:Name="readonlyComboBox" ItemsSource="{Binding RecipeVariableDefine.DropdownItemList}" IsEditable="False"
-                  DisplayMemberPath="Item2" SelectedValuePath="Item1" SelectedValue="{Binding Path=Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
-                  Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=ReadonlyComboBox}" />
-
-        <!--Text Input TextBox-->
-        <TextBox HorizontalContentAlignment="Left" Text="{Binding Value}" Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=TextBox}" TextAlignment="Left" />
-
-        <!--Number Input TextBox-->
-        <!--<DockPanel  LastChildFill="True" Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=DecimalUpDown}" >
-            <CheckBox Margin="10,0,0,0" DockPanel.Dock="Right" Content="Jump" IsChecked="{Binding IsJump}" Visibility="{Binding Path=ShowsJumpControl, Converter={StaticResource boolToVisibilityConverter}}"/>-->
-            <xceed:DecimalUpDown HorizontalAlignment="Stretch"  FormatString="G" Value="{Binding Path=Value,Converter={StaticResource numConverter},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Increment="1" TextAlignment="Left" 
-                                 Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=DecimalUpDown}"/>            
-        <!--</DockPanel>-->
-       
-        <!--CheckBox-->
-        <CheckBox x:Name="checkBox" Content="{Binding Tag}" IsChecked="{Binding Path=Value,Converter={StaticResource boolConverter},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=CheckBox}" />
-
-        <!--TimePicker-->
-        <xceed:DateTimeUpDown HorizontalContentAlignment="Left" Format="Custom" FormatString="HH:mm:ss" Value="{Binding Path=Value,Converter={StaticResource timeSpanConverter},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=TimePicker}" CultureInfo="uk-UA" />
-
-        <!--EndPoint-->
-        <Button x:Name="endPoint" HorizontalAlignment="Stretch" Padding="0" Margin="0" VerticalAlignment="Stretch" Content="EndPoint" Command="{Binding EndPointCommand}" Visibility="{Binding Path=., Converter={StaticResource visConverter},ConverterParameter=EndPoint}" />
-
-    </StackPanel>
-
-</UserControl>

+ 0 - 27
Venus/RecipeEditorControl/View/SmartCellEditor.xaml.cs

@@ -1,27 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace Aitex.UI.RecipeEditor
-{
-    /// <summary>
-    /// Interaction logic for SmartCellEditor.xaml
-    /// </summary>
-    public partial class SmartCellEditor : UserControl
-    {
-        public SmartCellEditor()
-        {
-            InitializeComponent();
-        }
-    }
-}

+ 0 - 10
Venus/RecipeEditorControl/View/UserNameInput.xaml

@@ -1,10 +0,0 @@
-<Window x:Class="Aitex.UI.RecipeEditor.UserNameInput"
-        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        Title="{DynamicResource GlobalLableUserInforInput}" Height="110" Width="329" WindowStartupLocation="CenterOwner">
-    <Grid>
-        <TextBox Height="30" HorizontalAlignment="Left" Margin="13,37,0,0" Name="textBox1" VerticalAlignment="Top" Width="173" TextChanged="textBox1_TextChanged" />
-        <Label Content="{DynamicResource GlobalLableInputName}" FontSize="15" Height="29" HorizontalAlignment="Left" Name="label1" VerticalAlignment="Top" Margin="8,5,0,0" />
-        <Button Content="{DynamicResource GlobalLableButtonOk}" ToolTip="{DynamicResource GlobalLableSavedInRecipe}" Height="23" HorizontalAlignment="Left" Margin="222,37,0,0" Name="button1" VerticalAlignment="Top" Width="75" IsEnabled="False" Click="button1_Click" IsDefault="True" />
-    </Grid>
-</Window>

+ 0 - 52
Venus/RecipeEditorControl/View/UserNameInput.xaml.cs

@@ -1,52 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Shapes;
-
-namespace Aitex.UI.RecipeEditor
-{
-	/// <summary>
-	/// Interaction logic for UserNameInput.xaml
-	/// </summary>
-	public partial class UserNameInput : Window
-	{
-		public UserNameInput()
-		{
-			InitializeComponent();
-			this.textBox1.Focus();
-		}
-
-		/// <summary>
-		/// input changed
-		/// </summary>
-		/// <param name="sender"></param>
-		/// <param name="e"></param>
-		private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
-		{
-			TextBox text = (TextBox)sender;
-			button1.IsEnabled = text.Text.TrimStart().TrimEnd().Length > 0;
-		}
-
-		public string UserName { get; set; }
-
-		/// <summary>
-		/// save name
-		/// </summary>
-		/// <param name="sender"></param>
-		/// <param name="e"></param>
-		private void button1_Click(object sender, RoutedEventArgs e)
-		{
-			UserName = textBox1.Text;
-			DialogResult = true;
-			this.Hide();
-		}
-	}
-}

File diff suppressed because it is too large
+ 0 - 1091
Venus/RecipeEditorControl/ViewModel/RecipeEditorControlViewModel.cs


+ 0 - 196
Venus/RecipeEditorControl/ViewModel/SmartCellData.cs

@@ -1,196 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Media;
-using System.Windows;
-using System.ComponentModel;
-using System.Windows.Input;
-using Aitex.UI.RecipeEditor.View;
-
-namespace Aitex.UI.RecipeEditor
-{
-    /// <summary>
-    /// cell type enum
-    /// </summary>
-    public enum CellType
-    {
-        ReadOnly,
-        TextInput,
-        EditableSelection,
-        TimeInput,
-        ReadOnlySelection,
-        NumInput,
-        CheckBox,
-        EndPointSetting,
-    }
-
-    /// <summary>
-    /// reicpe variable definition
-    /// </summary>
-    public class RecipeVariableDefine
-    {
-        public CellType CellType { get; set; }
-        public string CatalogName { get; set; }
-        public string GroupName { get; set; }
-        public string FriendlyName { get; set; }
-        public string TechnicalName { get; set; }
-        public string DeviceType { get; set; }
-        public string Description { get; set; }
-        public double MinValue { get; set; }
-        public double MaxValue { get; set; }
-        public List<Tuple<string, string>> DropdownItemList { get; set; }
-    }
-
-    /// <summary>
-    /// cell data definition
-    /// </summary>
-    public class SmartCellData : INotifyPropertyChanged
-    {
-        public RecipeVariableDefine RecipeVariableDefine { get; set; }
-        public int RowIndex { get; set; }
-        public int ColIndex { get; set; }
-        public bool IsRunning { get; set; }
-        public bool IsHidden { get; set; }
-        public bool IsMasked { get; set; }        
-        public Brush Foreground { get; set; }
-        public Brush Background { get; set; }
-        public FontWeight FontWeight { get; set; }
-        public string Value { get; set; }
-        public string ErrInfo { get; set; }
-        public object Tag { get; set; }
-        public string AdditionalInfo { get; set; }
-
-        //public bool IsJump { get; set; }
-        //public bool ShowsJumpControl { get; set; }
-        public ICommand EndPointCommand { get; set; }
-
-        //public EndPointConfigItem EndPointConfig { get; set; }
-
-        //public SmartCellData()
-        //{
-        //    EndPointCommand = new DelegatedCommand((o) => true, (o) => EndPointAction(o));
-        //    EndPointConfig = new EndPointConfigItem();
-        //}
-
-        //private void EndPointAction(object obj)
-        //{
-        //    EndPointDlg dlg = new EndPointDlg(){ Owner = Application.Current.MainWindow };
-
-        //    EndPointConfig.SetValue(Value);
-
-        //    dlg.ConfigItem = EndPointConfig;
-             
-
-        //    var result = dlg.ShowDialog();
-        //    if (result.HasValue && result.Value)
-        //    {
-        //        Value = dlg.ConfigItem.ToValue();
-        //    }
- 
-        //}
-
-
-        public override string ToString()
-        {
-            return Display;
-        }
-
-        public string ToolTip
-        {
-            get
-            {
-                string str = "n/a";
-                switch (RecipeVariableDefine.CellType)
-                {
-                    case CellType.NumInput:
-                        str = string.Format("{0}\r\nMax:{1}\r\nValue:{2}", RecipeVariableDefine.FriendlyName, RecipeVariableDefine.MaxValue.ToString("N2").TrimEnd('0').TrimEnd('.').Replace(',', '\''), Display);
-                        break;
-                    default:
-                        str = string.Format("{0}\r\nValue:{1}", RecipeVariableDefine.FriendlyName, string.IsNullOrEmpty(Display) ? "Empty" : Display);
-                        break;
-                }
-                if (!string.IsNullOrEmpty(AdditionalInfo))
-                    str += "\r\n" + AdditionalInfo; 
-                if (!string.IsNullOrEmpty(ErrInfo))
-                   str = str + "\r\n\r\nError:" + ErrInfo;
-                return str;
-            }
-        }
-
-        public string Display
-        {
-            get
-            {
-                try
-                {
-                    if (IsHidden)
-                        return "";
-                    if (IsMasked)
-                        return "*";
-                    if (RecipeVariableDefine.CellType == CellType.ReadOnlySelection && RecipeVariableDefine.DropdownItemList != null)
-                    {
-                        var v = RecipeVariableDefine.DropdownItemList.Find((o) => o.Item1 == Value);
-                        if (v != null) return v.Item2;
-                    }
-                    else if (RecipeVariableDefine.CellType == CellType.CheckBox)
-                    {
-                        if (Tag != null && Tag is int)
-                        {
-                            if (bool.Parse(Value))
-                                return "【√】 " + Tag.ToString();
-                            else
-                                return "       " + Tag.ToString();
-                        }
-                        if (bool.Parse(Value))
-                            return "【√】";
-                        return "      ";
-                    }
-                    else if (RecipeVariableDefine.CellType == CellType.EndPointSetting)
-                    {
-                        if (!string.IsNullOrEmpty(Value) && Value != "n/a")
-                        {
-                            return "【√】";
-                        }
-                        return "【...】";
-                    }
-                    else if (RecipeVariableDefine.CellType == CellType.NumInput)
-                    {
-                        double d;
-                        if (double.TryParse(Value.ToString(), out d))
-                        {
-                            return d.ToString("N2").TrimEnd('0').TrimEnd('.').Replace(',', '\'');
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    System.Diagnostics.Debug.WriteLine(ex.Message);
-                }
-                return Value;
-            }
-        }
-
-        #region INotifyPropertyChanged
-        public event PropertyChangedEventHandler PropertyChanged;
-        public void InvokePropertyChanged()
-        {
-            if (PropertyChanged != null)
-            {
-                foreach (var pro in this.GetType().GetProperties())
-                {
-                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs(pro.Name));
-                }
-            }
-        }
-
-        public void InvokePropertyChanged(string proName)
-        {
-            if (PropertyChanged != null)
-            {
-                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(proName));
-            }
-        }
-        #endregion
-    }
-}

+ 0 - 23
Venus/RecipeEditorControl/map.xml

@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <Item>
-    <No>LabTool-A</No>
-    <Name>Initial</Name>
-  </Item>
-  <Item>
-    <No>LabTool-B</No>
-    <Name>Ace</Name>
-  </Item>
-  <Item>
-    <No>002</No>
-    <Name>Standard</Name>
-  </Item>
-  <Item>
-    <No>003</No>
-    <Name>Express</Name>
-  </Item>
-  <Item>
-    <No>004</No>
-    <Name>ExpressPlus</Name>
-  </Item>
-</ArrayOfItem>

+ 1 - 1
Venus/Venus_RT/Modules/PMs/GasBoxLeakCheckRoutine.cs

@@ -118,7 +118,7 @@ namespace Venus_RT.Modules.PMs
         public RState Monitor()
         {
             Runner.Wait(LeakCheckStep.kPumpToBasePressure,                                                     ()=> { return _chamber.ProcessPressure <= _basePressure; })
-                .Run(LeakCheckStep.kPumpingDelay,          LeakCheckPumping,                                   PumpingDelay)
+                .Run(LeakCheckStep.kPumpingDelay,          LeakCheckPumping,                                   PumpingDelay,   _delay_10d)
                 .Run(LeakCheckStep.kLeakCheckDelay,        StartLeakCheck,                                     _leakcheckHoldTime * 1000)
                 .End(LeakCheckStep.kEnd,                   CalcLeakCheckResult,                                _delay_50ms);
 

+ 0 - 155
Venus/Venus_RT/Modules/PMs/LLPickRoutine.cs

@@ -1,155 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Aitex.Core.Util;
-//using Venus_RT.Devices;
-//using MECF.Framework.Common.Equipment;
-//using MECF.Framework.Common.SubstrateTrackings;
-//using Venus_Core;
-
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LLPickRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum LLPickStep
-//        {
-//            kPrepareTransfer,
-//            kExtend,
-//            KDelay2s,
-//            kPinUp,
-//            kRetract,
-//            kPostTransfer,
-//            kVentLoadLock,
-//        }
-
-//        private readonly LoadLockVentRoutine _loadLockVentRoutine;
-//        private int _prepareTransferTimeout = 120;
-//        private int _transferWaferTimeout = 120;
-//        public LLPickRoutine(JetPMBase chamber, LoadLockVentRoutine ventRoutine) : base(chamber)
-//        {
-//            Name = "PickWafer";
-//            _loadLockVentRoutine = ventRoutine;
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            _prepareTransferTimeout = SC.GetValue<int>($"{Module}.PrepareTransferTimeout");
-//            _transferWaferTimeout = SC.GetValue<int>($"{Module}.TransferWaferTimeout");
-
-//            if(WaferManager.Instance.CheckNoWafer(ModuleName.PMA, 0))
-//            {
-//                Stop("腔体没有 Wafer,不能执行取片动作");
-//                return RState.Failed;
-//            }
-
-//            if (WaferManager.Instance.CheckHasWafer(ModuleName.LLA, 0))
-//            {
-//                Stop("Loadlock 里面有片 Wafer,不能执行取片动作");
-//                return RState.Failed;
-//            }
-
-//            if(WaferManager.Instance.GetWafer(ModuleName.PMA, 0).ChuckState == Aitex.Core.Common.EnumWaferChuckStatus.Chucked)
-//            {
-//                Stop("腔体中Wafer没有 Dechuck,不能执行取片动作");
-//                return RState.Failed;
-//            }
-
-//            if (RouteManager.IsATMMode)
-//            {
-//                if (!_chamber.IsATM || !_chamber.IsATMLoadlock)
-//                {
-//                    Stop("腔体非大气状态,请先执行充气动作");
-//                    return RState.Failed;
-//                }
-//            }
-//            else
-//            {
-//                if (!_chamber.IsVAC || !_chamber.IsVACLoadLock)
-//                {
-//                    Stop("腔体非真空状态,请先执行抽真空动作");
-//                    return RState.Failed;
-//                }
-//            }
-
-//            _chamber.OpenValve(ValveType.FastPump, false);
-//            _chamber.OpenValve(ValveType.LoadlockPumping, false);
-
-//            Reset();
-//            return Runner.Start(Module, Name);
-//        }
-//        public RState Monitor()
-//        {
-//            Runner.Run(LLPickStep.kPrepareTransfer,    PrepareTransfer,        IsPrepareReady,                                     _prepareTransferTimeout * 1000)
-//                .Run(LLPickStep.kExtend,               _chamber.ExtendWafer,   () => { return _chamber.IsLoadlockArmExtend; },     _transferWaferTimeout * 1000)
-//                .Delay(LLPickStep.KDelay2s,2000)
-//                .Run(LLPickStep.kPinUp,                SetLiftPinDown,         () => { return _chamber.CheckLiftDown(); })
-//                .Run(LLPickStep.kRetract,              _chamber.RetractWafer,  () => { return _chamber.IsLoadlockArmRetract; },    _transferWaferTimeout * 1000)
-//                .Run(LLPickStep.kPostTransfer,         PostTransfer,           IsPostTransferReady,                                _prepareTransferTimeout * 1000)
-//                .End(LLPickStep.kVentLoadLock,         VentLoadLock,           IsVentDone);
-
-//            return Runner.Status;
-//        }
-
-//        private bool PrepareTransfer()
-//        {
-//            _chamber.SetLiftPin(MovementPosition.Up, out _);
-//            _chamber.SetSlitDoor(true, out _);
-//            return true;
-//        }
-
-//        private bool IsPrepareReady()
-//        {
-//            return _chamber.CheckLiftUp() && _chamber.CheckSlitDoorOpen();
-//        }
-
-//        private bool PostTransfer()
-//        {
-//            WaferManager.Instance.WaferMoved(ModuleName.PMA, 0, ModuleName.LLA, 0);
-//            _chamber.SetSlitDoor(false, out _);
-//            return true;
-//        }
-
-//        private bool IsPostTransferReady()
-//        {
-
-//            return _chamber.CheckLiftDown() && _chamber.CheckSlitDoorClose();
-//        }
-
-//        private bool SetLiftPinDown()
-//        {
-//            return _chamber.SetLiftPin(MovementPosition.Down, out _);
-//        }
-
-//        private bool VentLoadLock()
-//        {
-//            //2023/06/08朱让取消
-//            //if (!_isATMMode)
-//            //{
-//            //    return _loadLockVentRoutine.Start() == RState.Running;
-//            //}
-//            //else
-//                return true;
-//        }
-      
-//        private bool IsVentDone()
-//        {
-//            //2023/06/08朱让取消
-//            //if(!_isATMMode)
-//            //{
-//            //    RState ret = _loadLockVentRoutine.Monitor();
-//            //    if (ret == RState.Failed || ret == RState.Timeout)
-//            //    {
-//            //        Runner.Stop("Vent Failed");
-//            //        return false;
-//            //    }
-
-//            //    return ret == RState.End;
-//            //}
-
-//            return true;
-//        }
-
-//        public void Abort()
-//        {
-//        }
-//    }
-//}

+ 0 - 128
Venus/Venus_RT/Modules/PMs/LLPlaceRoutine.cs

@@ -1,128 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Venus_RT.Devices;
-//using Aitex.Core.Util;
-//using MECF.Framework.Common.Equipment;
-//using MECF.Framework.Common.SubstrateTrackings;
-//using System.Diagnostics;
-//using System.Collections.Generic;
-//using Venus_Core;
-//using Venus_RT.Modules;
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LLPlaceRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum LLPlaceStep
-//        {
-//            kPrepareTransfer,
-//            kExtend,
-//            KDelay2s,
-//            kPinUp,
-//            kRetract,
-//            kPostTransfer,
-//            kOpenFastPump,
-//        }
-
-//        private int _prepareTransferTimeout = 120;
-//        private int _transferWaferTimeout = 120;
-//        public LLPlaceRoutine(JetPMBase chamber) : base(chamber)
-//        {
-//            Name = "PlaceWafer";
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            _prepareTransferTimeout = SC.GetValue<int>($"{Module}.PrepareTransferTimeout");
-//            _transferWaferTimeout = SC.GetValue<int>($"{Module}.TransferWaferTimeout");
-
-//            if (WaferManager.Instance.CheckHasWafer(ModuleName.PMA, 0))
-//            {
-//                Stop("腔体里面有 Wafer,不能执行放片动作");
-//                return RState.Failed;
-//            }
-
-//            if (WaferManager.Instance.CheckNoWafer(ModuleName.LLA, 0))
-//            {
-//                Stop("Loadlock 里面没有 Wafer,不能执行放片动作");
-//                return RState.Failed;
-//            }
-
-//            if (RouteManager.IsATMMode)
-//            {
-//                if (!_chamber.IsATM || !_chamber.IsATMLoadlock)
-//                {
-//                    Stop("腔体非大气状态,请先执行充气动作");
-//                    return RState.Failed;
-//                }
-//            }
-//            else
-//            {
-//                if (!_chamber.IsVAC || !_chamber.IsVACLoadLock)
-//                {
-//                    Stop("腔体非真空状态,请先执行抽真空动作");
-//                    return RState.Failed;
-//                }
-//            }
-
-//            _chamber.OpenValve(ValveType.FastPump, false);
-//            _chamber.OpenValve(ValveType.LoadlockPumping, false);
-
-//            Reset();
-//            return Runner.Start(Module, Name);
-//        }
-//        public RState Monitor()
-//        {
-//            Runner.Run(LLPlaceStep.kPrepareTransfer,   PrepareTransfer,        IsPrepareReady,                                     _prepareTransferTimeout * 1000)
-//                .Run(LLPlaceStep.kExtend,              _chamber.ExtendWafer,   () => { return _chamber.IsLoadlockArmExtend; },     _transferWaferTimeout * 1000)
-//                .Delay(LLPlaceStep.KDelay2s, 2000)
-//                .Run(LLPlaceStep.kPinUp,               SetLiftPinUp,           () => { return _chamber.CheckLiftUp(); })
-//                .Run(LLPlaceStep.kRetract,             _chamber.RetractWafer,  () => { return _chamber.IsLoadlockArmRetract; },    _transferWaferTimeout * 1000)
-//                .Run(LLPlaceStep.kPostTransfer,        PostTransfer,           IsPostTransferReady,                                _prepareTransferTimeout * 1000)
-//                .End(LLPlaceStep.kOpenFastPump,        OpenFastPump,           _delay_50ms);
-
-//            return Runner.Status;
-//        }
-
-//        private bool PrepareTransfer()
-//        {
-//            _chamber.SetLiftPin(MovementPosition.Down, out _);
-//            _chamber.SetSlitDoor(true, out _);
-//            return true;
-//        }
-
-//        private bool IsPrepareReady()
-//        {
-//            return _chamber.CheckLiftDown() && _chamber.CheckSlitDoorOpen();
-//        }
-
-//        private bool PostTransfer()
-//        {
-//            WaferManager.Instance.WaferMoved(ModuleName.LLA, 0, ModuleName.PMA, 0);
-//            _chamber.SetLiftPin(MovementPosition.Down, out _);
-//            _chamber.SetSlitDoor(false, out _);
-//            return true;
-//        }
-
-//        private bool IsPostTransferReady()
-//        {
-//            return _chamber.CheckLiftDown() && _chamber.CheckSlitDoorClose();
-//        }
-
-//        private bool SetLiftPinUp()
-//        {
-//            return _chamber.SetLiftPin(MovementPosition.Up, out _);
-//        }
-
-//        private bool OpenFastPump()
-//        {
-//            if (!RouteManager.IsATMMode)
-//                _chamber.OpenValve(ValveType.FastPump, true);
-
-//            return true;
-//        }
-
-//        public void Abort()
-//        {
-//        }
-//    }
-//}

+ 0 - 107
Venus/Venus_RT/Modules/PMs/LoadLockLeakCheckRoutine.cs

@@ -1,107 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Venus_RT.Devices;
-//using MECF.Framework.Common.Routine;
-//using Venus_Core;
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LoadLockLeakCheckRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum LeakCheckStep
-//        {
-//            kCloseValves,
-//            kPumpToBasePressure,
-//            kPumpingDelay,
-//            kLeakCheckDelay,
-//            kLeakCheckCalc,
-//            kPumpToBasePressure_2,
-//            kEnd,
-//        }
-//        public double LeakRate { get; private set; }
-
-//        private int _basePressureLL = 100;
-//        private int _leakcheckPumpTimeLL = 180;
-//        private int _leakcheckWaitTimeLL = 300;
-
-//        private double _startPressure = 0;
-//        private double _endPressure = 0;
-//        private double _leakRate = 30.0;
-
-
-//        public LoadLockLeakCheckRoutine(JetPMBase chamber) : base(chamber)
-//        {
-//            Name = "Loadlock Leakcheck";
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            if (CheckLidLoadLock() &&
-//                CheckSlitDoor() &&
-//                CheckDryPump())
-//            {
-//                Reset();
-
-//                _chamber.CloseValves();
-//                _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
-//                _leakcheckPumpTimeLL = SC.GetValue<int>($"{Module}.Pump.LoadLockLeakCheckPumpTime");
-//                _leakcheckWaitTimeLL = SC.GetValue<int>($"{Module}.Pump.LoadLockLeakCheckWaitTime");
-//                _leakRate = SC.GetValue<double>($"{Module}.Pump.LoadLockLeakRate");
-
-//                return Runner.Start(Module, Name);
-//            }
-//            return RState.Failed;
-//        }
-
-//        public RState Monitor()
-//        {
-//            Runner.Delay(LeakCheckStep.kCloseValves,       _delay_1s)
-//                .Run(LeakCheckStep.kPumpToBasePressure,    HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure <= _basePressureLL; })
-//                .Delay(LeakCheckStep.kPumpingDelay,        _leakcheckPumpTimeLL * 1000)
-//                .Run(LeakCheckStep.kLeakCheckDelay,        StartLeakCheck,                                                         _leakcheckWaitTimeLL * 1000)
-//                .Run(LeakCheckStep.kLeakCheckCalc,         CalcLeakCheckResult,                                                    _delay_50ms)
-//                .Run(LeakCheckStep.kPumpToBasePressure_2,  HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure <= _basePressureLL; })
-//                .End(LeakCheckStep.kEnd,                   LeakCheckEnd,                                                           _delay_50ms);
-
-//            return Runner.Status;
-//        }
-
-//        public void Abort()
-//        {
-//            CloseAllValves();
-//        }
-
-//        bool StartLeakCheck()
-//        {
-//            _chamber.OpenValve(ValveType.LoadlockPumping, false);
-//            _startPressure = _chamber.LoadlockPressure;
-
-//            Notify($"LoadLock压力开始值 {_startPressure} mt");
-//            return true;
-//        }
-
-//        bool CalcLeakCheckResult()
-//        {
-//            _endPressure = _chamber.LoadlockPressure;
-
-//            LeakRate = (_endPressure - _startPressure) * 60.0 / _leakcheckWaitTimeLL;
-
-//            if(LeakRate < _leakRate)
-//            {
-//                Notify($"LoadLock Leakcheck完成, 压力结束值: {_startPressure} mt, 漏率:{LeakRate} mt/min");
-//            }
-//            else
-//            {
-//                Stop($"LoadLock Leakcheck失败, 腔体漏率 [{LeakRate}] mt/min, 高于 [{_leakRate}] mt/min");
-//            }
-            
-//            return true;
-//        }
-
-//        bool LeakCheckEnd()
-//        {
-//            // 临时版试验机, 关Pumping Valve, 正式版保持 Pumping Valve 打开
-//            _chamber.OpenValve(ValveType.LoadlockPumping, false);
-//            return true;
-//        }
-//    }
-//}

+ 0 - 79
Venus/Venus_RT/Modules/PMs/LoadLockPumpRoutine.cs

@@ -1,79 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Venus_RT.Devices;
-//using MECF.Framework.Common.Routine;
-//using Venus_Core;
-
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LoadLockPumpRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum PumpStep
-//        {
-//            kClosePendulumValve,
-
-//            kCloseValves,
-//            KCloseISO,
-//            kPump,
-//            kClosePumpValves,
-//        }
-
-//        private int _basePressureLL = 100;
-//        private int _pumpTimeLimitLL = 120;
-        
-        
-//        public LoadLockPumpRoutine(JetPMBase chamber) : base(chamber)
-//        {
-//            Name = "Loadlock Pump";
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            if (CheckLidLoadLock() &&
-//                CheckSlitDoor() &&
-//                CheckDryPump())
-//            {
-//                Reset();
-
-//                //_chamber.CloseValves();
-//                _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
-//                _pumpTimeLimitLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpTimeLimit");
-               
-//                return Runner.Start(Module, Name);
-//            }
-//            return RState.Failed;
-//        }
-
-//        public RState Monitor()
-//        {
-//          Runner.Run(PumpStep.kClosePendulumValve,  ClosePendulumValve,                                                         _delay_1s)
-//                .Run(PumpStep.kCloseValves,         CloseValves,                                                                _delay_1s)
-//                .Run(PumpStep.KCloseISO,            HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false))
-//                .Run(PumpStep.kPump,                HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),        () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)
-//                .End(PumpStep.kClosePumpValves,     HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false),       _delay_1s);
-
-//            return Runner.Status;
-//        }
-//        public bool ClosePendulumValve()
-//        {
-//            if (_chamber.PendulumValveIsOpen() == true)
-//            {
-//                _chamber.TurnPendulumValve(false);
-//            }
-//            _chamber.OpenValve(ValveType.TurboPumpPurge, false);
-//            _chamber.OpenValve(ValveType.Guage, false);
-
-//            return true;
-//        }
-//        public bool CloseValves()
-//        {
-//            _chamber.OpenValve(ValveType.TurboPumpPumping, false);
-
-//            return true;
-//        }
-//        public void Abort()
-//        {
-//            CloseAllValves();
-//        }
-//    }
-//}

+ 0 - 83
Venus/Venus_RT/Modules/PMs/LoadLockPurgeRoutine.cs

@@ -1,83 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Venus_RT.Devices;
-//using MECF.Framework.Common.Routine;
-//using Venus_Core;
-
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LoadLockPurgeRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum PurgeStep
-//        {
-//            kCloseValves,
-//            kPumpToBase,
-//            kPurgeDelay_1,
-//            kPurgeVent,
-//            kPurgeDelay_2,                                                                               
-//            kPurgePumpToBase,
-//            kPurgePumpDelay,
-//            kPurgeEnd,
-//            kEnd,
-//        }
-
-//        public int PurgeCounter { get; private set; }
-
-//        private int _basePressureLL = 100;
-//        private int _purgeVentPressureLL = 10;
-//        private int _purgeCycleCounter = 30;
-//        private int _purgePumpTime = 120;
-
-
-//        public LoadLockPurgeRoutine(JetPMBase chamber) : base(chamber)
-//        {
-//            Name = "Loadlock Purge";
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            if (CheckLidLoadLock() &&
-//                CheckSlitDoor() &&
-//                CheckDryPump())
-//            {
-//                Reset();
-
-//                _chamber.CloseValves();
-//                _basePressureLL         = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
-//                _purgeVentPressureLL    = SC.GetValue<int>($"{Module}.Pump.LoadLockPurgeVentPressure");
-//                _purgeCycleCounter      = SC.GetValue<int>($"{Module}.Pump.LoadLockPurgeCycleCount");
-//                _purgePumpTime          = SC.GetValue<int>($"{Module}.Pump.LoadLockPurgePumpTime");
-
-//                PurgeCounter = 0;
-//                return Runner.Start(Module, Name);
-//            }
-//            return RState.Failed;
-//        }
-
-//        public RState Monitor()
-//        {
-//            Runner.Delay(PurgeStep.kCloseValves,       _delay_1s)
-//                .Run(PurgeStep.kPumpToBase,            HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure < _basePressureLL; })
-//                .LoopStart(PurgeStep.kPurgeDelay_1,    "Purge",            _purgeCycleCounter,                                 HOFs.WrapAction(_chamber.OpenValve,  ValveType.LoadlockPumping, false), _delay_1s)
-//                .LoopRun(PurgeStep.kPurgeVent,         HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true),      () => { return _chamber.LoadlockPressure >= _purgeVentPressureLL; })
-//                .LoopRun(PurgeStep.kPurgeDelay_2,      HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false),     _delay_1s)
-//                .LoopRun(PurgeStep.kPurgePumpToBase,   HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure < _basePressureLL; })
-//                .LoopRun(PurgeStep.kPurgePumpDelay,    NullFun,                                                                _purgePumpTime * 1000)
-//                .LoopEnd(PurgeStep.kPurgeEnd,          ClosePumpValve,                                                         _delay_1s)
-//                .End(PurgeStep.kEnd,                   NullFun,                                                                _delay_50ms);
-                
-//            return Runner.Status;
-//        }
-
-//        public void Abort()
-//        {
-//            CloseAllValves();
-//        }
-
-//        private bool ClosePumpValve()
-//        {
-//            _chamber.OpenValve(ValveType.LoadlockPumping, false);
-//            return true;
-//        }
-//    }
-//}

+ 0 - 92
Venus/Venus_RT/Modules/PMs/LoadLockVentRoutine.cs

@@ -1,92 +0,0 @@
-//using Aitex.Core.RT.Routine;
-//using Aitex.Core.RT.SCCore;
-//using Venus_RT.Devices;
-//using MECF.Framework.Common.Routine;
-//using Venus_Core;
-//namespace Venus_RT.Modules.PMs
-//{
-//    class LoadLockVentRoutine : PMRoutineBase, IRoutine
-//    {
-//        private enum VentStep
-//        {
-//            kClosePendulumValve,
-//            kCloseValves,
-//            kVent,
-//            kOverVent,
-//            kCloseVentValves,
-//        }
-
-//        private int _overVentTime = 2000;
-//        private int _checkATMTimeout = 90000;
-//        //private int _ATMPressureLL = 720000;
-
-//        public LoadLockVentRoutine(JetPMBase chamber) : base(chamber)
-//        {
-//            Name = "Loadlock Vent";
-//        }
-
-//        public RState Start(params object[] objs)
-//        {
-//            if (CheckLidLoadLock()&&
-//                CheckSlitDoor()&&
-//                CheckATMLoadLock())
-//            {
-//                Reset();
-
-//                // _chamber.CloseValves();
-
-//                //_chamber.TurnPendulumValve(false);
-
-//                _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout") * 1000;
-//                _overVentTime = SC.GetValue<int>($"{Module}.OverVentTime");
-
-
-//                return Runner.Start(Module, Name);
-//            }
-//            return RState.Failed;
-//        }
-
-//        public RState Monitor()
-//        {
-//          Runner.Run(VentStep.kClosePendulumValve,      ClosePendulumValve,                                                     _delay_1s)
-//                .Run(VentStep.kCloseValves,             CloseValves,                                                            _delay_1s)
-//                //.Run(VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.LoadlockPressure >= _ATMPressureLL; }, _checkATMTimeout)
-//                .Run(VentStep.kVent,                    HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true),      () => { return _chamber.IsATMLoadlock; }, _checkATMTimeout)
-
-//                .Delay(VentStep.kOverVent,              _overVentTime)
-//                .End(VentStep.kCloseVentValves,         HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false),     _delay_1s);
-
-//            return Runner.Status;
-//        }
-
-//        public void Abort()
-//        {
-//            CloseAllValves();
-//        }
-//        public bool ClosePendulumValve()
-//        {
-//            if (_chamber.PendulumValveIsOpen() == true)
-//            {
-//                _chamber.TurnPendulumValve(false);
-//            }
-//            _chamber.OpenValve(ValveType.TurboPumpPurge, false);
-//            _chamber.OpenValve(ValveType.Guage, false);
-
-//            return true;
-//        }
-//        public bool CloseValves()
-//        {
-//            _chamber.OpenValve(ValveType.TurboPumpPumping, false);
-//            return true;
-//        }
-//        public bool CheckATMLoadLock()
-//        {
-//            if (_chamber.IsATMLoadlock)
-//            {
-//                this.Stop("LoadLock 是ATM状态");
-//                return false;
-//            }
-//            return true;
-//        }
-//    }
-//}

+ 2 - 2
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -53,7 +53,7 @@ namespace Venus_RT.Modules.PMs
         private readonly PumpDownRoutine _pumpDownRoutine;
         private readonly ProcessHelper _processHelper;
         private bool _withWafer = true;
-        private bool _needPumpDown = false;
+        //private bool _needPumpDown = false;
         public Recipe _currentRecipe = null;
         private int _currentStep = 0;
         private List<Recipe> Recipelist = new List<Recipe>();
@@ -630,7 +630,7 @@ namespace Venus_RT.Modules.PMs
                     isMaualEndStep = false;
                     _currentStep++;
                     LOG.Write(eEvent.INFO_PROCESS, Module, $"Recipe:{CurrentRunningRecipe} Step{_currentStep} End");
-                    ProcessDataRecorder.StepStart(RecipeId, _currentRecipe.Steps[_currentStep].StepNo, $"{Module}:{_currentRecipe.Header.Name}:{_currentRecipe.Steps[_currentStep].Description}", _currentRecipe.Steps[_currentStep].Time);
+                    //ProcessDataRecorder.StepEnd(RecipeId, _currentRecipe.Steps[_currentStep].StepNo, $"{Module}:{_currentRecipe.Header.Name}:{_currentRecipe.Steps[_currentStep].Description}", _currentRecipe.Steps[_currentStep].Time);
 
                     _faCallback.RecipeStepEnd(Module.ToString(), CurrentRunningRecipe, _currentStep);
                     return StartNewStep() != RState.Running;

+ 3 - 1
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -1492,6 +1492,8 @@ namespace Venus_RT.Modules.PMs
         private RState HeaterUnit_Start(ProcessUnitBase unit, RecipeStep step)
         {
             var ProcessUnit = unit as HeaterUnit;
+            bool isAutoRatio = SC.GetValue<bool>($"{Chamber.Module}.HighTemperatureHeater.IsEnableAutoRatio");
+
             var position = (HighTemperatureHeaterPosition)Enum.Parse(typeof(HighTemperatureHeaterPosition), ProcessUnit.SuspectPosition.ToString());
             if (!Chamber.HighTemperatureHeaterGotoPosition(position))
             {
@@ -1501,7 +1503,7 @@ namespace Venus_RT.Modules.PMs
             {
                 Chamber.SetHighTemperatureHeaterTemperature(ProcessUnit.HeaterTemp);
             }
-            if (ProcessUnit.HeaterRatio > 0)
+            if (ProcessUnit.HeaterRatio > 0 && isAutoRatio==false)
             {
                 Chamber.SetHighTemperatureHeaterRatio(ProcessUnit.HeaterRatio);
             }

+ 1 - 1
Venus/Venus_RT/Modules/RouteManager.cs

@@ -1402,7 +1402,7 @@ namespace Venus_RT.Modules
                     }
                 }
                 string[] stringWaferIds = new string[tmpArys.Length];
-                string lotType = "";
+                //string lotType = "";
                 if (paras.Length >= 5)
                 {
                     object[] waferIdArys = (object[])paras[4];

+ 2 - 11
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -1817,15 +1817,6 @@ namespace Venus_RT.Modules
 
             CreateNewWaferTask();
 
-            //var endWaferTask = _lstWaferTasks.Where(item => ModuleHelper.IsLoadPort(item.destMod) && ModuleHelper.IsLoadPort(item.currentMod) && item.pressureStatus == RState.End);
-            //if (endWaferTask.Count() > 0)
-            //{
-            //    foreach (var waferTask in endWaferTask)
-            //    {
-            //        var pj = _lstProcessJobs.Find(process => process.InnerId == waferTask.lotId);
-            //        //_pmLastWaferEndTime[waferTask.DestinationPM] = DateTime.Now;
-            //    }
-            //}
 
             _lstWaferTasks.RemoveAll(item => ModuleHelper.IsLoadPort(item.destMod) && ModuleHelper.IsLoadPort(item.currentMod) && item.pressureStatus == RState.End);
 
@@ -2390,8 +2381,8 @@ namespace Venus_RT.Modules
             {
                 foreach (var runningJob in runningJobs)
                 {
-                    if (_qePollingJobs.Contains(runningJob) && _qePollingJobs.First() != runningJob)
-                        continue;
+                    //if (_qePollingJobs.Contains(runningJob) && _qePollingJobs.First() != runningJob)
+                    //    continue;
 
                     foreach (var wafer in runningJob.LotWafers)
                     {

+ 3 - 7
Venus/Venus_RT/Venus_RT.csproj

@@ -280,12 +280,6 @@
     <Compile Include="Modules\ManualTransfer.cs" />
     <Compile Include="Modules\PMs\GasBoxLeakCheckRoutine.cs" />
     <Compile Include="Modules\PMs\GasFlowRoutine.cs" />
-    <Compile Include="Modules\PMs\LLPickRoutine.cs" />
-    <Compile Include="Modules\PMs\LLPlaceRoutine.cs" />
-    <Compile Include="Modules\PMs\LoadLockLeakCheckRoutine.cs" />
-    <Compile Include="Modules\PMs\LoadLockPumpRoutine.cs" />
-    <Compile Include="Modules\PMs\LoadLockPurgeRoutine.cs" />
-    <Compile Include="Modules\PMs\LoadLockVentRoutine.cs" />
     <Compile Include="Modules\PMs\PMPartialPressureRoutine.cs" />
     <Compile Include="Modules\PMs\PMEntity.cs" />
     <Compile Include="Modules\PMs\PMGaslinePurgeRoutine.cs" />
@@ -532,6 +526,8 @@
   <PropertyGroup>
     <PostBuildEvent>if $(ConfigurationName)==Release (
 "$(SolutionDir)\Venus_Setup\Inno Setup 6\ISCC.exe"  /Q "$(SolutionDir)\Venus_Setup\Venus_RT.iss"
-)</PostBuildEvent>
+)
+
+</PostBuildEvent>
   </PropertyGroup>
 </Project>

+ 1 - 1
Venus/Venus_Themes/UserControls/FlowPipe.xaml

@@ -45,7 +45,7 @@
               Height="{Binding ElementName=flowPipeControl,Path=Height}" 
               Stroke="{Binding ElementName=flowPipeControl, Path=FlowColor}"  StrokeDashArray="2,3" StrokeDashCap="Round"
               StrokeThickness="5" 
-              Style="{StaticResource AnimatingFlow}" >
+               >
         </Line>
     </Canvas>
 </UserControl>