scidavis  2.3.0
About: SciDAVis is a free application for Scientific Data Analysis and Visualization (a fork off of QtiPlot).
  Fossies Dox: scidavis-2.3.0.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

ApplicationWindow Class Reference

SciDAVis's main window. More...

#include <ApplicationWindow.h>

Inheritance diagram for ApplicationWindow:
[legend]
Collaboration diagram for ApplicationWindow:
[legend]

Public Types

enum  ShowWindowsPolicy { HideAll, ActiveFolder, SubFolders }
 

Public Slots

void copyStatusBarText ()
 Copy the status bar text to the clipboard. More...
 
void showStatusBarContextMenu (const QPoint &pos)
 Show the context menu for the status bar. More...
 
void setStatusBarText (const QString &)
 Set status bar text. More...
 
Projects and Project Files
void open ()
 
ApplicationWindowopen (const QString &fn, const QStringList &args=QStringList())
 args are any argument to be passed to fn if a script More...
 
QFile * openCompressedFile (const QString &fn)
 Returns temporary file ready for reading uncompressed content. More...
 
ApplicationWindowopenProject (const QString &fn)
 
bool loadProject (const QString &fn)
 
ApplicationWindowimportOPJ (const QString &filename)
 
void showHistory ()
 
ApplicationWindowplotFile (const QString &fn)
 Create a new project from a data file. More...
 
ApplicationWindowloadScript (const QString &fn, const QStringList &args=QStringList(), bool execute=false)
 Create a new project from a script file. More...
 
QList< MyWidget * > windowsList ()
 
void updateWindowLists (MyWidget *w)
 
void cascade ()
 
void saveProjectAs ()
 
bool saveProject ()
 
void modifiedProject ()
 Set the project status to modifed. More...
 
void savedProject ()
 Set the project status to saved (not modified) More...
 
void modifiedProject (MyWidget *w)
 Set the project status to modified and save 'w' as the last modified widget. More...
 
Settings
void readSettings ()
 
void saveSettings ()
 
void applyUserSettings ()
 
void setSaveSettings (bool autoSaving, int min)
 
void changeAppStyle (const QString &s)
 
void changeAppFont (const QFont &f)
 
void updateAppFonts ()
 
void setAppColors (const QColor &wc, const QColor &pc, const QColor &tpc)
 
Multilayer Plots
MultiLayermultilayerPlot (int c, int r, int style)
 
MultiLayermultilayerPlot (Table *w, const QStringList &colList, int style, int startRow=0, int endRow=-1)
 
MultiLayermultilayerPlot (const QString &caption)
 used when restoring a plot from a project file More...
 
MultiLayermultilayerPlot (const QStringList &colList)
 used by the plot wizard More...
 
void connectMultilayerPlot (MultiLayer *g)
 
void addLayer ()
 
void deleteLayer ()
 
MultiLayerplotSpectrogram (Matrix *m, Graph::CurveType type)
 Creates a new spectrogram graph. More...
 
void plotGrayScale ()
 
MultiLayerplotGrayScale (Matrix *m)
 
void plotContour ()
 
MultiLayerplotContour (Matrix *m)
 
void plotColorMap ()
 
MultiLayerplotColorMap (Matrix *m)
 
void autoArrangeLayers ()
 Rearrange the layersin order to fit to the size of the plot window. More...
 
void initMultilayerPlot (MultiLayer *g, const QString &name)
 
void initBareMultilayerPlot (MultiLayer *g, const QString &name)
 
void polishGraph (Graph *g, int style)
 
void plot2VerticalLayers ()
 
void plot2HorizontalLayers ()
 
void plot4Layers ()
 
void plotStackedLayers ()
 
void plotStackedHistograms ()
 
3D Data Plots
Graph3DopenMatrixPlot3D (const QString &caption, const QString &matrix_name, double xl, double xr, double yl, double yr, double zl, double zr)
 
Graph3DdataPlot3D (Table *table, const QString &colName)
 
Graph3DdataPlotXYZ (Table *table, const QString &zColName, int type)
 
Graph3DdataPlot3D (const QString &caption, const QString &formula, double xl, double xr, double yl, double yr, double zl, double zr)
 
Graph3DdataPlotXYZ (const QString &caption, const QString &formula, double xl, double xr, double yl, double yr, double zl, double zr)
 
Surface Plots
Graph3DnewPlot3D ()
 
Graph3DnewPlot3D (const QString &formula, double xl, double xr, double yl, double yr, double zl, double zr)
 
Graph3DnewPlot3D (const QString &caption, const QString &formula, double xl, double xr, double yl, double yr, double zl, double zr)
 
void connectSurfacePlot (Graph3D *plot)
 
void newSurfacePlot ()
 
void editSurfacePlot ()
 
void remove3DMatrixPlots (Matrix *m)
 
void updateMatrixPlots (MyWidget *)
 
void add3DData ()
 
void change3DData ()
 
void change3DData (const QString &colName)
 
void change3DMatrix ()
 
void change3DMatrix (const QString &matrix_name)
 
void insertNew3DData (const QString &colName)
 
void add3DMatrixPlot ()
 
void insert3DMatrixPlot (const QString &matrix_name)
 
void initPlot3D (Graph3D *plot)
 
void customPlot3D (Graph3D *plot)
 
void setPlot3DOptions ()
 
void plot3DWireframe ()
 
void plot3DHiddenLine ()
 
void plot3DPolygons ()
 
void plot3DWireSurface ()
 
void plot3DMatrix (int style)
 
void plot3DRibbon ()
 
void plot3DScatter ()
 
void plot3DTrajectory ()
 
void plot3DBars ()
 
User-defined Functions
bool newFunctionPlot (int type, QStringList &formulas, const QString &var, QList< double > &ranges, int points)
 
FunctionDialogfunctionDialog ()
 
void showFunctionDialog ()
 
void showFunctionDialog (Graph *g, int curve)
 
void addFunctionCurve ()
 
void clearFitFunctionsList ()
 
void saveFitFunctionsList (const QStringList &l)
 
void clearSurfaceFunctionsList ()
 
void clearLogInfo ()
 
void clearParamFunctionsList ()
 
void clearPolarFunctionsList ()
 
void updateFunctionLists (int type, QStringList &formulas)
 
void updateSurfaceFuncList (const QString &s)
 
Matrices
MatrixnewMatrix (int rows=32, int columns=32)
 Creates a new empty matrix. More...
 
MatrixnewMatrix (const QString &caption, int r, int c)
 To be used when opening a project file only! More...
 
Matrixmatrix (const QString &name)
 
MatrixconvertTableToMatrix ()
 
void initMatrix (Matrix *m)
 
void invertMatrix ()
 
void matrixDeterminant ()
 
Tables
TablenewTable ()
 Creates an empty table. More...
 
TablenewTable (const QString &fname, const QString &sep, int lines, bool renameCols, bool stripSpaces, bool simplifySpaces, bool convertToNumeric, QLocale numericLocale)
 Used when importing an ASCII file. More...
 
TablenewTable (const QString &caption, int r, int c)
 Used when loading a table from a project file. More...
 
TablenewTable (int r, int c, const QString &name=QString(), const QString &legend=QString())
 
TablenewTable (const QString &name, const QString &legend, QList< Column * > columns)
 
TablenewHiddenTable (const QString &name, const QString &label, QList< Column * > columns)
 Create a Table which is initially hidden; used to return the result of an analysis operation. More...
 
Tabletable (const QString &name)
 
TableconvertMatrixToTable ()
 
QList< MyWidget * > * tableList ()
 
void connectTable (Table *w)
 
void newWrksheetPlot (const QString &name, const QString &label, QList< Column * > columns)
 
void initTable (Table *w)
 
void customTable (Table *w)
 
void customizeTables (const QColor &bgColor, const QColor &textColor, const QColor &headerColor, const QFont &textFont, const QFont &headerFont, bool showComments)
 
void importASCII ()
 
void importASCII (const QStringList &files, int import_mode, const QString &local_column_separator, int local_ignored_lines, bool local_rename_columns, bool local_strip_spaces, bool local_simplify_spaces, bool local_convert_to_numeric, QLocale local_numeric_locale)
 
void exportAllTables (const QString &sep, bool colNames, bool expSelection)
 
void exportASCII (const QString &tableName, const QString &sep, bool colNames, bool expSelection)
 
TableStatisticsnewTableStatistics (Table *base, int type, QList< int >, const QString &caption={})
 
Graphs
void setPreferences (Graph *g)
 
void setGraphDefaultSettings (bool autoscale, bool scaleFonts, bool resizeLayers, bool antialiasing)
 
void setLegendDefaultSettings (int frame, const QFont &font, const QColor &textCol, const QColor &backgroundCol)
 
void setArrowDefaultSettings (const QPen &pen, int headLength, int headAngle, bool fillHead)
 
void plotPie ()
 
void plotVectXYXY ()
 
void plotVectXYAM ()
 
Image Analysis
void intensityTable ()
 
void pixelLineProfile ()
 
void loadImage ()
 
void loadImage (const QString &fn)
 
MatriximportImage ()
 
MatriximportImage (const QString &fn)
 
Export and Print
void exportLayer ()
 
void exportGraph ()
 
void exportAllGraphs ()
 
void exportPDF ()
 
void print ()
 
void print (MyWidget *w)
 
void printAllPlots ()
 
QStringList columnsList (SciDAVis::PlotDesignation plotType)
 
QStringList columnsList ()
 
void undo ()
 
void redo ()
 
MDI Windows
MyWidgetclone ()
 
MyWidgetclone (MyWidget *)
 
void renameActiveWindow ()
 
void renameWindow (QTreeWidgetItem *item, int, const QString &s)
 Called when the user presses F2 and an item is selected in lv. More...
 
bool renameWindow (MyWidget *w, const QString &text)
 Checks weather the new window name is valid and modifies the name. More...
 
void maximizeWindow ()
 
void minimizeWindow ()
 
void setWindowGeometry (int x, int y, int w, int h)
 Changes the geometry of the active MDI window. More...
 
void updateWindowStatus (MyWidget *)
 
bool hidden (MyWidget *window)
 
void closeActiveWindow ()
 
void closeWindow (MyWidget *window)
 
void removeWindowFromLists (MyWidget *w)
 Does all the cleaning work before actually deleting a window! More...
 
void hideWindow (MyWidget *window)
 
void hideActiveWindow ()
 
void activateSubWindow ()
 
void activateSubWindow (MyWidget *)
 
void printWindow ()
 
static void about ()
 Show about dialog. More...
 
static QString versionString ()
 Return a version string ("SciDAVis x.y.z") More...
 
static int qtVersion ()
 
void windowsMenuAboutToShow ()
 
void windowsMenuActivated (bool)
 
void removeCurves (const QString &name)
 
QStringList dependingPlots (const QString &caption)
 
QStringList depending3DPlots (Matrix *m)
 
QStringList multilayerDependencies (MyWidget *w)
 
void saveAsTemplate ()
 
void openTemplate ()
 
QString windowGeometryInfo (MyWidget *w)
 
void restoreWindowGeometry (ApplicationWindow *app, MyWidget *w, const QString s)
 
void resizeActiveWindow ()
 
void resizeWindow ()
 
List View in Project Explorer
void setListView (const QString &caption, const QString &view)
 
void renameListViewItem (const QString &oldName, const QString &newName)
 
void setListViewDate (const QString &caption, const QString &date)
 
void setListViewLabel (const QString &caption, const QString &label)
 
void updateColNames (const QString &oldName, const QString &newName)
 
void updateTableNames (const QString &oldName, const QString &newName)
 
void changeMatrixName (const QString &oldName, const QString &newName)
 
void updateCurves (Table *t, const QString &name)
 
void showTable (const QString &curve)
 
void addColToTable ()
 
void cutSelection ()
 
void copySelection ()
 
void copyMarker ()
 
void pasteSelection ()
 
void clearSelection ()
 
void copyActiveLayer ()
 
void newProject ()
 
MultiLayernewGraph (const QString &caption=tr("Graph"))
 Creates a new empty multilayer plot. More...
 
Reading from a Project File
MatrixopenMatrix (ApplicationWindow *app, const QStringList &flist)
 
TableopenTable (ApplicationWindow *app, QTextStream &stream)
 
TableStatisticsopenTableStatistics (const QStringList &flist)
 
Graph3DopenSurfacePlot (ApplicationWindow *app, const QStringList &lst)
 
GraphopenGraph (ApplicationWindow *app, MultiLayer *plot, const QStringList &list)
 
void openRecentProject ()
 
Initialization
void insertTranslatedStrings ()
 
void translateActionsStrings ()
 
void initFonts ()
 
void createActions ()
 
void initMainMenu ()
 
void initPlotMenu ()
 
void initTableAnalysisMenu ()
 
void initPlotDataMenu ()
 
void initToolBars ()
 
void initPlot3DToolBar ()
 
void disableActions ()
 
void customToolBars (MyWidget *w)
 
void customMenu (MyWidget *w)
 
void windowActivated (QMdiSubWindow *w)
 
Table Tools
void correlate ()
 
void autoCorrelate ()
 
void convolute ()
 
void deconvolute ()
 
void clearTable ()
 
Plot Tools
void newLegend ()
 
void addTimeStamp ()
 
void drawLine ()
 
void drawArrow ()
 
void addText ()
 
void disableAddText ()
 
void addImage ()
 
void zoomIn ()
 
void zoomOut ()
 
void setAutoScale ()
 
void showRangeSelectors ()
 
void showCursor ()
 
void showScreenReader ()
 
void pickPointerCursor ()
 
void pickDataTool (QAction *action)
 
void updateLog (const QString &result)
 
Fitting
void deleteFitTables ()
 
void fitLinear ()
 
void fitSigmoidal ()
 
void fitGauss ()
 
void fitLorentz ()
 
void fitMultiPeak (int profile)
 
void fitMultiPeakGauss ()
 
void fitMultiPeakLorentz ()
 
Calculus
void differentiate ()
 
void analysis (const QString &whichFit)
 
void analyzeCurve (Graph *g, const QString &whichFit, const QString &curveTitle)
 
void showDataSetDialog (const QString &whichFit)
 
void addErrorBars ()
 
void defineErrorBars (const QString &name, int type, const QString &percent, int direction)
 
void defineErrorBars (const QString &curveName, const QString &errColumnName, int direction)
 
void movePoints ()
 
void removePoints ()
 
Event Handlers
void closeEvent (QCloseEvent *)
 
void timerEvent (QTimerEvent *e)
 
void dragEnterEvent (QDragEnterEvent *e)
 
void dropEvent (QDropEvent *e)
 
void customEvent (QEvent *e)
 
Dialogs
void showFindDialogue ()
 
void showPlotDialog (int curveKey=-1)
 Show plot style dialog for the active MultiLayer / activeGraph / specified curve or the activeGraph options dialog if no curve is specified (curveKey = -1). More...
 
QDialog * showScaleDialog ()
 
QDialog * showPlot3dDialog ()
 
AxesDialogshowScalePageFromAxisDialog (int axisPos)
 
AxesDialogshowAxisPageFromAxisDialog (int axisPos)
 
void showAxisDialog ()
 
void showGridDialog ()
 
void showGeneralPlotDialog ()
 
void showResults (bool ok)
 
void showResults (const QString &s, bool ok=true)
 
void showTextDialog ()
 
void showLineDialog ()
 
void showTitleDialog ()
 
void showExportASCIIDialog ()
 
void showCurvesDialog ()
 
void showCurveRangeDialog ()
 
CurveRangeDialogshowCurveRangeDialog (Graph *g, int curve)
 
void showPlotAssociations (int curve)
 
void showXAxisTitleDialog ()
 
void showYAxisTitleDialog ()
 
void showRightAxisTitleDialog ()
 
void showTopAxisTitleDialog ()
 
void showGraphContextMenu ()
 
void showLayerButtonContextMenu ()
 
void showWindowContextMenu ()
 
void showWindowTitleBarMenu ()
 
QMenu * showCurveContextMenuImpl (int)
 
void showCurveContextMenu (int curveKey)
 
void showCurvePlotDialog ()
 
void showCurveWorksheet ()
 
void showCurveWorksheet (Graph *g, int curveIndex)
 
QMenu * showWindowPopupMenuImpl (QTreeWidgetItem *it)
 
void showWindowPopupMenu (const QPoint &p)
 
QMenu * showListViewSelectionMenuImpl ()
 Connected to the context menu signal from lv; it's called when there are several items selected in the list. More...
 
void showListViewSelectionMenu (const QPoint &p)
 
QMenu * showListViewPopupMenuImpl ()
 Connected to the context menu signal from lv; it's called when there are no items selected in the list. More...
 
void showListViewPopupMenu (const QPoint &p)
 
void showMoreWindows ()
 
QMenu * showMarkerPopupMenuImpl ()
 
void showMarkerPopupMenu ()
 
void showPlotWizard ()
 
void showFitPolynomDialog ()
 
void showIntegrationDialog ()
 
void showInterpolationDialog ()
 
void showExpGrowthDialog ()
 
void showExpDecayDialog ()
 
void showExpDecayDialog (int type)
 
void showTwoExpDecayDialog ()
 
void showExpDecay3Dialog ()
 
void showRowStatistics ()
 
void showColStatistics ()
 
void showFitDialog ()
 
void showImageDialog ()
 
void showPlotGeometryDialog ()
 
void showLayerDialog ()
 
void showPreferencesDialog ()
 
void showSmoothSavGolDialog ()
 
void showSmoothFFTDialog ()
 
void showSmoothAverageDialog ()
 
void showSmoothDialog (int m)
 
void showFilterDialog (int filter)
 
void lowPassFilterDialog ()
 
void highPassFilterDialog ()
 
void bandPassFilterDialog ()
 
void bandBlockFilterDialog ()
 
void showFFTDialog ()
 
void translateCurveHor ()
 
void translateCurveVert ()
 
void removeCurve ()
 Removes the curve identified by a key stored in the data() of actionRemoveCurve. More...
 
void hideCurve ()
 
void hideOtherCurves ()
 
void showAllCurves ()
 
void setCurveFullRange ()
 
void updateConfirmOptions (bool askTables, bool askMatrixes, bool askPlots2D, bool askPlots3D, bool askNotes)
 
Plot3D Tools
void toggle3DAnimation (bool on=true)
 
void togglePerspective (bool on=true)
 Turns perspective mode on or off. More...
 
void resetRotation ()
 Resets rotation of 3D plots to default values. More...
 
void fitFrameToLayer ()
 Finds best layout for the 3D plot. More...
 
void setFramed3DPlot ()
 
void setBoxed3DPlot ()
 
void removeAxes3DPlot ()
 
void removeGrid3DPlot ()
 
void setHiddenLineGrid3DPlot ()
 
void setLineGrid3DPlot ()
 
void setPoints3DPlot ()
 
void setCrosses3DPlot ()
 
void setCones3DPlot ()
 
void setBars3DPlot ()
 
void setFilledMesh3DPlot ()
 
void setEmptyFloor3DPlot ()
 
void setFloorData3DPlot ()
 
void setFloorIso3DPlot ()
 
void setFloorGrid3DPlot (bool on)
 
void setCeilGrid3DPlot (bool on)
 
void setRightGrid3DPlot (bool on)
 
void setLeftGrid3DPlot (bool on)
 
void setFrontGrid3DPlot (bool on)
 
void setBackGrid3DPlot (bool on)
 
void pickPlotStyle (QAction *action)
 
void pickCoordSystem (QAction *action)
 
void pickFloorStyle (QAction *action)
 
void custom3DActions (MyWidget *w)
 
void custom3DGrids (int grids)
 
void updateRecentProjectsList ()
 
void showHomePage ()
 Open SciDAVis homepage in external browser. More...
 
void showForums ()
 Open forums page at SF.net in external browser. More...
 
void showBugTracker ()
 Open bug tracking system at SF.net in external browser. More...
 
void parseCommandLineArguments (const QStringList &args)
 
void createLanguagesList ()
 
void switchToLanguage (int param)
 
void switchToLanguage (const QString &locale)
 
bool alreadyUsedName (const QString &label)
 
bool projectHas2DPlots ()
 
bool projectHas3DPlots ()
 
bool projectHasMatrices ()
 
MyWidgetwindow (const QString &name)
 Returns a pointer to the window named "name". More...
 
QStringList matrixNames ()
 Returns a list with the names of all the matrices in the project. More...
 
Notes
NotenewNote (const QString &caption=QString())
 Creates a new empty note window. More...
 
NoteopenNote (ApplicationWindow *app, const QStringList &flist)
 
void initNote (Note *m, const QString &caption)
 
void saveNoteAs ()
 

Public Member Functions

 ApplicationWindow ()
 
 ApplicationWindow (const QStringList &l)
 
 ~ApplicationWindow ()
 
QString generateUniqueName (const QString &name, bool increment=true)
 
bool batchMode () const
 running a python batch script More...
 
T & addChild (A... args)
 generic factory function to add a child object, to avoid bare pointers More...
 
void scriptingChangeEvent (ScriptingChangeEvent *)
 

Public Attributes

QTranslator * appTranslator
 
QTranslator * qtTranslator
 
QDockWidget logWindow
 
QDockWidget explorerWindow
 
QTextEdit * results {new QTextEdit(&logWindow)}
 
QMdiArea d_workspace
 
QToolBar * file_tools
 
QToolBar * graph_tools
 
QToolBar * table_tools
 
QToolBar * plot_tools
 
QToolBar * graph_3D_tools
 
QToolBar * edit_tools
 
QToolBar * matrix_plot_tools
 
FolderListView lv
 
FolderListView folders
 
QToolButton * btnResults
 
QList< MyWidget * > hiddenWindows
 
QList< MyWidget * > outWindows
 
MyWidgetlastModified
 

Protected Attributes

ScriptingEnvscriptEnv
 

Private Member Functions

void m_setParent (QObject *child, QObject *parent)
 
void m_setParent (QWidget *child, QWidget *parent)
 

Folders

void addFolder ()
 Adds a new folder to the project. More...
 
void deleteFolder ()
 Deletes the current folder. More...
 
bool deleteFolder (Folder *f)
 Ask confirmation from user, deletes the folder f if user confirms and returns true, otherwise returns false;. More...
 
