AutoRun / Permission State Change

- Recipe Lock 수정
This commit is contained in:
최이근 2026-03-17 23:45:03 +09:00
parent 06805428c6
commit 8db304375a

View File

@ -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;
//Idle 상태에서는 Permission에 따라서 Recipe Lock이 결정된다.
if (e.state == SequenceRunState.Idle) {
OnPermissionChanged(null);
}
//Running 상태에서는 무조건 Recipe Lock
else if (e.state == SequenceRunState.Running) {
Application.Current.Dispatcher.Invoke(() => {
if (AutoRunState)
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