94 lines
3.5 KiB
C#
94 lines
3.5 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using Aurora.View;
|
|
using AuroraCAS;
|
|
using MilUI;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reactive.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using VisionCommon;
|
|
|
|
namespace WeldingCommon.Views
|
|
{
|
|
public class UCManualScannerOperationViewModel : NotifyPropertyChangedBase
|
|
{
|
|
private readonly Logger Log = new Logger("UCManualScannerOperationViewModel");
|
|
|
|
public ICommand CMD_ShowSelectFieldWindow { get; }
|
|
|
|
private readonly IAuroraEnvironment _Aurora;
|
|
|
|
private WDSelectScoutField _SelectFieldWindow;
|
|
|
|
public UCScannerMotionViewModel ScannerMotionViewModel { get; }
|
|
public UCScannerLaserControlViewModel ScannerLaserControlViewModel { get; }
|
|
|
|
public bool IsManualStatus { get => _IsManualStatus; set => SetProperty(ref _IsManualStatus, value); }
|
|
private bool _IsManualStatus = true;
|
|
|
|
public UCManualScannerOperationViewModel(IAuroraEnvironment aurora, string scannerId, bool isUseMarkingOntheFly = false)
|
|
{
|
|
_Aurora = aurora;
|
|
|
|
CMD_ShowSelectFieldWindow = new DelegateCommand(PerformCmdShowSelectFieldWindow, CanShowSelectFieldWindow);
|
|
|
|
ScannerMotionViewModel = new UCScannerMotionViewModel(_Aurora, scannerId);
|
|
ScannerLaserControlViewModel = new UCScannerLaserControlViewModel(_Aurora, scannerId, isUseMarkingOntheFly);
|
|
|
|
VisionEnv.AuroraEnv.EventObservable.AsObservable(VisionEventId.SAVE_CHILD_IMAGE_SETTING).
|
|
Where(x => x.From == eCamId.CAM1.ToString()).Subscribe(msg => ShowSelectFieldWindow(msg));
|
|
|
|
_Aurora.EventObservable.AsObservable(CommonEventIds.EVENT_EQUIPMENT_STATUS_CHANGE)
|
|
.Subscribe(x => IsManualStatus = Status.EquipmentStatus == eEqpStatus.Manual);
|
|
}
|
|
|
|
private bool CanShowSelectFieldWindow(object o) => _SelectFieldWindow == null;
|
|
|
|
private void PerformCmdShowSelectFieldWindow(object o)
|
|
{
|
|
ShowSelectFieldWindow(null);
|
|
}
|
|
|
|
private void ShowSelectFieldWindow(EventMessage msg) {
|
|
try {
|
|
Application.Current.Dispatcher.Invoke(
|
|
new Action(() => {
|
|
if (_SelectFieldWindow != null) {
|
|
_SelectFieldWindow.Closed -= (sender, _) => { _SelectFieldWindow = null; };
|
|
_SelectFieldWindow.Close();
|
|
_SelectFieldWindow = null;
|
|
}
|
|
|
|
_SelectFieldWindow = new WDSelectScoutField(_Aurora) {
|
|
Owner = Application.Current.MainWindow
|
|
};
|
|
_SelectFieldWindow.Closed += (sender, _) => { _SelectFieldWindow = null; };
|
|
_SelectFieldWindow.Show();
|
|
}));
|
|
}
|
|
catch {
|
|
|
|
}
|
|
}
|
|
|
|
// TODO: View 에서 해당 button 이 주석 처리 되어 있음.
|
|
//private bool CanShowMotionWindow(object o) => _MotionWindow == null;
|
|
|
|
//private void PerformCmdShowMotionWindow(object o)
|
|
//{
|
|
// if (_MotionWindow == null) {
|
|
// _MotionWindow = new WDSingleAxisControl(_AuroraEnv) {
|
|
// Owner = Application.Current.MainWindow,
|
|
// };
|
|
// _MotionWindow.Closed += (sender, _) => { _MotionWindow = null; };
|
|
// }
|
|
// _MotionWindow.ShowDialog();
|
|
//}
|
|
}
|
|
}
|