]> git.phdru.name Git - m_librarian.git/blob - m_librarian/wx/Application.py
Feat(wx): Save window size in session config
[m_librarian.git] / m_librarian / wx / Application.py
1 # coding: utf-8
2
3 import wx, wx.adv
4 from ..__version__ import __version__
5 from .session_config import get_session_config
6
7
8 class MainWindow(wx.Frame):
9
10     def InitMenu(self):
11         MenuBar = wx.MenuBar()
12         self.SetMenuBar(MenuBar)
13
14         file_menu = wx.Menu()
15         exit = file_menu.Append(wx.ID_EXIT, u"&Выход", u"Выйти из программы")
16         self.Bind(wx.EVT_MENU, self.OnQuit, exit)
17         MenuBar.Append(file_menu, u"&Файл")
18
19         about_menu = wx.Menu()
20         about = about_menu.Append(wx.ID_ABOUT,
21                                   u"&О m_Librarian", u"О m_Librarian")
22         self.Bind(wx.EVT_MENU, self.OnAbout, about)
23         MenuBar.Append(about_menu, u"&О программе")
24
25         self.Bind(wx.EVT_SIZE, self.OnSize)
26
27     def OnQuit(self, event):
28         self.Close(True)
29
30     def OnAbout(self, event):
31         aboutInfo = wx.adv.AboutDialogInfo()
32         aboutInfo.SetName(u'm_Librarian')
33         aboutInfo.SetVersion(__version__)
34         aboutInfo.SetDescription(
35             u'Библиотекарь для библиотек LibRusEc/Flibusta')
36         aboutInfo.AddDeveloper(u'Олег Бройтман')
37         aboutInfo.SetWebSite(u'https://phdru.name/Software/Python/m_librarian/')
38         aboutInfo.SetCopyright(u'(C) 2023 Олег Бройтман')
39         aboutInfo.SetLicense(u'GPL')
40         wx.adv.AboutBox(aboutInfo)
41
42     def OnSize(self, event):
43         """Save window size in the session config"""
44         size = event.GetSize()
45         session_config = get_session_config()
46         session_config.set('main_window', 'width', str(size.width))
47         session_config.set('main_window', 'height', str(size.height))
48         session_config.save()
49         event.Skip()  # Call other handlers
50
51 class Application(wx.App):
52
53     def OnInit(self):
54         frame = MainWindow(None, -1, u"m_Librarian")
55         frame.InitMenu()
56         frame.Show(True)
57         self.SetTopWindow(frame)
58         return True