QDesignerWorkbench Class Reference

#include <qdesigner_workbench.h>

Inheritance diagram for QDesignerWorkbench:

Inheritance graph
[legend]
Collaboration diagram for QDesignerWorkbench:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 56 of file qdesigner_workbench.h.

Public Types

enum  UIMode

Public Slots

void addToolWindow (QDesignerToolWindow *toolWindow)
void addFormWindow (QDesignerFormWindow *formWindow)
void removeToolWindow (QDesignerToolWindow *toolWindow)
void removeFormWindow (QDesignerFormWindow *formWindow)
void setUIMode (UIMode mode)
void switchToNeutralMode ()
void switchToDockedMode ()
void switchToTopLevelMode ()
void initializeCorePlugins ()

Signals

void modeChanged (UIMode mode)
void initialized ()

Public Member Functions

 QDesignerWorkbench ()
virtual ~QDesignerWorkbench ()
UIMode mode () const
QDesignerFormEditorInterfacecore () const
QDesignerToolWindowfindToolWindow (QWidget *widget) const
QDesignerFormWindowfindFormWindow (QWidget *widget) const
QDesignerFormWindowcreateFormWindow ()
int toolWindowCount () const
QDesignerToolWindowtoolWindow (int index) const
int formWindowCount () const
QDesignerFormWindowformWindow (int index) const
QDesignerActionsactionManager () const
QActionGroupmodeActionGroup () const
QRect availableGeometry () const
int marginHint () const
void saveSettings () const
bool readInForm (const QString &fileName) const
bool writeOutForm (QDesignerFormWindowInterface *formWindow, const QString &fileName) const
bool saveForm (QDesignerFormWindowInterface *fw)
bool handleClose ()
void closeAllToolWindows ()

Private Slots

void initialize ()
void activateWorkspaceChildWindow (QWidget *widget)
void updateWindowMenu (QDesignerFormWindowInterface *fw)
void formWindowActionTriggered (QAction *a)
void showToolBars ()
void adjustFormPositions ()

Private Member Functions

QWidgetmagicalParent () const
Qt::WindowFlags magicalWindowFlags (const QWidget *widgetForFlags) const
QDockWidgetmagicalDockWidget (QWidget *widget) const
QDesignerFormWindowManagerInterfaceformWindowManager () const
void changeBringToFrontVisiblity (bool visible)
bool eventFilter (QObject *object, QEvent *event)

Private Attributes

QDesignerFormEditorInterfacem_core
qdesigner_internal::QDesignerIntegrationm_integration
QDesignerActionsm_actionManager
QActionGroupm_toolActions
QActionGroupm_windowActions
QMenum_fileMenu
QMenum_editMenu
QMenum_formMenu
QMenum_toolMenu
QMenum_windowMenu
QMenum_helpMenu
QMenuBarm_globalMenuBar
QToolBarm_toolToolBar
QToolBarm_formToolBar
QToolBarm_editToolBar
UIMode m_mode
QList< QDesignerToolWindow * > m_toolWindows
QList< QDesignerFormWindow * > m_formWindows
QWorkspacem_workspace
QHash< QWidget *, bool > m_visibilities
QHash< QWidget *, QRectm_geometries
QHash< QDesignerToolWindow *,
ToolWindowExtra
m_toolWindowExtras
QHash< QDesignerFormWindow *,
FormWindowExtra
m_formWindowExtras
bool m_initializing

Classes

class  FormWindowExtra
class  ToolWindowExtra


Member Enumeration Documentation

enum QDesignerWorkbench::UIMode

Definition at line 60 of file qdesigner_workbench.h.

00061     {
00062         NeutralMode,
00063         TopLevelMode,
00064         DockedMode
00065     };


Constructor & Destructor Documentation

QDesignerWorkbench::QDesignerWorkbench (  ) 

Definition at line 59 of file qdesigner_workbench.cpp.

References initialize(), m_initializing, and setUIMode().

00060     : m_mode(QDesignerWorkbench::NeutralMode), m_workspace(0)
00061 {
00062     m_initializing = true;
00063     initialize();
00064 
00065     setUIMode(UIMode(QDesignerSettings().uiMode()));
00066     m_initializing = false;
00067 }

QDesignerWorkbench::~QDesignerWorkbench (  )  [virtual]

Definition at line 69 of file qdesigner_workbench.cpp.

References DockedMode, QList< T >::isEmpty(), m_mode, m_toolWindows, m_workspace, QMainWindow::saveState(), QDesignerSettings::setMainWindowState(), QList< T >::takeLast(), and QWidget::window().

00070 {
00071     if (m_mode == DockedMode) {
00072         Q_ASSERT(m_workspace != 0);
00073         QMainWindow *mw = qobject_cast<QMainWindow*>(m_workspace->window());
00074         Q_ASSERT(mw != 0);
00075 
00076         QDesignerSettings settings;
00077         settings.setMainWindowState(mw->saveState(2));
00078     }
00079 
00080     while (!m_toolWindows.isEmpty())
00081         delete m_toolWindows.takeLast();
00082 }

Here is the call graph for this function:


Member Function Documentation

QDesignerWorkbench::UIMode QDesignerWorkbench::mode (  )  const

Definition at line 84 of file qdesigner_workbench.cpp.

References m_mode.

Referenced by QDesignerActions::minimizeForm().

00085 {
00086     return m_mode;
00087 }

QDesignerFormEditorInterface * QDesignerWorkbench::core (  )  const

Definition at line 602 of file qdesigner_workbench.cpp.

References m_core.

Referenced by activateWorkspaceChildWindow(), availableGeometry(), initialize(), initializeCorePlugins(), QDesignerActionEditor::QDesignerActionEditor(), QDesignerActions::QDesignerActions(), QDesignerFormWindow::QDesignerFormWindow(), QDesignerObjectInspector::QDesignerObjectInspector(), QDesignerPropertyEditor::QDesignerPropertyEditor(), QDesignerResourceEditor::QDesignerResourceEditor(), QDesignerSignalSlotEditor::QDesignerSignalSlotEditor(), QDesignerWidgetBox::QDesignerWidgetBox(), switchToDockedMode(), and switchToTopLevelMode().

00603 {
00604     return m_core;
00605 }

QDesignerToolWindow * QDesignerWorkbench::findToolWindow ( QWidget widget  )  const

Definition at line 736 of file qdesigner_workbench.cpp.

References QMainWindow::centralWidget(), m_toolWindows, and toolWindow().

Referenced by availableGeometry(), switchToDockedMode(), and switchToTopLevelMode().

00737 {
00738     foreach (QDesignerToolWindow *toolWindow, m_toolWindows) {
00739         if (toolWindow->centralWidget() == widget)
00740             return toolWindow;
00741     }
00742 
00743     return 0;
00744 }

Here is the call graph for this function:

QDesignerFormWindow * QDesignerWorkbench::findFormWindow ( QWidget widget  )  const

Definition at line 746 of file qdesigner_workbench.cpp.

References QMainWindow::centralWidget(), formWindow(), and m_formWindows.

Referenced by QDesignerActions::showFormSettings().

00747 {
00748     foreach (QDesignerFormWindow *formWindow, m_formWindows) {
00749         if (formWindow->centralWidget() == widget)
00750             return formWindow;
00751     }
00752 
00753     return 0;
00754 }

Here is the call graph for this function:

QDesignerFormWindow * QDesignerWorkbench::createFormWindow (  ) 

Definition at line 572 of file qdesigner_workbench.cpp.

