using OpenSEMI.ClientBase; using OpenSEMI.Ctrlib.Controls; using System.Windows; using System.Windows.Controls; using Venus_Core; using Venus_Themes.Unity; using static Venus_Core.NiceRobotAction; //using static Venus_Themes.UserControls.EFEM; namespace Venus_Themes.UserControls { /// /// Chamber.xaml 的交互逻辑 /// public partial class ChamberWithHeater : UserControl { public ChamberWithHeater() { InitializeComponent(); } public static readonly DependencyProperty IsOpenSlitDoorProperty = DependencyProperty.Register( "IsOpenSlitDoor", typeof(bool), typeof(ChamberWithHeater)); public bool IsOpenSlitDoor { get { return (bool)this.GetValue(IsOpenSlitDoorProperty); } set { this.SetValue(IsOpenSlitDoorProperty, value); } } public static readonly DependencyProperty IsHasWaferProperty = DependencyProperty.Register( "IsHasWafer", typeof(bool), typeof(ChamberWithHeater), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public bool IsHasWafer { get { return (bool)this.GetValue(IsHasWaferProperty); } set { this.SetValue(IsHasWaferProperty, value); } } public static readonly DependencyProperty IsLidOpenProperty = DependencyProperty.Register( "IsLidOpen", typeof(bool), typeof(ChamberWithHeater)); public bool IsLidOpen { get { return (bool)this.GetValue(IsLidOpenProperty); } set { this.SetValue(IsLidOpenProperty, value); } } public static readonly DependencyProperty IsSRFOnProperty = DependencyProperty.Register( "IsSRFOn", typeof(bool), typeof(ChamberWithHeater), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public bool IsSRFOn { get { return (bool)this.GetValue(IsSRFOnProperty); } set { this.SetValue(IsSRFOnProperty, value); } } public static readonly DependencyProperty IsBRFOnProperty = DependencyProperty.Register( "IsBRFOn", typeof(bool), typeof(ChamberWithHeater), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); public bool IsBRFOn { get { return (bool)this.GetValue(IsBRFOnProperty); } set { this.SetValue(IsBRFOnProperty, value); } } public static readonly DependencyProperty WaferIDProperty = DependencyProperty.Register( "WaferID", typeof(string), typeof(ChamberWithHeater)); public string WaferID { get { return (string)this.GetValue(WaferIDProperty); } set { this.SetValue(WaferIDProperty, value); } } public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register( "ModuleName", typeof(string), typeof(ChamberWithHeater)); public string ModuleName { get { return (string)this.GetValue(ModuleNameProperty); } set { this.SetValue(ModuleNameProperty, value); } } public static readonly DependencyProperty HeaterPositionProperty = DependencyProperty.Register( "HeaterPosition", typeof(string), typeof(ChamberWithHeater), new PropertyMetadata("Position1", PositionChangedCallback)); public string HeaterPosition { get { return (string)this.GetValue(HeaterPositionProperty); } set { this.SetValue(HeaterPositionProperty, value); } } public static readonly DependencyProperty RobotWaferProperty = DependencyProperty.Register( "RobotWafer", typeof(WaferInfo), typeof(ChamberWithHeater)); public WaferInfo RobotWafer { get => (WaferInfo)GetValue(RobotWaferProperty); set => SetValue(RobotWaferProperty, value); } // public static readonly DependencyProperty IsUpdateControlProperty = DependencyProperty.Register( //"IsUpdateControl", typeof(bool), typeof(ChamberWithHeater), //new FrameworkPropertyMetadata(false, UpdateControlPropertyChangedCallback)); // public bool IsUpdateControl // { // get { return (bool)this.GetValue(IsUpdateControlProperty); } // set { this.SetValue(IsUpdateControlProperty, value); } // } public static readonly DependencyProperty ChamberInfoProperty = DependencyProperty.Register( "ChamberInfo", typeof(ChamberInfo), typeof(ChamberWithHeater), new PropertyMetadata(UpdateControlPropertyChangedCallback)); public ChamberInfo ChamberInfo { get => (ChamberInfo)GetValue(ChamberInfoProperty); set => SetValue(ChamberInfoProperty, value); } private static void UpdateControlPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { //var control = d as ChamberWithHeater; //var newAct = e.NewValue as ChamberInfo; //switch (newAct.Position) //{ // case "Position1": // control.heaterRotateAct.Y = 10; // break; // case "Position2": // control.heaterRotateAct.Y = -10; // break; // case "Position3": // control.heaterRotateAct.Y = -20; // break; // case "Position4": // control.heaterRotateAct.Y = -30; // break; // case "Position5": // control.heaterRotateAct.Y = -40; // break; // case "Origin": // control.heaterRotateAct.Y = 0; // break; //} //var style = control.TryFindResource("SlitValve_Animation") as Style; //control.rectangle1.Style = null; //control.rectangle2.Style = null; //if (newAct.DoorIsOpen) //{ // control.rectangle1.Height = 42d; // control.rectangle2.Height = 42d; //} //else //{ // control.rectangle1.Height = 75d; // control.rectangle2.Height = 75d; //} //control.rectangle1.Style= style; //control.rectangle2.Style = style; } private void CreateWafer_Click(object sender, RoutedEventArgs e) { UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = true }); } private void DeleteWafer_Click(object sender, RoutedEventArgs e) { UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = false }); } private void OpenDoor_Click(object sender, RoutedEventArgs e) { UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Open" }); } private void CloseDoor_Click(object sender, RoutedEventArgs e) { UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Close" }); } private static void PositionChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { var newAct = e.NewValue.ToString(); var control = d as ChamberWithHeater; if (newAct == "Position1") { control.border1.Margin = new Thickness(5, -14, 0, 0); } else { control.border1.Margin = new Thickness(5, -11, 0, 0); } GoToPosition(control, newAct); } private static void GoToPosition(Control control, string robotPosition) { VisualStateManager.GoToElementState(control, robotPosition, true); } } }