[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

[XaraXtreme-commits] Commit Complete



Commit by  : alex
Repository : xara
Revision   : 974
Date       : Mon May  8 12:44:46 BST 2006

Changed paths:
   M /Trunk/XaraLX/Kernel/dialogop.cpp
   M /Trunk/XaraLX/Kernel/dialogop.h
   M /Trunk/XaraLX/Kernel/docview.cpp
   M /Trunk/XaraLX/Kernel/docview.h
   M /Trunk/XaraLX/Kernel/main2.cpp
   M /Trunk/XaraLX/Kernel/rgnlist.cpp
   M /Trunk/XaraLX/Kernel/statline.cpp
   M /Trunk/XaraLX/Kernel/statline.h
   M /Trunk/XaraLX/wxOil/cstatbar.h
   M /Trunk/XaraLX/wxOil/dlgmgr.cpp
   M /Trunk/XaraLX/wxOil/dlgmgr.h
   M /Trunk/XaraLX/wxOil/xrc/EN/statusbar.xrc

More status bar work


Diff:
Index: Trunk/XaraLX/Kernel/docview.cpp
===================================================================
--- Trunk/XaraLX/Kernel/docview.cpp	(revision 973)
+++ Trunk/XaraLX/Kernel/docview.cpp	(revision 974)
@@ -155,8 +155,8 @@
 //#include "bubbleid.h"
 #include "filters.h"
 #include "keypress.h"
-#include "statline.h"
 
+
 // for shadow node hit-testing 
 #include "nodecont.h"
 #include "nodeshad.h"
@@ -223,6 +223,7 @@
 CC_IMPLEMENT_DYNAMIC(DocViewMsg, Msg)
 CC_IMPLEMENT_DYNCREATE(OpToggleFore, Operation)
 CC_IMPLEMENT_DYNCREATE(OpToggleScroll, Operation)
+CC_IMPLEMENT_DYNCREATE(OpToggleSolidDrag, Operation)
 
 
 #define new CAM_DEBUG_NEW
@@ -849,11 +850,8 @@
 	ERROR2IF(pRulerPair==NULL,FALSE,"DocView::Init() - failed to create RulerPair");
 #endif
 	// update indicator in StatusLine
-	StatusLine* pStatusLine=GetApplication()->GetpStatusLine();
+	DialogBarOp::SetSystemStateChanged();
 
-	if (pStatusLine)
-		pStatusLine->UpdateSolidDragIndicator(m_bSolidDragSupported, DocView::SolidDragging);
-
 	return TRUE;
 }
 
@@ -1480,12 +1478,8 @@
 		}
 	}
 
-	// update indicator in StatusLine
-	StatusLine* pStatusLine=GetApplication()->GetpStatusLine();
+	DialogBarOp::SetSystemStateChanged();
 
-	if (pStatusLine)
-		pStatusLine->UpdateSolidDragIndicator(m_bSolidDragSupported, DocView::SolidDragging);
-
 	// Change the View State so that it is no longer marked as new
 PORTNOTE("other","Removed ViewState usage")
 #ifndef EXCLUDE_FROM_XARALX
@@ -3515,10 +3509,7 @@
 					pCurrentDragOp->DragModeChanged(m_bSolidDrag);
 
 					// update indicator in StatusLine
-					StatusLine* pStatusLine=GetApplication()->GetpStatusLine();
-
-					if (pStatusLine)
-						pStatusLine->UpdateSolidDragIndicator(m_bSolidDragSupported, m_bSolidDrag);
+					DialogBarOp::SetSystemStateChanged();
 					break;
 				}
 			}
@@ -5800,3 +5791,134 @@
 	return FALSE;
 #endif
 }
