QDesignerFormWindow Class Reference

#include <qdesigner_formwindow.h>

Inheritance diagram for QDesignerFormWindow:

Inheritance graph
[legend]
Collaboration diagram for QDesignerFormWindow:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 33 of file qdesigner_formwindow.h.

Public Slots

void updateWindowTitle (const QString &fileName)
void updateChanged ()
void geometryChanged ()

Public Member Functions

 QDesignerFormWindow (QDesignerFormWindowInterface *formWindow, QDesignerWorkbench *workbench, QWidget *parent=0, Qt::WindowFlags flags=0)
virtual ~QDesignerFormWindow ()
QActionaction () const
QDesignerWorkbenchworkbench () const
QDesignerFormWindowInterfaceeditor () const
virtual QRect geometryHint () const

Protected Member Functions

virtual void changeEvent (QEvent *e)
virtual void closeEvent (QCloseEvent *ev)
virtual void resizeEvent (QResizeEvent *rev)

Private Attributes

QDesignerFormWindowInterfacem_editor
QPointer< QDesignerWorkbenchm_workbench
QActionm_action
bool initialized


Constructor & Destructor Documentation

QDesignerFormWindow::QDesignerFormWindow ( QDesignerFormWindowInterface formWindow,
QDesignerWorkbench workbench,
QWidget parent = 0,
Qt::WindowFlags  flags = 0 
)

Definition at line 46 of file qdesigner_formwindow.cpp.

References QDesignerFormWindowInterface::commandHistory(), QObject::connect(), QDesignerWorkbench::core(), QDesignerFormWindowManagerInterface::createFormWindow(), QDesignerFormEditorInterface::formWindowManager(), geometryChanged(), m_action, m_editor, QMainWindow::setCentralWidget(), QAction::setCheckable(), QWidget::setMaximumSize(), QWidget::setParent(), SIGNAL, SLOT, updateChanged(), updateWindowTitle(), and workbench().

00047     : QMainWindow(parent, flags),
00048       m_editor(editor),
00049       m_workbench(workbench),
00050       initialized(false)
00051 {
00052     Q_ASSERT(workbench);
00053 
00054     setMaximumSize(0xFFF, 0xFFF);
00055 
00056     if (m_editor) {
00057         m_editor->setParent(this);
00058     } else {
00059         m_editor = workbench->core()->formWindowManager()->createFormWindow(this);
00060     }
00061 
00062     setCentralWidget(m_editor);
00063 
00064     m_action = new QAction(this);
00065     m_action->setCheckable(true);
00066 
00067     connect(m_editor->commandHistory(), SIGNAL(indexChanged(int)), this, SLOT(updateChanged()));
00068     connect(m_editor, SIGNAL(fileNameChanged(QString)), this, SLOT(updateWindowTitle(QString)));
00069     connect(m_editor, SIGNAL(geometryChanged()), this, SLOT(geometryChanged()));
00070 }

Here is the call graph for this function:

QDesignerFormWindow::~QDesignerFormWindow (  )  [virtual]

Definition at line 72 of file qdesigner_formwindow.cpp.

References QDesignerWorkbench::removeFormWindow(), and workbench().

00073 {
00074     if (workbench())
00075         workbench()->removeFormWindow(this);
00076 }

Here is the call graph for this function:


Member Function Documentation

QAction * QDesignerFormWindow::action (  )  const

Definition at line 78 of file qdesigner_formwindow.cpp.

References m_action.

Referenced by QDesignerWorkbench::addFormWindow(), closeEvent(), and QDesignerWorkbench::removeFormWindow().

00079 {
00080     return m_action;
00081 }

QDesignerWorkbench * QDesignerFormWindow::workbench (  )  const

Definition at line 114 of file qdesigner_formwindow.cpp.

References m_workbench.

Referenced by closeEvent(), QDesignerFormWindow(), and ~QDesignerFormWindow().

00115 {
00116     return m_workbench;
00117 }

QDesignerFormWindowInterface * QDesignerFormWindow::editor (  )  const

Definition at line 109 of file qdesigner_formwindow.cpp.

References m_editor.

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

00110 {
00111     return m_editor;
00112 }

QRect QDesignerFormWindow::geometryHint (  )  const [virtual]

Definition at line 104 of file qdesigner_formwindow.cpp.

Referenced by QDesignerWorkbench::adjustFormPositions(), QDesignerWorkbench::createFormWindow(), and QDesignerWorkbench::switchToTopLevelMode().

00105 {
00106     return QRect(0, 0, 400, 300);
00107 }

