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)