X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=m_librarian%2Fwx%2FListAuthors.py;h=8f18a7a6c29ec42aa1a96f103f363189e681fa07;hb=9f269c21f91b1865ffe2c8bfdab4974d26c97295;hp=15cb59cf3c45c6054a7d9234745c6631b02bf557;hpb=a7b1a5111a936373d454dcaaa1e2cf4ab627f08e;p=m_librarian.git diff --git a/m_librarian/wx/ListAuthors.py b/m_librarian/wx/ListAuthors.py index 15cb59c..8f18a7a 100644 --- a/m_librarian/wx/ListAuthors.py +++ b/m_librarian/wx/ListAuthors.py @@ -4,42 +4,16 @@ import wx, wx.grid # noqa: E401 multiple imports on one line from ..compat import string_type, unicode_type from ..search import books_by_author from ..translations import translations -from .AWindow import AWindow +from .Grids import GridWindow, GridPanel from .ListBooks import ListBooksWindow -class ListAuthorsWindow(AWindow): - - session_config_section_name = 'list_authors' - window_title = u"m_Librarian: Список авторов" - - def __init__(self, parent, search_authors_results): - self.search_authors_results = search_authors_results - AWindow.__init__(self, parent) - - def OnInit(self): - AWindow.OnInit(self) - ListAuthorsPanel(self, self.search_authors_results) - - -class ListAuthorsPanel(wx.Panel): - - def __init__(self, parent, search_authors_results): - wx.Panel.__init__(self, parent) - self.search_authors_results = search_authors_results - - list_authors_sizer = wx.BoxSizer(wx.VERTICAL) - self.SetSizer(list_authors_sizer) - - self.grid = grid = wx.grid.Grid(self) - list_authors_sizer.Add(grid, 0, wx.EXPAND, 0) - - self.InitGrid() +class ListAuthorsPanel(GridPanel): def InitGrid(self): _ = getattr(translations, 'ugettext', None) or translations.gettext - authors = self.search_authors_results['authors'] - columns = self.search_authors_results['columns'] + authors = self.param['authors'] + columns = self.param['columns'] grid = self.grid grid.CreateGrid(len(authors), len(columns)) grid.EnableEditing(False) @@ -62,11 +36,8 @@ class ListAuthorsPanel(wx.Panel): grid.AutoSizeColumns() grid.AutoSizeRows() - grid.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnDClick) - grid.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) - def listBooks(self, row): - authors = self.search_authors_results['authors'] + authors = self.param['authors'] author = authors[row] _books_by_author = books_by_author(author.id) ListBooksWindow(self, _books_by_author) @@ -76,8 +47,17 @@ class ListAuthorsPanel(wx.Panel): self.listBooks(row) def OnKeyDown(self, event): - if event.GetKeyCode() in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER): + if event.GetKeyCode() == wx.WXK_ESCAPE: + self.Parent.Close() + elif event.GetKeyCode() in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER): row = self.grid.GetGridCursorRow() self.listBooks(row) else: event.Skip() + + +class ListAuthorsWindow(GridWindow): + + session_config_section_name = 'list_authors' + window_title = u"m_Librarian: Список авторов" + GridPanelClass = ListAuthorsPanel