Exemple #1
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();
                }
            };
        }
        private static IThemeSelector LoadThemes()
        {
            var themeDir = Path.Combine(Program.ApplicationDirectory.FullName, "themes");
            var themes   = ThemeSelector.LoadSafe(themeDir);

            Log.Information("Themes successfully loaded; available themes: {0}",
                            string.Join(", ", themes.Select(t => t.Name)));

            var themeName = Program.Settings.Get(SettingName.Theme, themes.First().Name);

            if (!themes.SelectTheme(themeName))
            {
                Log.Warning("Theme '{0}' not available, reverting to default", themeName);
                themes.SelectedTheme = themes.First();
                Program.Settings.Set(SettingName.Theme, themes.SelectedTheme.Name);
            }
            else
            {
                Log.Information("Theme set to {0}", themeName);
            }

            themes.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == nameof(ThemeSelector.SelectedTheme))
                {
                    Program.Settings.Set(SettingName.Theme, themes.SelectedTheme.Name);
                    Program.Settings.Save();
                }
            };

            return(themes);
        }
Exemple #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);
            }
        }
Exemple #4
0
        public SettingsViewModel(
            ISettingsHandler settingsHandler,
            ThemeSelectorViewModel themeSelectorViewModel)
        {
            this.settingsHandler = settingsHandler ?? throw new ArgumentNullException(nameof(settingsHandler));
            ThemeSelector        = themeSelectorViewModel ?? throw new ArgumentNullException(nameof(themeSelectorViewModel));

            ThemeSelector.ActivateWith(this);
        }
Exemple #5
0
        void LoadConfig()
        {
            var container = TinyIoC.TinyIoCContainer.Current;

            IConfigProvider config = container.Resolve <IConfigProvider>(Naming.ContainerNSR.APP_SETTINGS);

            config.Load();

            ThemeSelector.ApplyTheme(config.SelectedTheme);
        }
Exemple #6
0
        protected virtual ITheme GetCurrentTheme()
        {
            var preSelectedTheme = HttpContextAccessor.HttpContext.Items[CurrentThemeHttpContextKey] as ITheme;

            if (preSelectedTheme == null)
            {
                preSelectedTheme = (ITheme)ServiceProvider.GetRequiredService(ThemeSelector.GetCurrentThemeInfo().ThemeType);
                HttpContextAccessor.HttpContext.Items[CurrentThemeHttpContextKey] = preSelectedTheme;
            }

            return(preSelectedTheme);
        }
Exemple #7
0
        public override async void OnFrameworkInitializationCompleted()
        {
            if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
            {
                CultureInfo.DefaultThreadCurrentCulture   = CultureInfo.InvariantCulture;
                CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;

                UserSettings.Load();
                UserSettings.SetVersion();

                OperationProfiles.Load();

                ThemeSelector = Avalonia.ThemeManager.ThemeSelector.Create(Path.Combine(ApplicationPath, "Assets", "Themes"));
                ThemeSelector.LoadSelectedTheme(Path.Combine(UserSettings.SettingsFolder, "selected.theme"));
                if (ThemeSelector.SelectedTheme.Name == "UVtoolsDark" || ThemeSelector.SelectedTheme.Name == "Light")
                {
                    foreach (var theme in ThemeSelector.Themes)
                    {
                        if (theme.Name != "UVtoolsLight")
                        {
                            continue;
                        }
                        theme.ApplyTheme();
                        break;
                    }
                }

                MainWindow = new MainWindow();

                try
                {
                    CvInvoke.CheckLibraryLoaded();
                }
                catch (Exception e)
                {
                    await MainWindow.MessageBoxError("UVtools can not run due lack of dependencies from cvextern/OpenCV\n" +
                                                     "Please build or install this dependencies in order to run UVtools\n" +
                                                     "Check manual or page at 'Requirements' section for help\n\n" +
                                                     "Additional information:\n" +
                                                     $"{e}", "UVtools can not run");

                    return;
                }


                desktop.MainWindow = MainWindow;
                desktop.Exit      += (sender, e)
                                     => ThemeSelector.SaveSelectedTheme(Path.Combine(UserSettings.SettingsFolder, "selected.theme"));
            }

            base.OnFrameworkInitializationCompleted();
        }
Exemple #8
0
        public void ChangeTheme(Theme theme)
        {
            if (currentTheme.HasValue && currentTheme.Value == theme)
            {
                return;
            }

            ThemeDictionary.MergedDictionaries.Clear();
            ThemeDictionary.MergedDictionaries.Add(new ResourceDictionary()
            {
                Source = ThemeSelector.GetThemeUrl(theme)
            });
            currentTheme = theme;
        }
Exemple #9
0
 public override void OnFrameworkInitializationCompleted()
 {
     if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
     {
         Selector = ThemeSelector.Create("Themes");
         Selector.LoadSelectedTheme("AvaloniaApp.theme");
         desktopLifetime.MainWindow = new MainWindow()
         {
             DataContext = Selector
         };
         desktopLifetime.Exit += (sennder, e) => Selector.SaveSelectedTheme("AvaloniaApp.theme");
     }
     base.OnFrameworkInitializationCompleted();
 }
Exemple #10
0
        public void SwitchTheme(ThemeSelector selector)
        {
            switch (selector)
            {
            case ThemeSelector.Light:
                EnabledLightTheme = true;
                break;

            case ThemeSelector.Dark:
                EnabledLightTheme = false;
                break;

            case ThemeSelector.Opposite:
                EnabledLightTheme = !EnabledLightTheme;
                break;
            }
            Theme = EnabledLightTheme ? _themeLight : _themeDark;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MainWindow"/> class.
        /// </summary>
        public MainWindow()
        {
            string clientUri;

            Utils.ReadAppSettings(ClientUriKey, DefaultClientUri, out clientUri);
            ClientUri = clientUri;
            this.ServiceHostContainer = new ServiceHostContainer(new Uri(clientUri), typeof(ICommServerCallback), typeof(ConfiguratorHost));

            RenderOptions.SetBitmapScalingMode(this, BitmapScalingMode.Fant);

            ThemeSelector.SetCurrentThemeDictionary(this, new Uri("/EH.ImsOpcBridge.Configurator.Wpf;component/Themes/DesignA2.xaml", UriKind.Relative));

            this.DataContext = new MainWindowVm();

            this.InitializeComponent();

            this.TitleBar.MouseDown += this.TitleBarOnMouseDown;
            this.SourceInitialized  += this.WinSourceInitialized;
        }
Exemple #12
0
        public Form1()
        {
            InitializeComponent();
            var z80Navigation1 = new Z80_Navigation();

            splitContainer1.Panel1.Controls.Add(z80Navigation1);

            z80Navigation1.Dock     = DockStyle.Fill;
            z80Navigation1.Location = new Point(0, 0);
            z80Navigation1.Name     = "z80_Navigation1";
            z80Navigation1.TabIndex = 0;

            BackColor = new ThemeSelector(Theme.Dark).CurrentTheme.ItemDisableBackgroudColor;

            tabControl1.ItemSize = new Size(0, 1);
            tabControl1.SizeMode = TabSizeMode.Fixed;

            z80Navigation1.SelectedItem += Z80_Navigation1_SelectedItem;
            z80Navigation1.Initialize(new DemoItems().Sample1,
                                      new ThemeSelector(Theme.Dark).CurrentTheme);
            z80Navigation1.ItemSelect(0);
        }
Exemple #13
0
 private void InitializeThemes()
 {
     CopyDefaultThemesToAppData();
     Selector = ThemeSelector.Create(GetAppDataThemesFolder(), this);
     MakeDefaultThemeFirst();
 }
Exemple #14
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();
        }
Exemple #15
0
 private void InitializeThemes()
 {
     CopyDefaultThemesToAppData();
     Selector = ThemeSelector.Create(AppPath.AppDataThemesPath, this);
     MakeDefaultThemeFirst();
 }
Exemple #16
0
        private async Task InitializeAsync()
        {
            await ThemeSelector.InitializeAsync();

            await Task.CompletedTask;
        }
Exemple #17
0
 private async Task StartupAsync()
 {
     ThemeSelector.SetRequestedTheme();
     await Task.CompletedTask;
 }
