Annotation of freem/src/mwapi_event.c, revision 1.1

1.1     ! snw         1: /*
        !             2:  *                            *
        !             3:  *                           * *
        !             4:  *                          *   *
        !             5:  *                     ***************
        !             6:  *                      * *       * *
        !             7:  *                       *  MUMPS  *
        !             8:  *                      * *       * *
        !             9:  *                     ***************
        !            10:  *                          *   *
        !            11:  *                           * *
        !            12:  *                            *
        !            13:  *
        !            14:  *   mwapi_event.c
        !            15:  *    mwapi event support
        !            16:  *
        !            17:  *  
        !            18:  *   Author: Serena Willis <jpw@coherent-logic.com>
        !            19:  *    Copyright (C) 1998 MUG Deutschland
        !            20:  *    Copyright (C) 2014, 2020, 2021 Coherent Logic Development LLC
        !            21:  *
        !            22:  *
        !            23:  *   This file is part of FreeM.
        !            24:  *
        !            25:  *   FreeM is free software: you can redistribute it and/or modify
        !            26:  *   it under the terms of the GNU Affero Public License as published by
        !            27:  *   the Free Software Foundation, either version 3 of the License, or
        !            28:  *   (at your option) any later version.
        !            29:  *
        !            30:  *   FreeM is distributed in the hope that it will be useful,
        !            31:  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            32:  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            33:  *   GNU Affero Public License for more details.
        !            34:  *
        !            35:  *   You should have received a copy of the GNU Affero Public License
        !            36:  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
        !            37:  *
        !            38:  **/
        !            39: #include "config.h"
        !            40: 
        !            41: #if defined(HAVE_MWAPI_MOTIF)
        !            42: 
        !            43: #include <stdlib.h>
        !            44: #include <Xm/Xm.h>
        !            45: #include "mpsdef0.h"
        !            46: #include "mwapi_event.h"
        !            47: #include "mwapi_window.h"
        !            48: 
        !            49: short evt_sync_enabled = FALSE;
        !            50: mwapi_event_queue_entry *mwapi_event_queue_head;
        !            51: 
        !            52: mwapi_event *mwapi_event_new(char *evclass, char *window_name, Widget *window)
        !            53: {
        !            54:     mwapi_event *e = (mwapi_event *) malloc (sizeof (mwapi_event));
        !            55:     NULLPTRCHK(e,"mwapi_event_new");
        !            56: 
        !            57:     e->evclass = evclass;
        !            58:     e->window_name = window_name;
        !            59:     e->window = window;
        !            60:     
        !            61:     stcnv_m2c (e->window_name);
        !            62: 
        !            63:     return e;    
        !            64: }
        !            65: 
        !            66: void mwapi_wire_event(mwapi_event *e, char *entryref)
        !            67: {
        !            68: 
        !            69:     char m_gtk_ev[100];
        !            70: 
        !            71:     if (strcmp (e->evclass, "CLOSE") == 0) strcpy (m_gtk_ev, "destroy");
        !            72: 
        !            73:     e->entryref = (char *) malloc (strlen (entryref) * sizeof (char));
        !            74:     NULLPTRCHK(e->entryref,"mwapi_wire_event");
        !            75:     
        !            76:     strcpy (e->entryref, entryref);
        !            77:     
        !            78:     //g_signal_connect (e->window, m_gtk_ev, G_CALLBACK(mwapi_enqueue_event), (gpointer) e);
        !            79: 
        !            80: }
        !            81: 
        !            82: void mwapi_enqueue_event(Widget *widget, void *data)
        !            83: {
        !            84:     mwapi_event *e = (mwapi_event *) malloc (sizeof (mwapi_event));
        !            85:     NULLPTRCHK(e,"mwapi_enqueue_event");
        !            86: 
        !            87:     mwapi_event_queue_entry *t = (mwapi_event_queue_entry *) malloc (sizeof (mwapi_event_queue_entry));
        !            88:     NULLPTRCHK(t,"mwapi_enqueue_event");
        !            89:     
        !            90:     e = (mwapi_event *) data;
        !            91: 
        !            92:     //printf ("mwapi_enqueue_event():  evclass = '%s' window_name = '%s' entryref = '%s'\r\n\r\n", e->evclass, e->window_name, e->entryref);
        !            93: 
        !            94:     t->e = e;
        !            95:     t->next = mwapi_event_queue_head;
        !            96:     mwapi_event_queue_head = t;
        !            97:     
        !            98:     return;
        !            99: }
        !           100: 
        !           101: int mwapi_dequeue_events(char *result)
        !           102: {
        !           103: 
        !           104:     mwapi_event_queue_entry *t;
        !           105:     int i = 0;
        !           106:     
        !           107:     for (t = mwapi_event_queue_head; t != NULL; t = t->next) {
        !           108: 
        !           109:         strcat (result, t->e->entryref);
        !           110:         strcat (result, ",");
        !           111:         i++;
        !           112:         
        !           113:     }
        !           114: 
        !           115:     // TODO: delete events
        !           116:     mwapi_event_queue_head = NULL;
        !           117: 
        !           118:     /* chop off the final comma */
        !           119:     result[strlen (result) - 1] = '\0';
        !           120:     
        !           121:     return i;
        !           122:     
        !           123: }
        !           124: 
        !           125: void mwapi_on_merge_complete(char *window_name)
        !           126: {
        !           127:     mwapi_window *t;
        !           128: 
        !           129:     if (stcmp (window_name, "\201") == 0) {
        !           130:         /* we're merging to the global directly; no specified subscript */
        !           131:         /* we'll do a loop here */        
        !           132:     }
        !           133:     else {        
        !           134:         /* merging to a specific window */
        !           135:         t = mwapi_win_get (window_name);
        !           136:         mwapi_win_show (t);
        !           137:     }
        !           138: 
        !           139: }
        !           140: 
        !           141: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>