casa
$Rev:20696$
|
00001 //# FileBox.qo.h: Qt implementation of viewer box maker window. 00002 //# (This is the gui part only; it connects to region functions within 00003 //# QtDisplayPanel). 00004 //# Copyright (C) 2005 00005 //# Associated Universities, Inc. Washington DC, USA. 00006 //# 00007 //# This library is free software; you can redistribute it and/or modify it 00008 //# under the terms of the GNU Library General Public License as published by 00009 //# the Free Software Foundation; either version 2 of the License, or (at your 00010 //# option) any later version. 00011 //# 00012 //# This library is distributed in the hope that it will be useful, but WITHOUT 00013 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00015 //# License for more details. 00016 //# 00017 //# You should have received a copy of the GNU Library General Public License 00018 //# along with this library; if not, write to the Free Software Foundation, 00019 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00020 //# 00021 //# Correspondence concerning AIPS++ should be addressed as follows: 00022 //# Internet email: aips2-request@nrao.edu. 00023 //# Postal address: AIPS++ Project Office 00024 //# National Radio Astronomy Observatory 00025 //# 520 Edgemont Road 00026 //# Charlottesville, VA 22903-2475 USA 00027 //# 00028 //# $Id$ 00029 00030 #ifndef FILEBOX_H 00031 #define FILEBOX_H 00032 00033 #include <casa/aips.h> 00034 #include <casa/Containers/Record.h> 00035 #include <display/QtViewer/QtDisplayPanel.qo.h> 00036 #include <display/DisplayDatas/DisplayData.h> 00037 00038 #include <graphics/X11/X_enter.h> 00039 #include <QtCore> 00040 #include <QtGui> 00041 #include <QList> 00042 #include <QPushButton> 00043 #include <QComboBox> 00044 #include <graphics/X11/X_exit.h> 00045 00046 namespace casa { 00047 00048 class RSComposite; 00049 class WCUnion; 00050 00051 class FileBox : public QWidget { 00052 00053 Q_OBJECT 00054 00055 public: 00056 00057 FileBox(QtDisplayPanel* qdp); 00058 ~FileBox() {} 00059 00060 public slots: 00061 00062 //handle double click that announces a box is ready 00063 void drawRegion(Record mousereg, WorldCanvasHolder *wch); 00064 00065 //React to new region creation in display panel. 00066 void newRegion_(String imgFilename); 00067 00068 //handle switch display axis 00069 void changeAxis(String, String, String, std::vector<int> ); 00070 00071 //handle single click to select a box 00072 void activate(Record); 00073 00074 //this is not used, it emits for any wc change, too often 00075 void wcChanged(const String, 00076 const Vector<Double>, const Vector<Double>); 00077 00078 virtual void closeEvent ( QCloseEvent * event ); 00079 00080 signals: 00081 void hideFileBox(); 00082 00083 protected slots: 00084 00085 //load masks from a file 00086 void loadRegionFromFile(); 00087 00088 //save masks to a file 00089 void saveRegionToFile(); 00090 00091 //delete all masks 00092 void deleteAll(); 00093 00094 //toggle show or hide, but does not delete any 00095 void showHideAll(); 00096 00097 //use a different color 00098 void colorAll(const QString&); 00099 00100 //the work horse for all the edit commands 00101 void doIt(); 00102 00103 //show help text 00104 void showHelp(); 00105 00106 //create new box of this shape 00107 void reShape(const QString&); 00108 00109 void zPlaneChanged(); 00110 void pPlaneChanged(); 00111 protected: 00112 00113 void rotateBox(int cb); 00114 void addBox(RegionShape*); 00115 void deleteBox(RegionShape*); 00116 void reDraw(); 00117 00118 void addRegionsToShape(RSComposite*& theShapes, 00119 const WCRegion*& wcreg); 00120 00121 WCUnion* unfoldCompositeRegionToSimpleUnion(const WCRegion*& wcreg); 00122 void unfoldIntoSimpleRegionPtrs(PtrBlock<const WCRegion*>& outRegPtrs, 00123 const WCRegion*& wcreg); 00124 00125 //convert region to shape 00126 RSComposite *regionToShape( 00127 QtDisplayData* qdd, const ImageRegion* wcreg); 00128 00129 bool planeAllowed(String, String); 00130 bool chanAllowed(const Double, const Double); 00131 bool polAllowed(const Double, const Double); 00132 00133 private: 00134 00135 QtDisplayPanel* qdp_; 00136 00137 PtrBlock<const ImageRegion*> unionRegions_p; 00138 DisplayData* regData; 00139 00140 RegionShape* activeShape; 00141 00142 QTimer* timer; 00143 bool flash; 00144 00145 int cb; 00146 int zIndex; 00147 int pIndex; 00148 String zAxis; 00149 00150 00151 QGroupBox* tGroup; 00152 QPushButton* load; 00153 QPushButton* save; 00154 QPushButton* showHide; 00155 QPushButton* removeAll; 00156 QComboBox* color; 00157 00158 QLineEdit* chan; 00159 QLineEdit* corr; 00160 00161 /* 00162 QGroupBox* eGroup; 00163 QComboBox* shape; 00164 QPushButton* remove; 00165 QPushButton* rotateL; 00166 QPushButton* rotateR; 00167 QPushButton* left; 00168 QPushButton* right; 00169 QPushButton* up; 00170 QPushButton* down; 00171 QPushButton* wider; 00172 QPushButton* narrower; 00173 QPushButton* taller; 00174 QPushButton* shorter; 00175 */ 00176 00177 }; 00178 00179 00180 } 00181 00182 #endif