source: tags/arb_5.1/AWT/AWT_map_key.cxx

Last change on this file was 3230, checked in by westram, 20 years ago
  • fixed "array subscript has type `char'"
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <aw_root.hxx>
5#include <aw_device.hxx>
6#include <aw_window.hxx>
7#include "awt_map_key.hxx"
8
9ed_key::ed_key(void)
10{
11    int i;
12    for (i=0;i<256;i++) map[i] = i;
13}
14
15char ed_key::map_key(char k){
16    int i = k & 0xff;
17    return map[i];
18}
19
20void ed_rehash_mapping(AW_root *awr, ed_key *ek)
21{
22    int i;
23    for (i=0;i<256;i++) ek->map[i] = i;
24    char source[256];
25    char dest[256];
26    char *ps,*pd;
27    long enable = awr->awar("key_mapping/enable")->read_int();
28    if (enable){
29        for (i=0;i<MAX_MAPPED_KEYS;i++) {
30            sprintf(source,"key_mapping/key_%i/source",i);
31            sprintf(dest,"key_mapping/key_%i/dest",i);
32            ps = awr->awar(source)->read_string();
33            pd = awr->awar(dest)->read_string();
34            if (strlen(ps) && strlen(pd) ) {
35                ek->map[(unsigned char)ps[0]] = pd[0];
36            }
37            free(ps);
38            free(pd);
39        }
40    }
41}
42
43void ed_key::create_awars(AW_root *awr)
44{
45    char source[256];
46    char dest[256];
47    int i;
48    for (i=0;i<MAX_MAPPED_KEYS;i++) {
49        sprintf(source,"key_mapping/key_%i/source",i);
50        sprintf(dest,"key_mapping/key_%i/dest",i);
51        awr->awar_string(source,"",AW_ROOT_DEFAULT);
52        awr->awar(source)->add_callback((AW_RCB1)ed_rehash_mapping,(AW_CL)this);
53        awr->awar_string(dest,"",AW_ROOT_DEFAULT);
54        awr->awar(dest)->add_callback((AW_RCB1)ed_rehash_mapping,(AW_CL)this);
55    }
56    awr->awar_int("key_mapping/enable",1,AW_ROOT_DEFAULT);
57    awr->awar("key_mapping/enable")->add_callback((AW_RCB1)ed_rehash_mapping,(AW_CL)this);
58    ed_rehash_mapping(awr,this);
59}
60
61AW_window *create_key_map_window(AW_root *root)
62{
63    AW_window_simple *aws = new AW_window_simple;
64    aws->init( root, "KEY_MAPPING_PROPS", "KEY MAPPINGS");
65    aws->load_xfig("ed_key.fig");
66
67    aws->callback( (AW_CB0)AW_POPDOWN);
68    aws->at("close");
69    aws->create_button("CLOSE", "CLOSE","C");
70
71    aws->callback( AW_POPUP_HELP,(AW_CL)"nekey_map.hlp");
72    aws->at("help");
73    aws->create_button("HELP", "HELP","H");
74
75    aws->at("data");
76    aws->auto_space(10,0);
77
78    char source[256];
79    char dest[256];
80    int i;
81    for (i=0;i<MAX_MAPPED_KEYS;i++) {
82        sprintf(source,"key_mapping/key_%i/source",i);
83        sprintf(dest,"key_mapping/key_%i/dest",i);
84        aws->create_input_field(source,3);
85        aws->create_input_field(dest,3);
86        aws->at_newline();
87    }
88    aws->at("enable");
89    aws->create_toggle("key_mapping/enable");
90    return (AW_window *)aws;
91}
92
Note: See TracBrowser for help on using the repository browser.