From 0c89888e258c0baaace8f02cf9df81bb9acd3f63 Mon Sep 17 00:00:00 2001 From: John Levon Date: Sun, 17 Nov 2002 08:02:55 +0000 Subject: [PATCH] implement converters git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5651 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt2/ChangeLog | 5 +++ src/frontends/qt2/QPrefs.C | 2 - src/frontends/qt2/QPrefsDialog.C | 66 ++++++++++++++++++++++++++++++++ src/frontends/qt2/QPrefsDialog.h | 5 +++ 4 files changed, 76 insertions(+), 2 deletions(-) diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 2808123733..e005efade6 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,8 @@ +2002-11-17 John Levon + + * QPrefsDialog.h: + * QPrefsDialog.C: implement converters + 2002-11-17 John Levon * QPrefsDialog.C: diff --git a/src/frontends/qt2/QPrefs.C b/src/frontends/qt2/QPrefs.C index fc53491e22..e0fbed9b09 100644 --- a/src/frontends/qt2/QPrefs.C +++ b/src/frontends/qt2/QPrefs.C @@ -244,8 +244,6 @@ void QPrefs::apply() controller().updateScreenFonts(); } - // FIXME: here we read new converters/ formats - controller().setConverters(converters_); controller().setFormats(formats_); diff --git a/src/frontends/qt2/QPrefsDialog.C b/src/frontends/qt2/QPrefsDialog.C index 3a5e4f6054..f7f3db00ad 100644 --- a/src/frontends/qt2/QPrefsDialog.C +++ b/src/frontends/qt2/QPrefsDialog.C @@ -157,6 +157,11 @@ QPrefsDialog::QPrefsDialog(QPrefs * form) connect(fileformatsModule->formatRemovePB, SIGNAL(clicked()), this, SLOT(remove_format())); connect(fileformatsModule->formatModifyPB, SIGNAL(clicked()), this, SLOT(modify_format())); connect(fileformatsModule->formatsLB, SIGNAL(highlighted(int)), this, SLOT(switch_format(int))); + + connect(convertersModule->converterNewPB, SIGNAL(clicked()), this, SLOT(new_converter())); + connect(convertersModule->converterRemovePB, SIGNAL(clicked()), this, SLOT(remove_converter())); + connect(convertersModule->converterModifyPB, SIGNAL(clicked()), this, SLOT(modify_converter())); + connect(convertersModule->convertersLB, SIGNAL(highlighted(int)), this, SLOT(switch_converter(int))); // Qt really sucks. This is as ugly as it looks, but the alternative // means having to derive every module == bloat @@ -275,6 +280,16 @@ void QPrefsDialog::updateConverters() { QPrefConvertersModule * convertmod(convertersModule); + convertmod->converterFromCO->clear(); + convertmod->converterToCO->clear(); + + Formats::const_iterator cit = form_->formats_.begin(); + Formats::const_iterator end = form_->formats_.end(); + for (; cit != end; ++cit) { + convertmod->converterFromCO->insertItem(cit->prettyname().c_str()); + convertmod->converterToCO->insertItem(cit->prettyname().c_str()); + } + convertmod->convertersLB->clear(); Converters::const_iterator ccit = form_->converters_.begin(); @@ -287,6 +302,57 @@ void QPrefsDialog::updateConverters() } +void QPrefsDialog::switch_converter(int nr) +{ + Converter const & c(form_->converters_.get(nr)); + convertersModule->converterFromCO->setCurrentItem(form_->formats_.getNumber(c.from)); + convertersModule->converterToCO->setCurrentItem(form_->formats_.getNumber(c.to)); + convertersModule->converterED->setText(c.command.c_str()); + convertersModule->converterFlagED->setText(c.flags.c_str()); +} + + +// FIXME: we would like to highlight the new entry ... also user must +// specify unique from/to or it doesn't appear. This is really bad UI +void QPrefsDialog::new_converter() +{ + Format const & from(form_->formats_.get(convertersModule->converterFromCO->currentItem())); + Format const & to(form_->formats_.get(convertersModule->converterToCO->currentItem())); + + Converter const * old = form_->converters_.getConverter(from.name(), to.name()); + form_->converters_.add(from.name(), to.name(), "", ""); + if (!old) { + form_->converters_.updateLast(form_->formats_); + } + updateConverters(); +} + + +void QPrefsDialog::modify_converter() +{ + Format const & from(form_->formats_.get(convertersModule->converterFromCO->currentItem())); + Format const & to(form_->formats_.get(convertersModule->converterToCO->currentItem())); + string flags(convertersModule->converterFlagED->text().latin1()); + string name(convertersModule->converterED->text().latin1()); + + Converter const * old = form_->converters_.getConverter(from.name(), to.name()); + form_->converters_.add(from.name(), to.name(), name, flags); + if (!old) { + form_->converters_.updateLast(form_->formats_); + } + updateConverters(); +} + + +void QPrefsDialog::remove_converter() +{ + Format const & from(form_->formats_.get(convertersModule->converterFromCO->currentItem())); + Format const & to(form_->formats_.get(convertersModule->converterToCO->currentItem())); + form_->converters_.erase(from.name(), to.name()); + updateConverters(); +} + + void QPrefsDialog::updateFormats() { QPrefFileformatsModule * formatmod(fileformatsModule); diff --git a/src/frontends/qt2/QPrefsDialog.h b/src/frontends/qt2/QPrefsDialog.h index 896507c707..d76c3c2d93 100644 --- a/src/frontends/qt2/QPrefsDialog.h +++ b/src/frontends/qt2/QPrefsDialog.h @@ -60,6 +60,11 @@ public slots: void modify_format(); void remove_format(); + void switch_converter(int); + void new_converter(); + void modify_converter(); + void remove_converter(); + protected: void closeEvent(QCloseEvent * e); -- 2.39.2