ProcessorEntry::ProcessorEntry (ProcessorBox* parent, boost::shared_ptr<Processor> p, Width w)
: _button (ArdourButton::led_default_elements)
, _position (PreFader)
+ , _selectable(true)
, _parent (parent)
, _processor (p)
, _width (w)
}
boost::shared_ptr<PluginInsert> plugin_insert = boost::dynamic_pointer_cast<PluginInsert> (processor);
+
ProcessorEntry* e = 0;
if (plugin_insert) {
e = new PluginInsertProcessorEntry (this, plugin_insert, _width);
e = new ProcessorEntry (this, processor, _width);
}
+ boost::shared_ptr<Send> send = boost::dynamic_pointer_cast<Send> (processor);
+ boost::shared_ptr<PortInsert> ext = boost::dynamic_pointer_cast<PortInsert> (processor);
+
+ //faders and meters are not deletable, copy/paste-able, so they shouldn't be selectable
+ if (!send && !plugin_insert && !ext)
+ e->set_selectable(false);
+
/* Set up this entry's state from the GUIObjectState */
XMLNode* proc = entry_gui_object_state (e);
if (proc) {
std::string drag_text () const;
void set_visual_state (Gtkmm2ext::VisualState, bool);
+ bool is_selectable() const {return _selectable;}
+ void set_selectable(bool s) { _selectable = s; }
+
enum Position {
PreFader,
Fader,
virtual void setup_visuals ();
private:
+ bool _selectable;
void led_clicked();
void processor_active_changed ();
void processor_property_changed (const PBD::PropertyChange&);
/** Set the child's visual state */
virtual void set_visual_state (VisualState, bool onoff) = 0;
+
+ /** @return True if the child can be selected in the list ( if you don't want it to copy/paste/drag then turn this off ) */
+ virtual bool is_selectable () const = 0;
};
/** A VBox whose contents can be dragged and dropped */
void add_to_selection (T* child)
{
+ if ( !child->is_selectable() )
+ return;
_selection.push_back (child);
setup_child_state (child);
}