ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Tool_Box/Printer2.py
Revision: 8
Committed: Sat May 5 04:21:19 2012 UTC (13 years, 10 months ago) by ninoborges
Content type: text/x-python
File size: 2538 byte(s)
Log Message:
Initial Import

File Contents

# Content
1 ##Printer2
2
3 from wxPython.wx import *
4
5 class MyPrintout(wxPrintout):
6 def __init__(self, canvas):
7 wxPrintout.__init__(self)
8 self.canvas = canvas
9
10 def OnBeginDocument(self, start, end):
11 #self.log.WriteText("wxPrintout.OnBeginDocument\n")
12 return self.base_OnBeginDocument(start, end)
13
14 def OnEndDocument(self):
15 #self.log.WriteText("wxPrintout.OnEndDocument\n")
16 self.base_OnEndDocument()
17
18 def OnBeginPrinting(self):
19 #self.log.WriteText("wxPrintout.OnBeginPrinting\n")
20 self.base_OnBeginPrinting()
21
22 def OnEndPrinting(self):
23 #self.log.WriteText("wxPrintout.OnEndPrinting\n")
24 self.base_OnEndPrinting()
25
26 def OnPreparePrinting(self):
27 #self.log.WriteText("wxPrintout.OnPreparePrinting\n")
28 self.base_OnPreparePrinting()
29
30 def HasPage(self, page):
31 #self.log.WriteText("wxPrintout.HasPage: %d\n" % page)
32 if page <= 2:
33 return True
34 else:
35 return False
36
37 def GetPageInfo(self):
38 #self.log.WriteText("wxPrintout.GetPageInfo\n")
39 return (1, 2, 1, 2)
40
41 def OnPrintPage(self, page):
42 #self.log.WriteText("wxPrintout.OnPrintPage: %d\n" % page)
43 dc = self.GetDC()
44
45 #-------------------------------------------
46 # One possible method of setting scaling factors...
47
48 maxX = self.canvas.GetWidth()
49 maxY = self.canvas.GetHeight()
50
51 # Let's have at least 50 device units margin
52 marginX = 50
53 marginY = 50
54
55 # Add the margin to the graphic size
56 maxX = maxX + (2 * marginX)
57 maxY = maxY + (2 * marginY)
58
59 # Get the size of the DC in pixels
60 (w, h) = dc.GetSizeTuple()
61
62 # Calculate a suitable scaling factor
63 scaleX = float(w) / maxX
64 scaleY = float(h) / maxY
65
66 # Use x or y scaling factor, whichever fits on the DC
67 actualScale = min(scaleX, scaleY)
68
69 # Calculate the position on the DC for centring the graphic
70 posX = (w - (self.canvas.getWidth() * actualScale)) / 2.0
71 posY = (h - (self.canvas.getHeight() * actualScale)) / 2.0
72
73 # Set the scale and origin
74 dc.SetUserScale(actualScale, actualScale)
75 dc.SetDeviceOrigin(int(posX), int(posY))
76
77 #-------------------------------------------
78
79 self.canvas.DoDrawing(dc)
80 dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY)
81
82 return True