X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/299647acac7960652aadb008775429c1f8ea9b8d..30e24d9dd5a5abf1c9a375ea259eb239b122b7f7:/wxPython/demo/PrintFramework.py diff --git a/wxPython/demo/PrintFramework.py b/wxPython/demo/PrintFramework.py index ac9d3a1c57..7412455086 100644 --- a/wxPython/demo/PrintFramework.py +++ b/wxPython/demo/PrintFramework.py @@ -1,18 +1,9 @@ -# 11/13/2003 - Jeff Grimmett (grimmtooth@softhome.net) -# -# o Updated for wx namespace -# o Got rid of static buton IDs -# o Took at a stab at a lucid overview string. -# import wx import ScrolledWindow #---------------------------------------------------------------------- -ID_Setup = wx.NewId() -ID_Preview = wx.NewId() -ID_Print = wx.NewId() class MyPrintout(wx.Printout): def __init__(self, canvas, log): @@ -21,38 +12,38 @@ class MyPrintout(wx.Printout): self.log = log def OnBeginDocument(self, start, end): - self.log.WriteText("wx.Printout.OnBeginDocument\n") - return self.base_OnBeginDocument(start, end) + self.log.WriteText("MyPrintout.OnBeginDocument\n") + return super(MyPrintout, self).OnBeginDocument(start, end) def OnEndDocument(self): - self.log.WriteText("wx.Printout.OnEndDocument\n") - self.base_OnEndDocument() + self.log.WriteText("MyPrintout.OnEndDocument\n") + super(MyPrintout, self).OnEndDocument() def OnBeginPrinting(self): - self.log.WriteText("wx.Printout.OnBeginPrinting\n") - self.base_OnBeginPrinting() + self.log.WriteText("MyPrintout.OnBeginPrinting\n") + super(MyPrintout, self).OnBeginPrinting() def OnEndPrinting(self): - self.log.WriteText("wx.Printout.OnEndPrinting\n") - self.base_OnEndPrinting() + self.log.WriteText("MyPrintout.OnEndPrinting\n") + super(MyPrintout, self).OnEndPrinting() def OnPreparePrinting(self): - self.log.WriteText("wx.Printout.OnPreparePrinting\n") - self.base_OnPreparePrinting() + self.log.WriteText("MyPrintout.OnPreparePrinting\n") + super(MyPrintout, self).OnPreparePrinting() def HasPage(self, page): - self.log.WriteText("wx.Printout.HasPage: %d\n" % page) + self.log.WriteText("MyPrintout.HasPage: %d\n" % page) if page <= 2: return True else: return False def GetPageInfo(self): - self.log.WriteText("wx.Printout.GetPageInfo\n") + self.log.WriteText("MyPrintout.GetPageInfo\n") return (1, 2, 1, 2) def OnPrintPage(self, page): - self.log.WriteText("wx.Printout.OnPrintPage: %d\n" % page) + self.log.WriteText("MyPrintout.OnPrintPage: %d\n" % page) dc = self.GetDC() #------------------------------------------- @@ -90,7 +81,7 @@ class MyPrintout(wx.Printout): #------------------------------------------- self.canvas.DoDrawing(dc, True) - dc.DrawText("Page: %d" % page, (marginX/2, maxY-marginY)) + dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY) return True @@ -106,22 +97,23 @@ class TestPrintPanel(wx.Panel): self.printData = wx.PrintData() self.printData.SetPaperId(wx.PAPER_LETTER) - + self.printData.SetPrintMode(wx.PRINT_MODE_PRINTER) + self.box = wx.BoxSizer(wx.VERTICAL) self.canvas = ScrolledWindow.MyCanvas(self) self.box.Add(self.canvas, 1, wx.GROW) subbox = wx.BoxSizer(wx.HORIZONTAL) - btn = wx.Button(self, ID_Setup, "Print Setup") - self.Bind(wx.EVT_BUTTON, self.OnPrintSetup, id=ID_Setup) + btn = wx.Button(self, -1, "Page Setup") + self.Bind(wx.EVT_BUTTON, self.OnPageSetup, btn) subbox.Add(btn, 1, wx.GROW | wx.ALL, 2) - btn = wx.Button(self, ID_Preview, "Print Preview") - self.Bind(wx.EVT_BUTTON, self.OnPrintPreview, id=ID_Preview) + btn = wx.Button(self, -1, "Print Preview") + self.Bind(wx.EVT_BUTTON, self.OnPrintPreview, btn) subbox.Add(btn, 1, wx.GROW | wx.ALL, 2) - btn = wx.Button(self, ID_Print, "Print") - self.Bind(wx.EVT_BUTTON, self.OnDoPrint, id=ID_Print) + btn = wx.Button(self, -1, "Print") + self.Bind(wx.EVT_BUTTON, self.OnDoPrint, btn) subbox.Add(btn, 1, wx.GROW | wx.ALL, 2) self.box.Add(subbox, 0, wx.GROW) @@ -130,44 +122,49 @@ class TestPrintPanel(wx.Panel): self.SetSizer(self.box) - def OnPrintSetup(self, event): - printerDialog = wx.PrintDialog(self) - printerDialog.GetPrintDialogData().SetPrintData(self.printData) - printerDialog.GetPrintDialogData().SetSetupDialog(True) - printerDialog.ShowModal(); - self.printData = printerDialog.GetPrintDialogData().GetPrintData() - printerDialog.Destroy() + def OnPageSetup(self, evt): + psdd = wx.PageSetupDialogData(self.printData) + psdd.CalculatePaperSizeFromId() + dlg = wx.PageSetupDialog(self, psdd) + dlg.ShowModal() + + # this makes a copy of the wx.PrintData instead of just saving + # a reference to the one inside the PrintDialogData that will + # be destroyed when the dialog is destroyed + self.printData = wx.PrintData( dlg.GetPageSetupData().GetPrintData() ) + + dlg.Destroy() def OnPrintPreview(self, event): - self.log.WriteText("OnPrintPreview\n") + data = wx.PrintDialogData(self.printData) printout = MyPrintout(self.canvas, self.log) printout2 = MyPrintout(self.canvas, self.log) - self.preview = wx.PrintPreview(printout, printout2, self.printData) + self.preview = wx.PrintPreview(printout, printout2, data) if not self.preview.Ok(): self.log.WriteText("Houston, we have a problem...\n") return - frame = wx.PreviewFrame(self.preview, self.frame, "This is a print preview") + pfrm = wx.PreviewFrame(self.preview, self.frame, "This is a print preview") - frame.Initialize() - frame.SetPosition(self.frame.GetPosition()) - frame.SetSize(self.frame.GetSize()) - frame.Show(True) + pfrm.Initialize() + pfrm.SetPosition(self.frame.GetPosition()) + pfrm.SetSize(self.frame.GetSize()) + pfrm.Show(True) def OnDoPrint(self, event): - pdd = wx.PrintDialogData() - pdd.SetPrintData(self.printData) + pdd = wx.PrintDialogData(self.printData) + pdd.SetToPage(2) printer = wx.Printer(pdd) printout = MyPrintout(self.canvas, self.log) - if not printer.Print(self.frame, printout): + if not printer.Print(self.frame, printout, True): wx.MessageBox("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", wx.OK) else: - self.printData = printer.GetPrintDialogData().GetPrintData() + self.printData = wx.PrintData( printer.GetPrintDialogData().GetPrintData() ) printout.Destroy() @@ -230,5 +227,5 @@ framework in wxPython. if __name__ == '__main__': import sys,os import run - run.main(['', os.path.basename(sys.argv[0])]) + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])