// Generated by gmmproc 2.82.0 -- DO NOT MODIFY! #ifndef _GTKMM_RANGE_H #define _GTKMM_RANGE_H #include #include /* Copyright (C) 1998-2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include //For SensitivityType. #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS using GtkRange = struct _GtkRange; using GtkRangeClass = struct _GtkRangeClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API Range_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API Adjustment; //TODO: Derive from (and implement) AccessibleRange when we can break ABI. /** Base class for widgets which visualize an adjustment. * * @ingroup Widgets */ class GTKMM_API Range : public Widget, public Orientable { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef Range CppObjectType; typedef Range_Class CppClassType; typedef GtkRange BaseObjectType; typedef GtkRangeClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ Range(Range&& src) noexcept; Range& operator=(Range&& src) noexcept; // noncopyable Range(const Range&) = delete; Range& operator=(const Range&) = delete; ~Range() noexcept override; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend GTKMM_API class Range_Class; static CppClassType range_class_; protected: explicit Range(const Glib::ConstructParams& construct_params); explicit Range(GtkRange* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: /** Get the GType for this class, for use with the underlying GObject type system. */ static GType get_type() G_GNUC_CONST; #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_base_type() G_GNUC_CONST; #endif /// Provides access to the underlying C GObject. GtkRange* gobj() { return reinterpret_cast(gobject_); } /// Provides access to the underlying C GObject. const GtkRange* gobj() const { return reinterpret_cast(gobject_); } private: protected: Range(); public: /** Sets the adjustment to be used as the “model” object for the `Gtk::Range` * * The adjustment indicates the current range value, the minimum and * maximum range values, the step/page increments used for keybindings * and scrolling, and the page size. * * The page size is normally 0 for `Gtk::Scale` and nonzero for `Gtk::Scrollbar`, * and indicates the size of the visible area of the widget being scrolled. * The page size affects the size of the scrollbar slider. * * @param adjustment A `Gtk::Adjustment`. */ void set_adjustment(const Glib::RefPtr& adjustment); void unset_adjustment(); /** Get the adjustment which is the “model” object for `Gtk::Range`. * * @return A `Gtk::Adjustment`. */ Glib::RefPtr get_adjustment(); /** Get the adjustment which is the “model” object for `Gtk::Range`. * * @return A `Gtk::Adjustment`. */ Glib::RefPtr get_adjustment() const; /** Sets whether to invert the range. * * Ranges normally move from lower to higher values as the * slider moves from top to bottom or left to right. Inverted * ranges have higher values at the top or on the right rather * than on the bottom or left. * * @param setting true to invert the range. */ void set_inverted(bool setting = true); /** Gets whether the range is inverted. * * See set_inverted(). * * @return true if the range is inverted. */ bool get_inverted() const; /** Sets whether the `Gtk::Range` respects text direction. * * If a range is flippable, it will switch its direction * if it is horizontal and its direction is Gtk::TextDirection::RTL. * * See Gtk::Widget::get_direction(). * * @param flippable true to make the range flippable. */ void set_flippable(bool flippable = true); /** Gets whether the `Gtk::Range` respects text direction. * * See set_flippable(). * * @return true if the range is flippable. */ bool get_flippable() const; /** Sets whether the range’s slider has a fixed size, or a size that * depends on its adjustment’s page size. * * This function is useful mainly for `Gtk::Range` subclasses. * * @param size_fixed true to make the slider size constant. */ void set_slider_size_fixed(bool size_fixed = true); /** This function is useful mainly for `Gtk::Range` subclasses. * * See set_slider_size_fixed(). * * @return Whether the range’s slider has a fixed size. */ bool get_slider_size_fixed() const; /** This method returns the area that contains the range's trough * and its steppers, in the widget's Gdk::Surface coordinates. * * This method is useful mainly for Range subclasses. * * @result The range rectangle. * * @@newin{2,20} */ Gdk::Rectangle get_range_rect() const; /** This function returns sliders range along the long dimension, * in widget->window coordinates. * * This function is useful mainly for `Gtk::Range` subclasses. * * @param slider_start Return location for the slider's start. * @param slider_end Return location for the slider's end. */ void get_slider_range(int& slider_start, int& slider_end) const; /** Sets the step and page sizes for the range. * * The step size is used when the user clicks the `Gtk::Scrollbar` * arrows or moves a `Gtk::Scale` via arrow keys. The page size * is used for example when moving via Page Up or Page Down keys. * * @param step Step size. * @param page Page size. */ void set_increments(double step, double page); /** Sets the allowable values in the `Gtk::Range`. * * The range value is clamped to be between @a min and @a max. * (If the range has a non-zero page size, it is clamped * between @a min and @a max - page-size.) * * @param min Minimum range value. * @param max Maximum range value. */ void set_range(double min, double max); /** Sets the current value of the range. * * If the value is outside the minimum or maximum range values, * it will be clamped to fit inside them. The range emits the * signal_value_changed() signal if the value changes. * * @param value New value of the range. */ void set_value(double value); /** Gets the current value of the range. * * @return Current value of the range. */ double get_value() const; /** Sets whether a graphical fill level is show on the trough. * * See set_fill_level() for a general description * of the fill level concept. * * @param show_fill_level Whether a fill level indicator graphics is shown. */ void set_show_fill_level(bool show_fill_level = true); /** Gets whether the range displays the fill level graphically. * * @return true if @a range shows the fill level. */ bool get_show_fill_level() const; /** Sets whether the slider is restricted to the fill level. * * See set_fill_level() for a general description * of the fill level concept. * * @param restrict_to_fill_level Whether the fill level restricts slider movement. */ void set_restrict_to_fill_level(bool restrict_to_fill_level = true); /** Gets whether the range is restricted to the fill level. * * @return true if @a range is restricted to the fill level. */ bool get_restrict_to_fill_level() const; /** Set the new position of the fill level indicator. * * The “fill level” is probably best described by its most prominent * use case, which is an indicator for the amount of pre-buffering in * a streaming media player. In that use case, the value of the range * would indicate the current play position, and the fill level would * be the position up to which the file/stream has been downloaded. * * This amount of prebuffering can be displayed on the range’s trough * and is themeable separately from the trough. To enable fill level * display, use set_show_fill_level(). The range defaults * to not showing the fill level. * * Additionally, it’s possible to restrict the range’s slider position * to values which are smaller than the fill level. This is controlled * by set_restrict_to_fill_level() and is by default * enabled. * * @param fill_level The new position of the fill level indicator. */ void set_fill_level(double fill_level); /** Gets the current position of the fill level indicator. * * @return The current fill level. */ double get_fill_level() const; /** Sets the number of digits to round the value to when * it changes. * * See signal_change_value(). * * @param round_digits The precision in digits, or -1. */ void set_round_digits(int round_digits); /** Gets the number of digits to round the value to when * it changes. * * See signal_change_value(). * * @return The number of digits to round to. */ int get_round_digits() const; /** * @par Slot Prototype: * void on_my_%value_changed() * * Flags: Run Last * * Emitted when the range value changes. */ Glib::SignalProxy signal_value_changed(); /** * @par Slot Prototype: * void on_my_%adjust_bounds(double new_value) * * Flags: Run Last * * Emitted before clamping a value, to give the application a * chance to adjust the bounds. * * @param new_value The value before we clamp. */ Glib::SignalProxy signal_adjust_bounds(); /** * @par Slot Prototype: * void on_my_%move_slider(ScrollType scroll) * * Flags: Run Last, Action * * Virtual function that moves the slider. * * Used for keybindings. * * @param scroll How to move the slider. */ Glib::SignalProxy signal_move_slider(); /** * @par Slot Prototype: * bool on_my_%change_value(ScrollType scroll, double new_value) * * Flags: Run Last * * Emitted when a scroll action is performed on a range. * * It allows an application to determine the type of scroll event * that occurred and the resultant new value. The application can * handle the event itself and return true to prevent further * processing. Or, by returning false, it can pass the event to * other handlers until the default GTK handler is reached. * * The value parameter is unrounded. An application that overrides * the signal_change_value() signal is responsible for clamping the value * to the desired number of decimal digits; the default GTK * handler clamps the value based on property_round_digits(). * * @param scroll The type of scroll action that was performed. * @param new_value The new value resulting from the scroll action. * @return true to prevent other handlers from being invoked for * the signal, false to propagate the signal further. */ Glib::SignalProxy signal_change_value(); /** The adjustment that is controlled by the range. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_adjustment() ; /** The adjustment that is controlled by the range. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_adjustment() const; /** If true, the direction in which the slider moves is inverted. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_inverted() ; /** If true, the direction in which the slider moves is inverted. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_inverted() const; /** Controls whether fill level indicator graphics are displayed * on the trough. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_show_fill_level() ; /** Controls whether fill level indicator graphics are displayed * on the trough. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_show_fill_level() const; /** Controls whether slider movement is restricted to an * upper boundary set by the fill level. * * Default value: true * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_restrict_to_fill_level() ; /** Controls whether slider movement is restricted to an * upper boundary set by the fill level. * * Default value: true * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_restrict_to_fill_level() const; /** The fill level (e.g.\ prebuffering of a network stream). * * Default value: 1.79769e+308 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< double > property_fill_level() ; /** The fill level (e.g.\ prebuffering of a network stream). * * Default value: 1.79769e+308 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< double > property_fill_level() const; /** The number of digits to round the value to when * it changes. * * See signal_change_value(). * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< int > property_round_digits() ; /** The number of digits to round the value to when * it changes. * * See signal_change_value(). * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_round_digits() const; protected: virtual void get_range_border_vfunc(Gtk::Border& border) const; public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: /// This is a default handler for the signal signal_value_changed(). virtual void on_value_changed(); /// This is a default handler for the signal signal_adjust_bounds(). virtual void on_adjust_bounds(double new_value); /// This is a default handler for the signal signal_move_slider(). virtual void on_move_slider(ScrollType scroll); /// This is a default handler for the signal signal_change_value(). virtual bool on_change_value(ScrollType scroll, double new_value); }; } // namespace Gtk namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gtk::Range */ GTKMM_API Gtk::Range* wrap(GtkRange* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_RANGE_H */