diff --git a/pcsx2/DebugTools/Debug.h b/pcsx2/DebugTools/Debug.h index 481ae9111f..8462e3810e 100644 --- a/pcsx2/DebugTools/Debug.h +++ b/pcsx2/DebugTools/Debug.h @@ -205,7 +205,6 @@ extern bool SrcLog_GPU( const char* fmt, ... ); #define PSXDMA_LOG 0&& #define PAD_LOG 0&& -#define GTE_LOG 0&& #define CDR_LOG 0&& #define GPU_LOG 0&& #define PSXCNT_LOG 0&& diff --git a/pcsx2/NewGUI/frmLogging.cpp b/pcsx2/NewGUI/frmLogging.cpp index ec7befcc79..bf3877f348 100644 --- a/pcsx2/NewGUI/frmLogging.cpp +++ b/pcsx2/NewGUI/frmLogging.cpp @@ -1,94 +1,122 @@ -/* Pcsx2 - Pc Ps2 Emulator - * Copyright (C) 2002-2009 Pcsx2 Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "PrecompiledHeader.h" -#include "Misc.h" -#include "frmLogging.h" - -#include - -using namespace wxHelpers; - -frmLogging::frmLogging(wxWindow* parent, int id, const wxPoint& pos, const wxSize& size): - wxDialogWithHelpers( parent, id, _T("Logging"), pos, size ) -{ - int i; - wxStaticBox* mainbox = new wxStaticBox( this, -1, wxEmptyString); - wxBoxSizer *mainsizer = new wxBoxSizer( wxHORIZONTAL ); - - wxStaticBoxSizer& eeDisasm = *new wxStaticBoxSizer( wxVERTICAL, this, _T("EE Disasm") ); - wxStaticBoxSizer& eeHw = *new wxStaticBoxSizer( wxVERTICAL, this, _T("EE Hardware") ); - - AddCheckBox( eeDisasm, _T("Core"), EE_CPU_LOG ); - AddCheckBox( eeDisasm, _T("Memory"), EE_MEM_LOG ); - AddCheckBox( eeDisasm, _T("Bios"), EE_BIOS_LOG ); - AddCheckBox( eeDisasm, _T("Elf"), EE_ELF_LOG ); - AddCheckBox( eeDisasm, _T("Fpu"), EE_FPU_LOG ); - AddCheckBox( eeDisasm, _T("VU0"), EE_VU0_LOG ); - AddCheckBox( eeDisasm, _T("Cop0"), EE_COP0_LOG ); - AddCheckBox( eeDisasm, _T("VU Macro"), EE_VU_MACRO_LOG ); - - AddCheckBox( eeHw, _T("Registers"), EE_HW_LOG ); - AddCheckBox( eeHw, _T("Dma"), EE_DMA_LOG ); - AddCheckBox( eeHw, _T("Vif"), EE_VIF_LOG ); - AddCheckBox( eeHw, _T("SPR"), EE_SPR_LOG ); - AddCheckBox( eeHw, _T("GIF"), EE_GIF_LOG ); - AddCheckBox( eeHw, _T("Sif"), EE_SIF_LOG ); - AddCheckBox( eeHw, _T("IPU"), EE_IPU_LOG ); - AddCheckBox( eeHw, _T("RPC"), EE_RPC_LOG ); - - wxStaticBox* iopbox = new wxStaticBox( this, -1, _T("IOP Logs")); - wxStaticBoxSizer& iopSizer = *new wxStaticBoxSizer( iopbox, wxVERTICAL ); - AddCheckBox( iopSizer, _T("IOP Log"), IOP_IOP_LOG ); - AddCheckBox( iopSizer, _T("Mem Log"), IOP_MEM_LOG ); - AddCheckBox( iopSizer, _T("Hw Log"), IOP_HW_LOG); - AddCheckBox( iopSizer, _T("Bios Log"), IOP_BIOS_LOG ); - AddCheckBox( iopSizer, _T("Dma Log"), IOP_DMA_LOG ); - AddCheckBox( iopSizer, _T("Pad Log"), IOP_PAD_LOG ); - AddCheckBox( iopSizer, _T("Gte Log"), IOP_GTE_LOG ); - AddCheckBox( iopSizer, _T("Cdr Log"), IOP_CDR_LOG ); - AddCheckBox( iopSizer, _T("GPU Log"), IOP_GPU_LOG ); - - wxStaticBox* miscbox = new wxStaticBox( this, -1, _T("Misc")); - wxStaticBoxSizer& miscSizer = *new wxStaticBoxSizer( miscbox, wxVERTICAL ); - AddCheckBox( miscSizer, _T("Log to STDOUT"), STDOUT_LOG ); - AddCheckBox( miscSizer, _T("SYMs Log"), SYMS_LOG ); - - mainsizer->Add( &eeDisasm, stdSpacingFlags ); - mainsizer->Add( &eeHw, stdSpacingFlags ); - mainsizer->Add( &iopSizer, stdSpacingFlags ); - mainsizer->Add( &miscSizer, stdSpacingFlags ); - - SetSizerAndFit( mainsizer, true ); - - - // Connect all the checkboxes to one function, and pass the checkbox id as user data. - // (user data pointer isn't actually a pointer, but instead just the checkbox id) - for (i = EE_CPU_LOG; i >= SYMS_LOG; i++) - Connect( i, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(frmLogging::LogChecked), (wxObject*)i ); -} - - -void frmLogging::LogChecked(wxCommandEvent &event) -{ - int checkId = (int)event.m_callbackUserData; - event.Skip(); -} - - - +/* Pcsx2 - Pc Ps2 Emulator + * Copyright (C) 2002-2009 Pcsx2 Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "PrecompiledHeader.h" +#include "Misc.h" +#include "frmLogging.h" + +#include + + +using namespace wxHelpers; + +//wxString frmLogging::m_DisasmWarning( "\nWarning: Disasm dumps are incredibly slow, and generate extremely large logfiles." ); + +frmLogging::eeLogOptionsPanel::eeLogOptionsPanel( wxWindow* parent ) : + CheckedStaticBox( parent, wxHORIZONTAL, "EE Logs" ) +{ + wxStaticBoxSizer& eeDisasm = *new wxStaticBoxSizer( wxVERTICAL, this, _T("Disasm") ); + wxStaticBoxSizer& eeHw = *new wxStaticBoxSizer( wxVERTICAL, this, _T("Hardware") ); + + wxBoxSizer& eeStack = *new wxBoxSizer( wxVERTICAL ); + wxBoxSizer& eeMisc = *new wxBoxSizer( wxVERTICAL ); + + //wxToolTip + wxHelpers::AddCheckBox( this, eeDisasm,_T("Core"), EE_CPU_LOG ); + wxHelpers::AddCheckBox( this, eeDisasm,_T("Fpu"), EE_FPU_LOG ); + wxHelpers::AddCheckBox( this, eeDisasm,_T("VU0"), EE_VU0_LOG ); + wxHelpers::AddCheckBox( this, eeDisasm,_T("Cop0"), EE_COP0_LOG ); + wxHelpers::AddCheckBox( this, eeDisasm,_T("VU Macro"), EE_VU_MACRO_LOG ); + + wxHelpers::AddCheckBox( this, eeMisc, _T("Memory"), EE_MEM_LOG ); + wxHelpers::AddCheckBox( this, eeMisc, _T("Bios"), EE_BIOS_LOG ); + wxHelpers::AddCheckBox( this, eeMisc, _T("Elf"), EE_ELF_LOG ); + + wxHelpers::AddCheckBox( this, eeHw, _T("Registers"),EE_HW_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("Dma"), EE_DMA_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("Vif"), EE_VIF_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("SPR"), EE_SPR_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("GIF"), EE_GIF_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("Sif"), EE_SIF_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("IPU"), EE_IPU_LOG ); + wxHelpers::AddCheckBox( this, eeHw, _T("RPC"), EE_RPC_LOG ); + + // Sizer hierarchy: + + eeStack.Add( &eeDisasm, stdSpacingFlags ); + eeStack.Add( &eeMisc ); + + BoxSizer.Add( &eeHw, stdSpacingFlags ); + BoxSizer.Add( &eeStack ); + + SetSizerAndFit( &BoxSizer, true ); +} + + +frmLogging::frmLogging(wxWindow* parent, int id, const wxPoint& pos, const wxSize& size): + wxDialogWithHelpers( parent, id, _T("Logging"), true, pos, size ) +{ + int i; + + //wxStaticBoxSizer& eeBox = *new wxStaticBoxSizer( wxHORIZONTAL, this ); + + eeLogOptionsPanel& eeBox = *new eeLogOptionsPanel( this ); + + wxStaticBoxSizer& iopSizer = *new wxStaticBoxSizer( wxVERTICAL, this, _T("IOP Logs") ); + + AddCheckBox( iopSizer, _T("Disasm"), IOP_IOP_LOG ); + AddCheckBox( iopSizer, _T("Memory"), IOP_MEM_LOG ); + AddCheckBox( iopSizer, _T("Bios"), IOP_BIOS_LOG ); + AddCheckBox( iopSizer, _T("Registers"), IOP_HW_LOG); + AddCheckBox( iopSizer, _T("Dma"), IOP_DMA_LOG ); + AddCheckBox( iopSizer, _T("Pad"), IOP_PAD_LOG ); + AddCheckBox( iopSizer, _T("Cdrom"), IOP_CDR_LOG ); + AddCheckBox( iopSizer, _T("GPU (PSX)"), IOP_GPU_LOG ); + + wxStaticBoxSizer& miscSizer = *new wxStaticBoxSizer( wxHORIZONTAL, this, _T("Misc") ); + AddCheckBox( miscSizer, _T("Log to STDOUT"), STDOUT_LOG ); + AddCheckBox( miscSizer, _T("SYMs Log"), SYMS_LOG ); + + wxBoxSizer& mainsizer = *new wxBoxSizer( wxVERTICAL ); + wxBoxSizer& topSizer = *new wxBoxSizer( wxHORIZONTAL ); + + topSizer.Add( &eeBox, stdSpacingFlags ); + topSizer.Add( &iopSizer, stdSpacingFlags ); + + mainsizer.Add( &topSizer ); // topsizer has it's own padding. + mainsizer.Add( &miscSizer, stdSpacingFlags ); + + AddOkCancel( mainsizer ); + + SetSizerAndFit( &mainsizer, true ); + + // Connect all the checkboxes to one function, and pass the checkbox id as user data. + // (user data pointer isn't actually a pointer, but instead just the checkbox id) + for (i = EE_CPU_LOG; i >= SYMS_LOG; i++) + Connect( i, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(frmLogging::LogChecked), (wxObject*)i ); +} + + +void frmLogging::LogChecked(wxCommandEvent &event) +{ + int checkId = (int)event.m_callbackUserData; + event.Skip(); +} + + + diff --git a/pcsx2/NewGUI/frmLogging.h b/pcsx2/NewGUI/frmLogging.h index 2502c21c39..d77e501b81 100644 --- a/pcsx2/NewGUI/frmLogging.h +++ b/pcsx2/NewGUI/frmLogging.h @@ -1,69 +1,77 @@ -/* Pcsx2 - Pc Ps2 Emulator - * Copyright (C) 2002-2009 Pcsx2 Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include -#include - -#include "wxHelpers.h" - -#pragma once - -class frmLogging: public wxDialogWithHelpers -{ -public: - frmLogging( wxWindow* parent, int id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize ); - -protected: - - // DECLARE_EVENT_TABLE(); - enum { - EE_CPU_LOG = 100, - EE_MEM_LOG, - EE_HW_LOG, - EE_DMA_LOG, - EE_BIOS_LOG, - EE_ELF_LOG, - EE_FPU_LOG, - EE_MMI_LOG, - EE_VU0_LOG, - EE_COP0_LOG, - EE_VIF_LOG, - EE_SPR_LOG, - EE_GIF_LOG, - EE_SIF_LOG, - EE_IPU_LOG, - EE_VU_MACRO_LOG, - EE_RPC_LOG, - - IOP_IOP_LOG, - IOP_MEM_LOG, - IOP_HW_LOG, - IOP_BIOS_LOG, - IOP_DMA_LOG, - IOP_PAD_LOG, - IOP_GTE_LOG, - IOP_CDR_LOG, - IOP_GPU_LOG, - - STDOUT_LOG, - SYMS_LOG - } LogChecks; - -public: - void LogChecked(wxCommandEvent &event); -}; +/* Pcsx2 - Pc Ps2 Emulator + * Copyright (C) 2002-2009 Pcsx2 Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include + +#include "wxHelpers.h" + +#pragma once + +class frmLogging: public wxDialogWithHelpers +{ +public: + frmLogging( wxWindow* parent, int id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize ); + +protected: + + enum { + EE_CPU_LOG = 100, + EE_MEM_LOG, + EE_HW_LOG, + EE_DMA_LOG, + EE_BIOS_LOG, + EE_ELF_LOG, + EE_FPU_LOG, + EE_VU0_LOG, + EE_COP0_LOG, + EE_VIF_LOG, + EE_SPR_LOG, + EE_GIF_LOG, + EE_SIF_LOG, + EE_IPU_LOG, + EE_VU_MACRO_LOG, + EE_RPC_LOG, + + IOP_IOP_LOG, + IOP_MEM_LOG, + IOP_HW_LOG, + IOP_BIOS_LOG, + IOP_DMA_LOG, + IOP_PAD_LOG, + IOP_CDR_LOG, + IOP_GPU_LOG, + + STDOUT_LOG, + SYMS_LOG + } LogChecks; + + class eeLogOptionsPanel : public CheckedStaticBox + { + public: + eeLogOptionsPanel( wxWindow* parent ); + }; + + +public: + void LogChecked(wxCommandEvent &event); + +protected: + //DECLARE_EVENT_TABLE() + +}; diff --git a/pcsx2/NewGUI/wxHelpers.cpp b/pcsx2/NewGUI/wxHelpers.cpp index fc17be510b..a34535966b 100644 --- a/pcsx2/NewGUI/wxHelpers.cpp +++ b/pcsx2/NewGUI/wxHelpers.cpp @@ -4,6 +4,12 @@ #include #include "wxHelpers.h" +#include + +#if wxUSE_TOOLTIPS +# include +#endif + namespace wxHelpers { wxSizerFlags stdCenteredFlags( wxSizerFlags().Align(wxALIGN_CENTER).DoubleBorder() ); @@ -11,19 +17,82 @@ namespace wxHelpers wxSizerFlags stdButtonSizerFlags( wxSizerFlags().Align(wxALIGN_RIGHT).Border() ); wxSizerFlags CheckboxFlags( wxSizerFlags().Border( wxALL, 6 ).Expand() ); - void AddCheckBox( wxBoxSizer& sizer, wxWindow* parent, const wxString& label, wxWindowID id ) + wxCheckBox& AddCheckBox( wxWindow* parent, wxBoxSizer& sizer, const wxString& label, wxWindowID id ) { - sizer.Add( new wxCheckBox( parent, id, label ), CheckboxFlags ); + wxCheckBox* retval = new wxCheckBox( parent, id, label ); + sizer.Add( retval, CheckboxFlags ); + return *retval; } } -void wxDialogWithHelpers::AddCheckBox( wxBoxSizer& sizer, const wxString& label, wxWindowID id ) +CheckedStaticBox::CheckedStaticBox( wxWindow* parent, int orientation, const wxString& title=wxEmptyString ) : + wxPanel( parent ), + BoxSizer( *new wxStaticBoxSizer( orientation, this ) ), + MainToggle( *new wxCheckBox( this, wxID_ANY, title, wxPoint( 8, 1 ) ) ) { - wxHelpers::AddCheckBox( sizer, this, label, id ); + MainToggle.SetSize( MainToggle.GetSize() + wxSize( 8, 0 ) ); + + //Connect( 100, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( CheckedStaticBox::OnMainToggleEvent ), (wxObject*)this ); } -wxDialogWithHelpers::wxDialogWithHelpers( wxWindow* parent, int id, const wxString& title, const wxPoint& pos, const wxSize& size ) : - wxDialog( parent, id, title, pos, size ) +BEGIN_EVENT_TABLE(CheckedStaticBox, wxPanel) + EVT_CHECKBOX(wxID_ANY, MainToggle_Click) +END_EVENT_TABLE() + +void CheckedStaticBox::MainToggle_Click( wxCommandEvent& evt ) { + SetValue( evt.IsChecked() ); +} + +// Sets the main checkbox status, and enables/disables all child controls +// bound to the StaticBox accordingly. +void CheckedStaticBox::SetValue( bool val ) +{ + wxWindowList& list = GetChildren(); + + for( wxWindowList::iterator iter = list.begin(); iter != list.end(); ++iter) + { + wxWindow *current = *iter; + if( current != &MainToggle ) + current->Enable( val ); + } + //MainToggle.Enable(); + MainToggle.SetValue( val ); +} + +bool CheckedStaticBox::GetValue() const +{ + return MainToggle.GetValue(); +} + +wxCheckBox& wxDialogWithHelpers::AddCheckBox( wxBoxSizer& sizer, const wxString& label, wxWindowID id ) +{ + return wxHelpers::AddCheckBox( this, sizer, label, id ); +} + +wxDialogWithHelpers::wxDialogWithHelpers( wxWindow* parent, int id, const wxString& title, bool hasContextHelp, const wxPoint& pos, const wxSize& size ) : + wxDialog( parent, id, title, pos, size ), + m_hasContextHelp( hasContextHelp ) +{ + if( hasContextHelp ) + wxHelpProvider::Set( new wxSimpleHelpProvider() ); +} + +void wxDialogWithHelpers::AddOkCancel( wxBoxSizer &sizer ) +{ + wxBoxSizer* buttonSizer = &sizer; + if( m_hasContextHelp ) + { + // Add the context-sensitive help button on the caption for the platforms + // which support it (currently MSW only) + SetExtraStyle( wxDIALOG_EX_CONTEXTHELP ); + +#ifndef __WXMSW__ + // create a sizer to hold the help and ok/cancel buttons. + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + buttonSizer->Add( new wxContextHelpButton(this), stdButtonSizerFlags.Align( wxALIGN_LEFT ) ); +#endif + } + buttonSizer->Add( CreateStdDialogButtonSizer( wxOK | wxCANCEL ), wxHelpers::stdButtonSizerFlags ); } diff --git a/pcsx2/NewGUI/wxHelpers.h b/pcsx2/NewGUI/wxHelpers.h index dca7ee55f2..d270a52df4 100644 --- a/pcsx2/NewGUI/wxHelpers.h +++ b/pcsx2/NewGUI/wxHelpers.h @@ -3,9 +3,8 @@ namespace wxHelpers { // Creates a new checkbox and adds it to the specified sizer/parent combo. - // Uses the default psacer setting for adding checkboxes. - extern void AddCheckBox( wxBoxSizer& sizer, wxWindow* parent, const wxString& label, wxWindowID id=wxID_ANY ); - + // Uses the default spacer setting for adding checkboxes. + extern wxCheckBox& AddCheckBox( wxWindow* parent, wxBoxSizer& sizer, const wxString& label, wxWindowID id=wxID_ANY ); extern wxSizerFlags stdCenteredFlags; extern wxSizerFlags stdSpacingFlags; @@ -18,10 +17,37 @@ namespace wxHelpers extern wxSizerFlags CheckboxFlags; } -class wxDialogWithHelpers : public wxDialog +class CheckedStaticBox : public wxPanel { public: - wxDialogWithHelpers(wxWindow* parent, int id, const wxString& title, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize ); + wxStaticBoxSizer& BoxSizer; // Boxsizer which olds all child items. + wxCheckBox& MainToggle; // toggle which can enable/disable all child controls + +public: + CheckedStaticBox( wxWindow* parent, int orientation, const wxString& title ); - void AddCheckBox( wxBoxSizer& sizer, const wxString& label, wxWindowID id=wxID_ANY ); + //virtual bool Layout(); + void SetValue( bool val ); + bool GetValue() const; + +protected: + DECLARE_EVENT_TABLE(); + +public: + void MainToggle_Click( wxCommandEvent& evt ); }; + +class wxDialogWithHelpers : public wxDialog +{ +protected: + bool m_hasContextHelp; + +public: + wxDialogWithHelpers(wxWindow* parent, int id, const wxString& title, bool hasContextHelp, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize ); + +protected: + wxCheckBox& AddCheckBox( wxBoxSizer& sizer, const wxString& label, wxWindowID id=wxID_ANY ); + void AddOkCancel( wxBoxSizer& sizer ); + +}; +