References addFormWindow(), QWorkspace::addWindow(), availableGeometry(), center(), formWindow(), g, QDesignerFormWindow::geometryHint(), m_workspace, magicalParent(), magicalWindowFlags(), QWidget::move(), QWidget::resize(), QWorkspace::setActiveWindow(), QWidget::setAttribute(), QWidget::setParent(), and Qt::WA_DeleteOnClose.

Referenced by NewForm::on_buttonBox_clicked(), and QDesignerActions::readInForm().

00573 {
00574     QDesignerFormWindow *formWindow = new QDesignerFormWindow(/*formWindow=*/ 0, this);
00575 
00576     if (m_workspace) {
00577         m_workspace->addWindow(formWindow, magicalWindowFlags(formWindow));
00578     } else {
00579         formWindow->setParent(magicalParent(), magicalWindowFlags(formWindow));
00580     }
00581 
00582     formWindow->setAttribute(Qt::WA_DeleteOnClose, true);
00583 
00584     addFormWindow(formWindow);
00585 
00586     QRect g = formWindow->geometryHint();
00587     formWindow->resize(g.size());
00588     formWindow->move(availableGeometry().center() - g.center());
00589 
00590     if (m_workspace) {
00591         m_workspace->setActiveWindow(formWindow);
00592     }
00593 
00594     return formWindow;
00595 }

Here is the call graph for this function:

int QDesignerWorkbench::toolWindowCount (  )  const

Definition at line 607 of file qdesigner_workbench.cpp.

References QList< T >::count(), and m_toolWindows.

Referenced by QDesignerActions::bringAllToFront().

00608 {
00609     return m_toolWindows.count();
00610 }

Here is the call graph for this function:

QDesignerToolWindow * QDesignerWorkbench::toolWindow ( int  index  )  const

Definition at line 612 of file qdesigner_workbench.cpp.

References QList< T >::at(), and m_toolWindows.

Referenced by addToolWindow(), QDesignerActions::bringAllToFront(), findToolWindow(), and removeToolWindow().

00613 {
00614     return m_toolWindows.at(index);
00615 }

Here is the call graph for this function:

int QDesignerWorkbench::formWindowCount (  )  const

Definition at line 617 of file qdesigner_workbench.cpp.

References QList< T >::count(), and m_formWindows.

Referenced by QDesignerActions::bringAllToFront(), NewForm::on_buttonBox_clicked(), and removeFormWindow().

00618 {
00619     return m_formWindows.count();
00620 }

Here is the call graph for this function:

QDesignerFormWindow * QDesignerWorkbench::formWindow ( int  index  )  const

Definition at line 622 of file qdesigner_workbench.cpp.

References QList< T >::at(), and m_formWindows.

Referenced by addFormWindow(), QDesignerActions::bringAllToFront(), createFormWindow(), findFormWindow(), NewForm::on_buttonBox_clicked(), removeFormWindow(), and writeOutForm().

00623 {
00624     return m_formWindows.at(index);
00625 }

Here is the call graph for this function:

QDesignerActions * QDesignerWorkbench::actionManager (  )  const

Definition at line 808 of file qdesigner_workbench.cpp.

References m_actionManager.

Referenced by QDesigner::callCreateForm(), and NewForm::on_buttonBox_clicked().

00809 {
00810     return m_actionManager;
00811 }

QActionGroup* QDesignerWorkbench::modeActionGroup (  )  const

QRect QDesignerWorkbench::availableGeometry (  )  const

Definition at line 627 of file qdesigner_workbench.cpp.

References QDesktopWidget::availableGeometry(), core(), findToolWindow(), QWidget::geometry(), m_workspace, qDesigner, and QDesktopWidget::screenNumber().

Referenced by createFormWindow(), QDesignerResourceEditor::geometryHint(), QDesignerSignalSlotEditor::geometryHint(), QDesignerPropertyEditor::geometryHint(), QDesignerObjectInspector::geometryHint(), QDesignerWidgetBox::geometryHint(), and QDesignerActionEditor::geometryHint().

00628 {
00629     if (m_workspace)
00630         return m_workspace->geometry();
00631 
00632     QDesktopWidget *desktop = qDesigner->desktop();
00633 
00634     QWidget *window = findToolWindow(core()->widgetBox());
00635     if (window)
00636         return desktop->availableGeometry(desktop->screenNumber(window));
00637     return desktop->availableGeometry(0);
00638 }

Here is the call graph for this function:

int QDesignerWorkbench::marginHint (  )  const

Definition at line 640 of file qdesigner_workbench.cpp.

Referenced by QDesignerResourceEditor::geometryHint(), QDesignerObjectInspector::geometryHint(), QDesignerPropertyEditor::geometryHint(), QDesignerSignalSlotEditor::geometryHint(), and QDesignerActionEditor::geometryHint().

00641 {
00642     return 20;
00643 }

void QDesignerWorkbench::saveSettings (  )  const

Definition at line 706 of file qdesigner_workbench.cpp.

References DockedMode, m_mode, m_toolWindows, qDesigner, QDesignerSettings::saveGeometryFor(), and QSettings::setValue().

Referenced by handleClose().

00707 {
00708     QDesignerSettings settings;
00709     if (m_mode == DockedMode) {
00710         if (qFindChild<QWorkspace *>(qDesigner->mainWindow())) {
00711             settings.saveGeometryFor(qDesigner->mainWindow());
00712             settings.setValue(qDesigner->mainWindow()->objectName() + QLatin1String("/visible"), false);
00713         }
00714     } else {
00715         foreach (QDesignerToolWindow *tw, m_toolWindows) {
00716             settings.saveGeometryFor(tw);
00717         }
00718     }
00719 }

Here is the call graph for this function:

bool QDesignerWorkbench::readInForm ( const QString fileName  )  const

Definition at line 721 of file qdesigner_workbench.cpp.

References m_actionManager, and QDesignerActions::readInForm().

Referenced by QDesigner::event(), eventFilter(), and QDesigner::initialize().

00722 {
00723     return m_actionManager->readInForm(fileName);
00724 }

Here is the call graph for this function:

bool QDesignerWorkbench::writeOutForm ( QDesignerFormWindowInterface formWindow,
const QString fileName 
) const

Definition at line 726 of file qdesigner_workbench.cpp.

References formWindow(), m_actionManager, and QDesignerActions::writeOutForm().

00727 {
00728     return m_actionManager->writeOutForm(formWindow, fileName);
00729 }

Here is the call graph for this function:

bool QDesignerWorkbench::saveForm ( QDesignerFormWindowInterface fw  ) 

Definition at line 731 of file qdesigner_workbench.cpp.

References m_actionManager, and QDesignerActions::saveForm().

Referenced by QDesignerFormWindow::closeEvent().

00732 {
00733     return m_actionManager->saveForm(frm);
00734 }

Here is the call graph for this function:

bool QDesignerWorkbench::handleClose (  ) 

Definition at line 756 of file qdesigner_workbench.cpp.

References QList< T >::at(), QMessageBox::Cancel, QWidget::close(), QMessageBox::Default, QDesignerFormWindow::editor(), QMessageBox::Escape, QDialog::exec(), m_formWindows, QMessageBox::No, saveSettings(), QMessageBox::setButtonText(), QDesignerFormWindowInterface::setDirty(), QWidget::setWindowModified(), QList< T >::size(), w, QMessageBox::Warning, and QMessageBox::Yes.

Referenced by QDesigner::event().

