]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/TablePrint.py
5 import wx
.lib
.printout
as printout
7 #---------------------------------------------------------------------------
10 814 : ('PreviewWide', 'Preview print of a wide table'),
11 815 : ('PreviewNarrow', 'Preview print of a narrow table with color highlights'),
12 818 : ('OnPreviewMatrix', 'Preview print of a narrow column grid without a table header'),
13 817 : ('PreviewLine', 'Preview print to demonstrate the use of line breaks'),
14 819 : ('PrintWide', 'Direct print (no preview) of a wide table'),
18 class TablePanel(wx
.Panel
):
19 def __init__(self
, parent
, log
, frame
):
20 wx
.Panel
.__init
__(self
, parent
, -1)
24 box
= wx
.BoxSizer(wx
.VERTICAL
)
26 keys
= buttonDefs
.keys()
30 text
= buttonDefs
[k
][1]
31 btn
= wx
.Button(self
, k
, text
)
32 box
.Add(btn
, 0, wx
.ALIGN_CENTER|wx
.ALL
, 15)
33 self
.Bind(wx
.EVT_BUTTON
, self
.OnButton
, btn
)
35 self
.SetAutoLayout(True)
38 def OnButton(self
, evt
):
39 funct
= buttonDefs
[evt
.GetId()][0]
40 code
= 'self.' + funct
+ '()'
44 test_file
= "./data/testtable.txt"
45 file = open(test_file
,'r',1)
50 text
= file.readline()
55 list_val
= text
.split('\t')
62 def PreviewWide(self
):
64 prt
= printout
.PrintTable(self
.frame
)
67 prt
.set_column
= [1.0, 1.0, 1.0, 1.5, 1.0, 3.0]
68 prt
.label
= self
.header
71 prt
.SetColumnLineSize(2, 3)
72 prt
.SetColumnLineColour(3, wx
.NamedColour('RED'))
74 prt
.SetRowLineSize(1, 3)
75 prt
.SetRowLineColour(5, wx
.NamedColour('RED'))
77 prt
.SetHeader("wx.Windows Applications")
79 prt
.SetFooter("Date: ", type = "Date", align
=wx
.ALIGN_RIGHT
, indent
= -2, colour
= wx
.NamedColour('RED'))
82 def PreviewNarrow(self
):
86 new_data
.append([val
[0], val
[1], val
[2], val
[4], val
[5]])
89 new_header
= [val
[0], val
[1], val
[2], val
[4], val
[5]]
91 prt
= printout
.PrintTable(self
.frame
)
93 prt
.set_column
= [ 1, 1, 1, 1, 2]
94 prt
.label
= new_header
95 prt
.SetColAlignment(1, wx
.ALIGN_CENTRE
)
96 prt
.SetColBackgroundColour(0, wx
.NamedColour('RED'))
97 prt
.SetColTextColour(0, wx
.NamedColour('WHITE'))
98 prt
.SetCellColour(4, 0, wx
.NamedColour('LIGHT BLUE'))
99 prt
.SetCellColour(4, 1, wx
.NamedColour('LIGHT BLUE'))
100 prt
.SetCellColour(17, 1, wx
.NamedColour('LIGHT BLUE'))
102 prt
.SetColBackgroundColour(2, wx
.NamedColour('LIGHT BLUE'))
103 prt
.SetCellText(4, 2, wx
.NamedColour('RED'))
105 prt
.SetColTextColour(3, wx
.NamedColour('RED'))
106 prt
.label_font_colour
= wx
.NamedColour('WHITE')
107 prt
.SetHeader("wxWindows Applications", colour
= wx
.NamedColour('RED'))
109 prt
.SetHeader("Printed: ", type = "Date & Time", align
=wx
.ALIGN_RIGHT
, indent
= -2, colour
= wx
.NamedColour('BLUE'))
110 prt
.SetFooter("Page No", colour
= wx
.NamedColour('RED'), type ="Num")
113 def OnPreviewMatrix(self
):
122 for val
in range(total_col
):
123 columns
.append(hsize
)
125 prt
= printout
.PrintTable(self
.frame
)
127 for row
in range(total_row
):
129 for col
in range(total_col
):
130 value
.append(str(col
))
133 for col
in range(total_col
):
134 prt
.SetColAlignment(col
, wx
.ALIGN_CENTRE
)
137 prt
.text_font_size
= 8
138 prt
.cell_left_margin
= 0
141 prt
.set_column
= columns
142 prt
.SetHeader("Test of Small Grid Size")
145 def PreviewLine(self
):
146 prt
= printout
.PrintTable(self
.frame
)
147 prt
.label
= ["Header 1", "Header 2", "Header 3"]
149 prt
.data
= [["Row 1", "1", "2"], ["Row 2", "3", "4\nNew Line to see if it also can wrap around the cell region properly\nAnother new line"]]
155 prt
= printout
.PrintTable(self
.frame
)
158 prt
.left_margin
= 0.5
159 prt
.set_columns
= [ 1, 1, 1, 1, 2, 1, 3 ]
160 prt
.label
= self
.header
165 #---------------------------------------------------------------------------
167 def runTest(frame
, nb
, log
):
168 win
= TablePanel(nb
, log
, frame
)
171 #---------------------------------------------------------------------------
179 <h2>Table Printing</h2>
181 This demo shows various ways of using the <b><i>new
182 </i></b> PrintOut class. To understand the class you need to examine the demo examples
183 and the library <a href="%s">printout.py</a> module classes.
185 The initial class primarily contains a Table preview/printing class. There is a lot of flexibility
186 in manipulating the placement, sizing, colours, alignment of the table text and cell background colors.
187 There are also a number of options for printing Header and Footer information on the page.
189 There is also a class to extract the parameters from a wxGrid and easily recreate a Table printout.
191 The data is printed from a list object containing the column and row values. The label or table header
192 can be defined and will be repeated for all pages.
194 The correct "Total Page" does get calculated and used in the print out Footer.
196 There is still problems with the print framework to properly get the total pages in the preview unless
197 the program knows it before trying to parse through the available pages. This will be fixed
198 when the framework allows for it.
201 """ % os
.path
.join(os
.path
.dirname(printout
.__file
__), "printout.py")
207 if __name__
== '__main__':
210 run
.main(['', os
.path
.basename(sys
.argv
[0])])