diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/testApp.cpp | 45 |
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){ |
