Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add visible as kwarg to ViewerElements #2730

Merged
merged 3 commits into from
Jan 6, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 54 additions & 19 deletions nerfstudio/viewer_beta/viewer_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,17 +195,20 @@ class ViewerElement(Generic[TValue]):
Args:
name: The name of the element
disabled: If the element is disabled
visible: If the element is visible
"""

def __init__(
self,
name: str,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable = lambda element: None,
) -> None:
self.name = name
self.gui_handle: Optional[Union[GuiInputHandle[TValue], GuiButtonHandle, GuiButtonGroupHandle]] = None
self.disabled = disabled
self.visible = visible
self.cb_hook = cb_hook

@abstractmethod
Expand Down Expand Up @@ -234,6 +237,11 @@ def set_disabled(self, disabled: bool) -> None:
assert self.gui_handle is not None
self.gui_handle.disabled = disabled

def set_visible(self, visible: bool) -> None:
"""Sets the visible state of the gui element"""
assert self.gui_handle is not None
self.gui_handle.visible = visible

@abstractmethod
def install(self, viser_server: ViserServer) -> None:
"""Installs the gui element into the given viser_server"""
Expand All @@ -247,15 +255,16 @@ class ViewerButton(ViewerElement[bool]):
name: The name of the button
cb_hook: The function to call when the button is pressed
disabled: If the button is disabled
visible: If the button is visible
"""

gui_handle: GuiButtonHandle

def __init__(self, name: str, cb_hook: Callable[[ViewerButton], Any], disabled: bool = False):
super().__init__(name, disabled=disabled, cb_hook=cb_hook)
def __init__(self, name: str, cb_hook: Callable[[ViewerButton], Any], disabled: bool = False, visible: bool = True):
super().__init__(name, disabled=disabled, visible=visible, cb_hook=cb_hook)

def _create_gui_handle(self, viser_server: ViserServer) -> None:
self.gui_handle = viser_server.add_gui_button(label=self.name, disabled=self.disabled)
self.gui_handle = viser_server.add_gui_button(label=self.name, disabled=self.disabled, visible=self.visible)

def install(self, viser_server: ViserServer) -> None:
self._create_gui_handle(viser_server)
Expand All @@ -271,6 +280,7 @@ class ViewerParameter(ViewerElement[TValue], Generic[TValue]):
name: The name of the element
default_value: The default value of the element
disabled: If the element is disabled
visible: If the element is visible
cb_hook: Callback to call on update
"""

Expand All @@ -281,9 +291,10 @@ def __init__(
name: str,
default_value: TValue,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable = lambda element: None,
) -> None:
super().__init__(name, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.default_value = default_value

def install(self, viser_server: ViserServer) -> None:
Expand Down Expand Up @@ -330,6 +341,7 @@ class ViewerSlider(ViewerParameter[IntOrFloat], Generic[IntOrFloat]):
max_value: The maximum value of the slider
step: The step size of the slider
disabled: If the slider is disabled
visible: If the slider is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -342,11 +354,12 @@ def __init__(
max_value: IntOrFloat,
step: IntOrFloat = 0.1,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable[[ViewerSlider], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert isinstance(default_value, (float, int))
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.min = min_value
self.max = max_value
self.step = step
Expand All @@ -355,7 +368,14 @@ def __init__(
def _create_gui_handle(self, viser_server: ViserServer) -> None:
assert self.gui_handle is None, "gui_handle should be initialized once"
self.gui_handle = viser_server.add_gui_slider(
self.name, self.min, self.max, self.step, self.default_value, disabled=self.disabled, hint=self.hint
self.name,
self.min,
self.max,
self.step,
self.default_value,
disabled=self.disabled,
visible=self.visible,
hint=self.hint,
)


Expand All @@ -366,6 +386,7 @@ class ViewerText(ViewerParameter[str]):
name: The name of the text field
default_value: The default value of the text field
disabled: If the text field is disabled
visible: If the text field is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -375,17 +396,18 @@ def __init__(
name: str,
default_value: str,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable[[ViewerText], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert isinstance(default_value, str)
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.hint = hint

def _create_gui_handle(self, viser_server: ViserServer) -> None:
assert self.gui_handle is None, "gui_handle should be initialized once"
self.gui_handle = viser_server.add_gui_text(
self.name, self.default_value, disabled=self.disabled, hint=self.hint
self.name, self.default_value, disabled=self.disabled, visible=self.visible, hint=self.hint
)


Expand All @@ -396,6 +418,7 @@ class ViewerNumber(ViewerParameter[IntOrFloat], Generic[IntOrFloat]):
name: The name of the number field
default_value: The default value of the number field
disabled: If the number field is disabled
visible: If the number field is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -407,17 +430,18 @@ def __init__(
name: str,
default_value: IntOrFloat,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable[[ViewerNumber], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert isinstance(default_value, (float, int))
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.hint = hint

def _create_gui_handle(self, viser_server: ViserServer) -> None:
assert self.gui_handle is None, "gui_handle should be initialized once"
self.gui_handle = viser_server.add_gui_number(
self.name, self.default_value, disabled=self.disabled, hint=self.hint
self.name, self.default_value, disabled=self.disabled, visible=self.visible, hint=self.hint
)


Expand All @@ -428,6 +452,7 @@ class ViewerCheckbox(ViewerParameter[bool]):
name: The name of the checkbox
default_value: The default value of the checkbox
disabled: If the checkbox is disabled
visible: If the checkbox is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -437,17 +462,18 @@ def __init__(
name: str,
default_value: bool,
disabled: bool = False,
visible: bool = True,
cb_hook: Callable[[ViewerCheckbox], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert isinstance(default_value, bool)
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.hint = hint

def _create_gui_handle(self, viser_server: ViserServer) -> None:
assert self.gui_handle is None, "gui_handle should be initialized once"
self.gui_handle = viser_server.add_gui_checkbox(
self.name, self.default_value, disabled=self.disabled, hint=self.hint
self.name, self.default_value, disabled=self.disabled, visible=self.visible, hint=self.hint
)


Expand All @@ -462,6 +488,7 @@ class ViewerDropdown(ViewerParameter[TString], Generic[TString]):
default_value: The default value of the dropdown
options: The options of the dropdown
disabled: If the dropdown is disabled
visible: If the dropdown is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -474,11 +501,12 @@ def __init__(
default_value: TString,
options: List[TString],
disabled: bool = False,
visible: bool = True,
cb_hook: Callable[[ViewerDropdown], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert default_value in options
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.options = options
self.hint = hint

Expand All @@ -489,6 +517,7 @@ def _create_gui_handle(self, viser_server: ViserServer) -> None:
self.options,
self.default_value,
disabled=self.disabled,
visible=self.visible,
hint=self.hint, # type: ignore
)

Expand All @@ -509,6 +538,7 @@ class ViewerButtonGroup(ViewerParameter[TString], Generic[TString]):

Args:
name: The name of the button group
visible: If the button group is visible
options: The options of the button group
cb_hook: Callback to call on update
"""
Expand All @@ -520,14 +550,15 @@ def __init__(
name: str,
default_value: TString,
options: List[TString],
visible: bool = True,
cb_hook: Callable[[ViewerDropdown], Any] = lambda element: None,
):
super().__init__(name, disabled=False, default_value=default_value, cb_hook=cb_hook)
super().__init__(name, disabled=False, visible=visible, default_value=default_value, cb_hook=cb_hook)
self.options = options

def _create_gui_handle(self, viser_server: ViserServer) -> None:
assert self.gui_handle is None, "gui_handle should be initialized once"
self.gui_handle = viser_server.add_gui_button_group(self.name, self.options)
self.gui_handle = viser_server.add_gui_button_group(self.name, self.options, visible=self.visible)

def install(self, viser_server: ViserServer) -> None:
self._create_gui_handle(viser_server)
Expand All @@ -544,6 +575,7 @@ class ViewerRGB(ViewerParameter[Tuple[int, int, int]]):
name: The name of the color picker
default_value: The default value of the color picker
disabled: If the color picker is disabled
visible: If the color picker is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -553,16 +585,17 @@ def __init__(
name,
default_value: Tuple[int, int, int],
disabled=False,
visible=True,
cb_hook: Callable[[ViewerRGB], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert len(default_value) == 3
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.hint = hint

def _create_gui_handle(self, viser_server: ViserServer) -> None:
self.gui_handle = viser_server.add_gui_rgb(
self.name, self.default_value, disabled=self.disabled, hint=self.hint
self.name, self.default_value, disabled=self.disabled, visible=self.visible, hint=self.hint
)


Expand All @@ -575,6 +608,7 @@ class ViewerVec3(ViewerParameter[Tuple[float, float, float]]):
default_value: The default value of the vector
step: The step of the vector
disabled: If the vector is disabled
visible: If the vector is visible
cb_hook: Callback to call on update
hint: The hint text
"""
Expand All @@ -585,15 +619,16 @@ def __init__(
default_value: Tuple[float, float, float],
step=0.1,
disabled=False,
visible=True,
cb_hook: Callable[[ViewerVec3], Any] = lambda element: None,
hint: Optional[str] = None,
):
assert len(default_value) == 3
super().__init__(name, default_value, disabled=disabled, cb_hook=cb_hook)
super().__init__(name, default_value, disabled=disabled, visible=visible, cb_hook=cb_hook)
self.step = step
self.hint = hint

def _create_gui_handle(self, viser_server: ViserServer) -> None:
self.gui_handle = viser_server.add_gui_vector3(
self.name, self.default_value, step=self.step, disabled=self.disabled, hint=self.hint
self.name, self.default_value, step=self.step, disabled=self.disabled, visible=self.visible, hint=self.hint
)
Loading