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