ApplicationWindow.h

Go to the documentation of this file.
00001 /***************************************************************************
00002     File                 : ApplicationWindow.h
00003     Project              : QtiPlot
00004     --------------------------------------------------------------------
00005     Copyright            : (C) 2004 - 2010 by Ion Vasilief,
00006                            (C) 2006 - june 2007 Tilman Hoener zu Siederdissen, Knut Franke
00007     Email (use @ for *)  : ion_vasilief*yahoo.fr
00008     Description          : QtiPlot's main window
00009 
00010  ***************************************************************************/
00011 
00012 /***************************************************************************
00013  *                                                                         *
00014  *  This program is free software; you can redistribute it and/or modify   *
00015  *  it under the terms of the GNU General Public License as published by   *
00016  *  the Free Software Foundation; either version 2 of the License, or      *
00017  *  (at your option) any later version.                                    *
00018  *                                                                         *
00019  *  This program is distributed in the hope that it will be useful,        *
00020  *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
00021  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
00022  *  GNU General Public License for more details.                           *
00023  *                                                                         *
00024  *   You should have received a copy of the GNU General Public License     *
00025  *   along with this program; if not, write to the Free Software           *
00026  *   Foundation, Inc., 51 Franklin Street, Fifth Floor,                    *
00027  *   Boston, MA  02110-1301  USA                                           *
00028  *                                                                         *
00029  ***************************************************************************/
00030 #ifndef APPLICATION_H
00031 #define APPLICATION_H
00032 
00033 #include <QMainWindow>
00034 #include <q3listview.h>
00035 #include <QHttp>
00036 #include <QFile>
00037 #include <QSplitter>
00038 #include <QDesktopServices>
00039 #include <QBuffer>
00040 #include <QLineEdit>
00041 #include <QMessageBox>
00042 
00043 #include <MultiLayer.h>
00044 #include <Graph.h>
00045 #include <Table.h>
00046 #include <ScriptingEnv.h>
00047 #include <Script.h>
00048 #include <TranslateCurveTool.h>
00049 
00050 #include <qwt_color_map.h>
00051 
00052 #ifdef BROWSER_PLUGIN
00053 #include <qtbrowserplugin.h>
00054 #endif
00055 
00056 #ifdef QAXSERVER
00057 #include <ActiveQt/QAxBindable>
00058 #include <ActiveQt/QAxFactory>
00059 #include <qt_windows.h>
00060 #endif
00061 
00062 #ifdef HAS_EXCEL
00063     #include <QAxObject>
00064 #endif
00065 
00066 class QPixmap;
00067 class QCloseEvent;
00068 class QDropEvent;
00069 class QTimerEvent;
00070 class QDragEnterEvent;
00071 class QTranslator;
00072 class QDockWidget;
00073 class QAction;
00074 class QActionGroup;
00075 class QTranslator;
00076 class QToolButton;
00077 class QShortcut;
00078 class QMenu;
00079 class QToolBar;
00080 class QAssistantClient;
00081 class QLocale;
00082 class QMdiArea;
00083 class QUndoView;
00084 class QCompleter;
00085 
00086 class Matrix;
00087 class Table;
00088 class ScalePicker;
00089 class Graph3D;
00090 class Note;
00091 class FunctionDialog;
00092 class Folder;
00093 class FolderListItem;
00094 class FolderListView;
00095 class ScriptWindow;
00096 class Plot3DDialog;
00097 class TableStatistics;
00098 class CurveRangeDialog;
00099 class LegendWidget;
00100 class ArrowMarker;
00101 class TextEditor;
00102 class AssociationsDialog;
00103 class ScriptEdit;
00104 class ExportDialog;
00105 
00135 class ApplicationWindow: public QMainWindow, public scripted
00136 #ifdef BROWSER_PLUGIN
00137     , public QtNPBindable
00138 #endif
00139 #ifdef QAXSERVER
00140     , public QAxBindable
00141 #endif
00142 {
00143     Q_OBJECT
00144 
00145 #ifdef BROWSER_PLUGIN
00146     Q_CLASSINFO("ClassID", "{2e5b2715-46b2-4831-ba9b-6a3b195d5ec8}")
00147     Q_CLASSINFO("InterfaceID", "{94581136-3c0c-46cc-97a1-066061356d43}")
00148     Q_CLASSINFO("EventsID", "{8c191b77-1894-45c7-9d6b-201dede95410}")
00149 
00150     Q_CLASSINFO("MIME", "application/x-qtiplot")
00151 #endif
00152 
00153 public:
00154     ApplicationWindow(bool factorySettings = false);
00155     ApplicationWindow(const QStringList& l);
00156     ~ApplicationWindow();
00157 
00158     enum ShowWindowsPolicy{HideAll, ActiveFolder, SubFolders};
00159     enum WindowType{NoWindow, TableWindow, MatrixWindow, MultiLayerWindow, NoteWindow, Plot3DWindow};
00160     enum MatrixToTableConversion{Direct, XYZ, YXZ};
00161     enum EndLineChar{LF, CRLF, CR};
00162     enum Analysis{NoAnalysis, Integrate, Diff, FitLinear, FitGauss, FitLorentz, FitSigmoidal, FitSlope};
00163     enum LaTeXCompiler{MathTran, Local};
00164 
00165     FolderListView *lv, *folders;
00166     QDockWidget *logWindow;
00167 
00172     QString generateUniqueName(const QString& name, bool increment = true);
00173     void saveFitFunctions(const QStringList& lst);
00174 
00176 
00177     void loadCustomActions();
00178     void reloadCustomActions();
00179     void removeCustomAction(QAction *);
00180     void addCustomAction(QAction *, const QString& parentName, int index = -1);
00181     QList<QAction *> customActionsList(){return d_user_actions;};
00182     QList<QMenu *> customizableMenusList();
00183 
00184     void reloadCustomMenus();
00185     QMenu* addCustomMenu(const QString& title, const QString& parentName);
00186     void removeCustomMenu(const QString& title);
00187     QList<QMenu *> customMenusList(){return d_user_menus;};
00189 
00190     QList<QMenu *> menusList();
00191     QList<QToolBar *> toolBarsList();
00192 
00193     MdiSubWindow *activeWindow(WindowType type = NoWindow);
00194     void setActiveWindow(MdiSubWindow *w){d_active_window = w;};
00195     QMdiArea* workspace(){return d_workspace;};
00196 
00197     int matrixUndoStackSize(){return d_matrix_undo_stack_size;};
00198     void setMatrixUndoStackSize(int size);
00199 
00200     QString endOfLine();
00201     static QString guessEndOfLine(const QString& sample);
00202     bool autoUpdateTableValues(){return d_auto_update_table_values;};
00203     void setAutoUpdateTableValues(bool on = true);
00204 
00205     QCompleter* completer(){return d_completer;};
00206     void enableCompletion(bool on = true);
00207     void addWindowsListToCompleter();
00208 
00209     QLocale clipboardLocale(){return d_clipboard_locale;};
00210     void setClipboardLocale(const QLocale& locale){d_clipboard_locale = locale;};
00211 
00212     QTextEdit *resultsLog(){return results;};
00213 #ifdef SCRIPTING_CONSOLE
00214     QTextEdit *scriptingConsole(){return console;};
00215 #endif
00216 
00217     static QString imageFilter();
00218     static QString getFileName(QWidget *parent = 0, const QString & caption = QString(),
00219         const QString & dir = QString(), const QString & filter = QString(),
00220         QString * selectedFilter = 0, bool save = true, bool confirmOverwrite = true);
00221 
00222     static void memoryAllocationError();
00223     QColor readColorFromProject(const QString& name);
00224 
00225     void enableMdiArea(bool on = true);
00226     bool isMdiAreaEnabled(){return d_mdi_windows_area;};
00227 
00228     void displayInfo(const QString& text){info->setText(text);};
00229     QLineEdit *displayInfoLineEdit(){return info;};
00230 
00231     QList<QColor> indexedColors(){return d_indexed_colors;};
00232     void setIndexedColors(const QList<QColor>& lst){d_indexed_colors = lst;};
00233 
00234     QList<int> indexedSymbols(){return d_symbols_list;};
00235     void setIndexedSymbols(const QList<int>& lst){d_symbols_list = lst;};
00236 
00237     QStringList indexedColorNames(){return d_indexed_color_names;};
00238     void setIndexedColorNames(const QStringList& lst){d_indexed_color_names = lst;};
00239 
00240     void connectScriptEditor(ScriptEdit *);
00241 
00242 public slots:
00244 
00245     void open();
00246     ApplicationWindow* open(const QString& fn, bool factorySettings = false, bool newProject = true);
00247     ApplicationWindow* openProject(const QString& fn, bool factorySettings = false, bool newProject = true);
00248 #ifdef OPJ_IMPORT
00249     ApplicationWindow* importOPJ(const QString& fn, bool factorySettings = false, bool newProject = true);
00250 #endif
00251     void closeProject();
00252 
00260     ApplicationWindow * plotFile(const QString& fn);
00261 
00268     ApplicationWindow * loadScript(const QString& fn, bool execute = false, bool noGui = false);
00269 
00270     QList<MdiSubWindow *> windowsList();
00271     void updateWindowLists(MdiSubWindow *w);
00275     void cascade();
00276 
00277     void saveProjectAs(const QString& fileName = QString(), bool compress = false);
00278     bool saveProject(bool compress = false);
00279     void saveWindowAs(const QString& fileName = QString(), bool compress = false);
00280     bool saveWindow(MdiSubWindow *w, const QString& fileName = QString(), bool compress = false);
00281 
00283     void modifiedProject();
00285     void savedProject();
00287     void modifiedProject(MdiSubWindow *w);
00289 
00291 
00292     void readSettings();
00293     void saveSettings();
00294     void setSaveSettings(bool autoSaving, int min);
00295     void changeAppStyle(const QString& s);
00296     void changeAppFont(const QFont& f);
00297     void updateAppFonts();
00298     void setAppColors(const QColor& wc,const QColor& pc,const QColor& tpc, bool force = false);
00299 
00300     void initWindow();
00302 
00304 
00305 
00306     MultiLayer* newGraph(const QString& caption = tr("Graph"));
00307     MultiLayer* multilayerPlot(int c, int r, int style, const MultiLayer::AlignPolicy& align = MultiLayer::AlignLayers);
00308     MultiLayer* multilayerPlot(Table* w, const QStringList& colList, int style, int startRow = 0, int endRow = -1);
00310     MultiLayer* multilayerPlot(const QString& caption, int layers = 1, int rows = 1, int cols = 1);
00311     MultiLayer* waterfallPlot();
00312     MultiLayer* waterfallPlot(Table *t, const QStringList& list);
00313     void connectMultilayerPlot(MultiLayer *g);
00314     void addLayer();
00315     void addInsetLayer(bool curves = false);
00316     void addInsetCurveLayer();
00317     void deleteLayer();
00318     void extractGraphs();
00319     void extractLayers();
00320 
00322     MultiLayer* plotSpectrogram(Matrix *m, Graph::CurveType type);
00323     MultiLayer* plotGrayScale(Matrix *m = 0);
00324     MultiLayer* plotContour(Matrix *m = 0);
00325     MultiLayer* plotColorMap(Matrix *m = 0);
00326     MultiLayer* plotImage(Matrix *m = 0);
00327     MultiLayer* plotImageProfiles(Matrix *m = 0);
00328 
00330     void autoArrangeLayers();
00331     void initMultilayerPlot(MultiLayer* g, const QString& name);
00332     void plot2VerticalLayers();
00333     void plot2HorizontalLayers();
00334     void plot4Layers();
00335     void plotStackedLayers();
00336     void plotStackedHistograms();
00337 
00338     void plotStackSharedAxisLayers();
00339     void plotVerticalSharedAxisLayers();
00340     void plotHorizontalSharedAxisLayers();
00341     void plotSharedAxesLayers();
00342     void plotCustomLayout(bool sharedAxes = false);
00343     void plotCustomLayoutSharedAxes(){plotCustomLayout(true);};
00345 
00347 
00348     Graph3D* newPlot3D(const QString& title = QString());
00349     Graph3D* plotXYZ(Table* table,const QString& zColName, int type);
00350     Graph3D* addRibbon(const QString& caption, const QString& formula,
00351                         double xl, double xr, double yl, double yr, double zl, double zr);
00353 
00355 
00356     Graph3D* plotSurface(const QString& formula, double xl, double xr,
00357                        double yl, double yr, double zl, double zr, int columns = 40, int rows = 30);
00358     Graph3D* plotParametricSurface(const QString& xFormula, const QString& yFormula,
00359                         const QString& zFormula, double ul, double ur, double vl, double vr,
00360                         int columns, int rows, bool uPeriodic, bool vPeriodic);
00361 
00362     void connectSurfacePlot(Graph3D *plot);
00363     void newSurfacePlot();
00364     void editSurfacePlot();
00365     void remove3DMatrixPlots(Matrix *m);
00366     void updateMatrixPlots(Matrix *);
00367     void add3DData();
00368     void change3DData();
00369     void change3DData(const QString& colName);
00370     void change3DMatrix();
00371     void change3DMatrix(const QString& matrix_name);
00372     void insertNew3DData(const QString& colName);
00373     void add3DMatrixPlot();
00374     void insert3DMatrixPlot(const QString& matrix_name);
00375 
00376     void plot3DWireframe();
00377     void plot3DHiddenLine();
00378     void plot3DPolygons();
00379     void plot3DWireSurface();
00380 
00381     Graph3D* plot3DMatrix(Matrix *m = 0, int style = 5);
00382 
00383     void plot3DRibbon();
00384     void plot3DScatter();
00385     void plot3DTrajectory();
00386     void plot3DBars();
00388 
00390 
00391     MultiLayer * newFunctionPlot(QStringList &formulas, double start, double end, int points = 100, const QString& var = "x", int type = 0);
00392 
00393     FunctionDialog* functionDialog();
00394     FunctionDialog* showFunctionDialog(Graph * g, int curve);
00395     void addFunctionCurve();
00396     void clearLogInfo();
00397     void updateFunctionLists(int type, QStringList &formulas);
00398     void updateSurfaceFuncList(const QString& s);
00400 
00402 
00403 
00404     Matrix* newMatrix(int rows = 32, int columns = 32);
00406     Matrix* newMatrix(const QString& caption, int r, int c);
00407     Matrix* matrix(const QString& name);
00408     Matrix* convertTableToMatrix();
00409     Matrix* tableToMatrix(Table* t);
00410     Matrix* convertTableToMatrixRegularXYZ();
00411     void showBinMatrixDialog();
00412     void initMatrix(Matrix* m, const QString& caption);
00413     void transposeMatrix();
00414     void invertMatrix();
00415     void matrixDeterminant();
00416     void flipMatrixVertically();
00417     void flipMatrixHorizontally();
00418     void rotateMatrix90();
00419     void rotateMatrixMinus90();
00420     void viewMatrixImage();
00421     void viewMatrixTable();
00422     void exportMatrix(const QString& exportFilter = QString::null);
00423     void setMatrixDefaultScale();
00424     void setMatrixGrayScale();
00425     void setMatrixRainbowScale();
00426     void viewMatrixColumnRow();
00427     void viewMatrixXY();
00428     void matrixDirectFFT();
00429     void matrixInverseFFT();
00431 
00433 
00434 
00435     Table* newTable();
00436 
00437     // getCurrent... functions for python interface
00438     Table* currentTable();
00439     MultiLayer* currentPlot();
00440     Note* currentNote();
00441     Matrix* currentMatrix();
00442 
00444     Table* newTable(const QString& caption,int r, int c);
00445     Table* newTable(int r, int c, const QString& name = QString(),const QString& legend = QString());
00455     Table* newHiddenTable(const QString& name, const QString& label, int r, int c, const QString& text=QString());
00456     Table* table(const QString& name);
00457     Table* convertMatrixToTableDirect();
00458     Table* convertMatrixToTableXYZ();
00459     Table* convertMatrixToTableYXZ();
00460     Table* matrixToTable(Matrix* m, MatrixToTableConversion conversionType = Direct);
00461     QList<MdiSubWindow *> tableList();
00463     bool hasTable();
00465     QStringList tableNames();
00466 
00467     void connectTable(Table* w);
00468     void initTable(Table* w, const QString& caption);
00469     void customTable(Table* w);
00470     Table* importOdfSpreadsheet(const QString& = QString::null, int sheet = -1);
00471 
00472     Table* importExcel(const QString& = QString::null, int sheet = -1);
00473 #ifdef HAS_EXCEL
00474     static bool isExcelInstalled();
00475     Table* importUsingExcel(const QString& = QString::null, int sheet = -1);
00476     void importExcelCharts(QAxObject* ws, const QString& fn = QString::null);
00477     MultiLayer *importExcelChart(QAxObject* chart, const QString& fn = QString::null, const QString& name = QString::null);
00478 #endif
00479 #ifdef XLS_IMPORT
00480     Table* importExcelCrossplatform(const QString& = QString::null, int sheet = -1);
00481     void exportExcel();
00482 #endif
00483 
00484     Table* importWaveFile();
00485     void importASCII();
00486     void importASCII(const QStringList& files, int import_mode, const QString& local_column_separator, int local_ignored_lines, bool local_rename_columns,
00487         bool local_strip_spaces, bool local_simplify_spaces, bool local_import_comments,
00488         QLocale local_separators, const QString& local_comment_string, bool import_read_only, int endLineChar,
00489         const QList<int>& colTypes = QList<int>(), const QStringList& colFormats = QStringList());
00490     void exportAllTables(const QString& dir, const QString& filter, const QString& sep, bool colNames, bool colComments, bool expSelection);
00491 
00493     void recalculateTable();
00494 
00495     TableStatistics *newTableStatistics(Table *base, int type, QList<int>,
00496         const QString &caption=QString::null);
00498 
00500 
00501     void setPreferences(Graph* g);
00502     void setGraphDefaultSettings(bool autoscale,bool scaleFonts,bool resizeLayers,bool antialiasing);
00503     void setArrowDefaultSettings(double lineWidth,  const QColor& c, Qt::PenStyle style,
00504                                 int headLength, int headAngle, bool fillHead);
00505 
00506     void plotL();
00507     void plotP();
00508     void plotLP();
00509     void plotPie();
00510     void plotVerticalBars();
00511     void plotHorizontalBars();
00512     void plotStackBar();
00513     void plotStackColumn();
00514     void plotArea();
00515     void plotVertSteps();
00516     void plotHorSteps();
00517     void plotSpline();
00518     void plotVerticalDropLines();
00519     MultiLayer* plotHistogram();
00520     MultiLayer* plotHistogram(Matrix *m);
00521     void plotVectXYXY();
00522     void plotVectXYAM();
00523     void plotBoxDiagram();
00524     void plotDoubleYAxis();
00525     void zoomRectanglePlot();
00526     QString stemPlot(Table *t = 0, const QString& colName = QString(), int power = 0, int startRow = 0, int endRow = -1);
00527     Note *newStemPlot();
00528 
00530     bool validFor3DPlot(Table *table);
00532     bool validFor2DPlot(Table *table, Graph::CurveType type);
00534     MultiLayer* generate2DGraph(Graph::CurveType type);
00536 
00538 
00539     void intensityTable();
00540     void pixelLineProfile();
00541     void loadImage();
00542     void loadImage(const QString& fn);
00543     Matrix* importImage(const QString& = QString(), bool newWindow = false);
00545 
00547 
00548     void exportLayer();
00549     void exportGraph(const QString& exportFilter = QString::null);
00550     void exportAllGraphs();
00551     void exportPresentationODF();
00552     void exportPDF();
00553     void print();
00554     void printPreview();
00555     void setPrintPreviewOptions(QPrinter *);
00556     void printAllPlots();
00558 
00559     QStringList columnsList(Table::PlotDesignation plotType = Table::All);
00560 
00561     void undo();
00562     void redo();
00563 
00565 
00566     MdiSubWindow* clone(MdiSubWindow* w = 0);
00567     void rename();
00568     void renameWindow();
00569 
00571     void renameWindow(Q3ListViewItem *item, int, const QString &s);
00572 
00574     bool setWindowName(MdiSubWindow *w, const QString &text);
00575 
00576     void maximizeWindow(Q3ListViewItem * lbi = 0);
00577     void maximizeWindow(MdiSubWindow *w);
00578     void minimizeWindow(MdiSubWindow *w = 0);
00579 
00580     void updateWindowStatus(MdiSubWindow* );
00581 
00582     bool hidden(QWidget* window);
00583     void closeActiveWindow();
00584     void closeWindow(MdiSubWindow* window);
00585 
00587     void removeWindowFromLists(MdiSubWindow* w);
00588 
00589     void hideWindow(MdiSubWindow* window);
00590     void hideWindow();
00591     void hideActiveWindow();
00592     void activateWindow();
00593     void activateWindow(MdiSubWindow *);
00595 
00597     static QMessageBox* about(bool dialog = true);
00599     static QString versionString();
00600     void removeCurves(const QString& name);
00601     QStringList dependingPlots(const QString& caption);
00602     QStringList depending3DPlots(Matrix *m);
00603     QStringList multilayerDependencies(QWidget *w);
00604 
00605     void saveAsTemplate(MdiSubWindow* w = 0, const QString& = QString());
00606     void openTemplate();
00607     MdiSubWindow* openTemplate(const QString& fn);
00608 
00609     QString windowGeometryInfo(MdiSubWindow *w);
00610     static void restoreWindowGeometry(ApplicationWindow *app, MdiSubWindow *w, const QString s);
00611     void restoreApplicationGeometry();
00612     void resizeActiveWindow();
00613     void resizeWindow();
00614 
00616 
00617     void setListView(const QString& caption,const QString& view);
00618     void renameListViewItem(const QString& oldName,const QString& newName);
00619     void setListViewDate(const QString& caption,const QString& date);
00620     QString listViewDate(const QString& caption);
00621     void setListViewSize(const QString& caption,const QString& size);
00622     void setListViewLabel(const QString& caption,const QString& label);
00624 
00625     void updateColNames(const QString& oldName, const QString& newName);
00626     void updateTableNames(const QString& oldName, const QString& newName);
00627     void changeMatrixName(const QString& oldName, const QString& newName);
00628     void updateCurves(Table *t, const QString& name);
00629 
00630     void showTable(Table *, const QString& curve);
00631     void showTable(int i);
00632 
00633     void addColToTable();
00634     void cutSelection();
00635     void copySelection();
00636     void copyMarker();
00637     void pasteSelection();
00638     void clearSelection();
00639     void copyActiveLayer();
00640 
00641     void newProject();
00642 
00644 
00645     Matrix* openMatrix(ApplicationWindow* app, const QStringList &flist);
00646     Table* openTable(ApplicationWindow* app, const QStringList &flist);
00647     TableStatistics* openTableStatistics(const QStringList &flist);
00648     Graph* openGraph(ApplicationWindow* app, MultiLayer *plot, const QStringList &list);
00649 
00650     void openRecentProject(int index);
00652 
00654 
00655     void sortSelection();
00656     void sortActiveTable();
00657     void normalizeSelection();
00658     void normalizeActiveTable();
00659     void correlate();
00660     void autoCorrelate();
00661     void convolute();
00662     void deconvolute();
00663     void clearTable();
00664     void goToRow();
00665     void goToColumn();
00666     void moveTableRowUp();
00667     void moveTableRowDown();
00668     void adjustColumnWidth();
00670 
00672 
00673     void graphSelectionChanged(SelectionMoveResizer *);
00674     void lowerActiveEnrichment();
00675     void raiseActiveEnrichment(bool = true);
00676     void newLegend();
00677     void addTimeStamp();
00678     void drawLine();
00679     void drawArrow();
00680     void drawPoints();
00681     void addText();
00682     void addTexFormula();
00683     void addRectangle();
00684     void addEllipse();
00685     void addImage();
00686     void zoomIn();
00687     void zoomOut();
00688     void magnify(int mode = 0);
00689     void setAutoScale();
00690     void showRangeSelectors();
00691     void showCursor();
00692     void showScreenReader();
00693     void pickPointerCursor();
00694     void disableTools();
00695     void pickDataTool( QAction* action );
00696 
00697     void updateLog(const QString& result);
00699 
00701 
00702     void deleteFitTables();
00703     void fitLinear();
00704     void fitSigmoidal();
00705     void fitGauss();
00706     void fitLorentz();
00707     void fitMultiPeak(int profile);
00708     void fitMultiPeakGauss();
00709     void fitMultiPeakLorentz();
00710     void fitSlope();
00712 
00714 
00715     void integrate();
00716     void differentiate();
00717     void analysis(Analysis operation);
00718     void analyzeCurve(Graph *g, Analysis operation, const QString& curveTitle);
00719     void showDataSetDialog(Analysis operation);
00721 
00722     void addErrorBars();
00723     void defineErrorBars(const QString& name, int type, double percent, int direction);
00724     void defineErrorBars(const QString& curveName, const QString& errColumnName, int direction);
00725     void movePoints(bool wholeCurve = false);
00726     void removePoints();
00727 
00729 
00730     void closeEvent( QCloseEvent*);
00731     void timerEvent ( QTimerEvent *e);
00732     void dragEnterEvent( QDragEnterEvent* e );
00733     void dropEvent( QDropEvent* e );
00734     void customEvent( QEvent* e);
00736 
00738 
00739     void showFindDialogue();
00741     void showPlotDialog(int curveKey = -1);
00742     QDialog* showScaleDialog();
00743     QDialog* showPlot3dDialog();
00744     AxesDialog* showScalePageFromAxisDialog(int axisPos);
00745     AxesDialog* showAxisPageFromAxisDialog(int axisPos);
00746     void showAxisDialog();
00747     void showGridDialog();
00748     void showGeneralPlotDialog();
00749     void showResults(bool ok);
00750     void showResults(const QString& s, bool ok=true);
00751     void showEnrichementDialog();
00752     void showLineDialog();
00753     void showTitleDialog();
00754     ExportDialog* showExportASCIIDialog();
00755     void showCurvesDialog();
00756     void showCurveRangeDialog();
00757     CurveRangeDialog* showCurveRangeDialog(Graph *g, int curve);
00758     AssociationsDialog* showPlotAssociations(int curve);
00759 
00760     void showAxisTitleDialog();
00761     void showColumnOptionsDialog();
00762     void showRowsDialog();
00763     void showDeleteRowsDialog();
00764     void showColsDialog();
00765     void showColMenu(int c);
00766     void showColumnValuesDialog();
00767     void showExtractDataDialog();
00768 
00769     void showGraphContextMenu();
00770     void showTableContextMenu(bool selection);
00771     void showWindowContextMenu();
00772     void customWindowTitleBarMenu(MdiSubWindow *w, QMenu *menu);
00773     void showCurveContextMenu(QwtPlotItem *);
00774     void showCurvePlotDialog();
00775     void showCurveWorksheet();
00776     void showCurveWorksheet(Graph *g, int curveIndex);
00777     void showWindowPopupMenu(Q3ListViewItem *it, const QPoint &p, int);
00778 
00780     void showListViewSelectionMenu(const QPoint &p);
00781 
00783     void showListViewPopupMenu(const QPoint &p);
00784 
00785     void showScriptWindow(bool parent = true);
00786     void showMoreWindows();
00787     void showMarkerPopupMenu();
00788     void showHelp();
00789     static void showStandAloneHelp();
00790     void chooseHelpFolder();
00791     void showPlotWizard();
00792     void showFitPolynomDialog();
00793     void showFrequencyCountDialog();
00794     void showIntegrationDialog();
00795     void showInterpolationDialog();
00796     void showExpGrowthDialog();
00797     void showExpDecayDialog();
00798     void showExpDecayDialog(int type);
00799     void showTwoExpDecayDialog();
00800     void showExpDecay3Dialog();
00801     void showRowStatistics();
00802     void showColStatistics();
00803     void showFitDialog();
00804     void showLayerDialog();
00805     void showPreferencesDialog();
00806     void showMatrixDialog();
00807     void showMatrixSizeDialog();
00808     void showMatrixValuesDialog();
00809     void showSmoothSavGolDialog();
00810     void showSmoothFFTDialog();
00811     void showSmoothAverageDialog();
00812     void showSmoothLowessDialog();
00813     void showSmoothDialog(int m);
00814     void showFilterDialog(int filter);
00815     void lowPassFilterDialog();
00816     void highPassFilterDialog();
00817     void bandPassFilterDialog();
00818     void bandBlockFilterDialog();
00819     void showFFTDialog();
00820     void showColorMapDialog();
00822 
00823     void baselineDialog();
00824     void subtractReferenceData();
00825     void subtractStraightLine();
00826     void translateCurveHor();
00827     void translateCurve(TranslateCurveTool::Direction direction = TranslateCurveTool::Vertical);
00828 
00830     void removeCurve();
00831     void hideCurve();
00832     void hideOtherCurves();
00833     void showAllCurves();
00834     void setCurveFullRange();
00835 
00836     void setAscValues();
00837     void setRandomValues();
00838     void setXCol();
00839     void setYCol();
00840     void setZCol();
00841     void setXErrCol();
00842     void setYErrCol();
00843     void setLabelCol();
00844     void disregardCol();
00845     void setReadOnlyCol();
00846     void setReadOnlyColumns();
00847     void setReadWriteColumns();
00848     void swapColumns();
00849     void moveColumnRight();
00850     void moveColumnLeft();
00851     void moveColumnFirst();
00852     void moveColumnLast();
00853 
00854     void updateConfirmOptions(bool askTables, bool askMatrixes, bool askPlots2D, bool askPlots3D, bool askNotes);
00855 
00857 
00858     void toggle3DAnimation(bool on = true);
00860     void togglePerspective(bool on = true);
00862     void resetRotation();
00864     void fitFrameToLayer();
00865     void setFramed3DPlot();
00866     void setBoxed3DPlot();
00867     void removeAxes3DPlot();
00868     void removeGrid3DPlot();
00869     void setHiddenLineGrid3DPlot();
00870     void setLineGrid3DPlot();
00871     void setPoints3DPlot();
00872     void setCrosses3DPlot();
00873     void setCones3DPlot();
00874     void setBars3DPlot();
00875     void setFilledMesh3DPlot();
00876     void setEmptyFloor3DPlot();
00877     void setFloorData3DPlot();
00878     void setFloorIso3DPlot();
00879     void setFloorGrid3DPlot(bool on);
00880     void setCeilGrid3DPlot(bool on);
00881     void setRightGrid3DPlot(bool on);
00882     void setLeftGrid3DPlot(bool on);
00883     void setFrontGrid3DPlot(bool on);
00884     void setBackGrid3DPlot(bool on);
00885     void pickPlotStyle( QAction* action );
00886     void pickCoordSystem( QAction* action);
00887     void pickFloorStyle( QAction* action);
00888     void custom3DActions(QMdiSubWindow *w);
00889     void custom3DGrids(int grids);
00891 
00892     void updateRecentProjectsList(const QString& fn = QString::null);
00893 
00895     void receivedVersionFile(bool error);
00897     void searchForUpdates();
00898 #ifdef QTIPLOT_SUPPORT
00899     void showDonationDialog();
00900 #endif
00901 
00902     void showSupportPage();
00904     void showDonationsPage();
00906     void showHomePage();
00908     void showForums();
00910     void showBugTracker();
00912     void downloadManual();
00914     void downloadTranslation();
00915 #ifdef QTIPLOT_DEMO
00916 
00917     void showDemoVersionMessage();
00918 #endif
00919 
00920     void parseCommandLineArguments(const QStringList& args);
00921     void createLanguagesList();
00922     void switchToLanguage(int param);
00923     void switchToLanguage(const QString& locale);
00924 
00925     bool alreadyUsedName(const QString& label);
00926     bool projectHas2DPlots();
00927 
00929     MdiSubWindow* window(const QString& name);
00930 
00932     QStringList matrixNames();
00933 
00935 
00936 
00937     Note* newNote(const QString& caption = QString());
00938     Note* openNote(ApplicationWindow* app, const QStringList &flist);
00939     void saveNoteAs();
00940     void showNoteLineNumbers(bool show = true);
00941     void increaseNoteIndent();
00942     void decreaseNoteIndent();
00943     void noteFindDialogue();
00944     void noteFindNext();
00945     void noteFindPrev();
00946     void noteReplaceDialogue();
00947     void renameCurrentNoteTab();
00948     void addNoteTab();
00949     void closeNoteTab();
00950     void execute();
00951     void executeAll();
00952     void evaluate();
00953     void commentSelection();
00954     void uncommentSelection();
00956 
00958 
00959 
00960     Folder* currentFolder(){return current_folder;};
00962     void addFolder();
00963     Folder* addFolder(QString name, Folder* parent = NULL);
00965     void deleteFolder();
00966 
00968     bool deleteFolder(Folder *f);
00969 
00971     void deleteSelectedItems();
00973     void hideSelectedWindows();
00975     void showSelectedWindows();
00976 
00978     void desactivateFolders();
00979 
00981     bool changeFolder(Folder *newFolder, bool force = false);
00982 
00984     void folderItemChanged(Q3ListViewItem *it);
00986     void folderItemDoubleClicked(Q3ListViewItem *it);
00987 
00989 
00995     void showFolderPopupMenu(Q3ListViewItem *it, const QPoint &p, bool fromFolders);
00996 
00998     void showFolderPopupMenu(Q3ListViewItem *it, const QPoint &p, int);
00999 
01001     void startRenameFolder();
01002 
01004     void startRenameFolder(Q3ListViewItem *item);
01005 
01007     void renameFolder(Q3ListViewItem *it, int col, const QString &text);
01008 
01010     void showAllFolderWindows();
01011 
01013     void hideAllFolderWindows();
01014 
01016     void hideFolderWindows(Folder *f);
01017 
01019     void folderProperties();
01020 
01022     void windowProperties();
01023 
01025     void projectProperties();
01026 
01028     void appendProject();
01030     Folder* appendProject(const QString& file_name, Folder* parentFolder = 0);
01031     void saveAsProject();
01032     void saveFolderAsProject(Folder *f);
01033     void saveFolder(Folder *folder, const QString& fn, bool compress = false);
01034 
01036     void addFolderListViewItem(Folder *f);
01037 
01039     void addListViewItem(MdiSubWindow *w);
01040 
01042     void setShowWindowsPolicy(int p);
01043 
01045     Folder* projectFolder();
01046 
01048     void find(const QString& s, bool windowNames, bool labels, bool folderNames,
01049               bool caseSensitive, bool partialMatch, bool subfolders);
01050 
01052     void dragFolderItems(QList<Q3ListViewItem *> items){draggedItems = items;};
01053 
01055     void dropFolderItems(Q3ListViewItem *dest);
01056 
01058 
01062     void moveFolder(FolderListItem *src, FolderListItem *dest);
01064 
01068     bool copyFolder(Folder *src, Folder *dest);
01069 
01070     void foldersMenuActivated( int id );
01072 
01074 
01075 
01076     void scriptError(const QString &message, const QString &scriptName, int lineNumber);
01078     void executeNotes();
01080     void showScriptingLangDialog();
01082     void restartScriptingEnv();
01084     void scriptPrint(const QString &text);
01086     bool setScriptingLanguage(const QString &lang, bool force=false);
01087 
01088     void scriptsDirPathChanged(const QString& path);
01090 
01091     void showToolBarsMenu();
01092     void setFormatBarFont(const QFont &);
01093 
01094 signals:
01095     void modified();
01096 
01097 private:
01099 
01100     void init(bool factorySettings = false);
01101     void initCompleter();
01102     void initGlobalConstants();
01103     void createActions();
01104     void initMainMenu();
01105     void initToolBars();
01106     void initPlot3DToolBar();
01107     void initPlot3D(Graph3D *plot);
01108     void insertTranslatedStrings();
01109     void translateActionsStrings();
01111     virtual QMenu * createPopupMenu(){return NULL;};
01112     void updateCompleter(const QString& windowName, bool remove = false, const QString& newName = QString::null);
01113     QMessageBox::StandardButton showSaveProjectMessage();
01114     void goToParentFolder();
01115     bool isProjectFile(const QString& fn);
01116 
01117 private slots:
01118     void disableActions();
01119     void customColumnActions();
01120     void disableToolbars();
01121     void customToolBars(QMdiSubWindow* w);
01122     void customMenu(QMdiSubWindow* w);
01123     void windowActivated(QMdiSubWindow *w);
01124     void custom2DPlotTools(MultiLayer *);
01125     void updateExplorerWindowLayout(Qt::DockWidgetArea);
01126 
01127     void analysisMenuAboutToShow();
01128     void scriptingMenuAboutToShow();
01129     void fileMenuAboutToShow();
01130     void editMenuAboutToShow();
01131     void matrixMenuAboutToShow();
01132     void plotMenuAboutToShow();
01133     void plotDataMenuAboutToShow();
01134     void tableMenuAboutToShow();
01135     void windowsMenuAboutToShow();
01136     void windowsMenuActivated( int id );
01137 
01139 
01140     void enableTextEditor(Graph *g);
01141     void setFontSize(int);
01142     void setFontFamily(const QFont &);
01143     void setItalicFont(bool);
01144     void setBoldFont(bool);
01145     void insertSuperscript();
01146     void insertSubscript();
01147     void underline();
01148     void insertGreekSymbol();
01149     void insertGreekMajSymbol();
01150     void insertMathSymbol();
01152 
01153     void showCustomActionDialog();
01154     void performCustomAction(QAction *);
01155 
01156     void hideSelectedColumns();
01157     void showAllColumns();
01158     void closedLastCopiedLayer(){lastCopiedLayer = NULL;};
01159 
01160     void increasePrecision();
01161     void decreasePrecision();
01162 
01163 #ifdef SCRIPTING_PYTHON
01164     void openQtDesignerUi();
01165 #endif
01166 
01167 // TODO: a lot of this stuff should be private
01168 public:
01169     bool d_force_muParser;
01170     bool d_keep_aspect_ration;
01171     QPrinter::PaperSize d_print_paper_size;
01172     QPrinter::Orientation d_printer_orientation;
01173     bool d_muparser_c_locale;
01174     Graph::LegendDisplayMode d_graph_legend_display;
01175     Graph::AxisTitlePolicy d_graph_axis_labeling;
01176     bool d_synchronize_graph_scales;
01177     int d_latex_compiler;
01178     QString d_latex_compiler_path;
01180     QString d_open_project_filter;
01182     int d_frame_geometry_unit;
01184     int d_layer_geometry_unit;
01185     int d_layer_canvas_width, d_layer_canvas_height;
01186     int d_notes_tab_length;
01187     QFont d_notes_font;
01189     EndLineChar d_eol;
01191     bool d_in_place_editing;
01193     bool d_completion;
01195     bool d_note_line_numbers;
01196     QString d_python_config_folder;
01197     QString d_translations_folder;
01199     bool d_opening_file;
01201     bool d_is_appending_file;
01202     QString customActionsDirPath;
01203     bool d_matrix_tool_bar, d_file_tool_bar, d_table_tool_bar, d_column_tool_bar, d_edit_tool_bar;
01204     bool d_plot_tool_bar, d_plot3D_tool_bar, d_display_tool_bar, d_format_tool_bar, d_notes_tool_bar;
01205     bool d_backup_files;
01206     WindowType d_init_window_type;
01207     QRect d_script_win_rect, d_app_rect;
01208     bool d_script_win_on_top;
01209     bool d_inform_rename_table;
01210     QString d_export_col_separator;
01211     bool d_export_col_names, d_export_table_selection, d_export_col_comment;
01213     QString d_image_export_filter, d_export_ASCII_file_filter;
01214     double d_scale_fonts_factor;
01215     bool d_export_transparency;
01216     int d_export_quality;
01217     int d_export_vector_resolution, d_export_bitmap_resolution, d_export_size_unit;
01218     QSizeF d_export_raster_size;
01219     bool d_export_color;
01220     bool d_export_escape_tex_strings;
01221     bool d_export_tex_font_sizes;
01222     int d_3D_export_text_mode, d_3D_export_sort;
01224     QLocale d_clipboard_locale;
01226     QLocale d_ASCII_import_locale;
01228     EndLineChar d_ASCII_end_line;
01230     QString d_ASCII_file_filter, d_ASCII_comment_string;
01231     bool d_ASCII_import_comments, d_ASCII_import_read_only, d_ASCII_import_preview;
01232     int d_ASCII_import_mode, d_preview_lines;
01233     int d_ASCII_import_first_row_role;
01234     QSize d_import_ASCII_dialog_size;
01236     bool d_show_current_folder;
01237     bool d_scale_plots_on_print, d_print_cropmarks;
01238     bool d_show_table_comments;
01239     bool d_extended_plot_dialog;
01240     bool d_extended_import_ASCII_dialog;
01241     bool d_extended_export_dialog;
01242     bool d_extended_open_dialog;
01243     bool generateUniformFitPoints;
01244     bool generatePeakCurves;
01245     QColor peakCurvesColor;
01246     bool d_multi_peak_messages;
01248     QSize d_add_curves_dialog_size;
01249 
01251     bool fit_scale_errors;
01252 
01254     int fitPoints;
01255 
01257     bool d_2_linear_fit_points;
01258 
01259     bool pasteFitResultsToPlot;
01260 
01262     bool writeFitResultsToLog;
01263 
01265     int fit_output_precision;
01266 
01268     int d_decimal_digits;
01269 
01271     Folder *current_folder;
01273     ShowWindowsPolicy show_windows_policy;
01274     enum {MaxRecentProjects = 10};
01276     int d_file_version;
01277 
01278     QColor d_rect_default_background;
01279     QBrush d_rect_default_brush;
01280     QColor workspaceColor, panelsColor, panelsTextColor;
01281     QColor d_graph_background_color, d_graph_canvas_color, d_graph_border_color, d_canvas_frame_color;
01282     int d_graph_background_opacity, d_graph_canvas_opacity, d_graph_border_width;
01283     QString appStyle, workingDir;
01284 
01286     QString templatesDir;
01287     bool autoScaleFonts, autoResizeLayers, autoSearchUpdates;
01288     bool confirmCloseTable, confirmCloseMatrix, confirmClosePlot2D, confirmClosePlot3D;
01289     bool confirmCloseFolder, confirmCloseNotes, d_confirm_overwrite;
01290     bool titleOn, autoSave, autoscale2DPlots, antialiasing2DPlots;
01292 
01293 
01294     QVector<bool> d_show_axes;
01296     QVector<bool> d_show_axes_labels;
01298     bool drawBackbones;
01300     int d_graph_tick_labels_dist;
01302     int d_graph_axes_labels_dist;
01304     int axesLineWidth;
01306     int majTicksStyle, minTicksStyle, legendFrameStyle, autoSaveTime, canvasFrameWidth;
01307     QColor legendBackground, legendTextColor, defaultArrowColor;
01308     int defaultArrowHeadLength, defaultArrowHeadAngle, d_legend_default_angle, d_symbol_style;
01309     double defaultArrowLineWidth, defaultCurveLineWidth, defaultSymbolEdge;
01310     bool defaultArrowHeadFill, d_fill_symbols, d_indexed_symbols;
01311     int defaultCurveBrush, defaultCurveAlpha, d_curve_line_style;
01312     Qt::PenStyle defaultArrowLineStyle;
01313     QPen d_frame_widget_pen;
01314     int majTicksLength, minTicksLength, defaultPlotMargin;
01315     int defaultCurveStyle, defaultSymbolSize;
01316     QFont appFont;
01317     QFont tableTextFont, tableHeaderFont, plotAxesFont, plotLegendFont, plotNumbersFont, plotTitleFont;
01318     QColor tableBkgdColor, tableTextColor, tableHeaderColor;
01319     QString projectname,columnSeparator, helpFilePath, appLanguage;
01320     QString configFilePath, fitPluginsPath, fitModelsPath, asciiDirPath, imagesDirPath, scriptsDirPath;
01321     int ignoredLines, savingTimerId, recentMenuID;
01322     bool renameColumns, strip_spaces, simplify_spaces;
01323     QStringList recentProjects;
01324     bool saved;
01325     QStringList locales;
01326     QStringList d_recent_functions; //user-defined functions;
01327     QStringList xFunctions, yFunctions, rFunctions, thetaFunctions; // user functions for parametric and polar plots
01328     QStringList surfaceFunc; //user-defined surface functions;
01329     QStringList d_param_surface_func; //user-defined parametric surface functions;
01331     QStringList renamedTables;
01332 
01334 
01335     FrameWidget *d_enrichement_copy;
01336     ArrowMarker *d_arrow_copy;
01338 
01340     bool autoSearchUpdatesRequest;
01341 
01343     QString defaultScriptingLang;
01344 
01346     QColor d_comment_highlight_color, d_class_highlight_color, d_numeric_highlight_color;
01347     QColor d_keyword_highlight_color, d_function_highlight_color, d_quotation_highlight_color;
01348 
01350 
01351     bool d_3D_smooth_mesh, d_3D_legend, d_3D_orthogonal, d_3D_autoscale;
01352     int d_3D_resolution, d_3D_projection;
01353     QFont d_3D_title_font, d_3D_numbers_font, d_3D_axes_font;
01354     QwtLinearColorMap d_3D_color_map;
01355     QColor d_3D_mesh_color;
01356     QColor d_3D_axes_color;
01357     QColor d_3D_numbers_color;
01358     QColor d_3D_labels_color;
01359     QColor d_3D_background_color;
01360     QColor d_3D_grid_color, d_3D_minor_grid_color;
01361     bool d_3D_minor_grids, d_3D_major_grids;
01362     int d_3D_major_style, d_3D_minor_style;
01363     double d_3D_major_width, d_3D_minor_width;
01364 
01365     void setPlot3DOptions();
01367 
01368 private:
01369     bool d_mdi_windows_area;
01370     MdiSubWindow *d_active_window;
01371     TextEditor *d_text_editor;
01372     // Flag telling if table values should be automatically recalculated when values in a column are modified.
01373     bool d_auto_update_table_values;
01374     int d_matrix_undo_stack_size;
01375 
01377     int convertOldToNewColorIndex(int cindex);
01378 
01380     QList<Q3ListViewItem *> draggedItems;
01381 
01383     QHttp *http;
01385     QBuffer version_buffer;
01386 
01387     Graph *lastCopiedLayer;
01388     QSplitter *explorerSplitter;
01389 
01390     QAssistantClient *assistant;
01391     ScriptWindow *scriptWindow;
01392     QTranslator *appTranslator, *qtTranslator;
01393     QDockWidget *explorerWindow, *undoStackWindow;
01394     QTextEdit *results;
01395 #ifdef SCRIPTING_CONSOLE
01396     QDockWidget *consoleWindow;
01397     QTextEdit *console;
01398 #endif
01399     QMdiArea *d_workspace;
01400 
01401     QToolBar *fileTools, *plotTools, *tableTools, *columnTools, *plot3DTools, *displayBar, *editTools, *plotMatrixBar;
01402     QToolBar *formatToolBar, *noteTools;
01403     QToolButton *btnResults;
01404     QWidgetList *hiddenWindows;
01405     QLineEdit *info;
01407     QCompleter *d_completer;
01408 
01409     QMenu *windowsMenu, *foldersMenu, *view, *graphMenu, *fileMenu, *format, *edit, *recent;
01410     QMenu *help, *plot2DMenu, *analysisMenu, *multiPeakMenu;
01411     QMenu *matrixMenu, *plot3DMenu, *plotDataMenu, *tablesDepend, *scriptingMenu;
01412     QMenu *tableMenu, *fillMenu, *normMenu, *newMenu, *exportPlotMenu, *smoothMenu, *filterMenu, *decayMenu, *importMenu;
01413 
01414     QAction *actionEditCurveRange, *actionCurveFullRange, *actionShowAllCurves, *actionHideCurve, *actionHideOtherCurves;
01415     QAction *actionRemoveCurve, *actionShowCurveWorksheet, *actionShowCurvePlotDialog;
01416     QAction *actionNewProject, *actionAppendProject, *actionNewNote, *actionNewTable, *actionNewFunctionPlot;
01417     QAction *actionNewSurfacePlot, *actionNewMatrix, *actionNewGraph, *actionNewFolder;
01418     QAction *actionOpen, *actionLoadImage, *actionSaveProject, *actionSaveProjectAs, *actionImportImage;
01419     QAction *actionLoad, *actionUndo, *actionRedo, *actionImportSound;
01420 #ifdef ODS_IMPORT
01421     QAction *actionOpenOds;
01422 #endif
01423 #ifdef XLS_IMPORT
01424     QAction *actionOpenExcel, *actionExportExcel;
01425 #endif
01426     QAction *actionCopyWindow, *actionShowAllColumns, *actionHideSelectedColumns;
01427     QAction *actionCutSelection, *actionCopySelection, *actionPasteSelection, *actionClearSelection;
01428     QAction *actionShowExplorer, *actionShowLog, *actionAddLayer, *actionShowLayerDialog, *actionAutomaticLayout;
01429 #ifdef SCRIPTING_CONSOLE
01430     QAction *actionShowConsole;
01431 #endif
01432 #ifdef SCRIPTING_PYTHON
01433     QAction *actionOpenQtDesignerUi, *actionCommentSelection, *actionUncommentSelection;
01434 #endif
01435     QAction *actionSwapColumns, *actionMoveColRight, *actionMoveColLeft, *actionMoveColFirst, *actionMoveColLast, *actionShowScriptWindow;
01436     QAction *actionExportGraph, *actionExportAllGraphs, *actionPrint, *actionPrintAllPlots, *actionShowExportASCIIDialog;
01437     QAction *actionExportPDF, *actionReadOnlyCol, *actionStemPlot;
01438     QAction *actionCloseAllWindows, *actionCloseProject, *actionClearLogInfo, *actionShowPlotWizard, *actionShowConfigureDialog;
01439     QAction *actionShowCurvesDialog, *actionAddErrorBars, *actionAddFunctionCurve, *actionUnzoom, *actionNewLegend, *actionAddImage, *actionAddText;
01440     QAction *actionPlotL, *actionPlotP, *actionPlotLP, *actionPlotVerticalDropLines, *actionPlotSpline;
01441     QAction *actionPlotVertSteps, *actionPlotHorSteps, *actionPlotVerticalBars, *actionStackBars, *actionStackColumns;
01442     QAction *actionPlotHorizontalBars, *actionPlotArea, *actionPlotPie, *actionPlotVectXYAM, *actionPlotVectXYXY;
01443     QAction *actionPlotHistogram, *actionPlotStackedHistograms, *actionPlot2VerticalLayers, *actionPlot2HorizontalLayers, *actionPlot4Layers, *actionPlotStackedLayers;
01444     QAction *actionPlot3DRibbon, *actionPlot3DBars, *actionPlot3DScatter, *actionPlot3DTrajectory;
01445     QAction *actionPlotDoubleYAxis, *actionAddInsetLayer, *actionAddInsetCurveLayer;
01446     QAction *actionShowColStatistics, *actionShowRowStatistics, *actionShowIntDialog, *actionIntegrate;
01447     QAction *actionDifferentiate, *actionFitLinear, *actionFitSlope, *actionShowFitPolynomDialog;
01448     QAction *actionShowExpDecayDialog, *actionShowTwoExpDecayDialog, *actionShowExpDecay3Dialog;
01449     QAction *actionFitExpGrowth, *actionFitSigmoidal, *actionFitGauss, *actionFitLorentz, *actionShowFitDialog;
01450     QAction *actionShowAxisDialog, *actionShowTitleDialog;
01451     QAction *actionShowColumnOptionsDialog, *actionShowColumnValuesDialog, *actionShowColsDialog, *actionShowRowsDialog;
01452     QAction *actionTableRecalculate, *actionExtractGraphs, *actionExtractLayers;
01453     QAction *actionAbout, *actionShowHelp, *actionChooseHelpFolder;
01454     QAction *actionRename, *actionCloseWindow;
01455     QAction *actionConvertTableDirect, *actionConvertTableBinning, *actionConvertTableRegularXYZ;
01456     QAction *actionAddColToTable, *actionDeleteLayer, *actionInterpolate;
01457     QAction *actionResizeActiveWindow, *actionHideActiveWindow;
01458     QAction *actionShowMoreWindows, *actionPixelLineProfile, *actionIntensityTable;
01459     QAction *actionShowLineDialog, *actionShowTextDialog;
01460     QAction *actionActivateWindow, *actionMinimizeWindow, *actionMaximizeWindow, *actionHideWindow, *actionResizeWindow;
01461     QAction *actionEditSurfacePlot, *actionAdd3DData;
01462     QAction *actionMatrixDeterminant, *actionSetMatrixProperties, *actionConvertMatrixXYZ, *actionConvertMatrixYXZ;
01463     QAction *actionSetMatrixDimensions, *actionConvertMatrixDirect, *actionSetMatrixValues, *actionTransposeMatrix, *actionInvertMatrix;
01464     QAction *actionPlot3DWireFrame, *actionPlot3DHiddenLine, *actionPlot3DPolygons, *actionPlot3DWireSurface;
01465     QAction *actionColorMap, *actionContourMap, *actionGrayMap;
01466     QAction *actionDeleteFitTables, *actionShowGridDialog, *actionTimeStamp;
01467     QAction *actionSmoothSavGol, *actionSmoothFFT, *actionSmoothAverage, *actionSmoothLowess, *actionFFT;
01468     QAction *actionLowPassFilter, *actionHighPassFilter, *actionBandPassFilter, *actionBandBlockFilter;
01469     QAction *actionSortTable, *actionSortSelection, *actionNormalizeSelection;
01470     QAction *actionNormalizeTable, *actionConvolute, *actionDeconvolute, *actionCorrelate, *actionAutoCorrelate;
01471     QAction *actionTranslateHor, *actionTranslateVert, *actionSetAscValues, *actionSetRandomValues;
01472     QAction *actionSetXCol, *actionSetYCol, *actionSetZCol, *actionSetLabelCol, *actionDisregardCol, *actionSetXErrCol, *actionSetYErrCol;
01473     QAction *actionBoxPlot, *actionMultiPeakGauss, *actionMultiPeakLorentz, *actionCheckUpdates;
01474     QAction *actionDonate, *actionHomePage, *actionDownloadManual, *actionTechnicalSupport, *actionTranslations;
01475     QAction *actionHelpForums, *actionHelpBugReports;
01476     QAction *actionShowPlotDialog, *actionShowScaleDialog, *actionOpenTemplate, *actionSaveTemplate, *actionSaveWindow;
01477     QAction *actionNextWindow, *actionPrevWindow;
01478     QAction *actionScriptingLang, *actionRestartScripting, *actionClearTable, *actionGoToRow, *actionGoToColumn;
01479     QAction *actionNoteExecute, *actionNoteExecuteAll, *actionNoteEvaluate, *actionSaveNote, *actionFrequencyCount;
01480     QAction *actionAnimate, *actionPerspective, *actionFitFrame, *actionResetRotation;
01481     QAction *actionDeleteRows, *actionDrawPoints, *actionAddZoomPlot;
01482     QAction *btnCursor, *btnSelect, *btnPicker, *btnRemovePoints, *btnMovePoints, *actionDragCurve;
01483     QAction *btnZoomIn, *btnZoomOut, *btnPointer, *btnLine, *btnArrow;
01484     QAction *actionFlipMatrixVertically, *actionFlipMatrixHorizontally, *actionRotateMatrix;
01485     QAction *actionViewMatrixImage, *actionViewMatrix, *actionExportMatrix, *actionMatrixDefaultScale;
01486     QAction *actionMatrixGrayScale, *actionMatrixRainbowScale, *actionMatrixCustomScale, *actionRotateMatrixMinus;
01487     QAction *actionMatrixXY, *actionMatrixColumnRow, *actionImagePlot, *actionToolBars, *actionImageProfilesPlot;
01488     QAction *actionMatrixFFTDirect, *actionMatrixFFTInverse;
01489     QAction *actionFontBold, *actionFontItalic, *actionFontBox, *actionFontSize;
01490     QAction *actionSuperscript, *actionSubscript, *actionUnderline, *actionGreekSymbol, *actionCustomActionDialog;
01491     QAction *actionGreekMajSymbol, *actionMathSymbol;
01492     QAction *Box, *Frame, *None;
01493     QAction *front, *back, *right, *left, *ceil, *floor, *floordata, *flooriso, *floornone;
01494     QAction *wireframe, *hiddenline, *polygon, *filledmesh, *pointstyle, *barstyle, *conestyle, *crossHairStyle;
01495     QAction *actionShowUndoStack, *actionShowNoteLineNumbers, *actionAddFormula, *actionAddRectangle, *actionAddEllipse;
01496     QActionGroup *coord, *floorstyle, *grids, *plotstyle, *dataTools;
01497     QAction *actionMagnify, *actionFindWindow, *actionWaterfallPlot, *actionMagnifyHor, *actionMagnifyVert;
01498     QAction *actionMoveRowUp, *actionMoveRowDown, *actionAdjustColumnWidth;
01499     QAction *actionPresentationODF, *actionRenameNoteTab, *actionAddNoteTab, *actionCloseNoteTab;
01500     QAction *actionIncreaseIndent, *actionDecreaseIndent, *actionFind, *actionFindNext, *actionFindPrev, *actionReplace;
01501     QAction *actionIncreasePrecision, *actionDecreasePrecision, *actionPrintPreview;
01502     QAction *actionVertSharedAxisLayers, *actionHorSharedAxisLayers, *actionSharedAxesLayers, *actionStackSharedAxisLayers;
01503     QAction *actionCustomSharedAxisLayers, *actionCustomLayout, *actionExtractTableData, *actionSubtractLine, *actionSubtractReference;
01504     QAction *actionRaiseEnrichment, *actionLowerEnrichment, *actionBaseline;
01505 
01506     QList<QAction *> d_user_actions;
01507     QUndoView *d_undo_view;
01508     QList<QMenu *> d_user_menus;
01509 
01510     QList<QColor> d_indexed_colors;
01511     QStringList d_indexed_color_names;
01512     QList<int> d_symbols_list;
01513 };
01514 #endif