2010-09-07 00:41:00 +00:00
|
|
|
/**
|
|
|
|
* \file GuiLine.cpp
|
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Uwe Stöhr
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
#include "GuiLine.h"
|
|
|
|
|
|
|
|
#include "LengthCombo.h"
|
|
|
|
#include "qt_helpers.h"
|
|
|
|
#include "Validator.h"
|
|
|
|
|
|
|
|
#include "FuncRequest.h"
|
|
|
|
|
|
|
|
#include "insets/InsetLine.h"
|
|
|
|
|
|
|
|
#include "support/debug.h"
|
|
|
|
#include "support/gettext.h"
|
|
|
|
#include "support/lstrings.h"
|
|
|
|
|
|
|
|
#include <QLineEdit>
|
|
|
|
#include <QPushButton>
|
|
|
|
#include <QValidator>
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
namespace lyx {
|
|
|
|
namespace frontend {
|
|
|
|
|
2010-09-07 14:13:28 +00:00
|
|
|
GuiLine::GuiLine(QWidget * parent) : InsetParamsWidget(parent)
|
2010-09-07 00:41:00 +00:00
|
|
|
{
|
|
|
|
setupUi(this);
|
|
|
|
|
|
|
|
connect(OffsetLE, SIGNAL(textChanged(QString)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
connect(OffsetUnitCO, SIGNAL(selectionChanged(lyx::Length::UNIT)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
connect(WidthLE, SIGNAL(textChanged(QString)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
connect(WidthUnitCO, SIGNAL(selectionChanged(lyx::Length::UNIT)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
connect(HeightLE, SIGNAL(textChanged(QString)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
connect(HeightUnitCO, SIGNAL(selectionChanged(lyx::Length::UNIT)),
|
2010-09-07 14:13:28 +00:00
|
|
|
this, SIGNAL(changed()));
|
2010-09-07 00:41:00 +00:00
|
|
|
|
|
|
|
// initialize the length validator
|
2010-09-07 14:13:28 +00:00
|
|
|
addCheckedWidget(OffsetLE, OffsetValueL);
|
|
|
|
addCheckedWidget(WidthLE, WidthValueL);
|
|
|
|
addCheckedWidget(HeightLE, HeightValueL);
|
2010-09-07 00:41:00 +00:00
|
|
|
|
|
|
|
OffsetLE->setValidator(unsignedGlueLengthValidator(OffsetLE));
|
|
|
|
WidthLE->setValidator(unsignedGlueLengthValidator(WidthLE));
|
|
|
|
HeightLE->setValidator(unsignedGlueLengthValidator(HeightLE));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-09-07 14:13:28 +00:00
|
|
|
docstring GuiLine::dialogToParams() const
|
2010-09-07 00:41:00 +00:00
|
|
|
{
|
|
|
|
docstring offset = from_utf8(widgetsToLength(OffsetLE, OffsetUnitCO));
|
2010-09-07 14:13:28 +00:00
|
|
|
InsetCommandParams params(insetCode());
|
|
|
|
params["offset"] = offset;
|
|
|
|
|
2010-09-07 00:41:00 +00:00
|
|
|
// negative widths are senseless
|
|
|
|
string width_str = fromqstr(WidthLE->text());
|
|
|
|
if (width_str[0] == '-')
|
|
|
|
width_str.erase(0,1);
|
|
|
|
WidthLE->setText(toqstr(width_str));
|
|
|
|
docstring width = from_utf8(widgetsToLength(WidthLE, WidthUnitCO));
|
2010-09-07 14:13:28 +00:00
|
|
|
params["width"] = width;
|
2010-09-07 00:41:00 +00:00
|
|
|
|
|
|
|
// negative heights are senseless
|
|
|
|
string height_str = fromqstr(HeightLE->text());
|
|
|
|
if (height_str[0] == '-')
|
|
|
|
height_str.erase(0,1);
|
|
|
|
HeightLE->setText(toqstr(height_str));
|
|
|
|
docstring height = from_utf8(widgetsToLength(HeightLE, HeightUnitCO));
|
2010-09-07 14:13:28 +00:00
|
|
|
params["height"] = height;
|
2010-09-07 00:41:00 +00:00
|
|
|
|
2010-09-07 14:13:28 +00:00
|
|
|
params.setCmdName("rule");
|
|
|
|
return from_ascii(InsetLine::params2string("line", params));
|
2010-09-07 00:41:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-09-07 14:13:28 +00:00
|
|
|
void GuiLine::paramsToDialog(Inset const * inset)
|
2010-09-07 00:41:00 +00:00
|
|
|
{
|
2010-09-07 14:13:28 +00:00
|
|
|
InsetLine const * line = static_cast<InsetLine const *>(inset);
|
|
|
|
InsetCommandParams const & params = line->params();
|
|
|
|
lengthToWidgets(OffsetLE,
|
|
|
|
OffsetUnitCO,
|
|
|
|
params["offset"],
|
|
|
|
Length::defaultUnit());
|
|
|
|
lengthToWidgets(WidthLE,
|
|
|
|
WidthUnitCO,
|
|
|
|
params["width"],
|
|
|
|
Length::defaultUnit());
|
|
|
|
lengthToWidgets(HeightLE,
|
|
|
|
HeightUnitCO,
|
|
|
|
params["height"],
|
|
|
|
Length::defaultUnit());
|
2010-09-07 00:41:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-09-07 14:13:28 +00:00
|
|
|
bool GuiLine::checkWidgets() const
|
2010-09-07 00:41:00 +00:00
|
|
|
{
|
2010-09-07 14:13:28 +00:00
|
|
|
if (!InsetParamsWidget::checkWidgets())
|
|
|
|
return false;
|
|
|
|
// FIXME: Is there something else to check?
|
|
|
|
// Transfer some code from dialogToParams()?
|
2010-09-07 00:41:00 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace frontend
|
|
|
|
} // namespace lyx
|
|
|
|
|
|
|
|
|
|
|
|
#include "moc_GuiLine.cpp"
|