mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-16 13:02:49 +00:00
df59649a18
Fix for bug #12456. The labels are transmitted from Buffer to GuiRef by reference of refs_ in the getLabelList function. Previously, only one string was transmitted. But I needed both the formatted string, e.g. "x enu:test" or "Missing: enu:test", as well as the plain label, e.g. "enu:test". The former is for the list of labels to choose from in GuiRef and the latter for the label as shown in the line edit that contains the plain label in order to create a new reference from it. Transmitting both is what the pair achieves.
118 lines
2.5 KiB
C++
118 lines
2.5 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file GuiRef.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author John Levon
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef GUIREF_H
|
|
#define GUIREF_H
|
|
|
|
#include "GuiDialog.h"
|
|
#include "ui_RefUi.h"
|
|
|
|
#include "insets/InsetCommandParams.h"
|
|
|
|
#include <vector>
|
|
|
|
class QTreeWidgetItem;
|
|
|
|
namespace lyx {
|
|
namespace frontend {
|
|
|
|
class FancyLineEdit;
|
|
|
|
class GuiRef : public GuiDialog, public Ui::RefUi
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
GuiRef(GuiView & lv);
|
|
/// Dialog inherited methods
|
|
//@{
|
|
void enableView(bool enable) override;
|
|
//@}
|
|
|
|
private Q_SLOTS:
|
|
void changed_adaptor();
|
|
void gotoClicked();
|
|
void filterLabels();
|
|
void resetFilter();
|
|
void refHighlighted(QTreeWidgetItem *);
|
|
void selectionChanged();
|
|
void refTextChanged(QString const &);
|
|
void refSelected(QTreeWidgetItem *);
|
|
void sortToggled();
|
|
void groupToggled();
|
|
void on_buttonBox_clicked(QAbstractButton *);
|
|
void updateClicked();
|
|
void resetDialog();
|
|
void dialogRejected();
|
|
|
|
private:
|
|
///
|
|
bool isBufferDependent() const override { return true; }
|
|
/** disconnect from the inset when the Apply button is pressed.
|
|
Allows easy insertion of multiple references. */
|
|
bool disconnectOnApply() const override { return true; }
|
|
///
|
|
void gotoRef(std::string const &);
|
|
///
|
|
void gotoBookmark();
|
|
///
|
|
void closeEvent(QCloseEvent * e) override;
|
|
///
|
|
bool isValid() override;
|
|
/// apply changes
|
|
void applyView() override;
|
|
/// update dialog
|
|
void updateContents() override;
|
|
///
|
|
void enableBoxes();
|
|
|
|
/// go to current reference
|
|
void gotoRef();
|
|
/// set go back button
|
|
void setGoBack();
|
|
/// set goto ref button
|
|
void setGotoRef();
|
|
/// re-enter references
|
|
void redoRefs();
|
|
/// update references
|
|
void updateRefs();
|
|
///
|
|
bool initialiseParams(std::string const & data) override;
|
|
/// clean-up on hide.
|
|
void clearParams() override { params_.clear(); }
|
|
/// clean-up on hide.
|
|
void dispatchParams() override;
|
|
|
|
private:
|
|
///
|
|
InsetCommandParams params_;
|
|
|
|
/// contains the search box
|
|
FancyLineEdit * filter_;
|
|
|
|
/// went to a reference ?
|
|
bool at_ref_;
|
|
/// the last reference entered or examined
|
|
QString last_reference_;
|
|
/// store the buffer settings
|
|
int restored_buffer_;
|
|
/// store the last active buffer
|
|
int active_buffer_;
|
|
/// the references as two strings: plain label name and label as gui string
|
|
/// FIXME: might be a good idea to use a custom struct
|
|
std::vector<std::pair<docstring, docstring>> refs_;
|
|
};
|
|
|
|
} // namespace frontend
|
|
} // namespace lyx
|
|
|
|
#endif // GUIREF_H
|