00757 {
00758     QList<QDesignerFormWindow *> dirtyForms;
00759     foreach (QDesignerFormWindow *w, m_formWindows) {
00760         if (w->editor()->isDirty())
00761             dirtyForms << w;
00762     }
00763 
00764     if (dirtyForms.size()) {
00765         if (dirtyForms.size() == 1) {
00766             if (!dirtyForms.at(0)->close()) {
00767                 return false;
00768             }
00769         } else {
00770             QMessageBox box(tr("Save Forms?"),
00771                     tr("There are %1 forms with unsaved changes."
00772                         " Do you want to review these changes before quitting?")
00773                     .arg(dirtyForms.size()),
00774                     QMessageBox::Warning,
00775                     QMessageBox::Yes | QMessageBox::Default, QMessageBox::No,
00776                     QMessageBox::Cancel | QMessageBox::Escape, 0);
00777             box.setButtonText(QMessageBox::Yes, tr("Review Changes"));
00778             box.setButtonText(QMessageBox::No, tr("Discard Changes"));
00779             switch (box.exec()) {
00780             case QMessageBox::Cancel:
00781                 return false;
00782             case QMessageBox::Yes:
00783                foreach (QDesignerFormWindow *fw, dirtyForms) {
00784                    fw->show();
00785                    fw->raise();
00786                    if (!fw->close()) {
00787                        return false;
00788                    }
00789                }
00790                break;
00791             case QMessageBox::No:
00792               foreach (QDesignerFormWindow *fw, dirtyForms) {
00793                   fw->editor()->setDirty(false);
00794                   fw->setWindowModified(false);
00795               }
00796               break;
00797             }
00798         }
00799     }
00800 
00801     foreach (QDesignerFormWindow *fw, m_formWindows)
00802         fw->close();
00803 
00804     saveSettings();
00805     return true;
00806 }

Here is the call graph for this function:

void QDesignerWorkbench::closeAllToolWindows (  ) 

Definition at line 856 of file qdesigner_workbench.cpp.

References QWidget::hide(), and m_toolWindows.

00857 {
00858     foreach (QDesignerToolWindow *tw, m_toolWindows)
00859         tw->hide();
00860 }

void QDesignerWorkbench::modeChanged ( UIMode  mode  )  [signal]

void QDesignerWorkbench::initialized (  )  [signal]

Referenced by initialize().

void QDesignerWorkbench::addToolWindow ( QDesignerToolWindow toolWindow  )  [slot]

Definition at line 89 of file qdesigner_workbench.cpp.

References QDesignerToolWindow::action(), QActionGroup::actions(), QWidget::actions(), QActionGroup::addAction(), QList< T >::append(), QList< T >::count(), QList< T >::first(), QWidget::insertAction(), QList< T >::isEmpty(), QString::isEmpty(), QList< T >::last(), m_toolActions, m_toolMenu, m_toolWindowExtras, m_toolWindows, toolWindow(), and QWidget::windowTitle().

Referenced by initialize().

00090 {
00091     Q_ASSERT(m_toolWindowExtras.contains(toolWindow) == false);
00092     Q_ASSERT(toolWindow->windowTitle().isEmpty() == false);
00093 
00094     m_toolWindows.append(toolWindow);
00095 
00096     if (QAction *action = toolWindow->action()) {
00097         Q_ASSERT(m_toolMenu->actions().isEmpty() == false);
00098 
00099         QList<QAction*> lst = m_toolActions->actions();
00100         QAction *before = lst.count() ? lst.last() : m_toolMenu->actions().first();
00101         m_toolMenu->insertAction(before, action);
00102         m_toolActions->addAction(action);
00103     }
00104 }

void QDesignerWorkbench::addFormWindow ( QDesignerFormWindow formWindow  )  [slot]

Definition at line 106 of file qdesigner_workbench.cpp.

References QDesignerFormWindow::action(), QActionGroup::actions(), QMenu::addAction(), QActionGroup::addAction(), QMenu::addSeparator(), QList< T >::append(), QDesignerActions::editWidgets(), formWindow(), QList< T >::isEmpty(), m_actionManager, m_formWindowExtras, m_formWindows, m_windowActions, m_windowMenu, QDesignerActions::minimizeAction(), QAction::setChecked(), QAction::setEnabled(), and QAction::trigger().

Referenced by createFormWindow().

00107 {
00108     Q_ASSERT(m_formWindowExtras.contains(formWindow) == false);
00109     // ### Q_ASSERT(formWindow->windowTitle().isEmpty() == false);
00110 
00111     m_formWindows.append(formWindow);
00112     if (m_windowActions->actions().isEmpty())
00113         m_windowMenu->addSeparator();
00114 
00115     if (QAction *action = formWindow->action()) {
00116         m_windowActions->addAction(action);
00117         m_windowMenu->addAction(action);
00118         action->setChecked(true);
00119     }
00120 
00121     m_actionManager->minimizeAction()->setEnabled(true);
00122     m_actionManager->editWidgets()->trigger();
00123 }

void QDesignerWorkbench::removeToolWindow ( QDesignerToolWindow toolWindow  )  [slot]

Definition at line 653 of file qdesigner_workbench.cpp.

References QDesignerToolWindow::action(), index, QList< T >::indexOf(), m_toolActions, m_toolMenu, m_toolWindowExtras, m_toolWindows, QWidget::removeAction(), QActionGroup::removeAction(), QList< T >::removeAt(), and toolWindow().

Referenced by QDesignerToolWindow::~QDesignerToolWindow().

00654 {
00655     int index = m_toolWindows.indexOf(toolWindow);
00656     if (index != -1) {
00657         m_toolWindows.removeAt(index);
00658         m_toolWindowExtras.remove(toolWindow);
00659     }
00660 
00661     if (QAction *action = toolWindow->action()) {
00662         m_toolActions->removeAction(action);
00663         m_toolMenu->removeAction(action);
00664     }
00665 }

void QDesignerWorkbench::removeFormWindow ( QDesignerFormWindow formWindow  )  [slot]

Definition at line 667 of file qdesigner_workbench.cpp.

References QDesignerFormWindow::action(), QWidget::actions(), QList< T >::at(), formWindow(), formWindowCount(), i, index, QList< T >::indexOf(), m_actionManager, m_formWindowExtras, m_formWindows, m_windowActions, m_windowMenu, QDesignerActions::minimizeAction(), QWidget::removeAction(), QActionGroup::removeAction(), QList< T >::removeAt(), QAction::setEnabled(), and QList< T >::size().

Referenced by QDesignerFormWindow::~QDesignerFormWindow().

00668 {
00669     int index = m_formWindows.indexOf(formWindow);
00670     if (index != -1) {
00671         m_formWindows.removeAt(index);
00672         m_formWindowExtras.remove(formWindow);
00673     }
00674 
00675     if (QAction *action = formWindow->action()) {
00676         m_windowActions->removeAction(action);
00677         m_windowMenu->removeAction(action);
00678     }
00679 
00680     if (formWindowCount() == 0) {
00681         m_actionManager->minimizeAction()->setEnabled(false);
00682         QList<QAction *> actions = m_windowMenu->actions();
00683         for (int i = actions.size() - 1; i >= 0; --i) {
00684             QAction *act = actions.at(i);
00685             if (act->isSeparator()) {
00686                 delete act;
00687                 break;
00688             }
00689         }
00690     }
00691 }

void QDesignerWorkbench::setUIMode ( UIMode  mode  )  [slot]

Definition at line 813 of file qdesigner_workbench.cpp.

References DockedMode, switchToDockedMode(), switchToTopLevelMode(), and TopLevelMode.

