Skip to content

Commit

Permalink
*SQ: Can toggle whether options shown. NEEDS TESTING BEFORE SQUASH.
Browse files Browse the repository at this point in the history
  • Loading branch information
davidfstr committed Jan 17, 2024
1 parent 5094c84 commit 22ddfb9
Showing 1 changed file with 49 additions and 10 deletions.
59 changes: 49 additions & 10 deletions src/crystal/browser/new_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
_FORM_LABEL_INPUT_SPACING = 5
_FORM_ROW_SPACING = 10
_SCROLL_RATE = 20
_ABOVE_OPTIONS_PADDING = 10

_OPTIONS_SHOWN_LABEL = 'Basic Options'
_OPTIONS_NOT_SHOWN_LABEL = 'Advanced Options'


class NewGroupDialog:
Expand Down Expand Up @@ -84,10 +88,12 @@ def __init__(self,
proportion=1,
flag=wx.EXPAND|preview_box_flags,
border=preview_box_border)

self._options_sizer = self._create_advanced_options(dialog, initial_do_not_download)
content_sizer.Add(
self._create_advanced_options(dialog, initial_do_not_download),
self._options_sizer,
flag=wx.EXPAND|wx.TOP,
border=10)
border=_ABOVE_OPTIONS_PADDING)

dialog_sizer.Add(content_sizer, proportion=1, flag=wx.EXPAND|wx.ALL,
border=_WINDOW_INNER_PADDING)
Expand All @@ -103,8 +109,9 @@ def __init__(self,
self._update_preview_urls()

position_dialog_initially(dialog)
dialog.Show(True)
dialog.Fit()
self._on_options_toggle() # collapse options initially
dialog.Show(True)

dialog.MinSize = dialog.Size
dialog.MaxSize = wx.Size(wx.DefaultCoord, wx.DefaultCoord)
Expand Down Expand Up @@ -227,7 +234,7 @@ def _create_preview_box_content(self, parent: wx.Window) -> wx.Sizer:

return content_sizer

def _create_advanced_options(self, parent: wx.Window, *args, **kwargs) -> wx.Sizer:
def _create_advanced_options(self, parent: wx.Window, *args, **kwargs) -> wx.StaticBoxSizer:
options_sizer = wx.StaticBoxSizer(wx.VERTICAL, parent, label='Advanced Options')
options_sizer.Add(
wrap_static_box_sizer_child(
Expand Down Expand Up @@ -354,10 +361,13 @@ def _create_buttons(self, parent: wx.Window, is_edit: bool) -> wx.Sizer:
ok_button_id = (wx.ID_NEW if not is_edit else wx.ID_SAVE)

button_sizer = wx.BoxSizer(wx.HORIZONTAL)

self._options_button = wx.Button(parent, wx.ID_MORE, _OPTIONS_SHOWN_LABEL)
button_sizer.Add(
wx.Button(parent, wx.ID_MORE, 'Advanced Options'),
self._options_button,
flag=wx.CENTER|wx.LEFT,
border=_WINDOW_INNER_PADDING)

button_sizer.AddStretchSpacer()
button_sizer.Add(CreateButtonSizer(parent, ok_button_id, wx.ID_CANCEL), flag=wx.CENTER)
return button_sizer
Expand Down Expand Up @@ -398,14 +408,16 @@ def _on_pattern_field_changed(self, event) -> None:
def _on_button(self, event: wx.CommandEvent) -> None:
btn_id = event.GetEventObject().GetId()
if btn_id in (wx.ID_NEW, wx.ID_SAVE):
self._on_ok(event)
self._on_ok()
elif btn_id == wx.ID_CANCEL:
self._on_cancel(event)
self._on_cancel()
elif btn_id == wx.ID_MORE:
self._on_options_toggle()

def _on_close(self, event: wx.CloseEvent) -> None:
self._on_cancel(event)
self._on_cancel()

def _on_ok(self, event: wx.CommandEvent) -> None:
def _on_ok(self) -> None:
name = self.name_field.Value
url_pattern = self.pattern_field.Value
source = self.source_choice_box.GetClientData(
Expand All @@ -427,5 +439,32 @@ def _on_ok(self, event: wx.CommandEvent) -> None:

self.dialog.Destroy()

def _on_cancel(self, event: wx.CommandEvent) -> None:
def _on_cancel(self) -> None:
self.dialog.Destroy()

def _on_options_toggle(self) -> None:
options = self._options_sizer.GetStaticBox()
if options.Shown:
# Hide
self._options_button.Label = _OPTIONS_NOT_SHOWN_LABEL

options_height = options.Size.Height + _ABOVE_OPTIONS_PADDING
options.Shown = False
self.dialog.SetSize(
x=wx.DefaultCoord,
y=wx.DefaultCoord,
width=wx.DefaultCoord,
height=self.dialog.Size.Height - options_height,
sizeFlags=wx.SIZE_USE_EXISTING)
else:
# Show
self._options_button.Label = _OPTIONS_SHOWN_LABEL

options.Shown = True
options_height = options.Size.Height + _ABOVE_OPTIONS_PADDING
self.dialog.SetSize(
x=wx.DefaultCoord,
y=wx.DefaultCoord,
width=wx.DefaultCoord,
height=self.dialog.Size.Height + options_height,
sizeFlags=wx.SIZE_USE_EXISTING)

0 comments on commit 22ddfb9

Please sign in to comment.