X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fbinfolder.C;h=e8a8411d0d0b1dfaee797cfa59222b6bbf8056be;hb=0d3917a4eda0344055badf0bd6e235c15c3b6cb8;hp=593bfdab1fe041b27ba15a9caf15a0b30de40421;hpb=17b4e5a06157865391c2d07b552b81d84665bcae;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/binfolder.C b/cinelerra-5.1/cinelerra/binfolder.C index 593bfdab..e8a8411d 100644 --- a/cinelerra-5.1/cinelerra/binfolder.C +++ b/cinelerra-5.1/cinelerra/binfolder.C @@ -338,7 +338,7 @@ int BinFolder::load_xml(FileXML *file) return ret; } -int BinFolder::add_patterns(ArrayList *drag_idxbls) +int BinFolder::add_patterns(ArrayList *drag_idxbls, int use_basename) { int n = drag_idxbls->size(); if( !n ) return 1; @@ -347,20 +347,32 @@ int BinFolder::add_patterns(ArrayList *drag_idxbls) for( int i=0; iget(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; iget(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; } @@ -1772,7 +1784,7 @@ void ModifyFolderGUI::create_objects() add_subwindow(text_box = new BC_TextBox(x, y, 300, 1, thread->folder->title)); y += text_box->get_h() + 10; int lh = get_h() - y - BC_OKButton::calculate_h() - 30; - int lw = get_w() - x - 120; + int lw = get_w() - x - 160; add_subwindow(folder_list = new BinFolderList(thread->folder, thread->agui->mwindow, this, x, y, lw, lh)); folder_list->create_objects(); @@ -1799,7 +1811,7 @@ int ModifyFolderGUI::resize_event(int w, int h) int lx = folder_list->get_x(); int ly = folder_list->get_y(); int lh = h - ly - BC_OKButton::calculate_h() - 30; - int lw = w - lx - 120; + int lw = w - lx - 160; folder_list->reposition_window(lx, ly, lw, lh); int x1 = lx + lw + 15; add_filter->reposition_window(x1, add_filter->get_y()); @@ -1826,6 +1838,7 @@ ModifyFolderThread::ModifyFolderThread(AWindowGUI *agui) { this->agui = agui; original = 0; + modify_edl = 0; folder = 0; } @@ -1839,7 +1852,8 @@ void ModifyFolderThread::start(BinFolder *folder, int x, int y, int w, int h) { close_window(); this->original = folder; - agui->mwindow->edl->add_user(); + this->modify_edl = agui->mwindow->edl; + this->modify_edl->add_user(); this->folder = new BinFolder(*folder); this->wx = x; this->wy = y; this->ww = w; this->wh = h; @@ -1872,7 +1886,7 @@ void ModifyFolderThread::handle_done_event(int result) } delete folder; folder = 0; original = 0; - agui->mwindow->edl->remove_user(); + modify_edl->remove_user(); } void ModifyFolderThread::handle_close_event(int result)