X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cf490c4df9c2a706e92c1ec39128a368b2a4e7b8..7a36d9c7c1a077ba7e05c248bcf19c4c9bb1356f:/utils/screenshotgen/src/screenshot_main.cpp diff --git a/utils/screenshotgen/src/screenshot_main.cpp b/utils/screenshotgen/src/screenshot_main.cpp index a8697bdbae..9dd085e648 100644 --- a/utils/screenshotgen/src/screenshot_main.cpp +++ b/utils/screenshotgen/src/screenshot_main.cpp @@ -1,126 +1,43 @@ ///////////////////////////////////////////////////////////////////////////// // Name: screenshot_main.cpp -// Purpose: Implement the Application Frame +// Purpose: Implements the window containing all controls. // Author: Utensil Candel (UtensilCandel@@gmail.com) // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif -// for all others, include the necessary headers +// for all others, include the necessary headers wxWidgets headers) #ifndef WX_PRECOMP - #include - #include - #include - #include - #include - #include +#include "wx/wx.h" #endif -#include -#include -#include -#include -#include -#include +#include "wx/aboutdlg.h" +#include "wx/dir.h" #include "screenshot_main.h" -#include "ctrlmaskout.h" #include "autocapture.h" - // ---------------------------------------------------------------------------- // ScreenshotFrame // ---------------------------------------------------------------------------- -ScreenshotFrame::ScreenshotFrame(wxFrame *frame) -#if SCREENSHOTGEN_USE_AUI -: AuiGUIFrame(frame) -#else -: GUIFrame(frame) -#endif +ScreenshotFrame::ScreenshotFrame(wxFrame *frame) : GUIFrame(frame) { #if wxUSE_STATUSBAR statusBar->SetStatusText(_("Welcome to the Automatic Screenshot Generator!"), 0); #endif - // We will hold one ctrlmaskout during the whole life time of the main frame - m_maskout = new CtrlMaskOut(); - - // At the begining, we are not specifying the rect region - capturingRect = false; - - // Do some further customization on some controls generated by wxFormBuilder - InitFBControls(); -#if SCREENSHOTGEN_USE_AUI - // Somehow it will be very small after I move to Aui - SetSize(600, 600); - // Maximize(true); -#endif -} - -ScreenshotFrame::~ScreenshotFrame() -{ - delete m_maskout; -} - -/* - Do some further customization on some controls generated by wxFormBuilder. - - wxFormBuilder does not allow customizations on some controls; - e.g. you cannot load a richtext file in a wxRichtextCtrl during initialization. - - Those customizations will be done here. -*/ -void ScreenshotFrame::InitFBControls() -{ - // explicitely uncheck radio button: - m_radioBtn2->SetValue(false); - - // For some reason, wxFormBuilder does not set the scrollbar range - m_scrollBar1->SetScrollbar(50, 1, 100, 1); - - // Do the default selection for wxComboBox - m_comboBox1->Select(0); - - // To look better under gtk -#ifdef __WXGTK__ - m_comboBox1->Delete(4); -#endif - - // Add a root and some nodes for wxTreeCtrl - wxTreeItemId root = m_treeCtrl1->AddRoot(_("wxTreeCtrl")); - m_treeCtrl1->AppendItem(root, _("Node1")); - wxTreeItemId node2 = m_treeCtrl1->AppendItem(root, _("Node2")); - m_treeCtrl1->AppendItem(node2, _("Node3")); - m_treeCtrl1->ExpandAll(); - - // Add items into wxListCtrl - for(long index = 0; index < 5; index++) - m_listCtrl1->InsertItem( index, wxString::Format(_("Item\n(0,%d)"),index)); - - // Check the first item in wxCheckListBox - m_checkList1->Check(0); - - // Load richtext.xml into wxRichtextCtrl - m_richText1->LoadFile(_T("richtext.xml")); - //m_richText1->ShowPosition(335); - - // select first page in the main notebook ctrl - m_notebook1->ChangeSelection(0); - // set minimum size hints GetSizer()->SetSizeHints(this); } - - // ---------------------------------------------------------------------------- // ScreenshotFrame - event handlers // ---------------------------------------------------------------------------- @@ -137,14 +54,12 @@ void ScreenshotFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void ScreenshotFrame::OnSeeScreenshots(wxCommandEvent& WXUNUSED(event)) { - wxString defaultDir = m_maskout->GetDefaultDirectory(); + wxString defaultDir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath(); - // Check if defaultDir already existed - if (!wxDirExists(defaultDir)) - wxMkdir(defaultDir); - - // Use the native file browser to open defaultDir - wxLaunchDefaultBrowser(wxFileSystem::FileNameToURL(defaultDir)); + if (wxFileName::DirExists(defaultDir)) + wxLaunchDefaultBrowser(defaultDir); + else + wxMessageBox(_("There isn't any screenshots yet.")); } void ScreenshotFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) @@ -152,8 +67,8 @@ void ScreenshotFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxAboutDialogInfo info; info.SetName(_("Automatic Screenshot Generator")); info.SetVersion(_("1.0")); - info.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for ues in wxWidgets documentation.")); - info.SetCopyright(_T("(C) 2008 Utensil Candel")); + info.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for use in wxWidgets documentation.")); + info.SetCopyright(wxT("(C) 2008 Utensil Candel")); wxAboutBox(info); } @@ -167,98 +82,28 @@ void ScreenshotFrame::OnCaptureFullScreen(wxCommandEvent& WXUNUSED(event)) wxCoord screenWidth, screenHeight; dcScreen.GetSize(&screenWidth, &screenHeight); - m_maskout->Capture(0, 0, screenWidth, screenHeight, _T("fullscreen")); - - // Inform the user - wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n ") + - m_maskout->GetDefaultDirectoryAbsPath() + wxFileName::GetPathSeparator() + "fullscreen.png", - _("Full screen capture"), wxICON_INFORMATION|wxOK, this); -} - -void ScreenshotFrame::OnCaptureRect(wxCommandEvent& WXUNUSED(event)) -{ - capturingRect = true; - wxMenuBar * menubar = this->GetMenuBar(); - menubar->FindItem(idMenuCapRect)->Enable(false); - menubar->FindItem(idMenuEndCapRect)->Enable(true); - - wxWindow * thePage = m_notebook1->GetPage(m_notebook1->GetSelection()); - - thePage->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout); - thePage->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout); - thePage->Connect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout); -} - -void ScreenshotFrame::OnEndCaptureRect(wxCommandEvent& WXUNUSED(event)) -{ - capturingRect = false; - wxMenuBar * menubar = this->GetMenuBar(); - menubar->FindItem(idMenuCapRect)->Enable(true); - menubar->FindItem(idMenuEndCapRect)->Enable(false); - - wxWindow * thePage = m_notebook1->GetPage(m_notebook1->GetSelection()); - - thePage->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout); - thePage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout); - thePage->Disconnect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout); -} - -void ScreenshotFrame::OnNotebookPageChanging( -#if SCREENSHOTGEN_USE_AUI -wxAuiNotebookEvent& event -#else -wxNotebookEvent& event -#endif -) -{ - if (!capturingRect) - { - event.Skip(); - return; - } - - wxWindow * thePage = m_notebook1->GetPage(event.GetOldSelection()); - - thePage->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout); - thePage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout); - thePage->Disconnect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout); - - event.Skip(); -} - -void ScreenshotFrame::OnNotebookPageChanged( -#if SCREENSHOTGEN_USE_AUI -wxAuiNotebookEvent& event -#else -wxNotebookEvent& event -#endif -) -{ - if (!capturingRect) - { - event.Skip(); - return; - } + wxBitmap fullscreen(1, 1); + AutoCaptureMechanism::Capture(&fullscreen, 0, 0, screenWidth, screenHeight); - wxWindow *thePage = m_notebook1->GetPage(event.GetSelection()); + AutoCaptureMechanism::Save(&fullscreen, wxT("fullscreen")); - thePage->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonDown ), NULL, m_maskout); - thePage->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( CtrlMaskOut::OnLeftButtonUp ), NULL, m_maskout); - thePage->Connect( wxEVT_MOTION, wxMouseEventHandler( CtrlMaskOut::OnMouseMoving ), NULL, m_maskout); - - event.Skip(); + wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n ") + + AutoCaptureMechanism::GetDefaultDirectoryAbsPath() + wxT("fullscreen.png"), + _("Full screen capture"), wxICON_INFORMATION|wxOK, this); } void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) { - wxString dir = m_maskout->GetDefaultDirectoryAbsPath(); + wxString dir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath(); // check if there are other screenshots taken before if (wxFileName::DirExists(dir)) { - int choice = wxMessageBox(_("It seems that you have already generated some screenshots.\n\nClick YES to delete them all (recommended) or NO to preserve them.\nClick CANCEL to cancel this auto-capture operation."), - _("Delete existing screenshots?"), - wxYES_NO|wxCANCEL|wxICON_QUESTION, this); + int choice = wxMessageBox( + _("It seems that you have already generated some screenshots.\n\nClick YES to delete them all (recommended) or NO to preserve them.\nClick CANCEL to cancel this auto-capture operation."), + _("Delete existing screenshots?"), + wxYES_NO | wxCANCEL | wxICON_QUESTION, this); + switch(choice) { case wxYES: @@ -296,7 +141,7 @@ void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) auto_cap.RegisterControl(m_slider1); auto_cap.RegisterControl(m_toggleBtn1, AJ_Union); auto_cap.RegisterControl(m_toggleBtn2, AJ_UnionEnd); - auto_cap.RegisterControl(m_hyperlink1); + auto_cap.RegisterControl(m_hyperlink1, wxT("wxHyperlinkCtrl")); auto_cap.RegisterControl(m_spinCtrl1, AJ_RegionAdjust); auto_cap.RegisterControl(m_spinBtn1); auto_cap.RegisterControl(m_scrollBar1);