public LayoutTagHelper( IViewHelperFactory viewHelperFactory, IThemeSelector themeSelector) { _viewHelperFactory = viewHelperFactory; _themeSelector = themeSelector; }
void LoadThemes() { var themeDir = Path.Combine(ApplicationDirectory.FullName, "themes"); ThemeManager = ThemeSelector.LoadSafe(themeDir); Log.Information("Themes successfully loaded. Available themes: {0}", string.Join(", ", ThemeManager.Select(t => t.Name))); var themeName = Settings.Get(SettingName.Theme, ThemeManager.First().Name); if (!ThemeManager.SelectTheme(themeName)) { Log.Warning("Theme '{0}' not available, reverting to default.", themeName); ThemeManager.SelectedTheme = ThemeManager.First(); Settings.Set(SettingName.Theme, ThemeManager.SelectedTheme.Name); } else { Log.Information("Theme set to {0}.", themeName); } ThemeManager.PropertyChanged += (sender, e) => { if (e.PropertyName == nameof(ThemeSelector.SelectedTheme)) { Settings.Set(SettingName.Theme, ThemeManager.SelectedTheme.Name); Settings.Save(); } }; }
/// <summary> /// Initialize application context and displays main window. /// </summary> /// <param name="serviceProvider">The service provider.</param> /// <param name="aboutInfo">The about information.</param> public void Start(IServiceProvider serviceProvider, AboutInfo aboutInfo) { InitializeConverters(serviceProvider); Selector = ThemeSelector.Create("Themes"); Selector.LoadSelectedTheme("Core2D.theme"); var log = serviceProvider.GetService <ILog>(); var fileIO = serviceProvider.GetService <IFileSystem>(); log?.Initialize(System.IO.Path.Combine(fileIO?.GetBaseDirectory(), "Core2D.log")); try { var editor = serviceProvider.GetService <IProjectEditor>(); editor.LayoutPlatform.LoadLayout = () => editor.Platform.OnLoadLayout(); editor.LayoutPlatform.SaveLayout = () => editor.Platform.OnSaveLayout(); editor.LayoutPlatform.ResetLayout = () => editor.Platform.OnResetLayout(); var layoutPath = System.IO.Path.Combine(fileIO.GetBaseDirectory(), "Core2D.layout"); if (fileIO.Exists(layoutPath)) { editor.OnLoadLayout(layoutPath); } var dockFactory = serviceProvider.GetService <IDockFactory>(); editor.Layout = editor.Layout ?? dockFactory.CreateLayout(); dockFactory.InitLayout(editor.Layout); var recentPath = System.IO.Path.Combine(fileIO.GetBaseDirectory(), "Core2D.recent"); if (fileIO.Exists(recentPath)) { editor.OnLoadRecent(recentPath); } editor.CurrentTool = editor.Tools.FirstOrDefault(t => t.Title == "Selection"); editor.CurrentPathTool = editor.PathTools.FirstOrDefault(t => t.Title == "Line"); editor.IsToolIdle = true; editor.AboutInfo = aboutInfo; var window = serviceProvider.GetService <Windows.MainWindow>(); window.Closing += (sender, e) => { editor.Layout.Close(); editor.OnSaveLayout(layoutPath); editor.OnSaveRecent(recentPath); Selector.SaveSelectedTheme("Core2D.theme"); }; window.DataContext = editor; window.Show(); Run(window); } catch (Exception ex) { log?.LogException(ex); } }
public DefaultThemeManager( IServiceProvider serviceProvider, IThemeSelector themeSelector, IHttpContextAccessor httpContextAccessor) { HttpContextAccessor = httpContextAccessor; ServiceProvider = serviceProvider; ThemeSelector = themeSelector; }
/// <inheritdoc/> public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime) { var builder = new ContainerBuilder(); builder.RegisterModule <LocatorModule>(); builder.RegisterModule <CoreModule>(); builder.RegisterModule <DependenciesModule>(); builder.RegisterModule <AppModule>(); builder.RegisterModule <ViewModule>(); var container = builder.Build(); var serviceProvider = container.Resolve <IServiceProvider>(); InitializeConverters(serviceProvider); Selector = ThemeSelector.Create("Themes"); Selector.LoadSelectedTheme("Core2D.theme"); var log = serviceProvider.GetService <ILog>(); var fileIO = serviceProvider.GetService <IFileSystem>(); log?.Initialize(System.IO.Path.Combine(fileIO?.GetBaseDirectory(), "Core2D.log")); var editor = serviceProvider.GetService <IProjectEditor>(); editor.LayoutPlatform.LoadLayout = () => editor.Platform.OnLoadLayout(); editor.LayoutPlatform.SaveLayout = () => editor.Platform.OnSaveLayout(); editor.LayoutPlatform.ResetLayout = () => editor.Platform.OnResetLayout(); var layoutPath = System.IO.Path.Combine(fileIO.GetBaseDirectory(), "Core2D.layout"); if (fileIO.Exists(layoutPath)) { editor.OnLoadLayout(layoutPath); } var dockFactory = serviceProvider.GetService <DM.IFactory>(); editor.Layout = editor.Layout ?? dockFactory.CreateLayout(); dockFactory.InitLayout(editor.Layout); var recentPath = System.IO.Path.Combine(fileIO.GetBaseDirectory(), "Core2D.recent"); if (fileIO.Exists(recentPath)) { editor.OnLoadRecent(recentPath); } editor.CurrentTool = editor.Tools.FirstOrDefault(t => t.Title == "Selection"); editor.CurrentPathTool = editor.PathTools.FirstOrDefault(t => t.Title == "Line"); editor.IsToolIdle = true; var runtimeInfo = AvaloniaLocator.Current.GetService <IRuntimePlatform>().GetRuntimeInfo(); var windowingPlatform = AvaloniaLocator.Current.GetService <IWindowingPlatform>(); var platformRenderInterface = AvaloniaLocator.Current.GetService <IPlatformRenderInterface>(); var windowingSubsystemName = windowingPlatform.GetType().Assembly.GetName().Name; var renderingSubsystemName = platformRenderInterface.GetType().Assembly.GetName().Name; var aboutInfo = CreateAboutInfo(runtimeInfo, windowingSubsystemName, renderingSubsystemName); editor.AboutInfo = aboutInfo; var mainWindow = serviceProvider.GetService <Windows.MainWindow>(); mainWindow.DataContext = editor; mainWindow.Closing += (sender, e) => { editor.Layout.Close(); editor.OnSaveLayout(layoutPath); editor.OnSaveRecent(recentPath); Selector.SaveSelectedTheme("Core2D.theme"); }; desktopLifetime.MainWindow = mainWindow; desktopLifetime.Exit += (sennder, e) => { log.Dispose(); container.Dispose(); }; } else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime) { var builder = new ContainerBuilder(); builder.RegisterModule <LocatorModule>(); builder.RegisterModule <CoreModule>(); builder.RegisterModule <DependenciesModule>(); builder.RegisterModule <AppModule>(); builder.RegisterModule <ViewModule>(); var container = builder.Build(); // TODO: Dispose() var serviceProvider = container.Resolve <IServiceProvider>(); InitializeConverters(serviceProvider); var log = serviceProvider.GetService <ILog>(); // TODO: Dispose() var fileIO = serviceProvider.GetService <IFileSystem>(); log?.Initialize(System.IO.Path.Combine(fileIO?.GetBaseDirectory(), "Core2D.log")); var editor = serviceProvider.GetService <IProjectEditor>(); var dockFactory = serviceProvider.GetService <DM.IFactory>(); editor.Layout = editor.Layout ?? dockFactory.CreateLayout(); dockFactory.InitLayout(editor.Layout); editor.CurrentTool = editor.Tools.FirstOrDefault(t => t.Title == "Selection"); editor.CurrentPathTool = editor.PathTools.FirstOrDefault(t => t.Title == "Line"); editor.IsToolIdle = true; var mainView = new MainControl() { DataContext = editor }; singleViewLifetime.MainView = mainView; } base.OnFrameworkInitializationCompleted(); }
public AssetProvider(IThemeSelector themeSelector) { _themeSelector = themeSelector; }