xref: /haiku/src/apps/debugger/user_interface/gui/team_window/ConsoleOutputView.h (revision 049e8f6fbdcae27f2dad3420e463e048ed1613d3)
1 /*
2  * Copyright 2013-2014, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef CONSOLE_OUTPUT_VIEW_H_
6 #define CONSOLE_OUTPUT_VIEW_H_
7 
8 
9 #include <GroupView.h>
10 #include <ObjectList.h>
11 
12 
13 class BButton;
14 class BCheckBox;
15 class BTextView;
16 
17 
18 class ConsoleOutputView : public BGroupView {
19 public:
20 								ConsoleOutputView();
21 								~ConsoleOutputView();
22 
23 	static	ConsoleOutputView*	Create();
24 									// throws
25 
26 			void				ConsoleOutputReceived(
27 									int32 fd, const BString& output);
28 
29 	virtual	void				MessageReceived(BMessage* message);
30 	virtual	void				AttachedToWindow();
31 
32 			void				LoadSettings(const BMessage& settings);
33 			status_t			SaveSettings(BMessage& settings);
34 
35 private:
36 			struct OutputInfo;
37 			typedef BObjectList<OutputInfo> OutputInfoList;
38 
39 private:
40 			void				_Init();
41 	static	int32				_OutputWorker(void* arg);
42 			void				_HandleConsoleOutput(OutputInfo* info);
43 
44 private:
45 			BCheckBox*			fStdoutEnabled;
46 			BCheckBox*			fStderrEnabled;
47 			BTextView*			fConsoleOutput;
48 			BButton*			fClearButton;
49 			OutputInfoList*		fPendingOutput;
50 			sem_id				fWorkToDoSem;
51 			thread_id			fOutputWorker;
52 };
53 
54 
55 
56 #endif	// CONSOLE_OUTPUT_VIEW_H
57