mwxlib 0.95.2__py3-none-any.whl → 0.95.4__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.

Potentially problematic release.


This version of mwxlib might be problematic. Click here for more details.

mwx/__init__.py CHANGED
@@ -13,7 +13,7 @@ from .controls import Button, ToggleButton, TextCtrl, Choice, Gauge, Indicator
13
13
 
14
14
  ## Plugman
15
15
  ## from . import graphman
16
- ## from .graphman import Frame as GraphFrame, Layer, Thread, Graph
16
+ ## from .graphman import Frame as ViewFrame, Layer, Thread, Graph
17
17
 
18
18
  ## Matplot
19
19
  ## from .matplot2 import MatplotPanel
mwx/framework.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #! python3
2
2
  """mwxlib framework.
3
3
  """
4
- __version__ = "0.95.2"
4
+ __version__ = "0.95.4"
5
5
  __author__ = "Kazuya O'moto <komoto@jeol.co.jp>"
6
6
 
7
7
  from functools import wraps, partial
@@ -1147,7 +1147,7 @@ class ShellFrame(MiniFrame):
1147
1147
  self.console.Bind(aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.OnConsolePageChanged)
1148
1148
 
1149
1149
  self.ghost = AuiNotebook(self, size=(600,400))
1150
- self.ghost.AddPage(self.Scratch, "Scratch")
1150
+ self.ghost.AddPage(self.Scratch, "Scratch", bitmap=Icon('ghost'))
1151
1151
  self.ghost.AddPage(self.Log, "Log")
1152
1152
  self.ghost.AddPage(self.Help, "Help")
1153
1153
  self.ghost.Name = "ghost"
@@ -1163,7 +1163,7 @@ class ShellFrame(MiniFrame):
1163
1163
  self.watcher = AuiNotebook(self, size=(300,200))
1164
1164
  self.watcher.AddPage(self.ginfo, "globals")
1165
1165
  self.watcher.AddPage(self.linfo, "locals")
1166
- self.watcher.AddPage(self.monitor, "Monitor", bitmap=Icon('ghost'))
1166
+ self.watcher.AddPage(self.monitor, "Monitor", bitmap=Icon('tv'))
1167
1167
  self.watcher.AddPage(self.inspector, "Inspector", bitmap=Icon('inspect'))
1168
1168
  self.watcher.Name = "watcher"
1169
1169
 
@@ -1273,14 +1273,17 @@ class ShellFrame(MiniFrame):
1273
1273
  self.set_hookable(self.Log)
1274
1274
 
1275
1275
  @self.Scratch.define_key('C-j')
1276
- def eval_line():
1276
+ def eval_line(evt):
1277
1277
  shell = self.current_shell
1278
1278
  self.Scratch.buffer.py_eval_line(shell.globals, shell.locals)
1279
+ evt.Skip(False)
1279
1280
 
1280
1281
  @self.Scratch.define_key('C-S-j')
1281
- def eval_buffer():
1282
+ @self.Scratch.define_key('M-j')
1283
+ def eval_buffer(evt):
1282
1284
  shell = self.current_shell
1283
1285
  self.Scratch.buffer.py_exec_region(shell.globals, shell.locals)
1286
+ evt.Skip(False)
1284
1287
 
1285
1288
  ## Session
1286
1289
  self.SESSION_FILE = get_rootpath(".debrc")
mwx/images.py CHANGED
@@ -104,21 +104,6 @@ camera = PyEmbeddedImage(
104
104
  b'vhvJZFLusf54PC5lMYHI5XKPqa/P6EP3+XyCry4T8E/2BHDoEIdv6fmH92/9Vvz31/gHd9iU'
105
105
  b'VZFEDKoAAAAASUVORK5CYII=')
106
106
 
