X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=m_librarian%2Fwx%2FGrids.py;fp=m_librarian%2Fwx%2FGrids.py;h=fe2f8d0174c68ef3dc4bbd734bd456879167eb6d;hb=5f579825e3839c6bb754f6d53590b125c72034c7;hp=0000000000000000000000000000000000000000;hpb=13e26556157955b2a2c33e6524a10116d818b685;p=m_librarian.git diff --git a/m_librarian/wx/Grids.py b/m_librarian/wx/Grids.py new file mode 100644 index 0000000..fe2f8d0 --- /dev/null +++ b/m_librarian/wx/Grids.py @@ -0,0 +1,58 @@ +import wx, wx.grid # noqa: E401 multiple imports on one line +from .AWindow import AWindow + + +class GridPanel(wx.Panel): + + def __init__(self, parent, param): + wx.Panel.__init__(self, parent) + self.param = param + + vsizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(vsizer) + + self.grid = grid = wx.grid.Grid(self) + vsizer.Add(grid, 0, wx.EXPAND, 0) + + grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnDClick) + grid.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) + + self.InitGrid() + grid.SetFocus() + + parent.Bind(wx.EVT_ACTIVATE, self.OnActivate) + parent.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) + self.Bind(wx.EVT_ACTIVATE, self.OnActivate) + self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) + + def InitGrid(self): + raise NotImplementedError + + def OnDClick(self, event): + raise NotImplementedError + + def OnKeyDown(self, event): + raise NotImplementedError + + def OnActivate(self, event): + if event.GetActive(): + self.grid.SetFocus() + + def OnSetFocus(self, event): + self.grid.SetFocus() + + +class GridWindow(AWindow): + + # Subclasses must override these + session_config_section_name = None + window_title = None + GridPanelClass = GridPanel + + def __init__(self, parent, param): + self.param = param + AWindow.__init__(self, parent) + + def OnInit(self): + AWindow.OnInit(self) + self.panel = self.GridPanelClass(self, self.param)