arch bld deps, opus bld fix, add render beep, shortcut filebox ctrl a/z, batchrender...
[goodguy/history.git] / cinelerra-5.1 / guicast / bcfilebox.C
index 5d755977c183bfbaa9c424d7234e1021213945f2..ea9c58f5bf04e40177247b91e604196aca8b832a 100644 (file)
@@ -572,7 +572,7 @@ void BC_FileBox::create_objects()
        }
 
        create_icons();
-       create_tables();
+       create_tables(0);
 
        add_subwindow(ok_button = new BC_FileBoxOK(this));
        if(want_directory)
@@ -754,12 +754,19 @@ int BC_FileBox::resize_event(int w, int h)
 
 int BC_FileBox::keypress_event()
 {
-       switch(get_keypress())
-       {
-               case 'w':
-                       if(ctrl_down()) set_done(1);
-                       return 1;
-                       break;
+       switch(get_keypress()) {
+       case 'a':
+               if( !ctrl_down() ) break;
+               refresh(0, 1);
+               return 1;
+       case 'z':
+               if( !ctrl_down() ) break;
+               refresh(0, 0);
+               return 1;
+       case 'w':
+               if( !ctrl_down() ) break;
+               set_done(1);
+               return 1;
        }
        return 0;
 }
@@ -797,7 +804,7 @@ static inline int ilen(int64_t v)
         return len;
 }
 
-int BC_FileBox::create_tables()
+int BC_FileBox::create_tables(int select_all)
 {
        delete_tables();
        char string[BCTEXTLEN];
@@ -894,6 +901,12 @@ int BC_FileBox::create_tables()
                        }
                        list_column[column_of_type(FILEBOX_EXTENSION)].append(new_item);
 //             }
+
+               if( !is_dir && select_all ) {
+                       int k = list_column[0].size()-1;
+                       for( int j=0; j<columns; ++j )
+                               list_column[j][k]->set_selected(1);
+               }
        }
 
        return 0;
@@ -942,7 +955,7 @@ int BC_FileBox::column_of_type(int type)
 
 
 
-int BC_FileBox::refresh(int reset)
+int BC_FileBox::refresh(int reset, int select_all)
 {
        fs->set_sort_order(sort_order);
        fs->set_sort_field(column_type[sort_column]);
@@ -950,7 +963,7 @@ int BC_FileBox::refresh(int reset)
                fs->update(0);
        else
                fs->update_sort();
-       create_tables();
+       create_tables(select_all);
        listbox->set_master_column(column_of_type(FILEBOX_NAME), 0);
        listbox->update(list_column, column_titles, column_width, columns,
                reset>0 ? 0 : listbox->get_xposition(),