Exemple #18
0
        public Form1()
        {
            Model = new Model();
            InitializeComponent();

            Groups();

            imageResource = new ImageResource(this.imageList1)
            {
                Resource = "UI/Icons/"
            };
            imageResource.ImageSizeChange(Settings.Default.IconSize);
            largeImageResource = new ImageResource(this.imageList2)
            {
                Resource = "UI/Images/"
            };
            largeImageResource.Load(largeImageResource.Resource);

            contextMenu = new ContextMenuComponent(metroContextMenu1)
            {
                GetStatistic = (x) => Model.Hero.Statistic(x)
            };

            playerPick = new PlayerPickInfo(playerpickButton)
            {
                GetImage  = imageResource.Bitmap,
                GetHeroId = (x) => Model.Hero.Select(x).Item[0].Id
            };

            forecastResultComponent = new ForecastResultComponent(metroListView1, btn_forecast)
            {
                Compute        = Model.ForecastService.Select(x => x).ToList(),
                GetHeroes      = () => Model.Hero,
                GetPlayersPick = playerPick.GetPlayerPics,
                MatchupWith    = Model.Statistic.MatchUp.With,
                MatchupAgainst = Model.Statistic.MatchUp.Against
            };

            filterTab = new FilterTab(cont_Filter, btn_FilterVisibleChange);
            filterTab.Collapse();

            statfilterTab = new FilterTab(splitContainer2, bunifuTileButton1);
            statfilterTab.Collapse();

            heroFilter     = new HeroFilter(groupCheckBox, subgroupCheckBox, franchiseCheckBox, metroTextBox9);
            heroStatFilter = new HeroFilter(groupStatCheckBox, subgroupStatCheckBox,
                                            franchiseStatCheckBox, metroTextBox1);

            heroPicker = new HeroPicker(listView1)
            {
                GetImageId = imageResource.Index,
                GetHeroes  = () => Model.Hero
            };

            heroSelector = new HeroSelector(listView2)
            {
                GetImageId         = imageResource.Index,
                GetHeroes          = () => Model.Hero,
                GetFranchiseFilter = heroFilter.GetFranchiseFilter,
                GetGroupFilter     = heroFilter.GetGroupsFilter,
                GetSubGroupFilter  = heroFilter.GetSubGroupFilter,
                GetTextFilter      = heroFilter.GetTextFilter
            };

            heroComponent = new HeroComponent(controls)
            {
                GetImage      = imageResource.Bitmap,
                GetLargeImage = largeImageResource.Bitmap,
                GetHero       = (x) => Model.Hero.Select(x).Item[0]
            };

            renderSettings = new RenderSettings(metroComboBox1, metroTextBox15, metroCheckBox2, numericUpDown1)
            {
                GetRenderType = () => imageResource.RenderType.ToArray()
            };
            renderSettings.Init();

            styleManager = new StyleManager(controls, metroContextMenu1, metroStyleManager1, this);

            themeSelector = new ThemeSelector(metroComboBox2, metroComboBox3);

            statComponent = new StatComponent(zedGraphControl1)
            {
                Hero = x => Model.Hero.Item[x].Hero,
                HeroesAvgStatistic = () => Model.Statistic.HeroStatistic.All().Item1,
                HeroGameCount      = x => Model.Hero.Select(x).Item[0].Statistic.count,
                Image  = imageResource.Bitmap,
                Style  = () => styleManager.Style,
                Filter = () =>
                {
                    return(Model.Hero.
                           Select(heroStatFilter.GetGroupsFilter()).
                           Select(heroStatFilter.GetSubGroupFilter()).
                           Select(heroStatFilter.GetFranchiseFilter()).
                           Select(heroStatFilter.GetTextFilter()).Select(X => X.Id).ToList());
                }
            };
            statComponent.Init();

            statGraph = new StatGraph(metroComboBox4)
            {
                GetSupportHeroStatistic = () => statComponent.HeroStat
            };
            statGraph.HeroesSelectionChanged += statComponent.ComputeHeroesStat;
            statGraph.Init();

            heroSelector.SelectionChanged += contextMenu.SelectPlayer;

            heroPicker.SelectionChanged += heroComponent.Render;

            playerPick.PickChanged     += contextMenu.ChangeElement;
            contextMenu.OnPlayerPicked += playerPick.SetPick;

            heroFilter.OnGroupChanged     += heroSelector.Render;
            heroFilter.OnSubGroupChanged  += heroSelector.Render;
            heroFilter.OnFranchiseChanged += heroSelector.Render;
            heroFilter.OnTextСhanged      += heroSelector.Render;

            heroStatFilter.OnGroupChanged     += statComponent.ComputeHeroesStat;
            heroStatFilter.OnSubGroupChanged  += statComponent.ComputeHeroesStat;
            heroStatFilter.OnFranchiseChanged += statComponent.ComputeHeroesStat;
            heroStatFilter.OnTextСhanged      += statComponent.ComputeHeroesStat;

            themeSelector.OnThemeChanged += styleManager.ChangeTheme;
            themeSelector.OnStyleChanged += styleManager.ChangeStyle;

            renderSettings.OnBackgroundChanged  += styleManager.SetBackground;
            renderSettings.OnTransparentChanged += styleManager.TransparentChange;
            renderSettings.OnBackgroundChanged  += heroPicker.ChangeBackGround;
            renderSettings.OnRenderModeChanged  += heroPicker.RenderModeChange;
            renderSettings.OnImageSizeChanged   += heroPicker.ItemSizeChange;
            renderSettings.OnBackgroundChanged  += heroSelector.ChangeBackGround;
            renderSettings.OnRenderModeChanged  += heroSelector.RenderModeChange;
            renderSettings.OnImageSizeChanged   += heroSelector.ItemSizeChange;
            renderSettings.OnImageSizeChanged   += imageResource.ImageSizeChange;

            LoadToolTip();
            Render();
        }
Exemple #19
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     ThemeSelector.SetCurrentThemeDictionary(this, new Uri("ms-appx:///Theme/FireTheme.xaml"));
 }