git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			273 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        tabpgwin.h
 | |
| // Purpose:     Contrib. demo
 | |
| // Author:      Aleksandras Gluchovas
 | |
| // Modified by: 19990908 : mj
 | |
| //              19990909 :
 | |
| //              - rename to tabpgwin
 | |
| //              - restruction of Variable declaration
 | |
| //              - to prevent Warnings under MingGW32
 | |
| // Modified by: 19990909 : mj
 | |
| //              - mNoVertScroll TRUE = no / FALSE = Original Code
 | |
| //                the Original Code Paints a Vertical Scroll in wxPagedWindow
 | |
| //                which is not needed in this Version. Use TRUE for this.
 | |
| // Created:     07/09/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Aleksandras Gluchovas
 | |
| // Licence:     wxWindows license
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef __TABPGWIN_G__
 | |
| #define __TABPGWIN_G__
 | |
| 
 | |
| //#ifdef __GNUG__
 | |
| //#pragma interface
 | |
| //#endif
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| #include "wx/window.h"
 | |
| #include "wx/string.h"
 | |
| 
 | |
| #define WXCONTROLAREA_VERSION      1.0
 | |
| 
 | |
| // layout types for title bars of the tabs
 | |
| // (are selected up by evaluating the available free space )
 | |
| 
 | |
| class twTabInfo; // forward decl.
 | |
| 
 | |
| #define wxTITLE_IMG_AND_TEXT 0
 | |
| #define wxTITLE_IMG_ONLY     1
 | |
| #define wxTITLE_BORDER_ONLY  2
 | |
| 
 | |
| /*
 | |
|  * class manages and decorates contained "tab"-windows.
 | |
|  * Draws decorations similar to those in "Project Workplace"
 | |
|  * of Microsoft Developer Studio 4.xx
 | |
|  */
 | |
| 
 | |
| class wxTabbedWindow : public wxPanel
 | |
