69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
// NoesisGUI - http://www.noesisengine.com
 | 
						|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
 | 
						|
#ifndef __GUI_IUITREENODE_H__
 | 
						|
#define __GUI_IUITREENODE_H__
 | 
						|
 | 
						|
 | 
						|
#include <NsCore/Noesis.h>
 | 
						|
#include <NsCore/Interface.h>
 | 
						|
#include <NsGui/CoreApi.h>
 | 
						|
 | 
						|
namespace Noesis
 | 
						|
{
 | 
						|
 | 
						|
class BaseComponent;
 | 
						|
class FrameworkElement;
 | 
						|
NS_INTERFACE INameScope;
 | 
						|
 | 
						|
struct ObjectWithNameScope
 | 
						|
{
 | 
						|
    BaseComponent* object;
 | 
						|
    INameScope* scope;
 | 
						|
};
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Represents nodes in a UI tree.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
NS_INTERFACE IUITreeNode: public Interface
 | 
						|
{
 | 
						|
    /// Gets or sets node parent
 | 
						|
    //@{
 | 
						|
    virtual IUITreeNode* GetNodeParent() const = 0;
 | 
						|
    virtual void SetNodeParent(IUITreeNode* parent) = 0;
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Looks for a UI resource upwards in the tree.
 | 
						|
    /// Returns *DependencyProperty.UnsetValue* if resource is not found
 | 
						|
    virtual BaseComponent* FindNodeResource(const char* key, bool fullElementSearch) const = 0;
 | 
						|
 | 
						|
    /// Looks for a named node upwards in the tree, returning also the scope in which it was found.
 | 
						|
    /// Returns null in both fields if node is not found
 | 
						|
    virtual ObjectWithNameScope FindNodeName(const char* name) const = 0;
 | 
						|
 | 
						|
    NS_IMPLEMENT_INLINE_REFLECTION_(IUITreeNode, Interface)
 | 
						|
};
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Helper function that finds the first FrameworkElement ancestor for the given UI tree node
 | 
						|
NS_GUI_CORE_API FrameworkElement* FindTreeElement(IUITreeNode* node);
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Helper function to obtain the root of the UI Tree from the specified node
 | 
						|
NS_GUI_CORE_API IUITreeNode* GetNodeRoot(IUITreeNode* node);
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Helper functions to connect/disconnect nodes to/from the UI tree
 | 
						|
//@{
 | 
						|
NS_GUI_CORE_API void ConnectNode(IUITreeNode* node, const IUITreeNode* parent);
 | 
						|
NS_GUI_CORE_API void DisconnectNode(IUITreeNode* node, const IUITreeNode* parent);
 | 
						|
//@}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif
 |