/[pcsx2_0.9.7]/trunk/common/include/Utilities/wxGuiTools.h
ViewVC logotype

Diff of /trunk/common/include/Utilities/wxGuiTools.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 31 by william, Tue Sep 7 03:24:11 2010 UTC revision 62 by william, Tue Sep 7 11:08:22 2010 UTC
# Line 15  Line 15 
15    
16  #pragma once  #pragma once
17    
18    // ----------------------------------------------------------------------------
19    // wxGuiTools.h
20    //
21    // This file is meant to contain utility classes for users of the wxWidgets library.
22    // All classes in this file are dependent on wxBase and wxCore libraries!  Meaning
23    // you will have to use wxCore header files and link against wxCore (GUI) to build
24    // them.  For tools which require only wxBase, see wxBaseTools.h
25    // ----------------------------------------------------------------------------
26    
27    
28  #if wxUSE_GUI  #if wxUSE_GUI
29    
30  #include "Dependencies.h"  #include "Dependencies.h"
# Line 28  class pxStaticHeading; Line 38  class pxStaticHeading;
38  class pxCheckBox;  class pxCheckBox;
39  class wxSpinCtrl;  class wxSpinCtrl;
40    
41    namespace pxSizerFlags
42    {
43            static const int StdPadding = 4;
44    
45            extern wxSizerFlags StdSpace();
46            extern wxSizerFlags StdCenter();
47            extern wxSizerFlags StdExpand();
48            extern wxSizerFlags TopLevelBox();
49            extern wxSizerFlags SubGroup();
50            extern wxSizerFlags StdButton();
51            extern wxSizerFlags Checkbox();
52    };
53    
54  #define wxSF            wxSizerFlags()  #define wxSF            wxSizerFlags()
55    
56  // --------------------------------------------------------------------------------------  // --------------------------------------------------------------------------------------
# Line 58  struct pxAlignmentType Line 81  struct pxAlignmentType
81                  return Apply( _flgs );                  return Apply( _flgs );
82          }          }
83    
84            wxSizerFlags Expand() const
85            {
86                    return Apply().Expand();
87            }
88    
89          wxSizerFlags Border( int dir, int padding ) const          wxSizerFlags Border( int dir, int padding ) const
90          {          {
91                  return Apply().Border( dir, padding );                  return Apply().Border( dir, padding );
# Line 110  struct pxStretchType Line 138  struct pxStretchType
138          }          }
139  };  };
140    
141  static __forceinline wxSizerFlags pxProportion( int prop )  static __fi wxSizerFlags pxProportion( int prop )
142  {  {
143          return wxSizerFlags( prop );          return wxSizerFlags( prop );
144  }  }
145    
146  static __forceinline wxSizerFlags pxBorder( int dir, int pad )  static __fi wxSizerFlags pxBorder( int dir=wxALL, int pad=pxSizerFlags::StdPadding )
147  {  {
148          return wxSizerFlags().Border( dir, pad );          return wxSizerFlags().Border( dir, pad );
149  }  }
# Line 269  void operator+=( wxSizer* target, const Line 297  void operator+=( wxSizer* target, const
297          target->Add( src.window, src.flags );          target->Add( src.window, src.flags );
298  }  }
299    
 // ----------------------------------------------------------------------------  
 // wxGuiTools.h  
 //  
 // This file is meant to contain utility classes for users of the wxWidgets library.  
 // All classes in this file are dependent on wxBase and wxCore libraries!  Meaning  
 // you will have to use wxCore header files and link against wxCore (GUI) to build  
 // them.  For tools which require only wxBase, see wxBaseTools.h  
 // ----------------------------------------------------------------------------  
   
 namespace pxSizerFlags  
 {  
         static const int StdPadding = 5;  
   
         extern wxSizerFlags StdSpace();  
         extern wxSizerFlags StdCenter();  
         extern wxSizerFlags StdExpand();  
         extern wxSizerFlags TopLevelBox();  
         extern wxSizerFlags SubGroup();  
         extern wxSizerFlags StdButton();  
         extern wxSizerFlags Checkbox();  
 };  
