~ubuntu-branches/ubuntu/trusty/drpython/trusty

« back to all changes in this revision

Viewing changes to drStyleDialog.py

  • Committer: Bazaar Package Importer
  • Author(s): Luca Falavigna
  • Date: 2008-07-03 22:11:49 UTC
  • mfrom: (0.1.3 upstream) (8 intrepid)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: james.westby@ubuntu.com-20080703221149-puu681p4w33g3s3m
* New upstream release.
* Bump epoch due to new version numbering system.
* debian/control:
  - Adjust dependencies for wxwidgets2.8.
* debian/patches/15_output_redirection.dpatch:
  - Set standard output and error to valid UNIX locations.
* Adjust patches for new upstream release:
  - debian/patches/03_pythonfix.dpatch
* Drop patches, implemented upstream:
  - debian/patches/10_ctrl_q_to_exit_as_default_shortcut.dpatch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#       Programmer:     Daniel Pozmanter
2
 
#       E-mail:         drpython@bluebottle.com
3
 
#       Note:           You must reply to the verification e-mail to get through.
4
 
#
5
 
#       Copyright 2003-2005 Daniel Pozmanter
6
 
#
7
 
#       Distributed under the terms of the GPL (GNU Public License)
 
1
#   Programmer: Daniel Pozmanter
 
2
#   E-mail:     drpython@bluebottle.com
 
3
#   Note:       You must reply to the verification e-mail to get through.
 
4
#
 
5
#   Copyright 2003-2007 Daniel Pozmanter
 
6
#
 
7
#   Distributed under the terms of the GPL (GNU Public License)
8
8
#
9
9
#    DrPython is free software; you can redistribute it and/or modify
10
10
#    it under the terms of the GNU General Public License as published by
28
28
 
29
29
class drColorPanel(wx.Panel):
30
30
 
31
 
        def __init__(self, parent, id, point, size, fg):
32
 
                wx.Panel.__init__(self, parent, id, point, size)
33
 
 
34
 
                self.ID_COLOR = 105
35
 
                self.ID_RED = 106
36
 
                self.ID_GREEN = 107
37
 
                self.ID_BLUE = 108
38
 
 
39
 
                self.theSizer = wx.BoxSizer(wx.VERTICAL)
40
 
 
41
 
                self.txtColor = wx.TextCtrl(self, self.ID_COLOR, "", wx.Point(0, 10), wx.Size(100, -1))
42
 
 
43
 
                self.isForeground = fg
44
 
 
45
 
                self.red = wx.Slider(self, self.ID_RED, 0, 0, 255, wx.Point(0, 40), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
46
 
                self.green = wx.Slider(self, self.ID_GREEN, 0, 0, 255, wx.Point(0, 70), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
47
 
                self.blue = wx.Slider(self, self.ID_BLUE, 0, 0, 255, wx.Point(0, 100), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
48
 
 
49
 
                self.theSizer.Add(self.txtColor, 0, wx.SHAPED)
50
 
                self.theSizer.Add(self.red, 0, wx.SHAPED)
51
 
                self.theSizer.Add(self.green, 0, wx.SHAPED)
52
 
                self.theSizer.Add(self.blue, 0, wx.SHAPED)
53
 
 
54
 
                self.SetAutoLayout(True)
55
 
                self.SetSizer(self.theSizer)
56
 
 
57
 
                self.Bind(wx.EVT_SCROLL, self.OnScroll)
58
 
                self.red.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
59
 
                self.green.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
60
 
                self.blue.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
61
 
                self.Bind(wx.EVT_TEXT,  self.OnTextChange, id=self.ID_COLOR)
62
 
 
63
 
        def GetValue(self):
64
 
                return self.txtColor.GetValue()
65
 
 
66
 
        def OnLeftUp(self, event):
67
 
                self.txtColor.SetEditable(True)
68
 
                event.Skip()
69
 
 
70
 
        def OnScroll(self, event):
71
 
                self.txtColor.SetEditable(False)
72
 
                i = event.GetId()
73
 
                if (i == self.ID_RED):
74
 
                        r = self.red.GetValue()
75
 
                        sr = ''
76
 
                        if (r < 16):
77
 
                                sr = '0'
78
 
                        sr = sr + hex(r)[2:]
79
 
                        sr = sr.upper()
80
 
                        text = self.txtColor.GetValue()
81
 
                        if (len(text) is not 7):
82
 
                                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
83
 
                                return
84
 
                        self.txtColor.SetValue(text[0:1] + sr + text[3:])
85
 
                elif (i == self.ID_GREEN):
86
 
                        g = self.green.GetValue()
87
 
                        sr = ''
88
 
                        if (g < 16):
89
 
                                sr = '0'
90
 
                        sr = sr + hex(g)[2:]
91
 
                        sr = sr.upper()
92
 
                        text = self.txtColor.GetValue()
93
 
                        if (len(text) is not 7):
94
 
                                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
95
 
                                return
96
 
                        self.txtColor.SetValue(text[0:3] + sr + text[5:])
97
 
                elif (i == self.ID_BLUE):
98
 
                        b = self.blue.GetValue()
99
 
                        sr = ''
100
 
                        if (b < 16):
101
 
                                sr = '0'
102
 
                        sr = sr + hex(b)[2:]
103
 
                        sr = sr.upper()
104
 
                        text = self.txtColor.GetValue()
105
 
                        if (len(text) is not 7):
106
 
                                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
107
 
                                return
108
 
                        self.txtColor.SetValue(text[0:5] + sr + text[7:])
109
 
                event.Skip()
110
 
 
111
 
        def OnTextChange(self, event):
112
 
                v = self.txtColor.GetValue()
113
 
                if self.txtColor.IsEditable():
114
 
                        if (len(v) < 1):
115
 
                                self.red.Enable(False)
116
 
                                self.green.Enable(False)
117
 
                                self.blue.Enable(False)
118
 
                                return
119
 
                        if (v[0] == "#") and (len(v) == 7):
120
 
                                #Update Sliders
121
 
                                self.red.Enable(True)
122
 
                                self.green.Enable(True)
123
 
                                self.blue.Enable(True)
124
 
                                try:
125
 
                                        self.red.SetValue(int(v[1:3], 16))
126
 
                                        self.green.SetValue(int(v[3:5], 16))
127
 
                                        self.blue.SetValue(int(v[5:7], 16))
128
 
                                except:
129
 
                                        drScrolledMessageDialog.ShowMessage(self, ("Bad Color Data.  Should be in the form #00A3F4\nUse only digits 0-9, characters A-F"), "Error")
130
 
                        else:
131
 
                                self.red.Enable(False)
132
 
                                self.green.Enable(False)
133
 
                                self.blue.Enable(False)
134
 
                if (len(v) == 7):
135
 
                        if (v[0] == "#"):
136
 
                                #Update Parent
137
 
                                if (self.isForeground):
138
 
                                        self.GetParent().foreground = v
139
 
                                else:
140
 
                                        self.GetParent().background = v
141
 
                                self.GetParent().SetColor()
142
 
                event.Skip()
143
 
 
144
 
        def SetValue(self, colorstring):
145
 
                self.txtColor.SetValue(colorstring)
146
 
                r = int(colorstring[1:3], 16)
147
 
                g = int(colorstring[3:5], 16)
148
 
                b = int(colorstring[5:7], 16)
149
 
                self.red.SetValue(r)
150
 
                self.green.SetValue(g)
151
 
                self.blue.SetValue(b)
 
31
    def __init__(self, parent, id, point, size, fg):
 
32
        wx.Panel.__init__(self, parent, id, point, size)
 
33
 
 
34
        self.ID_COLOR = 105
 
35
        self.ID_RED = 106
 
36
        self.ID_GREEN = 107
 
37
        self.ID_BLUE = 108
 
38
 
 
39
        self.theSizer = wx.BoxSizer(wx.VERTICAL)
 
40
 
 
41
        self.txtColor = wx.TextCtrl(self, self.ID_COLOR, "", wx.Point(0, 10), wx.Size(100, -1))
 
42
 
 
43
        self.isForeground = fg
 
44
 
 
45
        self.red = wx.Slider(self, self.ID_RED, 0, 0, 255, wx.Point(0, 40), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
 
46
        self.green = wx.Slider(self, self.ID_GREEN, 0, 0, 255, wx.Point(0, 70), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
 
47
        self.blue = wx.Slider(self, self.ID_BLUE, 0, 0, 255, wx.Point(0, 100), wx.Size(100, 35), wx.SL_HORIZONTAL | wx.SL_LABELS)
 
48
 
 
49
        self.theSizer.Add(self.txtColor, 0, wx.SHAPED)
 
50
        self.theSizer.Add(self.red, 0, wx.SHAPED)
 
51
        self.theSizer.Add(self.green, 0, wx.SHAPED)
 
52
        self.theSizer.Add(self.blue, 0, wx.SHAPED)
 
53
 
 
54
        self.SetAutoLayout(True)
 
55
        self.SetSizer(self.theSizer)
 
56
 
 
57
        self.Bind(wx.EVT_SCROLL, self.OnScroll)
 
58
        self.red.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
 
59
        self.green.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
 
60
        self.blue.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
 
61
        self.Bind(wx.EVT_TEXT,  self.OnTextChange, id=self.ID_COLOR)
 
62
 
 
63
    def GetValue(self):
 
64
        return self.txtColor.GetValue()
 
65
 
 
66
    def OnLeftUp(self, event):
 
67
        self.txtColor.SetEditable(True)
 
68
        event.Skip()
 
69
 
 
70
    def OnScroll(self, event):
 
71
        self.txtColor.SetEditable(False)
 
72
        i = event.GetId()
 
73
        if i == self.ID_RED:
 
74
            r = self.red.GetValue()
 
75
            sr = ''
 
76
            if r < 16:
 
77
                sr = '0'
 
78
            sr = sr + hex(r)[2:]
 
79
            sr = sr.upper()
 
80
            text = self.txtColor.GetValue()
 
81
            if len(text) != 7:
 
82
                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
 
83
                return
 
84
            self.txtColor.SetValue(text[0:1] + sr + text[3:])
 
85
        elif i == self.ID_GREEN:
 
86
            g = self.green.GetValue()
 
87
            sr = ''
 
88
            if g < 16:
 
89
                sr = '0'
 
90
            sr = sr + hex(g)[2:]
 
91
            sr = sr.upper()
 
92
            text = self.txtColor.GetValue()
 
93
            if len(text) != 7:
 
94
                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
 
95
                return
 
96
            self.txtColor.SetValue(text[0:3] + sr + text[5:])
 
97
        elif i == self.ID_BLUE:
 
98
            b = self.blue.GetValue()
 
99
            sr = ''
 
100
            if b < 16:
 
101
                sr = '0'
 
102
            sr = sr + hex(b)[2:]
 
103
            sr = sr.upper()
 
104
            text = self.txtColor.GetValue()
 
105
            if len(text) != 7:
 
106
                drScrolledMessageDialog.ShowMessage(self, ("The text box above should be formatted as follows:\n#0033AA,\nStart with the # character, followed by 6 characters which can be 0-9 or a-f.\nDrPython will ignore any changes to the color until this is fixed."), "Error")
 
107
                return
 
108
            self.txtColor.SetValue(text[0:5] + sr + text[7:])
 
109
        event.Skip()
 
110
 
 
111
    def OnTextChange(self, event):
 
112
        v = self.txtColor.GetValue()
 
113
        if self.txtColor.IsEditable():
 
114
            if not v:
 
115
                self.red.Enable(False)
 
116
                self.green.Enable(False)
 
117
                self.blue.Enable(False)
 
118
                return
 
119
            if (v[0] == "#") and (len(v) == 7):
 
120
                #Update Sliders
 
121
                self.red.Enable(True)
 
122
                self.green.Enable(True)
 
123
                self.blue.Enable(True)
 
124
                try:
 
125
                    self.red.SetValue(int(v[1:3], 16))
 
126
                    self.green.SetValue(int(v[3:5], 16))
 
127
                    self.blue.SetValue(int(v[5:7], 16))
 
128
                except:
 
129
                    drScrolledMessageDialog.ShowMessage(self, ("Bad Color Data.  Should be in the form #00A3F4\nUse only digits 0-9, characters A-F"), "Error")
 
130
            else:
 
131
                self.red.Enable(False)
 
132
                self.green.Enable(False)
 
133
                self.blue.Enable(False)
 
134
        if len(v) == 7:
 
135
            if v[0] == "#":
 
136
                #Update Parent
 
137
                if self.isForeground:
 
138
                    self.GetParent().foreground = v
 
139
                else:
 
140
                    self.GetParent().background = v
 
141
                self.GetParent().SetColor()
 
142
        event.Skip()
 
143
 
 
144
    def SetValue(self, colorstring):
 
145
        self.txtColor.SetValue(colorstring)
 
146
        r = int(colorstring[1:3], 16)
 
147
        g = int(colorstring[3:5], 16)
 
148
        b = int(colorstring[5:7], 16)
 
149
        self.red.SetValue(r)
 
150
        self.green.SetValue(g)
 
151
        self.blue.SetValue(b)
152
152
 
153
153
#*****************************************
154
154
 
155
155
class drSeparatorDialog(wx.Dialog):
156
156
 
157
 
        def __init__(self, parent, title):
158
 
 
159
 
                wx.Dialog.__init__(self, parent, -1, title, wx.DefaultPosition, wx.Size(-1, -1))
160
 
 
161
 
                self.parent = parent
162
 
 
163
 
                self.ID_CANCEL = 101
164
 
                self.ID_OK = 102
165
 
                self.ID_SAVE = 103
166
 
 
167
 
                self.favorites = {0:('#000000', '#CAFFFF'), 1:('#000000', '#FFFFC6'), 2:('#000000', '#BEFFC6'),
168
 
                3:('#000000', '#FFA400'), 4:('#00FF00', '#000000')}
169
 
 
170
 
                self.favoritefile = self.parent.userpreferencesdirectory + '/.separator.favorite.colours.dat'
171
 
 
172
 
                self.txtLabel = wx.TextCtrl(self, -1, 'Label', size=wx.Size(300, -1), style=wx.TE_PROCESS_ENTER|wx.TE_RICH2)
173
 
 
174
 
                self.txtLabel.SetSelection(0, 5)
175
 
 
176
 
                self.btn0 = wx.Button(self, 0, '&0', style=wx.BU_EXACTFIT)
177
 
                self.btn1 = wx.Button(self, 1, '&1', style=wx.BU_EXACTFIT)
178
 
                self.btn2 = wx.Button(self, 2, '&2', style=wx.BU_EXACTFIT)
179
 
                self.btn3 = wx.Button(self, 3, '&3', style=wx.BU_EXACTFIT)
180
 
                self.btn4 = wx.Button(self, 4, '&4', style=wx.BU_EXACTFIT)
181
 
 
182
 
                self.btnSave = wx.Button(self, self.ID_SAVE, '&Save Favorite')
183
 
 
184
 
                self.fgPanel = drColorPanel(self, -1, wx.Point(10, 200), wx.Size(400, 350), True)
185
 
 
186
 
                self.bgPanel = drColorPanel(self, -1, wx.Point(220, 200), wx.Size(400, 350), False)
187
 
 
188
 
                self.fgPanel.SetValue('#000000')
189
 
                self.bgPanel.SetValue('#FFFFFF')
190
 
 
191
 
                self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel", wx.Point(5, 0), wx.Size(-1, -1))
192
 
                self.btnOk = wx.Button(self, self.ID_OK, "&Ok", wx.Point(400, 0), wx.Size(-1, -1))
193
 
 
194
 
                self.LoadFavorites()
195
 
 
196
 
                #Sizer:
197
 
 
198
 
                self.theSizer = wx.BoxSizer(wx.VERTICAL)
199
 
                self.textSizer = wx.BoxSizer(wx.HORIZONTAL)
200
 
                self.favoritesSizer = wx.BoxSizer(wx.HORIZONTAL)
201
 
                self.panelSizer = wx.BoxSizer(wx.HORIZONTAL)
202
 
                self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
203
 
 
204
 
                self.favoritesSizer.Add(self.btn0, 0, wx.SHAPED | wx.ALIGN_CENTER)
205
 
                self.favoritesSizer.Add(self.btn1, 0, wx.SHAPED | wx.ALIGN_CENTER)
206
 
                self.favoritesSizer.Add(self.btn2, 0, wx.SHAPED | wx.ALIGN_CENTER)
207
 
                self.favoritesSizer.Add(self.btn3, 0, wx.SHAPED | wx.ALIGN_CENTER)
208
 
                self.favoritesSizer.Add(self.btn4, 0, wx.SHAPED | wx.ALIGN_CENTER)
209
 
                self.favoritesSizer.Add(self.btnSave, 0, wx.SHAPED | wx.ALIGN_CENTER)
210
 
 
211
 
                self.panelSizer.Add(self.fgPanel, 1, wx.SHAPED)
212
 
                self.panelSizer.Add(self.bgPanel, 1, wx.SHAPED | wx.ALIGN_RIGHT)
213
 
 
214
 
                self.buttonSizer.Add(self.btnCancel, 1, wx.SHAPED)
215
 
                self.buttonSizer.Add(self.btnOk, 1, wx.SHAPED | wx.ALIGN_RIGHT)
216
 
 
217
 
                self.textSizer.Add(self.txtLabel, 1, wx.SHAPED | wx.ALIGN_CENTER)
218
 
 
219
 
                self.theSizer.Add(self.textSizer, 0, wx.SHAPED)
220
 
                self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
221
 
                self.theSizer.Add(wx.StaticText(self, -1, 'Favorite Colours:'), 0, wx.SHAPED)
222
 
                self.theSizer.Add(self.favoritesSizer, 0, wx.SHAPED)
223
 
                self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
224
 
                self.theSizer.Add(self.panelSizer, 1, wx.EXPAND)
225
 
                self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
226
 
                self.theSizer.Add(self.buttonSizer, 0, wx.EXPAND)
227
 
 
228
 
                self.SetAutoLayout(True)
229
 
                self.SetSizerAndFit(self.theSizer)
230
 
 
231
 
                #End Sizer
232
 
 
233
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
234
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
235
 
                self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=0)
236
 
                self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=1)
237
 
                self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=2)
238
 
                self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=3)
239
 
                self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=4)
