Added fl (frame layout) to wxWindows, from source tidied by Hans Van Leemputten <Hansvl@softhome.net>.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
							
								
								
									
										13
									
								
								contrib/configure
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -812,7 +812,6 @@ done
 | 
				
			|||||||
ac_given_srcdir=$srcdir
 | 
					ac_given_srcdir=$srcdir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
trap 'rm -fr `echo "
 | 
					trap 'rm -fr `echo "
 | 
				
			||||||
            Makefile
 | 
					 | 
				
			||||||
            src/Makefile
 | 
					            src/Makefile
 | 
				
			||||||
            src/ogl/Makefile
 | 
					            src/ogl/Makefile
 | 
				
			||||||
            src/mmedia/Makefile
 | 
					            src/mmedia/Makefile
 | 
				
			||||||
@@ -822,6 +821,7 @@ trap 'rm -fr `echo "
 | 
				
			|||||||
            src/gizmos/Makefile
 | 
					            src/gizmos/Makefile
 | 
				
			||||||
            src/plot/Makefile
 | 
					            src/plot/Makefile
 | 
				
			||||||
            src/applet/Makefile
 | 
					            src/applet/Makefile
 | 
				
			||||||
 | 
					            src/fl/Makefile
 | 
				
			||||||
            samples/Makefile
 | 
					            samples/Makefile
 | 
				
			||||||
            samples/mmedia/Makefile
 | 
					            samples/mmedia/Makefile
 | 
				
			||||||
            samples/ogl/Makefile
 | 
					            samples/ogl/Makefile
 | 
				
			||||||
@@ -838,6 +838,11 @@ trap 'rm -fr `echo "
 | 
				
			|||||||
            samples/xrc/Makefile
 | 
					            samples/xrc/Makefile
 | 
				
			||||||
            samples/plot/Makefile
 | 
					            samples/plot/Makefile
 | 
				
			||||||
            samples/applet/Makefile
 | 
					            samples/applet/Makefile
 | 
				
			||||||
 | 
					            samples/fl/fl_demo1
 | 
				
			||||||
 | 
					            samples/fl/fl_demo2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample1
 | 
				
			||||||
 | 
					            samples/fl/fl_sample2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample3
 | 
				
			||||||
            utils/Makefile
 | 
					            utils/Makefile
 | 
				
			||||||
            utils/wxrc/Makefile
 | 
					            utils/wxrc/Makefile
 | 
				
			||||||
            utils/wxrcedit/Makefile
 | 
					            utils/wxrcedit/Makefile
 | 
				
			||||||
