summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-13 21:51:33 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-13 21:51:33 +0000
commit7f78db9414b3c2dd97da70ce74198f0360cdedc6 (patch)
treef39591afb980495e69fd438813e47f8273f47dd2 /crawl-ref/source/menu.cc
parentd34acfbefb3ac8ed2b22cc899976b7e9ba6a4593 (diff)
downloadcrawl-ref-7f78db9414b3c2dd97da70ce74198f0360cdedc6.tar.gz
crawl-ref-7f78db9414b3c2dd97da70ce74198f0360cdedc6.zip
Put in a very basic help browser on '+'. This is *not* a good key, I'm just
parking it here until more decisions on the browser come in. (It should probably be reachable by pressing '?' from the current '?' help screen.) It reads the manual from ../docs/crawl_manual.txt, so you'd better put it there! Yes, this is a hack and will have to be done better. You can press the letter of the section (e.g., 'j' or 'J') to jump to that section. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@627 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc53
1 files changed, 53 insertions, 0 deletions
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index dba1d91b2a..ce1eac47b7 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -1375,3 +1375,56 @@ int linebreak_string( std::string& s, int wrapcol, int maxcol )
}
return breakcount;
}
+
+bool menu_browser::jump_to( int i )
+{
+ if ( i == first_entry + 1 )
+ return false;
+ if ( i == 0 )
+ first_entry = 0;
+ else
+ first_entry = i - 1;
+ return true;
+}
+
+bool menu_browser::process_key( int keyin )
+{
+ bool repaint = false;
+ switch ( keyin )
+ {
+ case 0:
+ return true;
+ case CK_ENTER:
+ case CK_ESCAPE:
+ return false;
+ return false;
+ case ' ': case '+': case CK_PGDN: case '>': case '\'':
+ repaint = page_down();
+ break;
+ case '-': case CK_PGUP: case '<': case ';':
+ repaint = page_up();
+ break;
+ case CK_UP:
+ repaint = line_up();
+ break;
+ case CK_DOWN:
+ repaint = line_down();
+ break;
+ default:
+ // look for it as a hotkey
+ for ( unsigned int i = 0; i < items.size(); ++i )
+ {
+ // found it
+ if ( items[i]->is_hotkey(keyin) )
+ {
+ repaint = jump_to(i);
+ break;
+ }
+ }
+ break;
+ }
+
+ if (repaint)
+ draw_menu();
+ return true;
+}