Develop and Download Open Source Software

Browse CVS Repository

Annotation of /malonnote/mnTextCtrl.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download) (as text)
Tue Aug 16 22:39:23 2005 UTC (18 years, 7 months ago) by maloninc
Branch: MAIN
CVS Tags: rel_1_3, rel_1_4, dev_1_3-0008, dev_1_3-0004, dev_1_3-0005, dev_1_3-0006, dev_1_3-0007, dev_1_3-0001, dev_1_3-0002, dev_1_3-0003, dev_1_5-0002, dev_1_5-0001, rel_1_7_1, dev_1_5-0004, dev_1_4-0001, dev_1_4-0003, dev_1_4-0002, dev_1_4-0005, dev_1_4-0006, dev_1_6-0005, dev_1_6-0004, dev_1_6-0003, dev_1_6-0002, dev_1_6-0001, HEAD
Changes since 1.2: +1 -1 lines
File MIME type: text/x-c++src
emac like key bind for UNIX(it's same way as Windows)

1 maloninc 1.1 #include "mnTextCtrl.h"
2    
3     BEGIN_EVENT_TABLE(mnTextCtrl, wxTextCtrl)
4     EVT_KEY_DOWN(mnTextCtrl::handleKeyDown)
5     END_EVENT_TABLE()
6    
7     void mnTextCtrl::handleKeyDown(wxKeyEvent& event)
8     {
9 maloninc 1.2 #ifdef __WXMSW__
10     MSW_handleKeyDown(event);
11     #endif
12    
13     #ifdef __WXMAC__
14     MAC_handleKeyDown(event);
15     #endif
16    
17     #ifdef __WXGTK__
18     GTK_handleKeyDown(event);
19     #endif
20     }
21    
22     void mnTextCtrl::MSW_handleKeyDown(wxKeyEvent& event)
23     {
24 maloninc 1.1 long pos, x, y, oldY;
25     bool isLineUp = FALSE;
26     bool isLineDown = FALSE;
27    
28     if(event.ControlDown()) {
29     pos = GetInsertionPoint();
30     PositionToXY(pos, &x, &y);
31    
32     switch(event.GetKeyCode()){
33     case 'N': // Next line
34     oldY = y;
35     y++;
36     isLineDown = TRUE;
37     break;
38    
39     case 'P': // Previous line
40     oldY = y;
41     y--;
42     isLineUp = TRUE;
43     break;
44    
45     case 'F': // Forward
46     x++;
47     break;
48    
49     case 'B': // Backward
50     x--;
51     break;
52    
53     case 'E': // End of line
54     x = GetLineLength(y);
55     break;
56    
57     case 'A': // Begin of line
58     x = 0;
59     break;
60    
61     case 'H': // Backspace
62     Remove(pos-1, pos);
63     x--;
64     break;
65    
66     case 'D': // Delete
67     Remove(pos, pos+1);
68     break;
69    
70     default:
71     event.Skip();
72     return;
73     }
74    
75     pos = XYToPosition(x, y);
76     if(isLineUp){
77     PositionToXY(pos, &x, &y);
78     if(y != oldY - 1){
79     pos = XYToPosition(GetLineLength(oldY-1), oldY-1);
80     }
81     }
82     else if(isLineDown) {
83     PositionToXY(pos, &x, &y);
84     if(y != oldY + 1) {
85     pos = XYToPosition(GetLineLength(oldY+1), oldY+1);
86     }
87     }
88     SetInsertionPoint(pos);
89     return;
90     }
91     event.Skip();
92     }
93 maloninc 1.2
94     void mnTextCtrl::MAC_handleKeyDown(wxKeyEvent& event)
95     {
96     long pos, x, y;
97    
98     if(event.ControlDown()) {
99     pos = GetInsertionPoint();
100     PositionToXY(pos, &x, &y);
101    
102     switch(event.GetKeyCode()){
103     case 'N': // Next line
104     y++;
105     x-=1;
106     break;
107    
108     case 'P': // Previous line
109     y--;
110     x-=1;
111     break;
112    
113     case 'F': // Forward
114     x+=0;
115     break;
116    
117     case 'B': // Backward
118     x-=2;
119     break;
120    
121     case 'E': // End of line
122     x = GetLineLength(y);
123     break;
124    
125     case 'A': // Begin of line
126     x = 0;
127     break;
128    
129     case 'H': // Backspace
130     Remove(pos-1, pos);
131     x-=2;
132     break;
133    
134     case 'D': // Delete
135     Remove(pos, pos+1);
136     x-=1;
137     break;
138    
139     default:
140     event.Skip();
141     return;
142     }
143    
144     pos = XYToPosition(x, y);
145     SetInsertionPoint(pos);
146     return;
147     }
148     event.Skip();
149     }
150    
151     void mnTextCtrl::GTK_handleKeyDown(wxKeyEvent& event)
152     {
153 maloninc 1.3 MSW_handleKeyDown(event);
154 maloninc 1.2 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26