AutoRun / Permission State Change
- Recipe Lock 수정
This commit is contained in:
parent
06805428c6
commit
8db304375a
@ -91,59 +91,44 @@ namespace ILSOS_CCW_H52A {
|
||||
seq.RunStateChanged += AutoRunSeq_RunStateChanged;
|
||||
}
|
||||
|
||||
private const ushort LogOut = 65535; // CMY - 급해서 해두긴 했는데 더 좋은 방향으로 바꾸어야함
|
||||
private void AutoRunSeq_RunStateChanged(object sender, (string sequenceId, SequenceRunState state) e)
|
||||
{
|
||||
|
||||
//AutoRun 상황에서 Recipe Save Lock
|
||||
bool RecipeLockEnable = e.state != SequenceRunState.Idle;
|
||||
if (ApplicationExt.PermissionLevel == LogOut) {
|
||||
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true);
|
||||
RecipeLockEnable = true; // CMY - LogOut 되어 있으면 무조건 락
|
||||
} else
|
||||
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, RecipeLockEnable);
|
||||
|
||||
bool AutoRunState = e.state == SequenceRunState.Running;
|
||||
Application.Current.Dispatcher.Invoke(() => {
|
||||
if (AutoRunState)
|
||||
//Idle 상태에서는 Permission에 따라서 Recipe Lock이 결정된다.
|
||||
if (e.state == SequenceRunState.Idle) {
|
||||
OnPermissionChanged(null);
|
||||
}
|
||||
//Running 상태에서는 무조건 Recipe Lock
|
||||
else if (e.state == SequenceRunState.Running) {
|
||||
Application.Current.Dispatcher.Invoke(() => {
|
||||
WeldingRecipeManager.OnActiveReloaded();
|
||||
else
|
||||
WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name);
|
||||
_UCRecipe.IsEnabled = false;
|
||||
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, true);
|
||||
});
|
||||
}
|
||||
//다른 경우는? 중복호출이 될 것 같긴한데? 사실상 Idle과 동일하게 처리하는게 나을지?
|
||||
else {
|
||||
|
||||
if (RecipeLockEnable == false || e.state == SequenceRunState.Running) {
|
||||
_UCRecipe.IsEnabled = e.state != SequenceRunState.Running; // CMY - Recipe Lock을 풀 조건이 아니면 Enable은 건드리지 않는다.
|
||||
}
|
||||
}
|
||||
|
||||
if (RecipeLockEnable)
|
||||
Log.E($"AutoRun Start. Recipe Lock Enable True");
|
||||
else
|
||||
Log.E("AutoRun End. Recipe Lock Enable False");
|
||||
});
|
||||
Log.E($"AutoRun State Changed[{Enum.GetName(typeof(SequenceRunState), e.state)}].");
|
||||
}
|
||||
|
||||
private void OnPermissionChanged(EventMessage message)
|
||||
{
|
||||
bool permissionOn = ApplicationExt.PermissionLevel <= (ushort)PermissionLevel.LEVEL3;
|
||||
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !permissionOn);
|
||||
bool IsAdmin = ApplicationExt.PermissionLevel <= (ushort)eEditablePermissionLevel.Engineer;
|
||||
|
||||
// Login 권한이 없어지면 Active된 레시피로 변경하도록 함
|
||||
Application.Current.Dispatcher.Invoke(() => {
|
||||
if (!permissionOn)
|
||||
if (!IsAdmin)
|
||||
WeldingRecipeManager.OnActiveReloaded();
|
||||
else
|
||||
WeldingRecipeManager.ReloadWeldingRecipe(WeldingRecipeManager.SelectedRecipe.name);
|
||||
|
||||
AuroraEnv.RecipeManager.SaveLock(CommonRecipeIds.ScannerObjectTeaching, !IsAdmin);
|
||||
_UCRecipe.IsEnabled = IsAdmin;
|
||||
});
|
||||
|
||||
//LogOut 상황에서 Recipe Save Lock
|
||||
//LogOut 상황에서 Reicpe 화면 수정할 수 없도록 함
|
||||
Application.Current.Dispatcher.Invoke(() => { _UCRecipe.IsEnabled = permissionOn; });
|
||||
Application.Current.Dispatcher.Invoke(() => {
|
||||
if (!permissionOn)
|
||||
Log.E($"User LogOut. Recipe Lock Enable True");
|
||||
else
|
||||
Log.E("User Login. Recipe Lock Enable False");
|
||||
});
|
||||
|
||||
Log.E($"OnPermissionChanged >> Permission[{Enum.GetName(typeof(eEditablePermissionLevel), ApplicationExt.PermissionLevel)}] / RecipeLock[{!IsAdmin}]");
|
||||
}
|
||||
|
||||
// For Selection LaserDevice
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user