+namespace {
+ void updateComboBox(LyXRC::Alternatives const & alts,
+ string const & fmt, QComboBox * combo)
+ {
+ LyXRC::Alternatives::const_iterator it =
+ alts.find(fmt);
+ if (it != alts.end()) {
+ LyXRC::CommandSet const & cmds = it->second;
+ LyXRC::CommandSet::const_iterator sit =
+ cmds.begin();
+ LyXRC::CommandSet::const_iterator const sen =
+ cmds.end();
+ for (; sit != sen; ++sit) {
+ QString const qcmd = toqstr(*sit);
+ combo->addItem(qcmd, qcmd);
+ }
+ }
+ }
+}
+
+
+void PrefFileformats::updateViewers()
+{
+ Format const f = currentFormat();
+ viewerCO->blockSignals(true);
+ viewerCO->clear();
+ viewerCO->addItem(qt_("None"), QString());
+ updateComboBox(viewer_alternatives, f.name(), viewerCO);
+ viewerCO->addItem(qt_("Custom"), QString("custom viewer"));
+ viewerCO->blockSignals(false);
+
+ int pos = viewerCO->findData(toqstr(f.viewer()));
+ if (pos != -1) {
+ viewerED->clear();
+ viewerED->setEnabled(false);
+ viewerCO->setCurrentIndex(pos);
+ } else {
+ viewerED->setEnabled(true);
+ viewerED->setText(toqstr(f.viewer()));
+ viewerCO->setCurrentIndex(viewerCO->findData(toqstr("custom viewer")));
+ }
+}
+
+
+void PrefFileformats::updateEditors()
+{
+ Format const f = currentFormat();
+ editorCO->blockSignals(true);
+ editorCO->clear();
+ editorCO->addItem(qt_("None"), QString());
+ updateComboBox(editor_alternatives, f.name(), editorCO);
+ editorCO->addItem(qt_("Custom"), QString("custom editor"));
+ editorCO->blockSignals(false);
+
+ int pos = editorCO->findData(toqstr(f.editor()));
+ if (pos != -1) {
+ editorED->clear();
+ editorED->setEnabled(false);
+ editorCO->setCurrentIndex(pos);
+ } else {
+ editorED->setEnabled(true);
+ editorED->setText(toqstr(f.editor()));
+ editorCO->setCurrentIndex(editorCO->findData(toqstr("custom editor")));
+ }
+}
+
+
+void PrefFileformats::on_viewerCO_currentIndexChanged(int i)
+{
+ bool const custom = viewerCO->itemData(i).toString() == "custom viewer";
+ viewerED->setEnabled(custom);
+ if (!custom)
+ currentFormat().setViewer(fromqstr(viewerCO->itemData(i).toString()));
+}
+
+
+void PrefFileformats::on_editorCO_currentIndexChanged(int i)
+{
+ bool const custom = editorCO->itemData(i).toString() == "custom editor";
+ editorED->setEnabled(custom);
+ if (!custom)
+ currentFormat().setEditor(fromqstr(editorCO->itemData(i).toString()));
+}
+
+