300    
301  BEGIN_DECLARE_EVENT_TYPES()  BEGIN_DECLARE_EVENT_TYPES()
302          // Added to the event queue by pxDialogWithHelpers          // Added to the event queue by pxDialogWithHelpers
303          DECLARE_EVENT_TYPE( pxEvt_OnDialogCreated, -1 )          DECLARE_EVENT_TYPE( pxEvt_OnDialogCreated, -1 )
304  END_DECLARE_EVENT_TYPES()  END_DECLARE_EVENT_TYPES()
305    
306    
307    // --------------------------------------------------------------------------------------
308    //  pxDialogCreationFlags
309    // --------------------------------------------------------------------------------------
310    class pxDialogCreationFlags
311    {
312    public:
313            wxSize                  MinimumSize;
314            wxOrientation   BoxSizerOrient;
315    
316            bool                    isResizable;
317            bool                    hasContextHelp;
318            bool                    hasCaption;
319            bool                    hasMinimizeBox;
320            bool                    hasMaximizeBox;
321            bool                    hasSystemMenu;
322            bool                    hasCloseBox;
323    
324    public:
325            virtual ~pxDialogCreationFlags() throw() {}
326            
327            pxDialogCreationFlags()
328            {
329                    MinimumSize             = wxDefaultSize;
330                    BoxSizerOrient  = wxVERTICAL;
331                    isResizable             = false;
332                    hasContextHelp  = false;
333    
334                    hasCloseBox             = true;
335                    hasSystemMenu   = true;
336                    hasMinimizeBox  = false;
337                    hasMaximizeBox  = false;
338                    hasCaption              = true;
339            }
340    
341            pxDialogCreationFlags& SetSizerOrient( wxOrientation orient )
342            {
343                    BoxSizerOrient = orient;
344                    return *this;
345            }
346    
347            pxDialogCreationFlags& SetResize( bool enable=true )
348            {
349                    isResizable = enable;
350                    return *this;
351            }
352    
353            pxDialogCreationFlags& SetMinimize( bool enable=true )
354            {
355                    hasMinimizeBox = enable;
356                    return *this;
357            }
358    
359            pxDialogCreationFlags& SetMaximize( bool enable=true )
360            {
361                    hasMaximizeBox = enable;
362                    return *this;
363            }
364    
365            // NOTE: Enabling system menu on dialogs usually doesn't work, and might cause
366            // other unwanted behavior, such as a missing close button.
367            pxDialogCreationFlags& SetSystemMenu( bool enable=true )
368            {
369                    hasSystemMenu = enable;
370                    return *this;
371            }
372    
373            pxDialogCreationFlags& SetCaption( bool enable=true )
374            {
375                    hasCaption = enable;
376                    return *this;
377            }
378    
379            pxDialogCreationFlags& SetCloseBox( bool enable=true )
380            {
381                    hasCloseBox = enable;
382                    return *this;
383            }
384    
385            pxDialogCreationFlags SetContextHelp( bool enabled=true )
386            {
387                    hasContextHelp = enabled;
388                    return *this;
389            }
390    
391            pxDialogCreationFlags& SetMinWidth( int width )
392            {
393                    if( width > MinimumSize.x ) MinimumSize.SetWidth( width );
394                    return *this;
395            }
396    
397            pxDialogCreationFlags& SetMinHeight( int height )
398            {
399                    if( height > MinimumSize.y ) MinimumSize.SetHeight( height );
400                    return *this;
401            }
402    
403            pxDialogCreationFlags& SetMinSize( const wxSize& size )
404            {
405                    return SetMinWidth(size.x).SetMinHeight(size.y);
406            }
407    
408    
409            pxDialogCreationFlags Horizontal() const
410            {
411                    return pxDialogCreationFlags(*this).SetSizerOrient( wxHORIZONTAL );
412            }
413    
414            pxDialogCreationFlags Vertical() const
415            {
416                    return pxDialogCreationFlags(*this).SetSizerOrient( wxVERTICAL );
417            }
418            
419            pxDialogCreationFlags NoSizer() const
420            {
421                    return pxDialogCreationFlags(*this).SetSizerOrient( (wxOrientation)0 );
422            }
423    
424            pxDialogCreationFlags Resize( bool enable=true ) const
425            {
426                    return pxDialogCreationFlags(*this).SetResize( enable );
427            }
428    
429            pxDialogCreationFlags Minimize( bool enable=true ) const
430            {
431                    return pxDialogCreationFlags(*this).SetMinimize( enable );
432            }
433    
434            pxDialogCreationFlags Maximize( bool enable=true ) const
435            {
436                    return pxDialogCreationFlags(*this).SetMaximize( enable );
437            }
438    
439            // NOTE: Enabling system menu on dialogs usually doesn't work, and might cause
440            // other unwanted behavior, such as a missing close button.
441            pxDialogCreationFlags SystemMenu( bool enable=true ) const
442            {
443                    return pxDialogCreationFlags(*this).SetSystemMenu( false );
444            }
445    
446            pxDialogCreationFlags Caption( bool enable=true ) const
447            {
448                    return pxDialogCreationFlags(*this).SetCaption( enable );
449            }
450    
451            pxDialogCreationFlags CloseBox( bool enable=true ) const
452            {
453                    return pxDialogCreationFlags(*this).SetCloseBox( enable );
454            }
455    
456            pxDialogCreationFlags NoResize() const
457            {
458                    return pxDialogCreationFlags(*this).SetResize( false );
459            }
460    
461            pxDialogCreationFlags NoMinimize() const
462            {
463                    return pxDialogCreationFlags(*this).SetMinimize( false );
464            }
465    
466            pxDialogCreationFlags NoMaximize() const
467            {
468                    return pxDialogCreationFlags(*this).SetMaximize( false );
469            }
470    
471            pxDialogCreationFlags NoSystemMenu() const
472            {
473                    return pxDialogCreationFlags(*this).SetSystemMenu( false );
474            }
475    
476            pxDialogCreationFlags NoCaption() const
477            {
478                    return pxDialogCreationFlags(*this).SetCaption( false );
479            }
480    
481            pxDialogCreationFlags NoCloseBox() const
482            {
483                    return pxDialogCreationFlags(*this).SetCloseBox( false );
484            }
485    
486            pxDialogCreationFlags MinWidth( int width ) const
487            {
488                    return pxDialogCreationFlags(*this).SetMinWidth( width );
489            }
490    
491            pxDialogCreationFlags MinHeight( int height ) const
492            {
493                    return pxDialogCreationFlags(*this).SetMinHeight( height );
494            }
495    
496            pxDialogCreationFlags MinSize( const wxSize& size ) const
497            {
498                    return pxDialogCreationFlags(*this).SetMinSize( size );
499            }
500    
501            pxDialogCreationFlags MinSize( int width, int height ) const
502            {
503                    return pxDialogCreationFlags(*this).SetMinWidth( width ).SetMinHeight( height );
504            }
505            
506            int GetWxWindowFlags() const
507            {
508                    int retval = 0;
509                    if( isResizable )               retval |= wxRESIZE_BORDER;
510                    if( hasCaption )                retval |= wxCAPTION;
511                    if( hasMaximizeBox )    retval |= wxMAXIMIZE_BOX;
512                    if( hasMinimizeBox )    retval |= wxMINIMIZE_BOX;
513                    if( hasSystemMenu )             retval |= wxSYSTEM_MENU;
514                    if( hasCloseBox )               retval |= wxCLOSE_BOX;
515                    
516                    return retval;
517            }
518    };
519    
520  // --------------------------------------------------------------------------------------  // --------------------------------------------------------------------------------------
521  //  wxDialogWithHelpers  //  wxDialogWithHelpers
522  // --------------------------------------------------------------------------------------  // --------------------------------------------------------------------------------------
# Line 305  class wxDialogWithHelpers : public wxDia Line 526  class wxDialogWithHelpers : public wxDia
526    
527  protected:  protected:
528          bool                            m_hasContextHelp;          bool                            m_hasContextHelp;
         int                                     m_idealWidth;  
529          wxBoxSizer*                     m_extraButtonSizer;          wxBoxSizer*                     m_extraButtonSizer;
530                    wxRect                          m_CreatedRect;
531    
532  public:  public:
533          wxDialogWithHelpers();          wxDialogWithHelpers();
534          wxDialogWithHelpers(wxWindow* parent, const wxString& title, bool hasContextHelp=false, bool resizable=false );          wxDialogWithHelpers(wxWindow* parent, const wxString& title, const pxDialogCreationFlags& cflags = pxDialogCreationFlags() );
         wxDialogWithHelpers(wxWindow* parent, const wxString& title, wxOrientation orient);  
535          virtual ~wxDialogWithHelpers() throw();          virtual ~wxDialogWithHelpers() throw();
536    
537      void Init();      void Init( const pxDialogCreationFlags& cflags );
538          void AddOkCancel( wxSizer& sizer, bool hasApply=false );          void AddOkCancel( wxSizer& sizer, bool hasApply=false );
539          void AddOkCancel( wxSizer* sizer=NULL, bool hasApply=false );          void AddOkCancel( wxSizer* sizer=NULL, bool hasApply=false );
540    
# Line 328  public: Line 548  public:
548          // screenshots to disk)          // screenshots to disk)
549          virtual wxString GetDialogName() const;          virtual wxString GetDialogName() const;
550    
551          virtual pxStaticText*           Text( const wxString& label );          virtual wxStaticText&   Label( const wxString& label );
552          virtual pxStaticHeading*        Heading( const wxString& label );          virtual pxStaticText&   Text( const wxString& label );
553            virtual pxStaticText&   Heading( const wxString& label );
         virtual wxDialogWithHelpers& SetIdealWidth( int newWidth ) { m_idealWidth = newWidth; return *this; }  
