clip picons as clip_icon.png, vwindow hang, fix for drop target test
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindow.C
index d14f228c14754e29d1f26826bbd824636d5f3d9f..de11d94e0c30ef32a89119b9b012570d5f51b9f6 100644 (file)
@@ -38,6 +38,7 @@
 #include "channeldb.h"
 #include "channelinfo.h"
 #include "clip.h"
+#include "clipedls.h"
 #include "bccmodels.h"
 #include "commercials.h"
 #include "cplayback.h"
@@ -80,7 +81,6 @@
 #include "mutex.h"
 #include "mwindowgui.h"
 #include "mwindow.h"
-#include "nestededls.h"
 #include "new.h"
 #include "panautos.h"
 #include "patchbay.h"
@@ -1217,7 +1217,7 @@ void MWindow::update_mixer_tracks()
 }
 
 void MWindow::queue_mixers(EDL *edl, int command, int wait_tracking,
-               int use_inout, int update_refresh, int toggle_audio)
+               int use_inout, int update_refresh, int toggle_audio, int loop_play)
 {
        zwindows_lock->lock("MWindow::queue_mixers");
        for( int vidx=0; vidx<zwindows.size(); ++vidx ) {
@@ -1249,14 +1249,14 @@ void MWindow::queue_mixers(EDL *edl, int command, int wait_tracking,
                }
                zwindow->change_source(mixer_edl);
                zwindow->issue_command(command,
-                       wait_tracking, use_inout, update_refresh, toggle_audio);
+                       wait_tracking, use_inout, update_refresh, toggle_audio, loop_play);
        }
        zwindows_lock->unlock();
 }
 
 void MWindow::refresh_mixers()
 {
-       queue_mixers(edl,CURRENT_FRAME,0,0,1,0);
+       queue_mixers(edl,CURRENT_FRAME,0,0,1,0,0);
 }
 
 void MWindow::stop_mixers()
@@ -1264,7 +1264,7 @@ void MWindow::stop_mixers()
        for( int vidx=0; vidx<zwindows.size(); ++vidx ) {
                ZWindow *zwindow = zwindows[vidx];
                if( zwindow->idx < 0 ) continue;
-               zwindow->issue_command(STOP, 0, 0, 0, 0);
+               zwindow->issue_command(STOP, 0, 0, 0, 0, 0);
        }
 }
 
@@ -1723,6 +1723,11 @@ void MWindow::stop_playback(int wait)
        }
 }
 
+void MWindow::stop_transport()
+{
+       gui->stop_transport(gui->get_window_lock() ? "MWindow::stop_transport" : 0);
+}
+
 int MWindow::load_filenames(ArrayList<char*> *filenames,
        int load_mode,
        int update_filename)
@@ -1938,7 +1943,8 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__);
                                nested_edl->set_path(filenames->get(i));
                                nested_edl->load_xml(&xml_file, LOAD_ALL);
 //printf("MWindow::load_filenames %p %s\n", nested_edl, nested_edl->project_path);
-                               edl_to_nested(new_edl, nested_edl);
+                               new_edl->to_nested(nested_edl);
+                               new_edl->local_session->set_clip_path(nested_edl);
                                nested_edl->Garbage::remove_user();
                        }
                        else {
@@ -2022,40 +2028,33 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__);
 
 // Add new assets to EDL and schedule assets for index building.
        int got_indexes = 0;
-       for(int i = 0; i < new_edls.size(); i++)
-       {
+       for( int i=0; i<new_edls.size(); ++i ) {
                EDL *new_edl = new_edls[i];
-               for(int j = 0; j < new_edl->nested_edls->size(); j++)
-               {
-                       mainindexes->add_next_asset(0,
-                               new_edl->nested_edls->get(j));
+               for( int j=0; j<new_edl->nested_edls.size(); ++j ) {
+                       mainindexes->add_next_asset(0, new_edl->nested_edls[j]);
+                       edl->nested_edls.update_index(new_edl->nested_edls[j]);
                        got_indexes = 1;
-                       edl->nested_edls->update_index(new_edl->nested_edls->get(j));
                }
 
        }
 
 if(debug) printf("MWindow::load_filenames %d\n", __LINE__);
-       for(int i = 0; i < new_assets.size(); i++)
-       {
+       for( int i=0; i<new_assets.size(); ++i ) {
                Asset *new_asset = new_assets[i];
 
                File *new_file = 0;
                int got_it = 0;
-               for(int j = 0; j < new_files.size(); j++)
-               {
+               for( int j=0; j<new_files.size(); ++j ) {
                        new_file = new_files[j];
-                       if(!strcmp(new_file->asset->path,
-                               new_asset->path))
-                       {
+                       if( !strcmp(new_file->asset->path, new_asset->path) ) {
                                got_it = 1;
                                break;
                        }
                }
 
                mainindexes->add_next_asset(got_it ? new_file : 0, new_asset);
-               got_indexes = 1;
                edl->assets->update(new_asset);
+               got_indexes = 1;
        }
 if(debug) printf("MWindow::load_filenames %d\n", __LINE__);
 
@@ -3201,38 +3200,6 @@ if(debug) printf("MWindow::asset_to_edl %d\n", __LINE__);
        return 0;
 }
 
-int MWindow::edl_to_nested(EDL *new_edl,
-       EDL *nested_edl)
-{
-
-// Keep frame rate, sample rate, and output size unchanged.
-// These parameters would revert the project if VWindow displayed an asset
-// of different size than the project.
-
-
-
-// Nest all video & audio outputs
-       new_edl->session->video_tracks = 1;
-       new_edl->session->audio_tracks = nested_edl->session->audio_channels;
-       new_edl->create_default_tracks();
-
-
-
-       new_edl->insert_asset(0,
-               nested_edl,
-               0,
-               0,
-               0);
-
-       char string[BCTEXTLEN];
-       FileSystem fs;
-       fs.extract_name(string, nested_edl->path);
-//printf("MWindow::edl_to_nested %p %s\n", nested_edl, nested_edl->path);
-
-       strcpy(new_edl->local_session->clip_title, string);
-
-       return 0;
-}
 
 // Reset everything after a load.
 void MWindow::update_project(int load_mode)
@@ -3368,7 +3335,7 @@ void MWindow::save_backup()
        char backup_path[BCTEXTLEN];
        snprintf(backup_path, sizeof(backup_path), "%s/%s",
                File::get_config_path(), BACKUP_FILE);
-       edl->save_xml(&file, backup_path, 0, 0);
+       edl->save_xml(&file, backup_path);
        file.terminate_string();
        FileSystem fs;
        fs.complete_path(backup_path);