107
- #----------------------------------------------------------------------
108
- card = PyEmbeddedImage(
109
- b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlw'
110
- b'SFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoA'
111
- b'AAHcSURBVDiNhZM7a5RBGIWf+W4r0SiGKJgIq7ExsfEChiBCLBQECwsbC3vxH9iLIBbqv9Ay'
112
- b'CIKFPyAsFkG8rWA0RmOCQTeb3f32S+Y9Fns3H/GFmWbmPDNzzjtOEmemZ+aAq4Dx/wqAt2Y2'
113
- b'u1Car0QAkq5cujgTBwEECJxaW6UBpXCIgPKnxanlldU5YDbqXz458pzJsa84BoWt1dZc/nkc'
114
- b'768lS99XLgB0ATJjcuwzM9cfErp1ALIsI02bpGmTZrOJOIRKj3mz6rvgLsBkOBxhPEpa/UDa'
115
- b'aFCvV6lt/mDjzzeyrMb4sVsEQTjwtN4NBDhHtbLIr+VX1Gp1Go0MFwyzd3icg4WIfftH2w+x'
116
- b'HIAJSVQqm2ScIxraZuQAJJERxyKJIQnWkDze5wEkFr4cBT0CtzO7Tr1bOoL3vQ1Rx2OT8aJ0'
117
- b'ipevp3BOqD8JdXwCb45iMccDUwtiviNwba0GICDU1269PjAhE6adJ/eDHGDWizHo6Y3V9Q2S'
118
- b'OKAQh62R9MaeJKKQhKz93sTbvyYK5I3QbXP78uE877p171kVKScFM2PLQs7euL8rwD+9ieXE'
119
- b'qC1vnJiY4GP5fe5faF3UUSwW8SZo/1wnidPnpx8g7giG2LUL2hxoAncXSvNP/gJOse/PFpzV'
120
- b'hQAAAABJRU5ErkJggg==')
121
-
122
107
  #----------------------------------------------------------------------
