21 #include <gtkmm/menu.h>
22 #include <gtkmm/menushell.h>
23 #include <gtkmm/treeview.h>
32 : _xml_property_name (name)
33 , _ignore_list_view_change (false)
49 VisibilityGroup::add (Gtk::Widget* widget,
string const &
id,
string const &
name,
bool visible, boost::function<boost::optional<bool> ()>
override)
65 if (ev->button != 3) {
69 menu()->popup (1, ev->time);
78 Gtk::Menu* m = Gtk::manage (
new Gtk::Menu);
79 MenuList& items = m->items ();
81 for (vector<Member>::iterator i =
_members.begin(); i !=
_members.end(); ++i) {
82 items.push_back (CheckMenuElem (i->name));
83 Gtk::CheckMenuItem* j =
dynamic_cast<Gtk::CheckMenuItem*
> (&items.back ());
84 j->set_active (i->visible);
96 boost::optional<bool> o = m.
override ();
109 for (vector<Member>::iterator i =
_members.begin(); i !=
_members.end(); ++i) {
127 m->visible = !m->visible;
145 for (vector<Member>::iterator i =
_members.begin(); i !=
_members.end(); ++i) {
150 string::size_type
const comma = v.find_first_of (
',');
151 string segment = v.substr (0, comma);
153 for (vector<Member>::iterator i =
_members.begin(); i !=
_members.end(); ++i) {
154 if (segment == i->id) {
159 if (comma == string::npos) {
163 v = v.substr (comma + 1);
180 for (vector<Member>::const_iterator i =
_members.begin(); i !=
_members.end(); ++i) {
182 if (!result.empty ()) {
203 for (vector<Member>::iterator i =
_members.begin(); i !=
_members.end(); ++i) {
204 Gtk::TreeModel::iterator j =
_model->append ();
205 Gtk::TreeModel::Row row = *j;
221 Gtk::TreeView* v = Gtk::manage (
new Gtk::TreeView (
_model));
222 v->set_headers_visible (
false);
226 Gtk::CellRendererToggle* visible_cell =
dynamic_cast<Gtk::CellRendererToggle*
> (v->get_column_cell_renderer (0));
227 visible_cell->property_activatable() =
true;
239 Gtk::TreeModel::iterator i =
_model->get_iter (path);
245 j->visible = !j->visible;
void set_state(XMLNode const &)
Gtk::TreeModelColumn< std::string > _name
const std::string & value() const
std::vector< Member > _members
bool button_press_event(GdkEventButton *)
std::string _xml_property_name
bool _ignore_list_view_change
bool should_actually_be_visible(Member const &) const
PBD::Signal0< void > VisibilityChanged
XMLProperty * property(const char *)
Gtk::TreeModelColumn< std::vector< Member >::iterator > _iterator
Gtk::Widget * list_view()
std::string get_state_value() const
boost::function< boost::optional< bool >)> override
Gtk::TreeModelColumn< bool > _visible
void add(Gtk::Widget *, std::string const &, std::string const &, bool visible=false, boost::function< boost::optional< bool >()>=0)
Glib::RefPtr< Gtk::ListStore > _model
void list_view_visible_changed(std::string const &)
ModelColumns _model_columns
VisibilityGroup(std::string const &)
void toggle(std::vector< Member >::iterator)
std::string get_state_name() const