3 * Copyright 2001 the LyX Team
4 * Read the file COPYING
11 #include "support/lstrings.h"
13 #include "QRefDialog.h"
14 #include "ControlRef.h"
18 #include "insets/insetref.h"
20 #include <qlineedit.h>
21 #include <qcheckbox.h>
23 #include <qcombobox.h>
24 #include <qpushbutton.h>
29 typedef Qt2CB<ControlRef, Qt2DB<QRefDialog> > base_class;
31 QRef::QRef(ControlRef & c)
32 : base_class(c, _("Cross Reference")),
33 sort_(false), at_ref_(false)
38 void QRef::build_dialog()
40 dialog_.reset(new QRefDialog(this));
42 bc().setOK(dialog_->okPB);
43 bc().setCancel(dialog_->closePB);
44 bc().addReadOnly(dialog_->refsLB);
45 bc().addReadOnly(dialog_->sortCB);
46 bc().addReadOnly(dialog_->nameED);
47 bc().addReadOnly(dialog_->referenceED);
48 bc().addReadOnly(dialog_->typeCO);
52 void QRef::update_contents()
54 dialog_->referenceED->setText(controller().params().getContents().c_str());
55 dialog_->nameED->setText(controller().params().getOptions().c_str());
57 dialog_->typeCO->setCurrentItem(InsetRef::getType(controller().params().getCmdName()));
59 dialog_->nameED->setReadOnly(!nameAllowed() && !readOnly());
61 dialog_->typeCO->setEnabled(!typeAllowed() && !readOnly());
63 dialog_->typeCO->setCurrentItem(0);
65 dialog_->sortCB->setChecked(sort_);
73 controller().params().setCmdName(InsetRef::getName(dialog_->typeCO->currentItem()));
74 controller().params().setContents(dialog_->referenceED->text().latin1());
75 controller().params().setOptions(dialog_->nameED->text().latin1());
79 bool QRef::nameAllowed()
81 return controller().docType() != ControlRef::LATEX &&
82 controller().docType() != ControlRef::LITERATE;
86 bool QRef::typeAllowed()
88 return controller().docType() == ControlRef::LINUXDOC ||
89 controller().docType() == ControlRef::DOCBOOK;
93 void QRef::setGoBack()
95 dialog_->gotoPB->setText(_("&Go back"));
96 QToolTip::remove(dialog_->gotoPB);
97 QToolTip::add(dialog_->gotoPB, _("Go back"));
101 void QRef::setGotoRef()
103 dialog_->gotoPB->setText(_("&Goto"));
104 QToolTip::remove(dialog_->gotoPB);
105 QToolTip::add(dialog_->gotoPB, _("Go to reference"));
111 string ref(dialog_->referenceED->text());
116 controller().gotoBookmark();
120 controller().gotoRef(ref);
126 void QRef::redoRefs()
128 dialog_->refsLB->setAutoUpdate(false);
130 // need this because Qt will send a highlight() here for
131 // the first item inserted
132 string tmp(dialog_->referenceED->text());
134 for (std::vector<string>::const_iterator iter = refs_.begin();
135 iter != refs_.end(); ++iter) {
137 dialog_->refsLB->inSort(iter->c_str());
139 dialog_->refsLB->insertItem(iter->c_str());
142 dialog_->referenceED->setText(tmp.c_str());
144 for (unsigned int i = 0; i < dialog_->refsLB->count(); ++i) {
145 if (!compare(tmp.c_str(), dialog_->refsLB->text(i).latin1()))
146 dialog_->refsLB->setCurrentItem(i);
149 dialog_->refsLB->setAutoUpdate(true);
150 dialog_->refsLB->update();
154 void QRef::updateRefs()
159 dialog_->refsLB->clear();
160 refs_ = controller().getLabelList();
161 dialog_->sortCB->setEnabled(!refs_.empty());
162 dialog_->refsLB->setEnabled(!refs_.empty());