Mercurial > hg > orthanc-stone
diff Framework/Widgets/LayerWidget.cpp @ 380:ba5ad93f935a
ILayerSource::LayerErrorMessage
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 06 Nov 2018 14:59:20 +0100 |
parents | 2308fe0b0b05 |
children | 19bd222283ae |
line wrap: on
line diff
--- a/Framework/Widgets/LayerWidget.cpp Tue Nov 06 14:41:36 2018 +0100 +++ b/Framework/Widgets/LayerWidget.cpp Tue Nov 06 14:59:20 2018 +0100 @@ -387,6 +387,7 @@ layer.RegisterObserverCallback(new Callable<LayerWidget, ILayerSource::SliceChangedMessage>(*this, &LayerWidget::OnSliceChanged)); layer.RegisterObserverCallback(new Callable<LayerWidget, ILayerSource::ContentChangedMessage>(*this, &LayerWidget::OnContentChanged)); layer.RegisterObserverCallback(new Callable<LayerWidget, ILayerSource::LayerReadyMessage>(*this, &LayerWidget::OnLayerReady)); + layer.RegisterObserverCallback(new Callable<LayerWidget, ILayerSource::LayerErrorMessage>(*this, &LayerWidget::OnLayerError)); } @@ -587,32 +588,38 @@ size_t index; if (LookupLayer(index, message.GetOrigin())) { - if (message.IsError()) - { - LOG(ERROR) << "Using error renderer on layer " << index; - } - else - { - LOG(INFO) << "Renderer ready for layer " << index; - } + LOG(INFO) << "Renderer ready for layer " << index; // TODO -- REMOVE THIS UGLY STUFF ILayerSource::LayerReadyMessage& ugly = const_cast<ILayerSource::LayerReadyMessage&>(message); - if (ugly.GetRendererRaw().get() != NULL) - { - UpdateLayer(index, ugly.GetRendererRaw().release(), message.GetSlice()); - } - else if (message.IsError()) + if (ugly.GetRendererRaw().get() == NULL) { - // TODO - //UpdateLayer(index, new SliceOutlineRenderer(slice), slice); + throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); } + + UpdateLayer(index, ugly.GetRendererRaw().release(), message.GetSlice()); } + EmitMessage(LayerWidget::ContentChangedMessage(*this)); } + void LayerWidget::OnLayerError(const ILayerSource::LayerErrorMessage& message) + { + size_t index; + if (LookupLayer(index, message.GetOrigin())) + { + LOG(ERROR) << "Using error renderer on layer " << index; + + // TODO + //UpdateLayer(index, new SliceOutlineRenderer(slice), slice); + + EmitMessage(LayerWidget::ContentChangedMessage(*this)); + } + } + + void LayerWidget::ResetChangedLayers() { changedLayers_.resize(layers_.size());