Referenced by QDesignerWorkbench(), and QDesignerActions::updateUIMode().

00814 {
00815     switch (mode) {
00816         case TopLevelMode:
00817             switchToTopLevelMode();
00818             break;
00819         case DockedMode:
00820             switchToDockedMode();
00821             break;
00822 
00823         default: Q_ASSERT(0);
00824     }
00825 }

void QDesignerWorkbench::switchToNeutralMode (  )  [slot]

Definition at line 298 of file qdesigner_workbench.cpp.

References QDesktopWidget::availableGeometry(), QHash< Key, T >::clear(), QApplication::desktop(), DockedMode, QHash< Key, T >::insert(), QWidget::isVisible(), QWidget::isWindow(), m_core, m_editToolBar, m_formToolBar, m_formWindows, m_geometries, m_globalMenuBar, m_mode, m_toolToolBar, m_toolWindows, m_visibilities, m_workspace, QWidget::mapToGlobal(), NeutralMode, p, QWidget::parentWidget(), QWidget::pos(), qDesigner, QMainWindow::saveState(), QWidget::setParent(), QDesignerToolWindow::setSaveSettingsOnClose(), QDesignerFormEditorInterface::setTopLevel(), QWidget::size(), QRect::topLeft(), TopLevelMode, and QWidget::window().

Referenced by switchToDockedMode(), and switchToTopLevelMode().

00299 {
00300     if (m_mode == NeutralMode) {
00301         return;
00302     } else if (m_mode == DockedMode) {
00303         Q_ASSERT(m_workspace != 0);
00304         QMainWindow *mw = qobject_cast<QMainWindow*>(m_workspace->window());
00305         QDesignerSettings settings;
00306         settings.setMainWindowState(mw->saveState(2));
00307     }
00308 
00309     QPoint desktopOffset = QPoint(0, 0);
00310     QPoint workspaceOffset = QPoint(0, 0);
00311     if (m_mode == TopLevelMode)
00312         desktopOffset = QApplication::desktop()->availableGeometry().topLeft();
00313     else if (m_mode == DockedMode)
00314         workspaceOffset = m_workspace->mapToGlobal(QPoint(0, 0));
00315     m_mode = NeutralMode;
00316 
00317     m_geometries.clear();
00318     m_visibilities.clear();
00319 
00320     foreach (QDesignerToolWindow *tw, m_toolWindows) {
00321         m_visibilities.insert(tw, tw->isVisible());
00322         if (tw->isVisible()) {
00323             // use the actual geometry
00324             QPoint pos = tw->window()->pos();
00325             if (!tw->isWindow()) {
00326                 if (const QWidget *pw = tw->parentWidget()) {
00327                     pos = pw->mapTo(tw->window(), QPoint(0, 0));
00328                     pos += tw->window()->pos();
00329                 }
00330 
00331             }
00332             m_geometries.insert(tw, QRect(pos - desktopOffset, tw->size()));
00333         }
00334         tw->setSaveSettingsOnClose(false);
00335 
00336         tw->setParent(0);
00337     }
00338 
00339     foreach (QDesignerFormWindow *fw, m_formWindows) {
00340         if (fw->isVisible()) {
00341             // use the actual geometry
00342             QPoint pos = fw->window()->pos();
00343             if (!fw->isWindow())
00344                 if (QWidget *p = fw->parentWidget())
00345                     pos = p->pos(); // in workspace
00346 
00347             m_geometries.insert(fw, QRect(pos - desktopOffset + workspaceOffset,
00348                                             fw->size()));
00349         }
00350 
00351         fw->setParent(0);
00352     }
00353 
00354 #ifndef Q_WS_MAC
00355     m_globalMenuBar->setParent(0);
00356 #endif
00357     m_editToolBar->setParent(0);
00358     m_toolToolBar->setParent(0);
00359     m_formToolBar->setParent(0);
00360     m_core->setTopLevel(0);
00361     qDesigner->setMainWindow(0);
00362 
00363     if (m_workspace)
00364         delete m_workspace->parentWidget();
00365 
00366     m_workspace = 0;
00367 }

void QDesignerWorkbench::switchToDockedMode (  )  [slot]

Definition at line 369 of file qdesigner_workbench.cpp.

References QDesignerToolWindow::action(), activateWorkspaceChildWindow(), QMainWindow::addDockWidget(), QMainWindow::addToolBar(), QWorkspace::addWindow(), changeBringToFrontVisiblity(), QObject::connect(), core(), DockedMode, findToolWindow(), QWidget::hide(), QObject::installEventFilter(), QMetaObject::invokeMethod(), QHash< Key, T >::isEmpty(), m_core, m_editToolBar, m_formToolBar, m_formWindows, m_geometries, m_globalMenuBar, m_initializing, m_mode, m_toolToolBar, m_toolWindows, m_visibilities, m_workspace, magicalDockWidget(), magicalWindowFlags(), QDesignerSettings::mainWindowState(), QWidget::move(), qApp, qDesigner, Qt::QueuedConnection, QMainWindow::restoreState(), QDesignerSettings::saveGeometryFor(), QWidget::setAcceptDrops(), QMainWindow::setCentralWidget(), QDesignerSettings::setGeometryFor(), QMainWindow::setMenuBar(), QObject::setObjectName(), QDesignerToolWindow::setSaveSettingsOnClose(), QWorkspace::setScrollBarsEnabled(), QDesignerFormEditorInterface::setTopLevel(), QWidget::setVisible(), QAction::setVisible(), QDockWidget::setWidget(), QWidget::setWindowState(), QWidget::setWindowTitle(), QWidget::show(), SIGNAL, SLOT, QMainWindow::statusBar(), switchToNeutralMode(), QRect::topLeft(), TopLevelMode, QHash< Key, T >::value(), Qt::WindowMaximized, and QWidget::windowState().

Referenced by setUIMode().