void QDesignerFormWindow::updateWindowTitle ( const QString fileName  )  [slot]

Definition at line 119 of file qdesigner_formwindow.cpp.

References QString::isEmpty(), m_editor, QDesignerFormWindowInterface::mainContainer(), QWidget::setWindowIcon(), QWidget::setWindowTitle(), and QWidget::windowTitle().

Referenced by QDesignerFormWindow(), QDesignerActions::readInForm(), and updateChanged().

00120 {    
00121     QString fn = QFileInfo(fileName).fileName();
00122 
00123     if (fn.isEmpty()) {
00124         // Try to preserve its "untitled" number.
00125         QRegExp rx(QLatin1String("unnamed( (\\d+))?"));
00126 
00127         if (rx.indexIn(windowTitle()) != -1) {
00128             fn = rx.cap(0);
00129         } else {
00130             fn = QLatin1String("untitled");
00131         }
00132     }
00133 
00134     if (QWidget *mc = m_editor->mainContainer()) {
00135         setWindowIcon(mc->windowIcon());
00136         setWindowTitle(tr("%1 - %2[*]").arg(mc->windowTitle()).arg(fn));
00137     } else {
00138         setWindowTitle(fn);
00139     }
00140 }

void QDesignerFormWindow::updateChanged (  )  [slot]

Definition at line 176 of file qdesigner_formwindow.cpp.

References QDesignerFormWindowInterface::fileName(), QDesignerFormWindowInterface::isDirty(), m_editor, QWidget::setWindowModified(), and updateWindowTitle().

Referenced by QDesignerFormWindow(), and QDesignerActions::showFormSettings().

00177 {
00178     setWindowModified(m_editor->isDirty());
00179     updateWindowTitle(m_editor->fileName());
00180 }

void QDesignerFormWindow::geometryChanged (  )  [slot]

Definition at line 197 of file qdesigner_formwindow.cpp.

References QDesignerFormWindowInterface::core(), QDesignerFormEditorInterface::extensionManager(), m_editor, object, QDesignerPropertyEditorInterface::object(), QDesignerFormEditorInterface::propertyEditor(), and QDesignerPropertyEditorInterface::setPropertyValue().

Referenced by QDesignerFormWindow().

00198 {
00199     if(QObject *object = m_editor->core()->propertyEditor()->object()) {
00200         QDesignerPropertySheetExtension *sheet = 
00201             qt_extension<QDesignerPropertySheetExtension*>(m_editor->core()->extensionManager(), object);
00202         m_editor->core()->propertyEditor()->setPropertyValue("geometry", sheet->property(sheet->indexOf("geometry")));
00203     }
00204 }

void QDesignerFormWindow::changeEvent ( QEvent e  )  [protected, virtual]

This event handler can be reimplemented to handle state changes.

The state being changed in this event can be retrieved through event event.

Change events include: QEvent::ToolBarChange, QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange, QEvent::StyleChange, QEvent::PaletteChange, QEvent::WindowTitleChange, QEvent::IconTextChange, QEcvent::ModifiedChange, QEvent::MouseTrackingChange, QEvent::ParentChange, QEvent::WindowStateChange, QEvent::LanguageChange, QEvent::LocaleChange, QEvent::LayoutDirectionChange.

Reimplemented from QWidget.

Definition at line 83 of file qdesigner_formwindow.cpp.

References QEvent::ActivationChange, QWidget::changeEvent(), QWidget::isActiveWindow(), m_action, QAction::setChecked(), QAction::setIcon(), QAction::setText(), QEvent::type(), QWidget::windowIcon(), QEvent::WindowIconChange, QWidget::windowTitle(), and QEvent::WindowTitleChange.

00084 {
00085     switch (e->type()) {
00086         case QEvent::ActivationChange: {
00087             if (isActiveWindow()) {
00088                 m_action->setChecked(true);
00089                 // ### raise();
00090             }
00091         } break;
00092         case QEvent::WindowTitleChange:
00093             m_action->setText(windowTitle().replace(QLatin1String("[*]"), ""));
00094             break;
00095         case QEvent::WindowIconChange:
00096             m_action->setIcon(windowIcon());
00097             break;
00098         default:
00099             break;
00100     }
00101     QMainWindow::changeEvent(e);
00102 }

Here is the call graph for this function:

void QDesignerFormWindow::closeEvent ( QCloseEvent ev  )  [protected, virtual]

This event handler, for event event, can be reimplemented in a subclass to receive widget close events.

See also:
event(), hide(), close(), QCloseEvent, {Application Example}

Reimplemented from QWidget.

