mwxlib 1.5.12__py3-none-any.whl → 1.6.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.
Potentially problematic release.
This version of mwxlib might be problematic. Click here for more details.
- mwx/controls.py +62 -61
- mwx/framework.py +48 -47
- mwx/graphman.py +48 -66
- mwx/matplot2.py +5 -5
- mwx/matplot2g.py +26 -19
- mwx/matplot2lg.py +6 -6
- mwx/nutshell.py +12 -15
- mwx/plugins/ffmpeg_view.py +2 -2
- mwx/plugins/fft_view.py +5 -7
- mwx/py/filling.py +1 -0
- mwx/utilus.py +6 -6
- mwx/wxmon.py +2 -2
- mwx/wxpdb.py +6 -5
- mwx/wxwil.py +2 -2
- mwx/wxwit.py +2 -2
- {mwxlib-1.5.12.dist-info → mwxlib-1.6.0.dist-info}/METADATA +1 -1
- mwxlib-1.6.0.dist-info/RECORD +28 -0
- mwxlib-1.5.12.dist-info/RECORD +0 -28
- {mwxlib-1.5.12.dist-info → mwxlib-1.6.0.dist-info}/WHEEL +0 -0
- {mwxlib-1.5.12.dist-info → mwxlib-1.6.0.dist-info}/top_level.txt +0 -0
mwx/controls.py
CHANGED
|
@@ -26,18 +26,18 @@ class Param:
|
|
|
26
26
|
"""Standard Parameter
|
|
27
27
|
|
|
28
28
|
Args:
|
|
29
|
-
name
|
|
30
|
-
range
|
|
31
|
-
value
|
|
32
|
-
fmt
|
|
33
|
-
|
|
34
|
-
handler
|
|
35
|
-
updater
|
|
36
|
-
checker
|
|
29
|
+
name: label
|
|
30
|
+
range: list of values
|
|
31
|
+
value: std_value (default is None)
|
|
32
|
+
fmt: text formatter or format:str (default is '%g')
|
|
33
|
+
`hex` specifies hexadecimal format
|
|
34
|
+
handler: called when knob is handled.
|
|
35
|
+
updater: called when button is pressed.
|
|
36
|
+
checker: called when tick turns on/off.
|
|
37
37
|
|
|
38
38
|
Attributes:
|
|
39
|
-
knobs
|
|
40
|
-
callback
|
|
39
|
+
knobs: knob list
|
|
40
|
+
callback: single state machine that handles following events
|
|
41
41
|
|
|
42
42
|
- control -> when index is changed by knobs or reset (handler)
|
|
43
43
|
- updated -> when button is pressed (updater)
|
|
@@ -224,18 +224,18 @@ class LParam(Param):
|
|
|
224
224
|
"""Linear Parameter
|
|
225
225
|
|
|
226
226
|
Args:
|
|
227
|
-
name
|
|
228
|
-
range
|
|
229
|
-
value
|
|
230
|
-
fmt
|
|
231
|
-
|
|
232
|
-
handler
|
|
233
|
-
updater
|
|
234
|
-
checker
|
|
227
|
+
name: label
|
|
228
|
+
range: range params [min:max:step]
|
|
229
|
+
value: std_value (default is None)
|
|
230
|
+
fmt: text formatter or format:str (default is '%g')
|
|
231
|
+
`hex` specifies hexadecimal format
|
|
232
|
+
handler: called when knob is handled.
|
|
233
|
+
updater: called when button is pressed.
|
|
234
|
+
checker: called when tick turns on/off.
|
|
235
235
|
|
|
236
236
|
Attributes:
|
|
237
|
-
knobs
|
|
238
|
-
callback
|
|
237
|
+
knobs: knob list
|
|
238
|
+
callback: single state machine that handles following events
|
|
239
239
|
|
|
240
240
|
- control -> when index is changed by knobs or reset (handler)
|
|
241
241
|
- updated -> when button is pressed (updater)
|
|
@@ -295,16 +295,16 @@ class Knob(wx.Panel):
|
|
|
295
295
|
[Mbutton] resets to the std. value if it exists.
|
|
296
296
|
|
|
297
297
|
Args:
|
|
298
|
-
param
|
|
299
|
-
type
|
|
300
|
-
style
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
cw
|
|
305
|
-
lw
|
|
306
|
-
tw
|
|
307
|
-
h
|
|
298
|
+
param: <Param> or <LParam> object
|
|
299
|
+
type: control type (slider[*], [hv]spin, choice, None)
|
|
300
|
+
style: style of label
|
|
301
|
+
None -> static text (default)
|
|
302
|
+
button -> label with flat button
|
|
303
|
+
checkbox -> label with checkbox
|
|
304
|
+
cw: width of control
|
|
305
|
+
lw: width of label
|
|
306
|
+
tw: width of textbox
|
|
307
|
+
h: height of widget (defaults to 22)
|
|
308
308
|
"""
|
|
309
309
|
@property
|
|
310
310
|
def param(self):
|
|
@@ -654,18 +654,19 @@ class KnobCtrlPanel(scrolled.ScrolledPanel):
|
|
|
654
654
|
"""Do layout (cf. Layout).
|
|
655
655
|
|
|
656
656
|
Args:
|
|
657
|
-
items
|
|
658
|
-
title
|
|
659
|
-
row
|
|
660
|
-
expand
|
|
661
|
-
(
|
|
662
|
-
(
|
|
663
|
-
|
|
657
|
+
items: list of Params, wx.Objects, tuple of sizing, or None
|
|
658
|
+
title: box header string (default is None - no box)
|
|
659
|
+
row: number of row to arange widgets
|
|
660
|
+
expand: expansion flag
|
|
661
|
+
- (0) fixed size
|
|
662
|
+
- (1) to expand horizontally
|
|
663
|
+
- (2) to expand horizontally and vertically
|
|
664
|
+
border: size of outline border
|
|
664
665
|
hspacing: horizontal spacing among packed objs inside the group
|
|
665
666
|
vspacing: vertical spacing among packed objs inside the group
|
|
666
|
-
show
|
|
667
|
-
visible
|
|
668
|
-
align
|
|
667
|
+
show: Fold or unfold the boxed group.
|
|
668
|
+
visible: Hide the boxed group if False.
|
|
669
|
+
align: alignment flag (wx.ALIGN_*) default is ALIGN_LEFT
|
|
669
670
|
**kwargs: extra keyword arguments given for Knob
|
|
670
671
|
"""
|
|
671
672
|
objs = [Knob(self, c, **kwargs) if isinstance(c, Param)
|
|
@@ -999,9 +1000,9 @@ class ClassicButton(wx.Button):
|
|
|
999
1000
|
"""Classic button
|
|
1000
1001
|
|
|
1001
1002
|
Args:
|
|
1002
|
-
label
|
|
1003
|
-
handler
|
|
1004
|
-
icon
|
|
1003
|
+
label: button label
|
|
1004
|
+
handler: event handler when the button is pressed
|
|
1005
|
+
icon: key:str or bitmap for button icon
|
|
1005
1006
|
**kwargs: keywords for wx.lib.platebtn.PlateButton
|
|
1006
1007
|
"""
|
|
1007
1008
|
def __init__(self, parent, label='', handler=None, icon=None, **kwargs):
|
|
@@ -1018,9 +1019,9 @@ class Button(pb.PlateButton):
|
|
|
1018
1019
|
"""Flat button
|
|
1019
1020
|
|
|
1020
1021
|
Args:
|
|
1021
|
-
label
|
|
1022
|
-
handler
|
|
1023
|
-
icon
|
|
1022
|
+
label: button label
|
|
1023
|
+
handler: event handler when the button is pressed
|
|
1024
|
+
icon: key:str or bitmap for button icon
|
|
1024
1025
|
**kwargs: keywords for wx.lib.platebtn.PlateButton
|
|
1025
1026
|
"""
|
|
1026
1027
|
def __init__(self, parent, label='', handler=None, icon=None, **kwargs):
|
|
@@ -1049,9 +1050,9 @@ class ToggleButton(wx.ToggleButton):
|
|
|
1049
1050
|
"""Togglable button
|
|
1050
1051
|
|
|
1051
1052
|
Args:
|
|
1052
|
-
label
|
|
1053
|
-
handler
|
|
1054
|
-
icon
|
|
1053
|
+
label: button label
|
|
1054
|
+
handler: event handler when the button is pressed
|
|
1055
|
+
icon: key:str or bitmap for button icon
|
|
1055
1056
|
**kwargs: keywords for wx.ToggleButton
|
|
1056
1057
|
|
|
1057
1058
|
Note:
|
|
@@ -1075,10 +1076,10 @@ class TextBox(wx.Control):
|
|
|
1075
1076
|
"""Text control
|
|
1076
1077
|
|
|
1077
1078
|
Args:
|
|
1078
|
-
label
|
|
1079
|
-
handler
|
|
1080
|
-
updater
|
|
1081
|
-
icon
|
|
1079
|
+
label: button label
|
|
1080
|
+
handler: event handler when text is entered
|
|
1081
|
+
updater: event handler when the button is pressed
|
|
1082
|
+
icon: key:str or bitmap for button icon
|
|
1082
1083
|
readonly: flag:bool (equiv. style=wx.TE_READONLY)
|
|
1083
1084
|
**kwargs: keywords for wx.TextCtrl
|
|
1084
1085
|
e.g., value:str
|
|
@@ -1140,10 +1141,10 @@ class Choice(wx.Control):
|
|
|
1140
1141
|
"""Editable Choice (ComboBox) control
|
|
1141
1142
|
|
|
1142
1143
|
Args:
|
|
1143
|
-
label
|
|
1144
|
-
handler
|
|
1145
|
-
updater
|
|
1146
|
-
icon
|
|
1144
|
+
label: button label
|
|
1145
|
+
handler: event handler when text is entered or item is selected
|
|
1146
|
+
updater: event handler when the button is pressed
|
|
1147
|
+
icon: key:str or bitmap for button icon
|
|
1147
1148
|
readonly: flag:bool (equiv. style=wx.CB_READONLY)
|
|
1148
1149
|
**kwargs: keywords for wx.ComboBox
|
|
1149
1150
|
e.g., choices:list
|
|
@@ -1230,8 +1231,8 @@ class Indicator(wx.Control):
|
|
|
1230
1231
|
"""Traffic light indicator
|
|
1231
1232
|
|
|
1232
1233
|
Args:
|
|
1233
|
-
colors
|
|
1234
|
-
value
|
|
1234
|
+
colors: list of colors (default is tricolour) cf. wx.ColourDatabase
|
|
1235
|
+
value: initial value
|
|
1235
1236
|
**kwargs: keywords for wx.Control
|
|
1236
1237
|
"""
|
|
1237
1238
|
@property
|
|
@@ -1348,8 +1349,8 @@ class Gauge(wx.Control):
|
|
|
1348
1349
|
"""Rainbow gauge
|
|
1349
1350
|
|
|
1350
1351
|
Args:
|
|
1351
|
-
range
|
|
1352
|
-
value
|
|
1352
|
+
range: maximum value
|
|
1353
|
+
value: initial value
|
|
1353
1354
|
**kwargs: keywords for wx.Control
|
|
1354
1355
|
"""
|
|
1355
1356
|
@property
|
mwx/framework.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#! python3
|
|
2
2
|
"""mwxlib framework.
|
|
3
3
|
"""
|
|
4
|
-
__version__ = "1.
|
|
4
|
+
__version__ = "1.6.0"
|
|
5
5
|
__author__ = "Kazuya O'moto <komoto@jeol.co.jp>"
|
|
6
6
|
|
|
7
7
|
from contextlib import contextmanager
|
|
@@ -28,19 +28,19 @@ def deb(target=None, loop=True, locals=None, **kwargs):
|
|
|
28
28
|
"""Dive into the process.
|
|
29
29
|
|
|
30
30
|
Args:
|
|
31
|
-
target
|
|
32
|
-
|
|
33
|
-
loop
|
|
34
|
-
locals
|
|
31
|
+
target: Object or module (default None).
|
|
32
|
+
If None, the target is set to `__main__`.
|
|
33
|
+
loop: If True, the app and the mainloop will be created.
|
|
34
|
+
locals: Additional context of the shell
|
|
35
35
|
|
|
36
36
|
**kwargs: ShellFrame and Nautilus arguments
|
|
37
37
|
|
|
38
|
-
- session
|
|
39
|
-
- standalone
|
|
40
|
-
|
|
41
|
-
- introText
|
|
42
|
-
- startupScript
|
|
43
|
-
- execStartupScript
|
|
38
|
+
- session: file name of the session. Defaults to None.
|
|
39
|
+
- standalone: True => EVT_CLOSE will close the window.
|
|
40
|
+
False => EVT_CLOSE will hide the window.
|
|
41
|
+
- introText: introductory of the shell
|
|
42
|
+
- startupScript: startup script file (default None)
|
|
43
|
+
- execStartupScript: True => Execute the startup script.
|
|
44
44
|
|
|
45
45
|
Note:
|
|
46
46
|
This will execute the startup script $(PYTHONSTARTUP).
|
|
@@ -504,7 +504,7 @@ def pack(self, items, orient=wx.HORIZONTAL, style=None, label=None):
|
|
|
504
504
|
)
|
|
505
505
|
|
|
506
506
|
Args:
|
|
507
|
-
items
|
|
507
|
+
items: wx objects (with some packing parameters)
|
|
508
508
|
|
|
509
509
|
- (obj, 1) -> sized with ratio 1 (parallel to `orient`)
|
|
510
510
|
- (obj, 1, wx.EXPAND) -> expanded with ratio 1 (perpendicular to `orient`)
|
|
@@ -513,9 +513,9 @@ def pack(self, items, orient=wx.HORIZONTAL, style=None, label=None):
|
|
|
513
513
|
- (-1,-1) -> padding space
|
|
514
514
|
- None -> phantom
|
|
515
515
|
|
|
516
|
-
orient
|
|
517
|
-
label
|
|
518
|
-
style
|
|
516
|
+
orient: HORIZONTAL or VERTICAL
|
|
517
|
+
label: StaticBox label
|
|
518
|
+
style: Sizer option (proportion, flag, border)
|
|
519
519
|
|
|
520
520
|
- flag-expansion -> EXPAND, SHAPED
|
|
521
521
|
- flag-border -> TOP, BOTTOM, LEFT, RIGHT, ALL
|
|
@@ -554,8 +554,8 @@ class Menu(wx.Menu):
|
|
|
554
554
|
"""Construct the menu.
|
|
555
555
|
|
|
556
556
|
Args:
|
|
557
|
-
|
|
558
|
-
|
|
557
|
+
owner: window object to bind handlers
|
|
558
|
+
menulist: list of MenuItem args
|
|
559
559
|
|
|
560
560
|
(id, text, hint, style, icon, ... Menu.Append arguments
|
|
561
561
|
action, updater, highlight) ... Menu Event handlers
|
|
@@ -697,8 +697,8 @@ class StatusBar(wx.StatusBar):
|
|
|
697
697
|
"""Construct the statusbar with read/write interfaces.
|
|
698
698
|
|
|
699
699
|
Attributes:
|
|
700
|
-
field
|
|
701
|
-
pane
|
|
700
|
+
field: list of field widths
|
|
701
|
+
pane: index of status text field
|
|
702
702
|
"""
|
|
703
703
|
def __init__(self, *args, **kwargs):
|
|
704
704
|
wx.StatusBar.__init__(self, *args, **kwargs)
|
|
@@ -726,9 +726,9 @@ class Frame(wx.Frame, KeyCtrlInterfaceMixin):
|
|
|
726
726
|
"""Frame extension class.
|
|
727
727
|
|
|
728
728
|
Attributes:
|
|
729
|
-
menubar
|
|
730
|
-
statusbar
|
|
731
|
-
shellframe
|
|
729
|
+
menubar: MenuBar
|
|
730
|
+
statusbar: StatusBar
|
|
731
|
+
shellframe: mini-frame of the shell
|
|
732
732
|
"""
|
|
733
733
|
handler = property(lambda self: self.__handler)
|
|
734
734
|
|
|
@@ -799,8 +799,8 @@ class MiniFrame(wx.MiniFrame, KeyCtrlInterfaceMixin):
|
|
|
799
799
|
"""MiniFrame extension class.
|
|
800
800
|
|
|
801
801
|
Attributes:
|
|
802
|
-
menubar
|
|
803
|
-
statusbar
|
|
802
|
+
menubar: MenuBar
|
|
803
|
+
statusbar: StatusBar (not shown by default)
|
|
804
804
|
"""
|
|
805
805
|
handler = property(lambda self: self.__handler)
|
|
806
806
|
|
|
@@ -1051,27 +1051,28 @@ class ShellFrame(MiniFrame):
|
|
|
1051
1051
|
"""MiniFrame of the Shell.
|
|
1052
1052
|
|
|
1053
1053
|
Args:
|
|
1054
|
-
target
|
|
1055
|
-
|
|
1056
|
-
session
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
standalone
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
**kwargs
|
|
1054
|
+
target: target object of the rootshell.
|
|
1055
|
+
If None, it will be __main__.
|
|
1056
|
+
session: file name of the session. Defaults to None.
|
|
1057
|
+
If None, no session will be created or saved.
|
|
1058
|
+
If `''`, the default session (.debrc) will be loaded.
|
|
1059
|
+
standalone: flag for the shell standalone.
|
|
1060
|
+
If True, EVT_CLOSE will close the window.
|
|
1061
|
+
Otherwise the window will be only hidden.
|
|
1062
|
+
**kwargs: Nautilus arguments
|
|
1063
1063
|
|
|
1064
1064
|
Attributes:
|
|
1065
|
-
console
|
|
1066
|
-
ghost
|
|
1067
|
-
watcher
|
|
1068
|
-
Scratch
|
|
1069
|
-
Help
|
|
1070
|
-
Log
|
|
1071
|
-
monitor
|
|
1072
|
-
inspector
|
|
1073
|
-
debugger
|
|
1074
|
-
ginfo
|
|
1065
|
+
console: Notebook of shells
|
|
1066
|
+
ghost: Notebook of editors/buffers
|
|
1067
|
+
watcher: Notebook of global/locals watcher
|
|
1068
|
+
Scratch: Book of scratch (tooltip)
|
|
1069
|
+
Help: Book of help
|
|
1070
|
+
Log: Book of logging
|
|
1071
|
+
monitor: wxmon.EventMonitor object
|
|
1072
|
+
inspector: wxwit.Inspector object
|
|
1073
|
+
debugger: wxpdb.Debugger object
|
|
1074
|
+
ginfo: globals list
|
|
1075
|
+
linfo: locals list
|
|
1075
1076
|
|
|
1076
1077
|
Built-in utility::
|
|
1077
1078
|
|
|
@@ -1611,10 +1612,10 @@ class ShellFrame(MiniFrame):
|
|
|
1611
1612
|
"""Load file @where the object is defined.
|
|
1612
1613
|
|
|
1613
1614
|
Args:
|
|
1614
|
-
filename
|
|
1615
|
-
|
|
1616
|
-
lineno
|
|
1617
|
-
show
|
|
1615
|
+
filename: target filename:str or object.
|
|
1616
|
+
It also supports <'filename:lineno'> format.
|
|
1617
|
+
lineno: Set mark to lineno on load.
|
|
1618
|
+
show: Show the page.
|
|
1618
1619
|
"""
|
|
1619
1620
|
if not isinstance(filename, str):
|
|
1620
1621
|
filename = where(filename)
|
mwx/graphman.py
CHANGED
|
@@ -43,19 +43,19 @@ class Thread:
|
|
|
43
43
|
The worker:thread runs the given target.
|
|
44
44
|
|
|
45
45
|
Attributes:
|
|
46
|
-
target
|
|
47
|
-
result
|
|
48
|
-
worker
|
|
49
|
-
owner
|
|
50
|
-
|
|
51
|
-
event
|
|
46
|
+
target: A target method of the Layer.
|
|
47
|
+
result: A variable that retains the last retval of f.
|
|
48
|
+
worker: Reference of the worker thread.
|
|
49
|
+
owner: Reference of the handler owner (was typ. f.__self__).
|
|
50
|
+
If None, the thread_event is handled by its own handler.
|
|
51
|
+
event: A common event flag to interrupt the process.
|
|
52
52
|
|
|
53
53
|
There are two flags to check the thread status:
|
|
54
54
|
|
|
55
|
-
- active
|
|
56
|
-
|
|
57
|
-
- running
|
|
58
|
-
|
|
55
|
+
- active: A flag of being kept going.
|
|
56
|
+
Check this to see the worker is running and intended being kept going.
|
|
57
|
+
- running: A flag of being running now.
|
|
58
|
+
Watch this to verify the worker is alive after it has been inactivated.
|
|
59
59
|
|
|
60
60
|
The event object can be used to suspend/resume the thread:
|
|
61
61
|
|
|
@@ -144,8 +144,8 @@ class Thread:
|
|
|
144
144
|
Confirm whether to terminate the thread.
|
|
145
145
|
|
|
146
146
|
Returns:
|
|
147
|
-
True
|
|
148
|
-
False
|
|
147
|
+
True: [OK] if terminating.
|
|
148
|
+
False: [CANCEL] otherwise.
|
|
149
149
|
|
|
150
150
|
Note:
|
|
151
151
|
Use ``check`` method where you want to pause.
|
|
@@ -515,8 +515,8 @@ class Graph(GraphPlot):
|
|
|
515
515
|
"""GraphPlot (override) to better make use for graph manager
|
|
516
516
|
|
|
517
517
|
Attributes:
|
|
518
|
-
parent
|
|
519
|
-
loader
|
|
518
|
+
parent: Parent window (usually mainframe)
|
|
519
|
+
loader: mainframe
|
|
520
520
|
"""
|
|
521
521
|
def __init__(self, parent, loader=None, **kwargs):
|
|
522
522
|
GraphPlot.__init__(self, parent, **kwargs)
|
|
@@ -554,25 +554,13 @@ class Graph(GraphPlot):
|
|
|
554
554
|
if self.infobar.IsShown():
|
|
555
555
|
self.infobar.ShowMessage(frame.annotation)
|
|
556
556
|
|
|
557
|
-
def get_markups_visible(self):
|
|
558
|
-
return self.marked.get_visible()
|
|
559
|
-
|
|
560
|
-
def set_markups_visible(self, v):
|
|
561
|
-
self.selected.set_visible(v)
|
|
562
|
-
self.marked.set_visible(v)
|
|
563
|
-
self.rected.set_visible(v)
|
|
564
|
-
self.update_art_of_mark()
|
|
565
|
-
|
|
566
|
-
def remove_markups(self):
|
|
567
|
-
del self.selector
|
|
568
|
-
del self.markers
|
|
569
|
-
del self.region
|
|
570
|
-
|
|
571
557
|
def hide_layers(self):
|
|
572
558
|
for plug in self.parent.get_all_plugs():
|
|
573
559
|
for art in plug.Arts:
|
|
574
560
|
art.set_visible(0)
|
|
575
|
-
self.
|
|
561
|
+
del self.selector
|
|
562
|
+
del self.markers
|
|
563
|
+
del self.region
|
|
576
564
|
self.draw()
|
|
577
565
|
|
|
578
566
|
|
|
@@ -580,8 +568,8 @@ class MyFileDropLoader(wx.FileDropTarget):
|
|
|
580
568
|
"""File Drop interface
|
|
581
569
|
|
|
582
570
|
Args:
|
|
583
|
-
target
|
|
584
|
-
loader
|
|
571
|
+
target: target view to drop in, e.g. frame, graph, pane, etc.
|
|
572
|
+
loader: mainframe
|
|
585
573
|
"""
|
|
586
574
|
def __init__(self, target, loader):
|
|
587
575
|
wx.FileDropTarget.__init__(self)
|
|
@@ -740,13 +728,6 @@ class Frame(mwx.Frame):
|
|
|
740
728
|
(wx.ID_PASTE, "&Paste\t(C-v)", "Paste buffer from clipboard", Icon('paste'),
|
|
741
729
|
lambda v: self.__view.read_buffer_from_clipboard()),
|
|
742
730
|
(),
|
|
743
|
-
(mwx.ID_(21), "Toggle &markers", "Show/Hide markups", wx.ITEM_CHECK, Icon('+'),
|
|
744
|
-
lambda v: self.__view.set_markups_visible(v.IsChecked()),
|
|
745
|
-
lambda v: v.Check(self.__view.get_markups_visible())),
|
|
746
|
-
|
|
747
|
-
(mwx.ID_(22), "&Remove markers", "Remove markups", Icon('-'),
|
|
748
|
-
lambda v: self.__view.remove_markups()),
|
|
749
|
-
(),
|
|
750
731
|
(mwx.ID_(23), "Hide all &layers", "Hide all layers", Icon('xr'),
|
|
751
732
|
lambda v: self.__view.hide_layers()),
|
|
752
733
|
(),
|
|
@@ -756,14 +737,14 @@ class Frame(mwx.Frame):
|
|
|
756
737
|
|
|
757
738
|
(mwx.ID_(25), "&Invert color\t(C-i)", "Invert colormap", wx.ITEM_CHECK,
|
|
758
739
|
lambda v: self.__view.invert_cmap(),
|
|
759
|
-
lambda v: v.Check(self.__view.
|
|
740
|
+
lambda v: v.Check(self.__view.get_cmapstr()[-2:] == "_r")),
|
|
760
741
|
]
|
|
761
742
|
|
|
762
743
|
def _cmenu(i, name):
|
|
763
744
|
return (mwx.ID_(30 + i), "&" + name, name, wx.ITEM_CHECK,
|
|
764
|
-
lambda v: self.__view.
|
|
765
|
-
lambda v: v.Check(self.__view.
|
|
766
|
-
or self.__view.
|
|
745
|
+
lambda v: self.__view.set_cmapstr(name),
|
|
746
|
+
lambda v: v.Check(self.__view.get_cmapstr() == name
|
|
747
|
+
or self.__view.get_cmapstr() == name+"_r"),
|
|
767
748
|
)
|
|
768
749
|
colours = [c for c in dir(cm) if c[-2:] != "_r"
|
|
769
750
|
and isinstance(getattr(cm, c), colors.LinearSegmentedColormap)]
|
|
@@ -771,8 +752,8 @@ class Frame(mwx.Frame):
|
|
|
771
752
|
self.menubar["Edit"] += [
|
|
772
753
|
(),
|
|
773
754
|
## (mwx.ID_(26), "Default Color", "gray", wx.ITEM_CHECK,
|
|
774
|
-
## lambda v: self.__view.
|
|
775
|
-
## lambda v: v.Check(self.__view.
|
|
755
|
+
## lambda v: self.__view.set_cmapstr('gray'),
|
|
756
|
+
## lambda v: v.Check(self.__view.get_cmapstr()[:4] == "gray")),
|
|
776
757
|
##
|
|
777
758
|
("Standard colors",
|
|
778
759
|
[_cmenu(i, c) for i, c in enumerate(colours) if c.islower()]),
|
|
@@ -814,8 +795,8 @@ class Frame(mwx.Frame):
|
|
|
814
795
|
})
|
|
815
796
|
|
|
816
797
|
## Add main-menu to context-menu
|
|
817
|
-
self.graph.menu += self.menubar["Edit"][2:
|
|
818
|
-
self.output.menu += self.menubar["Edit"][2:
|
|
798
|
+
self.graph.menu += self.menubar["Edit"][2:4]
|
|
799
|
+
self.output.menu += self.menubar["Edit"][2:4]
|
|
819
800
|
|
|
820
801
|
self._mgr.Bind(aui.EVT_AUI_PANE_CLOSE, self.OnPaneClose)
|
|
821
802
|
|
|
@@ -915,7 +896,7 @@ class Frame(mwx.Frame):
|
|
|
915
896
|
"""Get named pane or notebook pane.
|
|
916
897
|
|
|
917
898
|
Args:
|
|
918
|
-
name
|
|
899
|
+
name: str or plug object.
|
|
919
900
|
"""
|
|
920
901
|
plug = self.get_plug(name)
|
|
921
902
|
if plug:
|
|
@@ -1058,13 +1039,14 @@ class Frame(mwx.Frame):
|
|
|
1058
1039
|
"""Load plugin.
|
|
1059
1040
|
|
|
1060
1041
|
Args:
|
|
1061
|
-
root
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
force
|
|
1065
|
-
session
|
|
1066
|
-
|
|
1067
|
-
|
|
1042
|
+
root: Plugin <Layer> module, or name of the module.
|
|
1043
|
+
Any wx.Window object can be specified (as dummy-plug).
|
|
1044
|
+
However, do not use this mode in release versions.
|
|
1045
|
+
force: force loading even if it is already loaded
|
|
1046
|
+
session: Conditions for initializing the plug and starting session
|
|
1047
|
+
|
|
1048
|
+
show: the pane is shown after loaded
|
|
1049
|
+
dock: dock_direction (1:top, 2:right, 3:bottom, 4:left, 5:center)
|
|
1068
1050
|
floating_pos: posision of floating window
|
|
1069
1051
|
floating_size: size of floating window
|
|
1070
1052
|
|
|
@@ -1080,9 +1062,9 @@ class Frame(mwx.Frame):
|
|
|
1080
1062
|
floating_pos=floating_pos,
|
|
1081
1063
|
floating_size=floating_size)
|
|
1082
1064
|
|
|
1083
|
-
if inspect.ismodule(root):
|
|
1065
|
+
if inspect.ismodule(root): # @TODO: Change root module name
|
|
1084
1066
|
name = root.__file__
|
|
1085
|
-
## name = root.__name__
|
|
1067
|
+
## name = root.__name__
|
|
1086
1068
|
elif inspect.isclass(root):
|
|
1087
1069
|
name = inspect.getsourcefile(root)
|
|
1088
1070
|
else:
|
|
@@ -1092,13 +1074,14 @@ class Frame(mwx.Frame):
|
|
|
1092
1074
|
name = name[:-3]
|
|
1093
1075
|
|
|
1094
1076
|
if not force:
|
|
1095
|
-
## 文字列参照 (root:str) による重複ロードを避ける
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1077
|
+
## 文字列参照 (root:str) による重複ロードを避ける
|
|
1078
|
+
module = next((v for v in self.plugins.values() if root == v.__file__), None)
|
|
1079
|
+
if module:
|
|
1080
|
+
## print(f"- {name!r} is already loaded as {module.__name__!r}.")
|
|
1081
|
+
plug = module.__plug__
|
|
1082
|
+
else:
|
|
1083
|
+
plug = self.get_plug(name)
|
|
1100
1084
|
## Check if the named plug is already loaded.
|
|
1101
|
-
plug = self.get_plug(name)
|
|
1102
1085
|
if plug:
|
|
1103
1086
|
self.update_pane(name, **props)
|
|
1104
1087
|
self.show_pane(name, show)
|
|
@@ -1756,10 +1739,9 @@ class Frame(mwx.Frame):
|
|
|
1756
1739
|
|
|
1757
1740
|
for name, module in self.plugins.items():
|
|
1758
1741
|
plug = self.get_plug(name)
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
name = os.path.dirname(name)
|
|
1742
|
+
name = module.__file__ # Replace the name with full path.
|
|
1743
|
+
if hasattr(module, '__path__'): # is the module a package?
|
|
1744
|
+
name = os.path.dirname(name)
|
|
1763
1745
|
session = {}
|
|
1764
1746
|
try:
|
|
1765
1747
|
plug.save_session(session)
|
mwx/matplot2.py
CHANGED
|
@@ -71,11 +71,11 @@ class MatplotPanel(wx.Panel):
|
|
|
71
71
|
"""MPL panel for general graph
|
|
72
72
|
|
|
73
73
|
Attributes:
|
|
74
|
-
figure
|
|
75
|
-
canvas
|
|
76
|
-
toolbar
|
|
77
|
-
cursor
|
|
78
|
-
selected
|
|
74
|
+
figure: <matplotlib.figure.Figure>
|
|
75
|
+
canvas: <matplotlib.backends.backend_wxagg.FigureCanvasWxAgg>
|
|
76
|
+
toolbar: <matplotlib.backends.backend_wx.NavigationToolbar2Wx>
|
|
77
|
+
cursor: <matplotlib.widgets.Cursor>
|
|
78
|
+
selected: Selected points <matplotlib.lines.Line2D>
|
|
79
79
|
"""
|
|
80
80
|
handler = property(lambda self: self.__handler)
|
|
81
81
|
|
mwx/matplot2g.py
CHANGED
|
@@ -51,7 +51,8 @@ def _to_buffer(img):
|
|
|
51
51
|
if not isinstance(img, np.ndarray):
|
|
52
52
|
raise ValueError("targets must be arrays or images.")
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
if img.ndim < 2:
|
|
55
|
+
raise ValueError("targets must be 2d arrays.")
|
|
55
56
|
|
|
56
57
|
if img.ndim > 2:
|
|
57
58
|
return cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
|
|
@@ -70,9 +71,9 @@ def _to_image(src, cutoff=0, threshold=None, binning=1):
|
|
|
70
71
|
beta = -a * alpha
|
|
71
72
|
|
|
72
73
|
Args:
|
|
73
|
-
cutoff
|
|
74
|
-
threshold
|
|
75
|
-
binning
|
|
74
|
+
cutoff: cutoff score [%] to cut the lo/hi limits
|
|
75
|
+
threshold: limit bytes of image (to make matplotlib light)
|
|
76
|
+
binning: minimum binning number of src array
|
|
76
77
|
"""
|
|
77
78
|
if src.dtype in (np.complex64, np.complex128): # maybe fft pattern
|
|
78
79
|
src = np.log(1 + abs(src))
|
|
@@ -118,9 +119,9 @@ class AxesImagePhantom:
|
|
|
118
119
|
"""Phantom of frame facade
|
|
119
120
|
|
|
120
121
|
Args:
|
|
121
|
-
buf
|
|
122
|
-
name
|
|
123
|
-
show
|
|
122
|
+
buf: buffer
|
|
123
|
+
name: buffer name
|
|
124
|
+
show: show immediately when loaded
|
|
124
125
|
**kwargs: frame attributes
|
|
125
126
|
|
|
126
127
|
Note:
|
|
@@ -324,13 +325,19 @@ class AxesImagePhantom:
|
|
|
324
325
|
sx = slice(max(0, nx[0]), nx[1]) # nx slice
|
|
325
326
|
sy = slice(max(0, ny[1]), ny[0]) # ny slice 反転 (降順)
|
|
326
327
|
return self.__buf[sy, sx]
|
|
327
|
-
return
|
|
328
|
+
return None
|
|
328
329
|
|
|
329
330
|
@roi.setter
|
|
330
331
|
def roi(self, v):
|
|
331
|
-
self.
|
|
332
|
+
if not self.parent.region.size:
|
|
333
|
+
raise ValueError("region is not selected.")
|
|
334
|
+
self.roi[:] = v # cannot broadcast input array into different shape
|
|
332
335
|
self.update_buffer()
|
|
333
336
|
|
|
337
|
+
@property
|
|
338
|
+
def roi_or_buffer(self):
|
|
339
|
+
return self.roi if self.parent.region.size else self.buffer
|
|
340
|
+
|
|
334
341
|
@property
|
|
335
342
|
def buffer(self):
|
|
336
343
|
return self.__buf
|
|
@@ -565,7 +572,7 @@ class GraphPlot(MatplotPanel):
|
|
|
565
572
|
(),
|
|
566
573
|
(mwx.ID_(500), "&Invert Color", "Invert colormap", wx.ITEM_CHECK,
|
|
567
574
|
lambda v: self.invert_cmap(),
|
|
568
|
-
lambda v: v.Check(self.
|
|
575
|
+
lambda v: v.Check(self.get_cmapstr()[-2:] == "_r")),
|
|
569
576
|
(),
|
|
570
577
|
(wx.ID_CLOSE, "&Kill buffer\t(C-k)", "Kill buffer", _Icon(wx.ART_DELETE),
|
|
571
578
|
lambda v: self.kill_buffer(),
|
|
@@ -631,13 +638,13 @@ class GraphPlot(MatplotPanel):
|
|
|
631
638
|
"""Load a buffer with a name.
|
|
632
639
|
|
|
633
640
|
Args:
|
|
634
|
-
buf
|
|
635
|
-
name
|
|
636
|
-
pos
|
|
637
|
-
show
|
|
641
|
+
buf: buffer array.
|
|
642
|
+
name: buffer name (default to *temp*).
|
|
643
|
+
pos: Insertion position in the frame list.
|
|
644
|
+
show: Show immediately when loaded.
|
|
638
645
|
**kwargs: frame attributes.
|
|
639
646
|
"""
|
|
640
|
-
assert buf is not None, "Load buffer must be an array or
|
|
647
|
+
assert buf is not None, "Load buffer must be an array or path:str (not None)"
|
|
641
648
|
|
|
642
649
|
if isinstance(buf, str):
|
|
643
650
|
buf = Image.open(buf)
|
|
@@ -898,12 +905,12 @@ class GraphPlot(MatplotPanel):
|
|
|
898
905
|
self.handler('frame_deselected', self.frame)
|
|
899
906
|
self.on_picker_lock(evt)
|
|
900
907
|
|
|
901
|
-
def
|
|
908
|
+
def get_cmapstr(self):
|
|
902
909
|
if self.frame:
|
|
903
910
|
return self.frame.get_cmap().name
|
|
904
911
|
return ''
|
|
905
912
|
|
|
906
|
-
def
|
|
913
|
+
def set_cmapstr(self, name):
|
|
907
914
|
if self.frame:
|
|
908
915
|
self.frame.set_cmap(name)
|
|
909
916
|
self.handler('frame_cmapped', self.frame)
|
|
@@ -912,7 +919,7 @@ class GraphPlot(MatplotPanel):
|
|
|
912
919
|
def invert_cmap(self):
|
|
913
920
|
if self.frame:
|
|
914
921
|
name = self.frame.get_cmap().name
|
|
915
|
-
self.
|
|
922
|
+
self.set_cmapstr(name + "_r" if name[-2:] != "_r" else name[:-2])
|
|
916
923
|
|
|
917
924
|
def trace_point(self, x, y, type=NORMAL):
|
|
918
925
|
"""Puts (override) a message of points x and y."""
|
|
@@ -985,7 +992,7 @@ class GraphPlot(MatplotPanel):
|
|
|
985
992
|
return
|
|
986
993
|
|
|
987
994
|
name = frame.name
|
|
988
|
-
data = frame.
|
|
995
|
+
data = frame.roi_or_buffer
|
|
989
996
|
GraphPlot.clipboard_name = name
|
|
990
997
|
GraphPlot.clipboard_data = data
|
|
991
998
|
bins, vlim, img = _to_image(data, frame.cuts)
|
mwx/matplot2lg.py
CHANGED
|
@@ -217,8 +217,8 @@ class Histogram(LinePlot):
|
|
|
217
217
|
常に整数ビット画像となるので,高速なビンづめ法で計算する
|
|
218
218
|
|
|
219
219
|
Attributes:
|
|
220
|
-
__graphs
|
|
221
|
-
__frame
|
|
220
|
+
__graphs: list of attached graph <matplot2g.GraphPlot>
|
|
221
|
+
__frame: reference to the current frame
|
|
222
222
|
"""
|
|
223
223
|
def __init__(self, *args, **kwargs):
|
|
224
224
|
LinePlot.__init__(self, *args, **kwargs)
|
|
@@ -387,10 +387,10 @@ class LineProfile(LinePlot):
|
|
|
387
387
|
"""LinePlot panel for line profile (Multi-graph : Single-frame)
|
|
388
388
|
|
|
389
389
|
Attributes:
|
|
390
|
-
__graphs
|
|
391
|
-
__frame
|
|
392
|
-
__logicp
|
|
393
|
-
__linewidth
|
|
390
|
+
__graphs: list of attached graph <matplot2g.GraphPlot>
|
|
391
|
+
__frame: reference to the current frame
|
|
392
|
+
__logicp: line axis in logical unit
|
|
393
|
+
__linewidth: line width to integrate [pixel]
|
|
394
394
|
"""
|
|
395
395
|
def __init__(self, *args, **kwargs):
|
|
396
396
|
LinePlot.__init__(self, *args, **kwargs)
|
mwx/nutshell.py
CHANGED
|
@@ -1821,11 +1821,6 @@ class EditorInterface(AutoCompInterfaceMixin, CtrlInterface):
|
|
|
1821
1821
|
|
|
1822
1822
|
class Buffer(EditorInterface, EditWindow):
|
|
1823
1823
|
"""Python code buffer.
|
|
1824
|
-
|
|
1825
|
-
Attributes:
|
|
1826
|
-
name : buffer-name (basename)
|
|
1827
|
-
filename : buffer-file-name
|
|
1828
|
-
code : code object
|
|
1829
1824
|
"""
|
|
1830
1825
|
@property
|
|
1831
1826
|
def message(self):
|
|
@@ -1833,12 +1828,14 @@ class Buffer(EditorInterface, EditWindow):
|
|
|
1833
1828
|
|
|
1834
1829
|
@property
|
|
1835
1830
|
def name(self):
|
|
1831
|
+
"""buffer-name (basename)."""
|
|
1836
1832
|
return os.path.basename(self.__filename or '')
|
|
1837
1833
|
|
|
1838
1834
|
Name = name # page.window.Name for save/loadPerspective
|
|
1839
1835
|
|
|
1840
1836
|
@property
|
|
1841
1837
|
def filename(self):
|
|
1838
|
+
"""buffer-file-name."""
|
|
1842
1839
|
return self.__filename
|
|
1843
1840
|
|
|
1844
1841
|
def update_filestamp(self, fn):
|
|
@@ -1863,10 +1860,10 @@ class Buffer(EditorInterface, EditWindow):
|
|
|
1863
1860
|
"""Timestamp delta (for checking external mod).
|
|
1864
1861
|
|
|
1865
1862
|
Returns:
|
|
1866
|
-
None
|
|
1867
|
-
= 0
|
|
1868
|
-
> 0
|
|
1869
|
-
< 0
|
|
1863
|
+
None: no file
|
|
1864
|
+
= 0: a file (even if not found)
|
|
1865
|
+
> 0: a file edited externally
|
|
1866
|
+
< 0: a url file
|
|
1870
1867
|
"""
|
|
1871
1868
|
try:
|
|
1872
1869
|
return self.__path.stat().st_mtime - self.__mtime
|
|
@@ -2269,11 +2266,11 @@ class EditorBook(AuiNotebook, CtrlInterface):
|
|
|
2269
2266
|
"""Python code editor.
|
|
2270
2267
|
|
|
2271
2268
|
Args:
|
|
2272
|
-
name
|
|
2269
|
+
name: Window.Name (e.g. 'Scratch')
|
|
2273
2270
|
|
|
2274
2271
|
Attributes:
|
|
2275
|
-
default_name
|
|
2276
|
-
default_buffer
|
|
2272
|
+
default_name: default buffer name (e.g. '*scratch*')
|
|
2273
|
+
default_buffer: default buffer
|
|
2277
2274
|
"""
|
|
2278
2275
|
@property
|
|
2279
2276
|
def message(self):
|
|
@@ -2358,7 +2355,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
|
|
|
2358
2355
|
"""Set multiple properties at once to the buffer(s).
|
|
2359
2356
|
|
|
2360
2357
|
Args:
|
|
2361
|
-
buf
|
|
2358
|
+
buf: a buffer to apply (if None, applies to all buffers).
|
|
2362
2359
|
**kwargs: default style.
|
|
2363
2360
|
|
|
2364
2361
|
ReadOnly = False
|
|
@@ -3460,12 +3457,12 @@ class Nautilus(EditorInterface, Shell):
|
|
|
3460
3457
|
|
|
3461
3458
|
@property
|
|
3462
3459
|
def bolc(self):
|
|
3463
|
-
"Beginning of command-line."
|
|
3460
|
+
"""Beginning of command-line."""
|
|
3464
3461
|
return self.promptPosEnd
|
|
3465
3462
|
|
|
3466
3463
|
@property
|
|
3467
3464
|
def eolc(self):
|
|
3468
|
-
"End of command-line."
|
|
3465
|
+
"""End of command-line."""
|
|
3469
3466
|
return self.TextLength
|
|
3470
3467
|
|
|
3471
3468
|
@property
|
mwx/plugins/ffmpeg_view.py
CHANGED
|
@@ -216,7 +216,7 @@ class Plugin(Layer):
|
|
|
216
216
|
tc.value = round(self.mc.Tell()) / 1000
|
|
217
217
|
|
|
218
218
|
def set_crop(self):
|
|
219
|
-
"""Set crop area (W:H:Left:Top) to
|
|
219
|
+
"""Set crop area (W:H:Left:Top) to ROI."""
|
|
220
220
|
if not self._path:
|
|
221
221
|
return
|
|
222
222
|
frame = self.graph.frame
|
|
@@ -232,7 +232,7 @@ class Plugin(Layer):
|
|
|
232
232
|
self.message("Failed to evaluate crop text.")
|
|
233
233
|
|
|
234
234
|
def get_crop(self):
|
|
235
|
-
"""Get crop area (W:H:Left:Top) from
|
|
235
|
+
"""Get crop area (W:H:Left:Top) from ROI."""
|
|
236
236
|
if not self._path:
|
|
237
237
|
return
|
|
238
238
|
crop = ''
|
mwx/plugins/fft_view.py
CHANGED
|
@@ -51,7 +51,7 @@ class Plugin(Layer):
|
|
|
51
51
|
frame = self.graph.frame
|
|
52
52
|
if frame:
|
|
53
53
|
self.message("FFT execution...")
|
|
54
|
-
src = fftcrop(frame.
|
|
54
|
+
src = fftcrop(frame.roi_or_buffer)
|
|
55
55
|
h, w = src.shape
|
|
56
56
|
|
|
57
57
|
dst = fftshift(fft2(src))
|
|
@@ -60,8 +60,7 @@ class Plugin(Layer):
|
|
|
60
60
|
u = 1 / w
|
|
61
61
|
if self.pchk.Value:
|
|
62
62
|
u /= frame.unit
|
|
63
|
-
self.output.load(dst, "*fft of {}*"
|
|
64
|
-
localunit=u)
|
|
63
|
+
self.output.load(dst, f"*fft of {frame.name}*", localunit=u)
|
|
65
64
|
self.message("\b done")
|
|
66
65
|
|
|
67
66
|
def newifft(self):
|
|
@@ -69,18 +68,17 @@ class Plugin(Layer):
|
|
|
69
68
|
frame = self.output.frame
|
|
70
69
|
if frame:
|
|
71
70
|
self.message("iFFT execution...")
|
|
72
|
-
src = frame.
|
|
71
|
+
src = frame.buffer # Don't crop fft region
|
|
73
72
|
h, w = src.shape
|
|
74
73
|
|
|
75
74
|
if self.ftor.check:
|
|
76
75
|
y, x = np.ogrid[-h/2:h/2, -w/2:w/2]
|
|
77
76
|
mask = np.hypot(y, x) > w / self.ftor.value
|
|
78
|
-
src = src.copy()
|
|
77
|
+
src = src.copy() # apply mask to the copy
|
|
79
78
|
src[mask] = 0
|
|
80
79
|
|
|
81
80
|
dst = ifft2(ifftshift(src))
|
|
82
81
|
|
|
83
82
|
self.message("\b Loading image...")
|
|
84
|
-
self.graph.load(dst.real, "*ifft of {}*"
|
|
85
|
-
localunit=1/w/frame.unit)
|
|
83
|
+
self.graph.load(dst.real, f"*ifft of {frame.name}*", localunit=1/w/frame.unit)
|
|
86
84
|
self.message("\b done")
|
mwx/py/filling.py
CHANGED
|
@@ -212,6 +212,7 @@ class FillingTree(wx.TreeCtrl):
|
|
|
212
212
|
def display(self, rooting=True):
|
|
213
213
|
"""Display the current item data.
|
|
214
214
|
Called when an item/branch needs to be updated.
|
|
215
|
+
|
|
215
216
|
Args:
|
|
216
217
|
rooting: True if the current item must be updated
|
|
217
218
|
False otherwise to reduce overheads.
|
mwx/utilus.py
CHANGED
|
@@ -980,12 +980,12 @@ def get_fullargspec(f):
|
|
|
980
980
|
information from the docstring. If it fails, it returns None.
|
|
981
981
|
|
|
982
982
|
Returns:
|
|
983
|
-
args
|
|
984
|
-
varargs
|
|
985
|
-
varkwargs
|
|
986
|
-
defaults
|
|
987
|
-
kwonlyargs
|
|
988
|
-
kwonlydefaults
|
|
983
|
+
args: a list of the parameter names.
|
|
984
|
+
varargs: the name of the * parameter or None.
|
|
985
|
+
varkwargs: the name of the ** parameter or None.
|
|
986
|
+
defaults: a dict mapping names from args to defaults.
|
|
987
|
+
kwonlyargs: a list of keyword-only parameter names.
|
|
988
|
+
kwonlydefaults: a dict mapping names from kwonlyargs to defaults.
|
|
989
989
|
|
|
990
990
|
Note:
|
|
991
991
|
`self` parameter is not reported for bound methods.
|
mwx/wxmon.py
CHANGED
|
@@ -16,8 +16,8 @@ class EventMonitor(wx.ListCtrl, ListCtrlAutoWidthMixin, CtrlInterface):
|
|
|
16
16
|
"""Event monitor
|
|
17
17
|
|
|
18
18
|
Attributes:
|
|
19
|
-
parent
|
|
20
|
-
target
|
|
19
|
+
parent: shellframe
|
|
20
|
+
target: widget to monitor
|
|
21
21
|
"""
|
|
22
22
|
def __init__(self, parent, **kwargs):
|
|
23
23
|
wx.ListCtrl.__init__(self, parent,
|
mwx/wxpdb.py
CHANGED
|
@@ -30,14 +30,15 @@ class Debugger(Pdb):
|
|
|
30
30
|
"""Graphical debugger with extended Pdb
|
|
31
31
|
|
|
32
32
|
Args:
|
|
33
|
-
parent
|
|
34
|
-
stdin
|
|
35
|
-
stdout
|
|
33
|
+
parent: shellframe
|
|
34
|
+
stdin: shell.interp.stdin
|
|
35
|
+
stdout: shell.interp.stdout
|
|
36
36
|
|
|
37
37
|
Attributes:
|
|
38
|
-
editor
|
|
38
|
+
editor: Notebook to show the stack frames
|
|
39
|
+
|
|
40
|
+
Key bindings::
|
|
39
41
|
|
|
40
|
-
Key bindings:
|
|
41
42
|
C-g : quit
|
|
42
43
|
C-q : quit
|
|
43
44
|
C-n : next (step-over)
|
mwx/wxwil.py
CHANGED
|
@@ -20,8 +20,8 @@ class LocalsWatcher(wx.ListCtrl, ListCtrlAutoWidthMixin, CtrlInterface):
|
|
|
20
20
|
"""Locals info watcher
|
|
21
21
|
|
|
22
22
|
Attributes:
|
|
23
|
-
parent
|
|
24
|
-
target
|
|
23
|
+
parent: shellframe
|
|
24
|
+
target: locals:dict to watch
|
|
25
25
|
"""
|
|
26
26
|
def __init__(self, parent, **kwargs):
|
|
27
27
|
wx.ListCtrl.__init__(self, parent,
|
mwx/wxwit.py
CHANGED
|
@@ -15,8 +15,8 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
15
15
|
"""Widget inspection tool
|
|
16
16
|
|
|
17
17
|
Attributes:
|
|
18
|
-
parent
|
|
19
|
-
target
|
|
18
|
+
parent: shellframe
|
|
19
|
+
target: widget to inspect
|
|
20
20
|
"""
|
|
21
21
|
def __init__(self, parent, *args, **kwargs):
|
|
22
22
|
it.InspectionTree.__init__(self, parent, *args, **kwargs)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
mwx/__init__.py,sha256=pS7ZG8QKRypiFFiaWAq_opBB6I_1viZ0zUMk2TbjzE0,667
|
|
2
|
+
mwx/bookshelf.py,sha256=yW17nMNPXKHM7LLXLpr9DaRhyFHz_OBAZ_DsuEK2QzA,8387
|
|
3
|
+
mwx/controls.py,sha256=B9f_A0ev3SPf75K-LIZCusMLeDGYz1O3cMml7IOrDrM,49870
|
|
4
|
+
mwx/framework.py,sha256=xVov9uy6gheXOphdorERXQ-Pivj2I3Ir3N0t829gkKM,77463
|
|
5
|
+
mwx/graphman.py,sha256=Cmg0mwIGTAHtdXArFxJXPZC7yPGvSvAZexw7zgp02L8,69099
|
|
6
|
+
mwx/images.py,sha256=Kkfy9QI_hMtwShSjUS4-ZpC_EkVuah_XhpBOR4wAKkM,49792
|
|
7
|
+
mwx/matplot2.py,sha256=cjdN12RENqWFw1v9QyO05XQc6dK3Pn_ltdC3OfmhGfg,32995
|
|
8
|
+
mwx/matplot2g.py,sha256=0gxjl7UKx8QGRI2thpniA7dQu9fpHGG0mvl7Ml2exrc,65474
|
|
9
|
+
mwx/matplot2lg.py,sha256=jE-LYPEVaEapQN8L-eviRyEx4Lw-8GyLGzZotrIZShU,27413
|
|
10
|
+
mwx/mgplt.py,sha256=SVUJ0ls4gC9xulbWxK2qqmDxf0uBCflvwoPkxoF5s3M,5566
|
|
11
|
+
mwx/nutshell.py,sha256=Sa5PKSiXxT74Mj_vE9fUinxkfm5Xtg1MGGUjwbRH-yY,147552
|
|
12
|
+
mwx/testsuite.py,sha256=0Q_n_XOOsZ8lsLWUkuO8QW00hts9wEQfnUKMpf0BAyU,1235
|
|
13
|
+
mwx/utilus.py,sha256=JOYBTHoo_GmYykX72PgiPzgD2M-1pcOR8gMBLc2bnck,39016
|
|
14
|
+
mwx/wxmon.py,sha256=aS6lSjDm0PxIhfyBPtg-wIP0v-R3g2K5a3k2mclWSrQ,12798
|
|
15
|
+
mwx/wxpdb.py,sha256=ehRawAnqQberUeDN9j_-drWYQzu23w5UeQyto4nj53g,18812
|
|
16
|
+
mwx/wxwil.py,sha256=_74m3jEUu3ktjHKHWEEK34ck439u9A0PhDDxFVTA0_Y,5404
|
|
17
|
+
mwx/wxwit.py,sha256=W7wP9loxw0dAdk5-NWMIHt19Og1h-3vFzz-8BPicHB4,7348
|
|
18
|
+
mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
|
|
19
|
+
mwx/plugins/ffmpeg_view.py,sha256=TZX4hoB4z8vJ2yO_aXHOkc7kHxRASVLchY5TRkqPbrU,10982
|
|
20
|
+
mwx/plugins/fft_view.py,sha256=k_Ow7osBR-nXyiqAPFdEsd7B3Q-87By3INntJMZxahc,2742
|
|
21
|
+
mwx/plugins/frame_listview.py,sha256=yd2NCgspqGfTNhj1wxuW8r1zapIm7vNzVX2iytk8CDM,10618
|
|
22
|
+
mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
|
|
23
|
+
mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
|
|
24
|
+
mwx/py/filling.py,sha256=vWCJoHd_oyXOeXTHtXGY7wfNQeNAZhV3GZu4xlc8GDY,16867
|
|
25
|
+
mwxlib-1.6.0.dist-info/METADATA,sha256=ZLDHrIHbEvcB3Ee4lLQxk6ZnDFkL5aXN3gT5QdkcyBc,7381
|
|
26
|
+
mwxlib-1.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
27
|
+
mwxlib-1.6.0.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
|
|
28
|
+
mwxlib-1.6.0.dist-info/RECORD,,
|
mwxlib-1.5.12.dist-info/RECORD
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
mwx/__init__.py,sha256=pS7ZG8QKRypiFFiaWAq_opBB6I_1viZ0zUMk2TbjzE0,667
|
|
2
|
-
mwx/bookshelf.py,sha256=yW17nMNPXKHM7LLXLpr9DaRhyFHz_OBAZ_DsuEK2QzA,8387
|
|
3
|
-
mwx/controls.py,sha256=Mpzpp2eWyS_X7RjxTJay1-Fldchk-x-rUBpUhHSG-5w,49924
|
|
4
|
-
mwx/framework.py,sha256=XFzMG6Jah0hROirGBGjmZHsv12986GV2-bjT4sl0D5w,77574
|
|
5
|
-
mwx/graphman.py,sha256=AjXd8Hyb-lCEkPuCz1C19aEi6dnt3DW8N0b89cVYITU,69905
|
|
6
|
-
mwx/images.py,sha256=Kkfy9QI_hMtwShSjUS4-ZpC_EkVuah_XhpBOR4wAKkM,49792
|
|
7
|
-
mwx/matplot2.py,sha256=5Z-m9KXtSXpzBQs3swqPbfl_mfVdDoPaWKqpiepfau8,33019
|
|
8
|
-
mwx/matplot2g.py,sha256=hLBYWjXPc2jgtKPTQWCdieIegQvS4jjUUaedV4qDLoE,65255
|
|
9
|
-
mwx/matplot2lg.py,sha256=fpxOX18vonUTpA_nAr-wBhQ_2YNsL_nfxdCDliuP1sU,27430
|
|
10
|
-
mwx/mgplt.py,sha256=SVUJ0ls4gC9xulbWxK2qqmDxf0uBCflvwoPkxoF5s3M,5566
|
|
11
|
-
mwx/nutshell.py,sha256=CX-NK3kOEi3JHhjKh39R2_m1po1SvMxraaDk2xt6q-Y,147617
|
|
12
|
-
mwx/testsuite.py,sha256=0Q_n_XOOsZ8lsLWUkuO8QW00hts9wEQfnUKMpf0BAyU,1235
|
|
13
|
-
mwx/utilus.py,sha256=dsJ_wsEjqm-B75It-lwVCAiCPyPXZerngm_6TCUEmRU,39028
|
|
14
|
-
mwx/wxmon.py,sha256=NIksW_CZv7Kw4dod8tWVwakO4iJuvE8hJSAcjkYfLaE,12800
|
|
15
|
-
mwx/wxpdb.py,sha256=kKzEGivjoZ9zGcB3ttYsAym4putyilmXZXj-5CGaivQ,18813
|
|
16
|
-
mwx/wxwil.py,sha256=hhyB1lPrF9ixeObxCOKQv0Theu-B-kpJg_yVU3EGSNg,5406
|
|
17
|
-
mwx/wxwit.py,sha256=mTH92bWw1F3ycaq4EoxVD_4hIxy2fbKZZbQg3f1ZD1Y,7350
|
|
18
|
-
mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
|
|
19
|
-
mwx/plugins/ffmpeg_view.py,sha256=GT3mAP7cvAgkzHyA0Em_FP8wiWS-dRekUyBgaXIBQCc,10982
|
|
20
|
-
mwx/plugins/fft_view.py,sha256=Hsho8y-42hG3htQAJ9ct1347NHJ8qPvN4snq_1jYOxw,2793
|
|
21
|
-
mwx/plugins/frame_listview.py,sha256=yd2NCgspqGfTNhj1wxuW8r1zapIm7vNzVX2iytk8CDM,10618
|
|
22
|
-
mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
|
|
23
|
-
mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
|
|
24
|
-
mwx/py/filling.py,sha256=fumUG1F5M9TL-Dfqni4G85uk7TmvnUunTbdcPDV0vfo,16857
|
|
25
|
-
mwxlib-1.5.12.dist-info/METADATA,sha256=h77mRadmYbztrngMyjSysNdiM9fGxuQcbIN9zCpRpcY,7382
|
|
26
|
-
mwxlib-1.5.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
27
|
-
mwxlib-1.5.12.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
|
|
28
|
-
mwxlib-1.5.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|