17 #include <QtSvg/QtSvg>
19 #include <QtGui/QToolBar>
20 #include <QtGui/QPrinter>
21 #include <QtGui/QPixmap>
22 #include <QtGui/QPicture>
23 #include <QtSvg/QSvgGenerator>
36 #include <QtCore/QtDebug>
40 #include <qwt_scale_engine.h>
48 virtual QFont
font(
const QFont &f, Item,
int)
const
51 f2.setPointSize((
int)(f.pointSize() * 0.75));
61 mpMainWindow(pMainWindow),
74 this->resize(640, 480);
75 this->setWindowTitle((
"COPASI Plot: " + ptrSpec->
getTitle()).c_str());
99 QMenu *fileMenu = menuBar()->addMenu(
"&File");
103 fileMenu->addSeparator();
106 QMenu *viewMenu = menuBar()->addMenu(
"&View");
109 viewMenu->addSeparator();
112 viewMenu->addSeparator();
135 mpaPrint =
new QAction(
"Print",
this);
136 mpaPrint ->setToolTip(
"Print Plot");
137 mpaPrint -> setShortcut(Qt::CTRL + Qt::Key_P);
146 mpaSaveData ->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_S);
151 mpaZoomOut ->setShortcut(Qt::CTRL + Qt::Key_0);
156 mpaShowAll ->setShortcut(Qt::CTRL + Qt::Key_A);
161 mpaHideAll ->setShortcut(Qt::CTRL + Qt::Key_D);
173 QToolBar * plotTools = addToolBar(
"plot operations");
180 plotTools->addSeparator();
184 plotTools->addSeparator();
189 plotTools->addSeparator();
195 setUnifiedTitleAndToolBarOnMac(
true);
201 this->setWindowTitle((
"COPASI Plot: " + ptrSpec->
getTitle()).c_str());
222 mpPlot->setAxisScaleEngine(QwtPlot::xBottom,
new QwtLog10ScaleEngine());
226 mpPlot->setAxisScaleEngine(QwtPlot::xBottom,
new QwtLinearScaleEngine());
229 mpPlot->setAxisAutoScale(QwtPlot::xBottom);
242 mpPlot->setAxisScaleEngine(QwtPlot::yLeft,
new QwtLog10ScaleEngine());
246 mpPlot->setAxisScaleEngine(QwtPlot::yLeft,
new QwtLinearScaleEngine());
249 mpPlot->setAxisAutoScale(QwtPlot::yLeft);
277 rect.setSize(this->size());
279 if (fileName.endsWith(
".png"))
281 QPixmap pixmap(rect.width(), rect.height());
283 QPainter painter(&pixmap);
284 painter.begin(&pixmap);
288 pixmap.save(fileName,
"PNG");
290 else if (fileName.endsWith(
".svg"))
292 QSvgGenerator generator;
293 generator.setFileName(fileName);
294 QPainter painter(&generator);
295 painter.begin(&generator);
299 else if (fileName.endsWith(
".pdf"))
302 printer.setOutputFileName(fileName);
303 printer.setOutputFormat(QPrinter::PdfFormat);
304 QPainter painter(&printer);
305 painter.begin(&printer);
315 C_INT32 Answer = QMessageBox::No;
316 QString fileName, extensionName;
318 while (Answer == QMessageBox::No)
327 "untitled.png",
"PDF Files (*.pdf);;PNG Files (*.png);;SVG Files (*.svg)",
"Save Plot as Image",
new QString);
329 if (fileName.isEmpty())
return;
342 if (Answer == QMessageBox::Cancel)
return;
353 QString docName =
mpPlot->title().text();
355 if (docName.isEmpty())
358 docName = QString::fromLatin1(
"A plot of selected COPASI output");
359 printer.setDocName(docName);
362 printer.setCreator(
"COPASI");
363 printer.setOrientation(QPrinter::Landscape);
365 QPrintDialog dialog(&printer);
373 C_INT32 Answer = QMessageBox::No;
376 while (Answer == QMessageBox::No)
381 if (fileName.isNull())
return;
386 if (Answer == QMessageBox::Cancel)
return;
389 bool success =
false;
393 QCursor oldCursor = cursor();
394 setCursor(Qt::WaitCursor);
396 setCursor(oldCursor);
401 std::string s =
"Could not save data to ";
void removeFromMainWindow(CopasiUI3Window *window=NULL)
void slotSaveData()
Save data into a file.
virtual void separate(const Activity &activity)
virtual const std::set< const CCopasiObject * > & getObjects() const
virtual void separate(const Activity &activity)
PlotWindow(COutputHandlerPlot *pHandler, const CPlotSpecification *ptrSpec, CopasiUI3Window *pMainWindow)
void setCurvesVisibility(const bool &visibility)
virtual void output(const Activity &activity)
virtual void closeEvent(QCloseEvent *closeEvent)
virtual QMenu * getWindowMenu() const
COutputHandlerPlot * mpHandler
virtual QFont font(const QFont &f, Item, int) const
virtual bool compile(std::vector< CCopasiContainer * > listOfContainer, const CCopasiDataModel *pDataModel)
C_INT32 checkSelection(const QString &file)
static const QIcon & icon(const IconID &id)
virtual void saveToFile(const QString &fileName) const
virtual bool compile(std::vector< CCopasiContainer * > listOfContainer, const CCopasiDataModel *pDataModel)
std::set< const CCopasiObject * > mObjects
static StandardButton critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons=Ok, StandardButton defaultButton=NoButton)
CopasiUI3Window * mpMainWindow
bool initFromSpec(const CPlotSpecification *plotspec)
virtual const std::set< const CCopasiObject * > & getObjects() const
bool initFromSpec(const CPlotSpecification *ptrSpec)
bool saveData(const std::string &filename)
void addToMainWindow(CopasiUI3Window *window=NULL)
const std::string & getTitle() const
void slotZoomOut()
Zoom out.
virtual void output(const Activity &activity)
CopasiPlot * getPlot() const
static QString getSaveFileName(QWidget *parent=0, const char *name=0, const QString &startWith=QString::null, const QString &filter=QString::null, const QString &caption=QString::null, QString *pSelectedFilter=NULL, QFileDialog::Options options=0)
virtual void removeInterface(COutputInterface *pInterface)
void removeWindow(QMainWindow *pWindow)