-// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 2001 The LyX Team.
+/**
+ * \file ControlRef.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * ======================================================
+ * \author Angus Leeming
*
- * \file ControlRef.C
- * \author Angus Leeming <a.leeming@ic.ac.uk>
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-#include "ViewBase.h"
-#include "ButtonControllerBase.h"
#include "ControlRef.h"
-#include "Dialogs.h"
-#include "LyXView.h"
#include "buffer.h"
-#include "lyxfunc.h"
+#include "bufferlist.h"
+#include "funcrequest.h"
+
+#include "support/filetools.h" // MakeAbsPath, MakeDisplayPath
+
+using std::vector;
+using std::string;
+
+
+extern BufferList bufferlist;
+
+namespace lyx {
+
+using support::MakeAbsPath;
+using support::MakeDisplayPath;
-using SigC::slot;
+namespace frontend {
-ControlRef::ControlRef(LyXView & lv, Dialogs & d)
- : ControlCommand(lv, d, LFUN_REF_INSERT)
+ControlRef::ControlRef(Dialog & d)
+ : ControlCommand(d, "ref")
+{}
+
+
+vector<string> const ControlRef::getLabelList(string const & name) const
+{
+ Buffer const & buf = *bufferlist.getBuffer(MakeAbsPath(name));
+ vector<string> list;
+ buf.getLabelList(list);
+ return list;
+}
+
+
+void ControlRef::gotoRef(string const & ref)
{
- d_.showRef.connect(slot(this, &ControlRef::showInset));
- d_.createRef.connect(slot(this, &ControlRef::createInset));
+ kernel().dispatch(FuncRequest(LFUN_BOOKMARK_SAVE, "0"));
+ kernel().dispatch(FuncRequest(LFUN_LABEL_GOTO, ref));
}
-std::vector<string> const ControlRef::getLabelList() const
+void ControlRef::gotoBookmark()
{
- return lv_.buffer()->getLabelList();
+ kernel().dispatch(FuncRequest(LFUN_BOOKMARK_GOTO, "0"));
}
-void ControlRef::gotoRef(string const & ref) const
+vector<string> const ControlRef::getBufferList() const
{
- lv_.getLyXFunc()->Dispatch(LFUN_BOOKMARK_SAVE, "0");
- lv_.getLyXFunc()->Dispatch(LFUN_REF_GOTO, ref);
+ vector<string> buffers = bufferlist.getFileNames();
+ for (vector<string>::iterator it = buffers.begin();
+ it != buffers.end(); ++it) {
+ *it = MakeDisplayPath(*it);
+ }
+
+ return buffers;
}
-void ControlRef::gotoBookmark() const
+int ControlRef::getBufferNum() const
+{
+ vector<string> buffers = bufferlist.getFileNames();
+ string const name = kernel().buffer().fileName();
+ vector<string>::const_iterator cit =
+ find(buffers.begin(), buffers.end(), name);
+ if (cit == buffers.end())
+ return 0;
+ return int(cit - buffers.begin());
+}
+
+string const ControlRef::getBufferName(int num) const
{
- lv_.getLyXFunc()->Dispatch(LFUN_BOOKMARK_GOTO, "0");
+ return bufferlist.getFileNames()[num];
}
+} // namespace frontend
+} // namespace lyx