173
173
//! Create dialog. \c data is only updated if dialog is accepted.
174
174
DialogPreferences::DialogPreferences(QWidget* parent, IpePreferences &data,
176
: DlgPreferences(parent, "dialogpreferences", true),
177
iData(data), iGridSize(gridSize)
176
: QDialog(parent), iData(data), iGridSize(gridSize)
179
connect(iButtonHelp, SIGNAL(clicked()), SLOT(ShowHelp()));
180
connect(iButtonOk, SIGNAL(clicked()), SLOT(UpdateData()));
181
connect(iButtonDirectory, SIGNAL(clicked()), SLOT(ShowDirectories()));
182
connect(iTextFontButton, SIGNAL(clicked()), SLOT(SetFont()));
183
connect(iGridButton, SIGNAL(clicked()), SLOT(SetDefaultGrid()));
184
connect(iStyleSheetBrowseButton, SIGNAL(clicked()), SLOT(SetStyleSheet()));
185
connect(iClearStyleSheetButton, SIGNAL(clicked()), SLOT(ClearStyleSheet()));
180
187
iCompress->setChecked(iData.iCompressLevel > 0);
181
188
iSelectDistance->setValue(iData.iSelectDistance);
182
189
iSnapDistance->setValue(iData.iSnapDistance);
183
190
iWhitePaper->setChecked(iData.iWhitePaper);
184
iBigToolButtons->setChecked(iData.iBigToolButtons);
185
191
iTransformable->setChecked(iData.iTransformable);
186
192
iAntiAlias->setChecked(iData.iAntiAlias);
193
iDoubleBuffer->setChecked(iData.iDoubleBuffer);
187
194
iGridVisible->setChecked(iData.iGridVisible);
188
195
iMaximize->setChecked(iData.iMaximize);
196
iBitmapSize->setValue(iData.iBitmapSize);
190
198
iStyleSheet->setReadOnly(true);
191
199
iStyleSheetPath = iData.iStyleSheet;
277
294
// --------------------------------------------------------------------
279
/*! \class DialogPageViews
280
\brief Dialog to edit page presentation
296
/*! \class DialogEffects
297
\brief Dialog to edit transition effect of a page view
283
/*! Create dialog, given layer names (read-only), and an IpeViewSeq
284
object. Note that \c data is updated during the execution of the
285
dialog, and must be discarded if the return value of exec() is not
286
QDialog::Accepted. */
287
DialogPageViews::DialogPageViews(QWidget* parent, QStringList layers,
288
IpeViewSeq &data, QStringList §ions)
289
: DlgPagePresentation(parent, "dialogpageviews", true),
290
iLayers(layers), iData(data), iSections(sections)
300
/*! Create dialog, given an IpeView object. */
301
DialogEffects::DialogEffects(QWidget* parent, IpeView &data)
302
: QDialog(parent), iData(data)
305
connect(iButtonHelp, SIGNAL(clicked()), SLOT(ShowHelp()));
306
connect(iButtonOk, SIGNAL(clicked()), SLOT(UpdateData()));
292
308
// init effects combo box
293
iEffectComboBox->insertItem(tr("No effect"));
294
iEffectComboBox->insertItem(tr("Split horizontally inwards"));
295
iEffectComboBox->insertItem(tr("Split horizontally outwards"));
296
iEffectComboBox->insertItem(tr("Split vertically inwards"));
297
iEffectComboBox->insertItem(tr("Split vertically outwards"));
298
iEffectComboBox->insertItem(tr("Blinds horizontally"));
299
iEffectComboBox->insertItem(tr("Blinds vertically"));
300
iEffectComboBox->insertItem(tr("Box inwards"));
301
iEffectComboBox->insertItem(tr("Box outwards"));
302
iEffectComboBox->insertItem(tr("Wipe left-to-right"));
303
iEffectComboBox->insertItem(tr("Wipe bottom-to-top"));
304
iEffectComboBox->insertItem(tr("Wipe right-to-left"));
305
iEffectComboBox->insertItem(tr("Wipe top-to-bottom"));
306
iEffectComboBox->insertItem(tr("Dissolve"));
307
iEffectComboBox->insertItem(tr("Glitter left-to-right"));
308
iEffectComboBox->insertItem(tr("Glitter top-to-bottom"));
309
iEffectComboBox->insertItem(tr("Glitter diagonally"));
311
iLayerListBox->clear();
312
iLayerListBox->insertStringList(layers);
317
iViewsListBox->clear();
318
for (uint i = 0; i < iData.size(); i++) {
319
iViewsListBox->insertItem("");
309
iEffectComboBox->addItem(tr("No effect"));
310
iEffectComboBox->addItem(tr("Split horizontally inwards"));
311
iEffectComboBox->addItem(tr("Split horizontally outwards"));
312
iEffectComboBox->addItem(tr("Split vertically inwards"));
313
iEffectComboBox->addItem(tr("Split vertically outwards"));
314
iEffectComboBox->addItem(tr("Blinds horizontally"));
315
iEffectComboBox->addItem(tr("Blinds vertically"));
316
iEffectComboBox->addItem(tr("Box inwards"));
317
iEffectComboBox->addItem(tr("Box outwards"));
318
iEffectComboBox->addItem(tr("Wipe left-to-right"));
319
iEffectComboBox->addItem(tr("Wipe bottom-to-top"));
320
iEffectComboBox->addItem(tr("Wipe right-to-left"));
321
iEffectComboBox->addItem(tr("Wipe top-to-bottom"));
322
iEffectComboBox->addItem(tr("Dissolve"));
323
iEffectComboBox->addItem(tr("Glitter left-to-right"));
324
iEffectComboBox->addItem(tr("Glitter top-to-bottom"));
325
iEffectComboBox->addItem(tr("Glitter diagonally"));
327
iDurationSpinBox->setValue(iData.Duration());
328
iTransitionSpinBox->setValue(iData.TransitionTime());
329
iEffectComboBox->setCurrentIndex(int(iData.Effect()));
331
iTransitionSpinBox->setEnabled(iData.Effect() != IpeView::ENormal);
332
connect(iEffectComboBox, SIGNAL(highlighted(int)), SLOT(UpdateFields(int)));
335
// --------------------------------------------------------------------
337
//! Update the transition field when the effect has changed.
338
void DialogEffects::UpdateFields(int effect)
340
iTransitionSpinBox->setEnabled(effect != 0);
343
void DialogEffects::UpdateData()
345
iData.SetEffect(IpeView::TEffect(iEffectComboBox->currentIndex()));
346
iData.SetTransitionTime(iTransitionSpinBox->value());
347
iData.SetDuration(iDurationSpinBox->value());
350
void DialogEffects::ShowHelp()
352
QWhatsThis::enterWhatsThisMode();
355
// --------------------------------------------------------------------
357
DialogLatexError::DialogLatexError(QWidget* parent, const QString &log)
361
iLogEditor->setReadOnly(true);
362
iLogEditor->setFocus();
363
QTextDocument *doc = new QTextDocument(iLogEditor);
364
doc->setPlainText(log);
365
QTextCursor cursor(doc);
369
int nextErr = log.indexOf(QLatin1String("\n!"), curPos);
374
while (curPos < nextErr + 1) {
375
if (log[curPos++] == QLatin1Char('\n'))
378
cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, lines);
379
int pos = cursor.position();
380
cursor.movePosition(QTextCursor::Down);
381
cursor.setPosition(pos, QTextCursor::KeepAnchor);
384
s.sprintf("err%d", errNo);
385
QTextCharFormat format;
386
format.setBackground(Qt::yellow);
387
format.setAnchorName(s);
388
format.setAnchor(true);
389
cursor.setCharFormat(format);
391
iLogEditor->setDocument(doc);
392
iLogEditor->scrollToAnchor(QLatin1String("err1"));
395
// --------------------------------------------------------------------
397
DialogPage::DialogPage(QWidget* parent, QStringList §ions)
398
: QDialog(parent), iSections(sections)
401
connect(iButtonHelp, SIGNAL(clicked()), SLOT(ShowHelp()));
402
connect(iButtonOk, SIGNAL(clicked()), SLOT(UpdateData()));
324
403
iSectionEditor->setText(iSections[0]);
325
404
iSubsectionEditor->setText(iSections[1]);
328
//! Update the enabled state of the view buttons and the current line
329
void DialogPageViews::UpdateViewState()
331
iViewsListBox->setCurrentItem(iCurView);
332
iViewsDelButton->setEnabled(iData.size() > 1);
333
iViewsUpButton->setEnabled(iCurView > 0);
334
iViewsDownButton->setEnabled(iCurView < int(iData.size() - 1));
337
//! Update the view description lines
338
void DialogPageViews::UpdateViewLine(int itemno)
340
IpeView &p = iData[itemno];
342
s.sprintf("View #%d: ", itemno + 1);
343
for (int i = 0; i < p.CountLayers(); ++i) {
346
if (p.Layer(i) == p.Active())
347
s.append("<" + QIpe(p.Layer(i)) + ">");
349
s.append(QIpe(p.Layer(i)));
351
if (p.Duration() > 0)
352
s.append(" (" + QString::number(p.Duration()) + " sec.)");
353
iViewsListBox->changeItem(s, itemno);
356
void DialogPageViews::AddNewView()
359
IpeView pres = iData[iCurView];
361
IpeViewSeq::iterator it = iData.begin() + iCurView;
362
iData.insert(it, pres);
363
iViewsListBox->insertItem("", iCurView);
364
UpdateViewLine(iCurView);
369
void DialogPageViews::RemoveView()
371
if (iData.size() == 0) return;
373
iData.erase(iData.begin() + iCurView);
374
iViewsListBox->removeItem(iCurView);
375
if (iCurView == int(iData.size()))
381
void DialogPageViews::MoveViewUp()
383
if (iCurView == 0) return;
385
IpeViewSeq::iterator it = iData.begin() + iCurView;
387
it = iData.erase(it);
388
--iCurView; --it; // previous line
390
UpdateViewLine(iCurView);
391
UpdateViewLine(iCurView + 1);
396
void DialogPageViews::MoveViewDown()
398
if (iCurView == int(iViewsListBox->count() - 1)) return;
400
IpeViewSeq::iterator it = iData.begin() + iCurView;
402
it = iData.erase(it);
403
++iCurView; ++it; // next line
405
UpdateViewLine(iCurView);
406
UpdateViewLine(iCurView - 1);
411
void DialogPageViews::CurrentViewChanged(QListBoxItem *)
413
if (iInternal) return;
414
int itemno = iViewsListBox->currentItem();
421
// --------------------------------------------------------------------
423
//! Update the view fields when the current view has changed.
424
void DialogPageViews::UpdateFields()
427
IpeView &p = iData[iCurView];
428
iDurationSpinBox->setValue(p.Duration());
429
iTransitionSpinBox->setValue(p.TransitionTime());
430
iEffectComboBox->setCurrentItem(int(p.Effect()));
431
for (uint i = 0; i < iLayerListBox->count(); ++i) {
432
iLayerListBox->setSelected(i, p.HasLayer(IpeQ(iLayerListBox->text(i))));
434
iTransitionSpinBox->setEnabled(p.Effect() != IpeView::ENormal);
438
void DialogPageViews::LayerHighlighted()
441
iData[iCurView].ClearLayers();
442
for (uint i = 0; i < iLayerListBox->count(); ++i) {
443
if (iLayerListBox->isSelected(i)) {
444
iData[iCurView].AddLayer(IpeQ(iLayerListBox->text(i)));
447
UpdateViewLine(iCurView);
451
void DialogPageViews::EffectChanged(int effectNo)
453
iTransitionSpinBox->setEnabled(effectNo != 0);
455
iData[iCurView].SetEffect(IpeView::TEffect(effectNo));
458
void DialogPageViews::TransitionChanged(int val)
461
iData[iCurView].SetTransitionTime(val);
464
void DialogPageViews::DurationChanged(int val)
467
iData[iCurView].SetDuration(val);
468
UpdateViewLine(iCurView);
472
void DialogPageViews::UpdateData()
407
void DialogPage::UpdateData()
474
409
iSections[0] = iSectionEditor->text();
475
410
iSections[1] = iSubsectionEditor->text();
478
void DialogPageViews::ShowHelp()
413
void DialogPage::ShowHelp()
480
415
QWhatsThis::enterWhatsThisMode();
483
418
// --------------------------------------------------------------------
485
DialogLatexError::DialogLatexError(QWidget* parent, QString log)
486
: DlgLatexErr(parent, "dlglatexerr", false)
488
iLogEditor->setText(log);
489
iLogEditor->setFocus();
492
// --------------------------------------------------------------------