return ret;
}
-int BinFolder::add_patterns(ArrayList<Indexable*> *drag_idxbls)
+int BinFolder::add_patterns(ArrayList<Indexable*> *drag_idxbls, int use_basename)
{
int n = drag_idxbls->size();
if( !n ) return 1;
for( int i=0; i<n; ++i ) {
idxbl = drag_idxbls->get(i);
if( !idxbl->is_asset &&
- idxbl->awindow_folder == AW_PROXY_FOLDER )
+ idxbl->folder_no == AW_PROXY_FOLDER )
continue;
- len += strlen(idxbl->get_title()) + 1;
+
+ const char *tp = idxbl->get_title();
+ if( use_basename && idxbl->is_asset ) {
+ const char *cp = strrchr(tp, '/');
+ if( cp ) tp = cp + 1;
+ len += 1; // "*" + fn
+ }
+ len += strlen(tp) + 1;
}
if( !len ) return 1;
char *pats = new char[len+1], *bp = pats;
for( int i=0; i<n; ++i ) {
idxbl = drag_idxbls->get(i);
if( !idxbl->is_asset &&
- idxbl->awindow_folder == AW_PROXY_FOLDER )
+ idxbl->folder_no == AW_PROXY_FOLDER )
continue;
if( i > 0 ) *bp++ = '\n';
- const char *cp = idxbl->get_title();
- while( *cp ) *bp++ = *cp++;
+ const char *tp = idxbl->get_title();
+ if( use_basename && idxbl->is_asset ) {
+ const char *cp = strrchr(tp, '/');
+ if( cp ) tp = cp + 1;
+ *bp++ = '*';
+ }
+ while( *tp ) *bp++ = *tp++;
}
*bp = 0;
// new pattern filter
int enabled_type = file->tag.get_property("ENABLED", FOLDER_ENABLED_AND);
int op_type = file->tag.get_property("OP", FOLDER_OP_MATCHES);
int target_type = file->tag.get_property("TARGET", FOLDER_TARGET_PATTERNS);
- char data[0x40000];
- file->read_text_until("/FILTER", data, sizeof(data), 0);
+ XMLBuffer data;
+ file->read_text_until("/FILTER", &data, 0);
update_enabled(enabled_type);
update_target(target_type);
update_op(op_type);
target->load_xml(file);
if( target->type == FOLDER_TARGET_PATTERNS )
- ((BinFolderTargetPatterns *)target)->update(data);
+ ((BinFolderTargetPatterns *)target)->update(data.cstr());
return 0;
}