+
+/********************************************************************************************
+
+>	OpToggleSolidDrag::OpToggleSolidDrag() : Operation()
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Inputs:		-
+	Outputs:	-
+	Returns:	-
+	Purpose:	Constructs an OpToggleSolidDrag object.
+	Errors:		-
+	SeeAlso:	-
+
+********************************************************************************************/
+
+OpToggleSolidDrag::OpToggleSolidDrag() : Operation()
+{
+
+}
+
+
+
+/********************************************************************************************
+
+>	OpToggleSolidDrag::~OpToggleSolidDrag()
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Inputs:		-
+	Outputs:	-
+	Returns:	-
+	Purpose:	Destructs an OpToggleSolidDrag object.
+	Errors:		-
+	SeeAlso:	-
+
+********************************************************************************************/
+
+OpToggleSolidDrag::~OpToggleSolidDrag()
+{
+	// Empty
+}
+
+
+
+/********************************************************************************************
+
+>	void OpToggleSolidDrag::Do(OpDescriptor*)
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Inputs:		Pointer to Operation Descriptor
+	Outputs:	-
+	Returns:	-
+	Purpose:	Actually "DO" a ToggleFore operation.
+	Errors:		-
+	SeeAlso:	-
+
+********************************************************************************************/
+
+void OpToggleSolidDrag::Do(OpDescriptor*)
+{
+	DocView::SolidDragging=!DocView::SolidDragging;
+	End();
+}
+
+
+
+/********************************************************************************************
+
+>	OpState OpToggleSolidDrag::GetState(String_256* UIDescription, OpDescriptor*)
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Inputs:		Pointer to Operation Descriptor
+				Text Description
+	Outputs:	-
+	Returns:	-
+	Purpose:	Find the state of the OpToggleSolidDrag operation.
+	Errors:		-
+	SeeAlso:	-
+
+********************************************************************************************/
+
+OpState OpToggleSolidDrag::GetState(String_256* UIDescription, OpDescriptor*)
+{
+	// Default to !ticked and greyed
+	OpState blobby(FALSE, TRUE);
+	blobby.Ticked = DocView::SolidDragging;
+	blobby.Greyed = FALSE;
+	return(blobby);
+}
+
+
+/********************************************************************************************
+
+>	BOOL OpToggleSolidDrag::Init()
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Inputs:		-
+	Outputs:	-
+	Returns:	-
+	Purpose:	Create an OpDescriptor for the OpToggleSolidDrag operation
+	Errors:		-
+	SeeAlso:	-
+
+********************************************************************************************/
+
+BOOL OpToggleSolidDrag::Init()	
+{
+	return Operation::RegisterOpDescriptor( 
+											0, 
+											_R(IDS_TOGGLE_SOLIDDRAG),
+											CC_RUNTIME_CLASS(OpToggleSolidDrag), 
+											OPTOKEN_TOGGLESOLIDDRAG,
+											OpToggleSolidDrag::GetState,
+											0,						// help ID
+											0,// _R(IDBBL_FOREBACKGRNDOP),
+											0,						// bitmap ID
+											0,						// control ID
+											SYSTEMBAR_ILLEGAL,		// group bar ID
+											TRUE,
+											FALSE,
+											TRUE,
+											NULL,
+											0,
+											0,
+											TRUE
+										   );
+}
Index: Trunk/XaraLX/Kernel/docview.h
===================================================================
--- Trunk/XaraLX/Kernel/docview.h	(revision 973)
+++ Trunk/XaraLX/Kernel/docview.h	(revision 974)
@@ -124,6 +124,8 @@
 #include "camview.h"
 #include "cursor.h"
 
+#define OPTOKEN_TOGGLESOLIDDRAG		TEXT("ToggleSolidDrag")
+
 class ImportPosition;
 
 // Declare classes so that circular references are resolved and I don't need to include
@@ -682,6 +684,32 @@
 };
 
 
+/********************************************************************************************
 
+>	class OpToggleSolidDrag : public Operation
 
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	14 Mar 2006
+	Purpose:	This class represents the OpToggleSolidDrag operation.
+				Creating an instance of this class and calling its "Do" function will toggle
+				the state of the flag controlling whether double buffering is used for
+				rendering on GTK
+
+********************************************************************************************/
+
+class OpToggleSolidDrag: public Operation
+{
+	CC_DECLARE_DYNCREATE( OpToggleSolidDrag )
+	
+public:
+	OpToggleSolidDrag();											// Constructor
+	~OpToggleSolidDrag();										// Destructor
+
+	static BOOL		Init();									// Register an OpDescriptor
+	void			Do(OpDescriptor*);						// "Do" function
+	static OpState	GetState(String_256*, OpDescriptor*);	// Read the state of an operation
+};
+
+
+
 #endif		// INC_DOCVIEW
