| Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte | 
|---|---|
| License | LGPL-2.1 | 
| Maintainer | Iñaki García Etxebarria | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
GI.Atk.Interfaces.Value
Description
Value should be implemented for components which either display
 a value from a bounded range, or which allow the user to specify a
 value from a bounded range, or both. For instance, most sliders and
 range controls, as well as dials, should have Object
 representations which implement Value on the component's
 behalf. AtKValues may be read-only, in which case attempts to
 alter the value return would fail.
<refsect1 id="current-value-text"> <title>On the subject of current value text</title> <para> In addition to providing the current value, implementors can optionally provide an end-user-consumable textual description associated with this value. This description should be included when the numeric value fails to convey the full, on-screen representation seen by users. </para>
<example> <title>Password strength</title> A password strength meter whose value changes as the user types their new password. Red is used for values less than 4.0, yellow for values between 4.0 and 7.0, and green for values greater than 7.0. In this instance, value text should be provided by the implementor. Appropriate value text would be "weak", "acceptable," and "strong" respectively. </example>
A level bar whose value changes to reflect the battery charge. The color remains the same regardless of the charge and there is no on-screen text reflecting the fullness of the battery. In this case, because the position within the bar is the only indication the user has of the current charge, value text should not be provided by the implementor.
<refsect2 id="implementor-notes"> <title>Implementor Notes</title> <para> Implementors should bear in mind that assistive technologies will likely prefer the value text provided over the numeric value when presenting a widget's value. As a result, strings not intended for end users should not be exposed in the value text, and strings which are exposed should be localized. In the case of widgets which display value text on screen, for instance through a separate label in close proximity to the value-displaying widget, it is still expected that implementors will expose the value text using the above API. </para>
<para>
 Value should NOT be implemented for widgets whose displayed
 value is not reflective of a meaningful amount. For instance, a
 progress pulse indicator whose value alternates between 0.0 and 1.0
 to indicate that some process is still taking place should not
 implement Value because the current value does not reflect
 progress towards completion.
 </para>
 </refsect2>
 </refsect1>
<refsect1 id="ranges"> <title>On the subject of ranges</title> <para> In addition to providing the minimum and maximum values, implementors can optionally provide details about subranges associated with the widget. These details should be provided by the implementor when both of the following are communicated visually to the end user: </para> <itemizedlist> <listitem>The existence of distinct ranges such as "weak", "acceptable", and "strong" indicated by color, bar tick marks, and/or on-screen text.</listitem> <listitem>Where the current value stands within a given subrange, for instance illustrating progression from very "weak" towards nearly "acceptable" through changes in shade and/or position on the bar within the "weak" subrange.</listitem> </itemizedlist> <para> If both of the above do not apply to the widget, it should be sufficient to expose the numeric value, along with the value text if appropriate, to make the widget accessible. </para>
<refsect2 id="ranges-implementor-notes"> <title>Implementor Notes</title> <para> If providing subrange details is deemed necessary, all possible values of the widget are expected to fall within one of the subranges defined by the implementor. </para> </refsect2> </refsect1>
<refsect1 id="localization">
 <title>On the subject of localization of end-user-consumable text
 values</title>
 <para>
 Because value text and subrange descriptors are human-consumable,
 implementors are expected to provide localized strings which can be
 directly presented to end users via their assistive technology. In
 order to simplify this for implementors, implementors can use
 valueTypeGetLocalizedName with the following
 already-localized constants for commonly-needed values can be used:
 </para>
