Esempio n. 1
0
        public void unload(StandaloneController standaloneController, bool willReload, bool shuttingDown)
        {
            //Unload sequences
            if (loadedSequences != null)
            {
                MovementSequenceController movementSequenceController = standaloneController.MovementSequenceController;
                foreach (var info in loadedSequences)
                {
                    movementSequenceController.removeMovementSequence(info.GroupName, info);
                }
            }

            //Also need to unload icon resources, this isn't the best way, but unload by removing the branding image key and all task icons manually (done in task unload).
            ResourceManager.Instance.destroyAllTexturesForResource(BrandingImageKey);
            ResourceManager.Instance.removeByName(BrandingImageKey);

            if (!shuttingDown)
            {
                AnatomyTaskManager anatomyTasks = standaloneController.AnatomyTaskManager;
                foreach (DDPluginTask task in tasks)
                {
                    anatomyTasks.removeTask(task, willReload, task.TaggedAnatomy);
                    ResourceManager.Instance.destroyAllTexturesForResource(task.IconName);
                    ResourceManager.Instance.removeByName(task.IconName);
                }
            }
        }
Esempio n. 2
0
        public void initialize(StandaloneController standaloneController)
        {
            if (resources.Count > 0)
            {
                var resourceManager = standaloneController.AtlasPluginManager.ResourceManager;
                foreach (var subsystemResources in resourceManager.getSubsystemEnumerator())
                {
                    var resourceGroup = subsystemResources.addResourceGroup(PluginNamespace);
                    foreach (var resource in resources)
                    {
                        var engineResource = resourceGroup.addResource(Path.Combine(RootFolder, resource.Path), "EngineArchive", resource.Recursive);
                    }
                }

                resourceManager.initializeResources();
            }

            if (PropDefinitionDirectory != null)
            {
                String fullPropPath = Path.Combine(RootFolder, PropDefinitionDirectory);
                if (VirtualFileSystem.Instance.exists(fullPropPath))
                {
                    foreach (var propPath in VirtualFileSystem.Instance.listFiles(fullPropPath, "*.prop", false))
                    {
                        using (var stream = VirtualFileSystem.Instance.openStream(propPath, Engine.Resources.FileMode.Open, Engine.Resources.FileAccess.Read))
                        {
                            var propDefinition = SharedXmlSaver.Load <PropDefinition>(stream);
                            propDefinition.DependencyPluginId = PluginId;
                            standaloneController.PropFactory.addDefinition(propDefinition);
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        public PropFactory(StandaloneController standaloneController)
        {
            this.medicalController = standaloneController.MedicalController;

            standaloneController.SceneLoaded    += new SceneEvent(standaloneController_SceneLoaded);
            standaloneController.SceneUnloading += new SceneEvent(standaloneController_SceneUnloading);
        }
Esempio n. 4
0
        public override bool OnInit()
        {
            //Cusom Config
            MyGUIInterface.BeforeMainResourcesLoaded += MyGUIInterface_BeforeMainResourcesLoaded;

            //Core
            controller = new StandaloneController(this);
            controller.BeforeSceneLoadProperties += new SceneEvent(controller_BeforeSceneLoadProperties);
            splashScreen                = new SplashScreen(controller.MainWindow, FinishedPosition, "Medical.Resources.SplashScreen.SplashScreen.layout", "Medical.Resources.SplashScreen.SplashScreen.xml");
            splashScreen.Hidden        += splashScreen_Hidden;
            splashScreen.Hiding        += SplashScreen_Hiding;
            splashScreen.StatusUpdated += splashScreen_StatusUpdated;

            UpdateController.CurrentVersion = Assembly.GetAssembly(typeof(AnomalousMainPlugin)).GetName().Version;

            splashScreen.updateStatus(LoadingServerFilesPosition, "Loading Files from Server");
            ResourceManager.Instance.load("Medical.Resources.AnomalousBootstrapImagesets.xml");

            if (OnInitCompleted != null)
            {
                OnInitCompleted.Invoke(this, controller);
            }

            controller.IdleHandler.runTemporaryIdle(runSplashScreen());

            return(true);
        }
Esempio n. 5
0
        public void initialize(StandaloneController standaloneController)
        {
            GUIManager guiManager = standaloneController.GUIManager;

            guiManager.MainGUIShown  += new Action(guiManager_MainGUIShown);
            guiManager.MainGUIHidden += new Action(guiManager_MainGUIHidden);

            //Prop Mover
            MedicalController medicalController = standaloneController.MedicalController;

            propMover = new SimObjectMover("Props", medicalController.PluginManager.RendererPlugin, medicalController.EventManager, standaloneController.SceneViewController);

            this.standaloneController = standaloneController;
            editorTimelineController  = new TimelineController(standaloneController);
            standaloneController.giveGUIsToTimelineController(editorTimelineController);

            scratchAreaController = new ScratchAreaController(standaloneController.Clipboard);

            //Controller
            editorController = new EditorController(standaloneController, editorTimelineController);
            standaloneController.DocumentController.addDocumentHandler(new ProjectDocumentHandler(editorController));
            standaloneController.DocumentController.UnknownDocumentHander = new UnknownDocumentHandler(editorController);
            propEditController = new PropEditController(propMover);

            //UI Helpers
            editorUICallback = new EditorUICallback(standaloneController, editorController, propEditController);

            typeControllerManager = new TypeControllerManager(standaloneController, this);
            typeControllerManager.FilesystemWatcherCreated += typeControllerManager_FilesystemWatcherCreated;

            //Dialogs
            scratchArea = new ScratchArea(scratchAreaController, editorUICallback);
            guiManager.addManagedDialog(scratchArea);

            projectExplorer = new ProjectExplorer(editorController, typeControllerManager);
            guiManager.addManagedDialog(projectExplorer);

            //Tasks Menu
            TaskController taskController = standaloneController.TaskController;

            aspectRatioTask = new AspectRatioTask(standaloneController.SceneViewController);

            if (MedicalConfig.ShowDeveloperTools)
            {
                taskController.addTask(new MDIDialogOpenTask(scratchArea, "Medical.ScratchArea", "Scratch Area", "EditorIcons.ScratchAreaIcon", TaskMenuCategories.Create));
                taskController.addTask(new MDIDialogOpenTask(projectExplorer, "Medical.EditorTools", "Editor Tools", "EditorIcons.EditorTools", TaskMenuCategories.Create));
                taskController.addTask(aspectRatioTask);
            }

            editorTaskbarFactory = new EditorTaskbarFactory(editorController);
            standaloneController.ViewHostFactory.addFactory(new EditorInfoBarFactory());
            standaloneController.ViewHostFactory.addFactory(new TextEditorComponentFactory());
            standaloneController.ViewHostFactory.addFactory(editorTaskbarFactory);
            CommonEditorResources.initialize(standaloneController);

            editorController.ProjectChanged += editorController_ProjectChanged;

            //Editor Views
            standaloneController.ViewHostFactory.addFactory(new OffsetSequenceEditorFactory(standaloneController.MedicalController, standaloneController.Clipboard));
        }
Esempio n. 6
0
        public AtlasPluginManager(StandaloneController standaloneController)
        {
            requiredAssemblyVersion              = standaloneController.GetType().Assembly.GetName().Version;
            this.standaloneController            = standaloneController;
            standaloneController.SceneLoaded    += standaloneController_SceneLoaded;
            standaloneController.SceneUnloading += standaloneController_SceneUnloading;

            additionalSearchPath = FolderFinder.ExecutableFolder;

            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(FindArtworkPluginAssembly);

            managePluginInstructions = new ManagePluginInstructions(MedicalConfig.PluginConfig.PluginsFolder);

            resourceManager = PluginManager.Instance.createLiveResourceManager("Plugins");
        }
Esempio n. 7
0
        public void initialize(StandaloneController standaloneController)
        {
            TimelineController = standaloneController.TimelineController;
            AtlasPluginManager = standaloneController.AtlasPluginManager;
            MvcCore            = standaloneController.MvcCore;
            GuiManager         = standaloneController.GUIManager;

            AnatomyTaskManager anatomyTasks = standaloneController.AnatomyTaskManager;

            foreach (DDPluginTask task in tasks)
            {
                task._setPlugin(this);
                anatomyTasks.addTask(task, task.TaggedAnatomy);
            }

            //Load sequences
            if (!String.IsNullOrEmpty(SequencesDirectory))
            {
                String            fullSequencesDirectory = Path.Combine(PluginRootFolder, SequencesDirectory);
                VirtualFileSystem archive = VirtualFileSystem.Instance;
                if (archive.exists(fullSequencesDirectory))
                {
                    loadedSequences = new List <VirtualFSMovementSequenceInfo>();
                    MovementSequenceController movementSequenceController = standaloneController.MovementSequenceController;
                    foreach (String directory in archive.listDirectories(fullSequencesDirectory, false, false))
                    {
                        String groupName = archive.getFileInfo(directory).Name;
                        foreach (String file in archive.listFiles(directory, false))
                        {
                            VirtualFileInfo fileInfo = archive.getFileInfo(file);
                            String          fileName = fileInfo.Name;
                            if (fileName.EndsWith(".seq"))
                            {
                                VirtualFSMovementSequenceInfo info = new VirtualFSMovementSequenceInfo();
                                info.GroupName = groupName;
                                info.Name      = fileName.Substring(0, fileName.Length - 4);
                                info.FileName  = fileInfo.FullName;
                                movementSequenceController.addMovementSequence(info.GroupName, info);
                                loadedSequences.Add(info);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        public void initialize(StandaloneController standaloneController)
        {
            this.guiManager           = standaloneController.GUIManager;
            this.standaloneController = standaloneController;

            standaloneController.AnatomyController.ShowPremiumAnatomy = true;

            //Dialogs
            cloneWindowDialog = new CloneWindowDialog();

            //Tasks
            windowLayout = new ChangeWindowLayoutTask(standaloneController.SceneViewController);

            //Tasks Menu
            TaskController taskController = standaloneController.TaskController;

            taskController.addTask(new ChangeBackgroundColorTask(standaloneController.SceneViewController));
            if (PlatformConfig.AllowCloneWindows)
            {
                standaloneController.TaskController.addTask(new CloneWindowTask(standaloneController, cloneWindowDialog));
            }
            taskController.addTask(windowLayout);
        }
Esempio n. 9
0
        public void unload(StandaloneController standaloneController, bool willReload, bool shuttingDown)
        {
            if (resources.Count > 0)
            {
                var resourceManager = standaloneController.AtlasPluginManager.ResourceManager;
                foreach (var subsystemResources in resourceManager.getSubsystemEnumerator())
                {
                    subsystemResources.removeResourceGroup(PluginNamespace);
                }

                resourceManager.initializeResources();
            }

            //Unload props
            if (PropDefinitionDirectory != null)
            {
                standaloneController.PropFactory.removePropsForPlugin(PluginId);
            }

            //Remove resources
            MyGUIPlugin.ResourceManager.Instance.destroyAllTexturesForResource(BrandingImageKey);
            MyGUIPlugin.ResourceManager.Instance.removeByName(BrandingImageKey);
        }
Esempio n. 10
0
        public VirtualTextureSceneViewLink(StandaloneController standaloneController)
        {
            this.standaloneController            = standaloneController;
            standaloneController.SceneLoaded    += standaloneController_SceneLoaded;
            standaloneController.SceneUnloading += standaloneController_SceneUnloading;

            cameraLink = new CameraLink(standaloneController.SceneViewController);

            CompressedTextureSupport textureFormat = OgreInterface.Instance.SelectedTextureFormat;

            virtualTextureManager = new VirtualTextureManager(UnifiedMaterialBuilder.GetNumCompressedTexturesNeeded(textureFormat), MedicalConfig.PhysicalTextureSize, MedicalConfig.PageSize, 4096, textureFormat, MedicalConfig.VirtualTextureStagingBufferCount, MedicalConfig.FeedbackBufferSize, MedicalConfig.TextureCacheSize, UnifiedMaterialBuilder.AreTexturesPagedOnDisk(textureFormat));
            virtualTextureManager.MaxStagingUploadPerFrame = MedicalConfig.MaxStagingVirtualTextureUploadsPerFrame;
            virtualTextureManager.TransparentFeedbackBufferVisibilityMask = TransparencyController.TransparentVisibilityMask;
            virtualTextureManager.OpaqueFeedbackBufferVisibilityMask      = TransparencyController.OpaqueVisibilityMask;
            virtualTextureManager.MipSampleBias      = -3;
            virtualTextureManager.AutoAdjustMipLevel = false;

            materialBuilder = new UnifiedMaterialBuilder(virtualTextureManager, OgreInterface.Instance.SelectedTextureFormat, standaloneController.MedicalController.PluginManager.createLiveResourceManager("UnifiedShaders"));
            OgreInterface.Instance.MaterialParser.addMaterialBuilder(materialBuilder);
            TransparencyController.initialize(materialBuilder);

            standaloneController.MainWindow.DestroyInternalResources += MainWindow_DestroyInternalResources;
            standaloneController.MainWindow.CreateInternalResources  += MainWindow_CreateInternalResources;
        }
        public static void initialize(StandaloneController standaloneController)
        {
            if (load)
            {
                load = false;

                ResourceManager.Instance.load("Medical.Resources.CommonEditorIcons.xml");
                ResourceManager.Instance.load("Medical.Resources.TimelineImages.xml");
                ResourceManager.Instance.load("Medical.Resources.HandImages.xml");
                ResourceManager.Instance.load("Medical.Resources.RmlWysiwygIcons.xml");

                standaloneController.ViewHostFactory.addFactory(new RmlWysiwygComponentFactory());
                standaloneController.ViewHostFactory.addFactory(new DragAndDropFactory());
                standaloneController.ViewHostFactory.addFactory(new GenericEditorComponentFactory());
                standaloneController.ViewHostFactory.addFactory(new PropTimelineFactory(standaloneController.Clipboard));
                standaloneController.ViewHostFactory.addFactory(new TimelineComponentFactory(standaloneController.Clipboard));
                standaloneController.ViewHostFactory.addFactory(new MovementSequenceEditorFactory(standaloneController.MovementSequenceController, standaloneController.Clipboard));

                PropertiesForm.addFormCreationMethod(typeof(ChangeHandPosition), (property, parentWidget) =>
                {
                    return(new PoseableHandProperties(property, parentWidget));
                });
            }
        }
 public PatientDocumentHandler(StandaloneController standaloneController)
 {
     this.standaloneController = standaloneController;
 }
Esempio n. 13
0
        static void HandleAddAdditionalPlugins(AnomalousController anomalousController, StandaloneController controller)
        {
            controller.AtlasPluginManager.addPlugin(new PremiumBodyAtlasPlugin(controller)
            {
                AllowUninstall = false
            });

            controller.AtlasPluginManager.addPlugin(new DentalSimPlugin()
            {
                AllowUninstall = false
            });

            controller.AtlasPluginManager.addPlugin(new LecturePlugin()
            {
                AllowUninstall = false
            });

            controller.AtlasPluginManager.addPlugin(new Movement.MovementBodyAtlasPlugin()
            {
                AllowUninstall = false
            });
            controller.AtlasPluginManager.addPlugin(new Developer.DeveloperAtlasPlugin(controller)
            {
                AllowUninstall = false
            });
            controller.AtlasPluginManager.addPlugin(new EditorPlugin()
            {
                AllowUninstall = false
            });
        }
 public override void createPlugin(StandaloneController standaloneController)
 {
     standaloneController.AtlasPluginManager.addPlugin(new PremiumBodyAtlasPlugin(standaloneController));
 }
 public MusclePositionController(UpdateTimer timer, StandaloneController controller)
 {
     updateListener           = new SubscribingUpdateListener(timer);
     updateListener.OnUpdate += updateListener_OnUpdate;
     controller.SceneLoaded  += controller_SceneLoaded;
 }
Esempio n. 16
0
 public EditorController(StandaloneController standaloneController, TimelineController timelineController)
 {
     this.timelineController   = timelineController;
     this.standaloneController = standaloneController;
     EditorContextRuntimeName  = "Editor.CurrentEditor";
 }
        public PluginEditorContext(DDAtlasPlugin plugin, String file, PluginTypeController pluginTypeController, EditorController editorController, GuiFrameworkUICallback uiCallback, StandaloneController standaloneController)
        {
            this.pluginTypeController = pluginTypeController;
            this.currentFile          = file;
            this.plugin               = plugin;
            this.editorController     = editorController;
            this.standaloneController = standaloneController;

            mvcContext = new AnomalousMvcContext();
            mvcContext.StartupAction = "Common/Start";
            mvcContext.FocusAction   = "Common/Focus";
            mvcContext.BlurAction    = "Common/Blur";
            mvcContext.SuspendAction = "Common/Suspended";
            mvcContext.ResumeAction  = "Common/Resumed";

            mvcContext.Models.add(new EditMenuManager());

            GenericPropertiesFormView genericPropertiesView = new GenericPropertiesFormView("MvcContext", plugin.EditInterface, editorController, uiCallback, true);

            genericPropertiesView.ElementName = new MDILayoutElementName(GUILocationNames.MDI, DockLocation.Left);
            mvcContext.Views.add(genericPropertiesView);

            EditorTaskbarView taskbar = new EditorTaskbarView("InfoBar", currentFile, "Editor/Close");

            taskbar.addTask(new CallbackTask("SaveAll", "Save All", "Editor/SaveAllIcon", "", 0, true, item =>
            {
                saveAll();
            }));
            taskbar.addTask(new RunMvcContextActionTask("Save", "Save Plugin Definition File", "CommonToolstrip/Save", "File", "Editor/Save", mvcContext));
            taskbar.addTask(new CallbackTask("FindDependencies", "Find Dependencies", "EditorFileIcon/.ddp", "", item =>
            {
                findDependencies();
            }));
            mvcContext.Views.add(taskbar);

            mvcContext.Controllers.add(new MvcController("Editor",
                                                         new RunCommandsAction("Show",
                                                                               new ShowViewCommand("MvcContext"),
                                                                               new ShowViewCommand("InfoBar")),
                                                         new RunCommandsAction("Close", new CloseAllViewsCommand()),
                                                         new CallbackAction("Save", context =>
            {
                save();
            })));

            mvcContext.Controllers.add(new MvcController("Common",
                                                         new RunCommandsAction("Start", new RunActionCommand("Editor/Show")),
                                                         new CallbackAction("Focus", context =>
            {
                GlobalContextEventHandler.setEventContext(eventContext);
                if (Focus != null)
                {
                    Focus.Invoke(this);
                }
            }),
                                                         new CallbackAction("Blur", context =>
            {
                GlobalContextEventHandler.disableEventContext(eventContext);
                if (Blur != null)
                {
                    Blur.Invoke(this);
                }
            }),
                                                         new RunCommandsAction("Suspended", new SaveViewLayoutCommand()),
                                                         new RunCommandsAction("Resumed", new RestoreViewLayoutCommand())));

            eventContext = new EventContext();
            ButtonEvent saveEvent = new ButtonEvent(EventLayers.Gui);

            saveEvent.addButton(KeyboardButtonCode.KC_LCONTROL);
            saveEvent.addButton(KeyboardButtonCode.KC_S);
            saveEvent.FirstFrameUpEvent += eventManager =>
            {
                saveAll();
            };
            eventContext.addEvent(saveEvent);
        }
Esempio n. 18
0
 public TimelineController(StandaloneController standaloneController)
 {
     this.mainTimer            = standaloneController.MedicalController.MainTimer;
     this.standaloneController = standaloneController;
 }
 public override void createPlugin(StandaloneController standaloneController)
 {
     standaloneController.AtlasPluginManager.addPlugin(new EditorPlugin());
 }
Esempio n. 20
0
 public PremiumBodyAtlasPlugin(StandaloneController standaloneController)
 {
     this.AllowUninstall = true;
     this.licenseManager = standaloneController.LicenseManager;
 }
        public TypeControllerManager(StandaloneController standaloneController, EditorPlugin plugin)
        {
            this.standaloneController = standaloneController;
            propEditController        = plugin.PropEditController;
            EditorController editorController = plugin.EditorController;

            editorController.ProjectChanged          += editorController_ProjectChanged;
            editorController.ResourceProviderClosing += editorController_ResourceProviderClosing;
            editorController.ResourceProviderOpened  += editorController_ResourceProviderOpened;

            //MVC Type Controller
            MvcTypeController mvcTypeController = new MvcTypeController(editorController);

            mvcTypeController.OpenEditor += (file, editingMvcContex) =>
            {
                mvcEditorContext = new MvcEditorContext(editingMvcContex, file, mvcTypeController, plugin.EditorController, plugin.UICallback);
                plugin.UICallback.CurrentEditingMvcContext = editingMvcContex;
                if (standaloneController.SharePluginController != null)
                {
                    CallbackTask cleanupBeforeShareTask = new CallbackTask("Lecture.SharePluginTask", standaloneController.SharePluginController.Name, standaloneController.SharePluginController.IconName, standaloneController.SharePluginController.Category, 0, false, (item) =>
                    {
                        MessageBox.show("Before sharing your Editor Project it will be saved. Do you wish to continue?", "Share Editor Project", MessageBoxStyle.IconQuest | MessageBoxStyle.Yes | MessageBoxStyle.No, (result) =>
                        {
                            if (result == MessageBoxStyle.Yes)
                            {
                                editorController.saveAllCachedResources();
                                standaloneController.SharePluginController.sharePlugin(editorController.ResourceProvider.BackingProvider, PluginCreationTool.EditorTools);
                            }
                        });
                    });
                    mvcEditorContext.addTask(cleanupBeforeShareTask);
                }
                mvcEditorContext.Focused += (obj) =>
                {
                    mvcEditorContext = obj;
                };
                mvcEditorContext.Blured += (obj) =>
                {
                    if (mvcEditorContext == obj)
                    {
                        mvcEditorContext = null;
                    }
                };
                editorController.runEditorContext(mvcEditorContext.MvcContext);
            };

            //Rml type controller
            RmlTypeController rmlTypeController = new RmlTypeController(editorController);

            rmlTypeController.OpenEditor += (file) =>
            {
                rmlEditorContext        = new RmlEditorContext(file, rmlTypeController, mvcTypeController.CurrentObject, plugin.EditorController, plugin.UICallback);
                rmlEditorContext.Focus += (obj) =>
                {
                    rmlEditorContext = obj;
                };
                rmlEditorContext.Blur += obj =>
                {
                    rmlTypeController.updateCachedText(obj.CurrentFile, obj.CurrentText);
                    if (rmlEditorContext == obj)
                    {
                        rmlEditorContext = null;
                    }
                };
                editorController.runEditorContext(rmlEditorContext.MvcContext);
            };

            //Rcss Type Controller
            RcssTypeController rcssTypeController = new RcssTypeController(editorController);

            rcssTypeController.OpenEditor += (file) =>
            {
                rcssEditorContext        = new RcssEditorContext(file, rmlTypeController.LastRmlFile, rcssTypeController);
                rcssEditorContext.Focus += (obj) =>
                {
                    rcssEditorContext = obj;
                };
                rcssEditorContext.Blur += (obj) =>
                {
                    rcssTypeController.updateCachedText(obj.CurrentFile, obj.CurrentText);
                    if (rcssEditorContext == obj)
                    {
                        rcssEditorContext = null;
                    }
                };
                editorController.runEditorContext(rcssEditorContext.MvcContext);
            };

            //Plugin type controller
            PluginTypeController pluginTypeController = new PluginTypeController(editorController);

            pluginTypeController.OpenEditor += (file, ddPlugin) =>
            {
                pluginEditorContext        = new PluginEditorContext(ddPlugin, file, pluginTypeController, plugin.EditorController, plugin.UICallback, standaloneController);
                pluginEditorContext.Focus += obj =>
                {
                    pluginEditorContext = obj;
                };
                pluginEditorContext.Blur += obj =>
                {
                    if (pluginEditorContext == obj)
                    {
                        pluginEditorContext = null;
                    }
                };
                editorController.runEditorContext(pluginEditorContext.MvcContext);
            };

            //Dependency type controller
            DependencyTypeController dependencyTypeController = new DependencyTypeController(editorController);

            dependencyTypeController.OpenEditor += (file, ddDep) =>
            {
                dependencyEditorContext        = new DependencyEditorContext(ddDep, file, dependencyTypeController, plugin.EditorController, plugin.UICallback);
                dependencyEditorContext.Focus += obj =>
                {
                    dependencyEditorContext = obj;
                };
                dependencyEditorContext.Blur += obj =>
                {
                    if (dependencyEditorContext == obj)
                    {
                        dependencyEditorContext = null;
                    }
                };
                editorController.runEditorContext(dependencyEditorContext.MvcContext);
            };

            //Movement Sequence type controller
            MovementSequenceTypeController movementSequenceTypeController = new MovementSequenceTypeController(editorController);

            movementSequenceTypeController.OpenEditor += (file, movementSequence) =>
            {
                movementSequenceEditorContext        = new MovementSequenceEditorContext(movementSequence, file, movementSequenceTypeController);
                movementSequenceEditorContext.Focus += obj =>
                {
                    movementSequenceEditorContext = obj;
                };
                movementSequenceEditorContext.Blur += obj =>
                {
                    if (movementSequenceEditorContext == obj)
                    {
                        movementSequenceEditorContext = null;
                    }
                };
                editorController.runEditorContext(movementSequenceEditorContext.MvcContext);
            };



            //Movement Sequence type controller
            OffsetSequenceTypeController offsetSequenceTypeController = new OffsetSequenceTypeController(editorController);

            offsetSequenceTypeController.OpenEditor += (file, movementSequence) =>
            {
                offsetSequenceEditorContext        = new OffsetSequenceEditorContext(movementSequence, file, offsetSequenceTypeController, plugin.UICallback, plugin.SimObjectMover);
                offsetSequenceEditorContext.Focus += obj =>
                {
                    offsetSequenceEditorContext = obj;
                };
                offsetSequenceEditorContext.Blur += obj =>
                {
                    if (offsetSequenceEditorContext == obj)
                    {
                        offsetSequenceEditorContext = null;
                    }
                };
                editorController.runEditorContext(offsetSequenceEditorContext.MvcContext);
            };

            //TRML Type controller
            TRmlTypeController trmlTypeController = new TRmlTypeController(editorController);

            trmlTypeController.OpenEditor += (file) =>
            {
                trmlEditorContext        = new TRmlEditorContext(file, rmlTypeController.LastRmlFile, trmlTypeController);
                trmlEditorContext.Focus += obj =>
                {
                    trmlEditorContext = obj;
                };
                trmlEditorContext.Blur += obj =>
                {
                    trmlTypeController.updateCachedText(obj.CurrentFile, obj.CurrentText);
                    if (trmlEditorContext == obj)
                    {
                        trmlEditorContext = null;
                    }
                };
                editorController.runEditorContext(trmlEditorContext.MvcContext);
            };

            //Timeline type controller
            TimelineTypeController timelineTypeController = new TimelineTypeController(editorController);

            timelineTypeController.OpenEditor += (file, timeline) =>
            {
                propEditController.removeAllOpenProps();
                timelineEditorContext        = new TimelineEditorContext(timeline, file, timelineTypeController, propEditController, standaloneController.PropFactory, plugin.EditorController, plugin.UICallback, plugin.TimelineController);
                timelineEditorContext.Focus += obj =>
                {
                    timelineEditorContext = obj;
                };
                timelineEditorContext.Blur += obj =>
                {
                    if (obj == timelineEditorContext)
                    {
                        timelineEditorContext = null;
                    }
                };
                editorController.runEditorContext(timelineEditorContext.MvcContext);
            };

            //Xml Type Controller
            XmlTypeController xmlTypeController = new XmlTypeController(editorController);

            xmlTypeController.OpenEditor += (file) =>
            {
                xmlEditorContext        = new XmlEditorContext(file, rmlTypeController.LastRmlFile, xmlTypeController);
                xmlEditorContext.Focus += (obj) =>
                {
                    xmlEditorContext = obj;
                };
                xmlEditorContext.Blur += (obj) =>
                {
                    xmlTypeController.updateCachedText(obj.CurrentFile, obj.CurrentText);
                    if (xmlEditorContext == obj)
                    {
                        xmlEditorContext = null;
                    }
                };
                editorController.runEditorContext(xmlEditorContext.MvcContext);
            };

            //Prop type controller
            PropTypeController propTypeController = new PropTypeController(editorController);

            propTypeController.OpenEditor += (file, propDefinition) =>
            {
                propEditorContext        = new PropEditorContext(propDefinition, file, propTypeController, plugin.EditorController, plugin.UICallback);
                propEditorContext.Focus += obj =>
                {
                    propEditorContext = obj;
                };
                propEditorContext.Blur += obj =>
                {
                    if (propEditorContext == obj)
                    {
                        propEditorContext = null;
                    }
                };
                editorController.runEditorContext(propEditorContext.MvcContext);
            };

            //Add item templates
            editorController.addItemTemplate(new EmptyViewItemTemplate(rmlTypeController, mvcTypeController));
            editorController.addItemTemplate(new ViewWithTimelineItemTemplate(rmlTypeController, mvcTypeController, timelineTypeController));

            //Add type controllers to editor controller, this also adds some item templates
            editorController.addTypeController(timelineTypeController);
            editorController.addTypeController(movementSequenceTypeController);
            editorController.addTypeController(offsetSequenceTypeController);
            editorController.addTypeController(rmlTypeController);
            editorController.addTypeController(trmlTypeController);
            editorController.addTypeController(rcssTypeController);
            editorController.addTypeController(mvcTypeController);
            editorController.addTypeController(pluginTypeController);
            editorController.addTypeController(dependencyTypeController);
            editorController.addTypeController(xmlTypeController);
            editorController.addTypeController(propTypeController);

            //Add any final item templates
            editorController.addItemTemplate(new PluginBrandingResourceItemTemplate());
        }
 public abstract void createPlugin(StandaloneController standaloneController);
Esempio n. 23
0
        public CommonUICallback(StandaloneController standaloneController, EditorController editorController, PropEditController propEditController)
        {
            this.editorController     = editorController;
            this.standaloneController = standaloneController;
            this.propEditController   = propEditController;

            this.addOneWayCustomQuery(CameraPosition.CustomEditQueries.CaptureCameraPosition, delegate(CameraPosition camPos)
            {
                SceneViewWindow activeWindow = standaloneController.SceneViewController.ActiveWindow;
                if (activeWindow != null)
                {
                    camPos.Translation = activeWindow.Translation;
                    camPos.LookAt      = activeWindow.LookAt;
                    activeWindow.calculateIncludePoint(camPos);
                }
            });

            this.addOneWayCustomQuery(CameraPosition.CustomEditQueries.PreviewCameraPosition, delegate(CameraPosition camPos)
            {
                SceneViewWindow activeWindow = standaloneController.SceneViewController.ActiveWindow;
                if (activeWindow != null)
                {
                    CameraPosition undo = activeWindow.createCameraPosition();
                    activeWindow.setPosition(camPos, MedicalConfig.CameraTransitionTime);
                    activeWindow.pushUndoState(undo);
                }
            });

            this.addCustomQuery <PresetState>(ChangeMedicalStateCommand.CustomEditQueries.CapturePresetState, delegate(SendResult <PresetState> resultCallback)
            {
                PresetStateCaptureDialog stateCaptureDialog = new PresetStateCaptureDialog(resultCallback);
                stateCaptureDialog.SmoothShow = true;
                stateCaptureDialog.open(true);
            });

            this.addOneWayCustomQuery(RmlView.CustomQueries.OpenFileInRmlViewer, delegate(String file)
            {
                editorController.openEditor(file);
            });

            this.addCustomQuery <Browser>(ViewCollection.CustomQueries.CreateViewBrowser, delegate(SendResult <Browser> resultCallback)
            {
                Browser browser = new Browser("Views", "Choose View Type");
                standaloneController.MvcCore.ViewHostFactory.createViewBrowser(browser);
                String errorPrompt = null;
                resultCallback(browser, ref errorPrompt);
            });

            this.addCustomQuery <Browser>(ModelCollection.CustomQueries.CreateModelBrowser, delegate(SendResult <Browser> resultCallback)
            {
                Browser browser = new Browser("Models", "Choose Model Type");

                browser.addNode(null, null, new BrowserNode("DataModel", typeof(DataModel), DataModel.DefaultName));
                browser.addNode(null, null, new BrowserNode("Navigation", typeof(NavigationModel), NavigationModel.DefaultName));
                browser.addNode(null, null, new BrowserNode("MedicalStateInfo", typeof(MedicalStateInfoModel), MedicalStateInfoModel.DefaultName));
                browser.addNode(null, null, new BrowserNode("BackStack", typeof(BackStackModel), BackStackModel.DefaultName));
                String error = null;
                resultCallback(browser, ref error);
            });

            this.addCustomQuery <Type>(RunCommandsAction.CustomQueries.ShowCommandBrowser, delegate(SendResult <Type> resultCallback)
            {
                this.showBrowser(RunCommandsAction.CreateCommandBrowser(), resultCallback);
            });

            this.addCustomQuery <Color>(ShowTextAction.CustomQueries.ChooseColor, queryDelegate =>
            {
                ColorDialog colorDialog = new ColorDialog();
                colorDialog.showModal((result, color) =>
                {
                    if (result == NativeDialogResult.OK)
                    {
                        String errorPrompt = null;
                        queryDelegate.Invoke(color, ref errorPrompt);
                    }
                });
            });

            this.addOneWayCustomQuery <ShowPropAction>(ShowPropAction.CustomQueries.KeepOpenToggle, showPropAction =>
            {
                if (showPropAction.KeepOpen)
                {
                    propEditController.removeOpenProp(showPropAction);
                }
                else
                {
                    propEditController.addOpenProp(showPropAction);
                }
            });

            this.addSyncCustomQuery <Browser, IEnumerable <String>, String>(FileBrowserEditableProperty.CustomQueries.BuildBrowser, (searchPattern, prompt) =>
            {
                return(createFileBrowser(searchPattern, prompt));
            });

            this.addSyncCustomQuery <Browser>(AnatomyManager.CustomQueries.BuildBrowser, () =>
            {
                return(AnatomyManager.buildBrowser());
            });

            this.addSyncCustomQuery <Browser>(PropBrowserEditableProperty.CustomQueries.BuildBrowser, () =>
            {
                Browser browser = new Browser("Props", "Choose Prop");
                foreach (var propDef in standaloneController.TimelineController.PropFactory.PropDefinitions)
                {
                    if (standaloneController.LicenseManager.allowPropUse(propDef.PropLicenseId))
                    {
                        browser.addNode(propDef.BrowserPath, new BrowserNode(propDef.PrettyName, propDef.Name));
                    }
                }
                return(browser);
            });

            this.addSyncCustomQuery <Browser>(ElementNameEditableProperty.CustomQueries.BuildBrowser, () =>
            {
                Browser browser = new Browser("Screen Location Name", "Choose Screen Location Name");
                foreach (var elementName in standaloneController.GUIManager.NamedLinks)
                {
                    browser.addNode(null, null, new BrowserNode(elementName.UniqueDerivedName, elementName));
                }
                return(browser);
            });

            addOneWayCustomQuery <String>(PlaySoundAction.CustomQueries.EditExternally, soundFile =>
            {
                if (soundFile != null && editorController.ResourceProvider.exists(soundFile))
                {
                    String fullPath = editorController.ResourceProvider.getFullFilePath(soundFile);
                    OtherProcessManager.openLocalURL(fullPath);
                }
            });
        }
Esempio n. 24
0
 public void unload(StandaloneController standaloneController, bool willReload, bool shuttingDown)
 {
 }
Esempio n. 25
0
 public PatientDataController(StandaloneController standaloneController)
 {
     this.standaloneController   = standaloneController;
     this.medicalStateController = standaloneController.MedicalStateController;
     this.medicalController      = standaloneController.MedicalController;
 }
Esempio n. 26
0
        public EditorUICallback(StandaloneController standaloneController, EditorController editorController, PropEditController propEditController)
            : base(standaloneController, editorController, propEditController)
        {
            this.addOneWayCustomQuery(AnomalousMvcContext.CustomQueries.Preview, delegate(AnomalousMvcContext context)
            {
                previewMvcContext(context);
            });

            this.addSyncCustomQuery<Browser>(ViewBrowserEditableProperty.CustomQueries.BuildBrowser, () =>
            {
                Browser browser = new Browser("Views", "Choose View");
                if (CurrentEditingMvcContext != null)
                {
                    foreach (View view in CurrentEditingMvcContext.Views)
                    {
                        browser.addNode(null, null, new BrowserNode(view.Name, view.Name));
                    }
                }
                return browser;
            });

            this.addSyncCustomQuery<Browser, Type>(ModelBrowserEditableProperty.CustomQueries.BuildBrowser, (assignableFromType) =>
            {
                Browser browser = new Browser("Models", "Choose Model");
                if (CurrentEditingMvcContext != null)
                {
                    foreach (MvcModel model in CurrentEditingMvcContext.Models)
                    {
                        if (assignableFromType.IsAssignableFrom(model.GetType()))
                        {
                            browser.addNode(null, null, new BrowserNode(model.Name, model.Name));
                        }
                    }
                }
                return browser;
            });

            this.addOneWayCustomQuery(View.CustomQueries.AddControllerForView, delegate(View view)
            {
                AnomalousMvcContext context = CurrentEditingMvcContext;
                String controllerName = view.Name;
                if (context.Controllers.hasItem(controllerName))
                {
                    MessageBox.show(String.Format("There is already a controller named {0}. Cannot create a new one.", controllerName), "Error", MessageBoxStyle.IconError | MessageBoxStyle.Ok);
                }
                else
                {
                    MvcController controller = new MvcController(controllerName);
                    RunCommandsAction showCommand = new RunCommandsAction("Show");
                    showCommand.addCommand(new ShowViewCommand(view.Name));
                    controller.Actions.add(showCommand);

                    RunCommandsAction closeCommand = new RunCommandsAction("Close");
                    closeCommand.addCommand(new CloseViewCommand());
                    controller.Actions.add(closeCommand);
                    context.Controllers.add(controller);
                }
            });

            this.addSyncCustomQuery<Browser>(ActionBrowserEditableProperty.CustomQueries.BuildBrowser, () =>
            {
                return createActionBrowser();
            });

            this.addSyncCustomQuery<Browser>(ElementAttributeEditor.CustomQueries.BuildActionBrowser, () =>
            {
                return createActionBrowser();
            });

            this.addSyncCustomQuery<Browser, IEnumerable<String>, String, String>(ElementAttributeEditor.CustomQueries.BuildFileBrowser, (searchPatterns, prompt, leadingPath) =>
            {
                return createFileBrowser(searchPatterns, prompt, leadingPath);
            });

            this.addCustomQuery<String, String>(PlaySoundAction.CustomQueries.Record, (queryResult, soundFile) =>
            {
                this.getInputString("Enter a name for the sound file.", delegate(String result, ref String errorMessage)
                {
                    String finalSoundFile = Path.ChangeExtension(result, ".ogg");
                    String error = null;
                    QuickSoundRecorder.ShowDialog(standaloneController.MedicalController, finalSoundFile, editorController.ResourceProvider.openWriteStream,
                    newSoundFile =>
                    {
                        queryResult.Invoke(newSoundFile, ref error);
                    });
                    return true;
                });
            });

            this.addSyncCustomQuery<Browser>(TimelinePreActionEditInterface.CustomQueries.BuildActionBrowser, () =>
            {
                var browser = new Browser("Pre Actions", "Choose Pre Action");
                browser.addNode(null, null, new BrowserNode("Change Scene", typeof(OpenNewSceneAction)));
                browser.addNode(null, null, new BrowserNode("Show Skip To Post Actions Prompt", typeof(SkipToPostActions)));
                browser.addNode(null, null, new BrowserNode("Run Mvc Action", typeof(RunMvcAction)));
                return browser;
            });

            this.addSyncCustomQuery<Browser>(TimelinePostActionEditInterface.CustomQueries.BuildActionBrowser, () =>
            {
                var browser = new Browser("Post Actions", "Choose Post Action");
                browser.addNode(null, null, new BrowserNode("Load Another Timeline", typeof(LoadAnotherTimeline)));
                browser.addNode(null, null, new BrowserNode("Repeat Previous", typeof(RepeatPreviousPostActions)));
                browser.addNode(null, null, new BrowserNode("Run Mvc Action", typeof(RunMvcAction)));
                return browser;
            });
        }