Added workaround for sources that don't support querysupport call.

This commit is contained in:
soukoku
2015-02-13 21:34:12 -05:00
parent 0f4e258970
commit bace6e6323
17 changed files with 418 additions and 144 deletions

View File

@@ -70,7 +70,7 @@
</Reference>
<Reference Include="ModernWPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c99d0cfbea7491ef, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\ModernWPF.1.2.9.1\lib\net40-Client\ModernWPF.dll</HintPath>
<HintPath>..\..\packages\ModernWPF.1.2.9.4\lib\net40-Client\ModernWPF.dll</HintPath>
</Reference>
<Reference Include="ModernWPF.Mvvm">
<HintPath>..\..\packages\ModernWPF.Mvvm.0.7.0\lib\net40-Client\ModernWPF.Mvvm.dll</HintPath>

View File

@@ -21,7 +21,7 @@ namespace Tester.WPF
{
_ds = ds;
Cap = cap;
Supports = ds.CapQuerySupport(cap);
var capName = cap.ToString();
var wrapProperty = ds.GetType().GetProperty(capName);
@@ -33,6 +33,22 @@ namespace Tester.WPF
_getCurrentMethod = wrapperType.GetMethod("GetCurrent");
_setMethod = wrapperType.GetMethods().FirstOrDefault(m => m.Name == "Set");
}
var supportTest = ds.CapQuerySupport(cap);
if (supportTest.HasValue)
{
Supports = supportTest.Value;
}
else
{
if (_wrapper != null)
{
var wrapperType = _wrapper.GetType();
QuerySupports? supports = (QuerySupports?)wrapperType.GetProperty("SupportedActions").GetGetMethod().Invoke(_wrapper, null);
Supports = supports.GetValueOrDefault();
}
}
}
public IEnumerable Get()

View File

@@ -49,7 +49,7 @@ namespace Tester.WPF
//rc = DGControl.Status.Get(dsId, ref stat);
if (rc == ReturnCode.Success)
{
foreach (var c in DS.SupportedCaps.Select(o => new CapVM(DS, o)))
foreach (var c in DS.CapSupportedCaps.Get().Select(o => new CapVM(DS, o)))
{
Caps.Add(c);
}

View File

@@ -35,6 +35,7 @@ namespace Tester.WPF
_session.TransferReady += _session_TransferReady;
_session.DataTransferred += _session_DataTransferred;
_session.SourceDisabled += _session_SourceDisabled;
_session.StateChanged += (s, e) => { RaisePropertyChanged(() => State); };
}
TwainSession _session;

View File

@@ -4,7 +4,7 @@
<package id="CommonWin32" version="2.0.5.5" targetFramework="net40-Client" />
<package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.0" targetFramework="net40-Client" />
<package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.0" targetFramework="net40-Client" />
<package id="ModernWPF" version="1.2.9.1" targetFramework="net40-Client" />
<package id="ModernWPF" version="1.2.9.4" targetFramework="net40-Client" />
<package id="ModernWPF.Mvvm" version="0.7.0" targetFramework="net40-Client" />
<package id="MvvmLightLibs" version="5.0.2.0" targetFramework="net40-Client" />
</packages>

View File

@@ -70,6 +70,10 @@ namespace Tester.Winform
{
Debug.WriteLine("State changed to " + _twain.State + " on thread " + Thread.CurrentThread.ManagedThreadId);
};
_twain.TransferError += (s, e) =>
{
Debug.WriteLine("Got xfer error on thread " + Thread.CurrentThread.ManagedThreadId);
};
_twain.DataTransferred += (s, e) =>
{
Debug.WriteLine("Transferred data event on thread " + Thread.CurrentThread.ManagedThreadId);
@@ -223,7 +227,7 @@ namespace Tester.Winform
_stopScan = false;
if (_twain.CurrentSource.SupportedCaps.Contains(CapabilityId.CapUIControllable))
if (_twain.CurrentSource.CapUIControllable.IsSupported)//.SupportedCaps.Contains(CapabilityId.CapUIControllable))
{
// hide scanner ui if possible
if (_twain.CurrentSource.Enable(SourceEnableMode.NoUI, false, this.Handle) == ReturnCode.Success)
@@ -292,8 +296,10 @@ namespace Tester.Winform
private void LoadSourceCaps()
{
var src = _twain.CurrentSource;
var caps = src.SupportedCaps;
_loadingCaps = true;
var test = src.SupportedCaps;
if (groupDepth.Enabled = src.ICapPixelType.IsSupported)
{
LoadDepth(src.ICapPixelType);
@@ -311,7 +317,7 @@ namespace Tester.Winform
{
LoadPaperSize(src.ICapSupportedSizes);
}
btnAllSettings.Enabled = caps.Contains(CapabilityId.CapEnableDSUIOnly);
btnAllSettings.Enabled = src.CapEnableDSUIOnly.IsSupported;
_loadingCaps = false;
}