187 lines
6.2 KiB
C
187 lines
6.2 KiB
C
/**
|
|
*
|
|
* $Header: /cvsroot/lesstif/lesstif/include/Motif-2.1/Xm/SpinBP.h,v 1.1 2004/08/28 19:23:26 dannybackx Exp $
|
|
*
|
|
* Copyright (C) 1997 Free Software Foundation, Inc.
|
|
* Copyright © 1997, 2000, 2001 LessTif Development Team
|
|
*
|
|
* This file is part of the GNU LessTif Library.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 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
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this library; if not, write to the Free
|
|
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*
|
|
**/
|
|
|
|
#ifndef _XM_SPINBP_H
|
|
#define _XM_SPINBP_H
|
|
|
|
#include <Xm/LabelP.h>
|
|
#include <Xm/ManagerP.h>
|
|
#include <Xm/SpinB.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* SpinBox constraints */
|
|
typedef struct _XmSpinBoxConstraint
|
|
{
|
|
XmStringTable values;
|
|
int position;
|
|
int num_values;
|
|
int minimum_value;
|
|
int maximum_value;
|
|
int increment_value;
|
|
short decimal_points;
|
|
unsigned char sb_child_type;
|
|
unsigned char arrow_sensitivity;
|
|
unsigned char position_type;
|
|
} XmSpinBoxConstraintPart, *XmSpinBoxConstraint;
|
|
|
|
typedef struct _XmSpinBoxConstraintRec
|
|
{
|
|
XmManagerConstraintPart manager;
|
|
XmSpinBoxConstraintPart spinBox;
|
|
} XmSpinBoxConstraintRec, *XmSpinBoxConstraintPtr;
|
|
|
|
/* SpinBox class structure */
|
|
typedef struct _XmSpinBoxClassPart
|
|
{
|
|
XtPointer extension;
|
|
} XmSpinBoxClassPart;
|
|
|
|
typedef struct _XmSpinBoxClassRec
|
|
{
|
|
CoreClassPart core_class;
|
|
CompositeClassPart composite_class;
|
|
ConstraintClassPart constraint_class;
|
|
XmManagerClassPart manager_class;
|
|
XmSpinBoxClassPart spinBox_class;
|
|
} XmSpinBoxClassRec;
|
|
|
|
XMLIBEXPORT extern XmSpinBoxClassRec xmSpinBoxClassRec;
|
|
|
|
/* SpinBox instance record */
|
|
typedef struct _XmSpinBoxPart
|
|
{
|
|
Dimension arrow_size;
|
|
Dimension margin_width;
|
|
Dimension margin_height;
|
|
Dimension spacing;
|
|
unsigned int initial_delay;
|
|
unsigned int repeat_delay;
|
|
XtCallbackList modify_verify_cb;
|
|
XtCallbackList value_changed_cb;
|
|
XRectangle up_arrow_rect;
|
|
XRectangle down_arrow_rect;
|
|
Widget textw;
|
|
int boundary;
|
|
int last_hit;
|
|
int make_change;
|
|
Dimension ideal_height;
|
|
Dimension ideal_width;
|
|
GC arrow_gc;
|
|
GC insensitive_gc;
|
|
Mask dim_mask;
|
|
XtIntervalId spin_timer;
|
|
Boolean up_arrow_pressed;
|
|
Boolean down_arrow_pressed;
|
|
unsigned char arrow_layout;
|
|
unsigned char default_arrow_sensitivity;
|
|
Dimension detail_shadow_thickness;
|
|
unsigned char arrow_orientation;
|
|
} XmSpinBoxPart;
|
|
|
|
/* Widget's instance record declaration */
|
|
typedef struct _XmSpinBoxRec
|
|
{
|
|
CorePart core;
|
|
CompositePart composite;
|
|
ConstraintPart constraint;
|
|
XmManagerPart manager;
|
|
XmSpinBoxPart spinBox;
|
|
} XmSpinBoxRec;
|
|
|
|
/* Access macros */
|
|
/* For SpinBox resources */
|
|
#define SPB_ArrowSize(w) (((XmSpinBoxWidget)(w))->spinBox.arrow_size)
|
|
#define SPB_MarginWidth(w) (((XmSpinBoxWidget)(w))->spinBox.margin_width)
|
|
#define SPB_MarginHeight(w) (((XmSpinBoxWidget)(w))->spinBox.margin_height)
|
|
#define SPB_Spacing(w) (((XmSpinBoxWidget)(w))->spinBox.spacing)
|
|
#define SPB_InitialDelay(w) (((XmSpinBoxWidget)(w))->spinBox.initial_delay)
|
|
#define SPB_RepeatDelay(w) (((XmSpinBoxWidget)(w))->spinBox.repeat_delay)
|
|
#define SPB_ModifyVerifyCB(w) (((XmSpinBoxWidget)(w))->spinBox.modify_verify_cb)
|
|
#define SPB_ValueChangedCB(w) (((XmSpinBoxWidget)(w))->spinBox.value_changed_cb)
|
|
#define SPB_TextW(w) (((XmSpinBoxWidget)(w))->spinBox.textw)
|
|
#define SPB_TimerId(w) (((XmSpinBoxWidget)(w))->spinBox.spin_timer)
|
|
#define SPB_DefaultSensitivity(w) \
|
|
(((XmSpinBoxWidget)(w))->spinBox.default_arrow_sensitivity)
|
|
#define SPB_DetailShadowThickness(w) \
|
|
(((XmSpinBoxWidget)(w))->spinBox.detail_shadow_thickness)
|
|
|
|
/* Arrows */
|
|
#define SPB_UpRect(w) (((XmSpinBoxWidget)(w))->spinBox.up_arrow_rect)
|
|
#define SPB_DownRect(w) (((XmSpinBoxWidget)(w))->spinBox.down_arrow_rect)
|
|
#define SPB_UpX(w) SPB_UpRect(w).x
|
|
#define SPB_UpY(w) SPB_UpRect(w).y
|
|
#define SPB_UpWidth(w) SPB_UpRect(w).width
|
|
#define SPB_UpHeight(w) SPB_UpRect(w).height
|
|
#define SPB_DownX(w) SPB_DownRect(w).x
|
|
#define SPB_DownY(w) SPB_DownRect(w).y
|
|
#define SPB_DownWidth(w) SPB_DownRect(w).width
|
|
#define SPB_DownHeight(w) SPB_DownRect(w).height
|
|
#define SPB_ArrowLayout(w) (((XmSpinBoxWidget)(w))->spinBox.arrow_layout)
|
|
#define SPB_ArrowOrientation(w) (((XmSpinBoxWidget)(w))->spinBox.arrow_orientation)
|
|
|
|
#define SPB_UpArrowPressed(w) \
|
|
(((XmSpinBoxWidget)(w))->spinBox.up_arrow_pressed)
|
|
#define SPB_DownArrowPressed(w) \
|
|
(((XmSpinBoxWidget)(w))->spinBox.down_arrow_pressed)
|
|
|
|
/* For Constraint resources */
|
|
/* Note the SPBC_*() need a SpinBox child as argument. */
|
|
|
|
#define SPB_GetConstraintRec(w) \
|
|
((XmSpinBoxConstraint)(&((XmSpinBoxConstraintPtr) \
|
|
(w)->core.constraints)->spinBox))
|
|
|
|
#define SPBC_Minimum(w) (SPB_GetConstraintRec(w)->minimum_value)
|
|
#define SPBC_Maximum(w) (SPB_GetConstraintRec(w)->maximum_value)
|
|
#define SPBC_Increment(w) (SPB_GetConstraintRec(w)->increment_value)
|
|
#define SPBC_NumValues(w) (SPB_GetConstraintRec(w)->num_values)
|
|
#define SPBC_Values(w) (SPB_GetConstraintRec(w)->values)
|
|
#define SPBC_DecimalPoints(w) (SPB_GetConstraintRec(w)->decimal_points)
|
|
#define SPBC_Position(w) (SPB_GetConstraintRec(w)->position)
|
|
#define SPBC_ChildType(w) (SPB_GetConstraintRec(w)->sb_child_type)
|
|
#define SPBC_PositionType(w) (SPB_GetConstraintRec(w)->position_type)
|
|
#define SPBC_ArrowSensitivity(w) (SPB_GetConstraintRec(w)->arrow_sensitivity)
|
|
|
|
/* Stuff to calculate things */
|
|
|
|
#define SPBC_Numeric(w) \
|
|
(SPB_GetConstraintRec(w)->sb_child_type == XmNUMERIC)
|
|
|
|
#define SPBC_CurrentValue(w) \
|
|
(SPB_GetConstraintRec(w)->minimum_value + \
|
|
(SPB_GetConstraintRec(w)->position * \
|
|
SPB_GetConstraintRec(w)->increment_value))
|
|
|
|
#define SPBC_MaxPosition(w) \
|
|
(((w)->maximum_value - (w)->minimum_value) / (w)->increment_value)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _XM_SPINBP_H */
|