home *** CD-ROM | disk | FTP | other *** search
- /* macndlog.c -- dialog utilities for nifty application library
- */
- /* (C) Copyright 1995 by Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, 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 Carnegie
- * Mellon University not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission. Carnegie Mellon University makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
- /* (C) Copyright 1990-1995 by Christopher J. Newman
- * All Rights Reserved.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, 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 Christopher J. Newman not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Christopher J. Newman makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * CHRISTOPHER J. NEWMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL CHRISTOPHER J. NEWMAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- * Author: Christopher J. Newman
- * Message: This is a nifty program.
- */
-
- #ifndef THINK_C
- #include <ToolUtils.h>
- #endif
- #include <Balloons.h>
- #include "macnapp.h"
-
- /* enable/disable menus for a moveable modal dialog
- */
- void NAmodalMenus(int begin)
- {
- short i, end;
- MenuHandle mh;
-
- /* unhilite menus */
- HiliteMenu(0);
-
- /* everything but the edit/apple/help menus */
- for (i = mFile; (mh = NAmenuh(i)); ++i) {
- if (i != mEdit) {
- if (begin) DisableItem(mh, 0);
- else EnableItem(mh, 0);
- }
- }
-
- /* kill the help items */
- mh = NAmenuh(mApple);
- i = NAappleitems;
- if (NAhelpcount) {
- HMGetHelpMenuHandle(&mh);
- i = NAhelpcount + 1;
- }
- for (end = NAhelpitems + i; i <= end; ++i) {
- if (begin) DisableItem(mh, i);
- else EnableItem(mh, i);
- }
-
- DrawMenuBar();
- }
-
- /* enable/disable a control in a dialog window
- */
- void NAenableDItem(DialogPtr dialog, short item, Boolean on)
- {
- short type;
- Handle ctrl;
- short ty;
- Rect box;
-
- GetDItem(dialog, item, &ty, &ctrl, &box);
- type = ty;
- if (on) type &= ~itemDisable;
- else type |= itemDisable;
- if (type == (editText | itemDisable)) {
- type = statText;
- } else if (type == statText) {
- type = editText;
- }
- SetDItem(dialog, item, type, ctrl, &box);
- }
-
- /* hilite a control in a dialog window
- */
- void NAhiliteDItem(DialogPtr dialog, short item, short how)
- {
- Handle ctrl;
- short type;
- Rect box;
- PenState tmpPen;
-
- GetDItem(dialog, item, &type, &ctrl, &box);
- if (type & ctrlItem) {
- HiliteControl((ControlHandle) ctrl, how);
- } else if (type & (statText | editText)) {
- GetPenState(&tmpPen);
- PenNormal();
- if (how == 255) PenPat(QD(gray));
- InsetRect(&box, -3, -3);
- FrameRect(&box);
- SetPenState(&tmpPen);
- }
- }
-
- /* make an item visible/invisible in a dialog window
- */
- void NAvisibleDItem(DialogPtr dialog, short item, Boolean show)
- {
- if (show) ShowDItem(dialog, item);
- else HideDItem(dialog, item);
- }
-
- /* set the text in a dialog item
- */
- void NAsetIText(DialogPtr dialog, short item, PCstr *str)
- {
- Handle texth;
-
- NAgetDHandle(dialog, item, &texth);
- SetIText(texth, str);
- }
-
- /* get the text in a dialog item
- */
- void NAgetIText(DialogPtr dialog, short item, PCstr *str)
- {
- Handle texth;
-
- NAgetDHandle(dialog, item, &texth);
- GetIText(texth, str);
- SetClen(str);
- }
-
- /* set the appropriate radio buttons
- */
- short NAradioSet(DialogPtr dialog, short firstitem, short lastitem, short setting)
- {
- short item;
- ControlHandle ctrl;
-
- for (item = firstitem; item <= lastitem; item++) {
- NAgetDHandle(dialog, item, &ctrl);
- SetCtlValue(ctrl, item == setting ? 1 : 0);
- }
-
- return (setting - firstitem);
- }
-
- /* get the itemno of the active radio button
- */
- short NAradioGet(DialogPtr dialog, short firstitem, short lastitem)
- {
- short item;
- ControlHandle ctrl;
-
- for (item = firstitem; item <= lastitem; item++) {
- NAgetDHandle(dialog, item, &ctrl);
- if (GetCtlValue(ctrl)) return (item);
- }
-
- return (firstitem);
- }
-
- /* handle the edit menu for a dialog window
- */
- short NAdialogMenu(na_win *win, WORD menu, WORD item)
- {
- MenuHandle mh = NAmenuh(mEdit);
- DialogPeek dpeek = (DialogPeek) win->pwin;
- short result = NA_NOTPROCESSED;
-
- switch (menu) {
- case 0:
- if ((*dpeek->textH)->selStart != (*dpeek->textH)->selEnd) {
- EnableItem(mh, iCopy);
- EnableItem(mh, iCut);
- EnableItem(mh, iClear);
- }
- EnableItem(mh, iPaste);
- if ((*dpeek->textH)->teLength > 0) EnableItem(mh, iSelAll);
- break;
- case mEdit:
- switch (item) {
- case iCut:
- DlgCut(win->pwin);
- ZeroScrap();
- TEToScrap();
- break;
- case iCopy:
- DlgCopy(win->pwin);
- ZeroScrap();
- TEToScrap();
- break;
- case iClear:
- DlgDelete(win->pwin);
- break;
- case iPaste:
- DlgPaste(win->pwin);
- break;
- case iSelAll:
- SelIText(win->pwin, dpeek->editField + 1, 0, 32767);
- break;
- }
- result = NA_PROCESSED;
- break;
- }
- if (menu != 0) DisableItem(mh, iSelAll);
-
- return (result);
- }
-