<itemizedlist> <listitem>ATK_VALUE_VERY_WEAK</listitem> <listitem>ATK_VALUE_WEAK</listitem> <listitem>ATK_VALUE_ACCEPTABLE</listitem> <listitem>ATK_VALUE_STRONG</listitem> <listitem>ATK_VALUE_VERY_STRONG</listitem> <listitem>ATK_VALUE_VERY_LOW</listitem> <listitem>ATK_VALUE_LOW</listitem> <listitem>ATK_VALUE_MEDIUM</listitem> <listitem>ATK_VALUE_HIGH</listitem> <listitem>ATK_VALUE_VERY_HIGH</listitem> <listitem>ATK_VALUE_VERY_BAD</listitem> <listitem>ATK_VALUE_BAD</listitem> <listitem>ATK_VALUE_GOOD</listitem> <listitem>ATK_VALUE_VERY_GOOD</listitem> <listitem>ATK_VALUE_BEST</listitem> <listitem>ATK_VALUE_SUBSUBOPTIMAL</listitem> <listitem>ATK_VALUE_SUBOPTIMAL</listitem> <listitem>ATK_VALUE_OPTIMAL</listitem> </itemizedlist> <para> Proposals for additional constants, along with their use cases, should be submitted to the GNOME Accessibility Team. </para> </refsect1>
<refsect1 id="changes"> <title>On the subject of changes</title> <para> Note that if there is a textual description associated with the new numeric value, that description should be included regardless of whether or not it has also changed. </para> </refsect1>
Synopsis
- newtype Value = Value (ManagedPtr Value)
- noValue :: Maybe Value
- class (GObject o, IsDescendantOf Value o) => IsValue o
- toValue :: (MonadIO m, IsValue o) => o -> m Value
- valueGetCurrentValue :: (HasCallStack, MonadIO m, IsValue a) => a -> m GValue
- valueGetIncrement :: (HasCallStack, MonadIO m, IsValue a) => a -> m Double
- valueGetMaximumValue :: (HasCallStack, MonadIO m, IsValue a) => a -> m GValue
- valueGetMinimumIncrement :: (HasCallStack, MonadIO m, IsValue a) => a -> m GValue
- valueGetMinimumValue :: (HasCallStack, MonadIO m, IsValue a) => a -> m GValue
- valueGetRange :: (HasCallStack, MonadIO m, IsValue a) => a -> m (Maybe Range)
- valueGetSubRanges :: (HasCallStack, MonadIO m, IsValue a) => a -> m [Range]
- valueGetValueAndText :: (HasCallStack, MonadIO m, IsValue a) => a -> m (Double, Text)
- valueSetCurrentValue :: (HasCallStack, MonadIO m, IsValue a) => a -> GValue -> m Bool
- valueSetValue :: (HasCallStack, MonadIO m, IsValue a) => a -> Double -> m ()
- type C_ValueValueChangedCallback = Ptr () -> CDouble -> CString -> Ptr () -> IO ()
- type ValueValueChangedCallback = Double -> Text -> IO ()
- afterValueValueChanged :: (IsValue a, MonadIO m) => a -> ValueValueChangedCallback -> m SignalHandlerId
- genClosure_ValueValueChanged :: MonadIO m => ValueValueChangedCallback -> m (GClosure C_ValueValueChangedCallback)
- mk_ValueValueChangedCallback :: C_ValueValueChangedCallback -> IO (FunPtr C_ValueValueChangedCallback)
- noValueValueChangedCallback :: Maybe ValueValueChangedCallback
- onValueValueChanged :: (IsValue a, MonadIO m) => a -> ValueValueChangedCallback -> m SignalHandlerId
- wrap_ValueValueChangedCallback :: ValueValueChangedCallback -> C_ValueValueChangedCallback
Exported types
Memory-managed wrapper type.
Constructors
| Value (ManagedPtr Value) | 
Instances
| Eq Value Source # | |
| GObject Value Source # | |
| Defined in GI.Atk.Interfaces.Value Methods gobjectType :: IO GType # | |
| IsGValue Value Source # | Convert  | 
| HasParentTypes Value Source # | |
| Defined in GI.Atk.Interfaces.Value | |
| type ParentTypes Value Source # | |
| Defined in GI.Atk.Interfaces.Value | |
class (GObject o, IsDescendantOf Value o) => IsValue o Source #
Instances
| (GObject o, IsDescendantOf Value o) => IsValue o Source # | |
| Defined in GI.Atk.Interfaces.Value | |
Methods
Overloaded methods
getCurrentValue
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m GValue | 
Deprecated: Since 2.12. Use valueGetValueAndTextinstead.
Gets the value of this object.
getIncrement
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m Double | Returns: the minimum increment by which the value of this object may be changed. zero if undefined. | 
Gets the minimum increment by which the value of this object may be changed. If zero, the minimum increment is undefined, which may mean that it is limited only by the floating point precision of the platform.
Since: 2.12
getMaximumValue
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m GValue | 
Deprecated: Since 2.12. Use valueGetRange instead.
Gets the maximum value of this object.
getMinimumIncrement
valueGetMinimumIncrement Source #
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m GValue | 
Deprecated: Since 2.12. Use valueGetIncrement instead.
Gets the minimum increment by which the value of this object may be changed. If zero, the minimum increment is undefined, which may mean that it is limited only by the floating point precision of the platform.
Since: 1.12
getMinimumValue
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m GValue | 
Deprecated: Since 2.12. Use valueGetRange instead.
Gets the minimum value of this object.
getRange
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m (Maybe Range) | Returns: a newly allocated  | 
Gets the range of this object.
Since: 2.12
getSubRanges
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m [Range] | Returns: an  | 
Gets the list of subranges defined for this object. See Value
 introduction for examples of subranges and when to expose them.