240
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnSave, id=self.ID_SAVE)
241
 
                self.Bind(wx.EVT_CHAR, self.OnChar)
242
 
                self.txtLabel.Bind(wx.EVT_CHAR, self.OnChar)
243
 
 
244
 
        def GetLabel(self):
245
 
                return '#---' + self.txtLabel.GetValue() + '---' + self.fgPanel.GetValue() + self.bgPanel.GetValue() + '---------------------------------'
246
 
 
247
 
        def LoadFavorites(self):
248
 
                if os.path.exists(self.favoritefile):
249
 
                        try:
250
 
                                f = file(self.favoritefile, 'rb')
251
 
                                text = f.read()
252
 
                                f.close()
253
 
 
254
 
                                for fL in range(5):
255
 
                                        result = ExtractPreferenceFromText(text, str(fL))
256
 
                                        if len(result) > 0:
257
 
                                                results = result.split(',')
258
 
                                                if len(results) == 2:
259
 
                                                        self.favorites[fL] = results
260
 
                        except:
261
 
                                self.parent.ShowMessage('Error Loading Favorite Colours', 'Error')
262
 
 
263
 
        def OnbtnCancel(self, event):
264
 
                self.EndModal(wx.ID_CANCEL)
265
 
 
266
 
        def OnbtnOk(self, event):
267
 
                self.EndModal(wx.ID_OK)
268
 
 
269
 
        def OnbtnSave(self, event):
270
 
                d = wx.SingleChoiceDialog(self, "Store Current Colour in Which Slot?", "Save Favorite", ['0', '1', '2', '3', '4'], wx.OK|wx.CANCEL)
271
 
                answer = d.ShowModal()
272
 
                i = d.GetSelection()
273
 
                d.Destroy()
274
 
                if (answer == wx.ID_OK):
275
 
                        try:
276
 
                                self.favorites[i] = (self.fgPanel.GetValue(), self.bgPanel.GetValue())
277
 
                                f = file(self.favoritefile, 'wb')
278
 
                                x = 0
279
 
                                l = len(self.favorites)
280
 
                                while x < l:
281
 
                                        f.write('<' + str(x) + '>' + self.favorites[x][0] + ',' + self.favorites[x][1] + '</' + str(x) + '>')
282
 
                                        x += 1
283
 
                                f.close()
284
 
                        except:
285
 
                                self.parent.ShowMessage('Error Saving Favorite Colours', 'Error')
286
 
 
287
 
 
288
 
        def OnChar(self, event):
289
 
                if (event.GetKeyCode() == wx.WXK_ESCAPE):
290
 
                        self.OnbtnCancel(event)
291
 
                elif (event.GetKeyCode() == wx.WXK_RETURN):
292
 
                        self.OnbtnOk(event)
293
 
                else:
294
 
                        event.Skip()
295
 
 
296
 
        def OnFavorite(self, event):
297
 
                i = event.GetId()
298
 
 
299
 
                self.fgPanel.SetValue(self.favorites[i][0])
300
 
                self.bgPanel.SetValue(self.favorites[i][1])
301
 
 
302
 
        def SetColor(self):
303
 
                self.txtLabel.SetForegroundColour(wx.Colour(self.fgPanel.red.GetValue(), self.fgPanel.green.GetValue(), self.fgPanel.blue.GetValue()))
304
 
                self.txtLabel.SetBackgroundColour(wx.Colour(self.bgPanel.red.GetValue(), self.bgPanel.green.GetValue(), self.bgPanel.blue.GetValue()))
 
157
    def __init__(self, parent, title):
 
158
 
 
159
        wx.Dialog.__init__(self, parent, -1, title, wx.DefaultPosition, wx.Size(-1, -1))
 
160
 
 
161
        self.parent = parent
 
162
 
 
163
        self.ID_CANCEL = 101
 
164
        self.ID_OK = 102
 
165
        self.ID_SAVE = 103
 
166
 
 
167
        self.favorites = {0:('#000000', '#CAFFFF'), 1:('#000000', '#FFFFC6'), 2:('#000000', '#BEFFC6'),
 
168
        3:('#000000', '#FFA400'), 4:('#00FF00', '#000000')}
 
169
 
 
170
        self.favoritefile = self.parent.datdirectory + '/.separator.favorite.colours.dat'
 
171
 
 
172
        self.txtLabel = wx.TextCtrl(self, -1, 'Label', size=wx.Size(300, -1), style=wx.TE_PROCESS_ENTER|wx.TE_RICH2)
 
173
 
 
174
        self.txtLabel.SetSelection(0, 5)
 
175
 
 
176
        self.btn0 = wx.Button(self, 0, '&0', style=wx.BU_EXACTFIT)
 
177
        self.btn1 = wx.Button(self, 1, '&1', style=wx.BU_EXACTFIT)
 
178
        self.btn2 = wx.Button(self, 2, '&2', style=wx.BU_EXACTFIT)
 
179
        self.btn3 = wx.Button(self, 3, '&3', style=wx.BU_EXACTFIT)
 
180
        self.btn4 = wx.Button(self, 4, '&4', style=wx.BU_EXACTFIT)
 
181
 
 
182
        self.btnSave = wx.Button(self, self.ID_SAVE, '&Save Favorite')
 
183
 
 
184
        self.fgPanel = drColorPanel(self, -1, wx.Point(10, 200), wx.Size(400, 350), True)
 
185
 
 
186
        self.bgPanel = drColorPanel(self, -1, wx.Point(220, 200), wx.Size(400, 350), False)
 
187
 
 
188
        self.fgPanel.SetValue('#000000')
 
189
        self.bgPanel.SetValue('#FFFFFF')
 
190
 
 
191
        self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel", wx.Point(5, 0), wx.Size(-1, -1))
 
192
        self.btnOk = wx.Button(self, self.ID_OK, "&Ok", wx.Point(400, 0), wx.Size(-1, -1))
 
193
 
 
194
        self.LoadFavorites()
 
195
 
 
196
        #Sizer:
 
197
 
 
198
        self.theSizer = wx.BoxSizer(wx.VERTICAL)
 
