From b8008acbf11b264367097603f3a90cebfc0d6ae9 Mon Sep 17 00:00:00 2001 From: Edwin Leuven Date: Thu, 7 Nov 2002 15:48:38 +0000 Subject: [PATCH] apply Juergen Spitzmueller's changes to qt document dialog. save doc defaults and buffer update on apply now work. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5596 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/controllers/ChangeLog | 5 +++ src/frontends/controllers/ControlDocument.C | 28 +++++++++++------ src/frontends/qt2/ChangeLog | 10 ++++++ src/frontends/qt2/QDocument.C | 18 +++++++++++ src/frontends/qt2/QDocument.h | 4 +++ src/frontends/qt2/QDocumentDialog.C | 35 +++++++++++++++------ src/frontends/qt2/QDocumentDialog.h | 4 +-- src/frontends/qt2/ui/QDocumentDialog.ui | 26 +++++++++++++-- 8 files changed, 107 insertions(+), 23 deletions(-) diff --git a/src/frontends/controllers/ChangeLog b/src/frontends/controllers/ChangeLog index bc42eb632a..9e1b1bfe07 100644 --- a/src/frontends/controllers/ChangeLog +++ b/src/frontends/controllers/ChangeLog @@ -1,3 +1,8 @@ +2002-11-07 Juergen Spitzmueller + + * ControlDocument.C: (SaveAsDefault) make it work. + fix buffer update on class change + 2002-11-06 Angus Leeming * biblio.C (searchKeys and helper functions): rewritten entirely diff --git a/src/frontends/controllers/ControlDocument.C b/src/frontends/controllers/ControlDocument.C index 4a53d336f3..8af1b90e8d 100644 --- a/src/frontends/controllers/ControlDocument.C +++ b/src/frontends/controllers/ControlDocument.C @@ -72,14 +72,15 @@ void ControlDocument::apply() // FIXME: do we need to use return value from classApply() here? (Lgb) classApply(); - lv_.view()->redoCurrentBuffer(); view().apply(); buffer()->params = *bp_; + + lv_.view()->redoCurrentBuffer(); buffer()->markDirty(); - lv_.message(_("Document Settings Applied")); + lv_.message(_("Document settings applied")); } @@ -107,14 +108,17 @@ void ControlDocument::setLanguage() bool ControlDocument::classApply() { - BufferParams & params = lv_.buffer()->params; - unsigned int const old_class = bp_->textclass; + BufferParams & params = buffer()->params; + unsigned int const old_class = params.textclass; + unsigned int const new_class = bp_->textclass; + // exit if nothing changes - if (params.textclass == old_class) - return true; + if (new_class == old_class) { + return true; + } // try to load new_class - if (!textclasslist[params.textclass].load()) { + if (!textclasslist[new_class].load()) { // problem changing class // -- warn user (to retain old style) Alert::alert(_("Conversion Errors!"), @@ -124,9 +128,11 @@ bool ControlDocument::classApply() } // successfully loaded + view().apply(); + buffer()->params = *bp_; lv_.message(_("Converting document to new document class...")); int ret = CutAndPaste::SwitchLayoutsBetweenClasses( - old_class, params.textclass, + old_class, new_class, &*(lv_.buffer()->paragraphs.begin()), lv_.buffer()->params); if (ret) { @@ -140,13 +146,17 @@ bool ControlDocument::classApply() Alert::alert(_("Conversion Errors!"),s, _("into chosen document class")); } - //lv_.view()->redoCurrentBuffer(); return true; } void ControlDocument::saveAsDefault() { + if (!Alert::askQuestion(_("Do you want to save the current settings"), + _("for the document layout as default?"), + _("(they will be valid for any new document)"))) + return; + lv_.buffer()->params.preamble = bp_->preamble; string const fname = AddName(AddPath(user_lyxdir, "templates/"), diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 0d745646fe..9179e3fc9e 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,13 @@ +2002-11-27 Juergen Spitzmueller + + * ui/QDocument.ui: + * QDocumentDialog.C: + * QDocument.[Ch]: + Implement "Save as default" and "Use class defaults" + + * QDocumentDialog.C: Fix dialog update on class change + implement lyxrc.auto_reset_options + 2002-11-07 John Levon * QGraphics.[Ch]: diff --git a/src/frontends/qt2/QDocument.C b/src/frontends/qt2/QDocument.C index b1b7b2ff1d..6c40fb9fe3 100644 --- a/src/frontends/qt2/QDocument.C +++ b/src/frontends/qt2/QDocument.C @@ -594,3 +594,21 @@ void QDocument::update_contents() dialog_->marginsModule->footskipLE->setText( tostr(LyXLength(params.footskip).value()).c_str()); } + + +void QDocument::saveDocDefault() +{ + // we have to apply the params first + apply(); + controller().saveAsDefault(); +} + +void QDocument::useClassDefaults() +{ + BufferParams & params = controller().params(); + + params.textclass = dialog_->layoutModule->classCO->currentItem(); + params.useClassDefaults(); + update_contents(); +} + diff --git a/src/frontends/qt2/QDocument.h b/src/frontends/qt2/QDocument.h index cceb8636bc..d9decb7f5e 100644 --- a/src/frontends/qt2/QDocument.h +++ b/src/frontends/qt2/QDocument.h @@ -41,6 +41,10 @@ private: void update_contents(); /// build the dialog void build_dialog(); + /// save as default template + void saveDocDefault(); + /// reset to default params + void useClassDefaults(); /// std::vector lang_; }; diff --git a/src/frontends/qt2/QDocumentDialog.C b/src/frontends/qt2/QDocumentDialog.C index 8147388bff..3c07a514ce 100644 --- a/src/frontends/qt2/QDocumentDialog.C +++ b/src/frontends/qt2/QDocumentDialog.C @@ -310,8 +310,10 @@ void QDocumentDialog::setTitle(int item) /* * public slot */ -void QDocumentDialog::saveDocDefault() -{} +void QDocumentDialog::saveDefaultClicked() +{ + form_->saveDocDefault(); +} /* @@ -326,9 +328,9 @@ void QDocumentDialog::restore() /* * public slot */ -void QDocumentDialog::useClassDefaults() +void QDocumentDialog::useDefaultsClicked() { - qWarning( "DocumentDialog::useClassDefaults() not yet implemented!" ); + form_->useClassDefaults(); } @@ -475,10 +477,23 @@ void QDocumentDialog::updatePagestyle(string const & items, string const & sel) void QDocumentDialog::classChanged() { - updateFontsize(form_->controller().textClass().opt_fontsize(), - form_->controller().params().fontsize); - - updatePagestyle(form_->controller().textClass().opt_pagestyle(), - form_->controller().params().pagestyle); - + unsigned int tc = layoutModule->classCO->currentItem(); + + BufferParams & params = form_->controller().params(); + params.textclass = layoutModule->classCO->currentItem(); + + if (lyxrc.auto_reset_options) { + params.textclass = tc; + params.useClassDefaults(); + form_->update_contents(); + } else { + // update the params which are needed in any case + // (fontsizes, pagestyle) + params.textclass = tc; + updateFontsize(form_->controller().textClass().opt_fontsize(), + params.fontsize); + + updatePagestyle(form_->controller().textClass().opt_pagestyle(), + params.pagestyle); + } } diff --git a/src/frontends/qt2/QDocumentDialog.h b/src/frontends/qt2/QDocumentDialog.h index 708c8eee9c..772f436013 100644 --- a/src/frontends/qt2/QDocumentDialog.h +++ b/src/frontends/qt2/QDocumentDialog.h @@ -50,9 +50,9 @@ public: public slots: void setTitle(int); void change_adaptor(); - void saveDocDefault(); + void saveDefaultClicked(); void restore(); - void useClassDefaults(); + void useDefaultsClicked(); protected slots: void setLSpacing(int); void setMargins(int); diff --git a/src/frontends/qt2/ui/QDocumentDialog.ui b/src/frontends/qt2/ui/QDocumentDialog.ui index aab51952df..247949dc9a 100644 --- a/src/frontends/qt2/ui/QDocumentDialog.ui +++ b/src/frontends/qt2/ui/QDocumentDialog.ui @@ -13,7 +13,7 @@ 0 0 - 468 + 465 363 @@ -66,6 +66,10 @@ text Use Class Defaults + + toolTip + Reset default params of the current class + QPushButton @@ -84,6 +88,10 @@ text Save as Document Defaults + + toolTip + Save settings as LyX's default template + @@ -265,7 +273,7 @@ image0 - 789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753 + 789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758 @@ -281,7 +289,21 @@ QDocumentDialogBase setTitle(int) + + savePB + clicked() + QDocumentDialogBase + saveDefaultClicked() + + + defaultPB + clicked() + QDocumentDialogBase + useDefaultsClicked() + change_adaptor() + useDefaultsClicked() + saveDefaultClicked() setTitle(int) -- 2.39.5