void VolumeURLProperty::loadVolume() throw (tgt::FileException, std::bad_alloc){ std::string url = get(); if (url.empty()) { LWARNING("loadVolume(): empty URL"); return; } ProgressBar* progressBar = getProgressBar(); if (progressBar) { progressBar->setTitle("Loading volume"); progressBar->setProgressMessage("Loading volume ..."); } VolumeSerializerPopulator serializerPopulator(progressBar); VolumeList* volumeList = serializerPopulator.getVolumeSerializer()->read(url); if (progressBar) progressBar->hide(); if (volumeList && !volumeList->empty()) { VolumeBase* handle = volumeList->first(); tgtAssert(handle, "No handle"); setVolume(static_cast<Volume*>(handle)); // delete superfluous volumes if (volumeList->size() > 1) { LWARNING("More than one volume loaded from file: " + url + ". Discarding surplus volumes!"); for (size_t i=1; i<volumeList->size(); i++) delete volumeList->at(i); } // property does take ownership of loaded handles volumeOwner_ = true; } delete volumeList; }