| {
 | |
|  DECLARE_DYNAMIC_CLASS( wxTabbedWindow )
 | |
| 
 | |
| public:
 | |
| 
 | |
|  friend class wxTabbedWindowSerializer;
 | |
| 
 | |
|  wxList mTabs;
 | |
|  void HideInactiveTabs( bool andRepaint );
 | |
| 
 | |
|  // overrride,to provide different font for tab-labels
 | |
| 
 | |
|  virtual wxFont GetLabelingFont();
 | |
| 
 | |
|  // FOR NOW:: scrollbars are actually related to wxPagedWindow
 | |
| 
 | |
|  wxScrollBar* mpTabScroll;
 | |
|  wxScrollBar* mpHorizScroll;
 | |
|  wxScrollBar* mpVertScroll;
 | |
| 
 | |
| public:
 | |
| 
 | |
|  // public properties (invoke ReclaclLayout(TRUE) to apply changes)
 | |
| 
 | |
|  int    mVertGap;         // default: 3
 | |
|  int    mHorizGap;        // default: 5
 | |
|  int    mTitleVertGap;    // default: 3
 | |
|  int    mTitleHorizGap;   // default: 4
 | |
|  int    mImageTextGap;    // default: 2
 | |
|  int    mFirstTitleGap;   // default: 11
 | |
|  int    mBorderOnlyWidth; // default: 8
 | |
| 
 | |
|  wxPen  mWhitePen;        // default: RGB(255,255,255)
 | |
|  wxPen  mGrayPen;         // default: RGB(192,192,192)
 | |
|  wxPen  mDarkPen;         // default: RGB(128,128,128)
 | |
|  wxPen  mBlackPen;        // default: RGB(  0,  0,  0)
 | |
| 
 | |
|  int    mActiveTab;
 | |
|  int    mTitleHeight;
 | |
|  int    mLayoutType;
 | |
| 
 | |
|  // notifications (can be handled by derivatives)
 | |
| 
 | |
|  virtual void OnTabAdded( twTabInfo* pInfo ) {}
 | |
| 
 | |
|  virtual void SizeTabs(int x,int y, int width, int height, bool repant);
 | |
| 
 | |
| public:
 | |
|  wxTabbedWindow();
 | |
|  virtual ~wxTabbedWindow();
 | |
| 
 | |
|  // tabs can be also added when the window is
 | |
|  // already displayed - "on the fly"
 | |
| 
 | |
|  virtual void AddTab( wxWindow*    pContent,           // contained window
 | |
|                       wxString     tabText,            // tab label
 | |
|                       wxString     imageFileName = "", // if "", only text label is displayed
 | |
|                       wxBitmapType imageType     = wxBITMAP_TYPE_BMP );
 | |
| 
 | |
|  // NOTE:: if this AddTab(..) overload is called, the
 | |
|  //        image bitmap will not be serialized (if performed),
 | |
|  //        use the above method instead, so that images could
 | |
|  //        be restored using the given file names
 | |
| 
 | |
|  virtual void AddTab( wxWindow* pContent,
 | |
|                       wxString  tabText,
 | |
|                       wxBitmap* pImage = NULL );
 | |
| 
 | |
|  virtual void RemoveTab( int tabNo );
 | |
| 
 | |
|  /* misc accessors */
 | |
| 
 | |
|  virtual int GetTabCount();
 | |
|  virtual wxWindow* GetTab( int tabNo );
 | |
|  virtual wxWindow* GetActiveTab();
 | |
|  virtual void SetActiveTab( int tabNo );
 | |
| 
 | |
|  void DrawShadedRect( int x, int y, int width, int height,
 | |
|                                           wxPen& upperPen, wxPen& lowerPen, wxDC& dc );
 | |
| 
 | |
|  virtual void DrawDecorations( wxDC& dc );
 | |
| 
 | |
|  // return -1, if non of the title bars was hitted,
 | |
|  // otherwise the index of the hitted tab title bar
 | |
| 
 | |
|  virtual int HitTest( const wxPoint& pos );
 | |
| 
 | |
|  // should be invoked to redisplay window with changed properties
 | |
| 
 | |
|  virtual void RecalcLayout( bool andRepaint = TRUE );
 | |
| 
 | |
|  // event handlers
 | |
| 
 | |
|  void OnPaint( wxPaintEvent& event );
 | |
|  void OnSize ( wxSizeEvent& event );
 | |
| 
 | |
|  void OnBkErase( wxEraseEvent& event );
 | |
|  void OnLButtonDown( wxMouseEvent& event );
 | |
| 
 | |
|  DECLARE_EVENT_TABLE()
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * class manages and decorates contained "sheets" (or pages).
 | |
|  * Draws decorations similar to those in "Output window"
 | |
|  * of Microsoft Developer Studio 4.xx
 | |
|  */
 | |
| 
 | |
| class wxPagedWindow : public wxTabbedWindow
 | |
| {
 | |
|  DECLARE_DYNAMIC_CLASS( wxPagedWindow )
 | |
|  // the protected: public: changes prevents Warnings in gcc
 | |
| protected:
 | |
|  bool         mScrollEventInProgress;
 | |
| public:
 | |
|  int          mTabTrianGap;
 | |
|  wxBrush      mWhiteBrush;
 | |
|  wxBrush      mGrayBrush;
 | |
|  int          mCurentRowOfs;
 | |
|  int          mAdjustableTitleRowLen; // setup by dragging mini-sash
 | |
|                                       // with the mosue pointer
 | |
| protected:
 | |
|  // drag&drop state variables
 | |
|  bool         mIsDragged;
 | |
|  int          mDagOrigin;
 | |
|  bool         mCursorChanged;
 | |
|  wxCursor     mResizeCursor;
 | |
|  wxCursor     mNormalCursor;
 | |
|  int          mOriginalTitleRowLen;
 | |
| 
 | |
| public:
 | |
|  int          mTitleRowStart;
 | |
|  int          mResizeNailGap;
 | |
|  int          mTitleRowLen;               // actual title row length
 | |
|  int          mNoVertScroll;              // No Vertical Scroll  TRUE/FALSE
 | |
| 
 | |
|  void DrawPaperBar( twTabInfo& tab, int x, int y,
 | |
|                                     wxBrush& brush, wxPen& pen, wxDC& dc );
 | |
| 
 | |
|  int GetWholeTabRowLen();
 | |
| 
 | |
|  // adjusts scorllbars to fit around tabs
 | |
| 
 | |
|  virtual void OnTabAdded( twTabInfo* pInfo );
 | |
| 
 | |
|  // sets smaller font for page-labels
 | |
| 
 | |
|  virtual wxFont GetLabelingFont();
 | |
| 
 | |
| public:
 | |
| 
 | |
| 
 | |
| public:
 | |
|  wxPagedWindow();
 | |
|  ~wxPagedWindow();
 | |
| 
 | |
|  // NOTE:: use public methods of the base class
 | |
|  //        to add "pages" to this window
 | |
| 
 | |
|  /* misc accessors */
 | |
| 
 | |
|  // below two methods should be called after
 | |
|  // the tabs were added (AddTab(..)). Set up
 | |
|  // these scrollbars to match the needs of the
 | |
|  // tabs added into this area
 | |
| 
 | |
|  wxScrollBar& GetVerticalScrollBar();
 | |
|  wxScrollBar& GetHorizontalScrollBar();
 | |
| 
 | |
|  virtual void DrawDecorations( wxDC& dc );
 | |
| 
 | |
|  // return -1, if non of the title bars was hitted,
 | |
|  // otherwise the index of the hitted tab title bar
 | |
| 
 | |
|  virtual int HitTest( const wxPoint& pos );
 | |
| 
 | |
|  virtual void RecalcLayout( bool andRepaint = TRUE );
 | |
| 
 | |
|  // event handlers
 | |
| 
 | |
|  void OnPaint( wxPaintEvent& event );
 | |
|  void OnSize ( wxSizeEvent& event );
 | |
|  void OnLButtonDown( wxMouseEvent& event );
 | |
|  void OnLButtonUp  ( wxMouseEvent& event );
 | |
|  void OnMouseMove  ( wxMouseEvent& event );
 | |
|  void OnScroll     ( wxScrollEvent& event );
 | |
| 
 | |
|  DECLARE_EVENT_TABLE()
 | |
| };
 | |
| 
 | |
| // helper structure of wxTabbedWindow
 | |
| 
 | |
| class twTabInfo : public wxObject
 | |
| {
 | |
|  DECLARE_DYNAMIC_CLASS( twTabInfo )
 | |
| public:
 | |
|  twTabInfo();
 | |
|  ~twTabInfo();
 | |
| 
 | |
|  int ImgWidth();
 | |
|  int ImgHeight();
 | |
|  int ImageToTxtGap( int prefGap );
 | |
| 
 | |
|  bool HasImg();
 | |
|  wxBitmap& GetImg();
 | |
|  // bool HasText();
 | |
|  unsigned int HasText();
 | |
|  wxString& GetText();
 | |
|  wxWindow& GetContent();
 | |
| 
 | |
| public:
 | |
|  wxWindow* mpContent;
 | |
|  wxBitmap  mBitMap;
 | |
| 
 | |
|  wxString  mText;
 | |
|  wxSize    mDims;
 | |
| 
 | |
|  // used for serialization
 | |
|  wxString  mImageFile;
 | |
|  long      mImageType;
 | |
| 
 | |
| };
 | |
| 
 | |
| #endif
 |