Index: picedit.c ================================================================== --- picedit.c +++ picedit.c @@ -956,10 +956,31 @@ screen_message(sqlite3_errmsg(userdb)); return 0; } return 1; } + +static void rename_picture(void) { + sqlite3_stmt*st; + const char*s=screen_prompt("Old name:"); + int i; + if(!s || !*s) return; + if(sqlite3_prepare_v2(userdb,"UPDATE `PICEDIT` SET `NAME`=REPLACE(?2||'.IMG','.IMG.IMG','.IMG') WHERE `NAME`=?1||'.IMG';",-1,&st,0)) { + screen_message(sqlite3_errmsg(userdb)); + return; + } + sqlite3_bind_text(st,1,s,-1,SQLITE_TRANSIENT); + s=screen_prompt("New name:"); + if(!s || !*s) { + sqlite3_finalize(st); + return; + } + sqlite3_bind_text(st,2,s,-1,SQLITE_TRANSIENT); + i=sqlite3_step(st); + sqlite3_finalize(st); + if(i!=SQLITE_DONE) screen_message(sqlite3_errmsg(userdb)); +} static void set_caption(void) { char buf[256]; snprintf(buf,255,"Free Hero Mesh - %s - Picture",basefilename); SDL_WM_SetCaption(buf,buf); @@ -989,11 +1010,11 @@ sqlite3_bind_int(st,1,screen->h/8-1); sqlite3_bind_int(st,2,sc); SDL_LockSurface(screen); r.x=r.y=0; r.w=screen->w; r.h=screen->h; SDL_FillRect(screen,&r,0xF0); - draw_text(0,0," Save/Quit Add Delete Edit",0xF0,0xFB); + draw_text(0,0," Save/Quit Add Delete Edit Rename",0xF0,0xFB); n=0; while((i=sqlite3_step(st))==SQLITE_ROW) { ids[n++]=sqlite3_column_int64(st,0); draw_text(16,8*n,sqlite3_column_text(st,1),0xF0,0xF7); if(8*n+8>screen->h-8) break; @@ -1032,10 +1053,13 @@ goto redraw; case SDLK_F3: *ids=ask_picture_id("Edit:"); if(*ids) edit_picture(*ids); goto redraw; + case SDLK_F4: + rename_picture(); + goto redraw; } break; case SDL_MOUSEMOTION: set_cursor(XC_arrow); break; Index: picedit.doc ================================================================== --- picedit.doc +++ picedit.doc @@ -23,10 +23,12 @@ The F1 key adds a picture. The F2 key deletes a picture by name. The F3 key allows entering a name of a picture to edit. + +The F4 key renames a picture. === Drawing === The following keyboard commands are available: