X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/demo/PrintFramework.py diff --git a/wxPython/demo/PrintFramework.py b/wxPython/demo/PrintFramework.py deleted file mode 100644 index 7412455086..0000000000 --- a/wxPython/demo/PrintFramework.py +++ /dev/null @@ -1,231 +0,0 @@ - -import wx -import ScrolledWindow - -#---------------------------------------------------------------------- - - -class MyPrintout(wx.Printout): - def __init__(self, canvas, log): - wx.Printout.__init__(self) - self.canvas = canvas - self.log = log - - def OnBeginDocument(self, start, end): - self.log.WriteText("MyPrintout.OnBeginDocument\n") - return super(MyPrintout, self).OnBeginDocument(start, end) - - def OnEndDocument(self): - self.log.WriteText("MyPrintout.OnEndDocument\n") - super(MyPrintout, self).OnEndDocument() - - def OnBeginPrinting(self): - self.log.WriteText("MyPrintout.OnBeginPrinting\n") - super(MyPrintout, self).OnBeginPrinting() - - def OnEndPrinting(self): - self.log.WriteText("MyPrintout.OnEndPrinting\n") - super(MyPrintout, self).OnEndPrinting() - - def OnPreparePrinting(self): - self.log.WriteText("MyPrintout.OnPreparePrinting\n") - super(MyPrintout, self).OnPreparePrinting() - - def HasPage(self, page): - self.log.WriteText("MyPrintout.HasPage: %d\n" % page) - if page <= 2: - return True - else: - return False - - def GetPageInfo(self): - self.log.WriteText("MyPrintout.GetPageInfo\n") - return (1, 2, 1, 2) - - def OnPrintPage(self, page): - self.log.WriteText("MyPrintout.OnPrintPage: %d\n" % page) - dc = self.GetDC() - - #------------------------------------------- - # One possible method of setting scaling factors... - - maxX = self.canvas.getWidth() - maxY = self.canvas.getHeight() - - # Let's have at least 50 device units margin - marginX = 50 - marginY = 50 - - # Add the margin to the graphic size - maxX = maxX + (2 * marginX) - maxY = maxY + (2 * marginY) - - # Get the size of the DC in pixels - (w, h) = dc.GetSizeTuple() - - # Calculate a suitable scaling factor - scaleX = float(w) / maxX - scaleY = float(h) / maxY - - # Use x or y scaling factor, whichever fits on the DC - actualScale = min(scaleX, scaleY) - - # Calculate the position on the DC for centering the graphic - posX = (w - (self.canvas.getWidth() * actualScale)) / 2.0 - posY = (h - (self.canvas.getHeight() * actualScale)) / 2.0 - - # Set the scale and origin - dc.SetUserScale(actualScale, actualScale) - dc.SetDeviceOrigin(int(posX), int(posY)) - - #------------------------------------------- - - self.canvas.DoDrawing(dc, True) - dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY) - - return True - - -#---------------------------------------------------------------------- - - -class TestPrintPanel(wx.Panel): - def __init__(self, parent, frame, log): - wx.Panel.__init__(self, parent, -1) - self.log = log - self.frame = frame - - 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, -1, "Page Setup") - self.Bind(wx.EVT_BUTTON, self.OnPageSetup, btn) - subbox.Add(btn, 1, wx.GROW | wx.ALL, 2) - - 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, -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) - - self.SetAutoLayout(True) - self.SetSizer(self.box) - - - - 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): - data = wx.PrintDialogData(self.printData) - printout = MyPrintout(self.canvas, self.log) - printout2 = MyPrintout(self.canvas, self.log) - self.preview = wx.PrintPreview(printout, printout2, data) - - if not self.preview.Ok(): - self.log.WriteText("Houston, we have a problem...\n") - return - - pfrm = wx.PreviewFrame(self.preview, self.frame, "This is a print preview") - - pfrm.Initialize() - pfrm.SetPosition(self.frame.GetPosition()) - pfrm.SetSize(self.frame.GetSize()) - pfrm.Show(True) - - - - def OnDoPrint(self, event): - 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, True): - wx.MessageBox("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", wx.OK) - else: - self.printData = wx.PrintData( printer.GetPrintDialogData().GetPrintData() ) - printout.Destroy() - - -#---------------------------------------------------------------------- - -def runTest(frame, nb, log): - win = TestPrintPanel(nb, frame, log) - return win - - -#---------------------------------------------------------------------- - - - - - -overview = """\ - -
-Classes demonstrated here:
-
- -
- -
- -
-
Other classes are also demonstrated, but this is the gist of the printer interface -framework in wxPython. - - - - -""" - - -if __name__ == '__main__': - import sys,os - import run - run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) -