1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import wx
20
21
23
24 - def __init__(self, point_size=12, family=wx.FONTFAMILY_DEFAULT, style=wx.FONTSTYLE_NORMAL,
25 weight=wx.FONTWEIGHT_NORMAL, underlined=False, face_name="", encoding=wx.FONTENCODING_DEFAULT,
26 wxcolor=wx.BLACK):
27 self.wxcolor = wxcolor
28 wx.Font.__init__(self, point_size, family, style, weight, underlined, face_name, encoding)
29
32
34 self.wxcolor = wxcolor
35
36 WxColor = property(_get_wxcolor, _set_wxcolor)
37
40
42 self.PointSize = wxfont.PointSize
43 self.Family = wxfont.Family
44 self.Style = wxfont.Style
45 self.Weight = wxfont.Weight
46 self.SetUnderlined(wxfont.GetUnderlined())
47 self.FaceName = wxfont.FaceName
48 self.Encoding = wxfont.Encoding
49
50 WxFont = property(_get_wxfont, _set_wxfont)
51
53 return "%s:%s:%s:%s:%s:%s:%s:%s" % (
54 self.PointSize,
55 self.Family,
56 self.Style,
57 self.Weight,
58 self.GetUnderlined(),
59 self.FaceName,
60 self.Encoding,
61 self.WxColor,
62 )
63
65 self.PointSize += step
66
68 self.PointSize -= step
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 font_cache = {}
91
92
94 if serialized_font not in font_cache:
95 bool_map = {"True": True, "False": False}
96 (
97 point_size,
98 family,
99 style,
100 weight,
101 underlined,
102 facename,
103 encoding,
104 color,
105 ) = serialized_font.split(":")
106 color_args = color[1:-1].split(",")
107 wxcolor = wx.Colour(
108 int(color_args[0]),
109 int(color_args[1]),
110 int(color_args[2]),
111 int(color_args[3])
112 )
113 font = Font(
114 int(point_size),
115 int(family),
116 int(style),
117 int(weight),
118 bool_map[underlined],
119 facename,
120 int(encoding),
121 wxcolor
122 )
123 font_cache[serialized_font] = font
124 return font_cache[serialized_font]
125
126
127 -def set_minor_strip_text_font(font, dc, force_bold=False, force_normal=False, force_italic=False, force_upright=False):
128 set_text_font(font, dc, force_bold, force_normal, force_italic, force_upright)
129
130
131 -def set_major_strip_text_font(font, dc, force_bold=False, force_normal=False, force_italic=False, force_upright=False):
132 set_text_font(font, dc, force_bold, force_normal, force_italic, force_upright)
133
134
135 -def set_balloon_text_font(font, dc, force_bold=False, force_normal=False, force_italic=False, force_upright=False):
136 set_text_font(font, dc, force_bold, force_normal, force_italic, force_upright)
137
138
141
142
143 -def set_text_font(selectable_font, dc, force_bold=False, force_normal=False, force_italic=False, force_upright=False):
144 font = deserialize_font(selectable_font)
145 old_weight = font.Weight
146 old_style = font.Style
147 if force_bold:
148 font.Weight = wx.FONTWEIGHT_BOLD
149 elif force_normal:
150 font.Weight = wx.FONTWEIGHT_NORMAL
151 if force_italic:
152 font.Style = wx.FONTSTYLE_ITALIC
153 elif force_upright:
154 font.Style = wx.FONTSTYLE_NORMAL
155 dc.SetFont(font)
156 dc.SetTextForeground(font.WxColor)
157 font.Style = old_style
158 font.Weight = old_weight
159
160
162 data = wx.FontData()
163 data.SetInitialFont(font)
164 data.SetColour(font.WxColor)
165 dialog = wx.FontDialog(parent_window, data)
166 try:
167 if dialog.ShowModal() == wx.ID_OK:
168 font_data = dialog.GetFontData()
169 font.WxFont = font_data.GetChosenFont()
170 font.WxColor = font_data.GetColour()
171 return True
172 else:
173 return False
174 finally:
175 dialog.Destroy()
176