diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-02 14:14:55 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-02 14:14:55 +0000 |
commit | 79b728ec3b58721a1cad10f26f3f1d8fb259a254 (patch) | |
tree | bad60f665a5fa04c24d533a02513eb23c82decc0 /crawl-ref/source/menu.cc | |
parent | d6998c47fdd4ff96f59b234b063291ccdf546612 (diff) | |
download | crawl-ref-79b728ec3b58721a1cad10f26f3f1d8fb259a254.tar.gz crawl-ref-79b728ec3b58721a1cad10f26f3f1d8fb259a254.zip |
Drop and pickup menus now support Ctrl-F to select all items matching a regex.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1716 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r-- | crawl-ref/source/menu.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc index 85f596b1db..10573e0f6e 100644 --- a/crawl-ref/source/menu.cc +++ b/crawl-ref/source/menu.cc @@ -207,6 +207,40 @@ bool Menu::process_key( int keyin ) } break; } + case CONTROL('F'): + { + if ( !( flags & MF_ALLOW_FILTER ) ) + break; + char linebuf[80]; + gotoxy(1,1); + clear_to_end_of_line(); + textcolor(WHITE); + cprintf("Select what? (regex) "); + textcolor(DARKGREY); + bool validline = !cancelable_get_line(linebuf, sizeof linebuf, 80); + if ( validline && linebuf[0] ) + { + text_pattern tpat(linebuf); + for ( unsigned int i = 0; i < items.size(); ++i ) + { + if ( items[i]->level == MEL_ITEM && + tpat.matches(items[i]->get_text()) ) + { + select_index(i); + if ( flags & MF_SINGLESELECT ) + { + // Return the first item found. + get_selected(&sel); + return false; + } + } + } + get_selected(&sel); + } + nav = true; + repaint = true; + break; + } default: keyin = post_process(keyin); lastch = keyin; |