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

« back to all changes in this revision

Viewing changes to spopt.c

  • Committer: Collin Pruitt
  • Date: 2009-05-12 04:30:09 UTC
  • Revision ID: collinp111@gmail.com-20090512043009-3jsjojoyrk16oass
Initial upload - updated from http://james.tooraweenah.com/darcs/netrek-client-cow/ using darcs (hince the existnace of _darcs), fully patched.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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