1
/****************************************************************************
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
5
** This file is part of the designer application of the Qt Toolkit.
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.
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.
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.
21
** Contact info@trolltech.com if any conditions of this licensing are
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.
27
****************************************************************************/
29
#include <QtGui/QAction>
31
#include "signalsloteditor_plugin.h"
32
#include "signalsloteditor_tool.h"
34
#include <QtDesigner/QtDesigner>
36
SignalSlotEditorPlugin::SignalSlotEditorPlugin()
37
: m_initialized(false), m_action(0)
41
SignalSlotEditorPlugin::~SignalSlotEditorPlugin()
45
bool SignalSlotEditorPlugin::isInitialized() const
50
void SignalSlotEditorPlugin::initialize(QDesignerFormEditorInterface *core)
52
Q_ASSERT(!isInitialized());
54
m_action = new QAction(tr("Edit Signals/Slots"), this);
55
m_action->setShortcut(tr("F4"));
56
QIcon icon(QIcon(core->resourceLocation() + QLatin1String("/signalslottool.png")));
57
m_action->setIcon(icon);
58
m_action->setEnabled(false);
64
connect(core->formWindowManager(), SIGNAL(formWindowAdded(QDesignerFormWindowInterface*)),
65
this, SLOT(addFormWindow(QDesignerFormWindowInterface*)));
67
connect(core->formWindowManager(), SIGNAL(formWindowRemoved(QDesignerFormWindowInterface*)),
68
this, SLOT(removeFormWindow(QDesignerFormWindowInterface*)));
70
connect(core->formWindowManager(), SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface*)),
71
this, SLOT(activeFormWindowChanged(QDesignerFormWindowInterface*)));
74
QDesignerFormEditorInterface *SignalSlotEditorPlugin::core() const
79
void SignalSlotEditorPlugin::addFormWindow(QDesignerFormWindowInterface *formWindow)
81
Q_ASSERT(formWindow != 0);
82
Q_ASSERT(m_tools.contains(formWindow) == false);
84
SignalSlotEditorTool *tool = new SignalSlotEditorTool(formWindow, this);
85
connect(m_action, SIGNAL(triggered()), tool->action(), SLOT(trigger()));
86
m_tools[formWindow] = tool;
87
formWindow->registerTool(tool);
90
void SignalSlotEditorPlugin::removeFormWindow(QDesignerFormWindowInterface *formWindow)
92
Q_ASSERT(formWindow != 0);
93
Q_ASSERT(m_tools.contains(formWindow) == true);
95
SignalSlotEditorTool *tool = m_tools.value(formWindow);
96
m_tools.remove(formWindow);
97
disconnect(m_action, SIGNAL(triggered()), tool->action(), SLOT(trigger()));
98
// ### FIXME disable the tool
103
QAction *SignalSlotEditorPlugin::action() const
108
void SignalSlotEditorPlugin::activeFormWindowChanged(QDesignerFormWindowInterface *formWindow)
110
m_action->setEnabled(formWindow != 0);