3 import wx, wx.adv # noqa: E401 multiple imports on one line
4 from ..__version__ import __version__
5 from .session_config import get_session_config
8 class AWindow(wx.Frame):
11 A universal parent class for all top-level application windows
13 Standard menu and ability to save/restore window size.
16 # Subclasses should override these
17 session_config_section_name = None
20 def __init__(self, parent=None):
21 if self.session_config_section_name:
22 session_config = get_session_config()
23 width = session_config.getint(
24 self.session_config_section_name, 'width', 600)
25 height = session_config.getint(
26 self.session_config_section_name, 'height', 400)
32 parent=parent, id=-1, title=self.window_title,
33 size=wx.Size(width=width, height=height),
42 if self.session_config_section_name:
43 self.Bind(wx.EVT_SIZE, self.OnSize)
44 self.Bind(wx.EVT_CLOSE, self.OnClose)
47 MenuBar = wx.MenuBar()
48 self.SetMenuBar(MenuBar)
54 file_menu.Append(wx.ID_CLOSE, u"&Закрыть", u"Закрыть окно")
55 self.Bind(wx.EVT_MENU, self.OnCloseCommand, close_win)
57 quit = file_menu.Append(wx.ID_EXIT, u"&Выход", u"Выйти из программы")
58 self.Bind(wx.EVT_MENU, self.OnQuit, quit)
59 MenuBar.Append(file_menu, u"&Файл")
61 about_menu = wx.Menu()
62 about = about_menu.Append(wx.ID_ABOUT,
63 u"&О m_Librarian", u"О m_Librarian")
64 self.Bind(wx.EVT_MENU, self.OnAbout, about)
65 MenuBar.Append(about_menu, u"&О программе")
67 def OnCloseCommand(self, event):
70 def OnClose(self, event):
73 event.Skip() # Call other handlers
75 def OnQuit(self, event):
76 wx.GetApp().ExitMainLoop()
78 def OnAbout(self, event):
79 aboutInfo = wx.adv.AboutDialogInfo()
80 aboutInfo.SetName(u'm_Librarian')
81 aboutInfo.SetVersion(__version__)
82 aboutInfo.SetDescription(
83 u'Библиотекарь для библиотек LibRusEc/Flibusta')
84 aboutInfo.AddDeveloper(u'Олег Бройтман')
86 u'https://phdru.name/Software/Python/m_librarian/')
87 aboutInfo.SetCopyright(u'(C) 2023, 2024 Олег Бройтман')
88 aboutInfo.SetLicense(u'GPL')
89 wx.adv.AboutBox(aboutInfo)
91 def OnSize(self, event):
92 """Save window size in the session config"""
93 if self.session_config_section_name:
94 size = event.GetSize()
95 session_config = get_session_config()
97 self.session_config_section_name, 'width', str(size.width))
99 self.session_config_section_name, 'height', str(size.height))
100 session_config.save()
101 event.Skip() # Call other handlers