+int MixerItems::activate_submenu()
+{
+ BC_SubMenu *mixer_submenu = (BC_SubMenu *)get_submenu();
+ int k = mixer_submenu->total_items();
+ while( --k >= 0 ) {
+ MixerItem *mixer_item = (MixerItem *)mixer_submenu->get_item(k);
+ if( mixer_item->idx < 0 ) continue;
+ mixer_submenu->del_item(mixer_item);
+ }
+ int n = mwindow->edl->mixers.size();
+ for( int i=0; i<n; ++i ) {
+ Mixer *mixer = mwindow->edl->mixers[i];
+ if( !mixer ) continue;
+ MixerItem *mixer_item = new MixerItem(this, mixer->title, mixer->idx);
+ mixer_submenu->add_submenuitem(mixer_item);
+ }
+ return BC_MenuItem::activate_submenu();
+}
+
+MixerItem::MixerItem(MixerItems *mixer_items, const char *text, int idx)
+ : BC_MenuItem(text)
+{
+ this->mixer_items = mixer_items;
+ this->idx = idx;
+}
+
+MixerItem::MixerItem(MixerItems *mixer_items, const char *text, const char *hotkey_text, int hotkey)
+ : BC_MenuItem(text, hotkey_text, hotkey)
+{
+ this->mixer_items = mixer_items;
+ this->idx = -1;
+}
+
+int MixerItem::handle_event()
+{
+ if( idx < 0 ) return 0;
+ MWindow *mwindow = mixer_items->mwindow;
+ Mixer *mixer = mwindow->edl->mixers.get_mixer(idx);
+ if( !mixer ) return 0;
+ ZWindow *zwindow = mwindow->get_mixer(idx);
+ if( !zwindow )
+ zwindow = mwindow->get_mixer(mixer);
+ if( !zwindow->zgui ) {
+ zwindow->set_title(mixer->title);
+ zwindow->start();
+ }
+ zwindow->zgui->lock_window("MixerItem::handle_event");
+ zwindow->zgui->raise_window();
+ zwindow->zgui->unlock_window();
+ mwindow->refresh_mixers();
+ return 1;
+}
+
+MixerViewer::MixerViewer(MixerItems *mixer_items)
+ : MixerItem(mixer_items, _("Mixer Viewer"), _("Shift-M"), 'M')