00370 {
00371     bool wasTopLevel = (m_mode == TopLevelMode);
00372     if (m_mode == DockedMode)
00373         return;
00374 
00375     switchToNeutralMode();
00376     m_mode = DockedMode;
00377 
00378     QDesignerToolWindow *widgetBoxWrapper = 0;
00379     if (0 != (widgetBoxWrapper = findToolWindow(core()->widgetBox()))) {
00380         widgetBoxWrapper->action()->setVisible(true);
00381         widgetBoxWrapper->setWindowTitle(tr("Widget Box"));
00382     }
00383 
00384     Q_ASSERT(m_workspace == 0);
00385 
00386     QDesignerSettings settings;
00387     QDesignerToolWindow *mw = new QDesignerToolWindow(this); // Just to have a copy of
00388     mw->setSaveSettingsOnClose(true);
00389     mw->setObjectName(QLatin1String("MDIWindow"));
00390     mw->setWindowTitle(tr("Qt Designer"));
00391     m_workspace = new QWorkspace(mw);
00392     m_workspace->setAcceptDrops(true);
00393     m_workspace->installEventFilter(this);
00394     m_workspace->setScrollBarsEnabled(true);
00395     connect(m_workspace, SIGNAL(windowActivated(QWidget*)),
00396             this, SLOT(activateWorkspaceChildWindow(QWidget*)));
00397     mw->setCentralWidget(m_workspace);
00398     m_core->setTopLevel(mw);
00399     (void) mw->statusBar();
00400     if (m_geometries.isEmpty()) {
00401         settings.setGeometryFor(mw, qApp->desktop()->availableGeometry(0));
00402     } else {
00403         if (QDesignerToolWindow *widgetBox = findToolWindow(core()->widgetBox())) {
00404             QRect r = m_geometries.value(widgetBox, QRect(0, 0, 200, 200));
00405             mw->move(r.topLeft());
00406         }
00407         mw->setWindowState(mw->windowState() | Qt::WindowMaximized);
00408     }
00409 
00410 #ifndef Q_WS_MAC
00411     mw->setMenuBar(m_globalMenuBar);
00412     m_globalMenuBar->show();
00413 #endif
00414     mw->addToolBar(m_editToolBar);
00415     mw->addToolBar(m_toolToolBar);
00416     mw->addToolBar(m_formToolBar);
00417     m_editToolBar->show();
00418     m_toolToolBar->show();
00419     m_formToolBar->show();
00420 
00421     qDesigner->setMainWindow(mw);
00422 
00423     foreach (QDesignerToolWindow *tw, m_toolWindows) {
00424         if (wasTopLevel)
00425             settings.saveGeometryFor(tw);
00426         QDockWidget *dockWidget = magicalDockWidget(tw);
00427         if (dockWidget == 0) {
00428             dockWidget = new QDockWidget(mw);
00429             dockWidget->setObjectName(tw->objectName() + QLatin1String("_dock"));
00430             dockWidget->setWindowTitle(tw->windowTitle());
00431             mw->addDockWidget(tw->dockWidgetAreaHint(), dockWidget);
00432         }
00433 
00434         dockWidget->setWidget(tw);
00435     }
00436 
00437     foreach (QDesignerToolWindow *tw, m_toolWindows) {
00438         QDockWidget *dockWidget = magicalDockWidget(tw);
00439         tw->setVisible(true);
00440         dockWidget->setVisible(m_visibilities.value(tw, true));
00441     }
00442 
00443     mw->restoreState(settings.mainWindowState(), 2);
00444 
00445     foreach (QDesignerFormWindow *fw, m_formWindows)
00446         m_workspace->addWindow(fw, magicalWindowFlags(fw))->hide();
00447     // will be shown in adjustFormPositions
00448 
00449     changeBringToFrontVisiblity(false);
00450 
00451     mw->show();
00452 
00453     if (!m_initializing)
00454         QMetaObject::invokeMethod(this, "adjustFormPositions", Qt::QueuedConnection);
00455 }

void QDesignerWorkbench::switchToTopLevelMode (  )  [slot]

Definition at line 513 of file qdesigner_workbench.cpp.

References QDesignerToolWindow::action(), QMainWindow::addToolBar(), QDesktopWidget::availableGeometry(), changeBringToFrontVisiblity(), core(), QApplication::desktop(), findToolWindow(), QList< T >::first(), g, QDesignerToolWindow::geometryHint(), QDesignerFormWindow::geometryHint(), QMainWindow::insertToolBarBreak(), QList< T >::isEmpty(), QWidget::isVisible(), m_core, m_editToolBar, m_formToolBar, m_formWindows, m_geometries, m_globalMenuBar, m_mode, m_toolToolBar, m_toolWindows, magicalParent(), magicalWindowFlags(), QWidget::move(), NeutralMode, qDesigner, QWidget::resize(), QAction::setChecked(), QDesignerSettings::setGeometryFor(), QMainWindow::setMenuBar(), QWidget::setParent(), QDesignerToolWindow::setSaveSettingsOnClose(), QDesignerFormEditorInterface::setTopLevel(), QAction::setVisible(), QWidget::setWindowTitle(), QWidget::show(), switchToNeutralMode(), QRect::topLeft(), TopLevelMode, and QHash< Key, T >::value().

Referenced by setUIMode().

00514 {
00515     if (m_mode == TopLevelMode)
00516         return;
00517 
00518     // make sure that the widgetbox is visible iff it is different from neutrol.
00519     if (m_mode != NeutralMode) {
00520         if (QDesignerToolWindow *widgetbox_tool = findToolWindow(core()->widgetBox())) {
00521             if (!widgetbox_tool->action()->isChecked())
00522                 widgetbox_tool->action()->trigger();
00523         }
00524     }
00525 
00526     switchToNeutralMode();
00527     QPoint desktopOffset = QApplication::desktop()->availableGeometry().topLeft();
00528     m_mode = TopLevelMode;
00529 
00530     // The widget box is special, it gets the menubar and gets to be the main widget.
00531 
00532     QDesignerToolWindow *widgetBoxWrapper = 0;
00533     if (0 != (widgetBoxWrapper = findToolWindow(core()->widgetBox()))) {
00534         m_core->setTopLevel(widgetBoxWrapper);
00535 #ifndef Q_WS_MAC
00536         widgetBoxWrapper->setMenuBar(m_globalMenuBar);
00537         widgetBoxWrapper->action()->setVisible(false);
00538         widgetBoxWrapper->setSaveSettingsOnClose(true);
00539         qDesigner->setMainWindow(widgetBoxWrapper);
00540         widgetBoxWrapper->setWindowTitle(tr("Qt Designer"));
00541 #endif
00542         widgetBoxWrapper->addToolBar(m_editToolBar);
00543         widgetBoxWrapper->addToolBar(m_toolToolBar);
00544         widgetBoxWrapper->addToolBar(m_formToolBar);
00545 
00546         widgetBoxWrapper->insertToolBarBreak(m_formToolBar);
00547     }
00548 
00549     QDesignerSettings settings;
00550     bool found_visible_window = false;
00551     foreach (QDesignerToolWindow *tw, m_toolWindows) {
00552         tw->setParent(magicalParent(), magicalWindowFlags(tw));
00553         settings.setGeometryFor(tw, tw->geometryHint());
00554         tw->action()->setChecked(tw->isVisible());
00555         found_visible_window |= tw->isVisible();
00556     }
00557 
00558     if (!m_toolWindows.isEmpty() && !found_visible_window)
00559         m_toolWindows.first()->show();
00560 
00561     changeBringToFrontVisiblity(true);
00562 
00563     foreach (QDesignerFormWindow *fw, m_formWindows) {
00564         fw->setParent(magicalParent(), magicalWindowFlags(fw));
00565         QRect g = m_geometries.value(fw, fw->geometryHint());
00566         fw->resize(g.size());
00567         fw->move(g.topLeft() + desktopOffset);
00568         fw->show();
00569     }
00570 }

void QDesignerWorkbench::initializeCorePlugins (  )  [slot]

Definition at line 693 of file qdesigner_workbench.cpp.

References core(), QDesignerPluginManager::instances(), QDesignerFormEditorInterface::pluginManager(), and QPluginLoader::staticInstances().

Referenced by initialize().

00694 {
00695     QList<QObject*> plugins = QPluginLoader::staticInstances();
00696     plugins += core()->pluginManager()->instances();
00697 
00698     foreach (QObject *plugin, plugins) {
00699         if (QDesignerFormEditorPluginInterface *formEditorPlugin = qobject_cast<QDesignerFormEditorPluginInterface*>(plugin)) {
00700             if (!formEditorPlugin->isInitialized())
00701                 formEditorPlugin->initialize(core());
00702         }
00703     }
00704 }

void QDesignerWorkbench::initialize (  )  [private, slot]

Definition at line 125 of file qdesigner_workbench.cpp.

