-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
#include <QtGui>
-
#include "mainwindow.h"
#include "mdichild.h"
#include "csettings.h"
gvFreeLayout(gvc, g);
}
-MainWindow::MainWindow()
+CMainWindow::CMainWindow()
{
QWidget* centralwidget = new QWidget(this);
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)),
- this, SLOT(updateMenus()));
+ this, SLOT(slotRefreshMenus()));
windowMapper = new QSignalMapper(this);
connect(windowMapper, SIGNAL(mapped(QWidget*)),
this, SLOT(setActiveSubWindow(QWidget*)));
frmSettings= new CFrmSettings();
- createActions();
- createMenus();
- createToolBars();
- createStatusBar();
+ actions();
+ menus();
+ toolBars();
+ statusBar();
updateMenus();
readSettings();
// (QComboBox*)frmSettings->findChild<QComboBox*>("cbLayout")
LoadLayouts((QComboBox*)frmSettings->findChild<QComboBox*>("cbLayout"));
LoadRenderers((QComboBox*)frmSettings->findChild<QComboBox*>("cbExtension"));
+ statusBar()->showMessage(tr("Ready"));
}
-void MainWindow::closeEvent(QCloseEvent *event)
+void CMainWindow::closeEvent(QCloseEvent *event)
{
mdiArea->closeAllSubWindows();
if (mdiArea->currentSubWindow()) {
}
}
-void MainWindow::newFile()
+void CMainWindow::slotNew()
{
MdiChild *child = createMdiChild();
child->newFile();
child->show();
}
-void MainWindow::open()
+void CMainWindow::slotOpen()
{
QStringList filters;
filters << "*.cpp" << "*.cxx" << "*.cc";
}
}
-void MainWindow::save()
+void CMainWindow::slotSave()
{
if (activeMdiChild() && activeMdiChild()->save())
statusBar()->showMessage(tr("File saved"), 2000);
}
-void MainWindow::saveAs()
+void CMainWindow::slotSaveAs()
{
if (activeMdiChild() && activeMdiChild()->saveAs())
statusBar()->showMessage(tr("File saved"), 2000);
}
-void MainWindow::cut()
+void CMainWindow::slotCut()
{
if (activeMdiChild())
activeMdiChild()->cut();
}
-void MainWindow::copy()
+void CMainWindow::slotCopy()
{
if (activeMdiChild())
activeMdiChild()->copy();
}
-void MainWindow::paste()
+void CMainWindow::slotPaste()
{
if (activeMdiChild())
activeMdiChild()->paste();
}
-void MainWindow::about()
+void CMainWindow::slotAbout()
{
QMessageBox::about(this, tr("About MDI"),
tr("The <b>MDI</b> example demonstrates how to write multiple "
}
-void MainWindow::settings()
+void CMainWindow::slotSettings()
{
frmSettings->showSettings(activeMdiChild());
}
+void CMainWindow::updateFileMenu()
+{
+ if (!activeMdiChild())
+ {
+ saveAct->setEnabled(false);
+ saveAsAct->setEnabled(false);
+ pasteAct->setEnabled(false);
+ closeAct->setEnabled(false);
+ closeAllAct->setEnabled(false);
+ tileAct->setEnabled(false);
+ cascadeAct->setEnabled(false);
+ nextAct->setEnabled(false);
+ previousAct->setEnabled(false);
+ separatorAct->setVisible(false);
+ }
+ else
+ {
+ saveAct->setEnabled(true);
+ saveAsAct->setEnabled(true);
+ pasteAct->setEnabled(true);
+ closeAct->setEnabled(true);
+ closeAllAct->setEnabled(true);
+ tileAct->setEnabled(true);
+ cascadeAct->setEnabled(true);
+ nextAct->setEnabled(true);
+ previousAct->setEnabled(true);
+ separatorAct->setVisible(true);
+ if(activeMdiChild()->textCursor().hasSelection())
+ {
+ cutAct->setEnabled(true);
+ copyAct->setEnabled(true);
+
+ }
+ else
+ {
+ cutAct->setEnabled(false);
+ copyAct->setEnabled(false);
+
+ }
-void MainWindow::updateMenus()
+ }
+
+}
+
+void CMainWindow::slotRefreshMenus()
+{
+ updateMenus();
+}
+void CMainWindow::updateMenus()
{
- bool hasMdiChild = (activeMdiChild() != 0);
- saveAct->setEnabled(hasMdiChild);
- saveAsAct->setEnabled(hasMdiChild);
- pasteAct->setEnabled(hasMdiChild);
- closeAct->setEnabled(hasMdiChild);
- closeAllAct->setEnabled(hasMdiChild);
- tileAct->setEnabled(hasMdiChild);
- cascadeAct->setEnabled(hasMdiChild);
- nextAct->setEnabled(hasMdiChild);
- previousAct->setEnabled(hasMdiChild);
- separatorAct->setVisible(hasMdiChild);
-
- bool hasSelection = (activeMdiChild() &&
- activeMdiChild()->textCursor().hasSelection());
- cutAct->setEnabled(hasSelection);
- copyAct->setEnabled(hasSelection);
+ this->updateFileMenu();
+ this->updateWindowMenu();
+
}
-void MainWindow::updateWindowMenu()
+void CMainWindow::updateWindowMenu()
{
- windowMenu->clear();
- windowMenu->addAction(closeAct);
- windowMenu->addAction(closeAllAct);
- windowMenu->addSeparator();
- windowMenu->addAction(tileAct);
- windowMenu->addAction(cascadeAct);
- windowMenu->addSeparator();
- windowMenu->addAction(nextAct);
- windowMenu->addAction(previousAct);
- windowMenu->addAction(separatorAct);
+ mWindow->clear();
+ mWindow->addAction(closeAct);
+ mWindow->addAction(closeAllAct);
+ mWindow->addSeparator();
+ mWindow->addAction(tileAct);
+ mWindow->addAction(cascadeAct);
+ mWindow->addSeparator();
+ mWindow->addAction(nextAct);
+ mWindow->addAction(previousAct);
+ mWindow->addAction(separatorAct);
QList<QMdiSubWindow *> windows = mdiArea->subWindowList();
separatorAct->setVisible(!windows.isEmpty());
text = tr("%1 %2").arg(i + 1)
.arg(child->userFriendlyCurrentFile());
}
- QAction *action = windowMenu->addAction(text);
+ QAction *action = mWindow->addAction(text);
action->setCheckable(true);
action ->setChecked(child == activeMdiChild());
connect(action, SIGNAL(triggered()), windowMapper, SLOT(map()));
}
}
-MdiChild *MainWindow::createMdiChild()
+MdiChild *CMainWindow::createMdiChild()
{
MdiChild *child = new MdiChild;
child->parentFrm=this;
return child;
}
-void MainWindow::createActions()
+void CMainWindow::actions()
{
newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
newAct->setShortcuts(QKeySequence::New);
newAct->setStatusTip(tr("Create a new file"));
- connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
+ connect(newAct, SIGNAL(triggered()), this, SLOT(slotNew()));
openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
openAct->setShortcuts(QKeySequence::Open);
openAct->setStatusTip(tr("Open an existing file"));
- connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
+ connect(openAct, SIGNAL(triggered()), this, SLOT(slotOpen()));
saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this);
saveAct->setShortcuts(QKeySequence::Save);
saveAct->setStatusTip(tr("Save the document to disk"));
- connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
+ connect(saveAct, SIGNAL(triggered()), this, SLOT(slotSave()));
saveAsAct = new QAction(tr("Save &As..."), this);
saveAsAct->setShortcuts(QKeySequence::SaveAs);
saveAsAct->setStatusTip(tr("Save the document under a new name"));
- connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
-
-//! [0]
+ connect(saveAsAct, SIGNAL(triggered()), this, SLOT(slotSaveAs()));
exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
-//! [0]
-
cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);
cutAct->setShortcuts(QKeySequence::Cut);
- cutAct->setStatusTip(tr("Cut the current selection's contents to the "
- "clipboard"));
- connect(cutAct, SIGNAL(triggered()), this, SLOT(cut()));
+ cutAct->setStatusTip(tr("Cut the current selection's contents to the ""clipboard"));
+ connect(cutAct, SIGNAL(triggered()), this, SLOT(slotCut()));
copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this);
copyAct->setShortcuts(QKeySequence::Copy);
copyAct->setStatusTip(tr("Copy the current selection's contents to the "
"clipboard"));
- connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));
+ connect(copyAct, SIGNAL(triggered()), this, SLOT(slotCopy()));
pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this);
pasteAct->setShortcuts(QKeySequence::Paste);
pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
"selection"));
- connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste()));
+ connect(pasteAct, SIGNAL(triggered()), this, SLOT(slotPaste()));
closeAct = new QAction(tr("Cl&ose"), this);
closeAct->setStatusTip(tr("Close the active window"));
- connect(closeAct, SIGNAL(triggered()),
- mdiArea, SLOT(closeActiveSubWindow()));
+ connect(closeAct, SIGNAL(triggered()),mdiArea, SLOT(closeActiveSubWindow()));
closeAllAct = new QAction(tr("Close &All"), this);
closeAllAct->setStatusTip(tr("Close all the windows"));
- connect(closeAllAct, SIGNAL(triggered()),
- mdiArea, SLOT(closeAllSubWindows()));
+ connect(closeAllAct, SIGNAL(triggered()),mdiArea, SLOT(closeAllSubWindows()));
tileAct = new QAction(tr("&Tile"), this);
tileAct->setStatusTip(tr("Tile the windows"));
nextAct = new QAction(tr("Ne&xt"), this);
nextAct->setShortcuts(QKeySequence::NextChild);
nextAct->setStatusTip(tr("Move the focus to the next window"));
- connect(nextAct, SIGNAL(triggered()),
- mdiArea, SLOT(activateNextSubWindow()));
+ connect(nextAct, SIGNAL(triggered()),mdiArea, SLOT(activateNextSubWindow()));
previousAct = new QAction(tr("Pre&vious"), this);
previousAct->setShortcuts(QKeySequence::PreviousChild);
- previousAct->setStatusTip(tr("Move the focus to the previous "
- "window"));
- connect(previousAct, SIGNAL(triggered()),
- mdiArea, SLOT(activatePreviousSubWindow()));
+ previousAct->setStatusTip(tr("Move the focus to the previous window"));
+ connect(previousAct, SIGNAL(triggered()),mdiArea, SLOT(activatePreviousSubWindow()));
separatorAct = new QAction(this);
separatorAct->setSeparator(true);
aboutAct = new QAction(tr("&About"), this);
aboutAct->setStatusTip(tr("Show the application's About box"));
- connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
+ connect(aboutAct, SIGNAL(triggered()), this, SLOT(slotAbout()));
aboutQtAct = new QAction(tr("About &Qt"), this);
aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
settingsAct = new QAction(tr("Settings"), this);
settingsAct->setStatusTip(tr("Show Graphviz Settings"));
- connect(settingsAct, SIGNAL(triggered()), this, SLOT(settings()));
+ connect(settingsAct, SIGNAL(triggered()), this, SLOT(slotSettings()));
}
-void MainWindow::createMenus()
+void CMainWindow::menus()
{
- fileMenu = menuBar()->addMenu(tr("&File"));
- fileMenu->addAction(newAct);
- fileMenu->addAction(openAct);
- fileMenu->addAction(saveAct);
- fileMenu->addAction(saveAsAct);
- fileMenu->addSeparator();
- QAction *action = fileMenu->addAction(tr("Switch layout direction"));
- connect(action, SIGNAL(triggered()), this, SLOT(switchLayoutDirection()));
- fileMenu->addAction(exitAct);
-
- editMenu = menuBar()->addMenu(tr("&Edit"));
- editMenu->addAction(cutAct);
- editMenu->addAction(copyAct);
- editMenu->addAction(pasteAct);
-
- graphMenu = menuBar()->addMenu (tr("&Graph"));
- graphMenu->addAction(settingsAct);
- graphMenu->addAction(layoutAct);
-
- windowMenu = menuBar()->addMenu(tr("&Window"));
- updateWindowMenu();
- connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu()));
+ mFile = menuBar()->addMenu(tr("&File"));
+ mEdit = menuBar()->addMenu(tr("&Edit"));
+ mWindow = menuBar()->addMenu(tr("&Window"));
+ mHelp = menuBar()->addMenu(tr("&Help"));
- menuBar()->addSeparator();
- helpMenu = menuBar()->addMenu(tr("&Help"));
- helpMenu->addAction(aboutAct);
- helpMenu->addAction(aboutQtAct);
-}
+ mFile->addAction(newAct);
+ mFile->addAction(openAct);
+ mFile->addAction(saveAct);
+ mFile->addAction(saveAsAct);
+ mFile->addSeparator();
-void MainWindow::createToolBars()
-{
- fileToolBar = addToolBar(tr("File"));
- fileToolBar->addAction(newAct);
- fileToolBar->addAction(openAct);
- fileToolBar->addAction(saveAct);
+ mFile->addAction(exitAct);
- editToolBar = addToolBar(tr("Edit"));
- editToolBar->addAction(cutAct);
- editToolBar->addAction(copyAct);
- editToolBar->addAction(pasteAct);
+ mEdit->addAction(cutAct);
+ mEdit->addAction(copyAct);
+ mEdit->addAction(pasteAct);
- graphToolBar = addToolBar(tr("Graph"));
- graphToolBar->addAction(settingsAct);
- graphToolBar->addAction(layoutAct);
+ mGraph = menuBar()->addMenu (tr("&Graph"));
+ mGraph->addAction(settingsAct);
+ mGraph->addAction(layoutAct);
+ mGraph->addSeparator();
+ loadPlugins();
+ updateWindowMenu();
+ connect(mWindow, SIGNAL(aboutToShow()), this, SLOT(slotRefreshMenus()));
+ mHelp->addAction(aboutAct);
+ mHelp->addAction(aboutQtAct);
}
-void MainWindow::createStatusBar()
+void CMainWindow::toolBars()
{
- statusBar()->showMessage(tr("Ready"));
+ tbFile = addToolBar(tr("File"));
+ tbFile->addAction(newAct);
+ tbFile->addAction(openAct);
+ tbFile->addAction(saveAct);
+
+ tbEdit = addToolBar(tr("Edit"));
+ tbEdit->addAction(cutAct);
+ tbEdit->addAction(copyAct);
+ tbEdit->addAction(pasteAct);
+
+ tbGraph = addToolBar(tr("Graph"));
+ tbGraph->addAction(settingsAct);
+ tbGraph->addAction(layoutAct);
+
}
-void MainWindow::readSettings()
+
+void CMainWindow::readSettings()
{
QSettings settings("Trolltech", "MDI Example");
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
resize(size);
}
-void MainWindow::writeSettings()
+void CMainWindow::writeSettings()
{
QSettings settings("Trolltech", "MDI Example");
settings.setValue("pos", pos());
settings.setValue("size", size());
}
-MdiChild *MainWindow::activeMdiChild()
+MdiChild *CMainWindow::activeMdiChild()
{
if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow())
{
return 0;
}
-QMdiSubWindow *MainWindow::findMdiChild(const QString &fileName)
+QMdiSubWindow *CMainWindow::findMdiChild(const QString &fileName)
{
QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath();
return 0;
}
-void MainWindow::switchLayoutDirection()
-{
- if (layoutDirection() == Qt::LeftToRight)
- qApp->setLayoutDirection(Qt::RightToLeft);
- else
- qApp->setLayoutDirection(Qt::LeftToRight);
-}
-
-void MainWindow::setActiveSubWindow(QWidget *window)
+void CMainWindow::setActiveSubWindow(QWidget *window)
{
if (!window)
return;
mdiArea->setActiveSubWindow(qobject_cast<QMdiSubWindow *>(window));
}
+void CMainWindow::loadPlugins()
+{
+
+}
\ No newline at end of file