Moved clipboard operations to ClipboardService
This commit is contained in:
parent
2ff1373c6b
commit
da5b2c73a0
|
@ -145,6 +145,7 @@
|
||||||
<Compile Include="Models\UpdateData.cs" />
|
<Compile Include="Models\UpdateData.cs" />
|
||||||
<Compile Include="Properties\Annotations.cs" />
|
<Compile Include="Properties\Annotations.cs" />
|
||||||
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
||||||
|
<Compile Include="Services\ClipboardService.cs" />
|
||||||
<Compile Include="Services\HTTPService.cs" />
|
<Compile Include="Services\HTTPService.cs" />
|
||||||
<Compile Include="Services\ItemFilterPersistenceService.cs" />
|
<Compile Include="Services\ItemFilterPersistenceService.cs" />
|
||||||
<Compile Include="Services\StaticDataService.cs" />
|
<Compile Include="Services\StaticDataService.cs" />
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows;
|
||||||
|
using NLog;
|
||||||
|
|
||||||
|
namespace Filtration.Services
|
||||||
|
{
|
||||||
|
internal interface IClipboardService
|
||||||
|
{
|
||||||
|
void SetClipboardText(string inputText);
|
||||||
|
string GetClipboardText();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ClipboardService : IClipboardService
|
||||||
|
{
|
||||||
|
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
|
public void SetClipboardText(string inputText)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Clipboard.SetText(inputText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.Error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
Thread.Sleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception("Failed to copy to clipboard");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetClipboardText()
|
||||||
|
{
|
||||||
|
return Clipboard.GetText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,6 @@ using System.Windows;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using Castle.Core.Internal;
|
|
||||||
using Filtration.Common.Services;
|
using Filtration.Common.Services;
|
||||||
using Filtration.Common.ViewModels;
|
using Filtration.Common.ViewModels;
|
||||||
using Filtration.Interface;
|
using Filtration.Interface;
|
||||||
|
@ -19,7 +18,6 @@ using Filtration.Translators;
|
||||||
using GalaSoft.MvvmLight.CommandWpf;
|
using GalaSoft.MvvmLight.CommandWpf;
|
||||||
using GalaSoft.MvvmLight.Messaging;
|
using GalaSoft.MvvmLight.Messaging;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Clipboard = System.Windows.Clipboard;
|
|
||||||
|
|
||||||
namespace Filtration.ViewModels
|
namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
|
@ -76,6 +74,7 @@ namespace Filtration.ViewModels
|
||||||
private readonly IAvalonDockWorkspaceViewModel _avalonDockWorkspaceViewModel;
|
private readonly IAvalonDockWorkspaceViewModel _avalonDockWorkspaceViewModel;
|
||||||
private readonly IItemFilterPersistenceService _persistenceService;
|
private readonly IItemFilterPersistenceService _persistenceService;
|
||||||
private readonly IMessageBoxService _messageBoxService;
|
private readonly IMessageBoxService _messageBoxService;
|
||||||
|
private readonly IClipboardService _clipboardService;
|
||||||
|
|
||||||
private bool _isDirty;
|
private bool _isDirty;
|
||||||
private IItemFilterBlockViewModel _selectedBlockViewModel;
|
private IItemFilterBlockViewModel _selectedBlockViewModel;
|
||||||
|
@ -88,7 +87,8 @@ namespace Filtration.ViewModels
|
||||||
IItemFilterBlockTranslator blockTranslator,
|
IItemFilterBlockTranslator blockTranslator,
|
||||||
IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel,
|
IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel,
|
||||||
IItemFilterPersistenceService persistenceService,
|
IItemFilterPersistenceService persistenceService,
|
||||||
IMessageBoxService messageBoxService)
|
IMessageBoxService messageBoxService,
|
||||||
|
IClipboardService clipboardService)
|
||||||
{
|
{
|
||||||
_itemFilterBlockViewModelFactory = itemFilterBlockViewModelFactory;
|
_itemFilterBlockViewModelFactory = itemFilterBlockViewModelFactory;
|
||||||
_blockTranslator = blockTranslator;
|
_blockTranslator = blockTranslator;
|
||||||
|
@ -96,6 +96,7 @@ namespace Filtration.ViewModels
|
||||||
_avalonDockWorkspaceViewModel.ActiveDocumentChanged += OnActiveDocumentChanged;
|
_avalonDockWorkspaceViewModel.ActiveDocumentChanged += OnActiveDocumentChanged;
|
||||||
_persistenceService = persistenceService;
|
_persistenceService = persistenceService;
|
||||||
_messageBoxService = messageBoxService;
|
_messageBoxService = messageBoxService;
|
||||||
|
_clipboardService = clipboardService;
|
||||||
_itemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModel>();
|
_itemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModel>();
|
||||||
|
|
||||||
ToggleShowAdvancedCommand = new RelayCommand<bool>(OnToggleShowAdvancedCommand);
|
ToggleShowAdvancedCommand = new RelayCommand<bool>(OnToggleShowAdvancedCommand);
|
||||||
|
@ -544,7 +545,16 @@ namespace Filtration.ViewModels
|
||||||
|
|
||||||
public void CopyBlock(IItemFilterBlockViewModel targetBlockViewModel)
|
public void CopyBlock(IItemFilterBlockViewModel targetBlockViewModel)
|
||||||
{
|
{
|
||||||
Clipboard.SetText(_blockTranslator.TranslateItemFilterBlockToString(SelectedBlockViewModel.Block));
|
try
|
||||||
|
{
|
||||||
|
_clipboardService.SetClipboardText(
|
||||||
|
_blockTranslator.TranslateItemFilterBlockToString(SelectedBlockViewModel.Block));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
_messageBoxService.Show("Clipboard Error", "Failed to access the clipboard, copy command not completed.",
|
||||||
|
MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCopyBlockStyleCommand()
|
private void OnCopyBlockStyleCommand()
|
||||||
|
@ -564,8 +574,15 @@ namespace Filtration.ViewModels
|
||||||
}
|
}
|
||||||
outputText += blockItem.OutputText;
|
outputText += blockItem.OutputText;
|
||||||
}
|
}
|
||||||
|
try
|
||||||
Clipboard.SetText(outputText);
|
{
|
||||||
|
_clipboardService.SetClipboardText(outputText);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
_messageBoxService.Show("Clipboard Error", "Failed to access the clipboard, copy command not completed.",
|
||||||
|
MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPasteBlockStyleCommand()
|
private void OnPasteBlockStyleCommand()
|
||||||
|
@ -575,7 +592,7 @@ namespace Filtration.ViewModels
|
||||||
|
|
||||||
public void PasteBlockStyle(IItemFilterBlockViewModel targetBlockViewModel)
|
public void PasteBlockStyle(IItemFilterBlockViewModel targetBlockViewModel)
|
||||||
{
|
{
|
||||||
var clipboardText = Clipboard.GetText();
|
var clipboardText = _clipboardService.GetClipboardText();
|
||||||
if (string.IsNullOrEmpty(clipboardText))
|
if (string.IsNullOrEmpty(clipboardText))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -594,8 +611,8 @@ namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var clipboardText = Clipboard.GetText();
|
var clipboardText = _clipboardService.GetClipboardText();
|
||||||
if (clipboardText.IsNullOrEmpty()) return;
|
if (string.IsNullOrEmpty(clipboardText)) return;
|
||||||
|
|
||||||
var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText, Script.ThemeComponents);
|
var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText, Script.ThemeComponents);
|
||||||
if (translatedBlock == null) return;
|
if (translatedBlock == null) return;
|
||||||
|
|
|
@ -34,6 +34,11 @@ namespace Filtration.WindsorInstallers
|
||||||
Component.For<IUpdateCheckService>()
|
Component.For<IUpdateCheckService>()
|
||||||
.ImplementedBy<UpdateCheckService>()
|
.ImplementedBy<UpdateCheckService>()
|
||||||
.LifeStyle.Singleton);
|
.LifeStyle.Singleton);
|
||||||
|
|
||||||
|
container.Register(
|
||||||
|
Component.For<IClipboardService>()
|
||||||
|
.ImplementedBy<ClipboardService>()
|
||||||
|
.LifeStyle.Singleton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue