Skip to content

Commit da5c7e1

Browse files
committed
hack to fix toolbar issue #96
1 parent 68e9c9c commit da5c7e1

4 files changed

Lines changed: 144 additions & 1 deletion

File tree

cpa/boxplot.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,41 @@ def __init__(self, parent, size=(600,600), **kwargs):
344344
self.save_settings = configpanel.save_settings
345345
self.load_settings = configpanel.load_settings
346346

347+
# Hack: See http://stackoverflow.com/questions/6124419/matplotlib-navtoolbar-doesnt-realize-in-wx-2-9-mac-os-x
348+
def SetToolBar(self, toolbar):
349+
from matplotlib.backends.backend_wx import _load_bitmap
350+
toolbar.Hide()
351+
tb = self.CreateToolBar((wx.TB_HORIZONTAL|wx.TB_TEXT))
352+
353+
_NTB2_HOME = wx.NewId()
354+
_NTB2_BACK = wx.NewId()
355+
_NTB2_FORWARD = wx.NewId()
356+
_NTB2_PAN = wx.NewId()
357+
_NTB2_ZOOM = wx.NewId()
358+
_NTB2_SAVE = wx.NewId()
359+
_NTB2_SUBPLOT = wx.NewId()
360+
tb.AddSimpleTool(_NTB2_HOME, _load_bitmap('home.png'), 'Home', 'Reset original view')
361+
tb.AddSimpleTool(_NTB2_BACK, _load_bitmap('back.png'), 'Back', 'Back navigation view')
362+
tb.AddSimpleTool(_NTB2_FORWARD, _load_bitmap('forward.png'), 'Forward', 'Forward navigation view')
363+
364+
tb.AddCheckTool(_NTB2_PAN, _load_bitmap('move.png'), shortHelp='Pan', longHelp='Pan with left, zoom with right')
365+
tb.AddCheckTool(_NTB2_ZOOM, _load_bitmap('zoom_to_rect.png'), shortHelp='Zoom', longHelp='Zoom to rectangle')
366+
367+
tb.AddSeparator()
368+
tb.AddSimpleTool(_NTB2_SUBPLOT, _load_bitmap('subplots.png'), 'Configure subplots', 'Configure subplot parameters')
369+
tb.AddSimpleTool(_NTB2_SAVE, _load_bitmap('filesave.png'), 'Save', 'Save plot contents to file')
370+
371+
self.Bind(wx.EVT_TOOL, toolbar.home, id=_NTB2_HOME)
372+
self.Bind(wx.EVT_TOOL, toolbar.forward, id=_NTB2_FORWARD)
373+
self.Bind(wx.EVT_TOOL, toolbar.back, id=_NTB2_BACK)
374+
self.Bind(wx.EVT_TOOL, toolbar.zoom, id=_NTB2_ZOOM)
375+
self.Bind(wx.EVT_TOOL, toolbar.pan, id=_NTB2_PAN)
376+
self.Bind(wx.EVT_TOOL, toolbar.configure_subplots, id=_NTB2_SUBPLOT)
377+
self.Bind(wx.EVT_TOOL, toolbar.save_figure, id=_NTB2_SAVE)
378+
379+
tb.Realize()
380+
# Hack end
381+
347382

348383
if __name__ == "__main__":
349384
app = wx.PySimpleApp()

cpa/density.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,41 @@ def __init__(self, parent, size=(600,600), **kwargs):
484484
self.save_settings = configpanel.save_settings
485485
self.load_settings = configpanel.load_settings
486486

487+
# Hack: See http://stackoverflow.com/questions/6124419/matplotlib-navtoolbar-doesnt-realize-in-wx-2-9-mac-os-x
488+
def SetToolBar(self, toolbar):
489+
from matplotlib.backends.backend_wx import _load_bitmap
490+
toolbar.Hide()
491+
tb = self.CreateToolBar((wx.TB_HORIZONTAL|wx.TB_TEXT))
492+
493+
_NTB2_HOME = wx.NewId()
494+
_NTB2_BACK = wx.NewId()
495+
_NTB2_FORWARD = wx.NewId()
496+
_NTB2_PAN = wx.NewId()
497+
_NTB2_ZOOM = wx.NewId()
498+
_NTB2_SAVE = wx.NewId()
499+
_NTB2_SUBPLOT = wx.NewId()
500+
tb.AddSimpleTool(_NTB2_HOME, _load_bitmap('home.png'), 'Home', 'Reset original view')
501+
tb.AddSimpleTool(_NTB2_BACK, _load_bitmap('back.png'), 'Back', 'Back navigation view')
502+
tb.AddSimpleTool(_NTB2_FORWARD, _load_bitmap('forward.png'), 'Forward', 'Forward navigation view')
503+
504+
tb.AddCheckTool(_NTB2_PAN, _load_bitmap('move.png'), shortHelp='Pan', longHelp='Pan with left, zoom with right')
505+
tb.AddCheckTool(_NTB2_ZOOM, _load_bitmap('zoom_to_rect.png'), shortHelp='Zoom', longHelp='Zoom to rectangle')
506+
507+
tb.AddSeparator()
508+
tb.AddSimpleTool(_NTB2_SUBPLOT, _load_bitmap('subplots.png'), 'Configure subplots', 'Configure subplot parameters')
509+
tb.AddSimpleTool(_NTB2_SAVE, _load_bitmap('filesave.png'), 'Save', 'Save plot contents to file')
510+
511+
self.Bind(wx.EVT_TOOL, toolbar.home, id=_NTB2_HOME)
512+
self.Bind(wx.EVT_TOOL, toolbar.forward, id=_NTB2_FORWARD)
513+
self.Bind(wx.EVT_TOOL, toolbar.back, id=_NTB2_BACK)
514+
self.Bind(wx.EVT_TOOL, toolbar.zoom, id=_NTB2_ZOOM)
515+
self.Bind(wx.EVT_TOOL, toolbar.pan, id=_NTB2_PAN)
516+
self.Bind(wx.EVT_TOOL, toolbar.configure_subplots, id=_NTB2_SUBPLOT)
517+
self.Bind(wx.EVT_TOOL, toolbar.save_figure, id=_NTB2_SAVE)
518+
519+
tb.Realize()
520+
# Hack end
521+
487522

488523
if __name__ == "__main__":
489524
app = wx.PySimpleApp()

cpa/histogram.py

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ def __init__(self, parent, points, bins=100, **kwargs):
230230
self.gate_helper = GatingHelper(self.subplot, self)
231231

232232
self.navtoolbar = NavigationToolbar(self.canvas)
233-
self.navtoolbar.Realize()
233+
#self.navtoolbar.Realize()
234234

235235
self.x_label = ''
236236
self.log_y = False
@@ -366,7 +366,9 @@ def __init__(self, parent, size=(600,600), **kwargs):
366366
figpanel = HistogramPanel(self, points)
367367
configpanel = DataSourcePanel(self, figpanel)
368368
figpanel.set_configpanel(configpanel)
369+
369370
self.SetToolBar(figpanel.get_toolbar())
371+
370372
sizer = wx.BoxSizer(wx.VERTICAL)
371373
sizer.Add(figpanel, 1, wx.EXPAND)
372374
sizer.Add(configpanel, 0, wx.EXPAND|wx.ALL, 5)
@@ -378,6 +380,42 @@ def __init__(self, parent, size=(600,600), **kwargs):
378380
self.save_settings = configpanel.save_settings
379381
self.load_settings = configpanel.load_settings
380382
self.fig = figpanel
383+
384+
# Hack: See http://stackoverflow.com/questions/6124419/matplotlib-navtoolbar-doesnt-realize-in-wx-2-9-mac-os-x
385+
def SetToolBar(self, toolbar):
386+
from matplotlib.backends.backend_wx import _load_bitmap
387+
toolbar.Hide()
388+
tb = self.CreateToolBar((wx.TB_HORIZONTAL|wx.TB_TEXT))
389+
390+
_NTB2_HOME = wx.NewId()
391+
_NTB2_BACK = wx.NewId()
392+
_NTB2_FORWARD = wx.NewId()
393+
_NTB2_PAN = wx.NewId()
394+
_NTB2_ZOOM = wx.NewId()
395+
_NTB2_SAVE = wx.NewId()
396+
_NTB2_SUBPLOT = wx.NewId()
397+
tb.AddSimpleTool(_NTB2_HOME, _load_bitmap('home.png'), 'Home', 'Reset original view')
398+
tb.AddSimpleTool(_NTB2_BACK, _load_bitmap('back.png'), 'Back', 'Back navigation view')
399+
tb.AddSimpleTool(_NTB2_FORWARD, _load_bitmap('forward.png'), 'Forward', 'Forward navigation view')
400+
401+
tb.AddCheckTool(_NTB2_PAN, _load_bitmap('move.png'), shortHelp='Pan', longHelp='Pan with left, zoom with right')
402+
tb.AddCheckTool(_NTB2_ZOOM, _load_bitmap('zoom_to_rect.png'), shortHelp='Zoom', longHelp='Zoom to rectangle')
403+
404+
tb.AddSeparator()
405+
tb.AddSimpleTool(_NTB2_SUBPLOT, _load_bitmap('subplots.png'), 'Configure subplots', 'Configure subplot parameters')
406+
tb.AddSimpleTool(_NTB2_SAVE, _load_bitmap('filesave.png'), 'Save', 'Save plot contents to file')
407+
408+
self.Bind(wx.EVT_TOOL, toolbar.home, id=_NTB2_HOME)
409+
self.Bind(wx.EVT_TOOL, toolbar.forward, id=_NTB2_FORWARD)
410+
self.Bind(wx.EVT_TOOL, toolbar.back, id=_NTB2_BACK)
411+
self.Bind(wx.EVT_TOOL, toolbar.zoom, id=_NTB2_ZOOM)
412+
self.Bind(wx.EVT_TOOL, toolbar.pan, id=_NTB2_PAN)
413+
self.Bind(wx.EVT_TOOL, toolbar.configure_subplots, id=_NTB2_SUBPLOT)
414+
self.Bind(wx.EVT_TOOL, toolbar.save_figure, id=_NTB2_SAVE)
415+
416+
tb.Realize()
417+
# Hack end
418+
381419

382420

383421
if __name__ == "__main__":

cpa/scatter.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,41 @@ def __init__(self, parent, size=(600,600), **kwargs):
963963
self.save_settings = configpanel.save_settings
964964
self.load_settings = configpanel.load_settings
965965

966+
# Hack: See http://stackoverflow.com/questions/6124419/matplotlib-navtoolbar-doesnt-realize-in-wx-2-9-mac-os-x
967+
def SetToolBar(self, toolbar):
968+
from matplotlib.backends.backend_wx import _load_bitmap
969+
toolbar.Hide()
970+
tb = self.CreateToolBar((wx.TB_HORIZONTAL|wx.TB_TEXT))
971+
972+
_NTB2_HOME = wx.NewId()
973+
_NTB2_BACK = wx.NewId()
974+
_NTB2_FORWARD = wx.NewId()
975+
_NTB2_PAN = wx.NewId()
976+
_NTB2_ZOOM = wx.NewId()
977+
_NTB2_SAVE = wx.NewId()
978+
_NTB2_SUBPLOT = wx.NewId()
979+
tb.AddSimpleTool(_NTB2_HOME, _load_bitmap('home.png'), 'Home', 'Reset original view')
980+
tb.AddSimpleTool(_NTB2_BACK, _load_bitmap('back.png'), 'Back', 'Back navigation view')
981+
tb.AddSimpleTool(_NTB2_FORWARD, _load_bitmap('forward.png'), 'Forward', 'Forward navigation view')
982+
983+
tb.AddCheckTool(_NTB2_PAN, _load_bitmap('move.png'), shortHelp='Pan', longHelp='Pan with left, zoom with right')
984+
tb.AddCheckTool(_NTB2_ZOOM, _load_bitmap('zoom_to_rect.png'), shortHelp='Zoom', longHelp='Zoom to rectangle')
985+
986+
tb.AddSeparator()
987+
tb.AddSimpleTool(_NTB2_SUBPLOT, _load_bitmap('subplots.png'), 'Configure subplots', 'Configure subplot parameters')
988+
tb.AddSimpleTool(_NTB2_SAVE, _load_bitmap('filesave.png'), 'Save', 'Save plot contents to file')
989+
990+
self.Bind(wx.EVT_TOOL, toolbar.home, id=_NTB2_HOME)
991+
self.Bind(wx.EVT_TOOL, toolbar.forward, id=_NTB2_FORWARD)
992+
self.Bind(wx.EVT_TOOL, toolbar.back, id=_NTB2_BACK)
993+
self.Bind(wx.EVT_TOOL, toolbar.zoom, id=_NTB2_ZOOM)
994+
self.Bind(wx.EVT_TOOL, toolbar.pan, id=_NTB2_PAN)
995+
self.Bind(wx.EVT_TOOL, toolbar.configure_subplots, id=_NTB2_SUBPLOT)
996+
self.Bind(wx.EVT_TOOL, toolbar.save_figure, id=_NTB2_SAVE)
997+
998+
tb.Realize()
999+
# Hack end
1000+
9661001

9671002
class CustomNavToolbar(NavigationToolbar2WxAgg):
9681003
'''wx/mpl NavToolbar hack with an additional tools user interaction.

0 commit comments

Comments
 (0)