QtQuickToolBar: disable gradient editing in PropertyChanges

Editing gradients in PropertyChanges is not allowed.

Task-number: QTCREATORBUG-2969
This commit is contained in:
Thomas Hartmann
2011-03-10 13:05:23 +01:00
parent 2731f42e8d
commit 402daade93
5 changed files with 33 additions and 6 deletions

View File

@@ -362,6 +362,7 @@ bool ContextPaneWidget::setType(const QStringList &types)
}
if (types.contains("Rectangle")) {
m_currentWidget = m_rectangleWidget;
m_rectangleWidget->enabableGradientEditing(!isPropertyChanges());
m_rectangleWidget->show();
resize(sizeHint());
return true;

View File

@@ -99,6 +99,10 @@ public:
bool setType(const QStringList &types);
bool acceptsType(const QStringList &types);
QWidget* currentWidget() const { return m_currentWidget; }
void setIsPropertyChanges(bool b)
{ m_isPropertyChanges = b; }
bool isPropertyChanges() const
{ return m_isPropertyChanges; }
public slots:
void onTogglePane();
@@ -143,6 +147,7 @@ private:
QString m_colorName;
QPoint m_originalPos;
bool m_pinned;
bool m_isPropertyChanges;
};
} //QmlDesigner

View File

@@ -45,7 +45,8 @@ ContextPaneWidgetRectangle::ContextPaneWidgetRectangle(QWidget *parent) :
QWidget(parent),
ui(new Ui::ContextPaneWidgetRectangle),
m_gradientLineDoubleClicked(false),
m_gradientTimer(-1)
m_gradientTimer(-1),
m_enableGradientEditing(true)
{
ui->setupUi(this);
@@ -112,7 +113,7 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe
ui->gradientLabel->setEnabled(true);
ui->gradientLine->setEnabled(true);
if (m_hasGradient) {
if (m_hasGradient && isGradientEditingEnabled()) {
bool isBound;
ui->colorGradient->setChecked(true);
ui->gradientLine->setGradient(propertyReader->parseGradient("gradient", &isBound));
@@ -122,8 +123,8 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe
ui->colorColorButton->setColor("invalidColor");
}
} else {
//ui->gradientLine->setEnabled(false);
//ui->gradientLabel->setEnabled(false);
ui->gradientLine->setEnabled(false);
ui->gradientLabel->setEnabled(false);
setColor();
}
@@ -132,6 +133,12 @@ void ContextPaneWidgetRectangle::setProperties(QmlJS::PropertyReader *propertyRe
m_gradientTimer = -1;
}
ui->colorGradient->setEnabled(isGradientEditingEnabled());
}
void ContextPaneWidgetRectangle::enabableGradientEditing(bool b)
{
m_enableGradientEditing = b;
}
void ContextPaneWidgetRectangle::onBorderColorButtonToggled(bool flag)
@@ -194,6 +201,7 @@ void ContextPaneWidgetRectangle::onGradientClicked()
stops.append(QGradientStop(0, ui->colorColorButton->convertedColor()));
stops.append(QGradientStop(1, Qt::white));
gradient.setStops(stops);
ui->gradientLine->setEnabled(true);
ui->gradientLine->setGradient(gradient);
}
}
@@ -201,15 +209,19 @@ void ContextPaneWidgetRectangle::onGradientClicked()
void ContextPaneWidgetRectangle::onColorNoneClicked()
{
if (ui->colorNone->isChecked()) {
ui->colorGradient->setEnabled(isGradientEditingEnabled());
emit removeAndChangeProperty("gradient", "color", "transparent", true);
}
ui->colorGradient->setEnabled(isGradientEditingEnabled());
}
void ContextPaneWidgetRectangle::onColorSolidClicked()
{
if (ui->colorSolid->isChecked()) {
ui->gradientLine->setEnabled(false);
emit removeAndChangeProperty("gradient", "color", "\"black\"", true);
}
ui->colorGradient->setEnabled(isGradientEditingEnabled());
}
void ContextPaneWidgetRectangle::onBorderNoneClicked()

View File

@@ -57,6 +57,7 @@ public:
explicit ContextPaneWidgetRectangle(QWidget *parent = 0);
~ContextPaneWidgetRectangle();
void setProperties(QmlJS::PropertyReader *propertyReader);
void enabableGradientEditing(bool);
public slots:
void onBorderColorButtonToggled(bool);
@@ -82,12 +83,15 @@ protected:
private:
void setColor();
bool isGradientEditingEnabled() const
{ return m_enableGradientEditing; }
Ui::ContextPaneWidgetRectangle *ui;
bool m_hasBorder;
bool m_hasGradient;
bool m_none;
bool m_gradientLineDoubleClicked;
int m_gradientTimer;
bool m_enableGradientEditing;
};
} //QmlDesigner

View File

@@ -147,6 +147,8 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum
const Interpreter::ObjectValue *scopeObject = document->bind()->findQmlObject(node);
bool isPropertyChanges = false;
if (!lookupContext.isNull() && scopeObject) {
m_prototypes.clear();
foreach (const Interpreter::ObjectValue *object,
@@ -155,6 +157,7 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum
}
if (m_prototypes.contains("PropertyChanges")) {
isPropertyChanges = true;
const Interpreter::ObjectValue *targetObject = getPropertyChangesTarget(node, lookupContext);
m_prototypes.clear();
if (targetObject) {
@@ -230,6 +233,8 @@ void QuickToolBar::apply(TextEditor::BaseTextEditor *editor, Document::Ptr docum
offset = QPoint(400 - reg.boundingRect().width() + 10 ,0);
QPoint p3 = editor->editorWidget()->mapToParent(editor->editorWidget()->viewport()->mapToParent(reg.boundingRect().topRight()) + offset);
p2.setX(p1.x());
contextWidget()->setIsPropertyChanges(isPropertyChanges);
if (!update)
contextWidget()->setType(m_prototypes);
if (!update)
contextWidget()->activate(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane);