"""
* Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.
*
* NVIDIA CORPORATION and its licensors retain all intellectual property
* and proprietary rights in and to this software, related documentation
* and any modifications thereto.  Any use, reproduction, disclosure or
* distribution of this software and related documentation without an express
* license agreement from NVIDIA CORPORATION is strictly prohibited.
"""
__all__ = ["ReloadModel"]

import omni.ui as ui
from omni.kit.widget.live_session_management.utils import reload_outdated_layers


class ReloadModel(ui.AbstractValueModel):
    def __init__(self, stage_item):
        super().__init__()
        self._stage_item = stage_item

    def destroy(self):
        self._stage_item = None

    def get_value_as_bool(self) -> bool:
        """Reimplemented get bool"""
        return self._stage_item.is_outdated

    def set_value(self, value: bool):
        """Reimplemented set bool"""
        prim = self._stage_item.prim
        if not prim:
            return

        prim_path = prim.GetPath()

        if prim_path:
            reload_outdated_layers(self._stage_item.payrefs, self._stage_item.usd_context)
