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")) { if (types.contains("Rectangle")) {
m_currentWidget = m_rectangleWidget; m_currentWidget = m_rectangleWidget;
m_rectangleWidget->enabableGradientEditing(!isPropertyChanges());
m_rectangleWidget->show(); m_rectangleWidget->show();
resize(sizeHint()); resize(sizeHint());
return true; return true;

View File

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

View File

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

View File

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

View File

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