1 /* 2 * Copyright (C) 2009-2015 Paul Davis <paul@linuxaudiosystems.com> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License along 15 * with this program; if not, write to the Free Software Foundation, Inc., 16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 17 */ 18 19 #ifndef __gtkmm2ext_cell_renderer_pixbuf_toggle_h__ 20 #define __gtkmm2ext_cell_renderer_pixbuf_toggle_h__ 21 22 #include <gtkmm/drawingarea.h> 23 #include <gtkmm/adjustment.h> 24 #include <gtkmm/widget.h> 25 #include <gtkmm/cellrenderer.h> 26 #include <gdkmm.h> 27 28 #include "gtkmm2ext/visibility.h" 29 30 using namespace Gtk; 31 32 namespace Gtkmm2ext { 33 34 class LIBGTKMM2EXT_API CellRendererPixbufToggle : public Gtk::CellRenderer 35 { 36 public: 37 38 CellRendererPixbufToggle(); ~CellRendererPixbufToggle()39 virtual ~CellRendererPixbufToggle(){}; 40 41 virtual void render_vfunc (const Glib::RefPtr<Gdk::Drawable>& window, Gtk::Widget& widget, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, const Gdk::Rectangle& expose_area, Gtk::CellRendererState flags); 42 43 virtual void get_size_vfunc (Gtk::Widget& widget, const Gdk::Rectangle* cell_area, int* x_offset, int* y_offset, int* width, int* height) const; 44 45 virtual bool activate_vfunc(GdkEvent*, Gtk::Widget&, const Glib::ustring& path, const Gdk::Rectangle&, const Gdk::Rectangle&, Gtk::CellRendererState); 46 47 Glib::PropertyProxy_Base _property_renderable(); 48 49 Glib::PropertyProxy< Glib::RefPtr<Gdk::Pixbuf> > property_pixbuf(); 50 Glib::PropertyProxy<bool> property_active(); 51 52 void set_active_pixbuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf); 53 void set_inactive_pixbuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf); 54 55 typedef sigc::signal<void, const Glib::ustring&> SignalToggled; 56 57 SignalToggled& signal_toggled(); 58 59 protected: 60 61 private: 62 Glib::Property< Glib::RefPtr<Gdk::Pixbuf> > property_pixbuf_; 63 Glib::Property<bool> property_active_; 64 65 Glib::RefPtr<Gdk::Pixbuf> active_pixbuf; 66 Glib::RefPtr<Gdk::Pixbuf> inactive_pixbuf; 67 68 //void on_cell_toggled(const Glib::ustring& path_string); 69 70 SignalToggled signal_toggled_; 71 }; 72 73 } // namespace 74 75 #endif /* __gtkmm2ext_cell_renderer_pixbuf_toggle_h__ */ 76