~openerp-chinese-team/openerp-china/openerp-china

« back to all changes in this revision

Viewing changes to oecn_base_fonts/oecn_base_fonts_config.py

  • Committer: Jeff Wang
  • Date: 2011-12-27 13:51:14 UTC
  • Revision ID: jeff@openerp.cn-20111227135114-u1yy9ryvv14ifylm
finished pdf font module

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
##############################################################################
19
19
 
20
20
from osv import fields, osv
21
 
 
 
21
from reportlab.lib.fontfinder import FontFinder
 
22
from reportlab import rl_config
 
23
import os
22
24
 
23
25
 
24
26
class oecn_base_fonts_map(osv.osv_memory):
25
27
    _name = 'oecn_base_fonts.map'
26
28
    def _system_fonts_get(self, cr, uid, ids, context = None):
27
29
        ''' get fonts list on server '''
28
 
        res = [('font1','font1'),('font2','font2')]
 
30
        # consider both windows and unix like systems
 
31
        res = []
 
32
        env = {
 
33
            'windir': os.environ.get('windir', os.getcwd()),
 
34
            'home': os.environ.get('HOME', os.getcwd()),
 
35
            }
 
36
        FontFolders = [
 
37
            '%(windir)s/Fonts',
 
38
            '/usr/share/fonts',
 
39
            '%(home)s/tmp/corefonts',
 
40
            ]
 
41
        folders = [ s % env for s in FontFolders]
 
42
        # get all folders under fonts directory
 
43
        ff = FontFinder( useCache = False )
 
44
        for ele in folders:
 
45
            for root, dirs, files in os.walk(ele):
 
46
                for name in dirs:
 
47
                    folders.append(os.path.join(root, name))
 
48
        
 
49
        ff.addDirectories( set ( folders ))
 
50
 
 
51
        # get fonts name and file path
 
52
        ff.search()
 
53
        for familyName in ff.getFamilyNames():
 
54
            for font in ff.getFontsInFamily(familyName):
 
55
                if font.fileName[-4:] == ".ttf":
 
56
                    res.append((font.fileName, font.name))
29
57
        return res
30
58
        
31
59
    _columns = {
32
60
        'map_id':fields.many2one('oecn_base_fonts.config','Font Map', required=True),
33
61
        'pdf_font':fields.char('Font in pdf report', size=64, required=True),
 
62
        'name':fields.char('New Font name', size=20, required=True),
34
63
        'new_font':fields.selection(_system_fonts_get, 'Font to display', required=True),
35
64
    }
 
65
    _defaults = {
 
66
        'name':'SimHei',
 
67
   }
36
68
    
37
69
oecn_base_fonts_map()
38
70
 
52
84
            config_obj = self.pool.get('ir.config_parameter')
53
85
            maps = []
54
86
            for map in o.map_ids:
55
 
                maps = maps + [(map.pdf_font, map.new_font)]
 
87
                for style in ['normal','bold','italic','bolditalic']:
 
88
                    maps = maps + [(map.pdf_font, map.name ,map.new_font, style)]
56
89
            config_obj.set_param(cr, uid, 'fonts_map', {'wrap':o.wrap,'maps':maps})
57
 
            # print str(config_obj.get_param(cr, uid, 'fonts_map'))
58
 
    
 
90
            
59
91
oecn_base_fonts_config()
60
92
 
61
93
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: