Esempio n. 1
0
 public LayoutTagHelper(
     IViewHelperFactory viewHelperFactory,
     IThemeSelector themeSelector)
 {
     _viewHelperFactory = viewHelperFactory;
     _themeSelector     = themeSelector;
 }
Esempio n. 2
0
        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();
                }
            };
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
 public DefaultThemeManager(
     IServiceProvider serviceProvider,
     IThemeSelector themeSelector,
     IHttpContextAccessor httpContextAccessor)
 {
     HttpContextAccessor = httpContextAccessor;
     ServiceProvider     = serviceProvider;
     ThemeSelector       = themeSelector;
 }
Esempio n. 5
0
        /// <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();
        }
Esempio n. 6
0
 public AssetProvider(IThemeSelector themeSelector)
 {
     _themeSelector = themeSelector;
 }