~netrek-developers/netrek-client-cow/trunk

1 by Collin Pruitt
Initial upload - updated from http://james.tooraweenah.com/darcs/netrek-client-cow/ using darcs (hince the existnace of _darcs), fully patched.
1
/*
2
 * spopt.c
3
 * 
4
 * Functions to look after the Short Packet window.
5
 */
6
#include "config.h"
7
8
#ifdef SHORT_PACKETS
9
#include "copyright.h"
10
11
#include <stdio.h>
12
13
#include "Wlib.h"
14
#include "defs.h"
15
#include "struct.h"
16
#include "data.h"
17
#include "packets.h"
18
19
#include "short.h"
20
21
#include "spopt.h"
22
23
void    sprefresh(int i)
24
/*
25
 * Refresh button i in the Short Packed Window.
26
 * 
27
 * Buttons are:
28
 * SPK_VFIELD           - Variable short packets.
29
 * SPK_MFIELD           - Messages.
30
 * SPK_KFIELD           - Kill Messages.
31
 * SPK_WFIELD           - Warn Messages.
32
 * SPK_TFIELD           - Recieve Threshold.
33
 * SPK_DONE             - Done.
34
 */
35
{
36
  char    buf[BUFSIZ];
37
38
  switch (i)
39
    {
40
41
    case SPK_VFIELD:
42
      sprintf(buf, "%seceive variable and short packets",
43
	      recv_short ? "R" : "Don't r");
44
      break;
45
    case SPK_MFIELD:
46
      sprintf(buf, "%seceive messages", recv_mesg ? "R" : "Don't r");
47
      break;
48
    case SPK_KFIELD:
49
      sprintf(buf, "%seceive kill messages", recv_kmesg ? "R" : "Don't r");
50
      break;
51
    case SPK_WFIELD:
52
      sprintf(buf, "%seceive warning messages", recv_warn ? "R" : "Don't r");
53
      break;
54
    case SPK_TFIELD:
55
      sprintf(buf, "Receive threshold: %s_", recv_threshold_s);
56
      break;
57
    case SPK_DONE:
58
      sprintf(buf, "Done");
59
      break;
60
    }
61
62
  W_WriteText(spWin, 0, i, textColor, buf, strlen(buf), 0);
63
}
64
65
66
void    spaction(W_Event * data)
67
/*
68
 * Handle a button press.
69
 */
70
{
71
  int     v;
72
  register int i;
73
  register char *cp;
74
75
  switch (data->y)
76
    {
77
78
    case SPK_VFIELD:
79
      if (data->type == W_EV_BUTTON)
80
	{
81
	  if (recv_short)
82
	    sendShortReq(SPK_VOFF);
83
	  else
84
	    sendShortReq(SPK_VON);
85
	}
86
      break;
87
88
    case SPK_MFIELD:
89
      if (data->type == W_EV_BUTTON)
90
	{
91
	  if (recv_mesg)
92
	    sendShortReq(SPK_MOFF);
93
	  else
94
	    sendShortReq(SPK_MON);
95
	}
96
      break;
97
98
    case SPK_KFIELD:
99
      if (data->type == W_EV_BUTTON)
100
	{
101
	  if (recv_kmesg)
102
	    sendShortReq(SPK_M_NOKILLS);
103
	  else
104
	    sendShortReq(SPK_M_KILLS);
105
	}
106
      break;
107
108
    case SPK_WFIELD:
109
      if (data->type == W_EV_BUTTON)
110
	{
111
	  if (recv_warn)
112
	    sendShortReq(SPK_M_NOWARN);
113
	  else
114
	    sendShortReq(SPK_M_WARN);
115
	}
116
      break;
117
118
    case SPK_TFIELD:
119
      if (data->type == W_EV_KEY)
120
	{
121
	  switch (data->key)
122
	    {
123
	    case '\b':
124
	    case '\177':
125
	      cp = recv_threshold_s;
126
	      i = strlen(cp);
127
	      if (i > 0)
128
		{
129
		  cp += i - 1;
130
		  *cp = '\0';
131
		}
132
	      break;
133
	    case '\025':
134
	    case '\030':
135
	      recv_threshold_s[0] = '\0';
136
	      break;
137
138
	    default:
139
	      if (data->key >= '0' && data->key <= '9')
140
		{
141
		  cp = recv_threshold_s;
142
		  i = strlen(cp);
143
		  if (i < 4)
144
		    {
145
		      cp += i;
146
		      cp[1] = '\0';
147
		      cp[0] = data->key;
148
		    }
149
		}
150
	      break;
151
	    }
152
	  sprefresh(SPK_TFIELD);
153
	}
154
      break;
155
156
    case SPK_DONE:
157
158
      if (data->type == W_EV_BUTTON)
159
	{
160
	  if (sscanf(recv_threshold_s, "%d", &v) != 1)
161
	    strcpy(recv_threshold_s, "0");
162
	  else if (recv_threshold != v)
163
	    {
164
	      recv_threshold = v;
165
	      sendThreshold(recv_threshold);
166
	    }
167
168
	  spdone();
169
	}
170
      break;
171
172
    }
173
}
174
175
176
void    spwindow(void)
177
{
178
  register int i;
179
180
  for (i = 0; i < SPK_NUMFIELDS; i++)
181
    sprefresh(i);
182
183
  /* Map window */
184
  W_MapWindow(spWin);
185
}
186
187
188
void    spdone(void)
189
{
190
  /* Unmap window */
191
  W_UnmapWindow(spWin);
192
}
193
#endif