Annotation of rpl/modules/motif/motif.rplc, revision 1.11
1.1 bertrand 1: #define __RPLC_MAIN
2: #include "src/rplexternals.h"
3: #include "motif.h"
4:
5: libraryName(motif);
6:
7: exportExternalFunctions(
1.4 bertrand 8: XSynchronize,
1.9 bertrand 9: XStoreName,
1.11 ! bertrand 10: XmSetIcon,
1.4 bertrand 11: XtAddCallback,
1.3 bertrand 12: XtAppExitMainLoop,
1.1 bertrand 13: XtAppInitialize,
14: XtAppMainLoop,
1.4 bertrand 15: XtCreatePopupShell,
1.8 bertrand 16: XtCreateManagedWidget,
1.4 bertrand 17: XtCreateWidget,
18: XtDestroyWidget,
1.10 bertrand 19: XtOpenApplication,
1.4 bertrand 20: XtPopdown,
21: XtPopup,
1.6 bertrand 22: XtRealizeWidget,
23: XtRemoveCallback);
1.1 bertrand 24:
25: declareSubroutine(onLoading)
1.2 bertrand 26: notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
1.1 bertrand 27: notice(stdout, "Motif library loaded.\n\n");
28:
29: // Création des variables spécifiques
30:
31: declareObject(variable);
32: declareObject(value);
33:
34: #define createVariable(var) createVariable2(var, var)
35: #define createVariable2(var, val) \
36: do { \
37: createNameObject(variable); \
38: setSymbolicName(variable, #var); \
39: createIntegerObject(value); \
40: setInteger(value, val); \
41: pushOnStack(variable); \
42: pushOnStack(value); \
43: intrinsic(over); \
44: intrinsic(save); \
45: intrinsic(parameter); \
46: } while(0)
47:
48: createVariable2(XmFalse, 0);
49: createVariable2(XmTrue, 1);
50:
51: createVariable(XmATTACH_NONE);
52: createVariable(XmATTACH_FORM);
53: createVariable(XmATTACH_OPPOSITE_FORM);
54: createVariable(XmATTACH_WIDGET);
55: createVariable(XmATTACH_OPPOSITE_WIDGET);
56: createVariable(XmATTACH_POSITION);
57: createVariable(XmATTACH_SELF);
58:
59: createVariable(XmALIGNMENT_BEGINNING);
60: createVariable(XmALIGNMENT_CENTER);
61: createVariable(XmALIGNMENT_END);
62:
63: createVariable(XmHORIZONTAL);
64: createVariable(XmVERTICAL);
65:
66: createVariable(XtGrabNone);
67: createVariable(XtGrabNonexclusive);
68: createVariable(XtGrabExclusive);
69:
70: createVariable(XmSTRING);
1.4 bertrand 71:
72: setFalse(initializationDone);
1.6 bertrand 73: nullify(lCallbacks);
1.1 bertrand 74: endSubroutine
75:
76: declareSubroutine(onClosing)
1.7 bertrand 77: // Destruction des variables spécifiques et des callbacks
1.1 bertrand 78: declareObject(variable);
1.6 bertrand 79: declareDaisyChain(current);
80: declareDaisyChain(next);
81:
82: current = lCallbacks;
83:
84: repeatWhile(not nullified(current))
1.7 bertrand 85: next = nextElementOfDaisyChain(current);
1.6 bertrand 86: variable = fetchElementFromDaisyChain(current);
87: freeObject(variable);
88: free(current);
89: current = next;
90: endWhile
91:
92: nullify(lCallbacks);
1.1 bertrand 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: notice(stdout, "Motif library unloaded.\n\n");
129: endSubroutine
130:
131: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>