~ubuntu-branches/ubuntu/utopic/gridengine/utopic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/* 
 * Motif Tools Library, Version 3.1
 * $Id$
 * 
 * Written by David Flanagan.
 * Copyright (c) 1992-2001 by David Flanagan.
 * All Rights Reserved.  See the file COPYRIGHT for details.
 * This is open source software.  See the file LICENSE for details.
 * There is no warranty for this software.  See NO_WARRANTY for details.
 *
 * $Log$
 * Revision 1.1.1.1  2001/07/18 11:06:03  root
 * Initial checkin.
 *
 * Revision 1.2  2001/06/12 16:25:28  andre
 * *** empty log message ***
 *
 *
 */

/*
 * This file courtesy of Tony Hefner.
 */

#include <stdlib.h>
#include <Xmt/Xmt.h>

#if XmVersion == 2000

#include <Xmt/WidgetType.h>
#include <Xmt/QuarksP.h>
#include <Xm/CSText.h>

/* ARGSUSED */
#if NeedFunctionPrototypes
static void setvalue(Widget w, XtPointer address, XrmQuark type, Cardinal size)
#else
static void setvalue(w, address, type, size)
Widget w;
XtPointer address;
XrmQuark type;
Cardinal size;
#endif
{
    XmString xmString = NULL;

    if (type == XmtQString) {
        /* Convert the value to an XmString. */
        xmString = XmtCreateLocalizedXmString(w, *(String *)address);
	XmCSTextSetString(w, xmString);
    }
    else if (type == XmtQBuffer) {
        /* Convert the value to an XmString. */
        xmString = XmtCreateLocalizedXmString(w, (char *)address);
	XmCSTextSetString(w, xmString);
    }
    else
	XmtWarningMsg("XmtDialogSetDialogValues", "xmcstext",
		      "Type mismatch:\n\tCan't set value from resource of type '%s'.  String or Buffer expected.",
		   XrmQuarkToString(type));

    if (xmString) XmStringFree(xmString);
}

#if NeedFunctionPrototypes
static void getvalue(Widget w, XtPointer address, XrmQuark type, Cardinal size)
#else
static void getvalue(w, address, type, size)
Widget w;
XtPointer address;
XrmQuark type;
Cardinal size;
#endif
{
    int nChars;
    int bufferSize;

    if (type == XmtQString) {
        String buffer;

        /* Find out how many characters are in the widget buffer. */
        nChars = XmCSTextGetLastPosition(w);

        /* Calculate the buffer size for the entire contents. */
        bufferSize = (nChars * MB_CUR_MAX) + 1;

        buffer = XtMalloc(bufferSize);

        /* Now read out the contents. */
        XmCSTextGetSubstring(w, 0, nChars, bufferSize, buffer);

	*(String *)address = buffer;
    }
    else if (type == XmtQBuffer) {
        /* Find out how many characters are in the widget buffer. */
        nChars = XmCSTextGetLastPosition(w);

        /* Calculate the buffer size for the entire contents. */
        bufferSize = (nChars * MB_CUR_MAX) + 1;

        if (size >= nChars)
            XmCSTextGetSubstring(w, 0, nChars, size, (char *)address);
        else {
            XmCSTextGetSubstring(w, 0, size, size, (char *)address);

	    XmtWarningMsg("XmtDialogGetDialogValues", "xmcstextTrunc",
			  "The input value is %d characters long\n\tand does not fit into a buffer %d characters long.\n\tThe trailing characters have been truncated.",
			  nChars, size);
        }
    }
    else
	XmtWarningMsg("XmtDialogGetDialogValues", "xmtextType",
		      "Type mismatch:\n\tCan't set input value on a resource of type '%s'.  String or Buffer expected.",
		      XrmQuarkToString(type));
}

static XmtWidgetType cstext = {
    "XmCSText",
    NULL,
    (XmtWidgetConstructor) XmCreateCSText,
    setvalue,
    getvalue,
};

static XmtWidgetType scstext = {
    "XmScrolledCSText",
    NULL,
    (XmtWidgetConstructor) XmCreateScrolledCSText,
    setvalue,
    getvalue,
};

#if NeedFunctionPrototypes
void XmtRegisterXmCSText(void)
#else
void XmtRegisterXmCSText()
#endif
{
    _XmtInitQuarks();
    XmtRegisterWidgetTypes(&cstext, 1);
}

#if NeedFunctionPrototypes
void XmtRegisterXmScrolledCSText(void)
#else
void XmtRegisterXmScrolledCSText()
#endif
{
    _XmtInitQuarks();
    XmtRegisterWidgetTypes(&scstext, 1);
}

#else  /* if XmVersion = 2000 */
/* just so the compiler doesn't complain about an empty file. */
static char XmtDummy;
#endif