Develop and Download Open Source Software

Browse CVS Repository

Contents of /malonnote/mnTextCtrl.cpp

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


Revision 1.3 - (show 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
Error occurred while calculating annotation data.
emac like key bind for UNIX(it's same way as Windows)

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 #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 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
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 MSW_handleKeyDown(event);
154 }

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