1 // Generated by gtkmmproc -- DO NOT MODIFY!
4 #include <gtkmm/spinbutton.h>
5 #include <gtkmm/private/spinbutton_p.h>
7 #include <gtk/gtktypebuiltins.h>
11 /* Copyright 1998-2002 The gtkmm Development Team
13 * This library is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU Library General Public
15 * License as published by the Free Software Foundation; either
16 * version 2 of the License, or (at your option) any later version.
18 * This library is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * Library General Public License for more details.
23 * You should have received a copy of the GNU Library General Public
24 * License along with this library; if not, write to the Free
25 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #include <gtkmm/adjustment.h>
29 #include <gtk/gtkspinbutton.h>
34 SpinButton::SpinButton(double climb_rate, guint digits)
36 // Mark this class as non-derived to allow C++ vfuncs to be skipped.
38 Gtk::Entry(Glib::ConstructParams(spinbutton_class_.init(), "climb_rate",climb_rate,"digits",digits, static_cast<char*>(0)))
41 void SpinButton::unset_adjustment()
43 gtk_spin_button_set_adjustment(gobj(), 0);
53 static gint SpinButton_signal_input_callback(GtkSpinButton* self, gdouble* p0,void* data)
56 typedef sigc::slot< int,double* > SlotType;
58 // Do not try to call a signal on a disassociated wrapper.
59 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
61 #ifdef GLIBMM_EXCEPTIONS_ENABLED
64 #endif //GLIBMM_EXCEPTIONS_ENABLED
65 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
66 return (*static_cast<SlotType*>(slot))(p0
68 #ifdef GLIBMM_EXCEPTIONS_ENABLED
72 Glib::exception_handlers_invoke();
74 #endif //GLIBMM_EXCEPTIONS_ENABLED
81 static gint SpinButton_signal_input_notify_callback(GtkSpinButton* self, gdouble* p0, void* data)
84 typedef sigc::slot< void,double* > SlotType;
86 // Do not try to call a signal on a disassociated wrapper.
87 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
89 #ifdef GLIBMM_EXCEPTIONS_ENABLED
92 #endif //GLIBMM_EXCEPTIONS_ENABLED
93 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
94 (*static_cast<SlotType*>(slot))(p0
96 #ifdef GLIBMM_EXCEPTIONS_ENABLED
100 Glib::exception_handlers_invoke();
102 #endif //GLIBMM_EXCEPTIONS_ENABLED
109 static const Glib::SignalProxyInfo SpinButton_signal_input_info =
112 (GCallback) &SpinButton_signal_input_callback,
113 (GCallback) &SpinButton_signal_input_notify_callback
117 static gboolean SpinButton_signal_output_callback(GtkSpinButton* self, void* data)
120 typedef sigc::slot< bool > SlotType;
122 // Do not try to call a signal on a disassociated wrapper.
123 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
125 #ifdef GLIBMM_EXCEPTIONS_ENABLED
128 #endif //GLIBMM_EXCEPTIONS_ENABLED
129 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
130 return static_cast<int>((*static_cast<SlotType*>(slot))());
131 #ifdef GLIBMM_EXCEPTIONS_ENABLED
135 Glib::exception_handlers_invoke();
137 #endif //GLIBMM_EXCEPTIONS_ENABLED
140 typedef gboolean RType;
144 static gboolean SpinButton_signal_output_notify_callback(GtkSpinButton* self, void* data)
147 typedef sigc::slot< void > SlotType;
149 // Do not try to call a signal on a disassociated wrapper.
150 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
152 #ifdef GLIBMM_EXCEPTIONS_ENABLED
155 #endif //GLIBMM_EXCEPTIONS_ENABLED
156 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
157 (*static_cast<SlotType*>(slot))();
158 #ifdef GLIBMM_EXCEPTIONS_ENABLED
162 Glib::exception_handlers_invoke();
164 #endif //GLIBMM_EXCEPTIONS_ENABLED
167 typedef gboolean RType;
171 static const Glib::SignalProxyInfo SpinButton_signal_output_info =
174 (GCallback) &SpinButton_signal_output_callback,
175 (GCallback) &SpinButton_signal_output_notify_callback
179 static void SpinButton_signal_wrapped_callback(GtkSpinButton* self, void* data)
182 typedef sigc::slot< bool > SlotType;
184 // Do not try to call a signal on a disassociated wrapper.
185 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
187 #ifdef GLIBMM_EXCEPTIONS_ENABLED
190 #endif //GLIBMM_EXCEPTIONS_ENABLED
191 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
192 (*static_cast<SlotType*>(slot))();
193 #ifdef GLIBMM_EXCEPTIONS_ENABLED
197 Glib::exception_handlers_invoke();
199 #endif //GLIBMM_EXCEPTIONS_ENABLED
203 static const Glib::SignalProxyInfo SpinButton_signal_wrapped_info =
206 (GCallback) &SpinButton_signal_wrapped_callback,
207 (GCallback) &SpinButton_signal_wrapped_callback
211 static const Glib::SignalProxyInfo SpinButton_signal_value_changed_info =
214 (GCallback) &Glib::SignalProxyNormal::slot0_void_callback,
215 (GCallback) &Glib::SignalProxyNormal::slot0_void_callback
219 } // anonymous namespace
222 GType Glib::Value<Gtk::SpinButtonUpdatePolicy>::value_type()
224 return gtk_spin_button_update_policy_get_type();
228 GType Glib::Value<Gtk::SpinType>::value_type()
230 return gtk_spin_type_get_type();
237 Gtk::SpinButton* wrap(GtkSpinButton* object, bool take_copy)
239 return dynamic_cast<Gtk::SpinButton *> (Glib::wrap_auto ((GObject*)(object), take_copy));
242 } /* namespace Glib */
248 /* The *_Class implementation: */
250 const Glib::Class& SpinButton_Class::init()
252 if(!gtype_) // create the GType if necessary
254 // Glib::Class has to know the class init function to clone custom types.
255 class_init_func_ = &SpinButton_Class::class_init_function;
257 // This is actually just optimized away, apparently with no harm.
258 // Make sure that the parent type has been created.
259 //CppClassParent::CppObjectType::get_type();
261 // Create the wrapper type, with the same class/instance size as the base type.
262 register_derived_type(gtk_spin_button_get_type());
264 // Add derived versions of interfaces, if the C type implements any interfaces:
265 Editable::add_interface(get_type());
271 void SpinButton_Class::class_init_function(void* g_class, void* class_data)
273 BaseClassType *const klass = static_cast<BaseClassType*>(g_class);
274 CppClassParent::class_init_function(klass, class_data);
276 #ifdef GLIBMM_VFUNCS_ENABLED
277 #endif //GLIBMM_VFUNCS_ENABLED
279 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
280 klass->input = &input_callback;
281 klass->output = &output_callback;
282 klass->value_changed = &value_changed_callback;
283 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
286 #ifdef GLIBMM_VFUNCS_ENABLED
287 #endif //GLIBMM_VFUNCS_ENABLED
289 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
290 gint SpinButton_Class::input_callback(GtkSpinButton* self, gdouble* p0)
292 Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
293 Glib::ObjectBase::_get_current_wrapper((GObject*)self));
295 // Non-gtkmmproc-generated custom classes implicitly call the default
296 // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
297 // generated classes can use this optimisation, which avoids the unnecessary
298 // parameter conversions if there is no possibility of the virtual function
300 if(obj_base && obj_base->is_derived_())
302 CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
303 if(obj) // This can be NULL during destruction.
305 #ifdef GLIBMM_EXCEPTIONS_ENABLED
306 try // Trap C++ exceptions which would normally be lost because this is a C callback.
308 #endif //GLIBMM_EXCEPTIONS_ENABLED
309 // Call the virtual member method, which derived classes might override.
310 return obj->on_input(p0
312 #ifdef GLIBMM_EXCEPTIONS_ENABLED
316 Glib::exception_handlers_invoke();
318 #endif //GLIBMM_EXCEPTIONS_ENABLED
322 BaseClassType *const base = static_cast<BaseClassType*>(
323 g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class).
326 // Call the original underlying C function:
327 if(base && base->input)
328 return (*base->input)(self, p0);
333 gboolean SpinButton_Class::output_callback(GtkSpinButton* self)
335 Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
336 Glib::ObjectBase::_get_current_wrapper((GObject*)self));
338 // Non-gtkmmproc-generated custom classes implicitly call the default
339 // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
340 // generated classes can use this optimisation, which avoids the unnecessary
341 // parameter conversions if there is no possibility of the virtual function
343 if(obj_base && obj_base->is_derived_())
345 CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
346 if(obj) // This can be NULL during destruction.
348 #ifdef GLIBMM_EXCEPTIONS_ENABLED
349 try // Trap C++ exceptions which would normally be lost because this is a C callback.
351 #endif //GLIBMM_EXCEPTIONS_ENABLED
352 // Call the virtual member method, which derived classes might override.
353 return static_cast<int>(obj->on_output());
354 #ifdef GLIBMM_EXCEPTIONS_ENABLED
358 Glib::exception_handlers_invoke();
360 #endif //GLIBMM_EXCEPTIONS_ENABLED
364 BaseClassType *const base = static_cast<BaseClassType*>(
365 g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class).
368 // Call the original underlying C function:
369 if(base && base->output)
370 return (*base->output)(self);
372 typedef gboolean RType;
375 void SpinButton_Class::value_changed_callback(GtkSpinButton* self)
377 Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
378 Glib::ObjectBase::_get_current_wrapper((GObject*)self));
380 // Non-gtkmmproc-generated custom classes implicitly call the default
381 // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
382 // generated classes can use this optimisation, which avoids the unnecessary
383 // parameter conversions if there is no possibility of the virtual function
385 if(obj_base && obj_base->is_derived_())
387 CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
388 if(obj) // This can be NULL during destruction.
390 #ifdef GLIBMM_EXCEPTIONS_ENABLED
391 try // Trap C++ exceptions which would normally be lost because this is a C callback.
393 #endif //GLIBMM_EXCEPTIONS_ENABLED
394 // Call the virtual member method, which derived classes might override.
395 obj->on_value_changed();
397 #ifdef GLIBMM_EXCEPTIONS_ENABLED
401 Glib::exception_handlers_invoke();
403 #endif //GLIBMM_EXCEPTIONS_ENABLED
407 BaseClassType *const base = static_cast<BaseClassType*>(
408 g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class).
411 // Call the original underlying C function:
412 if(base && base->value_changed)
413 (*base->value_changed)(self);
415 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
418 Glib::ObjectBase* SpinButton_Class::wrap_new(GObject* o)
420 return manage(new SpinButton((GtkSpinButton*)(o)));
425 /* The implementation: */
427 SpinButton::SpinButton(const Glib::ConstructParams& construct_params)
429 Gtk::Entry(construct_params)
433 SpinButton::SpinButton(GtkSpinButton* castitem)
435 Gtk::Entry((GtkEntry*)(castitem))
439 SpinButton::~SpinButton()
444 SpinButton::CppClassType SpinButton::spinbutton_class_; // initialize static member
446 GType SpinButton::get_type()
448 return spinbutton_class_.init().get_type();
451 GType SpinButton::get_base_type()
453 return gtk_spin_button_get_type();
457 SpinButton::SpinButton(Adjustment& adjustment, double climb_rate, guint digits)
459 // Mark this class as non-derived to allow C++ vfuncs to be skipped.
461 Gtk::Entry(Glib::ConstructParams(spinbutton_class_.init(), "adjustment", (adjustment).gobj(), "climb_rate", climb_rate, "digits", digits, static_cast<char*>(0)))
465 void SpinButton::configure(Adjustment& adjustment, double climb_rate, guint digits)
467 gtk_spin_button_configure(gobj(), (adjustment).gobj(), climb_rate, digits);
470 void SpinButton::set_adjustment(Adjustment& adjustment)
472 gtk_spin_button_set_adjustment(gobj(), (adjustment).gobj());
475 Gtk::Adjustment* SpinButton::get_adjustment()
477 return Glib::wrap(gtk_spin_button_get_adjustment(gobj()));
480 const Gtk::Adjustment* SpinButton::get_adjustment() const
482 return const_cast<SpinButton*>(this)->get_adjustment();
485 void SpinButton::set_digits(guint digits)
487 gtk_spin_button_set_digits(gobj(), digits);
490 guint SpinButton::get_digits() const
492 return gtk_spin_button_get_digits(const_cast<GtkSpinButton*>(gobj()));
495 void SpinButton::set_increments(double step, double page)
497 gtk_spin_button_set_increments(gobj(), step, page);
500 void SpinButton::get_increments(double& step, double& page) const
502 gtk_spin_button_get_increments(const_cast<GtkSpinButton*>(gobj()), &(step), &(page));
505 void SpinButton::set_range(double min, double max)
507 gtk_spin_button_set_range(gobj(), min, max);
510 void SpinButton::get_range(double& min, double& max) const
512 gtk_spin_button_get_range(const_cast<GtkSpinButton*>(gobj()), &(min), &(max));
515 double SpinButton::get_value() const
517 return gtk_spin_button_get_value(const_cast<GtkSpinButton*>(gobj()));
520 int SpinButton::get_value_as_int() const
522 return gtk_spin_button_get_value_as_int(const_cast<GtkSpinButton*>(gobj()));
525 void SpinButton::set_value(double value)
527 gtk_spin_button_set_value(gobj(), value);
530 void SpinButton::set_update_policy(SpinButtonUpdatePolicy policy)
532 gtk_spin_button_set_update_policy(gobj(), ((GtkSpinButtonUpdatePolicy)(policy)));
535 SpinButtonUpdatePolicy SpinButton::get_update_policy() const
537 return ((SpinButtonUpdatePolicy)(gtk_spin_button_get_update_policy(const_cast<GtkSpinButton*>(gobj()))));
540 void SpinButton::set_numeric(bool numeric)
542 gtk_spin_button_set_numeric(gobj(), static_cast<int>(numeric));
545 bool SpinButton::get_numeric() const
547 return gtk_spin_button_get_numeric(const_cast<GtkSpinButton*>(gobj()));
550 void SpinButton::spin(SpinType direction, double increment)
552 gtk_spin_button_spin(gobj(), ((GtkSpinType)(direction)), increment);
555 void SpinButton::set_wrap(bool wrap)
557 gtk_spin_button_set_wrap(gobj(), static_cast<int>(wrap));
560 bool SpinButton::get_wrap() const
562 return gtk_spin_button_get_wrap(const_cast<GtkSpinButton*>(gobj()));
565 void SpinButton::set_snap_to_ticks(bool snap_to_ticks)
567 gtk_spin_button_set_snap_to_ticks(gobj(), static_cast<int>(snap_to_ticks));
570 bool SpinButton::get_snap_to_ticks() const
572 return gtk_spin_button_get_snap_to_ticks(const_cast<GtkSpinButton*>(gobj()));
575 void SpinButton::update()
577 gtk_spin_button_update(gobj());
581 Glib::SignalProxy1< int,double* > SpinButton::signal_input()
583 return Glib::SignalProxy1< int,double* >(this, &SpinButton_signal_input_info);
587 Glib::SignalProxy0< bool > SpinButton::signal_output()
589 return Glib::SignalProxy0< bool >(this, &SpinButton_signal_output_info);
593 Glib::SignalProxy0< bool > SpinButton::signal_wrapped()
595 return Glib::SignalProxy0< bool >(this, &SpinButton_signal_wrapped_info);
599 Glib::SignalProxy0< void > SpinButton::signal_value_changed()
601 return Glib::SignalProxy0< void >(this, &SpinButton_signal_value_changed_info);
605 #ifdef GLIBMM_PROPERTIES_ENABLED
606 Glib::PropertyProxy<Gtk::Adjustment*> SpinButton::property_adjustment()
608 return Glib::PropertyProxy<Gtk::Adjustment*>(this, "adjustment");
610 #endif //GLIBMM_PROPERTIES_ENABLED
612 #ifdef GLIBMM_PROPERTIES_ENABLED
613 Glib::PropertyProxy_ReadOnly<Gtk::Adjustment*> SpinButton::property_adjustment() const
615 return Glib::PropertyProxy_ReadOnly<Gtk::Adjustment*>(this, "adjustment");
617 #endif //GLIBMM_PROPERTIES_ENABLED
619 #ifdef GLIBMM_PROPERTIES_ENABLED
620 Glib::PropertyProxy<double> SpinButton::property_climb_rate()
622 return Glib::PropertyProxy<double>(this, "climb-rate");
624 #endif //GLIBMM_PROPERTIES_ENABLED
626 #ifdef GLIBMM_PROPERTIES_ENABLED
627 Glib::PropertyProxy_ReadOnly<double> SpinButton::property_climb_rate() const
629 return Glib::PropertyProxy_ReadOnly<double>(this, "climb-rate");
631 #endif //GLIBMM_PROPERTIES_ENABLED
633 #ifdef GLIBMM_PROPERTIES_ENABLED
634 Glib::PropertyProxy<guint> SpinButton::property_digits()
636 return Glib::PropertyProxy<guint>(this, "digits");
638 #endif //GLIBMM_PROPERTIES_ENABLED
640 #ifdef GLIBMM_PROPERTIES_ENABLED
641 Glib::PropertyProxy_ReadOnly<guint> SpinButton::property_digits() const
643 return Glib::PropertyProxy_ReadOnly<guint>(this, "digits");
645 #endif //GLIBMM_PROPERTIES_ENABLED
647 #ifdef GLIBMM_PROPERTIES_ENABLED
648 Glib::PropertyProxy<bool> SpinButton::property_snap_to_ticks()
650 return Glib::PropertyProxy<bool>(this, "snap-to-ticks");
652 #endif //GLIBMM_PROPERTIES_ENABLED
654 #ifdef GLIBMM_PROPERTIES_ENABLED
655 Glib::PropertyProxy_ReadOnly<bool> SpinButton::property_snap_to_ticks() const
657 return Glib::PropertyProxy_ReadOnly<bool>(this, "snap-to-ticks");
659 #endif //GLIBMM_PROPERTIES_ENABLED
661 #ifdef GLIBMM_PROPERTIES_ENABLED
662 Glib::PropertyProxy<bool> SpinButton::property_numeric()
664 return Glib::PropertyProxy<bool>(this, "numeric");
666 #endif //GLIBMM_PROPERTIES_ENABLED
668 #ifdef GLIBMM_PROPERTIES_ENABLED
669 Glib::PropertyProxy_ReadOnly<bool> SpinButton::property_numeric() const
671 return Glib::PropertyProxy_ReadOnly<bool>(this, "numeric");
673 #endif //GLIBMM_PROPERTIES_ENABLED
675 #ifdef GLIBMM_PROPERTIES_ENABLED
676 Glib::PropertyProxy<bool> SpinButton::property_wrap()
678 return Glib::PropertyProxy<bool>(this, "wrap");
680 #endif //GLIBMM_PROPERTIES_ENABLED
682 #ifdef GLIBMM_PROPERTIES_ENABLED
683 Glib::PropertyProxy_ReadOnly<bool> SpinButton::property_wrap() const
685 return Glib::PropertyProxy_ReadOnly<bool>(this, "wrap");
687 #endif //GLIBMM_PROPERTIES_ENABLED
689 #ifdef GLIBMM_PROPERTIES_ENABLED
690 Glib::PropertyProxy<SpinButtonUpdatePolicy> SpinButton::property_update_policy()
692 return Glib::PropertyProxy<SpinButtonUpdatePolicy>(this, "update-policy");
694 #endif //GLIBMM_PROPERTIES_ENABLED
696 #ifdef GLIBMM_PROPERTIES_ENABLED
697 Glib::PropertyProxy_ReadOnly<SpinButtonUpdatePolicy> SpinButton::property_update_policy() const
699 return Glib::PropertyProxy_ReadOnly<SpinButtonUpdatePolicy>(this, "update-policy");
701 #endif //GLIBMM_PROPERTIES_ENABLED
703 #ifdef GLIBMM_PROPERTIES_ENABLED
704 Glib::PropertyProxy<double> SpinButton::property_value()
706 return Glib::PropertyProxy<double>(this, "value");
708 #endif //GLIBMM_PROPERTIES_ENABLED
710 #ifdef GLIBMM_PROPERTIES_ENABLED
711 Glib::PropertyProxy_ReadOnly<double> SpinButton::property_value() const
713 return Glib::PropertyProxy_ReadOnly<double>(this, "value");
715 #endif //GLIBMM_PROPERTIES_ENABLED
718 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
719 int Gtk::SpinButton::on_input(double* new_value)
721 BaseClassType *const base = static_cast<BaseClassType*>(
722 g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class).
725 if(base && base->input)
726 return (*base->input)(gobj(),new_value);
731 bool Gtk::SpinButton::on_output()
733 BaseClassType *const base = static_cast<BaseClassType*>(
734 g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class).
737 if(base && base->output)
738 return (*base->output)(gobj());
743 void Gtk::SpinButton::on_value_changed()
745 BaseClassType *const base = static_cast<BaseClassType*>(
746 g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class).
749 if(base && base->value_changed)
750 (*base->value_changed)(gobj());
752 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
754 #ifdef GLIBMM_VFUNCS_ENABLED
755 #endif //GLIBMM_VFUNCS_ENABLED