123
108
  clip = PyEmbeddedImage(
124
109
  b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0'
@@ -150,26 +135,6 @@ clock = PyEmbeddedImage(
150
135
  b'vqHBv3R3pmbxzgwz4Z+EaTXtwqIogrzjxIJ4QVVV1UyihxgjFv3/K09Bu/lEkBgg5rLZH+fT'
151
136
  b'5dvfn7iFAAAAAElFTkSuQmCC')
152
137
 
153
- #----------------------------------------------------------------------
154
- code = PyEmbeddedImage(
155
- b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
156
- b'RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAL2SURBVDjLVdNNaBx1GMfx78zO'
157
- b'7Lu765qQWIPteqiH+IKCjTmkClIVPHi0pVDSXBT0sGhLUOvJl0OL4AuVBC+CLXpoD1KqweBB'
158
- b'WFFajOChSTU20q2h6e66nX2Znfm/ejCJ8Qff6+fy8DjWWgCmz9f3AR/cV0pPhtIQSoM0hoEy'
159
- b'AdAFmoAG2kAL+Bz41mNzRqmJh0fzk689MczO9YUphsIU25EeExK6sebPZo9v/ugfAKo7gZFC'
160
- b'0gGgflvjOw6eAwkPUr7LvSmXhOviJ+CRsQy7irnyp5fW33e3AC1loWQilIGucAgkdDoRQQRB'
161
- b'BK0B3OppAF4/e53JSo4HhvzhbSAfBiP7v5pHHZ2mH2kqJ2cZ+uxjwqBPNzb0IstAgAEc3eGn'
162
- b'a22WrgfrLoA4Ol2eXfrimZw3QDoeYWyRePh0GZ0/RdTu0o8NfWnAwkYn5sPF1Y4WYtoVR44c'
163
- b'NGH01+iwXzT1FvVj76CApUNVxI2ApNNn77EZUrXviZSDsaB9jRKicv7lxxZdM4jm433jabO0'
164
- b'Asdn6eTLOC7oQpnfX3gFfrmKnBjnnrmTuFJiLag4RotYA7gmHLyY+LoWmcounBNvYm81cLEk'
165
- b'gyaVuXdRe+7GuVijPlPFSfpIren1Q6WE6AC42YsXvjy9e//EtdXbyHyKyqszYOH+946TKHiE'
166
- b'bcOVuXMEUwfI+NDqxahYbCy89awFcAEWhvaKj6YO48WQaDTAcXGbDcIA1k6cQuaKYCHruTTa'
167
- b'A7SI17eu501Vzw4Bbz84OU6veobvlgW5rubHTy6Q9i2+B8nEvxWysFoPUUJsbANaiKeA535e'
168
- b'XqM98OjFFqktsXQQyqC0wVhLuVjkpadHudkK0UI0/gOkfPT5Jx/KvHH48f/9gLYgtUUowMLp'
169
- b'hXWyPnR7IVrK1k5g7WYz4MziMqV8hlIhTSmXophLcUc2SSrpkvJcDk2NkPKg8XcXLeWNbcAo'
170
- b'da52eWWsdnllN3DXZnduVkwnfT+d9inkMpQKWX69Wv8N+GEL+AdfSH+n2ppttwAAAABJRU5E'
171
- b'rkJggg==')
172
-
173
138
  #----------------------------------------------------------------------
174
139
  colour = PyEmbeddedImage(
175
140
  b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
@@ -244,41 +209,6 @@ core = PyEmbeddedImage(
244
209
  b'AQgglIQEcp6GhgaDtrY22JmgAAT5HRQOnz9/BqsB5Y2dO3eCNHOAYh8ggOAGgJyKbhgygAUa'
245
210
  b'VDMjTBwggMAGTJ48+flvIJCWlpYjlH2RNYMAQIABANLKHICUilYLAAAAAElFTkSuQmCC')
246
211
 
247
- #----------------------------------------------------------------------
248
- edit = PyEmbeddedImage(
249
- b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
250
- b'RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH8SURBVDjLjZPfS1NhGMdXf0VE'
251
- b'QhDUhdCN4X0IYT8ghIJQM0KoC4vushZddLELKyRhQQkSFIKEGEkUCI2oxVhepG5zi1xbc0u3'
252
- b'cDs7Z+ec/ezT+x62scmmHvhwDrzP93Pe57znsQE2cR0SdAm6d+GwYL/M1LBVBV35fF4plUqV'
253
- b'crlMK8Q6TqdzYrukJuiW4Vwuh67rdbLZLJlMhmQyaUnigVlC05f4+dbB0tQplp92DsnwPimQ'
254
- b'BaZpUigUrLtE0zQURSGVSqHF37DhGkVZeQdagszKLJ7HvZtNAhmuIQWGYaCqKps/ZkivPqCw'
255
- b'Ps/Gp0cYvjnKUTe+F9fMJoFoo96zfJZ9K+sLpP33qRhujPANtr7dJPhqmO/PBxX3+PljTYLt'
256
- b'qImPpH13qZge9LUrmLEB1FU7sZd9jJw5MljNthYk/KLnxdFqeAjzdz9Z/z3Ck2fRE36qx9pa'
257
- b'kAjME1y4Lbb9GTMyTD52GUXsZO3ZadTkL6umrSD4ZZrAezvLH54Q915EjwywtXSH8FQf+t+I'
258
- b'9V12FLwe6wE1SmjyAi77Qb6Kt3rGe9H+hKzwrgLH9eMUPE4K3gm8jpPMjRwlHfNTLBbr7Cjo'
259
- b'7znA2NVOXA/PsThzi2wyah1pI+0E/9rNQQsqMtM4CyfE36fLhb2ERa0mB7BR0CElexjnGnL0'
260
- b'O2T2PyFunSz8jchwAAAAAElFTkSuQmCC')
261
-
262
- #----------------------------------------------------------------------
263
- erase = PyEmbeddedImage(
264
- b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
265
- b'RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMOSURBVHjaYjx66tobAT4e9n//'
266
- b'/zPAwD8g88ePnwy/f/1mePPuI9Of3//ef/78xYOZheUKExMTw+1bNxkaqjPAagECiIWdjY1b'
267
- b'U02GgwEJ/Aca9uPXP4a/fxgY7t5/zMDDzcl198Hz/U+evQxlZ2c/gKwWIICYGLAARkZGBqBF'
268
- b'DIxM/xiYmJkYJCRFGBysdUXUVeV3srKwhPxDOJYBIIBYsBkAkmcEYjY2Fob7Dx4zvHr5koGL'
269
- b'm4Phz++/bJ8+flj979+/IqB0P0gtQABhdQHYFUxAVwBNERURYvj1j5Hh5YuPDHfuPmZg42Bj'
270
- b'+PLlQxtMHUAAYXUByHYmoDf+/P7DoGugwfDrBzAwP/9kePf8OQMrKxvDqRNH4WoBAgjhgn9/'
271
- b'GRiun2JguHmW4R+Q+wfojz+srAxf7t1jYOoqYmDdu46BlYsb6C1WBmZmZrg2gABCuODJLQaG'
272
- b'4zsYGL5+YPj/6B7DV5sQhv8PbzIITqpiYN+7g4FT7hjDb20zBiYxaWAgI1wLEEAIAySVGRjk'
273
- b'1RkY9qxjYL45n4H7zFEGpjt3GFgPH2T4LaXE8D6nkYFZRJyBlfEf1JMQABBALDD2DyYg0y6E'
274
- b'gfHbTwbWFTMY2K9uZmB49Z7ht5YBw7u6qQy/FTUYmL98YQAmJnA0wwBAALHAAuEPMAgYWZkZ'
275
- b'WJg4GBifvmJgePaageHzDwaGp28ZGIGxwAjyO1AfMyMsoiEAIICY/sFC/vcvBrbFkxnYOysY'
276
- b'GF5/ZPhrZMHwj1uYgfXsDQZhH1cG9m1AF3FyQW1HuAAggOCxwHJkBwPr1A4GhhdvGH5FJjN8'
277
- b'XriT4WvvLIb/fPwMzK9eMQgU5zIwvXrB8B8YjcgAIIAQXjBzYmB08mP4L6PC8CulEJwffvv6'
278
- b'MnxYvZGBq6yA4Wt6FsM/XqBhwLSB7AWAAGKBpWtuQT4GhvbpYClWIP77F5SpgLSLHcOv8+eA'
279
- b'XvzPwP31FwMLCytKIAIEEMvHT5++tnVO/sPExALNB/+APmQCav4HNuA/NGf8B3P+AzUzMXz5'
280
- b'BEyWUAAQYABehgBuH0rveAAAAABJRU5ErkJggg==')
281
-
282
212
  #----------------------------------------------------------------------
283
213
  exit = PyEmbeddedImage(
284
214
  b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
@@ -437,20 +367,6 @@ load = PyEmbeddedImage(
437
367
  b'n78wcHADSx8ulhsMHEDMzAiK1m+4qiaAAEINij9/GcAuAcUWKHYYwRmFC1g1tQmIcGd8/f33'
438
368
  b'ye/ff7WAEr/AsQjLoWAnQipdWFAABBgAhGIfg4WD5MwAAAAASUVORK5CYII=')
439
369
 
440
- #----------------------------------------------------------------------
441
- memo = PyEmbeddedImage(
442
- b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACEElEQVR4AY2TA5BbUQBFs5mO'
443
- b'2kFt2xrVtm2bw9pGWNu2ubZt24y+cZtX//X9xjnPKhK9UbNOZzhrOaM5iaoO+z9Z9msvVWXR'
444
- b'6s9YC4sKIMsyqoqjoyOuXb/KntWeWmJcrFYrBKQEAtsoK8yWMpSZS1FaVozi0iIUlRSgoCgP'
445
- b'3t5eCAsLw6M9G/gXzRvIjxqqI+80d6j3V0BCBBaruVLJh4/vkR74DW/at0b28ePwGDYYdzo4'
446
- b'fFIIKNqG0LBQUt0Kx2XtTrzTTEPyzYPwnz8bHm3b4mFdlaQQMAxNJP/VxARSk6QIF3zQTkOB'
447
- b'2xFIrmvhOq4VHtVR4WZ3h3UKAcuxCAsPU5T84ekVvDs7BfmuhyF+X4iY871xfX1D6LcvBWEV'
448
- b'Ap7nQCQMS2pCISPeF+81dtjlIETHRYgwdMf1DY1QlBkFwlQQCKKA8PDwXyU/v443pyYi12k/'
449
- b'gRGs6YJrGxojIyEIgFy5QJIkIgHPcXh9fDRyHPcRGP6nO+P21lbISY+EyWwCgMoFZC5ERETg'
450
- b'7X0NnC7Mgei8Ep7HOuDaxhb4/O4pomOiYbZWLfibA5sn4u6ugbi9sSGe7h2A0sIM0AwFG2WD'
451
- b'1WapXsBSJsyf2BOanbORmxQIXuDB/exYhkhAUbaaBGUQWOpvn4ii+FfC2iUsx5CmKgX2lWg1'
452
- b'mUyoTQhcVFwIrf6slbC1Xc6Kg/xLGML+APJWxIkWy8dWAAAAAElFTkSuQmCC')
453
-
454
370
  #----------------------------------------------------------------------
455
371
  paste = PyEmbeddedImage(
456
372
  b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwY'
@@ -578,6 +494,23 @@ saveall = PyEmbeddedImage(
578
494
  b'lD3/b0B6tPf2byempRFO127T095JQ6wJFBTcJk7VhCRjYItUT/mgrgxOvWtrPtLdEG8gYdcT'
579
495
  b'6gDRGjERWsosrS2TKwbMP78rcth3/gX/0SEvLZFG1QAAAABJRU5ErkJggg==')
580
496
 
497
+ #----------------------------------------------------------------------
498
+ script = PyEmbeddedImage(
499
+ b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
500
+ b'RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ+SURBVBgZBcExbFRlAADg7//f'
501
+ b'u7teC3elQEoMgeDkYDQ6oMQQTYyGxMHZuDA6Ypw0cWI20cHJUdl0cJLIiomR6OACGhUCpqGW'
502
+ b'tlzbu/b97/3v9/tCKQVc/e7RRXz+7OrSpUXbW7S9tu8ddv0M+3iCjF1s42v8WAP0XffKi2eO'
503
+ b'Xfro9dMAYJ766SL1092jfDa17DfZgycHfvh7/hau1QB9161PhgE8epoNQlAHqprRIDo3iqoY'
504
+ b'DSpeOjv2zHRl7atfNj6LALltJys1Xc9+CmYtTxtmR8yO2D7kv4MMPr7x0KULK54/NThdA+S2'
505
+ b'XTs+jOYN86MsxqBGVRErKkEV6BHynp//2fXbw9lGDZBTWp+OK7PDzqIpYiyqSMxBFakUVYVS'
506
+ b'2dxrfHHrrz1crQG6lM6vTwZmR0UHhSoHsSBTKeoS9YU8yLrUXfj+w9d2IkBOzfkz05F5KkKk'
507
+ b'CkFERACEQil0TSOnJkMNV67fHNdVHI4GUcpZVFAUZAEExEibs4P5osMeROiadHoUiIEeCgFR'
508
+ b'EAoRBOMB2weNrkmbNz+9UiBCTs1yrVdHqhgIkRL0EOj7QGG5jrZ2D+XUbADEy9dunOpSun7x'
509
+ b'uXMe7xUPNrOd/WyeyKUIoRgOGS8xWWZ7b6FLaROgzim9iXd+vXvf7mHtoCnaXDRtkLpel3t9'
510
+ b'KdamUx+8fcbj7YWc0hZAndv25XffeGH8yfuvAoBcaHOROhS+vLlhecD+wUJu222AOrft/cdP'
511
+ b'Zr65ddfqsbHVyZLVlZHpysjx5aHRMBrV0XuX141qtnb25bb9F6Duu+7b23funb195955nMRJ'
512
+ b'nMAJTJeGg8HS0sBkZWx1suz3Px79iZ8A/gd7ijssEaZF9QAAAABJRU5ErkJggg==')
513
+
581
514
  #----------------------------------------------------------------------
582
515
  tag = PyEmbeddedImage(
583
516
  b'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0'
mwx/nutshell.py CHANGED
@@ -48,8 +48,8 @@ py_where_re = r'> +([^*?"<>|\r\n]+?):([0-9]+)'
48
48
  py_break_re = r'at ([^*?"<>|\r\n]+?):([0-9]+)'
49
49
 
50
50
 
51
- def skip(v):
52
- v.Skip()
51
+ def skip(evt):
52
+ evt.Skip()
53
53
 
54
54
 
55
55
  def can_edit(f):
@@ -1082,9 +1082,6 @@ class EditorInterface(CtrlInterface):
1082
1082
  """Goto char position with selection."""
1083
1083
  if pos is None or pos < 0:
1084
1084
  return
1085
- ## if pos < 0:
1086
- ## pos += self.TextLength + 1 # Counts end-of-buffer (+1:\0)
1087
- ## return
1088
1085
  org = self.cpos
1089
1086
  if org == pos:
1090
1087
  return
@@ -1095,7 +1092,7 @@ class EditorInterface(CtrlInterface):
1095
1092
 
1096
1093
  if interactive:
1097
1094
  ## Update the caret position/status manually.
1098
- ## To update caret status, shake L/R w/o modifier #TODO: better idea?
1095
+ ## To update caret status, shake L/R w/o modifier
1099
1096
  ## Don't do this if selection is active.
1100
1097
  vk = wx.UIActionSimulator()
1101
1098
  modkeys = [k for k in (wx.WXK_CONTROL, wx.WXK_ALT, wx.WXK_SHIFT)
@@ -1296,7 +1293,7 @@ class EditorInterface(CtrlInterface):
1296
1293
  @can_edit
1297
1294
  def kill_line(self):
1298
1295
  p = self.eol
1299
- if p == self.cpos:
1296
+ if p == self.cpos: # caret at end of line
1300
1297
  if self.get_char(p) == '\r': p += 1
1301
1298
  if self.get_char(p) == '\n': p += 1
1302
1299
  self.Replace(self.cpos, p, '')
@@ -1304,11 +1301,7 @@ class EditorInterface(CtrlInterface):
1304
1301
  @can_edit
1305
1302
  def backward_kill_line(self):
1306
1303
  p = self.bol
1307
- text, lp = self.CurLine
1308
- if text[:lp] == sys.ps2: # caret at the prompt head
1309
- p -= len(sys.ps2)
1310
- lp -= len(sys.ps2)
1311
- if text[:lp] == '' and p: # caret at the beginning of the line
1304
+ if p == self.cpos > 0: # caret at beginning of line
1312
1305
  if self.get_char(p-1) == '\n': p -= 1
1313
1306
  if self.get_char(p-1) == '\r': p -= 1
1314
1307
  self.Replace(p, self.cpos, '')
@@ -2221,8 +2214,8 @@ class Nautilus(Shell, EditorInterface):
2221
2214
 
2222
2215
  C-up : [0] retrieve previous history
2223
2216
  C-down : [0] retrieve next history
2224
- C-j, C-S-j : [0] call tooltip of eval (for the word selected or focused)
2225
- C-h, C-S-h : [0] call tooltip of help (for the func selected or focused)
2217
+ C-j(J), M-j : [0] call tooltip of eval (for the word selected or focused)
2218
+ C-h(H), M-h : [0] call tooltip of help (for the func selected or focused)
2226
2219
  TAB : [1] history-comp-mode
2227
2220
  M-p : [1] retrieve previous history in comp-mode
2228
2221
  M-n : [1] retrieve next history in comp-mode
@@ -2440,6 +2433,8 @@ class Nautilus(Shell, EditorInterface):
2440
2433
  'escape pressed' : (-1, self.on_enter_escmap),
2441
2434
  'space pressed' : (0, self.OnSpace),
2442
2435
  '*backspace pressed' : (0, self.OnBackspace),
2436
+ 'C-backspace pressed' : (0, _F(self.backward_kill_word)),
2437
+ 'S-backspace pressed' : (0, _F(self.backward_kill_line)),
2443
2438
  'enter pressed' : (0, self.OnEnter),
2444
2439
  'C-enter pressed' : (0, _F(self.insertLineBreak)),
2445
2440
  'C-S-enter pressed' : (0, _F(self.insertLineBreak)),
@@ -2458,8 +2453,10 @@ class Nautilus(Shell, EditorInterface):
2458
2453
  'S-insert pressed' : (0, _F(self.Paste)),
2459
2454
  'C-S-insert pressed' : (0, _F(self.Paste, rectangle=1)),
2460
2455
  'C-j pressed' : (0, self.eval_line),
2456
+ 'M-j pressed' : (0, self.exec_region),
2461
2457
  'C-S-j pressed' : (0, self.exec_region),
2462
2458
  'C-h pressed' : (0, self.call_helpTip),
2459
+ 'M-h pressed' : (0, self.call_helpTip2),
2463
2460
  'C-S-h pressed' : (0, self.call_helpTip2),
2464
2461
  '. pressed' : (2, self.OnEnterDot),
2465
2462
  'tab pressed' : (1, self.call_history_comp),
@@ -2517,8 +2514,10 @@ class Nautilus(Shell, EditorInterface):
2517
2514
  '*backspace released' : (2, self.call_word_autocomp),
2518
2515
  'C-S-backspace pressed' : (2, ),
2519
2516
  'C-j pressed' : (2, self.eval_line),
2517
+ 'M-j pressed' : (2, self.exec_region),
2520
2518
  'C-S-j pressed' : (2, self.exec_region),
2521
2519
  'C-h pressed' : (2, self.call_helpTip),
2520
+ 'M-h pressed' : (2, self.call_helpTip2),
2522
2521
  'C-S-h pressed' : (2, self.call_helpTip2),
2523
2522
  '*alt pressed' : (2, ),
2524
2523
  '*ctrl pressed' : (2, ),
@@ -2548,8 +2547,10 @@ class Nautilus(Shell, EditorInterface):
2548
2547
  '*backspace released' : (3, self.call_apropos_autocomp),
2549
2548
  'C-S-backspace pressed' : (3, ),
2550
2549
  'C-j pressed' : (3, self.eval_line),
2550
+ 'M-j pressed' : (3, self.exec_region),
2551
2551
  'C-S-j pressed' : (3, self.exec_region),
2552
2552
  'C-h pressed' : (3, self.call_helpTip),
2553
+ 'M-h pressed' : (3, self.call_helpTip2),
2553
2554
  'C-S-h pressed' : (3, self.call_helpTip2),
2554
2555
  '*alt pressed' : (3, ),
2555
2556
  '*ctrl pressed' : (3, ),
@@ -2579,8 +2580,10 @@ class Nautilus(Shell, EditorInterface):
2579
2580
  '*backspace released' : (4, self.call_text_autocomp),
2580
2581
  'C-S-backspace pressed' : (4, ),
2581
2582
  'C-j pressed' : (4, self.eval_line),
2583
+ 'M-j pressed' : (4, self.exec_region),
2582
2584
  'C-S-j pressed' : (4, self.exec_region),
2583
2585
  'C-h pressed' : (4, self.call_helpTip),
2586
+ 'M-h pressed' : (4, self.call_helpTip2),
2584
2587
  'C-S-h pressed' : (4, self.call_helpTip2),
2585
2588
  '*alt pressed' : (4, ),
2586
2589
  '*ctrl pressed' : (4, ),
@@ -2692,6 +2695,30 @@ class Nautilus(Shell, EditorInterface):
2692
2695
  return
2693
2696
  evt.Skip()
2694
2697
 
2698
+ @can_edit
2699
+ def backward_kill_line(self):
2700
+ p = max(self.bol, self.bolc) # for debugger mode: bol <= bolc
2701
+ text, lp = self.CurLine
2702
+ if text[:lp] == sys.ps2:
2703
+ self.Replace(p - lp, p, '') # eats ps2:prompt
2704
+ return
2705
+ if p == self.cpos > 0: # caret at beginning of line
2706
+ if self.get_char(p-1) == '\n': p -= 1
2707
+ if self.get_char(p-1) == '\r': p -= 1
2708
+ self.Replace(p, self.cpos, '')
2709
+
2710
+ @can_edit
2711
+ def backward_kill_word(self):
2712
+ p = self.cpos
2713
+ text, lp = self.CurLine
2714
+ if text[:lp] == sys.ps2:
2715
+ self.goto_char(p - lp) # skips ps2:prompt
2716
+ self.WordLeft()
2717
+ q = max(self.bol, self.bolc) # for debugger mode: bol <= bolc
2718
+ if self.cpos < q:
2719
+ self.goto_char(q) # Don't skip back prompt
2720
+ self.Replace(self.cpos, p, '')
2721
+
2695
2722
  def OnEnter(self, evt):
2696
2723
  """Called when enter pressed."""
2697
2724
  if not self.CanEdit():
mwx/plugins/fft_view.py CHANGED
@@ -40,7 +40,7 @@ class Plugin(Layer):
40
40
  self.parent.define_key('C-S-f', None)
41
41
  return Layer.Destroy(self)
42
42
 
43
- def newfft(self, evt):
43
+ def newfft(self):
44
44
  """New FFT of graph to output."""
45
45
  frame = self.graph.frame
46
46
  if frame:
@@ -58,7 +58,7 @@ class Plugin(Layer):
58
58
  localunit=u)
59
59
  self.message("\b done")
60
60
 
61
- def newifft(self, evt):
61
+ def newifft(self):
62
62
  """New inverse FFT of output to graph."""
63
63
  frame = self.output.frame
64
64
  if frame:
mwx/wxwit.py CHANGED
@@ -157,19 +157,10 @@ class Inspector(it.InspectionTree, CtrlInterface):
157
157
  self.SetFocus()
158
158
  obj = self.target
159
159
  Menu.Popup(self, [
160
- (1, "&Dive into the shell", Icon('core'),
161
- lambda v: dive(obj),
162
- lambda v: v.Enable(obj is not None)),
163
-
164
- (2, "&Watch the event", Icon('ghost'),
165
- lambda v: watch(obj),
166
- lambda v: v.Enable(obj is not None)),
167
-
168
- (),
169
160
  (8, "&Filling View", miniIcon('ShowFilling'),
170
161
  lambda v: filling(obj),
171
162
  lambda v: v.Enable(obj is not None)),
172
-
163
+
173
164
  (10, "&Inspection Tool", Icon('inspect'),
174
165
  lambda v: watchit(obj),
175
166
  lambda v: v.Enable(obj is not None)),
@@ -180,6 +171,14 @@ class Inspector(it.InspectionTree, CtrlInterface):
180
171
 
181
172
  (12, "Refresh\tf5", miniIcon('Refresh'),
182
173
  lambda v: self.BuildTree(obj)),
174
+ (),
175
+ (2, "&Watch event", Icon('tv'),
176
+ lambda v: watch(obj),
177
+ lambda v: v.Enable(obj is not None)),
178
+
179
+ (1, "&Dive into {!r}".format(obj), Icon('core'),
180
+ lambda v: dive(obj),
181
+ lambda v: v.Enable(obj is not None)),
183
182
  ])
184
183
 
185
184
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mwxlib
3
- Version: 0.95.2
3
+ Version: 0.95.4
4
4
  Summary: A wrapper of matplotlib and wxPython (phoenix)
5
5
  Home-page: https://github.com/komoto48g/mwxlib
6
6
  Author: Kazuya O'moto
@@ -1,28 +1,28 @@
1
- mwx/__init__.py,sha256=TbTijMLO3dsX4wargOd3z-z5wjMK8fcogBBr_mgCnSs,815
1
+ mwx/__init__.py,sha256=SNSLQc0IGuE6LDT5mzaAxXRgcH_k6cRVS3gXzFQqdZM,814
2
2
  mwx/bookshelf.py,sha256=DAhMQk3_J4rdE50adBMFu5wNz3WdMh_zzJ37O9ncceo,5103
3
3
  mwx/controls.py,sha256=JBMUbDgHFf4Dx0PofCdnoQExBnGjxiAeSGkdS_0Qgo4,47673
4
- mwx/framework.py,sha256=dVj9vz-jGDsVUDa3H4urXRWwe6v6I2unrc7fx6rQEJg,75531
4
+ mwx/framework.py,sha256=UMmTHqx85SQPI84alNKx0AMQx9amB4qxj6sypFtIXMs,75655
5
5
  mwx/graphman.py,sha256=PacQF1Of6oaqw26uFoXaAK9IrwggGRwoJe9uCP5JZ28,70373
6
- mwx/images.py,sha256=mrnUYH12I3XLVSZcEXlpVltX0XMxufbl2yRvDIQJZqc,49957
6
+ mwx/images.py,sha256=gyvqW4TLWdJMKmsaWiPiV_PuHJM1GbHgeELERLwGzg8,45291
7
7
  mwx/matplot2.py,sha256=nA7RLW1tf5kQfrenFnrAF900DbrpOUldc3SGaJgJKi0,32794
8
8
  mwx/matplot2g.py,sha256=faKpuBdp4H_g-HKfRdxV17AwHtXcfRi2F0myE3cjM04,65393
9
9
  mwx/matplot2lg.py,sha256=gI_L_GofQrg5TIgZFMgYu8-7IRoe6VCRG3Ub35ChSpQ,27177
10
10
  mwx/mgplt.py,sha256=ITzxA97yDwr_35BUk5OqnyskSuKVDbpf2AQCKY1jHTI,5671
11
- mwx/nutshell.py,sha256=DS_Q63RmOpINAmkZkDCYzVS35iGZNSv254gLrSUm9yo,135846
11
+ mwx/nutshell.py,sha256=ENxoeqSfVaogh2dz43fk3MQaCePKyoz1YzucwiCojxI,137070
12
12
  mwx/utilus.py,sha256=Uwj6vbNUUztwOswPG75xtsT2y_PZqh3QiJraxmA9iT0,37401
13
13
  mwx/wxmon.py,sha256=6es-jVz9Ht7vZnG7VBJcaNYLHY0PnZtij60SXcZRTeY,12727
14
14
  mwx/wxpdb.py,sha256=lLowkkAgMhPFHAfklD7wZHq0qbSMjRxnBFtSajmVgME,19133
15
15
  mwx/wxwil.py,sha256=zP1-5Fpi1wpDQU977229zIH6QRuSkkyfuAlNKWjGoGg,5588
16
- mwx/wxwit.py,sha256=7jR7WPu0-ZxTA6F_SQc7ZjlR9mNO21GFfriTZqV6Ly0,7344
16
+ mwx/wxwit.py,sha256=yU6XeCCWRBP7CLmpphjT072PfXAL30DNaxoChDX2p0I,7322
17
17
  mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
18
18
  mwx/plugins/ffmpeg_view.py,sha256=vUYNybIJsF1JGkDzjBgDyBQvDh8e1oKHlEMY5Fwc8L4,9399
19
- mwx/plugins/fft_view.py,sha256=evj2kCe6N10JQczW8IajgLVrUWOihQaHQ2xiBzAsAl4,2675
19
+ mwx/plugins/fft_view.py,sha256=HcnBr-y_yFdSfASPRzMLANta4SwSDShd65QWnCU3XhM,2665
20
20
  mwx/plugins/frame_listview.py,sha256=fY27r_8ttf2hi-T0CPgY_LGbH9xKkQmSIqgaALMyVCM,10112
21
21
  mwx/plugins/line_profile.py,sha256=--9NIc3x5EfRB3L59JvD7rzENQHyiYfu7wWJo6AuMkA,820
22
22
  mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
23
23
  mwx/py/filling.py,sha256=KaHooM32hrGGgqw75Cbt8lAvACwC6RXadob9LGgNnEc,16806
24
- mwxlib-0.95.2.dist-info/LICENSE,sha256=PGtRKCaTkmUDlBQwpptJAxJtdqxIUtAmdBsaT9nUVkA,1091
25
- mwxlib-0.95.2.dist-info/METADATA,sha256=MlRm2EglFJRORLtyTPSH85NX07m1oL2TY3JtPoHqQ10,1925
26
- mwxlib-0.95.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
27
- mwxlib-0.95.2.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
28
- mwxlib-0.95.2.dist-info/RECORD,,
24
+ mwxlib-0.95.4.dist-info/LICENSE,sha256=PGtRKCaTkmUDlBQwpptJAxJtdqxIUtAmdBsaT9nUVkA,1091
25
+ mwxlib-0.95.4.dist-info/METADATA,sha256=jkWKBPw5LwejFe36g5StdBMWOdRLw3DQ7-wY3ZMlATA,1925
26
+ mwxlib-0.95.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
27
+ mwxlib-0.95.4.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
28
+ mwxlib-0.95.4.dist-info/RECORD,,