void deleteSelectedItems ()
 Deletes the currently selected items from the list view lv. More...
 
void deactivateFolders ()
 Sets all items in the folders list view to be deactivated. More...
 
bool changeFolder (Folder *newFolder, bool force=false)
 Changes the current folder. More...
 
void folderItemChanged (QTreeWidgetItem *current, QTreeWidgetItem *previous)
 Changes the current folder when the user changes the current item in the QListView "folders". More...
 
void folderItemDoubleClicked (QTreeWidgetItem *it, int column)
 Changes the current folder when the user double-clicks on a folder item in the QListView "lv". More...
 
QMenu * showFolderPopupMenuImpl (QTreeWidgetItem *, bool fromFolders)
 creates and opens the context menu of a folder list view item More...
 
void showFolderPopupMenu (const QPoint &p, bool fromFolders=true)
 connected to the SIGNAL contextMenuRequested from the list views More...
 
void startRenameFolder ()
 starts renaming the selected folder by creating a built-in text editor More...
 
void startRenameFolder (QTreeWidgetItem *item, int)
 
void renameFolder (QTreeWidgetItem *it, int col, const QString &)
 checks whether the new folder name is valid and modifies the name More...
 
void showAllFolderWindows ()
 forces showing all windows in the current folder and subfolders, depending on the user's viewing policy More...
 
void hideAllFolderWindows ()
 forces hidding all windows in the current folder and subfolders, depending on the user's viewing policy More...
 
void hideFolderWindows (Folder *f)
 hides all windows in folder f More...
 
void folderProperties ()
 pops up folder information More...
 
void windowProperties ()
 pops up information about the selected window item More...
 
void projectProperties ()
 pops up information about the current project More...
 
void appendProject ()
 Pops up a file dialog and invokes appendProject(const QString&) on the result. More...
 
void appendProject (const QString &file_name)
 Open the specified project file and add it as a subfolder to the current folder. More...
 
void saveAsProject ()
 
void saveFolderAsProject (Folder *f)
 
void saveFolder (Folder *folder, const QString &fn)
 
void rawSaveFolder (Folder *folder, QIODevice *device)
 
void addFolderListViewItem (Folder *f)
 adds a folder list item to the list view "lv" More...
 
void addListViewItem (MyWidget *w)
 adds a widget list item to the list view "lv" More...
 
void setShowWindowsPolicy (bool)
 hides or shows windows in the current folder and changes the view windows policy More...
 
FolderprojectFolder ()
 returns a pointer to the root project folder More...
 
void find (const QString &s, bool windowNames, bool labels, bool folderNames, bool caseSensitive, bool partialMatch, bool subfolders)
 used by the findDialog More...
 
void dragFolderItems (QList< QTreeWidgetItem * > items)
 initializes the list of items dragged by the user More...
 
void dropFolderItems (QTreeWidgetItem *dest)
 Drop the objects in the list draggedItems to the folder of the destination item. More...
 
void moveFolder (FolderListItem *src, FolderListItem *dest)
 moves a folder item to another More...
 
FoldercurrentFolder ()
 Returns a to the current folder in the project. More...
 

Scripting

enum  { MaxRecentProjects = 10 }
 
QString d_image_export_filter
 Last selected filter in export image dialog. More...
 
bool d_keep_plot_aspect
 
int d_export_vector_size
 
bool d_export_transparency
 
int d_export_quality
 
int d_export_resolution
 
bool d_export_color
 
int d_export_orientation
 Default paper orientation for image exports. More...
 
QLocale d_ASCII_import_locale
 Locale used to specify the decimal separators in imported ASCII files. More...
 
QString d_ASCII_file_filter
 Last selected filter in import ASCII dialog. More...
 
bool d_convert_to_numeric
 
bool d_show_current_folder
 Specifies if only the Tables/Matrices in the current folder should be displayed in the Add/remove curve dialog. More...
 
bool d_scale_plots_on_print
 
bool d_print_cropmarks
 
bool d_show_table_comments
 
bool d_extended_plot_dialog
 
bool d_extended_import_ASCII_dialog
 
bool d_extended_export_dialog
 
bool d_extended_open_dialog
 
bool generateUniformFitPoints
 
bool generatePeakCurves
 
QColor peakCurvesColor
 
QSize d_add_curves_dialog_size
 User defined size for the Add/Remove curves dialog. More...
 
bool fit_scale_errors
 Scale the errors output in fit operations with reduced chi^2. More...
 
int fitPoints
 Number of points in a generated fit curve. More...
 
bool d_2_linear_fit_points
 Calculate only 2 points in a generated linear fit function curve. More...
 
bool pasteFitResultsToPlot
 
bool writeFitResultsToLog
 Write fit output information to Result Log. More...
 
int fit_output_precision
 precision used for the output of the fit operations More...
 
int d_decimal_digits
 default precision to be used for all other operations than fitting More...
 
char d_default_numeric_format
 
Foldercurrent_folder
 pointer to the current folder in the project More...
 
ShowWindowsPolicy show_windows_policy
 Describes which windows are shown when the folder becomes the current folder. More...
 
int d_file_version
 File version code used when opening project files (= maj * 100 + min * 10 + patch) More...
 
QColor workspaceColor
 
QColor panelsColor
 
QColor panelsTextColor
 
QString appStyle
 
QString workingDir
 
QString templatesDir
 Path to the folder where the last template file was opened/saved. More...
 
bool smooth3DMesh
 
bool autoScaleFonts
 
bool autoResizeLayers
 
bool confirmCloseTable
 
bool confirmCloseMatrix
 
bool confirmClosePlot2D
 
bool confirmClosePlot3D
 
bool confirmCloseFolder
 
bool confirmCloseNotes
 
bool canvasFrameOn
 
bool titleOn
 
bool autoSave
 
bool drawBackbones
 
bool allAxesOn
 
bool autoscale2DPlots
 
bool antialiasing2DPlots
 
int majTicksStyle
 
int minTicksStyle
 
int legendFrameStyle
 
int autoSaveTime
 
int axesLineWidth
 
int canvasFrameWidth
 
QColor legendBackground
 
QColor legendTextColor
 
QColor defaultArrowColor
 
int defaultArrowLineWidth
 
int defaultArrowHeadLength
 
int defaultArrowHeadAngle
 
bool defaultArrowHeadFill
 
Qt::PenStyle defaultArrowLineStyle
 
int majTicksLength
 
int minTicksLength
 
int defaultPlotMargin
 
int defaultCurveStyle
 
int defaultCurveLineWidth
 
int defaultSymbolSize
 
int undoLimit
 
QFont appFont
 
QFont plot3DTitleFont
 
QFont plot3DNumbersFont
 
QFont plot3DAxesFont
 
QFont tableTextFont
 
QFont tableHeaderFont
 
QFont plotAxesFont
 
QFont plotLegendFont
 
QFont plotNumbersFont
 
QFont plotTitleFont
 
QColor tableBkgdColor
 
QColor tableTextColor
 
QColor tableHeaderColor
 
QString projectname
 
QString columnSeparator
 
QString appLanguage
 
QString configFilePath
 
QString logInfo
 
QString fitPluginsPath
 
QString asciiDirPath
 
QString imagesDirPath
 
int logID
 
int asciiID
 
int closeID
 
int exportID
 
int printAllID
 
int ignoredLines
 
int savingTimerId
 
int plot3DResolution
 
bool renameColumns
 
bool copiedLayer
 
bool strip_spaces
 
bool simplify_spaces
 
QStringList recentProjects
 
bool saved
 
bool showPlot3DProjection
 
bool showPlot3DLegend
 
bool orthogonal3DPlots =false
 
bool autoscale3DPlots
 
QStringList plot3DColors
 
QStringList locales
 
QStringList functions
 
QStringList xFunctions
 
QStringList yFunctions
 
QStringList rFunctions
 
QStringList thetaFunctions
 
QStringList fitFunctions
 
QStringList surfaceFunc
 
QStringList renamedTables
 List of tables and matrices renamed in order to avoid conflicts when appending a project to a folder. More...
 
Graph::MarkerType copiedMarkerType
 
void scriptError (const QString &message, const QString &scriptName, int lineNumber)
 notify the user that an error occured in the scripting system More...
 
void executeNotes ()
 execute all notes marked auto-exec More...
 
void showScriptingLangDialog ()
 show scripting language selection dialog More...
 
void restartScriptingEnv ()
 create a new environment for the current scripting language More...
 
void scriptPrint (const QString &text)
 print to scripting console (if available) or to stdout More...
 
bool setScriptingLang (const QString &lang, bool force=false, bool batch=false)
 switches to the given scripting language; if this is the same as the current one and force is true, restart it More...
 
void setScriptingLangForBatch (const QString &lang)
 
QStringList tableWindows ()
 
void modified ()
 
void showHelp ()
 
void chooseHelpFolder ()
 

variables used when user copy/paste markers

QString auxMrkText
 
QFont auxMrkFont
 
QColor auxMrkColor
 
QColor auxMrkBkgColor
 
QPoint auxMrkStart
 
QPoint auxMrkEnd
 
Qt::PenStyle auxMrkStyle
 
QString auxMrkFileName
 
int auxMrkBkg
 
int auxMrkWidth
 
bool startArrowOn
 
bool endArrowOn
 
bool fillArrowHead
 
int arrowHeadLength
 
int arrowHeadAngle
 
int specialPlotMenuID
 
int statMenuID
 
int panelMenuID
 
int plot3dID
 
int plotMenuID
 
int newMenuID
 
int recentMenuID
 
int setAsMenuID
 
int fillMenuID
 
int translateMenuID
 
int smoothMenuID
 
int filterMenuID
 
int fitExpMenuID
 
int multiPeakMenuID
 
QString defaultScriptingLang
 The scripting language to use for new projects. More...
 
QString qmPath
 location of translation resources More...
 
bool m_batch
 
QList< QTreeWidgetItem * > draggedItems
 Stores the pointers to the dragged items from the FolderListViews objects. More...
 
QString helpFilePath
 
GraphlastCopiedLayer
 
QSplitter * explorerSplitter
 
QMenu * windowsMenu
 
QMenu * view
 
QMenu * graph
 
QMenu * file
 
QMenu * format
 
QMenu * calcul
 
QMenu * edit
 
QMenu * dataMenu
 
QMenu * recent
 
QMenu * exportPlot
 
QMenu * toolbarsMenu
 
QMenu * d_quick_fit_menu
 
QMenu * help
 
QMenu * type
 
QMenu * plot2D
 
QMenu * plot3D
 
QMenu * specialPlot
 
QMenu * panels
 
QMenu * stat
 
QMenu * decay
 
QMenu * filter
 
QMenu * matrixMenu
 
QMenu * plot3DMenu
 
QMenu * plotDataMenu
 
QMenu * tableMenu
 
QMenu * smooth
 
QMenu * translateMenu
 
QMenu * multiPeakMenu
 
QMenu * scriptingMenu
 
QAction * actionCopyStatusBarText
 
QAction * actionEditCurveRange
 
QAction * actionCurveFullRange
 
QAction * actionShowAllCurves
 
QAction * actionHideCurve
 
QAction * actionHideOtherCurves
 
QAction * actionEditFunction
 
QAction * actionRemoveCurve
 
QAction * actionShowCurveWorksheet
 
QAction * actionShowCurvePlotDialog
 
QAction * actionNewProject
 
QAction * actionNewNote
 
QAction * actionNewTable
 
QAction * actionNewFunctionPlot
 
QAction * actionNewSurfacePlot
 
QAction * actionNewMatrix
 
QAction * actionNewGraph
 
QAction * actionOpen
 
QAction * actionLoadImage
 
QAction * actionSaveProject
 
QAction * actionSaveProjectAs
 
QAction * actionImportImage
 
QAction * actionLoad
 
QAction * actionUndo
 
QAction * actionRedo
 
QAction * actionCopyWindow
 
QAction * actionCutSelection
 
QAction * actionCopySelection
 
QAction * actionPasteSelection
 
QAction * actionClearSelection
 
QAction * locktoolbar
 
QAction * actionShowExplorer
 
QAction * actionShowLog
 
QAction * actionAddLayer
 
QAction * actionShowLayerDialog
 
QAction * actionAutomaticLayout
 
QAction * actionShowHistory
 
QAction * actionExportGraph
 
QAction * actionExportAllGraphs
 
QAction * actionPrint
 
QAction * actionPrintAllPlots
 
QAction * actionShowExportASCIIDialog
 
QAction * actionExportPDF
 
QAction * actionCloseAllWindows
 
QAction * actionClearLogInfo
 
QAction * actionShowPlotWizard
 
QAction * actionShowConfigureDialog
 
QAction * actionShowCurvesDialog
 
QAction * actionAddErrorBars
 
QAction * actionAddFunctionCurve
 
QAction * actionUnzoom
 
QAction * actionNewLegend
 
QAction * actionAddImage
 
QAction * actionAddText
 
QAction * actionPlotL
 
QAction * actionPlotP
 
QAction * actionPlotLP
 
QAction * actionPlotVerticalDropLines
 
QAction * actionPlotSpline
 
QAction * actionPlotVertSteps
 
QAction * actionPlotHorSteps
 
QAction * actionPlotVerticalBars
 
QAction * actionPlotHorizontalBars
 
QAction * actionPlotArea
 
QAction * actionPlotPie
 
QAction * actionPlotVectXYAM
 
QAction * actionPlotVectXYXY
 
QAction * actionPlotHistogram
 
QAction * actionPlotStackedHistograms
 
QAction * actionPlot2VerticalLayers
 
QAction * actionPlot2HorizontalLayers
 
QAction * actionPlot4Layers
 
QAction * actionPlotStackedLayers
 
QAction * actionPlot3DRibbon
 
QAction * actionPlot3DBars
 
QAction * actionPlot3DScatter
 
QAction * actionPlot3DTrajectory
 
QAction * actionShowColStatistics
 
QAction * actionShowRowStatistics
 
QAction * actionShowIntDialog
 
QAction * actionDifferentiate
 
QAction * actionFitLinear
 
QAction * actionShowFitPolynomDialog
 
QAction * actionShowExpDecayDialog
 
QAction * actionShowTwoExpDecayDialog
 
QAction * actionShowExpDecay3Dialog
 
QAction * actionFitExpGrowth
 
QAction * actionFitSigmoidal
 
QAction * actionFitGauss
 
QAction * actionFitLorentz
 
QAction * actionShowFitDialog
 
QAction * actionShowAxisDialog
 
QAction * actionShowTitleDialog
 
QAction * actionAbout
 
QAction * actionShowHelp
 
QAction * actionRename
 
QAction * actionCloseWindow
 
QAction * actionConvertTable
 
QAction * actionAddColToTable
 
QAction * actionDeleteLayer
 
QAction * actionInterpolate
 
QAction * actionResizeActiveWindow
 
QAction * actionHideActiveWindow
 
QAction * actionShowMoreWindows
 
QAction * actionPixelLineProfile
 
QAction * actionIntensityTable
 
QAction * actionShowLineDialog
 
QAction * actionShowImageDialog
 
QAction * actionShowTextDialog
 
QAction * actionActivateWindow
 
QAction * actionMinimizeWindow
 
QAction * actionMaximizeWindow
 
QAction * actionResizeWindow
 
QAction * actionPrintWindow
 
QAction * actionShowPlotGeometryDialog
 
QAction * actionEditSurfacePlot
 
QAction * actionAdd3DData
 
QAction * actionMatrixDeterminant
 
QAction * actionConvertMatrix
 
QAction * actionInvertMatrix
 
QAction * actionPlot3DWireFrame
 
QAction * actionPlot3DHiddenLine
 
QAction * actionPlot3DPolygons
 
QAction * actionPlot3DWireSurface
 
QAction * actionColorMap
 
QAction * actionContourMap
 
QAction * actionGrayMap
 
QAction * actionDeleteFitTables
 
QAction * actionShowGridDialog
 
QAction * actionTimeStamp
 
QAction * actionSmoothSavGol
 
QAction * actionSmoothFFT
 
QAction * actionSmoothAverage
 
QAction * actionFFT
 
QAction * actionLowPassFilter
 
QAction * actionHighPassFilter
 
QAction * actionBandPassFilter
 
QAction * actionBandBlockFilter
 
QAction * actionConvolute
 
QAction * actionDeconvolute
 
QAction * actionCorrelate
 
QAction * actionAutoCorrelate
 
QAction * actionTranslateHor
 
QAction * actionTranslateVert
 
QAction * actionBoxPlot
 
QAction * actionMultiPeakGauss
 
QAction * actionMultiPeakLorentz
 
QAction * actionHomePage
 
QAction * actionHelpForums
 
QAction * actionHelpBugReports
 
QAction * actionShowPlotDialog
 
QAction * actionShowScaleDialog
 
QAction * actionOpenTemplate
 
QAction * actionSaveTemplate
 
QAction * actionNextWindow
 
QAction * actionPrevWindow
 
QAction * actionScriptingLang
 
QAction * actionRestartScripting
 
QAction * actionClearTable
 
QAction * actionGoToCell
 
QAction * actionNoteExecute
 
QAction * actionNoteExecuteAll
 
QAction * actionNoteEvaluate
 
QAction * actionSaveNote
 
QAction * actionAnimate
 
QAction * actionPerspective
 
QAction * actionFitFrame
 
QAction * actionResetRotation
 
QActionGroup * dataTools
 
QAction * btnCursor
 
QAction * btnSelect
 
QAction * btnPicker
 
QAction * btnRemovePoints
 
QAction * btnMovePoints
 
QAction * btnZoomIn
 
QAction * btnZoomOut
 
QAction * btnPointer
 
QAction * btnLine
 
QAction * btnArrow
 
QActionGroup * coord
 
QAction * Box
 
QAction * Frame
 
QAction * None
 
QActionGroup * grids
 
QAction * front
 
QAction * back
 
QAction * right
 
QAction * left
 
QAction * ceil
 
QAction * floor
 
QActionGroup * floorstyle
 
QAction * floordata
 
QAction * flooriso
 
QAction * floornone
 
QActionGroup * plotstyle
 
QAction * wireframe
 
QAction * hiddenline
 
QAction * polygon
 
QAction * filledmesh
 
QAction * pointstyle
 
QAction * barstyle
 
QAction * conestyle
 
QAction * crossHairStyle
 
QSignalMapper * d_plot_mapper
 Manages connection between plot actions and Graph::CurveType values (not used by all plot actions). More...
 
QLabel * d_status_info
 
Projectd_project
 
void removeDependentTableStatistics (const AbstractAspect *aspect)
 
void setActiveWindowFromAction ()
 Set the active window selected from the context menu's dependency list. More...
 
void selectPlotType (int type)
 Manage plot type selection. More...
 
void handleAspectAdded (const AbstractAspect *aspect, int index)
 
void handleAspectAboutToBeRemoved (const AbstractAspect *aspect, int index)
 
QMenu * showWindowMenuImpl (MyWidget *widget)
 Show a context menu for the widget. More...
 
void showWindowMenu (MyWidget *widget)
 
QMenu * createToolbarsMenu ()
 Create a menu for toggeling the toolbars. More...
 
bool validFor3DPlot (Table *table)
 Check whether a table is valid for a 3D plot and display an appropriate error if not. More...
 
bool validFor2DPlot (Table *table, int type)
 Check whether a table is valid for a 2D plot and display an appropriate error if not. More...
 
unsigned int convertOldToNewColorIndex (unsigned int cindex)
 Workaround for the new colors introduced in rev 447. More...
 
void lockToolbar (const bool status)
 

Detailed Description

SciDAVis's main window.

This class contains the main part of the user interface as well as the central project management facilities.

It manages all MyWidget MDI Windows in a project, knows about their organization in Folder objects and contains the parts of the project explorer not implemented in Folder, FolderListItem or FolderListView.

Furthermore, it is responsible for displaying most MDI Windows' context menus and opening all sorts of dialogs.

Future Plans

Split out the project management part into a new Project class. If MyWidget maintains a reference to its parent Project, it should be possible to have its subclasses display their own context menus and dialogs. This is necessary for implementing new plot types or even completely new MyWidget subclasses in plug-ins. It will also make ApplicationWindow more manageable by removing those parts not directly related to the main window.

