Add support for ".dae" (and others) to filepicker load filter.
* Brought llfilepicker.{cpp,h} up to speed with V3 by adding
FFLOAD_MODEL, FFLOAD_COLLADA, FFLOAD_SCRIPT, FFLOAD_DICTIONARY
However, note that we used FFLOAD_LSL, so I renamed their
FFLOAD_SCRIPT to FFLOAD_LSL and kept our way of filtering.
* Fixed the filter token that is sent to the plugin for
collada (from "dae" to "collada").
This commit is contained in:
@@ -147,9 +147,6 @@ void AIFilePicker::open(ELoadFilter filter, std::string const& default_path, std
|
||||
case FFLOAD_ANIM:
|
||||
mFilter = "anim";
|
||||
break;
|
||||
case FFLOAD_COLLADA:
|
||||
mFilter = "dae";
|
||||
break;
|
||||
#ifdef _CORY_TESTING
|
||||
case FFLOAD_GEOMETRY:
|
||||
mFilter = "geometry";
|
||||
@@ -164,6 +161,18 @@ void AIFilePicker::open(ELoadFilter filter, std::string const& default_path, std
|
||||
case FFLOAD_RAW:
|
||||
mFilter = "raw";
|
||||
break;
|
||||
case FFLOAD_MODEL:
|
||||
mFilter = "model";
|
||||
break;
|
||||
case FFLOAD_COLLADA:
|
||||
mFilter = "collada";
|
||||
break;
|
||||
case FFLOAD_LSL:
|
||||
mFilter = "lsl";
|
||||
break;
|
||||
case FFLOAD_DICTIONARY:
|
||||
mFilter = "dictionary";
|
||||
break;
|
||||
case FFLOAD_INVGZ:
|
||||
mFilter = "invgz";
|
||||
break;
|
||||
|
||||
@@ -43,10 +43,13 @@ enum ELoadFilter
|
||||
FFLOAD_WAV,
|
||||
FFLOAD_IMAGE,
|
||||
FFLOAD_ANIM,
|
||||
FFLOAD_COLLADA,
|
||||
FFLOAD_XML,
|
||||
FFLOAD_SLOBJECT,
|
||||
FFLOAD_RAW,
|
||||
FFLOAD_MODEL,
|
||||
FFLOAD_COLLADA,
|
||||
FFLOAD_LSL,
|
||||
FFLOAD_DICTIONARY,
|
||||
FFLOAD_INVGZ,
|
||||
FFLOAD_AO,
|
||||
FFLOAD_BLACKLIST
|
||||
@@ -66,11 +69,11 @@ enum ESaveFilter
|
||||
FFSAVE_J2C,
|
||||
FFSAVE_PNG,
|
||||
FFSAVE_JPEG,
|
||||
FFSAVE_LSL,
|
||||
FFSAVE_ANIMATN,
|
||||
FFSAVE_OGG,
|
||||
FFSAVE_NOTECARD,
|
||||
FFSAVE_GESTURE,
|
||||
FFSAVE_LSL,
|
||||
FFSAVE_SHAPE,
|
||||
FFSAVE_SKIN,
|
||||
FFSAVE_HAIR,
|
||||
|
||||
@@ -88,6 +88,8 @@ static LLFilePicker::ESaveFilter str2savefilter(std::string const& filter)
|
||||
return LLFilePicker::FFSAVE_PNG;
|
||||
else if (filter == "jpeg")
|
||||
return LLFilePicker::FFSAVE_JPEG;
|
||||
else if (filter == "lsl")
|
||||
return LLFilePicker::FFSAVE_LSL;
|
||||
else if (filter == "animatn")
|
||||
return LLFilePicker::FFSAVE_ANIMATN;
|
||||
else if (filter == "ogg")
|
||||
@@ -96,8 +98,6 @@ static LLFilePicker::ESaveFilter str2savefilter(std::string const& filter)
|
||||
return LLFilePicker::FFSAVE_NOTECARD;
|
||||
else if (filter == "gesture")
|
||||
return LLFilePicker::FFSAVE_GESTURE;
|
||||
else if (filter == "lsl")
|
||||
return LLFilePicker::FFSAVE_LSL;
|
||||
else if (filter == "shape")
|
||||
return LLFilePicker::FFSAVE_SHAPE;
|
||||
else if (filter == "skin")
|
||||
@@ -157,6 +157,14 @@ static LLFilePicker::ELoadFilter str2loadfilter(std::string const& filter)
|
||||
return LLFilePicker::FFLOAD_SLOBJECT;
|
||||
else if (filter == "raw")
|
||||
return LLFilePicker::FFLOAD_RAW;
|
||||
else if (filter == "model")
|
||||
return LLFilePicker::FFLOAD_MODEL;
|
||||
else if (filter == "collada")
|
||||
return LLFilePicker::FFLOAD_COLLADA;
|
||||
else if (filter == "lsl")
|
||||
return LLFilePicker::FFLOAD_LSL;
|
||||
else if (filter == "dictionary")
|
||||
return LLFilePicker::FFLOAD_DICTIONARY;
|
||||
else if (filter == "invgz")
|
||||
return LLFilePicker::FFLOAD_INVGZ;
|
||||
else if (filter == "ao")
|
||||
|
||||
@@ -50,12 +50,16 @@ LLFilePicker LLFilePicker::sInstance;
|
||||
#define BLACKLIST_FILTER L"Asset Blacklist (*.blacklist)\0*.blacklist\0"
|
||||
// </edit>
|
||||
#define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0"
|
||||
#define COLLADA_FILTER L"Scene (*.dae)\0*.dae\0"
|
||||
#ifdef _CORY_TESTING
|
||||
#define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0"
|
||||
#endif
|
||||
#define XML_FILTER L"XML files (*.xml)\0*.xml\0"
|
||||
#define SLOBJECT_FILTER L"Objects (*.slobject)\0*.slobject\0"
|
||||
#define RAW_FILTER L"RAW files (*.raw)\0*.raw\0"
|
||||
#define MODEL_FILTER L"Model files (*.dae)\0*.dae\0"
|
||||
#define SCRIPT_FILTER L"Script files (*.lsl)\0*.lsl\0"
|
||||
#define DICTIONARY_FILTER L"Dictionary files (*.dic; *.xcu)\0*.dic;*.xcu\0"
|
||||
#endif
|
||||
|
||||
//
|
||||
@@ -164,6 +168,10 @@ bool LLFilePickerBase::setupFilter(ELoadFilter filter)
|
||||
mOFN.lpstrFilter = ANIM_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
case FFLOAD_COLLADA:
|
||||
mOFN.lpstrFilter = COLLADA_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
#ifdef _CORY_TESTING
|
||||
case FFLOAD_GEOMETRY:
|
||||
mOFN.lpstrFilter = GEOMETRY_FILTER \
|
||||
@@ -182,6 +190,18 @@ bool LLFilePickerBase::setupFilter(ELoadFilter filter)
|
||||
mOFN.lpstrFilter = RAW_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
case FFLOAD_MODEL:
|
||||
mOFN.lpstrFilter = MODEL_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
case FFLOAD_LSL:
|
||||
mOFN.lpstrFilter = SCRIPT_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
case FFLOAD_DICTIONARY:
|
||||
mOFN.lpstrFilter = DICTIONARY_FILTER \
|
||||
L"\0";
|
||||
break;
|
||||
// <edit>
|
||||
case FFLOAD_INVGZ:
|
||||
mOFN.lpstrFilter = INVGZ_FILTER \
|
||||
@@ -490,9 +510,7 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
|
||||
wcsncpy( mFilesW,L"untitled.lsl", FILENAME_BUFFER_SIZE);
|
||||
}
|
||||
mOFN.lpstrDefExt = L"lsl";
|
||||
mOFN.lpstrFilter =
|
||||
L"LSL (*.lsl)\0*.lsl\0" \
|
||||
L"\0";
|
||||
mOFN.lpstrFilter = L"LSL Files (*.lsl)\0*.lsl\0" L"\0";
|
||||
break;
|
||||
case FFSAVE_SHAPE:
|
||||
if(filename.empty())
|
||||
@@ -762,6 +780,15 @@ Boolean LLFilePickerBase::navOpenFilterProc(AEDesc *theItem, void *info, void *c
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
else if (filter == FFLOAD_COLLADA)
|
||||
{
|
||||
if (fileInfo.filetype != 'DAE ' &&
|
||||
(fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("dae"), kCFCompareCaseInsensitive) != kCFCompareEqualTo))
|
||||
)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
else if (filter == FFLOAD_XML)
|
||||
{
|
||||
if (fileInfo.filetype != 'XML ' &&
|
||||
@@ -795,7 +822,25 @@ Boolean LLFilePickerBase::navOpenFilterProc(AEDesc *theItem, void *info, void *c
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
else if (filter == FFLOAD_LSL)
|
||||
{
|
||||
if (fileInfo.filetype != 'LSL ' &&
|
||||
(fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("lsl"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) )
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
else if (filter == FFLOAD_DICTIONARY)
|
||||
{
|
||||
if (fileInfo.filetype != 'DIC ' &&
|
||||
fileInfo.filetype != 'XCU ' &&
|
||||
(fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("dic"), kCFCompareCaseInsensitive) != kCFCompareEqualTo) &&
|
||||
fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("xcu"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)))
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (fileInfo.extension)
|
||||
{
|
||||
CFRelease(fileInfo.extension);
|
||||
@@ -985,6 +1030,12 @@ OSStatus LLFilePickerBase::doNavSaveDialog(ESaveFilter filter, std::string const
|
||||
extension = CFSTR(".j2c");
|
||||
break;
|
||||
|
||||
case FFSAVE_LSL:
|
||||
type = 'LSL ';
|
||||
creator = '\?\?\?\?';
|
||||
extension = CFSTR(".lsl");
|
||||
break;
|
||||
|
||||
case FFSAVE_ALL:
|
||||
default:
|
||||
type = '\?\?\?\?';
|
||||
@@ -1349,6 +1400,12 @@ static std::string add_xml_filter_to_gtkchooser(GtkWindow *picker)
|
||||
LLTrans::getString("xml_file") + " (*.xml)");
|
||||
}
|
||||
|
||||
static std::string add_collada_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
return add_simple_pattern_filter_to_gtkchooser(picker, "*.dae",
|
||||
LLTrans::getString("scene_files") + " (*.dae)");
|
||||
}
|
||||
|
||||
static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
GtkFileFilter *gfilter = gtk_file_filter_new();
|
||||
@@ -1362,6 +1419,17 @@ static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
|
||||
return filtername;
|
||||
}
|
||||
|
||||
static std::string add_script_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
return add_simple_mime_filter_to_gtkchooser(picker, "text/plain",
|
||||
LLTrans::getString("script_files") + " (*.lsl)");
|
||||
}
|
||||
|
||||
static std::string add_dictionary_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
return add_simple_mime_filter_to_gtkchooser(picker, "text/plain",
|
||||
LLTrans::getString("dictionary_files") + " (*.dic; *.xcu)");
|
||||
}
|
||||
|
||||
bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filename, std::string const& folder)
|
||||
{
|
||||
@@ -1421,6 +1489,10 @@ bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filena
|
||||
LLTrans::getString("compressed_image_files") + " (*.j2c)");
|
||||
suggest_ext = ".j2c";
|
||||
break;
|
||||
case FFSAVE_LSL:
|
||||
caption += add_script_filter_to_gtkchooser(picker);
|
||||
suggest_ext = ".lsl";
|
||||
break;
|
||||
default:;
|
||||
break;
|
||||
}
|
||||
@@ -1475,9 +1547,18 @@ bool LLFilePickerBase::getLoadFile(ELoadFilter filter, std::string const& folder
|
||||
case FFLOAD_ANIM:
|
||||
filtername = add_bvh_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
case FFLOAD_COLLADA:
|
||||
filtername = add_collada_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
case FFLOAD_IMAGE:
|
||||
filtername = add_imageload_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
case FFLOAD_LSL:
|
||||
filtername = add_script_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
case FFLOAD_DICTIONARY:
|
||||
filtername = add_dictionary_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
case FFLOAD_XML:
|
||||
filtername = add_xml_filter_to_gtkchooser(picker);
|
||||
break;
|
||||
|
||||
@@ -60,10 +60,14 @@ public:
|
||||
FFLOAD_XML = 6,
|
||||
FFLOAD_SLOBJECT = 7,
|
||||
FFLOAD_RAW = 8,
|
||||
FFLOAD_MODEL = 9,
|
||||
FFLOAD_COLLADA = 10,
|
||||
FFLOAD_LSL = 11,
|
||||
FFLOAD_DICTIONARY = 12,
|
||||
// <edit>
|
||||
FFLOAD_INVGZ = 9,
|
||||
FFLOAD_AO = 10,
|
||||
FFLOAD_BLACKLIST = 11
|
||||
FFLOAD_INVGZ = 13,
|
||||
FFLOAD_AO = 14,
|
||||
FFLOAD_BLACKLIST = 15
|
||||
// </edit>
|
||||
};
|
||||
|
||||
@@ -84,12 +88,12 @@ public:
|
||||
FFSAVE_J2C = 12,
|
||||
FFSAVE_PNG = 13,
|
||||
FFSAVE_JPEG = 14,
|
||||
FFSAVE_LSL = 15,
|
||||
// <edit>
|
||||
FFSAVE_ANIMATN = 15,
|
||||
FFSAVE_OGG = 16,
|
||||
FFSAVE_NOTECARD = 17,
|
||||
FFSAVE_GESTURE = 18,
|
||||
FFSAVE_LSL = 19,
|
||||
FFSAVE_ANIMATN = 16,
|
||||
FFSAVE_OGG = 17,
|
||||
FFSAVE_NOTECARD = 18,
|
||||
FFSAVE_GESTURE = 19,
|
||||
// good grief
|
||||
FFSAVE_SHAPE = 20,
|
||||
FFSAVE_SKIN = 21,
|
||||
|
||||
Reference in New Issue
Block a user