X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/57ea89975efa3d98d6a641366adf269162755bd7..4f57a7bfcd1f09340d10c29ae04431d74fa97571:/utils/screenshotgen/src/screenshot_main.cpp diff --git a/utils/screenshotgen/src/screenshot_main.cpp b/utils/screenshotgen/src/screenshot_main.cpp index 02c3ef5375..365518ade8 100644 --- a/utils/screenshotgen/src/screenshot_main.cpp +++ b/utils/screenshotgen/src/screenshot_main.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // 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 @@ -10,119 +10,34 @@ #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. - - - NB: under wxGTK for the radio button "unchecked" to be unchecked, it's - important to put the wxRB_GROUP style on the first wxRadioButton - (the one "checked") and no flags on the second one. -*/ -void ScreenshotFrame::InitFBControls() -{ - // 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 // ---------------------------------------------------------------------------- @@ -139,14 +54,12 @@ void ScreenshotFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void ScreenshotFrame::OnSeeScreenshots(wxCommandEvent& WXUNUSED(event)) { - wxString defaultDir = m_maskout->GetDefaultDirectory(); - - // Check if defaultDir already existed - if (!wxDirExists(defaultDir)) - wxMkdir(defaultDir); + wxString defaultDir = AutoCaptureMechanism::GetDefaultDirectoryAbsPath(); - // 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)) @@ -154,7 +67,7 @@ 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.SetDescription(_("This utility automatically creates screenshots of wxWidgets controls for use in wxWidgets documentation.")); info.SetCopyright(_T("(C) 2008 Utensil Candel")); wxAboutBox(info); @@ -169,91 +82,18 @@ 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(); -} + wxBitmap fullscreen = AutoCaptureMechanism::Capture(0, 0, screenWidth, screenHeight); -void ScreenshotFrame::OnNotebookPageChanged( -#if SCREENSHOTGEN_USE_AUI -wxAuiNotebookEvent& event -#else -wxNotebookEvent& event -#endif -) -{ - if (!capturingRect) - { - event.Skip(); - return; - } + AutoCaptureMechanism::Save(fullscreen, _T("fullscreen")); - wxWindow *thePage = m_notebook1->GetPage(event.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); - - event.Skip(); + wxMessageBox(_("A screenshot of the entire screen was saved as:\n\n ") + + AutoCaptureMechanism::GetDefaultDirectoryAbsPath() + _T("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)) @@ -266,7 +106,7 @@ void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) case wxYES: { wxArrayString files; - wxDir::GetAllFiles(dir, &files, wxT("*.png"), wxDIR_FILES); + wxDir::GetAllFiles(dir, &files, _T("*.png"), wxDIR_FILES); // remove all PNG files from the screenshots folder int n = files.GetCount(); @@ -294,11 +134,11 @@ void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) auto_cap.RegisterControl(m_radioBtn2, AJ_UnionEnd); auto_cap.RegisterControl(m_bpButton1); auto_cap.RegisterControl(m_bitmap1); - auto_cap.RegisterControl(m_gauge1, wxT("wxGauge")); + auto_cap.RegisterControl(m_gauge1, _T("wxGauge")); 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, _T("wxHyperlinkCtrl")); auto_cap.RegisterControl(m_spinCtrl1, AJ_RegionAdjust); auto_cap.RegisterControl(m_spinBtn1); auto_cap.RegisterControl(m_scrollBar1); @@ -310,10 +150,10 @@ void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) auto_cap.RegisterControl(m_radioBox1); auto_cap.RegisterControl(m_staticBox1); auto_cap.RegisterControl(m_treeCtrl1); - auto_cap.RegisterControl(m_listCtrl1, wxT("wxListCtrl")); + auto_cap.RegisterControl(m_listCtrl1, _T("wxListCtrl")); auto_cap.RegisterControl(m_animationCtrl1); - auto_cap.RegisterControl(m_collPane1, wxT("wxCollapsiblePane"), AJ_Union); + auto_cap.RegisterControl(m_collPane1, _T("wxCollapsiblePane"), AJ_Union); auto_cap.RegisterControl(m_collPane2, AJ_UnionEnd); auto_cap.RegisterPageTurn(); @@ -324,13 +164,13 @@ void ScreenshotFrame::OnCaptureAllControls(wxCommandEvent& WXUNUSED(event)) auto_cap.RegisterPageTurn(); - auto_cap.RegisterControl(m_colourPicker1, wxT("wxColourPickerCtrl")); - auto_cap.RegisterControl(m_fontPicker1, wxT("wxFontPickerCtrl")); - auto_cap.RegisterControl(m_filePicker1, wxT("wxFilePickerCtrl"), AJ_RegionAdjust); - auto_cap.RegisterControl(m_calendar1, wxT("wxCalendarCtrl"), AJ_RegionAdjust); - auto_cap.RegisterControl(m_datePicker1, wxT("wxDatePickerCtrl")); - auto_cap.RegisterControl(m_genericDirCtrl1, wxT("wxGenericDirCtrl")); - auto_cap.RegisterControl(m_dirPicker1, wxT("wxDirPickerCtrl"), AJ_RegionAdjust); + auto_cap.RegisterControl(m_colourPicker1, _T("wxColourPickerCtrl")); + auto_cap.RegisterControl(m_fontPicker1, _T("wxFontPickerCtrl")); + auto_cap.RegisterControl(m_filePicker1, _T("wxFilePickerCtrl"), AJ_RegionAdjust); + auto_cap.RegisterControl(m_calendar1, _T("wxCalendarCtrl"), AJ_RegionAdjust); + auto_cap.RegisterControl(m_datePicker1, _T("wxDatePickerCtrl")); + auto_cap.RegisterControl(m_genericDirCtrl1, _T("wxGenericDirCtrl")); + auto_cap.RegisterControl(m_dirPicker1, _T("wxDirPickerCtrl"), AJ_RegionAdjust); auto_cap.RegisterPageTurn();