Index: Trunk/XaraLX/Kernel/rgnlist.cpp
===================================================================
--- Trunk/XaraLX/Kernel/rgnlist.cpp	(revision 973)
+++ Trunk/XaraLX/Kernel/rgnlist.cpp	(revision 974)
@@ -112,7 +112,7 @@
 #include "spread.h"
 //#include "ctrlhelp.h"
 #include "app.h"
-//#include "statline.h"
+#include "statline.h"
 //#include "dragmgr.h"
 //#include "prncamvw.h"
 #include "menuops.h"
@@ -1106,9 +1106,8 @@
 
 //	TRACEUSER("Gerry", _T("BackgroundRender
"));
 	// Show the user we are rendering.
-//GAT
-//	if (GetApplication()->GetpStatusLine())
-//		GetApplication()->GetpStatusLine()->SetRenderIndicator(Animate);
+	if (GetApplication()->GetpStatusLine())
+		GetApplication()->GetpStatusLine()->SetRenderIndicator(Animate);
 	GetApplication()->BgRendering = TRUE;
 	
 	// Do the render.
@@ -1119,8 +1118,8 @@
 	// Turn off render indicator if needed.
 	if (GetCount() ==0)
 	{
-//GAT	if (GetApplication()->GetpStatusLine())
-//			GetApplication()->GetpStatusLine()->SetRenderIndicator(NotRendering);
+		if (GetApplication()->GetpStatusLine())
+			GetApplication()->GetpStatusLine()->SetRenderIndicator(NotRendering);
 		GetApplication()->BgRendering = FALSE;
 	}
 
@@ -1195,11 +1194,8 @@
 	RenderRegion *pRegion = (RenderRegion *) GetHead();
 
 	// Start the rendering indicator going.
-PORTNOTE(Other, "RenderRegionList::ImmediateRender - removed render indicator code" );
-#ifndef EXCLUDE_FROM_XARALX
 	if (GetApplication()->GetpStatusLine())
 		GetApplication()->GetpStatusLine()->SetRenderIndicator(Rendering);
-#endif
 
 	while (pRegion != NULL)
 	{
@@ -1216,8 +1212,8 @@
 			if ( !pView->GetForeBackMode() || bForceImmediate )
 			{
 				// Keep user up to date
-//GAT			if (GetApplication()->GetpStatusLine())
-//GAT				GetApplication()->GetpStatusLine()->SetRenderIndicator(Animate);
+			if (GetApplication()->GetpStatusLine())
+				GetApplication()->GetpStatusLine()->SetRenderIndicator(Animate);
 				//TRACE( _T("Immediate Render now
"));
 
 				// Render it.
@@ -1232,9 +1228,9 @@
 	}
 
 	// Disable rendering indicator.
-//GAT
-//	if (GetApplication()->GetpStatusLine())
-//		GetApplication()->GetpStatusLine()->SetRenderIndicator(NotRendering);
+
+	if (GetApplication()->GetpStatusLine())
+		GetApplication()->GetpStatusLine()->SetRenderIndicator(NotRendering);
 }
 
 
Index: Trunk/XaraLX/Kernel/statline.h
===================================================================
--- Trunk/XaraLX/Kernel/statline.h	(revision 973)
+++ Trunk/XaraLX/Kernel/statline.h	(revision 974)
@@ -144,7 +144,6 @@
 	BOOL UpdateTextForColourPicker(String_256* ptext, BOOL PrefixSelDesc=TRUE);
 	BOOL UpdateMousePosAndSnap(DocCoord* pDocCoord, Spread* pSpread, DocView* pDocView, BOOL Snapped);
 	BOOL UpdateSolidDragIndicator(BOOL bSolidAllowed, BOOL bSolid);
-	BOOL PaneDoubleClick(INT32 PaneID);
 	BOOL SetRenderIndicator(RenderState Action);
 	void FlagMousePosNeedsUpdating() { MousePosNeedsUpdatingFlag=TRUE; };
 	BOOL MousePosNeedsUpdating() { return MousePosNeedsUpdatingFlag; };
Index: Trunk/XaraLX/Kernel/statline.cpp
===================================================================
--- Trunk/XaraLX/Kernel/statline.cpp	(revision 973)
+++ Trunk/XaraLX/Kernel/statline.cpp	(revision 974)
@@ -148,6 +148,9 @@
 BOOL StatusLine::DoControlHelp = TRUE;
 StatusLine * StatusLine::s_pStatusLine = NULL;
 
+// render pane animation (could be in statline.cpp but kept here next to pane defn)
+static UINT32 RenderAnimation[] = { _R(IDB_SL_REND1), _R(IDB_SL_REND2), _R(IDB_SL_REND3) };
+
 /*****************************************************************************
 >	StatusLine::StatusLine()
 
@@ -263,14 +266,14 @@
 		// If this ever appears in retail builds it will have to be rewritten properly (it
 		// isn't internationally portable at the moment).		
 		String_256 StrBuf(TEXT(""));
-		wsprintf(StrBuf, TEXT("%dK"), Memory / 1024);
+		camSnprintf(StrBuf, 256, TEXT("%dK"), Memory / 1024);
 		if (StrBuf.Length()>4)
 			StrBuf.Insert(&String_8(TEXT(",")),StrBuf.Length()-4);
-PORTNOTE("StatusLine", "Removed use of CCStatusBar")
-#ifndef EXCLUDE_FROM_XARALX
-		if (!pCCStatusBar->UpdatePaneText(_R(IDS_SL_MEMORY),&StrBuf))
+		BOOL ok = SetStringGadgetValue(_R(IDS_SL_MEMORY),StrBuf);
+		if (ok)
+			PaintGadgetNow(_R(IDS_SL_MEMORY))
+		else
 			ReturnValue=FALSE;
-#endif
 	}
 #endif // _STATUSLINE_MEMORYPANE
 
@@ -288,8 +291,7 @@
 	Created:	3/1/95
 	Purpose:	refresh the help text pane of the status line
 	Returns:	FALSE if anything fails (see Errors)
-	Errors:		pCCStatusBar==NULL,
-				CCamApp::GetMousePosAndWindowID() fails,
+	Errors:		CCamApp::GetMousePosAndWindowID() fails,
 				pCCStatusBar->UpdatePaneText() fails,
 				UpdateText() fails
 *****************************************************************************/
@@ -302,7 +304,7 @@
 
 	BOOL ReturnValue=TRUE;
 	BOOL PrefixSelDesc=STATUSLINE_SELDESC_DEFAULT;
-	String_256 text("");
+	String_256 text(_T(""));
 	BOOL TextValid=FALSE;
 
 	// for new custom colour picker tool ....
@@ -412,14 +414,6 @@
 				PrefixSelDesc=STATUSLINE_SELDESC_COLBAR;
 #endif
 
-PORTNOTE("StatusLine", "Removed use of CCStatusBar")
-#ifndef EXCLUDE_FROM_XARALX
-			if (!TextValid)
-				TextValid=pCCStatusBar->GetStatusLineText(&text,WndPos,WinID);		// try StatusBar
-#endif
-			if (TextValid)
-				PrefixSelDesc=STATUSLINE_SELDESC_STATBAR;
-
 PORTNOTE("StatusLine", "Removed use of PreviewDlg")
 #ifndef EXCLUDE_FROM_XARALX
 			if (!TextValid)
@@ -495,7 +489,7 @@
 
 	// actually update the text
 	if (!TextValid)
-		text="";
+		text=_T("");
 	if (!UpdateText(&text,PrefixSelDesc))
 		ReturnValue=FALSE;
 
@@ -970,6 +964,7 @@
 					delete s_pStatusLine;
 				}
 				s_pStatusLine = this;
+				SetGadgetBitmap(_R(IDB_SL_SNAP), _R(IDB_SL_SNAPN)); // turn snap off by default
 			}
 
 			default:
@@ -1119,26 +1114,17 @@
 //	WEBSTER-ranbirr-13/11/96
 #ifndef WEBSTER
 	// if snap indicator not reflecting the desired state, update it.
