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