554    
555          int GetIdealWidth() const { return m_idealWidth; }          wxDialogWithHelpers& SetMinWidth( int newWidth );
556          bool HasIdealWidth() const { return m_idealWidth != wxDefaultCoord; }          wxDialogWithHelpers& SetMinHeight( int newHeight );
557            
558            int GetCharHeight() const;
559    
560  protected:  protected:
561          void OnDialogCreated( wxCommandEvent& evt );          void OnDialogCreated( wxCommandEvent& evt );
562          void OnOkCancel(wxCommandEvent& evt);          void OnOkCancel(wxCommandEvent& evt);
563          void OnCloseWindow(wxCloseEvent& event);          void OnCloseWindow(wxCloseEvent& event);
564    
565            bool ShouldPreventAppExit() const { return false; }
566    
567            void DoAutoCenter();
568  };  };
569    
570  // --------------------------------------------------------------------------------------  // --------------------------------------------------------------------------------------
# Line 363  class wxPanelWithHelpers : public wxPane Line 588  class wxPanelWithHelpers : public wxPane
588  {  {
589          DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanelWithHelpers)          DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanelWithHelpers)
590    
 protected:  
         int             m_idealWidth;  
   
591  public:  public:
592          wxPanelWithHelpers( wxWindow* parent, wxOrientation orient, const wxString& staticBoxLabel );          wxPanelWithHelpers( wxWindow* parent, wxOrientation orient, const wxString& staticBoxLabel );
593          wxPanelWithHelpers( wxWindow* parent, wxOrientation orient );          wxPanelWithHelpers( wxWindow* parent, wxOrientation orient );
# Line 374  public: Line 596  public:
596    
597          wxPanelWithHelpers* AddFrame( const wxString& label, wxOrientation orient=wxVERTICAL );          wxPanelWithHelpers* AddFrame( const wxString& label, wxOrientation orient=wxVERTICAL );
598    
599          pxStaticText*           Text( const wxString& label );          wxStaticText&   Label( const wxString& label );
600          pxStaticHeading*        Heading( const wxString& label );          pxStaticText&   Text( const wxString& label );
601            pxStaticText&   Heading( const wxString& label );
602    
603          // TODO : Propagate to children?          virtual wxPanelWithHelpers& SetMinWidth( int newWidth );
         wxPanelWithHelpers& SetIdealWidth( int width ) { m_idealWidth = width;  return *this; }  
         int GetIdealWidth() const { return m_idealWidth; }  
         bool HasIdealWidth() const { return m_idealWidth != wxDefaultCoord; }  
