tree_browser.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:4k
- /*
- * ===========================================================================
- * PRODUCTION $Log: tree_browser.cpp,v $
- * PRODUCTION Revision 1000.1 2004/06/01 21:09:26 gouriano
- * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
- * PRODUCTION
- * ===========================================================================
- */
- /* $Id: tree_browser.cpp,v 1000.1 2004/06/01 21:09:26 gouriano Exp $
- * ===========================================================================
- *
- * PUBLIC DOMAIN NOTICE
- * National Center for Biotechnology Information
- *
- * This software/database is a "United States Government Work" under the
- * terms of the United States Copyright Act. It was written as part of
- * the author's official duties as a United States Government employee and
- * thus cannot be copyrighted. This software/database is freely available
- * to the public for use. The National Library of Medicine and the U.S.
- * Government have not placed any restriction on its use or reproduction.
- *
- * Although all reasonable efforts have been taken to ensure the accuracy
- * and reliability of the software and data, the NLM and the U.S.
- * Government do not and cannot warrant the performance or results that
- * may be obtained by using this software or data. The NLM and the U.S.
- * Government disclaim all warranties, express or implied, including
- * warranties of performance, merchantability or fitness for any particular
- * purpose.
- *
- * Please cite the author in any work or product based on this material.
- *
- * ===========================================================================
- *
- * Authors: Mike DiCuccio
- *
- * File Description:
- *
- */
- #include <ncbi_pch.hpp>
- #include <gui/widgets/fl/tree_browser.hpp>
- BEGIN_NCBI_SCOPE
- CTreeBrowser::CTreeBrowser(int x, int y, int w, int h, const char* label)
- : Flu_Tree_Browser(x, y, w, h, label)
- {
- }
- CTreeBrowser::Node* CTreeBrowser::Add(const string& child_label,
- Node* node,
- EAdd add_mode)
- {
- if (child_label.empty()) {
- return NULL;
- }
- string str;
- const string* pstr = &child_label;
- if ( !node ) {
- node = get_root();
- }
- switch (add_mode) {
- case eAdd_Branch:
- if (child_label[ child_label.length() - 1 ] != '/') {
- str = child_label + "/";
- pstr = &str;
- }
- break;
- case eAdd_Leaf:
- if (child_label[ child_label.length() - 1 ] == '/' &&
- (child_label.length() < 2 ||
- child_label[ child_label.length() - 2 ] != '\')
- ) {
- str = child_label.substr(0, child_label.length()-1);
- pstr = &str;
- }
- break;
- }
- return add(node, pstr->c_str());
- }
- CTreeBrowser::Node* CTreeBrowser::AddChild(const string& child_label,
- Node* node)
- {
- // make sure we end in an un-escaped '/'
- return Add(x_EscapeSlashes(child_label), node, eAdd_Branch);
- }
- CTreeBrowser::Node* CTreeBrowser::AddLeaf(const string& child_label,
- Node* node)
- {
- // make sure we end in an un-escaped '/'
- return Add(x_EscapeSlashes(child_label), node, eAdd_Leaf);
- }
- CTreeBrowser::Node* CTreeBrowser::GetSelected(Node* node) const
- {
- if ( !node ) {
- node = const_cast<CTreeBrowser*>(this)->get_root();
- }
- while (node && !node->selected() ) {
- node = node->next();
- }
- return node;
- }
- string CTreeBrowser::x_EscapeSlashes(const string& s) const
- {
- string str(s);
- string::size_type pos = 0;
- while ( (pos = str.find_first_of("/", pos)) != string::npos) {
- str.insert(pos, "\");
- pos += 2;
- }
- return str;
- }
- END_NCBI_SCOPE
- /*
- * ===========================================================================
- * $Log: tree_browser.cpp,v $
- * Revision 1000.1 2004/06/01 21:09:26 gouriano
- * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.3
- *
- * Revision 1.3 2004/05/21 22:27:53 gorelenk
- * Added PCH ncbi_pch.hpp
- *
- * Revision 1.2 2003/12/22 19:38:13 dicuccio
- * Made GetSelected() const
- *
- * Revision 1.1 2003/12/09 15:51:53 dicuccio
- * Deprecated Fl_Toggle_Tree - replaced with Flu_Tree_Browser. Added CTreeBrowser
- * as a standard tree interface
- *
- * ===========================================================================
- */