Project would also take care of basic project file reading/writing (using Qt's XML framework), but delegate most of the work to MyWidget and its subclasses. This is necessary for providing save/restore of classes implemented in plug-ins. Support for foreign formats on the other hand could go into import/export classes (which could also be implemented in plug-ins). Those would interface directly with Project and the MyWidgets it manages. Thus, in addition to supporting QtXML-based save/restore, Project, MyWidget and subclasses will also have to provide generalized save/restore methods/constructors.

Maybe split out the project explorer into a new ProjectExplorer class, depending on how much code is left in ApplicationWindow after the above reorganizations. Think about whether a Model/View approach can be used for Project/ProjectExplorer.

Definition at line 121 of file ApplicationWindow.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MaxRecentProjects 

Definition at line 964 of file ApplicationWindow.h.

964 {MaxRecentProjects = 10};

◆ ShowWindowsPolicy

Enumerator
HideAll 
ActiveFolder 
SubFolders 

Definition at line 129 of file ApplicationWindow.h.

Constructor & Destructor Documentation

◆ ApplicationWindow() [1/2]

ApplicationWindow::ApplicationWindow ( )

Definition at line 179 of file ApplicationWindow.cpp.

181 // logWindow(new QDockWidget(this)),
182 // explorerWindow(new QDockWidget(this)),
183 // results(new QTextEdit(logWindow)),
184 //#ifdef SCRIPTING_CONSOLE
185 // consoleWindow(new QDockWidget(this)),
186 // console(new QTextEdit(consoleWindow)),
187 //#endif
188 // d_workspace(new QMdiArea(this)),
189 // lv(new FolderListView()),
190 // folders(new FolderListView()),
191 
192 // hiddenWindows(new QList<MyWidget*>()),
193 // outWindows(new QList<MyWidget*>()),
194  lastModified(0),
195  current_folder(new Folder(tr("UNTITLED"))),
197  appStyle(qApp->style()->objectName()),
198  appFont(QFont()),
199  projectname("untitled"),
200  logInfo(QString()),
201  savingTimerId(0),
202  copiedLayer(false),
203  renamedTables(QStringList()),
205 #ifdef SEARCH_FOR_UPDATES
206  autoSearchUpdatesRequest(false),
207 #endif
208  lastCopiedLayer(0),
209  explorerSplitter(new QSplitter(Qt::Horizontal, &explorerWindow)),
210  actionNextWindow(new QAction(QIcon(QPixmap(":/next.xpm")),
211  tr("&Next","next window"), this)),
212  actionPrevWindow(new QAction(QIcon(QPixmap(":/prev.xpm")),
213  tr("&Previous","previous window"), this))
214 
215 {
216  setAttribute(Qt::WA_DeleteOnClose);
217  QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, false);
218 
219  setWindowTitle(tr("SciDAVis - untitled"));
220 
221  // Icons
223  IconLoader::lumen_ = IconLoader::isLight(palette().color(QPalette::Window));
224 
225  initFonts();
226  QPixmapCache::setCacheLimit(20*QPixmapCache::cacheLimit ());
227 
228  d_project = new Project();
229  connect(d_project, SIGNAL(aspectAdded(const AbstractAspect *, int)),
230  this, SLOT(handleAspectAdded(const AbstractAspect *, int)));
231  connect(d_project, SIGNAL(aspectAboutToBeRemoved(const AbstractAspect *, int)),
232  this, SLOT(handleAspectAboutToBeRemoved(const AbstractAspect *, int)));
233 
234  explorerWindow.setWindowTitle(tr("Project Explorer"));
235  explorerWindow.setObjectName("explorerWindow"); // this is needed for QMainWindow::restoreState()
236  explorerWindow.setMinimumHeight(150);
237  addDockWidget( Qt::BottomDockWidgetArea, &explorerWindow );
238 
239  folders.setObjectName("folders");
240  folders.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
241  folders.setContextMenuPolicy(Qt::CustomContextMenu);
242 
243  folders.setHeaderLabels(QStringList() << tr("Folder") << QString() );
244  folders.setRootIsDecorated( true );
245  folders.setColumnWidth(1,0); // helps autoScroll
246  folders.hideColumn(1); // helps autoScroll
247 #if QT_VERSION >= 0x050000
248  folders.header()->setSectionsClickable( false );
249  folders.header()->setSectionResizeMode(QHeaderView::ResizeToContents);
250 #else
251  folders.header()->setClickable( false );
252  folders.header()->setResizeMode(QHeaderView::ResizeToContents);
253 #endif
254  folders.header()->hide();
255  folders.setSelectionMode(QTreeWidget::SingleSelection);
256 
257  connect(&folders, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
258  this, SLOT(folderItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
259  connect(&folders, SIGNAL(itemRenamed(QTreeWidgetItem *, int, const QString &)),
260  this, SLOT(renameFolder(QTreeWidgetItem *, int, const QString &)));
261  connect(&folders, SIGNAL(customContextMenuRequested(const QPoint &)),
262  this, SLOT(showFolderPopupMenu(const QPoint &)));
263  connect(&folders, SIGNAL(dragItems(QList<QTreeWidgetItem *>)),
264  this, SLOT(dragFolderItems(QList<QTreeWidgetItem *>)));
265  connect(&folders, SIGNAL(dropItems(QTreeWidgetItem *)),
266  this, SLOT(dropFolderItems(QTreeWidgetItem *)));
267  connect(&folders, SIGNAL(renameItem(QTreeWidgetItem *, int)),
268  this, SLOT(startRenameFolder(QTreeWidgetItem *, int)));
269  connect(&folders, SIGNAL(addFolderItem()), this, SLOT(addFolder()));
270  connect(&folders, SIGNAL(deleteSelection()), this, SLOT(deleteSelectedItems()));
271 
274  folders.setCurrentItem(fli);
275  fli->setExpanded( true );
276 
277  lv.setObjectName("lv");
278  lv.setRootIsDecorated(false);
279  lv.setContextMenuPolicy(Qt::CustomContextMenu);
280  lv.setHeaderLabels(QStringList() << tr("Name") << tr("Type") << tr("View") << tr("Created") << tr("Label"));
281  lv.header()->setStretchLastSection(true);
282  lv.setMinimumHeight(80);
283  lv.setSelectionMode(QTreeWidget::ExtendedSelection);
284 
285  explorerSplitter->addWidget(&folders);
286  explorerSplitter->addWidget(&lv);
287  explorerWindow.setWidget(explorerSplitter);
288  explorerSplitter->setSizes( QList<int>() << 50 << 50);
289  explorerWindow.hide();
290 
291  logWindow.setObjectName("logWindow"); // this is needed for QMainWindow::restoreState()
292  logWindow.setWindowTitle(tr("Results Log"));
293  addDockWidget( Qt::TopDockWidgetArea, &logWindow );
294 
295  results->setReadOnly (true);
296 
297  logWindow.setWidget(results);
298  logWindow.hide();
299 
300 #ifdef SCRIPTING_CONSOLE
301  consoleWindow.setObjectName("consoleWindow"); // this is needed for QMainWindow::restoreState()
302  consoleWindow.setWindowTitle(tr("Scripting Console"));
303  addDockWidget( Qt::TopDockWidgetArea, &consoleWindow );
304  console.setReadOnly(true);
305  consoleWindow.setWidget(&console);
306  consoleWindow.hide();
307 #endif
308 
309  // Needs to be done after initialization of dock windows,
310  // because we now use QDockWidget::toggleViewAction()
311  createActions();
312  initToolBars();
314  initMainMenu();
315 
316  d_workspace.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
317  d_workspace.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
318  d_workspace.setActivationOrder(QMdiArea::ActivationHistoryOrder);
319  setCentralWidget(&d_workspace);
320  setAcceptDrops(true);
321 
322  readSettings();
325 
326  actionNextWindow->setShortcut( tr("F5","next window shortcut") );
327  connect(actionNextWindow, SIGNAL(triggered()), &d_workspace, SLOT(activateNextSubWindow()));
328 
329  actionPrevWindow->setShortcut( tr("F6","previous window shortcut") );
330  connect(actionPrevWindow, SIGNAL(triggered()), &d_workspace, SLOT(activatePreviousSubWindow()));
331 
332  connect(this, SIGNAL(modified()),this, SLOT(modifiedProject()));
333  connect(&d_workspace, SIGNAL(subWindowActivated (QMdiSubWindow*)),this, SLOT(windowActivated(QMdiSubWindow*)));
334  connect(&lv, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)),
335  this, SLOT(folderItemDoubleClicked(QTreeWidgetItem *, int)));
336  connect(&lv, SIGNAL(customContextMenuRequested(const QPoint &)),
337  this, SLOT(showWindowPopupMenu(const QPoint &)));
338  connect(&lv, SIGNAL(dragItems(QList<QTreeWidgetItem *>)),
339  this, SLOT(dragFolderItems(QList<QTreeWidgetItem *>)));
340  connect(&lv, SIGNAL(dropItems(QTreeWidgetItem *)),
341  this, SLOT(dropFolderItems(QTreeWidgetItem *)));
342  connect(&lv, SIGNAL(renameItem(QTreeWidgetItem *, int)),
343  this, SLOT(startRenameFolder(QTreeWidgetItem *, int)));
344  connect(&lv, SIGNAL(addFolderItem()), this, SLOT(addFolder()));
345  connect(&lv, SIGNAL(deleteSelection()), this, SLOT(deleteSelectedItems()));
346  connect(&lv, SIGNAL(itemRenamed(QTreeWidgetItem *, int, const QString &)),
347  this, SLOT(renameWindow(QTreeWidgetItem *, int, const QString &)));
348  connect(scriptEnv, SIGNAL(error(const QString&,const QString&,int)),
349  this, SLOT(scriptError(const QString&,const QString&,int)));
350  connect(scriptEnv, SIGNAL(print(const QString&)), this, SLOT(scriptPrint(const QString&)));
351 
352 #ifdef SEARCH_FOR_UPDATES
353  connect(&http, SIGNAL(finished(QNetworkReply*)), this, SLOT(receivedVersionFile(QNetworkReply*)));
354 #endif
355 
356  // this has to be done after connecting scriptEnv
358 
359  lv.setDragEnabled(true);
360  lv.setAcceptDrops(true);
361  lv.setDefaultDropAction(Qt::MoveAction);
362  folders.setDragEnabled(true);
363  folders.setAcceptDrops(true);
364  folders.setDefaultDropAction(Qt::MoveAction);
365 
366  connect(d_project->undoStack(), SIGNAL(canUndoChanged(bool)), actionUndo, SLOT(setEnabled(bool)));
367  connect(d_project->undoStack(), SIGNAL(canRedoChanged(bool)), actionRedo, SLOT(setEnabled(bool)));
368 }

References actionNextWindow, actionPrevWindow, actionRedo, actionUndo, addFolder(), createActions(), createLanguagesList(), current_folder, d_project, d_workspace, deleteSelectedItems(), dragFolderItems(), dropFolderItems(), explorerSplitter, explorerWindow, folderItemChanged(), folderItemDoubleClicked(), folders, handleAspectAboutToBeRemoved(), handleAspectAdded(), IconLoader::init(), initFonts(), ScriptingEnv::initialize(), initMainMenu(), initPlot3DToolBar(), initToolBars(), insertTranslatedStrings(), IconLoader::isLight(), logWindow, IconLoader::lumen_, lv, modified(), modifiedProject(), print(), readSettings(), renameFolder(), renameWindow(), results, scripted::scriptEnv, scriptError(), scriptPrint(), Folder::setFolderListItem(), showFolderPopupMenu(), showWindowPopupMenu(), startRenameFolder(), Project::undoStack(), and windowActivated().

Referenced by importOPJ(), loadScript(), newProject(), and plotFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ApplicationWindow() [2/2]

ApplicationWindow::ApplicationWindow ( const QStringList &  l)

◆ ~ApplicationWindow()

ApplicationWindow::~ApplicationWindow ( )

Definition at line 13579 of file ApplicationWindow.cpp.

13580 {
13581  if (lastCopiedLayer)
13582  delete lastCopiedLayer;
13583 
13584  QApplication::clipboard()->clear(QClipboard::Clipboard);
13585 }

References lastCopiedLayer.

Member Function Documentation

◆ about

void ApplicationWindow::about ( )
staticslot

Show about dialog.

Definition at line 7445 of file ApplicationWindow.cpp.

7446 {
7447  SciDAVis::about();
7448 }

References SciDAVis::about().