604    
605  protected:  protected:
606          void Init();          void Init();
# Line 401  protected: Line 621  protected:
621  class pxTextWrapperBase  class pxTextWrapperBase
622  {  {
623  protected:  protected:
624          bool    m_eol;          bool            m_eol;
625          int             m_linecount;          int                     m_linecount;
626            wxString        m_indent;
627    
628  public:  public:
629          virtual ~pxTextWrapperBase() throw() { }          virtual ~pxTextWrapperBase() throw() { }
630    
631      pxTextWrapperBase()      pxTextWrapperBase( const wxString& indent=wxEmptyString )
632                    : m_indent( indent )
633          {          {
634                  m_eol = false;                  m_eol = false;
635                  m_linecount = 0;                  m_linecount = 0;
# Line 444  class pxTextWrapper : public pxTextWrapp Line 666  class pxTextWrapper : public pxTextWrapp
666          typedef pxTextWrapperBase _parent;          typedef pxTextWrapperBase _parent;
667    
668  protected:  protected:
669          wxString m_text;          wxString        m_text;
670    
671  public:  public:
672          pxTextWrapper() : pxTextWrapperBase() { }          pxTextWrapper( const wxString& wrapPrefix=wxEmptyString )
673                    : pxTextWrapperBase( wrapPrefix )
674            { }
675    
676          virtual ~pxTextWrapper() throw() { }          virtual ~pxTextWrapper() throw() { }
677    
678      const wxString& GetResult() const      const wxString& GetResult() const
# Line 456  public: Line 681  public:
681      }      }
682    
683          pxTextWrapper& Wrap( const wxWindow& win, const wxString& text, int widthMax );          pxTextWrapper& Wrap( const wxWindow& win, const wxString& text, int widthMax );
684            pxTextWrapper& Wrap( const wxWindow* win, const wxString& text, int widthMax );
685    
686  protected:  protected:
687      virtual void OnOutputLine(const wxString& line);      void OnOutputLine(const wxString& line);
688      virtual void OnNewLine();      void OnNewLine();
689  };  };
690    
691  // --------------------------------------------------------------------------------------  // --------------------------------------------------------------------------------------
# Line 478  protected: Line 704  protected:
704          void _DoWrite( const wxChar* msg );          void _DoWrite( const wxChar* msg );
705    
706  public:  public:
707          pxWindowTextWriter( wxDC& dc )          pxWindowTextWriter( wxDC& dc );
708                  : m_dc( dc )          virtual ~pxWindowTextWriter() throw() { }
         {  
                 m_curpos = wxPoint();  
                 m_align = wxALIGN_CENTER;  
                 m_leading = 2;  
                   
                 OnFontChanged();          
         }  
   
         virtual ~pxWindowTextWriter() throw()  
         {  
           
         }  
709                    
710          virtual void OnFontChanged();          virtual void OnFontChanged();
711    
712          pxWindowTextWriter& WriteLn();          pxWindowTextWriter& WriteLn();
713          pxWindowTextWriter& WriteLn( const wxChar* fmt, ... );          pxWindowTextWriter& FormatLn( const wxChar* fmt, ... );
714            pxWindowTextWriter& WriteLn( const wxChar* fmt );
715          pxWindowTextWriter& SetFont( const wxFont& font );          pxWindowTextWriter& SetFont( const wxFont& font );
716          pxWindowTextWriter& Align( const wxAlignment& align );          pxWindowTextWriter& Align( const wxAlignment& align );
717                                    
# Line 590  public: Line 805  public:
805    
806  extern void pxFitToDigits( wxWindow* win, int digits );  extern void pxFitToDigits( wxWindow* win, int digits );
807  extern void pxFitToDigits( wxSpinCtrl* win, int digits );  extern void pxFitToDigits( wxSpinCtrl* win, int digits );
808  extern wxTextCtrl* CreateNumericalTextCtrl( wxWindow* parent, int digits );  extern wxTextCtrl* CreateNumericalTextCtrl( wxWindow* parent, int digits, long flags = wxTE_RIGHT );
809    
810    
811  //////////////////////////////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////////////////////////////
# Line 598  extern wxTextCtrl* CreateNumericalTextCt Line 813  extern wxTextCtrl* CreateNumericalTextCt
813  extern bool pxDialogExists( const wxString& name );  extern bool pxDialogExists( const wxString& name );
814  extern bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos );  extern bool pxIsValidWindowPosition( const wxWindow& window, const wxPoint& windowPos );
815  extern wxRect wxGetDisplayArea();  extern wxRect wxGetDisplayArea();
816    extern wxString pxGetAppName();
817    
818    extern int pxGetCharHeight( const wxWindow* wind, int rows=1 );
819    extern int pxGetCharHeight( const wxWindow& wind, int rows=1 );
820    
821  extern wxString pxFormatToolTipText( wxWindow* wind, const wxString& src );  extern wxString pxFormatToolTipText( wxWindow* wind, const wxString& src );
822  extern void pxSetToolTip( wxWindow* wind, const wxString& src );  extern void pxSetToolTip( wxWindow* wind, const wxString& src );
823  extern void pxSetToolTip( wxWindow& wind, const wxString& src );  extern void pxSetToolTip( wxWindow& wind, const wxString& src );
824  extern wxFont pxGetFixedFont( int ptsize=8, int weight=wxNORMAL );  extern wxFont pxGetFixedFont( int ptsize=8, int weight=wxNORMAL );
825    
826    extern pxDialogCreationFlags pxDialogFlags();
827    
828  #endif  #endif

Legend:
Removed from v.31  
changed lines
  Added in v.62

  ViewVC Help
Powered by ViewVC 1.1.22