Re: Glib::Object how can I register properties, types... in the Gobject type system?



Sure, below I have pasted a sample.cc program that demonstrates the relevant GObject concepts, implemented with C++ and Gtkmm/Glibmm/Sigc.

Compile with:

g++ `pkg-config --cflags --libs gtkmm-2.4` -o sample sample.cc

===== sample.c =====
#include <iostream>
#include <gtkmm.h>

using namespace std;

class Sample : public ::Glib::Object
{
  public:
    // Construction
    Sample () :
      ::Glib::ObjectBase (typeid (Sample)), // inform GObject of your type
      m_propertyWeight (*this, "sample-weight"),
      m_signalPropertyWeight (this, "sample-weight")
    {
      // Connect sample-weight change signal to our handler
      m_signalPropertyWeight.connect (
       ::sigc::mem_fun (this, &Sample::onPropertyWeight));
    }

    virtual ~Sample () {}

  public:
     // Property "sample-weight" is an int
     ::Glib::PropertyProxy<int> propertyWeight (void)
     {
       return ::Glib::PropertyProxy<int> (this, "sample-weight");
     }

  protected:
     void onPropertyWeight (void)
     {
       // display something when property changes
       cout << "property weight changed to " << propertyWeight () << endl;
     }

  private:
    // property weight
    ::Glib::Property<int> m_propertyWeight;

    // signal to inform you of changes to property weight
    ::Glib::SignalProxyProperty m_signalPropertyWeight;
};

int main (int argc, char* argv[])
{
  // most importantly in this example, this step initializes the gobject type system.
  ::Gtk::Main (argc, argv);

  Sample s;

  for (int i=1; i<10; i++)
  {
    s.propertyWeight () = i;
  }
}


On Mon, Dec 8, 2008 at 7:21 AM, Germán Diago <germandiago gmail com> wrote:
Hello. I'm looking at the gtkmm documentation. I would like to know if
it's possible to register signals, GType and properties for types from the
c++ bindings, or if I need to use c directly to do it. I'm new to GObject, so
I don't know very well what I'm doing. What I would like to do is to
get introspection
capabilities at least for signals, types and properties, and I would like them
to be registered in the Gobject type system. Thanks in advance.
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]