[Lldb-commits] [lldb] r200326 - Show help dialog the first time the "gui" is run to help users find their way.
Greg Clayton
gclayton at apple.com
Tue Jan 28 10:41:35 PST 2014
Author: gclayton
Date: Tue Jan 28 12:41:35 2014
New Revision: 200326
URL: http://llvm.org/viewvc/llvm-project?rev=200326&view=rev
Log:
Show help dialog the first time the "gui" is run to help users find their way.
Modified:
lldb/trunk/source/Core/IOHandler.cpp
Modified: lldb/trunk/source/Core/IOHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/IOHandler.cpp?rev=200326&r1=200325&r2=200326&view=diff
==============================================================================
--- lldb/trunk/source/Core/IOHandler.cpp (original)
+++ lldb/trunk/source/Core/IOHandler.cpp Tue Jan 28 12:41:35 2014
@@ -1313,7 +1313,12 @@ type summary add -s "${var.origin%S} ${v
bounds.size.height -= 2*inset_h;
}
}
- WindowSP help_window_sp = GetParent()->CreateSubWindow("Help", bounds, true);
+ WindowSP help_window_sp;
+ Window *parent_window = GetParent();
+ if (parent_window)
+ help_window_sp = parent_window->CreateSubWindow("Help", bounds, true);
+ else
+ help_window_sp = CreateSubWindow("Help", bounds, true);
help_window_sp->SetDelegate(WindowDelegateSP(help_delegate_ap.release()));
return true;
}
@@ -3806,6 +3811,7 @@ CursesKeyToCString (int ch)
case KEY_EVENT: return "We were interrupted by an event";
case KEY_RETURN: return "return";
case ' ': return "space";
+ case '\t': return "tab";
case KEY_ESCAPE: return "escape";
default:
if (isprint(ch))
@@ -3977,18 +3983,58 @@ public:
{
return false; // Drawing not handled, let standard window drawing happen
}
-
+
virtual HandleCharResult
WindowDelegateHandleChar (Window &window, int key)
{
- if (key == '\t')
+ switch (key)
{
- window.SelectNextWindowAsActive();
- return eKeyHandled;
+ case '\t':
+ window.SelectNextWindowAsActive();
+ return eKeyHandled;
+
+ case 'h':
+ window.CreateHelpSubwindow();
+ return eKeyHandled;
+
+ case KEY_ESCAPE:
+ return eQuitApplication;
+
+ default:
+ break;
}
return eKeyNotHandled;
}
+
+ virtual const char *
+ WindowDelegateGetHelpText ()
+ {
+ return "Welcome to the LLDB curses GUI.\n\n"
+ "Press the TAB key to change the selected view.\n"
+ "Each view has its own keyboard shortcuts, press 'h' to open a dialog to display them.\n\n"
+ "Common key bindings for all views:";
+ }
+
+ virtual KeyHelp *
+ WindowDelegateGetKeyHelp ()
+ {
+ static curses::KeyHelp g_source_view_key_help[] = {
+ { '\t', "Select next view" },
+ { 'h', "Show help dialog with view specific key bindings" },
+ { ',', "Page up" },
+ { '.', "Page down" },
+ { KEY_UP, "Select previous" },
+ { KEY_DOWN, "Select next" },
+ { KEY_LEFT, "Unexpand or select parent" },
+ { KEY_RIGHT, "Expand" },
+ { KEY_PPAGE, "Page up" },
+ { KEY_NPAGE, "Page down" },
+ { '\0', NULL }
+ };
+ return g_source_view_key_help;
+ }
+
virtual MenuActionResult
MenuDelegateAction (Menu &menu)
{
@@ -4241,6 +4287,7 @@ public:
return MenuActionResult::Handled;
case eMenuID_HelpGUIHelp:
+ m_app.GetMainWindow ()->CreateHelpSubwindow();
return MenuActionResult::Handled;
default:
@@ -5167,7 +5214,15 @@ IOHandlerCursesGUI::Activate ()
TreeDelegateSP thread_delegate_sp (new ThreadTreeDelegate(m_debugger));
threads_window_sp->SetDelegate (WindowDelegateSP(new TreeWindowDelegate(m_debugger, thread_delegate_sp)));
status_window_sp->SetDelegate (WindowDelegateSP(new StatusBarWindowDelegate(m_debugger)));
-
+
+ // Show the main help window once the first time the curses GUI is launched
+ static bool g_showed_help = false;
+ if (!g_showed_help)
+ {
+ g_showed_help = true;
+ main_window_sp->CreateHelpSubwindow();
+ }
+
init_pair (1, COLOR_WHITE , COLOR_BLUE );
init_pair (2, COLOR_BLACK , COLOR_WHITE );
init_pair (3, COLOR_MAGENTA , COLOR_WHITE );
More information about the lldb-commits
mailing list