using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
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;
using System.Collections.ObjectModel;
using Xceed.Wpf.DataGrid;
using System.Xml;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Diagnostics;
namespace Aitex.UI.RecipeEditor
{
///
/// Interaction logic for RecipeEditorControl.xaml
///
public partial class RecipeEditorControl : UserControl
{
public RecipeEditorControl()
{
InitializeComponent();
ControlViewModel = new RecipeEditorControlViewModel() { DataGridControl = this.dataGrid1 };
Loaded += new RoutedEventHandler(RecipeEditorView_Loaded);
}
#if false
///
/// TEST MASK DISPLAY
///
///
///
void RecipeEditorView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var ss = new HashSet();
ss.Add("M_NH3_E_Push_H2");
ss.Add("CZone.Setpoint");
ss.Add("VentMO.Mode");
var tt = new HashSet();
tt.Add("吹扫");
tt.Add("MO源");
SetDisplayMask(ss, tt);
}
#endif
///
/// indicate whether recipe modified
///
public bool IsRecipeModified
{
get { return ControlViewModel.IsRecipeModified; }
}
///
/// RecipeEditor's view model
///
public RecipeEditorControlViewModel ControlViewModel { get; set; }
///
/// mask recipe item display
///
///
public void SetDisplayMask(HashSet maskedTechNames = null, HashSet maskedCatalogNames = null)
{
if (ControlViewModel != null)
{
ControlViewModel.MaskedTechNames = maskedTechNames;
ControlViewModel.MaskedCatalogNames = maskedCatalogNames;
ControlViewModel.RefreshCellsDisplay(false);
}
}
public void SetEnableBarcode(bool enabled)
{
if (ControlViewModel != null)
{
ControlViewModel.EnableBarcode(enabled);
}
}
public void SetUser(string user)
{
if (ControlViewModel != null)
{
ControlViewModel.SetCurrentUser(user);
}
}
///
/// loaded handling
///
///
///
void RecipeEditorView_Loaded(object sender, RoutedEventArgs e)
{
grid1.DataContext = ControlViewModel;
}
///
/// open recipe file
///
///
///
private void OpenButtonPanelLoaded(object sender, RoutedEventArgs e)
{
try
{
string variation = (string)((Button)sender).Tag;
ControlViewModel.OpenLocalRecipe(variation);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
///
/// update recipe variations
///
///
///
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 void UpdateCultureResource(string culture)
{
//string culture = language == 2 ? "zh-CN" : "en-US";
//Copy all MergedDictionarys into a auxiliar list.
var dictionaryList = Application.Current.Resources.MergedDictionaries.ToList();
//Search for the specified culture.
string requestedCulture = string.Format(@"/RecipeEditorControl;component/Resources/StringResources.{0}.xaml", culture);
var resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString == requestedCulture);
if (resourceDictionary == null)
{
//If not found, select our default language.
requestedCulture = "StringResources.xaml";
resourceDictionary = dictionaryList.
FirstOrDefault(d => d.Source.OriginalString == requestedCulture);
}
//If we have the requested resource, remove it from the list and place at the end.
//Then this language will be our string table to use.
if (resourceDictionary != null)
{
Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary);
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
//Inform the threads of the new culture.
Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
}
private void UIElement_OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}
private static bool IsTextAllowed(string text)
{
return true;
//Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
//return !regex.IsMatch(text);
}
}
}