using System; using System.Collections.Generic; using Artemis.Core.Models.Profile; using Artemis.Core.Plugins.Abstract; using Artemis.Core.Plugins.Models; using Artemis.UI.Shared.Events; using Artemis.UI.Shared.PropertyInput; using Ninject; namespace Artemis.UI.Shared.Services.Interfaces { public interface IProfileEditorService : IArtemisSharedUIService { Profile SelectedProfile { get; } ProfileElement SelectedProfileElement { get; } TimeSpan CurrentTime { get; set; } int PixelsPerSecond { get; set; } IReadOnlyList RegisteredPropertyEditors { get; } IKernel Kernel { get; } void ChangeSelectedProfile(Profile profile); void UpdateSelectedProfile(); void ChangeSelectedProfileElement(ProfileElement profileElement); void UpdateSelectedProfileElement(); void UpdateProfilePreview(); void UndoUpdateProfile(ProfileModule module); void RedoUpdateProfile(ProfileModule module); void StopRegularRender(); void ResumeRegularRender(); /// /// Occurs when a new profile is selected /// event EventHandler ProfileSelected; /// /// Occurs then the currently selected profile is updated /// event EventHandler SelectedProfileUpdated; /// /// Occurs when a new profile element is selected /// event EventHandler ProfileElementSelected; /// /// Occurs when the currently selected profile element is updated /// event EventHandler SelectedProfileElementUpdated; /// /// Occurs when the current editor time is changed /// event EventHandler CurrentTimeChanged; /// /// Occurs when the pixels per second (zoom level) is changed /// event EventHandler PixelsPerSecondChanged; /// /// Occurs when the profile preview has been updated /// event EventHandler ProfilePreviewUpdated; PropertyInputRegistration RegisterPropertyInput(PluginInfo pluginInfo, Type viewModelType); void RemovePropertyInput(PropertyInputRegistration registration); } }