class SnapshotPrinter(wx.Frame): def __init__(self, title='Snapshot Printer'): wx.Frame.__init__(self, None, title=title, size=(650, 400)) self.panel = wx.Panel(self) self.printer = HtmlEasyPrinting(name='Printing', parentWindow=None) self.html = HtmlWindow(self.panel) self.html.SetRelatedFrame(self, self.GetTitle()) if not os.path.exists('screenshot.htm'): self.createHtml() self.html.LoadPage('screenshot.htm') pageSetupBtn = wx.Button(self.panel, label='Page Setup') printBtn = wx.Button(self.panel, label='Print') cancelBtn = wx.Button(self.panel, label='Cancel') self.Bind(wx.EVT_BUTTON, self.onSetup, pageSetupBtn) self.Bind(wx.EVT_BUTTON, self.onPrint, printBtn) self.Bind(wx.EVT_BUTTON, self.onCancel, cancelBtn) sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.html, 1, wx.GROW) btnSizer.Add(pageSetupBtn, 0, wx.ALL, 5) btnSizer.Add(printBtn, 0, wx.ALL, 5) btnSizer.Add(cancelBtn, 0, wx.ALL, 5) sizer.Add(btnSizer) self.panel.SetSizer(sizer) self.panel.SetAutoLayout(True) def createHtml(self): ''' Creates an html file in the home directory of the application that contains the information to display the snapshot ''' print('creating html...') html = '''<html>\n<body>\n<center> <img src=myImage.png width=516 height=314> </center>\n</body>\n</html>''' with open('screenshot.htm', 'w') as fobj: fobj.write(html) def onSetup(self, event): self.printer.PageSetup() def onPrint(self, event): self.sendToPrinter() def sendToPrinter(self): self.printer.GetPrintData().SetPaperId(wx.PAPER_LETTER) self.printer.PrintFile(self.html.GetOpenedPage()) def onCancel(self, event): self.Close()
class DlgHelp(Dialog): HELP_PKG_NAME: str = 'help' """ Pyut help dialog frame. Used to show help and navigate through it. To use it from a wxFrame : dlg = DlgHelp(self, -1, "Pyut Help") dlg.Show() dlg.destroy() :version: $Revision: 1.7 $ :author: C.Dutoit :contact: [email protected] """ def __init__(self, parent, ID, title): """ Constructor. @since 1.0 @author C.Dutoit """ # dialog box super().__init__(parent, ID, title, DefaultPosition, Size(720, 520)) self.Center(BOTH) self.html = HtmlWindow(self, -1, DefaultPosition, Size(720, 520)) htmlFileName = resource_filename(DlgHelp.HELP_PKG_NAME, 'index.html') self.html.LoadPage(htmlFileName) self.printer = HtmlEasyPrinting() self.box = BoxSizer(VERTICAL) self.box.Add(self.html, 1, GROW) subbox = BoxSizer(HORIZONTAL) btn = Button(self, ID_BACK, _("Back")) self.Bind(EVT_BUTTON, self.__OnBack, id=ID_BACK) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_FORWARD, _("Forward")) self.Bind(EVT_BUTTON, self.__OnForward, id=ID_FORWARD) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_PRINT, _("Print")) self.Bind(EVT_BUTTON, self.__OnPrint, id=ID_PRINT) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_VIEW_SOURCE, _("View Source")) self.Bind(EVT_BUTTON, self.__OnViewSource, id=ID_VIEW_SOURCE) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_OK, _("Exit")) subbox.Add(btn, 1, GROW | ALL, 2) self.box.Add(subbox, 0, GROW | BOTTOM) self.SetSizer(self.box) self.SetAutoLayout(True) subbox.Fit(self) self.box.Fit(self) self.OnShowDefault(None) self.Show(True) # noinspection PyUnusedLocal def OnShowDefault(self, event): """ Show default page @since 1.1 @author C.Dutoit """ # # TODO: use resource loader to find help index.html # name = osPath.join(getcwd(), 'help/index.html') self.html.LoadPage(name) # noinspection PyUnusedLocal def __OnBack(self, event): """ go one level back; load last page @since 1.1 @author C.Dutoit """ if not self.html.HistoryBack(): MessageBox(_("No more items in history !")) # noinspection PyUnusedLocal def __OnForward(self, event): """ go one level forward; load next page @since 1.1 @author C.Dutoit """ if not self.html.HistoryForward(): MessageBox(_("No more items in history !")) # noinspection PyUnusedLocal def __OnViewSource(self, event): """ View document source @since 1.1 @author C.Dutoit """ source = self.html.GetParser().GetSource() dlg = ScrolledMessageDialog(self, source, _('HTML Source')) dlg.ShowModal() dlg.Destroy() # noinspection PyUnusedLocal def __OnPrint(self, event): """ print the current page @since 1.1 @author C.Dutoit """ self.printer.PrintFile(self.html.GetOpenedPage())
class SnapshotPrinter(wx.Frame): #---------------------------------------------------------------------- def __init__(self, title='Snapshot Printer'): wx.Frame.__init__(self, None, wx.ID_ANY, title, size=(650,400)) self.panel = wx.Panel(self, wx.ID_ANY) self.printer = HtmlEasyPrinting(name='Printing', parentWindow=None) self.html = HtmlWindow(self.panel) self.html.SetRelatedFrame(self, self.GetTitle()) if not os.path.exists('screenshot.htm'): self.createHtml() self.html.LoadPage('screenshot.htm') pageSetupBtn = wx.Button(self.panel, wx.ID_ANY, 'Page Setup') printBtn = wx.Button(self.panel, wx.ID_ANY, 'Print') cancelBtn = wx.Button(self.panel, wx.ID_ANY, 'Cancel') self.Bind(wx.EVT_BUTTON, self.onSetup, pageSetupBtn) self.Bind(wx.EVT_BUTTON, self.onPrint, printBtn) self.Bind(wx.EVT_BUTTON, self.onCancel, cancelBtn) sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.html, 1, wx.GROW) btnSizer.Add(pageSetupBtn, 0, wx.ALL, 5) btnSizer.Add(printBtn, 0, wx.ALL, 5) btnSizer.Add(cancelBtn, 0, wx.ALL, 5) sizer.Add(btnSizer) self.panel.SetSizer(sizer) self.panel.SetAutoLayout(True) #---------------------------------------------------------------------- def createHtml(self): ''' Creates an html file in the home directory of the application that contains the information to display the snapshot ''' print 'creating html...' #html = '<html>\n<body>\n<center><img src=myImage.png width=700 height=800></center>\n</body>\n</html>' f = file('screenshot.htm', 'w') f.write(open('C:/Protocols/CoreProtocols/20111213_1_transfer_example.txt').read()) f.write('<html>\n<body>\n<center><img src=myImage.png width=350 height=600></center>\n</body>\n</html>') f.close() #---------------------------------------------------------------------- def onSetup(self, event): self.printer.PageSetup() #---------------------------------------------------------------------- def onPrint(self, event): self.sendToPrinter() #---------------------------------------------------------------------- def sendToPrinter(self): """""" self.printer.GetPrintData().SetPaperId(wx.PAPER_LETTER) self.printer.PrintFile(self.html.GetOpenedPage()) #---------------------------------------------------------------------- def onCancel(self, event): self.Close()