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

📄 pager.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
CNCBINode* CPager::GetPageInfo(void) const{    if (m_ItemCount <= m_PageSize) {        return 0;    }    int lastPage = (m_ItemCount - 1) / m_PageSize;    return new CHTMLPlainText(        "Page " + NStr::IntToString(m_DisplayPage + 1) +        " of " + NStr::IntToString(lastPage + 1));}CNCBINode* CPager::GetItemInfo(void) const{    CHTML_div* node = new CHTML_div;    node->SetClass("medium2");        if (m_ItemCount == 0) {        node->AppendChild(new CHTMLPlainText("0 items found"));    } else {        int firstItem = m_DisplayPage * m_PageSize + 1;        int endItem = min((m_DisplayPage + 1) * m_PageSize, m_ItemCount);        if (firstItem != endItem) {            node->AppendChild(new CHTMLPlainText("Items " +                                                 NStr::IntToString(firstItem)                                                 + "-" +                                                 NStr::IntToString(endItem)));        } else {            node->AppendChild(new CHTMLPlainText("Item " +                                                 NStr::IntToString(firstItem))                              );        }        node->AppendChild(new CHTMLPlainText(" of " +                                             NStr::IntToString(m_ItemCount)));    }    return node;}CNCBINode* CPager::GetPagerView(const string& imgDir,                                const int imgX, const int imgY,                                const string& js_suffix /*kEmptyStr*/) const{    if (m_ItemCount <= m_PageSize) {        return 0;    }    switch (m_view) {    case eButtons:        return new CPagerViewButtons(*this, js_suffix);    default:        break;    }    // Default old behavor    return new CPagerView(*this, imgDir, imgX, imgY);}CPagerView::CPagerView(const CPager& pager, const string& imgDir,                       const int imgX, const int imgY)    : m_ImagesDir(imgDir), m_ImgSizeX(imgX), m_ImgSizeY(imgY), m_Pager(pager){    return;}void CPagerView::AddImageString(CNCBINode* node, int number,                                const string& prefix, const string& suffix){    string s = NStr::IntToString(number + 1);    string name = CPager::KParam_Page + s;    CHTML_image* img;    for ( size_t i = 0; i < s.size(); ++i ) {        img = new CHTML_image(name, m_ImagesDir + prefix + s[i] + suffix, 0);        img->SetAttribute("Alt", name);        if ( m_ImgSizeX )            img->SetWidth( m_ImgSizeX );        if ( m_ImgSizeY )            img->SetHeight( m_ImgSizeY );        node->AppendChild( img );    }}void CPagerView::AddInactiveImageString(CNCBINode* node, int number,                                        const string& prefix,                                        const string& suffix){    string s = NStr::IntToString(number + 1);    CHTML_img* img;    for ( size_t i = 0; i < s.size(); ++i ) {        img = new CHTML_img(m_ImagesDir + prefix + s[i] + suffix);        img->SetAttribute("Alt", s);        if( m_ImgSizeX )            img->SetWidth( m_ImgSizeX );        if( m_ImgSizeY )            img->SetHeight( m_ImgSizeY );        node->AppendChild( img );    }}void CPagerView::CreateSubNodes(){    int column         = 0;    int pageSize       = m_Pager.m_PageSize;    int blockSize      = m_Pager.m_PageBlockSize;    int currentPage    = m_Pager.m_DisplayPage;    int itemCount      = m_Pager.m_ItemCount;    int firstBlockPage = currentPage - currentPage % blockSize;    int lastPage       = max(0, (itemCount + pageSize - 1) / pageSize - 1);    int lastBlockPage  = min(firstBlockPage + blockSize - 1, lastPage);    if (firstBlockPage > 0) {        CHTML_image* img = new CHTML_image(CPager::KParam_PreviousPages,                                           m_ImagesDir + "prev.gif", 0);        img->SetAttribute("Alt", CPager::KParam_PreviousPages);        if ( m_ImgSizeX )            img->SetWidth( m_ImgSizeX );        if ( m_ImgSizeY )            img->SetHeight( m_ImgSizeY );        InsertAt(0, column++, img);    }    for (int i = firstBlockPage; i <= lastBlockPage ; ++i) {        if (i == currentPage) {            // current link            AddImageString(Cell(0, column++), i, "black_", ".gif");        }        else {            // normal link            AddImageString(Cell(0, column++), i, "", ".gif");        }    }    if (lastPage != lastBlockPage) {        CHTML_image* img = new CHTML_image(CPager::KParam_NextPages,                                           m_ImagesDir + "next.gif", 0);        img->SetAttribute("Alt", CPager::KParam_NextPages);        if ( m_ImgSizeX )            img->SetWidth( m_ImgSizeX );        if ( m_ImgSizeY )            img->SetHeight( m_ImgSizeY );        InsertAt(0, column++, img);    }}CPagerViewButtons::CPagerViewButtons(const CPager& pager, const string& js_suffix)    : m_Pager(pager), m_jssuffix(js_suffix){}void CPagerViewButtons::CreateSubNodes(){    int column      = 0;    int pageSize    = m_Pager.m_PageSize;    int currentPage = m_Pager.m_DisplayPage;    int itemCount   = m_Pager.m_ItemCount;    int lastPage    = max(0, (itemCount + pageSize - 1) / pageSize - 1);    if (currentPage > 0) {        CHTML_a* prev = new CHTML_a("javascript:var frm = " \                                    "document.frmQueryBox; " \									"frm.inputpage.value=" +                                    NStr::IntToString(currentPage) +                                     "; Go('Pager');", "Previous");        prev->SetClass("dblinks");        InsertAt(0, column, prev);        InsertAt(0, column++, new CHTML_nbsp);    }            CHTML_input* butt = new CHTML_input("BUTTON", "GoToPage");    butt->SetClass("dblinks");    butt->SetAttribute("value", "Page");    butt->SetEventHandler(eHTML_EH_Click,                          "form.cmd.value='';form." +                          CPager::KParam_InputPage +                          ".value=form.textpage" + m_jssuffix +                          ".value;Go('Pager');");    InsertAt(0, column, butt);    InsertAt(0, column, new CHTML_nbsp);    CHTML_input* textpage =  new CHTML_text("textpage" + m_jssuffix, 4,                                         NStr::IntToString(currentPage + 1));    textpage->SetClass("dblinks");        string suffix;    if ( m_jssuffix.empty() ) {       suffix = "1";    }        textpage->SetEventHandler(eHTML_EH_Change,							  "if(form.textpage" + suffix + "){form.textpage"                              + suffix +".value=" + "this.value}");        textpage->SetEventHandler(eHTML_EH_KeyPress,                              "form." + CPager::KParam_InputPage +".value=" 							  "this.value;KeyPress('Pager',event);");                                             InsertAt(0, column++, textpage);    CHTML_div* div = new CHTML_div;    div->SetClass("medium2");    div->AppendChild(new CHTML_nbsp);    div->AppendChild(new CHTMLPlainText("of"));    div->AppendChild(new CHTML_nbsp);    div->AppendChild(new CHTMLPlainText(NStr::IntToString(lastPage + 1)));    InsertAt(0, column++, div);        // place holder for page num, to explicitly tell about new page num    InsertAt(0, column++, new CHTML_hidden(CPager::KParam_InputPage +                                           m_jssuffix, kEmptyStr));    if (currentPage < lastPage) {        CHTML_a* next = new CHTML_a("javascript:var frm = " \                                    "document.frmQueryBox;" \									"frm.inputpage.value=" +                                    NStr::IntToString(currentPage + 2) +                                     ";Go('Pager');", "Next");        next->SetClass("dblinks");        InsertAt(0, column, next);        InsertAt(0, column++, new CHTML_nbsp(2));    }}END_NCBI_SCOPE/* * =========================================================================== * $Log: pager.cpp,v $ * Revision 1000.2  2004/06/01 19:15:56  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.39 * * Revision 1.39  2004/05/17 20:59:50  gorelenk * Added include of PCH ncbi_pch.hpp * * Revision 1.38  2003/11/03 17:03:08  ivanov * Some formal code rearrangement. Move log to end. * * Revision 1.37  2003/10/02 18:24:38  ivanov * Get rid of compilation warnings; some formal code rearrangement * * =========================================================================== */

⌨️ 快捷键说明

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