1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
|
#ifndef QFITSMAINWINDOW_H
#define QFITSMAINWINDOW_H
#include <QWidget>
#include <QImage>
#include <QString>
#include <QLabel>
#include <QMenuBar>
#include <QCheckBox>
#include <QComboBox>
#include <QSpinBox>
#include <QToolButton>
#include <QProgressBar>
#include <QMainWindow>
#include <QSplitter>
#include <QFileSystemWatcher>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <QRegExp>
#else
#include <QRegularExpression>
#endif /* QT_VERSION */
#include "QFitsGlobal.h"
#include "QFitsPreferences.h"
#include "fits.h"
#include "QPgplot.h"
class RGBDialog;
class dpCombineDialog;
class QFitsToolBar;
class CubeDisplayDialog;
class PlotOptionsDialog;
class BlinkDialog ;
class qFitsViewPreferences;
class QFitsViewingTools;
class MainWindow;
class QFits2dFit;
class imRedMarkpos;
class QFitsBaseBuffer;
class QFitsSingleBuffer;
class QFitsCubeSpectrum;
class QFitsMainView;
class QFitsHeaderView;
class dpWatchdirDialog;
class dpGalfitDialog;
class About;
class DpHelp;
class moreColourmaps;
class ImageDisplay;
class dpMpfitDialog;
class QFitsToolsWidget;
#ifdef HAS_PLOTTING
class dpPlplotWindow;
#endif /* HAS_PLOTTING */
#ifdef HAS_PLPLOT
class dpPg2PlplotWindow;
#endif /* HAS_PLPLOT */
#ifdef LBT
class dpLuciMaskAlignDialog;
#endif
class QFitsMainWindow : public QMainWindow {
Q_OBJECT
//----- Functions -----
public:
QFitsMainWindow(QWidget *parent = NULL);
~QFitsMainWindow();
void StartDpuser();
std::string getCurrentBufferIndex();
QFitsBaseBuffer* getCurrentBuffer();
QFitsBaseBuffer* getBuffer(std::string i);
QFitsSingleBuffer* getMarkedSingleBuffer();
QString createCaption(std::string, bool);
virtual void keyPressEvent(QKeyEvent *e);
bool headerVisible();
//#ifdef HAS_VTK
void updateCubeSpectrumViewer();
//#endif
void updateViewingtools();
void updateWedge();
void updateTools(int, int, int, int, bool updateTotal = true);
void updateTotalVisibleRect();
void setMagnifierCenterPos(int, int);
void updateMenuScaling(int);
void applyAppearance();
void setActualSB(QFitsSingleBuffer *sb) { actualSB = sb; }
QFitsSingleBuffer* getActualSB() { return actualSB; }
QFitsSingleBuffer* getActualMarkedSB();
protected:
void closeEvent(QCloseEvent *);
virtual void dragEnterEvent(QDragEnterEvent* event);
virtual void dropEvent(QDropEvent* event);
virtual void resizeEvent(QResizeEvent *r);
// #ifdef HAS_VTK
void showCurrentView(std::string which , dpViewMode previousMode = ViewUndefined);
// #else
// void showCurrentView(int which);
// #endif
void arrangeChildren();
private:
void updateBufferList();
//----- Slots -----
public slots:
void updateScaling();
void copyImage();
void pasteImage();
void menuZoomTriggered(QAction *);
void imredClicked(int);
void imredTriggered(QAction *);
void imfilterTriggered(QAction *);
void imcubeTriggered(QAction *);
void spectralTriggered(QAction *);
void userMenuTriggered(QAction *);
void scalingTriggered(QAction *);
void viewTriggered(QAction *);
void buffersTriggered(QAction *);
void windowsTriggered(QAction *);
void updateWindowsMenu();
void helpTriggered(QAction *);
void moreColormaps(void);
void viewClicked(dpViewMode);
void helpClicked(int);
void buffersClicked(int);
void showSpectrum(bool);
void adaptFileMenu();
void showRGBDialog();
void showCombineDialog();
void showMpfitDialog();
void moveToNextBuffer();
void moveToPreviousBuffer();
#ifdef HAS_PLOTTING
void showPlottingDialog();
#endif /* HAS_PLOTTING */
void updateImageOptions();
void updateCubeOptions();
void updateLinemapInfo(int);
void fillBufferMenu();
void fillUserMenu();
void fillViewMenu();
void reloadImage();
void dpuserInterrupt();
void dpuserExecuteScript();
void dpuserChangeDirectory();
void dpuserCopyHistory();
void updateOrientation();
void updateToolbar();
void longslitChangedValues(int, int, double, int, double);
void longslitChangedCenter(int, int);
void longslitChangedAngle(double);
void markposNewPosition(int, int);
void ellipticalProfileChangedValues(int, int, double, double, int);
void markposChangedValues(QVector <int>);
void updateCubeMode(int);
void blinkTimerTimeout();
void DisplayFITSHeader();
void LoadClicked();
void ImportClicked();
void userMenuClicked(int);
void dpuserProgress(const int &, const QString &);
void dpuserHelp(const QString &);
void dpuserVar(const std::string &);
void dpuserView(const std::string &);
void dpuserCommand(const QString &cmd, const QString &arg, const int &option);
void updatePgplot(const int &, const QImage &);
void updatePgplot(const int &, const int &, const int &);
void LoadFile(bool);
void FileSystemChanged(const QString &);
void setDirToWatch(const dpString &, const dpString &, const dpString &);
//----- Signals -----
signals:
void currentBufferChanged(int);
void longslitCenterChanged(int, int);
void longslitAngleChanged(double);
void markPosition(int, int);
void setVisibleRect(int, int);
void progressActive(bool);
//----- Members -----
public:
QSplitter *splitter, *hsplitter;
QMenu *imfilter, *imcube, *scaling, *map, *zoom, *options, *imred,
*spectral, *view, *buffer, *windows, *help;
QAction *invertAction;
QMenu *userMenu;
QMap<int,std::string> bufferMenuList;
QFitsViewingTools *viewingtools;
QWidget *emptyTool;
QFits2dFit *fitter2d;
imRedMarkpos *markposDialog;
QFitsCubeSpectrum *spectrum;
MainWindow *scriptEditor;
RGBDialog *rgbdialog;
dpCombineDialog *combinedialog;
dpMpfitDialog *mpfitdialog;
QFitsHeaderView *headerView;
QFitsPrefDialog *preferences;
#ifdef HAS_PLOTTING
dpPlplotWindow *plplotWindow;
#endif /* HAS_PLOTTING */
#ifdef HAS_PLPLOT
dpPg2PlplotWindow *pg2plplotWindow[10];
#endif /* HAS_PLPLOT */
#ifdef LBT
dpLuciMaskAlignDialog *luciMaskAlign;
#endif
dpWatchdirDialog *watchdir;
dpGalfitDialog *galfit;
About *about;
DpHelp *dphelp;
moreColourmaps *morecolourmaps;
ImageDisplay *imagedisplay;
CubeDisplayDialog *cubeDisplayDialog;
PlotOptionsDialog *plotoptions;
BlinkDialog *blinkdialog;
QStringList blinklist;
QFitsToolBar *mytoolbar;
QProgressBar *progressbar;
QTimer *blinkTimer;
QActionGroup *mapActions,
*viewActions;
int viewingTools_width, toolbar_height,
blinkcount;
bool bufferChangedByKey,
overrideSet,
zoomCorr_spectrumVisible,
zoomCorr_wedgeVisible,
zoomCorr_ComboZoomTriggered;
QFitsMainView *main_view;
QPgplotDialog *qpgplot_windows[10];
QActionGroup *scalingMethods;
QFileSystemWatcher fsWatcher;
QString FileSystemChangedAction;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QRegExp FileSystemChangedPattern;
#else
QRegularExpression FileSystemChangedPattern;
#endif /* QT_VERSION */
QFitsToolsWidget *toolsWidget;
private:
double centralWavelength;
QByteArray windowState;
QAction *menu_displayFitsHeader, *nextBufferAction, *previousBufferAction;
QFitsSingleBuffer *actualSB;
QStringList dirEntryList;
};
#endif /* FITSVIEW_H */
|