21 #include <KMessageBox>
22 #include <KFileDialog>
30 #include "ui_statform.h"
31 #include "ui_fitsheaderdialog.h"
40 undoStack =
new KUndoStack(
this);
41 undoStack->setUndoLimit(10);
43 connect(undoStack, SIGNAL(cleanChanged(
bool)),
this, SLOT(
modifyFITSState(
bool)));
57 QString caption = i18n(
"Save Changes to FITS?" );
58 QString message = i18n(
"The current FITS file has unsaved changes. Would you like to save before closing it?" );
59 int ans = KMessageBox::warningYesNoCancel( 0, message, caption, KStandardGuiItem::save(), KStandardGuiItem::discard() );
60 if( ans == KMessageBox::Yes )
62 if( ans == KMessageBox::No )
73 if( undoStack->isClean() )
85 image->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
86 QVBoxLayout *vlayout =
new QVBoxLayout();
88 vlayout->addWidget(image);
94 currentURL = *imageURL;
96 bool imageLoad = image->
loadFITS(imageURL->url());
100 if (histogram == NULL)
127 if (undoStack->isClean() ==
false)
128 undoStack->setClean();
158 stat.setupUi(&statDialog);
162 stat.widthOUT->setText(QString::number(image_data->
getWidth()));
163 stat.heightOUT->setText(QString::number(image_data->
getHeight()));
164 stat.bitpixOUT->setText(QString::number(image_data->
getBPP()));
165 stat.maxOUT->setText(QString::number(image_data->
getMax()));
166 stat.minOUT->setText(QString::number(image_data->
getMin()));
167 stat.meanOUT->setText(QString::number(image_data->
getAverage()));
168 stat.stddevOUT->setText(QString::number(image_data->
getStdDev(),
'g', 3));
169 stat.HFROUT->setText(QString::number(image_data->
getHFR(),
'g', 3));
179 char err_text[FLEN_STATUS];
183 if ( (err_status = image_data->
getFITSRecord(recordList, nkeys)) < 0)
185 fits_get_errstatus(err_status, err_text);
186 KMessageBox::error(0, i18n(
"FITS record error: %1", QString::fromUtf8(err_text)), i18n(
"FITS Header"));
192 Ui::fitsHeaderDialog header;
193 header.setupUi(&fitsHeaderDialog);
194 header.tableWidget->setRowCount(nkeys);
195 for(
int i = 0; i < nkeys; i++)
197 QString record = recordList.mid(i*80, 80);
199 QStringList properties = record.split(QRegExp(
"[=/]"));
201 QTableWidgetItem* tempItem =
new QTableWidgetItem(properties[0].simplified());
202 tempItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
203 header.tableWidget->setItem(i, 0, tempItem);
205 if (properties.size() > 1)
207 tempItem =
new QTableWidgetItem(properties[1].simplified());
208 tempItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
209 header.tableWidget->setItem(i, 1, tempItem);
212 if (properties.size() > 2)
214 tempItem =
new QTableWidgetItem(properties[2].simplified());
215 tempItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
216 header.tableWidget->setItem(i, 2, tempItem);
221 header.tableWidget->resizeColumnsToContents();
222 fitsHeaderDialog.exec();
230 char err_text[FLEN_STATUS];
232 KUrl backupCurrent = currentURL;
235 if (currentURL.path().contains(
"/tmp/"))
239 if( mDirty ==
false && !currentURL.isEmpty())
242 if (currentURL.isEmpty())
244 currentURL = KFileDialog::getSaveUrl( currentDir,
"*.fits |Flexible Image Transport System");
246 if (currentURL.isEmpty())
248 currentURL = backupCurrent;
252 if (currentURL.path().contains(
'.') == 0)
253 currentURL.setPath(currentURL.path() +
".fits");
255 if (QFile::exists(currentURL.path()))
257 int r = KMessageBox::warningContinueCancel(0,
258 i18n(
"A file named \"%1\" already exists. "
259 "Overwrite it?", currentURL.fileName() ),
260 i18n(
"Overwrite File?" ),
261 KGuiItem(i18n(
"&Overwrite" )) );
262 if(r==KMessageBox::Cancel)
return;
266 if ( currentURL.isValid() )
268 if ( (err_status =
saveFITS(
'!' + currentURL.path())) < 0)
270 fits_get_errstatus(err_status, err_text);
272 KMessageBox::error(0, i18n(
"FITS file save error: %1",
273 QString::fromUtf8(err_text)), i18n(
"FITS Save"));
283 QString message = i18n(
"Invalid URL: %1", currentURL.url() );
284 KMessageBox::sorry( 0, message, i18n(
"Invalid URL" ) );
311 undoStack->setActive(
true);
FITSImage * getImageData()
bool loadFITS(const QString &filename)
virtual void closeEvent(QCloseEvent *ev)
FITSTab(FITSViewer *parent)
int getFITSRecord(QString &recordList, int &nkeys)
void newStatus(const QString &msg, FITSBar id)
void changeStatus(bool clean)
int rescale(FITSZoom type)
int saveFITS(const QString &filename)
QImage * getDisplayImage()
void applyFilter(FITSScale type, float *image=NULL, int min=-1, int max=-1)
void toggleStars(bool enable)
static QString fitsDir()
Get FITS Default directory.
bool loadFITS(const KUrl *imageURL, FITSMode mode=FITS_NORMAL, FITSScale filter=FITS_NONE)
void modifyFITSState(bool clean=true)
int saveFITS(const QString &filename)
void tabPositionUpdated()
void setHistogram(FITSHistogram *inHistogram)
double getHFR(HFRType type=HFR_AVERAGE)