Definition at line 142 of file qdesigner_formwindow.cpp.

References QEvent::accept(), action(), QMessageBox::Cancel, QMessageBox::Default, QMessageBox::Escape, QDialog::exec(), QDesignerFormWindowInterface::fileName(), QEvent::ignore(), QMessageBox::Information, QEvent::isAccepted(), QDesignerFormWindowInterface::isDirty(), QString::isEmpty(), m_editor, m_workbench, QMessageBox::No, QWidget::raise(), QDesignerWorkbench::saveForm(), QEvent::setAccepted(), QMessageBox::setButtonText(), QDesignerFormWindowInterface::setDirty(), Qt::Sheet, QTimer::singleShot(), SLOT, QAction::text(), workbench(), and QMessageBox::Yes.

00143 {
00144     if (m_editor->isDirty()) {
00145         raise();
00146         QMessageBox box(tr("Save Form?"),
00147                 tr("Do you want to save the changes you made to \"%1\" before closing?")
00148                 .arg(m_editor->fileName().isEmpty() ? action()->text() : m_editor->fileName()),
00149                 QMessageBox::Information,
00150                 QMessageBox::Yes | QMessageBox::Default, QMessageBox::No,
00151                 QMessageBox::Cancel | QMessageBox::Escape, m_editor, Qt::Sheet);
00152         box.setButtonText(QMessageBox::Yes, m_editor->fileName().isEmpty() ? tr("Save...") : tr("Save"));
00153         box.setButtonText(QMessageBox::No, tr("Don't Save"));
00154         switch (box.exec()) {
00155             case QMessageBox::Yes: {
00156                 bool ok = workbench()->saveForm(m_editor);
00157                 ev->setAccepted(ok);
00158                 m_editor->setDirty(!ok);
00159                 break;
00160             }
00161             case QMessageBox::No:
00162                 m_editor->setDirty(false); // Not really necessary, but stops problems if we get close again.
00163                 ev->accept();
00164                 break;
00165             case QMessageBox::Cancel:
00166                 ev->ignore();
00167                 break;
00168         }
00169     }
00170 
00171     if (m_workbench->core()->formWindowManager()->formWindowCount() == 1 && ev->isAccepted()
00172             && QDesignerSettings().showNewFormOnStartup())
00173         QTimer::singleShot(200, m_workbench->actionManager(), SLOT(createForm()));  // Use timer in case we are quitting.
00174 }

Here is the call graph for this function:

void QDesignerFormWindow::resizeEvent ( QResizeEvent rev  )  [protected, virtual]

This event handler can be reimplemented in a subclass to receive widget resize events which are passed in the event parameter. When resizeEvent() is called, the widget already has its new geometry. The old size is accessible through QResizeEvent::oldSize().

The widget will be erased and receive a paint event immediately after processing the resize event. No drawing need be (or should be) done inside this handler.

See also:
moveEvent(), event(), resize(), QResizeEvent, paintEvent(), {Scribble Example}

Reimplemented from QWidget.

Definition at line 182 of file qdesigner_formwindow.cpp.

References initialized, m_editor, QDesignerFormWindowInterface::mainContainer(), QWidget::raise(), QWidget::resizeEvent(), QDesignerFormWindowInterface::setDirty(), QWidget::setWindowModified(), and QWidget::update().

00183 {
00184     if(initialized) {
00185         m_editor->setDirty(true);
00186         setWindowModified(true);
00187     }
00188 
00189     initialized = true;
00190     QMainWindow::resizeEvent(rev);
00191 
00192     // update the maincontainer on resize
00193     m_editor->mainContainer()->raise();
00194     m_editor->mainContainer()->update();
00195 }

Here is the call graph for this function:


Member Data Documentation

QDesignerFormWindowInterface* QDesignerFormWindow::m_editor [private]

Definition at line 59 of file qdesigner_formwindow.h.

Referenced by closeEvent(), editor(), geometryChanged(), QDesignerFormWindow(), resizeEvent(), updateChanged(), and updateWindowTitle().

QPointer<QDesignerWorkbench> QDesignerFormWindow::m_workbench [private]

Definition at line 60 of file qdesigner_formwindow.h.

Referenced by closeEvent(), and workbench().

QAction* QDesignerFormWindow::m_action [private]

Definition at line 61 of file qdesigner_formwindow.h.

Referenced by action(), changeEvent(), and QDesignerFormWindow().

bool QDesignerFormWindow::initialized [private]

Definition at line 62 of file qdesigner_formwindow.h.

Referenced by resizeEvent().


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