QtiPlot 0.9.7.3

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