Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ec14df9

Browse files
authored
Merge pull request #11081 from DietmarSchwertberger/wx-help-tool
ENH: Help tool for Wx backends
2 parents 99cb3dd + 11c225e commit ec14df9

File tree

2 files changed

+61
-9
lines changed

2 files changed

+61
-9
lines changed

lib/matplotlib/backend_tools.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,25 +1039,25 @@ def _format_tool_keymap(self, name):
10391039
keymaps = self.toolmanager.get_tool_keymap(name)
10401040
return ", ".join(self.format_shortcut(keymap) for keymap in keymaps)
10411041

1042-
def _get_help_text(self):
1042+
def _get_help_entries(self):
10431043
entries = []
10441044
for name, tool in sorted(self.toolmanager.tools.items()):
10451045
if not tool.description:
10461046
continue
1047-
entries.append(
1048-
"{}: {}\n\t{}".format(
1049-
name, self._format_tool_keymap(name), tool.description))
1047+
entries.append((name, self._format_tool_keymap(name),
1048+
tool.description))
1049+
return entries
1050+
1051+
def _get_help_text(self):
1052+
entries = self._get_help_entries()
1053+
entries = ["{}: {}\n\t{}".format(*entry) for entry in entries]
10501054
return "\n".join(entries)
10511055

10521056
def _get_help_html(self):
10531057
fmt = "<tr><td>{}</td><td>{}</td><td>{}</td></tr>"
10541058
rows = [fmt.format(
10551059
"<b>Action</b>", "<b>Shortcuts</b>", "<b>Description</b>")]
1056-
for name, tool in sorted(self.toolmanager.tools.items()):
1057-
if not tool.description:
1058-
continue
1059-
rows.append(fmt.format(
1060-
name, self._format_tool_keymap(name), tool.description))
1060+
rows += [fmt.format(*row) for row in self._get_help_entries()]
10611061
return ("<style>td {padding: 0px 4px}</style>"
10621062
"<table><thead>" + rows[0] + "</thead>"
10631063
"<tbody>".join(rows[1:]) + "</tbody></table>")

lib/matplotlib/backends/backend_wx.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,6 +1958,57 @@ def remove_rubberband(self, dc=None):
19581958
self._rect = None
19591959

19601960

1961+
class _HelpDialog(wx.Dialog):
1962+
_instance = None # a reference to an open dialog singleton
1963+
headers = [("Action", "Shortcuts", "Description")]
1964+
widths = [100, 140, 300]
1965+
1966+
def __init__(self, parent, help_entries):
1967+
wx.Dialog.__init__(self, parent, title="Help",
1968+
style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
1969+
1970+
sizer = wx.BoxSizer(wx.VERTICAL)
1971+
grid_sizer = wx.FlexGridSizer(0, 3, 8, 6)
1972+
# create and add the entries
1973+
bold = self.GetFont().MakeBold()
1974+
for r, row in enumerate(self.headers + help_entries):
1975+
for (col, width) in zip(row, self.widths):
1976+
label = wx.StaticText(self, label=col)
1977+
if r == 0:
1978+
label.SetFont(bold)
1979+
label.Wrap(width)
1980+
grid_sizer.Add(label, 0, 0, 0)
1981+
# finalize layout, create button
1982+
sizer.Add(grid_sizer, 0, wx.ALL, 6)
1983+
OK = wx.Button(self, wx.ID_OK)
1984+
sizer.Add(OK, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 8)
1985+
self.SetSizer(sizer)
1986+
sizer.Fit(self)
1987+
self.Layout()
1988+
self.Bind(wx.EVT_CLOSE, self.OnClose)
1989+
OK.Bind(wx.EVT_BUTTON, self.OnClose)
1990+
1991+
def OnClose(self, evt):
1992+
_HelpDialog._instance = None # remove global reference
1993+
self.DestroyLater()
1994+
evt.Skip()
1995+
1996+
@classmethod
1997+
def show(cls, parent, help_entries):
1998+
# if no dialog is shown, create one; otherwise just re-raise it
1999+
if cls._instance:
2000+
cls._instance.Raise()
2001+
return
2002+
cls._instance = cls(parent, help_entries)
2003+
cls._instance.Show()
2004+
2005+
2006+
class HelpWx(backend_tools.ToolHelpBase):
2007+
def trigger(self, *args):
2008+
_HelpDialog.show(self.figure.canvas.GetTopLevelParent(),
2009+
self._get_help_entries())
2010+
2011+
19612012
class ToolCopyToClipboardWx(backend_tools.ToolCopyToClipboardBase):
19622013
def trigger(self, *args, **kwargs):
19632014
if not self.canvas._isDrawn:
@@ -1974,6 +2025,7 @@ def trigger(self, *args, **kwargs):
19742025
backend_tools.ToolConfigureSubplots = ConfigureSubplotsWx
19752026
backend_tools.ToolSetCursor = SetCursorWx
19762027
backend_tools.ToolRubberband = RubberbandWx
2028+
backend_tools.ToolHelp = HelpWx
19772029
backend_tools.ToolCopyToClipboard = ToolCopyToClipboardWx
19782030

19792031

0 commit comments

Comments
 (0)