199
        self.textSizer = wx.BoxSizer(wx.HORIZONTAL)
 
200
        self.favoritesSizer = wx.BoxSizer(wx.HORIZONTAL)
 
201
        self.panelSizer = wx.BoxSizer(wx.HORIZONTAL)
 
202
        self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
 
203
 
 
204
        self.favoritesSizer.Add(self.btn0, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
205
        self.favoritesSizer.Add(self.btn1, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
206
        self.favoritesSizer.Add(self.btn2, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
207
        self.favoritesSizer.Add(self.btn3, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
208
        self.favoritesSizer.Add(self.btn4, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
209
        self.favoritesSizer.Add(self.btnSave, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
210
 
 
211
        self.panelSizer.Add(self.fgPanel, 1, wx.SHAPED)
 
212
        self.panelSizer.Add(self.bgPanel, 1, wx.SHAPED | wx.ALIGN_RIGHT)
 
213
 
 
214
        self.buttonSizer.Add(self.btnCancel, 1, wx.SHAPED)
 
215
        self.buttonSizer.Add(self.btnOk, 1, wx.SHAPED | wx.ALIGN_RIGHT)
 
216
 
 
217
        self.textSizer.Add(self.txtLabel, 1, wx.SHAPED | wx.ALIGN_CENTER)
 
218
 
 
219
        self.theSizer.Add(self.textSizer, 0, wx.SHAPED)
 
220
        self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
 
221
        self.theSizer.Add(wx.StaticText(self, -1, 'Favorite Colours:'), 0, wx.SHAPED)
 
222
        self.theSizer.Add(self.favoritesSizer, 0, wx.SHAPED)
 
223
        self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
 
224
        self.theSizer.Add(self.panelSizer, 1, wx.EXPAND)
 
225
        self.theSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.SHAPED)
 
226
        self.theSizer.Add(self.buttonSizer, 0, wx.EXPAND)
 
227
 
 
228
        self.SetAutoLayout(True)
 
229
        self.SetSizerAndFit(self.theSizer)
 
230
 
 
231
        #End Sizer
 
232
 
 
233
        self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
 
234
        self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
 
235
        self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=0)
 
236
        self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=1)
 
237
        self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=2)
 
238
        self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=3)
 
239
        self.Bind(wx.EVT_BUTTON,  self.OnFavorite, id=4)
 
240
        self.Bind(wx.EVT_BUTTON,  self.OnbtnSave, id=self.ID_SAVE)
 
241
        self.Bind(wx.EVT_CHAR, self.OnChar)
 
242
        self.txtLabel.Bind(wx.EVT_CHAR, self.OnChar)
 
243
 
 
244
    def GetLabel(self):
 
245
        return '#---' + self.txtLabel.GetValue() + '---' + self.fgPanel.GetValue() + self.bgPanel.GetValue() + '---------------------------------'
 
246
 
 
247
    def LoadFavorites(self):
 
248
        if os.path.exists(self.favoritefile):
 
249
            try:
 
250
                f = file(self.favoritefile, 'rb')
 
251
                text = f.read()
 
252
                f.close()
 
253
 
 
254
                for fL in range(5):
 
255
                    result = ExtractPreferenceFromText(text, str(fL))
 
256
                    if result:
 
257
                        results = result.split(',')
 
258
                        if len(results) == 2:
 
259
                            self.favorites[fL] = results
 
260
            except:
 
261
                self.parent.ShowMessage('Error Loading Favorite Colours', 'Error')
 
262
 
 
263
    def OnbtnCancel(self, event):
 
264
        self.EndModal(wx.ID_CANCEL)
 
265
 
 
266
    def OnbtnOk(self, event):
 
267
        self.EndModal(wx.ID_OK)
 
268
 
 
269
    def OnbtnSave(self, event):
 
270
        d = wx.SingleChoiceDialog(self, "Store Current Colour in Which Slot?", "Save Favorite", ['0', '1', '2', '3', '4'], wx.OK|wx.CANCEL)
 
271
        answer = d.ShowModal()
 
272
        i = d.GetSelection()
 
273
        d.Destroy()
 
274
        if answer == wx.ID_OK:
 
275
            try:
 
276
                self.favorites[i] = (self.fgPanel.GetValue(), self.bgPanel.GetValue())
 
277
                f = file(self.favoritefile, 'wb')
 
278
                x = 0
 
279
                l = len(self.favorites)
 
280
                while x < l:
 
281
                    f.write('<' + str(x) + '>' + self.favorites[x][0] + ',' + self.favorites[x][1] + '</' + str(x) + '>')
 
282
                    x += 1
 
283
                f.close()
 
284
            except:
 
285
                self.parent.ShowMessage('Error Saving Favorite Colours', 'Error')
 
286
 
 
287
 
 
288
    def OnChar(self, event):
 
289
        if event.GetKeyCode() == wx.WXK_ESCAPE:
 
290
            self.OnbtnCancel(event)
 
291
        elif event.GetKeyCode() == wx.WXK_RETURN:
 
292
            self.OnbtnOk(event)
 
293
        else:
 
294
            event.Skip()
 
295
 
 
296
    def OnFavorite(self, event):
 
297
        i = event.GetId()
 
298
 
 
299
        self.fgPanel.SetValue(self.favorites[i][0])
 
300
        self.bgPanel.SetValue(self.favorites[i][1])
 
301
 
 
302
    def SetColor(self):
 
303
        self.txtLabel.SetForegroundColour(wx.Colour(self.fgPanel.red.GetValue(), self.fgPanel.green.GetValue(), self.fgPanel.blue.GetValue()))
 
304
        self.txtLabel.SetBackgroundColour(wx.Colour(self.bgPanel.red.GetValue(), self.bgPanel.green.GetValue(), self.bgPanel.blue.GetValue()))
305
305
 
306
306
#*****************************************
307
307
 
308
308
class drSimpleStyleDialog(wx.Dialog):
309
309
 
310
 
        def __init__(self, parent, id, title, stylestring, defaultstylestring, ChangeSpec = 0):
311
 
 
312
 
                wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(-1, -1))
313
 
 
314
 
                self.ID_CANCEL = 101
315
 
                self.ID_OK = 102
316
 
 
317
 
                self.ID_FONTS = 103
318
 
                self.ID_SIZE = 104
319
 
 
320
 
                self.ID_BOLD = 109
321
 
                self.ID_ITALIC = 110
322
 
                self.ID_UNDERLINE = 111
323
 
 
324
 
                self.Enum = wx.FontEnumerator()
325
 
                self.Enum.EnumerateFacenames()
326
 
                self.FontList = self.Enum.GetFacenames()
327
 
                self.FontList.sort()
328
 
 
329
 
                self.OK = False
330
 
 
331
 
                self.font = getStyleProperty("face", stylestring)
332
 
                if (len(self.font) <= 0):
333
 
                        self.font = getStyleProperty("face", defaultstylestring)
334
 
                self.size = getStyleProperty("size", stylestring)
335
 
                if (len(self.size) <= 0):
336
 
                        self.size = getStyleProperty("size", defaultstylestring)
337
 
                self.foreground = getStyleProperty("fore", stylestring)
338
 
                if (len(self.foreground) <= 0):
339
 
                        self.foreground = getStyleProperty("fore", defaultstylestring)
340
 
                self.background = getStyleProperty("back", stylestring)
341
 
                if (len(self.background) <= 0):
342
 
                        self.background = getStyleProperty("back", defaultstylestring)
343
 
                self.bold = getStyleProperty("bold", stylestring)
344
 
                self.italic = getStyleProperty("italic", stylestring)
345
 
                self.underline = getStyleProperty("underline", stylestring)
346
 
                self.txtPreview = wx.stc.StyledTextCtrl(self, id, wx.Point(225, 15), wx.Size(225, 150))
347
 
 
348
 
                if (ChangeSpec > 0):
349
 
                        self.font = getStyleProperty("face", defaultstylestring)
350
 
                        self.size = getStyleProperty("size", defaultstylestring)
351
 
                        if (ChangeSpec == 1):
352
 
                                self.background = getStyleProperty("back", defaultstylestring)
353
 
                        elif (ChangeSpec == 3):
354
 
                                self.foreground = getStyleProperty("fore", defaultstylestring)
355
 
 
356
 
                if self.font not in self.FontList:
357
 
                        f1 = string.capwords(self.font)
358
 
                        f2 = string.lower(self.font)
359
 
                        if f1 in self.FontList:
360
 
                                self.font = f1
361
 
                        elif f2 in self.FontList:
362
 
                                self.font = f2
363
 
 
364
 
                try:
365
 
                        self.FontList.index(self.font)
366
 
                except:
367
 
                        drScrolledMessageDialog.ShowMessage(self, ("Current Font (" + self.font + ") is not in the fontlist.  \nSetting to the default."), "Error")
368
 
                        self.font = 'courier'
369
 
                        self.size = '12'
370
 
                        try:
371
 
                                self.FontList.index(self.font)
372
 
                        except:
373
 
                                self.font = 'Courier'
374
 
                        try:
375
 
                                self.FontList.index(self.font)
376
 
                        except:
377
 
                                drScrolledMessageDialog.ShowMessage(self, ("Something is quite screwy with fonts on your system.\nNo font will be selected.\nSelect one from the list manually."), "Error")
378
 
 
379
 
                self.txtPreview.SetText("Preview\n()[]{}\n0123")
380
 
                self.txtPreview.SetUseHorizontalScrollBar(0)
381
 
 
382
 
                self.txtPreview.SetReadOnly(1)
383
 
                self.txtPreview.SetMarginWidth(0, 0)
384
 
                self.txtPreview.SetMarginWidth(1, 0)
385
 
                self.txtPreview.SetMarginWidth(2, 0)
386
 
 
387
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
388
 
 
389
 
                self.txtPreview.StyleClearAll()
390
 
 
391
 
                self.txtPreview.StartStyling(0, 0xff)
392
 
 
393
 
                self.boxFonts = wx.ListBox(self, self.ID_FONTS, wx.Point(10, 10), wx.Size(250, 250), self.FontList)
394
 
 
395
 
                try:
396
 
                        self.boxFonts.SetStringSelection(self.font)
397
 
                except:
398
 
                        drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
399
 
                        self.boxFonts.SetSelection(0)
400
 
 
401
 
                self.boxSize = wx.ComboBox(self, self.ID_SIZE, self.size, wx.Point(10, 175), wx.Size(150, 50), ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30'])
402
 
 
403
 
                self.fgPanel = drColorPanel(self, id, wx.Point(10, 200), wx.Size(400, 225), True)
404
 
                self.fgPanel.SetValue(self.foreground)
405
 
                self.bgPanel = drColorPanel(self, id, wx.Point(220, 200), wx.Size(400, 225), False)
406
 
                self.bgPanel.SetValue(self.background)
407
 
 
408
 
                self.chkBold = wx.CheckBox(self, self.ID_BOLD, "Bold", wx.Point(10, 345))
409
 
                if (len(self.bold) > 0):
410
 
                        self.chkBold.SetValue(1)
411
 
                self.chkItalic = wx.CheckBox(self, self.ID_ITALIC, "Italic", wx.Point(110, 345))
412
 
                if (len(self.italic) > 0):
413
 
                        self.chkItalic.SetValue(1)
414
 
                self.chkUnderline = wx.CheckBox(self, self.ID_UNDERLINE, "Underline", wx.Point(210, 345))
415
 
                if (len(self.underline) > 0):
416
 
                        self.chkUnderline.SetValue(1)
417
 
 
418
 
                if (ChangeSpec > 0):
419
 
                        self.boxFonts.Enable(False)
420
 
                        self.boxSize.Enable(False)
421
 
                        self.chkBold.Enable(False)
422
 
                        self.chkItalic.Enable(False)
423
 
                        self.chkUnderline.Enable(False)
424
 
                        if (ChangeSpec == 1):
425
 
                                self.bgPanel.Enable(False)
426
 
                        elif (ChangeSpec == 3):
427
 
                                self.fgPanel.Enable(False)
428
 
 
429
 
                self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel", wx.Point(5, 0), wx.Size(-1, -1))
430
 
                self.btnOk = wx.Button(self, self.ID_OK, "&Ok", wx.Point(300, 0), wx.Size(-1, -1))
431
 
 
432
 
                #Sizer:
433
 
 
434
 
                self.theSizer = wx.FlexGridSizer(2, 2, 5, 1)
435
 
                self.styleSizerLeft = wx.BoxSizer(wx.VERTICAL)
436
 
                self.styleSizerRight = wx.BoxSizer(wx.VERTICAL)
437
 
 
438
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "Font:"), 0, wx.SHAPED)
439
 
                self.styleSizerLeft.Add(self.boxFonts, 0, wx.SHAPED)
