~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to tools/designer/src/lib/shared/qdesigner_integration.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
 
4
**
 
5
** This file is part of the designer application of the Qt Toolkit.
 
6
**
 
7
** This file may be distributed under the terms of the Q Public License
 
8
** as defined by Trolltech AS of Norway and appearing in the file
 
9
** LICENSE.QPL included in the packaging of this file.
 
10
**
 
11
** This file may be distributed and/or modified under the terms of the
 
12
** GNU General Public License version 2 as published by the Free Software
 
13
** Foundation and appearing in the file LICENSE.GPL included in the
 
14
** packaging of this file.
 
15
**
 
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
 
17
**   information about Qt Commercial License Agreements.
 
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
 
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
 
20
**
 
21
** Contact info@trolltech.com if any conditions of this licensing are
 
22
** not clear to you.
 
23
**
 
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
26
**
 
27
****************************************************************************/
 
28
 
 
29
#include "qdesigner_integration_p.h"
 
30
 
 
31
// sdk
 
32
#include <QtDesigner/QtDesigner>
 
33
#include <QtDesigner/QExtensionManager>
 
34
 
 
35
#include <QtCore/QVariant>
 
36
 
 
37
#include <QtCore/qdebug.h>
 
38
 
 
39
QDesignerIntegration::QDesignerIntegration(QDesignerFormEditorInterface *core, QObject *parent)
 
40
    : QObject(parent),
 
41
      m_core(core)
 
42
{
 
43
    initialize();
 
44
}
 
45
 
 
46
QDesignerIntegration::~QDesignerIntegration()
 
47
{
 
48
}
 
49
 
 
50
void QDesignerIntegration::initialize()
 
51
{
 
52
    //
 
53
    // integrate the `Form Editor component'
 
54
    //
 
55
    connect(core()->propertyEditor(), SIGNAL(propertyChanged(QString,QVariant)),
 
56
            this, SLOT(updateProperty(QString,QVariant)));
 
57
 
 
58
    connect(core()->formWindowManager(), SIGNAL(formWindowAdded(QDesignerFormWindowInterface*)),
 
59
            this, SLOT(setupFormWindow(QDesignerFormWindowInterface*)));
 
60
 
 
61
    connect(core()->formWindowManager(), SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface*)),
 
62
            this, SLOT(updateActiveFormWindow(QDesignerFormWindowInterface*)));
 
63
}
 
64
 
 
65
void QDesignerIntegration::updateProperty(const QString &name, const QVariant &value)
 
66
{
 
67
    if (QDesignerFormWindowInterface *formWindow = core()->formWindowManager()->activeFormWindow()) {
 
68
 
 
69
        QDesignerFormWindowCursorInterface *cursor = formWindow->cursor();
 
70
 
 
71
        if (cursor->isWidgetSelected(formWindow->mainContainer())) {
 
72
            if (name == QLatin1String("windowTitle")) {
 
73
                QString filename = formWindow->fileName().isEmpty()
 
74
                        ? QString::fromUtf8("Untitled")
 
75
                        : formWindow->fileName();
 
76
 
 
77
                formWindow->setWindowTitle(QString::fromUtf8("%1 - (%2)")
 
78
                                           .arg(value.toString())
 
79
                                           .arg(filename));
 
80
 
 
81
            } else if (name == QLatin1String("geometry")) {
 
82
                if (QWidget *container = containerWindow(formWindow)) {
 
83
                    QRect r = containerWindow(formWindow)->geometry();
 
84
                    r.setSize(value.toRect().size());
 
85
                    container->setGeometry(r);
 
86
                    emit propertyChanged(formWindow, name, value);
 
87
                }
 
88
 
 
89
                return;
 
90
            }
 
91
        }
 
92
 
 
93
        cursor->setProperty(name, value);
 
94
 
 
95
        if (name == QLatin1String("objectName") && core()->objectInspector()) {
 
96
            core()->objectInspector()->setFormWindow(formWindow);
 
97
        }
 
98
 
 
99
        emit propertyChanged(formWindow, name, value);
 
100
 
 
101
        if (core()->propertyEditor() && core()->propertyEditor()->object()) {
 
102
            QObject *o = core()->propertyEditor()->object();
 
103
            QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), o);
 
104
            int index = sheet->indexOf(name);
 
105
            if (index != -1)
 
106
                core()->propertyEditor()->setPropertyValue(name, sheet->property(index));
 
107
        }
 
108
    }
 
109
}
 
110
 
 
111
void QDesignerIntegration::updateActiveFormWindow(QDesignerFormWindowInterface *formWindow)
 
112
{
 
113
    Q_UNUSED(formWindow);
 
114
    updateSelection();
 
115
}
 
116
 
 
117
void QDesignerIntegration::setupFormWindow(QDesignerFormWindowInterface *formWindow)
 
118
{
 
119
    connect(formWindow, SIGNAL(selectionChanged()), this, SLOT(updateSelection()));
 
120
    connect(formWindow, SIGNAL(activated(QWidget*)), this, SLOT(activateWidget(QWidget*)));
 
121
}
 
122
 
 
123
void QDesignerIntegration::updateGeometry()
 
124
{
 
125
}
 
126
 
 
127
void QDesignerIntegration::updateSelection()
 
128
{
 
129
    QDesignerFormWindowInterface *formWindow = core()->formWindowManager()->activeFormWindow();
 
130
    QWidget *selection = 0;
 
131
 
 
132
    if (formWindow)
 
133
        selection = formWindow->cursor()->selectedWidget(0);
 
134
 
 
135
    if (QDesignerObjectInspectorInterface *objectInspector = core()->objectInspector())
 
136
        objectInspector->setFormWindow(formWindow);
 
137
 
 
138
    if (QDesignerPropertyEditorInterface *propertyEditor = core()->propertyEditor()) {
 
139
        propertyEditor->setObject(selection);
 
140
        propertyEditor->setEnabled(formWindow && formWindow->cursor()->selectedWidgetCount() == 1);
 
141
    }
 
142
}
 
143
 
 
144
void QDesignerIntegration::activateWidget(QWidget *widget)
 
145
{
 
146
    Q_UNUSED(widget);
 
147
}
 
148
 
 
149
QWidget *QDesignerIntegration::containerWindow(QWidget *widget)
 
150
{
 
151
    while (widget) {
 
152
        if (widget->isWindow())
 
153
            break;
 
154
        if (widget->parentWidget() && !qstrcmp(widget->parentWidget()->metaObject()->className(), "QWorkspaceChild"))
 
155
            break;
 
156
 
 
157
        widget = widget->parentWidget();
 
158
    }
 
159
 
 
160
    return widget;
 
161
}
 
162