diff options
author | José Alburquerque <jaalburquerque@gmail.com> | 2014-06-10 10:12:54 +0200 |
---|---|---|
committer | Kjell Ahlstedt <kjell.ahlstedt@bredband.net> | 2014-06-10 10:12:54 +0200 |
commit | 99d79453da0630cf2eb205658bdeef0131b1026f (patch) | |
tree | e703ac10806ab68066bc60815b95a3cfc288d26f | |
parent | 3103d0c58463f07c5950acb3796dc06db3bd3e1d (diff) | |
download | glibmm-99d79453da0630cf2eb205658bdeef0131b1026f.tar.gz |
tests/glibmm_interface_implementation: Use the new base class order
* tests/glibmm_interface_implementation/main.cc: Interface before
Glib::Object in the list of base classes. Test a custom property and
an interface with properties.
This patch is almost identical to the attachment in bug 697229 comment 14.
-rw-r--r-- | tests/glibmm_interface_implementation/main.cc | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/tests/glibmm_interface_implementation/main.cc b/tests/glibmm_interface_implementation/main.cc index dfbb7169..bc8253b1 100644 --- a/tests/glibmm_interface_implementation/main.cc +++ b/tests/glibmm_interface_implementation/main.cc @@ -2,30 +2,34 @@ #include <giomm.h> //There are no Interfaces in glibmm, but there are in giomm. #include <iostream> -//TODO: I also tried Glib::Action, but that needs us to implement interface properties. murrayc -class CustomConverter : - public Glib::Object, - public Gio::Converter +class CustomAction : + public Gio::Action, + public Glib::Object { public: - CustomConverter(); + CustomAction(); + + // A custom property. + Glib::Property<Glib::ustring> property; protected: //Implement a vfunc: - virtual void reset_vfunc(); + virtual Glib::ustring get_name_vfunc() const; }; -CustomConverter::CustomConverter() -: Glib::ObjectBase( typeid(CustomConverter) ), - Glib::Object() +CustomAction::CustomAction() +: Glib::ObjectBase( typeid(CustomAction) ), + Glib::Object(), + property(*this, "custom_property", "Initial value.") { } -static bool reset_called = false; +static bool get_name_called = false; -void CustomConverter::reset_vfunc() +Glib::ustring CustomAction::get_name_vfunc() const { - reset_called = true; + get_name_called = true; + return "custom-name"; } @@ -33,9 +37,28 @@ int main(int, char**) { Glib::init(); - CustomConverter converter; - converter.reset(); - g_assert(reset_called); + CustomAction action; + Glib::ustring name = action.get_name(); + std::cout << "The name is '" << name << "'." << std::endl; + std::cout << "The name property of the implemented interface is '" + << action.property_name().get_value() << "'." << std::endl; + std::cout << "The custom string property is '" + << action.property.get_value() << "'." << std::endl; + + action.property = "A new value."; + std::cout << "The custom string property (after changing it) is '" + << action.property.get_value() << "'." << std::endl; + + gchar* prop_value = 0; + g_object_set(action.gobj(), "custom_property", "Another value", NULL); + g_object_get(action.gobj(), "custom_property", &prop_value, NULL); + std::cout << "The custom property after g_object_get/set() is '" + << prop_value << "'." << std::endl; + std::cout << "The custom property through the Glib::Property<> is '" + << action.property.get_value() << "'." << std::endl; + std::cout << "The name property of the implemented interface is '" + << action.property_name().get_value() << "'." << std::endl; + g_assert(get_name_called); return EXIT_SUCCESS; } |