This is wordlist.c in view mode; [Download] [Up]
/* -*-C-*- ******************************************************************************** * * File: wordlist.c * RCS: $Header: /home/everest1/cattelan/work/xwebster.motif/RCS/wordlist.c,v 1.1 1992/03/21 22:39:43 cattelan Exp $ * Description: Module to display a list of words * Author: Niels Mayer, HPLabs * Created: Wed Aug 31 21:17:29 1988 * Modified: Mon Mar 6 17:17:00 1989 (Niels Mayer) mayer@hplnpm * Language: C * Package: N/A * Status: G-Job * * xwebster - dictionary browser * * Copyright 1988 Hewlett-Packard Company * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of HP not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. HP makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * Please send any improvements, bug fixes, useful modifications, and comments * to mayer@hplabs.hp.com. ******************************************************************************** */ static char rcs_identity[] = "@(#)$Header: /home/everest1/cattelan/work/xwebster.motif/RCS/wordlist.c,v 1.1 1992/03/21 22:39:43 cattelan Exp $"; #include "xwebster.h" #include "user_prefs.h" #include <Xm/ScrolledW.h> #include <Xm/RowColumn.h> #include <Xm/PushB.h> static Widget wordlist_Wgt = NULL; static Widget wordlist_scroller_Wgt = NULL; static Widget wordlist[16384]; /* hopefully, people won't be listing this many words */ static int wordlist_base = 0; /* points to the first elt to be managed */ static int wordlist_idx = 0; /* points to the elt after last in wordlist */ extern XtCallbackProc Controlpanel_Define_Callback(); /****************************************************************************** * ******************************************************************************/ Wordlist_Init(parent_Wgt) Widget parent_Wgt; { wordlist_scroller_Wgt = XtVaCreateManagedWidget("wordlist_scroller", xmScrolledWindowWidgetClass, parent_Wgt, XmNscrollingPolicy, XmAUTOMATIC, NULL); wordlist_Wgt = XtVaCreateManagedWidget("wordlist", xmRowColumnWidgetClass, wordlist_scroller_Wgt, XmNadjustLast, False, XmNpacking, XmPACK_COLUMN, NULL); } /****************************************************************************** * Clears all the buttons. ******************************************************************************/ Wordlist_Reset() { register int i; /* * the following seems to prevent a ridiculous amount of display updating * thatwas occuring as each widget got deleted and others moved to fill the * gap */ XtUnmanageChildren(wordlist, wordlist_idx); /* * Now we can delete all the word widgets with a minimum of display noize */ for (i=0; (i < wordlist_idx); i++) { XtDestroyWidget(wordlist[i]); } wordlist_idx = 0; wordlist_base = 0; } /****************************************************************************** * ******************************************************************************/ static XtCallbackProc Wordlist_Button_Destroy_Callback(widget, client_data, call_data) Widget widget; caddr_t client_data; caddr_t call_data; { XtFree(client_data); /* frees the string containing the word */ } /****************************************************************************** * ******************************************************************************/ Wordlist_Add(str) char* str; { Widget wordbutton_Wgt; XmString label; char* word; label = XmStringCreateSimple(str); wordbutton_Wgt = XtVaCreateWidget("word", xmPushButtonWidgetClass, wordlist_Wgt, XmNlabelString, label, NULL); XmStringFree(label); word = COPY_STRING(str); XtAddCallback(wordbutton_Wgt, XmNactivateCallback, (XtCallbackProc)Controlpanel_Define_Callback, word); XtAddCallback(wordbutton_Wgt, XmNdestroyCallback, /* on destroy, of Wgt, dealloc the word */ (XtCallbackProc)Wordlist_Button_Destroy_Callback, word); XtSetSensitive(wordbutton_Wgt, FALSE); wordlist[wordlist_idx++] = wordbutton_Wgt; /* * Refresh the display of words every <num_words_before_refresh> words */ if ((wordlist_idx % user_prefs.num_words_before_refresh) == 0) { XtManageChildren(&wordlist[wordlist_base], (wordlist_idx - wordlist_base)); wordlist_base += user_prefs.num_words_before_refresh; } } /****************************************************************************** * ******************************************************************************/ Wordlist_Show() { register int i; for (i=0; (i < wordlist_idx); i++) { XtSetSensitive(wordlist[i], TRUE); } XtManageChildren(wordlist, wordlist_idx); } /****************************************************************************** * Desensitizes wordlist buttons ******************************************************************************/ Wordlist_Deactivate() { register int i; for (i=0; (i < wordlist_idx); i++) { XtSetSensitive(wordlist[i], FALSE); } } /****************************************************************************** * Resensitizes wordlist buttons ******************************************************************************/ Wordlist_Reactivate() { register int i; ARGLIST_RESET(); ARGLIST_ADD(XmNset, FALSE); for (i=0; (i < wordlist_idx); i++) { XtSetSensitive(wordlist[i], TRUE); XtSetValues(wordlist[i], ARGLIST()); } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.