xref: /haiku/src/apps/screenshot/ScreenshotWindow.h (revision b8fe3ff480bb51b9f6dc79ef8222fed0bb0c0165)
1a75264d3SKarsten Heimrich /*
2a75264d3SKarsten Heimrich  * Copyright Karsten Heimrich, host.haiku@gmx.de. All rights reserved.
3a75264d3SKarsten Heimrich  * Distributed under the terms of the MIT License.
4a75264d3SKarsten Heimrich  */
5fc3bed05SKarsten Heimrich #include <String.h>
6a75264d3SKarsten Heimrich #include <Window.h>
7a75264d3SKarsten Heimrich 
8f3d5fb86SPhilippe Saint-Pierre #include "PreviewView.h"
9a75264d3SKarsten Heimrich 
10a75264d3SKarsten Heimrich class BBitmap;
11a75264d3SKarsten Heimrich class BBox;
12a75264d3SKarsten Heimrich class BButton;
13a75264d3SKarsten Heimrich class BCardLayout;
14a75264d3SKarsten Heimrich class BCheckBox;
15fc3bed05SKarsten Heimrich class BFilePanel;
16a75264d3SKarsten Heimrich class BMenu;
17a75264d3SKarsten Heimrich class BRadioButton;
18a75264d3SKarsten Heimrich class BTextControl;
19a75264d3SKarsten Heimrich class BTextView;
20a75264d3SKarsten Heimrich 
21a75264d3SKarsten Heimrich 
22a75264d3SKarsten Heimrich class ScreenshotWindow : public BWindow {
23a75264d3SKarsten Heimrich public:
249f07ffa3SKarsten Heimrich 							ScreenshotWindow(bigtime_t delay = 0,
259f07ffa3SKarsten Heimrich 								bool includeBorder = false,
26aeaeba65SJoachim Seemer 								bool includeMouse = false,
279f07ffa3SKarsten Heimrich 								bool grabActiveWindow = false,
289f07ffa3SKarsten Heimrich 								bool showConfigWindow = false,
299f07ffa3SKarsten Heimrich 								bool saveScreenshotSilent = false);
30a75264d3SKarsten Heimrich 	virtual					~ScreenshotWindow();
31a75264d3SKarsten Heimrich 
32a75264d3SKarsten Heimrich 	virtual	void			MessageReceived(BMessage* message);
33a75264d3SKarsten Heimrich 
34a75264d3SKarsten Heimrich private:
35a75264d3SKarsten Heimrich 			void			_InitWindow();
36a75264d3SKarsten Heimrich 			void			_SetupFirstLayoutItem(BCardLayout* layout);
37a75264d3SKarsten Heimrich 			void			_SetupSecondLayoutItem(BCardLayout* layout);
38a75264d3SKarsten Heimrich 			void			_DisallowChar(BTextView* textView);
39ae1cc083SKarsten Heimrich 			void			_SetupTranslatorMenu(BMenu* translatorMenu,
40ae1cc083SKarsten Heimrich 								const BMessage& settings);
41ae1cc083SKarsten Heimrich 			void			_SetupOutputPathMenu(BMenu* outputPathMenu,
42ae1cc083SKarsten Heimrich 								const BMessage& settings);
43ae1cc083SKarsten Heimrich 			void			_AddItemToPathMenu(const char* path,
44ae1cc083SKarsten Heimrich 								BString& label, int32 index, bool markItem);
45a75264d3SKarsten Heimrich 			void			_CenterAndShow();
46a75264d3SKarsten Heimrich 
47ae1cc083SKarsten Heimrich 			void			_UpdatePreviewPanel();
48ae1cc083SKarsten Heimrich 			BString			_FindValidFileName(const char* name) const;
49ae1cc083SKarsten Heimrich 			int32			_PathIndexInMenu(const BString& path) const;
50ae1cc083SKarsten Heimrich 
51ae1cc083SKarsten Heimrich 			BMessage		_ReadSettings() const;
52ae1cc083SKarsten Heimrich 			void			_WriteSettings() const;
53ae1cc083SKarsten Heimrich 
54a75264d3SKarsten Heimrich 			void			_TakeScreenshot();
55a75264d3SKarsten Heimrich 			status_t		_GetActiveWindowFrame(BRect* frame);
56*b8fe3ff4SJonas Sundström 			void			_MakeTabSpaceTransparent();
57a75264d3SKarsten Heimrich 
58bb6301b2SPhilippe Saint-Pierre 			status_t		_SaveScreenshot();
599f07ffa3SKarsten Heimrich 			void			_SaveScreenshotSilent() const;
609f07ffa3SKarsten Heimrich 
61a75264d3SKarsten Heimrich private:
62f3d5fb86SPhilippe Saint-Pierre 			PreviewView*	fPreview;
63a75264d3SKarsten Heimrich 			BRadioButton*	fActiveWindow;
64a75264d3SKarsten Heimrich 			BRadioButton*	fWholeDesktop;
65a75264d3SKarsten Heimrich 			BTextControl*	fDelayControl;
66a75264d3SKarsten Heimrich 			BCheckBox*		fWindowBorder;
67aeaeba65SJoachim Seemer 			BCheckBox*		fShowMouse;
68a75264d3SKarsten Heimrich 			BButton*		fBackToSave;
69a75264d3SKarsten Heimrich 			BButton*		fTakeScreenshot;
70a75264d3SKarsten Heimrich 			BTextControl*	fNameControl;
71a75264d3SKarsten Heimrich 			BMenu*			fTranslatorMenu;
72a75264d3SKarsten Heimrich 			BMenu*			fOutputPathMenu;
73a75264d3SKarsten Heimrich 			BBitmap*		fScreenshot;
74fc3bed05SKarsten Heimrich 			BFilePanel*		fOutputPathPanel;
75fc3bed05SKarsten Heimrich 			BMenuItem*		fLastSelectedPath;
76a75264d3SKarsten Heimrich 
77a75264d3SKarsten Heimrich 			bigtime_t		fDelay;
78*b8fe3ff4SJonas Sundström 			float			fTabHeight;
79a75264d3SKarsten Heimrich 
80a75264d3SKarsten Heimrich 			bool			fIncludeBorder;
81aeaeba65SJoachim Seemer 			bool			fIncludeMouse;
82a75264d3SKarsten Heimrich 			bool			fGrabActiveWindow;
83a75264d3SKarsten Heimrich 			bool			fShowConfigWindow;
84a75264d3SKarsten Heimrich 
85a75264d3SKarsten Heimrich 			int32			fTranslator;
86a75264d3SKarsten Heimrich 			int32			fImageFileType;
87a75264d3SKarsten Heimrich };
88