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 8*f3d5fb86SPhilippe 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); 56a75264d3SKarsten Heimrich 57bb6301b2SPhilippe Saint-Pierre status_t _SaveScreenshot(); 589f07ffa3SKarsten Heimrich void _SaveScreenshotSilent() const; 599f07ffa3SKarsten Heimrich 60a75264d3SKarsten Heimrich private: 61*f3d5fb86SPhilippe Saint-Pierre PreviewView* fPreview; 62a75264d3SKarsten Heimrich BRadioButton* fActiveWindow; 63a75264d3SKarsten Heimrich BRadioButton* fWholeDesktop; 64a75264d3SKarsten Heimrich BTextControl* fDelayControl; 65a75264d3SKarsten Heimrich BCheckBox* fWindowBorder; 66aeaeba65SJoachim Seemer BCheckBox* fShowMouse; 67a75264d3SKarsten Heimrich BButton* fBackToSave; 68a75264d3SKarsten Heimrich BButton* fTakeScreenshot; 69a75264d3SKarsten Heimrich BTextControl* fNameControl; 70a75264d3SKarsten Heimrich BMenu* fTranslatorMenu; 71a75264d3SKarsten Heimrich BMenu* fOutputPathMenu; 72a75264d3SKarsten Heimrich BBitmap* fScreenshot; 73fc3bed05SKarsten Heimrich BFilePanel* fOutputPathPanel; 74fc3bed05SKarsten Heimrich BMenuItem* fLastSelectedPath; 75a75264d3SKarsten Heimrich 76a75264d3SKarsten Heimrich bigtime_t fDelay; 77a75264d3SKarsten Heimrich 78a75264d3SKarsten Heimrich bool fIncludeBorder; 79aeaeba65SJoachim Seemer bool fIncludeMouse; 80a75264d3SKarsten Heimrich bool fGrabActiveWindow; 81a75264d3SKarsten Heimrich bool fShowConfigWindow; 82a75264d3SKarsten Heimrich 83a75264d3SKarsten Heimrich int32 fTranslator; 84a75264d3SKarsten Heimrich int32 fImageFileType; 85a75264d3SKarsten Heimrich }; 86