/********************************************************************** Audacity - A Digital Audio Editor Copyright 1999-2009 Audacity Team License: GPL v2 - see LICENSE.txt Dominic Mazzoni Dan Horgan **********************************************************************/ #ifndef __SCREENSHOTCOMMAND__ #define __SCREENSHOTCOMMAND__ #include "Command.h" #include "CommandType.h" #include class wxWindow; class wxTopLevelWindow; class wxCommandEvent; class wxRect; class ToolManager; class CommandOutputTarget; class ScreenshotCommandType final : public CommandType { public: wxString BuildName() override; void BuildSignature(CommandSignature &signature) override; CommandHolder Create(std::unique_ptr &&target) override; }; class ScreenshotCommand final : public CommandImplementation { private: // May need to ignore the screenshot dialog wxWindow *mIgnore; bool mBackground; wxColour mBackColor; wxString mDirToWriteTo; wxString MakeFileName(const wxString &path, const wxString &basename); wxRect GetBackgroundRect(); void CaptureToolbar(ToolManager *man, int type, const wxString &name); void CaptureDock(wxWindow *win, const wxString &fileName); void CaptureMenus(wxMenuBar*pBar, const wxString &fileName); void CaptureEffects( AudacityProject * pProject, const wxString &fileName ); void CapturePreferences( AudacityProject * pProject, const wxString &fileName ); void Capture(const wxString &basename, wxWindow *window, int x, int y, int width, int height, bool bg = false); public: static ScreenshotCommand * mpShooter; static void (*mIdleHandler)(wxIdleEvent& event); static void SetIdleHandler( void (*pHandler)(wxIdleEvent& event) ){mIdleHandler=pHandler;}; static bool MayCapture( wxDialog * pDlg ); void CaptureWindowOnIdle( wxWindow * pWin ); wxTopLevelWindow *GetFrontWindow(AudacityProject *project); ScreenshotCommand(CommandType &type, std::unique_ptr &&output, wxWindow *ignore = NULL) : CommandImplementation(type, std::move(output)), mIgnore(ignore), mBackground(false) { } bool Apply(CommandExecutionContext context); }; #endif /* End of include guard: __SCREENSHOTCOMMAND__ */