From 8336fb8168eb8432a4cd3619b90d78212338297f Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Wed, 5 Nov 2014 23:52:32 -0500 Subject: [PATCH] Debugger: Cleanup. Refactor the expression windows to use the type code helper to simplify building the type menus. --- .../ExpressionEvaluationWindow.cpp | 58 ++++++++--------- .../team_window/ExpressionEvaluationWindow.h | 3 + .../team_window/ExpressionPromptWindow.cpp | 65 +++++++++---------- .../gui/team_window/ExpressionPromptWindow.h | 3 + 4 files changed, 62 insertions(+), 67 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.cpp index b9724e872e..0ef0798853 100644 --- a/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.cpp @@ -18,6 +18,7 @@ #include "SourceLanguage.h" #include "StackFrame.h" #include "Thread.h" +#include "UiUtils.h" #include "UserInterface.h" #include "Value.h" @@ -140,44 +141,37 @@ ExpressionEvaluationWindow::_BuildTypesMenu() BMenu* menu = new BMenu("Types"); menu->SetLabelFromMarked(true); - BMessage message(MSG_CHANGE_EVALUATION_TYPE); - message.AddInt32("type", B_INT8_TYPE); + _AddMenuItemForType(menu, B_INT8_TYPE); + _AddMenuItemForType(menu, B_UINT8_TYPE); + _AddMenuItemForType(menu, B_INT16_TYPE); + _AddMenuItemForType(menu, B_UINT16_TYPE); + _AddMenuItemForType(menu, B_INT32_TYPE); + _AddMenuItemForType(menu, B_UINT32_TYPE); + BMenuItem* item = _AddMenuItemForType(menu, B_INT64_TYPE); + if (item != NULL) + item->SetMarked(true); - menu->AddItem(new BMenuItem("int8", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT8_TYPE); - menu->AddItem(new BMenuItem("uint8", new BMessage(message))); - - message.ReplaceInt32("type", B_INT16_TYPE); - menu->AddItem(new BMenuItem("int16", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT16_TYPE); - menu->AddItem(new BMenuItem("uint16", new BMessage(message))); - - message.ReplaceInt32("type", B_INT32_TYPE); - menu->AddItem(new BMenuItem("int32", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT32_TYPE); - menu->AddItem(new BMenuItem("uint32", new BMessage(message))); - - message.ReplaceInt32("type", B_INT64_TYPE); - BMenuItem* item = new BMenuItem("int64", new BMessage(message)); - menu->AddItem(item); - item->SetMarked(true); - - message.ReplaceInt32("type", B_UINT64_TYPE); - menu->AddItem(new BMenuItem("uint64", new BMessage(message))); - - message.ReplaceInt32("type", B_FLOAT_TYPE); - menu->AddItem(new BMenuItem("float", new BMessage(message))); - - message.ReplaceInt32("type", B_DOUBLE_TYPE); - menu->AddItem(new BMenuItem("double", new BMessage(message))); + _AddMenuItemForType(menu, B_UINT64_TYPE); + _AddMenuItemForType(menu, B_FLOAT_TYPE); + _AddMenuItemForType(menu, B_DOUBLE_TYPE); return menu; } +BMenuItem* +ExpressionEvaluationWindow::_AddMenuItemForType(BMenu* menu, type_code type) +{ + BMessage *message = new BMessage(MSG_CHANGE_EVALUATION_TYPE); + message->AddInt32("type", type); + + BMenuItem* item = new BMenuItem(UiUtils::TypeCodeToString(type), message); + menu->AddItem(item); + + return item; +} + + void ExpressionEvaluationWindow::ExpressionEvaluated( const Team::ExpressionEvaluationEvent& event) diff --git a/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.h b/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.h index d256b77e94..650bf2ca20 100644 --- a/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.h +++ b/src/apps/debugger/user_interface/gui/team_window/ExpressionEvaluationWindow.h @@ -12,6 +12,7 @@ #include "types/Types.h" class BMenu; +class BMenuItem; class BButton; class BStringView; class BTextControl; @@ -53,6 +54,8 @@ public: private: void _Init(); BMenu* _BuildTypesMenu(); + BMenuItem* _AddMenuItemForType(BMenu* menu, + type_code type); // Team::Listener virtual void ExpressionEvaluated( diff --git a/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.cpp index b3f829c68b..add0137241 100644 --- a/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.cpp @@ -11,6 +11,7 @@ #include #include "MessageCodes.h" +#include "UiUtils.h" enum { @@ -100,44 +101,37 @@ ExpressionPromptWindow::_BuildTypesMenu() BMenu* menu = new BMenu("Types"); menu->SetLabelFromMarked(true); - BMessage message(MSG_CHANGE_EVALUATION_TYPE); - message.AddInt32("type", B_INT8_TYPE); + _AddMenuItemForType(menu, B_INT8_TYPE); + _AddMenuItemForType(menu, B_UINT8_TYPE); + _AddMenuItemForType(menu, B_INT16_TYPE); + _AddMenuItemForType(menu, B_UINT16_TYPE); + _AddMenuItemForType(menu, B_INT32_TYPE); + _AddMenuItemForType(menu, B_UINT32_TYPE); + BMenuItem* item = _AddMenuItemForType(menu, B_INT64_TYPE); + if (item != NULL) + item->SetMarked(true); - menu->AddItem(new BMenuItem("int8", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT8_TYPE); - menu->AddItem(new BMenuItem("uint8", new BMessage(message))); - - message.ReplaceInt32("type", B_INT16_TYPE); - menu->AddItem(new BMenuItem("int16", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT16_TYPE); - menu->AddItem(new BMenuItem("uint16", new BMessage(message))); - - message.ReplaceInt32("type", B_INT32_TYPE); - menu->AddItem(new BMenuItem("int32", new BMessage(message))); - - message.ReplaceInt32("type", B_UINT32_TYPE); - menu->AddItem(new BMenuItem("uint32", new BMessage(message))); - - message.ReplaceInt32("type", B_INT64_TYPE); - BMenuItem* item = new BMenuItem("int64", new BMessage(message)); - menu->AddItem(item); - item->SetMarked(true); - - message.ReplaceInt32("type", B_UINT64_TYPE); - menu->AddItem(new BMenuItem("uint64", new BMessage(message))); - - message.ReplaceInt32("type", B_FLOAT_TYPE); - menu->AddItem(new BMenuItem("float", new BMessage(message))); - - message.ReplaceInt32("type", B_DOUBLE_TYPE); - menu->AddItem(new BMenuItem("double", new BMessage(message))); + _AddMenuItemForType(menu, B_UINT64_TYPE); + _AddMenuItemForType(menu, B_FLOAT_TYPE); + _AddMenuItemForType(menu, B_DOUBLE_TYPE); return menu; } +BMenuItem* +ExpressionPromptWindow::_AddMenuItemForType(BMenu* menu, type_code type) +{ + BMessage *message = new BMessage(MSG_CHANGE_EVALUATION_TYPE); + message->AddInt32("type", type); + + BMenuItem* item = new BMenuItem(UiUtils::TypeCodeToString(type), message); + menu->AddItem(item); + + return item; +} + + void ExpressionPromptWindow::Show() { @@ -168,12 +162,13 @@ ExpressionPromptWindow::MessageReceived(BMessage* message) case MSG_ADD_NEW_EXPRESSION: { - BMessage addMessage(message->what); + BMessage addMessage(MSG_EXPRESSION_PROMPT_WINDOW_CLOSED); addMessage.AddString("expression", fExpressionInput->Text()); addMessage.AddInt32("type", fCurrentType); + addMessage.AddMessenger("target", BMessenger(fAddTarget)); - BMessenger(fAddTarget).SendMessage(&addMessage); - PostMessage(B_QUIT_REQUESTED); + BMessenger(fCloseTarget).SendMessage(&addMessage); + Quit(); break; } diff --git a/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.h b/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.h index 6f792a0818..024577d1d4 100644 --- a/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.h +++ b/src/apps/debugger/user_interface/gui/team_window/ExpressionPromptWindow.h @@ -11,6 +11,7 @@ class BButton; class BMenu; +class BMenuItem; class BTextControl; @@ -35,6 +36,8 @@ public: private: void _Init(); BMenu* _BuildTypesMenu(); + BMenuItem* _AddMenuItemForType(BMenu* menu, + type_code type); private: BTextControl* fExpressionInput;