summaryrefslogtreecommitdiff
path: root/src/testApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/testApp.cpp')
-rwxr-xr-xsrc/testApp.cpp45
1 files changed, 33 insertions, 12 deletions
diff --git a/src/testApp.cpp b/src/testApp.cpp
index 22c2897..2147e71 100755
--- a/src/testApp.cpp
+++ b/src/testApp.cpp
@@ -16,17 +16,15 @@ maybe draw into an FBO in order to put a window in a window
method to retreive text as a single string with \n's
-special key functions including ENTER, BACKSPACE, DELETE, ARROW KEYS
-
-drawing functionality: make line breaks (easier with mono font)
-
set box size - draw scrollbar & set scrollpoint - drag to scroll
+architecture :- text editor in a box or a window?
+
insertion point/ selection - set with mouse -
get and set clipboard (ofxFensterManager.h)
-
-
+
+
vector insert a problem performance wise?
you need to use an iterator to insert into a vector anyway- may as well use a list
@@ -81,10 +79,34 @@ void editorWindow::draw(){
#define OF_KEY_INSERT
*/
void editorWindow::keyPressed(int key){
+ //printf("%i\n",key);
vector<string>::iterator i;
string t;
int l;
switch (key) {
+ case OF_KEY_DEL:
+ if (insertionPoint.column<text[insertionPoint.row].size()) {
+ text[insertionPoint.row].erase(insertionPoint.column,1);
+ }
+ else if (insertionPoint.row<text.size()-1) {
+ text[insertionPoint.row]+=text[insertionPoint.row+1];
+ for (i=text.begin(),l=0;l<=insertionPoint.row;i++,l++) {}
+ text.erase(i);
+ }
+ break;
+ case OF_KEY_BACKSPACE:
+ if (insertionPoint.column) {
+ text[insertionPoint.row].erase(insertionPoint.column-1,1);
+ insertionPoint.column--;
+ }
+ else if (insertionPoint.row) {
+ insertionPoint.column=text[insertionPoint.row-1].size();
+ text[insertionPoint.row-1]+=text[insertionPoint.row];
+ for (i=text.begin(),l=0;l<=insertionPoint.row;i++,l++) {}
+ text.erase(i);
+ insertionPoint.row--;
+ }
+ break;
case OF_KEY_RETURN:
for (i=text.begin(),l=0;l<=insertionPoint.row;i++,l++) {}
t=text[insertionPoint.row].substr(insertionPoint.column);
@@ -120,17 +142,16 @@ void editorWindow::keyPressed(int key){
}
break;
case 270: //OF_KEY_DOWN is wrong?
- if (text.size()>insertionPoint.row) {
+ if (insertionPoint.row<text.size()) {
insertionPoint.row++;
insertionPoint.column=min(insertionPoint.column,(int)text[insertionPoint.row].size());
}
break;
default:
- //char buf[2];
- //sprintf(buf,"%c",key);
- //text[insertionPoint.row]+=buf;
- text[insertionPoint.row].insert(insertionPoint.column,1,(char)key);
- insertionPoint.column++;
+ if (key<256) {
+ text[insertionPoint.row].insert(insertionPoint.column,1,(char)key);
+ insertionPoint.column++;
+ }
}
}
void editorWindow::keyReleased(int key){