Referenced by createActions(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ activateSubWindow [1/2]

void ApplicationWindow::activateSubWindow ( )
slot

Definition at line 7326 of file ApplicationWindow.cpp.

7327 {
7328  setWindowState(Qt::WindowActive);
7329  raise();
7330  show();
7331  WindowListItem *it = (WindowListItem *)lv.currentItem();
7332  activateSubWindow(it->window());
7333 }

References lv, and WindowListItem::window().

Referenced by createActions(), find(), folderItemDoubleClicked(), loadProject(), main(), openMatrix(), openTable(), and setActiveWindowFromAction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ activateSubWindow [2/2]

void ApplicationWindow::activateSubWindow ( MyWidget w)
slot

Definition at line 7335 of file ApplicationWindow.cpp.

7336 {
7337  if (!w)
7338  return;
7339 
7340  w->setNormal();
7341  d_workspace.setActiveSubWindow(w);
7342 
7343  updateWindowLists(w);
7344  emit modified();
7345 }

References d_workspace, modified(), MyWidget::setNormal(), and updateWindowLists().

Here is the call graph for this function:

◆ add3DData

void ApplicationWindow::add3DData ( )
slot

Definition at line 1737 of file ApplicationWindow.cpp.

1738 {
1739  if (tableWindows().count() <= 0)
1740  {
1741  QMessageBox::warning(this,tr("Warning"),
1742  tr("<h4>There are no tables available in this project.</h4>"
1743  "<p><h4>Please create a table and try again!</h4>"));
1744  return;
1745  }
1746 
1747  // TODO: string list -> Column * list
1748  QStringList zColumns = columnsList(SciDAVis::Z);
1749  if ((int)zColumns.count() <= 0)
1750  {
1751  QMessageBox::critical(this,tr("Warning"),
1752  tr("There are no available columns with plot designation set to Z!"));
1753  return;
1754  }
1755 
1756  DataSetDialog *ad = new DataSetDialog(tr("Column") + " : ", this);
1757  ad->setAttribute(Qt::WA_DeleteOnClose);
1758  connect (ad,SIGNAL(options(const QString&)), this, SLOT(insertNew3DData(const QString&)));
1759  ad->setWindowTitle(tr("Choose data set"));
1760  ad->setCurveNames(zColumns);
1761  ad->exec();
1762 }

References columnsList(), insertNew3DData(), DataSetDialog::setCurveNames(), tableWindows(), and SciDAVis::Z.

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add3DMatrixPlot

void ApplicationWindow::add3DMatrixPlot ( )
slot

Definition at line 1804 of file ApplicationWindow.cpp.

1805 {
1806  QStringList matrices = matrixNames();
1807  if ((int)matrices.count() <= 0)
1808  {
1809  QMessageBox::warning(this, tr("Warning"),
1810  tr("<h4>There are no matrices available in this project.</h4>"
1811  "<p><h4>Please create a matrix and try again!</h4>"));
1812  return;
1813  }
1814 
1815  DataSetDialog *ad = new DataSetDialog(tr("Matrix") + " :", this);
1816  ad->setAttribute(Qt::WA_DeleteOnClose);
1817  connect (ad,SIGNAL(options(const QString&)), this, SLOT(insert3DMatrixPlot(const QString&)));
1818 
1819  ad->setWindowTitle(tr("Choose matrix to plot"));
1820  ad->setCurveNames(matrices);
1821  ad->exec();
1822 }

References insert3DMatrixPlot(), matrixNames(), and DataSetDialog::setCurveNames().

Referenced by showWindowContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addChild()

T& SciDAVisObject< QMainWindow >::addChild ( A...  args)
inlineinherited

generic factory function to add a child object, to avoid bare pointers

Definition at line 21 of file SciDAVisObject.h.

21  {
22  T* child=new T(std::forward<A>(args)...);
23  m_setParent(child,this);
24  return *child;
25  }

◆ addColToTable

void ApplicationWindow::addColToTable ( )
slot

Definition at line 6945 of file ApplicationWindow.cpp.

6946 {
6947  Table* m = (Table*)d_workspace.activeSubWindow();
6948  if ( m )
6949  m->addCol();
6950 }

References Table::addCol(), and d_workspace.

Here is the call graph for this function:

◆ addErrorBars

void ApplicationWindow::addErrorBars ( )
slot

Definition at line 2855 of file ApplicationWindow.cpp.

2856 {
2857  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
2858  return;
2859 
2860  MultiLayer* plot = (MultiLayer*)d_workspace.activeSubWindow();
2861  if (plot->isEmpty())
2862  {
2863  QMessageBox::warning(this,tr("Warning"),
2864  tr("<h4>There are no plot layers available in this window.</h4>"
2865  "<p><h4>Please add a layer and try again!</h4>"));
2866  return;
2867  }
2868 
2869  Graph* g = (Graph*)plot->activeGraph();
2870  if (!g)
2871  return;
2872 
2873  if (!g->curves())
2874  {
2875  QMessageBox::warning(this, tr("Warning"), tr("There are no curves available on this plot!"));
2876  return;
2877  }
2878 
2879  if (g->isPiePlot())
2880  {
2881  QMessageBox::warning(this, tr("Warning"), tr("This functionality is not available for pie plots!"));
2882  return;
2883  }
2884 
2885  ErrDialog* ed = new ErrDialog(this);
2886  ed->setAttribute(Qt::WA_DeleteOnClose);
2887  connect (ed,SIGNAL(options(const QString&,int,const QString&,int)),this,SLOT(defineErrorBars(const QString&,int,const QString&,int)));
2888  connect (ed,SIGNAL(options(const QString&,const QString&,int)),this,SLOT(defineErrorBars(const QString&,const QString&,int)));
2889 
2891  ed->setSrcTables(tableList());
2892  ed->exec();
2893 }

References MultiLayer::activeGraph(), Graph::analysableCurvesList(), Graph::curves(), d_workspace, defineErrorBars(), MultiLayer::isEmpty(), Graph::isPiePlot(), ErrDialog::setCurveNames(), ErrDialog::setSrcTables(), and tableList().

Referenced by createActions(), and defineErrorBars().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addFolder()

void ApplicationWindow::addFolder ( )

Adds a new folder to the project.

Definition at line 12878 of file ApplicationWindow.cpp.

12879 {
12880  QStringList lst = current_folder->subfolders();
12881  QString name = tr("New Folder");
12882  lst = lst.filter( name );
12883  if (!lst.isEmpty())
12884  name += " ("+ QString::number(lst.size()+1)+")";
12885 
12888 
12890  f.setFolderListItem(fi);
12891  fi->setFlags(fi->flags() | Qt::ItemIsEditable);
12892  fi->treeWidget()->setCurrentItem(fi,0);
12893  fi->treeWidget()->editItem(fi, 0);
12894  fi->treeWidget()->resizeColumnToContents(0);
12895 }

References SciDAVisObject< Base >::addChild(), addFolderListViewItem(), current_folder, Folder::folderListItem(), name(), Folder::setFolderListItem(), and Folder::subfolders().

Referenced by ApplicationWindow(), showFolderPopupMenuImpl(), and showListViewPopupMenuImpl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addFolderListViewItem()

void ApplicationWindow::addFolderListViewItem ( Folder f)

adds a folder list item to the list view "lv"

Definition at line 13218 of file ApplicationWindow.cpp.

13219 {
13220  if (!f)
13221  return;
13222 
13223  FolderListItem* it = new FolderListItem(&lv, f);
13224  it->setActive(false);
13225  it->setText(0, f->name());
13226  it->setText(1, tr("Folder"));
13227  it->setText(3, f->birthDate());
13228 }

References Folder::birthDate(), lv, Folder::name(), and FolderListItem::setActive().

Referenced by addFolder(), changeFolder(), and ImportOPJ::createProjectTree().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addFunctionCurve

void ApplicationWindow::addFunctionCurve ( )
slot

Definition at line 8369 of file ApplicationWindow.cpp.

8370 {
8371  QWidget* w = d_workspace.activeSubWindow();
8372  if (!w || !w->inherits("MultiLayer"))
8373  return;
8374 
8375  if (((MultiLayer*)w)->isEmpty())
8376  {
8377  QMessageBox::warning(this,tr("Warning"),
8378  tr("<h4>There are no plot layers available in this window.</h4>"
8379  "<p><h4>Please add a layer and try again!</h4>"));
8380  return;
8381  }
8382 
8383  Graph* g = ((MultiLayer*)w)->activeGraph();
8384  if ( g )
8385  {
8387  if (fd)
8388  fd->setGraph(g);
8389  }
8390 }

References d_workspace, functionDialog(), and FunctionDialog::setGraph().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addImage

void ApplicationWindow::addImage ( )
slot

Definition at line 6753 of file ApplicationWindow.cpp.

6754 {
6755  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
6756  return;
6757 
6758  MultiLayer* plot = (MultiLayer*)d_workspace.activeSubWindow();
6759  if (plot->isEmpty()){
6760  QMessageBox::warning(this,tr("Warning"),
6761  tr("<h4>There are no plot layers available in this window.</h4>"
6762  "<p><h4>Please add a layer and try again!</h4>"));
6763  return;
6764  }
6765 
6766  Graph* g = (Graph*)plot->activeGraph();
6767  if (!g)
6768  return;
6769 
6770  QList<QByteArray> list = QImageReader::supportedImageFormats();
6771  QString filter = tr("Images") + " (", aux1, aux2;
6772  for (int i=0; i<(int)list.count(); i++){
6773  aux1 = " *."+list[i]+" ";
6774  aux2 += " *."+list[i]+";;";
6775  filter += aux1;
6776  }
6777  filter+=");;" + aux2;
6778 
6779  QString fn = QFileDialog::getOpenFileName(this, tr("Insert image from file"), imagesDirPath, filter);
6780  if ( !fn.isEmpty() ){
6781  QFileInfo fi(fn);
6782  imagesDirPath = fi.absolutePath();
6783 
6784  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
6785  g->addImage(fn);
6786  QApplication::restoreOverrideCursor();
6787  }
6788 }

References MultiLayer::activeGraph(), Graph::addImage(), d_workspace, filter, imagesDirPath, and MultiLayer::isEmpty().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addLayer

void ApplicationWindow::addLayer ( )
slot

Definition at line 9083 of file ApplicationWindow.cpp.

9084 {
9085  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
9086  return;
9087 
9088  MultiLayer* plot = (MultiLayer *)d_workspace.activeSubWindow();
9089  switch(QMessageBox::information(this,
9090  tr("Guess best origin for the new layer?"),
9091  tr("Do you want SciDAVis to guess the best position for the new layer?\n Warning: this will rearrange existing layers!"),
9092  tr("&Guess"), tr("&Top-left corner"), tr("&Cancel"), 0, 2 ) )
9093  {
9094  case 0:
9095  {
9096  setPreferences(plot->addLayer());
9097  plot->arrangeLayers(true, false);
9098  }
9099  break;
9100 
9101  case 1:
9102  setPreferences(plot->addLayer(0, 0, plot->size().width(), plot->size().height()));
9103  break;
9104 
9105  case 2:
9106  return;
9107  break;
9108  }
9109 }

References MultiLayer::addLayer(), MultiLayer::arrangeLayers(), d_workspace, and setPreferences().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addListViewItem()

void ApplicationWindow::addListViewItem ( MyWidget w)

adds a widget list item to the list view "lv"

Definition at line 13138 of file ApplicationWindow.cpp.

13139 {
13140  if (!w)
13141  return;
13142 
13143  WindowListItem* it = new WindowListItem(&lv, w);
13144  if (w->inherits("Matrix")){
13145  it->setIcon(0, QIcon(QPixmap(":/matrix.xpm")));
13146  it->setText(1, tr("Matrix"));
13147  }
13148  else if (w->inherits("Table")){
13149  it->setIcon(0, QIcon(QPixmap(":/worksheet.xpm")));
13150  it->setText(1, tr("Table"));
13151  }
13152  else if (w->inherits("Note")){
13153  it->setIcon(0, QIcon(QPixmap(":/note.xpm")));
13154  it->setText(1, tr("Note"));
13155  }
13156  else if (w->inherits("MultiLayer")){
13157  it->setIcon(0, QIcon(QPixmap(":/graph.xpm")));
13158  it->setText(1, tr("Graph"));
13159  }
13160  else if (w->inherits("Graph3D")){
13161  it->setIcon(0, QIcon(QPixmap(":/trajectory.xpm")));
13162  it->setText(1, tr("3D Graph"));
13163  }
13164 
13165  it->setText(0, w->name());
13166  it->setText(2, w->aspect());
13167  it->setText(3, w->birthDate());
13168  it->setText(4, w->windowLabel());
13169 }

References MyWidget::aspect(), MyWidget::birthDate(), lv, MyWidget::name(), and MyWidget::windowLabel().

Referenced by changeFolder(), initBareMultilayerPlot(), initMatrix(), initNote(), initPlot3D(), and initTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addText

void ApplicationWindow::addText ( )
slot

Definition at line 6708 of file ApplicationWindow.cpp.

6709 {
6710  if (!btnPointer->isChecked())
6711  btnPointer->setChecked(true);
6712 
6713  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
6714  return;
6715 
6716  MultiLayer* plot = (MultiLayer*)d_workspace.activeSubWindow();
6717 
6718  switch(QMessageBox::information(this,
6719  tr("Add new layer?"),
6720  tr("Do you want to add the text on a new layer or on the active layer?"),
6721  tr("On &New Layer"), tr("On &Active Layer"), tr("&Cancel"),
6722  0, 2 ) )
6723  {
6724  case 0:
6726  break;
6727 
6728  case 1:
6729  {
6730  if (plot->isEmpty())
6731  {
6732  QMessageBox::warning(this,tr("Warning"),
6733  tr("<h4>There are no plot layers available in this window.</h4>"
6734  "<p><h4>Please add a layer and try again!</h4>"));
6735 
6736  actionAddText->setChecked(false);
6737  return;
6738  }
6739 
6740  Graph *g = (Graph*)plot->activeGraph();
6741  if (g)
6742  g->drawText(true);
6743  }
6744  break;
6745 
6746  case 2:
6747  actionAddText->setChecked(false);
6748  return;
6749  break;
6750  }
6751 }

References actionAddText, MultiLayer::activeGraph(), MultiLayer::addTextLayer(), btnPointer, d_workspace, Graph::drawText(), MultiLayer::isEmpty(), legendBackground, legendFrameStyle, legendTextColor, and plotLegendFont.

Referenced by initToolBars().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addTimeStamp

void ApplicationWindow::addTimeStamp ( )
slot

Definition at line 6683 of file ApplicationWindow.cpp.

6684 {
6685  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
6686  return;
6687 
6688  MultiLayer* plot = (MultiLayer*)d_workspace.activeSubWindow();
6689  if (plot->isEmpty())
6690  {
6691  QMessageBox::warning(this,tr("Warning"),
6692  tr("<h4>There are no plot layers available in this window.</h4>"
6693  "<p><h4>Please add a layer and try again!</h4>"));
6694  return;
6695  }
6696 
6697  Graph* g = (Graph*)plot->activeGraph();
6698  if ( g )
6699  g->addTimeStamp();
6700 }

References MultiLayer::activeGraph(), Graph::addTimeStamp(), d_workspace, and MultiLayer::isEmpty().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ alreadyUsedName

bool ApplicationWindow::alreadyUsedName ( const QString &  label)
slot

Definition at line 12092 of file ApplicationWindow.cpp.

12093 {
12094  QList<MyWidget*> windows = windowsList();
12095  bool used = false;
12096  foreach(MyWidget *widget, windows)
12097  {
12098  if (widget && widget->name() == label)
12099  {
12100  used = true;
12101  break;
12102  }
12103  }
12104  return used;
12105 }

References MyWidget::name(), and windowsList().

Referenced by dataPlot3D(), dataPlotXYZ(), initBareMultilayerPlot(), initNote(), newMatrix(), newPlot3D(), and renameWindow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ analysis

void ApplicationWindow::analysis ( const QString &  whichFit)
slot

Definition at line 10271 of file ApplicationWindow.cpp.

10272 {
10273  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
10274  return;
10275 
10276  Graph* g = ((MultiLayer*)d_workspace.activeSubWindow())->activeGraph();
10277  if (!g || !g->validCurvesDataSize())
10278  return;
10279 
10280  QString curve_title = g->selectedCurveTitle();
10281  if (!curve_title.isNull()) {
10282  analyzeCurve(g, whichFit, curve_title);
10283  return;
10284  }
10285 
10286  QStringList lst = g->analysableCurvesList();
10287  if (lst.count() == 1)
10288  {
10289  const QwtPlotCurve *c = g->curve(lst[0]);
10290  if (c)
10291  analyzeCurve(g, whichFit, lst[0]);
10292  }
10293  else
10294  showDataSetDialog(whichFit);
10295 }

References Graph::analysableCurvesList(), analyzeCurve(), Graph::curve(), d_workspace, Graph::selectedCurveTitle(), showDataSetDialog(), and Graph::validCurvesDataSize().

Referenced by differentiate(), fitGauss(), fitLinear(), fitLorentz(), and fitSigmoidal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ analyzeCurve

void ApplicationWindow::analyzeCurve ( Graph g,
const QString &  whichFit,
const QString &  curveTitle 
)
slot

Definition at line 10231 of file ApplicationWindow.cpp.

10232 {
10233  if(whichFit=="fitLinear" || whichFit=="fitSigmoidal" || whichFit=="fitGauss" || whichFit=="fitLorentz")
10234  {
10235  Fit *fitter = 0;
10236  if (whichFit == "fitLinear")
10237  fitter = new LinearFit (this, g);
10238  else if (whichFit == "fitSigmoidal")
10239  fitter = new SigmoidalFit (this, g);
10240  else if(whichFit == "fitGauss")
10241  fitter = new GaussFit(this, g);
10242  else if(whichFit == "fitLorentz")
10243  fitter = new LorentzFit(this, g);
10244 
10245  if (fitter->setDataFromCurve(curveTitle))
10246  {
10247  if (whichFit != "fitLinear")
10248  fitter->guessInitialValues();
10249 
10250  fitter->scaleErrors(fit_scale_errors);
10252 
10253  if (whichFit == "fitLinear" && d_2_linear_fit_points)
10255  else
10257  fitter->fit();
10259  fitter->showLegend();
10260  delete fitter;
10261  }
10262  }
10263  else if(whichFit == "differentiate")
10264  {
10265  Differentiation *diff = new Differentiation(this, g, curveTitle);
10266  diff->run();
10267  delete diff;
10268  }
10269 }

References d_2_linear_fit_points, Fit::fit(), fit_output_precision, fit_scale_errors, fitPoints, Fit::generateFunction(), generateUniformFitPoints, Fit::guessInitialValues(), pasteFitResultsToPlot, Filter::run(), Fit::scaleErrors(), Filter::setDataFromCurve(), Filter::setOutputPrecision(), and Filter::showLegend().

Referenced by DataSetDialog::accept(), and analysis().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ appendProject() [1/2]

void ApplicationWindow::appendProject ( )

Pops up a file dialog and invokes appendProject(const QString&) on the result.

Definition at line 12146 of file ApplicationWindow.cpp.

12147 {
12148  OpenProjectDialog *open_dialog = new OpenProjectDialog(this, false);
12149  open_dialog->setDirectory(workingDir);
12150  open_dialog->setExtensionWidget(0);
12151  if (open_dialog->exec() != QDialog::Accepted || open_dialog->selectedFiles().isEmpty())
12152  return;
12153  workingDir = open_dialog->directory().path();
12154  appendProject(open_dialog->selectedFiles()[0]);
12155 }

References ExtensibleFileDialog::setExtensionWidget(), and workingDir.

Referenced by open(), and showFolderPopupMenuImpl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ appendProject() [2/2]

void ApplicationWindow::appendProject ( const QString &  file_name)

Open the specified project file and add it as a subfolder to the current folder.

Definition at line 12157 of file ApplicationWindow.cpp.

12158 {
12159  if (fn.isEmpty())
12160  return;
12161 
12162  QFile * file;
12163 
12164  QFileInfo fi(fn);
12165  workingDir = fi.absolutePath();
12166 
12167  if (fn.contains(".sciprj") ||
12168  fn.contains(".qti") || fn.contains(".opj", Qt::CaseInsensitive) ||
12169  fn.contains(".ogm", Qt::CaseInsensitive) || fn.contains(".ogw", Qt::CaseInsensitive) ||
12170  fn.contains(".ogg", Qt::CaseInsensitive) || fn.contains(".org", Qt::CaseInsensitive))
12171  {
12172  QFileInfo f(fn);
12173  if (!f.exists ())
12174  {
12175  QMessageBox::critical(this, tr("File opening error"),
12176  tr("The file: <b>%1</b> doesn't exist!").arg(fn));
12177  return;
12178  }
12179  }
12180  else
12181  {
12182  QMessageBox::critical(this,tr("File opening error"),
12183  tr("The file: <b>%1</b> is not a SciDAVis or Origin project file!").arg(fn));
12184  return;
12185  }
12186 
12187  if (fn.endsWith(".gz", Qt::CaseInsensitive) || fn.endsWith(".gz~", Qt::CaseInsensitive)) {
12188  file = openCompressedFile(fn);
12189  if (!file) return;
12190  } else {
12191  file = new QFile(fn);
12192  file->open(QIODevice::ReadOnly);
12193  }
12194 
12195  recentProjects.removeAll(fn);
12196  recentProjects.push_front(fn);
12198 
12199  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
12200 
12201  Folder *cf = current_folder;
12203  folders.blockSignals (true);
12204  blockSignals (true);
12205 
12206  QString baseName = fi.baseName();
12207  QStringList lst = current_folder->subfolders();
12208  int n = lst.count(baseName);
12209  if (n)
12210  {//avoid identical subfolder names
12211  while (lst.count(baseName + QString::number(n)))
12212  n++;
12213  baseName += QString::number(n);
12214  }
12215 
12217  FolderListItem *fli = new FolderListItem(item, current_folder);
12219 
12220  if (fn.contains(".opj", Qt::CaseInsensitive) || fn.contains(".ogm", Qt::CaseInsensitive) ||
12221  fn.contains(".ogw", Qt::CaseInsensitive) || fn.contains(".ogg", Qt::CaseInsensitive) ||
12222  fn.contains(".org", Qt::CaseInsensitive))
12223 #ifdef ORIGIN_IMPORT
12224  ImportOPJ(this, fn);
12225 #else
12226  {
12227  QMessageBox::critical(this, tr("File opening error"), tr("SciDAVis currently does not support Origin import. If you are interested in reviving and maintaining an Origin import filter, contact the developers.").arg(fn));
12228  return;
12229  }
12230 #endif
12231  else
12232  {
12233  QTextStream t(file);
12234  t.setCodec(QTextCodec::codecForName("UTF-8"));
12235 
12236  QString s = t.readLine();
12237  lst = s.split(QRegExp("\\s"), QString::SkipEmptyParts);
12238  QString version = lst[1];
12239  lst = version.split(".", QString::SkipEmptyParts);
12240  if(fn.endsWith(".qti",Qt::CaseInsensitive) || fn.endsWith(".qti.gz",Qt::CaseInsensitive) )
12241  d_file_version = 100*(lst[0]).toInt()+10*(lst[1]).toInt()+(lst[2]).toInt();
12242  else
12243  d_file_version = ((lst[0]).toInt() << 16) + ((lst[1]).toInt() << 8) + (lst[2]).toInt();
12244 
12245  t.readLine();
12246  if (d_file_version < 73)
12247  t.readLine();
12248 
12249  //process tables and matrix information
12250  while ( !t.atEnd())
12251  {
12252  s = t.readLine(4096); // workaround for safely reading very big lines
12253  lst.clear();
12254  if (s.left(8) == "<folder>")
12255  {
12256  lst = s.split("\t");
12257  Folder& f = current_folder->addChild<Folder>(lst[1]);
12258  f.setBirthDate(lst[2]);
12259  f.setModificationDate(lst[3]);
12260  if(lst.count() > 4)
12261  if (lst[4] == "current")
12262  cf = &f;
12263 
12265  fli->setText(0, lst[1]);
12266  f.setFolderListItem(fli);
12267 
12268  current_folder = &f;
12269  }
12270  else if (s == "<table>")
12271  {
12272  openTable(this, t);
12273  }
12274  else if (s == "<matrix>")
12275  {
12276  while ( s != "</matrix>" )
12277  {
12278  s=t.readLine();
12279  lst<<s;
12280  }
12281  lst.pop_back();
12282  openMatrix(this, lst);
12283  }
12284  else if (s == "<note>")
12285  {
12286  for (int i=0; i<3; i++)
12287  {
12288  s = t.readLine();
12289  lst << s;
12290  }
12291  Note* m = openNote(this, lst);
12292  QStringList cont;
12293  while ( s != "</note>" )
12294  {
12295  s=t.readLine();
12296  cont << s;
12297  }
12298  cont.pop_back();
12299  m->restore(cont);
12300  }
12301  else if (s == "</folder>")
12302  {
12303  Folder *parent = (Folder *)current_folder->parent();
12304  if (!parent)
12306  else
12307  current_folder = parent;
12308  }
12309  }
12310 
12311  //process the rest
12312  t.seek(0);
12313 
12314  MultiLayer *plot=0;
12315  while ( !t.atEnd())
12316  {
12317  s=t.readLine(4096); // workaround for safely reading very big lines
12318  if (s.left(8) == "<folder>")
12319  {
12320  lst = s.split("\t");
12322  }
12323  else if (s == "<multiLayer>")
12324  {//process multilayers information
12325  s=t.readLine();
12326  QStringList graph=s.split("\t");
12327  QString caption=graph[0];
12328  plot=multilayerPlot(caption);
12329  plot->setCols(graph[1].toInt());
12330  plot->setRows(graph[2].toInt());
12331  setListViewDate(caption, graph[3]);
12332  plot->setBirthDate(graph[3]);
12333  plot->blockSignals(true);
12334 
12335  restoreWindowGeometry(this, plot, t.readLine());
12336 
12337  if (d_file_version > 71)
12338  {
12339  QStringList lst=t.readLine().split("\t");
12340  plot->setWindowLabel(lst[1]);
12341  setListViewLabel(plot->name(),lst[1]);
12342  plot->setCaptionPolicy((MyWidget::CaptionPolicy)lst[2].toInt());
12343  }
12344 
12345  if (d_file_version > 83)
12346  {
12347  QStringList lst=t.readLine().split("\t", QString::SkipEmptyParts);
12348  plot->setMargins(lst[1].toInt(),lst[2].toInt(),lst[3].toInt(),lst[4].toInt());
12349  lst=t.readLine().split("\t", QString::SkipEmptyParts);
12350  plot->setSpacing(lst[1].toInt(),lst[2].toInt());
12351  lst=t.readLine().split("\t", QString::SkipEmptyParts);
12352  plot->setLayerCanvasSize(lst[1].toInt(),lst[2].toInt());
12353  lst=t.readLine().split("\t", QString::SkipEmptyParts);
12354  plot->setAlignement(lst[1].toInt(),lst[2].toInt());
12355  }
12356 
12357  while ( s!="</multiLayer>" )
12358  {//open layers
12359  s=t.readLine();
12360  if (s.left(7)=="<graph>")
12361  {
12362  lst.clear();
12363  while ( s!="</graph>" )
12364  {
12365  s=t.readLine();
12366  lst<<s;
12367  }
12368  openGraph(this, plot, lst);
12369  }
12370  }
12371  plot->blockSignals(false);
12372  }
12373  else if (s == "<SurfacePlot>")
12374  {//process 3D plots information
12375  lst.clear();
12376  while ( s!="</SurfacePlot>" )
12377  {
12378  s=t.readLine();
12379  lst<<s;
12380  }
12381  openSurfacePlot(this,lst);
12382  }
12383  else if (s == "</folder>")
12384  {
12385  Folder *parent = (Folder *)current_folder->parent();
12386  if (!parent)
12388  else
12389  current_folder = parent;
12390  }
12391  }
12392  file->close(); delete file;
12393  }
12394 
12395  folders.blockSignals (false);
12396  //change folder to user defined current folder
12397  changeFolder(cf);
12398  blockSignals (false);
12399  renamedTables = QStringList();
12400  QApplication::restoreOverrideCursor();
12401 }

References SciDAVisObject< Base >::addChild(), changeFolder(), current_folder, d_file_version, file, Folder::findSubfolder(), Folder::folderListItem(), folders, graph, multilayerPlot(), data::n, MyWidget::name(), openCompressedFile(), openGraph(), openMatrix(), openNote(), openSurfacePlot(), openTable(), projectFolder(), recentProjects, renamedTables, Note::restore(), restoreWindowGeometry(), MultiLayer::setAlignement(), Folder::setBirthDate(), MyWidget::setBirthDate(), MyWidget::setCaptionPolicy(), MultiLayer::setCols(), Folder::setFolderListItem(), MultiLayer::setLayerCanvasSize(), setListViewDate(), setListViewLabel(), MultiLayer::setMargins(), Folder::setModificationDate(), MultiLayer::setRows(), MultiLayer::setSpacing(), MyWidget::setWindowLabel(), Folder::subfolders(), updateRecentProjectsList(), and workingDir.

Here is the call graph for this function:

◆ applyUserSettings

void ApplicationWindow::applyUserSettings ( )
slot

Definition at line 386 of file ApplicationWindow.cpp.

387 {
388  updateAppFonts();
390 
391  d_workspace.setBackground (workspaceColor);
392 
393  QPalette cg;
394  cg.setColor(QPalette::Base, QColor(panelsColor));
395  qApp->setPalette(cg);
396 
397  cg.setColor(QPalette::Text, QColor(panelsTextColor) );
398  cg.setColor(QPalette::WindowText, QColor(panelsTextColor) );
399  cg.setColor(QPalette::HighlightedText, QColor(panelsTextColor) );
400  lv.setPalette(cg);
401  results->setPalette(cg);
402 
403  cg.setColor(QPalette::Text, QColor(Qt::green) );
404  cg.setColor(QPalette::HighlightedText, QColor(Qt::darkGreen) );
405  cg.setColor(QPalette::Base, QColor(Qt::black) );
406 }

References d_workspace, defaultScriptingLang, lv, panelsColor, panelsTextColor, results, setScriptingLang(), updateAppFonts(), and workspaceColor.

Referenced by importOPJ(), loadScript(), main(), newProject(), openProject(), and plotFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ autoArrangeLayers

void ApplicationWindow::autoArrangeLayers ( )
slot

Rearrange the layersin order to fit to the size of the plot window.

Definition at line 9072 of file ApplicationWindow.cpp.

9073 {
9074  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
9075  return;
9076 
9077  MultiLayer* plot = (MultiLayer *)d_workspace.activeSubWindow();
9078  plot->setMargins(5, 5, 5, 5);
9079  plot->setSpacing(5, 5);
9080  plot->arrangeLayers(true, false);
9081 }

References MultiLayer::arrangeLayers(), d_workspace, MultiLayer::setMargins(), and MultiLayer::setSpacing().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ autoCorrelate

void ApplicationWindow::autoCorrelate ( )
slot

Definition at line 5538 of file ApplicationWindow.cpp.

5539 {
5540  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("Table"))
5541  return;
5542 
5543  Table *t = (Table*)d_workspace.activeSubWindow();
5544  QStringList s = t->selectedColumns();
5545  if ((int)s.count() != 1)
5546  {
5547  QMessageBox::warning(this, tr("Error"), tr("Please select exactly one columns for this operation!"));
5548  return;
5549  }
5550 
5551  Correlation *cor = new Correlation(this, t, s[0], s[0]);
5552  cor->run();
5553  delete cor;
5554 }

References d_workspace, Filter::run(), and Table::selectedColumns().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bandBlockFilterDialog

void ApplicationWindow::bandBlockFilterDialog ( )
slot

Definition at line 6403 of file ApplicationWindow.cpp.

6404 {
6406 }

References FFTFilter::BandBlock, and showFilterDialog().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bandPassFilterDialog

void ApplicationWindow::bandPassFilterDialog ( )
slot

Definition at line 6398 of file ApplicationWindow.cpp.

6399 {
6401 }

References FFTFilter::BandPass, and showFilterDialog().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ batchMode()

bool ApplicationWindow::batchMode ( ) const
inline

running a python batch script

Definition at line 156 of file ApplicationWindow.h.

References m_batch.

Referenced by PythonScripting::initialize().

Here is the caller graph for this function:

◆ cascade

void ApplicationWindow::cascade ( )
slot

Arranges all the visible project windows in a cascade pattern.

Definition at line 13604 of file ApplicationWindow.cpp.

13605 {
13606  QList<QMdiSubWindow*> windows = d_workspace.subWindowList(QMdiArea::StackingOrder);
13607 
13608  const int xoffset = 13;
13609  const int yoffset = 20;
13610 
13611  int x = 0;
13612  int y = 0;
13613 
13614  foreach (QWidget *w, windows){
13615  w->activateWindow();
13616  w->showNormal();
13617  ((MyWidget *)w)->setStatus(MyWidget::Normal);
13619 
13620  w->setGeometry(x, y, w->width(), w->height());
13621  w->raise();
13622  x += xoffset;
13623  y += yoffset;
13624  }
13625  modifiedProject();
13626 }

References d_workspace, modifiedProject(), MyWidget::Normal, and updateWindowStatus().

Referenced by windowsMenuAboutToShow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ change3DData [1/2]

void ApplicationWindow::change3DData ( )
slot

Definition at line 1764 of file ApplicationWindow.cpp.

