32
36
@param parms parameters to set in the dialog
33
37
@param parent parent widget of this dialog
35
EricdocConfigForm.__init__(self,parent)
37
self.initializeDefaults()
39
QDialog.__init__(self,parent)
42
self.__initializeDefaults()
44
self.sampleText = unicode(self.trUtf8(\
45
'''<?xml version="1.0" encoding="utf-8"?>'''
46
'''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'''
47
'''"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'''
49
'''<title>%%(Title)s</title>'''
51
'''<body style="background-color:%(BodyBgColor)s;color:%(BodyColor)s">'''
52
'''<h1 style="background-color:%(Level1HeaderBgColor)s;color:%(Level1HeaderColor)s">'''
53
'''Level 1 Header</h1>'''
54
'''<h3 style="background-color:%(Level2HeaderBgColor)s;color:%(Level2HeaderColor)s">'''
55
'''Level 2 Header</h3>'''
56
'''<h2 style="background-color:%(CFBgColor)s;color:%(CFColor)s">'''
57
'''Class and Function Header</h2>'''
58
'''Standard body text with '''
59
'''<a style="color:%(LinkColor)s">some links</a> embedded.'''
39
63
# get a copy of the defaults to store the user settings
40
64
self.parameters = copy.deepcopy(self.defaults)
65
self.colors = eric4docDefaultColors.copy()
42
67
# combine it with the values of parms
43
68
if parms is not None:
44
69
for key, value in parms.items():
45
self.parameters[key] = parms[key]
70
if key.endswith("Color"):
71
self.colors[key] = parms[key]
73
self.parameters[key] = parms[key]
49
self.prefixEdit.setText(self.parameters['filenamePrefix'])
77
self.outputDirCompleter = E4DirCompleter(self.outputDirEdit)
78
self.ignoreDirCompleter = E4DirCompleter(self.ignoreDirEdit)
50
80
self.recursionCheckBox.setChecked(self.parameters['useRecursion'])
51
81
self.noindexCheckBox.setChecked(self.parameters['noindex'])
52
82
self.noemptyCheckBox.setChecked(self.parameters['noempty'])
53
83
self.outputDirEdit.setText(self.parameters['outputDirectory'])
54
self.ignoreDirsListBox.clear()
84
self.ignoreDirsList.clear()
55
85
for d in self.parameters['ignoreDirectories']:
56
self.ignoreDirsListBox.insertItem(d)
86
self.ignoreDirsList.addItem(d)
57
87
self.cssEdit.setText(self.parameters['cssFile'])
58
88
self.sourceExtEdit.setText(", ".join(self.parameters['sourceExtensions']))
60
def initializeDefaults(self):
89
self.excludeFilesEdit.setText(", ".join(self.parameters['ignoreFilePatterns']))
90
self.sample.setHtml(self.sampleText % self.colors)
92
def __initializeDefaults(self):
62
94
Private method to set the default values.
128
168
args.append(self.parameters['cssFile'])
130
170
args.append(os.path.join(self.ppath, self.parameters['cssFile']))
131
if self.parameters['sourceExtensions'] != self.defaults['sourceExtensions']:
132
parms['sourceExtensions'] = self.parameters['sourceExtensions'][:]
133
for ext in self.parameters['sourceExtensions']:
171
for key, value in self.colors.items():
172
if self.colors[key] != eric4docDefaultColors[key]:
173
parms[key] = self.colors[key]
174
args.append("--%s=%s" % \
175
(eric4docColorParameterNames[key], self.colors[key]))
137
177
return (args, parms)
139
def handleOutputDir(self):
180
def on_outputDirButton_clicked(self):
141
182
Private slot to select the output directory.
143
184
It displays a directory selection dialog to
144
185
select the directory the documentations is written to.
146
directory = KQFileDialog.getExistingDirectory(self.outputDirEdit.text(),
147
self, None, self.trUtf8("Select output directory"))
187
directory = KQFileDialog.getExistingDirectory(\
189
self.trUtf8("Select output directory"),
190
self.outputDirEdit.text(),
191
QFileDialog.Options(QFileDialog.ShowDirsOnly))
149
193
if not directory.isNull():
150
194
# make it relative, if it is a subdirectory of the project path
151
dn = unicode(QDir.convertSeparators(directory))
195
dn = unicode(Utilities.toNativeSeparators(directory))
152
196
dn = dn.replace(self.ppath+os.sep, '')
153
197
while dn.endswith(os.sep):
155
199
self.outputDirEdit.setText(dn)
157
def handleIgnoreDir(self):
202
def on_ignoreDirButton_clicked(self):
159
204
Private slot to select a directory to be ignored.
161
206
It displays a directory selection dialog to
162
207
select a directory to be ignored.
164
directory = KQFileDialog.getExistingDirectory(self.ignoreDirEdit.text(),
165
self, None, self.trUtf8("Select directory to exclude"), 1, 0)
209
directory = KQFileDialog.getExistingDirectory(\
211
self.trUtf8("Select directory to exclude"),
212
self.ignoreDirEdit.text(),
213
QFileDialog.Options(QFileDialog.ShowDirsOnly))
167
215
if not directory.isNull():
168
216
# make it relative, if it is a subdirectory of the project path
169
dn = unicode(QDir.convertSeparators(directory))
217
dn = unicode(Utilities.toNativeSeparators(directory))
170
218
dn = dn.replace(self.ppath+os.sep, '')
171
219
while dn.endswith(os.sep):
173
221
self.ignoreDirEdit.setText(dn)
175
def handleIgnoreDirAdd(self):
224
def on_addButton_clicked(self):
177
226
Private slot to add the directory displayed to the listview.
179
228
The directory in the ignore directories
180
229
line edit is moved to the listbox above and the edit is cleared.
182
self.ignoreDirsListBox.insertItem(os.path.basename(unicode(self.ignoreDirEdit.text())))
231
self.ignoreDirsList.addItem(os.path.basename(unicode(self.ignoreDirEdit.text())))
183
232
self.ignoreDirEdit.clear()
185
def handleIgnoreDirDelete(self):
235
def on_deleteButton_clicked(self):
187
237
Private slot to delete the currently selected directory of the listbox.
189
self.ignoreDirsListBox.removeItem(self.ignoreDirsListBox.currentItem())
239
itm = self.ignoreDirsList.takeItem(self.ignoreDirsList.currentRow())
191
def handleCSSFile(self):
243
def on_cssButton_clicked(self):
193
245
Private slot to select a css style sheet.
195
247
cssFile = KQFileDialog.getOpenFileName(\
249
self.trUtf8("Select CSS style sheet"),
196
250
getConfig('ericCSSDir'),
197
self.trUtf8("Style sheet (*.css);;All files (*)"),
199
self.trUtf8("Select CSS style sheet"),
251
self.trUtf8("Style sheet (*.css);;All files (*)"))
202
253
if not cssFile.isEmpty():
203
254
# make it relative, if it is in a subdirectory of the project path
204
cf = unicode(QDir.convertSeparators(cssFile))
255
cf = unicode(Utilities.toNativeSeparators(cssFile))
205
256
cf = cf.replace(self.ppath+os.sep, '')
206
257
self.cssEdit.setText(cf)
259
def __selectColor(self, colorKey):
261
Private method to select a color.
263
@param colorKey key of the color to select (string)
265
color = QColorDialog.getColor(QColor(self.colors[colorKey]))
267
self.colors[colorKey] = unicode(color.name())
268
self.sample.setHtml(self.sampleText % self.colors)
271
def on_bodyFgButton_clicked(self):
273
Private slot to select the body foreground color.
275
self.__selectColor('BodyColor')
278
def on_bodyBgButton_clicked(self):
280
Private slot to select the body background color.
282
self.__selectColor('BodyBgColor')
285
def on_l1FgButton_clicked(self):
287
Private slot to select the level 1 header foreground color.
289
self.__selectColor('Level1HeaderColor')
292
def on_l1BgButton_clicked(self):
294
Private slot to select the level 1 header background color.
296
self.__selectColor('Level1HeaderBgColor')
299
def on_l2FgButton_clicked(self):
301
Private slot to select the level 2 header foreground color.
303
self.__selectColor('Level2HeaderColor')
306
def on_l2BgButton_clicked(self):
308
Private slot to select the level 2 header background color.
310
self.__selectColor('Level2HeaderBgColor')
313
def on_cfFgButton_clicked(self):
315
Private slot to select the class/function header foreground color.
317
self.__selectColor('CFColor')
320
def on_cfBgButton_clicked(self):
322
Private slot to select the class/function header background color.
324
self.__selectColor('CFBgColor')
327
def on_linkFgButton_clicked(self):
329
Private slot to select the foreground color of links.
331
self.__selectColor('LinkColor')
208
333
def accept(self):
210
335
Protected slot called by the Ok button.
212
337
It saves the values in the parameters dictionary.
214
self.parameters['filenamePrefix'] = unicode(self.prefixEdit.text())
215
339
self.parameters['useRecursion'] = self.recursionCheckBox.isChecked()
216
340
self.parameters['noindex'] = self.noindexCheckBox.isChecked()
217
341
self.parameters['noempty'] = self.noemptyCheckBox.isChecked()
221
345
if outdir.endswith(os.sep):
222
346
outdir = outdir[:-1]
223
347
self.parameters['outputDirectory'] = outdir
224
itm = self.ignoreDirsListBox.firstItem()
225
348
self.parameters['ignoreDirectories'] = []
226
while itm is not None:
349
for row in range(0, self.ignoreDirsList.count()):
350
itm = self.ignoreDirsList.item(row)
227
351
self.parameters['ignoreDirectories'].append(\
228
352
os.path.normpath(unicode(itm.text())))
230
353
cssFile = unicode(self.cssEdit.text())
231
354
if cssFile != '':
232
355
cssFile = os.path.normpath(cssFile)
233
356
self.parameters['cssFile'] = cssFile
234
357
extensions = unicode(self.sourceExtEdit.text()).split(',')
235
self.parameters['sourceExtensions'] = []
236
for ext in extensions:
237
self.parameters['sourceExtensions'].append(ext.strip())
358
self.parameters['sourceExtensions'] = \
359
[ext.strip() for ext in extensions]
360
patterns = unicode(self.excludeFilesEdit.text()).split(',')
361
self.parameters['ignoreFilePatterns'] = \
362
[pattern.strip() for pattern in patterns]
239
364
# call the accept slot of the base class
240
EricdocConfigForm.accept(self)