4 from ..config import get_config
5 from ..search import search_authors_raw, search_books_raw
6 from .ListAuthors import ListAuthorsWindow, ListBooksWindow
9 _search_types = ['start', 'substring', 'full']
12 class SearchPanel(wx.Panel):
14 # Subclasses must override these
16 search_button_title = None
18 def __init__(self, parent):
19 wx.Panel.__init__(self, parent)
21 wx.StaticBoxSizer(wx.VERTICAL, self, self.search_title)
22 self.SetSizer(search_vsizer)
24 self.search = search = \
25 wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER)
26 search_vsizer.Add(search, 0, wx.EXPAND, 0)
27 search.Bind(wx.EVT_TEXT_ENTER, self.DoSearch)
29 self.search_substr = search_substr = wx.RadioBox(
32 u'Подстрока в начале',
36 majorDimension=1, style=wx.RA_SPECIFY_ROWS
38 search_vsizer.Add(search_substr)
40 self.search_case = search_case = wx.CheckBox(
41 self, label=u'Различать прописные/строчные')
42 search_vsizer.Add(search_case)
44 search_button = wx.Button(self, label=self.search_button_title)
45 search_vsizer.Add(search_button, 0, wx.ALIGN_CENTER, 0)
46 search_button.Bind(wx.EVT_BUTTON, self.DoSearch)
48 def DoSearch(self, event):
49 search = self.search.GetValue()
51 self.search.SetFocus()
53 search_substr = _search_types[self.search_substr.GetSelection()]
54 search_case = self.search_case.GetValue()
55 if search_case is False:
57 self.realSearch(search, search_substr, search_case)
60 class SearchAuthorsPanel(SearchPanel):
62 search_title = u'Поиск авторов'
63 search_button_title = u'Искать авторов'
65 def realSearch(self, value, search_substr, search_case):
67 search_authors_raw(value, search_substr, search_case)
68 ListAuthorsWindow(self.Parent, search_results)
71 class SearchBooksPanel(SearchPanel):
73 search_title = u'Поиск книг'
74 search_button_title = u'Искать книги'
76 def __init__(self, parent):
77 SearchPanel.__init__(self, parent)
78 self.use_filters = use_filters = wx.CheckBox(
79 self, label=u'Использовать фильтры')
81 get_config().getint('filters', 'use_in_search_forms', 1)
82 use_filters.SetValue(use_filters_cfg)
83 sizer = self.GetSizer()
84 s_count = len(sizer.GetChildren())
85 sizer.Insert(s_count-1, use_filters) # Insert before the cutton
87 def realSearch(self, value, search_substr, search_case):
88 use_filters = self.use_filters.GetValue()
90 search_books_raw(value, search_substr, search_case, use_filters)
91 ListBooksWindow(self.Parent, search_results)