File:  [local] / rpl / modules / motif / motif.rplc
Revision 1.11: download - view: text, annotated - select for diffs - revision graph
Wed Aug 23 12:21:59 2017 UTC (6 years, 8 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_35, rpl-4_1_34, rpl-4_1_33, rpl-4_1_32, rpl-4_1_31, rpl-4_1_30, rpl-4_1_29, rpl-4_1_28, HEAD
Ajout de XmSetIcon.

    1: #define __RPLC_MAIN
    2: #include "src/rplexternals.h"
    3: #include "motif.h"
    4: 
    5: libraryName(motif);
    6: 
    7: exportExternalFunctions(
    8:         XSynchronize,
    9:         XStoreName,
   10:         XmSetIcon,
   11:         XtAddCallback,
   12:         XtAppExitMainLoop,
   13:         XtAppInitialize,
   14:         XtAppMainLoop,
   15:         XtCreatePopupShell,
   16:         XtCreateManagedWidget,
   17:         XtCreateWidget,
   18:         XtDestroyWidget,
   19:         XtOpenApplication,
   20:         XtPopdown,
   21:         XtPopup,
   22:         XtRealizeWidget,
   23:         XtRemoveCallback);
   24: 
   25: declareSubroutine(onLoading)
   26:     notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n");
   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);
   71: 
   72:     setFalse(initializationDone);
   73:     nullify(lCallbacks);
   74: endSubroutine
   75: 
   76: declareSubroutine(onClosing)
   77:     // Destruction des variables spécifiques et des callbacks
   78:     declareObject(variable);
   79:     declareDaisyChain(current);
   80:     declareDaisyChain(next);
   81: 
   82:     current = lCallbacks;
   83: 
   84:     repeatWhile(not nullified(current))
   85:         next = nextElementOfDaisyChain(current);
   86:         variable = fetchElementFromDaisyChain(current);
   87:         freeObject(variable);
   88:         free(current);
   89:         current = next;
   90:     endWhile
   91: 
   92:     nullify(lCallbacks);
   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>