1765 {
1766  DataSetDialog *ad = new DataSetDialog(tr("Column") + " : ", this);
1767  ad->setAttribute(Qt::WA_DeleteOnClose);
1768  connect (ad,SIGNAL(options(const QString&)), this, SLOT(change3DData(const QString&)));
1769 
1770  ad->setWindowTitle(tr("Choose data set"));
1771  // TODO: string list -> Column * list
1773  ad->exec();
1774 }

References columnsList(), DataSetDialog::setCurveNames(), and SciDAVis::Z.

Referenced by showWindowContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ change3DData [2/2]

void ApplicationWindow::change3DData ( const QString &  colName)
slot

Definition at line 1842 of file ApplicationWindow.cpp.

1843 {
1844  if ( d_workspace.activeSubWindow() && d_workspace.activeSubWindow()->inherits("Graph3D"))
1845  {
1846  ((Graph3D*)d_workspace.activeSubWindow())->changeDataColumn(table(colName),colName);
1847  emit modified();
1848  }
1849 }

References d_workspace, modified(), and table().

Here is the call graph for this function:

◆ change3DMatrix [1/2]

void ApplicationWindow::change3DMatrix ( )
slot

Definition at line 1776 of file ApplicationWindow.cpp.

1777 {
1778  DataSetDialog *ad = new DataSetDialog(tr("Matrix") + " : ", this);
1779  ad->setAttribute(Qt::WA_DeleteOnClose);
1780  connect (ad, SIGNAL(options(const QString&)), this, SLOT(change3DMatrix(const QString&)));
1781 
1782  ad->setWindowTitle(tr("Choose matrix to plot"));
1783  ad->setCurveNames(matrixNames());
1784 
1785  Graph3D* g = (Graph3D*)d_workspace.activeSubWindow();
1786  if (g && g->matrix())
1787  ad->setCurentDataSet(g->matrix()->name());
1788  ad->exec();
1789 }

References d_workspace, Graph3D::matrix(), matrixNames(), Matrix::name(), DataSetDialog::setCurentDataSet(), and DataSetDialog::setCurveNames().

Referenced by showWindowContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ change3DMatrix [2/2]

void ApplicationWindow::change3DMatrix ( const QString &  matrix_name)
slot

Definition at line 1791 of file ApplicationWindow.cpp.

1792 {
1793  if ( d_workspace.activeSubWindow() && d_workspace.activeSubWindow()->inherits("Graph3D"))
1794  {
1795  Graph3D* g = (Graph3D*)d_workspace.activeSubWindow();
1796  Matrix *m = matrix(matrix_name);
1797  if (m && g)
1798  g->changeMatrix(m);
1799 
1800  emit modified();
1801  }
1802 }

References Graph3D::changeMatrix(), d_workspace, matrix(), and modified().

Here is the call graph for this function:

◆ changeAppFont

void ApplicationWindow::changeAppFont ( const QFont &  f)
slot

Definition at line 3074 of file ApplicationWindow.cpp.

3075 {
3076  if (appFont == f)
3077  return;
3078 
3079  appFont=f;
3080  updateAppFonts();
3081 }

References appFont, and updateAppFonts().

Referenced by ConfigDialog::apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ changeAppStyle

void ApplicationWindow::changeAppStyle ( const QString &  s)
slot

Definition at line 3059 of file ApplicationWindow.cpp.

3060 {
3061  // style keys are case insensitive
3062  if (appStyle.toLower() == s.toLower())
3063  return;
3064 
3065  qApp->setStyle(s);
3066  appStyle = qApp->style()->objectName();
3067 
3068  QPalette pal = qApp->palette();
3069  pal.setColor (QPalette::Active, QPalette::Base, QColor(panelsColor));
3070  qApp->setPalette(pal);
3071 
3072 }

References appStyle, and panelsColor.

Referenced by ConfigDialog::apply(), and readSettings().

Here is the caller graph for this function:

◆ changeFolder()

bool ApplicationWindow::changeFolder ( Folder newFolder,
bool  force = false 
)

Changes the current folder.

Definition at line 13025 of file ApplicationWindow.cpp.

13026 {
13027  if (current_folder == newFolder && !force)
13028  return false;
13029 
13031  newFolder->folderListItem()->setActive(true);
13032 
13033  Folder *oldFolder = current_folder;
13034  MyWidget::Status old_active_window_state = MyWidget::Normal;
13035  MyWidget *old_active_window = oldFolder->activeWindow();
13036  if (old_active_window)
13037  old_active_window_state = old_active_window->status();
13038 
13039  MyWidget::Status active_window_state = MyWidget::Normal;
13040  MyWidget *active_window = newFolder->activeWindow();
13041  if (active_window)
13042  active_window_state = active_window->status();
13043 
13044  d_workspace.blockSignals(true);
13045  hideFolderWindows(oldFolder);
13046  current_folder = newFolder;
13047 
13048  lv.clear();
13049 
13050  QObjectList folderLst = newFolder->children();
13051  if(!folderLst.isEmpty()){
13052  foreach(QObject *f, folderLst)
13053  addFolderListViewItem(static_cast<Folder *>(f));
13054  }
13055 
13056  QList<MyWidget *> lst = newFolder->windowsList();
13057  foreach(MyWidget *w, lst){
13058  w->blockSignals(true);
13059  if (!hiddenWindows.contains(w) && !outWindows.contains(w) && show_windows_policy != HideAll){
13060  //show only windows in the current folder which are not hidden by the user
13061  if(w->status() == MyWidget::Normal)
13062  w->showNormal();
13063  else if(w->status() == MyWidget::Minimized)
13064  w->showMinimized();
13065  }
13066  else
13068 
13069  addListViewItem(w);
13070  }
13071 
13072  if (!(newFolder->children()).isEmpty()){
13073  FolderListItem *fi = newFolder->folderListItem();
13074  FolderListItem *item = (FolderListItem *)fi->child(0);
13075  if (!item)
13076  return false;
13077  int initial_depth = item->depth();
13078  QTreeWidgetItemIterator it(item);
13079  while (item && item->depth() >= initial_depth)
13080  {//show/hide windows in subfolders
13081  lst = ((Folder *)item->folder())->windowsList();
13082  foreach(MyWidget *w, lst){
13083  if (!hiddenWindows.contains(w) && !outWindows.contains(w)){
13085  if (w->status() == MyWidget::Normal || w->status() == MyWidget::Maximized)
13086  w->showNormal();
13087  else if (w->status() == MyWidget::Minimized)
13088  w->showMinimized();
13089  }
13090  else if (w->isVisible())
13091  w->hide();
13092  }
13093  }
13094  it++;
13095  item = (FolderListItem *)(*it);
13096  }
13097  }
13098 
13099  d_workspace.blockSignals(false);
13100 
13101  if (active_window){
13102  d_workspace.setActiveSubWindow(active_window);
13103  if (active_window_state == MyWidget::Minimized)
13104  active_window->showMinimized();//d_workspace.setActiveWindow() makes minimized windows to be shown normally
13105  else if (active_window_state == MyWidget::Maximized){
13106  if (active_window->inherits("Graph3D"))
13107  ((Graph3D *)active_window)->setIgnoreFonts(true);
13108  active_window->showMaximized();
13109  if (active_window->inherits("Graph3D"))
13110  ((Graph3D *)active_window)->setIgnoreFonts(false);
13111  }
13112  current_folder->setActiveWindow(active_window);
13113  customMenu(active_window);
13114  customToolBars(active_window);
13115  }
13116 
13117  if (old_active_window){
13118  old_active_window->setStatus(old_active_window_state);
13119  oldFolder->setActiveWindow(old_active_window);
13120  }
13121 
13122  foreach(MyWidget *w, newFolder->windowsList())
13123  w->blockSignals(false);
13124 
13125  return true;
13126 }

References Folder::activeWindow(), addFolderListViewItem(), addListViewItem(), current_folder, customMenu(), customToolBars(), d_workspace, deactivateFolders(), FolderListItem::depth(), FolderListItem::folder(), Folder::folderListItem(), MyWidget::Hidden, hiddenWindows, HideAll, hideFolderWindows(), lv, MyWidget::Maximized, MyWidget::Minimized, MyWidget::Normal, outWindows, FolderListItem::setActive(), Folder::setActiveWindow(), MyWidget::setStatus(), show_windows_policy, MyWidget::status(), SubFolders, windowsList(), and Folder::windowsList().

Referenced by appendProject(), ImportOPJ::createProjectTree(), deleteFolder(), dropFolderItems(), folderItemChanged(), and loadProject().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ changeMatrixName

void ApplicationWindow::changeMatrixName ( const QString &  oldName,
const QString &  newName 
)
slot

Definition at line 1648 of file ApplicationWindow.cpp.

1649 {
1650  QList<MyWidget*> lst = windowsList();
1651  foreach(MyWidget *w, lst)
1652  {
1653  if (w->inherits("Graph3D"))
1654  {
1655  QString s = ((Graph3D*)w)->formula();
1656  if (s.contains(oldName))
1657  {
1658  s.replace(oldName, newName);
1659  ((Graph3D*)w)->setPlotAssociation(s);
1660  }
1661  }
1662  else if (w->inherits("MultiLayer"))
1663  {
1664  QWidgetList graphsList = ((MultiLayer*)w)->graphPtrs();
1665  foreach (QWidget *gr_widget, graphsList)
1666  {
1667  Graph* g = (Graph*)gr_widget;
1668  for (int i=0; i<g->curves(); i++)
1669  {
1670  QwtPlotItem *sp = (QwtPlotItem *)g->plotItem(i);
1671  if (sp && sp->rtti() == QwtPlotItem::Rtti_PlotSpectrogram && sp->title().text() == oldName)
1672  sp->setTitle(newName);
1673  }
1674  }
1675  }
1676  }
1677 }

References Graph::curves(), Graph::plotItem(), and windowsList().

Referenced by renameWindow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ chooseHelpFolder

void ApplicationWindow::chooseHelpFolder ( )
privateslot

Definition at line 8211 of file ApplicationWindow.cpp.

8212 {
8213 // TODO: move all paths & location handling to anothor class
8214 #if defined(Q_OS_WIN)
8215  const QString locateDefaultHelp = qApp->applicationDirPath() +
8216  QDir::toNativeSeparators("/manual/index.html");
8217 #else
8218  const QString locateDefaultHelp =
8219  QDir::toNativeSeparators("/usr/share/doc/scidavis/manual/index.html");
8220 #endif
8221  if (QFile(locateDefaultHelp).exists())
8222  {
8223  helpFilePath = locateDefaultHelp;
8224  } else {
8225  const QString dir = QFileDialog::getExistingDirectory(this,
8226  tr("Choose the location of the SciDAVis help folder!"),
8227  qApp->applicationDirPath());
8228 
8229  if (!dir.isEmpty())
8230  {
8231  const QFile helpFile(dir + QDir::toNativeSeparators("/index.html"));
8232  // TODO: Probably some kind of validity check to make sure that the
8233  // index.html file belongs to sciDavis
8234  if (!helpFile.exists())
8235  {
8236  QMessageBox::information(this, tr("index.html File Not Found!"),
8237  tr("There is no file called <b>index.html</b> in this folder."
8238  "<br>Please choose another folder!"));
8239  } else {
8240  helpFilePath = dir + QDir::toNativeSeparators("/index.html");
8241  }
8242  }
8243  }
8244 }

References helpFilePath.

Referenced by createActions(), and showHelp().

Here is the caller graph for this function:

◆ clearFitFunctionsList

void ApplicationWindow::clearFitFunctionsList ( )
slot

Definition at line 8457 of file ApplicationWindow.cpp.

8458 {
8459  fitFunctions.clear();
8460 }

References fitFunctions.

Referenced by showFitDialog().

Here is the caller graph for this function:

◆ clearLogInfo

void ApplicationWindow::clearLogInfo ( )
slot

Definition at line 8435 of file ApplicationWindow.cpp.

8436 {
8437  if (!logInfo.isEmpty())
8438  {
8439  logInfo="";
8440  results->setText(logInfo);
8441  emit modified();
8442  }
8443 }

References logInfo, modified(), and results.

Referenced by createActions().

Here is the caller graph for this function:

◆ clearParamFunctionsList

void ApplicationWindow::clearParamFunctionsList ( )
slot

Definition at line 8445 of file ApplicationWindow.cpp.

8446 {
8447  xFunctions.clear();
8448  yFunctions.clear();
8449 }

References xFunctions, and yFunctions.

Referenced by functionDialog().

Here is the caller graph for this function:

◆ clearPolarFunctionsList

void ApplicationWindow::clearPolarFunctionsList ( )
slot

Definition at line 8451 of file ApplicationWindow.cpp.

8452 {
8453  rFunctions.clear();
8454  thetaFunctions.clear();
8455 }

References rFunctions, and thetaFunctions.

Referenced by functionDialog().

Here is the caller graph for this function:

◆ clearSelection

void ApplicationWindow::clearSelection ( )
slot

Definition at line 6952 of file ApplicationWindow.cpp.

6953 {
6954  if(lv.hasFocus())
6955  {
6957  return;
6958  }
6959 
6960  QWidget* m = (QWidget*)d_workspace.activeSubWindow();
6961  if (!m)
6962  return;
6963 
6964  if (m->inherits("Table"))
6965  ((Table*)m)->clearSelection();
6966  else if (m->inherits("Matrix"))
6967  ((Matrix*)m)->clearSelection();
6968  else if (m->inherits("MultiLayer"))
6969  {
6970  Graph* g = ((MultiLayer*)m)->activeGraph();
6971  if (!g)
6972  return;
6973 
6974  if (g->titleSelected())
6975  g->removeTitle();
6976  else if (g->markerSelected())
6977  g->removeMarker();
6978  }
6979  else if (m->inherits("Note"))
6980  ((Note*)m)->textWidget()->clear();
6981  emit modified();
6982 }

References d_workspace, deleteSelectedItems(), lv, Graph::markerSelected(), modified(), Graph::removeMarker(), Graph::removeTitle(), and Graph::titleSelected().

Referenced by createActions(), showMarkerPopupMenuImpl(), and showWindowContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clearSurfaceFunctionsList

void ApplicationWindow::clearSurfaceFunctionsList ( )
slot

Definition at line 8467 of file ApplicationWindow.cpp.

8468 {
8469  surfaceFunc.clear();
8470 }

References surfaceFunc.

Referenced by editSurfacePlot(), and newSurfacePlot().

Here is the caller graph for this function:

◆ clearTable

void ApplicationWindow::clearTable ( )
slot

Definition at line 13532 of file ApplicationWindow.cpp.

13533 {
13534  Table *t = (Table*)d_workspace.activeSubWindow();
13535  if (!t || !t->inherits("Table"))
13536  return;
13537 
13538  if (QMessageBox::question(this, tr("Warning"),
13539  tr("This will clear the contents of all the data associated with the table. Are you sure?"),
13540  tr("&Yes"), tr("&No"), QString(), 0, 1 ) )
13541  return;
13542  else
13543  t->clear();
13544 }

References Table::clear(), and d_workspace.

Here is the call graph for this function:

◆ clone [1/2]

MyWidget * ApplicationWindow::clone ( )
slot

Definition at line 7147 of file ApplicationWindow.cpp.

7148 {
7149  MyWidget* w = (MyWidget*)d_workspace.activeSubWindow();
7150  if (!w){
7151  QMessageBox::critical(this,tr("Duplicate window error"),
7152  tr("There are no windows available in this project!"));
7153  return 0;
7154  }
7155 
7156  return clone(w);
7157 }

References d_workspace.

Referenced by createActions().

Here is the caller graph for this function:

◆ clone [2/2]

MyWidget * ApplicationWindow::clone ( MyWidget w)
slot

Definition at line 7159 of file ApplicationWindow.cpp.

7160 {
7161  if (!w)
7162  return 0;
7163 
7164  MyWidget* nw = 0;
7165  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
7166 
7167  if (w->inherits("MultiLayer")){
7168  nw = multilayerPlot(generateUniqueName(tr("Graph")));
7169  ((MultiLayer *)nw)->copy(this, (MultiLayer *)w);
7170  } else if (w->inherits("Table")){
7171  Table *t = (Table *)w;
7172  QString caption = generateUniqueName(tr("Table"));
7173  nw = newTable(caption, t->numRows(), t->numCols());
7174  ((Table *)nw)->copy(t);
7175  } else if (w->inherits("Graph3D")){
7176  Graph3D *g = (Graph3D *)w;
7177  if (!g->hasData()){
7178  QApplication::restoreOverrideCursor();
7179  QMessageBox::warning(this, tr("Duplicate error"), tr("Empty 3D surface plots cannot be duplicated!"));
7180  return 0;
7181  }
7182 
7183  QString caption = generateUniqueName(tr("Graph"));
7184  QString s = g->formula();
7185  if (g->userFunction())
7186  nw = newPlot3D(caption, s, g->xStart(), g->xStop(), g->yStart(), g->yStop(), g->zStart(), g->zStop());
7187  else if (s.endsWith("(Z)"))
7188  nw = dataPlotXYZ(caption, s, g->xStart(),g->xStop(), g->yStart(),g->yStop(),g->zStart(),g->zStop());
7189  else if (s.endsWith("(Y)"))//Ribbon plot
7190  nw = dataPlot3D(caption, s, g->xStart(),g->xStop(), g->yStart(),g->yStop(),g->zStart(),g->zStop());
7191  else
7192  nw = openMatrixPlot3D(caption, s, g->xStart(), g->xStop(), g->yStart(), g->yStop(),g->zStart(),g->zStop());
7193 
7194  if (!nw)
7195  return 0;
7196 
7197  ((Graph3D *)nw)->copy(g);
7198  customToolBars((MyWidget*)nw);
7199  } else if (w->inherits("Matrix")){
7200  nw = newMatrix(((Matrix *)w)->numRows(), ((Matrix *)w)->numCols());
7201  ((Matrix *)nw)->copy((Matrix *)w);
7202  } else if (w->inherits("Note")){
7203  nw = newNote();
7204  if (nw)
7205  ((Note*)nw)->setText(((Note*)w)->text());
7206  }
7207 
7208  if (nw){
7209  if (w->inherits("MultiLayer")){
7210  if (w->status() == MyWidget::Maximized)
7211  nw->showMaximized();
7212  } else if (w->inherits("Graph3D")){
7213  ((Graph3D*)nw)->setIgnoreFonts(true);
7214  if (w->status() == MyWidget::Maximized){
7215  w->showNormal();
7216  w->resize(500,400);
7217  nw->resize(w->size());
7218  nw->showMaximized();
7219  } else
7220  nw->resize(w->size());
7221  ((Graph3D*)nw)->setIgnoreFonts(false);
7222  } else {
7223  nw->resize(w->size());
7224  nw->showNormal();
7225  }
7226 
7227  nw->setWindowLabel(w->windowLabel());
7228  nw->setCaptionPolicy(w->captionPolicy());
7229  setListViewLabel(nw->name(), w->windowLabel());
7230  }
7231  QApplication::restoreOverrideCursor();
7232  return nw;
7233 }

References MyWidget::captionPolicy(), customToolBars(), dataPlot3D(), dataPlotXYZ(), Graph3D::formula(), generateUniqueName(), Graph3D::hasData(), MyWidget::Maximized, multilayerPlot(), MyWidget::name(), newMatrix(), newNote(), newPlot3D(), newTable(), Table::numCols(), Table::numRows(), openMatrixPlot3D(), MyWidget::setCaptionPolicy(), setListViewLabel(), MyWidget::setWindowLabel(), MyWidget::status(), Graph3D::userFunction(), MyWidget::windowLabel(), Graph3D::xStart(), Graph3D::xStop(), Graph3D::yStart(), Graph3D::yStop(), Graph3D::zStart(), and Graph3D::zStop().

Here is the call graph for this function:

◆ closeActiveWindow

void ApplicationWindow::closeActiveWindow ( )
slot

Definition at line 7384 of file ApplicationWindow.cpp.

7385 {
7386  QWidget *w=(QWidget *)d_workspace.activeSubWindow();
7387  if (w)
7388  w->close();
7389 }

References d_workspace.

Referenced by createActions(), and windowsMenuAboutToShow().

Here is the caller graph for this function:

◆ closeEvent

void ApplicationWindow::closeEvent ( QCloseEvent *  ce)
slot

Definition at line 7661 of file ApplicationWindow.cpp.

7662 {
7663  if (!saved)
7664  {
7665  QString s = tr("Save changes to project: <p><b> %1 </b> ?").arg(projectname);
7666  switch( QMessageBox::information(this, tr("SciDAVis"), s, tr("Yes"), tr("No"),
7667  tr("Cancel"), 0, 2 ) )
7668  {
7669  case 0:
7670  if (!saveProject())
7671  {
7672  ce->ignore();
7673  break;
7674  }
7675  saveSettings();//the recent projects must be saved
7676  ce->accept();
7677  break;
7678 
7679  case 1:
7680  default:
7681  saveSettings();//the recent projects must be saved
7682  ce->accept();
7683  break;
7684 
7685  case 2:
7686  ce->ignore();
7687  break;
7688  }
7689  }
7690  else
7691  {
7692  saveSettings();//the recent projects must be saved
7693  ce->accept();
7694  }
7695 }

References projectname, saved, saveProject(), and saveSettings().

Here is the call graph for this function:

◆ closeWindow

void ApplicationWindow::closeWindow ( MyWidget window)
slot

Definition at line 7423 of file ApplicationWindow.cpp.

7424 {
7425  if (!window)
7426  return;
7427 
7430 
7431  //update list view in project explorer
7432  QTreeWidgetItem *it=lv.findItems (window->name(), Qt::MatchExactly | Qt::MatchCaseSensitive).at(0);
7433  if (it)
7434  lv.takeTopLevelItem(lv.indexOfTopLevelItem(it));
7435 
7436  if (window->inherits("Matrix"))
7437  window->setParent(0);
7438  else if (window->inherits("Table"))
7439  window->setParent(0);
7440  else
7441  window->deleteLater();
7442  emit modified();
7443 }

References MyWidget::folder(), lv, modified(), MyWidget::name(), Folder::removeWindow(), removeWindowFromLists(), and window().

