xref: /haiku/src/apps/debugger/user_interface/gui/expression_eval_window/ExpressionEvaluationWindow.h (revision f0650dc98fed895fc134a359aab99c27de6a0c6a)
1 /*
2  * Copyright 2014-2015, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef EXPRESSION_EVALUATION_WINDOW_H
6 #define EXPRESSION_EVALUATION_WINDOW_H
7 
8 
9 #include <Window.h>
10 
11 #include "Team.h"
12 #include "VariablesView.h"
13 
14 
15 class BButton;
16 class BMenuField;
17 class BTextControl;
18 class StackFrame;
19 class Team;
20 class UserInterfaceListener;
21 class SourceLanguage;
22 
23 class ExpressionEvaluationWindow : public BWindow, private Team::Listener,
24 	private VariablesView::Listener {
25 public:
26 								ExpressionEvaluationWindow(
27 									BHandler* fCloseTarget,
28 									::Team* team,
29 									UserInterfaceListener* listener);
30 
31 								~ExpressionEvaluationWindow();
32 
33 	static	ExpressionEvaluationWindow* Create(BHandler* fCloseTarget,
34 									::Team* team,
35 									UserInterfaceListener* listener);
36 									// throws
37 
38 
39 	virtual	void				Show();
40 	virtual	bool				QuitRequested();
41 
42 	virtual	void				MessageReceived(BMessage* message);
43 
44 	// VariablesView::Listener
45 	virtual	void				ValueNodeValueRequested(CpuState* cpuState,
46 									ValueNodeContainer* container,
47 									ValueNode* valueNode);
48 
49 	virtual	void				ExpressionEvaluationRequested(
50 									ExpressionInfo* info,
51 									StackFrame* frame,
52 									::Thread* thread);
53 
54 	virtual	void				ValueNodeWriteRequested(
55 									ValueNode* node,
56 									CpuState* state,
57 									Value* newValue);
58 
59 private:
60 			void	 			_Init();
61 
62 			void				_HandleThreadSelectionChanged(int32 threadID);
63 			void				_HandleFrameSelectionChanged(int32 index);
64 
65 			void				_UpdateThreadList();
66 			void				_UpdateFrameList();
67 
68 private:
69 			BTextControl*		fExpressionInput;
70 			BMenuField*			fThreadList;
71 			BMenuField*			fFrameList;
72 			VariablesView*		fVariablesView;
73 			BButton*			fCloseButton;
74 			BButton*			fEvaluateButton;
75 			BHandler*			fCloseTarget;
76 			SourceLanguage*		fCurrentLanguage;
77 			SourceLanguage*		fFallbackLanguage;
78 			::Team*				fTeam;
79 			::Thread*			fSelectedThread;
80 			StackFrame*			fSelectedFrame;
81 			UserInterfaceListener* fListener;
82 };
83 
84 #endif // EXPRESSION_EVALUATION_WINDOW_H
85