@@ -930,6 +935,7 @@ CONFIG_FILES=\${CONFIG_FILES-"Makefile
 | 
				
			|||||||
            src/gizmos/Makefile
 | 
					            src/gizmos/Makefile
 | 
				
			||||||
            src/plot/Makefile
 | 
					            src/plot/Makefile
 | 
				
			||||||
            src/applet/Makefile
 | 
					            src/applet/Makefile
 | 
				
			||||||
 | 
					            src/fl/Makefile
 | 
				
			||||||
            samples/Makefile
 | 
					            samples/Makefile
 | 
				
			||||||
            samples/mmedia/Makefile
 | 
					            samples/mmedia/Makefile
 | 
				
			||||||
            samples/ogl/Makefile
 | 
					            samples/ogl/Makefile
 | 
				
			||||||
@@ -946,6 +952,11 @@ CONFIG_FILES=\${CONFIG_FILES-"Makefile
 | 
				
			|||||||
            samples/xrc/Makefile
 | 
					            samples/xrc/Makefile
 | 
				
			||||||
            samples/plot/Makefile
 | 
					            samples/plot/Makefile
 | 
				
			||||||
            samples/applet/Makefile
 | 
					            samples/applet/Makefile
 | 
				
			||||||
 | 
					            samples/fl/fl_demo1
 | 
				
			||||||
 | 
					            samples/fl/fl_demo2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample1
 | 
				
			||||||
 | 
					            samples/fl/fl_sample2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample3
 | 
				
			||||||
            utils/Makefile
 | 
					            utils/Makefile
 | 
				
			||||||
            utils/wxrc/Makefile
 | 
					            utils/wxrc/Makefile
 | 
				
			||||||
            utils/wxrcedit/Makefile
 | 
					            utils/wxrcedit/Makefile
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,6 @@ dnl File output
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_OUTPUT([
 | 
					AC_OUTPUT([
 | 
				
			||||||
            Makefile
 | 
					 | 
				
			||||||
            src/Makefile
 | 
					            src/Makefile
 | 
				
			||||||
            src/ogl/Makefile
 | 
					            src/ogl/Makefile
 | 
				
			||||||
            src/mmedia/Makefile
 | 
					            src/mmedia/Makefile
 | 
				
			||||||
@@ -47,6 +46,7 @@ AC_OUTPUT([
 | 
				
			|||||||
            src/gizmos/Makefile
 | 
					            src/gizmos/Makefile
 | 
				
			||||||
            src/plot/Makefile
 | 
					            src/plot/Makefile
 | 
				
			||||||
            src/applet/Makefile
 | 
					            src/applet/Makefile
 | 
				
			||||||
 | 
					            src/fl/Makefile
 | 
				
			||||||
            samples/Makefile
 | 
					            samples/Makefile
 | 
				
			||||||
            samples/mmedia/Makefile
 | 
					            samples/mmedia/Makefile
 | 
				
			||||||
            samples/ogl/Makefile
 | 
					            samples/ogl/Makefile
 | 
				
			||||||
@@ -63,6 +63,11 @@ AC_OUTPUT([
 | 
				
			|||||||
            samples/xrc/Makefile
 | 
					            samples/xrc/Makefile
 | 
				
			||||||
            samples/plot/Makefile
 | 
					            samples/plot/Makefile
 | 
				
			||||||
            samples/applet/Makefile
 | 
					            samples/applet/Makefile
 | 
				
			||||||
 | 
					            samples/fl/fl_demo1
 | 
				
			||||||
 | 
					            samples/fl/fl_demo2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample1
 | 
				
			||||||
 | 
					            samples/fl/fl_sample2
 | 
				
			||||||
 | 
					            samples/fl/fl_sample3
 | 
				
			||||||
            utils/Makefile
 | 
					            utils/Makefile
 | 
				
			||||||
            utils/wxrc/Makefile
 | 
					            utils/wxrc/Makefile
 | 
				
			||||||
            utils/wxrcedit/Makefile
 | 
					            utils/wxrcedit/Makefile
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										64
									
								
								contrib/include/wx/fl/antiflickpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas (@Lithuania)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ANTIFLICKPL_G__
 | 
				
			||||||
 | 
					#define __ANTIFLICKPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "antiflickpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbAntiflickerPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						// double-buffers are shared "resource" among all instances of 
 | 
				
			||||||
 | 
						// antiflicker plugin within the application 
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// TODO:: locking should be implemented, for multithreaded GUIs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static wxBitmap*   mpVertBuf;
 | 
				
			||||||
 | 
						static wxBitmap*   mpHorizBuf;
 | 
				
			||||||
 | 
						static wxMemoryDC* mpVertBufDc;
 | 
				
			||||||
 | 
						static wxMemoryDC* mpHorizBufDc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static int mRefCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDC*  mpLRUBufDc; // last-reacently-used buffer
 | 
				
			||||||
 | 
						wxRect mLRUArea;   // last-reacently-used area
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						// returns NULL, if sutable buffer is not present
 | 
				
			||||||
 | 
						wxDC* FindSuitableBuffer( const wxRect& forArea );
 | 
				
			||||||
 | 
						wxDC* AllocNewBuffer( const wxRect& forArea );
 | 
				
			||||||
 | 
						wxDC& GetWindowDC();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDC& GetClientDC();
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbAntiflickerPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~cbAntiflickerPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handlers for plugin events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
 | 
				
			||||||
 | 
						void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ANTIFLICKPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										122
									
								
								contrib/include/wx/fl/bardragpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,122 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __BARDRAGPL_G__
 | 
				
			||||||
 | 
					#define __BARDRAGPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "bardragpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/toolwnd.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbBarDragPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbBarDragPlugin )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// plugin is active only in bar-dragging state
 | 
				
			||||||
 | 
						bool           mBarDragStarted;
 | 
				
			||||||
 | 
						bool           mCanStick;          // flag used to prevent "bouncing" of hint-rectangle
 | 
				
			||||||
 | 
						wxScreenDC*    mpScrDc;            // created while tracking hint-rect
 | 
				
			||||||
 | 
						wxCursor*      mpCurCursor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// rectnagle shows the position/dimensions of the bar, 
 | 
				
			||||||
 | 
						// if it would be docked now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect         mPrevHintRect;
 | 
				
			||||||
 | 
						wxRect         mHintRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int            mMouseInRectX;
 | 
				
			||||||
 | 
						int            mMouseInRectY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane*    mpSrcPane;          // pane, from which the bar was originally taken
 | 
				
			||||||
 | 
						int            mBarWidthInSrcPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane*    mpCurPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbBarInfo*     mpDraggedBar;       // bar, which is being dragged
 | 
				
			||||||
 | 
						bool           mBarWasFloating;
 | 
				
			||||||
 | 
						wxRect         mFloatedBarBounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public: /*** public properties ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int            mInClientHintBorder; // when hint-rect moves within client window area,
 | 
				
			||||||
 | 
					                                        // the thicker rectangle is drawn using hatched brush,
 | 
				
			||||||
 | 
															// the default border width for this rectangle is 8 pix.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void AdjustHintRect( wxPoint& mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void ClipRectInFrame( wxRect& rect );
 | 
				
			||||||
 | 
						void ClipPosInFrame( wxPoint& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane* HitTestPanes( wxRect& rect );
 | 
				
			||||||
 | 
						cbDockPane* HitTestPanes( wxPoint& pos );
 | 
				
			||||||
 | 
						bool HitsPane( cbDockPane* pPane, wxRect& rect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void CalcOnScreenDims( wxRect& rect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int  GetDistanceToPane( cbDockPane* pPane, wxPoint& mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool IsInOtherPane ( wxPoint& mousePos );
 | 
				
			||||||
 | 
						bool IsInClientArea( wxPoint& mousePos );
 | 
				
			||||||
 | 
						bool IsInClientArea( wxRect& rect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void StickToPane( cbDockPane* pPane, wxPoint& mousePos );
 | 
				
			||||||
 | 
						void UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int GetBarWidthInPane( cbDockPane* pPane );
 | 
				
			||||||
 | 
						int GetBarHeightInPane( cbDockPane* pPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// on-screen hint-tracking related methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void StartTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DrawHintRect ( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
						void EraseHintRect( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void FinishTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DoDrawHintRect( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void RectToScr( wxRect& frameRect, wxRect& scrRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void ShowHint( bool prevWasInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbBarDragPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbBarDragPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~cbBarDragPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handlers for plugin events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnMouseMove( cbMotionEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonUp( cbLeftUpEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonDown( cbLeftDownEvent& event );
 | 
				
			||||||
 | 
						void OnLDblClick( cbLeftDClickEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handles event, which oriniates from itself
 | 
				
			||||||
 | 
						void OnDrawHintRect( cbDrawHintRectEvent& event );        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnStartBarDragging( cbStartBarDraggingEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __BARDRAGPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										96
									
								
								contrib/include/wx/fl/barhintspl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     30/11/98 (my 22th birthday :-)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __DRAGHINTSPL_G__
 | 
				
			||||||
 | 
					#define __DRAGHINTSPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "barhintspl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/toolwnd.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Intercepts bar-decoration and sizing events, draws 3d-hints
 | 
				
			||||||
 | 
					 * around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbBarHintsPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbBarHintsPlugin )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						cbDockPane* mpPane; // is set up temorarely, while handling event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbMiniButton* mBoxes[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool        mBtnPressed;
 | 
				
			||||||
 | 
						bool        mClosePressed;
 | 
				
			||||||
 | 
						cbBarInfo*  mpClickedBar;
 | 
				
			||||||
 | 
						bool        mDepressed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						// drawing helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void Draw3DBox      ( wxDC& dc, const wxPoint& pos, bool pressed );
 | 
				
			||||||
 | 
						void DrawCloseBox   ( wxDC& dc, const wxPoint& pos, bool pressed );
 | 
				
			||||||
 | 
						void DrawCollapseBox( wxDC& dc, const wxPoint& pos, 
 | 
				
			||||||
 | 
											  bool atLeft, bool disabled, bool pressed );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DrawGrooves    ( wxDC& dc, const wxPoint& pos, int length );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DoDrawHint( wxDC& dc, wxRect& rect, int pos, int boxOfs, int grooveOfs, bool isFixed );
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						void GetHintsLayout( wxRect& rect, cbBarInfo& info, 
 | 
				
			||||||
 | 
											 int& boxOfs, int& grooveOfs, int& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int HitTestHints( cbBarInfo& info, const wxPoint& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void ExcludeHints( wxRect& rect, cbBarInfo& info );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void CreateBoxes();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						/* public properties */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool mCloseBoxOn;    // default: ON
 | 
				
			||||||
 | 
						bool mCollapseBoxOn; // default: ON
 | 
				
			||||||
 | 
						int  mGrooveCount;   // default: 2 (two shaded bars)
 | 
				
			||||||
 | 
						int  mHintGap;       // default: 5 (pixels from above, below, right and left)
 | 
				
			||||||
 | 
						int  mXWeight;       // default: 2 (width in pixels of lines which used for drawing cross)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbBarHintsPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbBarHintsPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~cbBarHintsPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetGrooveCount( int nGrooves );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnInitPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handlers of plugin-events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnSizeBarWindow( cbSizeBarWndEvent& event );
 | 
				
			||||||
 | 
						void OnDrawBarDecorations( cbDrawBarDecorEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnLeftDown( cbLeftDownEvent& event );
 | 
				
			||||||
 | 
						void OnLeftUp  ( cbLeftUpEvent&   event );
 | 
				
			||||||
 | 
						void OnMotion  ( cbMotionEvent&   event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __DRAGHINTSPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										47
									
								
								contrib/include/wx/fl/cbcustom.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     28/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __CBCUSTOM_G__
 | 
				
			||||||
 | 
					#define __CBCUSTOM_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "cbcustom.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbSimpleCustomizationPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbSimpleCustomizationPlugin )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int mCustMenuItemId;
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbSimpleCustomizationPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbSimpleCustomizationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// plugin-event handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnCustomizeBar( cbCustomizeBarEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnCustomizeLayout( cbCustomizeLayoutEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// menu-event handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnMenuItemSelected( wxCommandEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __CBCUSTOM_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1740
									
								
								contrib/include/wx/fl/controlbar.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										22
									
								
								contrib/include/wx/fl/dynbarhnd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/01/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __DYNBARHND_G__
 | 
				
			||||||
 | 
					#define __DYNBARHND_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dynbarhnd.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __DYNBARHND_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										204
									
								
								contrib/include/wx/fl/dyntbar.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,204 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __DYNTBAR_G__
 | 
				
			||||||
 | 
					#define __DYNTBAR_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dyntbar.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/tbarbase.h"
 | 
				
			||||||
 | 
					#include "wx/dynarray.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// layout item
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxToolLayoutItem : public wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxRect    mRect;
 | 
				
			||||||
 | 
						bool      mIsSeparator;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDynToolInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
 | 
				
			||||||
 | 
					typedef wxDynToolInfo*    wxDynToolInfoPtrT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WX_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT  );
 | 
				
			||||||
 | 
					WX_DEFINE_ARRAY( wxDynToolInfoPtrT,    wxDynToolInfoArrayT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// base class for layouting algorithm implementations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LayoutManagerBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						virtual void Layout( const wxSize&       parentDim, 
 | 
				
			||||||
 | 
											 wxSize&	         resultingDim,
 | 
				
			||||||
 | 
											 wxLayoutItemArrayT& items,
 | 
				
			||||||
 | 
											 int		         horizGap,
 | 
				
			||||||
 | 
					 		                 int		         vertGap   ) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~LayoutManagerBase() {}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// layouts items in left-to-right order from
 | 
				
			||||||
 | 
					// top towards bottom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BagLayout : public LayoutManagerBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						virtual void Layout( const wxSize&       parentDim, 
 | 
				
			||||||
 | 
											 wxSize&	         resultingDim,
 | 
				
			||||||
 | 
											 wxLayoutItemArrayT& items,
 | 
				
			||||||
 | 
											 int		         horizGap,
 | 
				
			||||||
 | 
					 		                 int		         vertGap   );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDynToolInfo : public wxToolLayoutItem
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxWindow* mpToolWnd;
 | 
				
			||||||
 | 
						int       mIndex;
 | 
				
			||||||
 | 
						wxSize    mRealSize;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// layouting orientations for tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LO_HORIZONTAL    0
 | 
				
			||||||
 | 
					#define LO_VERTICAL      1
 | 
				
			||||||
 | 
					#define LO_FIT_TO_WINDOW 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// class manages containment and layouting of tool-windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDynamicToolBar : public wxToolBarBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						friend class wxDynamicToolBarSerializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDynToolInfoArrayT mTools;
 | 
				
			||||||
 | 
						LayoutManagerBase*  mpLayoutMan;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						virtual void SizeToolWindows();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public: /* public properties */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int                mSepartorSize; // default: 8
 | 
				
			||||||
 | 
						int                mVertGap;      // default: 0
 | 
				
			||||||
 | 
						int                mHorizGap;	  // default: 0
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxDynamicToolBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
 | 
				
			||||||
 | 
						             const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
 | 
				
			||||||
 | 
							         const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						~wxDynamicToolBar(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
 | 
				
			||||||
 | 
									const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overridables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void AddTool( int toolIndex, 
 | 
				
			||||||
 | 
											  wxWindow* pToolWindow, 
 | 
				
			||||||
 | 
											  const wxSize& size = wxDefaultSize );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void AddTool( int toolIndex, 
 | 
				
			||||||
 | 
											  const wxString& imageFileName,
 | 
				
			||||||
 | 
											  int imageFileType = wxBITMAP_TYPE_BMP,
 | 
				
			||||||
 | 
											  const wxString& labelText = "", bool alignTextRight = FALSE,
 | 
				
			||||||
 | 
											  bool isFlat = TRUE );
 | 
				
			||||||
 | 
						virtual void AddTool( int toolIndex, wxBitmap labelBmp,
 | 
				
			||||||
 | 
											  const wxString& labelText = "", bool alignTextRight = FALSE,
 | 
				
			||||||
 | 
											  bool isFlat = TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// method from wxToolBarBase (for compatibility), only
 | 
				
			||||||
 | 
						// first two arguments are valid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
 | 
				
			||||||
 | 
					               const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
 | 
				
			||||||
 | 
					               const wxString& helpString1 = "", const wxString& helpString2 = "");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDynToolInfo* GetToolInfo( int toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void RemveTool( int toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// the default implementation draws shaded line
 | 
				
			||||||
 | 
						virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// see definitions of orientation types
 | 
				
			||||||
 | 
						virtual bool Layout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual LayoutManagerBase* CreateDefaulLayout() { return new BagLayout(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void SetLayout( LayoutManagerBase* pLayout );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// event handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnSize( wxSizeEvent& event );
 | 
				
			||||||
 | 
						void OnPaint( wxPaintEvent& event );
 | 
				
			||||||
 | 
						void OnEraseBackground( wxEraseEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overriden from wxToolBarBase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual bool Realize(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// stuff from the 2.1.15 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
 | 
				
			||||||
 | 
					                                                   wxCoord y) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // the tool is still in m_tools list when this function is called, it will
 | 
				
			||||||
 | 
					    // only be deleted from it if it succeeds
 | 
				
			||||||
 | 
					    virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // called when the tools enabled flag changes
 | 
				
			||||||
 | 
					    virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // called when the tool is toggled
 | 
				
			||||||
 | 
					    virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // called when the tools "can be toggled" flag changes
 | 
				
			||||||
 | 
					    virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // the functions to create toolbar tools
 | 
				
			||||||
 | 
					    virtual wxToolBarToolBase *CreateTool(int id,
 | 
				
			||||||
 | 
					                                          const wxBitmap& bitmap1,
 | 
				
			||||||
 | 
					                                          const wxBitmap& bitmap2,
 | 
				
			||||||
 | 
					                                          bool toggle,
 | 
				
			||||||
 | 
					                                          wxObject *clientData,
 | 
				
			||||||
 | 
					                                          const wxString& shortHelpString,
 | 
				
			||||||
 | 
					                                          const wxString& longHelpString);
 | 
				
			||||||
 | 
					    virtual wxToolBarToolBase *CreateTool(wxControl *control);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __DYNTBAR_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								contrib/include/wx/fl/dyntbarhnd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/01/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __DYNTBARHND_G__
 | 
				
			||||||
 | 
					#define __DYNTBARHND_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dyntbarhnd.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbDynToolBarDimHandler : public cbBarDimHandlerBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbDynToolBarDimHandler )
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						void OnChangeBarState(cbBarInfo* pBar, int newState );
 | 
				
			||||||
 | 
						void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __DYNTBARHND_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										140
									
								
								contrib/include/wx/fl/frmview.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,140 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     02/01/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FRMVIEW_G__
 | 
				
			||||||
 | 
					#define __FRMVIEW_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "frmview.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/module.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					#include "wx/fl/objstore.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxObjectStorage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrameManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrameView : public wxEvtHandler
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						wxStringList    mTopMenus;
 | 
				
			||||||
 | 
						wxFrameLayout*  mpLayout;
 | 
				
			||||||
 | 
						wxFrameManager* mpFrameMgr;
 | 
				
			||||||
 | 
						bool            mDoToolUpdates;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						friend class wxFrameManager;
 | 
				
			||||||
 | 
						friend class wxFrameViewSerializer;	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void OnIdle( wxIdleEvent& event);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxFrameView();
 | 
				
			||||||
 | 
						~wxFrameView();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void Activate();
 | 
				
			||||||
 | 
						virtual void Deactivate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrame* GetParentFrame();
 | 
				
			||||||
 | 
						wxWindow* GetClientWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrameManager& GetFrameManager();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void RegisterMenu( const wxString& topMenuName );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void CreateLayout();
 | 
				
			||||||
 | 
						wxFrameLayout* GetLayout();
 | 
				
			||||||
 | 
						void SetLayout( wxFrameLayout* pLayout );
 | 
				
			||||||
 | 
						void SetToolUpdates( bool doToolUpdates = TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hooks for specific frame-views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnInit() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnSerialize( wxObjectStorage& store ) {}
 | 
				
			||||||
 | 
						virtual void OnActiveate() {}
 | 
				
			||||||
 | 
						virtual void OnDeactivate() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// imp. is mandatory
 | 
				
			||||||
 | 
						virtual void OnRecreate() {}
 | 
				
			||||||
 | 
						virtual void OnInitMenus() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrame;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrameManager : wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						wxList       mViews;
 | 
				
			||||||
 | 
						wxWindow*    mpFrameWnd;
 | 
				
			||||||
 | 
						int          mActiveViewNo;
 | 
				
			||||||
 | 
						wxWindow*    mpClientWnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						wxObjectStorage mStore;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxString        mSettingsFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void DoSerialize( wxObjectStorage& store );
 | 
				
			||||||
 | 
						void DestroyViews();
 | 
				
			||||||
 | 
						int GetViewNo( wxFrameView* pView );
 | 
				
			||||||
 | 
						void EnableMenusForView( wxFrameView* pView, bool enable );
 | 
				
			||||||
 | 
						void SyncAllMenus();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxFrameManager();
 | 
				
			||||||
 | 
						~wxFrameManager();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// if file name is empty, views are are not saved/loaded
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// synonyms
 | 
				
			||||||
 | 
						wxFrame* GetParentFrame();
 | 
				
			||||||
 | 
						wxWindow* GetParentWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int GetActiveViewNo();
 | 
				
			||||||
 | 
						wxFrameView* GetActiveView();
 | 
				
			||||||
 | 
						wxNode* GetActiveViewNode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrameView* GetView( int viewNo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetClinetWindow( wxWindow* pFrameClient ); 
 | 
				
			||||||
 | 
						wxWindow* GetClientWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void AddView( wxFrameView* pFrmView );
 | 
				
			||||||
 | 
						void RemoveView( wxFrameView* pFrmView );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void ActivateView( int viewNo );
 | 
				
			||||||
 | 
						void ActivateView( wxFrameView* pFrmView );
 | 
				
			||||||
 | 
						void DeactivateCurrentView();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxObjectStorage& GetObjectStore();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SaveViewsNow();
 | 
				
			||||||
 | 
						bool ReloadViews();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool ViewsAreLoaded();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __FRMVIEW_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										74
									
								
								contrib/include/wx/fl/garbagec.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas (@Lithuania)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __GARBAGEC_G__
 | 
				
			||||||
 | 
					#define __GARBAGEC_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "garbagec.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/list.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct GCItem
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						void*	  mpObj;
 | 
				
			||||||
 | 
						wxList    mRefs;   // references to other nodes
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void* gc_node_to_obj( wxNode* pGCNode )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ( (GCItem*) (pGCNode->Data()) )->mpObj;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// class implements extremely slow, but probably one of the most simple GC algorithms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GarbageCollector
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						wxList mAllNodes;
 | 
				
			||||||
 | 
						wxList mRegularLst;
 | 
				
			||||||
 | 
						wxList mCycledLst;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNode* FindItemNode( void* pForObj );
 | 
				
			||||||
 | 
						void    ResolveReferences();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNode* FindReferenceFreeItemNode();
 | 
				
			||||||
 | 
						void    RemoveReferencesToNode( wxNode* pItemNode );
 | 
				
			||||||
 | 
						void    DestroyItemList( wxList& lst );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GarbageCollector() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~GarbageCollector();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// prepare data for GC alg.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void AddObject( void* pObj, int refCnt = 1 );
 | 
				
			||||||
 | 
						virtual void AddDependency( void* pObj, void* pDependsOnObj );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// executes GC alg.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void ArrangeCollection();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// access results of the alg.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxList& GetRegularObjects();
 | 
				
			||||||
 | 
						wxList& GetCycledObjects();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// removes all data from GC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void Reset();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __GARBAGEC_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										123
									
								
								contrib/include/wx/fl/gcupdatesmgr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __GCUPDATESMGR_G__
 | 
				
			||||||
 | 
					#define __GCUPDATESMGR_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "gcupdatesmgr.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/updatesmgr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/garbagec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * class implements optimized logic for refreshing
 | 
				
			||||||
 | 
					 * areas of frame layout - which actually need to be updated. 
 | 
				
			||||||
 | 
					 * Is used as default updates-manager by wxFrameLayout.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * it is called "Garbage Collecting" u.mgr for it's implementation
 | 
				
			||||||
 | 
					 * tries to find out dependencies between bars, and to order
 | 
				
			||||||
 | 
					 * them ito "hierarchy", this hierarchical sorting resembles
 | 
				
			||||||
 | 
					 * implemenation of heap-garbage collectors, which resolve
 | 
				
			||||||
 | 
					 * dependencies between references.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Example: there are situations where the order of moving
 | 
				
			||||||
 | 
					 *          the windows does matter:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   case 1)                
 | 
				
			||||||
 | 
					 *      ------		    ---
 | 
				
			||||||
 | 
					 *      | A	 |	 	    |B|  
 | 
				
			||||||
 | 
					 *		------	 --->  	| |
 | 
				
			||||||
 | 
					 *			---		   	--- ------ 
 | 
				
			||||||
 | 
					 *			|B|		   		| A  | 
 | 
				
			||||||
 | 
					 *			| |		   		------
 | 
				
			||||||
 | 
					 *			---		   		
 | 
				
			||||||
 | 
					 *						(future)
 | 
				
			||||||
 | 
					 *	   (past)            
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  past/future positions of A and B windows completely overlapp, i.e.
 | 
				
			||||||
 | 
					 *  depend on each other, and there is not solution for
 | 
				
			||||||
 | 
					 *  moving the windows witout refreshing both of them,
 | 
				
			||||||
 | 
					 *  -- we have cyclic dependency here. The gc. alg will
 | 
				
			||||||
 | 
					 *  find this cyclic dependecy and will force "refresh"
 | 
				
			||||||
 | 
					 *  after movement.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *   case 2)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      ------		                        
 | 
				
			||||||
 | 
					 *      | A	 |	 	                        
 | 
				
			||||||
 | 
					 * 		------	 --->                       
 | 
				
			||||||
 | 
					 * 			---		                  
 | 
				
			||||||
 | 
					 * 			|B|		   		           ------   
 | 
				
			||||||
 | 
					 * 			| |		   		           | A  |   
 | 
				
			||||||
 | 
					 * 			---		   		           ------         
 | 
				
			||||||
 | 
					 *						 ---
 | 
				
			||||||
 | 
					 *						 |B|
 | 
				
			||||||
 | 
					 *						 | |
 | 
				
			||||||
 | 
					 *					     ---
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * 						(future)                
 | 
				
			||||||
 | 
					 * 	   (past)       
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  in this case past/future positions do not overlapp, thus
 | 
				
			||||||
 | 
					 *  it's enough only to move windows, without refreshing them.
 | 
				
			||||||
 | 
					 *  GC will "notice" it.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  there is also third case, when overlapping is partial
 | 
				
			||||||
 | 
					 *  in this case the refershing can be also avoided by
 | 
				
			||||||
 | 
					 *  moving windows in the order of "most-dependant" towards the
 | 
				
			||||||
 | 
					 *  "least-dependent". GC handles this automatically, by
 | 
				
			||||||
 | 
					 *  sorting windows by their dependency-level (or "hierarchy")
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  See garbagec.h for more details of this method, garbagec.h/cpp
 | 
				
			||||||
 | 
					 *  implement sorting of generic-dependencies (does not deal
 | 
				
			||||||
 | 
					 *  with graphical objects directly)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Summary: improves performance when complex/large windows are 
 | 
				
			||||||
 | 
					 *           moved around, by reducing number of repaints. Also helps 
 | 
				
			||||||
 | 
					 *           to avoid dirty non-client areas of moved windows
 | 
				
			||||||
 | 
					 *           in some special cases of "overlapping anomalies"
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbGCUpdatesMgr : public cbSimpleUpdatesMgr
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbGCUpdatesMgr )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GarbageCollector mGC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DoRepositionItems( wxList& items );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void AddItem( wxList&     itemList,
 | 
				
			||||||
 | 
									  cbBarInfo*  pBar, 
 | 
				
			||||||
 | 
							          cbDockPane* pPane,
 | 
				
			||||||
 | 
									  wxRect&     curBounds,
 | 
				
			||||||
 | 
									  wxRect&     prevBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbGCUpdatesMgr(void) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbGCUpdatesMgr( wxFrameLayout* pPanel );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// notificiactions received from Frame Layout :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnStartChanges();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// refreshes parts of the frame layout, which need an update
 | 
				
			||||||
 | 
						virtual void UpdateNow();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __GCUPDATESMGR_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										120
									
								
								contrib/include/wx/fl/hintanimpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,120 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     9/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __HINTANIMPL_G__
 | 
				
			||||||
 | 
					#define __HINTANIMPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "hintanimpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/timer.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbHintAnimTimer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbHintAnimationPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbHintAnimationPlugin )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						friend class cbHintAnimTimer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxScreenDC*      mpScrDc;     // created while tracking hint-rect
 | 
				
			||||||
 | 
						cbHintAnimTimer* mpAnimTimer;  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FOR NOW:: try it without mutually exculisve locks
 | 
				
			||||||
 | 
						volatile wxRect  mCurRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// state variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool   mAnimStarted;
 | 
				
			||||||
 | 
						bool   mStopPending;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool   mPrevInClient;
 | 
				
			||||||
 | 
						bool   mCurInClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect mPrevRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						int    mMorphDelay;         // delay between frames in miliseconds,     default: 20
 | 
				
			||||||
 | 
						int    mMaxFrames;          // number  of iterations for hint morphing, default: 30
 | 
				
			||||||
 | 
												    // (morph duration = mMorphDelay * mMaxFrames msec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int    mInClientHintBorder; // default: 4 pixels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool   mAccelerationOn;     // TRUE, if morph accelerates, otherwise morph
 | 
				
			||||||
 | 
													// speed is constant. Default: TRUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TBD:: get/set methods for above members
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void StartTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DrawHintRect ( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
						void EraseHintRect( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void FinishTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DoDrawHintRect( wxRect& rect, bool isInClientRect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void RectToScr( wxRect& frameRect, wxRect& scrRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbHintAnimationPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						~cbHintAnimationPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnDrawHintRect( cbDrawHintRectEvent& event );        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct MorphInfoT
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxPoint mFrom;
 | 
				
			||||||
 | 
						wxPoint mTill;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbHintAnimTimer : public wxTimer 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						friend class cbHintAnimationPlugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect      mPrevMorphed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MorphInfoT  mUpperLeft;
 | 
				
			||||||
 | 
						MorphInfoT  mLowerRight;
 | 
				
			||||||
 | 
						int         mCurIter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						long        mLock;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbHintAnimationPlugin* mpPl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public: 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbHintAnimTimer(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void Notify(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual bool Init( cbHintAnimationPlugin* pAnimPl, bool reinit );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __HINTANIMPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										165
									
								
								contrib/include/wx/fl/newbmpbtn.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,165 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __NEWBMPBTN_G__
 | 
				
			||||||
 | 
					#define __NEWBMPBTN_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "newbmpbtn.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/button.h"
 | 
				
			||||||
 | 
					#include "wx/string.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// button lable-text alignment types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NB_ALIGN_TEXT_RIGHT  0
 | 
				
			||||||
 | 
					#define NB_ALIGN_TEXT_BOTTOM 1
 | 
				
			||||||
 | 
					#define NB_NO_TEXT           2
 | 
				
			||||||
 | 
					#define NB_NO_IMAGE          3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// classes declared in this header file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxNewBitmapButton;
 | 
				
			||||||
 | 
					class wxBorderLessBitmapButton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// alternative class for wxBmpButton
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxNewBitmapButton: public wxPanel
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS(wxNewBitmapButton)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						friend class wxNewBitmapButtonSerializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int      mTextToLabelGap;
 | 
				
			||||||
 | 
						int      mMarginX;
 | 
				
			||||||
 | 
						int      mMarginY;
 | 
				
			||||||
 | 
						int      mTextAlignment;
 | 
				
			||||||
 | 
						bool     mIsSticky;
 | 
				
			||||||
 | 
						bool     mIsFlat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxString mLabelText;
 | 
				
			||||||
 | 
						wxString mImageFileName;
 | 
				
			||||||
 | 
						int      mImageFileType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxBitmap mDepressedBmp; // source image for rendering
 | 
				
			||||||
 | 
						                        // labels for particular state
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxBitmap mFocusedBmp;   // may not be always present -
 | 
				
			||||||
 | 
												// only if mHasFocusedBmp is TRUE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxBitmap* mpDepressedImg;
 | 
				
			||||||
 | 
						wxBitmap* mpPressedImg;
 | 
				
			||||||
 | 
						wxBitmap* mpDisabledImg;
 | 
				
			||||||
 | 
						wxBitmap* mpFocusedImg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// button state variables;
 | 
				
			||||||
 | 
						bool      mDragStarted;
 | 
				
			||||||
 | 
						bool      mIsPressed; 
 | 
				
			||||||
 | 
						bool      mIsInFocus;
 | 
				
			||||||
 | 
						bool      mPrevPressedState;
 | 
				
			||||||
 | 
						bool	  mPrevInFocusState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool      mHasFocusedBmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// type of event which is fired upon depression of this button
 | 
				
			||||||
 | 
						int       mFiredEventType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// pens for drawing decorations (borders)
 | 
				
			||||||
 | 
						wxPen     mBlackPen;
 | 
				
			||||||
 | 
						wxPen     mDarkPen;
 | 
				
			||||||
 | 
						wxPen     mGrayPen;
 | 
				
			||||||
 | 
						wxPen     mLightPen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool      mIsCreated;
 | 
				
			||||||
 | 
						int       mSizeIsSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void DestroyLabels();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// returns the label which match the current button state
 | 
				
			||||||
 | 
						virtual wxBitmap* GetStateLabel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawShade( int outerLevel,
 | 
				
			||||||
 | 
												wxDC&  dc,
 | 
				
			||||||
 | 
							                    wxPen& upperLeftSidePen,
 | 
				
			||||||
 | 
											    wxPen& lowerRightSidePen );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool IsInWindow( int x,int y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNewBitmapButton( const wxBitmap& labelBitmap = wxNullBitmap, 
 | 
				
			||||||
 | 
										   const wxString& labelText   = "",
 | 
				
			||||||
 | 
							               int   alignText             = NB_ALIGN_TEXT_BOTTOM,
 | 
				
			||||||
 | 
										   bool  isFlat                = TRUE,
 | 
				
			||||||
 | 
										   // this is the default type of fired events
 | 
				
			||||||
 | 
										   int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
 | 
				
			||||||
 | 
										   int marginX        = 2,
 | 
				
			||||||
 | 
						                   int marginY        = 2,
 | 
				
			||||||
 | 
										   int textToLabelGap = 2,
 | 
				
			||||||
 | 
										   bool isSticky      = FALSE
 | 
				
			||||||
 | 
							             );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// use this constructor if buttons have to be persistant 
 | 
				
			||||||
 | 
						 
 | 
				
			||||||
 | 
						wxNewBitmapButton( const wxString& bitmapFileName,
 | 
				
			||||||
 | 
							               const int       bitmapFileType = wxBITMAP_TYPE_BMP,
 | 
				
			||||||
 | 
										   const wxString& labelText      = "",
 | 
				
			||||||
 | 
							               int alignText                  = NB_ALIGN_TEXT_BOTTOM,
 | 
				
			||||||
 | 
										   bool  isFlat                   = TRUE,
 | 
				
			||||||
 | 
										   // this is the default type of fired events
 | 
				
			||||||
 | 
										   int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
 | 
				
			||||||
 | 
										   int marginX        = 2,
 | 
				
			||||||
 | 
						                   int marginY        = 2,
 | 
				
			||||||
 | 
										   int textToLabelGap = 2,
 | 
				
			||||||
 | 
										   bool isSticky      = FALSE
 | 
				
			||||||
 | 
							             );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						~wxNewBitmapButton();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// should be called after Create();
 | 
				
			||||||
 | 
						virtual void Reshape();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overridables
 | 
				
			||||||
 | 
						virtual void SetLabel(const wxBitmap& labelBitmap, const wxString& labelText = "" );
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						virtual void SetAlignments( int alignText = NB_ALIGN_TEXT_BOTTOM,
 | 
				
			||||||
 | 
													int marginX        = 2,
 | 
				
			||||||
 | 
													int marginY        = 2,
 | 
				
			||||||
 | 
													int textToLabelGap = 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawDecorations( wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawLabel( wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp, 
 | 
				
			||||||
 | 
													   bool isEnabled = TRUE,
 | 
				
			||||||
 | 
													   bool isPressed = FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void RenderLabelImages();
 | 
				
			||||||
 | 
						virtual void RenderAllLabelImages();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// event handlers
 | 
				
			||||||
 | 
						void OnLButtonDown( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonUp( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnMouseMove( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnSize( wxSizeEvent& event );
 | 
				
			||||||
 | 
						void OnPaint( wxPaintEvent& event );
 | 
				
			||||||
 | 
						void OnEraseBackground( wxEraseEvent& event );
 | 
				
			||||||
 | 
						void OnKillFocus( wxFocusEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __NEWBMPBTN_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										119
									
								
								contrib/include/wx/fl/panedrawpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,119 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Central header file for control-bar related classes
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas <mailto:alex@soften.ktu.lt>
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     06/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __PANEDRAWPL_G__
 | 
				
			||||||
 | 
					#define __PANEDRAWPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "panedrawpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Simple, but all-in-one plugin implementation. Resembles look & feel of
 | 
				
			||||||
 | 
					 * to MFC control-bars. Handles painting of pane and items in it.
 | 
				
			||||||
 | 
					 * Fires bar/layout customization event, when user right-clicks bar/pane. 
 | 
				
			||||||
 | 
					 * Hooking an instance of this and row-layouting plugins per each pane, 
 | 
				
			||||||
 | 
					 * would be enough for the frame layout to function properly.
 | 
				
			||||||
 | 
					 * (they are plugged in autimatically by wxFrameLayout class)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbPaneDrawPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbPaneDrawPlugin )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// resizing bars/rows state variables
 | 
				
			||||||
 | 
						bool           mResizeStarted;
 | 
				
			||||||
 | 
						bool           mResizeCursorOn;
 | 
				
			||||||
 | 
						wxPoint        mDragOrigin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbBarInfo*     mpDraggedBar; // also used when in bar-drag action
 | 
				
			||||||
 | 
						cbRowInfo*     mpResizedRow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool           mRowHandleHitted;
 | 
				
			||||||
 | 
						bool           mIsUpperHandle;
 | 
				
			||||||
 | 
						bool           mBarHandleHitted;
 | 
				
			||||||
 | 
						bool           mIsLeftHandle;
 | 
				
			||||||
 | 
						bool           mBarContentHitted;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// contstraints for dragging the handle
 | 
				
			||||||
 | 
						wxRect         mHandleDragArea; 
 | 
				
			||||||
 | 
						bool           mHandleIsVertical;
 | 
				
			||||||
 | 
						int            mHandleOfs;
 | 
				
			||||||
 | 
						int            mDraggedDelta;
 | 
				
			||||||
 | 
						wxPoint        mPrevPos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// used for handling, start-draw-in-area events
 | 
				
			||||||
 | 
						wxClientDC*    mpClntDc;      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane*    mpPane; // is set up temorary short-cut, while handling event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						// helpers
 | 
				
			||||||
 | 
						void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawPaneShade( wxDC& dc, int alignment );
 | 
				
			||||||
 | 
						virtual void DrawPaneShadeForRow( cbRowInfo* pRow, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawUpperRowHandle( cbRowInfo* pRow, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawLowerRowHandle( cbRowInfo* pRow, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawUpperRowShades( cbRowInfo* pRow, wxDC& dc, int level );
 | 
				
			||||||
 | 
						virtual void DrawLowerRowShades( cbRowInfo* pRow, wxDC& dc, int level );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawBarInnerShadeRect( cbBarInfo* pBar, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawShade( int level, wxRect& rect, int alignment, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawShade1( int level, wxRect& rect, int alignment, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						inline void SetLightPixel( int x, int y, wxDC& dc );
 | 
				
			||||||
 | 
						inline void SetDarkPixel ( int x, int y, wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbPaneDrawPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbPaneDrawPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual ~cbPaneDrawPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual cbPluginBase* Clone() { return new cbPaneDrawPlugin(0,0); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handlers for plugin-events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnLButtonDown( cbLeftDownEvent&   event );
 | 
				
			||||||
 | 
						void OnLDblClick  ( cbLeftDClickEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonUp  ( cbLeftUpEvent&     event );
 | 
				
			||||||
 | 
						void OnRButtonUp  ( cbRightUpEvent&    event );
 | 
				
			||||||
 | 
						void OnMouseMove  ( cbMotionEvent&     event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnDrawPaneBackground ( cbDrawPaneBkGroundEvent& event );
 | 
				
			||||||
 | 
						void OnDrawPaneDecorations( cbDrawPaneDecorEvent&    event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnDrawRowDecorations ( cbDrawRowDecorEvent&     event );
 | 
				
			||||||
 | 
						void OnDrawRowHandles     ( cbDrawRowHandlesEvent&   event );
 | 
				
			||||||
 | 
						void OnDrawRowBackground  ( cbDrawRowBkGroundEvent&  event );
 | 
				
			||||||
 | 
												  
 | 
				
			||||||
 | 
						void OnSizeBarWindow      ( cbSizeBarWndEvent&       event );
 | 
				
			||||||
 | 
						void OnDrawBarDecorations ( cbDrawBarDecorEvent&     event );
 | 
				
			||||||
 | 
						void OnDrawBarHandles     ( cbDrawBarHandlesEvent&   event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnStartDrawInArea    ( cbStartDrawInAreaEvent&  event );
 | 
				
			||||||
 | 
						void OnFinishDrawInArea   ( cbFinishDrawInAreaEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __PANEDRAWPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										164
									
								
								contrib/include/wx/fl/rowdragpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,164 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     06/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ROWDRAGPL_G__
 | 
				
			||||||
 | 
					#define __ROWDRAGPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "rowdragpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Plugin adds row-dragging fuctionality to the pane.
 | 
				
			||||||
 | 
					 * Handles mouse/movement and pane-background erasing plugin-events.
 | 
				
			||||||
 | 
					 * Behaviour and appearence resembles drag & drop posotioning 
 | 
				
			||||||
 | 
					 * of the toolbar-rows int Netscape Comunicator 4.xx.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbRowDragPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbRowDragPlugin )
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						// background colours for the highlighted/unhighlighted icons
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxColour mHightColor;      // light-blue for NC-look
 | 
				
			||||||
 | 
						wxColour mLowColor;        // light-gray -/-
 | 
				
			||||||
 | 
						wxColour mTrianInnerColor; // blue       -/-
 | 
				
			||||||
 | 
						wxPen    mTrianInnerPen;   // black      -/-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						friend class cbRowDragPluginSerializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// drag & drop state variables
 | 
				
			||||||
 | 
						bool    mDragStarted;
 | 
				
			||||||
 | 
						bool    mDecisionMode;
 | 
				
			||||||
 | 
						wxPoint mDragOrigin;
 | 
				
			||||||
 | 
						int     mCurDragOfs;
 | 
				
			||||||
 | 
						bool    mCaptureIsOn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// saved margins of the pane
 | 
				
			||||||
 | 
						int mSvTopMargin;
 | 
				
			||||||
 | 
						int mSvBottomMargin;
 | 
				
			||||||
 | 
						int mSvLeftMargin;
 | 
				
			||||||
 | 
						int mSvRightMargin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//on-screen drawing state variables
 | 
				
			||||||
 | 
						wxBitmap* mpPaneImage;
 | 
				
			||||||
 | 
						wxBitmap* mpRowImage;
 | 
				
			||||||
 | 
						wxBitmap* mpCombinedImage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxScreenDC* mpScrDc;
 | 
				
			||||||
 | 
						wxRect    mCombRect;
 | 
				
			||||||
 | 
						wxSize    mRowImgDim;
 | 
				
			||||||
 | 
						int       mInitialRowOfs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// NOTE:: if mpRowInFocus is not NULL, then mCollapsedIconInFocus is -1,
 | 
				
			||||||
 | 
						//        and v.v. (two different items cannot be in focus at the same time)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowInfo* mpRowInFocus;
 | 
				
			||||||
 | 
						int        mCollapsedIconInFocus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane* mpPane; // is set up temorarely, while handling event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxList      mHiddenBars;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxBitmap* CaptureDCArea( wxDC& dc, wxRect& area );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// helpers for drag&drop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int GetHRowsCountForPane( cbDockPane* pPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetMouseCapture( bool captureOn );
 | 
				
			||||||
 | 
						void PrepareForRowDrag();
 | 
				
			||||||
 | 
						void ShowDraggedRow( int offset );
 | 
				
			||||||
 | 
						void ShowPaneImage();
 | 
				
			||||||
 | 
						void FinishOnScreenDraw();
 | 
				
			||||||
 | 
						void CollapseRow( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						void ExpandRow( int collapsedIconIdx );
 | 
				
			||||||
 | 
						void InsertDraggedRowBefore( cbRowInfo* pBeforeRow );
 | 
				
			||||||
 | 
						bool ItemIsInFocus();
 | 
				
			||||||
 | 
						void CheckPrevItemInFocus( cbRowInfo* pRow, int iconIdx );
 | 
				
			||||||
 | 
						void UnhiglightItemInFocus();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowInfo* GetFirstRow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// "hard-coded metafile" for NN-look
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawTrianUp( wxRect& inRect, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawTrianDown( wxRect& inRect, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawTrianRight( wxRect& inRect, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void Draw3DPattern( wxRect& inRect, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawRombShades( wxPoint& p1, wxPoint& p2, wxPoint& p3, wxPoint& p4, wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawOrtoRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
 | 
				
			||||||
 | 
						virtual void DrawRomb( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
 | 
				
			||||||
 | 
						virtual void Draw3DRect( wxRect& inRect, wxDC& dc, wxBrush& bkBrush );
 | 
				
			||||||
 | 
						virtual void DrawRectShade( wxRect& inRect, wxDC& dc, 
 | 
				
			||||||
 | 
													int level, wxPen& upperPen, wxPen& lowerPen );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void GetRowHintRect( cbRowInfo* pRow, wxRect& rect );
 | 
				
			||||||
 | 
						virtual void GetCollapsedInconRect( int iconIdx, wxRect& rect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int  GetCollapsedIconsPos();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowDragPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowDragPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
						virtual ~cbRowDragPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual cbPluginBase* Clone() { return new cbRowDragPlugin(NULL,0); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnInitPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// handlers for plugin events (appearence-independent logic)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnMouseMove  ( cbMotionEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonDown( cbLeftDownEvent& event );
 | 
				
			||||||
 | 
						void OnLButtonUp  ( cbLeftUpEvent& event );
 | 
				
			||||||
 | 
						void OnDrawPaneBackground( cbDrawPaneDecorEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overridables (appearence-depedent)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted );
 | 
				
			||||||
 | 
						virtual void DrawCollapsedRowsBorder( wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawRowsDragHintsBorder( wxDC& dc );
 | 
				
			||||||
 | 
						virtual void DrawRowDragHint( cbRowInfo* pRow, wxDC& dc, bool isHighlighted );
 | 
				
			||||||
 | 
						virtual void DrawEmptyRow( wxDC& dc, wxRect& rowBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual int GetCollapsedRowIconHeight();
 | 
				
			||||||
 | 
						virtual int GetRowDragHintWidth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void SetPaneMargins();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual bool HitTestCollapsedRowIcon( int iconIdx, const wxPoint& pos );
 | 
				
			||||||
 | 
						virtual bool HitTestRowDragHint( cbRowInfo* pRow, const wxPoint& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// internal helper-class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbHiddenBarInfo : public wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbHiddenBarInfo )
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbBarInfo* mpBar;
 | 
				
			||||||
 | 
						int        mRowNo;
 | 
				
			||||||
 | 
						int        mIconNo;
 | 
				
			||||||
 | 
						int        mAlignment;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ROWDRAGPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										87
									
								
								contrib/include/wx/fl/rowlayoutpl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,87 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     02/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __ROWLAYOUTPL_G__
 | 
				
			||||||
 | 
					#define __ROWLAYOUTPL_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "rowlayoutpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Simple implementation of plugin, which handles row-layouting
 | 
				
			||||||
 | 
					 * requests sent from Frame Layout
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbRowLayoutPlugin : public cbPluginBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbRowLayoutPlugin )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						cbDockPane* mpPane; // is set up temorarely, while handling event
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// not-fixed-bars layouting related helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void FitBarsToRange( int from, int till, cbBarInfo* pTheBar, cbRowInfo* pRow ); 
 | 
				
			||||||
 | 
						void RelayoutNotFixedBarsAround( cbBarInfo* pTheBar, cbRowInfo* pRow ); 
 | 
				
			||||||
 | 
						void MinimzeNotFixedBars( cbRowInfo* pRow, cbBarInfo* pBarToPreserve );
 | 
				
			||||||
 | 
						int  GetRowFreeSpace( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						void RecalcLengthRatios( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						void ApplyLengthRatios( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						void ExpandNotFixedBars( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						void AdjustLengthOfInserted( cbRowInfo* pRow, cbBarInfo* pTheBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DetectBarHandles( cbRowInfo* pRow );
 | 
				
			||||||
 | 
						void CheckIfAtTheBoundary( cbBarInfo* pTheBar, cbRowInfo& rowInfo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// row-layouting helpers (simulate "bar-friction")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int  CalcRowHeight( cbRowInfo& row );
 | 
				
			||||||
 | 
						void LayoutItemsVertically( cbRowInfo& row );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void StickRightSideBars( cbBarInfo* pToBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SlideLeftSideBars ( cbBarInfo* pTheBar );
 | 
				
			||||||
 | 
						void SlideRightSideBars( cbBarInfo* pTheBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void ShiftLeftTrashold ( cbBarInfo* pTheBar, cbRowInfo& row );
 | 
				
			||||||
 | 
						void ShiftRightTrashold( cbBarInfo* pTheBar, cbRowInfo& row );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void InsertBefore( cbBarInfo* pBeforeBar, 
 | 
				
			||||||
 | 
										   cbBarInfo* pTheBar,
 | 
				
			||||||
 | 
										   cbRowInfo& row
 | 
				
			||||||
 | 
										 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DoInsertBar( cbBarInfo* pTheBar, cbRowInfo& row );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowLayoutPlugin(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbRowLayoutPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// event handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnResizeRow ( cbResizeRowEvent&  event );
 | 
				
			||||||
 | 
						void OnInsertBar ( cbInsertBarEvent&  event );
 | 
				
			||||||
 | 
						void OnRemoveBar ( cbRemoveBarEvent&  event );
 | 
				
			||||||
 | 
						void OnLayoutRow ( cbLayoutRowEvent&  event );
 | 
				
			||||||
 | 
						void OnLayoutRows( cbLayoutRowsEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __ROWLAYOUTPL_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										216
									
								
								contrib/include/wx/fl/toolwnd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,216 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     06/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __TOOLWND_G__
 | 
				
			||||||
 | 
					#define __TOOLWND_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "toolwnd.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/frame.h"
 | 
				
			||||||
 | 
					#include "wx/dynarray.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fixed settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BTN_BOX_HEIGHT       12
 | 
				
			||||||
 | 
					#define BTN_BOX_WIDTH        12
 | 
				
			||||||
 | 
					#define BTN_X_WIEGHT         2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbMiniButton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef cbMiniButton* cbMinitButtonPtrT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WX_DEFINE_ARRAY( cbMinitButtonPtrT, cbMiniButtonArrayT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxToolWindow : public wxFrame
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( wxToolWindow )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:	/** protected really, accessed only by serializers **/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbMiniButtonArrayT mButtons;
 | 
				
			||||||
 | 
						wxWindow* mpClientWnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFont    mTitleFont;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int       mTitleHeight;
 | 
				
			||||||
 | 
						int       mClntHorizGap;
 | 
				
			||||||
 | 
						int       mClntVertGap;
 | 
				
			||||||
 | 
						int       mWndVertGap;
 | 
				
			||||||
 | 
						int       mWndHorizGap;
 | 
				
			||||||
 | 
						int       mButtonGap;
 | 
				
			||||||
 | 
						int       mInTitleMargin;
 | 
				
			||||||
 | 
						int       mHintBorder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool      mResizeStarted;
 | 
				
			||||||
 | 
						bool      mRealTimeUpdatesOn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int       mMTolerance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int       mCursorType;
 | 
				
			||||||
 | 
						bool      mMouseCaptured;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// drag&drop state variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPoint     mDragOrigin;
 | 
				
			||||||
 | 
						wxRect      mInitialRect;
 | 
				
			||||||
 | 
						wxRect      mPrevHintRect;
 | 
				
			||||||
 | 
						wxScreenDC* mpScrDc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void GetScrWindowRect( wxRect& r );
 | 
				
			||||||
 | 
						void GetScrMousePos  ( wxMouseEvent& event, wxPoint& pos );
 | 
				
			||||||
 | 
						void SetHintCursor   ( int type );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void CalcResizedRect( wxRect& rect, wxPoint& delta, const wxSize& minDim );
 | 
				
			||||||
 | 
						void AdjustRectPos( const wxRect& original, const wxSize& newDim, wxRect& newRect );
 | 
				
			||||||
 | 
						wxSize GetMinimalWndDim();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void DrawHintRect( const wxRect& r );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int HitTestWindow( wxMouseEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void LayoutMiniButtons();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						wxToolWindow();
 | 
				
			||||||
 | 
						~wxToolWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetClient( wxWindow* pWnd );
 | 
				
			||||||
 | 
						wxWindow* GetClient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetTitleFont( wxFont& font );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// buttons are added in right-to-left order
 | 
				
			||||||
 | 
						void AddMiniButton( cbMiniButton* pBtn );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnPaint( wxPaintEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnMotion( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnLeftDown( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnLeftUp( wxMouseEvent& event );
 | 
				
			||||||
 | 
						void OnSize( wxSizeEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnEraseBackground( wxEraseEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overridables:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual wxSize GetPreferredSize( const wxSize& given );
 | 
				
			||||||
 | 
						virtual void OnMiniButtonClicked( int btnIdx ) {}
 | 
				
			||||||
 | 
						virtual bool HandleTitleClick( wxMouseEvent& event ) { return FALSE; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME:: the code below should be moved to a separate file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbMiniButton : public wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						wxPoint   mPos;
 | 
				
			||||||
 | 
						wxSize    mDim;
 | 
				
			||||||
 | 
						bool      mVisible;
 | 
				
			||||||
 | 
						bool      mEnabled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrameLayout* mpLayout;
 | 
				
			||||||
 | 
						cbDockPane*    mpPane;
 | 
				
			||||||
 | 
						cbPluginBase*  mpPlugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxWindow*      mpWnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool      mWasClicked;
 | 
				
			||||||
 | 
						bool      mDragStarted;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool      mPressed;
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbMiniButton();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetPos( const wxPoint& pos );
 | 
				
			||||||
 | 
						bool HitTest( const wxPoint& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnLeftDown( const wxPoint& pos );
 | 
				
			||||||
 | 
						void OnLeftUp( const wxPoint& pos );
 | 
				
			||||||
 | 
						void OnMotion( const wxPoint& pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void Refresh();
 | 
				
			||||||
 | 
						virtual void Draw( wxDC& dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool WasClicked();
 | 
				
			||||||
 | 
						void Reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void Enable( bool enable ) { mEnabled = enable; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool IsPressed() { return mPressed; }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// classes specific to wxFrameLayout engine (FOR NOW in here...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbCloseBox : public cbMiniButton
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						virtual void Draw( wxDC& dc );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbCollapseBox  : public cbMiniButton
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						bool mIsAtLeft;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void Draw( wxDC& dc );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbDockBox : public cbMiniButton
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						virtual void Draw( wxDC& dc );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbFloatedBarWindow : public wxToolWindow
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbFloatedBarWindow )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						cbBarInfo*     mpBar;
 | 
				
			||||||
 | 
						wxFrameLayout* mpLayout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						friend class cbFloatedBarWindowSerializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbFloatedBarWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void SetBar( cbBarInfo* pBar );
 | 
				
			||||||
 | 
						void SetLayout( wxFrameLayout* pLayout );
 | 
				
			||||||
 | 
						cbBarInfo* GetBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// given coordinates are those of the bar itself
 | 
				
			||||||
 | 
						// floated container window's position and size
 | 
				
			||||||
 | 
						// are ajusted accordingly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void PositionFloatedWnd( int scrX,  int scrY,
 | 
				
			||||||
 | 
												 int width, int height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// overriden methods of wxToolWindow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual wxSize GetPreferredSize( const wxSize& given );
 | 
				
			||||||
 | 
						virtual void OnMiniButtonClicked( int btnIdx );
 | 
				
			||||||
 | 
						virtual bool HandleTitleClick( wxMouseEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnDblClick( wxMouseEvent& event );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __TOOLWND_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										56
									
								
								contrib/include/wx/fl/updatesmgr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas (@Lithuania)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __UPDATESMGR_G__
 | 
				
			||||||
 | 
					#define __UPDATESMGR_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "updatesmgr.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * class implements slightly optimized logic for refreshing
 | 
				
			||||||
 | 
					 * areas of frame layout - which actually need to be updated. 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbSimpleUpdatesMgr : public cbUpdatesManagerBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_DYNAMIC_CLASS( cbSimpleUpdatesMgr )
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool WasChanged( cbUpdateMgrData& data, wxRect& currentBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbSimpleUpdatesMgr(void) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbSimpleUpdatesMgr( wxFrameLayout* pPanel );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// notificiactions received from Frame Layout (in the order, in which
 | 
				
			||||||
 | 
						// they usually would be invoked)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnStartChanges();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnRowWillChange( cbRowInfo* pRow, cbDockPane* pInPane );
 | 
				
			||||||
 | 
						virtual void OnBarWillChange( cbBarInfo* pBar, cbRowInfo* pInRow, cbDockPane* pInPane );
 | 
				
			||||||
 | 
						virtual void OnPaneMarginsWillChange( cbDockPane* pPane );
 | 
				
			||||||
 | 
						virtual void OnPaneWillChange( cbDockPane* pPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void OnFinishChanges();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// refreshes parts of the frame layout, which need an update
 | 
				
			||||||
 | 
						virtual void UpdateNow();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __UPDATESMGR_G__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONTRIB_SAMPLES=mmedia ogl stc gizmos canvas xrc plot applet
 | 
					CONTRIB_SAMPLES=mmedia ogl stc gizmos canvas xrc plot applet fl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all:
 | 
					all:
 | 
				
			||||||
	@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done
 | 
						@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								contrib/samples/fl/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONTRIB_SAMPLES=fl_demo1 fl_demo2 fl_sample1 fl_sample2 fl_sample3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					all:
 | 
				
			||||||
 | 
						@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE)); done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						@for d in $(CONTRIB_SAMPLES); do (cd $$d && $(MAKE) clean); done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/bookmarks.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/class_icon.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/class_icon1.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 822 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/copy.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/cut.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/file_icon.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/folder_icon.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 822 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/help_icon.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/new.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/nextmark.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/open.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/paste.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/prevmark.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/res_icon.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 214 B  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/save.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/saveall.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/search.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/start95_dp.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/start95_pr.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib/samples/fl/bitmaps/tile.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										25
									
								
								contrib/samples/fl/fl_demo1/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# "%W% %G%"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample on UNIX/Linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET = fl_demo1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					program_dir = contrib/samples/fl/$(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makeprog.env
 | 
				
			||||||
							
								
								
									
										108
									
								
								contrib/samples/fl/fl_demo1/fl_demo.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="fl_demo1" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Application" 0x0101
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=fl_demo1 - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo1 - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "fl_demo1 - Win32 Release" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE "fl_demo1 - Win32 Debug" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					MTL=midl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_demo1 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib png.lib zlib.lib jpeg.lib tiff.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_demo1 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "fl_demo1 - Win32 Release"
 | 
				
			||||||
 | 
					# Name "fl_demo1 - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_demo1.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_demo1 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_demo1 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ADD CPP /Yc"wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_demo1.rc
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/samples/fl/fl_demo1/fl_demo.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "fl_demo1"=.\fl_demo.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										241
									
								
								contrib/samples/fl/fl_demo1/fl_demo1.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,241 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     04/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma implementation "fl_demo1.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/textctrl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fl headers
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"     // core API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// extra plugins
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"    // beveal for bars with "X"s and grooves
 | 
				
			||||||
 | 
					#include "wx/fl/rowdragpl.h"     // NC-look with dragable rows
 | 
				
			||||||
 | 
					#include "wx/fl/cbcustom.h"      // customization plugin
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// beuty-care
 | 
				
			||||||
 | 
					#include "wx/fl/gcupdatesmgr.h"  // smooth d&d
 | 
				
			||||||
 | 
					#include "wx/fl/antiflickpl.h"   // double-buffered repaint of decorations
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbar.h"       // auto-layouting toolbar
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbarhnd.h"    // control-bar dimension handler for it
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "fl_demo1.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// comment it out if it breaks, (this is my workaround for MSDev 4.0 linker)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char  wxDummyChar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_APP	(MyApp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MyApp::OnInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    MyFrame *frame = new MyFrame(NULL);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->SetBackgroundColour( wxColour(192,192,192) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenu *file_menu = new wxMenu;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( NEW_TEST_LOAD, "&Load layouts"  );
 | 
				
			||||||
 | 
					    file_menu->Append( NEW_TEST_SAVE, "&Store layouts" );
 | 
				
			||||||
 | 
					    file_menu->Append( NEW_TEST_EXIT, "E&xit" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenuBar *menu_bar = new wxMenuBar;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    menu_bar->Append(file_menu,   "&File");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->SetMenuBar(menu_bar);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->CreateStatusBar(3);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->Show(TRUE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->mpClientWnd->Refresh();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SetTopWindow(frame);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMessageBox("Hello, this demo has a bunch of yet-not-fixed-bugs and misssing functionality\n" \
 | 
				
			||||||
 | 
					                 "The ONLY purpose is to demostrate self-layouting toolbars,\nflat-bitmapped-buttons and 2-new FL-plugins" \
 | 
				
			||||||
 | 
					                 "(cbRowDragPlugin & cbBarHintsPlugin)\n\n" \
 | 
				
			||||||
 | 
					                 "BTW, disabled images and label-text are rendered at run-time" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyFrame *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( MyFrame, wxFrame )
 | 
				
			||||||
 | 
					    // EVT_CHAR_HOOK(MyFrame::OnKeyDown)
 | 
				
			||||||
 | 
					    // EVT_PAINT( MyFrame::OnPaint )
 | 
				
			||||||
 | 
					    EVT_MENU( NEW_TEST_SAVE, MyFrame::OnSave )
 | 
				
			||||||
 | 
					    EVT_MENU( NEW_TEST_LOAD, MyFrame::OnLoad )
 | 
				
			||||||
 | 
					    EVT_MENU( NEW_TEST_EXIT, MyFrame::OnExit )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnLoad( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{						
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found a BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnSave( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found another BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnExit( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Destroy();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTextCtrl* pCtrl = 
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        new wxTextCtrl( this, -1, value, 
 | 
				
			||||||
 | 
					        wxDefaultPosition, wxSize(0,0), wxTE_MULTILINE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pCtrl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::MyFrame(wxFrame *frame)
 | 
				
			||||||
 | 
					    : wxFrame( frame, -1, "wxWindows 2.0 wxFrameLayout Test Application", wxDefaultPosition, 
 | 
				
			||||||
 | 
					          wxSize( 700, 500 ), 
 | 
				
			||||||
 | 
					          wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | 
 | 
				
			||||||
 | 
					          wxTHICK_FRAME   | wxSYSTEM_MENU  | wxCAPTION, 
 | 
				
			||||||
 | 
					          "freimas" )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mpClientWnd = CreateTextCtrl( "Client window" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout = new wxFrameLayout( this, mpClientWnd );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					#ifdef __WXGTK__
 | 
				
			||||||
 | 
					    cbCommonPaneProperties props;
 | 
				
			||||||
 | 
					    mpLayout->GetPaneProperties( props );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    props.mRealTimeUpdatesOn = FALSE; // real-time OFF!!!
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->SetPaneProperties( props, wxALL_PANES );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->SetUpdatesManager( new cbGCUpdatesMgr() );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // this is now default...
 | 
				
			||||||
 | 
					    //mpLayout->SetMargins( 1,1,1,1 ); // gaps for vertical/horizontal/right/left panes
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // setup plugins for testing
 | 
				
			||||||
 | 
					    mpLayout->PushDefaultPlugins();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for bars
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbRowDragPlugin  ) );
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbAntiflickerPlugin ) );
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbSimpleCustomizationPlugin ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // drop in some bars
 | 
				
			||||||
 | 
					    cbDimInfo sizes0( 200,45, // when docked horizontally      
 | 
				
			||||||
 | 
					                      200,85, // when docked vertically        
 | 
				
			||||||
 | 
					                      175,35, // when floated                  
 | 
				
			||||||
 | 
					                      FALSE,  // the bar is not fixed-size
 | 
				
			||||||
 | 
					                      4,      // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4       // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes1( 150,35, // when docked horizontally      
 | 
				
			||||||
 | 
					                      150,85, // when docked vertically        
 | 
				
			||||||
 | 
					                      175,35, // when floated                  
 | 
				
			||||||
 | 
					                      TRUE,   // the bar is not fixed-size
 | 
				
			||||||
 | 
					                      4,      // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4       // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes2( 175,45, // when docked horizontally      
 | 
				
			||||||
 | 
					                      175,37, // when docked vertically        
 | 
				
			||||||
 | 
					                      170,35, // when floated                  
 | 
				
			||||||
 | 
					                      TRUE,   // the bar is not fixed-size
 | 
				
			||||||
 | 
					                      4,      // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4,      // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                      new cbDynToolBarDimHandler()
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->AddBar( CreateTextCtrl("Hello"),  // bar window
 | 
				
			||||||
 | 
					                      sizes0, FL_ALIGN_TOP,     // alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                      0,                        // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                      0,                        // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                      "InfoViewer1",            // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                      TRUE
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->AddBar( CreateTextCtrl("Bye"),    // bar window
 | 
				
			||||||
 | 
					                      sizes0, FL_ALIGN_TOP,     // alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                      1,                        // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                      0,                        // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                      "InfoViewer2",            // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                      TRUE
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->AddBar( CreateTextCtrl("Fixed0"), // bar window
 | 
				
			||||||
 | 
					                      sizes1, FL_ALIGN_TOP,     // alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                      0,                        // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                      0,                        // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                      "ToolBar1",               // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                      TRUE
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxDynamicToolBar* pToolBar = new wxDynamicToolBar();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pToolBar->Create( this, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 1001-1006 ids of command events fired by added tool-buttons
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1001, BMP_DIR "new.bmp" );
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1002, BMP_DIR "open.bmp" );
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1003, BMP_DIR "save.bmp" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1004, BMP_DIR "cut.bmp" );
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1005, BMP_DIR "copy.bmp" );
 | 
				
			||||||
 | 
					    pToolBar->AddTool( 1006, BMP_DIR "paste.bmp" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->AddBar( pToolBar,             // bar window (can be NULL)
 | 
				
			||||||
 | 
					                      sizes2, FL_ALIGN_TOP, // alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                      0,                    // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                      0,                    // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                      "ToolBar2",           // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                      FALSE
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->EnableFloating( TRUE ); // off, thinking bout wxGtk...
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::~MyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if ( mpLayout) 
 | 
				
			||||||
 | 
					        delete mpLayout; // should be destroyed manually
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										55
									
								
								contrib/samples/fl/fl_demo1/fl_demo1.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     04/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __NEW_TEST_G__
 | 
				
			||||||
 | 
					#define __NEW_TEST_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma interface "fl_demo1.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NEW_TEST_SAVE 1101
 | 
				
			||||||
 | 
					#define NEW_TEST_LOAD 1102
 | 
				
			||||||
 | 
					#define NEW_TEST_EXIT 1103
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/panel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define a new application type
 | 
				
			||||||
 | 
					class MyApp: public wxApp
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define a new frame type
 | 
				
			||||||
 | 
					class MyFrame: public wxFrame
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    wxFrameLayout*  mpLayout;
 | 
				
			||||||
 | 
					    wxTextCtrl*     mpClientWnd;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl* CreateTextCtrl( const wxString& value );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    MyFrame(wxFrame *frame);
 | 
				
			||||||
 | 
					    virtual ~MyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bool OnClose(void) { Show(FALSE); return TRUE; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnLoad( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnSave( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnExit( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								contrib/samples/fl/fl_demo1/fl_demo1.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					/* mondrian ICON "mondrian.ico" */
 | 
				
			||||||
 | 
					#include "wx/msw/wx.rc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/samples/fl/fl_demo1/makefile.b32
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample for 32-bit BC++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_demo1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS =-DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.b32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								contrib/samples/fl/fl_demo1/makefile.g95
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWorkshop for mingw & cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ../../../..
 | 
				
			||||||
 | 
					TARGET = fl_demo1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					EXTRALIBS     = $(WXDIR)/lib/libfl.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(WXDIR)/src/makeprog.g95
 | 
				
			||||||
							
								
								
									
										24
									
								
								contrib/samples/fl/fl_demo1/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds fl sample (VC++, WIN32)
 | 
				
			||||||
 | 
					# Use FINAL=1 argument to nmake to build final version with no debug info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_demo1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRAINC = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.vc
 | 
				
			||||||
							
								
								
									
										25
									
								
								contrib/samples/fl/fl_demo2/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# "%W% %G%"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample on UNIX/Linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET = fl_demo2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					program_dir = contrib/samples/fl/$(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makeprog.env
 | 
				
			||||||
							
								
								
									
										108
									
								
								contrib/samples/fl/fl_demo2/fl_demo.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="fl_demo2" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Application" 0x0101
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=fl_demo2 - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_demo2 - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "fl_demo2 - Win32 Release" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE "fl_demo2 - Win32 Debug" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					MTL=midl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_demo2 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib png.lib zlib.lib jpeg.lib tiff.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_demo2 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "fl_demo2 - Win32 Release"
 | 
				
			||||||
 | 
					# Name "fl_demo2 - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_demo2.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_demo2 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_demo2 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ADD CPP /Yc"wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_demo2.rc
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/samples/fl/fl_demo2/fl_demo.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "fl_demo2"=.\fl_demo.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										986
									
								
								contrib/samples/fl/fl_demo2/fl_demo2.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,986 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     04/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					#pragma implementation "fl_demo2.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// wxWindows headers.
 | 
				
			||||||
 | 
					#include "wx/treectrl.h"
 | 
				
			||||||
 | 
					#include "wx/imaglist.h"
 | 
				
			||||||
 | 
					#include "wx/notebook.h" 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fl headers.
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/rowlayoutpl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/antiflickpl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/bardragpl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/cbcustom.h"
 | 
				
			||||||
 | 
					#include "wx/fl/rowdragpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// some extra fl plugins.
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbarhnd.h"  // fl-dimension-handler for dynamic toolbar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "fl_demo2.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyApp *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Create a new application object
 | 
				
			||||||
 | 
					IMPLEMENT_APP    (MyApp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// `Main program' equivalent, creating windows and returning main app frame
 | 
				
			||||||
 | 
					bool MyApp::OnInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // Create the main frame window
 | 
				
			||||||
 | 
					    MyFrame *frame = new MyFrame(NULL, "wxWindows 2.0 wxFrameLayout demo", 50, 50, 650, 540);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Give it an icon
 | 
				
			||||||
 | 
					#ifdef __WINDOWS__
 | 
				
			||||||
 | 
					    frame->SetIcon(wxIcon("mondrian"));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef __X__
 | 
				
			||||||
 | 
					    frame->SetIcon(wxIcon("aiai.xbm"));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Make a menubar
 | 
				
			||||||
 | 
					    wxMenu *file_menu = new wxMenu;
 | 
				
			||||||
 | 
					    wxMenu *active_menu = new wxMenu;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_LOAD,  "&Load layouts"  );
 | 
				
			||||||
 | 
					    file_menu->Append( ID_STORE, "&Store layouts" );
 | 
				
			||||||
 | 
					    file_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_AUTOSAVE, "&Auto Save Layouts", "save layouts on exit", TRUE );
 | 
				
			||||||
 | 
					    file_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append(MINIMAL_ABOUT, "A&bout !");
 | 
				
			||||||
 | 
					    file_menu->Append(MINIMAL_QUIT, "E&xit\tTab");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    //active_menu->Append( ID_SETTINGS, "&Settings...\tCtrl" );
 | 
				
			||||||
 | 
					    //active_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    active_menu->Append( ID_REMOVE,    "&Remove Active" );
 | 
				
			||||||
 | 
					    active_menu->Append( ID_REMOVEALL, "Remove &All" );
 | 
				
			||||||
 | 
					    active_menu->Append( ID_RECREATE,  "Re&create" );
 | 
				
			||||||
 | 
					    active_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    active_menu->Append( ID_FIRST,  "Activate f&irst layout \tF1", "activate it", TRUE );
 | 
				
			||||||
 | 
					    active_menu->Append( ID_SECOND, "Activate &second layout\tF2","activate it",  TRUE );
 | 
				
			||||||
 | 
					    active_menu->Append( ID_THIRD,  "Activate &third layout\tF3","activate it",   TRUE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenuBar *menu_bar = new wxMenuBar;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    menu_bar->Append(file_menu,   "&File");
 | 
				
			||||||
 | 
					    menu_bar->Append(active_menu, "Active &Layout");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->CreateStatusBar(3);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->SetMenuBar(menu_bar);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->SyncMenuBarItems();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Show the frame
 | 
				
			||||||
 | 
					    frame->Show(TRUE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SetTopWindow(frame);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::~MyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // frame-layouts is not a windows (objects), thus should
 | 
				
			||||||
 | 
					    // be cleaned up manually
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    for( int i = 0; i != MAX_LAYOUTS; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( mLayouts[i] ) 
 | 
				
			||||||
 | 
					            delete mLayouts[i];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( mpNestedLayout   ) 
 | 
				
			||||||
 | 
					        delete mpNestedLayout;
 | 
				
			||||||
 | 
					    if ( mpAboutBoxLayout ) 
 | 
				
			||||||
 | 
					        delete mpAboutBoxLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyFrame *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 | 
				
			||||||
 | 
					    EVT_MENU( MINIMAL_QUIT,  MyFrame::OnQuit  )
 | 
				
			||||||
 | 
					    EVT_MENU( MINIMAL_ABOUT, MyFrame::OnAbout )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EVT_MENU( ID_LOAD,      MyFrame::OnLoad      )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_STORE,     MyFrame::OnStore     )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_AUTOSAVE,  MyFrame::OnAutoSave  )
 | 
				
			||||||
 | 
					    //EVT_MENU( ID_SETTINGS,  MyFrame::OnSettings  )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_REMOVE,    MyFrame::OnRemove    )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_REMOVEALL, MyFrame::OnRemoveAll )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_RECREATE,  MyFrame::OnRecreate  )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_FIRST,     MyFrame::OnFirst     )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_SECOND,    MyFrame::OnSecond    )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_THIRD,     MyFrame::OnThird     )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_SAY_ITSOK, MyFrame::OnSayItsOk )
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_BTN_YES,   MyFrame::OnBtnYes )
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_BTN_NO,    MyFrame::OnBtnNo )
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_BTN_ESC,   MyFrame::OnBtnEsc )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EVT_CHAR_HOOK( MyFrame::OnChar )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// My frame constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
 | 
				
			||||||
 | 
					    : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)),
 | 
				
			||||||
 | 
					    mpNestedLayout( NULL ),
 | 
				
			||||||
 | 
					    mpAboutBoxLayout( NULL ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mActiveLayoutNo( FIRST_LAYOUT ),
 | 
				
			||||||
 | 
					    mAutoSave( TRUE ),
 | 
				
			||||||
 | 
					    mSavedAlready( FALSE ),
 | 
				
			||||||
 | 
					    mpClntWindow( NULL ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mImageList( 16,16, FALSE, 2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mpInternalFrm = (wxPanel*)this;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mAboutBox.Create( this, -1,  "About box in wxWindows style...",
 | 
				
			||||||
 | 
					                      wxDefaultPosition,
 | 
				
			||||||
 | 
					                      wxSize( 385,220),
 | 
				
			||||||
 | 
					                      wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE | wxTAB_TRAVERSAL );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int i = 0;
 | 
				
			||||||
 | 
					    for( i = 0; i != MAX_LAYOUTS; ++i ) 
 | 
				
			||||||
 | 
					        mLayouts[i] = NULL;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // image-list is one of the few objects which
 | 
				
			||||||
 | 
					    // currently cannot be serialized, create it first 
 | 
				
			||||||
 | 
					    // and use it as initial reference (IR)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxBitmap bmp1,bmp2;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( wxFileExists( BMP_DIR "folder_icon.bmp" ) )
 | 
				
			||||||
 | 
					        bmp1.LoadFile( BMP_DIR "folder_icon.bmp", wxBITMAP_TYPE_BMP );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( wxFileExists( BMP_DIR "class_icon1.bmp" ) )
 | 
				
			||||||
 | 
					        bmp2.LoadFile( BMP_DIR "class_icon1.bmp", wxBITMAP_TYPE_BMP );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mImageList.Add( bmp1 );
 | 
				
			||||||
 | 
					    mImageList.Add( bmp2 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    InitAboutBox();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // create multiple layouts
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpNestedLayout = 0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpClntWindow = CreateTxtCtrl("client window");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Create all layouts
 | 
				
			||||||
 | 
					    for( i = 0; i != MAX_LAYOUTS; ++i )
 | 
				
			||||||
 | 
					    {	  
 | 
				
			||||||
 | 
					        CreateLayout( i );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // hide others
 | 
				
			||||||
 | 
					    for( i = SECOND_LAYOUT; i != MAX_LAYOUTS; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        mLayouts[i]->HideBarWindows();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // activate first one 
 | 
				
			||||||
 | 
					    mLayouts[FIRST_LAYOUT]->Activate();
 | 
				
			||||||
 | 
					    mActiveLayoutNo = FIRST_LAYOUT;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** event handlers ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MyFrame::OnClose(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    //  USEFUL TRICK:: avoids flickering of application's frame 
 | 
				
			||||||
 | 
					    //                 when closing NN windows on exit:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    this->Show(FALSE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( (mAutoSave && mSavedAlready) || !mAutoSave )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        wxCommandEvent evt;
 | 
				
			||||||
 | 
					        this->OnStore(evt);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mAboutBox.Destroy();
 | 
				
			||||||
 | 
					    this->Destroy();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnLoad( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found a BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnStore( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found another BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnAutoSave( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mAutoSave = !mAutoSave;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxCommandEvent evt;
 | 
				
			||||||
 | 
					    this->OnStore(evt);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SyncMenuBarItems();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnRemove( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    RemoveLayout( mActiveLayoutNo );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Refresh();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnRemoveAll( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    for( int i = 0; i != MAX_LAYOUTS; ++i )
 | 
				
			||||||
 | 
					    {    
 | 
				
			||||||
 | 
					        RemoveLayout( i );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Refresh();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnRecreate( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    OnRemove( event ); // first destroy active layout
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    CreateLayout( mActiveLayoutNo );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mLayouts[mActiveLayoutNo]->Activate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnFirst( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ActivateLayout( FIRST_LAYOUT );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnSecond( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ActivateLayout( SECOND_LAYOUT );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnThird( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ActivateLayout( THIRD_LAYOUT );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnQuit( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    //  USEFUL TRICK:: avoids flickering of application's frame 
 | 
				
			||||||
 | 
					    //                 when closing NN windows on exit:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    this->Show(FALSE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( (mAutoSave && mSavedAlready) || !mAutoSave )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        wxCommandEvent evt;
 | 
				
			||||||
 | 
					        this->OnStore(evt);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Destroy();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnAbout( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxFont font;
 | 
				
			||||||
 | 
					#ifdef __WXMSW__
 | 
				
			||||||
 | 
					    font.SetFaceName("MS Sans Serif");
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    font.SetFamily( wxSWISS );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    font.SetStyle( wxSLANT );
 | 
				
			||||||
 | 
					    font.SetWeight( wxNORMAL );
 | 
				
			||||||
 | 
					    font.SetPointSize( 8 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					#ifdef __WXMSW__
 | 
				
			||||||
 | 
					    font.RealizeResource();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mAboutBox.Center( wxBOTH );
 | 
				
			||||||
 | 
					    mAboutBox.Show(TRUE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnChar( wxKeyEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxCommandEvent evt;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( event.m_keyCode == WXK_F1 )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this->OnFirst( evt );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( event.m_keyCode == WXK_F2 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this->OnSecond( evt );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if ( event.m_keyCode == WXK_F3 )
 | 
				
			||||||
 | 
					            {   
 | 
				
			||||||
 | 
					                this->OnThird( evt );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if ( event.m_keyCode == WXK_F4 && !event.AltDown() )
 | 
				
			||||||
 | 
					            {   
 | 
				
			||||||
 | 
					                // "AI" :-)
 | 
				
			||||||
 | 
					                wxMessageBox("There are only 3 layouts in this demo :-(");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if ( event.m_keyCode == WXK_TAB )
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //  USEFUL TRICK:: avoids flickering of application's frame 
 | 
				
			||||||
 | 
					                    //                 when closing NN windows on exit:
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    this->Show(FALSE);
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    if ( (mAutoSave && mSavedAlready) || !mAutoSave )
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        wxCommandEvent evt;
 | 
				
			||||||
 | 
					                        this->OnStore(evt);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    Destroy();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    event.Skip();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnSayItsOk( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("It's OK  :-)\n\n now click on the border around the button\n and try dragging it!" );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnBtnYes( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mAboutBox.Show(FALSE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnBtnNo( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mAboutBox.Show(FALSE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnBtnEsc( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mAboutBox.Show(FALSE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** helper methods ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::InitAboutBox()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxPanel* pArea = new wxPanel();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pArea->Create( &mAboutBox, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    new wxStaticText(pArea, -1, "This is wxFrameLayout contribution demo.",
 | 
				
			||||||
 | 
					        wxPoint(10, 10) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    new wxStaticText(pArea, -1, "Aleksandras Gluchovas (c) 1998",
 | 
				
			||||||
 | 
					        wxPoint(10, 30) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    new wxStaticText(pArea, -1, "<mailto:alex@soften.ktu.lt>",
 | 
				
			||||||
 | 
					        wxPoint(10, 50) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpAboutBoxLayout = new wxFrameLayout( &mAboutBox, pArea, TRUE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxFrameLayout& layout = *mpAboutBoxLayout;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes( 90,40,     // when docked horizontally
 | 
				
			||||||
 | 
					                     45,55,     // when docked vertically
 | 
				
			||||||
 | 
					                     90,40,     // when floated
 | 
				
			||||||
 | 
					                     TRUE, 4, 4 // true - bar is fixed-size
 | 
				
			||||||
 | 
					                   );  
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxButton* pYes = CreateButton("&Yes",   &mAboutBox, ID_SAY_ITSOK );
 | 
				
			||||||
 | 
					    wxButton* pNo  = CreateButton("&No",    &mAboutBox, ID_BTN_NO );
 | 
				
			||||||
 | 
					    wxButton* pEsc = CreateButton("Cancel", &mAboutBox, ID_BTN_ESC );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.AddBar( pEsc, sizes,  FL_ALIGN_BOTTOM, 0, 20, "cancel button");
 | 
				
			||||||
 | 
					    layout.AddBar( pNo,  sizes,  FL_ALIGN_BOTTOM, 0, 20, "no button");
 | 
				
			||||||
 | 
					    layout.AddBar( pYes, sizes,  FL_ALIGN_BOTTOM, 0, 20, "yes button");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.mBorderPen.SetColour( 192, 192, 192 );
 | 
				
			||||||
 | 
					    layout.SetMargins( 15, 15, 15, 15, wxALL_PANES );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbCommonPaneProperties props;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.GetPaneProperties( props, FL_ALIGN_TOP );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    props.mShow3DPaneBorderOn = FALSE;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.SetPaneProperties( props, wxALL_PANES );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.Activate();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pYes->SetDefault();
 | 
				
			||||||
 | 
					    pYes->SetFocus();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTextCtrl* MyFrame::CreateTxtCtrl( const wxString& txt, wxWindow* parent ) 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return new wxTextCtrl( (parent != NULL ) ? parent : mpInternalFrm,
 | 
				
			||||||
 | 
					                            -1, txt, wxDefaultPosition, wxDefaultSize,                                   
 | 
				
			||||||
 | 
					                            wxTE_MULTILINE );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxButton* MyFrame::CreateButton( const wxString& label,
 | 
				
			||||||
 | 
					                                wxWindow* pParent, long id )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return new wxButton( (pParent)?pParent : mpInternalFrm, id, 
 | 
				
			||||||
 | 
					                            label, wxPoint( 0,0 ), wxSize( 0,0 ) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTreeCtrl* MyFrame::CreateTreeCtrl( const wxString& label )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTreeCtrl* pTree = new wxTreeCtrl( mpInternalFrm, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int rootid = pTree->AppendItem( (long)0, label, 0);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( label[0] != 'X' )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pTree->AppendItem(rootid, "Leaf1", 0);
 | 
				
			||||||
 | 
					        pTree->AppendItem(rootid, "Leaf2", 0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pTree->AppendItem(rootid, "Scully", 0);
 | 
				
			||||||
 | 
					        pTree->AppendItem(rootid, "Mulder", 0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pTree;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxChoice* MyFrame::CreateChoice( const wxString& txt )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxString choice_strings[5];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    choice_strings[0] = txt;
 | 
				
			||||||
 | 
					    choice_strings[1] = "Julian";
 | 
				
			||||||
 | 
					    choice_strings[2] = "Hattie";
 | 
				
			||||||
 | 
					    choice_strings[3] = "Ken";
 | 
				
			||||||
 | 
					    choice_strings[4] = "Dick";
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxChoice *choice = new wxChoice( mpInternalFrm, 301, wxDefaultPosition, 
 | 
				
			||||||
 | 
					                                        wxDefaultSize, 5, choice_strings);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    choice->SetSelection(0);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return choice;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    cbDimInfo sizes2( 275,38,   // when docked horizontally      
 | 
				
			||||||
 | 
					                      45,275,   // when docked vertically        
 | 
				
			||||||
 | 
					                      80,30,    // when floated                  
 | 
				
			||||||
 | 
					                      TRUE,     // the bar is fixed-size
 | 
				
			||||||
 | 
					                      4,        // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4,        // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                      new cbDynToolBarDimHandler()
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes3( 275,55,   // when docked horizontally      
 | 
				
			||||||
 | 
					                      275,60,   // when docked vertically        
 | 
				
			||||||
 | 
					                      45,130,   // when floated                  
 | 
				
			||||||
 | 
					                      TRUE,     // the bar is fixed-size
 | 
				
			||||||
 | 
					                      4,        // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4,        // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                      new cbDynToolBarDimHandler()
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes4( 430,35,   // when docked horizontally      
 | 
				
			||||||
 | 
					                      44,375,   // when docked vertically        
 | 
				
			||||||
 | 
					                      80,100,   // when floated                  
 | 
				
			||||||
 | 
					                      TRUE,     // the bar is fixed-size
 | 
				
			||||||
 | 
					                      4,        // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      4,        // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                      new cbDynToolBarDimHandler()
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxDynamicToolBar* pTBar2 = new wxDynamicToolBar( mpInternalFrm, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxChoice* pChoice = new wxChoice( pTBar2, -1, wxDefaultPosition, wxSize( 140,25 ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pTBar2->AddTool( 1, pChoice );
 | 
				
			||||||
 | 
					    pTBar2->AddTool( 2, BMP_DIR "search.bmp" );
 | 
				
			||||||
 | 
					    //pTBar2->AddSeparator();
 | 
				
			||||||
 | 
					    pTBar2->AddTool( 3, BMP_DIR "bookmarks.bmp" );
 | 
				
			||||||
 | 
					    pTBar2->AddTool( 4, BMP_DIR "nextmark.bmp" );
 | 
				
			||||||
 | 
					    pTBar2->AddTool( 5, BMP_DIR "prevmark.bmp" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxDynamicToolBar* pTBar3 = new wxDynamicToolBar( mpInternalFrm, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 1, BMP_DIR "open.bmp", wxBITMAP_TYPE_BMP, " Open " );
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 2, BMP_DIR "save.bmp", wxBITMAP_TYPE_BMP, " Save " );
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 3, BMP_DIR "saveall.bmp", wxBITMAP_TYPE_BMP, " Save All " );
 | 
				
			||||||
 | 
					    //pTBar3->AddSeparator();
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 4, BMP_DIR "cut.bmp",   wxBITMAP_TYPE_BMP, " Open " );
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 5, BMP_DIR "copy.bmp",  wxBITMAP_TYPE_BMP, " Copy " );
 | 
				
			||||||
 | 
					    pTBar3->AddTool( 6, BMP_DIR "paste.bmp", wxBITMAP_TYPE_BMP, " Paste " );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					#ifdef __WXMSW__
 | 
				
			||||||
 | 
					    pTBar3->EnableTool( 2, FALSE );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxDynamicToolBar* pTBar4 = new wxDynamicToolBar( mpInternalFrm, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pTBar4->AddTool( 1, BMP_DIR "bookmarks.bmp", wxBITMAP_TYPE_BMP, "Bookmarks ", TRUE );
 | 
				
			||||||
 | 
					    pTBar4->AddTool( 2, BMP_DIR "nextmark.bmp",  wxBITMAP_TYPE_BMP, "Next bookmark ", TRUE );
 | 
				
			||||||
 | 
					    pTBar4->AddTool( 3, BMP_DIR "prevmark.bmp",  wxBITMAP_TYPE_BMP, "Prev bookmark ", TRUE );
 | 
				
			||||||
 | 
					    //pTBar4->AddSeparator();
 | 
				
			||||||
 | 
					    pTBar4->AddTool( 4, BMP_DIR "search.bmp", wxBITMAP_TYPE_BMP, "Search ", TRUE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					#ifdef __WXMSW__
 | 
				
			||||||
 | 
					    pTBar4->EnableTool( 4, FALSE );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.AddBar( pTBar2,              
 | 
				
			||||||
 | 
					                   sizes2, FL_ALIGN_TOP,    
 | 
				
			||||||
 | 
					                   0,                
 | 
				
			||||||
 | 
					                   0,                
 | 
				
			||||||
 | 
					                   "Search",       
 | 
				
			||||||
 | 
					                   TRUE
 | 
				
			||||||
 | 
					                 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.AddBar( pTBar3,              
 | 
				
			||||||
 | 
					                   sizes3, FL_ALIGN_BOTTOM, 
 | 
				
			||||||
 | 
					                   0,                
 | 
				
			||||||
 | 
					                   0,                
 | 
				
			||||||
 | 
					                   "Titled",       
 | 
				
			||||||
 | 
					                   TRUE
 | 
				
			||||||
 | 
					                 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.AddBar( pTBar4,              
 | 
				
			||||||
 | 
					                   sizes4, FL_ALIGN_BOTTOM, 
 | 
				
			||||||
 | 
					                   1,                
 | 
				
			||||||
 | 
					                   0,                
 | 
				
			||||||
 | 
					                   "Bookmarks",       
 | 
				
			||||||
 | 
					                   TRUE
 | 
				
			||||||
 | 
					                 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWindow* MyFrame::CreateDevLayout( wxFrameLayout& layout, wxWindow* pParent )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    bool isNested = (pParent != mpInternalFrm);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // check if we're craeting nested layout
 | 
				
			||||||
 | 
					    if ( isNested )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        layout.mBorderPen.SetColour( 128,255,128 );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // if so, than make border smaller
 | 
				
			||||||
 | 
					        for( int i = 0; i != MAX_PANES; ++i  )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            cbDockPane& pane = *layout.GetPane( i );
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            pane.mTopMargin    = 5;
 | 
				
			||||||
 | 
					            pane.mBottomMargin = 5;
 | 
				
			||||||
 | 
					            pane.mLeftMargin   = 5;
 | 
				
			||||||
 | 
					            pane.mRightMargin  = 5;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int cbWidth  = 200;
 | 
				
			||||||
 | 
					    int cbHeight = ( isNested ) ? 50 : 150;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes4( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, FALSE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbWidth  = 75;
 | 
				
			||||||
 | 
					    cbHeight = 31;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes5( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      42,65,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, TRUE,
 | 
				
			||||||
 | 
					                      3,                       // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      3                        // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                    ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // create "workplace" window in the third layout
 | 
				
			||||||
 | 
					    // SEB: originally here was a wxpp (wxWorkshop) class demotrated
 | 
				
			||||||
 | 
					    //    wxTabbedWindow* pMiniTabArea = new wxTabbedWindow();
 | 
				
			||||||
 | 
					    //    pMiniTabArea->Create( pParent, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTreeCtrl* pClassView = new wxTreeCtrl( pParent, -1, 
 | 
				
			||||||
 | 
					                wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pClassView->SetImageList( &mImageList );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTreeItemId rootId = pClassView->AddRoot( "wxWindows 2.0 classes", 0 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pClassView->AppendItem( rootId, "wxWin Dynamic classes (grabbed at run-time)", 0 );
 | 
				
			||||||
 | 
					    pClassView->AppendItem( rootId, "serializer-classes (grabbed at run-time)",    0 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // now create "output" window
 | 
				
			||||||
 | 
					    wxNotebook*	pTabbedArea = new wxNotebook(pParent, -1);   
 | 
				
			||||||
 | 
					    // SEB: originally here was a wxpp (wxWorkshop) class used
 | 
				
			||||||
 | 
					    //    wxPaggedWindow* pTabbedArea = new wxPaggedWindow();
 | 
				
			||||||
 | 
					    //    pTabbedArea->Create( pParent, -1 );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxPanel* pSheet3 = new wxPanel();
 | 
				
			||||||
 | 
					    pSheet3->Create( pTabbedArea, -1 );
 | 
				
			||||||
 | 
					    pSheet3->Show(FALSE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pTabbedArea->AddPage( CreateTxtCtrl("build", pTabbedArea), "Build");
 | 
				
			||||||
 | 
					    pTabbedArea->AddPage( CreateTxtCtrl("debug", pTabbedArea), "Debug");
 | 
				
			||||||
 | 
					    pTabbedArea->AddPage( pSheet3, "is THIS recursive - or what !?");
 | 
				
			||||||
 | 
					    pTabbedArea->AddPage( CreateTxtCtrl("profile", pTabbedArea), "Profile");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    layout.AddBar( new StartButton95(pParent), sizes5, FL_ALIGN_TOP, 0, 0, "Start..." );
 | 
				
			||||||
 | 
					    layout.AddBar( pClassView, sizes4, FL_ALIGN_LEFT, 0, 0, "Project Workplace" );
 | 
				
			||||||
 | 
					    layout.AddBar( pTabbedArea, sizes4, FL_ALIGN_BOTTOM, 0, 50, "Output" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pSheet3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::DropInSomeBars( int layoutNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /* create once... and forget! */
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // setup dimension infos for various bar shapes
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int cbWidth  = 90;
 | 
				
			||||||
 | 
					    int cbHeight = 30;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( layoutNo == SECOND_LAYOUT ) 
 | 
				
			||||||
 | 
					        cbHeight = 60;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxFrameLayout& layout = *mLayouts[layoutNo];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes( cbWidth,cbHeight, // when docked horizontally
 | 
				
			||||||
 | 
					                     cbWidth,cbHeight, // when docked vertically
 | 
				
			||||||
 | 
					                     cbWidth,cbHeight, // when floated
 | 
				
			||||||
 | 
					                     TRUE              // true - bar is fixed-size
 | 
				
			||||||
 | 
					                   );  
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbWidth  = 120;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes1( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, FALSE ); // false - bar is "flexible"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cbWidth  = 120;
 | 
				
			||||||
 | 
					    cbHeight = 40;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes3( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, TRUE ); // -/-
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbWidth  = 200;
 | 
				
			||||||
 | 
					    cbHeight = 150;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes4( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, FALSE ); // -/-
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbWidth  = 63;
 | 
				
			||||||
 | 
					    cbHeight = 31;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes5( cbWidth,cbHeight,
 | 
				
			||||||
 | 
					                      cbHeight,cbWidth,
 | 
				
			||||||
 | 
					                      cbWidth,cbHeight, TRUE,
 | 
				
			||||||
 | 
					                      3,                        // vertical gap (bar border)
 | 
				
			||||||
 | 
					                      3                         // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                    ); // -/-
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( layoutNo == FIRST_LAYOUT )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // add 4 fixed-size bars (`sizes' dim-info) and one "flexible" (with `sizes1' dim-info)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        wxWindow* pGreenOne    = new MyTestPanel(mpInternalFrm);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        pGreenOne->SetBackgroundColour( wxColour(128,255,128) );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        layout.AddBar( pGreenOne,                      sizes,  FL_ALIGN_TOP,         0, 50, "Bar1", TRUE );
 | 
				
			||||||
 | 
					        layout.AddBar( new MyTestPanel(mpInternalFrm), sizes,  FL_ALIGN_TOP,         2, 50, "Bar2", TRUE );
 | 
				
			||||||
 | 
					        layout.AddBar( new MyTestPanel(mpInternalFrm), sizes,  FL_ALIGN_BOTTOM,      2, 50, "Bar3", TRUE );
 | 
				
			||||||
 | 
					        layout.AddBar( new MyTestPanel(mpInternalFrm), sizes,  FL_ALIGN_LEFT,        2, 50, "Bar4", TRUE );
 | 
				
			||||||
 | 
					        layout.AddBar( new MyTestPanel(mpInternalFrm), sizes1, wxCBAR_HIDDEN, 2, 50, "Super-Bar", TRUE );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( layoutNo == SECOND_LAYOUT )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // show off various wx-controls in the second layout
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTxtCtrl(),           sizes,  FL_ALIGN_TOP,    0, 50,  "Fixed text Area&0"     );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateButton("OK"),        sizes,  FL_ALIGN_TOP,    0, 100, "First Button"    );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTxtCtrl(),           sizes1, FL_ALIGN_BOTTOM, 0, 50,  "First Tree"  );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTreeCtrl("Root"),    sizes1, FL_ALIGN_LEFT,   0, 0,   "TreeCtrl Window" );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateChoice("Choice 1"),  sizes3, FL_ALIGN_TOP,    0, 0,   "Choice 1 (buggy)", FALSE, wxCBAR_HIDDEN );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateChoice("Choice 2"),  sizes3, FL_ALIGN_TOP,    0, 0,   "Choice 2 (buggy)", FALSE, wxCBAR_HIDDEN );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTreeCtrl("X-Files"), sizes1, FL_ALIGN_RIGHT,  0, 100, "X-Files" );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTxtCtrl("smaller1"), sizes3, FL_ALIGN_TOP,    0, 50,  "smaller Area1"     );
 | 
				
			||||||
 | 
					            layout.AddBar( CreateTxtCtrl("smaller2"), sizes3, FL_ALIGN_TOP,    0, 50,  "sm&ller Area2"     );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if ( layoutNo == THIRD_LAYOUT  )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					#ifdef __WXGTK__
 | 
				
			||||||
 | 
					                cbCommonPaneProperties props;
 | 
				
			||||||
 | 
					                layout.GetPaneProperties( props );
 | 
				
			||||||
 | 
					                props.mRealTimeUpdatesOn = FALSE; // real-time OFF for gtk!!!
 | 
				
			||||||
 | 
					                layout.SetPaneProperties( props, wxALL_PANES );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool1"), sizes3,  FL_ALIGN_TOP,  0, 50,  "Fixed text Area1" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool2"), sizes3,  FL_ALIGN_TOP,  0, 50,  "Fixed text Area2" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool3"), sizes3,  FL_ALIGN_TOP,  0, 50,  "Fixed text Area3" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool4"), sizes3,  FL_ALIGN_TOP,  1, 50,  "Fixed text Area4" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool5"), sizes3,  FL_ALIGN_TOP,  1, 50,  "Fixed text Area5" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool6"), sizes3,  FL_ALIGN_TOP,  1, 50,  "Fixed text Area6" );
 | 
				
			||||||
 | 
					                layout.AddBar( CreateTxtCtrl("Tool7"), sizes3,  FL_ALIGN_TOP,  2,250,  "Fixed text Area7" );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                cbDimInfo sizes10( 175,35, // when docked horizontally      
 | 
				
			||||||
 | 
					                                   175,38, // when docked vertically        
 | 
				
			||||||
 | 
					                                   170,35, // when floated                  
 | 
				
			||||||
 | 
					                                   TRUE,   // the bar is not fixed-size
 | 
				
			||||||
 | 
					                                   4,      // vertical gap (bar border)
 | 
				
			||||||
 | 
					                                   4,      // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                                   new cbDynToolBarDimHandler()
 | 
				
			||||||
 | 
					                                 ); 
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                wxDynamicToolBar* pToolBar = new wxDynamicToolBar();
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                pToolBar->Create( mpInternalFrm, -1 );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // 1001-1006 ids of command events fired by added tool-buttons
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1001, BMP_DIR "new.bmp" );
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1002, BMP_DIR "open.bmp" );
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1003, BMP_DIR "save.bmp" );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1004, BMP_DIR "cut.bmp" );
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1005, BMP_DIR "copy.bmp" );
 | 
				
			||||||
 | 
					                pToolBar->AddTool( 1006, BMP_DIR "paste.bmp" );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                layout.AddBar( pToolBar,              // bar window (can be NULL)
 | 
				
			||||||
 | 
					                               sizes10, FL_ALIGN_TOP, // alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                               0,                     // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                               0,                     // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                               "Real-Toolbar",        // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                               FALSE
 | 
				
			||||||
 | 
					                             );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // create first "developement" layout
 | 
				
			||||||
 | 
					                AddSearchToolbars( layout, mpInternalFrm);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                wxWindow* pSheet3 = CreateDevLayout( layout, mpInternalFrm);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // create another ***secreat developement*** layout inside
 | 
				
			||||||
 | 
					                // the third sheet of the outter one's output bar
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                mpNestedLayout = new wxFrameLayout( pSheet3, 
 | 
				
			||||||
 | 
					                    CreateTxtCtrl("\"Mobils in Mobile\" --C.Nemo",pSheet3), FALSE );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                CreateDevLayout( *mpNestedLayout, pSheet3 );
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                mpNestedLayout->Activate();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::CreateLayout( int layoutNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxFrameLayout* pLayout = new wxFrameLayout( mpInternalFrm, mpClntWindow, FALSE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( layoutNo == THIRD_LAYOUT )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pLayout->PushDefaultPlugins();
 | 
				
			||||||
 | 
					        pLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for bars
 | 
				
			||||||
 | 
					#ifdef __WXGTK__
 | 
				
			||||||
 | 
					        pLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					        pLayout->AddPlugin( CLASSINFO( cbRowDragPlugin ) ); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mLayouts[layoutNo] = pLayout;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DropInSomeBars( layoutNo );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::RemoveLayout( int layoutNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxFrameLayout* pLayout = mLayouts[layoutNo];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( !pLayout ) 
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pLayout->HideBarWindows();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // destroy nested layout first
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( layoutNo == THIRD_LAYOUT )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( mpNestedLayout ) 
 | 
				
			||||||
 | 
					            delete mpNestedLayout;
 | 
				
			||||||
 | 
					        mpNestedLayout = NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // NOTE:: bar windows are NOT destroyed automatically by frame-layout 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pLayout->DestroyBarWindows();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    delete pLayout;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mLayouts[layoutNo] = NULL;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Refresh();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::SyncMenuBarItems()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    for( int i = 0; i != MAX_LAYOUTS; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        GetMenuBar()->Check( ID_FIRST+i,  mActiveLayoutNo == FIRST_LAYOUT+i );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    GetMenuBar()->Check( ID_AUTOSAVE,  mAutoSave  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::ActivateLayout( int layoutNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if ( layoutNo == mActiveLayoutNo ) 
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( mLayouts[mActiveLayoutNo] )
 | 
				
			||||||
 | 
					        mLayouts[mActiveLayoutNo]->Deactivate();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mActiveLayoutNo = layoutNo;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( mLayouts[mActiveLayoutNo] ) 
 | 
				
			||||||
 | 
					        mLayouts[mActiveLayoutNo]->Activate();
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        Refresh();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SyncMenuBarItems();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class StartButton95 (just for fun) *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( StartButton95, wxPanel )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( StartButton95, wxPanel )
 | 
				
			||||||
 | 
					    EVT_LEFT_DOWN( StartButton95::OnMouseDown )
 | 
				
			||||||
 | 
					    EVT_LEFT_UP  ( StartButton95::OnMouseUp   )
 | 
				
			||||||
 | 
					    EVT_PAINT    ( StartButton95::OnPaint     )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void StartButton95::OnMouseDown( wxMouseEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_bPressed = TRUE;
 | 
				
			||||||
 | 
					    Refresh();
 | 
				
			||||||
 | 
					    CaptureMouse();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void StartButton95::OnMouseUp( wxMouseEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // "this is not a bug"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SetCursor( wxCURSOR_WAIT );
 | 
				
			||||||
 | 
					    GetParent()->SetCursor( wxCURSOR_WAIT );
 | 
				
			||||||
 | 
					    ::wxSetCursor( wxCURSOR_WAIT );    
 | 
				
			||||||
 | 
					    wxSleep(1);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int i = 0;
 | 
				
			||||||
 | 
					    for( i = 1; i != 6; ++i ) 
 | 
				
			||||||
 | 
					    { 
 | 
				
			||||||
 | 
					        m_bPressed = (i % 2) != 0;
 | 
				
			||||||
 | 
					        Refresh();
 | 
				
			||||||
 | 
					        wxSleep(1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    GetParent()->Close();
 | 
				
			||||||
 | 
					    //*((char*)(i)-3) = 'X'; // Aleks what's the meaning of this???
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void StartButton95::OnPaint( wxPaintEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxBitmap* pBmp = 0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( m_bPressed )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( !m_PBmp.Ok() && wxFileExists( BMP_DIR "start95_pr.bmp" ) )
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            m_PBmp.LoadFile( BMP_DIR "start95_pr.bmp", wxBITMAP_TYPE_BMP );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        pBmp = &m_PBmp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if ( !m_DBmp.Ok() && wxFileExists( BMP_DIR "start95_dp.bmp" ) )
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            m_DBmp.LoadFile( BMP_DIR "start95_dp.bmp", wxBITMAP_TYPE_BMP );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        pBmp = &m_DBmp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (!pBmp) return;
 | 
				
			||||||
 | 
					    wxMemoryDC mdc;
 | 
				
			||||||
 | 
					    wxPaintDC  dc(this);
 | 
				
			||||||
 | 
					    mdc.SelectObject( *pBmp );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    dc.Blit( 0,0, pBmp->GetWidth(), pBmp->GetHeight(), &mdc, 0,0, wxCOPY );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mdc.SelectObject( wxNullBitmap );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										160
									
								
								contrib/samples/fl/fl_demo2/fl_demo2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,160 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     04/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __FLDEMO_G__
 | 
				
			||||||
 | 
					#define __FLDEMO_G__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ID for the menu commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MINIMAL_QUIT 	1
 | 
				
			||||||
 | 
					#define MINIMAL_ABOUT 102
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_LOAD      103
 | 
				
			||||||
 | 
					#define ID_STORE     104
 | 
				
			||||||
 | 
					#define ID_AUTOSAVE  105
 | 
				
			||||||
 | 
					//#define ID_SETTINGS  106
 | 
				
			||||||
 | 
					#define ID_REMOVE    107
 | 
				
			||||||
 | 
					#define ID_REMOVEALL 108
 | 
				
			||||||
 | 
					#define ID_RECREATE  109
 | 
				
			||||||
 | 
					#define ID_ACTIVATE  110
 | 
				
			||||||
 | 
					#define ID_FIRST	 111
 | 
				
			||||||
 | 
					#define ID_SECOND    112
 | 
				
			||||||
 | 
					#define ID_THIRD     113
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_SAY_ITSOK 114
 | 
				
			||||||
 | 
					#define ID_BTN_YES   115
 | 
				
			||||||
 | 
					#define ID_BTN_NO    116
 | 
				
			||||||
 | 
					#define ID_BTN_ESC   117
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_LAYOUTS   3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FIRST_LAYOUT  0
 | 
				
			||||||
 | 
					#define SECOND_LAYOUT 1
 | 
				
			||||||
 | 
					#define THIRD_LAYOUT  2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrameLayout;
 | 
				
			||||||
 | 
					class wxObjectStorage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FOR NOW::
 | 
				
			||||||
 | 
					typedef wxPanel MyTestPanel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define a new application type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyApp: public wxApp
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define a new frame type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyFrame: public wxFrame
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxFrameLayout* mLayouts[MAX_LAYOUTS];
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxFrameLayout* mpNestedLayout;
 | 
				
			||||||
 | 
					    wxFrameLayout* mpAboutBoxLayout;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int            mActiveLayoutNo;   
 | 
				
			||||||
 | 
					    bool           mAutoSave;
 | 
				
			||||||
 | 
					    bool           mSavedAlready;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // container windows:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl*    mpClntWindow;
 | 
				
			||||||
 | 
					    wxPanel*       mpInternalFrm;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxImageList    mImageList;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxFrame       mAboutBox;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // helpers for control-creation
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl* CreateTxtCtrl ( const wxString& txt = "wxTextCtrl", wxWindow* parent = NULL  );
 | 
				
			||||||
 | 
					    wxTreeCtrl* CreateTreeCtrl( const wxString& label = "TreeCtrl" );
 | 
				
			||||||
 | 
					    wxChoice*   CreateChoice  ( const wxString& txt = "Choice1" );
 | 
				
			||||||
 | 
					    wxButton*   CreateButton  ( const wxString& label = "wxButton", wxWindow* pParent = NULL, long id = ID_SAY_ITSOK );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // helpers for layout-creation
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent );
 | 
				
			||||||
 | 
					    wxWindow* CreateDevLayout( wxFrameLayout& layout, wxWindow* pParent );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void DropInSomeBars( int layoutNo );
 | 
				
			||||||
 | 
					    void CreateLayout( int layoutNo );
 | 
				
			||||||
 | 
					    void RemoveLayout( int layoutNo );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void InitAboutBox();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void ActivateLayout( int layoutNo );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					public: /* public */
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MyFrame( wxFrame *frame, char *title, int x, int y, int w, int h);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ~MyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void SyncMenuBarItems();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // event handlers
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bool OnClose(void);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnLoad( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnStore( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnAutoSave( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnQuit(wxCommandEvent& event);
 | 
				
			||||||
 | 
					    void OnAbout(wxCommandEvent& event);
 | 
				
			||||||
 | 
					    //void OnSettings( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnRemove( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnRemoveAll( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnRecreate( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnFirst( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnSecond( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnThird( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnSayItsOk( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnBtnYes( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnBtnNo( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnBtnEsc( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnChar( wxKeyEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE()   
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define a new button type, StartButton95 (Just for fun)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class StartButton95 : public wxPanel
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    DECLARE_DYNAMIC_CLASS( StartButton95 )
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    bool m_bPressed;
 | 
				
			||||||
 | 
					    wxBitmap m_PBmp;
 | 
				
			||||||
 | 
					    wxBitmap m_DBmp;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    StartButton95(void) : m_bPressed(FALSE) {}
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    StartButton95(wxWindow* parent) 
 | 
				
			||||||
 | 
					        : m_bPressed(FALSE) { wxPanel::Create(parent,-1); }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnMouseDown( wxMouseEvent& event );
 | 
				
			||||||
 | 
					    void OnMouseUp( wxMouseEvent& event );
 | 
				
			||||||
 | 
					    void OnPaint( wxPaintEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								contrib/samples/fl/fl_demo2/fl_demo2.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					/* mondrian ICON "mondrian.ico" */
 | 
				
			||||||
 | 
					#include "wx/msw/wx.rc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/samples/fl/fl_demo2/makefile.b32
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample for 32-bit BC++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_demo2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS =-DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.b32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								contrib/samples/fl/fl_demo2/makefile.g95
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWorkshop for mingw & cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ../../../..
 | 
				
			||||||
 | 
					TARGET = fl_demo2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					EXTRALIBS     = $(WXDIR)/lib/libfl.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(WXDIR)/src/makeprog.g95
 | 
				
			||||||
							
								
								
									
										24
									
								
								contrib/samples/fl/fl_demo2/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds fl sample (VC++, WIN32)
 | 
				
			||||||
 | 
					# Use FINAL=1 argument to nmake to build final version with no debug info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_demo2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRAINC = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.vc
 | 
				
			||||||
							
								
								
									
										25
									
								
								contrib/samples/fl/fl_sample1/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# "%W% %G%"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample on UNIX/Linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET = fl_sample1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					program_dir = contrib/samples/fl/$(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makeprog.env
 | 
				
			||||||
							
								
								
									
										108
									
								
								contrib/samples/fl/fl_sample1/fl_demo.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="fl_sample1" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Application" 0x0101
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=fl_sample1 - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample1 - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample1 - Win32 Release" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample1 - Win32 Debug" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					MTL=midl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample1 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib png.lib zlib.lib jpeg.lib tiff.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample1 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "fl_sample1 - Win32 Release"
 | 
				
			||||||
 | 
					# Name "fl_sample1 - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample1.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample1 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample1 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ADD CPP /Yc"wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample1.rc
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/samples/fl/fl_sample1/fl_demo.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "fl_sample1"=.\fl_demo.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										196
									
								
								contrib/samples/fl/fl_sample1/fl_sample1.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,196 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        fl_sample1.cpp
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     24/11/98     
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/textctrl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fl headers
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// plugins used
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_LOAD  102
 | 
				
			||||||
 | 
					#define ID_STORE 103
 | 
				
			||||||
 | 
					#define ID_QUIT  104
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyApp: public wxApp
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyFrame: public wxFrame
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxFrameLayout* mpLayout;
 | 
				
			||||||
 | 
					    wxWindow*      mpClientWnd;
 | 
				
			||||||
 | 
					    wxPanel*       mpInternalFrm;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl* CreateTextCtrl( const wxString& value );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    MyFrame( wxWindow* parent, char *title );
 | 
				
			||||||
 | 
					    ~MyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnLoad( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnStore( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnQuit( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bool OnClose(void) { return TRUE; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyApp *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_APP    (MyApp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MyApp::OnInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // wxWindows boiler-plate:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MyFrame *frame = new MyFrame(NULL, "wxFrameLayout sample");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenu *file_menu = new wxMenu;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_LOAD,  "&Load layout"  );
 | 
				
			||||||
 | 
					    file_menu->Append( ID_STORE, "&Store layout"  );
 | 
				
			||||||
 | 
					    file_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_QUIT, "E&xit" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenuBar *menu_bar = new wxMenuBar;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    menu_bar->Append(file_menu, "&File");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->CreateStatusBar(3);
 | 
				
			||||||
 | 
					    frame->SetMenuBar(menu_bar);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->Show(TRUE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    SetTopWindow(frame);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Immlementation for class MyFrame *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 | 
				
			||||||
 | 
					    EVT_MENU( ID_LOAD,  MyFrame::OnLoad  )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_STORE, MyFrame::OnStore )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_QUIT,  MyFrame::OnQuit  )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::MyFrame( wxWindow* parent, char *title )
 | 
				
			||||||
 | 
					    : wxFrame( parent, -1, "NewTest-II", wxDefaultPosition,
 | 
				
			||||||
 | 
					          wxSize( 700, 500 ),
 | 
				
			||||||
 | 
					          wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX |
 | 
				
			||||||
 | 
					          wxTHICK_FRAME   | wxSYSTEM_MENU  | wxCAPTION,
 | 
				
			||||||
 | 
					          "freimas" )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mpInternalFrm = (wxPanel*)this;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpClientWnd = CreateTextCtrl( "Client window" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // btw, creation of internal frame is needed for wxGtk version
 | 
				
			||||||
 | 
					    // to act correctly (since menu-bar is a separate window there..)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout = new wxFrameLayout( mpInternalFrm, mpClientWnd );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					#ifdef __WXGTK__
 | 
				
			||||||
 | 
					    // real-time dosn't work well under wxGtk yet
 | 
				
			||||||
 | 
					    cbCommonPaneProperties props;
 | 
				
			||||||
 | 
					    mpLayout->GetPaneProperties( props );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    props.mRealTimeUpdatesOn = FALSE; // off
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->SetPaneProperties( props, wxALL_PANES );    
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout->PushDefaultPlugins();
 | 
				
			||||||
 | 
					    mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso
 | 
				
			||||||
 | 
					    //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes( 80,65, // when docked horizontally      
 | 
				
			||||||
 | 
					                     80,65, // when docked vertically        
 | 
				
			||||||
 | 
					                     80,30, // when floated                  
 | 
				
			||||||
 | 
					                     TRUE,  // the bar is fixed-size
 | 
				
			||||||
 | 
					                     5,     // vertical gap (bar border)
 | 
				
			||||||
 | 
					                     5      // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                   ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // drop-in 20 bars
 | 
				
			||||||
 | 
					    for( int i = 1; i <= 20; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        char buf[4];
 | 
				
			||||||
 | 
					        sprintf( buf, "%d", i );
 | 
				
			||||||
 | 
					        wxString name = wxString("Bar-");
 | 
				
			||||||
 | 
					        name += buf;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        sizes.mIsFixed = i % 5 > 0; // every fifth bar is not fixed-size
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if ( !sizes.mIsFixed ) name += " (flexible)";
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        mpLayout->AddBar( CreateTextCtrl(name),// bar window
 | 
				
			||||||
 | 
					                          sizes, i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                          0,                   // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                          0,                   // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                          name                 // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::~MyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // layout is not a window, should be released manually
 | 
				
			||||||
 | 
					    if ( mpLayout ) 
 | 
				
			||||||
 | 
					        delete mpLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTextCtrl* pCtrl = new wxTextCtrl( mpInternalFrm, -1, value, 
 | 
				
			||||||
 | 
					                                wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pCtrl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnLoad( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found a BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnStore( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found another BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnQuit( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Close(TRUE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								contrib/samples/fl/fl_sample1/fl_sample1.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					/* mondrian ICON "mondrian.ico" */
 | 
				
			||||||
 | 
					#include "wx/msw/wx.rc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/samples/fl/fl_sample1/makefile.b32
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample for 32-bit BC++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS =-DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.b32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								contrib/samples/fl/fl_sample1/makefile.g95
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWorkshop for mingw & cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ../../../..
 | 
				
			||||||
 | 
					TARGET = fl_sample1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					EXTRALIBS     = $(WXDIR)/lib/libfl.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(WXDIR)/src/makeprog.g95
 | 
				
			||||||
							
								
								
									
										24
									
								
								contrib/samples/fl/fl_sample1/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds fl sample (VC++, WIN32)
 | 
				
			||||||
 | 
					# Use FINAL=1 argument to nmake to build final version with no debug info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRAINC = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.vc
 | 
				
			||||||
							
								
								
									
										25
									
								
								contrib/samples/fl/fl_sample2/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# "%W% %G%"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample on UNIX/Linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET = fl_sample2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					program_dir = contrib/samples/fl/$(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makeprog.env
 | 
				
			||||||
							
								
								
									
										108
									
								
								contrib/samples/fl/fl_sample2/fl_demo.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="fl_sample2" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Application" 0x0101
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=fl_sample2 - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample2 - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample2 - Win32 Release" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample2 - Win32 Debug" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					MTL=midl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample2 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib png.lib zlib.lib jpeg.lib tiff.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample2 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "fl_sample2 - Win32 Release"
 | 
				
			||||||
 | 
					# Name "fl_sample2 - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample2.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample2 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample2 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ADD CPP /Yc"wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample2.rc
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/samples/fl/fl_sample2/fl_demo.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "fl_sample2"=.\fl_demo.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										194
									
								
								contrib/samples/fl/fl_sample2/fl_sample2.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,194 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        fl_sample2.cpp
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     24/11/98     
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/textctrl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fl headers
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// plugins used
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_LOAD  102
 | 
				
			||||||
 | 
					#define ID_STORE 103
 | 
				
			||||||
 | 
					#define ID_QUIT  104
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyApp: public wxApp
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyFrame: public wxFrame
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxFrameLayout* mpLayout;
 | 
				
			||||||
 | 
					    wxWindow*      mpClientWnd;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl* CreateTextCtrl( const wxString& value );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    MyFrame( wxWindow* parent, char *title );
 | 
				
			||||||
 | 
					    ~MyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void populateMyFrame();
 | 
				
			||||||
 | 
					    void OnLoad( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnStore( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnQuit( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bool OnClose(void) { return TRUE; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyApp *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_APP    (MyApp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MyApp::OnInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // wxWindows boiler-plate:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MyFrame *frame = new MyFrame(NULL, "wxFrameLayout sample");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenu *file_menu = new wxMenu;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_LOAD,  "&Load layout"  );
 | 
				
			||||||
 | 
					    file_menu->Append( ID_STORE, "&Store layout"  );
 | 
				
			||||||
 | 
					    file_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_QUIT, "E&xit" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenuBar *menu_bar = new wxMenuBar;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    menu_bar->Append(file_menu, "&File");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->CreateStatusBar(3);
 | 
				
			||||||
 | 
					    frame->SetMenuBar(menu_bar);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->Show(TRUE);
 | 
				
			||||||
 | 
					    SetTopWindow(frame);
 | 
				
			||||||
 | 
					    frame->populateMyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Immlementation for class MyFrame *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 | 
				
			||||||
 | 
					    EVT_MENU( ID_LOAD,  MyFrame::OnLoad  )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_STORE, MyFrame::OnStore )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_QUIT,  MyFrame::OnQuit  )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::MyFrame( wxWindow* parent, char *title )
 | 
				
			||||||
 | 
					    : wxFrame( parent, -1, "NewTest-II", wxDefaultPosition,
 | 
				
			||||||
 | 
					          wxSize( 700, 500 ),
 | 
				
			||||||
 | 
					          wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX |
 | 
				
			||||||
 | 
					          wxTHICK_FRAME   | wxSYSTEM_MENU  | wxCAPTION,
 | 
				
			||||||
 | 
					          "freimas" )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::populateMyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mpClientWnd = CreateTextCtrl( "Client window" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpLayout = new wxFrameLayout( this, mpClientWnd );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    ///  mpLayout->PushDefaultPlugins();
 | 
				
			||||||
 | 
					    ///  mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso
 | 
				
			||||||
 | 
					    ///  //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    cbDimInfo sizes( 80,65,     // when docked horizontally      
 | 
				
			||||||
 | 
					                     80,165,    // when docked vertically        
 | 
				
			||||||
 | 
					                     180,30,    // when floated                  
 | 
				
			||||||
 | 
					                     TRUE,      // the bar is fixed-size
 | 
				
			||||||
 | 
					                     5,         // vertical gap (bar border)
 | 
				
			||||||
 | 
					                     5          // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                   ); 
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    // drop-in 20 bars    
 | 
				
			||||||
 | 
					    for( int i = 1; i <= 10; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        wxSleep(1);
 | 
				
			||||||
 | 
					        wxYield(); // CHECK!
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        char buf[4];
 | 
				
			||||||
 | 
					        sprintf( buf, "%d", i );
 | 
				
			||||||
 | 
					        wxString name = wxString("Bar-");
 | 
				
			||||||
 | 
					        name += buf;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        //sizes.mIsFixed = i % 2 > 0; // every fifth bar is not fixed-size
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if ( !sizes.mIsFixed ) name += " (flexible)";
 | 
				
			||||||
 | 
					        //      mpLayout->AddBar( CreateTextCtrl(name),// bar window
 | 
				
			||||||
 | 
					        mpLayout->AddBar( new wxTextCtrl(this, -1, name),// bar window
 | 
				
			||||||
 | 
					                          sizes, i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                          0,                   // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                          0,                   // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                          name                 // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        // Layout();
 | 
				
			||||||
 | 
					        // Refresh();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::~MyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // layout is not a window, should be released manually
 | 
				
			||||||
 | 
					    if ( mpLayout ) 
 | 
				
			||||||
 | 
					        delete mpLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTextCtrl* pCtrl = new wxTextCtrl( this, -1, value, 
 | 
				
			||||||
 | 
					                                wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pCtrl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnLoad( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found a BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnStore( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found another BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnQuit( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Close(TRUE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								contrib/samples/fl/fl_sample2/fl_sample2.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					/* mondrian ICON "mondrian.ico" */
 | 
				
			||||||
 | 
					#include "wx/msw/wx.rc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/samples/fl/fl_sample2/makefile.b32
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample for 32-bit BC++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS =-DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.b32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								contrib/samples/fl/fl_sample2/makefile.g95
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWorkshop for mingw & cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ../../../..
 | 
				
			||||||
 | 
					TARGET = fl_sample2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					EXTRALIBS     = $(WXDIR)/lib/libfl.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(WXDIR)/src/makeprog.g95
 | 
				
			||||||
							
								
								
									
										24
									
								
								contrib/samples/fl/fl_sample2/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds fl sample (VC++, WIN32)
 | 
				
			||||||
 | 
					# Use FINAL=1 argument to nmake to build final version with no debug info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRAINC = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.vc
 | 
				
			||||||
							
								
								
									
										25
									
								
								contrib/samples/fl/fl_sample3/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# "%W% %G%"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample on UNIX/Linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../../..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET = fl_sample3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					program_dir = contrib/samples/fl/$(TARGET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					APPEXTRALIBS = $(top_builddir)/lib/libfl.@WX_TARGET_LIBRARY_TYPE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makeprog.env
 | 
				
			||||||
							
								
								
									
										108
									
								
								contrib/samples/fl/fl_sample3/fl_demo.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="fl_sample3" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Application" 0x0101
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=fl_sample3 - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "fl_demo.mak" CFG="fl_sample3 - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample3 - Win32 Release" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE "fl_sample3 - Win32 Debug" (based on "Win32 (x86) Application")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					MTL=midl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample3 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../../include" /I "../../../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "NDEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib png.lib zlib.lib jpeg.lib tiff.lib fl.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample3 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Ignore_Export_Lib 0
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../contrib/include" /D "_DEBUG" /D DEBUG=1 /D "__WXDEBUG__" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /D BMP_DIR=\"../bitmaps/\" /c
 | 
				
			||||||
 | 
					# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809 /d "_DEBUG"
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LINK32=link.exe
 | 
				
			||||||
 | 
					# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
 | 
				
			||||||
 | 
					# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib fld.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "fl_sample3 - Win32 Release"
 | 
				
			||||||
 | 
					# Name "fl_sample3 - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample3.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "fl_sample3 - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "fl_sample3 - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ADD CPP /Yc"wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\fl_sample3.rc
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/samples/fl/fl_sample3/fl_demo.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "fl_sample3"=.\fl_demo.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										337
									
								
								contrib/samples/fl/fl_sample3/fl_sample3.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,337 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        fl_sample3.cpp
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by: Sebastian Haase (June 21, 2001)
 | 
				
			||||||
 | 
					// Created:     24/11/98     
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/textctrl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fl headers
 | 
				
			||||||
 | 
					#include "wx/fl/controlbar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// plugins used
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_LOAD  102
 | 
				
			||||||
 | 
					#define ID_STORE 103
 | 
				
			||||||
 | 
					#define ID_QUIT  104
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ID_BUTT 145
 | 
				
			||||||
 | 
					#define ID_BUTT2 146
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyApp: public wxApp
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MyFrame: public wxFrame
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxFrameLayout* mpLayout;
 | 
				
			||||||
 | 
					    wxWindow*      mpClientWnd;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxButton * my_butt;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxTextCtrl* CreateTextCtrl( const wxString& value );
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    MyFrame( wxWindow* parent, char *title );
 | 
				
			||||||
 | 
					    ~MyFrame();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnLoad( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnStore( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnQuit( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void OnButt( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    void OnButt2( wxCommandEvent& event );
 | 
				
			||||||
 | 
					    bool OnClose(void) { return TRUE; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class MyApp *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_APP    (MyApp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MyApp::OnInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // wxWindows boiler-plate:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    MyFrame *frame = new MyFrame(NULL, "wxFrameLayout sample");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenu *file_menu = new wxMenu;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_LOAD,  "&Load layout"  );
 | 
				
			||||||
 | 
					    file_menu->Append( ID_STORE, "&Store layout"  );
 | 
				
			||||||
 | 
					    file_menu->AppendSeparator();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    file_menu->Append( ID_QUIT, "E&xit" );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    wxMenuBar *menu_bar = new wxMenuBar;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    menu_bar->Append(file_menu, "&File");
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->CreateStatusBar(3);
 | 
				
			||||||
 | 
					    frame->SetMenuBar(menu_bar);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    frame->Show(TRUE);
 | 
				
			||||||
 | 
					    SetTopWindow(frame);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Immlementation for class MyFrame *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 | 
				
			||||||
 | 
					    EVT_MENU( ID_LOAD,  MyFrame::OnLoad  )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_STORE, MyFrame::OnStore )
 | 
				
			||||||
 | 
					    EVT_MENU( ID_QUIT,  MyFrame::OnQuit  )
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_BUTT, MyFrame::OnButt )
 | 
				
			||||||
 | 
					    EVT_BUTTON( ID_BUTT2, MyFrame::OnButt2 )
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::MyFrame( wxWindow* parent, char *title )
 | 
				
			||||||
 | 
					    : wxFrame( parent, -1, "NewTest-II", wxDefaultPosition,
 | 
				
			||||||
 | 
					          wxSize( 700, 500 ),
 | 
				
			||||||
 | 
					          wxCLIP_CHILDREN | wxMINIMIZE_BOX | wxMAXIMIZE_BOX |
 | 
				
			||||||
 | 
					          wxTHICK_FRAME   | wxSYSTEM_MENU  | wxCAPTION,
 | 
				
			||||||
 | 
					          "freimas" )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    mpClientWnd = new wxWindow(this, -1);    
 | 
				
			||||||
 | 
					    mpLayout = new wxFrameLayout( this, mpClientWnd );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ///  mpLayout->PushDefaultPlugins();
 | 
				
			||||||
 | 
					    ///  mpLayout->AddPlugin( CLASSINFO( cbBarHintsPlugin ) ); // facny "X"es and beveal for barso
 | 
				
			||||||
 | 
					    ///  //mpLayout->AddPlugin( CLASSINFO( cbHintAnimationPlugin ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cbDimInfo sizes( 80,65,     // when docked horizontally      
 | 
				
			||||||
 | 
					                     80,165,    // when docked vertically        
 | 
				
			||||||
 | 
					                     180,30,    // when floated                  
 | 
				
			||||||
 | 
					                     TRUE,      // the bar is fixed-size
 | 
				
			||||||
 | 
					                     5,         // vertical gap (bar border)
 | 
				
			||||||
 | 
					                     5          // horizontal gap (bar border)
 | 
				
			||||||
 | 
					                   ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // drop-in some bars
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    for( int i = 1; i <= 11; ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        char buf[4];
 | 
				
			||||||
 | 
					        sprintf( buf, "%d", i );
 | 
				
			||||||
 | 
					        wxString name = wxString("Bar-");
 | 
				
			||||||
 | 
					        name += buf;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        sizes.mIsFixed = (i !=3); // every fifth bar is not fixed-size
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if ( !sizes.mIsFixed ) name += " (flexible)";
 | 
				
			||||||
 | 
					        //      mpLayout->AddBar( CreateTextCtrl(name),// bar window
 | 
				
			||||||
 | 
					        if(i != 4 && i!= 5 && i!=11) {
 | 
				
			||||||
 | 
					            mpLayout->AddBar( new wxTextCtrl(this, -1, name),// bar window
 | 
				
			||||||
 | 
					                              sizes, 
 | 
				
			||||||
 | 
					                              i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                              0,            // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                              0,            // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                              name          // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					        } else if(i==4){
 | 
				
			||||||
 | 
					            mpLayout->AddBar( new wxTextCtrl(this, -1, name),// bar window
 | 
				
			||||||
 | 
					                              cbDimInfo( 100,100, 100,100, 100,100, TRUE, 5, 5), 
 | 
				
			||||||
 | 
					                              i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                              0,            // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                              0,            // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                              name          // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					        } else if(i==5) {
 | 
				
			||||||
 | 
					            my_butt = new wxButton(this, ID_BUTT, name);
 | 
				
			||||||
 | 
					            mpLayout->AddBar( my_butt,// bar window
 | 
				
			||||||
 | 
					                              cbDimInfo( 100,100, 200,200, 400,400, TRUE, 5, 5), 
 | 
				
			||||||
 | 
					                              i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                              0,            // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                              0,            // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                              name          // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					        } else if(i==11) {
 | 
				
			||||||
 | 
					            mpLayout->AddBar( new wxButton(this, ID_BUTT2, name+"_2"),
 | 
				
			||||||
 | 
					                              cbDimInfo( 100,100, 200,200, 400,400, TRUE, 5, 5), 
 | 
				
			||||||
 | 
					                              i % MAX_PANES,// alignment ( 0-top,1-bottom, etc)
 | 
				
			||||||
 | 
					                              0,            // insert into 0th row (vert. position)
 | 
				
			||||||
 | 
					                              0,            // offset from the start of row (in pixels)
 | 
				
			||||||
 | 
					                              name          // name to refere in customization pop-ups
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        //      mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					        //        Layout();
 | 
				
			||||||
 | 
					        //        Refresh();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MyFrame::~MyFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // layout is not a window, should be released manually
 | 
				
			||||||
 | 
					    if ( mpLayout ) 
 | 
				
			||||||
 | 
					        delete mpLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxTextCtrl* MyFrame::CreateTextCtrl( const wxString& value )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxTextCtrl* pCtrl = new wxTextCtrl( this, -1, value, 
 | 
				
			||||||
 | 
					                                wxPoint(0,0), wxSize(1,1), wxTE_MULTILINE );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pCtrl->SetBackgroundColour( wxColour( 255,255,255 ) );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return pCtrl;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnLoad( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found a BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnStore( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxMessageBox("Hey - you found another BIG question-mark !!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnQuit( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Show( FALSE ); // TRICK:: hide it, to avoid flickered destruction
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    Close(TRUE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnButt( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    static int i =0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // cbBarInfo* FindBarByName( const wxString& name ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    switch(i % 2) {
 | 
				
			||||||
 | 
					    case 0: 
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            cbBarInfo* x = mpLayout->FindBarByName(wxString("Bar-1"));
 | 
				
			||||||
 | 
					            if(x) 
 | 
				
			||||||
 | 
					                mpLayout->InverseVisibility(x); 
 | 
				
			||||||
 | 
					            else    
 | 
				
			||||||
 | 
					                wxBell();
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    case 1:
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            cbBarInfo* x = mpLayout->FindBarByName(wxString("Bar-6"));
 | 
				
			||||||
 | 
					            if(x) 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if(i % 4 == 1) 
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    mpLayout->SetBarState(x, wxCBAR_FLOATING, TRUE);
 | 
				
			||||||
 | 
					                    //mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					                    mpLayout->RepositionFloatedBar(x);
 | 
				
			||||||
 | 
					                } 
 | 
				
			||||||
 | 
					                else 
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    mpLayout->SetBarState(x, 0, TRUE);
 | 
				
			||||||
 | 
					                    //mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					                    //mpLayout->RepositionFloatedBar(x);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                //  //  //  		x->mState = wxCBAR_FLOATING;
 | 
				
			||||||
 | 
					                //  //  //  		mpLayout->ApplyBarProperties(x);
 | 
				
			||||||
 | 
					            } 
 | 
				
			||||||
 | 
					            else 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                wxBell();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    i++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MyFrame::OnButt2( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    static int i =0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // cbBarInfo* FindBarByName( const wxString& name ); 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    switch(i % 2) {
 | 
				
			||||||
 | 
					    case 0: 
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            cbBarInfo* x = mpLayout->FindBarByName(wxString("Bar-1"));
 | 
				
			||||||
 | 
					            if(x) 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                for(int a=0;a<MAX_BAR_STATES;a++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    x->mDimInfo.mSizes[a].x = 200;
 | 
				
			||||||
 | 
					                    x->mDimInfo.mSizes[a].y = 200;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                x->mpBarWnd->SetSize(200,200);
 | 
				
			||||||
 | 
					                mpLayout->SetBarState(x, wxCBAR_FLOATING, TRUE);  // HACK !!!
 | 
				
			||||||
 | 
					                mpLayout->SetBarState(x, 0, TRUE);	              // HACK !!!
 | 
				
			||||||
 | 
					                wxYield();                                        // HACK !!! needed to resize BEFORE redraw 
 | 
				
			||||||
 | 
					                mpLayout->RefreshNow( TRUE );                     // HACK !!! needed to trigger redraw
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else    
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                wxBell();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    case 1:
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            cbBarInfo* x = mpLayout->FindBarByName(wxString("Bar-1"));
 | 
				
			||||||
 | 
					            if(x) 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //mpLayout->InverseVisibility(x); 
 | 
				
			||||||
 | 
					                for(int a=0;a<MAX_BAR_STATES;a++)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // see cbPaneDrawPlugin::OnSizeBarWindow( cbSizeBarWndEvent& event ) 
 | 
				
			||||||
 | 
					                    x->mDimInfo.mSizes[a].x = 10 + 2 + 2*x->mDimInfo.mHorizGap;
 | 
				
			||||||
 | 
					                    x->mDimInfo.mSizes[a].y = 10 + 2 + 2*x->mDimInfo.mVertGap;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                x->mpBarWnd->SetSize(10,10);
 | 
				
			||||||
 | 
					                mpLayout->SetBarState(x, wxCBAR_FLOATING, TRUE);  // HACK !!!
 | 
				
			||||||
 | 
					                mpLayout->SetBarState(x, 0, TRUE);	              // HACK !!!
 | 
				
			||||||
 | 
					                wxYield();                                        // HACK !!! needed to resize BEFORE redraw 
 | 
				
			||||||
 | 
					                mpLayout->RefreshNow( TRUE );                     // HACK !!! needed to trigger redraw
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                //  //  		mpLayout->SetBarState(x, wxCBAR_FLOATING, TRUE);
 | 
				
			||||||
 | 
					                //  //  		mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					                //  //  		//		mpLayout->RepositionFloatedBar(x);
 | 
				
			||||||
 | 
					                //  //  		mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					                //  //  		mpLayout->RepositionFloatedBar(x);
 | 
				
			||||||
 | 
					                //  //  		  mpLayout->SetBarState(x, 0, TRUE);	
 | 
				
			||||||
 | 
					                //  //  		  wxYield();
 | 
				
			||||||
 | 
					                //  //  		  mpLayout->RefreshNow( TRUE );
 | 
				
			||||||
 | 
					                //  //  		  mpLayout->RecalcLayout(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else    
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                wxBell();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    i++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								contrib/samples/fl/fl_sample3/fl_sample3.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					/* mondrian ICON "mondrian.ico" */
 | 
				
			||||||
 | 
					#include "wx/msw/wx.rc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								contrib/samples/fl/fl_sample3/makefile.b32
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds sample for 32-bit BC++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS =-DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WSLIBDIR)\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.b32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								contrib/samples/fl/fl_sample3/makefile.g95
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWorkshop for mingw & cygwin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ../../../..
 | 
				
			||||||
 | 
					TARGET = fl_sample3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRACPPFLAGS = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					EXTRALIBS     = $(WXDIR)/lib/libfl.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(WXDIR)/src/makeprog.g95
 | 
				
			||||||
							
								
								
									
										24
									
								
								contrib/samples/fl/fl_sample3/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile : Builds fl sample (VC++, WIN32)
 | 
				
			||||||
 | 
					# Use FINAL=1 argument to nmake to build final version with no debug info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WXDIR = ..\..\..\..
 | 
				
			||||||
 | 
					TARGET = fl_sample3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTRAINC = -DBMP_DIR=\"../bitmaps/\"
 | 
				
			||||||
 | 
					!if "$(FINAL)" == "1"
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fl.lib
 | 
				
			||||||
 | 
					!else
 | 
				
			||||||
 | 
					EXTRALIBS = $(WXDIR)\lib\fld.lib
 | 
				
			||||||
 | 
					!endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROGRAM = $(TARGET)
 | 
				
			||||||
 | 
					OBJECTS = $(TARGET).obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!include $(WXDIR)\src\makeprog.vc
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
# $Id$
 | 
					# $Id$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONTRIB_SUBDIRS=ogl mmedia stc xrc applet plot canvas animate
 | 
					CONTRIB_SUBDIRS=ogl mmedia stc xrc applet plot canvas animate fl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all:
 | 
					all:
 | 
				
			||||||
	@for d in $(CONTRIB_SUBDIRS); do (cd $$d && $(MAKE)); done
 | 
						@for d in $(CONTRIB_SUBDIRS); do (cd $$d && $(MAKE)); done
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								contrib/src/fl/Makefile.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# File:         Makefile
 | 
				
			||||||
 | 
					# Author:       Hans Van Leemputten
 | 
				
			||||||
 | 
					# Created:      2001
 | 
				
			||||||
 | 
					# Updated:
 | 
				
			||||||
 | 
					# Copyright:    (c) wxWorkshop team, 2001
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Makefile for wxWindows FrameLayout library (Linux/wxGTK).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					top_srcdir = @top_srcdir@/..
 | 
				
			||||||
 | 
					top_builddir = ../../..
 | 
				
			||||||
 | 
					libsrc_dir = contrib/src/fl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET_LIBNAME = libfl
 | 
				
			||||||
 | 
					OBJ_EXT	= o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Version Info.
 | 
				
			||||||
 | 
					LIBVERSION_CURRENT=1
 | 
				
			||||||
 | 
					LIBVERSION_REVISION=0
 | 
				
			||||||
 | 
					LIBVERSION_AGE=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include ./files.lst
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OBJECTS = $(FL_OBJECTS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPEXTRADEFS = -I$(top_srcdir)/contrib/include
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(top_builddir)/src/makelib.env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										236
									
								
								contrib/src/fl/antiflickpl.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,236 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas (@Lithuania)
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "antiflickpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/antiflickpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbAntiflickerPlugin *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbAntiflickerPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbAntiflickerPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_PL_START_DRAW_IN_AREA  ( cbAntiflickerPlugin::OnStartDrawInArea  )
 | 
				
			||||||
 | 
						EVT_PL_FINISH_DRAW_IN_AREA ( cbAntiflickerPlugin::OnFinishDrawInArea )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// initialization of static members
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cbAntiflickerPlugin::mRefCount    = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxBitmap*   cbAntiflickerPlugin::mpVertBuf    = 0;
 | 
				
			||||||
 | 
					wxBitmap*   cbAntiflickerPlugin::mpHorizBuf   = 0;
 | 
				
			||||||
 | 
					wxMemoryDC* cbAntiflickerPlugin::mpVertBufDc  = 0;
 | 
				
			||||||
 | 
					wxMemoryDC* cbAntiflickerPlugin::mpHorizBufDc = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// constructors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbAntiflickerPlugin::cbAntiflickerPlugin(void)
 | 
				
			||||||
 | 
						: mpLRUBufDc  ( NULL ),
 | 
				
			||||||
 | 
						  mLRUArea    ( -1,-1, -1,-1 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						++mRefCount;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbAntiflickerPlugin::cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: cbPluginBase( pPanel, paneMask ),
 | 
				
			||||||
 | 
						  mpLRUBufDc  ( NULL ),
 | 
				
			||||||
 | 
						  mLRUArea    ( -1,-1, -1,-1 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						++mRefCount;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbAntiflickerPlugin::~cbAntiflickerPlugin()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( --mRefCount == 0 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpHorizBuf )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								mpHorizBufDc->SelectObject( wxNullBitmap );
 | 
				
			||||||
 | 
								delete mpHorizBuf;
 | 
				
			||||||
 | 
								delete mpHorizBufDc;
 | 
				
			||||||
 | 
								mpHorizBuf   = 0;
 | 
				
			||||||
 | 
								mpHorizBufDc = 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpVertBuf ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								mpVertBufDc->SelectObject( wxNullBitmap );
 | 
				
			||||||
 | 
								delete mpVertBuf; 
 | 
				
			||||||
 | 
								delete mpVertBufDc;
 | 
				
			||||||
 | 
								mpVertBuf   = 0;
 | 
				
			||||||
 | 
								mpVertBufDc = 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDC* cbAntiflickerPlugin::FindSuitableBuffer( const wxRect& forArea )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpVertBuf )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpVertBuf->GetHeight() >= forArea.height &&
 | 
				
			||||||
 | 
								 mpVertBuf->GetWidth()  >= forArea.width )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								 return mpVertBufDc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( mpHorizBuf )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpHorizBuf->GetHeight() >= forArea.height &&
 | 
				
			||||||
 | 
								 mpHorizBuf->GetWidth()  >= forArea.width )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								 return mpHorizBufDc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDC* cbAntiflickerPlugin::AllocNewBuffer( const wxRect& forArea )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// TBD:: preallocate bit larger bitmap at once, to avoid
 | 
				
			||||||
 | 
						//       excessive realocations later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// check whether the given area is oriented horizontally
 | 
				
			||||||
 | 
						// or verticallya and choose correspoinding bitmap to create or
 | 
				
			||||||
 | 
						// recreate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( forArea.height > forArea.width )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxSize prevDim( 0,0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpVertBuf ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								prevDim.x = mpVertBuf->GetWidth();
 | 
				
			||||||
 | 
								prevDim.y = mpVertBuf->GetHeight();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpVertBufDc->SelectObject( wxNullBitmap );
 | 
				
			||||||
 | 
								delete mpVertBuf;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								mpVertBufDc = new wxMemoryDC();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							mpVertBuf = new wxBitmap( int( wxMax(forArea.width,  prevDim.x ) ), 
 | 
				
			||||||
 | 
													  int( wxMax(forArea.height, prevDim.y ) )
 | 
				
			||||||
 | 
													);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpVertBufDc->SelectObject( *mpVertBuf );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return mpVertBufDc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxSize prevDim( 0,0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpHorizBuf ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								prevDim.x = mpHorizBuf->GetWidth();
 | 
				
			||||||
 | 
								prevDim.y = mpHorizBuf->GetHeight();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpHorizBufDc->SelectObject( wxNullBitmap );
 | 
				
			||||||
 | 
								delete mpHorizBuf;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								mpHorizBufDc = new wxMemoryDC();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							mpHorizBuf = new wxBitmap( int( wxMax(forArea.width,  prevDim.x ) ), 
 | 
				
			||||||
 | 
													   int( wxMax(forArea.height, prevDim.y ) )
 | 
				
			||||||
 | 
													 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpHorizBufDc->SelectObject( *mpHorizBuf );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return mpHorizBufDc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbAntiflickerPlugin::OnStartDrawInArea( cbStartDrawInAreaEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxASSERT( mpLRUBufDc == NULL ); // DBG:: see comments in OnFinishDrawInArea(..) method
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// short-cut
 | 
				
			||||||
 | 
						wxRect& area = event.mArea;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( event.mArea.width  < 0 || 
 | 
				
			||||||
 | 
							 event.mArea.height < 0 ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// memorize given area
 | 
				
			||||||
 | 
						mLRUArea.x      = area.x;
 | 
				
			||||||
 | 
						mLRUArea.y      = area.y;
 | 
				
			||||||
 | 
						mLRUArea.width  = area.width;
 | 
				
			||||||
 | 
						mLRUArea.height = area.height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDC* pBufDc = FindSuitableBuffer( area );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !pBufDc )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							pBufDc = AllocNewBuffer( area );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBufDc->SetDeviceOrigin( -area.x, -area.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBufDc->SetClippingRegion( area.x,     area.y,
 | 
				
			||||||
 | 
												   area.width, area.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxClientDC clntDc( &mpLayout->GetParentFrame() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						(*event.mppDc) = pBufDc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLRUBufDc = pBufDc; // memorize buffer, which will be flushed to screen
 | 
				
			||||||
 | 
						                     // upon "commiting" the drawing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						// OLD STUFF::
 | 
				
			||||||
 | 
						mpLRUBufDc->Blit( pos.x, pos.y, size.x, size.y,
 | 
				
			||||||
 | 
									      &clntDc, pos.x, pos.y, wxCOPY );
 | 
				
			||||||
 | 
										*/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbAntiflickerPlugin::OnFinishDrawInArea( cbFinishDrawInAreaEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect& area = event.mArea;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( event.mArea.width  < 0 || 
 | 
				
			||||||
 | 
							 event.mArea.height < 0 ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxASSERT( mpLRUBufDc ); // DBG:: OnStartDrawInArea should be called first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FOR NOW:: OnStartDrawInArea(..) should be immediately followed
 | 
				
			||||||
 | 
						//           by OnFinishDrawInArea(..) for the same area
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxASSERT( mLRUArea.x      == area.x      );
 | 
				
			||||||
 | 
						wxASSERT( mLRUArea.y      == area.y      );
 | 
				
			||||||
 | 
						wxASSERT( mLRUArea.width  == area.width  );
 | 
				
			||||||
 | 
						wxASSERT( mLRUArea.height == area.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxClientDC clntDc( &mpLayout->GetParentFrame() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// "commit" drawings in one-shot
 | 
				
			||||||
 | 
						clntDc.Blit( area.x, area.y, area.width, area.height,
 | 
				
			||||||
 | 
									 mpLRUBufDc, area.x, area.y, wxCOPY );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLRUBufDc->DestroyClippingRegion();
 | 
				
			||||||
 | 
						mpLRUBufDc = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										934
									
								
								contrib/src/fl/bardragpl.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,934 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "bardragpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/bardragpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define POS_UNDEFINED -32768
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helpers, FOR NOW:: static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool rect_hits_rect( const wxRect& r1, const wxRect& r2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
 | 
				
			||||||
 | 
							 ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
 | 
				
			||||||
 | 
								 ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
 | 
				
			||||||
 | 
								 
 | 
				
			||||||
 | 
								return TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return FALSE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool rect_contains_point( const wxRect& rect, int x, int y )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ( x >= rect.x &&
 | 
				
			||||||
 | 
							     y >= rect.y &&
 | 
				
			||||||
 | 
								 x <  rect.x + rect.width  &&
 | 
				
			||||||
 | 
								 y <  rect.y + rect.height );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbBarDragPlugin *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbBarDragPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbBarDragPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//EVT_PL_LEFT_DOWN          ( cbBarDragPlugin::OnLButtonDown      )
 | 
				
			||||||
 | 
						EVT_PL_LEFT_UP			  ( cbBarDragPlugin::OnLButtonUp        )
 | 
				
			||||||
 | 
						EVT_PL_MOTION			  ( cbBarDragPlugin::OnMouseMove        )
 | 
				
			||||||
 | 
						EVT_PL_DRAW_HINT_RECT     ( cbBarDragPlugin::OnDrawHintRect     )
 | 
				
			||||||
 | 
						EVT_PL_START_BAR_DRAGGING ( cbBarDragPlugin::OnStartBarDragging )
 | 
				
			||||||
 | 
						EVT_PL_LEFT_DCLICK		  ( cbBarDragPlugin::OnLDblClick		)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarDragPlugin::cbBarDragPlugin(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: mBarDragStarted    ( FALSE ),
 | 
				
			||||||
 | 
						  mCanStick          ( TRUE ),
 | 
				
			||||||
 | 
						  mpScrDc            ( NULL ),
 | 
				
			||||||
 | 
						  mpCurCursor        ( NULL ),
 | 
				
			||||||
 | 
						  mpDraggedBar       ( NULL ),
 | 
				
			||||||
 | 
						  mInClientHintBorder( 4 )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarDragPlugin::cbBarDragPlugin( wxFrameLayout* pPanel, int paneMask )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: cbPluginBase( pPanel, paneMask ),
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						  mBarDragStarted    ( FALSE ),
 | 
				
			||||||
 | 
						  mCanStick          ( TRUE ),
 | 
				
			||||||
 | 
						  mpScrDc            ( NULL ),
 | 
				
			||||||
 | 
						  mpCurCursor        ( NULL ),
 | 
				
			||||||
 | 
						  mpDraggedBar       ( NULL ),
 | 
				
			||||||
 | 
						  mInClientHintBorder( 4 )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarDragPlugin::~cbBarDragPlugin()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// nothing
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper methods (protected)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// clips (top/bottom) or (right/left) edges against the frame's bounding rect.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void do_clip_edges( int len, int& rectPos, int& rectLen )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( rectPos < 0 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rectLen += rectPos;
 | 
				
			||||||
 | 
							rectPos = 0;
 | 
				
			||||||
 | 
							if ( rectLen < 0 )
 | 
				
			||||||
 | 
					            rectLen = 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( rectPos > len-1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rectPos = len-1;
 | 
				
			||||||
 | 
							rectLen = 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( rectPos + rectLen - 1 > len )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							rectLen -= (rectPos + rectLen) - len + 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::ClipRectInFrame( wxRect& rect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int w, h;
 | 
				
			||||||
 | 
						mpLayout->GetParentFrame().GetClientSize( &w, &h );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						do_clip_edges( w, rect.x, rect.width  );
 | 
				
			||||||
 | 
						do_clip_edges( h, rect.y, rect.height );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::ClipPosInFrame( wxPoint& pos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int w, h;
 | 
				
			||||||
 | 
						mpLayout->GetParentFrame().GetClientSize( &w, &h );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pos.x < 0 )
 | 
				
			||||||
 | 
					        pos.x = 0;
 | 
				
			||||||
 | 
						if ( pos.y < 0 )
 | 
				
			||||||
 | 
					        pos.y = 0;
 | 
				
			||||||
 | 
						if ( pos.x > w )
 | 
				
			||||||
 | 
					        pos.x = w-1;
 | 
				
			||||||
 | 
						if ( pos.y > h )
 | 
				
			||||||
 | 
					        pos.y = h-1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::AdjustHintRect( wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mHintRect.x = mousePos.x - mMouseInRectX;
 | 
				
			||||||
 | 
						mHintRect.y = mousePos.y - mMouseInRectY;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbDockPane* cbBarDragPlugin::HitTestPanes( wxRect& rect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						//wxRect clipped = rect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//ClipRectInFrame( clipped );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane** pPanes = mpLayout->GetPanesArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for( int i = 0; i != MAX_PANES; ++i )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							if ( rect_hits_rect( pPanes[i]->mBoundsInParent, rect ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return pPanes[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbDockPane* cbBarDragPlugin::HitTestPanes( wxPoint& pos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxPoint clipped = pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//ClipPosInFrame( pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane** pPanes = mpLayout->GetPanesArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for( int i = 0; i != MAX_PANES; ++i )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							if ( rect_contains_point( pPanes[i]->mBoundsInParent, clipped.x, clipped.y ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return pPanes[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cbBarDragPlugin::HitsPane( cbDockPane* pPane, wxRect& rect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return rect_hits_rect( pPane->mBoundsInParent, rect );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cbBarDragPlugin::GetDistanceToPane( cbDockPane* pPane, wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect& bounds = pPane->mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch( pPane->mAlignment )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case FL_ALIGN_TOP    : return mousePos.y - ( bounds.y + bounds.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case FL_ALIGN_BOTTOM : return bounds.y - mousePos.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case FL_ALIGN_LEFT   : return mousePos.x - ( bounds.x + bounds.width  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							case FL_ALIGN_RIGHT  : return bounds.x - mousePos.x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							default : return 0; // never reached
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cbBarDragPlugin::IsInOtherPane( wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbDockPane* pPane = HitTestPanes( mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pPane && pPane != mpCurPane ) return TRUE;
 | 
				
			||||||
 | 
													  else return FALSE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cbBarDragPlugin::IsInClientArea( wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return  ( HitTestPanes( mousePos ) == NULL );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cbBarDragPlugin::IsInClientArea( wxRect& rect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ( HitTestPanes( rect ) == NULL );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::CalcOnScreenDims( wxRect& rect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mpCurPane || mpDraggedBar->IsFixed() ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect inPane = rect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpCurPane->FrameToPane( &inPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int rowNo = mpCurPane->GetRowAt( inPane.y, inPane.y + inPane.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool isMaximized = ( rowNo >= (int)mpCurPane->GetRowList().Count() || rowNo < 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( isMaximized )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							inPane.x = 0;
 | 
				
			||||||
 | 
							inPane.width = mpCurPane->mPaneWidth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpCurPane->PaneToFrame( &inPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rect = inPane;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helpers 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline void check_upper_overrun( int& pos, int width, int mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mousePos >= pos + width )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pos = mousePos - width/2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline void check_lower_overrun( int& pos, int width, int mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mousePos <= pos )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pos = mousePos - width/2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::StickToPane( cbDockPane* pPane, wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int wInPane = GetBarWidthInPane ( pPane );
 | 
				
			||||||
 | 
						int hInPane = GetBarHeightInPane( pPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// adjsut hint-rect horizontally (in pane's orientation)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mHintRect.width  = wInPane;
 | 
				
			||||||
 | 
							mHintRect.height = hInPane;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mHintRect.height = wInPane;
 | 
				
			||||||
 | 
							mHintRect.width  = hInPane;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// adjsut hint-rect vertically (in pane's orientation)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect& bounds = pPane->mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TRUE, if hint enters the pane through it's lower edge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool fromLowerEdge = ( pPane->IsHorizontal() ) 
 | 
				
			||||||
 | 
											 ? mousePos.y > bounds.y
 | 
				
			||||||
 | 
											 : mousePos.x > bounds.x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// NOTE:: about all the below min/max things: they are meant to ensure
 | 
				
			||||||
 | 
						//        that mouse pointer doesn't overrun (leave) the hint-rectangle
 | 
				
			||||||
 | 
						//        when dimensions it's are recalculated upon sticking it to the pane
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() && fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int paneBottomEdgeY = bounds.y + bounds.height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mHintRect.y = wxMin( paneBottomEdgeY, mousePos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_lower_overrun( mHintRect.y, hInPane, mousePos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() && !fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int paneTopEdgeY = bounds.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mHintRect.y = wxMax( paneTopEdgeY - hInPane, mousePos.y - hInPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_upper_overrun( mHintRect.y, hInPane, mousePos.y );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !pPane->IsHorizontal() && fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int paneRightEdgeX = bounds.x + bounds.width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mHintRect.x = wxMin( paneRightEdgeX, mousePos.x );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_lower_overrun( mHintRect.x, hInPane, mousePos.x );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !pPane->IsHorizontal() && !fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int paneLeftEdgeX = bounds.x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mHintRect.x = wxMax( paneLeftEdgeX - hInPane, mousePos.x - hInPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_upper_overrun( mHintRect.x, hInPane, mousePos.x );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mMouseInRectX = mousePos.x - mHintRect.x;
 | 
				
			||||||
 | 
						mMouseInRectY = mousePos.y - mHintRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpCurPane = pPane; // memorize pane to which the hint is currently sticked
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// unsticking causes rectangle to get the shape, in which
 | 
				
			||||||
 | 
						// dragged control-bar would be when floated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int newWidth  = mpDraggedBar->mDimInfo.mSizes[wxCBAR_FLOATING].x;
 | 
				
			||||||
 | 
						int newHeight = mpDraggedBar->mDimInfo.mSizes[wxCBAR_FLOATING].y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect& flBounds = mpDraggedBar->mDimInfo.mBounds[wxCBAR_FLOATING];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( flBounds.width != -1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							newWidth  = flBounds.width;
 | 
				
			||||||
 | 
							newHeight = flBounds.height;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mHintRect.width  = newWidth;
 | 
				
			||||||
 | 
						mHintRect.height = newHeight;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect& bounds = pPane->mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TRUE, if hint leaves the pane through it's lower edge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool fromLowerEdge = ( pPane->IsHorizontal() ) 
 | 
				
			||||||
 | 
											 ? mousePos.y > bounds.y
 | 
				
			||||||
 | 
											 : mousePos.x > bounds.x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// NOTE:: ...all the below min/max things - see comments about it in StickToPane(..)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() && fromLowerEdge )
 | 
				
			||||||
 | 
						{	
 | 
				
			||||||
 | 
							bool fromLowerEdge = mousePos.y > bounds.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mHintRect.y = wxMax( bounds.y + bounds.height + 1, mousePos.y - newHeight );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_upper_overrun( mHintRect.y, newHeight, mousePos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// this is how MFC's hint behaves:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mMouseInRectX > newWidth )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
								mHintRect.x = mousePos.x - ( newWidth / 2 );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() && !fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mHintRect.y = wxMin( bounds.y - newHeight - 1, mousePos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// -/-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mMouseInRectX > newWidth )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
								mHintRect.x = mousePos.x - ( newWidth / 2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_lower_overrun( mHintRect.y, newHeight, mousePos.y );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !pPane->IsHorizontal() && fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mHintRect.x = wxMax( bounds.x + bounds.width, mousePos.x - newWidth );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// -/-
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( mMouseInRectY > newHeight )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mHintRect.y = mousePos.y - ( newHeight / 2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_upper_overrun( mHintRect.x, newWidth, mousePos.x );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !pPane->IsHorizontal() && !fromLowerEdge )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mHintRect.x = wxMin( bounds.x - newWidth - 1, mousePos.x );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// -/-
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if ( mMouseInRectY > newHeight )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mHintRect.y = mousePos.y - ( newHeight / 2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							check_lower_overrun( mHintRect.x, newWidth, mousePos.x );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mMouseInRectX = mousePos.x - mHintRect.x;
 | 
				
			||||||
 | 
						mMouseInRectY = mousePos.y - mHintRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpCurPane = NULL;
 | 
				
			||||||
 | 
					}				
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cbBarDragPlugin::GetBarWidthInPane( cbDockPane* pPane )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( pPane == mpSrcPane )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return mBarWidthInSrcPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// this is how MFC's bars behave:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							return mpDraggedBar->mDimInfo.mSizes[wxCBAR_DOCKED_HORIZONTALLY].x;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							return mpDraggedBar->mDimInfo.mSizes[wxCBAR_DOCKED_VERTICALLY  ].x;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cbBarDragPlugin::GetBarHeightInPane( cbDockPane* pPane )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( pPane->IsHorizontal() )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							return mpDraggedBar->mDimInfo.mSizes[wxCBAR_DOCKED_HORIZONTALLY].y;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							return mpDraggedBar->mDimInfo.mSizes[wxCBAR_DOCKED_VERTICALLY  ].y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::ShowHint( bool prevWasInClient )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						bool wasDocked = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpDraggedBar->mState != wxCBAR_FLOATING && !mpCurPane )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mpLayout->SetBarState( mpDraggedBar, wxCBAR_FLOATING, TRUE );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( mpDraggedBar->mState == wxCBAR_FLOATING && mpCurPane )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mpLayout->SetBarState( mpDraggedBar, wxCBAR_DOCKED_HORIZONTALLY, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wasDocked = TRUE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpSrcPane->mProps.mRealTimeUpdatesOn == FALSE )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// do hevy calculations first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxRect actualRect = mHintRect; // will be adjusted depending on drag-settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpSrcPane->mProps.mExactDockPredictionOn && mpCurPane )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								bool success = mpLayout->RedockBar( mpDraggedBar, mHintRect, mpCurPane, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								wxASSERT( success ); // DBG::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								actualRect = mpDraggedBar->mBounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpCurPane->PaneToFrame( &actualRect );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								CalcOnScreenDims( actualRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// release previous hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mPrevHintRect.x != POS_UNDEFINED )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// erase previous rectangle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cbDrawHintRectEvent evt( mPrevHintRect, prevWasInClient, TRUE, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpLayout->FirePluginEvent( evt );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// draw new hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cbDrawHintRectEvent evt( actualRect, mpCurPane == NULL, FALSE, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpLayout->FirePluginEvent( evt );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevHintRect = actualRect;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else 
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// otherwise, if real-time updates option is ON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpCurPane )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								mpLayout->GetUpdatesManager().OnStartChanges();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( wasDocked )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mpDraggedBar->mUMgrData.SetDirty( TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								bool success = mpLayout->RedockBar( mpDraggedBar, mHintRect, mpCurPane, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								wxASSERT( success ); // DBG ::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpLayout->GetUpdatesManager().OnFinishChanges();
 | 
				
			||||||
 | 
								mpLayout->GetUpdatesManager().UpdateNow();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mpLayout->mFloatingOn )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// move the top-most floated bar around as user drags the hint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mpDraggedBar->mDimInfo.mBounds[ wxCBAR_FLOATING ] = mHintRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mpLayout->ApplyBarProperties( mpDraggedBar );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** event handlers ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnMouseMove( cbMotionEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// calculate postion in frame's coordiantes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !mBarDragStarted )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							event.Skip(); // pass event to the next plugin
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPoint mousePos = event.mPos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						event.mpPane->PaneToFrame( &mousePos.x, &mousePos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool   prevIsInClient = ( mpCurPane == 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						AdjustHintRect( mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// if the hint-rect is not "tempted" to any pane yet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpCurPane == NULL )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbDockPane* pPane = HitTestPanes( mHintRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !pPane ) 
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								// enable sticking again, if we've left the pane completely
 | 
				
			||||||
 | 
								mCanStick = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mCanStick && pPane && 
 | 
				
			||||||
 | 
								 GetDistanceToPane( pPane, mousePos ) < GetBarHeightInPane( pPane ) )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
								StickToPane( pPane, mousePos );
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								if ( pPane && HitTestPanes( mousePos ) == pPane && 0 ) // FOR NOW:: disabled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									StickToPane( pPane, mousePos );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// otherwise, when rect is now sticked to some of the panes
 | 
				
			||||||
 | 
							// check if it should still remain in this pane
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mCanStick = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool mouseInOther = IsInOtherPane( mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mouseInOther )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
									cbDockPane* pPane = HitTestPanes( mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									StickToPane( pPane, mousePos );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( IsInClientArea( mousePos ) )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									cbDockPane* pPane = HitTestPanes( mHintRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( pPane && 
 | 
				
			||||||
 | 
										 pPane != mpCurPane &&
 | 
				
			||||||
 | 
										 GetDistanceToPane( pPane, mousePos ) < GetBarHeightInPane( pPane ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											StickToPane( pPane, mousePos );
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									if ( !pPane )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										UnstickFromPane( mpCurPane, mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// FOR NOW:: disabled, would cause some mess
 | 
				
			||||||
 | 
										//mCanStick = FALSE; // prevents from sticking to this
 | 
				
			||||||
 | 
													         // pane again, flag is reset when hint-rect
 | 
				
			||||||
 | 
													         // leaves the pane completely
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									if ( GetDistanceToPane( pPane, mousePos ) > GetBarHeightInPane( pPane ) )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if ( !HitsPane( mpCurPane, mHintRect ) )
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											UnstickFromPane( mpCurPane, mousePos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											// FOR NOW:: disabled, would cause some mess
 | 
				
			||||||
 | 
											//mCanStick = FALSE; // prevents from sticking to this
 | 
				
			||||||
 | 
															     // pane again, flag is reset when hint-rect
 | 
				
			||||||
 | 
															     // leaves the pane completely
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ShowHint( prevIsInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxCursor* pPrevCurs = mpCurCursor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpCurPane )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							mpCurCursor = mpLayout->mpDragCursor;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpLayout->mFloatingOn && mpSrcPane->mProps.mRealTimeUpdatesOn )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
								mpCurCursor = mpLayout->mpDragCursor;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								mpCurCursor = mpLayout->mpNECursor;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pPrevCurs != mpCurCursor )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpLayout->GetParentFrame().SetCursor( *mpCurCursor );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnLButtonDown( cbLeftDownEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mBarDragStarted  )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxMessageBox("DblClick!");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						event.Skip();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnLButtonUp( cbLeftUpEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mBarDragStarted  )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpSrcPane->mProps.mRealTimeUpdatesOn == FALSE )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// erase current rectangle, and finsih on-screen drawing session
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cbDrawHintRectEvent evt( mPrevHintRect, mpCurPane == NULL, TRUE, TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpLayout->FirePluginEvent( evt );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mpCurPane != NULL )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if ( mpSrcPane->mProps.mExactDockPredictionOn )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										mpLayout->RedockBar( mpDraggedBar, mHintRect, mpCurPane, FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										mpLayout->GetUpdatesManager().OnFinishChanges();
 | 
				
			||||||
 | 
										mpLayout->GetUpdatesManager().UpdateNow();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										mpLayout->RedockBar( mpDraggedBar, mHintRect, mpCurPane );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							mHintRect.width = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpLayout->GetParentFrame().SetCursor( *mpLayout->mpNormalCursor );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpLayout->ReleaseEventsFromPane( event.mpPane );
 | 
				
			||||||
 | 
							mpLayout->ReleaseEventsFromPlugin( this );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mBarDragStarted = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mBarWasFloating && mpDraggedBar->mState != wxCBAR_FLOATING )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// save bar's floating position before it was docked 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpDraggedBar->mDimInfo.mBounds[ wxCBAR_FLOATING ] = mFloatedBarBounds;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							event.Skip(); // pass event to the next plugin
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnLDblClick( cbLeftDClickEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int avoidCompilerWarning = 1;
 | 
				
			||||||
 | 
						if ( avoidCompilerWarning )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbBarInfo* pHittedBar;
 | 
				
			||||||
 | 
							cbRowInfo* pRow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( event.mpPane->HitTestPaneItems( event.mPos, 	  // in pane's coordiantes
 | 
				
			||||||
 | 
															     &pRow,
 | 
				
			||||||
 | 
																 &pHittedBar ) == CB_BAR_CONTENT_HITTED
 | 
				
			||||||
 | 
							   )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									mpLayout->SetBarState( pHittedBar, wxCBAR_FLOATING, TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mpLayout->RepositionFloatedBar( pHittedBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return; // event is "eaten" by this plugin
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mBarDragStarted = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							event.Skip();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//wxMessageBox("Hi, dblclick arrived!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnStartBarDragging( cbStartBarDraggingEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpDraggedBar = event.mpBar;
 | 
				
			||||||
 | 
						mpSrcPane    = event.mpPane; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout->CaptureEventsForPane( event.mpPane );
 | 
				
			||||||
 | 
						mpLayout->CaptureEventsForPlugin( this );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout->GetParentFrame().SetCursor( *mpLayout->mpDragCursor );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mBarDragStarted = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect inParent = mpDraggedBar->mBounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mBarWasFloating = mpDraggedBar->mState == wxCBAR_FLOATING;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						if ( mBarWasFloating )
 | 
				
			||||||
 | 
						{	
 | 
				
			||||||
 | 
							inParent = mpDraggedBar->mDimInfo.mBounds[ wxCBAR_FLOATING ];
 | 
				
			||||||
 | 
							mFloatedBarBounds = inParent;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							event.mpPane->PaneToFrame( &inParent );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mHintRect.x = POS_UNDEFINED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mHintRect.width  = inParent.width;
 | 
				
			||||||
 | 
						mHintRect.height = inParent.height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mMouseInRectX = event.mPos.x - inParent.x;
 | 
				
			||||||
 | 
						mMouseInRectY = event.mPos.y - inParent.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpSrcPane = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpDraggedBar->mState == wxCBAR_FLOATING )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpCurPane = NULL;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							mpCurPane = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mPrevHintRect.x = POS_UNDEFINED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mCanStick = FALSE; // we're not stuck into any pane now - 
 | 
				
			||||||
 | 
										   // there's nowhere to "stick-twice"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mBarWidthInSrcPane = mpDraggedBar->mDimInfo.mSizes[ mpDraggedBar->mState ].x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpSrcPane->mProps.mRealTimeUpdatesOn == FALSE && 
 | 
				
			||||||
 | 
							 mpSrcPane->mProps.mExactDockPredictionOn  )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							mpLayout->GetUpdatesManager().OnStartChanges(); // capture initial state of layout
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// simulate the first mouse movement
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int x = event.mPos.x, y = event.mPos.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpSrcPane->FrameToPane( &x, &y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbMotionEvent motionEvt( wxPoint(x,y), event.mpPane );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						this->OnMouseMove( motionEvt );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return; // event is "eaten" by this plugin
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** on-screen hint-tracking related methods ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::OnDrawHintRect( cbDrawHintRectEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mpScrDc ) StartTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DoDrawHintRect( event.mRect, event.mIsInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( event.mLastTime )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FinishTracking();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define _IMG_A  0xAA    // Note: modified from _A to _IMG_A, _A was already defined (cygwin)
 | 
				
			||||||
 | 
					#define _IMG_B  0x00    // Note: modified from _B to _IMG_A, _B was already defined (cygwin)
 | 
				
			||||||
 | 
					#define _IMG_C  0x55    // Note: modified from _C to _IMG_C, for consistency reasons.
 | 
				
			||||||
 | 
					#define _IMG_D  0x00    // Note: modified from _D to _IMG_D, for consistency reasons.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FOR NOW:: static
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char _gCheckerImg[16] = { _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D
 | 
				
			||||||
 | 
																  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::StartTracking()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpScrDc = new wxScreenDC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::DoDrawHintRect( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect scrRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RectToScr( rect, scrRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int prevLF = mpScrDc->GetLogicalFunction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc->SetLogicalFunction( wxINVERT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( isInClientRect )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// BUG BUG BUG (wx):: somehow stippled brush works only  
 | 
				
			||||||
 | 
							//					  when the bitmap created on stack, not
 | 
				
			||||||
 | 
							//					  as a member of the class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxBrush checkerBrush( checker );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->SetPen( mpLayout->mNullPen );
 | 
				
			||||||
 | 
							mpScrDc->SetBrush( checkerBrush );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int half = mInClientHintBorder / 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y - half,
 | 
				
			||||||
 | 
								                    scrRect.width + 2*half, mInClientHintBorder );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + scrRect.height - half,
 | 
				
			||||||
 | 
								                    scrRect.width + 2*half, mInClientHintBorder );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + half - 1,
 | 
				
			||||||
 | 
								                    mInClientHintBorder, scrRect.height - 2*half + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x + scrRect.width - half,
 | 
				
			||||||
 | 
													scrRect.y + half - 1,
 | 
				
			||||||
 | 
								                    mInClientHintBorder, scrRect.height - 2*half + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->SetBrush( wxNullBrush );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mpScrDc->SetPen( mpLayout->mBlackPen );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x, scrRect.y, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x, scrRect.y + 1, 
 | 
				
			||||||
 | 
											   scrRect.x, scrRect.y + scrRect.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x+1, scrRect.y + scrRect.height, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y + scrRect.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x + scrRect.width , scrRect.y, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y + scrRect.height + 1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc->SetLogicalFunction( prevLF );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::DrawHintRect ( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DoDrawHintRect( rect, isInClientRect );	
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::EraseHintRect( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DoDrawHintRect( rect, isInClientRect );	
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::FinishTracking()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxScreenDC::EndDrawingOnTop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						delete mpScrDc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc = NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarDragPlugin::RectToScr( wxRect& frameRect, wxRect& scrRect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						scrRect = frameRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int x = frameRect.x, y = frameRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout->GetParentFrame().ClientToScreen( &x, &y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						scrRect.x = x;
 | 
				
			||||||
 | 
						scrRect.y = y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										560
									
								
								contrib/src/fl/barhintspl.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,560 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     30/11/98 (my 22th birthday :-)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "barhintspl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/utils.h"
 | 
				
			||||||
 | 
					#include "wx/fl/barhintspl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fixed settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GROOVE_WIDTH         3  // left shade + middle line + right shade
 | 
				
			||||||
 | 
					#define GROOVE_TO_GROOVE_GAP 1  
 | 
				
			||||||
 | 
					#define BOX_T_BOX_GAP        2
 | 
				
			||||||
 | 
					#define BOX_TO_GROOVE_GAP    3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOXES_IN_HINT        2
 | 
				
			||||||
 | 
					#define CLOSE_BOX_IDX        0
 | 
				
			||||||
 | 
					#define COLLAPSE_BOX_IDX     1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// used interally 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLOSE_BOX_HITTED    1
 | 
				
			||||||
 | 
					#define COLLAPSE_BOX_HITTED 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation fro class cbBarHintsPlugin *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbBarHintsPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbBarHintsPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_PL_SIZE_BAR_WND  ( cbBarHintsPlugin::OnSizeBarWindow )
 | 
				
			||||||
 | 
						EVT_PL_DRAW_BAR_DECOR( cbBarHintsPlugin::OnDrawBarDecorations )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_PL_LEFT_DOWN( cbBarHintsPlugin::OnLeftDown )
 | 
				
			||||||
 | 
						EVT_PL_LEFT_UP  ( cbBarHintsPlugin::OnLeftUp   )
 | 
				
			||||||
 | 
						EVT_PL_MOTION	( cbBarHintsPlugin::OnMotion   )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarHintsPlugin::cbBarHintsPlugin(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: mpPane( 0 ),
 | 
				
			||||||
 | 
						  mBtnPressed   ( FALSE ),
 | 
				
			||||||
 | 
						  mCloseBoxOn   ( TRUE ),
 | 
				
			||||||
 | 
						  mCollapseBoxOn( TRUE ),
 | 
				
			||||||
 | 
						  mGrooveCount  ( 2 ),
 | 
				
			||||||
 | 
						  mHintGap      ( 4 ),
 | 
				
			||||||
 | 
						  mXWeight      ( 2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mBoxes[CLOSE_BOX_IDX]    = NULL;
 | 
				
			||||||
 | 
						mBoxes[COLLAPSE_BOX_IDX] = NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarHintsPlugin::cbBarHintsPlugin( wxFrameLayout* pLayout, int paneMask )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: cbPluginBase( pLayout, paneMask ),
 | 
				
			||||||
 | 
						  mpPane( 0 ),
 | 
				
			||||||
 | 
						  mBtnPressed   ( FALSE ),
 | 
				
			||||||
 | 
						  mCloseBoxOn   ( TRUE ),
 | 
				
			||||||
 | 
						  mCollapseBoxOn( TRUE ),
 | 
				
			||||||
 | 
						  mGrooveCount  ( 2 ),
 | 
				
			||||||
 | 
						  mHintGap      ( 5 ),
 | 
				
			||||||
 | 
						  mXWeight      ( 2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mBoxes[CLOSE_BOX_IDX]    = NULL;
 | 
				
			||||||
 | 
						mBoxes[COLLAPSE_BOX_IDX] = NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbBarHintsPlugin::~cbBarHintsPlugin()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (mBoxes[CLOSE_BOX_IDX])
 | 
				
			||||||
 | 
					        delete mBoxes[CLOSE_BOX_IDX];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (mBoxes[COLLAPSE_BOX_IDX])
 | 
				
			||||||
 | 
					        delete mBoxes[COLLAPSE_BOX_IDX];
 | 
				
			||||||
 | 
					}  // cbBarHintsPlugin destructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::SetGrooveCount( int nGrooves )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mGrooveCount = nGrooves;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::CreateBoxes()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbCloseBox*    box1 = new cbCloseBox();
 | 
				
			||||||
 | 
						cbCollapseBox* box2 = new cbCollapseBox();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mBoxes[CLOSE_BOX_IDX]    = box1;
 | 
				
			||||||
 | 
						mBoxes[COLLAPSE_BOX_IDX] = box2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   int i;
 | 
				
			||||||
 | 
						for( i = 0; i != BOXES_IN_HINT; ++i )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mBoxes[i]->mpLayout = mpLayout;
 | 
				
			||||||
 | 
							mBoxes[i]->mpPlugin = this;
 | 
				
			||||||
 | 
							mBoxes[i]->mpWnd    = NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::Draw3DBox( wxDC& dc, const wxPoint& pos, bool pressed )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::DrawCloseBox( wxDC& dc, const wxPoint& pos, bool pressed )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::DrawCollapseBox( wxDC& dc, const wxPoint& pos, 
 | 
				
			||||||
 | 
															bool atLeft, bool disabled, bool pressed )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::DrawGrooves( wxDC& dc, const wxPoint& pos, int length )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int ofs = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   int i;
 | 
				
			||||||
 | 
						for( i = 0; i != mGrooveCount; ++i, ofs += ( GROOVE_WIDTH + GROOVE_TO_GROOVE_GAP ) )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								dc.SetPen( mpLayout->mLightPen );
 | 
				
			||||||
 | 
								dc.DrawLine( pos.x + ofs, pos.y, pos.x + ofs, pos.y + length - 1 );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x + ofs + 1, pos.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								dc.SetPen( mpLayout->mDarkPen );
 | 
				
			||||||
 | 
								dc.DrawLine( pos.x + ofs + 2, pos.y, pos.x + ofs + 2, pos.y + length );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x + ofs + 1, pos.y + length - 1 );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x + ofs,     pos.y + length - 1 );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								dc.SetPen( mpLayout->mLightPen );
 | 
				
			||||||
 | 
								dc.DrawLine( pos.x, pos.y + ofs, pos.x + length - 1, pos.y + ofs );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x, pos.y + ofs + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								dc.SetPen( mpLayout->mDarkPen );
 | 
				
			||||||
 | 
								dc.DrawLine( pos.x, pos.y + ofs + 2, pos.x + length, pos.y + ofs + 2 );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x + length - 1, pos.y + ofs + 1 );
 | 
				
			||||||
 | 
								dc.DrawPoint( pos.x + length - 1, pos.y + ofs );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::ExcludeHints( wxRect& rect, cbBarInfo& info )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int boxHeight = BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// collapse and close box are not placed on fixed bars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( info.IsFixed() || ( !mCloseBoxOn && !mCollapseBoxOn ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							boxHeight = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int height = wxMax( mGrooveCount*(GROOVE_WIDTH + GROOVE_TO_GROOVE_GAP) 
 | 
				
			||||||
 | 
							                - GROOVE_TO_GROOVE_GAP, 
 | 
				
			||||||
 | 
											boxHeight 
 | 
				
			||||||
 | 
									      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rect.x     += ( mHintGap*2 + height );
 | 
				
			||||||
 | 
							rect.width -= (height + 2*mHintGap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rect.x     -= info.mDimInfo.mHorizGap + 2;
 | 
				
			||||||
 | 
							rect.width += info.mDimInfo.mHorizGap + 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rect.y      += (mHintGap*2 + height);
 | 
				
			||||||
 | 
							rect.height -= (height + 2*mHintGap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rect.y      -= info.mDimInfo.mVertGap + 2;
 | 
				
			||||||
 | 
							rect.height += info.mDimInfo.mVertGap + 2;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::DoDrawHint( wxDC& dc, wxRect& rect, 
 | 
				
			||||||
 | 
													   int pos, int boxOfs, int grooveOfs,
 | 
				
			||||||
 | 
													   bool isFixed )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !isFixed )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn )
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									mBoxes[CLOSE_BOX_IDX]->Draw( dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									mBoxes[COLLAPSE_BOX_IDX]->Draw( dc );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn )
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									mBoxes[CLOSE_BOX_IDX]->Draw( dc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									mBoxes[COLLAPSE_BOX_IDX]->Draw( dc );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							DrawGrooves( dc, wxPoint( rect.x + mHintGap + grooveOfs, pos ), 
 | 
				
			||||||
 | 
										 rect.height - (pos - rect.y) - mHintGap );
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							DrawGrooves( dc, wxPoint( rect.x + mHintGap, rect.y + mHintGap + grooveOfs ), 
 | 
				
			||||||
 | 
										 (pos - rect.x) - mHintGap );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::GetHintsLayout( wxRect& rect, cbBarInfo& info, 
 | 
				
			||||||
 | 
														   int& boxOfs, int& grooveOfs, int& pos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int boxHeight = BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
						int boxWidth  = BTN_BOX_WIDTH + BOX_TO_GROOVE_GAP + BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// collapse and close box are not placed on fixed bars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( info.IsFixed() || ( !mCloseBoxOn && !mCollapseBoxOn ) )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							boxHeight = 0;
 | 
				
			||||||
 | 
							boxWidth = 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !mCloseBoxOn || !mCollapseBoxOn ) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							boxWidth = BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int grooveHeight = mGrooveCount*(GROOVE_WIDTH + GROOVE_TO_GROOVE_GAP) 
 | 
				
			||||||
 | 
							               - GROOVE_TO_GROOVE_GAP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int height = wxMax( grooveHeight, boxHeight );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// center boxs and groves with respect to each other
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						boxOfs    = ( height - boxHeight    ) / 2;
 | 
				
			||||||
 | 
						grooveOfs = ( height - grooveHeight ) / 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pos = ( mpPane->IsHorizontal() ) ? rect.y + mHintGap
 | 
				
			||||||
 | 
														 : rect.x + rect.width - mHintGap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// setup positions for boxes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !info.IsFixed() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// what direction "collapse-triangle" should look at?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool& isAtLeft = ((cbCollapseBox*)(mBoxes[COLLAPSE_BOX_IDX]))->mIsAtLeft;
 | 
				
			||||||
 | 
							 
 | 
				
			||||||
 | 
							isAtLeft= info.mBounds.x <= mpPane->mPaneWidth - ( info.mBounds.x + info.mBounds.width );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( info.IsExpanded() )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								isAtLeft = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cbBarInfo* pCur = info.mpPrev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								while( pCur )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if ( !pCur->IsFixed() )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										isAtLeft = TRUE; break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pCur = pCur->mpPrev;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// collapse/expand works only when more not-fixed bars are present in the same row
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mBoxes[COLLAPSE_BOX_IDX]->Enable( info.mpRow->mNotFixedBarsCnt > 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      int i;
 | 
				
			||||||
 | 
							for( i = 0; i != BOXES_IN_HINT; ++i )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mBoxes[i]->mpPane = mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									mBoxes[CLOSE_BOX_IDX]->mPos = wxPoint( rect.x + mHintGap + boxOfs, pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pos += BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if ( mCloseBoxOn ) pos += BOX_T_BOX_GAP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mBoxes[COLLAPSE_BOX_IDX]->mPos = wxPoint( rect.x + mHintGap + boxOfs, pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pos += BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pos += BOX_TO_GROOVE_GAP;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									pos -= BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mBoxes[CLOSE_BOX_IDX]->mPos = wxPoint( pos , rect.y + mHintGap + boxOfs );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if ( mCloseBoxOn ) pos -= BOX_T_BOX_GAP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pos -= BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									mBoxes[COLLAPSE_BOX_IDX]->mPos = wxPoint( pos, rect.y + mHintGap + boxOfs );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pos -= BOX_TO_GROOVE_GAP;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool is_in_box( const wxPoint& rectPos, const wxPoint& mousePos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ( mousePos.x >= rectPos.x &&
 | 
				
			||||||
 | 
								 mousePos.y >= rectPos.y &&
 | 
				
			||||||
 | 
								 mousePos.x < rectPos.x + BTN_BOX_WIDTH &&
 | 
				
			||||||
 | 
								 mousePos.y < rectPos.y + BTN_BOX_HEIGHT );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cbBarHintsPlugin::HitTestHints( cbBarInfo& info, const wxPoint& pos )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxPoint inPane = pos;
 | 
				
			||||||
 | 
						mpPane->PaneToFrame( &inPane.x, &inPane.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect& rect = info.mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( info.IsFixed() ) return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int boxOfs, grooveOfs, coord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GetHintsLayout( rect, info, boxOfs, grooveOfs, coord );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpPane->IsHorizontal() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mCloseBoxOn )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( is_in_box( wxPoint( rect.x + mHintGap + boxOfs, coord ), inPane ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return CLOSE_BOX_HITTED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								coord += BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn ) coord += BOX_T_BOX_GAP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( is_in_box( wxPoint( rect.x + mHintGap + boxOfs, coord ), inPane ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return COLLAPSE_BOX_HITTED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								coord += BTN_BOX_HEIGHT;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( mCloseBoxOn )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								coord -= BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( is_in_box( wxPoint( coord , rect.y + mHintGap + boxOfs ), inPane ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return CLOSE_BOX_HITTED;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( mCollapseBoxOn )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( mCloseBoxOn ) coord -= BOX_T_BOX_GAP;
 | 
				
			||||||
 | 
								coord -= BTN_BOX_WIDTH;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( is_in_box( wxPoint( coord, rect.y + mHintGap + boxOfs ), inPane ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									return COLLAPSE_BOX_HITTED;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return FALSE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// handlers for plugin-events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnSizeBarWindow( cbSizeBarWndEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect& rect     = event.mBoundsInParent;
 | 
				
			||||||
 | 
						mpPane           = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ExcludeHints( rect, *event.mpBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						event.Skip(); // pass event to the next plugin in the chain
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnDrawBarDecorations( cbDrawBarDecorEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect& rect     = event.mBoundsInParent;
 | 
				
			||||||
 | 
						mpPane           = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int boxOfs, grooveOfs, pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GetHintsLayout( rect, *event.mpBar, boxOfs, grooveOfs, pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DoDrawHint( *event.mpDc, rect, pos, boxOfs, grooveOfs, event.mpBar->IsFixed() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// let other plugins add on their decorations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						event.Skip();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnLeftDown( cbLeftDownEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpPane           = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPoint inFrame = event.mPos;
 | 
				
			||||||
 | 
						mpPane->PaneToFrame( &inFrame.x, &inFrame.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxBarIterator iter( mpPane->GetRowList() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpClickedBar = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( iter.Next() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbBarInfo& bar = iter.BarInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int boxOfs, grooveOfs, pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GetHintsLayout( bar.mBoundsInParent, bar, boxOfs, grooveOfs, pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !bar.IsFixed() )
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					         int i;
 | 
				
			||||||
 | 
								for( i = 0; i != BOXES_IN_HINT; ++i )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									mBoxes[i]->OnLeftDown( inFrame );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( mBoxes[i]->mPressed )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										mBtnPressed = TRUE;
 | 
				
			||||||
 | 
										mpClickedBar = &bar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										return; // event handled
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						event.Skip();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnLeftUp( cbLeftUpEvent&   event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mBtnPressed )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxPoint inFrame = event.mPos;
 | 
				
			||||||
 | 
							mpPane->PaneToFrame( &inFrame.x, &inFrame.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int boxOfs, grooveOfs, pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GetHintsLayout( mpClickedBar->mBoundsInParent, *mpClickedBar, boxOfs, grooveOfs, pos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int result = HitTestHints( *mpClickedBar, event.mPos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int i;
 | 
				
			||||||
 | 
							for( i = 0; i != BOXES_IN_HINT; ++i )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								mBoxes[i]->OnLeftUp( inFrame );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mBoxes[i]->WasClicked() )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									if ( i == 0 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										mpLayout->SetBarState( mpClickedBar, wxCBAR_HIDDEN, TRUE );
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if ( mpClickedBar->IsExpanded() )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											mpPane->ContractBar( mpClickedBar );
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
											mpPane->ExpandBar( mpClickedBar );
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mBtnPressed = FALSE;
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							event.Skip();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnMotion( cbMotionEvent&   event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mBtnPressed )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxPoint inFrame = event.mPos;
 | 
				
			||||||
 | 
							mpPane->PaneToFrame( &inFrame.x, &inFrame.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpPane = event.mpPane;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      int i;
 | 
				
			||||||
 | 
							for( i = 0; i != BOXES_IN_HINT; ++i )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
								mBoxes[i]->OnMotion( inFrame );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							event.Skip();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbBarHintsPlugin::OnInitPlugin()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbPluginBase::OnInitPlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane** panes = mpLayout->GetPanesArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   int i;
 | 
				
			||||||
 | 
						for( i = 0; i != MAX_PANES; ++i )
 | 
				
			||||||
 | 
					   {	
 | 
				
			||||||
 | 
							if ( panes[i]->MatchesMask( mPaneMask ) )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								panes[i]->mProps.mMinCBarDim.x = 25;
 | 
				
			||||||
 | 
								panes[i]->mProps.mMinCBarDim.y = 16;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
						CreateBoxes();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										202
									
								
								contrib/src/fl/cbcustom.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,202 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     06/09/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "cbcustom.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/cbcustom.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper class to receive menu customization event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cbContextMenuHandler : public wxEvtHandler
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						cbSimpleCustomizationPlugin* mpBackRef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						void OnMenuCommand( wxCommandEvent& evt );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void OnCommandEvents( wxCommandEvent& evt );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME:: is this "safe" ?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CB_CUSTOMIZE_MENU_FIRST_ITEM_ID 17500
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for helper class cbContextMenuHandler *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbContextMenuHandler, wxEvtHandler )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FIXME:: what is the right range for these ids ? so that they 
 | 
				
			||||||
 | 
						//         would not collide with user commands?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_COMMAND_RANGE( CB_CUSTOMIZE_MENU_FIRST_ITEM_ID,
 | 
				
			||||||
 | 
										   CB_CUSTOMIZE_MENU_FIRST_ITEM_ID + 300, 
 | 
				
			||||||
 | 
										   wxEVT_COMMAND_MENU_SELECTED,  
 | 
				
			||||||
 | 
										   cbContextMenuHandler::OnCommandEvents )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbContextMenuHandler::OnCommandEvents( wxCommandEvent& evt )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						//wxMessageBox("Wowwwww, Yeah!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpBackRef->OnMenuItemSelected( evt );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbSimpleCustomizationPlugin *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbSimpleCustomizationPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbSimpleCustomizationPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_PL_CUSTOMIZE_BAR   ( cbSimpleCustomizationPlugin::OnCustomizeBar    )
 | 
				
			||||||
 | 
						EVT_PL_CUSTOMIZE_LAYOUT( cbSimpleCustomizationPlugin::OnCustomizeLayout )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbSimpleCustomizationPlugin::cbSimpleCustomizationPlugin(void)
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbSimpleCustomizationPlugin::cbSimpleCustomizationPlugin( wxFrameLayout* pPanel, int paneMask )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: cbPluginBase( pPanel, paneMask )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbSimpleCustomizationPlugin::OnCustomizeBar( cbCustomizeBarEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// ingnore bar customization, treat it
 | 
				
			||||||
 | 
						// as layout-customization...ugly, eh?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbCustomizeLayoutEvent clEvt( event.mClickPos );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						OnCustomizeLayout( clEvt );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbSimpleCustomizationPlugin::OnCustomizeLayout( cbCustomizeLayoutEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxString helpStr1 = "Select this item to show the corresponding control bar";
 | 
				
			||||||
 | 
						wxString helpStr2 = "Select this itme to hide the corresponding control bar";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int id = CB_CUSTOMIZE_MENU_FIRST_ITEM_ID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxMenu* pMenu = new wxMenu();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BarArrayT& bars = mpLayout->GetBars();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for( size_t i = 0; i != bars.GetCount(); ++i )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbBarInfo& bar = *bars[i];
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							bool isHidden = ( bar.mState == wxCBAR_HIDDEN );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxString* pHelpStr = ( isHidden ) ? &helpStr1 : &helpStr2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pMenu->Append( id, bar.mName, *pHelpStr, TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pMenu->Check( id, (isHidden == FALSE) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							++id;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pMenu->AppendSeparator();
 | 
				
			||||||
 | 
						pMenu->Append( id, "Customize...", "Show layout customization dialog", FALSE );
 | 
				
			||||||
 | 
						mCustMenuItemId = id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbContextMenuHandler* pHandler = new cbContextMenuHandler();
 | 
				
			||||||
 | 
						pHandler->mpBackRef            = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxWindow* pFrm = &mpLayout->GetParentFrame();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FOR NOW FOR NOW:: to work-around wxFrame's (MSW) nasty event-handling bugs!!!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxWindow* pTmpWnd = new wxWindow( pFrm, -1, event.mClickPos, wxSize(0,0) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pMenu->SetEventHandler( pHandler );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pTmpWnd->PopupMenu( pMenu, 0,0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pTmpWnd->Destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						delete pMenu;
 | 
				
			||||||
 | 
						delete pHandler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// event is "eaten" by this plugin
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbSimpleCustomizationPlugin::OnMenuItemSelected( wxCommandEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( event.GetId() == mCustMenuItemId )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxMessageBox("Customization dialog box is not supported by this plugin yet");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbBarInfo* pBar = mpLayout->GetBars()[ event.GetId() - 
 | 
				
			||||||
 | 
																   CB_CUSTOMIZE_MENU_FIRST_ITEM_ID
 | 
				
			||||||
 | 
								                                 ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxASSERT( pBar ); // DBG::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// "inverse" bar-visibility of the selected bar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int newState = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( pBar->mState == wxCBAR_HIDDEN )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( pBar->mAlignment == -1 )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									pBar->mAlignment = 0;       // just remove "-1" marking
 | 
				
			||||||
 | 
									newState = wxCBAR_FLOATING;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								if ( pBar->mAlignment == FL_ALIGN_TOP ||
 | 
				
			||||||
 | 
									 pBar->mAlignment == FL_ALIGN_BOTTOM )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									newState = wxCBAR_DOCKED_HORIZONTALLY;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									newState = wxCBAR_DOCKED_VERTICALLY;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								newState = wxCBAR_HIDDEN;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( pBar->mState == wxCBAR_FLOATING )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pBar->mAlignment = -1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpLayout->SetBarState( pBar, newState, TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( newState == wxCBAR_FLOATING )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpLayout->RepositionFloatedBar( pBar ); 
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// menu-item-selected event is "eaten"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										3524
									
								
								contrib/src/fl/controlbar.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										517
									
								
								contrib/src/fl/dyntbar.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,517 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     ??/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "dyntbar.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/utils.h"     // import wxMin,wxMax macros
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbar.h"
 | 
				
			||||||
 | 
					#include "wx/fl/newbmpbtn.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS(wxDynamicToolBar, wxControl )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( wxDynamicToolBar, wxControl )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_SIZE ( wxDynamicToolBar::OnSize  )
 | 
				
			||||||
 | 
						EVT_PAINT( wxDynamicToolBar::OnPaint )
 | 
				
			||||||
 | 
						//EVT_ERASE_BACKGROUND( wxDynamicToolBar::OnEraseBackground )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class wxDynToolInfo *****/
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS(wxDynToolInfo, wxToolLayoutItem)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class wxDynamicToolBar *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDynamicToolBar::wxDynamicToolBar()
 | 
				
			||||||
 | 
						: mpLayoutMan( NULL ),
 | 
				
			||||||
 | 
						  mSepartorSize( 8 ),
 | 
				
			||||||
 | 
						  mVertGap ( 0 ),
 | 
				
			||||||
 | 
						  mHorizGap( 0 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDynamicToolBar::wxDynamicToolBar(wxWindow *parent, const wxWindowID id, 
 | 
				
			||||||
 | 
													   const wxPoint& pos, const wxSize& size,
 | 
				
			||||||
 | 
													   const long style, const int orientation,
 | 
				
			||||||
 | 
													   const int RowsOrColumns, const wxString& name )
 | 
				
			||||||
 | 
						: mpLayoutMan( NULL ),
 | 
				
			||||||
 | 
						  mSepartorSize( 8 ),
 | 
				
			||||||
 | 
						  mVertGap ( 0 ),
 | 
				
			||||||
 | 
						  mHorizGap( 0 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Create(parent, id, pos, size, style, orientation, RowsOrColumns, name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_3DFACE) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxDynamicToolBar::Create(wxWindow *parent, const wxWindowID id, 
 | 
				
			||||||
 | 
											      const wxPoint& pos, 
 | 
				
			||||||
 | 
												  const wxSize& size,
 | 
				
			||||||
 | 
												  const long style, 
 | 
				
			||||||
 | 
												  const int orientation, const int RowsOrColumns, 
 | 
				
			||||||
 | 
												  const wxString& name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// cut&pasted from wxtbatsmpl.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( ! wxWindow::Create(parent, id, pos, size, style, name) )
 | 
				
			||||||
 | 
							return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_3DFACE ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxDynamicToolBar::Realize(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// FOR NOW:: nothing
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDynamicToolBar::~wxDynamicToolBar(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpLayoutMan )
 | 
				
			||||||
 | 
					        delete mpLayoutMan;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
							delete mTools[i];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::AddTool( int toolIndex, 
 | 
				
			||||||
 | 
													wxWindow* pToolWindow, 
 | 
				
			||||||
 | 
													const wxSize& size
 | 
				
			||||||
 | 
											      )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxDynToolInfo* pInfo = new wxDynToolInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pInfo->mpToolWnd    = pToolWindow;
 | 
				
			||||||
 | 
						pInfo->mIndex       = toolIndex;
 | 
				
			||||||
 | 
						pInfo->mIsSeparator	= FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int x,y;
 | 
				
			||||||
 | 
						pToolWindow->GetSize( &x, &y );
 | 
				
			||||||
 | 
						pInfo->mRealSize.x = x;
 | 
				
			||||||
 | 
						pInfo->mRealSize.y = y;
 | 
				
			||||||
 | 
						pInfo->mRect.width = x;
 | 
				
			||||||
 | 
						pInfo->mRect.height = y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mTools.Add( pInfo );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::AddTool( int toolIndex, 
 | 
				
			||||||
 | 
													const wxString& imageFileName,
 | 
				
			||||||
 | 
													int imageFileType, 
 | 
				
			||||||
 | 
													const wxString& labelText, bool alignTextRight,
 | 
				
			||||||
 | 
													bool isFlat )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNewBitmapButton* pBtn =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						  new wxNewBitmapButton( imageFileName, imageFileType,
 | 
				
			||||||
 | 
												 labelText, 
 | 
				
			||||||
 | 
												 ( alignTextRight ) 
 | 
				
			||||||
 | 
												 ? NB_ALIGN_TEXT_RIGHT 
 | 
				
			||||||
 | 
												 : NB_ALIGN_TEXT_BOTTOM,
 | 
				
			||||||
 | 
												 isFlat
 | 
				
			||||||
 | 
											   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBtn->Create( this, toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBtn->Reshape();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						AddTool( toolIndex, pBtn );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					void wxDynamicToolBar::AddTool( int toolIndex, wxBitmap labelBmp,
 | 
				
			||||||
 | 
													const wxString& labelText, bool alignTextRight,
 | 
				
			||||||
 | 
													bool isFlat )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNewBitmapButton* pBtn =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						  new wxNewBitmapButton( labelBmp,
 | 
				
			||||||
 | 
												 labelText, 
 | 
				
			||||||
 | 
												 ( alignTextRight ) 
 | 
				
			||||||
 | 
												 ? NB_ALIGN_TEXT_RIGHT 
 | 
				
			||||||
 | 
												 : NB_ALIGN_TEXT_BOTTOM,
 | 
				
			||||||
 | 
												 isFlat
 | 
				
			||||||
 | 
											   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBtn->Create( this, toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBtn->Reshape();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						AddTool( toolIndex, pBtn );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  wxToolBarToolBase* 
 | 
				
			||||||
 | 
						  wxDynamicToolBar::AddTool(const int toolIndex, const wxBitmap& bitmap, 
 | 
				
			||||||
 | 
													const wxBitmap& pushedBitmap,
 | 
				
			||||||
 | 
													const bool toggle, const long xPos, 
 | 
				
			||||||
 | 
													const long yPos, wxObject *clientData,
 | 
				
			||||||
 | 
													const wxString& helpString1, const wxString& helpString2)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNewBitmapButton* pBmpBtn = new wxNewBitmapButton( bitmap );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBmpBtn->Create( this, toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pBmpBtn->Reshape();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						AddTool( toolIndex, pBmpBtn );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxDynToolInfo* wxDynamicToolBar::GetToolInfo( int toolIndex )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
							if ( mTools[i]->mIndex == toolIndex )
 | 
				
			||||||
 | 
					            return mTools[i];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::RemveTool( int toolIndex )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
							if ( mTools[i]->mIndex == toolIndex ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							    if ( mTools[i]->mpToolWnd )
 | 
				
			||||||
 | 
							    {
 | 
				
			||||||
 | 
								    mTools[i]->mpToolWnd->Destroy();
 | 
				
			||||||
 | 
							    }
 | 
				
			||||||
 | 
					            delete mTools[i]; // HVL To be tested!!!
 | 
				
			||||||
 | 
					#if wxCHECK_VERSION(2,3,2)
 | 
				
			||||||
 | 
								mTools.RemoveAt(i);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
								mTools.Remove(i);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
								Layout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
						// TODO:: if not found, should it be an assertion?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::AddSeparator( wxWindow* pSepartorWnd )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxDynToolInfo* pInfo = new wxDynToolInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pInfo->mpToolWnd    = pSepartorWnd;
 | 
				
			||||||
 | 
						pInfo->mIndex       = -1;
 | 
				
			||||||
 | 
						pInfo->mIsSeparator	= TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pSepartorWnd )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pSepartorWnd->Create( this, -1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int x,y;
 | 
				
			||||||
 | 
							pSepartorWnd->GetSize( &x, &y );
 | 
				
			||||||
 | 
							pInfo->mRealSize.x = x;
 | 
				
			||||||
 | 
							pInfo->mRealSize.y = y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pInfo->mRect.width = x;
 | 
				
			||||||
 | 
							pInfo->mRect.height = y;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pInfo->mRealSize.x = mSepartorSize;
 | 
				
			||||||
 | 
							pInfo->mRealSize.y = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pInfo->mRect.width  = mSepartorSize;
 | 
				
			||||||
 | 
							pInfo->mRect.height = 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mTools.Add( pInfo );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::OnEraseBackground( wxEraseEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// FOR NOW:: nothing
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::OnSize( wxSizeEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						//SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_3DFACE ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Layout();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::DrawSeparator( wxDynToolInfo& info, wxDC& dc )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// check the orientation of separator
 | 
				
			||||||
 | 
						if ( info.mRect.width < info.mRect.height )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int midX = info.mRect.x + info.mRect.width/2 - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							dc.SetPen( *wxGREY_PEN );
 | 
				
			||||||
 | 
							dc.DrawLine( midX, info.mRect.y,
 | 
				
			||||||
 | 
								         midX, info.mRect.y + info.mRect.height+1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							dc.SetPen( *wxWHITE_PEN );
 | 
				
			||||||
 | 
							dc.DrawLine( midX+1, info.mRect.y,
 | 
				
			||||||
 | 
								         midX+1, info.mRect.y + info.mRect.height+1 );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int midY = info.mRect.y + info.mRect.height/2 - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							dc.SetPen( *wxGREY_PEN );
 | 
				
			||||||
 | 
							dc.DrawLine( info.mRect.x, midY,
 | 
				
			||||||
 | 
								         info.mRect.x + info.mRect.width+1, midY );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							dc.SetPen( *wxWHITE_PEN );
 | 
				
			||||||
 | 
							dc.DrawLine( info.mRect.x, midY + 1,
 | 
				
			||||||
 | 
								         info.mRect.x + info.mRect.width+1, midY + 1 );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::OnPaint( wxPaintEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// draw separators if any
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPaintDC dc(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							if ( mTools[i]->mIsSeparator ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// check if separator doesn't have it's own window
 | 
				
			||||||
 | 
								// if so, then draw it using built-in drawing method
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( !mTools[i]->mpToolWnd )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									DrawSeparator( *mTools[i], dc );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FOR NOW:: quick fix
 | 
				
			||||||
 | 
					#include "wx/choice.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::SizeToolWindows()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxDynToolInfo& info = *mTools[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( !info.mIsSeparator ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// center real rectangle within the rectangle 
 | 
				
			||||||
 | 
								// provided by the layout manager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								int x = info.mRect.x;
 | 
				
			||||||
 | 
								int y = info.mRect.y + (info.mRect.height - info.mRealSize.y)/2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// FOR NOW FOR NOW:: quick & dirty fix
 | 
				
			||||||
 | 
								if ( info.mpToolWnd->IsKindOf( CLASSINFO( wxChoice ) ) )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									info.mpToolWnd->SetSize( x,y, 
 | 
				
			||||||
 | 
															info.mRealSize.x - 3, 
 | 
				
			||||||
 | 
															info.mRealSize.y);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									info.mpToolWnd->SetSize( x,y, 
 | 
				
			||||||
 | 
															info.mRealSize.x, 
 | 
				
			||||||
 | 
															info.mRealSize.y );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TBD:: size separator window if present
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxDynamicToolBar::Layout()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mpLayoutMan )
 | 
				
			||||||
 | 
					        mpLayoutMan = CreateDefaulLayout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int x,y;
 | 
				
			||||||
 | 
						GetSize( &x, &y );
 | 
				
			||||||
 | 
						wxSize wndDim(x,y);
 | 
				
			||||||
 | 
						wxSize result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxLayoutItemArrayT items;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// safe conversion
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
					        items.Add( mTools[i] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayoutMan->Layout( wndDim, result, items, mVertGap, mHorizGap );;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SizeToolWindows();
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::GetPreferredDim( const wxSize& givenDim, wxSize& prefDim )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mpLayoutMan )
 | 
				
			||||||
 | 
					        mpLayoutMan = CreateDefaulLayout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxLayoutItemArrayT items;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// safe conversion
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
						for( i = 0; i != mTools.Count(); ++i )
 | 
				
			||||||
 | 
					        items.Add( mTools[i] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayoutMan->Layout( givenDim, prefDim, items, mVertGap, mHorizGap );;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::SetLayout( LayoutManagerBase* pLayout )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpLayoutMan )
 | 
				
			||||||
 | 
					        delete mpLayoutMan;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayoutMan = pLayout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Layout();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::EnableTool(const int toolIndex, const bool enable )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxDynToolInfo* pInfo = GetToolInfo( toolIndex );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !pInfo )
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pInfo->mIsSeparator || !pInfo->mpToolWnd )
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pInfo->mpToolWnd->Enable( enable );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class BagLayout *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void BagLayout::Layout(  const wxSize&       parentDim, 
 | 
				
			||||||
 | 
											 wxSize&	         resultingDim,
 | 
				
			||||||
 | 
											 wxLayoutItemArrayT& items,
 | 
				
			||||||
 | 
											 int		         horizGap,
 | 
				
			||||||
 | 
					 		                 int		         vertGap  
 | 
				
			||||||
 | 
										  )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int maxWidth = 0;
 | 
				
			||||||
 | 
						int curY  = 0;
 | 
				
			||||||
 | 
						int nRows = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						size_t i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( i < items.Count() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int curX   = 0;
 | 
				
			||||||
 | 
							int height = 0;
 | 
				
			||||||
 | 
							// int nItems = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// int firstItem  = i;
 | 
				
			||||||
 | 
							int itemsInRow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( nRows > 0 )
 | 
				
			||||||
 | 
					            curY += vertGap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// step #1 - arrange horizontal positions of items in the row
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							do
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( itemsInRow > 0 )
 | 
				
			||||||
 | 
					                curX += horizGap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								wxRect& r = items[i]->mRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( curX + r.width > parentDim.x )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
									if ( itemsInRow > 0 ) 
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
								r.x = curX;
 | 
				
			||||||
 | 
								r.y = curY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								curX += r.width;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								height = wxMax( height, r.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								++itemsInRow;
 | 
				
			||||||
 | 
								++i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} while( i < items.Count() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							curY += height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							maxWidth = wxMax( maxWidth, curX );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resultingDim.x = maxWidth;
 | 
				
			||||||
 | 
						resultingDim.y = curY;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//////// stuff from 2.1.15 ///////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxToolBarToolBase* wxDynamicToolBar::FindToolForPosition( wxCoord x, wxCoord y ) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxDynamicToolBar::DoInsertTool( size_t pos, wxToolBarToolBase* tool )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxDynamicToolBar::DoDeleteTool( size_t pos, wxToolBarToolBase* tool )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::DoEnableTool( wxToolBarToolBase* tool, bool enable )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::DoToggleTool( wxToolBarToolBase* tool, bool toggle )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxDynamicToolBar::DoSetToggle( wxToolBarToolBase* tool, bool toggle )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxToolBarToolBase* wxDynamicToolBar::CreateTool( int id, const wxBitmap& bitmap1, const wxBitmap& bitmap2, bool toggle, wxObject* clientData, const wxString& shortHelpString, const wxString& longHelpString )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxToolBarToolBase* wxDynamicToolBar::CreateTool( wxControl* control )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										49
									
								
								contrib/src/fl/dyntbarhnd.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     23/01/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "dyntbarhnd.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/dyntbarhnd.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbDynToolBarDimHandler *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbDynToolBarDimHandler, cbBarDimHandlerBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbDynToolBarDimHandler::OnChangeBarState(cbBarInfo* pBar, int newState )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// nothing
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbDynToolBarDimHandler::OnResizeBar( cbBarInfo* pBar, 
 | 
				
			||||||
 | 
															  const wxSize& given, 
 | 
				
			||||||
 | 
															  wxSize& preferred )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxASSERT( pBar->mpBarWnd ); // DBG:: should be present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxDynamicToolBar* pTBar = (wxDynamicToolBar*)pBar->mpBarWnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pTBar->GetPreferredDim( given, preferred );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								contrib/src/fl/files.lst
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					FL_OBJECTS  = \
 | 
				
			||||||
 | 
					   antiflickpl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   gcupdatesmgr.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   rowlayoutpl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   bardragpl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   dyntbar.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   hintanimpl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   toolwnd.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   barhintspl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   dyntbarhnd.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   newbmpbtn.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   updatesmgr.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   cbcustom.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   frmview.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   panedrawpl.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   controlbar.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   garbagec.$(OBJ_EXT) \
 | 
				
			||||||
 | 
					   rowdragpl.$(OBJ_EXT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										230
									
								
								contrib/src/fl/flVC.dsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,230 @@
 | 
				
			|||||||
 | 
					# Microsoft Developer Studio Project File - Name="flVC" - Package Owner=<4>
 | 
				
			||||||
 | 
					# Microsoft Developer Studio Generated Build File, Format Version 6.00
 | 
				
			||||||
 | 
					# ** DO NOT EDIT **
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TARGTYPE "Win32 (x86) Static Library" 0x0104
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFG=flVC - Win32 Debug
 | 
				
			||||||
 | 
					!MESSAGE This is not a valid makefile. To build this project using NMAKE,
 | 
				
			||||||
 | 
					!MESSAGE use the Export Makefile command and run
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "flVC.mak".
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE You can specify a configuration when running NMAKE
 | 
				
			||||||
 | 
					!MESSAGE by defining the macro CFG on the command line. For example:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE NMAKE /f "flVC.mak" CFG="flVC - Win32 Debug"
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE Possible choices for configuration are:
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					!MESSAGE "flVC - Win32 Release" (based on "Win32 (x86) Static Library")
 | 
				
			||||||
 | 
					!MESSAGE "flVC - Win32 Debug" (based on "Win32 (x86) Static Library")
 | 
				
			||||||
 | 
					!MESSAGE 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Project
 | 
				
			||||||
 | 
					# PROP AllowPerConfigDependencies 0
 | 
				
			||||||
 | 
					# PROP Scc_ProjName ""
 | 
				
			||||||
 | 
					# PROP Scc_LocalPath ""
 | 
				
			||||||
 | 
					CPP=cl.exe
 | 
				
			||||||
 | 
					RSC=rc.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!IF  "$(CFG)" == "flVC - Win32 Release"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 0
 | 
				
			||||||
 | 
					# PROP Output_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Release"
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__HACK_MY_MSDEV40__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
 | 
				
			||||||
 | 
					# SUBTRACT CPP /YX
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LIB32=link.exe -lib
 | 
				
			||||||
 | 
					# ADD BASE LIB32 /nologo
 | 
				
			||||||
 | 
					# ADD LIB32 /nologo /out:"..\..\..\lib\fl.lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ELSEIF  "$(CFG)" == "flVC - Win32 Debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP BASE Use_MFC 0
 | 
				
			||||||
 | 
					# PROP BASE Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP BASE Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP BASE Target_Dir ""
 | 
				
			||||||
 | 
					# PROP Use_MFC 0
 | 
				
			||||||
 | 
					# PROP Use_Debug_Libraries 1
 | 
				
			||||||
 | 
					# PROP Output_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Intermediate_Dir "Debug"
 | 
				
			||||||
 | 
					# PROP Target_Dir ""
 | 
				
			||||||
 | 
					# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
 | 
				
			||||||
 | 
					# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
 | 
				
			||||||
 | 
					# SUBTRACT CPP /YX
 | 
				
			||||||
 | 
					# ADD BASE RSC /l 0x809
 | 
				
			||||||
 | 
					# ADD RSC /l 0x809
 | 
				
			||||||
 | 
					BSC32=bscmake.exe
 | 
				
			||||||
 | 
					# ADD BASE BSC32 /nologo
 | 
				
			||||||
 | 
					# ADD BSC32 /nologo
 | 
				
			||||||
 | 
					LIB32=link.exe -lib
 | 
				
			||||||
 | 
					# ADD BASE LIB32 /nologo
 | 
				
			||||||
 | 
					# ADD LIB32 /nologo /out:"..\..\..\lib\fld.lib"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!ENDIF 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Begin Target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Name "flVC - Win32 Release"
 | 
				
			||||||
 | 
					# Name "flVC - Win32 Debug"
 | 
				
			||||||
 | 
					# Begin Group "Headers"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# PROP Default_Filter ""
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\antiflickpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\bardragpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\barhintspl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\cbcustom.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\controlbar.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\dynbarhnd.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\dyntbar.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\dyntbarhnd.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\frmview.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\garbagec.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\gcupdatesmgr.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\hintanimpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\newbmpbtn.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\panedrawpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\rowdragpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\rowlayoutpl.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\toolwnd.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=..\..\include\wx\fl\updatesmgr.h
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Group
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\antiflickpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\bardragpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\barhintspl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\cbcustom.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\controlbar.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\dyntbar.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\dyntbarhnd.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\frmview.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\garbagec.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\gcupdatesmgr.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\hintanimpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\newbmpbtn.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\panedrawpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\rowdragpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\rowlayoutpl.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\toolwnd.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# Begin Source File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE=.\updatesmgr.cpp
 | 
				
			||||||
 | 
					# End Source File
 | 
				
			||||||
 | 
					# End Target
 | 
				
			||||||
 | 
					# End Project
 | 
				
			||||||
							
								
								
									
										29
									
								
								contrib/src/fl/flVC.dsw
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					Microsoft Developer Studio Workspace File, Format Version 6.00
 | 
				
			||||||
 | 
					# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project: "flVC"=.\flVC.dsp - Package Owner=<4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<4>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Global:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<5>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package=<3>
 | 
				
			||||||
 | 
					{{{
 | 
				
			||||||
 | 
					}}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										451
									
								
								contrib/src/fl/frmview.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,451 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     02/01/99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "frmview.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/frmview.h"
 | 
				
			||||||
 | 
					#include "wx/utils.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class wxFrameView *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( wxFrameView, wxEvtHandler )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_IDLE( wxFrameView::OnIdle )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::OnIdle( wxIdleEvent& event)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						event.Skip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mDoToolUpdates )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							int o = 0;  //glt
 | 
				
			||||||
 | 
							++o;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// TBD::
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** public methods ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameView::wxFrameView()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: mpLayout( NULL ),
 | 
				
			||||||
 | 
						  mpFrameMgr( NULL )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameView::~wxFrameView()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpLayout ) delete mpLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrame* wxFrameView::GetParentFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mpFrameMgr->GetParentFrame();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWindow* wxFrameView::GetClientWindow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mpFrameMgr->GetClientWindow();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::Activate()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpFrameMgr->ActivateView( this );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::Deactivate()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpFrameMgr->DeactivateCurrentView();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::CreateLayout()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpLayout = new wxFrameLayout( GetParentFrame(), mpFrameMgr->GetClientWindow(), FALSE );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameLayout* wxFrameView::GetLayout()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mpLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::SetToolUpdates( bool doToolUpdates )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mDoToolUpdates = doToolUpdates;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::SetLayout( wxFrameLayout* pLayout )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpLayout ) delete mpLayout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout = pLayout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameManager& wxFrameView::GetFrameManager()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return *mpFrameMgr;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameView::RegisterMenu( const wxString& topMenuName )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mTopMenus.Add( topMenuName );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class wxFrameViewSerializer *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NOTE:: currently "stipple" property of the brush is not serialized
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxFrameViewSerializer : public wxEvtHandlerSerializer
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DECLARE_SERIALIZER_CLASS( wxFrameViewSerializer );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static void Serialize( wxObject* pObj, wxObjectStorage& store );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_SERIALIZER_CLASS( wxFrameView, 
 | 
				
			||||||
 | 
												wxFrameViewSerializer,
 | 
				
			||||||
 | 
												wxFrameViewSerializer::Serialize,
 | 
				
			||||||
 | 
												NO_CLASS_INIT )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameViewSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// wxFrameViewSerializer is a kind of wxEvtHandler - peform serialization of
 | 
				
			||||||
 | 
						// the base class first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						info.SerializeInherited( pObj, store );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrameView* pView = (wxFrameView*)pObj;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						store.XchgObjPtr( (wxObject**) &pView->mpFrameMgr );
 | 
				
			||||||
 | 
						store.XchgObjPtr( (wxObject**) &pView->mpLayout );
 | 
				
			||||||
 | 
						store.XchgBool  ( pView->mDoToolUpdates );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// serialize members in derived classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pView->OnSerialize( store );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class wxFrameManager *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::DoSerialize( wxObjectStorage& store )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						store.AddInitialRef( mpFrameWnd );
 | 
				
			||||||
 | 
						store.AddInitialRef( this );
 | 
				
			||||||
 | 
						if ( mpClientWnd ) store.AddInitialRef( mpClientWnd );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						store.XchgObj( (wxObject*) &mViews );
 | 
				
			||||||
 | 
						store.XchgInt( mActiveViewNo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						store.Finalize(); // finish serialization
 | 
				
			||||||
 | 
					#endif 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::DestroyViews()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DeactivateCurrentView();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							delete (wxFrameView*)pNode->Data();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mActiveViewNo != -1 && GetParentFrame() )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GetParentFrame()->SetNextHandler( NULL );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int wxFrameManager::GetViewNo( wxFrameView* pView )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.First();
 | 
				
			||||||
 | 
						int n = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( (wxFrameView*)pNode->Data() == pView )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							++n;
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::EnableMenusForView( wxFrameView* pView, bool enable )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxMenuBar* pMenuBar = GetParentFrame()->GetMenuBar();
 | 
				
			||||||
 | 
						int count = pMenuBar->GetMenuCount();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !pMenuBar ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxStringListNode* pNode = pView->mTopMenus.GetFirst();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							for( int i = 0; i != count; ++i )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( pMenuBar->GetMenu(i)->GetTitle() == pNode->GetData() )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pMenuBar->EnableTop( i, enable );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->GetNext();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::SyncAllMenus()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.First();
 | 
				
			||||||
 | 
						int i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( i != mActiveViewNo )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								EnableMenusForView( (wxFrameView*)pNode->GetData(), FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EnableMenusForView( GetView( mActiveViewNo ), TRUE );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** public methods ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameManager::wxFrameManager()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: mpFrameWnd( NULL  ),
 | 
				
			||||||
 | 
						  mActiveViewNo( -1 ),
 | 
				
			||||||
 | 
						  mpClientWnd( NULL )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameManager::~wxFrameManager()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						SaveViewsNow();
 | 
				
			||||||
 | 
						DestroyViews();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::Init( wxWindow* pMainFrame, const wxString& settingsFile )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mSettingsFile = settingsFile;
 | 
				
			||||||
 | 
						mpFrameWnd    = pMainFrame;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxFrameView* pView = (wxFrameView*)pNode->Data();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pView->OnInit();
 | 
				
			||||||
 | 
							pView->OnInitMenus();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !ReloadViews() )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// if loading of settings file failed (e.g. was not found), 
 | 
				
			||||||
 | 
							// do recreation of items in each view
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = mViews.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while( pNode )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxFrameView* pView = (wxFrameView*)pNode->Data();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pView->OnRecreate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pNode = pNode->Next();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mActiveViewNo >= mViews.Number() )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							mActiveViewNo = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ActivateView( GetView( ( mActiveViewNo == -1 ) ? 0 : mActiveViewNo ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SyncAllMenus();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::AddView( wxFrameView* pFrmView )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mViews.Append( pFrmView );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pFrmView->mpFrameMgr = this; // back ref.
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::RemoveView( wxFrameView* pFrmView )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// TBD::
 | 
				
			||||||
 | 
						int avoidCompilerWarning = 0;
 | 
				
			||||||
 | 
						wxASSERT(avoidCompilerWarning);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int wxFrameManager::GetActiveViewNo()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mActiveViewNo;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameView* wxFrameManager::GetActiveView()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.Nth( mActiveViewNo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pNode ) return (wxFrameView*)pNode->Data();
 | 
				
			||||||
 | 
								else return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxNode* wxFrameManager::GetActiveViewNode()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mViews.Nth( mActiveViewNo );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrame* wxFrameManager::GetParentFrame()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ((wxFrame*)mpFrameWnd);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWindow* wxFrameManager::GetParentWindow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mpFrameWnd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxFrameView* wxFrameManager::GetView( int viewNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mViews.Nth( viewNo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pNode ) return (wxFrameView*)pNode->Data();
 | 
				
			||||||
 | 
								else return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::ActivateView( int viewNo )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ActivateView( GetView( viewNo ) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::ActivateView( wxFrameView* pFrmView )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DeactivateCurrentView();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mActiveViewNo = GetViewNo( pFrmView );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pFrmView->mpLayout )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pFrmView->mpLayout->Activate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FIXME:: we would have used PushEventHandler(),
 | 
				
			||||||
 | 
						//         but wxFrame bypasses attached handlers when
 | 
				
			||||||
 | 
						//         handling wxCommand events!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GetParentFrame()->PushEventHandler( pFrmView );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EnableMenusForView( pFrmView, TRUE );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::SetClinetWindow( wxWindow* pFrameClient )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpClientWnd ) mpClientWnd->Destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpClientWnd = pFrameClient;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWindow* wxFrameManager::GetClientWindow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mpClientWnd )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpClientWnd = new wxWindow( GetParentFrame(), -1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return mpClientWnd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::DeactivateCurrentView()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mActiveViewNo == -1 ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxFrameView* pView = GetActiveView();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FOR NOW::
 | 
				
			||||||
 | 
						wxASSERT( GetParentFrame()->GetEventHandler() == pView );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GetParentFrame()->PopEventHandler();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( pView->mpLayout )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pView->mpLayout->Deactivate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EnableMenusForView( pView, FALSE );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wxFrameManager::SaveViewsNow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						if ( mSettingsFile == "" ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxIOStreamWrapper stm;
 | 
				
			||||||
 | 
					    stm.CreateForOutput( mSettingsFile );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mStore.SetDataStream( stm );
 | 
				
			||||||
 | 
					    DoSerialize( mStore );
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxFrameManager::ReloadViews()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TBD: ????
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						if ( mSettingsFile == "" || !wxFileExists( mSettingsFile ) ) 
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DestroyViews();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxIOStreamWrapper stm;
 | 
				
			||||||
 | 
					    stm.CreateForInput( mSettingsFile );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mStore.SetDataStream( stm );
 | 
				
			||||||
 | 
					    DoSerialize( mStore );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wxFrameManager::ViewsAreLoaded()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return ( mViews.Number() != 0 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										224
									
								
								contrib/src/fl/garbagec.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,224 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     18/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "garbagec.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx/wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/garbagec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class GarbageCollector *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline static GCItem& node_to_item( wxNode* pNode )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return *( (GCItem*)(pNode->Data()) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GarbageCollector::~GarbageCollector()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Reset();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** GC alg. helpers ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::DestroyItemList( wxList& lst )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = lst.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							delete &node_to_item( pNode );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lst.Clear();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxNode* GarbageCollector::FindItemNode( void* pForObj )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mAllNodes.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( node_to_item( pNode ).mpObj == pForObj )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return pNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int avoidCompilerWarning = 0;
 | 
				
			||||||
 | 
						wxASSERT(avoidCompilerWarning); // DBG:: item should be present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxNode* GarbageCollector::FindReferenceFreeItemNode()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mAllNodes.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( node_to_item( pNode ).mRefs.Number() == 0 ) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return pNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::RemoveReferencesToNode( wxNode* pItemNode )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mAllNodes.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxList& refLst   = node_to_item( pNode ).mRefs;
 | 
				
			||||||
 | 
							wxNode* pRefNode = refLst.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while( pRefNode )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( pRefNode->Data() == (wxObject*)pItemNode )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									wxNode* pNext = pRefNode->Next();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									refLst.DeleteNode( pRefNode );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pRefNode = pNext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else pRefNode = pRefNode->Next();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::ResolveReferences()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode = mAllNodes.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							GCItem& item = node_to_item( pNode );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxNode* pRefNode = item.mRefs.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while( pRefNode )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								pRefNode->SetData( (wxObject*) FindItemNode( (void*)pRefNode->Data() ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pRefNode = pRefNode->Next();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::AddObject( void* pObj, int refCnt )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// FOR NOW:: initial ref-count is not used
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GCItem* pItem = new GCItem();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pItem->mpObj  = pObj;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mAllNodes.Append( (wxObject*) pItem );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::AddDependency( void* pObj, void* pDependsOnObj )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						node_to_item( FindItemNode( pObj ) ).mRefs.Append( (wxObject*)pDependsOnObj );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** GC alg. implementation ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::ArrangeCollection()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						ResolveReferences();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						do
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// find node, which does not depend on anything
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxNode* pItemNode = FindReferenceFreeItemNode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( pItemNode )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// append it to the list, where items are contained
 | 
				
			||||||
 | 
								// in the increasing order of dependencies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mRegularLst.Append( pItemNode->Data() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mAllNodes.DeleteNode( pItemNode );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// remove references to this current "least-dependent" node
 | 
				
			||||||
 | 
								// from reference lists of all the other nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								RemoveReferencesToNode( pItemNode );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// otherwise, what is left - all nodes, which
 | 
				
			||||||
 | 
								// are involved into cycled chains (rings)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								wxNode* pNode = mAllNodes.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								while( pNode )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									mCycledLst.Append( pNode->Data() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pNode = pNode->Next();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// continue search for "least-dependent" nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} while(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxList& GarbageCollector::GetRegularObjects()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mRegularLst;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxList& GarbageCollector::GetCycledObjects()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return mCycledLst;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GarbageCollector::Reset()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DestroyItemList( mAllNodes   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mRegularLst.Clear();
 | 
				
			||||||
 | 
						mCycledLst.Clear();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										409
									
								
								contrib/src/fl/gcupdatesmgr.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,409 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19/10/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas 
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "gcupdatesmgr.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/gcupdatesmgr.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool rect_hits_rect( const wxRect& r1, const wxRect& r2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( ( r2.x >= r1.x && r2.x <= r1.x + r1.width ) ||
 | 
				
			||||||
 | 
							 ( r1.x >= r2.x && r1.x <= r2.x + r2.width ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( ( r2.y >= r1.y && r2.y <= r1.y + r1.height ) ||
 | 
				
			||||||
 | 
								 ( r1.y >= r2.y && r1.y <= r2.y + r2.height ) )
 | 
				
			||||||
 | 
								 
 | 
				
			||||||
 | 
								return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// helper structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct cbRectInfo
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbBarInfo*  mpBar;
 | 
				
			||||||
 | 
						cbDockPane* mpPane;
 | 
				
			||||||
 | 
						wxRect*     mpCurBounds;
 | 
				
			||||||
 | 
						wxRect*     mpPrevBounds;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline cbRectInfo& node_to_rect_info( wxNode* pNode )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return *( (cbRectInfo*) (pNode->Data()) );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbSimpleUpdatesMgr *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbGCUpdatesMgr, cbSimpleUpdatesMgr )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbGCUpdatesMgr::cbGCUpdatesMgr( wxFrameLayout* pPanel )
 | 
				
			||||||
 | 
						: cbSimpleUpdatesMgr( pPanel )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbGCUpdatesMgr::AddItem( wxList&     itemList,
 | 
				
			||||||
 | 
											      cbBarInfo*  pBar, 
 | 
				
			||||||
 | 
												  cbDockPane* pPane,
 | 
				
			||||||
 | 
												  wxRect&     curBounds,
 | 
				
			||||||
 | 
												  wxRect&     prevBounds )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbRectInfo* pInfo = new cbRectInfo();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pInfo->mpBar     = pBar;
 | 
				
			||||||
 | 
						pInfo->mpPane       = pPane;
 | 
				
			||||||
 | 
						pInfo->mpCurBounds  = &curBounds;
 | 
				
			||||||
 | 
						pInfo->mpPrevBounds = &prevBounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						itemList.Append( (wxObject*) pInfo );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbGCUpdatesMgr::OnStartChanges()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// memorize states of ALL items in the layout -
 | 
				
			||||||
 | 
						// this is quite excessive, but OK for the decent 
 | 
				
			||||||
 | 
						// implementation of updates manager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout->GetPrevClientRect() = mpLayout->GetClientRect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cbDockPane** panes = mpLayout->GetPanesArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for( int n = 0; n != MAX_PANES; ++n )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbDockPane& pane = *(panes[n]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// store pane state
 | 
				
			||||||
 | 
							pane.mUMgrData.StoreItemState( pane.mBoundsInParent );
 | 
				
			||||||
 | 
							pane.mUMgrData.SetDirty( FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cbRowInfo* pRow = pane.GetFirstRow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while ( pRow )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								cbBarInfo* pBar = pRow->GetFirstBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// store row state
 | 
				
			||||||
 | 
								pRow->mUMgrData.StoreItemState( pRow->mBoundsInParent );
 | 
				
			||||||
 | 
								pRow->mUMgrData.SetDirty( FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								while( pBar )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// store bar state
 | 
				
			||||||
 | 
									pBar->mUMgrData.StoreItemState( pBar->mBoundsInParent );
 | 
				
			||||||
 | 
									pBar->mUMgrData.SetDirty( FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pBar = pBar->mpNext;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pRow = pRow->mpNext;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbGCUpdatesMgr::UpdateNow()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cbDockPane** panes = mpLayout->GetPanesArray();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect& r1 = mpLayout->GetClientRect();
 | 
				
			||||||
 | 
						wxRect& r2 = mpLayout->GetPrevClientRect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// detect changes in client window's area
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool clientWindowChanged = ( r1.x      != r2.x     ||
 | 
				
			||||||
 | 
							                         r1.y      != r2.y     ||
 | 
				
			||||||
 | 
													 r1.width  != r2.width ||
 | 
				
			||||||
 | 
													 r1.height != r2.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// step #1 - detect changes in each row of each pane,
 | 
				
			||||||
 | 
						//           and repaint decorations around changed windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxList mBarsToResize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for( int n = 0; n != MAX_PANES; ++n )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbDockPane& pane = *(panes[n]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool paneChanged = WasChanged( pane.mUMgrData, pane.mBoundsInParent );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( paneChanged )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxClientDC dc( &mpLayout->GetParentFrame() );
 | 
				
			||||||
 | 
								pane.PaintPaneBackground( dc );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxRect realBounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cbRowInfo* pRow = pane.GetFirstRow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while ( pRow )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxDC* pDc = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cbBarInfo* pBar = pRow->GetFirstBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								bool rowChanged = FALSE;
 | 
				
			||||||
 | 
								bool rowBkPainted  = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// FIXME:: the below should not be fixed
 | 
				
			||||||
 | 
								cbBarInfo* barsToRepaint[128];
 | 
				
			||||||
 | 
								// number of bars, that were changed in the current row
 | 
				
			||||||
 | 
								int nBars = 0; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								wxRect r1 = pRow->mUMgrData.mPrevBounds;
 | 
				
			||||||
 | 
								wxRect r2 = pRow->mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( WasChanged( pRow->mUMgrData, pRow->mBoundsInParent ) )
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									rowChanged = TRUE;
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									while( pBar )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if ( WasChanged( pBar->mUMgrData, pBar->mBoundsInParent ) )
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
											barsToRepaint[nBars++] = pBar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										pBar = pBar->mpNext;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( nBars || rowChanged )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									realBounds = pRow->mBoundsInParent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// include 1-pixel thick shades around the row
 | 
				
			||||||
 | 
									realBounds.x -= 1;
 | 
				
			||||||
 | 
									realBounds.y -= 1;
 | 
				
			||||||
 | 
									realBounds.width  += 2;
 | 
				
			||||||
 | 
									realBounds.height += 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pDc = pane.StartDrawInArea( realBounds );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( rowChanged )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// postphone the resizement and refreshing the changed
 | 
				
			||||||
 | 
									// bar windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cbBarInfo* pCurBar = pRow->GetFirstBar();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									while( pCurBar )
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										if ( WasChanged( pCurBar->mUMgrData, 
 | 
				
			||||||
 | 
														 pCurBar->mBoundsInParent ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											AddItem( mBarsToResize, pCurBar, &pane, 
 | 
				
			||||||
 | 
													 pCurBar->mBoundsInParent,
 | 
				
			||||||
 | 
													 pCurBar->mUMgrData.mPrevBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										pCurBar = pCurBar->mpNext;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// draw only their decorations now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pane.PaintRow( pRow, *pDc );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								if ( nBars != 0 )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									for( int i = 0; i != nBars; ++i )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// postphone the resizement and refreshing the changed
 | 
				
			||||||
 | 
										// bar windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										AddItem( mBarsToResize, 
 | 
				
			||||||
 | 
												 barsToRepaint[i], 
 | 
				
			||||||
 | 
												 &pane, 
 | 
				
			||||||
 | 
											     barsToRepaint[i]->mBoundsInParent,
 | 
				
			||||||
 | 
												 barsToRepaint[i]->mUMgrData.mPrevBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// redraw decorations of entire row, regardless of how much
 | 
				
			||||||
 | 
									// of the bars were changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									pane.PaintRow( pRow, *pDc );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( pDc )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
									pane.FinishDrawInArea( realBounds );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pRow = pRow->mpNext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} // end of while
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( paneChanged )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxClientDC dc( &mpLayout->GetParentFrame() );
 | 
				
			||||||
 | 
								pane.PaintPaneDecorations( dc );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} // end of for
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( clientWindowChanged && !mpLayout->mClientWndRefreshPending )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// ptr to client-window object is "marked" as NULL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							AddItem( mBarsToResize, NULL, NULL, 
 | 
				
			||||||
 | 
								     mpLayout->GetClientRect(),
 | 
				
			||||||
 | 
									 mpLayout->GetPrevClientRect() );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// step #2 - do ordered refreshing and resizing of bar window objects now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DoRepositionItems( mBarsToResize );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbGCUpdatesMgr::DoRepositionItems( wxList& items )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxNode* pNode1 = items.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbRectInfo& info = node_to_rect_info( pNode1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxNode* pNode2 = items.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// and node itself
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mGC.AddObject( &info );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while( pNode2 )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if ( pNode2 != pNode1 ) // node should not depend on itself
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// add references to objects, on which this object
 | 
				
			||||||
 | 
									// depends. Dependecy here indicates intersection of current
 | 
				
			||||||
 | 
									// bounds of this object with the initial bounds of the
 | 
				
			||||||
 | 
									// other object
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cbRectInfo& otherInfo = node_to_rect_info( pNode2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if ( rect_hits_rect( *info.mpCurBounds, *otherInfo.mpPrevBounds ) )
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
														// the node    depends on node
 | 
				
			||||||
 | 
										mGC.AddDependency( &info,      &otherInfo      );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pNode2 = pNode2->Next();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode1 = pNode1->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mGC.ArrangeCollection(); // order nodes according "least-dependency" rule,
 | 
				
			||||||
 | 
							                     // and find out cycled chains
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// regular item nodes need to be resized, but not repainted (since
 | 
				
			||||||
 | 
						// they stand in linear (not cyclic) dependency with other
 | 
				
			||||||
 | 
						// regular nodes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxNode* pNode = mGC.GetRegularObjects().First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( info.mpBar == NULL ) 
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								mpLayout->PositionClientWindow();
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								info.mpPane->SizeBar( info.mpBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// cycled item nodes, need to be both resized and repainted
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pNode = mGC.GetCycledObjects().First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbRectInfo& info = *((cbRectInfo*)gc_node_to_obj(pNode));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( info.mpBar == NULL ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxWindow* pClntWnd = mpLayout->GetFrameClient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpLayout->PositionClientWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// FIXME FIXME:: excessive!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pClntWnd->Show( FALSE );
 | 
				
			||||||
 | 
								pClntWnd->Show( TRUE  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// OLD STUFF:: mpLayout->PositionClientWindow();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							if ( info.mpBar->mpBarWnd )
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								wxWindow* pWnd = info.mpBar->mpBarWnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// resize
 | 
				
			||||||
 | 
								info.mpPane->SizeBar( info.mpBar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// repaint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								/* OLD STUFF:: bool isChoice = info.mpBar->IsKindOf( CLASSINFO( wxChoice ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								//#ifdef __WINDOWS__
 | 
				
			||||||
 | 
								//int result = ::SendMessage( (HWND)pWnd->m_hWnd, WM_NCPAINT, 0, 0 );
 | 
				
			||||||
 | 
								//#endif
 | 
				
			||||||
 | 
								*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// FIXME FIXME:: there's no other way to repaint non-client area of the wxWindow!!
 | 
				
			||||||
 | 
								//				 so we do *excessive* "hide 'n show"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pWnd->Show(FALSE);
 | 
				
			||||||
 | 
								pWnd->Show(TRUE);
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
								pWnd->Refresh();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// release data prepared for GC alg.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pNode = items.First();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while( pNode )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cbRectInfo* pInfo = (cbRectInfo*)(pNode->Data());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							delete pInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pNode = pNode->Next();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mGC.Reset(); // reinit GC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// FIXME:: this is a dirty-workaround for messy client-area,
 | 
				
			||||||
 | 
						//         as a result of docking bar out of floated-container window
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpLayout->mClientWndRefreshPending )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mpLayout->PositionClientWindow();
 | 
				
			||||||
 | 
							mpLayout->GetFrameClient()->Refresh();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										397
									
								
								contrib/src/fl/hintanimpl.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,397 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        No names yet.
 | 
				
			||||||
 | 
					// Purpose:     Contrib. demo
 | 
				
			||||||
 | 
					// Author:      Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     9/11/98
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) Aleksandras Gluchovas
 | 
				
			||||||
 | 
					// Licence:   	wxWindows license
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma implementation "hintanimpl.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// For compilers that support precompilation, includes "wx.h".
 | 
				
			||||||
 | 
					#include "wx/wxprec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __BORLANDC__
 | 
				
			||||||
 | 
					#pragma hdrstop
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WX_PRECOMP
 | 
				
			||||||
 | 
					#include "wx/wx.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/fl/hintanimpl.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define POS_UNDEFINED -32768
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbHintAnimationPlugin *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME:: some of the below code should be eliminated by 
 | 
				
			||||||
 | 
					//         reusing parts of cbBarDragPlugin's implementation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS( cbHintAnimationPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BEGIN_EVENT_TABLE( cbHintAnimationPlugin, cbPluginBase )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EVT_PL_DRAW_HINT_RECT( cbHintAnimationPlugin::OnDrawHintRect )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbHintAnimationPlugin::cbHintAnimationPlugin(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: mpScrDc( NULL ),
 | 
				
			||||||
 | 
						  mpAnimTimer( 0 ),
 | 
				
			||||||
 | 
						  mAnimStarted( FALSE ),
 | 
				
			||||||
 | 
						  
 | 
				
			||||||
 | 
						  mMorphDelay    ( 5   ),
 | 
				
			||||||
 | 
						  mMaxFrames     ( 20   ),
 | 
				
			||||||
 | 
					      mInClientHintBorder( 4 ),
 | 
				
			||||||
 | 
						  mAccelerationOn( TRUE )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbHintAnimationPlugin::cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						: cbPluginBase( pPanel, paneMask ),
 | 
				
			||||||
 | 
						  mpScrDc( NULL ),
 | 
				
			||||||
 | 
						  mpAnimTimer( 0 ),
 | 
				
			||||||
 | 
						  mAnimStarted( FALSE ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						  mMorphDelay    ( 5   ),
 | 
				
			||||||
 | 
						  mMaxFrames     ( 20   ),
 | 
				
			||||||
 | 
						  mInClientHintBorder( 4 ),
 | 
				
			||||||
 | 
						  mAccelerationOn( TRUE )
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbHintAnimationPlugin::~cbHintAnimationPlugin()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( mpScrDc ) delete mpScrDc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** rect-tracking related methods ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::OnDrawHintRect( cbDrawHintRectEvent& event )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if ( !mAnimStarted && !mpScrDc ) 
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							StartTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevInClient = event.mIsInClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevRect = event.mRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mStopPending = FALSE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !event.mEraseRect )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// pass on current hint-rect info to the animation "thread", in 
 | 
				
			||||||
 | 
							// order to make adjustments to the morph-target on-the-fly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mCurRect.x = event.mRect.x;
 | 
				
			||||||
 | 
							mCurRect.y = event.mRect.y;
 | 
				
			||||||
 | 
							mCurRect.width  = event.mRect.width;
 | 
				
			||||||
 | 
							mCurRect.height = event.mRect.height;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// check the amount of change in the shape of hint,
 | 
				
			||||||
 | 
						// and start morph-effect if change is "sufficient"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int change = abs( mCurRect.width  - mPrevRect.width  ) +
 | 
				
			||||||
 | 
								     abs( mCurRect.height - mPrevRect.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( change > 10 && !event.mLastTime && !event.mEraseRect )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if ( !mpAnimTimer )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								mpAnimTimer  = new cbHintAnimTimer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// init the animation "thread", or reinit if already started
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpAnimTimer->Init( this, mAnimStarted );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mAnimStarted = TRUE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						if ( !mAnimStarted )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							DoDrawHintRect( event.mRect, event.mIsInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( event.mLastTime )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								FinishTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevInClient = event.mIsInClient;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mCurInClient = event.mIsInClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if ( event.mLastTime && mpAnimTimer ) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								mStopPending = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if ( mpAnimTimer->mPrevMorphed.x != POS_UNDEFINED )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// erase previous rect
 | 
				
			||||||
 | 
									DoDrawHintRect( mpAnimTimer->mPrevMorphed, mPrevInClient );
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mPrevRect = event.mRect;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define _IMG_A  0xAA    // Note: modified from _A to _IMG_A, _A was already defined (cygwin)
 | 
				
			||||||
 | 
					#define _IMG_B  0x00    // Note: modified from _B to _IMG_A, _B was already defined (cygwin)
 | 
				
			||||||
 | 
					#define _IMG_C  0x55    // Note: modified from _C to _IMG_C, for consistency reasons.
 | 
				
			||||||
 | 
					#define _IMG_D  0x00    // Note: modified from _D to _IMG_D, for consistency reasons.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const unsigned char _gCheckerImg[16] = { _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D,
 | 
				
			||||||
 | 
																    _IMG_A,_IMG_B,_IMG_C,_IMG_D
 | 
				
			||||||
 | 
																  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::StartTracking()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						mpScrDc = new wxScreenDC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxScreenDC::StartDrawingOnTop(&mpLayout->GetParentFrame());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::DoDrawHintRect( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxRect scrRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RectToScr( rect, scrRect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int prevLF = mpScrDc->GetLogicalFunction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc->SetLogicalFunction( wxXOR );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( isInClientRect )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// BUG BUG BUG (wx):: somehow stippled brush works only  
 | 
				
			||||||
 | 
							//					  when the bitmap created on stack, not
 | 
				
			||||||
 | 
							//					  as a member of the class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxBitmap checker( (const char*)_gCheckerImg, 8,8 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxBrush checkerBrush( checker );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->SetPen( mpLayout->mNullPen );
 | 
				
			||||||
 | 
							mpScrDc->SetBrush( checkerBrush );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							int half = mInClientHintBorder / 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y - half,
 | 
				
			||||||
 | 
								                    scrRect.width + 2*half, mInClientHintBorder );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + scrRect.height - half,
 | 
				
			||||||
 | 
								                    scrRect.width + 2*half, mInClientHintBorder );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x - half, scrRect.y + half - 1,
 | 
				
			||||||
 | 
								                    mInClientHintBorder, scrRect.height - 2*half + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawRectangle( scrRect.x + scrRect.width - half,
 | 
				
			||||||
 | 
													scrRect.y + half - 1,
 | 
				
			||||||
 | 
								                    mInClientHintBorder, scrRect.height - 2*half + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->SetBrush( wxNullBrush );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// otherwise draw 1-pixel thin borders
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->SetPen( mpLayout->mBlackPen );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x, scrRect.y, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x, scrRect.y + 1, 
 | 
				
			||||||
 | 
											   scrRect.x, scrRect.y + scrRect.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x+1, scrRect.y + scrRect.height, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y + scrRect.height );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpScrDc->DrawLine( scrRect.x + scrRect.width , scrRect.y, 
 | 
				
			||||||
 | 
											   scrRect.x + scrRect.width, scrRect.y + scrRect.height + 1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc->SetLogicalFunction( prevLF );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::DrawHintRect ( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DoDrawHintRect( rect, isInClientRect );	
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::EraseHintRect( wxRect& rect, bool isInClientRect)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DoDrawHintRect( rect, isInClientRect );	
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::FinishTracking()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						wxScreenDC::EndDrawingOnTop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						delete mpScrDc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpScrDc = NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimationPlugin::RectToScr( wxRect& frameRect, wxRect& scrRect )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						scrRect = frameRect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int x = frameRect.x, y = frameRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpLayout->GetParentFrame().ClientToScreen( &x, &y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						scrRect.x = x;
 | 
				
			||||||
 | 
						scrRect.y = y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***** Implementation for class cbHintAnimTimer *****/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cbHintAnimTimer::cbHintAnimTimer(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#ifdef __WINDOWS__
 | 
				
			||||||
 | 
						mLock = 0L;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mPrevMorphed.x = POS_UNDEFINED;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimTimer::MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// simulate lienar movement (FOR NOW:: without acceleration)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						double k;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if ( mpPl->mAccelerationOn )
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							k = double( mCurIter*mCurIter ) / 
 | 
				
			||||||
 | 
							    double( (mpPl->mMaxFrames - 1)*(mpPl->mMaxFrames - 1) );
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							k = double( mCurIter ) / double( mpPl->mMaxFrames - 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						point.x = int ( double ( info.mFrom.x + double (info.mTill.x - info.mFrom.x) * k ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						point.y = int ( double ( info.mFrom.y + double (info.mTill.y - info.mFrom.y) * k ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						point.x += origin.x;
 | 
				
			||||||
 | 
						point.y += origin.y;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cbHintAnimTimer::Notify(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// FIXME:: "clean" implementation should use mutex to sync
 | 
				
			||||||
 | 
						//         between GUI and animation threads
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mpPl->mStopPending )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Stop(); // top timer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpPl->FinishTracking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mpPl->mStopPending = FALSE;
 | 
				
			||||||
 | 
							mpPl->mpAnimTimer  = NULL;
 | 
				
			||||||
 | 
							mpPl->mAnimStarted = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevMorphed.x = POS_UNDEFINED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							delete this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPoint origin( mpPl->mCurRect.x, mpPl->mCurRect.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxPoint curUpper, curLower;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						MorphPoint( origin, mUpperLeft,  curUpper  );
 | 
				
			||||||
 | 
						MorphPoint( origin, mLowerRight, curLower );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mPrevMorphed.x != POS_UNDEFINED )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// erase previous rect
 | 
				
			||||||
 | 
							mpPl->DoDrawHintRect( mPrevMorphed, mpPl->mPrevInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wxRect morphed( curUpper.x,  curUpper.y,
 | 
				
			||||||
 | 
								        curLower.x - curUpper.x,
 | 
				
			||||||
 | 
										curLower.y - curUpper.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// draw rect of current iteration
 | 
				
			||||||
 | 
						mpPl->DoDrawHintRect( morphed, 
 | 
				
			||||||
 | 
											  ( mCurIter != mpPl->mMaxFrames - 1 ) 
 | 
				
			||||||
 | 
											  ? mpPl->mPrevInClient : mpPl->mCurInClient );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mPrevMorphed = morphed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( mCurIter == mpPl->mMaxFrames - 1 ) 
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Stop(); // top timer
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							mpPl->FinishTracking();
 | 
				
			||||||
 | 
							mpPl->mpAnimTimer  = NULL;
 | 
				
			||||||
 | 
							mpPl->mAnimStarted = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mPrevMorphed.x = POS_UNDEFINED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							delete this;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							++mCurIter;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cbHintAnimTimer::Init( cbHintAnimationPlugin* pAnimPl, bool reinit )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mpPl = pAnimPl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// morph-points are set up relatively to the upper-left corner
 | 
				
			||||||
 | 
						// of the current hint-rectangle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( !reinit )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							mUpperLeft.mFrom.x = mpPl->mPrevRect.x - mpPl->mCurRect.x;
 | 
				
			||||||
 | 
							mUpperLeft.mFrom.y = mpPl->mPrevRect.y - mpPl->mCurRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + mpPl->mPrevRect.width  );
 | 
				
			||||||
 | 
							mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + mpPl->mPrevRect.height );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							wxPoint origin( mpPl->mPrevRect.x, mpPl->mPrevRect.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wxPoint curUpper, curLower;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							MorphPoint( origin, mUpperLeft,  curUpper  );
 | 
				
			||||||
 | 
							MorphPoint( origin, mLowerRight, curLower );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mUpperLeft.mFrom.x = curUpper.x - mpPl->mCurRect.x;
 | 
				
			||||||
 | 
							mUpperLeft.mFrom.y = curUpper.y - mpPl->mCurRect.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mLowerRight.mFrom.x = ( mUpperLeft.mFrom.x + curLower.x - curUpper.x );
 | 
				
			||||||
 | 
							mLowerRight.mFrom.y = ( mUpperLeft.mFrom.y + curLower.y - curUpper.y );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mUpperLeft.mTill.x = 0;
 | 
				
			||||||
 | 
						mUpperLeft.mTill.y = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mLowerRight.mTill.x = mpPl->mCurRect.width;
 | 
				
			||||||
 | 
						mLowerRight.mTill.y = mpPl->mCurRect.height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mCurIter = 1;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if ( !reinit )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Start( mpPl->mMorphDelay );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||