[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15115] branches/soc-2008-quorn/source/ blender: Overwrite mode added, toggled with INSERTKEY
Ian Thompson
quornian at googlemail.com
Wed Jun 4 14:32:06 CEST 2008
Revision: 15115
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15115
Author: quorn
Date: 2008-06-04 14:32:06 +0200 (Wed, 04 Jun 2008)
Log Message:
-----------
Overwrite mode added, toggled with INSERTKEY
Modified Paths:
--------------
branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h
branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c
branches/soc-2008-quorn/source/blender/makesdna/DNA_space_types.h
branches/soc-2008-quorn/source/blender/src/drawtext.c
branches/soc-2008-quorn/source/blender/src/space.c
Modified: branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h
===================================================================
--- branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h 2008-06-04 12:27:32 UTC (rev 15114)
+++ branches/soc-2008-quorn/source/blender/blenkernel/BKE_text.h 2008-06-04 12:32:06 UTC (rev 15115)
@@ -81,6 +81,7 @@
void txt_split_curline (struct Text *text);
void txt_backspace_char (struct Text *text);
int txt_add_char (struct Text *text, char add);
+int txt_replace_char (struct Text *text, char add);
void txt_find_panel (struct SpaceText *st, int again);
void run_python_script (struct SpaceText *st);
int jumptoline_interactive (struct SpaceText *st);
Modified: branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c
===================================================================
--- branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c 2008-06-04 12:27:32 UTC (rev 15114)
+++ branches/soc-2008-quorn/source/blender/blenkernel/intern/text.c 2008-06-04 12:32:06 UTC (rev 15115)
@@ -2140,6 +2140,34 @@
return 1;
}
+int txt_replace_char (Text *text, char add)
+{
+ char del;
+
+ if (!text) return 0;
+ if (!text->curl) return 0;
+
+ /* If text is selected or we're at the end of the line just use txt_add_char */
+ if (text->curc==text->curl->len || text->sell!=text->curl || text->selc!=text->curc || add=='\n') {
+ return txt_add_char(text, add);
+ }
+
+ del= text->curl->line[text->curc];
+ text->curl->line[text->curc]= (unsigned char) add;
+ text->curc++;
+ txt_pop_sel(text);
+
+ txt_make_dirty(text);
+ txt_clean_text(text);
+
+ /* Should probably create a new op for this */
+ if(!undoing) {
+ txt_undo_add_charop(text, UNDO_DEL, del);
+ txt_undo_add_charop(text, UNDO_INSERT, add);
+ }
+ return 1;
+}
+
void indent(Text *text)
{
int len, num;
Modified: branches/soc-2008-quorn/source/blender/makesdna/DNA_space_types.h
===================================================================
--- branches/soc-2008-quorn/source/blender/makesdna/DNA_space_types.h 2008-06-04 12:27:32 UTC (rev 15114)
+++ branches/soc-2008-quorn/source/blender/makesdna/DNA_space_types.h 2008-06-04 12:32:06 UTC (rev 15115)
@@ -281,7 +281,7 @@
int tabnumber;
int currtab_set;
int showsyntax;
- int unused_padd;
+ int overwrite;
float pix_per_line;
Modified: branches/soc-2008-quorn/source/blender/src/drawtext.c
===================================================================
--- branches/soc-2008-quorn/source/blender/src/drawtext.c 2008-06-04 12:27:32 UTC (rev 15114)
+++ branches/soc-2008-quorn/source/blender/src/drawtext.c 2008-06-04 12:32:06 UTC (rev 15115)
@@ -634,10 +634,11 @@
}
static void draw_cursor(SpaceText *st) {
- int h, x, i;
+ int h, x, i, w;
Text *text= st->text;
TextLine *linef, *linel;
int charf, charl;
+ char ch[2];
if (text->curl==text->sell && text->curc==text->selc) {
x= text_draw(st, text->curl->line, st->left, text->curc, 0, 0, 0, NULL);
@@ -645,9 +646,19 @@
if (x) {
h= txt_get_span(text->lines.first, text->curl) - st->top;
- BIF_ThemeColor(TH_HILITE);
-
- glRecti(x-1, curarea->winy-st->lheight*(h)-2, x+1, curarea->winy-st->lheight*(h+1)-2);
+ if (st->overwrite) {
+ ch[0]= (unsigned char) text->curl->line[text->curc];
+ if (ch[0]=='\0') ch[0]=' ';
+ ch[1]= '\0';
+ w= BMF_GetStringWidth(spacetext_get_font(st), ch);
+ BIF_ThemeColor(TH_SHADE2);
+ glRecti(x, curarea->winy-st->lheight*(h)-2, x+w, curarea->winy-st->lheight*(h+1)-2);
+ BIF_ThemeColor(TH_HILITE);
+ glRecti(x, curarea->winy-st->lheight*(h+1)-3, x+w, curarea->winy-st->lheight*(h+1)-1);
+ } else {
+ BIF_ThemeColor(TH_HILITE);
+ glRecti(x-1, curarea->winy-st->lheight*(h)-2, x+1, curarea->winy-st->lheight*(h+1)-2);
+ }
}
} else {
int span= txt_get_span(text->curl, text->sell);
@@ -1594,7 +1605,7 @@
}
}
} else if (ascii) {
- if (txt_add_char(text, ascii)) {
+ if ((st->overwrite && txt_replace_char(text, ascii)) || txt_add_char(text, ascii)) {
if (st->showsyntax) get_format_string(st);
pop_space_text(st);
do_draw= 1;
@@ -1894,6 +1905,10 @@
pop_space_text(st);
st->currtab_set = setcurr_tab(text);
break;
+ case INSERTKEY:
+ st->overwrite= !st->overwrite;
+ do_draw= 1;
+ break;
case DOWNARROWKEY:
txt_move_down(text, G.qual & LR_SHIFTKEY);
set_tabs(text);
Modified: branches/soc-2008-quorn/source/blender/src/space.c
===================================================================
--- branches/soc-2008-quorn/source/blender/src/space.c 2008-06-04 12:27:32 UTC (rev 15114)
+++ branches/soc-2008-quorn/source/blender/src/space.c 2008-06-04 12:32:06 UTC (rev 15115)
@@ -6011,6 +6011,8 @@
st->lheight= 12;
st->showlinenrs= 0;
st->tabnumber = 4;
+ st->showsyntax= 0;
+ st->overwrite= 0;
st->currtab_set = 0;
st->top= 0;
More information about the Bf-blender-cvs
mailing list