1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 20:06:18 +00:00

sane.ds: Add support for word list options.

Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Vincent Povirk 2017-09-11 13:47:55 -05:00 committed by Alexandre Julliard
parent 72e5f1af3d
commit 31a4a58f81

View File

@ -716,6 +716,23 @@ static BOOL UpdateSaneBoolOption(int index, BOOL position)
return FALSE;
}
static BOOL UpdateSaneIntOption(int index, SANE_Int value)
{
SANE_Status rc = SANE_STATUS_GOOD;
SANE_Int result = 0;
rc = psane_control_option (activeDS.deviceHandle,index,
SANE_ACTION_SET_VALUE, &value, &result);
if(rc == SANE_STATUS_GOOD)
{
if (result & SANE_INFO_RELOAD_OPTIONS ||
result & SANE_INFO_RELOAD_PARAMS || result & SANE_INFO_INEXACT)
return TRUE;
}
return FALSE;
}
static BOOL UpdateSaneStringOption(int index, SANE_String value)
{
SANE_Status rc = SANE_STATUS_GOOD;
@ -791,6 +808,21 @@ static INT_PTR InitializeDialog(HWND hwnd)
SendMessageA(control,BM_SETCHECK,BST_CHECKED,0);
}
else if (opt->type == SANE_TYPE_INT &&
opt->constraint_type == SANE_CONSTRAINT_WORD_LIST)
{
int j, count = opt->constraint.word_list[0];
CHAR buffer[16];
SANE_Int val;
for (j=1; j<=count; j++)
{
sprintf(buffer, "%d", opt->constraint.word_list[j]);
SendMessageA(control, CB_ADDSTRING, 0, (LPARAM)buffer);
}
psane_control_option(activeDS.deviceHandle, i, SANE_ACTION_GET_VALUE, &val, NULL);
sprintf(buffer, "%d", val);
SendMessageA(control,CB_SELECTSTRING,0,(LPARAM)buffer);
}
else if (opt->constraint_type == SANE_CONSTRAINT_RANGE)
{
if (opt->type == SANE_TYPE_INT)
@ -977,6 +1009,11 @@ static void ComboChanged(HWND hwnd, INT id, HWND control)
if (UpdateSaneStringOption(index, value))
InitializeDialog(hwnd);
}
else if (opt->type == SANE_TYPE_INT)
{
if (UpdateSaneIntOption(index, atoi(value)))
InitializeDialog(hwnd);
}
}