Skip to content

Commit

Permalink
Make vertical layout the default (#124)
Browse files Browse the repository at this point in the history
  • Loading branch information
tlambert03 committed Jan 23, 2021
1 parent c762aec commit ac5afc9
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 18 deletions.
7 changes: 4 additions & 3 deletions magicgui/widgets/_bases/container_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class ContainerWidget(Widget, _OrientationMixin, MutableSequence[Widget]):

def __init__(
self,
layout: str = "horizontal",
layout: str = "vertical",
widgets: Sequence[Widget] = (),
labels=True,
return_annotation: Any = None,
Expand Down Expand Up @@ -218,8 +218,9 @@ def _unify_label_widths(self, event=None):
measure(w.label) for w in self if not isinstance(w, ButtonWidget)
)
for w in self:
if hasattr(w, "label_width"):
w.label_width = widest_label # type: ignore
labeled_widget = w._labeled_widget()
if labeled_widget:
labeled_widget.label_width = widest_label

@property
def margins(self) -> Tuple[int, int, int, int]:
Expand Down
22 changes: 13 additions & 9 deletions magicgui/widgets/_bases/widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class Widget:

_widget: _protocols.WidgetProtocol
# if this widget becomes owned by a labeled widget
_labeled_widget: Optional["ReferenceType[_LabeledWidget]"] = None
_labeled_widget_ref: Optional["ReferenceType[_LabeledWidget]"] = None

def __init__(
self,
Expand Down Expand Up @@ -249,14 +249,18 @@ def tooltip(self, value: Optional[str]) -> None:
"""Set the tooltip for this widget."""
return self._widget._mgui_set_tooltip(value)

def _labeled_widget(self) -> Optional[_LabeledWidget]:
"""Return _LabeledWidget container, if applicable."""
return self._labeled_widget_ref() if self._labeled_widget_ref else None

def show(self, run=False):
"""Show the widget."""
self._widget._mgui_show_widget()
self.visible = True
if self._labeled_widget is not None:
w = self._labeled_widget()
if w:
w.show()

labeled_widget = self._labeled_widget()
if labeled_widget is not None:
labeled_widget.show()
if run:
self.__magicgui_app__.run()
return self # useful for generating repr in sphinx
Expand All @@ -274,10 +278,10 @@ def hide(self):
"""Hide widget."""
self._widget._mgui_hide_widget()
self.visible = False
if self._labeled_widget is not None:
w = self._labeled_widget()
if w:
w.hide()

labeled_widget = self._labeled_widget()
if labeled_widget is not None:
labeled_widget.hide()

def render(self) -> "np.ndarray":
"""Return an RGBA (MxNx4) numpy array bitmap of the rendered widget."""
Expand Down
5 changes: 2 additions & 3 deletions magicgui/widgets/_concrete.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,10 +510,9 @@ def __init__(
position: str = "left",
**kwargs,
):
layout = "horizontal" if position in ("left", "right") else "vertical"
kwargs["backend_kwargs"] = {"layout": layout}
kwargs["layout"] = "horizontal" if position in ("left", "right") else "vertical"
self._inner_widget = widget
widget._labeled_widget = ref(self)
widget._labeled_widget_ref = ref(self)
self._label_widget = Label(value=label or widget.label, tooltip=widget.tooltip)
super().__init__(**kwargs)
self.parent_changed.disconnect() # don't need _LabeledWidget to trigger stuff
Expand Down
2 changes: 1 addition & 1 deletion magicgui/widgets/_function_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def __init__(
self,
function: Callable[..., _R],
call_button: Union[bool, str] = False,
layout: str = "horizontal",
layout: str = "vertical",
labels: bool = True,
tooltips: bool = True,
app: AppRef = None,
Expand Down
4 changes: 2 additions & 2 deletions tests/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ def test_container_widget():
with pytest.raises(NotImplementedError):
container[0] = "something"

assert container.layout == "horizontal"
assert container.layout == "vertical"
with pytest.raises(NotImplementedError):
container.layout = "vertical"
container.layout = "horizontal"

assert all(x in dir(container) for x in ["labela", "labelb"])

Expand Down

0 comments on commit ac5afc9

Please sign in to comment.