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 21class BBitmap; 22class BCheckBox; 23class BFilePanel; 24class BMenu; 25class BPath; 26class BTextControl; 27class BTextView; 28 29class Utility; 30 31 32class ScreenshotWindow : public BWindow { 33public: 34 ScreenshotWindow(const Utility& utility, 35 bool silent, bool clipboard); 36 ~ScreenshotWindow(); 37 38 void MessageReceived(BMessage* message); 39 void Quit(); 40 41private: 42 void _NewScreenshot(bool silent = false, 43 bool clipboard = false, 44 bool ignoreDelay = false); 45 void _UpdatePreviewPanel(); 46 void _DisallowChar(BTextView* textView); 47 void _SetupOutputPathMenu(const BMessage& settings); 48 void _AddItemToPathMenu(const char* path, 49 BString& label, int32 index, bool markItem, 50 uint32 shortcutKey = 0); 51 void _UpdateFilenameSelection(); 52 void _SetupTranslatorMenu(); 53 void _DisplaySaveError(BString _message); 54 status_t _SaveScreenshot(); 55 void _ShowSettings(bool activate); 56 BString _FindValidFileName(const char* name); 57 BPath _GetDirectory(); 58 void _ReadSettings(); 59 void _WriteSettings(); 60 61 const Utility& fUtility; 62 63 BView* fPreview; 64 BCheckBox* fActiveWindow; 65 BTextControl* fDelayControl; 66 BCheckBox* fWindowBorder; 67 BCheckBox* fShowCursor; 68 BTextControl* fNameControl; 69 BMenu* fTranslatorMenu; 70 BMenu* fOutputPathMenu; 71 BBitmap* fScreenshot; 72 BFilePanel* fOutputPathPanel; 73 BMenuItem* fLastSelectedPath; 74 BWindow* fSettingsWindow; 75 76 bigtime_t fDelay; 77 bool fIncludeBorder; 78 bool fIncludeCursor; 79 bool fGrabActiveWindow; 80 BString fOutputFilename; 81 BString fExtension; 82 int32 fImageFileType; 83}; 84 85 86#endif // SCREENSHOT_WINDOW_H 87