440
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "Size:"), 0, wx.SHAPED)
441
 
                self.styleSizerLeft.Add(self.boxSize, 0, wx.SHAPED)
442
 
 
443
 
                self.styleSizerLeft.Add(self.chkBold, 0, wx.SHAPED)
444
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
445
 
                self.styleSizerLeft.Add(self.chkItalic, 0, wx.SHAPED)
446
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
447
 
                self.styleSizerLeft.Add(self.chkUnderline, 0, wx.SHAPED)
448
 
 
449
 
                self.styleSizerRight.Add(self.txtPreview, 0, wx.SHAPED)
450
 
                self.styleSizerRight.Add(wx.StaticText(self, -1, 'Foreground:'), 0, wx.SHAPED)
451
 
                self.styleSizerRight.Add(self.fgPanel, 0, wx.SHAPED)
452
 
                self.styleSizerRight.Add(wx.StaticText(self, -1, 'Background:'), 0, wx.SHAPED)
453
 
                self.styleSizerRight.Add(self.bgPanel, 1, wx.SHAPED)
454
 
 
455
 
                self.theSizer.Add(self.styleSizerLeft, 0, wx.SHAPED)
456
 
                self.theSizer.Add(self.styleSizerRight, 0, wx.SHAPED)
457
 
                self.theSizer.Add(self.btnCancel, 0, wx.SHAPED)
458
 
                self.theSizer.Add(self.btnOk, 0, wx.SHAPED | wx.ALIGN_RIGHT)
459
 
 
460
 
                self.SetAutoLayout(True)
461
 
                self.SetSizerAndFit(self.theSizer)
462
 
 
463
 
                self.btnCancel.SetDefault()
464
 
 
465
 
                #End Sizer
466
 
 
467
 
                self.Bind(wx.EVT_LISTBOX,  self.OnFontSelect, id=self.ID_FONTS)
468
 
                self.Bind(wx.EVT_COMBOBOX,  self.OnSizeSelect, id=self.ID_SIZE)
469
 
                self.Bind(wx.EVT_TEXT,  self.OnChangeSize, id=self.ID_SIZE)
470
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnBold, id=self.ID_BOLD)
471
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnItalic, id=self.ID_ITALIC)
472
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnUnderline, id=self.ID_UNDERLINE)
473
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
474
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
475
 
 
476
 
        def OnChangeSize(self, event):
477
 
                self.size = self.boxSize.GetValue()
478
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
479
 
                self.txtPreview.StyleClearAll()
480
 
                self.txtPreview.StartStyling(0, 0xff)
481
 
 
482
 
        def OnFontSelect(self, event):
483
 
                self.font = self.boxFonts.GetStringSelection()
484
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
485
 
                self.txtPreview.StyleClearAll()
486
 
                self.txtPreview.StartStyling(0, 0xff)
487
 
 
488
 
        def OnSizeSelect(self, event):
489
 
                self.size = self.boxSize.GetStringSelection()
490
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
491
 
                self.txtPreview.StyleClearAll()
492
 
                self.txtPreview.StartStyling(0, 0xff)
493
 
 
494
 
        def SetColor(self):
495
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
496
 
                self.txtPreview.StyleClearAll()
497
 
                self.txtPreview.StartStyling(0, 0xff)
498
 
 
499
 
        def OnBold(self, event):
500
 
                if (self.chkBold.IsChecked()):
501
 
                        self.bold = "bold"
502
 
                else:
503
 
                        self.bold = ""
504
 
                self.txtPreview.StyleResetDefault()
505
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
506
 
                self.txtPreview.StyleClearAll()
507
 
                self.txtPreview.StartStyling(0, 0xff)
508
 
 
509
 
        def OnItalic(self, event):
510
 
                if (self.chkItalic.IsChecked()):
511
 
                        self.italic = "italic"
512
 
                else:
513
 
                        self.italic = ""
514
 
                self.txtPreview.StyleResetDefault()
515
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
516
 
                self.txtPreview.StyleClearAll()
517
 
                self.txtPreview.StartStyling(0, 0xff)
518
 
 
519
 
        def OnUnderline(self, event):
520
 
                if (self.chkUnderline.IsChecked()):
521
 
                        self.underline = "underline"
522
 
                else:
523
 
                        self.underline = ""
524
 
                self.txtPreview.StyleResetDefault()
525
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
526
 
                self.txtPreview.StyleClearAll()
527
 
                self.txtPreview.StartStyling(0, 0xff)
528
 
 
529
 
        def OnbtnCancel(self, event):
530
 
                self.EndModal(0)
531
 
 
532
 
        def OnbtnOk(self, event):
533
 
                self.OK = True
534
 
                self.EndModal(0)
535
 
 
536
 
        def ClickedOk(self):
537
 
                return self.OK
538
 
 
539
 
        def GetBackground(self):
540
 
                return self.background
541
 
 
542
 
        def GetColorString(self):
543
 
                return ("fore:" + self.foreground + ",back:" + self.background)
544
 
 
545
 
        def GetForeground(self):
546
 
                return self.foreground
547
 
 
548
 
        def GetStyleString(self):
549
 
                return ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline)
 
310
    def __init__(self, parent, id, title, stylestring, defaultstylestring, ChangeSpec = 0):
 
311
 
 
312
        wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(-1, -1))
 
313
 
 
314
        self.ID_CANCEL = 101
 
315
        self.ID_OK = 102
 
316
 
 
317
        self.ID_FONTS = 103
 
318
        self.ID_SIZE = 104
 
319
 
 
320
        self.ID_BOLD = 109
 
321
        self.ID_ITALIC = 110
 
322
        self.ID_UNDERLINE = 111
 
323
 
 
324
        self.Enum = wx.FontEnumerator()
 
325
        self.Enum.EnumerateFacenames()
 
326
        self.FontList = self.Enum.GetFacenames()
 
327
        self.FontList.sort()
 
328
 
 
329
        self.OK = False
 
330
 
 
331
        self.font = getStyleProperty("face", stylestring)
 
332
        if not self.font:
 
333
            self.font = getStyleProperty("face", defaultstylestring)
 
334
        self.size = getStyleProperty("size", stylestring)
 
335
        if not self.size:
 
336
            self.size = getStyleProperty("size", defaultstylestring)
 
337
        self.foreground = getStyleProperty("fore", stylestring)
 
338
        if not self.foreground:
 
339
            self.foreground = getStyleProperty("fore", defaultstylestring)
 
340
        self.background = getStyleProperty("back", stylestring)
 
341
        if not self.background:
 
342
            self.background = getStyleProperty("back", defaultstylestring)
 
343
        self.bold = getStyleProperty("bold", stylestring)
 
344
        self.italic = getStyleProperty("italic", stylestring)
 
345
        self.underline = getStyleProperty("underline", stylestring)
 
346
        self.txtPreview = wx.stc.StyledTextCtrl(self, id, wx.Point(225, 15), wx.Size(225, 150))
 
347
 
 
348
        if ChangeSpec > 0:
 
349
            self.font = getStyleProperty("face", defaultstylestring)
 
350
            self.size = getStyleProperty("size", defaultstylestring)
 
351
            if ChangeSpec == 1:
 
352
                self.background = getStyleProperty("back", defaultstylestring)
 
353
            elif ChangeSpec == 3:
 
354
                self.foreground = getStyleProperty("fore", defaultstylestring)
 
355
 
 
356
        if self.font not in self.FontList:
 
357
            old=self.font
 
358
            self.size = '12'
 
359
            options=['Courier','Courier 10 Pitch','Monospace','Sans','']
 
360
            for font in options:
 
361
                if font in self.FontList:
 
362
                    self.font=font
 
363
                    break
 
364
            drScrolledMessageDialog.ShowMessage(self, ("Default font [%s] not found! \nChoosed [%s] instead." %(old,self.font)), "Error")
 
365
 
 
366
        self.txtPreview.SetText("Preview\n()[]{}\n0123")
 
367
        self.txtPreview.SetUseHorizontalScrollBar(0)
 
368
 
 
369
        self.txtPreview.SetReadOnly(1)
 
370
        self.txtPreview.SetMarginWidth(0, 0)
 
371
        self.txtPreview.SetMarginWidth(1, 0)
 
372
        self.txtPreview.SetMarginWidth(2, 0)
 
373
 
 
374
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
375
 
 
376
        self.txtPreview.StyleClearAll()
 
377
 
 
378
        self.txtPreview.StartStyling(0, 0xff)
 
379
 
 
380
        self.boxFonts = wx.ListBox(self, self.ID_FONTS, wx.Point(10, 10), wx.Size(250, 250), self.FontList)
 
381
 
 
382
        try:
 
383
            #self.boxFonts.SetStringSelection(self.font)
 
384
            i=self.boxFonts.FindString(self.font)
 
385
            if i<0:
 
386
                i=0
 
387
            self.boxFonts.Select(i)
 
388
            #self.boxFonts.EnsureVisible(i) # Bug: Doesn't work 
 
389
            self.boxFonts.SetFirstItem(i)
 
390
            
 
391
            
 
392
            
 
393
            
 
394
        except:
 
395
            drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
 
396
            self.boxFonts.SetSelection(0)
 
397
 
 
398
        self.boxSize = wx.ComboBox(self, self.ID_SIZE, self.size, wx.Point(10, 175), wx.Size(150, 50), ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30'])
 
399
 
 
400
        self.fgPanel = drColorPanel(self, id, wx.Point(10, 200), wx.Size(400, 225), True)
 
401
        self.fgPanel.SetValue(self.foreground)
 
402
        self.bgPanel = drColorPanel(self, id, wx.Point(220, 200), wx.Size(400, 225), False)
 
403
        self.bgPanel.SetValue(self.background)
 
404
 
 
405
        self.chkBold = wx.CheckBox(self, self.ID_BOLD, "Bold", wx.Point(10, 345))
 
406
        if self.bold:
 
407
            self.chkBold.SetValue(1)
 
408
        self.chkItalic = wx.CheckBox(self, self.ID_ITALIC, "Italic", wx.Point(110, 345))
 
409
        if self.italic:
 
410
            self.chkItalic.SetValue(1)
 
411
        self.chkUnderline = wx.CheckBox(self, self.ID_UNDERLINE, "Underline", wx.Point(210, 345))
 
412
        if self.underline:
 
413
            self.chkUnderline.SetValue(1)
 
414
 
 
415
        if ChangeSpec > 0:
 
416
            self.boxFonts.Enable(False)
 
417
            self.boxSize.Enable(False)
 
418
            self.chkBold.Enable(False)
 
419
            self.chkItalic.Enable(False)
 
420
            self.chkUnderline.Enable(False)
 
421
            if ChangeSpec == 1:
 
422
                self.bgPanel.Enable(False)
 
423
            elif ChangeSpec == 3:
 
424
                self.fgPanel.Enable(False)
 
425
 
 
426
        self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel", wx.Point(5, 0), wx.Size(-1, -1))
 
427
        self.btnOk = wx.Button(self, self.ID_OK, "&Ok", wx.Point(300, 0), wx.Size(-1, -1))
 
428
 
 
429
        #Sizer:
 
430
 
 
431
        self.theSizer = wx.FlexGridSizer(2, 2, 5, 1)
 
432
        self.styleSizerLeft = wx.BoxSizer(wx.VERTICAL)
 
433
        self.styleSizerRight = wx.BoxSizer(wx.VERTICAL)
 
434
 
 
435
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "Font:"), 0, wx.ALL|wx.SHAPED,4)
 
436
        self.styleSizerLeft.Add(self.boxFonts, 0, wx.ALL|wx.SHAPED,4)
 
