⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 components.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: components.cpp,v $ * PRODUCTION Revision 1000.3  2004/06/01 19:15:23  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.34 * PRODUCTION * =========================================================================== *//*  $Id: components.cpp,v 1000.3 2004/06/01 19:15:23 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. * * =========================================================================== * * Author:  Lewis Geer * */#include <ncbi_pch.hpp>#include <html/components.hpp>#include <html/nodemap.hpp>BEGIN_NCBI_SCOPECSubmitDescription::CSubmitDescription(void){    return;}CSubmitDescription::CSubmitDescription(const string& name)    : m_Name(name){    return;}CSubmitDescription::CSubmitDescription(const string& name, const string& label)    : m_Name(name), m_Label(label){    return;}CNCBINode* CSubmitDescription::CreateComponent(void) const{    if ( m_Name.empty() ) {        return 0;    }    if ( m_Label.empty() ) {        return new CHTML_submit(m_Name);    }else {        return new CHTML_submit(m_Name, m_Label);    }}CNCBINode* COptionDescription::CreateComponent(const string& def) const{    if ( m_Value.empty() ) {        return new CHTML_option(m_Label, m_Label == def);    } else if ( m_Label.empty() ) {        return new CHTML_option(m_Value, m_Value == def);    } else {        return new CHTML_option(m_Value, m_Label, m_Value == def);    }}CSelectDescription::CSelectDescription(void){    return;}CSelectDescription::CSelectDescription(const string& name)    : m_Name(name){    return;}void CSelectDescription::Add(const string& value){    m_List.push_back(COptionDescription(value));}void CSelectDescription::Add(const string& value, const string& label){    m_List.push_back(COptionDescription(value, label));}CNCBINode* CSelectDescription::CreateComponent(void) const{    if ( m_Name.empty() || m_List.empty() ) {        return 0;    }    CNCBINode* select = new CHTML_select(m_Name);    for ( list<COptionDescription>::const_iterator i = m_List.begin();          i != m_List.end(); ++i ) {        select->AppendChild(i->CreateComponent(m_Default));    }    if ( !m_TextBefore.empty() || !m_TextAfter.empty() ) {        CNCBINode* combine = new CNCBINode;        if ( !m_TextBefore.empty() ) {            combine->AppendChild(new CHTMLPlainText(m_TextBefore));        }        combine->AppendChild(select);        if ( !m_TextAfter.empty() ) {            combine->AppendChild(new CHTMLPlainText(m_TextAfter));        }        select = combine;    }    return select;}CTextInputDescription::CTextInputDescription(void)    : m_Width(0){    return;}CTextInputDescription::CTextInputDescription(const string& name)    : m_Name(name), m_Width(0){    return;}CNCBINode* CTextInputDescription::CreateComponent(void) const{    if ( m_Name.empty() ) {        return 0;    }    if ( m_Width ) {        return new CHTML_text(m_Name, m_Width, m_Value);    } else {        return new CHTML_text(m_Name, m_Value);    }}CQueryBox::CQueryBox(void)    : m_Submit("cmd", "Search"), m_Database("db"),      m_Term("term"), m_DispMax("dispmax"),      m_Width(-1){    SetCellSpacing(0);    SetCellPadding(5);    m_Database.m_TextBefore = "Search ";    m_Database.m_TextAfter = "for";    m_DispMax.m_TextBefore = "Show ";    m_DispMax.m_TextAfter = "documents per page";}void CQueryBox::CreateSubNodes(){    SetBgColor(m_BgColor);    if ( m_Width >= 0 ) {        SetWidth(m_Width);    }    CheckTable();    int row = CalculateNumberOfRows();    InsertAt(row, 0, m_Database.CreateComponent())->SetColSpan(2);    InsertAt(row + 1, 0, m_Term.CreateComponent());    InsertAt(row + 1, 0, m_Submit.CreateComponent());    InsertAt(row + 2, 0, m_DispMax.CreateComponent()); }CNCBINode* CQueryBox::CreateComments(void){    return 0;}// PagerCButtonList::CButtonList(void){    return;}void CButtonList::CreateSubNodes(){    CNCBINode* select = m_List.CreateComponent();    if ( select ) {        AppendChild(m_Button.CreateComponent());        AppendChild(select);    }}CPageList::CPageList(void)    : m_Current(-1){    SetCellSpacing(2);}void CPageList::x_AddImageString(CNCBINode* node, const string& name, int number,                                 const string& imageStart, const string& imageEnd){    string s = NStr::IntToString(number);    for ( size_t i = 0; i < s.size(); ++i ) {        node->AppendChild(new CHTML_image(name, imageStart + s[i] + imageEnd, 0));    }}void CPageList::x_AddInactiveImageString(CNCBINode* node, const string&,                                         int number,                                         const string& imageStart,                                         const string& imageEnd){    string s = NStr::IntToString(number);       for ( size_t i = 0; i < s.size(); ++i ) {        node->AppendChild(new CHTML_img(imageStart + s[i] + imageEnd));    }}void CPageList::CreateSubNodes(){    int column = 0;    if ( !m_Backward.empty() ) {        InsertAt(0, column++,                 new CHTML_image(m_Backward, "/images/prev.gif", 0));    }    for (map<int, string>::iterator i = m_Pages.begin();         i != m_Pages.end(); ++i ) {        if ( i->first == m_Current ) {            // Current link            x_AddInactiveImageString(Cell(0, column++), i->second, i->first, "/images/black_", ".gif");        }        else {            // Normal link            x_AddImageString(Cell(0, column++), i->second, i->first, "/images/", ".gif");        }    }    if ( !m_Forward.empty() ) {        InsertAt(0, column++, new CHTML_image(m_Forward, "/images/next.gif", 0));    }}// Pager boxCPagerBox::CPagerBox(void)    : m_Width(460),      m_TopButton(new CButtonList),      m_LeftButton(new CButtonList),      m_RightButton(new CButtonList),      m_PageList(new CPageList),      m_NumResults(0),      m_BgColor("#c0c0c0"){    return;}void CPagerBox::CreateSubNodes(void){    CHTML_table* table;    CHTML_table* tableTop;    CHTML_table* tableBot;    table = new CHTML_table();    table->SetCellSpacing(0)->SetCellPadding(0)->SetBgColor(m_BgColor)->SetWidth(m_Width)->SetAttribute("border", "0");    AppendChild(table);    tableTop = new CHTML_table();    tableTop->SetCellSpacing(0)->SetCellPadding(0)->SetWidth(m_Width);    tableBot = new CHTML_table();    tableBot->SetCellSpacing(0)->SetCellPadding(0)->SetWidth(m_Width);    table->InsertAt(0, 0, tableTop);    table->InsertAt(1, 0, tableBot);    tableTop->InsertAt(0, 0, m_TopButton);    tableTop->InsertAt(0, 1, m_PageList);    tableBot->InsertAt(0, 0, m_LeftButton);    tableBot->InsertAt(0, 1, m_RightButton);    tableBot->InsertAt(0, 2, new CHTMLText(NStr::IntToString(m_NumResults) + ((m_NumResults==1)?" result":" results")));}CSmallPagerBox::CSmallPagerBox()    : m_Width(460), m_PageList(0), m_NumResults(0){    return;}void CSmallPagerBox::CreateSubNodes(){    CHTML_table* Table = new CHTML_table();    AppendChild(Table);    Table->SetCellSpacing(0)->SetCellPadding(0)->SetBgColor(m_BgColor)        ->SetWidth(m_Width)->SetAttribute("border", 0);        Table->InsertAt(0, 0, new CPageList);    Table->InsertAt(0, 1, new CHTMLText(NStr::IntToString(m_NumResults) + ((m_NumResults==1)?" result":" results")));}END_NCBI_SCOPE/* * =========================================================================== * $Log: components.cpp,v $ * Revision 1000.3  2004/06/01 19:15:23  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.34 * * Revision 1.34  2004/05/17 20:59:50  gorelenk * Added include of PCH ncbi_pch.hpp * * Revision 1.33  2004/01/30 14:03:21  lavr * Cosmetic change to sync with .hpp * * Revision 1.32  2004/01/27 15:39:52  ivanov * Get rid of Sun Workshop compilation warning. * * Revision 1.31  2003/11/03 17:03:08  ivanov * Some formal code rearrangement. Move log to end. * * Revision 1.30  1999/10/28 13:40:34  vasilche * Added reference counters to CNCBINode. * * Revision 1.29  1999/06/07 15:21:04  vasilche * Fixed some warnings. * * Revision 1.28  1999/04/22 14:20:19  vasilche * Now CHTML_select::AppendOption and CHTML_option constructor accept option * name always as first argument. * * Revision 1.27  1999/04/15 19:56:23  vasilche * More warnings fixed * * Revision 1.26  1999/04/15 19:48:22  vasilche * Fixed several warnings detected by GCC * * Revision 1.25  1999/04/08 19:00:30  vasilche * Added current cell pointer to CHTML_table * * Revision 1.24  1999/02/23 19:04:27  vasilche * Fixed uninitialized m_Width in CQueryBox * * Revision 1.23  1999/01/28 21:58:07  vasilche * QueryBox now inherits from CHTML_table (not CHTML_form as before). * Use 'new CHTML_form("url", queryBox)' as replacement of old QueryBox. * * Revision 1.22  1999/01/21 21:12:58  vasilche * Added/used descriptions for HTML submit/select/text. * Fixed some bugs in paging. * * Revision 1.21  1999/01/21 16:18:05  sandomir * minor changes due to NStr namespace to contain string utility functions * * Revision 1.20  1999/01/20 18:12:44  vasilche * Added possibility to change label of buttons. * * Revision 1.19  1999/01/19 21:17:41  vasilche * Added CPager class * * Revision 1.18  1999/01/15 17:47:55  vasilche * Changed CButtonList options: m_Name -> m_SubmitName, m_Select -> * m_SelectName. Added m_Selected. * Fixed CIDs Encode/Decode. * * Revision 1.17  1999/01/14 21:25:19  vasilche * Changed CPageList to work via form image input elements. * * Revision 1.16  1999/01/07 17:06:35  vasilche * Added default query text in CQueryBox. * Added query text width in CQueryBox. * * Revision 1.15  1999/01/07 16:41:56  vasilche * CHTMLHelper moved to separate file. * TagNames of CHTML classes ara available via s_GetTagName() static * method. * Input tag types ara available via s_GetInputType() static method. * Initial selected database added to CQueryBox. * Background colors added to CPagerBax & CSmallPagerBox. * * Revision 1.14  1999/01/07 14:53:57  vasilche * CButtonList displays nothing if list is empty. * * Revision 1.13  1999/01/06 21:35:37  vasilche * Avoid use of Clone. * Fixed default CHTML_text width. * * Revision 1.12  1999/01/05 21:47:14  vasilche * Added 'current page' to CPageList. * CPageList doesn't display forward/backward if empty. * * Revision 1.11  1999/01/04 20:06:13  vasilche * Redesigned CHTML_table. * Added selection support to HTML forms (via hidden values). * * Revision 1.10  1998/12/28 23:29:09  vakatov * New CVS and development tree structure for the NCBI C++ projects * * Revision 1.9  1998/12/28 16:48:08  vasilche * Removed creation of QueryBox in CHTMLPage::CreateView() * CQueryBox extends from CHTML_form * CButtonList, CPageList, CPagerBox, CSmallPagerBox extend from CNCBINode. * * Revision 1.8  1998/12/23 21:21:03  vasilche * Added more HTML tags (almost all). * Importent ones: all lists (OL, UL, DIR, MENU), fonts (FONT, BASEFONT). * * Revision 1.7  1998/12/21 22:25:02  vasilche * A lot of cleaning. * * Revision 1.6  1998/12/11 22:52:01  lewisg * added docsum page * * Revision 1.5  1998/12/11 18:12:45  lewisg * frontpage added * * Revision 1.4  1998/12/09 23:00:53  lewisg * use new cgiapp class * * Revision 1.3  1998/12/08 00:33:42  lewisg * cleanup * * Revision 1.2  1998/11/23 23:44:28  lewisg * toolpages.cpp * * Revision 1.1  1998/10/29 16:13:07  lewisg * version 2 * * =========================================================================== */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -