dlg_messagebox.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: dlg_messagebox.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:54:32  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: dlg_messagebox.cpp,v 1000.1 2004/06/01 20:54:32 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Yuri Kapustin
  35.  *
  36.  * File Description:
  37.  *    CDlgMessageBox -- FLTK-based message box class
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <corelib/ncbistd.hpp>
  41. #include "dlg_messagebox.hpp"
  42. BEGIN_NCBI_SCOPE
  43. CDlgMessageBox::CDlgMessageBox( const char* message, const char* title,
  44.                                 EMessageBoxType type ):
  45.     m_title(title),
  46.     m_msg(message),
  47.     m_btnclicked(eID_ERROR)
  48. {
  49.     m_wnd = new Fl_Window(235, 100, m_title.c_str());
  50.     m_wnd->labeltype(FL_NORMAL_LABEL);
  51.     m_wnd->user_data((void*)(this));
  52.     m_textbox = new Fl_Box(1, 1, 233, 45, m_msg.c_str());
  53.     m_button[0] = m_button[1] = 0;
  54.     switch(type) {
  55.     case eMB_OK: {
  56.         m_button[0] = new Fl_Button(80, 55, 85, 32, "Ok");
  57.     }
  58.     break;
  59.     case eMB_CANCEL: {
  60.         m_button[0] = new Fl_Button(80, 55, 85, 32, "Cancel");
  61.     }
  62.     break;
  63.     case eMB_OKCANCEL: {
  64.         m_button[0] = new Fl_Button(26, 55, 85, 32,  "Ok");
  65.         m_button[1] = new Fl_Button(126, 55, 85, 32, "Cancel");
  66.     }
  67.     break;
  68.     case eMB_YESNO: {
  69.         m_button[0] = new Fl_Button(26, 55, 85, 32,  "Yes");
  70.         m_button[1] = new Fl_Button(126, 55, 85, 32, "No");
  71.     }
  72.     break;
  73.     }
  74.     if(m_button[0])
  75.         m_button[0]->callback((Fl_Callback*)x_OnButtonClicked, (void*) this);
  76.     if(m_button[1])
  77.         m_button[1]->callback((Fl_Callback*)x_OnButtonClicked, (void*) this);
  78.     
  79.     m_wnd->end();
  80. }
  81. CDlgMessageBox::~CDlgMessageBox()
  82. {
  83.     delete m_textbox;
  84.     delete m_button[0];
  85.     delete m_button[1];
  86.     delete m_wnd;
  87. }
  88. CDlgMessageBox::EMessageBoxButton CDlgMessageBox::DoModal()
  89. {
  90.     if(!m_wnd)
  91.         return eID_ERROR;
  92.     m_wnd->show();
  93.     while(m_wnd->shown()) {
  94.         Fl::wait();
  95.     }
  96.     return m_btnclicked;
  97. }
  98. // button callback
  99. void CDlgMessageBox::x_OnButtonClicked(Fl_Button* button, void* owner)
  100. {
  101.     CDlgMessageBox* pmb = reinterpret_cast<CDlgMessageBox*>(owner);
  102.     const string btnlabel (string(button->label()));
  103.     if(btnlabel == "Yes") {
  104.         pmb->m_btnclicked = eID_YES;
  105.     }
  106.     else if(btnlabel == "No") {
  107.         pmb->m_btnclicked = eID_NO;
  108.     }
  109.     else if(btnlabel == "Ok") {
  110.         pmb->m_btnclicked = eID_OK;
  111.     }
  112.     else if(btnlabel == "Cancel") {
  113.         pmb->m_btnclicked = eID_CANCEL;
  114.     }
  115.     pmb->m_wnd->hide();
  116. }
  117. CDlgMessageBox::EMessageBoxButton CDlgMessageBox::GetLastButtonClicked()
  118. {
  119.     return m_btnclicked;
  120. }
  121. void CDlgMessageBox::Show()
  122. {
  123.     if(m_wnd)
  124.         m_wnd->show();
  125. }
  126. void CDlgMessageBox::Hide()
  127. {
  128.     if(m_wnd)
  129.         m_wnd->hide();
  130. }
  131. void CDlgMessageBox::SetText(const char* new_text)
  132. {
  133.     if(m_textbox) {
  134.         m_textbox->label(new_text);
  135.         m_textbox->redraw();
  136.     }
  137. }
  138. END_NCBI_SCOPE
  139. /*
  140.  * ===========================================================================
  141.  * $Log: dlg_messagebox.cpp,v $
  142.  * Revision 1000.1  2004/06/01 20:54:32  gouriano
  143.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  144.  *
  145.  * Revision 1.5  2004/05/21 22:27:46  gorelenk
  146.  * Added PCH ncbi_pch.hpp
  147.  *
  148.  * Revision 1.4  2003/04/22 16:01:07  kapustin
  149.  * Rearrange init order to supress gcc warnings
  150.  *
  151.  * Revision 1.3  2003/03/12 21:12:07  kapustin
  152.  * Change sub-objects destruction order
  153.  *
  154.  * Revision 1.2  2003/02/21 17:13:54  dicuccio
  155.  * Changed enums in CDlgMessageBox - added leading 'e' to avoid
  156.  * impossible-to-remove conflict with Windows code.
  157.  *
  158.  * Revision 1.1  2003/02/04 22:56:46  kapustin
  159.  * Initial revision
  160.  *
  161.  * ===========================================================================
  162.  */