|
|
1.1 ! root 1: #ifndef lint ! 2: static char rcs_id[] = "$Header: folder.c,v 1.11 87/09/11 08:18:05 toddb Exp $"; ! 3: #endif lint ! 4: /* ! 5: * COPYRIGHT 1987 ! 6: * DIGITAL EQUIPMENT CORPORATION ! 7: * MAYNARD, MASSACHUSETTS ! 8: * ALL RIGHTS RESERVED. ! 9: * ! 10: * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND ! 11: * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ! 12: * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ! 13: * ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ! 14: * ! 15: * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS, ! 16: * APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT ! 17: * SET FORTH ABOVE. ! 18: * ! 19: * ! 20: * Permission to use, copy, modify, and distribute this software and its ! 21: * documentation for any purpose and without fee is hereby granted, provided ! 22: * that the above copyright notice appear in all copies and that both that ! 23: * copyright notice and this permission notice appear in supporting documentation, ! 24: * and that the name of Digital Equipment Corporation not be used in advertising ! 25: * or publicity pertaining to distribution of the software without specific, ! 26: * written prior permission. ! 27: */ ! 28: ! 29: /* folder.c -- implement buttons relating to folders and other globals. */ ! 30: ! 31: #include "xmh.h" ! 32: ! 33: ! 34: /* Close this toc&view scrn. If this is the last toc&view, quit xmh. */ ! 35: ! 36: void ExecCloseScrn(scrn) ! 37: Scrn scrn; ! 38: { ! 39: extern void exit(); ! 40: Toc toc; ! 41: int i, count; ! 42: count = 0; ! 43: for (i=0 ; i<numScrns ; i++) ! 44: if (scrnList[i]->kind == STtocAndView && scrnList[i]->mapped) ! 45: count++; ! 46: if (count <= 1) { ! 47: for (i = numScrns - 1; i >= 0; i--) ! 48: if (scrnList[i] != scrn) { ! 49: if (MsgSetScrn((Msg) NULL, scrnList[i])) ! 50: return; ! 51: } ! 52: for (i = 0; i < numFolders; i++) { ! 53: toc = folderList[i]; ! 54: if (TocConfirmCataclysm(toc)) ! 55: return; ! 56: } ! 57: if (MsgSetScrn((Msg) NULL, scrn)) ! 58: return; ! 59: DestroyPromptWindow(); ! 60: /* for (i = 0; i < numFolders; i++) { ! 61: toc = folderList[i]; ! 62: if (toc->scanfile && toc->curmsg) ! 63: CmdSetSequence(toc, "cur", MakeSingleMsgList(toc->curmsg)); ! 64: } ! 65: */ ! 66: exit(0); ! 67: } ! 68: else { ! 69: if (MsgSetScrn((Msg) NULL, scrn)) return; ! 70: DestroyScrn(scrn); ! 71: } ! 72: } ! 73: ! 74: ! 75: /* Open the selected folder in this screen. */ ! 76: ! 77: void ExecOpenFolder(scrn) ! 78: Scrn scrn; ! 79: { ! 80: Toc toc; ! 81: toc = SelectedToc(scrn); ! 82: TocSetScrn(toc, scrn); ! 83: } ! 84: ! 85: ! 86: ! 87: /* Compose a new message. */ ! 88: ! 89: void ExecComposeMessage(scrn) ! 90: Scrn scrn; ! 91: { ! 92: Msg msg; ! 93: scrn = NewCompScrn(); ! 94: msg = TocMakeNewMsg(DraftsFolder); ! 95: MsgLoadComposition(msg); ! 96: MsgSetTemporary(msg); ! 97: MsgSetReapable(msg); ! 98: (void) MsgSetScrnForComp(msg, scrn); ! 99: MapScrn(scrn); ! 100: } ! 101: ! 102: ! 103: ! 104: /* Make a new scrn displaying the given folder. */ ! 105: ! 106: void ExecOpenFolderInNewWindow(scrn) ! 107: Scrn scrn; ! 108: { ! 109: Toc toc; ! 110: toc = SelectedToc(scrn); ! 111: scrn = CreateNewScrn(STtocAndView); ! 112: TocSetScrn(toc, scrn); ! 113: MapScrn(scrn); ! 114: } ! 115: ! 116: ! 117: ! 118: /* Create a new xmh folder. */ ! 119: ! 120: void ExecCreateFolder(scrn) ! 121: Scrn scrn; ! 122: { ! 123: void CreateFolder(); ! 124: MakePrompt(scrn, "Create folder named:", CreateFolder); ! 125: } ! 126: ! 127: ! 128: ! 129: /* Delete the selected folder. Requires confirmation! */ ! 130: ! 131: void ExecDeleteFolder(scrn) ! 132: Scrn scrn; ! 133: { ! 134: char *foldername, str[100]; ! 135: Toc toc; ! 136: int i; ! 137: foldername = BBoxNameOfButton(scrn->curfolder); ! 138: toc = TocGetNamed(foldername); ! 139: if (TocConfirmCataclysm(toc)) return; ! 140: (void) sprintf(str, "Are you sure you want to destroy %s?", foldername); ! 141: if (!Confirm(scrn, str)) return; ! 142: TocSetScrn(toc, (Scrn) NULL); ! 143: TocDeleteFolder(toc); ! 144: for (i=0 ; i<numScrns ; i++) ! 145: if (scrnList[i]->folderbuttons) ! 146: BBoxDeleteButton(BBoxFindButtonNamed(scrnList[i]->folderbuttons, ! 147: foldername)); ! 148: } ! 149: ! 150: ! 151: ! 152: /* Debugging stuff only. */ ! 153: void ExecSyncOn() ! 154: { ! 155: #ifdef X11 ! 156: (void) XSynchronize(theDisplay, TRUE); ! 157: #endif ! 158: } ! 159: void ExecSyncOff() ! 160: { ! 161: #ifdef X11 ! 162: (void) XSynchronize(theDisplay, FALSE); ! 163: #endif ! 164: } ! 165: ! 166: ! 167: ! 168: /* Create a new folder with the given name. */ ! 169: ! 170: void CreateFolder(name) ! 171: char *name; ! 172: { ! 173: Toc toc; ! 174: int i, position; ! 175: extern void PrepareDoubleClickFolder(); ! 176: for (i=0 ; name[i] > ' ' ; i++) ; ! 177: name[i] = 0; ! 178: toc = TocGetNamed(name); ! 179: if (toc || i == 0) { ! 180: Feep(); ! 181: return; ! 182: } ! 183: toc = TocCreateFolder(name); ! 184: if (toc == NULL) { ! 185: Feep(); ! 186: return; ! 187: } ! 188: for (position = 0; position < numFolders; position++) ! 189: if (folderList[position] == toc) ! 190: break; ! 191: for (i = 0; i < numScrns; i++) ! 192: if (scrnList[i]->folderbuttons) ! 193: BBoxAddButton(scrnList[i]->folderbuttons, name, ! 194: PrepareDoubleClickFolder, position, TRUE); ! 195: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.