add asset select used to proxy list menu
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / awindowgui.C
index 2ef637964754a6f119ea87ef384379e7e39aff65..38dad86bf1d3a3ac3de310ac033b4e651fb94c88 100644 (file)
@@ -1488,6 +1488,15 @@ int AWindowGUI::keypress_event()
                        mwindow->session->drag_clips);
                lock_window("AWindowGUI::keypress_event 2");
                return 1;
+       case KEY_F1:
+       case KEY_F2:
+       case KEY_F3:
+       case KEY_F4:
+               if( shift_down() && ctrl_down() ) {
+                       resend_event(mwindow->gui);
+                       return 1;
+               }
+               break;
        }
        return 0;
 }
@@ -2937,3 +2946,51 @@ int AWindowListSort::handle_event()
        return 1;
 }
 
+AssetSelectUsedItem::AssetSelectUsedItem(AssetSelectUsed *select_used, const char *text, int action)
+ : BC_MenuItem(text)
+{
+       this->select_used = select_used;
+       this->action = action;
+}
+
+int AssetSelectUsedItem::handle_event()
+{
+       MWindow *mwindow = select_used->mwindow;
+       AWindowGUI *gui = select_used->gui;
+       AWindowAssets *asset_list = gui->asset_list;
+       ArrayList<BC_ListBoxItem*> *data = gui->displayed_assets;
+
+       switch( action ) {
+       case SELECT_ALL:
+       case SELECT_NONE:
+               asset_list->set_all_selected(data, action==SELECT_ALL ? 1 : 0);
+               break;
+       case SELECT_USED:
+       case SELECT_UNUSED:
+               asset_list->set_all_selected(data, 0);
+               for( int i = 0; i < data->total; i++ ) {
+                       AssetPicon *picon = (AssetPicon*)data->values[i];
+                       Indexable *idxbl = picon->indexable ? picon->indexable :
+                           picon->edl ? picon->edl->get_proxy_asset() : 0;
+                       int used = idxbl && mwindow->edl->in_use(idxbl) ? 1 : 0;
+                       asset_list->set_selected(data, i, action==SELECT_USED ? used : !used);
+               }
+               break;
+       }
+
+       int asset_xposition = asset_list->get_xposition();
+       int asset_yposition = asset_list->get_yposition();
+       asset_list->update(gui->displayed_assets, gui->asset_titles,
+               mwindow->edl->session->asset_columns, ASSET_COLUMNS,
+               asset_xposition, asset_yposition, -1, 0);
+       asset_list->center_selection();
+       return 1;
+}
+
+AssetSelectUsed::AssetSelectUsed(MWindow *mwindow, AWindowGUI *gui)
+ : BC_MenuItem(_("Select"))
+{
+       this->mwindow = mwindow;
+       this->gui = gui;
+}
+