mwxlib 1.7.13__py3-none-any.whl → 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mwx/bookshelf.py CHANGED
@@ -91,24 +91,24 @@ class EditorTreeCtrl(wx.TreeCtrl, CtrlInterface):
91
91
  self.parent.handler(self.handler.current_event, evt)
92
92
  evt.Skip()
93
93
 
94
- self.handler.update({ # DNA<EditorTreeCtrl>
94
+ self.handler.update({ # DNA<EditorTreeCtrl>
95
95
  None : {
96
- '*button* pressed' : [ None, dispatch ],
97
- '*button* released' : [ None, dispatch ],
96
+ '*button* pressed' : [None, dispatch],
97
+ '*button* released' : [None, dispatch],
98
98
  },
99
99
  0 : {
100
100
  'delete pressed' : (0, self.on_delete_buffer),
101
101
  },
102
102
  })
103
- self.context = { # DNA<EditorBook>
103
+ self.context = { # DNA<EditorBook>
104
104
  None : {
105
- 'buffer_new' : [ None, self.on_buffer_new ],
106
- 'buffer_saved' : [ None, ],
107
- 'buffer_loaded' : [ None, ],
108
- 'buffer_deleted' : [ None, self.on_buffer_deleted ],
109
- 'buffer_activated' : [ None, self.on_buffer_selected ],
110
- 'buffer_inactivated' : [ None, ],
111
- 'buffer_caption_updated' : [ None, self.on_buffer_filename ],
105
+ 'buffer_new' : [None, self.on_buffer_new],
106
+ 'buffer_saved' : [None, ],
107
+ 'buffer_loaded' : [None, ],
108
+ 'buffer_deleted' : [None, self.on_buffer_deleted],
109
+ 'buffer_activated' : [None, self.on_buffer_selected],
110
+ 'buffer_inactivated' : [None, ],
111
+ 'buffer_caption_updated' : [None, self.on_buffer_filename],
112
112
  },
113
113
  }
114
114
 
@@ -185,7 +185,7 @@ class EditorTreeCtrl(wx.TreeCtrl, CtrlInterface):
185
185
  def on_buffer_deleted(self, buf):
186
186
  self.Delete(buf.__itemId)
187
187
 
188
- ## Note: [buffer_activated][EVT_SET_FOCUS] > [buffer_new] の順で呼ばれる.
188
+ ## Note: [buffer_activated] > [buffer_new] の順で呼ばれる.
189
189
  ## buf.__itemId がない場合がある (delete_buffer 直後など).
190
190
  def on_buffer_selected(self, buf):
191
191
  if self and buf:
mwx/controls.py CHANGED
@@ -64,9 +64,9 @@ class Param:
64
64
  if isinstance(fmt, str): # support %-format:str (deprecated)
65
65
  self.__format = lambda v: fmt % v
66
66
  self.callback = SSM({
67
- 'control' : [ _F(handler) ] if handler else [],
68
- 'updated' : [ _F(updater) ] if updater else [],
69
- 'checked' : [ _F(checker) ] if checker else [],
67
+ 'control' : [_F(handler)] if handler else [],
68
+ 'updated' : [_F(updater)] if updater else [],
69
+ 'checked' : [_F(checker)] if checker else [],
70
70
  'notified' : [],
71
71
  'overflow' : [],
72
72
  'underflow' : [],
@@ -434,13 +434,13 @@ class Knob(wx.Panel):
434
434
  def update_range(self):
435
435
  """Called when range is being changed (internal use only)."""
436
436
  v = self.__par
437
- if isinstance(self._ctrl, wx.Choice): #<wx.Choice>
437
+ if isinstance(self._ctrl, wx.Choice): # <wx.Choice>
438
438
  items = [v.__str__(x) for x in v.range]
439
439
  if items != self._ctrl.Items:
440
440
  self._ctrl.SetItems(items)
441
441
  self._ctrl.SetStringSelection(str(v))
442
442
  else:
443
- self._ctrl.SetRange(0, len(v)-1) #<wx.Slider> #<wx.SpinButton>
443
+ self._ctrl.SetRange(0, len(v)-1) # <wx.Slider> <wx.SpinButton>
444
444
 
445
445
  def update_label(self):
446
446
  """Called when label is being changed (internal use only)."""
@@ -494,7 +494,7 @@ class Knob(wx.Panel):
494
494
  v.index = j
495
495
  v.reset(v.value)
496
496
 
497
- def OnScroll(self, evt): #<wx._core.ScrollEvent> #<wx._controls.SpinEvent> #<wx._core.CommandEvent>
497
+ def OnScroll(self, evt): # <wx._core.ScrollEvent> <wx._controls.SpinEvent> <wx._core.CommandEvent>
498
498
  v = self.__par
499
499
  j = self._ctrl.GetValue()
500
500
  if j != v.index:
@@ -502,11 +502,11 @@ class Knob(wx.Panel):
502
502
  v.reset(v.value)
503
503
  evt.Skip()
504
504
 
505
- def OnMouseWheel(self, evt): #<wx._core.MouseEvent>
505
+ def OnMouseWheel(self, evt): # <wx._core.MouseEvent>
506
506
  self._shift_control(evt, (1 if evt.WheelRotation > 0 else -1))
507
507
  evt.Skip(False)
508
508
 
509
- def OnCtrlKeyDown(self, evt): #<wx._core.KeyEvent>
509
+ def OnCtrlKeyDown(self, evt): # <wx._core.KeyEvent>
510
510
  key = evt.GetKeyCode()
511
511
  if key == wx.WXK_LEFT: return self._shift_control(evt, -1)
512
512
  if key == wx.WXK_RIGHT: return self._shift_control(evt, 1)
@@ -521,10 +521,10 @@ class Knob(wx.Panel):
521
521
  if key == wx.WXK_DOWN: return any(_focus(c) for c in ls[i+1:])
522
522
  if key == wx.WXK_UP: return any(_focus(c) for c in ls[i-1::-1])
523
523
 
524
- def OnTextKeyUp(self, evt): #<wx._core.KeyEvent>
524
+ def OnTextKeyUp(self, evt): # <wx._core.KeyEvent>
525
525
  evt.Skip()
526
526
 
527
- def OnTextKeyDown(self, evt): #<wx._core.KeyEvent>
527
+ def OnTextKeyDown(self, evt): # <wx._core.KeyEvent>
528
528
  key = evt.GetKeyCode()
529
529
  if key == wx.WXK_DOWN: return self._shift_control(evt, -1)
530
530
  if key == wx.WXK_UP: return self._shift_control(evt, 1)
@@ -532,22 +532,22 @@ class Knob(wx.Panel):
532
532
  self.__par.reset(self.__par.value, internal_callback=None) # restore value
533
533
  evt.Skip()
534
534
 
535
- def OnTextEnter(self, evt): #<wx._core.CommandEvent>
535
+ def OnTextEnter(self, evt): # <wx._core.CommandEvent>
536
536
  evt.Skip()
537
537
  x = self._text.Value.strip()
538
538
  self.__par.reset(x)
539
539
 
540
- def OnTextExit(self, evt): #<wx._core.FocusEvent>
540
+ def OnTextExit(self, evt): # <wx._core.FocusEvent>
541
541
  x = self._text.Value.strip()
542
542
  if x != str(self.__par):
543
543
  self.__par.reset(x)
544
544
  evt.Skip()
545
545
 
546
- def OnCheck(self, evt): #<wx._core.CommandEvent>
546
+ def OnCheck(self, evt): # <wx._core.CommandEvent>
547
547
  self.__par.check = evt.IsChecked()
548
548
  evt.Skip()
549
549
 
550
- def OnPress(self, evt): #<wx._core.CommandEvent>
550
+ def OnPress(self, evt): # <wx._core.CommandEvent>
551
551
  self.__par.callback('updated', self.__par)
552
552
  evt.Skip()
553
553
 
@@ -591,11 +591,11 @@ class KnobCtrlPanel(scrolled.ScrolledPanel):
591
591
  self.Bind(wx.EVT_MOUSEWHEEL, self.OnRecalcLayout)
592
592
  self.Bind(wx.EVT_LEFT_DOWN, self.OnRecalcLayout)
593
593
 
594
- def OnRecalcLayout(self, evt): #<wx._core.ScrollWinEvent>
594
+ def OnRecalcLayout(self, evt): # <wx._core.ScrollWinEvent>
595
595
  self.Layout()
596
596
  evt.Skip()
597
597
 
598
- def OnToggleFold(self, evt): #<wx._core.MouseEvent>
598
+ def OnToggleFold(self, evt): # <wx._core.MouseEvent>
599
599
  x, y = evt.Position
600
600
  for child in self.Sizer.Children: # child <wx._core.SizerItem>
601
601
  if child.IsShown():
@@ -736,7 +736,7 @@ class KnobCtrlPanel(scrolled.ScrolledPanel):
736
736
  except AttributeError:
737
737
  p.value = v
738
738
  except Exception as e:
739
- print(f"- Failed to eval {v}:", e)
739
+ print(f"- Failed to eval {v};", e)
740
740
 
741
741
  def reset_params(self, checked_only=False):
742
742
  params = self.get_params(checked_only)
@@ -928,7 +928,7 @@ class Icon(wx.Bitmap):
928
928
  key = (key.ConvertToImage()
929
929
  .Scale(*size, wx.IMAGE_QUALITY_NEAREST)
930
930
  .ConvertToBitmap())
931
- return key #<wx.Bitmap>
931
+ return key # <wx.Bitmap>
932
932
  if size is None:
933
933
  size = (16, 16)
934
934
  if key:
@@ -1094,7 +1094,7 @@ class TextBox(wx.Control):
1094
1094
  **kwargs: keywords for wx.TextCtrl
1095
1095
  e.g., value:str
1096
1096
  """
1097
- Value = property( # textctrl value:str
1097
+ Value = property( # textctrl value:str
1098
1098
  lambda self: self._ctrl.GetValue(),
1099
1099
  lambda self, v: self._ctrl.SetValue(v))
1100
1100
 
@@ -1162,17 +1162,17 @@ class Choice(wx.Control):
1162
1162
  If the input item is not found in the choices,
1163
1163
  it will be added to the list (unless readonly)
1164
1164
  """
1165
- Value = property( # combobox value:str
1165
+ Value = property( # combobox value:str
1166
1166
  lambda self: self._ctrl.GetValue(),
1167
1167
  lambda self, v: self._ctrl.SetValue(v))
1168
1168
 
1169
1169
  value = Value # internal use only
1170
1170
 
1171
- Selection = property( # combobox selection:int or NOT_FOUND(-1)
1171
+ Selection = property( # combobox selection:int or NOT_FOUND(-1)
1172
1172
  lambda self: self._ctrl.GetSelection(),
1173
1173
  lambda self, v: self._ctrl.SetSelection(v))
1174
1174
 
1175
- Items = property( # combobox items:list
1175
+ Items = property( # combobox items:list
1176
1176
  lambda self: self._ctrl.GetItems(),
1177
1177
  lambda self, v: self._ctrl.SetItems(v))
1178
1178
 
mwx/framework.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #! python3
2
2
  """mwxlib framework.
3
3
  """
4
- __version__ = "1.7.13"
4
+ __version__ = "1.8.0"
5
5
  __author__ = "Kazuya O'moto <komoto@jeol.co.jp>"
6
6
 
7
7
  from contextlib import contextmanager
@@ -246,17 +246,17 @@ class KeyCtrlInterfaceMixin:
246
246
 
247
247
  assert state is not None, "Don't make keymap for None:state"
248
248
 
249
- self.handler.update({ # DNA<KeyCtrlInterfaceMixin>
249
+ self.handler.update({ # DNA<KeyCtrlInterfaceMixin>
250
250
  state : {
251
- event : [ keymap, self.pre_command_hook ],
251
+ event : [keymap, self.pre_command_hook],
252
252
  },
253
253
  keymap : {
254
- 'quit' : [ state, ],
255
- '* pressed' : [ state, self.post_command_hook ],
256
- '*alt pressed' : [ keymap, _Pass ],
257
- '*ctrl pressed' : [ keymap, _Pass ],
258
- '*shift pressed' : [ keymap, _Pass ],
259
- '*[LR]win pressed' : [ keymap, _Pass ],
254
+ 'quit' : [state, ],
255
+ '* pressed' : [state, self.post_command_hook],
256
+ '*alt pressed' : [keymap, _Pass],
257
+ '*ctrl pressed' : [keymap, _Pass],
258
+ '*shift pressed' : [keymap, _Pass],
259
+ '*[LR]win pressed' : [keymap, _Pass],
260
260
  },
261
261
  })
262
262
 
@@ -338,7 +338,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
338
338
  self.__key = ''
339
339
  self.__button = ''
340
340
  self.__isDragging = False
341
- self.__handler = FSM({ # DNA<CtrlInterface>
341
+ self.__handler = FSM({ # DNA<CtrlInterface>
342
342
  None : {
343
343
  },
344
344
  0 : {
@@ -350,15 +350,17 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
350
350
  _N = self._normal_handler
351
351
 
352
352
  def activate(evt):
353
- self.handler('focus_set', evt)
353
+ if self:
354
+ self.handler('focus_set', evt)
354
355
  evt.Skip()
355
356
  self.Bind(wx.EVT_SET_FOCUS, activate)
356
357
 
357
358
  def inactivate(evt):
358
- self.__key = ''
359
- self.__button = ''
360
- self.__isDragging = False
361
- self.handler('focus_kill', evt)
359
+ if self:
360
+ self.__key = ''
361
+ self.__button = ''
362
+ self.__isDragging = False
363
+ self.handler('focus_kill', evt)
362
364
  evt.Skip()
363
365
  self.Bind(wx.EVT_KILL_FOCUS, inactivate)
364
366
 
@@ -390,7 +392,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
390
392
  self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, lambda v: _N('capture_lost', v))
391
393
  self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, lambda v: _N('capture_changed', v))
392
394
 
393
- def on_hotkey_press(self, evt): #<wx._core.KeyEvent>
395
+ def on_hotkey_press(self, evt): # <wx._core.KeyEvent>
394
396
  """Called when a key is pressed."""
395
397
  # if evt.EventObject is not self:
396
398
  # evt.Skip()
@@ -400,7 +402,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
400
402
  if self.handler('{} pressed'.format(key), evt) is None:
401
403
  evt.Skip()
402
404
 
403
- def on_hotkey_down(self, evt): #<wx._core.KeyEvent>
405
+ def on_hotkey_down(self, evt): # <wx._core.KeyEvent>
404
406
  """Called when a key is pressed while dragging.
405
407
  Specifically called when the mouse is being captured.
406
408
  """
@@ -409,14 +411,14 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
409
411
  else:
410
412
  evt.Skip()
411
413
 
412
- def on_hotkey_up(self, evt): #<wx._core.KeyEvent>
414
+ def on_hotkey_up(self, evt): # <wx._core.KeyEvent>
413
415
  """Called when a key is released."""
414
416
  key = hotkey(evt)
415
417
  self.__key = ''
416
418
  if self.handler('{} released'.format(key), evt) is None:
417
419
  evt.Skip()
418
420
 
419
- def on_mousewheel(self, evt): #<wx._core.MouseEvent>
421
+ def on_mousewheel(self, evt): # <wx._core.MouseEvent>
420
422
  """Called on mouse wheel events.
421
423
  Trigger event: 'key+wheel[up|down|right|left] pressed'
422
424
  """
@@ -428,7 +430,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
428
430
  if self.handler('{} pressed'.format(evt.key), evt) is None:
429
431
  evt.Skip()
430
432
 
431
- def on_motion(self, evt): #<wx._core.MouseEvent>
433
+ def on_motion(self, evt): # <wx._core.MouseEvent>
432
434
  """Called on mouse motion events.
433
435
  Trigger event: 'key+[LMR]drag begin/motion/end'
434
436
  """
@@ -443,7 +445,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
443
445
  self.handler('motion', evt)
444
446
  evt.Skip()
445
447
 
446
- def _mouse_handler(self, event, evt): #<wx._core.MouseEvent>
448
+ def _mouse_handler(self, event, evt): # <wx._core.MouseEvent>
447
449
  """Called on mouse button events.
448
450
  Trigger event: 'key+[LMRX]button pressed/released/dblclick'
449
451
  """
@@ -467,7 +469,7 @@ class CtrlInterface(KeyCtrlInterfaceMixin):
467
469
  except AttributeError:
468
470
  pass
469
471
 
470
- def _normal_handler(self, event, evt): #<wx._core.Event>
472
+ def _normal_handler(self, event, evt): # <wx._core.Event>
471
473
  if self.handler(event, evt) is None:
472
474
  evt.Skip()
473
475
 
@@ -767,7 +769,7 @@ class Frame(wx.Frame, KeyCtrlInterfaceMixin):
767
769
  evt.Skip()
768
770
  self.Bind(wx.EVT_CHAR_HOOK, hook_char)
769
771
 
770
- self.__handler = FSM({ # DNA<Frame>
772
+ self.__handler = FSM({ # DNA<Frame>
771
773
  None : {
772
774
  },
773
775
  0 : {
@@ -821,7 +823,7 @@ class MiniFrame(wx.MiniFrame, KeyCtrlInterfaceMixin):
821
823
  ## To default close >>> self.Unbind(wx.EVT_CLOSE).
822
824
  self.Bind(wx.EVT_CLOSE, lambda v: self.Show(0))
823
825
 
824
- self.__handler = FSM({ # DNA<MiniFrame>
826
+ self.__handler = FSM({ # DNA<MiniFrame>
825
827
  None : {
826
828
  },
827
829
  0 : {
@@ -847,7 +849,7 @@ class AuiNotebook(aui.AuiNotebook):
847
849
  self.Name = name
848
850
 
849
851
  def tab_menu(evt):
850
- tabs = evt.EventObject #<AuiTabCtrl>
852
+ tabs = evt.EventObject # <AuiTabCtrl>
851
853
  page = tabs.Pages[evt.Selection] # GetPage for split notebook.
852
854
  try:
853
855
  Menu.Popup(self, page.window.menu)
@@ -906,8 +908,8 @@ class AuiNotebook(aui.AuiNotebook):
906
908
  Note:
907
909
  Argument `win` can also be page.window.Name (not page.caption).
908
910
  """
909
- for tab in self._all_tabs: #<aui.AuiTabCtrl>
910
- for page in tab.Pages: #<aui.AuiNotebookPage>
911
+ for tab in self._all_tabs: # <aui.AuiTabCtrl>
912
+ for page in tab.Pages: # <aui.AuiNotebookPage>
911
913
  ## if page.window is win or page.caption == win:
912
914
  if page.window is win or page.window.Name == win:
913
915
  return tab, page
@@ -988,7 +990,7 @@ class AuiNotebook(aui.AuiNotebook):
988
990
  self._mgr.LoadPerspective(frames)
989
991
  self._mgr.Update()
990
992
  except Exception as e:
991
- print("- Failed to load perspective.", e)
993
+ print("- Failed to load perspective;", e)
992
994
  finally:
993
995
  self.Parent.Thaw()
994
996
 
@@ -1237,21 +1239,21 @@ class ShellFrame(MiniFrame):
1237
1239
  self.indicator.Value = 7
1238
1240
  evt.Skip()
1239
1241
 
1240
- self.handler.update({ # DNA<ShellFrame>
1242
+ self.handler.update({ # DNA<ShellFrame>
1241
1243
  None : {
1242
- 'debug_begin' : [ None, self.on_debug_begin ],
1243
- 'debug_next' : [ None, self.on_debug_next ],
1244
- 'debug_end' : [ None, self.on_debug_end ],
1245
- 'trace_begin' : [ None, self.on_trace_begin ],
1246
- 'trace_hook' : [ None, self.on_trace_hook ],
1247
- 'trace_end' : [ None, self.on_trace_end ],
1248
- 'monitor_begin' : [ None, self.on_monitor_begin ],
1249
- 'monitor_end' : [ None, self.on_monitor_end ],
1250
- 'shell_new' : [ None, ],
1251
- 'book_new' : [ None, ],
1252
- 'add_log' : [ None, self.add_log ],
1253
- 'add_help' : [ None, self.add_help ],
1254
- 'title_window' : [ None, self.on_title_window ],
1244
+ 'debug_begin' : [None, self.on_debug_begin],
1245
+ 'debug_next' : [None, self.on_debug_next],
1246
+ 'debug_end' : [None, self.on_debug_end],
1247
+ 'trace_begin' : [None, self.on_trace_begin],
1248
+ 'trace_hook' : [None, self.on_trace_hook],
1249
+ 'trace_end' : [None, self.on_trace_end],
1250
+ 'monitor_begin' : [None, self.on_monitor_begin],
1251
+ 'monitor_end' : [None, self.on_monitor_end],
1252
+ 'shell_new' : [None, ],
1253
+ 'book_new' : [None, ],
1254
+ 'add_log' : [None, self.add_log],
1255
+ 'add_help' : [None, self.add_help],
1256
+ 'title_window' : [None, self.on_title_window],
1255
1257
  },
1256
1258
  0 : {
1257
1259
  '* pressed' : (0, fork_debugger),
@@ -1303,7 +1305,7 @@ class ShellFrame(MiniFrame):
1303
1305
  except FileNotFoundError:
1304
1306
  pass
1305
1307
  except Exception as e:
1306
- print("- Failed to load session:", e)
1308
+ print("- Failed to load session;", e)
1307
1309
  self.SESSION_FILE = session
1308
1310
 
1309
1311
  ## Reposition the window if it is not on the desktop.
@@ -1405,7 +1407,7 @@ class ShellFrame(MiniFrame):
1405
1407
 
1406
1408
  def OnClose(self, evt):
1407
1409
  if self.debugger.busy:
1408
- if wx.MessageBox( # Confirm closing the debugger.
1410
+ if wx.MessageBox( # Confirm closing the debugger.
1409
1411
  "The debugger is running.\n\n"
1410
1412
  "Enter [q]uit to exit before closing.\n"
1411
1413
  "Continue closing?",
@@ -1426,7 +1428,7 @@ class ShellFrame(MiniFrame):
1426
1428
  if buf.need_buffer_save:
1427
1429
  self.popup_window(book)
1428
1430
  buf.SetFocus()
1429
- if wx.MessageBox( # Confirm closing the buffer.
1431
+ if wx.MessageBox( # Confirm closing the buffer.
1430
1432
  "You are closing unsaved content.\n\n"
1431
1433
  "Changes to the content will be discarded.\n"
1432
1434
  "Continue closing?",
@@ -1488,7 +1490,7 @@ class ShellFrame(MiniFrame):
1488
1490
  self.inspector.unwatch()
1489
1491
  evt.Skip()
1490
1492
 
1491
- def OnConsolePageChanged(self, evt): #<wx._aui.AuiNotebookEvent>
1493
+ def OnConsolePageChanged(self, evt): # <wx._aui.AuiNotebookEvent>
1492
1494
  nb = evt.EventObject
1493
1495
  win = nb.CurrentPage
1494
1496
  if win is self.rootshell:
@@ -1498,7 +1500,7 @@ class ShellFrame(MiniFrame):
1498
1500
  nb.TabCtrlHeight = 0 if nb.PageCount == 1 else -1
1499
1501
  evt.Skip()
1500
1502
 
1501
- def OnConsolePageClose(self, evt): #<wx._aui.AuiNotebookEvent>
1503
+ def OnConsolePageClose(self, evt): # <wx._aui.AuiNotebookEvent>
1502
1504
  nb = evt.EventObject
1503
1505
  win = list(nb.get_pages())[evt.Selection]
1504
1506
  if win is self.rootshell:
@@ -1515,20 +1517,20 @@ class ShellFrame(MiniFrame):
1515
1517
  def About(self, evt=None):
1516
1518
  self.add_help(
1517
1519
  '\n\n'.join((
1518
- f"#<module 'mwx' from {__file__!r}>",
1520
+ f"# <module 'mwx' from {__file__!r}>",
1519
1521
  f"Author: {__author__!r}",
1520
1522
  f"Version: {__version__!s}",
1521
1523
  self.__class__.__doc__,
1522
1524
  self.rootshell.__class__.__doc__,
1523
1525
  ## <--- Thanks to <wx.py.shell> --->
1524
- f"#{wx.py!r}",
1526
+ f"# {wx.py!r}",
1525
1527
  f"Author: {wx.py.version.__author__!r}",
1526
1528
  f"Version: {wx.py.version.VERSION!s}",
1527
1529
  wx.py.shell.Shell.__doc__,
1528
1530
  textwrap.indent("*original" + wx.py.shell.HELP_TEXT, ' '*4),
1529
1531
  ## <--- Thanks are also due to <wx> --->
1530
- ## f"#{wx!r}".format(wx),
1531
- ## f"To show the credit, press [C-M-Mbutton].", # cf. wx.InfoMessageBox(None)
1532
+ # f"#{wx!r}",
1533
+ # f"To show the credit, press [C-M-Mbutton].", # cf. wx.InfoMessageBox(None)
1532
1534
  ))
1533
1535
  )
1534
1536
 
@@ -1700,7 +1702,7 @@ class ShellFrame(MiniFrame):
1700
1702
  if not self:
1701
1703
  return
1702
1704
  shell = self.debugger.interactive_shell
1703
- shell.write("#<-- Enter [n]ext to continue.\n", -1)
1705
+ shell.write("# <-- Enter [n]ext to continue.\n", -1)
1704
1706
  shell.prompt()
1705
1707
  shell.SetFocus()
1706
1708
  self.Show()
@@ -1737,7 +1739,7 @@ class ShellFrame(MiniFrame):
1737
1739
  if not self:
1738
1740
  return
1739
1741
  shell = self.debugger.interactive_shell
1740
- shell.write("#--> Debugger closed successfully.\n", -1)
1742
+ shell.write("# --> Debugger closed successfully.\n", -1)
1741
1743
  shell.prompt()
1742
1744
  self.add_log("--> End of debugger\r\n")
1743
1745
  self.linfo.unwatch()
@@ -1926,6 +1928,7 @@ class ShellFrame(MiniFrame):
1926
1928
  self.ghost.AddPage(editor, bookname)
1927
1929
  self.ghost.move_tab(editor, 0)
1928
1930
  self.handler('book_new', editor)
1931
+
1929
1932
  def _attach():
1930
1933
  editor.handler.append(self.Bookshelf.context)
1931
1934
  self.Bookshelf.build_tree(clear=0)
@@ -1964,7 +1967,7 @@ class ShellFrame(MiniFrame):
1964
1967
  def repeat_backward_search(self, evt):
1965
1968
  self.OnFindNext(evt, backward=True)
1966
1969
 
1967
- def OnFindNext(self, evt, backward=None): #<wx._core.FindDialogEvent>
1970
+ def OnFindNext(self, evt, backward=None): # <wx._core.FindDialogEvent>
1968
1971
  if not self.findData.FindString:
1969
1972
  self.message("No last search.")
1970
1973
  return
@@ -1995,7 +1998,7 @@ class ShellFrame(MiniFrame):
1995
1998
  if loc < 0:
1996
1999
  self.message("Unable to find the search text.")
1997
2000
 
1998
- def OnFindClose(self, evt): #<wx._core.FindDialogEvent>
2001
+ def OnFindClose(self, evt): # <wx._core.FindDialogEvent>
1999
2002
  self.findDlg.Destroy()
2000
2003
  self.findDlg = None
2001
2004