/* -------------------------- multiFile class -------------------------- This class handles all operations related to the storage and manipulation of multiple files and their options from the GUI. This file is part of Xgfe: X Windows GUI front end to Gnuplot Copyright (C) 1998 David Ishee This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ------------------------------------------------------------------------*/ #include "multiFile.h" #include #define Inherited multiFileData multiFile::multiFile ( QWidget* parent, const char* name ) : Inherited( parent, name ) { setCaption( "Multiple Files" ); } multiFile::~multiFile() { } void multiFile::setGnuInterface(gnuInterface* gnu) { // save gnuInterface object gnuInt = gnu; // get all current filenames string file; // get first filename in list file = gnuInt->getMultiFileFirstFilename(); // insert first filename into list if (file != "END") multiFileList->insertItem(file.c_str()); int continueFlag = 1; // now insert remaining files into list while (continueFlag) { file = gnuInt->getMultiFileNextFilename(); if (file == "END") continueFlag = 0; else multiFileList->insertItem(file.c_str()); } // grab options for current file in combo box if (multiFileList->count() > 0) { getCurrentOptions(); } } void multiFile::apply() { // make sure we actually have files in the combo box if (multiFileList->count() > 0) { string filename = multiFileList->currentText().ascii(); string dataSetStart = dataSetStartEdit->text().ascii(); string dataSetEnd = dataSetEndEdit->text().ascii(); string dataSetInc = dataSetIncEdit->text().ascii(); string sampPointInc = pointIncEdit->text().ascii(); string sampLineInc = lineIncEdit->text().ascii(); string sampStartPoint = startPointEdit->text().ascii(); string sampStartLine = startLineEdit->text().ascii(); string sampEndPoint = endPointEdit->text().ascii(); string sampEndLine = endLineEdit->text().ascii(); string xcol = xColumnEdit->text().ascii(); string ycol = yColumnEdit->text().ascii(); string zcol = zColumnEdit->text().ascii(); string format = formatEdit->text().ascii(); string rawformat = rawFormatEdit->text().ascii(); string smoothType = interpList->currentText().ascii(); string style = fileStyleList->currentText().ascii(); string filter = filterEdit->text().ascii(); gnuInt->setMultiFileStyleOption(filename, style); gnuInt->setMultiFileDataSetStart(filename,dataSetStart); gnuInt->setMultiFileDataSetEnd(filename,dataSetEnd); gnuInt->setMultiFileDataSetIncrement(filename,dataSetInc); gnuInt->setMultiFileSampPointInc(filename,sampPointInc); gnuInt->setMultiFileSampLineInc(filename,sampLineInc); gnuInt->setMultiFileSampStartPoint(filename,sampStartPoint); gnuInt->setMultiFileSampStartLine(filename,sampStartLine); gnuInt->setMultiFileSampEndPoint(filename,sampEndPoint); gnuInt->setMultiFileSampEndLine(filename,sampEndLine); gnuInt->insertMultiFileXColumnOption(filename, xcol); gnuInt->insertMultiFileYColumnOption(filename, ycol); gnuInt->insertMultiFileZColumnOption(filename, zcol); gnuInt->insertMultiFileFormatOption(filename, format); gnuInt->insertMultiFileRawFormatOption(filename, rawformat); gnuInt->setMultiFileSmoothType(filename,smoothType); string title = legendTitleEdit->text().ascii(); gnuInt->setMultiFileLegendTitle(filename, title); if (legendTitleDefaultButton->isChecked() == TRUE) gnuInt->setMultiFileLegendTitle(filename, "default"); if (legendTitlenotitleButton->isChecked() == TRUE) gnuInt->setMultiFileLegendTitle(filename, "notitle"); if (singleQuoteRB->isChecked() == TRUE) gnuInt->setMultiFileFilterQuoteChar(filename, "single"); else if (doubleQuoteRB->isChecked() == TRUE) gnuInt->setMultiFileFilterQuoteChar(filename, "double"); if (filter != "") gnuInt->setMultiFileFilter(filename, filter); else gnuInt->setMultiFileFilter(filename, ""); } } void multiFile::getNewFile() { QString filename = QFileDialog::getOpenFileName(); // get filename string temp; if ( !filename.isNull() ) { temp = filename.ascii(); multiFileList->insertItem(filename,0); gnuInt->insertMultiFileNew(temp); clearOptions(); } } void multiFile::deleteFile() { // if there are still items left in the combo box, reset current to item 0, // and fill in options if (multiFileList->count() > 0) { // get current file in combo box string filename = multiFileList->currentText().ascii(); int currentItem = multiFileList->currentItem(); // remove item from combo box multiFileList->removeItem(currentItem); // remove item from multiFile list gnuInt->removeMultiFile(filename); // make sure we still have files left in the combo box if (multiFileList->count() > 0) { // reset current item for combo box multiFileList->setCurrentItem(0); // get options for this file getCurrentOptions(); } else { clearOptions(); } } else { clearOptions(); } } void multiFile::fileChanged(const char* file) { string filename = file; // don't need to use this option, but store it to // avoid compiler warnings getCurrentOptions(); } void multiFile::insertCurrentFilename() { QString currentText = filterEdit->text(); QString filename = multiFileList->currentText(); QString newString; newString += currentText ; newString += filename; filterEdit->setText(newString); } void multiFile::insertNewFilename() { QString currentText = filterEdit->text(); QString filename = QFileDialog::getOpenFileName(); if (!filename.isNull()) { QString newString; newString += currentText; newString += filename; filterEdit->setText(newString); } } void multiFile::getCurrentOptions() { // get options for this file string filename = multiFileList->currentText().ascii(); string dataSetStart = gnuInt->getMultiFileDataSetStart(filename); string dataSetEnd = gnuInt->getMultiFileDataSetEnd(filename); string dataSetInc = gnuInt->getMultiFileDataSetIncrement(filename); string sampPointInc = gnuInt->getMultiFileSampPointInc(filename); string sampLineInc = gnuInt->getMultiFileSampLineInc(filename); string sampStartPoint = gnuInt->getMultiFileSampStartPoint(filename); string sampStartLine = gnuInt->getMultiFileSampStartLine(filename); string sampEndPoint = gnuInt->getMultiFileSampEndPoint(filename); string sampEndLine = gnuInt->getMultiFileSampEndLine(filename); string xcol = gnuInt->getMultiFileXColumnOption(filename); string ycol = gnuInt->getMultiFileYColumnOption(filename); string zcol = gnuInt->getMultiFileZColumnOption(filename); string format = gnuInt->getMultiFileFormatOption(filename); string rawformat = gnuInt->getMultiFileRawFormatOption(filename); string smoothType = gnuInt->getMultiFileSmoothType(filename); string style = gnuInt->getMultiFileStyleOption(filename); string filter = gnuInt->getMultiFileFilter(filename); string quoteChar = gnuInt->getMultiFileFilterQuoteChar(filename); // fill in options in GUI dataSetStartEdit->setText(dataSetStart.c_str()); dataSetEndEdit->setText(dataSetEnd.c_str()); dataSetIncEdit->setText(dataSetInc.c_str()); pointIncEdit->setText(sampPointInc.c_str()); lineIncEdit->setText(sampLineInc.c_str()); startPointEdit->setText(sampStartPoint.c_str()); startLineEdit->setText(sampStartLine.c_str()); endPointEdit->setText(sampEndPoint.c_str()); endLineEdit->setText(sampEndLine.c_str()); xColumnEdit->setText(xcol.c_str()); yColumnEdit->setText(ycol.c_str()); zColumnEdit->setText(zcol.c_str()); formatEdit->setText(format.c_str()); rawFormatEdit->setText(rawformat.c_str()); filterEdit->setText(filter.c_str()); // figure out which option index current style corresponds to if (style == "points") fileStyleList->setCurrentItem(0); else if (style == "lines") fileStyleList->setCurrentItem(1); else if (style == "linespoints") fileStyleList->setCurrentItem(2); else if (style == "impulses") fileStyleList->setCurrentItem(3); else if (style == "dots") fileStyleList->setCurrentItem(4); else if (style == "steps") fileStyleList->setCurrentItem(5); else if (style == "fsteps") fileStyleList->setCurrentItem(6); else if (style == "histeps") fileStyleList->setCurrentItem(7); else if (style == "errorbars") fileStyleList->setCurrentItem(8); else if (style == "xerrorbars") fileStyleList->setCurrentItem(9); else if (style == "yerrorbars") fileStyleList->setCurrentItem(10); else if (style == "xyerrorbars") fileStyleList->setCurrentItem(11); else if (style == "boxes") fileStyleList->setCurrentItem(12); else if (style == "boxerrorbars") fileStyleList->setCurrentItem(13); else if (style == "boxxyerrorbars") fileStyleList->setCurrentItem(14); else if (style == "financebars") fileStyleList->setCurrentItem(15); else if (style == "candlesticks") fileStyleList->setCurrentItem(16); else if (style == "") fileStyleList->setCurrentItem(0); // set title options string title = gnuInt->getMultiFileLegendTitle(filename); // clear current title legendTitleEdit->setText(""); if ((title != "default") && (title != "notitle")) legendTitleEdit->setText(title.c_str()); if (title == "default") { legendTitleDefaultButton->setChecked(TRUE); legendTitlenotitleButton->setChecked(FALSE); } else if (title == "notitle") { legendTitleDefaultButton->setChecked(FALSE); legendTitlenotitleButton->setChecked(TRUE); } if ((title != "default") && (title != "notitle")) { legendTitleDefaultButton->setChecked(FALSE); legendTitlenotitleButton->setChecked(FALSE); } if (smoothType == "none") interpList->setCurrentItem(0); else if (smoothType == "unique") interpList->setCurrentItem(1); else if (smoothType == "csplines") interpList->setCurrentItem(2); else if (smoothType == "acsplines") interpList->setCurrentItem(3); else if (smoothType == "bezier") interpList->setCurrentItem(4); else if (smoothType == "sbezier") interpList->setCurrentItem(5); if (quoteChar == "single") { singleQuoteRB->setChecked(TRUE); doubleQuoteRB->setChecked(FALSE); } if (quoteChar == "double") { doubleQuoteRB->setChecked(TRUE); singleQuoteRB->setChecked(FALSE); } } void multiFile::clearOptions() { legendTitleEdit->setText(""); legendTitleDefaultButton->setChecked(TRUE); legendTitlenotitleButton->setChecked(FALSE); fileStyleList->setCurrentItem(0); dataSetStartEdit->setText(""); dataSetEndEdit->setText(""); dataSetIncEdit->setText(""); pointIncEdit->setText(""); lineIncEdit->setText(""); startPointEdit->setText(""); startLineEdit->setText(""); endPointEdit->setText(""); endLineEdit->setText(""); xColumnEdit->setText(""); yColumnEdit->setText(""); zColumnEdit->setText(""); formatEdit->setText(""); rawFormatEdit->setText(""); interpList->setCurrentItem(0); filterEdit->setText(""); doubleQuoteRB->setChecked(TRUE); singleQuoteRB->setChecked(FALSE); }