-PORTNOTE("StatusLine", "Removed use of CCStatusBar")
-#ifndef EXCLUDE_FROM_XARALX
-	FlagState SnapState = pCCStatusBar->PaneState(_R(IDS_SL_SNAPPED));
-	if (Snapped && SnapState==Disable)
+	if (Snapped && (GetGadgetBitmap(_R(IDB_SL_SNAP)) != _R(IDB_SL_SNAP)))
 	{
-		if (pCCStatusBar->PaneState(_R(IDS_SL_SNAPPED), Enable)==Fail)
-			ReturnValue=FALSE;
-		// force a redraw of the snap pane
-		pCCStatusBar->UpdatePaneBitmap(_R(IDS_SL_SNAPPED),0, TRUE);
-	
+		SetGadgetBitmap(_R(IDB_SL_SNAP), _R(IDB_SL_SNAP));
+		PaintGadgetNow(_R(IDB_SL_SNAP));
 	}
-	if (!Snapped && SnapState!=Disable)
+	if (!Snapped && (GetGadgetBitmap(_R(IDB_SL_SNAP)) != _R(IDB_SL_SNAPN)))
 	{
-		if (pCCStatusBar->PaneState(_R(IDS_SL_SNAPPED), Disable)==Fail)
-			ReturnValue=FALSE;
-		// force a redraw of the snap pane
-		pCCStatusBar->UpdatePaneBitmap(_R(IDS_SL_SNAPPED),0, TRUE);
+		SetGadgetBitmap(_R(IDB_SL_SNAP), _R(IDB_SL_SNAPN));
+		PaintGadgetNow(_R(IDB_SL_SNAP));
 	}
 #endif	
-
 	
 	// if snap pointer not reflecting the desired state, update it.
 	// (The snap pointer is only shown when snapped and during a 'SnappingDrag' drag)
@@ -1163,7 +1149,6 @@
 
 	// and mouse position no longer needs updating
 	MousePosNeedsUpdatingFlag=FALSE;
-#endif //webster	
 	return ReturnValue;
 
 #else
@@ -1217,29 +1202,6 @@
 }
 
 
-
-/******************************************************************************
->	BOOL StatusLine::PaneDoubleClick(INT32 PaneID)
-
-	Author:		Ed_Cornes (Xara Group Ltd) <camelotdev@xxxxxxxx>
-	Created:	26/1/95
-	Purpose:	Handle double clicks on a pane
-	Inputs:		PaneID - 
-	Returns:	FALSE if anything fails (see Errors)
-	Errors:		TransparencyState() fails
-*****************************************************************************/
-BOOL StatusLine::PaneDoubleClick(INT32 PaneID)
-{
-	BOOL ReturnValue=TRUE;
-	if (PaneID == (INT32)_R(IDS_SL_SDRAG))
-	{
-		DocView::SolidDragging = ! DocView::SolidDragging;
-		UpdateSolidDragIndicator(TRUE, DocView::SolidDragging);
-	}
-
-	return ReturnValue;
-}
-
 /*****************************************************************************
 >	BOOL StatusLine::SetRenderIndicator(RenderState Action)
 
@@ -1260,18 +1222,8 @@
 
 BOOL StatusLine::SetRenderIndicator(RenderState Action)
 {
-//	FixFPControlRegister();
-#ifndef _STATUSLINE_RENDERPANE
-	return TRUE;
-#else
-
-PORTNOTE("StatusLine", "Removed use of CCStatusBar")
-#ifndef EXCLUDE_FROM_XARALX
-	ERROR2IF(pCCStatusBar==NULL,FALSE,"StatusLine::SetRenderIndicator() - pCCStatusBar==NULL");
-#endif
-
 	INT32  RenderAnimationStates=sizeof(RenderAnimation)/sizeof(UINT32);
-	UINT32 BitmapID=NULL;
+	UINT32 BitmapID=0;
 	switch (Action)
 	{
 		case NotRendering:
@@ -1296,17 +1248,16 @@
 		default: ERROR2(FALSE,"StatusLine::SetRenderIndicator() - Action invalid");
 	}
 
-	if (BitmapID==NULL)
+	if (!BitmapID)
 		return TRUE;
 
 	RenderTimer.Sample();
-PORTNOTE("StatusLine", "Removed use of CCStatusBar")
-#ifndef EXCLUDE_FROM_XARALX
-	return pCCStatusBar->UpdatePaneBitmap(_R(IDS_SL_RENDERING),BitmapID,TRUE);
-#else
-	return TRUE;
-#endif
 
-#endif
+	if (BitmapID == GetGadgetBitmap(_R(IDB_SL_RENDN)))
+		return TRUE;
+	SetGadgetBitmap(_R(IDB_SL_RENDN), BitmapID);
+	PaintGadgetNow(_R(IDB_SL_RENDN));
+
+	return TRUE;
 }
 
Index: Trunk/XaraLX/Kernel/main2.cpp
===================================================================
--- Trunk/XaraLX/Kernel/main2.cpp	(revision 973)
+++ Trunk/XaraLX/Kernel/main2.cpp	(revision 974)
@@ -234,7 +234,8 @@
 	 		OpUndo::Init() &&					// Register Undo Operation
 			OpRedo::Init() &&					// Register Redo Operation
 			OpToggleFore::Init() &&				// Register Toggle fore/back render Operation
-			OpToggleDoubleBuffer::Init() &&		// Register Toggle proport scrolbar Operation
+			OpToggleDoubleBuffer::Init() &&		// Register Toggle double buffer operation
+			OpToggleSolidDrag::Init() &&		// Register Toggle solid drag operation
 			OpCut::Init() &&					// Register Cut operation
 			OpCopy::Init() &&					// Register Copy operation
 			OpPaste::Init() &&					// Register Paste operation
Index: Trunk/XaraLX/Kernel/dialogop.cpp
===================================================================
--- Trunk/XaraLX/Kernel/dialogop.cpp	(revision 973)
+++ Trunk/XaraLX/Kernel/dialogop.cpp	(revision 974)
@@ -2134,8 +2134,25 @@
 	DialogManager::SetGadgetBitmap(GetReadWriteWindowID(), Gadget, Bitmap);
 }
 
+/********************************************************************************************
 
+>	ResourceID DialogOp::GetGadgetBitmap(CGadgetID Gadget)
 
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	07/05/2006
+	Inputs:		GadgetID - The gadget to set the bitmaps of
+				Bitmap - The ID of the bitmap
+	Purpose:	Calls the dialog manager to set the bitmaps of the gadget
+
+********************************************************************************************/
+
+ResourceID DialogOp::GetGadgetBitmap(CGadgetID Gadget)
+{
+	// Call the dialog Manager
+	return DialogManager::GetGadgetBitmap(GetReadWriteWindowID(), Gadget);
+}
+
+
 /********************************************************************************************
 
 >	UINT32 DialogOp::GetGadgetImageCount(CGadgetID GadgetID)
Index: Trunk/XaraLX/Kernel/dialogop.h
===================================================================
--- Trunk/XaraLX/Kernel/dialogop.h	(revision 973)
+++ Trunk/XaraLX/Kernel/dialogop.h	(revision 974)
@@ -434,6 +434,7 @@
 	void SetGadgetBitmaps(CGadgetID GadgetID, UINT32 Bitmap1, UINT32 Bitmap2);
 	void SetGadgetBitmaps(CGadgetID GadgetID, const CGadgetImageList& imagelist);
 	void SetGadgetBitmap(CGadgetID Gadget, ResourceID Bitmap);
+	ResourceID GetGadgetBitmap(CGadgetID Gadget);
 	UINT32 GetGadgetImageCount(CGadgetID);
 	
 	// DY 23/9/99 allows you to specify indexes within a bitmap strip
Index: Trunk/XaraLX/wxOil/cstatbar.h
===================================================================
--- Trunk/XaraLX/wxOil/cstatbar.h	(revision 973)
+++ Trunk/XaraLX/wxOil/cstatbar.h	(revision 974)
@@ -167,8 +167,6 @@
 };
 
 
-// render pane animation (could be in statline.cpp but kept here next to pane defn)
-static UINT32 RenderAnimation[] = { _R(IDB_SL_REND1), _R(IDB_SL_REND2), _R(IDB_SL_REND3) };
 
 /*****************************************************************************
 >	class	CCStatusBar : public CStatusBar
Index: Trunk/XaraLX/wxOil/dlgmgr.h
===================================================================
--- Trunk/XaraLX/wxOil/dlgmgr.h	(revision 973)
+++ Trunk/XaraLX/wxOil/dlgmgr.h	(revision 974)
@@ -644,6 +644,7 @@
 	static void SetGadgetBitmaps(CWindowID DialogWnd, CGadgetID Gadget, UINT32 Bitmap1, UINT32 Bitmap2);
 	static void SetGadgetBitmaps(CWindowID DialogWnd, CGadgetID Gadget, const CGadgetImageList& images);
 	static void SetGadgetBitmap(CWindowID WindowID, CGadgetID Gadget, ResourceID Bitmap);
+	static ResourceID GetGadgetBitmap(CWindowID WindowID, CGadgetID Gadget);
 
 	/* specific to the cc_BitmapButton control, allows you to specify both 
 	selected and unselected bitmaps */
Index: Trunk/XaraLX/wxOil/xrc/EN/statusbar.xrc
===================================================================
--- Trunk/XaraLX/wxOil/xrc/EN/statusbar.xrc	(revision 973)
+++ Trunk/XaraLX/wxOil/xrc/EN/statusbar.xrc	(revision 974)
@@ -50,7 +50,7 @@
                 <border>1</border>
                <object class="wxCamArtControl" name="IDB_SL_SDRAG0">
                     <camartstyle>wxCACS_PUSHBUTTON|wxCACS_ALLOWHOVER|wxCACS_TOGGLEBUTTON</camartstyle>
-                    <optoken>LiveDrag</optoken>
+                    <optoken>ToggleSolidDrag</optoken>
                 </object>
             </object>
 
@@ -65,7 +65,6 @@
                 <border>1</border>
                 <object class="wxCamArtControl" name="IDB_SL_SNAP">
                     <camartstyle></camartstyle>
-                    <optoken>SnapIndicator</optoken>
                 </object>
             </object>
 
@@ -76,6 +75,20 @@
             </object>
 
             <object class="sizeritem">
+                <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                <border>1</border>
+                <object class="wxCamArtControl" name="IDB_SL_RENDN">
+                    <camartstyle></camartstyle>
+                </object>
+            </object>
+
+            <object class="spacer">
+                <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+                <border>1</border>
+                <size>3,16</size>
+            </object>
+
+            <object class="sizeritem">
                 <flag>wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE</flag>
                 <border>1</border>
                 <object class="wxStaticText" name="IDC_SL_MOUSEPOS">
Index: Trunk/XaraLX/wxOil/dlgmgr.cpp
===================================================================
--- Trunk/XaraLX/wxOil/dlgmgr.cpp	(revision 973)
+++ Trunk/XaraLX/wxOil/dlgmgr.cpp	(revision 974)
@@ -1696,6 +1696,32 @@
 
 /********************************************************************************************
 
+>	ResourceID DialogManager::SetGadgetBitmap(CWindowID WindowID, CGadgetID Gadget)
+
+	Author:		Alex Bligh <alex@xxxxxxxxxxx>
+	Created:	07/05/2006
+	Inputs:		WindowID - Dialog box window identifier
+				Gadget - Identifier of the gadget
+	Returns:	The resourse ID of the bitmap
+	Purpose:	This function will get the bitmaps associated with a gadget.
+
+********************************************************************************************/
+
+ResourceID DialogManager::GetGadgetBitmap(CWindowID WindowID, CGadgetID Gadget)
+{
+	wxWindow* pGadget = GetGadget(WindowID, Gadget);
+	if (!pGadget) return 0;
+
+	if ( pGadget->IsKindOf(CLASSINFO(wxCamArtControl))
+		)
+	{
+		return ((wxCamArtControl *)pGadget)->GetBitmapId();
+	}
+	return 0;
+}
+
+/********************************************************************************************
+
 >	void DialogManager::SetGadgetBitmaps(CWindowID WindowID, CGadgetID Gadget,
 										const CGadgetImageList& imagelist)
 


Xara