xref: /haiku/src/apps/screenshot/ScreenshotWindow.h (revision de5c16f10ad133de6e8f864e3bbb16679d6ad900)
1 /*
2  * Copyright 2010 Wim van der Meer <WPJvanderMeer@gmail.com>
3  * Copyright Karsten Heimrich, host.haiku@gmx.de.
4  * All rights reserved. Distributed under the terms of the MIT License.
5  *
6  * Authors:
7  *		Karsten Heimrich
8  *		Fredrik Modéen
9  *		Wim van der Meer
10  */
11 #ifndef SCREENSHOT_WINDOW_H
12 #define SCREENSHOT_WINDOW_H
13 
14 
15 #include <String.h>
16 #include <TranslationDefs.h>
17 #include <TranslatorFormats.h>
18 #include <Window.h>
19 
20 
21 class BBitmap;
22 class BCheckBox;
23 class BFilePanel;
24 class BMenu;
25 class BPath;
26 class BTextControl;
27 class BTextView;
28 
29 class Utility;
30 
31 
32 class ScreenshotWindow : public BWindow {
33 public:
34 							ScreenshotWindow(const Utility& utility,
35 								bool silent, bool clipboard);
36 							~ScreenshotWindow();
37 
38 			void			MessageReceived(BMessage* message);
39 			void			Quit();
40 
41 private:
42 			void			_NewScreenshot(bool silent = false,
43 								bool clipboard = false);
44 			void			_UpdatePreviewPanel();
45 			void			_DisallowChar(BTextView* textView);
46 			void			_SetupOutputPathMenu(const BMessage& settings);
47 			void			_AddItemToPathMenu(const char* path,
48 								BString& label, int32 index, bool markItem,
49 								uint32 shortcutKey = 0);
50 			void			_UpdateFilenameSelection();
51 			void			_SetupTranslatorMenu();
52 			status_t		_SaveScreenshot();
53 			void			_ShowSettings(bool activate);
54 			BString			_FindValidFileName(const char* name);
55 			BPath			_GetDirectory();
56 			void			_ReadSettings();
57 			void			_WriteSettings();
58 
59 	const	Utility&		fUtility;
60 
61 			BView*			fPreview;
62 			BCheckBox*		fActiveWindow;
63 			BTextControl*	fDelayControl;
64 			BCheckBox*		fWindowBorder;
65 			BCheckBox*		fShowCursor;
66 			BTextControl*	fNameControl;
67 			BMenu*			fTranslatorMenu;
68 			BMenu*			fOutputPathMenu;
69 			BBitmap*		fScreenshot;
70 			BFilePanel*		fOutputPathPanel;
71 			BMenuItem*		fLastSelectedPath;
72 			BWindow*		fSettingsWindow;
73 
74 			bigtime_t		fDelay;
75 			bool			fIncludeBorder;
76 			bool			fIncludeCursor;
77 			bool			fGrabActiveWindow;
78 			BString			fOutputFilename;
79 			BString			fExtension;
80 			int32			fImageFileType;
81 };
82 
83 
84 #endif // SCREENSHOT_WINDOW_H
85