Annotation of rpl/modules/motif/motif.rplc, revision 1.2
1.1 bertrand 1: #define __RPLC_MAIN
2: #include "src/rplexternals.h"
3: #include "motif.h"
4:
5: libraryName(motif);
6:
7: exportExternalFunctions(
8: XSynchronize,
9: XtAddCallback,
10: XtAppInitialize,
11: XtAppMainLoop,
12: XtAppExitMainLoop,
13: XtCreatePopupShell,
14: XtCreateWidget,
15: XtDestroyWidget,
16: XtPopdown,
17: XtPopup,
18: XtRealizeWidget,
19: XtRemoveAllCallbacks,
20: XtRemoveCallback);
21:
22: declareSubroutine(onLoading)
23: declareInteger(i);
24:
1.2 ! bertrand 25: notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
1.1 bertrand 26: notice(stdout, "Motif library loaded.\n\n");
27:
28: nombre_widgets = 256;
29: widgets = sys_malloc(nombre_widgets * size(Widget));
30: presence_widget = sys_malloc(nombre_widgets * size(char));
31:
32: loop(i = 0, i < nombre_widgets, i++)
33: presence_widget[i] = 0;
34: endLoop
35:
36: nombre_callbacks = 256;
37: callbacks = sys_malloc(nombre_callbacks * size(callbackArg));
38: presence_callback = sys_malloc(nombre_callbacks * size(char));
39:
40: loop(i = 0, i < nombre_callbacks, i++)
41: presence_callback[i] = 0;
42: endLoop
43:
44: // Création des variables spécifiques
45:
46: declareObject(variable);
47: declareObject(value);
48:
49: #define createVariable(var) createVariable2(var, var)
50: #define createVariable2(var, val) \
51: do { \
52: createNameObject(variable); \
53: setSymbolicName(variable, #var); \
54: createIntegerObject(value); \
55: setInteger(value, val); \
56: pushOnStack(variable); \
57: pushOnStack(value); \
58: intrinsic(over); \
59: intrinsic(save); \
60: intrinsic(parameter); \
61: } while(0)
62:
63: createVariable2(XmFalse, 0);
64: createVariable2(XmTrue, 1);
65:
66: createVariable(XmATTACH_NONE);
67: createVariable(XmATTACH_FORM);
68: createVariable(XmATTACH_OPPOSITE_FORM);
69: createVariable(XmATTACH_WIDGET);
70: createVariable(XmATTACH_OPPOSITE_WIDGET);
71: createVariable(XmATTACH_POSITION);
72: createVariable(XmATTACH_SELF);
73:
74: createVariable(XmALIGNMENT_BEGINNING);
75: createVariable(XmALIGNMENT_CENTER);
76: createVariable(XmALIGNMENT_END);
77:
78: createVariable(XmHORIZONTAL);
79: createVariable(XmVERTICAL);
80:
81: createVariable(XtGrabNone);
82: createVariable(XtGrabNonexclusive);
83: createVariable(XtGrabExclusive);
84:
85: createVariable(XmSTRING);
86: endSubroutine
87:
88: declareSubroutine(onClosing)
89: // Destruction des variables spécifiques
90: declareInteger(i);
91:
92: declareObject(variable);
93:
94: #define purgeVariable(var) \
95: do { \
96: createNameObject(variable); \
97: setName(variable, #var); \
98: pushOnStack(variable); \
99: intrinsic(dup); \
100: intrinsic(variable); \
101: intrinsic(purge); \
102: } while(0)
103:
104: purgeVariable(XmFalse);
105: purgeVariable(XmTrue);
106:
107: purgeVariable(XmATTACH_NONE);
108: purgeVariable(XmATTACH_FORM);
109: purgeVariable(XmATTACH_OPPOSITE_FORM);
110: purgeVariable(XmATTACH_WIDGET);
111: purgeVariable(XmATTACH_OPPOSITE_WIDGET);
112: purgeVariable(XmATTACH_POSITION);
113: purgeVariable(XmATTACH_SELF);
114:
115: purgeVariable(XmALIGNMENT_BEGINNING);
116: purgeVariable(XmALIGNMENT_CENTER);
117: purgeVariable(XmALIGNMENT_END);
118:
119: purgeVariable(XmHORIZONTAL);
120: purgeVariable(XmVERTICAL);
121:
122: purgeVariable(XtGrabNone);
123: purgeVariable(XtGrabNonexclusive);
124: purgeVariable(XtGrabExclusive);
125:
126: purgeVariable(XmSTRING);
127:
128: sys_free(widgets);
129: sys_free(presence_widget);
130:
131: loop(i = 0, i < nombre_callbacks, i++)
132: if (presence_callback[i] ne 0) then
133: freeObject(callbacks[i].s_objet);
134: endIf
135: endLoop
136:
137: sys_free(callbacks);
138: sys_free(presence_callback);
139:
140: notice(stdout, "Motif library unloaded.\n\n");
141: endSubroutine
142:
143: declareExternalFunction(XtDestroyWidget)
144: HEADER
145: FUNCTION
146: END
147: endExternalFunction
148:
149: declareExternalFunction(XtRemoveCallback)
150: HEADER
151: FUNCTION
152: END
153: endExternalFunction
154:
155: declareExternalFunction(XtRemoveAllCallbacks)
156: HEADER
157: FUNCTION
158: END
159: endExternalFunction
160:
161: /*
162: XmStringCreateLtoR
163: XmCreateRadioBox
164: XtVaSetValues
165: XmStringFree
166: XmTextFieldSetString
167: XtManageChild
168: XtSetSensitive
169: XtVaGetValues
170: XtAncetre
171: */
172:
173: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>