То, о чем вы просите, может быть немного более привлекательным. Там нет нескольких открытых функции на языке сценариев, так что вы можете только создать его самостоятельно, с участием нескольких шагов:
- входом для базовой папки (это можно запрашивать у пользователя с диалогом
GetDirectoryDialog
)
- Использование команды
GetFilesInDirectory
для получения списка (TagList) файлов в этой папке
- процесса, что список, чтобы отфильтровать то, что вы заинтересованы в
- Создание пользовательского-диалога (производный от UIFrame), в котором перечислены файлы с установленными флажками, несколькими раскрывающимися меню или списком для выбора.
- Закон от выбора, сделанного в вашем диалоге обычай, т.е. открыть все эти файлы
Следующий сценарий является примером делать.
class MyMultiSelect : UIframe
{
string root
TagGroup FileList
TagGroup DLGlist
TagGroup CreateDLG(object self)
{
TagGroup dlg,dlgitems
dlg = DLGCreateDialog("MultiOpen", dlgItems)
number nMax = fileList.TagGroupCountTags();
TagGroup listitems
DLGlist = DLGCreateList(listitems, 90, nMax+1)
DLGlist.DLGMultipleSelect(1)
for (number i=0; i<nMax; i++)
{
string name
if (FileList.TagGroupGetIndexedTagAsString(i,name))
listitems.DLGAddListItem(name, 0)
}
dlgitems.DLGAddElement(DLGlist)
return dlg
}
TagGroup CreateFilteredFileList(object self)
{
// Get all files
TagGroup list = GetFilesInDirectory(root, 1)
// Filter all DM3 files
TagGroup filtered = NewTagList()
for(number i = 0; i<list.TagGroupCountTags(); i++)
{
TagGroup entry
string file = ""
list.TagGroupGetIndexedTagAsTagGroup(i,entry)
entry.TagGroupGetTagAsString("Name", file)
if (-1 != find(file,".dm3"))
filtered.TagGroupInsertTagAsString(Infinity(),file)
}
return filtered
}
TagGroup GetSelectedList(object self)
{
TagGroup selList = NewTagList()
TagGroup itemList
DLGlist.TagGroupGetTagAsTagGroup("Items", itemList)
for (number i=0; i<itemList.TagGroupCountTags(); i++)
{
number isSelected = 0
TagGroup entry
itemList.TagGroupGetIndexedTagAsTagGroup(i,entry)
entry.TagGroupGetTagAsBoolean("Selected", isSelected)
if (isSelected)
{
string filename
entry.TagGroupGetTagAsString("Label", fileName)
selList.TagGroupInsertTagAsString(Infinity(),fileName)
}
}
return selList
}
void OpenSelectedFiles(object self)
{
TagGroup files = self.GetSelectedList()
number nFiles = files.TagGroupCountTags()
if (0 == nFiles)
Throw("No files selected")
Result("\n Opening "+nFiles+" files now..")
for (number i=0; i<nFiles; i++)
{
string filename
files.TagGroupGetIndexedTagAsString(i,fileName)
string path = root + "\\" + filename
Result("\n Opening: "+path)
OpenImage(path).ShowImage()
}
}
Object Init(object self, string rootInput)
{
root = rootInput
FileList = self.CreateFilteredFileList()
return self.super.Init(self.CreateDLG())
}
}
// Main
{
string rootDir
GetDirectoryDialog(NULL, "Select Folder from which to multi-open", GetApplicationDirectory("current",0), rootDir)
object dlg = Alloc(MyMultiSelect).Init(rootDir)
dlg.pose()
dlg.OpenSelectedFiles()
}
спасибо! Это очень полезно! –