在 DXL 中,如何获取我未在 DXL 脚本中自行打开的模块的句柄
in DXL, how to get the handle of a module that I don't open myself in the DXL script
我有一个 DXL 脚本,可以打开(读取或编辑)模块并将它们放入跳过列表(这样我就可以在最后关闭它们)
跳过列表存储每个模块读取或编辑的模块句柄:
if (MODIF_OTHER_MODULES)
{
modSrc = edit(modSrc_Name, false)
} else
{
modSrc = read(modSrc_Name, false)
}
put(skp_openmodule, modSrc, modSrc)
但有时模块已经在我的 DXL 脚本之外打开,所以下面的检查是 KO :
mvSource = sourceVersion lr
modSrc_data = data mvSource
modSrc_Name = fullName(source lr)
if (null modSrc_data)
"read/edit modSrc_Name module and add module in the skip list" : OK DONE
else
"the module is already open but maybe I don't open it myself"
"so I WANT TO CHECK if module is already in the skiplist and ADD module of modSrc_data in the precedent skip list if it isn't " : I DONT KNOW HOW !
"
有没有办法获取 modSrc_data 的模块,以便在 skp_openmodule 中不存在的情况下将其添加到列表中?
我不想再 read/edit 因为我不知道它以前是在哪种模式下打开的,我宁愿避免它,因为我会为每个对象和每个 link !
如果我还可以检索有关模块打开方式(读取或编辑)的信息,那就太好了
我试过:
模块(modSrc_data)
和
模块(modSrc_Name)
但它不起作用。
不确定这是否是由于您发布的摘录所致,但您应该始终关闭自动声明选项,并通过检查 DXL 手册或使用其他来源(例如“未记录的权限列表”。 data
在 ModuleVersion
return 类型 Module
上执行。所以你已经拥有了你需要的东西。另一种选择是烫发 bool open(ModName_ modRef)
。并注意 perm module
不是 return 一个 Module
,而是一个 ModName_
。
此外,除了 bool isRead(Module m)
、bool isEdit(Module m)
和 bool isShare(Module m)
(!!) 之外,当您真的想关闭之前打开的模块时,您可能还需要检查 bool unsaved(Module m)
ModuleVersion mvSource = sourceVersion lr
Module modSrc_data = data mvSource
string modSrc_Name = fullName(source lr)
if (null modSrc_data)
print "read/edit modSrc_Name module and add module in the skip list"
else
{
print "the module is already open but maybe I don't open it myself"
if isRead (modSrc_data) then print " - read"
if isEdit (modSrc_data) then print " - edit"
if isShare (modSrc_data) then print " - shared mode"
if unsaved (modSrc_data) then print " - do not silently close me, otherwise the user might be infuriated"
}
我有一个 DXL 脚本,可以打开(读取或编辑)模块并将它们放入跳过列表(这样我就可以在最后关闭它们)
跳过列表存储每个模块读取或编辑的模块句柄:
if (MODIF_OTHER_MODULES)
{
modSrc = edit(modSrc_Name, false)
} else
{
modSrc = read(modSrc_Name, false)
}
put(skp_openmodule, modSrc, modSrc)
但有时模块已经在我的 DXL 脚本之外打开,所以下面的检查是 KO :
mvSource = sourceVersion lr
modSrc_data = data mvSource
modSrc_Name = fullName(source lr)
if (null modSrc_data)
"read/edit modSrc_Name module and add module in the skip list" : OK DONE
else
"the module is already open but maybe I don't open it myself"
"so I WANT TO CHECK if module is already in the skiplist and ADD module of modSrc_data in the precedent skip list if it isn't " : I DONT KNOW HOW !
"
有没有办法获取 modSrc_data 的模块,以便在 skp_openmodule 中不存在的情况下将其添加到列表中?
我不想再 read/edit 因为我不知道它以前是在哪种模式下打开的,我宁愿避免它,因为我会为每个对象和每个 link !
如果我还可以检索有关模块打开方式(读取或编辑)的信息,那就太好了
我试过: 模块(modSrc_data) 和 模块(modSrc_Name) 但它不起作用。
不确定这是否是由于您发布的摘录所致,但您应该始终关闭自动声明选项,并通过检查 DXL 手册或使用其他来源(例如“未记录的权限列表”。 data
在 ModuleVersion
return 类型 Module
上执行。所以你已经拥有了你需要的东西。另一种选择是烫发 bool open(ModName_ modRef)
。并注意 perm module
不是 return 一个 Module
,而是一个 ModName_
。
此外,除了 bool isRead(Module m)
、bool isEdit(Module m)
和 bool isShare(Module m)
(!!) 之外,当您真的想关闭之前打开的模块时,您可能还需要检查 bool unsaved(Module m)
ModuleVersion mvSource = sourceVersion lr
Module modSrc_data = data mvSource
string modSrc_Name = fullName(source lr)
if (null modSrc_data)
print "read/edit modSrc_Name module and add module in the skip list"
else
{
print "the module is already open but maybe I don't open it myself"
if isRead (modSrc_data) then print " - read"
if isEdit (modSrc_data) then print " - edit"
if isShare (modSrc_data) then print " - shared mode"
if unsaved (modSrc_data) then print " - do not silently close me, otherwise the user might be infuriated"
}