3 * Copyright 2001 the LyX Team
4 * Read the file COPYING
11 #include "support/lstrings.h"
14 #include "ControlRef.h"
17 #include "insets/insetref.h"
23 FormRef::FormRef(ControlRef & c)
24 : KFormBase<ControlRef, RefDialog>(c),
25 sort_(0), gotowhere_(GOTOREF), refs_(0)
32 dialog_.reset(new RefDialog(this, 0, _("LyX: Cross Reference"), false));
34 //bc().setUndoAll(dialog_->buttonRestore);
35 bc().setOK(dialog_->buttonOk);
36 //bc().setApply(dialog_->buttonApply);
37 bc().setCancel(dialog_->buttonCancel);
42 void FormRef::update()
44 dialog_->reference->setText(controller().params().getContents().c_str());
45 dialog_->refname->setText(controller().params().getOptions().c_str());
47 dialog_->type->setCurrentItem(InsetRef::getType(controller().params().getCmdName()));
49 // Name is irrelevant to LaTeX/Literate documents
50 dialog_->refname->setEnabled(controller().docType() != ControlRef::LATEX &&
51 controller().docType() != ControlRef::LITERATE);
53 // type is irrelevant to LinuxDoc/DocBook.
54 if (controller().docType() == ControlRef::LINUXDOC ||
55 controller().docType() == ControlRef::DOCBOOK) {
56 dialog_->type->setCurrentItem(0);
57 dialog_->type->setEnabled(false);
59 dialog_->type->setEnabled(true);
61 dialog_->buttonGoto->setText(_("&Goto reference"));
62 QToolTip::remove(dialog_->buttonGoto);
63 QToolTip::add(dialog_->buttonGoto,_("Jump to selected reference"));
67 dialog_->sort->setChecked(sort_);
71 //dialog_->buttonGoto->setEnabled(params.getContents()!="");
72 //dialog_->buttonOk->setEnabled(params.getContents()!="");
78 controller().params().setCmdName(InsetRef::getName(dialog_->type->currentItem()));
79 controller().params().setContents(dialog_->reference->text());
80 controller().params().setOptions(dialog_->refname->text());
84 void FormRef::select(char const * text)
91 void FormRef::highlight(char const * text)
94 if (gotowhere_==GOTOBACK)
97 dialog_->buttonGoto->setEnabled(true);
101 void FormRef::set_sort(bool on)
105 dialog_->refs->clear();
111 void FormRef::goto_ref()
114 switch (gotowhere_) {
116 lv_->getLyXFunc()->Dispatch(LFUN_REF_GOTO, dialog_->reference->text());
118 dialog_->buttonGoto->setText(_("&Go back"));
119 QToolTip::remove(dialog_->buttonGoto);
120 QToolTip::add(dialog_->buttonGoto,_("Jump back to original position"));
123 lv_->getLyXFunc()->Dispatch(LFUN_BOOKMARK_GOTO, "0");
125 dialog_->buttonGoto->setText(_("&Goto reference"));
126 QToolTip::remove(dialog_->buttonGoto);
127 QToolTip::add(dialog_->buttonGoto,_("Jump to selected reference"));
134 void FormRef::updateRefs()
136 // list will be re-done, should go back if necessary
137 /* FIXME if (gotowhere == GOTOBACK) {
138 lv_->getLyXFunc()->Dispatch(LFUN_BOOKMARK_GOTO, "0");
140 dialog_->buttonGoto->setText(_("&Goto reference"));
141 QToolTip::remove(dialog_->buttonGoto);
142 QToolTip::add(dialog_->buttonGoto,_("Jump to selected reference"));
145 dialog_->refs->setAutoUpdate(false);
147 // need this because Qt will send a highlight() here for
148 // the first item inserted
149 string tmp(dialog_->reference->text());
151 for (vector<string>::const_iterator iter = refs_.begin();
152 iter != refs_.end(); ++iter) {
154 dialog_->refs->inSort(iter->c_str());
156 dialog_->refs->insertItem(iter->c_str());
159 dialog_->reference->setText(tmp.c_str());
161 for (unsigned int i=0; i < dialog_->refs->count(); ++i) {
162 if (!compare(dialog_->reference->text(),
163 dialog_->refs->text(i)))
164 dialog_->refs->setCurrentItem(i);
167 dialog_->refs->setAutoUpdate(true);
168 dialog_->refs->update();
172 void FormRef::do_ref_update()
175 dialog_->refs->clear();
176 refs_ = controller().getLabelList();
178 dialog_->sort->setEnabled(true);