X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcanvas-flag.cc;h=30299641ede5eecbf156ac72b303f651c5d2d47d;hb=e12432cc632125821d6ed192d129ef385fb25002;hp=a4eee41227f5d17e4be195a0bc51f8976fbe8ca5;hpb=f03a87a132feb525a743de675d0439e981ab329a;p=ardour.git diff --git a/gtk2_ardour/canvas-flag.cc b/gtk2_ardour/canvas-flag.cc index a4eee41227..30299641ed 100644 --- a/gtk2_ardour/canvas-flag.cc +++ b/gtk2_ardour/canvas-flag.cc @@ -5,32 +5,45 @@ using namespace Gnome::Canvas; using namespace std; +CanvasFlag::CanvasFlag (MidiRegionView& region, + Group& parent, + double height, + guint outline_color_rgba, + guint fill_color_rgba, + double x, + double y) + : Group(parent, x, y) + , _text(0) + , _height(height) + , _outline_color_rgba(outline_color_rgba) + , _fill_color_rgba(fill_color_rgba) + , _region(region) + , _line(0) + , _rect(0) +{ + /* XXX this connection is needed if ::on_event() is changed to actually do anything */ + signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event)); +} -void +void CanvasFlag::delete_allocated_objects() { - if (_text) { - delete _text; - _text = 0; - } - - if (_line) { - delete _line; - _line = 0; - } - - if (_rect) { - delete _rect; - _rect = 0; - } + delete _text; + _text = 0; + + delete _line; + _line = 0; + + delete _rect; + _rect = 0; } -void -CanvasFlag::set_text(string& a_text) +void +CanvasFlag::set_text(const string& a_text) { delete_allocated_objects(); - - _text = new CanvasFlagText(*this, 0.0, 0.0, Glib::ustring(a_text)); + + _text = new Text (*this, 0.0, 0.0, a_text); _text->property_justification() = Gtk::JUSTIFY_CENTER; _text->property_fill_color_rgba() = _outline_color_rgba; double flagwidth = _text->property_text_width() + 10.0; @@ -40,11 +53,14 @@ CanvasFlag::set_text(string& a_text) _text->show(); _line = new SimpleLine(*this, 0.0, 0.0, 0.0, _height); _line->property_color_rgba() = _outline_color_rgba; - _rect = new CanvasFlagRect(*this, 0.0, 0.0, flagwidth, flagheight); + _rect = new SimpleRect(*this, 0.0, 0.0, flagwidth, flagheight); _rect->property_outline_color_rgba() = _outline_color_rgba; _rect->property_fill_color_rgba() = _fill_color_rgba; - _text->lower_to_bottom(); - _text->raise(2); + _text->raise_to_top(); + + /* XXX these two connections are needed if ::on_event() is changed to actually do anything */ + //_rect->signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event)); + //_text->signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event)); } CanvasFlag::~CanvasFlag() @@ -53,8 +69,20 @@ CanvasFlag::~CanvasFlag() } bool -CanvasFlag::on_event(GdkEvent* ev) +CanvasFlag::on_event(GdkEvent* /*ev*/) { - cerr << "CanvasFlag::on_event(GdkEvent* ev)" << endl; + /* XXX if you change this function to actually do anything, be sure + to fix the connections commented out elsewhere in this file. + */ return false; } + +void +CanvasFlag::set_height (double h) +{ + _height = h; + + if (_line) { + _line->property_y2() = _height; + } +}