437
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "Size:"), 0, wx.ALL|wx.SHAPED,4)
 
438
        self.styleSizerLeft.Add(self.boxSize, 0, wx.ALL|wx.SHAPED,4)
 
439
 
 
440
        self.styleSizerLeft.Add(self.chkBold, 0, wx.ALL|wx.SHAPED,4)
 
441
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.ALL|wx.SHAPED,4)
 
442
        self.styleSizerLeft.Add(self.chkItalic, 0, wx.ALL|wx.SHAPED,4)
 
443
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.ALL|wx.SHAPED,4)
 
444
        self.styleSizerLeft.Add(self.chkUnderline, 0, wx.ALL|wx.SHAPED,4)
 
445
 
 
446
        self.styleSizerRight.Add(self.txtPreview, 0, wx.ALL|wx.SHAPED,4)
 
447
        self.styleSizerRight.Add(wx.StaticText(self, -1, 'Foreground:'), 0, wx.ALL|wx.SHAPED,4)
 
448
        self.styleSizerRight.Add(self.fgPanel, 0, wx.ALL|wx.SHAPED,4)
 
449
        self.styleSizerRight.Add(wx.StaticText(self, -1, 'Background:'), 0, wx.ALL|wx.SHAPED,4)
 
450
        self.styleSizerRight.Add(self.bgPanel, 1, wx.ALL|wx.SHAPED,4)
 
451
 
 
452
        self.theSizer.Add(self.styleSizerLeft, 0, wx.ALL|wx.SHAPED,4)
 
453
        self.theSizer.Add(self.styleSizerRight, 0, wx.ALL|wx.SHAPED,4)
 
454
        self.theSizer.Add(self.btnCancel, 0, wx.ALL|wx.SHAPED|wx.ALIGN_RIGHT,4)
 
455
        self.theSizer.Add(self.btnOk, 0, wx.ALL | wx.SHAPED|wx.ALIGN_LEFT ,4)
 
456
 
 
457
        self.SetAutoLayout(True)
 
458
        self.SetSizerAndFit(self.theSizer)
 
459
 
 
460
        self.btnCancel.SetDefault()
 
461
 
 
462
        #End Sizer
 
463
 
 
464
        self.Bind(wx.EVT_LISTBOX,  self.OnFontSelect, id=self.ID_FONTS)
 
465
        self.Bind(wx.EVT_COMBOBOX,  self.OnSizeSelect, id=self.ID_SIZE)
 
466
        self.Bind(wx.EVT_TEXT,  self.OnChangeSize, id=self.ID_SIZE)
 
467
        self.Bind(wx.EVT_CHECKBOX,  self.OnBold, id=self.ID_BOLD)
 
468
        self.Bind(wx.EVT_CHECKBOX,  self.OnItalic, id=self.ID_ITALIC)
 
469
        self.Bind(wx.EVT_CHECKBOX,  self.OnUnderline, id=self.ID_UNDERLINE)
 
470
        self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
 
471
        self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
 
472
 
 
473
    def OnChangeSize(self, event):
 
474
        self.size = self.boxSize.GetValue()
 
475
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
476
        self.txtPreview.StyleClearAll()
 
477
        self.txtPreview.StartStyling(0, 0xff)
 
478
 
 
479
    def OnFontSelect(self, event):
 
480
        self.font = self.boxFonts.GetStringSelection()
 
481
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
482
        self.txtPreview.StyleClearAll()
 
483
        self.txtPreview.StartStyling(0, 0xff)
 
484
 
 
485
    def OnSizeSelect(self, event):
 
486
        self.size = self.boxSize.GetStringSelection()
 
487
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
488
        self.txtPreview.StyleClearAll()
 
489
        self.txtPreview.StartStyling(0, 0xff)
 
490
 
 
491
    def SetColor(self):
 
492
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
493
        self.txtPreview.StyleClearAll()
 
494
        self.txtPreview.StartStyling(0, 0xff)
 
495
 
 
496
    def OnBold(self, event):
 
497
        if self.chkBold.IsChecked():
 
498
            self.bold = "bold"
 
499
        else:
 
500
            self.bold = ""
 
501
        self.txtPreview.StyleResetDefault()
 
502
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
503
        self.txtPreview.StyleClearAll()
 
504
        self.txtPreview.StartStyling(0, 0xff)
 
505
 
 
506
    def OnItalic(self, event):
 
507
        if self.chkItalic.IsChecked():
 
508
            self.italic = "italic"
 
509
        else:
 
510
            self.italic = ""
 
511
        self.txtPreview.StyleResetDefault()
 
512
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
513
        self.txtPreview.StyleClearAll()
 
514
        self.txtPreview.StartStyling(0, 0xff)
 
515
 
 
516
    def OnUnderline(self, event):
 
517
        if self.chkUnderline.IsChecked():
 
518
            self.underline = "underline"
 
519
        else:
 
520
            self.underline = ""
 
521
        self.txtPreview.StyleResetDefault()
 
522
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
523
        self.txtPreview.StyleClearAll()
 
524
        self.txtPreview.StartStyling(0, 0xff)
 
525
 
 
526
    def OnbtnCancel(self, event):
 
527
        self.EndModal(0)
 
528
 
 
529
    def OnbtnOk(self, event):
 
530
        self.OK = True
 
531
        self.EndModal(0)
 
532
 
 
533
    def ClickedOk(self):
 
534
        return self.OK
 
535
 
 
536
    def GetBackground(self):
 
537
        return self.background
 
538
 
 
539
    def GetColorString(self):
 
540
        return ("fore:" + self.foreground + ",back:" + self.background)
 
541
 
 
542
    def GetForeground(self):
 
543
        return self.foreground
 
544
 
 
545
    def GetStyleString(self):
 
546
        return ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline)
550
547
 
551
548
class drStyleDialog(wx.Dialog):
552
549
 
553
 
        def __init__(self, parent, id, title, isPrompt = False):
554
 
 
555
 
                wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(640, 480))
556
 
 
557
 
                self.ancestor = parent.grandparent.parent
558
 
 
559
 
                self.ID_CANCEL = 101
560
 
                self.ID_OK = 102
561
 
 
562
 
                self.ID_FONTS = 103
563
 
                self.ID_SIZE = 104
564
 
 
565
 
                self.ID_BOLD = 109
566
 
                self.ID_ITALIC = 110
567
 
                self.ID_UNDERLINE = 111
568
 
 
569
 
                self.ID_STYLE = 121
570
 
                self.ID_LANGUAGE = 122
571
 
 
572
 
                self.last = 0
573
 
 
574
 
                if isPrompt:
575
 
                        self.txtPromptStyleDictionary = self.ancestor.prefs.txtPromptStyleDictionary.copy()
576
 
                else:
577
 
                        self.PythonStyleDictionary = self.ancestor.prefs.PythonStyleDictionary.copy()
578
 
                        self.CPPStyleDictionary = self.ancestor.prefs.CPPStyleDictionary.copy()
579
 
                        self.HTMLStyleDictionary = self.ancestor.prefs.HTMLStyleDictionary.copy()
580
 
 
581
 
                self.targetArray = []
582
 
 
583
 
                self.ChangeSpec = 0
584
 
 
585
 
                self.Enum = wx.FontEnumerator()
586
 
                self.Enum.EnumerateFacenames()
587
 
                self.FontList = self.Enum.GetFacenames()
588
 
                self.FontList.sort()
589
 
 
590
 
                self.txtPreview = wx.stc.StyledTextCtrl(self, id, wx.Point(225, 15), wx.Size(225, 125))
591
 
 
592
 
                self.Ok = False
593
 
 
594
 
                self.isPrompt = isPrompt
595
 
 
596
 
                i = self.ancestor.txtDocument.filetype
597
 
                if i > 2:
598
 
                        i = 0
599
 
                self.boxLanguage = wx.Choice(self, self.ID_LANGUAGE, wx.Point(150, 135), wx.Size(-1, -1), ["Python", "C/C++", "HTML"])
600
 
                self.boxLanguage.SetSelection(i)
601
 
 
602
 
                if isPrompt:
603
 
                        self.boxLanguage.Enable(False)
604
 
 
605
 
                self.txtPreview.SetText("Preview\n()[]{}\n0123")
606
 
                self.txtPreview.SetUseHorizontalScrollBar(0)
607
 
 
608
 
                self.txtPreview.SetMarginWidth(0, 0)
609
 
                self.txtPreview.SetMarginWidth(1, 0)
610
 
                self.txtPreview.SetMarginWidth(2, 0)
611
 
 
612
 
                self.txtPreview.SetReadOnly(1)
613
 
 
614
 
                self.boxFonts = wx.ListBox(self, self.ID_FONTS, wx.DefaultPosition, wx.Size(200, 250), self.FontList)
615
 
 
616
 
                self.boxSize = wx.ComboBox(self, self.ID_SIZE, "10", wx.DefaultPosition, wx.Size(150, 50), ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30'])
617
 
 
618
 
                self.fgPanel = drColorPanel(self, id, wx.DefaultPosition, wx.Size(400, 225), True)
619
 
                self.bgPanel = drColorPanel(self, id, wx.DefaultPosition, wx.Size(400, 225), False)
620
 
 
621
 
                self.chkBold = wx.CheckBox(self, self.ID_BOLD, "Bold")
622
 
                self.chkItalic = wx.CheckBox(self, self.ID_ITALIC, "Italic")
623
 
                self.chkUnderline = wx.CheckBox(self, self.ID_UNDERLINE, "Underline")
624
 
 
625
 
                self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel")
626
 
                self.btnCancel.SetDefault()
627
 
                self.btnOk = wx.Button(self, self.ID_OK, "&Ok")
628
 
 
629
 
                self.boxStyle = wx.ListBox(self, self.ID_STYLE, wx.DefaultPosition, wx.Size(150, 350), "")
630
 
 
631
 
                #Sizer:
632
 
 
633
 
                self.theSizer = wx.FlexGridSizer(2, 3, 5, 1)
634
 
                self.selectSizer = wx.FlexGridSizer(3, 3, 5, 10)
635
 
                self.listSizer = wx.BoxSizer(wx.HORIZONTAL)
636
 
                self.styleSizerLeft = wx.BoxSizer(wx.VERTICAL)
637
 
                self.styleSizerRight = wx.BoxSizer(wx.VERTICAL)
638
 
 
639
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "Font:"), 0, wx.SHAPED)
640
 
                self.styleSizerLeft.Add(self.boxFonts, 0, wx.SHAPED)
641
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "Size:"), 0, wx.SHAPED)
642
 
                self.styleSizerLeft.Add(self.boxSize, 0, wx.SHAPED)
643
 
 
644
 
                self.styleSizerLeft.Add(self.chkBold, 0, wx.SHAPED)
645
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
646
 
                self.styleSizerLeft.Add(self.chkItalic, 0, wx.SHAPED)
647
 
                self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
648
 
                self.styleSizerLeft.Add(self.chkUnderline, 0, wx.SHAPED)
649
 
 
650
 
                self.styleSizerRight.Add(self.txtPreview, 0, wx.SHAPED)
651
 
                self.styleSizerRight.Add(wx.StaticText(self, -1, 'Foreground:'), 0, wx.SHAPED)
652
 
                self.styleSizerRight.Add(self.fgPanel, 0, wx.SHAPED)
653
 
                self.styleSizerRight.Add(wx.StaticText(self, -1, 'Background:'), 0, wx.SHAPED)
654
 
                self.styleSizerRight.Add(self.bgPanel, 1, wx.SHAPED)
655
 
 
656
 
                self.listSizer.Add(wx.StaticText(self, -1, "Language: "), 0, wx.ALIGN_CENTER | wx.SHAPED)
657
 
                self.listSizer.Add(self.boxLanguage, 0, wx.ALIGN_CENTER | wx.SHAPED)
658
 
 
659
 
                self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_LEFT | wx.SHAPED)
660
 
                self.selectSizer.Add(self.listSizer, 0, wx.ALIGN_LEFT | wx.SHAPED)
661
 
                self.selectSizer.Add(wx.StaticText(self, -1, "   "), 0, wx.ALIGN_LEFT | wx.SHAPED)
662
 
 
663
 
                self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_LEFT | wx.SHAPED)
664
 
                self.selectSizer.Add(wx.StaticText(self, -1, "Text Type:"), 0, wx.ALIGN_LEFT | wx.SHAPED)
665
 
                self.selectSizer.Add(wx.StaticText(self, -1, "   "), 0, wx.ALIGN_LEFT | wx.SHAPED)
666
 
 
667
 
                self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_CENTER | wx.SHAPED)
668
 
                self.selectSizer.Add(self.boxStyle, 1, wx.SHAPED | wx.ALIGN_CENTER)
669
 
                self.selectSizer.Add(wx.StaticText(self, -1, ""), 1,  wx.SHAPED | wx.ALIGN_CENTER)
670
 
 
671
 
                self.theSizer.Add(self.selectSizer, 0, wx.SHAPED)
672
 
                self.theSizer.Add(self.styleSizerLeft, 0, wx.SHAPED)
673
 
                self.theSizer.Add(self.styleSizerRight, 0, wx.SHAPED)
674
 
                self.theSizer.Add(self.btnCancel, 0, wx.SHAPED | wx.ALIGN_CENTER)
675
 
                self.theSizer.Add(wx.StaticText(self, -1, ""), 0, wx.SHAPED)
676
 
                self.theSizer.Add(self.btnOk, 1, wx.SHAPED | wx.ALIGN_CENTER)
677
 
 
678
 
                self.SetAutoLayout(True)
679
 
                self.SetSizer(self.theSizer)
680
 
 
681
 
                #End Sizer
682
 
 
683
 
                self.OnSelectLanguage(None)
684
 
 
685
 
                self.Bind(wx.EVT_LISTBOX,  self.OnFontSelect, id=self.ID_FONTS)
686
 
                self.Bind(wx.EVT_LISTBOX,  self.OnSelectStyle, id=self.ID_STYLE)
687
 
                self.Bind(wx.EVT_CHOICE,  self.OnSelectLanguage, id=self.ID_LANGUAGE)
688
 
                self.Bind(wx.EVT_COMBOBOX,  self.OnSizeSelect, id=self.ID_SIZE)
689
 
                self.Bind(wx.EVT_TEXT,  self.OnChangeSize, id=self.ID_SIZE)
690
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnBold, id=self.ID_BOLD)
691
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnItalic, id=self.ID_ITALIC)
692
 
                self.Bind(wx.EVT_CHECKBOX,  self.OnUnderline, id=self.ID_UNDERLINE)
693
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
694
 
                self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
695
 
 
696
 
        def OnChangeSize(self, event):
697
 
                self.size = self.boxSize.GetValue()
698
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
699
 
                self.txtPreview.StyleClearAll()
700
 
                self.txtPreview.StartStyling(0, 0xff)
701
 
 
702
 
        def OnFontSelect(self, event):
703
 
                self.font = self.boxFonts.GetStringSelection()
704
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
705
 
                self.txtPreview.StyleClearAll()
706
 
                self.txtPreview.StartStyling(0, 0xff)
707
 
 
708
 
        def OnSizeSelect(self, event):
709
 
                self.size = self.boxSize.GetStringSelection()
710
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
711
 
                self.txtPreview.StyleClearAll()
712
 
                self.txtPreview.StartStyling(0, 0xff)
713
 
 
714
 
        def SetColor(self):
715
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
716
 
                self.txtPreview.StyleClearAll()
717
 
                self.txtPreview.StartStyling(0, 0xff)
718
 
 
719
 
        def OnBold(self, event):
720
 
                if (self.chkBold.IsChecked()):
721
 
                        self.bold = "bold"
722
 
                else:
723
 
                        self.bold = ""
724
 
                self.txtPreview.StyleResetDefault()
725
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
726
 
                self.txtPreview.StyleClearAll()
727
 
                self.txtPreview.StartStyling(0, 0xff)
728
 
 
729
 
        def OnItalic(self, event):
730
 
                if (self.chkItalic.IsChecked()):
731
 
                        self.italic = "italic"
732
 
                else:
733
 
                        self.italic = ""
734
 
                self.txtPreview.StyleResetDefault()
735
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
736
 
                self.txtPreview.StyleClearAll()
737
 
                self.txtPreview.StartStyling(0, 0xff)
738
 
 
739
 
        def OnUnderline(self, event):
740
 
                if (self.chkUnderline.IsChecked()):
741
 
                        self.underline = "underline"
742
 
                else:
743
 
                        self.underline = ""
744
 
                self.txtPreview.StyleResetDefault()
745
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
746
 
                self.txtPreview.StyleClearAll()
747
 
                self.txtPreview.StartStyling(0, 0xff)
748
 
 
749
 
        def OnbtnCancel(self, event):
750
 
                self.EndModal(0)
751
 
 
752
 
        def OnbtnOk(self, event):
753
 
 
754
 
                if (self.ChangeSpec == 0):
755
 
                        self.targetArray[self.last] = self.GetStyleString()
756
 
                elif (self.ChangeSpec == 1):
757
 
                        self.targetArray[self.last] = self.GetForeground()
758
 
                elif (self.ChangeSpec == 2):
759
 
                        self.targetArray[self.last] = self.GetColorString()
760
 
                elif (self.ChangeSpec == 3):
761
 
                        self.targetArray[self.last] = self.GetBackground()
762
 
 
763
 
                self.Ok = True
764
 
 
765
 
                self.EndModal(0)
766
 
 
767
 
        def ClickedOk(self):
768
 
                return self.Ok
769
 
 
770
 
        def GetArrays(self):
771
 
                if self.isPrompt:
772
 
                        return self.txtPromptStyleDictionary
773
 
                return self.PythonStyleDictionary, self.CPPStyleDictionary, self.HTMLStyleDictionary
774
 
 
775
 
        def GetBackground(self):
776
 
                return self.background
777
 
 
778
 
        def GetColorString(self):
779
 
                return ("fore:" + self.foreground + ",back:" + self.background)
780
 
 
781
 
        def GetForeground(self):
782
 
                return self.foreground
783
 
 
784
 
        def GetStyleString(self):
785
 
                return ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline)
786
 
 
787
 
        def OnSelectLanguage(self, event):
788
 
                sel = self.boxLanguage.GetSelection()
789
 
 
790
 
                try:
791
 
                        if (self.ChangeSpec == 0):
792
 
                                self.targetArray[self.last] = self.GetStyleString()
793
 
                        elif (self.ChangeSpec == 1):
794
 
                                self.targetArray[self.last] = self.GetForeground()
795
 
                        elif (self.ChangeSpec == 2):
796
 
                                self.targetArray[self.last] = self.GetColorString()
797
 
                        elif (self.ChangeSpec == 3):
798
 
                                self.targetArray[self.last] = self.GetBackground()
799
 
                except:
800
 
                        #This will happen the first time this function is called.
801
 
                        pass
802
 
 
803
 
                if self.isPrompt:
804
 
                        self.targetArray = self.txtPromptStyleDictionary
805
 
                        array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character (Single Quoted String)", "Class Name", "Comment", "Comment Block", "Function Name", "Keyword", "Number", "Operator", "String", "String EOL", "Triple Quoted String", "Caret Foreground", "Selection"]
806
 
                else:
807
 
                        if sel == 1:
808
 
                                self.targetArray = self.CPPStyleDictionary
809
 
                                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character", "Preprocessor", "Comment", "Verbatim", "Keyword", "C Identifier", "Number", "Operator", "String", "String EOL", "Global Class", "Regex", "UUID", "Caret Foreground", "Selection", "Folding", "Long Line Indicator"]
810
 
                        elif sel == 2:
811
 
                                self.targetArray = self.HTMLStyleDictionary
812
 
                                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Tag", "Unkown Tag", "Atrribute", "Unkown Attribute", "Number", "String", "Character (Single Quoted String)", "Comment", "Entity", "Tag End", "XML Start", "XML End", "Script", "Value", "Caret Foreground", "Selection", "Folding", "Long Line Indicator", "Current Line Highlight"]
813
 
                        else:
814
 
                                self.targetArray = self.PythonStyleDictionary
815
 
                                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character (Single Quoted String)", "Class Name", "Comment", "Comment Block", "Function Name", "Keyword", "Number", "Operator", "String", "String EOL", "Triple Quoted String", "Caret Foreground", "Selection", "Folding", "Long Line Indicator", "Current Line Highlight", "Indentation Guide"]
816
 
 
817
 
                self.last = -1
818
 
 
819
 
                self.boxStyle.Set(array)
820
 
                self.boxStyle.SetSelection(0)
821
 
                self.OnSelectStyle(event)
822
 
 
823
 
        def OnSelectStyle(self, event):
824
 
                current = self.boxStyle.GetSelection()
825
 
                seltext = self.boxStyle.GetStringSelection()
826
 
 
827
 
                if self.last > -1:
828
 
                        if (self.ChangeSpec == 0):
829
 
                                self.targetArray[self.last] = self.GetStyleString()
830
 
                        elif (self.ChangeSpec == 1):
831
 
                                self.targetArray[self.last] = self.GetForeground()
832
 
                        elif (self.ChangeSpec == 2):
833
 
                                self.targetArray[self.last] = self.GetColorString()
834
 
                        elif (self.ChangeSpec == 3):
835
 
                                self.targetArray[self.last] = self.GetBackground()
836
 
 
837
 
                self.ChangeSpec = 0
838
 
 
839
 
                stylestring = self.targetArray[current]
840
 
                if (seltext == "Caret Foreground") or (seltext == "Long Line Indicator") or (seltext == "Indentation Guide"):
841
 
                        self.ChangeSpec = 1
842
 
                        stylestring = "fore:" + stylestring
843
 
                elif (seltext == "Selection") or (seltext == "Folding"):
844
 
                        self.ChangeSpec = 2
845
 
                elif (seltext == "Current Line Highlight"):
846
 
                        self.ChangeSpec = 3
847
 
                        stylestring = "back:" + stylestring
848
 
 
849
 
                self.font = getStyleProperty("face", stylestring)
850
 
                if (len(self.font) <= 0):
851
 
                        self.font = getStyleProperty("face", self.targetArray[0])
852
 
                self.size = getStyleProperty("size", stylestring)
853
 
                if (len(self.size) <= 0):
854
 
                        self.size = getStyleProperty("size", self.targetArray[0])
855
 
                self.foreground = getStyleProperty("fore", stylestring)
856
 
                if (len(self.foreground) <= 0):
857
 
                        self.foreground = getStyleProperty("fore", self.targetArray[0])
858
 
                self.background = getStyleProperty("back", stylestring)
859
 
                if (len(self.background) <= 0):
860
 
                        self.background = getStyleProperty("back", self.targetArray[0])
861
 
                self.bold = getStyleProperty("bold", stylestring)
862
 
                self.italic = getStyleProperty("italic", stylestring)
863
 
                self.underline = getStyleProperty("underline", stylestring)
864
 
 
865
 
                if (self.ChangeSpec > 0):
866
 
                        self.font = getStyleProperty("face", self.targetArray[0])
867
 
                        self.size = getStyleProperty("size", self.targetArray[0])
868
 
                        if (self.ChangeSpec == 1):
869
 
                                self.background = getStyleProperty("back", self.targetArray[0])
870
 
                        elif (self.ChangeSpec == 3):
871
 
                                self.foreground = getStyleProperty("fore", self.targetArray[0])
872
 
 
873
 
                if self.font not in self.FontList:
874
 
                        f1 = string.capwords(self.font)
875
 
                        f2 = string.lower(self.font)
876
 
                        if f1 in self.FontList:
877
 
                                self.font = f1
878
 
                        elif f2 in self.FontList:
879
 
                                self.font = f2
880
 
 
881
 
                try:
882
 
                        self.FontList.index(self.font)
883
 
                except:
884
 
                        drScrolledMessageDialog.ShowMessage(self, ("Current Font (" + self.font + ") is not in the fontlist.  \nSetting to the Courier 12."), "Error")
885
 
                        self.font = 'courier'
886
 
                        self.size = '12'
887
 
                        try:
888
 
                                self.FontList.index(self.font)
889
 
                        except:
890
 
                                self.font = 'Courier'
891
 
                        try:
