comparison Applications/Samples/SimpleViewer/SimpleViewerApplication.cpp @ 726:4f2416d519b4

moving layers, widgets and loaders to Deprecated namespace
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 21 May 2019 11:43:25 +0200
parents 79bb0a02d1cc
children bcd3ea868bcd
comparison
equal deleted inserted replaced
714:d2c0e347ddc2 726:4f2416d519b4
31 31
32 namespace SimpleViewer 32 namespace SimpleViewer
33 { 33 {
34 34
35 void SimpleViewerApplication::Initialize(StoneApplicationContext* context, 35 void SimpleViewerApplication::Initialize(StoneApplicationContext* context,
36 IStatusBar& statusBar, 36 Deprecated::IStatusBar& statusBar,
37 const boost::program_options::variables_map& parameters) 37 const boost::program_options::variables_map& parameters)
38 { 38 {
39 using namespace OrthancStone;
40
41 context_ = context; 39 context_ = context;
42 statusBar_ = &statusBar; 40 statusBar_ = &statusBar;
43 41
44 {// initialize viewports and layout 42 {// initialize viewports and layout
45 mainLayout_ = new LayoutWidget("main-layout"); 43 mainLayout_ = new Deprecated::LayoutWidget("main-layout");
46 mainLayout_->SetPadding(10); 44 mainLayout_->SetPadding(10);
47 mainLayout_->SetBackgroundCleared(true); 45 mainLayout_->SetBackgroundCleared(true);
48 mainLayout_->SetBackgroundColor(0, 0, 0); 46 mainLayout_->SetBackgroundColor(0, 0, 0);
49 mainLayout_->SetHorizontal(); 47 mainLayout_->SetHorizontal();
50 48
51 thumbnailsLayout_ = new LayoutWidget("thumbnail-layout"); 49 thumbnailsLayout_ = new Deprecated::LayoutWidget("thumbnail-layout");
52 thumbnailsLayout_->SetPadding(10); 50 thumbnailsLayout_->SetPadding(10);
53 thumbnailsLayout_->SetBackgroundCleared(true); 51 thumbnailsLayout_->SetBackgroundCleared(true);
54 thumbnailsLayout_->SetBackgroundColor(50, 50, 50); 52 thumbnailsLayout_->SetBackgroundColor(50, 50, 50);
55 thumbnailsLayout_->SetVertical(); 53 thumbnailsLayout_->SetVertical();
56 54
57 mainWidget_ = new SliceViewerWidget(IObserver::GetBroker(), "main-viewport"); 55 mainWidget_ = new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "main-viewport");
58 //mainWidget_->RegisterObserver(*this); 56 //mainWidget_->RegisterObserver(*this);
59 57
60 // hierarchy 58 // hierarchy
61 mainLayout_->AddWidget(thumbnailsLayout_); 59 mainLayout_->AddWidget(thumbnailsLayout_);
62 mainLayout_->AddWidget(mainWidget_); 60 mainLayout_->AddWidget(mainWidget_);
63 61
64 // sources 62 // sources
65 smartLoader_.reset(new SmartLoader(IObserver::GetBroker(), context->GetOrthancApiClient())); 63 smartLoader_.reset(new Deprecated::SmartLoader(IObserver::GetBroker(), context->GetOrthancApiClient()));
66 smartLoader_->SetImageQuality(SliceImageQuality_FullPam); 64 smartLoader_->SetImageQuality(SliceImageQuality_FullPam);
67 65
68 mainLayout_->SetTransmitMouseOver(true); 66 mainLayout_->SetTransmitMouseOver(true);
69 mainWidgetInteractor_.reset(new MainWidgetInteractor(*this)); 67 mainWidgetInteractor_.reset(new MainWidgetInteractor(*this));
70 mainWidget_->SetInteractor(*mainWidgetInteractor_); 68 mainWidget_->SetInteractor(*mainWidgetInteractor_);
76 74
77 75
78 if (parameters.count("studyId") < 1) 76 if (parameters.count("studyId") < 1)
79 { 77 {
80 LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc"; 78 LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc";
81 context->GetOrthancApiClient().GetJsonAsync("/studies", new Callable<SimpleViewerApplication, OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyListReceived)); 79 context->GetOrthancApiClient().GetJsonAsync("/studies", new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyListReceived));
82 } 80 }
83 else 81 else
84 { 82 {
85 SelectStudy(parameters["studyId"].as<std::string>()); 83 SelectStudy(parameters["studyId"].as<std::string>());
86 } 84 }
96 ; 94 ;
97 95
98 options.add(generic); 96 options.add(generic);
99 } 97 }
100 98
101 void SimpleViewerApplication::OnStudyListReceived(const OrthancApiClient::JsonResponseReadyMessage& message) 99 void SimpleViewerApplication::OnStudyListReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
102 { 100 {
103 const Json::Value& response = message.GetJson(); 101 const Json::Value& response = message.GetJson();
104 102
105 if (response.isArray() && 103 if (response.isArray() &&
106 response.size() >= 1) 104 response.size() >= 1)
107 { 105 {
108 SelectStudy(response[0].asString()); 106 SelectStudy(response[0].asString());
109 } 107 }
110 } 108 }
111 void SimpleViewerApplication::OnStudyReceived(const OrthancApiClient::JsonResponseReadyMessage& message) 109 void SimpleViewerApplication::OnStudyReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
112 { 110 {
113 const Json::Value& response = message.GetJson(); 111 const Json::Value& response = message.GetJson();
114 112
115 if (response.isObject() && response["Series"].isArray()) 113 if (response.isObject() && response["Series"].isArray())
116 { 114 {
117 for (size_t i=0; i < response["Series"].size(); i++) 115 for (size_t i=0; i < response["Series"].size(); i++)
118 { 116 {
119 context_->GetOrthancApiClient().GetJsonAsync("/series/" + response["Series"][(int)i].asString(), new Callable<SimpleViewerApplication, OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnSeriesReceived)); 117 context_->GetOrthancApiClient().GetJsonAsync("/series/" + response["Series"][(int)i].asString(), new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnSeriesReceived));
120 } 118 }
121 } 119 }
122 } 120 }
123 121
124 void SimpleViewerApplication::OnSeriesReceived(const OrthancApiClient::JsonResponseReadyMessage& message) 122 void SimpleViewerApplication::OnSeriesReceived(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message)
125 { 123 {
126 const Json::Value& response = message.GetJson(); 124 const Json::Value& response = message.GetJson();
127 125
128 if (response.isObject() && 126 if (response.isObject() &&
129 response["Instances"].isArray() && 127 response["Instances"].isArray() &&
152 150
153 void SimpleViewerApplication::LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId) 151 void SimpleViewerApplication::LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId)
154 { 152 {
155 LOG(INFO) << "Loading thumbnail for series " << seriesId; 153 LOG(INFO) << "Loading thumbnail for series " << seriesId;
156 154
157 SliceViewerWidget* thumbnailWidget = 155 Deprecated::SliceViewerWidget* thumbnailWidget =
158 new SliceViewerWidget(IObserver::GetBroker(), "thumbnail-series-" + seriesId); 156 new Deprecated::SliceViewerWidget(IObserver::GetBroker(), "thumbnail-series-" + seriesId);
159 thumbnails_.push_back(thumbnailWidget); 157 thumbnails_.push_back(thumbnailWidget);
160 thumbnailsLayout_->AddWidget(thumbnailWidget); 158 thumbnailsLayout_->AddWidget(thumbnailWidget);
161 159
162 thumbnailWidget->RegisterObserverCallback( 160 thumbnailWidget->RegisterObserverCallback(
163 new Callable<SimpleViewerApplication, SliceViewerWidget::GeometryChangedMessage> 161 new Callable<SimpleViewerApplication, Deprecated::SliceViewerWidget::GeometryChangedMessage>
164 (*this, &SimpleViewerApplication::OnWidgetGeometryChanged)); 162 (*this, &SimpleViewerApplication::OnWidgetGeometryChanged));
165 163
166 smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0); 164 smartLoader_->SetFrameInWidget(*thumbnailWidget, 0, instanceId, 0);
167 thumbnailWidget->SetInteractor(*thumbnailInteractor_); 165 thumbnailWidget->SetInteractor(*thumbnailInteractor_);
168 } 166 }
169 167
170 void SimpleViewerApplication::SelectStudy(const std::string& studyId) 168 void SimpleViewerApplication::SelectStudy(const std::string& studyId)
171 { 169 {
172 context_->GetOrthancApiClient().GetJsonAsync("/studies/" + studyId, new Callable<SimpleViewerApplication, OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyReceived)); 170 context_->GetOrthancApiClient().GetJsonAsync("/studies/" + studyId, new Callable<SimpleViewerApplication, Deprecated::OrthancApiClient::JsonResponseReadyMessage>(*this, &SimpleViewerApplication::OnStudyReceived));
173 } 171 }
174 172
175 void SimpleViewerApplication::OnWidgetGeometryChanged(const SliceViewerWidget::GeometryChangedMessage& message) 173 void SimpleViewerApplication::OnWidgetGeometryChanged(const Deprecated::SliceViewerWidget::GeometryChangedMessage& message)
176 { 174 {
177 // TODO: The "const_cast" could probably be replaced by "mainWidget_" 175 // TODO: The "const_cast" could probably be replaced by "mainWidget_"
178 const_cast<SliceViewerWidget&>(message.GetOrigin()).FitContent(); 176 const_cast<Deprecated::SliceViewerWidget&>(message.GetOrigin()).FitContent();
179 } 177 }
180 178
181 void SimpleViewerApplication::SelectSeriesInMainViewport(const std::string& seriesId) 179 void SimpleViewerApplication::SelectSeriesInMainViewport(const std::string& seriesId)
182 { 180 {
183 smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0); 181 smartLoader_->SetFrameInWidget(*mainWidget_, 0, instancesIdsPerSeriesId_[seriesId][0], 0);