: m_Type(
orig.m_Type),
63m_Hidden(
orig.m_Hidden),
65m_Window(
orig.m_Window),
66m_Fingerprint(
orig.m_Fingerprint)
87 if(m_Children.size() == 1) {
98 CNode* p = m_Parent.GetPointer();
113 boolsplitter = (
dynamic_cast<CSplitter*
>(window) !=
NULL);
144TNodeVector::iterator it = std::find(m_Children.begin(), m_Children.end(), ref);
146 _ASSERT(it != m_Children.end());
148m_Children.erase(it);
155 _ASSERT(index < m_Children.size());
157TNodeVector::iterator it = m_Children.begin() + index;
158(*it)->m_Parent.Reset();
159m_Children.erase(it);
176TNodeVector::iterator it = std::find(m_Children.begin(), m_Children.end(), ref);
178 _ASSERT(it != m_Children.end());
180it->Reset(&new_node);
184 returnit - m_Children.begin();
191 _ASSERT(windows.size() <= m_Children.size());
195 for(
size_t i= 0;
i< windows.size();
i++ ) {
196wxWindow* win = windows[
i];
198 for(
size_tj = 0; j < m_Children.size(); j++ ) {
200 if(child->GetWindow() == win) {
201sel.push_back(child);
202m_Children.erase(m_Children.begin() + j);
207 _ASSERT(sel.size() == windows.size());
209 for(
size_t i= 0;
i< sel.size();
i++ ) {
211m_Children.insert(m_Children.begin() +
i, child);
218m_Clone.Reset(&clone);
226m_Clone->m_Clone.Reset();
235TNodeVector::const_iterator it = std::find(m_Children.begin(), m_Children.end(), ref);
236 return(it == m_Children.end()) ? -1 : (it - m_Children.begin());
245 CNode* p = &grandchild_node;
249 autoindex = GetIndex(*p);
260 returnm_Children.size() == 1;
270 if(m_SplitterSizes.size() == 0)
273 if(m_SplitterSizes.size() != 2) {
275m_SplitterSizes.resize(2);
276m_SplitterSizes[0] = m_SplitterSizes[1] = 100;
280 if(m_SplitterSizes[0] <= 0 || m_SplitterSizes[1] <= 0) {
282<< m_SplitterSizes[0] <<
", "<< m_SplitterSizes[1] <<
")");
284m_SplitterSizes[0] = m_SplitterSizes[1] = 100;
288 static const char*
kNodeTag=
"Layout Tree Node";
299 object->SetType().SetStr(
kNodeTag);
302 if(fingerprint.
IsEmpty() && IsClient() && GetWindow()) {
304wxWindow* win =
const_cast<wxWindow*
>(GetWindow());
309 object->AddField(
kTypeTag, GetType());
323vector< CRef<CUser_object> >
objects;
326 for(
size_t i= 0;
i< children.size();
i++ ) {
327 const CNode& child = *children[
i];
329 objects.push_back(child_object);
354node->SetFingerprint(fingerprint);
356 if(node->IsSplitter()) {
359node->ValidateSplitterSizes();
363 if(node->IsContainer()) {
367 for(
size_t i= 0;
i<
objects.size();
i++ ) {
371node->AddChild(*child_node);
386 if(
this== central)
389clone->m_Type = m_Type;
390clone->m_Hidden = m_Hidden;
391clone->m_Parent.
Reset(parent);
393clone->m_Fingerprint = m_Fingerprint;
394clone->m_SplitterSizes = m_SplitterSizes;
397clone->m_Children.push_back(
CRef<CNode>((*it)->CloneNode(clone, central, newCentral)));
422 return GetRoot()->ToUserObject(central);
521 for(
size_t i= 0;
i< level; ++
i)
530nodeTag =
"H-SPLITTER";
533nodeTag =
"V-SPLITTER";
537nodeTag =
"CENTRAL_TAB";
547 if(!
hash.empty()) {
556<< nodeTag <<
hash<< &node
559<< (node.
IsHidden() ?
", HIDDEN":
", VISIBLE"));
617 _ASSERT(sizes.size() == 2 && sizes[0] >= 0 && sizes[1] >= 0);
624 _ASSERT(sizes.size() == 2 && sizes[0] >= 0 && sizes[1] >= 0);
639 m_Root->DepthFirstForEach(saver);
CNode - a node in layout tree corresponding to a window.
CRef< CNode > GetTheOnlyChild()
ENodeType GetType() const
const vector< int > & GetSplitterSizes() const
void RemoveChild(CNode &node)
void ValidateSplitterSizes()
void SetWindow(wxWindow *window)
CNode * CloneNode(CNode *parent, const CNode *central, CNode *&newCentral) const
CRef< CNode > GetVisibleParent()
void AddChild(CNode &node)
CRef< CNode > GetParent()
void EnforceChildOrder(const vector< wxWindow * > &windows)
TNodeVector & GetChildren()
CNode()
CDockLayoutTree::CNode.
TFingerprint GetFingerprint() const
long GetIndex(CNode &node) const
long GetBranchIndex(CNode &grandchild_node) const
vector< CRef< CNode > > TNodeVector
objects::CUser_object * ToUserObject(const CNode *central) const
bool HasOnlyOneChild() const
size_t ReplaceChild(CNode &old_node, CNode &new_node)
static CRef< CNode > FromUserObject(const objects::CUser_object &obj, CNode *¢ral)
CDockLayoutTree - represents hierarchical layout in a Dock Container as a tree where nodes correspond...
void x_DisconnectNodes(CNode &node)
virtual ~CDockLayoutTree()
void SaveSplitterLayout()
CRef< CNode > m_CentralPane
CNode * x_FindByFingerprint(CNode &node, const TFingerprint &s)
CDockLayoutTree * CloneTree() const
void Validate(const CNode &node, bool vis_tree) const
CConstRef< CNode > GetRoot() const
CConstRef< CNode > GetCentralPane() const
objects::CUser_object * ToUserObject() const
CNode * FindByFingerprint(const TFingerprint &s)
static CRef< CDockLayoutTree > FromUserObject(const objects::CUser_object &obj)
CDockLayoutTree()
CDockLayoutTree interface.
void x_HideNodes(CNode &node)
void DisconnectAllNodes()
CDockNotebook - an extended version of wxAuiNotebook capable of working with Dock Manager and Window ...
CDockPanel - a container with a title bar (caption) hosting a single client window (IWMClient).
CSplitter - container with resizable separators.
void GetWidths(TPosVector &widths) const
void GetHeights(TPosVector &heights) const
const CUser_field & GetField(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
Access a named field in this user field.
CFingerprint identifies an instance of IWMClient and is used for labeling layout positions.
void FromPersistentString(const string &s)
string AsPersistentString() const
returns a string for serialization (if persistent) or ""
virtual CFingerprint GetFingerprint() const =0
returns a fingerprint identifying the client
static const char * kSplitterSizersTag
static const char * kNodeTag
static const char * kHiddenTag
static const char * kCentralTag
static const char * kIndent
static const char * kFingerprintTag
static const char * kChildrenTag
static string kWindowLayoutHdr
static const char * kTypeTag
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
void Info(CExceptionArgs_Base &args)
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
TObjectType * Release(void)
Release a reference to the object and return a pointer to the object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
TBool GetBool(void) const
Get the variant data.
TInt GetInt(void) const
Get the variant data.
const TInts & GetInts(void) const
Get the variant data.
const TObjects & GetObjects(void) const
Get the variant data.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is orig
const struct ncbi::grid::netcache::search::fields::SIZE size
void operator()(CDockLayoutTree::CNode &node)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4