References QActionGroup::actions(), QMenu::addAction(), QToolBar::addAction(), QMenuBar::addMenu(), QMenu::addMenu(), QMenu::addSeparator(), addToolWindow(), QHash< Key, T >::clear(), QObject::connect(), core(), QDesignerComponents::createFormEditor(), QDesignerComponents::createTaskMenu(), QDesignerActions::editActions(), emit, QDesignerActions::fileActions(), QDesignerActions::formActions(), formWindowActionTriggered(), QDesignerFormEditorInterface::formWindowManager(), QDesignerActions::helpActions(), QAction::icon(), initializeCorePlugins(), initialized(), QDesignerComponents::initializePlugins(), QMenu::insertMenu(), QIcon::isNull(), m_actionManager, m_core, m_editMenu, m_editToolBar, m_fileMenu, m_formMenu, m_formToolBar, m_geometries, m_globalMenuBar, m_helpMenu, m_integration, m_toolActions, m_toolMenu, m_toolToolBar, m_windowActions, m_windowMenu, QDesignerActions::previewFormAction(), QDesignerActions::recentFilesActions(), QActionGroup::setExclusive(), QObject::setObjectName(), QWidget::setWindowTitle(), SIGNAL, SLOT, QDesignerActions::styleActions(), QAction::text(), QToolBar::toggleViewAction(), QDesignerActions::toolActions(), QDesignerActions::uiMode(), updateWindowMenu(), and QDesignerActions::windowActions().

Referenced by QDesignerWorkbench().

00126 {
00127     QDesignerSettings settings;
00128     m_core = QDesignerComponents::createFormEditor(this);
00129 
00130     (void) QDesignerComponents::createTaskMenu(core(), this);
00131 
00132     initializeCorePlugins();
00133     QDesignerComponents::initializePlugins(core());
00134 
00135     m_toolActions = new QActionGroup(this);
00136     m_toolActions->setExclusive(false);
00137 
00138     m_windowActions = new QActionGroup(this);
00139     m_windowActions->setExclusive(true);
00140     connect(m_windowActions, SIGNAL(triggered(QAction*)), this, SLOT(formWindowActionTriggered(QAction*)));
00141 
00142     m_actionManager = new QDesignerActions(this);
00143 
00144     m_globalMenuBar = new QMenuBar;
00145 
00146     m_fileMenu = m_globalMenuBar->addMenu(tr("&File"));
00147     foreach (QAction *action, m_actionManager->fileActions()->actions()) {
00148         m_fileMenu->addAction(action);
00149         if (action->text() == QDesignerActions::tr("&Open Form...")) {
00150             QMenu *recentFilesMenu = m_fileMenu->addMenu(tr("&Recent Forms"));
00151             // Pop the "Recent Files" stuff in here.
00152             foreach(QAction *recentAction, m_actionManager->recentFilesActions()->actions())
00153                 recentFilesMenu->addAction(recentAction);
00154         }
00155     }
00156 
00157     m_editMenu = m_globalMenuBar->addMenu(tr("&Edit"));
00158     foreach (QAction *action, m_actionManager->editActions()->actions()) {
00159         m_editMenu->addAction(action);
00160     }
00161 
00162     m_editMenu->addSeparator();
00163 
00164     foreach (QAction *action, m_actionManager->toolActions()->actions()) {
00165         m_editMenu->addAction(action);
00166     }
00167 
00168     m_editMenu->addSeparator();
00169     QMenu *menu = m_editMenu->addMenu(tr("User Interface &Mode"));
00170     foreach (QAction *action, m_actionManager->uiMode()->actions())
00171         menu->addAction(action);
00172 
00173 
00174     m_formMenu = m_globalMenuBar->addMenu(tr("F&orm"));
00175     foreach (QAction *action, m_actionManager->formActions()->actions()) {
00176         m_formMenu->addAction(action);
00177     }
00178 
00179     QMenu *previewSubMenu = new QMenu(tr("Preview in"), m_formMenu);
00180     m_formMenu->insertMenu(m_actionManager->previewFormAction(), previewSubMenu);
00181 
00182     foreach (QAction *action, m_actionManager->styleActions()->actions()) {
00183         previewSubMenu->addAction(action);
00184     }
00185 
00186     m_toolMenu = m_globalMenuBar->addMenu(tr("&Tools"));
00187 
00188     m_toolMenu->addSeparator();
00189 
00190     m_windowMenu = m_globalMenuBar->addMenu(tr("&Window"));
00191     foreach (QAction *action, m_actionManager->windowActions()->actions()) {
00192         m_windowMenu->addAction(action);
00193     }
00194 
00195     m_helpMenu = m_globalMenuBar->addMenu(tr("&Help"));
00196     foreach (QAction *action, m_actionManager->helpActions()->actions()) {
00197         m_helpMenu->addAction(action);
00198     }
00199 
00200     QDesignerToolWindow *tw = new QDesignerWidgetBox(this);
00201     tw->setObjectName(QLatin1String("qt_designer_widgetbox"));
00202     addToolWindow(tw);
00203     tw = new QDesignerObjectInspector(this);
00204     tw->setObjectName(QLatin1String("qt_designer_objectinspector"));
00205     addToolWindow(tw);
00206     tw = new QDesignerPropertyEditor(this);
00207     tw->setObjectName(QLatin1String("qt_designer_propertyeditor"));
00208     addToolWindow(tw);
00209     tw = new QDesignerSignalSlotEditor(this);
00210     tw->setObjectName(QLatin1String("qt_designer_signalsloteditor"));
00211     addToolWindow(tw);
00212     tw = new QDesignerResourceEditor(this);
00213     tw->setObjectName(QLatin1String("qt_designer_resourceeditor"));
00214     addToolWindow(tw);
00215     tw = new QDesignerActionEditor(this);
00216     tw->setObjectName(QLatin1String("qt_designer_actioneditor"));
00217     addToolWindow(tw);
00218 
00219     m_integration = new qdesigner_internal::QDesignerIntegration(core(), this);
00220 
00221     // create the toolbars
00222     m_editToolBar = new QToolBar;
00223     m_editToolBar->setObjectName(QLatin1String("editToolBar"));
00224     m_editToolBar->setWindowTitle(tr("Edit"));
00225     foreach (QAction *action, m_actionManager->editActions()->actions()) {
00226         if (action->icon().isNull() == false)
00227             m_editToolBar->addAction(action);
00228     }
00229 
00230     m_toolToolBar = new QToolBar;
00231     m_toolToolBar->setObjectName(QLatin1String("toolsToolBar"));
00232     m_toolToolBar->setWindowTitle(tr("Tools"));
00233     foreach (QAction *action, m_actionManager->toolActions()->actions()) {
00234         if (action->icon().isNull() == false)
00235             m_toolToolBar->addAction(action);
00236     }
00237 
00238     m_formToolBar = new QToolBar;
00239     m_formToolBar->setObjectName(QLatin1String("formToolBar"));
00240     m_formToolBar->setWindowTitle(tr("Form"));
00241     foreach (QAction *action, m_actionManager->formActions()->actions()) {
00242         if (action->icon().isNull() == false)
00243             m_formToolBar->addAction(action);
00244     }
00245 
00246     QMenu *toolbarMenu = m_toolMenu->addMenu(tr("Toolbars"));
00247     toolbarMenu->addAction(m_editToolBar->toggleViewAction());
00248     toolbarMenu->addAction(m_toolToolBar->toggleViewAction());
00249     toolbarMenu->addAction(m_formToolBar->toggleViewAction());
00250 
00251     m_geometries.clear();
00252 
00253     emit initialized();
00254 
00255     connect(m_core->formWindowManager(), SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface*)),
00256                 this, SLOT(updateWindowMenu(QDesignerFormWindowInterface*)));
00257 }