Referenced by connectMultilayerPlot(), connectSurfacePlot(), connectTable(), deleteFolder(), handleAspectAboutToBeRemoved(), and initNote().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ columnsList [1/2]

QStringList ApplicationWindow::columnsList ( )
slot

Definition at line 5218 of file ApplicationWindow.cpp.

5219 {
5220  QList<MyWidget*> windows = windowsList();
5221  QStringList list;
5222  foreach (MyWidget *w, windows)
5223  {
5224  if (!w->inherits("Table"))
5225  continue;
5226 
5227  Table *t = (Table *)w;
5228  for (int i=0; i < t->numCols(); i++)
5229  {
5230  list << QString(t->name()) + "_" + t->colLabel(i);
5231  }
5232  }
5233 
5234  return list;
5235 }

References Table::colLabel(), Table::name(), Table::numCols(), and windowsList().

Referenced by add3DData(), change3DData(), showPlotDialog(), and showPlotWizard().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ columnsList [2/2]

QStringList ApplicationWindow::columnsList ( SciDAVis::PlotDesignation  plotType)
slot

Definition at line 5197 of file ApplicationWindow.cpp.

5198 {
5199  QList<MyWidget*> windows = windowsList();
5200  QStringList list;
5201  foreach (MyWidget *w, windows)
5202  {
5203  if (!w->inherits("Table"))
5204  continue;
5205 
5206  Table *t = (Table *)w;
5207  for (int i=0; i < t->numCols(); i++)
5208  {
5209  if (t->colPlotDesignation(i) == plotType)
5210  list << QString(t->name()) + "_" + t->colLabel(i);
5211  }
5212  }
5213 
5214  return list;
5215 }

References Table::colLabel(), Table::colPlotDesignation(), Table::name(), Table::numCols(), and windowsList().

Referenced by AxesDialog::setGraph(), and CurvesDialog::showCurrentFolder().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ connectMultilayerPlot

void ApplicationWindow::connectMultilayerPlot ( MultiLayer g)
slot

Definition at line 10349 of file ApplicationWindow.cpp.

10350 {
10351  connect (g,SIGNAL(showTitleBarMenu()),this,SLOT(showWindowTitleBarMenu()));
10352  connect (g,SIGNAL(showTextDialog()),this,SLOT(showTextDialog()));
10353  connect (g,SIGNAL(showPlotDialog(int)),this,SLOT(showPlotDialog(int)));
10354  connect (g,SIGNAL(showScaleDialog(int)), this, SLOT(showScalePageFromAxisDialog(int)));
10355  connect (g,SIGNAL(showAxisDialog(int)), this, SLOT(showAxisPageFromAxisDialog(int)));
10356  connect (g,SIGNAL(showCurveContextMenu(int)), this, SLOT(showCurveContextMenu(int)));
10357  connect (g,SIGNAL(showWindowContextMenu()),this,SLOT(showWindowContextMenu()));
10358  connect (g,SIGNAL(showCurvesDialog()),this,SLOT(showCurvesDialog()));
10359  connect (g,SIGNAL(drawLineEnded(bool)), btnPointer, SLOT(setChecked(bool)));
10360  connect (g,SIGNAL(drawTextOff()),this, SLOT(disableAddText()));
10361  connect (g,SIGNAL(showXAxisTitleDialog()),this,SLOT(showXAxisTitleDialog()));
10362  connect (g,SIGNAL(showYAxisTitleDialog()),this,SLOT(showYAxisTitleDialog()));
10363  connect (g,SIGNAL(showRightAxisTitleDialog()),this,SLOT(showRightAxisTitleDialog()));
10364  connect (g,SIGNAL(showTopAxisTitleDialog()),this,SLOT(showTopAxisTitleDialog()));
10365  connect (g,SIGNAL(showMarkerPopupMenu()),this,SLOT(showMarkerPopupMenu()));
10366  connect (g,SIGNAL(closedWindow(MyWidget*)),this, SLOT(closeWindow(MyWidget*)));
10367  connect (g,SIGNAL(hiddenWindow(MyWidget*)),this, SLOT(hideWindow(MyWidget*)));
10368  connect (g,SIGNAL(statusChanged(MyWidget*)),this, SLOT(updateWindowStatus(MyWidget*)));
10369  connect (g,SIGNAL(cursorInfo(const QString&)),d_status_info,SLOT(setText(const QString&)));
10370  connect (g,SIGNAL(showImageDialog()),this,SLOT(showImageDialog()));
10371  connect (g,SIGNAL(createTable(const QString&,const QString&,QList<Column*>)),
10372  this,SLOT(newTable(const QString&,const QString&,QList<Column*>)));
10373  connect (g,SIGNAL(viewTitleDialog()),this,SLOT(showTitleDialog()));
10374  connect (g,SIGNAL(modifiedWindow(MyWidget*)),this,SLOT(modifiedProject(MyWidget*)));
10375  connect (g,SIGNAL(modifiedPlot()),this,SLOT(modifiedProject()));
10376  connect (g,SIGNAL(showLineDialog()),this,SLOT(showLineDialog()));
10377  connect (g,SIGNAL(showGeometryDialog()),this,SLOT(showPlotGeometryDialog()));
10378  connect (g,SIGNAL(pasteMarker()),this,SLOT(pasteSelection()));
10379  connect (g,SIGNAL(showGraphContextMenu()),this,SLOT(showGraphContextMenu()));
10380  connect (g,SIGNAL(showLayerButtonContextMenu()),this,SLOT(showLayerButtonContextMenu()));
10381  connect (g,SIGNAL(createIntensityTable(const QString&)),this,SLOT(importImage(const QString&)));
10382  connect (g, SIGNAL(setPointerCursor()),this, SLOT(pickPointerCursor()));
10383 
10385 }

References MyWidget::askOnCloseEvent(), btnPointer, closeWindow(), confirmClosePlot2D, d_status_info, disableAddText(), hideWindow(), importImage(), modifiedProject(), newTable(), pasteSelection(), pickPointerCursor(), showAxisDialog(), showAxisPageFromAxisDialog(), showCurveContextMenu(), showCurvesDialog(), showGraphContextMenu(), showImageDialog(), showLayerButtonContextMenu(), showLineDialog(), showMarkerPopupMenu(), showPlotDialog(), showPlotGeometryDialog(), showRightAxisTitleDialog(), showScaleDialog(), showScalePageFromAxisDialog(), showTextDialog(), showTitleDialog(), showTopAxisTitleDialog(), showWindowContextMenu(), showWindowTitleBarMenu(), showXAxisTitleDialog(), showYAxisTitleDialog(), and updateWindowStatus().

Referenced by initBareMultilayerPlot().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ connectSurfacePlot

void ApplicationWindow::connectSurfacePlot ( Graph3D plot)
slot

Definition at line 10335 of file ApplicationWindow.cpp.

10336 {
10337  connect (plot,SIGNAL(showTitleBarMenu()),this,SLOT(showWindowTitleBarMenu()));
10338  connect (plot,SIGNAL(showContextMenu()),this,SLOT(showWindowContextMenu()));
10339  connect (plot,SIGNAL(showOptionsDialog()),this,SLOT(showPlot3dDialog()));
10340  connect (plot,SIGNAL(closedWindow(MyWidget*)),this, SLOT(closeWindow(MyWidget*)));
10341  connect (plot,SIGNAL(hiddenWindow(MyWidget*)),this, SLOT(hideWindow(MyWidget*)));
10342  connect (plot,SIGNAL(statusChanged(MyWidget*)),this, SLOT(updateWindowStatus(MyWidget*)));
10343  connect (plot,SIGNAL(modified()),this, SIGNAL(modified()));
10344  connect (plot,SIGNAL(custom3DActions(MyWidget*)),this, SLOT(custom3DActions(MyWidget*)));
10345 
10347 }

References MyWidget::askOnCloseEvent(), closeWindow(), confirmClosePlot3D, custom3DActions(), hideWindow(), modified(), showPlot3dDialog(), showWindowContextMenu(), showWindowTitleBarMenu(), and updateWindowStatus().

Referenced by initPlot3D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ connectTable

void ApplicationWindow::connectTable ( Table w)
slot

Definition at line 10387 of file ApplicationWindow.cpp.

10388 {
10389  connect (w,SIGNAL(showTitleBarMenu()),this,SLOT(showWindowTitleBarMenu()));
10390  connect (w,SIGNAL(statusChanged(MyWidget*)),this, SLOT(updateWindowStatus(MyWidget*)));
10391  connect (w,SIGNAL(hiddenWindow(MyWidget*)),this, SLOT(hideWindow(MyWidget*)));
10392  connect (w,SIGNAL(closedWindow(MyWidget*)),this, SLOT(closeWindow(MyWidget*)));
10393  connect (w,SIGNAL(aboutToRemoveCol(const QString&)),this,SLOT(removeCurves(const QString&)));
10394  connect (w,SIGNAL(modifiedData(Table *, const QString&)),
10395  this,SLOT(updateCurves(Table *, const QString&)));
10396  connect (w,SIGNAL(modifiedWindow(MyWidget*)),this,SLOT(modifiedProject(MyWidget*)));
10397  connect (w,SIGNAL(changedColHeader(const QString&,const QString&)),this,SLOT(updateColNames(const QString&,const QString&)));
10398 
10399 #ifdef LEGACY_CODE_0_2_x
10400  connect(w->d_future_table, SIGNAL(requestRowStatistics()), this, SLOT(showRowStatistics()));
10401  connect(w->d_future_table, SIGNAL(requestColumnStatistics()), this, SLOT(showColStatistics()));
10402 #endif
10404 }

References MyWidget::askOnCloseEvent(), closeWindow(), confirmCloseTable, Table::d_future_table, hideWindow(), modifiedProject(), removeCurves(), showColStatistics(), showRowStatistics(), showWindowTitleBarMenu(), updateColNames(), updateCurves(), and updateWindowStatus().

Referenced by initTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convertMatrixToTable

Table * ApplicationWindow::convertMatrixToTable ( )
slot

Definition at line 2711 of file ApplicationWindow.cpp.

2712 {
2713  Matrix* m = (Matrix*)d_workspace.activeSubWindow();
2714  if (!m)
2715  return 0;
2716 
2717  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
2718 
2719  int rows = m->numRows();
2720  int cols = m->numCols();
2721 
2722  Table* w = new Table(scriptEnv, rows, cols, "", &d_workspace, 0);
2723  for (int i = 0; i<rows; i++)
2724  {
2725  for (int j = 0; j<cols; j++)
2726  w->setCell(i, j, m->cell(i,j));
2727  }
2728 
2729  w->setName(generateUniqueName(tr("Table")));
2731  w->setWindowLabel(m->windowLabel());
2733  w->resize(m->size());
2734  w->showNormal();
2735 
2736  QApplication::restoreOverrideCursor();
2737 
2738  return w;
2739 }

References AbstractAspect::addChild(), MyWidget::captionPolicy(), Matrix::cell(), Table::d_future_table, d_project, d_workspace, generateUniqueName(), Matrix::numCols(), Matrix::numRows(), scripted::scriptEnv, Table::setCaptionPolicy(), Table::setCell(), Table::setName(), Table::setWindowLabel(), and Matrix::windowLabel().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convertOldToNewColorIndex()

unsigned int ApplicationWindow::convertOldToNewColorIndex ( unsigned int  cindex)
private

Workaround for the new colors introduced in rev 447.

Definition at line 13593 of file ApplicationWindow.cpp.

13594 {
13595  if( (cindex == 13) || (cindex == 14) ) // white and light gray
13596  return cindex + 4;
13597 
13598  if(cindex == 15) // dark gray
13599  return cindex + 8;
13600 
13601  return cindex;
13602 }

Referenced by openGraph().

Here is the caller graph for this function:

◆ convertTableToMatrix

Matrix * ApplicationWindow::convertTableToMatrix ( )
slot

Definition at line 2763 of file ApplicationWindow.cpp.

2764 {
2765  Table* m = (Table*)d_workspace.activeSubWindow();
2766  if (!m)
2767  return 0;
2768 
2769  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
2770 
2771  int rows = m->numRows();
2772  int cols = m->numCols();
2773 
2774  Matrix* w = new Matrix(scriptEnv, rows, cols, "", 0, 0);
2775  for (int i = 0; i<rows; i++)
2776  {
2777  for (int j = 0; j<cols; j++)
2778  w->setText(i, j, m->text(i,j));
2779  }
2780 
2781  QString caption = generateUniqueName(m->name());
2782  w->setName(caption);
2784 
2786  w->resize(m->size());
2787  w->showNormal();
2788 
2789  QApplication::restoreOverrideCursor();
2790  return w;
2791 }

References AbstractAspect::addChild(), MyWidget::captionPolicy(), Matrix::d_future_matrix, d_project, d_workspace, generateUniqueName(), Table::name(), Table::numCols(), Table::numRows(), scripted::scriptEnv, Matrix::setCaptionPolicy(), Matrix::setName(), Matrix::setText(), and Table::text().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ convolute

void ApplicationWindow::convolute ( )
slot

Definition at line 5556 of file ApplicationWindow.cpp.

5557 {
5558  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("Table"))
5559  return;
5560 
5561  Table *t = (Table*)d_workspace.activeSubWindow();
5562  QStringList s = t->selectedColumns();
5563  if ((int)s.count() != 2)
5564  {
5565  QMessageBox::warning(this, tr("Error"), tr("Please select two columns for this operation:\n the first represents the signal and the second the response function!"));
5566  return;
5567  }
5568 
5569  Convolution *cv = new Convolution(this, t, s[0], s[1]);
5570  cv->run();
5571  delete cv;
5572 }

References d_workspace, Filter::run(), and Table::selectedColumns().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copyActiveLayer

void ApplicationWindow::copyActiveLayer ( )
slot

Definition at line 10199 of file ApplicationWindow.cpp.

10200 {
10201  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("MultiLayer"))
10202  return;
10203 
10204  copiedLayer=true;
10205 
10206  Graph *g = ((MultiLayer *)d_workspace.activeSubWindow())->activeGraph();
10207  delete lastCopiedLayer;
10208  lastCopiedLayer = new Graph (0, 0, 0);
10209  lastCopiedLayer->setAttribute(Qt::WA_DeleteOnClose);
10210  lastCopiedLayer->setGeometry(0, 0, g->width(), g->height());
10211  lastCopiedLayer->copy(this,g);
10212  g->copyImage();
10213 }

References copiedLayer, Graph::copy(), Graph::copyImage(), d_workspace, and lastCopiedLayer.

Referenced by copySelection(), cutSelection(), showGraphContextMenu(), and showLayerButtonContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copyMarker

void ApplicationWindow::copyMarker ( )
slot

Definition at line 7049 of file ApplicationWindow.cpp.

7050 {
7051  QWidget* m = (QWidget*)d_workspace.activeSubWindow();
7052  MultiLayer* plot = (MultiLayer*)m;
7053  Graph* g = (Graph*)plot->activeGraph();
7054  if (g && g->markerSelected())
7055  {
7056  g->copyMarker();
7058  QRect rect=g->copiedMarkerRect();
7059  auxMrkStart=rect.topLeft();
7060  auxMrkEnd=rect.bottomRight();
7061 
7063  {
7064  Legend *m = (Legend *) g->selectedMarkerPtr();
7065  auxMrkText=m->text();
7066  auxMrkColor=m->textColor();
7067  auxMrkFont=m->font();
7068  auxMrkBkg=m->frameStyle();
7070  }
7071  else if (copiedMarkerType == Graph::Arrow)
7072  {
7074  auxMrkWidth=m->width();
7075  auxMrkColor=m->color();
7076  auxMrkStyle=m->style();
7078  endArrowOn=m->hasEndArrow();
7082  }
7083  else if (copiedMarkerType == Graph::Image)
7084  {
7085  ImageMarker *im = (ImageMarker *) g->selectedMarkerPtr();
7086  if (im)
7087  auxMrkFileName = im->fileName();
7088  }
7089  }
7090  copiedLayer=false;
7091 }

References MultiLayer::activeGraph(), Graph::Arrow, arrowHeadAngle, arrowHeadLength, auxMrkBkg, auxMrkBkgColor, auxMrkColor, auxMrkEnd, auxMrkFileName, auxMrkFont, auxMrkStart, auxMrkStyle, auxMrkText, auxMrkWidth, Legend::backgroundColor(), ArrowMarker::color(), copiedLayer, Graph::copiedMarkerRect(), copiedMarkerType, Graph::copiedMarkerType(), Graph::copyMarker(), d_workspace, endArrowOn, ImageMarker::fileName(), fillArrowHead, ArrowMarker::filledArrowHead(), Legend::font(), Legend::frameStyle(), ArrowMarker::hasEndArrow(), ArrowMarker::hasStartArrow(), ArrowMarker::headAngle(), ArrowMarker::headLength(), Graph::Image, Graph::markerSelected(), Graph::selectedMarkerPtr(), startArrowOn, ArrowMarker::style(), Graph::Text, Legend::text(), Legend::textColor(), and ArrowMarker::width().

Referenced by copySelection(), and cutSelection().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copySelection

void ApplicationWindow::copySelection ( )
slot

Definition at line 6984 of file ApplicationWindow.cpp.

6985 {
6986  if(results->hasFocus())
6987  {
6988  results->copy();
6989  return;
6990  }
6991 
6992  QWidget* m = (QWidget*)d_workspace.activeSubWindow();
6993  if (!m)
6994  return;
6995 
6996  if (m->inherits("Table"))
6997  ((Table*)m)->copySelection();
6998  else if (m->inherits("Matrix"))
6999  ((Matrix*)m)->copySelection();
7000  else if (m->inherits("MultiLayer"))
7001  {
7002  MultiLayer* plot = (MultiLayer*)m;
7003  if (!plot || plot->layers() == 0)
7004  return;
7005 
7006  Graph* g = (Graph*)plot->activeGraph();
7007  if (!g) return;
7008  if (g->markerSelected())
7009  copyMarker();
7010  else
7011  copyActiveLayer();
7012  }
7013  else if (m->inherits("Note"))
7014  ((Note*)m)->textWidget()->copy();
7015 }

References MultiLayer::activeGraph(), copyActiveLayer(), copyMarker(), d_workspace, MultiLayer::layers(), Graph::markerSelected(), and results.

Referenced by createActions(), showMarkerPopupMenuImpl(), and showWindowContextMenu().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copyStatusBarText

void ApplicationWindow::copyStatusBarText ( )
slot

Copy the status bar text to the clipboard.

Definition at line 13690 of file ApplicationWindow.cpp.

13691 {
13692  QApplication::clipboard()->setText(d_status_info->text());
13693 }

References d_status_info.

Referenced by createActions().

Here is the caller graph for this function:

◆ correlate

void ApplicationWindow::correlate ( )
slot

Definition at line 5520 of file ApplicationWindow.cpp.

5521 {
5522  if (!d_workspace.activeSubWindow() || !d_workspace.activeSubWindow()->inherits("Table"))
5523  return;
5524 
5525  Table *t = (Table*)d_workspace.activeSubWindow();
5526  QStringList s = t->selectedColumns();
5527  if ((int)s.count() != 2)
5528  {
5529  QMessageBox::warning(this, tr("Error"), tr("Please select two columns for this operation!"));
5530  return;
5531  }
5532 
5533  Correlation *cor = new Correlation(this, t, s[0], s[1]);
5534  cor->run();
5535  delete cor;
5536 }

References d_workspace, Filter::run(), and Table::selectedColumns().

Referenced by createActions().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ createActions

void ApplicationWindow::createActions ( )
slot

Definition at line 10446 of file ApplicationWindow.cpp.

