Debugger: Cleanup.

Refactor the expression windows to use the type code helper to simplify
building the type menus.
This commit is contained in:
Rene Gollent 2014-11-05 23:52:32 -05:00
parent 6d9f98fd95
commit 8336fb8168
4 changed files with 62 additions and 67 deletions

View File

@ -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)

View File

@ -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(

View File

@ -11,6 +11,7 @@
#include <TextControl.h>
#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;
}

View File

@ -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;