#include <qfile.h>
#include "mdichild.h"
#include "string.h"
+#include "mainwindow.h"
#define WIDGET(t,f) ((t*)findChild<t *>(#f))
typedef struct {
if(sl[id].contains("E"))
cbNameE->addItem(attrName);
}
- printf ("%s\n",sl[id].constData());
};
}
}
connect(WIDGET(QPushButton,btnCancel),SIGNAL(clicked()),this,SLOT(cancelSlot()));
connect(WIDGET(QPushButton,pbOut),SIGNAL(clicked()),this,SLOT(outputSlot()));
connect(WIDGET(QComboBox,cbScope),SIGNAL(currentIndexChanged(int)),this,SLOT(scopeChangedSlot(int)));
+ scopeChangedSlot(0);
loadAttrs("c:/graphviz-ms/bin/attrs.txt",WIDGET(QComboBox,cbNameG),WIDGET(QComboBox,cbNameN),WIDGET(QComboBox,cbNameE));
_fileName=stripFileExtension(_fileName);
_fileName=_fileName+"."+WIDGET(QComboBox,cbExtension)->currentText();
int rv=gvRenderFilename(gvc,graph,(char*)WIDGET(QComboBox,cbExtension)->currentText().toUtf8().constData(),(char*)_fileName.toUtf8().constData());
- this->getActiveWindow()->loadPreview(_fileName);
if(rv)
- this->getActiveWindow()->loadPreview(_fileName);
- return rv;
+ return false;
+
+ if(getActiveWindow()->previewFrm)
+ {
+ getActiveWindow()->parentFrm->mdiArea->removeSubWindow(getActiveWindow()->previewFrm->subWindowRef);
+ delete getActiveWindow()->previewFrm;
+ getActiveWindow()->previewFrm=NULL;
+
+ }
+ this->getActiveWindow()->loadPreview(_fileName);
+ return true;
}
return false;
#include "imageviewer.h"
+#include "mdichild.h"
setCentralWidget(scrollArea);
createActions();
-// createMenus();
+ createMenus();
setWindowTitle(tr(""));
resize(800, 600);
if (!fileName.isEmpty()) {
QImage image(fileName);
if (image.isNull()) {
- QMessageBox::information(this, tr("Image Viewer"),
- tr("Cannot load %1.").arg(fileName));
+ QMessageBox::information(this, tr("GVEdit"),
+ tr("Image Format of %1 is not supported.").arg(fileName));
return;
}
-//! [2] //! [3]
imageLabel->setPixmap(QPixmap::fromImage(image));
-//! [3] //! [4]
scaleFactor = 1.0;
-
- printAct->setEnabled(true);
fitToWindowAct->setEnabled(true);
updateActions();
imageLabel->adjustSize();
}
}
-//! [4]
-
-//! [5]
void ImageViewer::print()
-//! [5] //! [6]
{
Q_ASSERT(imageLabel->pixmap());
#ifndef QT_NO_PRINTER
}
#endif
}
-//! [8]
-
-//! [9]
void ImageViewer::zoomIn()
-//! [9] //! [10]
{
scaleImage(1.25);
}
scaleImage(0.8);
}
-//! [10] //! [11]
void ImageViewer::normalSize()
-//! [11] //! [12]
{
imageLabel->adjustSize();
scaleFactor = 1.0;
}
-//! [12]
-
-//! [13]
void ImageViewer::fitToWindow()
-//! [13] //! [14]
{
bool fitToWindow = fitToWindowAct->isChecked();
scrollArea->setWidgetResizable(fitToWindow);
}
updateActions();
}
-//! [14]
-
-
-//! [15]
void ImageViewer::about()
-//! [15] //! [16]
{
QMessageBox::about(this, tr("About Image Viewer"),
tr("<p>The <b>Image Viewer</b> example shows how to combine QLabel "
"zooming and scaling features. </p><p>In addition the example "
"shows how to use QPainter to print an image.</p>"));
}
-//! [16]
-
-//! [17]
void ImageViewer::createActions()
-//! [17] //! [18]
{
openAct = new QAction(tr("&Open..."), this);
openAct->setShortcut(tr("Ctrl+O"));
aboutQtAct = new QAction(tr("About &Qt"), this);
connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
}
-//! [18]
-
-//! [19]
void ImageViewer::createMenus()
-//! [19] //! [20]
{
- /*
- fileMenu = new QMenu(tr("&File"), this);
+
+/* fileMenu = new QMenu(tr("&File"), this);
fileMenu->addAction(openAct);
fileMenu->addAction(printAct);
fileMenu->addSeparator();
- fileMenu->addAction(exitAct);
+ fileMenu->addAction(exitAct);*/
viewMenu = new QMenu(tr("&View"), this);
viewMenu->addAction(zoomInAct);
viewMenu->addSeparator();
viewMenu->addAction(fitToWindowAct);
- helpMenu = new QMenu(tr("&Help"), this);
+/* helpMenu = new QMenu(tr("&Help"), this);
helpMenu->addAction(aboutAct);
- helpMenu->addAction(aboutQtAct);
+ helpMenu->addAction(aboutQtAct);*/
- menuBar()->addMenu(fileMenu);
+// menuBar()->addMenu(fileMenu);
menuBar()->addMenu(viewMenu);
- menuBar()->addMenu(helpMenu);
- */
+ //menuBar()->addMenu(helpMenu);
+
}
-//! [20]
-
-//! [21]
void ImageViewer::updateActions()
-//! [21] //! [22]
{
zoomInAct->setEnabled(!fitToWindowAct->isChecked());
zoomOutAct->setEnabled(!fitToWindowAct->isChecked());
normalSizeAct->setEnabled(!fitToWindowAct->isChecked());
}
-//! [22]
-
-//! [23]
void ImageViewer::scaleImage(double factor)
-//! [23] //! [24]
{
Q_ASSERT(imageLabel->pixmap());
scaleFactor *= factor;
zoomInAct->setEnabled(scaleFactor < 3.0);
zoomOutAct->setEnabled(scaleFactor > 0.333);
}
-//! [24]
-
-//! [25]
void ImageViewer::adjustScrollBar(QScrollBar *scrollBar, double factor)
-//! [25] //! [26]
{
scrollBar->setValue(int(factor * scrollBar->value()
+ ((factor - 1) * scrollBar->pageStep()/2)));
}
-//! [26]
+void ImageViewer::closeEvent(QCloseEvent *event)
+{
+ this->graphWindow->previewFrm=NULL;
+ event->accept();
+
+}
public:
ImageViewer();
MdiChild* graphWindow;
+ QMdiSubWindow* subWindowRef; //reference to its wrapping sub window
public slots:
void open(QString fileName);
void print();
QAction *aboutAct;
QAction *aboutQtAct;
-/* QMenu *fileMenu;
+// QMenu *fileMenu;
QMenu *viewMenu;
- QMenu *helpMenu;*/
+// QMenu *helpMenu;
+ protected:
+ void closeEvent(QCloseEvent *event);
+
};
//! [0]
#include "windows.h"
#endif
#include <QApplication>
-
#include "mainwindow.h"
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#else
+#include "compat_getopt.h"
+#endif
+
+
#ifdef WIN32_DLL
__declspec(dllimport) boolean MemTest;
/*gvc.lib cgraph.lib*/
#pragma comment( lib, "cgraph.lib" )
#else
#pragma comment( lib, "graph.lib" )
+ #pragma comment( lib, "ingraphs.lib" )
+
#endif
#pragma comment( lib, "gvc.lib" )
#endif
static char* cmd;
-extern int Verbose;
+int Verbose;
static char *useString =
"Usage: gvedit [-v?] <files>\n\
*************************************************************************/
#include <QtGui>
+#include <qframe>
#include "mainwindow.h"
#include "mdichild.h"
#include "csettings.h"
globTextEdit=textEdit;
agseterrf(errorPipe);
verticalLayout->addWidget(textEdit);
-
+ QFrame *fr=new QFrame(centralwidget);
+ verticalLayout->addWidget(fr);
verticalLayout_2->addLayout(verticalLayout);
-
+ QPushButton* logNewBtn=new QPushButton(QIcon(":/images/new.png"),"",fr);
+ QPushButton* logSaveBtn=new QPushButton(QIcon(":/images/save.png"),"",fr);
+ QHBoxLayout* consoleLayout = new QHBoxLayout();
+ consoleLayout->addWidget(logNewBtn);
+ connect(logNewBtn,SIGNAL(clicked()),this,SLOT(slotNewLog()));
+ connect(logSaveBtn,SIGNAL(clicked()),this,SLOT(slotSaveLog()));
+ consoleLayout->addWidget(logSaveBtn);
+ consoleLayout->addStretch();
+ fr->setLayout(consoleLayout);
setCentralWidget(centralwidget);
void CMainWindow::slotAbout()
{
- QMessageBox::about(this, tr("About MDI"),
- tr("The <b>MDI</b> example demonstrates how to write multiple "
- "document interface applications using Qt."));
+ QMessageBox::about(this, tr("About GVEdit\n"),
+ tr("<b>GVEdit</b> Graph File Editor For Graphviz\n"
+ "Version:1.01"));
}
frmSettings->showSettings(activeMdiChild());
+}
+void CMainWindow::slotNewLog()
+{
+ globTextEdit->clear();
+}
+void CMainWindow::slotSaveLog()
+{
+
+ if(globTextEdit->toPlainText().trimmed().length()==0)
+ {
+ QMessageBox::warning(this, tr("GvEdit"),tr("Nothing to save!"),QMessageBox::Ok,QMessageBox::Ok);
+ return;
+
+
+ }
+
+ QString fileName = QFileDialog::getSaveFileName(this, tr("Open File"),
+ "/",
+ tr("Text File(*.*)"));
+ if (!fileName.isEmpty())
+ {
+
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly | QFile::Text)) {
+ QMessageBox::warning(this, tr("MDI"),
+ tr("Cannot write file %1:\n%2.")
+ .arg(fileName)
+ .arg(file.errorString()));
+ return;
+ }
+
+ QTextStream out(&file);
+ out << globTextEdit->toPlainText();
+ return;
+ }
+
+
}
void CMainWindow::updateFileMenu()
aboutAct->setStatusTip(tr("Show the application's About box"));
connect(aboutAct, SIGNAL(triggered()), this, SLOT(slotAbout()));
- aboutQtAct = new QAction(tr("About &Qt"), this);
- aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
- connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
settingsAct = new QAction(QIcon(":/images/settings.png"),tr("Settings"), this);
settingsAct->setStatusTip(tr("Show Graphviz Settings"));
connect(settingsAct, SIGNAL(triggered()), this, SLOT(slotSettings()));
+ settingsAct->setShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F5));
+
layoutAct = new QAction(QIcon(":/images/run.png"),tr("Layout"), this);
layoutAct->setStatusTip(tr("Layout the active graph"));
connect(layoutAct, SIGNAL(triggered()), this, SLOT(slotRun()));
+ layoutAct->setShortcut(QKeySequence(Qt::Key_F5));
+
}
mFile = menuBar()->addMenu(tr("&File"));
mEdit = menuBar()->addMenu(tr("&Edit"));
mWindow = menuBar()->addMenu(tr("&Window"));
+ mGraph = menuBar()->addMenu (tr("&Graph"));
mHelp = menuBar()->addMenu(tr("&Help"));
mEdit->addAction(copyAct);
mEdit->addAction(pasteAct);
- mGraph = menuBar()->addMenu (tr("&Graph"));
mGraph->addAction(settingsAct);
mGraph->addAction(layoutAct);
mGraph->addSeparator();
updateWindowMenu();
connect(mWindow, SIGNAL(aboutToShow()), this, SLOT(slotRefreshMenus()));
mHelp->addAction(aboutAct);
- mHelp->addAction(aboutQtAct);
}
void CMainWindow::toolBars()
{
}
+
CMainWindow();
QMdiArea *mdiArea;
void addFile (QString fileName);
-
private slots:
void slotSettings();
void slotRun();
void slotPaste();
void slotAbout();
void slotRefreshMenus();
+ void slotNewLog();
+ void slotSaveLog();
MdiChild *createMdiChild();
void activateChild(QWidget *window);
protected:
QAction *previousAct;
QAction *separatorAct;
QAction *aboutAct;
- QAction *aboutQtAct;
QAction *settingsAct;
QAction *layoutAct;
{
previewFrm=new ImageViewer();
previewFrm->graphWindow=this;
- parentFrm->mdiArea->addSubWindow(previewFrm);
+ QMdiSubWindow* s=parentFrm->mdiArea->addSubWindow(previewFrm);
+
+ s->resize(600,400);
+ s->move(parentFrm->mdiArea->subWindowList().count()*5,parentFrm->mdiArea->subWindowList().count()*5);
+ previewFrm->subWindowRef=s;
+
}
previewFrm->open(fileName);
previewFrm->show();
<rect>
<x>0</x>
<y>0</y>
- <width>403</width>
+ <width>404</width>
<height>512</height>
</rect>
</property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>404</width>
+ <height>512</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>404</width>
+ <height>512</height>
+ </size>
+ </property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<rect>
<x>2</x>
<y>0</y>
- <width>436</width>
+ <width>401</width>
<height>62</height>
</rect>
</property>
/********************************************************************************
** Form generated from reading UI file 'settings.ui'
**
-** Created: Tue Mar 1 14:00:08 2011
+** Created: Thu Mar 3 11:30:17 2011
** by: Qt User Interface Compiler version 4.7.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
{
if (Dialog->objectName().isEmpty())
Dialog->setObjectName(QString::fromUtf8("Dialog"));
- Dialog->resize(403, 512);
+ Dialog->resize(404, 512);
+ QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ sizePolicy.setHorizontalStretch(0);
+ sizePolicy.setVerticalStretch(0);
+ sizePolicy.setHeightForWidth(Dialog->sizePolicy().hasHeightForWidth());
+ Dialog->setSizePolicy(sizePolicy);
+ Dialog->setMinimumSize(QSize(404, 512));
+ Dialog->setMaximumSize(QSize(404, 512));
actionCSettingsOK = new QAction(Dialog);
actionCSettingsOK->setObjectName(QString::fromUtf8("actionCSettingsOK"));
frame = new QFrame(Dialog);
frame_2->setFrameShadow(QFrame::Raised);
layoutWidget1 = new QWidget(frame_2);
layoutWidget1->setObjectName(QString::fromUtf8("layoutWidget1"));
- layoutWidget1->setGeometry(QRect(2, 0, 436, 62));
+ layoutWidget1->setGeometry(QRect(2, 0, 401, 62));
horizontalLayout_7 = new QHBoxLayout(layoutWidget1);
horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
horizontalLayout_7->setContentsMargins(0, 0, 0, 0);