private void LoaderSaverProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentLoaderSaverProvider.ShowControl;
                return;

            case ProviderCallbackType.ShowSpinner:
                Application.Current.Dispatcher.Invoke(() => { TopContent = StaticClasses.GetSpinner(message); });
                return;

            case ProviderCallbackType.End:
                // TopContent = null;
                if (_currentLoaderSaverProvider.Result)
                {
                    switch (_currentMultiCommand)
                    {
                    case "loadRender":
                        InitPost();
                        ShowRender();
                        break;
                    }
                }

                _currentMultiCommand = string.Empty;
                ActionFire.Invoke("MAIN_WINDOW_VIEWMODEL-SET_BOTTOM_STRING",
                                  _currentLoaderSaverProvider.ResultString);

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }
        private async void ShowRender()
        {
            Debug.WriteLine($"SHOW_RENDER");
            if (_displayModel == null)
            {
                return;
            }
            await Task.Run(() =>
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    ImageSource     = null;
                    ImageTopContent = StaticClasses.GetSpinner();
                });
            });

            await Task.Run(() =>
            {
                if (RadioColor)
                {
                    _currentImg = _displayModel.GetBitmapForRender(_postModel.TransformColors);
                }

                if (RadioGradient)
                {
                    _currentImg = _displayModel.GetBitmapForRender(_postModel.GradientValues, _postModel.GradientModel);
                }

                ImageSource     = _currentImg;
                ImageTopContent = null;
                Application.Current.Dispatcher.Invoke(SetUi);
            });
        }
        private async void SaveImage()
        {
            if (_currentImg == null)
            {
                return;
            }
            TopContent = StaticClasses.GetSpinner();
            await Task.Run(() =>
            {
                var filename = GetImageName(_currentLoaderSaverProvider.FlameName);
                ImageHelper.SaveImage(filename, _currentImg);
            });

            TopContent = null;
        }
        private void ColorPickProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentColorPickProvider.ShowControl;
                return;

            case ProviderCallbackType.ShowSpinner:
                TopContent = StaticClasses.GetSpinner(message);
                return;

            case ProviderCallbackType.End:
                TopContent = null;
                if (!_currentColorPickProvider.Result)
                {
                    _currentColorPickProvider = null;
                    return;
                }

                if (_currentSelectedColorIndex == -1)
                {
                    SetBackColor(_currentColorPickProvider.ResultColor);
                }
                else if (_currentSelectedColorIndex == -2)
                {
                    var resultColor = _currentColorPickProvider.ResultColor;
                    _postModel.GradientModel.ChangeColor(1, resultColor);
                    _currentColorPickProvider    = null;
                    _currentGradientPickProvider =
                        new GradientPickProvider(GradientPickProviderCallback, _postModel.GradientModel);
                    _currentGradientPickProvider.Exec();
                }
                else
                {
                    SetColor(_currentColorPickProvider.ResultColor);
                }

                _currentColorPickProvider = null;
                ShowRender();
                return;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }
        private void GradientPickProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentGradientPickProvider.ShowControl;
                break;

            case ProviderCallbackType.ShowSpinner:
                TopContent = StaticClasses.GetSpinner(message);
                break;

            case ProviderCallbackType.End:
                TopContent = null;
                if (_currentGradientPickProvider.Result)
                {
                    switch (_currentGradientPickProvider.GradientMode)
                    {
                    case GradientMode.Edit:
                        _postModel.GradientModel = _currentGradientPickProvider.ResultGradientModel.Copy();
                        break;

                    case GradientMode.Select:
                        _postModel.GradientValues[_currentSelectedColorIndex] =
                            _currentGradientPickProvider.ResultValue;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }

                _currentGradientPickProvider = null;
                _currentSelectedColorIndex   = -1;
                ShowRender();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }