📄 rowcol.c
字号:
/* * $Id: RowCol.c,v 1.4 2000/05/07 12:26:11 fnevgeny Exp $ * * Copyright (c) 1994 HAL Computer Systems International, Ltd. * * HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. * 1315 Dell Avenue * Campbell, CA 95008 * * Author: Greg Hilton * Contributors: Tom Lang, Frank Bieser, and others * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * http://www.gnu.org/copyleft/gpl.html * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <config.h>#include "RowColP.h"#include <Xm/TransltnsP.h>/* Missing in Motif-2.* declarations */#ifndef HAVE__XMINPUTFORGADGET_DECLXmGadget _XmInputForGadget(Widget cw, int x, int y);#endif#ifndef HAVE__XMGETFOCUSPOLICY_DECLunsigned char _XmGetFocusPolicy(Widget w);#endif#ifndef HAVE__XMSHELLISEXCLUSIVE_DECLBoolean _XmShellIsExclusive(Widget wid);#endif/* This is not declared in 1.2 either */XmNavigability _XmGetNavigability(Widget w);#define MARGIN_DEFAULT 10#define defaultTranslations _XmDrawingA_defaultTranslations#define traversalTranslations _XmDrawingA_traversalTranslations/******** Static Function Declarations ********/static void ChangeManaged(Widget wid);static void ClassInitialize(void);static void ClassPartInitialize(WidgetClass);static void ConstraintInitialize(Widget, Widget, ArgList, Cardinal*);static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry*, XtWidgetGeometry*);static void Initialize(Widget, Widget, ArgList, Cardinal*);static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry*, XtWidgetGeometry*);static void Redisplay(Widget, XEvent*, Region);static void Resize(Widget);static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal*);static XmNavigability WidgetNavigable(Widget);/******** End Static Function Declarations ********/static XtActionsRec actionsList[] ={ { "DrawingAreaInput", _RowColInput },};/* Resource definitions for RowCol */static XmSyntheticResource syn_resources[] ={#if XmVersion < 2000 { XmNmarginWidth, sizeof (Dimension), XtOffsetOf( struct _RowColRec, rowcol.marginWd), _XmFromHorizontalPixels, _XmToHorizontalPixels }, { XmNmarginHeight, sizeof (Dimension), XtOffsetOf( struct _RowColRec, rowcol.marginHt), _XmFromVerticalPixels, _XmToVerticalPixels }#endif};static XtResource resources[] ={#if XmVersion < 2000 { XmNmarginWidth, XmCMarginWidth, XmRHorizontalDimension, sizeof (Dimension), XtOffsetOf(RowColRec, rowcol.marginWd), XmRImmediate, (XtPointer) MARGIN_DEFAULT }, { XmNmarginHeight, XmCMarginHeight, XmRVerticalDimension, sizeof (Dimension), XtOffsetOf(RowColRec, rowcol.marginHt), XmRImmediate, (XtPointer) MARGIN_DEFAULT },#endif { XmNresizeCallback, XmCCallback, XmRCallback, sizeof (XtCallbackList), XtOffsetOf(RowColRec, rowcol.resizeCallback), XmRImmediate, (XtPointer) NULL }, { XmNexposeCallback, XmCCallback, XmRCallback, sizeof (XtCallbackList), XtOffsetOf(RowColRec, rowcol.exposeCallback), XmRImmediate, (XtPointer) NULL }, { XmNinputCallback, XmCCallback, XmRCallback, sizeof (XtCallbackList), XtOffsetOf(RowColRec, rowcol.inputCallback), XmRImmediate, (XtPointer) NULL }, { RcNgeometryCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), XtOffsetOf(RowColRec, rowcol.geometryCallback), XmRImmediate, (XtPointer)NULL }, { RcNchildGeometryCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), XtOffsetOf(RowColRec, rowcol.childGeometryCallback), XmRImmediate, (XtPointer)NULL }, { RcNwidthResizePolicy, RcCWidthResizePolicy, XmRResizePolicy, sizeof(unsigned char), XtOffsetOf(RowColRec, rowcol.wResizePolicy), XmRImmediate, (XtPointer)XmRESIZE_ANY }, { RcNheightResizePolicy, RcCHeightResizePolicy, XmRResizePolicy, sizeof(unsigned char), XtOffsetOf(RowColRec, rowcol.hResizePolicy), XmRImmediate, (XtPointer)XmRESIZE_ANY }, { RcNrowAlignment, RcCRowAlignment, XmRAlignment, sizeof(unsigned char), XtOffsetOf(RowColRec, rowcol.rowAlignment), XmRImmediate, (XtPointer)XmALIGNMENT_CENTER }, { RcNcolAlignment, RcCColAlignment, XmRAlignment, sizeof(unsigned char), XtOffsetOf(RowColRec, rowcol.colAlignment), XmRImmediate, (XtPointer)XmALIGNMENT_CENTER }, { RcNrowHeightAdjust, RcCRowHeightAdjust, RcRAdjust, sizeof(RcAdjustT), XtOffsetOf(RowColRec, rowcol.rowAdjust), XmRImmediate, (XtPointer)RcADJUST_NONE }, { RcNcolWidthAdjust, RcCColWidthAdjust, RcRAdjust, sizeof(RcAdjustT), XtOffsetOf(RowColRec, rowcol.colAdjust), XmRImmediate, (XtPointer)RcADJUST_NONE }, { RcNallowRowResize, RcCAllowRowResize, XmRBoolean, sizeof(Boolean), XtOffsetOf(RowColRec, rowcol.rowResizeOk), XmRImmediate, (XtPointer)True }, { RcNallowColResize, RcCAllowColResize, XmRBoolean, sizeof(Boolean), XtOffsetOf(RowColRec, rowcol.colResizeOk), XmRImmediate, (XtPointer)True }, { XmNorientation, XmCOrientation, RcROrient, sizeof(RcOrientT), XtOffsetOf(RowColRec, rowcol.orient), XmRImmediate, (XtPointer)RcROW_MAJOR }, { RcNrowCount, RcCRowCount, XmRInt, sizeof(int), XtOffsetOf(RowColRec, rowcol.rowCount), XmRImmediate, (XtPointer)1 }, { RcNcolCount, RcCColCount, XmRInt, sizeof(int), XtOffsetOf(RowColRec, rowcol.colCount), XmRImmediate, (XtPointer)1 }, { RcNuniformRows, RcCUniformRows, XmRBoolean, sizeof(Boolean), XtOffsetOf(RowColRec, rowcol.uniformRows), XmRImmediate, (XtPointer)False }, { RcNuniformCols, RcCUniformCols, XmRBoolean, sizeof(Boolean), XtOffsetOf(RowColRec, rowcol.uniformCols), XmRImmediate, (XtPointer)False }, { RcNrowSpacing, RcCRowSpacing, XmRDimension, sizeof(Dimension), XtOffsetOf(RowColRec, rowcol.rowSpacing), XmRImmediate, (XtPointer)0 }, { RcNcolSpacing, RcCColSpacing, XmRDimension, sizeof(Dimension), XtOffsetOf(RowColRec, rowcol.colSpacing), XmRImmediate, (XtPointer)0 },};/**************************************************************** * * Full class record constant * ****************************************************************/static XmBaseClassExtRec baseClassExtRec = { NULL, NULLQUARK, XmBaseClassExtVersion, sizeof(XmBaseClassExtRec), NULL, /* InitializePrehook */ NULL, /* SetValuesPrehook */ NULL, /* InitializePosthook */ NULL, /* SetValuesPosthook */ NULL, /* secondaryObjectClass */ NULL, /* secondaryCreate */ NULL, /* getSecRes data */ { 0 }, /* fastSubclass flags */ NULL, /* getValuesPrehook */ NULL, /* getValuesPosthook */ NULL, /* classPartInitPrehook */ NULL, /* classPartInitPosthook*/ NULL, /* ext_resources */ NULL, /* compiled_ext_resources*/ 0, /* num_ext_resources */ FALSE, /* use_sub_resources */ WidgetNavigable, /* widgetNavigable */ NULL /* focusChange */};externaldef( xmrowcolclassrec) RowColClassRec rowColClassRec ={ { /* core_class fields */ (WidgetClass) &xmManagerClassRec, /* superclass */ "RowCol", /* class_name */ sizeof(RowColRec), /* widget_size */ ClassInitialize, /* class_initialize */ ClassPartInitialize, /* class_part_init */ FALSE, /* class_inited */ Initialize, /* initialize */ NULL, /* initialize_hook */ XtInheritRealize, /* realize */ actionsList, /* actions */ XtNumber(actionsList), /* num_actions */ resources, /* resources */ XtNumber(resources), /* num_resources */ NULLQUARK, /* xrm_class */ TRUE, /* compress_motion */ XtExposeCompressMaximal | XtExposeGraphicsExposeMerged, /* compress_exposure */ TRUE, /* compress_enterlv */ FALSE, /* visible_interest */ NULL, /* destroy */ Resize, /* resize */ Redisplay, /* expose */ SetValues, /* set_values */ NULL, /* set_values_hook */ XtInheritSetValuesAlmost, /* set_values_almost */ NULL, /* get_values_hook */ NULL, /* accept_focus */ XtVersion, /* version */ NULL, /* callback_private */ defaultTranslations, /* tm_table */ QueryGeometry, /* query_geometry */ NULL, /* display_accelerator*/ (XtPointer)&baseClassExtRec, /* extension */ }, { /* composite_class fields */ GeometryManager, /* geometry_manager */ ChangeManaged, /* change_managed */ XtInheritInsertChild, /* insert_child */ XtInheritDeleteChild, /* delete_child */ NULL, /* extension */ }, { /* constraint_class fields */ NULL, /* resource list */ 0, /* num resources */ sizeof(RowColConstraintRec), /* constraint size */ ConstraintInitialize, /* init proc */ NULL, /* destroy proc */ NULL, /* set values proc */ NULL, /* extension */ }, { /* manager_class fields */ traversalTranslations, /* translations */ syn_resources, /* syn_resources */ XtNumber (syn_resources), /* num_get_resources */ NULL, /* syn_cont_resources */ 0, /* num_get_cont_resources */ XmInheritParentProcess, /* parent_process */ NULL, /* extension */ }, { /* RowCol class */ (XtPointer) NULL, /* extension pointer */ } };externaldef( xmrowcolwidgetclass) WidgetClass rowColWidgetClass = (WidgetClass) &rowColClassRec;/*--------------------------------------------------------------- * Type converter for RcAdjustT */static Boolean_CvtStringToAdjust( Display *display, XrmValue *args, Cardinal *num_args, XrmValue *from, XrmValue *to, XtPointer *converter_data){ static RcAdjustT fallback; if ( !to->addr ) { to->addr = (XPointer)&fallback; to->size = sizeof(RcAdjustT); } if ( to->size < sizeof(RcAdjustT) ) { to->size = sizeof(RcAdjustT); return False; } if ( strcasecmp(from->addr, "none") == 0 || strcasecmp(from->addr, "adjustnone") == 0 || strcasecmp(from->addr, "adjust_none") == 0 ) *(RcAdjustT*)to->addr = RcADJUST_NONE; else if ( strcasecmp(from->addr, "equal") == 0 || strcasecmp(from->addr, "adjustequal") == 0 || strcasecmp(from->addr, "adjust_equal") == 0 ) *(RcAdjustT*)to->addr = RcADJUST_EQUAL; else if ( strcasecmp(from->addr, "attach") == 0 || strcasecmp(from->addr, "adjustattach") == 0 || strcasecmp(from->addr, "adjust_attach") == 0 ) *(RcAdjustT*)to->addr = RcADJUST_ATTACH; else { XtStringConversionWarning((char *)from->addr, RcRAdjust); return False; } return True;}/*--------------------------------------------------------------- * Type converter for RcOrientT */static Boolean_CvtStringToOrient( Display *display, XrmValue *args, Cardinal *num_args, XrmValue *from, XrmValue *to, XtPointer *converter_data){ static RcOrientT fallback; if ( !to->addr ) { to->addr = (XPointer)&fallback; to->size = sizeof(RcOrientT); } if ( to->size < sizeof(RcOrientT) ) { to->size = sizeof(RcOrientT); return False; } if ( strcasecmp(from->addr, "row") == 0 || strcasecmp(from->addr, "rowmajor") == 0 || strcasecmp(from->addr, "row_major") ) *(RcOrientT*)to->addr = RcROW_MAJOR; else if ( strcasecmp(from->addr, "col") == 0 || strcasecmp(from->addr, "colmajor") == 0 || strcasecmp(from->addr, "col_major") ) *(RcOrientT*)to->addr = RcCOL_MAJOR; else { XtStringConversionWarning((char *)from->addr, RcROrient); return False; } return True;}/****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -