mirror of
https://github.com/python-LimeReport/LimeReport.git
synced 2025-09-23 08:39:07 +03:00
Dialog designers tool bar integration has been added
This commit is contained in:
@@ -15,3 +15,6 @@ QT += designer designercomponents-private
|
||||
|
||||
SOURCES += $$PWD/lrdialogdesigner.cpp
|
||||
HEADERS += $$PWD/lrdialogdesigner.h
|
||||
|
||||
RESOURCES += \
|
||||
$$PWD/dialogdesigner.qrc
|
||||
|
9
limereport/dialogdesigner/dialogdesigner.qrc
Normal file
9
limereport/dialogdesigner/dialogdesigner.qrc
Normal file
@@ -0,0 +1,9 @@
|
||||
<RCC>
|
||||
<qresource prefix="/images">
|
||||
<file>images/buddytool.png</file>
|
||||
<file>images/editform.png</file>
|
||||
<file>images/signalslottool.png</file>
|
||||
<file>images/tabordertool.png</file>
|
||||
<file>images/widgettool.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
BIN
limereport/dialogdesigner/images/buddytool.png
Normal file
BIN
limereport/dialogdesigner/images/buddytool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 997 B |
BIN
limereport/dialogdesigner/images/editform.png
Normal file
BIN
limereport/dialogdesigner/images/editform.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 349 B |
BIN
limereport/dialogdesigner/images/signalslottool.png
Normal file
BIN
limereport/dialogdesigner/images/signalslottool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
limereport/dialogdesigner/images/tabordertool.png
Normal file
BIN
limereport/dialogdesigner/images/tabordertool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
limereport/dialogdesigner/images/widgettool.png
Normal file
BIN
limereport/dialogdesigner/images/widgettool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
@@ -16,6 +16,8 @@
|
||||
#include <QDesignerPropertyEditorInterface>
|
||||
#include <QDesignerObjectInspectorInterface>
|
||||
#include <QDesignerFormEditorInterface>
|
||||
#include <QAction>
|
||||
#include <QDebug>
|
||||
#include "pluginmanager_p.h"
|
||||
//#include <QExtensionManager>
|
||||
|
||||
@@ -30,64 +32,70 @@ DialogDesigner::DialogDesigner(QObject *parent) : QObject(parent)
|
||||
QDesignerComponents::initializePlugins(m_formEditor);
|
||||
QDesignerComponents::createTaskMenu(m_formEditor, this);
|
||||
|
||||
m_editWidgetsAction = new QAction(tr("Edit Widgets"));
|
||||
m_editWidgetsAction->setIcon(QIcon(":/images/images/widgettool.png"));
|
||||
m_editWidgetsAction->setEnabled(false);
|
||||
connect(m_editWidgetsAction, SIGNAL(triggered()), this, SLOT(slotEditWidgets()));
|
||||
connect(m_formEditor->formWindowManager(), SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface*)),
|
||||
this, SLOT(slotActiveFormWindowChanged(QDesignerFormWindowInterface*)) );
|
||||
|
||||
m_modes = new QActionGroup(this);
|
||||
m_modes->setExclusive(true);
|
||||
m_modes->addAction(m_editWidgetsAction);
|
||||
|
||||
foreach ( QObject* o, QPluginLoader::staticInstances() << m_formEditor->pluginManager()->instances() )
|
||||
{
|
||||
if ( QDesignerFormEditorPluginInterface* fep = qobject_cast<QDesignerFormEditorPluginInterface*>( o ) )
|
||||
{
|
||||
// initialize plugin if needed
|
||||
if ( !fep->isInitialized() )
|
||||
fep->initialize( m_formEditor );
|
||||
|
||||
// set action chackable
|
||||
// fep->action()->setCheckable( true );
|
||||
|
||||
// // add action mode to group
|
||||
// aModes->addAction( fep->action() );
|
||||
fep->action()->setCheckable( true );
|
||||
fep->action()->setIcon(QIcon(iconPathByName(fep->action()->objectName())));
|
||||
m_modes->addAction(fep->action());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_widgetBox = QDesignerComponents::createWidgetBox(m_formEditor, 0);
|
||||
m_widgetBox->setWindowTitle(tr("Widget Box"));
|
||||
m_widgetBox->setObjectName(QLatin1String("WidgetBox"));
|
||||
m_formEditor->setWidgetBox(m_widgetBox);
|
||||
m_formEditor->setTopLevel(m_widgetBox);
|
||||
m_designerToolWindows.append(m_widgetBox);
|
||||
connect(m_widgetBox, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_widgetBox, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_objectInspector = QDesignerComponents::createObjectInspector(m_formEditor, 0);
|
||||
m_objectInspector->setWindowTitle(tr("Object Inspector"));
|
||||
m_objectInspector->setObjectName(QLatin1String("ObjectInspector"));
|
||||
m_formEditor->setObjectInspector(m_objectInspector);
|
||||
m_designerToolWindows.append(m_objectInspector);
|
||||
connect(m_objectInspector, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_objectInspector, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_propertyEditor = QDesignerComponents::createPropertyEditor(m_formEditor, 0);
|
||||
m_propertyEditor->setWindowTitle(tr("Property Editor"));
|
||||
m_propertyEditor->setObjectName(QLatin1String("PropertyEditor"));
|
||||
m_formEditor->setPropertyEditor(m_propertyEditor);
|
||||
m_designerToolWindows.append(m_propertyEditor);
|
||||
connect(m_propertyEditor, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_propertyEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_signalSlotEditor = QDesignerComponents::createSignalSlotEditor(m_formEditor, 0);
|
||||
m_signalSlotEditor->setWindowTitle(tr("Signals && Slots Editor"));
|
||||
m_signalSlotEditor->setObjectName(QLatin1String("SignalsAndSlotsEditor"));
|
||||
|
||||
m_designerToolWindows.append(m_signalSlotEditor);
|
||||
connect(m_signalSlotEditor, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_signalSlotEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_resourcesEditor = QDesignerComponents::createResourceEditor(m_formEditor, 0);
|
||||
m_resourcesEditor->setWindowTitle(tr("Resource Editor"));
|
||||
m_resourcesEditor->setObjectName(QLatin1String("ResourceEditor"));
|
||||
m_designerToolWindows.append(m_resourcesEditor);
|
||||
connect(m_resourcesEditor, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_resourcesEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_actionEditor = QDesignerComponents::createActionEditor(m_formEditor, 0);
|
||||
m_actionEditor->setWindowTitle(tr("Action Editor"));
|
||||
m_actionEditor->setObjectName("ActionEditor");
|
||||
m_formEditor->setActionEditor(m_actionEditor);
|
||||
m_designerToolWindows.append(m_actionEditor);
|
||||
connect(m_formEditor, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)) );
|
||||
connect(m_formEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) );
|
||||
|
||||
m_designerIntegration = new QDesignerIntegration(m_formEditor,this);
|
||||
m_formEditor->setIntegration(m_designerIntegration);
|
||||
@@ -105,6 +113,28 @@ DialogDesigner::~DialogDesigner()
|
||||
delete m_formEditor;
|
||||
}
|
||||
|
||||
void DialogDesigner::initToolBar(QToolBar *tb)
|
||||
{
|
||||
tb->setIconSize(QSize(16,16));
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionCopy());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionPaste());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionCut());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionUndo());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionRedo());
|
||||
|
||||
tb->addActions(m_modes->actions());
|
||||
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionHorizontalLayout());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionVerticalLayout());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionSplitHorizontal());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionSplitVertical());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionGridLayout());
|
||||
m_formEditor->formWindowManager()->actionFormLayout()->setIcon(QIcon(":/images/images/editform.png"));
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionFormLayout());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionBreakLayout());
|
||||
tb->addAction(m_formEditor->formWindowManager()->actionAdjustSize());
|
||||
}
|
||||
|
||||
QWidget *DialogDesigner::createFormEditor(const QString &content)
|
||||
{
|
||||
QDesignerFormWindowInterface* wnd = m_formEditor->formWindowManager()->createFormWindow(0, Qt::Window);
|
||||
@@ -113,12 +143,22 @@ QWidget *DialogDesigner::createFormEditor(const QString &content)
|
||||
m_formEditor->objectInspector()->setFormWindow(wnd);
|
||||
wnd->editWidgets();
|
||||
|
||||
connect(wnd, SIGNAL(changed()), this, SIGNAL(dialogChanged()));
|
||||
|
||||
SharedTools::WidgetHost *placeholder = new SharedTools::WidgetHost(0,wnd);
|
||||
placeholder->setFrameStyle( QFrame::NoFrame | QFrame::Plain );
|
||||
placeholder->setFocusProxy( wnd );
|
||||
|
||||
return placeholder;
|
||||
return placeholder;
|
||||
}
|
||||
|
||||
QByteArray DialogDesigner::getDialogDescription(QWidget *form)
|
||||
{
|
||||
SharedTools::WidgetHost* wh = dynamic_cast<SharedTools::WidgetHost*>(form);
|
||||
if (wh){
|
||||
return wh->formWindow()->contents().toUtf8();
|
||||
}
|
||||
return QByteArray();
|
||||
}
|
||||
|
||||
void DialogDesigner::setActiveEditor(QWidget *widget)
|
||||
@@ -127,7 +167,6 @@ void DialogDesigner::setActiveEditor(QWidget *widget)
|
||||
if (wh){
|
||||
m_formEditor->formWindowManager()->setActiveFormWindow(wh->formWindow());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QWidget* DialogDesigner::widgetBox() const
|
||||
@@ -160,7 +199,7 @@ QWidget *DialogDesigner::resourcesEditor() const
|
||||
return m_resourcesEditor;
|
||||
}
|
||||
|
||||
void DialogDesigner::objectDestroyed(QObject *object)
|
||||
void DialogDesigner::slotObjectDestroyed(QObject *object)
|
||||
{
|
||||
for ( int i = 0; i<m_designerToolWindows.size();++i){
|
||||
m_designerToolWindows[i] = m_designerToolWindows[i] == object ? 0 : m_designerToolWindows[i];
|
||||
@@ -168,4 +207,30 @@ void DialogDesigner::objectDestroyed(QObject *object)
|
||||
|
||||
}
|
||||
|
||||
void DialogDesigner::slotEditWidgets()
|
||||
{
|
||||
for (int i = 0; i<m_formEditor->formWindowManager()->formWindowCount(); ++i){
|
||||
m_formEditor->formWindowManager()->formWindow(i)->editWidgets();
|
||||
}
|
||||
}
|
||||
|
||||
void DialogDesigner::slotActiveFormWindowChanged(QDesignerFormWindowInterface *formWindow)
|
||||
{
|
||||
if (formWindow){
|
||||
m_editWidgetsAction->setEnabled(true);
|
||||
m_activeWindowName = formWindow->objectName();
|
||||
}
|
||||
}
|
||||
|
||||
QString DialogDesigner::iconPathByName(const QString &name)
|
||||
{
|
||||
if (name.compare("__qt_edit_signals_slots_action") == 0)
|
||||
return ":/images/images/signalslottool.png";
|
||||
if (name.compare("__qt_edit_buddies_action") == 0)
|
||||
return ":/images/images/buddytool.png";
|
||||
if (name.compare("_qt_edit_tab_order_action") == 0)
|
||||
return ":/images/images/tabordertool.png";
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <QObject>
|
||||
#include <QVector>
|
||||
#include <QToolBar>
|
||||
|
||||
class QDesignerFormEditorInterface;
|
||||
class QDesignerFormWindowInterface;
|
||||
@@ -21,7 +22,9 @@ class DialogDesigner : public QObject
|
||||
public:
|
||||
explicit DialogDesigner(QObject *parent = 0);
|
||||
~DialogDesigner();
|
||||
void initToolBar(QToolBar* tb);
|
||||
QWidget* createFormEditor(const QString& content);
|
||||
QByteArray getDialogDescription(QWidget* form);
|
||||
void setActiveEditor(QWidget* widget);
|
||||
QWidget* widgetBox() const;
|
||||
QWidget* actionEditor() const;
|
||||
@@ -29,8 +32,14 @@ public:
|
||||
QWidget* objectInspector() const;
|
||||
QWidget* signalSlotEditor() const;
|
||||
QWidget* resourcesEditor() const;
|
||||
signals:
|
||||
void dialogChanged();
|
||||
private slots:
|
||||
void objectDestroyed(QObject* object);
|
||||
void slotObjectDestroyed(QObject* object);
|
||||
void slotEditWidgets();
|
||||
void slotActiveFormWindowChanged(QDesignerFormWindowInterface *formWindow);
|
||||
private:
|
||||
QString iconPathByName(const QString& name);
|
||||
private:
|
||||
QDesignerFormEditorInterface* m_formEditor;
|
||||
QDesignerIntegrationInterface* m_designerIntegration;
|
||||
@@ -41,6 +50,9 @@ private:
|
||||
QWidget* m_signalSlotEditor;
|
||||
QWidget* m_resourcesEditor;
|
||||
QVector<QWidget*> m_designerToolWindows;
|
||||
QAction* m_editWidgetsAction;
|
||||
QActionGroup* m_modes;
|
||||
QString m_activeWindowName;
|
||||
};
|
||||
|
||||
} // namespace LimeReport
|
||||
|
Reference in New Issue
Block a user