10447 {
10448  actionNewProject = new QAction(QIcon(QPixmap(":/new.xpm")), tr("New &Project"), this);
10449  actionNewProject->setShortcut( tr("Ctrl+N") );
10450  connect(actionNewProject, SIGNAL(triggered()), this, SLOT(newProject()));
10451 
10452  actionNewGraph = new QAction(QIcon(QPixmap(":/new_graph.xpm")), tr("New &Graph"), this);
10453  actionNewGraph->setShortcut( tr("Ctrl+G") );
10454  connect(actionNewGraph, SIGNAL(triggered()), this, SLOT(newGraph()));
10455 
10456  actionNewNote = new QAction(QIcon(QPixmap(":/new_note.xpm")), tr("New &Note / Script"), this);
10457  actionNewNote->setShortcut( tr("Ctrl+ALT+N") );
10458  connect(actionNewNote, SIGNAL(triggered()), this, SLOT(newNote()));
10459 
10460  actionNewTable = new QAction(QIcon(QPixmap(":/table.xpm")), tr("New &Table"), this);
10461  actionNewTable->setShortcut( tr("Ctrl+T") );
10462  connect(actionNewTable, SIGNAL(triggered()), this, SLOT(newTable()));
10463 
10464  actionNewMatrix = new QAction(QIcon(QPixmap(":/new_matrix.xpm")), tr("New &Matrix"), this);
10465  actionNewMatrix->setShortcut( tr("Ctrl+M") );
10466  connect(actionNewMatrix, SIGNAL(triggered()), this, SLOT(newMatrix()));
10467 
10468  actionNewFunctionPlot = new QAction(QIcon(QPixmap(":/newF.xpm")), tr("New &Function Plot"), this);
10469  actionNewFunctionPlot->setShortcut( tr("Ctrl+F") );
10470  connect(actionNewFunctionPlot, SIGNAL(triggered()), this, SLOT(functionDialog()));
10471 
10472  actionNewSurfacePlot = new QAction(QIcon(QPixmap(":/newFxy.xpm")), tr("New 3D &Surface Plot"), this);
10473  actionNewSurfacePlot->setShortcut( tr("Ctrl+ALT+Z") );
10474  connect(actionNewSurfacePlot, SIGNAL(triggered()), this, SLOT(newSurfacePlot()));
10475 
10476  // FIXME: "..." should be added before translating, but this would break translations
10477  actionOpen = new QAction(QIcon(QPixmap(":/fileopen.xpm")), tr("&Open")+"...", this);
10478  actionOpen->setShortcut( tr("Ctrl+O") );
10479  connect(actionOpen, SIGNAL(triggered()), this, SLOT(open()));
10480 
10481  actionLoadImage = new QAction(tr("Open Image &File"), this);
10482  actionLoadImage->setShortcut( tr("Ctrl+I") );
10483  connect(actionLoadImage, SIGNAL(triggered()), this, SLOT(loadImage()));
10484 
10485  actionImportImage = new QAction(tr("Import I&mage..."), this);
10486  connect(actionImportImage, SIGNAL(triggered()), this, SLOT(importImage()));
10487 
10488  actionSaveProject = new QAction(QIcon(QPixmap(":/filesave.xpm")), tr("&Save Project"), this);
10489  actionSaveProject->setShortcut( tr("Ctrl+S") );
10490  connect(actionSaveProject, SIGNAL(triggered()), this, SLOT(saveProject()));
10491  savedProject();
10492 
10493  actionSaveProjectAs = new QAction(tr("Save Project &As..."), this);
10494  connect(actionSaveProjectAs, SIGNAL(triggered()), this, SLOT(saveProjectAs()));
10495 
10496  actionOpenTemplate = new QAction(QIcon(QPixmap(":/open_template.xpm")),tr("Open Temp&late..."), this);
10497  connect(actionOpenTemplate, SIGNAL(triggered()), this, SLOT(openTemplate()));
10498 
10499  actionSaveTemplate = new QAction(QIcon(QPixmap(":/save_template.xpm")), tr("Save As &Template..."), this);
10500  connect(actionSaveTemplate, SIGNAL(triggered()), this, SLOT(saveAsTemplate()));
10501 
10502  actionSaveNote = new QAction(tr("Save Note As..."), this);
10503  connect(actionSaveNote, SIGNAL(triggered()), this, SLOT(saveNoteAs()));
10504 
10505  actionLoad = new QAction(QIcon(QPixmap(":/import.xpm")), tr("&Import ASCII..."), this);
10506  connect(actionLoad, SIGNAL(triggered()), this, SLOT(importASCII()));
10507 
10508  actionUndo = new QAction(IconLoader::load("edit-undo"), tr("&Undo"), this);
10509  actionUndo->setShortcut( tr("Ctrl+Z") );
10510  connect(actionUndo, SIGNAL(triggered()), this, SLOT(undo()));
10511  actionUndo->setEnabled(false);
10512 
10513  actionRedo = new QAction(IconLoader::load("edit-redo"), tr("&Redo"), this);
10514  actionRedo->setShortcut( tr("Ctrl+R") );
10515  connect(actionRedo, SIGNAL(triggered()), this, SLOT(redo()));
10516  actionRedo->setEnabled(false);
10517 
10518  actionCopyWindow = new QAction(QIcon(QPixmap(":/duplicate.xpm")), tr("&Duplicate"), this);
10519  connect(actionCopyWindow, SIGNAL(triggered()), this, SLOT(clone()));
10520 
10521  actionCutSelection = new QAction(IconLoader::load("edit-cut"), tr("Cu&t Selection"), this);
10522  actionCutSelection->setShortcut( tr("Ctrl+X") );
10523  connect(actionCutSelection, SIGNAL(triggered()), this, SLOT(cutSelection()));
10524 
10525  actionCopySelection = new QAction(IconLoader::load("edit-copy"), tr("&Copy Selection"), this);
10526  actionCopySelection->setShortcut( tr("Ctrl+C") );
10527  connect(actionCopySelection, SIGNAL(triggered()), this, SLOT(copySelection()));
10528 
10529  actionPasteSelection = new QAction(IconLoader::load("edit-paste"), tr("&Paste Selection"), this);
10530  actionPasteSelection->setShortcut( tr("Ctrl+V") );
10531  connect(actionPasteSelection, SIGNAL(triggered()), this, SLOT(pasteSelection()));
10532 
10533  actionClearSelection = new QAction(QIcon(QPixmap(":/erase.xpm")), tr("&Delete Selection"), this);
10534  actionClearSelection->setShortcut( tr("Del","delete key") );
10535  connect(actionClearSelection, SIGNAL(triggered()), this, SLOT(clearSelection()));
10536 
10537  locktoolbar = new QAction(QIcon(QPixmap(":/unlock.xpm")), tr("&Lock Toolbars"), this);
10538  locktoolbar->setCheckable(true);
10539  connect(locktoolbar, SIGNAL(toggled(bool)), this, SLOT(lockToolbar(bool)));
10540 
10541  actionShowExplorer = explorerWindow.toggleViewAction();
10542  actionShowExplorer->setIcon(QPixmap(":/folder.xpm"));
10543  actionShowExplorer->setShortcut( tr("Ctrl+E") );
10544 
10545  actionShowLog = logWindow.toggleViewAction();
10546  actionShowLog->setIcon(QPixmap(":/log.xpm"));
10547 
10548  actionShowHistory = new QAction(tr("Undo/Redo &History"), this);
10549  connect(actionShowHistory, SIGNAL(triggered(bool)), this, SLOT(showHistory()));
10550 
10551 #ifdef SCRIPTING_CONSOLE
10552  actionShowConsole = consoleWindow.toggleViewAction();
10553 #endif
10554 
10555  actionAddLayer = new QAction(QIcon(QPixmap(":/newLayer.xpm")), tr("Add La&yer"), this);
10556  actionAddLayer->setShortcut( tr("ALT+L") );
10557  connect(actionAddLayer, SIGNAL(triggered()), this, SLOT(addLayer()));
10558 
10559  // FIXME: "..." should be added before translating, but this would break translations
10560  actionShowLayerDialog = new QAction(QIcon(QPixmap(":/arrangeLayers.xpm")), tr("Arran&ge Layers")+"...", this);
10561  actionShowLayerDialog->setShortcut( tr("ALT+A") );
10562  connect(actionShowLayerDialog, SIGNAL(triggered()), this, SLOT(showLayerDialog()));
10563 
10564  actionAutomaticLayout = new QAction(QIcon(QPixmap(":/auto_layout.xpm")), tr("Automatic Layout"), this);
10565  connect(actionAutomaticLayout, SIGNAL(triggered()), this, SLOT(autoArrangeLayers()));
10566 
10567  // FIXME: "..." should be added before translating, but this would break translations
10568  actionExportGraph = new QAction(tr("&Current")+"...", this);
10569  actionExportGraph->setShortcut( tr("Alt+G") );
10570  connect(actionExportGraph, SIGNAL(triggered()), this, SLOT(exportGraph()));
10571 
10572  // FIXME: "..." should be added before translating, but this would break translations
10573  actionExportAllGraphs = new QAction(tr("&All")+"...", this);
10574  actionExportAllGraphs->setShortcut( tr("Alt+X") );
10575  connect(actionExportAllGraphs, SIGNAL(triggered()), this, SLOT(exportAllGraphs()));
10576 
10577  // FIXME: "..." should be added before translating, but this would break translations
10578  actionExportPDF = new QAction(QIcon(QPixmap(":/pdf.xpm")), tr("&Export PDF")+"...", this);
10579  actionExportPDF->setShortcut( tr("Ctrl+Alt+P") );
10580  connect(actionExportPDF, SIGNAL(triggered()), this, SLOT(exportPDF()));
10581 
10582  // FIXME: "..." should be added before translating, but this would break translations
10583  actionPrint = new QAction(QIcon(QPixmap(":/fileprint.xpm")), tr("&Print")+"...", this);
10584  actionPrint->setShortcut( tr("Ctrl+P") );
10585  connect(actionPrint, SIGNAL(triggered()), this, SLOT(print()));
10586 
10587  actionPrintAllPlots = new QAction(tr("Print All Plo&ts"), this);
10588  connect(actionPrintAllPlots, SIGNAL(triggered()), this, SLOT(printAllPlots()));
10589 
10590  // FIXME: "..." should be added before translating, but this would break translations
10591  actionShowExportASCIIDialog = new QAction(tr("E&xport ASCII")+"...", this);
10592  connect(actionShowExportASCIIDialog, SIGNAL(triggered()), this, SLOT(showExportASCIIDialog()));
10593 
10594  actionCloseAllWindows = new QAction(QIcon(QPixmap(":/quit.xpm")), tr("&Quit"), this);
10595  actionCloseAllWindows->setShortcut( tr("Ctrl+Q") );
10596  connect(actionCloseAllWindows, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
10597 
10598  actionClearLogInfo = new QAction(tr("Clear &Log Information"), this);
10599  connect(actionClearLogInfo, SIGNAL(triggered()), this, SLOT(clearLogInfo()));
10600 
10601  actionDeleteFitTables = new QAction(QIcon(QPixmap(":/close.xpm")), tr("Delete &Fit Tables"), this);
10602  connect(actionDeleteFitTables, SIGNAL(triggered()), this, SLOT(deleteFitTables()));
10603 
10604  // FIXME: "..." should be added before translating, but this would break translations
10605  actionShowPlotWizard = new QAction(QIcon(QPixmap(":/wizard.xpm")), tr("Plot &Wizard")+"...", this);
10606  actionShowPlotWizard->setShortcut( tr("Ctrl+Alt+W") );
10607  connect(actionShowPlotWizard, SIGNAL(triggered()), this, SLOT(showPlotWizard()));
10608 
10609  actionShowConfigureDialog = new QAction(tr("&Preferences..."), this);
10610  connect(actionShowConfigureDialog, SIGNAL(triggered()), this, SLOT(showPreferencesDialog()));
10611 
10612  actionShowCurvesDialog = new QAction(QIcon(QPixmap(":/curves.xpm")), tr("Add/Remove &Curve..."), this);
10613  actionShowCurvesDialog->setShortcut( tr("ALT+C") );
10614  connect(actionShowCurvesDialog, SIGNAL(triggered()), this, SLOT(showCurvesDialog()));
10615 
10616  actionAddErrorBars = new QAction(QIcon(QPixmap(":/yerror.xpm")), tr("Add &Error Bars..."), this);
10617  actionAddErrorBars->setShortcut( tr("Ctrl+B") );
10618  connect(actionAddErrorBars, SIGNAL(triggered()), this, SLOT(addErrorBars()));
10619 
10620  actionAddFunctionCurve = new QAction(QIcon(QPixmap(":/fx.xpm")), tr("Add &Function..."), this);
10621  actionAddFunctionCurve->setShortcut( tr("Ctrl+Alt+F") );
10622  connect(actionAddFunctionCurve, SIGNAL(triggered()), this, SLOT(addFunctionCurve()));
10623 
10624  actionUnzoom = new QAction(QIcon(QPixmap(":/unzoom.xpm")), tr("&Rescale to Show All"), this);
10625  actionUnzoom->setShortcut( tr("Ctrl+Shift+R") );
10626  connect(actionUnzoom, SIGNAL(triggered()), this, SLOT(setAutoScale()));
10627 
10628  actionNewLegend = new QAction(QIcon(QPixmap(":/legend.xpm")), tr("New &Legend"), this);
10629  actionNewLegend->setShortcut( tr("Ctrl+L") );
10630  connect(actionNewLegend, SIGNAL(triggered()), this, SLOT(newLegend()));
10631 
10632  actionTimeStamp = new QAction(QIcon(QPixmap(":/clock.xpm")), tr("Add Time Stamp"), this);
10633  actionTimeStamp->setShortcut( tr("Ctrl+ALT+T") );
10634  connect(actionTimeStamp, SIGNAL(triggered()), this, SLOT(addTimeStamp()));
10635 
10636  actionAddImage = new QAction(QIcon(QPixmap(":/monalisa.xpm")), tr("Add &Image"), this);
10637  actionAddImage->setShortcut( tr("ALT+I") );
10638  connect(actionAddImage, SIGNAL(triggered()), this, SLOT(addImage()));
10639 
10640  d_plot_mapper = new QSignalMapper;
10641  connect(d_plot_mapper, SIGNAL(mapped(int)), this, SLOT(selectPlotType(int)));
10642 
10643  actionPlotL = new QAction(QIcon(QPixmap(":/lPlot.xpm")), tr("&Line"), this);
10644  connect(actionPlotL, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10645  d_plot_mapper->setMapping(actionPlotL, Graph::Line);
10646 
10647  actionPlotP = new QAction(QIcon(QPixmap(":/pPlot.xpm")), tr("&Scatter"), this);
10648  connect(actionPlotP, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10650 
10651  actionPlotLP = new QAction(QIcon(QPixmap(":/lpPlot.xpm")), tr("Line + S&ymbol"), this);
10652  connect(actionPlotLP, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10654 
10655  actionPlotVerticalDropLines = new QAction(QIcon(QPixmap(":/dropLines.xpm")), tr("Vertical &Drop Lines"), this);
10656  connect(actionPlotVerticalDropLines, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10658 
10659  actionPlotSpline = new QAction(QIcon(QPixmap(":/spline.xpm")), tr("&Spline"), this);
10660  connect(actionPlotSpline, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10662 
10663  actionPlotHorSteps = new QAction(QPixmap(":/hor_steps.xpm"), tr("&Horizontal Steps"), this);
10664  connect(actionPlotHorSteps, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10666 
10667  actionPlotVertSteps = new QAction(QIcon(QPixmap(":/vert_steps.xpm")), tr("&Vertical Steps"), this);
10668  connect(actionPlotVertSteps, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10670 
10671  actionPlotVerticalBars = new QAction(QIcon(QPixmap(":/vertBars.xpm")), tr("&Vertical Bars"), this);
10672  connect(actionPlotVerticalBars, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10674 
10675  actionPlotHorizontalBars = new QAction(QIcon(QPixmap(":/hBars.xpm")), tr("&Horizontal Bars"), this);
10676  connect(actionPlotHorizontalBars, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10678 
10679  actionPlotArea = new QAction(QIcon(QPixmap(":/area.xpm")), tr("&Area"), this);
10680  connect(actionPlotArea, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10682 
10683  actionPlotPie = new QAction(QIcon(QPixmap(":/pie.xpm")), tr("&Pie"), this);
10684  connect(actionPlotPie, SIGNAL(triggered()), this, SLOT(plotPie()));
10685 
10686  actionPlotVectXYAM = new QAction(QIcon(QPixmap(":/vectXYAM.xpm")), tr("Vectors XY&AM"), this);
10687  connect(actionPlotVectXYAM, SIGNAL(triggered()), this, SLOT(plotVectXYAM()));
10688 
10689  actionPlotVectXYXY = new QAction(QIcon(QPixmap(":/vectXYXY.xpm")), tr("Vectors &XYXY"), this);
10690  connect(actionPlotVectXYXY, SIGNAL(triggered()), this, SLOT(plotVectXYXY()));
10691 
10692  actionPlotHistogram = new QAction(QIcon(QPixmap(":/histogram.xpm")), tr("&Histogram"), this);
10693  connect(actionPlotHistogram, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10695 
10696  actionPlotStackedHistograms = new QAction(QIcon(QPixmap(":/stacked_hist.xpm")), tr("&Stacked Histogram"), this);
10697  connect(actionPlotStackedHistograms, SIGNAL(triggered()), this, SLOT(plotStackedHistograms()));
10698 
10699  actionPlot2VerticalLayers = new QAction(QIcon(QPixmap(":/panel_v2.xpm")), tr("&Vertical 2 Layers"), this);
10700  connect(actionPlot2VerticalLayers, SIGNAL(triggered()), this, SLOT(plot2VerticalLayers()));
10701 
10702  actionPlot2HorizontalLayers = new QAction(QIcon(QPixmap(":/panel_h2.xpm")), tr("&Horizontal 2 Layers"), this);
10703  connect(actionPlot2HorizontalLayers, SIGNAL(triggered()), this, SLOT(plot2HorizontalLayers()));
10704 
10705  actionPlot4Layers = new QAction(QIcon(QPixmap(":/panel_4.xpm")), tr("&4 Layers"), this);
10706  connect(actionPlot4Layers, SIGNAL(triggered()), this, SLOT(plot4Layers()));
10707 
10708  actionPlotStackedLayers = new QAction(QIcon(QPixmap(":/stacked.xpm")), tr("&Stacked Layers"), this);
10709  connect(actionPlotStackedLayers, SIGNAL(triggered()), this, SLOT(plotStackedLayers()));
10710 
10711  actionPlot3DRibbon = new QAction(QIcon(QPixmap(":/ribbon.xpm")), tr("&Ribbon"), this);
10712  connect(actionPlot3DRibbon, SIGNAL(triggered()), this, SLOT(plot3DRibbon()));
10713 
10714  actionPlot3DBars = new QAction(QIcon(QPixmap(":/bars.xpm")), tr("&Bars"), this);
10715  connect(actionPlot3DBars, SIGNAL(triggered()), this, SLOT(plot3DBars()));
10716 
10717  actionPlot3DScatter = new QAction(QIcon(QPixmap(":/scatter.xpm")), tr("&Scatter"), this);
10718  connect(actionPlot3DScatter, SIGNAL(triggered()), this, SLOT(plot3DScatter()));
10719 
10720  actionPlot3DTrajectory = new QAction(QIcon(QPixmap(":/trajectory.xpm")), tr("&Trajectory"), this);
10721  connect(actionPlot3DTrajectory, SIGNAL(triggered()), this, SLOT(plot3DTrajectory()));
10722 
10723  actionShowColStatistics = new QAction(QIcon(QPixmap(":/col_stat.xpm")), tr("Statistics on &Columns"), this);
10724  connect(actionShowColStatistics, SIGNAL(triggered()), this, SLOT(showColStatistics()));
10725 
10726  actionShowRowStatistics = new QAction(QIcon(QPixmap(":/stat_rows.xpm")), tr("Statistics on &Rows"), this);
10727  connect(actionShowRowStatistics, SIGNAL(triggered()), this, SLOT(showRowStatistics()));
10728 
10729  actionShowIntDialog = new QAction(tr("&Integrate ..."), this);
10730  connect(actionShowIntDialog, SIGNAL(triggered()), this, SLOT(showIntegrationDialog()));
10731 
10732  actionInterpolate = new QAction(tr("Inte&rpolate ..."), this);
10733  connect(actionInterpolate, SIGNAL(triggered()), this, SLOT(showInterpolationDialog()));
10734 
10735  actionLowPassFilter = new QAction(tr("&Low Pass..."), this);
10736  connect(actionLowPassFilter, SIGNAL(triggered()), this, SLOT(lowPassFilterDialog()));
10737 
10738  actionHighPassFilter = new QAction(tr("&High Pass..."), this);
10739  connect(actionHighPassFilter, SIGNAL(triggered()), this, SLOT(highPassFilterDialog()));
10740 
10741  actionBandPassFilter = new QAction(tr("&Band Pass..."), this);
10742  connect(actionBandPassFilter, SIGNAL(triggered()), this, SLOT(bandPassFilterDialog()));
10743 
10744  actionBandBlockFilter = new QAction(tr("&Band Block..."), this);
10745  connect(actionBandBlockFilter, SIGNAL(triggered()), this, SLOT(bandBlockFilterDialog()));
10746 
10747  actionFFT = new QAction(tr("&FFT..."), this);
10748  connect(actionFFT, SIGNAL(triggered()), this, SLOT(showFFTDialog()));
10749 
10750  actionSmoothSavGol = new QAction(tr("&Savitzky-Golay..."), this);
10751  connect(actionSmoothSavGol, SIGNAL(triggered()), this, SLOT(showSmoothSavGolDialog()));
10752 
10753  actionSmoothFFT = new QAction(tr("&FFT Filter..."), this);
10754  connect(actionSmoothFFT, SIGNAL(triggered()), this, SLOT(showSmoothFFTDialog()));
10755 
10756  actionSmoothAverage = new QAction(tr("Moving Window &Average..."), this);
10757  connect(actionSmoothAverage, SIGNAL(triggered()), this, SLOT(showSmoothAverageDialog()));
10758 
10759  actionDifferentiate = new QAction(tr("&Differentiate"), this);
10760  connect(actionDifferentiate, SIGNAL(triggered()), this, SLOT(differentiate()));
10761 
10762  actionFitLinear = new QAction(tr("Fit &Linear"), this);
10763  connect(actionFitLinear, SIGNAL(triggered()), this, SLOT(fitLinear()));
10764 
10765  actionShowFitPolynomDialog = new QAction(tr("Fit &Polynomial ..."), this);
10766  connect(actionShowFitPolynomDialog, SIGNAL(triggered()), this, SLOT(showFitPolynomDialog()));
10767 
10768  actionShowExpDecayDialog = new QAction(tr("&First Order ..."), this);
10769  connect(actionShowExpDecayDialog, SIGNAL(triggered()), this, SLOT(showExpDecayDialog()));
10770 
10771  actionShowTwoExpDecayDialog = new QAction(tr("&Second Order ..."), this);
10772  connect(actionShowTwoExpDecayDialog, SIGNAL(triggered()), this, SLOT(showTwoExpDecayDialog()));
10773 
10774  actionShowExpDecay3Dialog = new QAction(tr("&Third Order ..."), this);
10775  connect(actionShowExpDecay3Dialog, SIGNAL(triggered()), this, SLOT(showExpDecay3Dialog()));
10776 
10777  actionFitExpGrowth = new QAction(tr("Fit Exponential Gro&wth ..."), this);
10778  connect(actionFitExpGrowth, SIGNAL(triggered()), this, SLOT(showExpGrowthDialog()));
10779 
10780  actionFitSigmoidal = new QAction(tr("Fit &Boltzmann (Sigmoidal)"), this);
10781  connect(actionFitSigmoidal, SIGNAL(triggered()), this, SLOT(fitSigmoidal()));
10782 
10783  actionFitGauss = new QAction(tr("Fit &Gaussian"), this);
10784  connect(actionFitGauss, SIGNAL(triggered()), this, SLOT(fitGauss()));
10785 
10786  actionFitLorentz = new QAction(tr("Fit Lorent&zian"), this);
10787  connect(actionFitLorentz, SIGNAL(triggered()), this, SLOT(fitLorentz()));
10788 
10789  actionShowFitDialog = new QAction(tr("Fit &Wizard..."), this);
10790  actionShowFitDialog->setShortcut( tr("Ctrl+Y") );
10791  connect(actionShowFitDialog, SIGNAL(triggered()), this, SLOT(showFitDialog()));
10792 
10793  actionShowPlotDialog = new QAction(tr("&Plot ..."), this);
10794  connect(actionShowPlotDialog, SIGNAL(triggered()), this, SLOT(showGeneralPlotDialog()));
10795 
10796  actionShowScaleDialog = new QAction(tr("&Scales..."), this);
10797  connect(actionShowScaleDialog, SIGNAL(triggered()), this, SLOT(showScaleDialog()));
10798 
10799  actionShowAxisDialog = new QAction(tr("&Axes..."), this);
10800  connect(actionShowAxisDialog, SIGNAL(triggered()), this, SLOT(showAxisDialog()));
10801 
10802  actionShowGridDialog = new QAction(tr("&Grid ..."), this);
10803  connect(actionShowGridDialog, SIGNAL(triggered()), this, SLOT(showGridDialog()));
10804 
10805  actionShowTitleDialog = new QAction(tr("&Title ..."), this);
10806  connect(actionShowTitleDialog, SIGNAL(triggered()), this, SLOT(showTitleDialog()));
10807 
10808  actionAbout = new QAction(tr("&About SciDAVis"), this);
10809  actionAbout->setShortcut( tr("F1") );
10810  connect(actionAbout, SIGNAL(triggered()), this, SLOT(about()));
10811 
10812  actionShowHelp = new QAction(tr("&Help"), this);
10813  actionShowHelp->setShortcut( tr("Ctrl+H") );
10814  connect(actionShowHelp, SIGNAL(triggered()), this, SLOT(showHelp()));
10815 
10816 #ifdef DYNAMIC_MANUAL_PATH
10817  actionChooseHelpFolder = new QAction(tr("&Choose Help Folder..."), this);
10818  connect(actionChooseHelpFolder, SIGNAL(triggered()), this, SLOT(chooseHelpFolder()));
10819 #endif
10820 
10821  actionRename = new QAction(tr("&Rename Window"), this);
10822  connect(actionRename, SIGNAL(triggered()), this, SLOT(renameActiveWindow()));
10823 
10824  actionCloseWindow = new QAction(QIcon(QPixmap(":/close.xpm")), tr("Close &Window"), this);
10825  actionCloseWindow->setShortcut( tr("Ctrl+W") );
10826  connect(actionCloseWindow, SIGNAL(triggered()), this, SLOT(closeActiveWindow()));
10827 
10828  actionDeleteLayer = new QAction(QIcon(QPixmap(":/erase.xpm")), tr("&Remove Layer"), this);
10829  actionDeleteLayer->setShortcut( tr("Alt+R") );
10830  connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(deleteLayer()));
10831 
10832  actionResizeActiveWindow = new QAction(QIcon(QPixmap(":/resize.xpm")), tr("Window &Geometry..."), this);
10833  connect(actionResizeActiveWindow, SIGNAL(triggered()), this, SLOT(resizeActiveWindow()));
10834 
10835  actionHideActiveWindow = new QAction(tr("&Hide Window"), this);
10836  connect(actionHideActiveWindow, SIGNAL(triggered()), this, SLOT(hideActiveWindow()));
10837 
10838  actionShowMoreWindows = new QAction(tr("More windows..."), this);
10839  connect(actionShowMoreWindows, SIGNAL(triggered()), this, SLOT(showMoreWindows()));
10840 
10841  actionPixelLineProfile = new QAction(QIcon(QPixmap(":/pixelProfile.xpm")), tr("&View Pixel Line Profile"), this);
10842  connect(actionPixelLineProfile, SIGNAL(triggered()), this, SLOT(pixelLineProfile()));
10843 
10844  actionIntensityTable = new QAction(tr("&Intensity Table"), this);
10845  connect(actionIntensityTable, SIGNAL(triggered()), this, SLOT(intensityTable()));
10846 
10847  actionShowLineDialog = new QAction(tr("&Properties"), this);
10848  connect(actionShowLineDialog, SIGNAL(triggered()), this, SLOT(showLineDialog()));
10849 
10850  actionShowImageDialog = new QAction(tr("&Properties"), this);
10851  connect(actionShowImageDialog, SIGNAL(triggered()), this, SLOT(showImageDialog()));
10852 
10853  actionShowTextDialog = new QAction(tr("&Properties"), this);
10854  connect(actionShowTextDialog, SIGNAL(triggered()), this, SLOT(showTextDialog()));
10855 
10856  actionActivateWindow = new QAction(tr("&Activate Window"), this);
10857  connect(actionActivateWindow, SIGNAL(triggered()), this, SLOT(activateSubWindow()));
10858 
10859  actionMinimizeWindow = new QAction(tr("Mi&nimize Window"), this);
10860  connect(actionMinimizeWindow, SIGNAL(triggered()), this, SLOT(minimizeWindow()));
10861 
10862  actionMaximizeWindow = new QAction(tr("Ma&ximize Window"), this);
10863  connect(actionMaximizeWindow, SIGNAL(triggered()), this, SLOT(maximizeWindow()));
10864 
10865  actionResizeWindow = new QAction(QIcon(QPixmap(":/resize.xpm")), tr("Re&size Window..."), this);
10866  connect(actionResizeWindow, SIGNAL(triggered()), this, SLOT(resizeWindow()));
10867 
10868  actionPrintWindow = new QAction(QIcon(QPixmap(":/fileprint.xpm")),tr("&Print Window"), this);
10869  connect(actionPrintWindow, SIGNAL(triggered()), this, SLOT(printWindow()));
10870 
10871  actionShowPlotGeometryDialog = new QAction(QIcon(QPixmap(":/resize.xpm")), tr("&Layer Geometry"), this);
10872  connect(actionShowPlotGeometryDialog, SIGNAL(triggered()), this, SLOT(showPlotGeometryDialog()));
10873 
10874  actionEditSurfacePlot = new QAction(tr("&Surface..."), this);
10875  connect(actionEditSurfacePlot, SIGNAL(triggered()), this, SLOT(editSurfacePlot()));
10876 
10877  actionAdd3DData = new QAction(tr("&Data Set..."), this);
10878  connect(actionAdd3DData, SIGNAL(triggered()), this, SLOT(add3DData()));
10879 
10880  actionInvertMatrix = new QAction(tr("&Invert"), this);
10881  connect(actionInvertMatrix, SIGNAL(triggered()), this, SLOT(invertMatrix()));
10882 
10883  actionMatrixDeterminant = new QAction(tr("&Determinant"), this);
10884  connect(actionMatrixDeterminant, SIGNAL(triggered()), this, SLOT(matrixDeterminant()));
10885 
10886  actionConvertMatrix = new QAction(tr("&Convert to Table"), this);
10887  connect(actionConvertMatrix, SIGNAL(triggered()), this, SLOT(convertMatrixToTable()));
10888 
10889  actionConvertTable= new QAction(tr("Convert to &Matrix"), this);
10890  connect(actionConvertTable, SIGNAL(triggered()), this, SLOT(convertTableToMatrix()));
10891 
10892  actionPlot3DWireFrame = new QAction(QIcon(QPixmap(":/lineMesh.xpm")), tr("3D &Wire Frame"), this);
10893  connect(actionPlot3DWireFrame, SIGNAL(triggered()), this, SLOT(plot3DWireframe()));
10894 
10895  actionPlot3DHiddenLine = new QAction(QIcon(QPixmap(":/grid_only.xpm")), tr("3D &Hidden Line"), this);
10896  connect(actionPlot3DHiddenLine, SIGNAL(triggered()), this, SLOT(plot3DHiddenLine()));
10897 
10898  actionPlot3DPolygons = new QAction(QIcon(QPixmap(":/no_grid.xpm")), tr("3D &Polygons"), this);
10899  connect(actionPlot3DPolygons, SIGNAL(triggered()), this, SLOT(plot3DPolygons()));
10900 
10901  actionPlot3DWireSurface = new QAction(QIcon(QPixmap(":/grid_poly.xpm")), tr("3D Wire &Surface"), this);
10902  connect(actionPlot3DWireSurface, SIGNAL(triggered()), this, SLOT(plot3DWireSurface()));
10903 
10904  actionColorMap = new QAction(QIcon(QPixmap(":/color_map.xpm")), tr("Contour - &Color Fill"), this);
10905  connect(actionColorMap, SIGNAL(triggered()), this, SLOT(plotColorMap()));
10906 
10907  actionContourMap = new QAction(QIcon(QPixmap(":/contour_map.xpm")), tr("Contour &Lines"), this);
10908  connect(actionContourMap, SIGNAL(triggered()), this, SLOT(plotContour()));
10909 
10910  actionGrayMap = new QAction(QIcon(QPixmap(":/gray_map.xpm")), tr("&Gray Scale Map"), this);
10911  connect(actionGrayMap, SIGNAL(triggered()), this, SLOT(plotGrayScale()));
10912 
10913  actionCorrelate = new QAction(tr("Co&rrelate"), this);
10914  connect(actionCorrelate, SIGNAL(triggered()), this, SLOT(correlate()));
10915 
10916  actionAutoCorrelate = new QAction(tr("&Autocorrelate"), this);
10917  connect(actionAutoCorrelate, SIGNAL(triggered()), this, SLOT(autoCorrelate()));
10918 
10919  actionConvolute = new QAction(tr("&Convolute"), this);
10920  connect(actionConvolute, SIGNAL(triggered()), this, SLOT(convolute()));
10921 
10922  actionDeconvolute = new QAction(tr("&Deconvolute"), this);
10923  connect(actionDeconvolute, SIGNAL(triggered()), this, SLOT(deconvolute()));
10924 
10925  actionTranslateHor = new QAction(tr("&Horizontal"), this);
10926  connect(actionTranslateHor, SIGNAL(triggered()), this, SLOT(translateCurveHor()));
10927 
10928  actionTranslateVert = new QAction(tr("&Vertical"), this);
10929  connect(actionTranslateVert, SIGNAL(triggered()), this, SLOT(translateCurveVert()));
10930 
10931  actionBoxPlot = new QAction(QIcon(QPixmap(":/boxPlot.xpm")),tr("&Box Plot"), this);
10932  connect(actionBoxPlot, SIGNAL(triggered()), d_plot_mapper, SLOT(map()));
10933  d_plot_mapper->setMapping(actionBoxPlot, Graph::Box);
10934 
10935  actionMultiPeakGauss = new QAction(tr("&Gaussian..."), this);
10936  connect(actionMultiPeakGauss, SIGNAL(triggered()), this, SLOT(fitMultiPeakGauss()));
10937 
10938  actionMultiPeakLorentz = new QAction(tr("&Lorentzian..."), this);
10939  connect(actionMultiPeakLorentz, SIGNAL(triggered()), this, SLOT(fitMultiPeakLorentz()));
10940 
10941 #ifdef SEARCH_FOR_UPDATES
10942  actionCheckUpdates = new QAction(tr("Search for &Updates"), this);
10943  connect(actionCheckUpdates, SIGNAL(triggered()), this, SLOT(searchForUpdates()));
10944 #endif // defined SEARCH_FOR_UPDATES
10945 
10946  actionHomePage = new QAction(tr("&SciDAVis Homepage"), this);
10947  connect(actionHomePage, SIGNAL(triggered()), this, SLOT(showHomePage()));
10948 
10949  actionHelpForums = new QAction(tr("SciDAVis &Forums"), this);
10950  connect(actionHelpForums, SIGNAL(triggered()), this, SLOT(showForums()));
10951 
10952  actionHelpBugReports = new QAction(tr("Report a &Bug"), this);
10953  connect(actionHelpBugReports, SIGNAL(triggered()), this, SLOT(showBugTracker()));
10954 
10955 #ifdef DOWNLOAD_LINKS
10956  actionDownloadManual = new QAction(tr("Download &Manual"), this);
10957  connect(actionDownloadManual, SIGNAL(triggered()), this, SLOT(downloadManual()));
10958 #endif
10959 
10960 #ifdef SCRIPTING_DIALOG
10961  actionScriptingLang = new QAction(tr("Scripting &Language"), this);
10962  connect(actionScriptingLang, SIGNAL(triggered()), this, SLOT(showScriptingLangDialog()));
10963 #endif
10964 
10965  actionRestartScripting = new QAction(tr("&Restart Scripting"), this);
10966  connect(actionRestartScripting, SIGNAL(triggered()), this, SLOT(restartScriptingEnv()));
10967 
10968  actionNoteExecute = new QAction(tr("E&xecute"), this);
10969  actionNoteExecute->setShortcut(tr("Ctrl+J"));
10970 
10971  actionNoteExecuteAll = new QAction(tr("Execute &All"), this);
10972  actionNoteExecuteAll->setShortcut(tr("Ctrl+Shift+J"));
10973 
10974  actionNoteEvaluate = new QAction(tr("&Evaluate Expression"), this);
10975  actionNoteEvaluate->setShortcut(tr("Ctrl+Return"));
10976 
10977  actionShowCurvePlotDialog = new QAction(tr("&Plot details..."), this);
10978  connect(actionShowCurvePlotDialog, SIGNAL(triggered()), this, SLOT(showCurvePlotDialog()));
10979 
10980  actionShowCurveWorksheet = new QAction(tr("&Worksheet"), this);
10981  connect(actionShowCurveWorksheet, SIGNAL(triggered()), this, SLOT(showCurveWorksheet()));
10982 
10983  actionCurveFullRange = new QAction(tr("&Reset to Full Range"), this);
10984  connect(actionCurveFullRange, SIGNAL(triggered()), this, SLOT(setCurveFullRange()));
10985 
10986  actionEditCurveRange = new QAction(tr("Edit &Range..."), this);
10987  connect(actionEditCurveRange, SIGNAL(triggered()), this, SLOT(showCurveRangeDialog()));
10988 
10989  actionRemoveCurve = new QAction(QPixmap(":/close.xpm"), tr("&Delete"), this);
10990  connect(actionRemoveCurve, SIGNAL(triggered()), this, SLOT(removeCurve()));
10991 
10992  actionHideCurve = new QAction(tr("&Hide"), this);
10993  connect(actionHideCurve, SIGNAL(triggered()), this, SLOT(hideCurve()));
10994 
10995  actionHideOtherCurves = new QAction(tr("Hide &Other Curves"), this);
10996  connect(actionHideOtherCurves, SIGNAL(triggered()), this, SLOT(hideOtherCurves()));
10997 
10998  actionShowAllCurves = new QAction(tr("&Show All Curves"), this);
10999  connect(actionShowAllCurves, SIGNAL(triggered()), this, SLOT(showAllCurves()));
11000 
11001  actionEditFunction = new QAction(tr("&Edit Function..."), this);
11002  connect(actionEditFunction, SIGNAL(triggered()), this, SLOT(showFunctionDialog()));
11003 
11004  actionCopyStatusBarText = new QAction(tr("&Copy status bar text"), this);
11005  connect(actionCopyStatusBarText, SIGNAL(triggered()), this, SLOT(copyStatusBarText()));
11006 }

References about(), actionAbout, actionActivateWindow, actionAdd3DData, actionAddErrorBars, actionAddFunctionCurve, actionAddImage, actionAddLayer, actionAutoCorrelate, actionAutomaticLayout, actionBandBlockFilter, actionBandPassFilter, actionBoxPlot, actionClearLogInfo, actionClearSelection, actionCloseAllWindows, actionCloseWindow, actionColorMap, actionContourMap, actionConvertMatrix, actionConvertTable, actionConvolute, actionCopySelection, actionCopyStatusBarText, actionCopyWindow, actionCorrelate, actionCurveFullRange, actionCutSelection, actionDeconvolute, actionDeleteFitTables, actionDeleteLayer, actionDifferentiate, actionEditCurveRange, actionEditFunction, actionEditSurfacePlot, actionExportAllGraphs, actionExportGraph, actionExportPDF, actionFFT, actionFitExpGrowth, actionFitGauss, actionFitLinear, actionFitLorentz, actionFitSigmoidal, actionGrayMap, actionHelpBugReports, actionHelpForums, actionHideActiveWindow, actionHideCurve, actionHideOtherCurves, actionHighPassFilter, actionHomePage, actionImportImage, actionIntensityTable, actionInterpolate, actionInvertMatrix, actionLoad, actionLoadImage, actionLowPassFilter, actionMatrixDeterminant, actionMaximizeWindow, actionMinimizeWindow, actionMultiPeakGauss, actionMultiPeakLorentz, actionNewFunctionPlot, actionNewGraph, actionNewLegend, actionNewMatrix, actionNewNote, actionNewProject, actionNewSurfacePlot, actionNewTable, actionNoteEvaluate, actionNoteExecute, actionNoteExecuteAll, actionOpen, actionOpenTemplate, actionPasteSelection, actionPixelLineProfile, actionPlot2HorizontalLayers, actionPlot2VerticalLayers, actionPlot3DBars, actionPlot3DHiddenLine, actionPlot3DPolygons, actionPlot3DRibbon, actionPlot3DScatter, actionPlot3DTrajectory, actionPlot3DWireFrame, actionPlot3DWireSurface, actionPlot4Layers, actionPlotArea, actionPlotHistogram, actionPlotHorizontalBars, actionPlotHorSteps, actionPlotL, actionPlotLP, actionPlotP, actionPlotPie, actionPlotSpline, actionPlotStackedHistograms, actionPlotStackedLayers, actionPlotVectXYAM, actionPlotVectXYXY, actionPlotVerticalBars, actionPlotVerticalDropLines, actionPlotVertSteps, actionPrint, actionPrintAllPlots, actionPrintWindow, actionRedo, actionRemoveCurve, actionRename, actionResizeActiveWindow, actionResizeWindow, actionRestartScripting, actionSaveNote, actionSaveProject, actionSaveProjectAs, actionSaveTemplate, actionScriptingLang, actionShowAllCurves, actionShowAxisDialog, actionShowColStatistics, actionShowConfigureDialog, actionShowCurvePlotDialog, actionShowCurvesDialog, actionShowCurveWorksheet, actionShowExpDecay3Dialog, actionShowExpDecayDialog, actionShowExplorer, actionShowExportASCIIDialog, actionShowFitDialog, actionShowFitPolynomDialog, actionShowGridDialog, actionShowHelp, actionShowHistory, actionShowImageDialog, actionShowIntDialog, actionShowLayerDialog, actionShowLineDialog, actionShowLog, actionShowMoreWindows, actionShowPlotDialog, actionShowPlotGeometryDialog, actionShowPlotWizard, actionShowRowStatistics, actionShowScaleDialog, actionShowTextDialog, actionShowTitleDialog, actionShowTwoExpDecayDialog, actionSmoothAverage, actionSmoothFFT, actionSmoothSavGol, actionTimeStamp, actionTranslateHor, actionTranslateVert, actionUndo, actionUnzoom, activateSubWindow(), add3DData(), addErrorBars(), addFunctionCurve(), addImage(), addLayer(), addTimeStamp(), Graph::Area, autoArrangeLayers(), autoCorrelate(), bandBlockFilterDialog(), bandPassFilterDialog(), Graph::Box, chooseHelpFolder(), clearLogInfo(), clearSelection(), clone(), closeActiveWindow(), convertMatrixToTable(), convertTableToMatrix(), convolute(), copySelection(), copyStatusBarText(), correlate(), cutSelection(), d_plot_mapper, deconvolute(), deleteFitTables(), deleteLayer(), differentiate(), editSurfacePlot(), explorerWindow, exportAllGraphs(), exportGraph(), exportPDF(), fitGauss(), fitLinear(), fitLorentz(), fitMultiPeakGauss(), fitMultiPeakLorentz(), fitSigmoidal(), functionDialog(), hideActiveWindow(), hideCurve(), hideOtherCurves(), highPassFilterDialog(), Graph::Histogram, Graph::HorizontalBars, Graph::HorizontalSteps, importASCII(), importImage(), intensityTable(), invertMatrix(), Graph::Line, Graph::LineSymbols, IconLoader::load(), loadImage(), locktoolbar, lockToolbar(), logWindow, lowPassFilterDialog(), matrixDeterminant(), maximizeWindow(), minimizeWindow(), newGraph(), newLegend(), newMatrix(), newNote(), newProject(), newSurfacePlot(), newTable(), open(), openTemplate(), pasteSelection(), pixelLineProfile(), plot2HorizontalLayers(), plot2VerticalLayers(), plot3DBars(), plot3DHiddenLine(), plot3DPolygons(), plot3DRibbon(), plot3DScatter(), plot3DTrajectory(), plot3DWireframe(), plot3DWireSurface(), plot4Layers(), plotColorMap(), plotContour(), plotGrayScale(), plotPie(), plotStackedHistograms(), plotStackedLayers(), plotVectXYAM(), plotVectXYXY(), print(), printAllPlots(), printWindow(), redo(), removeCurve(), renameActiveWindow(), resizeActiveWindow(), resizeWindow(), restartScriptingEnv(), saveAsTemplate(), savedProject(), saveNoteAs(), saveProject(), saveProjectAs(), Graph::Scatter, selectPlotType(), setAutoScale(), setCurveFullRange(), showAllCurves(), showAxisDialog(), showBugTracker(), showColStatistics(), showCurvePlotDialog(), showCurveRangeDialog(), showCurvesDialog(), showCurveWorksheet(), showExpDecay3Dialog(), showExpDecayDialog(), showExpGrowthDialog(), showExportASCIIDialog(), showFFTDialog(), showFitDialog(), showFitPolynomDialog(), showForums(), showFunctionDialog(), showGeneralPlotDialog(), showGridDialog(), showHelp(), showHistory(), showHomePage(), showImageDialog(), showIntegrationDialog(), showInterpolationDialog(), showLayerDialog(), showLineDialog(), showMoreWindows(), showPlotGeometryDialog(), showPlotWizard(), showPreferencesDialog(), showRowStatistics(), showScaleDialog(), showScriptingLangDialog(), showSmoothAverageDialog(), showSmoothFFTDialog(), showSmoothSavGolDialog(), showTextDialog(), showTitleDialog(), showTwoExpDecayDialog(), Graph::Spline, translateCurveHor(), translateCurveVert(), undo(), Graph::VerticalBars, Graph::VerticalDropLines, and Graph::VerticalSteps.

Referenced by ApplicationWindow().

Here is the call graph for this function:
Here is the caller graph for this function: