remove_all_objects();
}
-Mixer *Mixers::new_mixer()
+Mixer *Mixers::new_mixer(int show)
{
int idx = 0;
for( int i=0; i<size(); ++i ) {
Mixer *mixer = get(i);
if( idx < mixer->idx ) idx = mixer->idx;
}
- return append(new Mixer(idx+1));
+ return append(new Mixer(idx+1, show));
}
Mixer *Mixers::get_mixer(int idx)
return 0;
}
-void Mixers::del_mixer(int idx)
+void Mixers::del_mixer(Mixer *mixer)
{
- Mixer *mixer = get_mixer(idx);
- if( mixer ) remove_object(mixer);
+ remove_object(mixer);
}
void Mixer::set_title(const char *tp)
if( file->tag.title_is("MIXER") ) {
Mixer *mixer = new_mixer();
file->tag.get_property("TITLE", mixer->title);
+ mixer->show = file->tag.get_property("SHOW", 1);
mixer->x = file->tag.get_property("X", mixer->x);
mixer->y = file->tag.get_property("Y", mixer->y);
mixer->w = file->tag.get_property("W", mixer->w);
void Mixer::save(FileXML *file)
{
file->tag.set_title("MIXER");
+ file->tag.set_property("SHOW",show);
file->tag.set_property("TITLE",title);
file->tag.set_property("X",x);
file->tag.set_property("Y",y);
file->append_newline();
}
-Mixer::Mixer(int idx)
+Mixer::Mixer(int idx, int show)
{
this->idx = idx;
+ this->show = show;
title[0] = 0;
x = y = 100 + idx*64;
w = 400; h = 300;
mixer_ids.remove_all();
strncpy(title, that.title, sizeof(title));
title[sizeof(title)-1] = 0;
+ show = that.show;
x = that.x; y = that.y;
w = that.w; h = that.h;
for( int i=0; i<that.mixer_ids.size(); ++i )
BC_Window* ZWindow::new_gui()
{
Mixer *mixer = mwindow->edl->mixers.get_mixer(idx);
+ mixer->show = 1;
zgui = new ZWindowGUI(mwindow, this, mixer);
zgui->create_objects();
return zgui;
void ZWindow::handle_done_event(int result)
{
stop_playback(1);
- if( result )
- mwindow->del_mixer(this);
+ if( result ) {
+ mwindow->close_mixer(this);
+ Mixer *mixer = mwindow->edl->mixers.get_mixer(idx);
+ if( mixer ) mixer->show = 0;
+ Track *track = mixer ? mwindow->edl->tracks->first : 0;
+ while( track && track->index_in(mixer) < 0 ) track = track->next;
+// if no refs to tracks, delete it
+ if( !track ) mwindow->edl->mixers.del_mixer(mixer);
+ }
idx = -1;
}
void ZWindow::handle_close_event(int result)