modify visible field
This commit is contained in:
parent
fd93c1b594
commit
30edf47eb3
|
@ -270,7 +270,7 @@ known_file_util::IJsonW* CDlgOptJson::SANEOPT::to_json(void)
|
||||||
jsn->set_value(L"affect", nv);
|
jsn->set_value(L"affect", nv);
|
||||||
if(readonly)
|
if(readonly)
|
||||||
jsn->set_value(L"readonly", readonly);
|
jsn->set_value(L"readonly", readonly);
|
||||||
if(!open)
|
if(open != OPT_VISIBLE_ALL)
|
||||||
jsn->set_value(L"visible", open);
|
jsn->set_value(L"visible", open);
|
||||||
if(!enable)
|
if(!enable)
|
||||||
jsn->set_value(L"enabled", enable);
|
jsn->set_value(L"enabled", enable);
|
||||||
|
@ -747,8 +747,12 @@ bool CDlgOptJson::SANEOPT::from_json(known_file_util::IJsonW* jsn)
|
||||||
jsn->get_value(L"pos", pos);
|
jsn->get_value(L"pos", pos);
|
||||||
if (!jsn->get_value(L"readonly", readonly))
|
if (!jsn->get_value(L"readonly", readonly))
|
||||||
readonly = false;
|
readonly = false;
|
||||||
if (!jsn->get_value(L"visible", open))
|
|
||||||
open = true;
|
bool bv = false;
|
||||||
|
if (jsn->get_value(L"visible", bv))
|
||||||
|
open = bv ? OPT_VISIBLE_ALL : OPT_VISIBLE_HIDE;
|
||||||
|
else if (!jsn->get_value(L"visible", open))
|
||||||
|
open = OPT_VISIBLE_ALL;
|
||||||
if (!jsn->get_value(L"enabled", enable))
|
if (!jsn->get_value(L"enabled", enable))
|
||||||
enable = true;
|
enable = true;
|
||||||
if (!jsn->get_value(L"fix-id", fix_id) && !name.empty())
|
if (!jsn->get_value(L"fix-id", fix_id) && !name.empty())
|
||||||
|
@ -1050,6 +1054,23 @@ bool CDlgOptJson::SANEOPT::from_json(known_file_util::IJsonW* jsn)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
void CDlgOptJson::SANEOPT::init(struct _sane_opt_json* opt)
|
||||||
|
{
|
||||||
|
opt->name = opt->title = opt->desc = L"";
|
||||||
|
opt->group = L"\u57FA\u672C\u8BBE\u7F6E";
|
||||||
|
opt->category = opt->unit = opt->affect = opt->range_type = L"none";
|
||||||
|
opt->range.clear();
|
||||||
|
|
||||||
|
opt->def_val.clear();
|
||||||
|
opt->type = L"int";
|
||||||
|
opt->ver = 1;
|
||||||
|
opt->fix_id = 0;
|
||||||
|
opt->pos = -1;
|
||||||
|
opt->readonly = false;
|
||||||
|
opt->open = OPT_VISIBLE_ALL;
|
||||||
|
opt->enable = true;
|
||||||
|
opt->auto_restore_default = true;
|
||||||
|
}
|
||||||
|
|
||||||
std::wstring CDlgOptJson::get_item_text(UINT id)
|
std::wstring CDlgOptJson::get_item_text(UINT id)
|
||||||
{
|
{
|
||||||
|
@ -1129,7 +1150,7 @@ void CDlgOptJson::from_ui(SANEOPT& sop)
|
||||||
//sop.fix_id = GetDlgItemInt(IDC_EDIT_FIXED_ID);
|
//sop.fix_id = GetDlgItemInt(IDC_EDIT_FIXED_ID);
|
||||||
sop.fix_id = fix_id_edit_.value();
|
sop.fix_id = fix_id_edit_.value();
|
||||||
sop.readonly = is_button_check(IDC_CHECK_READONLY);
|
sop.readonly = is_button_check(IDC_CHECK_READONLY);
|
||||||
sop.open = is_button_check(IDC_CHECK_PUBLIC);
|
sop.open = visible_.GetCurSel(); // is_button_check(IDC_CHECK_PUBLIC);
|
||||||
sop.range_type = get_item_text(IDC_COMBO_RANGE);
|
sop.range_type = get_item_text(IDC_COMBO_RANGE);
|
||||||
|
|
||||||
if (GetDlgItem(IDC_EDIT_DEFAULT)->IsWindowVisible())
|
if (GetDlgItem(IDC_EDIT_DEFAULT)->IsWindowVisible())
|
||||||
|
@ -1179,6 +1200,16 @@ void CDlgOptJson::from_ui(SANEOPT& sop)
|
||||||
sop.range_type = get_item_text(IDC_COMBO_RANGE);
|
sop.range_type = get_item_text(IDC_COMBO_RANGE);
|
||||||
sop.auto_restore_default = is_button_check(IDC_CHECK_AUTO_RESTORE);
|
sop.auto_restore_default = is_button_check(IDC_CHECK_AUTO_RESTORE);
|
||||||
sop.depend = get_item_text(IDC_EDIT_LOGIC);
|
sop.depend = get_item_text(IDC_EDIT_LOGIC);
|
||||||
|
|
||||||
|
simple_logic logic;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
if (!logic.parse(local_trans::u2a(sop.depend.c_str(), CP_UTF8).c_str(), &pos))
|
||||||
|
{
|
||||||
|
wchar_t info[128] = { 0 };
|
||||||
|
swprintf_s(info, _countof(info) - 1, L"Invalid char at position %u('%c')!", pos, sop.depend[pos]);
|
||||||
|
MessageBox(info, L"Invalid Logic-Expression");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void CDlgOptJson::to_ui(const SANEOPT& sop)
|
void CDlgOptJson::to_ui(const SANEOPT& sop)
|
||||||
{
|
{
|
||||||
|
@ -1215,7 +1246,8 @@ void CDlgOptJson::to_ui(const SANEOPT& sop)
|
||||||
fix_id_edit_.set_value(sop.fix_id);
|
fix_id_edit_.set_value(sop.fix_id);
|
||||||
|
|
||||||
set_button_check(IDC_CHECK_READONLY, sop.readonly);
|
set_button_check(IDC_CHECK_READONLY, sop.readonly);
|
||||||
set_button_check(IDC_CHECK_PUBLIC, sop.open);
|
//set_button_check(IDC_CHECK_PUBLIC, sop.open);
|
||||||
|
visible_.SetCurSel(sop.open);
|
||||||
set_button_check(IDC_CHECK_ENABLE, sop.enable);
|
set_button_check(IDC_CHECK_ENABLE, sop.enable);
|
||||||
set_button_check(IDC_CHECK_AUTO_RESTORE, sop.auto_restore_default);
|
set_button_check(IDC_CHECK_AUTO_RESTORE, sop.auto_restore_default);
|
||||||
|
|
||||||
|
@ -1607,6 +1639,7 @@ void CDlgOptJson::DoDataExchange(CDataExchange* pDX)
|
||||||
DDX_Control(pDX, IDC_COMBO_LOW, lower_);
|
DDX_Control(pDX, IDC_COMBO_LOW, lower_);
|
||||||
DDX_Control(pDX, IDC_COMBO_BIG, upper_);
|
DDX_Control(pDX, IDC_COMBO_BIG, upper_);
|
||||||
DDX_Control(pDX, IDC_COMBO_EXPORT, export_type_);
|
DDX_Control(pDX, IDC_COMBO_EXPORT, export_type_);
|
||||||
|
DDX_Control(pDX, IDC_COMBO_VISIBLE, visible_);
|
||||||
DDX_Control(pDX, IDC_LIST_DEPEND, depends_);
|
DDX_Control(pDX, IDC_LIST_DEPEND, depends_);
|
||||||
DDX_Control(pDX, IDC_TREE2, tree_);
|
DDX_Control(pDX, IDC_TREE2, tree_);
|
||||||
}
|
}
|
||||||
|
@ -1641,6 +1674,7 @@ BOOL CDlgOptJson::OnInitDialog()
|
||||||
fix_id_edit_.attach(GetDlgItem(IDC_EDIT_FIXED_ID)->m_hWnd);
|
fix_id_edit_.attach(GetDlgItem(IDC_EDIT_FIXED_ID)->m_hWnd);
|
||||||
|
|
||||||
export_type_.SetCurSel(1);
|
export_type_.SetCurSel(1);
|
||||||
|
visible_.SetCurSel(0);
|
||||||
|
|
||||||
tooltips_ = new tooltip_wnd();
|
tooltips_ = new tooltip_wnd();
|
||||||
tooltips_->create(m_hWnd);
|
tooltips_->create(m_hWnd);
|
||||||
|
|
|
@ -48,6 +48,7 @@ class CDlgOptJson : public CDialogEx
|
||||||
CComboBox logic_;
|
CComboBox logic_;
|
||||||
CComboBox lower_;
|
CComboBox lower_;
|
||||||
CComboBox upper_;
|
CComboBox upper_;
|
||||||
|
CComboBox visible_;
|
||||||
CComboBox export_type_;
|
CComboBox export_type_;
|
||||||
CListBox depends_;
|
CListBox depends_;
|
||||||
CTreeCtrl tree_;
|
CTreeCtrl tree_;
|
||||||
|
@ -93,8 +94,8 @@ public:
|
||||||
int ver;
|
int ver;
|
||||||
int pos;
|
int pos;
|
||||||
int fix_id;
|
int fix_id;
|
||||||
|
int open;
|
||||||
bool readonly;
|
bool readonly;
|
||||||
bool open;
|
|
||||||
bool enable;
|
bool enable;
|
||||||
bool auto_restore_default;
|
bool auto_restore_default;
|
||||||
|
|
||||||
|
@ -109,23 +110,7 @@ public:
|
||||||
init(this);
|
init(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void init(struct _sane_opt_json* opt)
|
static void init(struct _sane_opt_json* opt);
|
||||||
{
|
|
||||||
opt->name = opt->title = opt->desc = L"";
|
|
||||||
opt->group = L"\u57FA\u672C\u8BBE\u7F6E";
|
|
||||||
opt->category = opt->unit = opt->affect = opt->range_type = L"none";
|
|
||||||
opt->range.clear();
|
|
||||||
|
|
||||||
opt->def_val.clear();
|
|
||||||
opt->type = L"int";
|
|
||||||
opt->ver = 1;
|
|
||||||
opt->fix_id = 0;
|
|
||||||
opt->pos = -1;
|
|
||||||
opt->readonly = false;
|
|
||||||
opt->open = true;
|
|
||||||
opt->enable = true;
|
|
||||||
opt->auto_restore_default = true;
|
|
||||||
}
|
|
||||||
static void affect_str(int& val, std::wstring& str, bool to_str)
|
static void affect_str(int& val, std::wstring& str, bool to_str)
|
||||||
{
|
{
|
||||||
static std::wstring affect_desc[] = { L"none", L"其它属性", L"图像参数", L"属性+参数" };
|
static std::wstring affect_desc[] = { L"none", L"其它属性", L"图像参数", L"属性+参数" };
|
||||||
|
|
Binary file not shown.
|
@ -952,6 +952,9 @@ HWND dlg_page::create_control_bool(int sn, const SANE_Option_Descriptor* desc, v
|
||||||
if (now)
|
if (now)
|
||||||
SendMessage(wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
SendMessage(wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
|
||||||
|
|
||||||
|
if (IS_CAP_READONLY(desc->cap))
|
||||||
|
EnableWindow(wnd, FALSE);
|
||||||
|
|
||||||
return wnd;
|
return wnd;
|
||||||
}
|
}
|
||||||
HWND dlg_page::create_control_int(int sn, const SANE_Option_Descriptor* desc, void* cur_val, const wchar_t* title, LPSIZE text_size)
|
HWND dlg_page::create_control_int(int sn, const SANE_Option_Descriptor* desc, void* cur_val, const wchar_t* title, LPSIZE text_size)
|
||||||
|
@ -1000,6 +1003,16 @@ HWND dlg_page::create_control_int(int sn, const SANE_Option_Descriptor* desc, vo
|
||||||
x += dlg_page::spin_w;
|
x += dlg_page::spin_w;
|
||||||
}
|
}
|
||||||
text_size->cx = x + dlg_page::gap_x;
|
text_size->cx = x + dlg_page::gap_x;
|
||||||
|
if (IS_CAP_READONLY(desc->cap))
|
||||||
|
{
|
||||||
|
EnableWindow(label, FALSE);
|
||||||
|
if(slider)
|
||||||
|
EnableWindow(slider, FALSE);
|
||||||
|
EnableWindow(wnd, FALSE);
|
||||||
|
if(spin)
|
||||||
|
EnableWindow(spin, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return wnd;
|
return wnd;
|
||||||
}
|
}
|
||||||
|
@ -1052,6 +1065,16 @@ HWND dlg_page::create_control_float(int sn, const SANE_Option_Descriptor* desc,
|
||||||
}
|
}
|
||||||
text_size->cx = x + dlg_page::gap_x;
|
text_size->cx = x + dlg_page::gap_x;
|
||||||
|
|
||||||
|
if (IS_CAP_READONLY(desc->cap))
|
||||||
|
{
|
||||||
|
EnableWindow(label, FALSE);
|
||||||
|
if (slider)
|
||||||
|
EnableWindow(slider, FALSE);
|
||||||
|
EnableWindow(wnd, FALSE);
|
||||||
|
if (spin)
|
||||||
|
EnableWindow(spin, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
return wnd;
|
return wnd;
|
||||||
}
|
}
|
||||||
HWND dlg_page::create_control_string(int sn, const SANE_Option_Descriptor* desc, void* cur_val, const wchar_t* title, LPSIZE text_size)
|
HWND dlg_page::create_control_string(int sn, const SANE_Option_Descriptor* desc, void* cur_val, const wchar_t* title, LPSIZE text_size)
|
||||||
|
@ -1060,7 +1083,12 @@ HWND dlg_page::create_control_string(int sn, const SANE_Option_Descriptor* desc,
|
||||||
int x = pos_.x;
|
int x = pos_.x;
|
||||||
std::wstring now(local_trans::a2u((char*)cur_val, CP_UTF8));
|
std::wstring now(local_trans::a2u((char*)cur_val, CP_UTF8));
|
||||||
|
|
||||||
create_label(sn, title, x, pos_.y, *text_size);
|
wnd = create_label(sn, title, x, pos_.y, *text_size);
|
||||||
|
if (IS_CAP_READONLY(desc->cap))
|
||||||
|
{
|
||||||
|
EnableWindow(wnd, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
x += text_size->cx + dlg_page::gap_x;
|
x += text_size->cx + dlg_page::gap_x;
|
||||||
|
|
||||||
if (desc->constraint_type == SANE_CONSTRAINT_STRING_LIST)
|
if (desc->constraint_type == SANE_CONSTRAINT_STRING_LIST)
|
||||||
|
@ -1084,6 +1112,10 @@ HWND dlg_page::create_control_string(int sn, const SANE_Option_Descriptor* desc,
|
||||||
x += 200;
|
x += 200;
|
||||||
}
|
}
|
||||||
text_size->cx = x + dlg_page::gap_x;
|
text_size->cx = x + dlg_page::gap_x;
|
||||||
|
if (IS_CAP_READONLY(desc->cap))
|
||||||
|
{
|
||||||
|
EnableWindow(wnd, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
return wnd;
|
return wnd;
|
||||||
}
|
}
|
||||||
|
@ -1670,7 +1702,7 @@ bool dlg_page::refresh(int sn, const SANE_Option_Descriptor* desc, void* cur_val
|
||||||
}
|
}
|
||||||
|
|
||||||
set_ctrl_value(ctrls_[ind], desc->type, cur_val, true);
|
set_ctrl_value(ctrls_[ind], desc->type, cur_val, true);
|
||||||
EnableWindow(ctrls_[ind], (desc->cap & SANE_CAP_INACTIVE) != SANE_CAP_INACTIVE);
|
EnableWindow(ctrls_[ind], (desc->cap & SANE_CAP_INACTIVE) != SANE_CAP_INACTIVE && !IS_CAP_READONLY(desc->cap));
|
||||||
host = (HWND)GetPropW(ctrls_[ind], dlg_page::property_host.c_str());
|
host = (HWND)GetPropW(ctrls_[ind], dlg_page::property_host.c_str());
|
||||||
if (IsWindow(host))
|
if (IsWindow(host))
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue