|
From: <cur...@us...> - 2009-08-09 16:32:58
|
Revision: 51
http://wxdevcenter.svn.sourceforge.net/wxdevcenter/?rev=51&view=rev
Author: cursorstar
Date: 2009-08-09 16:32:46 +0000 (Sun, 09 Aug 2009)
Log Message:
-----------
Add notion of "global action target"
Modified Paths:
--------------
trunk/wxdevcenter/src/application.hpp
trunk/wxdevcenter/src/docview/document.hpp
trunk/wxdevcenter/src/docview/view.hpp
trunk/wxdevcenter/src/sys/action.cpp
trunk/wxdevcenter/src/sys/action.hpp
trunk/wxdevcenter/src/ui/frame.hpp
trunk/wxdevcenter/src/ui/perspective.cpp
trunk/wxdevcenter/src/ui/workbar.cpp
Modified: trunk/wxdevcenter/src/application.hpp
===================================================================
--- trunk/wxdevcenter/src/application.hpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/application.hpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -9,7 +9,7 @@
/**
* Application class.
*/
-class dcApplication : public wxApp
+class dcApplication : public wxApp, public dcGlobalActionTarget
{
DECLARE_EVENT_TABLE()
public:
Modified: trunk/wxdevcenter/src/docview/document.hpp
===================================================================
--- trunk/wxdevcenter/src/docview/document.hpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/docview/document.hpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -271,7 +271,7 @@
/**
* Document manager
*/
-class WXDLLIMPEXP_WXDEVCENTER dcDocumentManager : public Manager<dcDocument, dcDocumentTemplate>, public wxEvtHandler
+class WXDLLIMPEXP_WXDEVCENTER dcDocumentManager : public Manager<dcDocument, dcDocumentTemplate>, public wxEvtHandler, public dcGlobalActionTarget
{
DECLARE_EVENT_TABLE()
DECLARE_CLASS(dcDocumentManager)
Modified: trunk/wxdevcenter/src/docview/view.hpp
===================================================================
--- trunk/wxdevcenter/src/docview/view.hpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/docview/view.hpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -126,7 +126,7 @@
/**
* View manager.
*/
-class WXDLLIMPEXP_WXDEVCENTER dcViewManager : public Manager<dcView, dcViewTemplate>, public wxEvtHandler
+class WXDLLIMPEXP_WXDEVCENTER dcViewManager : public Manager<dcView, dcViewTemplate>, public wxEvtHandler, public dcGlobalActionTarget
{
DECLARE_EVENT_TABLE()
DECLARE_CLASS(dcViewManager)
Modified: trunk/wxdevcenter/src/sys/action.cpp
===================================================================
--- trunk/wxdevcenter/src/sys/action.cpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/sys/action.cpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -113,10 +113,13 @@
bool dcAction::SatisfyPerspective(const dcPerspective& perspec)const
{
- if(GetTarget()==NULL)
+ wxEvtHandler* handler = GetTarget();
+ if(handler==NULL)
return false;
- else if(perspec.HasTarget(GetTarget()))
+ else if(dcGlobalActionTarget::isInstance(handler))
return true;
+ else if(perspec.HasTarget(handler))
+ return true;
else
return false;
}
Modified: trunk/wxdevcenter/src/sys/action.hpp
===================================================================
--- trunk/wxdevcenter/src/sys/action.hpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/sys/action.hpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -536,7 +536,21 @@
};
+/**
+ * Global action target.
+ * Special class marker to specify a target is alwayes present.
+ * Such target class must derive from this.
+ */
+class dcGlobalActionTarget
+{
+public:
+ /** Test if an object is a global action target. */
+ static bool isInstance(wxEvtHandler* handler){
+ return dynamic_cast<dcGlobalActionTarget*>(handler)!=NULL;
+ }
+};
+
/**
* Action module
*/
Modified: trunk/wxdevcenter/src/ui/frame.hpp
===================================================================
--- trunk/wxdevcenter/src/ui/frame.hpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/ui/frame.hpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -123,7 +123,7 @@
/**
* FrameManager
*/
-class WXDLLIMPEXP_WXDEVCENTER dcFrameManager : public Manager<dcTopFrame, dcFrameTemplate>, public wxEvtHandler
+class WXDLLIMPEXP_WXDEVCENTER dcFrameManager : public Manager<dcTopFrame, dcFrameTemplate>, public wxEvtHandler, public dcGlobalActionTarget
{
DECLARE_CLASS(dcFrameManager)
DECLARE_NO_COPY_CLASS(dcFrameManager)
Modified: trunk/wxdevcenter/src/ui/perspective.cpp
===================================================================
--- trunk/wxdevcenter/src/ui/perspective.cpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/ui/perspective.cpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -84,15 +84,6 @@
return true;
}
- if(dynamic_cast<const wxApp*>(target))
- return true;
- if(dynamic_cast<const dcDocumentManager*>(target))
- return true;
- if(dynamic_cast<const dcViewManager*>(target))
- return true;
- if(dynamic_cast<const dcFrameManager*>(target))
- return true;
-
return false;
}
Modified: trunk/wxdevcenter/src/ui/workbar.cpp
===================================================================
--- trunk/wxdevcenter/src/ui/workbar.cpp 2009-08-08 16:37:56 UTC (rev 50)
+++ trunk/wxdevcenter/src/ui/workbar.cpp 2009-08-09 16:32:46 UTC (rev 51)
@@ -78,10 +78,13 @@
bool dcWorkBarTemplate::SatisfyPerspective(const dcPerspective& perspec)const
{
- if(GetTarget()==NULL)
+ wxEvtHandler* handler = GetTarget();
+ if(handler==NULL)
return false;
- else if(perspec.HasTarget(GetTarget()))
+ else if(dcGlobalActionTarget::isInstance(handler))
return true;
+ else if(perspec.HasTarget(handler))
+ return true;
else
return false;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|