Initial implementation of exception configuration window.
Doesn't actually take any actions yet, just presents a UI.
This commit is contained in:
@@ -234,6 +234,7 @@ Application Debugger :
|
|||||||
# user_interface/gui/team_window
|
# user_interface/gui/team_window
|
||||||
BreakpointListView.cpp
|
BreakpointListView.cpp
|
||||||
BreakpointsView.cpp
|
BreakpointsView.cpp
|
||||||
|
ExceptionConfigWindow.cpp
|
||||||
ImageFunctionsView.cpp
|
ImageFunctionsView.cpp
|
||||||
ImageListView.cpp
|
ImageListView.cpp
|
||||||
RegistersView.cpp
|
RegistersView.cpp
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ enum {
|
|||||||
MSG_TEAM_RESTART_REQUESTED = 'trrq',
|
MSG_TEAM_RESTART_REQUESTED = 'trrq',
|
||||||
MSG_SHOW_TEAMS_WINDOW = 'stsw',
|
MSG_SHOW_TEAMS_WINDOW = 'stsw',
|
||||||
MSG_TEAMS_WINDOW_CLOSED = 'tswc',
|
MSG_TEAMS_WINDOW_CLOSED = 'tswc',
|
||||||
|
MSG_SHOW_EXCEPTION_CONFIG_WINDOW = 'secw',
|
||||||
|
MSG_EXCEPTION_CONFIG_WINDOW_CLOSED = 'ecwc',
|
||||||
MSG_START_NEW_TEAM = 'sttt',
|
MSG_START_NEW_TEAM = 'sttt',
|
||||||
MSG_DEBUG_THIS_TEAM = 'dbtt',
|
MSG_DEBUG_THIS_TEAM = 'dbtt',
|
||||||
MSG_SHOW_INSPECTOR_WINDOW = 'sirw',
|
MSG_SHOW_INSPECTOR_WINDOW = 'sirw',
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#include "ExceptionConfigWindow.h"
|
||||||
|
|
||||||
|
#include <Button.h>
|
||||||
|
#include <CheckBox.h>
|
||||||
|
#include <LayoutBuilder.h>
|
||||||
|
|
||||||
|
#include "MessageCodes.h"
|
||||||
|
#include "UserInterface.h"
|
||||||
|
#include "Team.h"
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MSG_STOP_ON_THROWN_EXCEPTION_CHANGED = 'stec',
|
||||||
|
MSG_STOP_ON_CAUGHT_EXCEPTION_CHANGED = 'scec'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ExceptionConfigWindow::ExceptionConfigWindow(::Team* team,
|
||||||
|
UserInterfaceListener* listener, BHandler* target)
|
||||||
|
:
|
||||||
|
BWindow(BRect(), "Configure Exceptions", B_FLOATING_WINDOW,
|
||||||
|
B_AUTO_UPDATE_SIZE_LIMITS | B_CLOSE_ON_ESCAPE),
|
||||||
|
fTeam(team),
|
||||||
|
fListener(listener),
|
||||||
|
fExceptionThrown(NULL),
|
||||||
|
fExceptionCaught(NULL),
|
||||||
|
fCloseButton(NULL),
|
||||||
|
fTarget(target)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ExceptionConfigWindow::~ExceptionConfigWindow()
|
||||||
|
{
|
||||||
|
BMessenger(fTarget).SendMessage(MSG_EXCEPTION_CONFIG_WINDOW_CLOSED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ExceptionConfigWindow*
|
||||||
|
ExceptionConfigWindow::Create(::Team* team,
|
||||||
|
UserInterfaceListener* listener, BHandler* target)
|
||||||
|
{
|
||||||
|
ExceptionConfigWindow* self = new ExceptionConfigWindow(team, listener,
|
||||||
|
target);
|
||||||
|
|
||||||
|
try {
|
||||||
|
self->_Init();
|
||||||
|
} catch (...) {
|
||||||
|
delete self;
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ExceptionConfigWindow::_Init()
|
||||||
|
{
|
||||||
|
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||||
|
.SetInsets(B_USE_DEFAULT_SPACING)
|
||||||
|
.Add(fExceptionThrown = new BCheckBox("exceptionThrown",
|
||||||
|
"Stop when an exception is thrown", new BMessage(
|
||||||
|
MSG_STOP_ON_THROWN_EXCEPTION_CHANGED)))
|
||||||
|
.Add(fExceptionCaught = new BCheckBox("exceptionCaught",
|
||||||
|
"Stop when an exception is caught", new BMessage(
|
||||||
|
MSG_STOP_ON_CAUGHT_EXCEPTION_CHANGED)))
|
||||||
|
.AddGroup(B_HORIZONTAL, 4.0f)
|
||||||
|
.AddGlue()
|
||||||
|
.Add(fCloseButton = new BButton("Close", new BMessage(
|
||||||
|
B_QUIT_REQUESTED)))
|
||||||
|
.End();
|
||||||
|
|
||||||
|
fExceptionThrown->SetTarget(this);
|
||||||
|
fExceptionCaught->SetTarget(this);
|
||||||
|
|
||||||
|
// TODO: enable once implemented
|
||||||
|
fExceptionCaught->SetEnabled(false);
|
||||||
|
|
||||||
|
fCloseButton->SetTarget(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ExceptionConfigWindow::Show()
|
||||||
|
{
|
||||||
|
CenterOnScreen();
|
||||||
|
BWindow::Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ExceptionConfigWindow::MessageReceived(BMessage* message)
|
||||||
|
{
|
||||||
|
switch (message->what) {
|
||||||
|
case MSG_STOP_ON_THROWN_EXCEPTION_CHANGED:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case MSG_STOP_ON_CAUGHT_EXCEPTION_CHANGED:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
BWindow::MessageReceived(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013, Rene Gollent, [email protected].
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef EXCEPTION_CONFIG_WINDOW_H
|
||||||
|
#define EXCEPTION_CONFIG_WINDOW_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <Window.h>
|
||||||
|
|
||||||
|
|
||||||
|
class BButton;
|
||||||
|
class BCheckBox;
|
||||||
|
class Team;
|
||||||
|
class UserInterfaceListener;
|
||||||
|
|
||||||
|
|
||||||
|
class ExceptionConfigWindow : public BWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ExceptionConfigWindow(::Team* team,
|
||||||
|
UserInterfaceListener* listener,
|
||||||
|
BHandler* target);
|
||||||
|
|
||||||
|
~ExceptionConfigWindow();
|
||||||
|
|
||||||
|
static ExceptionConfigWindow* Create(::Team* team,
|
||||||
|
UserInterfaceListener* listener,
|
||||||
|
BHandler* target);
|
||||||
|
// throws
|
||||||
|
|
||||||
|
virtual void MessageReceived(BMessage* message);
|
||||||
|
|
||||||
|
virtual void Show();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void _Init();
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
::Team* fTeam;
|
||||||
|
UserInterfaceListener* fListener;
|
||||||
|
BCheckBox* fExceptionThrown;
|
||||||
|
BCheckBox* fExceptionCaught;
|
||||||
|
BButton* fCloseButton;
|
||||||
|
BHandler* fTarget;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // EXCEPTION_CONFIG_WINDOW_H
|
||||||
Reference in New Issue
Block a user