1/*
2 * Copyright 2011, Rene Gollent, rene@gollent.com. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef INSPECTOR_WINDOW_H
6#define INSPECTOR_WINDOW_H
7
8
9#include <Window.h>
10
11#include "TeamMemoryBlock.h"
12#include "Types.h"
13
14
15class BButton;
16class BMenuField;
17class BMessenger;
18class BTextControl;
19class GuiTeamUiSettings;
20class MemoryView;
21class Team;
22class UserInterfaceListener;
23
24
25class InspectorWindow : public BWindow,
26	public TeamMemoryBlock::Listener {
27public:
28								InspectorWindow(::Team* team,
29									UserInterfaceListener* listener,
30									BHandler* target);
31	virtual						~InspectorWindow();
32
33	static	InspectorWindow*	Create(::Team* team,
34									UserInterfaceListener* listener,
35									BHandler* target);
36										// throws
37
38	virtual void				MessageReceived(BMessage* message);
39	virtual bool				QuitRequested();
40
41	virtual void				MemoryBlockRetrieved(TeamMemoryBlock* block);
42
43			status_t			LoadSettings(
44									const GuiTeamUiSettings& settings);
45			status_t			SaveSettings(
46									BMessage& settings);
47private:
48	void						_Init();
49
50	void						_LoadMenuFieldMode(BMenuField* field,
51									const char* name,
52									const BMessage& settings);
53	status_t					_SaveMenuFieldMode(BMenuField* field,
54									const char* name,
55									BMessage& settings);
56
57private:
58	UserInterfaceListener*		fListener;
59	BTextControl*				fAddressInput;
60	BMenuField*					fHexMode;
61	BMenuField*					fEndianMode;
62	BMenuField*					fTextMode;
63	MemoryView*					fMemoryView;
64	BButton*					fPreviousBlockButton;
65	BButton*					fNextBlockButton;
66	TeamMemoryBlock*			fCurrentBlock;
67	target_addr_t				fCurrentAddress;
68	::Team*						fTeam;
69	BHandler*					fTarget;
70};
71
72#endif // INSPECTOR_WINDOW_H
73