1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 """
29 class to handle printing
30 """
31
32 import os
33 import sys
34 import logging
35
36
37
38 logger = logging.getLogger('printer')
39 logger.setLevel(logging.DEBUG)
40
41 import settings
42
43 from PyQt4 import QtGui
44 from PyQt4 import QtCore
45 from PyQt4.QtCore import Qt
46
47 icon = '../art/tango/32x32/apps/system-users.png'
48
51 self.printer = QtGui.QPrinter()
52 self.printer.setPageSize(QtGui.QPrinter.Letter)
53
55 logger.debug('printing table view')
56 dialog = QtGui.QPrintDialog(self.printer, parent)
57 if not dialog.exec_():
58 return
59
60 client_address = '<br/>'.join(['2 Azalea St.',
61 'Fredericksburg',
62 '22406 VA'])
63
64 import datetime
65 ts = datetime.datetime.today()
66 datestring = 'Date: %s/%s/%s' % (ts.month, ts.day, ts.year)
67
68 view_content = view.toHtml()
69 context = {
70 'logo' : icon,
71 'company_name' : 'Conceptive Engineering',
72 'company_address_1' : 'L. Van Bauwelstraat 16',
73 'company_address_2' : '2220 Heist-op-den-Berg',
74 'city' : 'Belgium',
75 'date' : datestring,
76 'client_address' : client_address,
77 'client_name' : 'Client',
78 'content' : view_content,
79 'signature' : 'M. Anager'
80 }
81
82 from jinja import Environment, FileSystemLoader
83 fileloader = FileSystemLoader(settings.CANTATE_TEMPLATES_DIRECTORY)
84 e = Environment(loader=fileloader)
85 t = e.get_template('base.html')
86 html = t.render(context)
87
88 doc = QtGui.QTextDocument()
89 doc.setHtml(html)
90 doc.print_(self.printer)
91
93 logger.debug('print preview dialog')
94
95 def generate_html():
96 client_address = '<br/>'.join(['2 Azalea St.',
97 'Fredericksburg',
98 '22406 VA'])
99
100 import datetime
101 ts = datetime.datetime.today()
102 datestring = 'Date: %s/%s/%s' % (ts.month, ts.day, ts.year)
103
104 view_content = view.toHtml()
105 context = {
106 'logo' : icon,
107 'company_name' : 'Conceptive Engineering',
108 'company_address_1' : 'L. Van Bauwelstraat 16',
109 'company_address_2' : '2220 Heist-op-den-Berg',
110 'city' : 'Belgium',
111 'date' : datestring,
112 'client_address' : client_address,
113 'client_name' : 'Client',
114 'content' : view_content,
115 'signature' : 'M. Anager'
116 }
117
118 from jinja import Environment, FileSystemLoader
119 fileloader = FileSystemLoader(settings.CAMELOT_TEMPLATES_DIRECTORY)
120 e = Environment(loader=fileloader)
121 t = e.get_template('base.html')
122 html = t.render(context)
123 return html
124
125 from camelot.view.model_thread import get_model_thread
126 from camelot.view.export.printer import open_html_in_print_preview_from_gui_thread
127 mt = get_model_thread()
128 mt.post(generate_html, open_html_in_print_preview_from_gui_thread)
129