#include "insets/InsetRef.h"
+#include "support/FileName.h"
#include "support/filetools.h" // MakeAbsPath, MakeDisplayPath
-#include <boost/filesystem/operations.hpp>
-
#include <QLineEdit>
#include <QCheckBox>
#include <QListWidget>
#include <QToolTip>
#include <QCloseEvent>
-#include <algorithm>
-
-using std::find;
-using std::vector;
-using std::string;
+using namespace std;
+using namespace lyx::support;
namespace lyx {
namespace frontend {
-using support::makeAbsPath;
-using support::makeDisplayPath;
-
-//FIXME It should be possible to eliminate lfun_name_
-//now and recover that information from params().insetType().
-//But let's not do that quite yet.
-/// Flags what action is taken by Kernel::dispatch()
-static std::string const lfun_name_ = "ref";
-
-GuiRef::GuiRef(LyXView & lv)
- : GuiDialog(lv, "ref"), Controller(*static_cast<Dialog*>(this)),
- params_("ref")
+GuiRef::GuiRef(GuiView & lv)
+ : GuiCommand(lv, "ref", qt_("Cross-reference"))
{
setupUi(this);
- setController(this, false);
- setViewTitle(_("Cross-reference"));
sort_ = false;
at_ref_ = false;
connect(typeCO, SIGNAL(activated(int)),
this, SLOT(changed_adaptor()));
- connect(referenceED, SIGNAL(textChanged(const QString &)),
+ connect(referenceED, SIGNAL(textChanged(QString)),
this, SLOT(changed_adaptor()));
- connect(nameED, SIGNAL(textChanged(const QString &)),
+ connect(nameED, SIGNAL(textChanged(QString)),
this, SLOT(changed_adaptor()));
connect(refsLW, SIGNAL(itemClicked(QListWidgetItem *)),
this, SLOT(refHighlighted(QListWidgetItem *)));
gotoRef();
}
+
void GuiRef::selectionChanged()
{
if (isBufferReadonly())
void GuiRef::refHighlighted(QListWidgetItem * sel)
{
- if (controller().isBufferReadonly())
+ if (isBufferReadonly())
return;
/* int const cur_item = refsLW->currentRow();
{
slotClose();
reset_dialog();
- GuiDialog::closeEvent(e);
+ e->accept();
}
// restore the buffer combo setting for new insets
if (params_["reference"].empty() && restored_buffer_ != -1
- && restored_buffer_ < bufferCO->count())
+ && restored_buffer_ < bufferCO->count())
bufferCO->setCurrentIndex(restored_buffer_);
- else
- bufferCO->setCurrentIndex(bufferNum());
+ else {
+ int num = theBufferList().bufferNum(buffer().absFileName());
+ bufferCO->setCurrentIndex(num);
+ }
updateRefs();
bc().setValid(false);
// the first item inserted
QString const oldSelection(referenceED->text());
- for (std::vector<docstring>::const_iterator iter = refs_.begin();
+ for (vector<docstring>::const_iterator iter = refs_.begin();
iter != refs_.end(); ++iter) {
refsLW->addItem(toqstr(*iter));
}
if (!oldSelection.isEmpty() || !last_reference_.isEmpty()) {
bool const newInset = oldSelection.isEmpty();
QString textToFind = newInset ? last_reference_ : oldSelection;
- bool foundItem = false;
- for (int i = 0; !foundItem && i < refsLW->count(); ++i) {
+ last_reference_.clear();
+ for (int i = 0; i != refsLW->count(); ++i) {
QListWidgetItem * item = refsLW->item(i);
if (textToFind == item->text()) {
refsLW->setCurrentItem(item);
refsLW->setItemSelected(item, !newInset);
//Make sure selected item is visible
refsLW->scrollToItem(item);
- foundItem = true;
+ last_reference_ = textToFind;
+ break;
}
}
- if (foundItem)
- last_reference_ = textToFind;
- else last_reference_ = "";
}
refsLW->setUpdatesEnabled(true);
refsLW->update();
}
-int GuiRef::bufferNum() const
-{
- vector<string> buffers = theBufferList().getFileNames();
- string const name = buffer().fileName();
- vector<string>::const_iterator cit =
- std::find(buffers.begin(), buffers.end(), name);
- if (cit == buffers.end())
- return 0;
- return int(cit - buffers.begin());
-}
-
-
-bool GuiRef::initialiseParams(string const & data)
-{
- // The name passed with LFUN_INSET_APPLY is also the name
- // used to identify the mailer.
- InsetCommandMailer::string2params(lfun_name_, data, params_);
- return true;
-}
-
-
-void GuiRef::clearParams()
-{
- params_.clear();
-}
-
-
-void GuiRef::dispatchParams()
-{
- string const lfun = InsetCommandMailer::params2string(lfun_name_, params_);
- dispatch(FuncRequest(getLfun(), lfun));
-}
-
-
-Dialog * createGuiRef(LyXView & lv) { return new GuiRef(lv); }
+Dialog * createGuiRef(GuiView & lv) { return new GuiRef(lv); }
} // namespace frontend