|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 2847 (0xb1f) Types: TextFile Names: »tool.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/Sun/Mines/tool.c«
/* * handle the tool environment * * Copyright (c) 1987 Tom Anderson; 20831 Frank Waters Road; * Stanwood, WA 98282. All rights reserved. */ static char copyright[] = "Copyright 1987 Tom Anderson"; #include <stdio.h> #include <suntool/tool_hs.h> #include <suntool/panel.h> #include <suntool/gfxsw.h> #include <sys/resource.h> #include <sys/ioctl.h> #include <strings.h> #include "mines.h" struct tool * MinesTool; char ** ToolAttrs = (char **) NULL; char * ToolName; /* * iconic form of window */ unsigned short IconImage[] = { #include "mines.icon" }; DEFINE_ICON_FROM_IMAGE(WindowIcon, IconImage); sigwinched() { tool_sigwinch(MinesTool); } /* * parse the tool args. */ void ParseToolArgs(argc, argv) int *argc; char **argv; { ToolName = argv[0]; (*argc)--; argv++; if (tool_parse_all(argc, argv, &ToolAttrs, ToolName) == -1) { tool_usage(ToolName); exit(1); } (*argc)++; } /* * set up the tool environment */ void InitTool() { register unsigned int height; register struct toolsw * twsp; if ((MinesTool = tool_make( WIN_LABEL, ToolName, WIN_ICON, &WindowIcon, WIN_ATTR_LIST, ToolAttrs, WIN_WIDTH, SIDE_SIZE * (SquareWidth-1) + 2 * tool_borderwidth(MinesTool) - 1, /* * NOTE: The following line was unnecessary in Sun release 2.2, * but is necessary in release 3.0. For some unknown reason, the * call to tool_set_attributes following the call to InitBoardSW * now fails to uncover the board area that was obscured by the * default tool height being too small (note that the tool has not * been installed yet). */ WIN_HEIGHT, 2000, 0)) == (struct tool *) NULL) { fputs("Can't make tool\n", stderr); exit(1); } tool_free_attribute_list(ToolAttrs); /* initialize the subwindows */ InitLevelSW(); InitMsgSW(); InitBoardSW(); /* * add up subwindow heights and force the tool to the resulting size */ height = tool_stripeheight(MinesTool) + tool_borderwidth(MinesTool) - tool_subwindowspacing(MinesTool); for (twsp = MinesTool->tl_sw ; twsp != (struct toolsw *) 0 ; twsp = twsp->ts_next) height += twsp->ts_height + tool_subwindowspacing(MinesTool); /* * NOTE: under 2.2, the above calculation yielded the correct height. * under 3.0, we need to add a few pixels to make it come out right (the * reason is not yet known). */ height += 2; tool_set_attributes(MinesTool, WIN_HEIGHT, height, 0); signal(SIGWINCH, sigwinched); } void RunTool() { /* * NOTE: this is another difference between release 2.2 and 3.0: * in release 2.2, the SIGWINCH handler would get called once at the * outset to draw the board area; in release 3.0, this doesn't happen. */ DrawBoard(); tool_select(MinesTool, 0); tool_destroy(MinesTool); }