892
 
                                self.FontList.index(self.font)
893
 
                        except:
894
 
                                drScrolledMessageDialog.ShowMessage(self, ("Something is quite screwy with fonts on your system.\nNo font will be selected.\nSelect one from the list manually."), "Error")
895
 
 
896
 
 
897
 
                self.txtPreview.StyleResetDefault()
898
 
 
899
 
                self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
900
 
 
901
 
                self.txtPreview.StyleClearAll()
902
 
 
903
 
                self.txtPreview.StartStyling(0, 0xff)
904
 
 
905
 
                try:
906
 
                        self.boxFonts.SetStringSelection(self.font)
907
 
                except:
908
 
                        drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
909
 
                        self.boxFonts.SetSelection(0)
910
 
 
911
 
                try:
912
 
                        tsizearray = ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30']
913
 
                        if not self.size in tsizearray:
914
 
                                self.boxSize.SetValue(self.size)
915
 
                        else:
916
 
                                i = tsizearray.index(self.size)
917
 
                                self.boxSize.SetSelection(i)
918
 
                except:
919
 
                        drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
920
 
                        self.boxSize.SetSelection(0)
921
 
 
922
 
                self.OnSizeSelect(event)
923
 
 
924
 
                self.fgPanel.SetValue(self.foreground)
925
 
                self.bgPanel.SetValue(self.background)
926
 
 
927
 
                self.chkBold.SetValue((len(self.bold) > 0))
928
 
                self.chkItalic.SetValue((len(self.italic) > 0))
929
 
                self.chkUnderline.SetValue((len(self.underline) > 0))
930
 
 
931
 
                self.boxFonts.Enable(self.ChangeSpec == 0)
932
 
                self.boxSize.Enable(self.ChangeSpec == 0)
933
 
                self.chkBold.Enable(self.ChangeSpec == 0)
934
 
                self.chkItalic.Enable(self.ChangeSpec == 0)
935
 
                self.chkUnderline.Enable(self.ChangeSpec == 0)
936
 
                if (self.ChangeSpec == 1):
937
 
                        self.fgPanel.Enable(True)
938
 
                        self.bgPanel.Enable(False)
939
 
                elif (self.ChangeSpec == 3):
940
 
                        self.fgPanel.Enable(False)
941
 
                        self.bgPanel.Enable(True)
942
 
                else:
943
 
                        self.fgPanel.Enable(True)
944
 
                        self.bgPanel.Enable(True)
945
 
 
946
 
                self.last = current
 
 
b'\\ No newline at end of file'
 
550
    def __init__(self, parent, id, title, isPrompt = False):
 
551
 
 
552
        wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(640, 480))
 
553
 
 
554
        self.ancestor = parent.grandparent.parent
 
555
 
 
556
        self.ID_CANCEL = 101
 
557
        self.ID_OK = 102
 
558
 
 
559
        self.ID_FONTS = 103
 
560
        self.ID_SIZE = 104
 
561
 
 
562
        self.ID_BOLD = 109
 
563
        self.ID_ITALIC = 110
 
564
        self.ID_UNDERLINE = 111
 
565
 
 
566
        self.ID_STYLE = 121
 
567
        self.ID_LANGUAGE = 122
 
568
 
 
569
        self.last = 0
 
570
 
 
571
        if isPrompt:
 
572
            self.txtPromptStyleDictionary = self.ancestor.prefs.txtPromptStyleDictionary.copy()
 
573
        else:
 
574
            self.PythonStyleDictionary = self.ancestor.prefs.PythonStyleDictionary.copy()
 
575
            self.CPPStyleDictionary = self.ancestor.prefs.CPPStyleDictionary.copy()
 
576
            self.HTMLStyleDictionary = self.ancestor.prefs.HTMLStyleDictionary.copy()
 
577
 
 
578
        self.targetArray = []
 
579
 
 
580
        self.ChangeSpec = 0
 
581
 
 
582
        self.Enum = wx.FontEnumerator()
 
583
        self.Enum.EnumerateFacenames()
 
584
        self.FontList = self.Enum.GetFacenames()
 
585
        self.FontList.sort()
 
586
 
 
587
        self.txtPreview = wx.stc.StyledTextCtrl(self, id, wx.Point(225, 15), wx.Size(225, 125))
 
588
 
 
589
        self.Ok = False
 
590
 
 
591
        self.isPrompt = isPrompt
 
592
 
 
593
        i = self.ancestor.txtDocument.filetype
 
594
        if i > 2:
 
595
            i = 0
 
596
        self.boxLanguage = wx.Choice(self, self.ID_LANGUAGE, wx.Point(150, 135), wx.Size(-1, -1), ["Python", "C/C++", "HTML"])
 
597
        self.boxLanguage.SetSelection(i)
 
598
 
 
599
        if isPrompt:
 
600
            self.boxLanguage.Enable(False)
 
601
 
 
602
        self.txtPreview.SetText("Preview\n()[]{}\n0123")
 
603
        self.txtPreview.SetUseHorizontalScrollBar(0)
 
604
 
 
605
        self.txtPreview.SetMarginWidth(0, 0)
 
606
        self.txtPreview.SetMarginWidth(1, 0)
 
607
        self.txtPreview.SetMarginWidth(2, 0)
 
608
 
 
609
        self.txtPreview.SetReadOnly(1)
 
610
 
 
611
        self.boxFonts = wx.ListBox(self, self.ID_FONTS, wx.DefaultPosition, wx.Size(200, 250), self.FontList)
 
612
 
 
613
        self.boxSize = wx.ComboBox(self, self.ID_SIZE, "10", wx.DefaultPosition, wx.Size(150, 50), ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30'])
 
614
 
 
615
        self.fgPanel = drColorPanel(self, id, wx.DefaultPosition, wx.Size(400, 225), True)
 
616
        self.bgPanel = drColorPanel(self, id, wx.DefaultPosition, wx.Size(400, 225), False)
 
617
 
 
618
        self.chkBold = wx.CheckBox(self, self.ID_BOLD, "Bold")
 
619
        self.chkItalic = wx.CheckBox(self, self.ID_ITALIC, "Italic")
 
620
        self.chkUnderline = wx.CheckBox(self, self.ID_UNDERLINE, "Underline")
 
621
 
 
622
        self.btnCancel = wx.Button(self, self.ID_CANCEL, "&Cancel")
 
623
        self.btnCancel.SetDefault()
 
624
        self.btnOk = wx.Button(self, self.ID_OK, "&Ok")
 
625
 
 
626
        self.boxStyle = wx.ListBox(self, self.ID_STYLE, wx.DefaultPosition, wx.Size(150, 350), "")
 
627
 
 
628
        #Sizer:
 
629
 
 
630
        self.theSizer = wx.FlexGridSizer(2, 3, 5, 1)
 
631
        self.selectSizer = wx.FlexGridSizer(3, 3, 5, 10)
 
632
        self.listSizer = wx.BoxSizer(wx.HORIZONTAL)
 
633
        self.styleSizerLeft = wx.BoxSizer(wx.VERTICAL)
 
634
        self.styleSizerRight = wx.BoxSizer(wx.VERTICAL)
 
635
 
 
636
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "Font:"), 0, wx.SHAPED)
 
637
        self.styleSizerLeft.Add(self.boxFonts, 0, wx.SHAPED)
 
638
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "Size:"), 0, wx.SHAPED)
 
639
        self.styleSizerLeft.Add(self.boxSize, 0, wx.SHAPED)
 
640
 
 
641
        self.styleSizerLeft.Add(self.chkBold, 0, wx.SHAPED)
 
642
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
 
643
        self.styleSizerLeft.Add(self.chkItalic, 0, wx.SHAPED)
 
644
        self.styleSizerLeft.Add(wx.StaticText(self, -1, "   "), 0, wx.SHAPED)
 
645
        self.styleSizerLeft.Add(self.chkUnderline, 0, wx.SHAPED)
 
646
 
 
647
        self.styleSizerRight.Add(self.txtPreview, 0, wx.SHAPED)
 
648
        self.styleSizerRight.Add(wx.StaticText(self, -1, 'Foreground:'), 0, wx.SHAPED)
 
649
        self.styleSizerRight.Add(self.fgPanel, 0, wx.SHAPED)
 
650
        self.styleSizerRight.Add(wx.StaticText(self, -1, 'Background:'), 0, wx.SHAPED)
 
651
        self.styleSizerRight.Add(self.bgPanel, 1, wx.SHAPED)
 
652
 
 
653
        self.listSizer.Add(wx.StaticText(self, -1, "Language: "), 0, wx.ALIGN_CENTER | wx.SHAPED)
 
654
        self.listSizer.Add(self.boxLanguage, 0, wx.ALIGN_CENTER | wx.SHAPED)
 
655
 
 
656
        self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_LEFT | wx.SHAPED)
 
657
        self.selectSizer.Add(self.listSizer, 0, wx.ALIGN_LEFT | wx.SHAPED)
 
658
        self.selectSizer.Add(wx.StaticText(self, -1, "   "), 0, wx.ALIGN_LEFT | wx.SHAPED)
 
659
 
 
660
        self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_LEFT | wx.SHAPED)
 
661
        self.selectSizer.Add(wx.StaticText(self, -1, "Text Type:"), 0, wx.ALIGN_LEFT | wx.SHAPED)
 
662
        self.selectSizer.Add(wx.StaticText(self, -1, "   "), 0, wx.ALIGN_LEFT | wx.SHAPED)
 
663
 
 
664
        self.selectSizer.Add(wx.StaticText(self, -1, ""), 0, wx.ALIGN_CENTER | wx.SHAPED)
 
665
        self.selectSizer.Add(self.boxStyle, 1, wx.SHAPED | wx.ALIGN_CENTER)
 
666
        self.selectSizer.Add(wx.StaticText(self, -1, ""), 1,  wx.SHAPED | wx.ALIGN_CENTER)
 
667
 
 
668
        self.theSizer.Add(self.selectSizer, 0, wx.SHAPED)
 
669
        self.theSizer.Add(self.styleSizerLeft, 0, wx.SHAPED)
 
670
        self.theSizer.Add(self.styleSizerRight, 0, wx.SHAPED)
 
671
        self.theSizer.Add(self.btnCancel, 0, wx.SHAPED | wx.ALIGN_CENTER)
 
672
        self.theSizer.Add(wx.StaticText(self, -1, ""), 0, wx.SHAPED)
 
673
        self.theSizer.Add(self.btnOk, 1, wx.SHAPED | wx.ALIGN_CENTER)
 
674
 
 
675
        self.SetAutoLayout(True)
 
676
        self.SetSizer(self.theSizer)
 
677
 
 
678
        #End Sizer
 
679
 
 
680
        self.OnSelectLanguage(None)
 
681
 
 
682
        self.Bind(wx.EVT_LISTBOX,  self.OnFontSelect, id=self.ID_FONTS)
 
683
        self.Bind(wx.EVT_LISTBOX,  self.OnSelectStyle, id=self.ID_STYLE)
 
684
        self.Bind(wx.EVT_CHOICE,  self.OnSelectLanguage, id=self.ID_LANGUAGE)
 
685
        self.Bind(wx.EVT_COMBOBOX,  self.OnSizeSelect, id=self.ID_SIZE)
 
686
        self.Bind(wx.EVT_TEXT,  self.OnChangeSize, id=self.ID_SIZE)
 
687
        self.Bind(wx.EVT_CHECKBOX,  self.OnBold, id=self.ID_BOLD)
 
688
        self.Bind(wx.EVT_CHECKBOX,  self.OnItalic, id=self.ID_ITALIC)
 
689
        self.Bind(wx.EVT_CHECKBOX,  self.OnUnderline, id=self.ID_UNDERLINE)
 
690
        self.Bind(wx.EVT_BUTTON,  self.OnbtnCancel, id=self.ID_CANCEL)
 
691
        self.Bind(wx.EVT_BUTTON,  self.OnbtnOk, id=self.ID_OK)
 
692
 
 
693
    def OnChangeSize(self, event):
 
694
        self.size = self.boxSize.GetValue()
 
695
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
696
        self.txtPreview.StyleClearAll()
 
697
        self.txtPreview.StartStyling(0, 0xff)
 
