From ce7dc227a99f34453b45185196335db6611cf8c6 Mon Sep 17 00:00:00 2001 From: David Foster Date: Mon, 15 Jan 2024 09:50:55 -0500 Subject: [PATCH] New Group: Refactor extract _create_preview_box() --- src/crystal/browser/new_group.py | 78 ++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/src/crystal/browser/new_group.py b/src/crystal/browser/new_group.py index 4ee6c6b7..05510783 100644 --- a/src/crystal/browser/new_group.py +++ b/src/crystal/browser/new_group.py @@ -11,7 +11,7 @@ from crystal.util.wx_static_box_sizer import wrap_static_box_sizer_child from crystal.util.xos import is_linux import sys -from typing import Callable, Optional, Union +from typing import Callable, Optional, Tuple, Union import wx @@ -68,42 +68,15 @@ def __init__(self, bind(dialog, wx.EVT_BUTTON, self._on_button) bind(dialog, wx.EVT_CLOSE, self._on_close) - # NOTE: Don't use wx.CollapsiblePane on wxGTK/Linux because - # it doesn't resize its parent window properly on - # expand and unexpand events - preview_box_collapsible = not is_linux() - preview_box: Union[wx.Window, wx.Sizer] - preview_box_root: wx.Window - preview_box_root_sizer: wx.BoxSizer - preview_box_flags: int - preview_box_border: int - if preview_box_collapsible: - preview_box = wx.CollapsiblePane( - dialog, label='Preview Members', - name='cr-new-group-dialog__preview-members') - preview_box.Expand() - preview_box_root = preview_box.GetPane() - preview_box_root_sizer = wx.BoxSizer(wx.VERTICAL) - preview_box_root.SetSizer(preview_box_root_sizer) - preview_box_flags = 0 - preview_box_border = 0 - else: - preview_box_root_sizer = wx.StaticBoxSizer( - wx.VERTICAL, dialog, label='Preview Members') - preview_box = preview_box_root_sizer - preview_box_root = preview_box_root_sizer.GetStaticBox() - preview_box_flags = wx.TOP - preview_box_border = 10 - - preview_box_root_sizer.Add( - wrap_static_box_sizer_child(self._create_preview_box_content(preview_box_root)), - proportion=1, - flag=wx.EXPAND) - content_sizer = wx.BoxSizer(wx.VERTICAL) content_sizer.Add( self._create_fields(dialog, initial_url_pattern, initial_source, initial_name, is_edit), flag=wx.EXPAND) + ( + preview_box, + preview_box_flags, + preview_box_border, + ) = self._create_preview_box(dialog) content_sizer.Add(preview_box, proportion=1, flag=wx.EXPAND|preview_box_flags, border=preview_box_border) ok_button_id = (wx.ID_NEW if not is_edit else wx.ID_SAVE) @@ -193,6 +166,45 @@ def _create_fields(self, return fields_sizer + def _create_preview_box(self, parent: wx.Window) -> Tuple[Union[wx.Window, wx.Sizer], int, int]: + # NOTE: Don't use wx.CollapsiblePane on wxGTK/Linux because + # it doesn't resize its parent window properly on + # expand and unexpand events + preview_box_collapsible = not is_linux() + preview_box: Union[wx.Window, wx.Sizer] + preview_box_root: wx.Window + preview_box_root_sizer: wx.BoxSizer + preview_box_flags: int + preview_box_border: int + if preview_box_collapsible: + preview_box = wx.CollapsiblePane( + parent, label='Preview Members', + name='cr-new-group-dialog__preview-members') + preview_box.Expand() + preview_box_root = preview_box.GetPane() + preview_box_root_sizer = wx.BoxSizer(wx.VERTICAL) + preview_box_root.SetSizer(preview_box_root_sizer) + preview_box_flags = 0 + preview_box_border = 0 + else: + preview_box_root_sizer = wx.StaticBoxSizer( + wx.VERTICAL, parent, label='Preview Members') + preview_box = preview_box_root_sizer + preview_box_root = preview_box_root_sizer.GetStaticBox() + preview_box_flags = wx.TOP + preview_box_border = 10 + + preview_box_root_sizer.Add( + wrap_static_box_sizer_child(self._create_preview_box_content(preview_box_root)), + proportion=1, + flag=wx.EXPAND) + + return ( + preview_box, + preview_box_flags, + preview_box_border, + ) + def _create_preview_box_content(self, parent: wx.Window) -> wx.Sizer: content_sizer = wx.BoxSizer(wx.VERTICAL)