summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fensterTextEditor.layout2
-rwxr-xr-xsrc/testApp.cpp45
2 files changed, 34 insertions, 13 deletions
diff --git a/fensterTextEditor.layout b/fensterTextEditor.layout
index 9064323..a5124bb 100644
--- a/fensterTextEditor.layout
+++ b/fensterTextEditor.layout
@@ -2,7 +2,7 @@
<CodeBlocks_layout_file>
<ActiveTarget name="Debug" />
<File name="src/testApp.cpp" open="1" top="1" tabpos="1">
- <Cursor position="2633" topLine="71" />
+ <Cursor position="738" topLine="7" />
</File>
<File name="src/testApp.h" open="1" top="0" tabpos="2">
<Cursor position="666" topLine="21" />
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){