Since: 2.12
getValueAndText
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> m (Double, Text) | 
Gets the current value and the human readable text alternative of
 obj. text is a newly created string, that must be freed by the
 caller. Can be NULL if no descriptor is available.
Since: 2.12
setCurrentValue
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> GValue | 
 | 
| -> m Bool | Returns:  | 
Deprecated: Since 2.12. Use valueSetValue instead.
Sets the value of this object.
setValue
Arguments
| :: (HasCallStack, MonadIO m, IsValue a) | |
| => a | 
 | 
| -> Double | 
 | 
| -> m () | 
Sets the value of this object.
This method is intended to provide a way to change the value of the object. In any case, it is possible that the value can't be modified (ie: a read-only component). If the value changes due this call, it is possible that the text could change, and will trigger an valueChanged signal emission.
Note for implementors: the deprecated valueSetCurrentValue
 method returned TRUE or FALSE depending if the value was assigned
 or not. In the practice several implementors were not able to
 decide it, and returned TRUE in any case. For that reason it is not
 required anymore to return if the value was properly assigned or
 not.
Since: 2.12
Signals
valueChanged
type C_ValueValueChangedCallback = Ptr () -> CDouble -> CString -> Ptr () -> IO () Source #
Type for the callback on the (unwrapped) C side.
type ValueValueChangedCallback Source #
Arguments
| = Double | 
 | 
| -> Text | 
 | 
| -> IO () | 
The 'value-changed' signal is emitted when the current value
 that represent the object changes. value is the numerical
 representation of this new value.  text is the human
 readable text alternative of value, and can be NULL if it is
 not available. Note that if there is a textual description
 associated with the new numeric value, that description
 should be included regardless of whether or not it has also
 changed.
Example: a password meter whose value changes as the user types their new password. Appropiate value text would be "weak", "acceptable" and "strong".
Since: 2.12
afterValueValueChanged :: (IsValue a, MonadIO m) => a -> ValueValueChangedCallback -> m SignalHandlerId Source #
Connect a signal handler for the valueChanged signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after value #valueChanged callback
genClosure_ValueValueChanged :: MonadIO m => ValueValueChangedCallback -> m (GClosure C_ValueValueChangedCallback) Source #
Wrap the callback into a GClosure.
mk_ValueValueChangedCallback :: C_ValueValueChangedCallback -> IO (FunPtr C_ValueValueChangedCallback) Source #
Generate a function pointer callable from C code, from a C_ValueValueChangedCallback.
noValueValueChangedCallback :: Maybe ValueValueChangedCallback Source #
A convenience synonym for Nothing :: Maybe ValueValueChangedCallback
onValueValueChanged :: (IsValue a, MonadIO m) => a -> ValueValueChangedCallback -> m SignalHandlerId Source #
Connect a signal handler for the valueChanged signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on value #valueChanged callback