#!/usr/bin/env python3 # coding: utf-8 powitanie = u''' Prosty edytor plików tekstowych Demonstracja użycia biblioteki WxWidgets do tworzenia aplikacji GUI. Program zbudowano dla celów poglądowych. Nie jest on kompletny; użytkowanie grozi utratą danych. ''' import wx class Frame(wx.Frame): def quit(self, event): self.Destroy() def about(self, event): wx.MessageBox(parent = self, message = 'Szkielet aplikacji GUI\nutworzony przy użyciu biblioteki WxWidgets', caption = 'Info') def makieta(self, event): wx.MessageBox(parent = self, message = 'Do zrobienia...', caption = 'Info', style = wx.ICON_EXCLAMATION) zmienione = False def nowyPlik(self, event): if self.zmienione: self.zapiszPlikJako(None) self.fn = None self.tb.SetValue('') self.sb.SetStatusText('Nowy bufor') def otworzPlik(self, event): if self.zmienione: self.zapiszPlikJako(None) dialog = wx.FileDialog(parent = self, style = wx.FD_OPEN) if dialog.ShowModal() == wx.ID_OK: nazwa = dialog.GetPath() else: nazwa = None dialog.Destroy() if nazwa: self.tb.SetValue(open(nazwa).read().decode('utf-8')) self.sb.SetStatusText('Wczytano '+ nazwa) self.fn = nazwa def zapiszPlik(self, event): if self.fn: plik = open(self.fn, 'w') plik.write(self.tb.GetValue().encode('utf-8')) plik.close() self.sb.SetStatusText('Zapisano ' + self.fn) else: self.zapiszPlikJako(None) def zapiszPlikJako(self, event): dialog = wx.FileDialog(parent = self, style = wx.FD_SAVE + wx.FD_OVERWRITE_PROMPT) if dialog.ShowModal() == wx.ID_OK: nazwa = dialog.GetPath() else: nazwa = None dialog.Destroy() if nazwa: self.fn = nazwa self.zapiszPlik(None) def __init__(self, title = '', size = (350,200)): wx.Frame.__init__(self, None, title=title, pos=(150,150), size=size) mb = wx.MenuBar() mm = wx.Menu() mm.Append(wx.ID_NEW, 'Nowy', '') self.Bind(wx.EVT_MENU, self.nowyPlik, id = wx.ID_NEW) mm.Append(wx.ID_OPEN, u'Otwórz', '') self.Bind(wx.EVT_MENU, self.otworzPlik, id = wx.ID_OPEN) mm.Append(wx.ID_SAVE, 'Zapisz', '') self.Bind(wx.EVT_MENU, self.zapiszPlik, id = wx.ID_SAVE) mm.Append(wx.ID_SAVEAS, 'Zapisz jako', '') self.Bind(wx.EVT_MENU, self.zapiszPlikJako, id = wx.ID_SAVEAS) mm.AppendSeparator() mm.Append(wx.ID_PRINT, 'Drukuj', '') self.Bind(wx.EVT_MENU, self.makieta, id = wx.ID_PRINT) mm.AppendSeparator() mm.Append(wx.ID_EXIT, u'Zakończ', '') self.Bind(wx.EVT_MENU, self.quit, id = wx.ID_EXIT) mb.Append(mm, 'Plik') mm = wx.Menu() mm.Append(1001, u'Znajdź', '') self.Bind(wx.EVT_MENU, self.makieta, id = 1001) mb.Append(mm, 'Edycja') mm = wx.Menu() mm.Append(wx.ID_ABOUT, 'O programie', '') self.Bind(wx.EVT_MENU, self.about, id = wx.ID_ABOUT) mb.Append(mm, 'Pomoc') self.sb = self.CreateStatusBar() self.sb.Show() self.sb.SetStatusText('Gotowe') self.fn = None self.tb = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE) self.tb.Show() self.tb.SetValue(powitanie) self.Bind(wx.EVT_CLOSE, self.quit) self.SetMenuBar(mb) self.Show() app = wx.App() w = Frame(title='aplikacja WxWidgets', size=(500, 300)) app.MainLoop()