void QDesignerWorkbench::activateWorkspaceChildWindow ( QWidget widget  )  [private, slot]

Definition at line 645 of file qdesigner_workbench.cpp.

References core(), QDesignerFormEditorInterface::formWindowManager(), m_workspace, QDesignerFormWindowManagerInterface::setActiveFormWindow(), and QWorkspace::setActiveWindow().

Referenced by switchToDockedMode().

00646 {
00647     if (QDesignerFormWindow *fw = qobject_cast<QDesignerFormWindow*>(widget)) {
00648         core()->formWindowManager()->setActiveFormWindow(fw->editor());
00649         m_workspace->setActiveWindow(widget);
00650     }
00651 }

void QDesignerWorkbench::updateWindowMenu ( QDesignerFormWindowInterface fw  )  [private, slot]

Definition at line 827 of file qdesigner_workbench.cpp.

References QWidget::parentWidget().

Referenced by initialize().

00828 {
00829     if (!fw)
00830         return;
00831     if (QDesignerFormWindow *dfw = qobject_cast<QDesignerFormWindow *>(fw->parentWidget()))
00832         dfw->action()->setChecked(true);
00833 }

void QDesignerWorkbench::formWindowActionTriggered ( QAction a  )  [private, slot]

Definition at line 835 of file qdesigner_workbench.cpp.

References a, QWidget::activateWindow(), DockedMode, m_mode, m_workspace, QWidget::raise(), QWorkspace::setActiveWindow(), QWidget::setWindowState(), Qt::WindowMinimized, and QWidget::windowState().

Referenced by initialize().

00836 {
00837     QWidget *widget = a->parentWidget();
00838     Q_ASSERT(widget != 0);
00839 
00840     if (m_mode == DockedMode) {
00841         m_workspace->setActiveWindow(widget);
00842     } else {
00843         widget->setWindowState(widget->windowState() & ~Qt::WindowMinimized);
00844         widget->activateWindow();
00845         widget->raise();
00846     }
00847 }

void QDesignerWorkbench::showToolBars (  )  [private, slot]

Definition at line 849 of file qdesigner_workbench.cpp.

References m_editToolBar, m_formToolBar, m_toolToolBar, and QWidget::show().

00850 {
00851     m_toolToolBar->show();
00852     m_formToolBar->show();
00853     m_editToolBar->show();
00854 }

void QDesignerWorkbench::adjustFormPositions (  )  [private, slot]

Definition at line 485 of file qdesigner_workbench.cpp.

References g, QDesignerFormWindow::geometryHint(), m_formWindows, m_geometries, m_workspace, QWidget::mapToGlobal(), QWidget::move(), QWidget::parentWidget(), QWidget::resize(), QWidget::show(), and QHash< Key, T >::value().

00486 {
00487     if (m_workspace == 0)
00488         return;
00489 
00490     QPoint workspace_tl = m_workspace->mapToGlobal(QPoint(0, 0));
00491 
00492     foreach (QDesignerFormWindow *fw, m_formWindows) {
00493         QWidget *frame = fw->parentWidget();
00494         if (frame == 0)
00495             continue;
00496         QRect g = m_geometries.value(fw, fw->geometryHint());
00497         frame->move(g.topLeft() - workspace_tl);
00498         fw->resize(g.size());
00499         frame->show();
00500     }
00501 }

QWidget * QDesignerWorkbench::magicalParent (  )  const [private]

Definition at line 282 of file qdesigner_workbench.cpp.

References DockedMode, m_mode, m_workspace, NeutralMode, and TopLevelMode.

Referenced by createFormWindow(), and switchToTopLevelMode().

00283 {
00284     switch (m_mode) {
00285         case TopLevelMode:
00286             return 0;
00287         case DockedMode:
00288             Q_ASSERT(m_workspace != 0);
00289             return m_workspace;
00290         case NeutralMode:
00291             return 0;
00292         default:
00293             Q_ASSERT(0);
00294             return 0;
00295     }
00296 }

Qt::WindowFlags QDesignerWorkbench::magicalWindowFlags ( const QWidget widgetForFlags  )  const [private]

Definition at line 259 of file qdesigner_workbench.cpp.

References DockedMode, m_mode, m_workspace, NeutralMode, Qt::Tool, TopLevelMode, Qt::Window, Qt::WindowShadeButtonHint, Qt::WindowSystemMenuHint, and Qt::WindowTitleHint.

Referenced by createFormWindow(), switchToDockedMode(), and switchToTopLevelMode().

00260 {
00261     switch (m_mode) {
00262         case TopLevelMode: {
00263 #ifdef Q_WS_MAC
00264             if (qobject_cast<const QDesignerToolWindow *>(widgetForFlags))
00265                 return Qt::Tool;
00266 #else
00267             Q_UNUSED(widgetForFlags);
00268 #endif
00269             return Qt::Window;
00270         }
00271         case DockedMode:
00272             Q_ASSERT(m_workspace != 0);
00273             return Qt::Window | Qt::WindowShadeButtonHint | Qt::WindowSystemMenuHint | Qt::WindowTitleHint;
00274         case NeutralMode:
00275             return Qt::Window;
00276         default:
00277             Q_ASSERT(0);
00278             return 0;
00279     }
00280 }

QDockWidget * QDesignerWorkbench::magicalDockWidget ( QWidget widget  )  const [private]

Definition at line 862 of file qdesigner_workbench.cpp.

References m_workspace, QObject::objectName(), and QWidget::window().

Referenced by switchToDockedMode().

00863 {
00864     if (!m_workspace)
00865         return 0;
00866 
00867     QDockWidget *dockWidget = qFindChild<QDockWidget*>(m_workspace->window(), widget->objectName() + QLatin1String("_dock"));
00868     return dockWidget;
00869 }

Here is the call graph for this function:

QDesignerFormWindowManagerInterface * QDesignerWorkbench::formWindowManager (  )  const [private]

Definition at line 597 of file qdesigner_workbench.cpp.

References QDesignerFormEditorInterface::formWindowManager(), and m_core.

00598 {
00599     return m_core->formWindowManager();
00600 }

Here is the call graph for this function:

void QDesignerWorkbench::changeBringToFrontVisiblity ( bool  visible  )  [private]

Definition at line 503 of file qdesigner_workbench.cpp.

References QActionGroup::actions(), QList< T >::at(), QDesignerActions::bringToFrontAction(), QList< T >::indexOf(), QAction::isSeparator(), m_actionManager, QAction::setVisible(), and QDesignerActions::windowActions().

Referenced by switchToDockedMode(), and switchToTopLevelMode().

00504 {
00505     QAction *btf = m_actionManager->bringToFrontAction();
00506     QList<QAction *> actionList = m_actionManager->windowActions()->actions();
00507     btf->setVisible(visible);
00508     QAction *sep = actionList.at(actionList.indexOf(btf) - 1);
00509     if (sep->isSeparator())
00510         sep->setVisible(visible);
00511 }

Here is the call graph for this function:

bool QDesignerWorkbench::eventFilter ( QObject object,
QEvent event 
) [private, virtual]

Filters events if this object has been installed as an event filter for the watched object.

In your reimplementation of this function, if you want to filter the event out, i.e. stop it being handled further, return true; otherwise return false.

Example:

        class MainWindow : public QMainWindow
        {
        public:
            MainWindow();

        protected:
            bool eventFilter(QObject *obj, QEvent *ev);

        private:
            QTextEdit *textEdit;
        };

        MainWindow::MainWindow()
        {
            textEdit = new QTextEdit;
            setCentralWidget(textEdit);

            textEdit->installEventFilter(this);
        }

        bool MainWindow::eventFilter(QObject *obj, QEvent *event)
        {
            if (obj == textEdit) {
                if (event->type() == QEvent::KeyPress) {
                    QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
                    qDebug() << "Ate key press" << keyEvent->key();
                    return true;
                } else {
                    return false;
                }
            } else {
                // pass the event on to the parent class
                return QMainWindow::eventFilter(obj, event);
            }
        }

Notice in the example above that unhandled events are passed to the base class's eventFilter() function, since the base class might have reimplemented eventFilter() for its own internal purposes.

Warning:
If you delete the receiver object in this function, be sure to return true. Otherwise, Qt will forward the event to the deleted object and the program might crash.
See also:
installEventFilter()

Reimplemented from QObject.

Definition at line 457 of file qdesigner_workbench.cpp.

References QMessageBox::critical(), QEvent::DragEnter, QEvent::Drop, QObject::event(), m_workspace, object, and readInForm().

00458 {
00459     if (object == m_workspace) {
00460         if (event->type() == QEvent::DragEnter) {
00461             QDragEnterEvent *e = static_cast<QDragEnterEvent*>(event);
00462             if (e->mimeData()->hasFormat("text/uri-list")) {
00463                 e->acceptProposedAction();
00464                 return true;
00465             }
00466         } else if (event->type() == QEvent::Drop) {
00467             QDropEvent *e = static_cast<QDropEvent*>(event);
00468             if (!e->mimeData()->hasFormat("text/uri-list"))
00469                 return false;
00470             foreach (QUrl url, e->mimeData()->urls()) {
00471                 QString fileName = url.toLocalFile();
00472                 if (fileName.endsWith(".ui"))
00473                     readInForm(url.toLocalFile());
00474                 else
00475                     QMessageBox::critical(m_workspace, tr("Opening Form"),
00476                         tr("Cannot open file %1!").arg(fileName));
00477             }
00478             e->acceptProposedAction();
00479             return true;
00480         }
00481     }
00482     return false;
00483 }

Here is the call graph for this function:


Member Data Documentation

QDesignerFormEditorInterface* QDesignerWorkbench::m_core [private]

Definition at line 138 of file qdesigner_workbench.h.

Referenced by core(), formWindowManager(), initialize(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

qdesigner_internal::QDesignerIntegration* QDesignerWorkbench::m_integration [private]

Definition at line 139 of file qdesigner_workbench.h.

Referenced by initialize().

QDesignerActions* QDesignerWorkbench::m_actionManager [private]

Definition at line 141 of file qdesigner_workbench.h.

Referenced by actionManager(), addFormWindow(), changeBringToFrontVisiblity(), initialize(), readInForm(), removeFormWindow(), saveForm(), and writeOutForm().

QActionGroup* QDesignerWorkbench::m_toolActions [private]

Definition at line 142 of file qdesigner_workbench.h.

Referenced by addToolWindow(), initialize(), and removeToolWindow().

QActionGroup* QDesignerWorkbench::m_windowActions [private]

Definition at line 143 of file qdesigner_workbench.h.

Referenced by addFormWindow(), initialize(), and removeFormWindow().

QMenu* QDesignerWorkbench::m_fileMenu [private]

Definition at line 145 of file qdesigner_workbench.h.

Referenced by initialize().

QMenu* QDesignerWorkbench::m_editMenu [private]

Definition at line 146 of file qdesigner_workbench.h.

Referenced by initialize().

QMenu* QDesignerWorkbench::m_formMenu [private]

Definition at line 147 of file qdesigner_workbench.h.

Referenced by initialize().

QMenu* QDesignerWorkbench::m_toolMenu [private]

Definition at line 148 of file qdesigner_workbench.h.

Referenced by addToolWindow(), initialize(), and removeToolWindow().

QMenu* QDesignerWorkbench::m_windowMenu [private]

Definition at line 149 of file qdesigner_workbench.h.

Referenced by addFormWindow(), initialize(), and removeFormWindow().

QMenu* QDesignerWorkbench::m_helpMenu [private]

Definition at line 150 of file qdesigner_workbench.h.

Referenced by initialize().

QMenuBar* QDesignerWorkbench::m_globalMenuBar [private]

Definition at line 152 of file qdesigner_workbench.h.

Referenced by initialize(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

QToolBar* QDesignerWorkbench::m_toolToolBar [private]

Definition at line 153 of file qdesigner_workbench.h.

Referenced by initialize(), showToolBars(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

QToolBar* QDesignerWorkbench::m_formToolBar [private]

Definition at line 154 of file qdesigner_workbench.h.

Referenced by initialize(), showToolBars(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

QToolBar* QDesignerWorkbench::m_editToolBar [private]

Definition at line 155 of file qdesigner_workbench.h.

Referenced by initialize(), showToolBars(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

UIMode QDesignerWorkbench::m_mode [private]

Definition at line 157 of file qdesigner_workbench.h.

Referenced by formWindowActionTriggered(), magicalParent(), magicalWindowFlags(), mode(), saveSettings(), switchToDockedMode(), switchToNeutralMode(), switchToTopLevelMode(), and ~QDesignerWorkbench().

QList<QDesignerToolWindow*> QDesignerWorkbench::m_toolWindows [private]

Definition at line 159 of file qdesigner_workbench.h.

Referenced by addToolWindow(), closeAllToolWindows(), findToolWindow(), removeToolWindow(), saveSettings(), switchToDockedMode(), switchToNeutralMode(), switchToTopLevelMode(), toolWindow(), toolWindowCount(), and ~QDesignerWorkbench().

QList<QDesignerFormWindow*> QDesignerWorkbench::m_formWindows [private]

Definition at line 160 of file qdesigner_workbench.h.

Referenced by addFormWindow(), adjustFormPositions(), findFormWindow(), formWindow(), formWindowCount(), handleClose(), removeFormWindow(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

QWorkspace* QDesignerWorkbench::m_workspace [private]

Definition at line 162 of file qdesigner_workbench.h.

Referenced by activateWorkspaceChildWindow(), adjustFormPositions(), availableGeometry(), createFormWindow(), eventFilter(), formWindowActionTriggered(), magicalDockWidget(), magicalParent(), magicalWindowFlags(), switchToDockedMode(), switchToNeutralMode(), and ~QDesignerWorkbench().

QHash<QWidget*, bool> QDesignerWorkbench::m_visibilities [private]

Definition at line 163 of file qdesigner_workbench.h.

Referenced by switchToDockedMode(), and switchToNeutralMode().

QHash<QWidget*, QRect> QDesignerWorkbench::m_geometries [private]

Definition at line 164 of file qdesigner_workbench.h.

Referenced by adjustFormPositions(), initialize(), switchToDockedMode(), switchToNeutralMode(), and switchToTopLevelMode().

QHash<QDesignerToolWindow*, ToolWindowExtra> QDesignerWorkbench::m_toolWindowExtras [private]

Definition at line 169 of file qdesigner_workbench.h.

Referenced by addToolWindow(), and removeToolWindow().

QHash<QDesignerFormWindow*, FormWindowExtra> QDesignerWorkbench::m_formWindowExtras [private]

Definition at line 170 of file qdesigner_workbench.h.

Referenced by addFormWindow(), and removeFormWindow().

bool QDesignerWorkbench::m_initializing [private]

Definition at line 171 of file qdesigner_workbench.h.

Referenced by QDesignerWorkbench(), and switchToDockedMode().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 17:21:18 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1