olaf neophyte and de.po updates, valgrind tweaks, delete green lady, inkscape dpi=96
[goodguy/history.git] / cinelerra-5.1 / cinelerra / binfolder.C
index 9082f42c267028b5461eb5338456d27a536b4847..e8a8411d0d0b1dfaee797cfa59222b6bbf8056be 100644 (file)
@@ -338,7 +338,7 @@ int BinFolder::load_xml(FileXML *file)
        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;
@@ -347,20 +347,32 @@ int BinFolder::add_patterns(ArrayList<Indexable*> *drag_idxbls)
        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
@@ -510,14 +522,14 @@ int BinFolderFilter::load_xml(FileXML *file)
        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;
 }