Subversion Repositories SvarDOS

Rev

Rev 1543 | Rev 1545 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1543 Rev 1544
Line 159... Line 159...
159
}
159
}
160
 
160
 
161
 
161
 
162
static void ui_getstring(const char *query, char *s, unsigned short maxlen) {
162
static void ui_getstring(const char *query, char *s, unsigned short maxlen) {
163
  unsigned short len = 0;
163
  unsigned short len = 0;
164
  unsigned char y, x;
164
  unsigned char x;
165
  int k;
165
  int k;
166
 
166
 
167
  if (maxlen == 0) return;
167
  if (maxlen == 0) return;
168
  maxlen--; /* make room for the nul terminator */
168
  maxlen--; /* make room for the nul terminator */
169
 
169
 
170
  y = screenlastrow;
-
 
171
 
-
 
172
  /* print query string */
170
  /* print query string */
173
  x = mdr_cout_str(y, 0, query, SCHEME_STBAR3, 40);
171
  x = mdr_cout_str(screenlastrow, 0, query, SCHEME_STBAR3, 40);
174
  mdr_cout_char_rep(y, x++, ' ', SCHEME_STBAR3, screenw - x);
172
  mdr_cout_char_rep(screenlastrow, x++, ' ', SCHEME_STBAR3, screenw - x);
175
 
173
 
176
  for (;;) {
174
  for (;;) {
177
    mdr_cout_locate(y, x + len);
175
    mdr_cout_locate(screenlastrow, x + len);
178
    k = mdr_dos_getkey2();
176
    k = mdr_dos_getkey2();
179
 
177
 
180
    switch (k) {
178
    switch (k) {
181
      case 0x1b: /* ESC */
179
      case 0x1b: /* ESC */
182
        s[0] = 0;
180
        s[0] = 0;
Line 185... Line 183...
185
        s[len] = 0;
183
        s[len] = 0;
186
        return;
184
        return;
187
      case 0x08: /* BKSPC */
185
      case 0x08: /* BKSPC */
188
        if (len > 0) {
186
        if (len > 0) {
189
          len--;
187
          len--;
190
          mdr_cout_char(y, x + len, ' ', SCHEME_STBAR3);
188
          mdr_cout_char(screenlastrow, x + len, ' ', SCHEME_STBAR3);
191
        }
189
        }
192
        break;
190
        break;
193
      default:
191
      default:
194
        if ((k <= 0xff) && (k >= ' ') && (len < maxlen)) {
192
        if ((k <= 0xff) && (k >= ' ') && (len < maxlen)) {
195
          mdr_cout_char(y, x + len, k, SCHEME_STBAR3);
193
          mdr_cout_char(screenlastrow, x + len, k, SCHEME_STBAR3);
196
          s[len++] = k;
194
          s[len++] = k;
197
        }
195
        }
198
    }
196
    }
199
  }
197
  }
200
 
198