698
 
 
699
    def OnFontSelect(self, event):
 
700
        self.font = self.boxFonts.GetStringSelection()
 
701
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
702
        self.txtPreview.StyleClearAll()
 
703
        self.txtPreview.StartStyling(0, 0xff)
 
704
 
 
705
    def OnSizeSelect(self, event):
 
706
        self.size = self.boxSize.GetStringSelection()
 
707
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
708
        self.txtPreview.StyleClearAll()
 
709
        self.txtPreview.StartStyling(0, 0xff)
 
710
 
 
711
    def SetColor(self):
 
712
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
713
        self.txtPreview.StyleClearAll()
 
714
        self.txtPreview.StartStyling(0, 0xff)
 
715
 
 
716
    def OnBold(self, event):
 
717
        if self.chkBold.IsChecked():
 
718
            self.bold = "bold"
 
719
        else:
 
720
            self.bold = ""
 
721
        self.txtPreview.StyleResetDefault()
 
722
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
723
        self.txtPreview.StyleClearAll()
 
724
        self.txtPreview.StartStyling(0, 0xff)
 
725
 
 
726
    def OnItalic(self, event):
 
727
        if self.chkItalic.IsChecked():
 
728
            self.italic = "italic"
 
729
        else:
 
730
            self.italic = ""
 
731
        self.txtPreview.StyleResetDefault()
 
732
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
733
        self.txtPreview.StyleClearAll()
 
734
        self.txtPreview.StartStyling(0, 0xff)
 
735
 
 
736
    def OnUnderline(self, event):
 
737
        if self.chkUnderline.IsChecked():
 
738
            self.underline = "underline"
 
739
        else:
 
740
            self.underline = ""
 
741
        self.txtPreview.StyleResetDefault()
 
742
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
743
        self.txtPreview.StyleClearAll()
 
744
        self.txtPreview.StartStyling(0, 0xff)
 
745
 
 
746
    def OnbtnCancel(self, event):
 
747
        self.EndModal(0)
 
748
 
 
749
    def OnbtnOk(self, event):
 
750
 
 
751
        if self.ChangeSpec == 0:
 
752
            self.targetArray[self.last] = self.GetStyleString()
 
753
        elif self.ChangeSpec == 1:
 
754
            self.targetArray[self.last] = self.GetForeground()
 
755
        elif self.ChangeSpec == 2:
 
756
            self.targetArray[self.last] = self.GetColorString()
 
757
        elif self.ChangeSpec == 3:
 
758
            self.targetArray[self.last] = self.GetBackground()
 
759
 
 
760
        self.Ok = True
 
761
 
 
762
        self.EndModal(0)
 
763
 
 
764
    def ClickedOk(self):
 
765
        return self.Ok
 
766
 
 
767
    def GetArrays(self):
 
768
        if self.isPrompt:
 
769
            return self.txtPromptStyleDictionary
 
770
        return self.PythonStyleDictionary, self.CPPStyleDictionary, self.HTMLStyleDictionary
 
771
 
 
772
    def GetBackground(self):
 
773
        return self.background
 
774
 
 
775
    def GetColorString(self):
 
776
        return ("fore:" + self.foreground + ",back:" + self.background)
 
777
 
 
778
    def GetForeground(self):
 
779
        return self.foreground
 
780
 
 
781
    def GetStyleString(self):
 
782
        return ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline)
 
783
 
 
784
    def OnSelectLanguage(self, event):
 
785
        sel = self.boxLanguage.GetSelection()
 
786
 
 
787
        try:
 
788
            if self.ChangeSpec == 0:
 
789
                self.targetArray[self.last] = self.GetStyleString()
 
790
            elif self.ChangeSpec == 1:
 
791
                self.targetArray[self.last] = self.GetForeground()
 
792
            elif self.ChangeSpec == 2:
 
793
                self.targetArray[self.last] = self.GetColorString()
 
794
            elif self.ChangeSpec == 3:
 
795
                self.targetArray[self.last] = self.GetBackground()
 
796
        except:
 
797
            #This will happen the first time this function is called.
 
798
            pass
 
799
 
 
800
        if self.isPrompt:
 
801
            self.targetArray = self.txtPromptStyleDictionary
 
802
            array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character (Single Quoted String)", "Class Name", "Comment", "Comment Block", "Function Name", "Keyword", "Number", "Operator", "String", "String EOL", "Triple Quoted String", "Caret Foreground", "Selection"]
 
803
        else:
 
804
            if sel == 1:
 
805
                self.targetArray = self.CPPStyleDictionary
 
806
                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character", "Preprocessor", "Comment", "Verbatim", "Keyword", "C Identifier", "Number", "Operator", "String", "String EOL", "Global Class", "Regex", "UUID", "Caret Foreground", "Selection", "Folding", "Long Line Indicator"]
 
807
            elif sel == 2:
 
808
                self.targetArray = self.HTMLStyleDictionary
 
809
                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Tag", "Unkown Tag", "Atrribute", "Unkown Attribute", "Number", "String", "Character (Single Quoted String)", "Comment", "Entity", "Tag End", "XML Start", "XML End", "Script", "Value", "Caret Foreground", "Selection", "Folding", "Long Line Indicator", "Current Line Highlight"]
 
810
            else:
 
811
                self.targetArray = self.PythonStyleDictionary
 
812
                array = ["Normal", "Line Number (Margin)", "Brace-Selected (Match)", "Brace-Selected (No Match)", "Character (Single Quoted String)", "Class Name", "Comment", "Comment Block", "Function Name", "Keyword", "Number", "Operator", "String", "String EOL", "Triple Quoted String", "Caret Foreground", "Selection", "Folding", "Long Line Indicator", "Current Line Highlight", "Indentation Guide"]
 
813
 
 
814
        self.last = -1
 
815
 
 
816
        self.boxStyle.Set(array)
 
817
        self.boxStyle.SetSelection(0)
 
818
        self.OnSelectStyle(event)
 
819
 
 
820
    def OnSelectStyle(self, event):
 
821
        current = self.boxStyle.GetSelection()
 
822
        seltext = self.boxStyle.GetStringSelection()
 
823
 
 
824
        if self.last > -1:
 
825
            if self.ChangeSpec == 0:
 
826
                self.targetArray[self.last] = self.GetStyleString()
 
827
            elif self.ChangeSpec == 1:
 
828
                self.targetArray[self.last] = self.GetForeground()
 
829
            elif self.ChangeSpec == 2:
 
830
                self.targetArray[self.last] = self.GetColorString()
 
831
            elif self.ChangeSpec == 3:
 
832
                self.targetArray[self.last] = self.GetBackground()
 
833
 
 
834
        self.ChangeSpec = 0
 
835
 
 
836
        stylestring = self.targetArray[current]
 
837
        if (seltext == "Caret Foreground") or (seltext == "Long Line Indicator") or (seltext == "Indentation Guide"):
 
838
            self.ChangeSpec = 1
 
839
            stylestring = "fore:" + stylestring
 
840
        elif (seltext == "Selection") or (seltext == "Folding"):
 
841
            self.ChangeSpec = 2
 
842
        elif seltext == "Current Line Highlight":
 
843
            self.ChangeSpec = 3
 
844
            stylestring = "back:" + stylestring
 
845
 
 
846
        self.font = getStyleProperty("face", stylestring)
 
847
        if not self.font:
 
848
            self.font = getStyleProperty("face", self.targetArray[0])
 
849
        self.size = getStyleProperty("size", stylestring)
 
850
        if not self.size:
 
851
            self.size = getStyleProperty("size", self.targetArray[0])
 
852
        self.foreground = getStyleProperty("fore", stylestring)
 
853
        if not self.foreground:
 
854
            self.foreground = getStyleProperty("fore", self.targetArray[0])
 
855
        self.background = getStyleProperty("back", stylestring)
 
856
        if not self.background:
 
857
            self.background = getStyleProperty("back", self.targetArray[0])
 
858
        self.bold = getStyleProperty("bold", stylestring)
 
859
        self.italic = getStyleProperty("italic", stylestring)
 
860
        self.underline = getStyleProperty("underline", stylestring)
 
861
 
 
862
        if self.ChangeSpec > 0:
 
863
            self.font = getStyleProperty("face", self.targetArray[0])
 
864
            self.size = getStyleProperty("size", self.targetArray[0])
 
865
            if self.ChangeSpec == 1:
 
866
                self.background = getStyleProperty("back", self.targetArray[0])
 
867
            elif self.ChangeSpec == 3:
 
868
                self.foreground = getStyleProperty("fore", self.targetArray[0])
 
869
 
 
870
        if self.font not in self.FontList:
 
871
            f1 = string.capwords(self.font)
 
872
            f2 = string.lower(self.font)
 
873
            if f1 in self.FontList:
 
874
                self.font = f1
 
875
            elif f2 in self.FontList:
 
876
                self.font = f2
 
877
 
 
878
        if self.font not in self.FontList:
 
879
            old=self.font
 
880
            self.size = '12'
 
881
            options=['Courier','Courier 10 Pitch','Monospace','Sans','']
 
882
            for font in options:
 
883
                if font in self.FontList:
 
884
                    self.font=font
 
885
                    break
 
886
            #I don't know why this a traceback: no foreground !!!
 
887
            #drScrolledMessageDialog.ShowMessage(self, ("Default font [%s] not found! \nChoosed [%s] instead." %(old,self.font)), "Error")
 
888
            print "Default font [%s] not found! \nChoosed [%s] instead." %(old,self.font)
 
889
 
 
890
        self.txtPreview.StyleResetDefault()
 
891
        self.txtPreview.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, ("fore:" + self.foreground + ",back:" + self.background + ",size:" + self.size + ",face:" + self.font + "," + self.bold + "," + self.italic + "," + self.underline))
 
892
        self.txtPreview.StyleClearAll()
 
893
        self.txtPreview.StartStyling(0, 0xff)
 
894
 
 
895
        try:
 
896
            #self.boxFonts.SetStringSelection(self.font)
 
897
            i=self.boxFonts.FindString(self.font)
 
898
            if i<0:
 
899
                i=0
 
900
            self.boxFonts.Select(i)
 
901
            #self.boxFonts.EnsureVisible(i) # Bug: Doesn't work 
 
902
            self.boxFonts.SetFirstItem(i)
 
903
        except:
 
904
            drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
 
905
            self.boxFonts.SetSelection(0)
 
906
 
 
907
        try:
 
908
            tsizearray = ['8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30']
 
909
            if not self.size in tsizearray:
 
910
                self.boxSize.SetValue(self.size)
 
911
            else:
 
912
                i = tsizearray.index(self.size)
 
913
                self.boxSize.SetSelection(i)
 
914
        except:
 
915
            drScrolledMessageDialog.ShowMessage(self, ("Something awful happened trying to \nset the font to the default."), "Error")
 
916
            self.boxSize.SetSelection(0)
 
917
 
 
918
        self.OnSizeSelect(event)
 
919
 
 
920
        self.fgPanel.SetValue(self.foreground)
 
921
        self.bgPanel.SetValue(self.background)
 
922
 
 
923
        self.chkBold.SetValue((len(self.bold) > 0))
 
924
        self.chkItalic.SetValue((len(self.italic) > 0))
 
925
        self.chkUnderline.SetValue((len(self.underline) > 0))
 
926
 
 
927
        self.boxFonts.Enable(self.ChangeSpec == 0)
 
928
        self.boxSize.Enable(self.ChangeSpec == 0)
 
929
        self.chkBold.Enable(self.ChangeSpec == 0)
 
930
        self.chkItalic.Enable(self.ChangeSpec == 0)
 
931
        self.chkUnderline.Enable(self.ChangeSpec == 0)
 
932
        if self.ChangeSpec == 1:
 
933
            self.fgPanel.Enable(True)
 
934
            self.bgPanel.Enable(False)
 
935
        elif self.ChangeSpec == 3:
 
936
            self.fgPanel.Enable(False)
 
937
            self.bgPanel.Enable(True)
 
938
        else:
 
939
            self.fgPanel.Enable(True)
 
940
            self.bgPanel.Enable(True)
 
941
 
 
942
        self.last = current
 
 
b'\\ No newline at end of file'