Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changes/5995.fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed ability to correctly load Qmos projects made with isis versions older than 10.0.0
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ namespace Isis {

QByteArray hexValues(pvl["Values"][0].toLatin1());
QDataStream valuesStream(QByteArray::fromHex(hexValues));
valuesStream.setVersion(int(pvl["QtVersion"]));
valuesStream >> *m_propertyValues;
}

Expand Down
11 changes: 9 additions & 2 deletions isis/src/qisis/objs/ImageReader/ImageReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@ namespace Isis {
return m_progress;
}

void ImageReader::setQtVersion(int qtVersion) {
m_qtVersion = qtVersion;
}


void ImageReader::askDefaultAlpha() {
bool ok = false;
Expand Down Expand Up @@ -191,7 +195,7 @@ namespace Isis {
QFuture< Image * > images = QtConcurrent::mapped(
culledBacklog,
VariantToImageFunctor(m_cameraMutex, m_requireFootprints, QThread::currentThread(),
m_openFilled, m_defaultAlpha));
m_openFilled, m_defaultAlpha, m_qtVersion));

m_watcher->setFuture(images);
m_mappedRunning = true;
Expand Down Expand Up @@ -259,12 +263,13 @@ namespace Isis {
*/
ImageReader::VariantToImageFunctor::VariantToImageFunctor(
QMutex *cameraMutex, bool requireFootprints, QThread *targetThread, bool openFilled,
int defaultAlpha) {
int defaultAlpha, int qtVersion) {
m_mutex = cameraMutex;
m_targetThread = targetThread;
m_openFilled = openFilled;
m_defaultAlpha = defaultAlpha;
m_requireFootprints = requireFootprints;
m_qtVersion = qtVersion;
}


Expand Down Expand Up @@ -297,6 +302,8 @@ namespace Isis {
PvlObject imageObj = imageData.value<PvlObject>();
fileName = ((IString)imageObj["FileName"][0]).ToQt();
result = new Image(FileName(fileName).expanded());
PvlObject &displayProps = imageObj.findObject("DisplayProperties");
displayProps += PvlKeyword("QtVersion", QString::number(m_qtVersion));
result->fromPvl(imageObj);
}

Expand Down
7 changes: 6 additions & 1 deletion isis/src/qisis/objs/ImageReader/ImageReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ namespace Isis {
QList<QAction *> actions(ImageDisplayProperties::Property relevantDispProperties);
QProgressBar *progress();

void setQtVersion(int qtVersion);

signals:
void imagesReady(ImageList images);

Expand Down Expand Up @@ -100,6 +102,8 @@ namespace Isis {
QPointer<QAction> m_safeFileOpenAct;
QFutureWatcher<Image *> * m_watcher;

int m_qtVersion;

bool m_safeFileOpen;
bool m_openFilled;
int m_defaultAlpha;
Expand All @@ -121,14 +125,15 @@ namespace Isis {

public:
VariantToImageFunctor(QMutex *cameraMutex, bool requireFootprints, QThread *targetThread,
bool openFilled, int defaultAlpha);
bool openFilled, int defaultAlpha, int qtVersion);
Image *operator()(const QVariant &);

private:
QMutex *m_mutex;
QThread *m_targetThread;

int m_defaultAlpha;
int m_qtVersion;
bool m_openFilled;
bool m_requireFootprints;
};
Expand Down
23 changes: 21 additions & 2 deletions isis/src/qisis/objs/MosaicMainWindow/MosaicController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,12 @@ namespace Isis {
imageProps += image->toPvl();
}

PvlObject qtInfoObject("QtInfo");
QDataStream stream;
PvlKeyword qtVersionKeyword("QtVersion", QString::number(stream.version()));
qtVersionKeyword.addCommentWrapped("See QDataStream Version for more info on QT version");
qtInfoObject += qtVersionKeyword;
projFile += qtInfoObject;
projFile += imageProps;
projFile += m_fileList->toPvl();
projFile += m_scene->toPvl();
Expand Down Expand Up @@ -242,14 +248,27 @@ namespace Isis {
convertV1ToV2(projectPvl);
}

PvlKeyword qtVersionKeyword;
if (projectPvl.hasObject("QtInfo")) {
PvlObject &qtInfoObject = projectPvl.findObject("QtInfo");
qtVersionKeyword = qtInfoObject["QtVersion"];
}
else {
qtVersionKeyword = PvlKeyword("QtVersion", QString::number(QDataStream::Qt_5_15));
}

PvlObject &projImages(projectPvl.findObject("Images"));

if (projectPvl.hasObject("MosaicScene"))
m_scene->fromPvl(projectPvl.findObject("MosaicScene"));
if (projectPvl.hasObject("MosaicScene")) {
PvlObject &mosaicScene = projectPvl.findObject("MosaicScene");
mosaicScene += qtVersionKeyword;
m_scene->fromPvl(mosaicScene);
}

if (projectPvl.hasObject("ImageFileList"))
m_fileList->fromPvl(projectPvl.findObject("ImageFileList"));

m_imageReader->setQtVersion(int(qtVersionKeyword));
openProjectImages(projImages);
}
catch(IException &e) {
Expand Down
2 changes: 2 additions & 0 deletions isis/src/qisis/objs/MosaicSceneWidget/MosaicSceneWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -611,6 +611,7 @@ namespace Isis {

delete m_projectViewTransform;
m_projectViewTransform = new PvlObject(positionInfo);
m_projectViewTransform->addKeyword(project.findKeyword("QtVersion"));
}
}
}
Expand Down Expand Up @@ -1372,6 +1373,7 @@ namespace Isis {
PvlObject &positionInfo = *m_projectViewTransform;
QByteArray hexValues(positionInfo["ViewTransform"][0].toLatin1());
QDataStream transformStream(QByteArray::fromHex(hexValues));
transformStream.setVersion(int(positionInfo["QtVersion"]));

QTransform viewTransform;
transformStream >> viewTransform;
Expand Down
Loading