private static IImageViewer LaunchViewer(OpenStudiesRequest request, string primaryStudyInstanceUid) { try { CompleteOpenStudyInfo(request.StudiesToOpen); } catch (Exception ex) { if (request.ReportFaultToUser) { SynchronizationContext.Current.Post(ReportLoadFailures, ex); } throw; } ImageViewerComponent viewer; if (!request.LoadPriors.HasValue || request.LoadPriors.Value) { viewer = new ImageViewerComponent(LayoutManagerCreationParameters.Extended); } else { viewer = new ImageViewerComponent(LayoutManagerCreationParameters.Extended, PriorStudyFinder.Null); } var loadStudyArgs = (from info in request.StudiesToOpen let server = ServerDirectory.GetRemoteServersByAETitle(info.SourceAETitle).FirstOrDefault() ?? ServerDirectory.GetLocalServer() select new LoadStudyArgs(info.StudyInstanceUid, server)).ToList(); try { viewer.LoadStudies(loadStudyArgs); } catch (Exception e) { bool faultThrown = false; try { HandleLoadStudiesException(e, primaryStudyInstanceUid, viewer); } catch { faultThrown = true; viewer.Dispose(); throw; } finally { if (!faultThrown || request.ReportFaultToUser) { SynchronizationContext.Current.Post(ReportLoadFailures, e); } } } ImageViewerComponent.Launch(viewer, new LaunchImageViewerArgs(ViewerLaunchSettings.WindowBehaviour)); return(viewer); }
private ImageViewerComponent LoadAndOpenFiles(string strPatientName) { var codeClock = new CodeClock(); codeClock.Start(); var viewer = CreateViewer(false); // don't find priors for files loaded off the local disk. var desktopWindow = DesktopWindow ?? Application.ActiveDesktopWindow; //var args = new LaunchImageViewerArgs(WindowBehaviour) { Title = Title }; //ImageViewerComponent.Launch(viewer, args); //return viewer; try { UserCancelled = false; bool cancelled; viewer.LoadImages(_filenames.ToArray(), desktopWindow, out cancelled, strPatientName); UserCancelled = cancelled; } catch (Exception e) { Platform.Log(LogLevel.Error, e.ToString()); //if (!HandleErrors) // throw; //ExceptionHandler.Report(e, SR.MessageFailedToOpenImages, desktopWindow); } if (UserCancelled || (!AnySopsLoaded(viewer) && !AllowEmptyViewer)) { viewer.Dispose(); return(null); } var args = new LaunchImageViewerArgs(WindowBehaviour) { Title = "imageview" }; //var args = new LaunchImageViewerArgs(WindowBehaviour) { Title = Title }; ImageViewerComponent.Launch(viewer, args); codeClock.Stop(); Platform.Log(LogLevel.Debug, string.Format("TTFI: {0}", codeClock)); return(viewer); }
public void Launch() { if (base.SelectedItems == null || base.SelectedItems.Count == 0) { return; } int n = 0; string[] selection = new string[base.SelectedItems.Count]; foreach (IStudyItem item in base.SelectedItems) { if (!string.IsNullOrEmpty(item.Filename)) { selection[n++] = item.Filename; } } bool cancelled = true; ImageViewerComponent viewer = new ImageViewerComponent(); try { viewer.LoadImages(selection, base.Context.DesktopWindow, out cancelled); } catch (Exception ex) { base.DesktopWindow.ShowMessageBox(ex.Message, MessageBoxActions.Ok); } if (cancelled) { viewer.Dispose(); return; } try { LaunchImageViewerArgs launchArgs = new LaunchImageViewerArgs(WindowBehaviour.Auto); ImageViewerComponent.Launch(viewer, launchArgs); } catch (Exception ex) { base.DesktopWindow.ShowMessageBox(ex.Message, MessageBoxActions.Ok); Platform.Log(LogLevel.Error, ex, "ImageViewerComponent launch failure."); } }
private ImageViewerComponent LoadAndOpenStudies() { var codeClock = new CodeClock(); codeClock.Start(); var viewer = CreateViewer(LoadPriors); var desktopWindow = DesktopWindow ?? Application.ActiveDesktopWindow; try { viewer.LoadStudies(_studiesToOpen); } catch (Exception e) { ExceptionHandler.Report(e, SR.MessageFailedToOpenStudy, desktopWindow); } if (!AnySopsLoaded(viewer) && !AllowEmptyViewer) { viewer.Dispose(); return(null); } var args = new LaunchImageViewerArgs(WindowBehaviour) { Title = Title }; ImageViewerComponent.Launch(viewer, args); codeClock.Stop(); Platform.Log(LogLevel.Debug, string.Format("TTFI: {0}", codeClock)); return(viewer); }
private ImageViewerComponent LoadAndOpenStudies() { var codeClock = new CodeClock(); codeClock.Start(); var viewer = CreateViewer(LoadPriors); var desktopWindow = DesktopWindow ?? Application.ActiveDesktopWindow; try { viewer.LoadStudies(_studiesToOpen); } catch (InUseLoadStudyException) { if (!HandleStudyInUseError(viewer)) { viewer.Dispose(); return(null); } } catch (LoadMultipleStudiesException ex) { // Note: although there may be other errors, we only need to handle exceptions caused by study being processed. // Other errors will (probably) happen again when all studies are reloaded and will be handled in HandleStudyInUseError. if (ex.InUseCount > 0) { if (!HandleStudyInUseError(viewer)) { viewer.Dispose(); return(null); } } else { ExceptionHandler.Report(ex, SR.MessageFailedToOpenStudy, desktopWindow); } } catch (Exception e) { ExceptionHandler.Report(e, SR.MessageFailedToOpenStudy, desktopWindow); } if (!AnySopsLoaded(viewer) && !AllowEmptyViewer) { viewer.Dispose(); return(null); } var args = new LaunchImageViewerArgs(WindowBehaviour) { Title = Title }; ImageViewerComponent.Launch(viewer, args); codeClock.Stop(); // note: the time will be skewed if the workstation prompts users for action Platform.Log(LogLevel.Debug, string.Format("TTFI: {0}", codeClock)); return(viewer); }
protected override void OnStart(StartApplicationRequest request) { lock (_syncLock) { Platform.Log(LogLevel.Info, "Viewer Application is starting..."); if (Application.Instance == null) { Platform.StartApp("ClearCanvas.Desktop.Application", new string[] { "-r" }); } } if (Platform.IsLogLevelEnabled(LogLevel.Debug)) { Platform.Log(LogLevel.Debug, "Finding studies..."); } var startRequest = (StartViewerApplicationRequest)request; IList <StudyRootStudyIdentifier> studies = FindStudies(startRequest); List <LoadStudyArgs> loadArgs = CollectionUtils.Map(studies, (StudyRootStudyIdentifier identifier) => CreateLoadStudyArgs(identifier)); DesktopWindowCreationArgs args = new DesktopWindowCreationArgs("", Identifier.ToString()); WebDesktopWindow window = new WebDesktopWindow(args, Application.Instance); window.Open(); _viewer = CreateViewerComponent(startRequest); try { if (Platform.IsLogLevelEnabled(LogLevel.Debug)) { Platform.Log(LogLevel.Debug, "Loading study..."); } _viewer.LoadStudies(loadArgs); } catch (Exception e) { if (!AnySopsLoaded(_viewer)) //end the app. { throw; } //Show an error and continue. ExceptionHandler.Report(e, window); } if (Platform.IsLogLevelEnabled(LogLevel.Debug)) { Platform.Log(LogLevel.Info, "Launching viewer..."); } ImageViewerComponent.Launch(_viewer, window, ""); _viewerHandler = EntityHandler.Create <ViewerEntityHandler>(); _viewerHandler.SetModelObject(_viewer); _app = new Common.ViewerApplication { Identifier = Identifier, Viewer = (Viewer)_viewerHandler.GetEntity(), VersionString = GetProductVersionString() }; // Push the ViewerApplication object to the client Event @event = new PropertyChangedEvent { PropertyName = "Application", Value = _app, Identifier = Guid.NewGuid(), SenderId = request.Identifier }; ApplicationContext.Current.FireEvent(@event); }
public void LaunchMpr() { Exception exception = null; IPresentationImage currentImage = Context.Viewer.SelectedPresentationImage; if (currentImage == null) { return; } // gather the source frames which MPR will operate on. exceptions are reported. BackgroundTaskParams @params; try { @params = new BackgroundTaskParams(FilterSourceFrames(currentImage.ParentDisplaySet, currentImage)); } catch (Exception ex) { ReportException(ex); return; } // execute the task to create an MPR component. exceptions (either thrown or passed via task) are reported, but any created component must be disposed BackgroundTask task = new BackgroundTask(LoadVolume, true, @params); task.Terminated += (sender, e) => exception = e.Exception; try { ProgressDialog.Show(task, Context.DesktopWindow); } catch (Exception ex) { if (_viewer != null) { _viewer.Dispose(); _viewer = null; } ReportException(ex); return; } finally { task.Dispose(); } if (exception != null) { ReportException(exception); return; } // launch the created MPR component as a workspace. any exceptions here are just reported. try { LaunchImageViewerArgs args = new LaunchImageViewerArgs(ViewerLaunchSettings.WindowBehaviour); args.Title = _viewer.Title; ImageViewerComponent.Launch(_viewer, args); } catch (Exception ex) { ReportException(ex); } finally { _viewer = null; } }