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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: iview.hpp,v $
  4.  * PRODUCTION Revision 1000.4  2004/06/01 19:46:50  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_CORE___IVIEW__HPP
  10. #define GUI_CORE___IVIEW__HPP
  11. /*  $Id: iview.hpp,v 1000.4 2004/06/01 19:46:50 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software / database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software / database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Mike DiCuccio
  37.  *
  38.  * File Description:
  39.  *    IView -- abstract base class for GBENCH views
  40.  */
  41. #include <corelib/ncbiobj.hpp>
  42. #include <gui/types.hpp>
  43. #include <gui/plugin/PluginArgSet.hpp>
  44. #include <gui/widgets/workspace/wm_client.hpp>
  45. #include <gui/print/print_options.hpp>
  46. #include <memory>
  47. BEGIN_NCBI_SCOPE
  48. class IDocument;
  49. class CSelectionBuffer;
  50. class IEventTransmitter;
  51. class IEventReceiver;
  52. //
  53. // class IView defines the abstract interface for views.
  54. //
  55. class IView : public CObject,
  56.               public IWMClient
  57. {
  58.     friend class CDocWorkspace;
  59. public:
  60.     // virtual dtor
  61.     virtual ~IView(void) {}
  62.     // Show the current window
  63.     virtual void Show(void) = 0;
  64.     // Hide the current window
  65.     virtual void Hide(void) = 0;
  66.     // callback for removing the current window
  67.     virtual void OnExit(void) = 0;
  68.     // Print the contents of the current window.  This is made virtual to allow
  69.     // overrides by derived classes.
  70.     virtual void OnPrint(void) = 0;
  71.     // set the size of the window for this view.  Derived classes can ignore
  72.     // this if they choose.
  73.     virtual void SetSize(int width, int height) = 0;
  74.     // retrieve the size of this view
  75.     virtual void GetSize(int& width, int& height) const = 0;
  76.     // set the position of the window for this view.  Derived classes can
  77.     // ignore this if they choose.
  78.     virtual void SetPosition(int pos_x, int pos_y) = 0;
  79.     // set the position of the window for this view.  Derived classes can
  80.     // ignore this if they choose.
  81.     virtual void GetPosition(int& pos_x, int& pos_y) const = 0;
  82.     // resize this window.  This is equivalent to calling both SetSize()
  83.     // and SetPosition().
  84.     virtual void Resize(int pos_x, int pos_y, int width, int height) = 0;
  85.     // Pure virtual requirement: Retrieve a title for this view.  Derived
  86.     // classes should provide something succint but descriptive for this; the
  87.     // string returned by this function will appear in menus that list the
  88.     // views available for a given record.
  89.     virtual const string& GetTitle(void) const = 0;
  90.     // Access the document associated with this view
  91.     virtual IDocument*  GetDocument(void) = 0;
  92.     // Access the event mask.  The event mask is a bitmap of flags, each bit of
  93.     // which corresponds to a distinct event.  These events define the scope of
  94.     // communication between views and from document to view.
  95.     virtual void         SetEventMask(TUpdateFlags flags) = 0;
  96.     virtual TUpdateFlags GetEventMask(void) const = 0;
  97.     // Access the selection buffer.  The selection buffer is a hierarchical
  98.     // data structure holding lists of items for a number of documents.
  99.     virtual const CSelectionBuffer& GetSelBuffer(void) const = 0;
  100.     virtual CSelectionBuffer&       SetSelBuffer(void) = 0;
  101.     // Access the visible range.  This is provided as a global mechanism to
  102.     // permit other views to maneuver the visible range of their sibling views.
  103.     // This is provided as a virtual function such that sibling views can
  104.     // choose to ignore this message.
  105.     virtual void SetVisibleRange(const objects::CSeq_loc& range) = 0;
  106.     // Access the current visible range
  107.     virtual const objects::CSeq_loc& GetVisibleRange(void) const = 0;
  108.     // Message even handler for inter-view messaging
  109.     virtual void MessageEventHandler(TUpdateFlags flags, const void *user_data) = 0; 
  110.     // Message events callbacks
  111.     virtual void OnSelectionChanged(const CSelectionBuffer& sels) = 0;
  112.     virtual void OnDocumentChanged(void) = 0;
  113.     virtual void OnViewReleased(IView& view) = 0;
  114.     virtual void OnViewCreated(IView& view) = 0;
  115.     virtual void OnVisibleRangeChanged(const objects::CSeq_loc& loc) = 0;
  116.     
  117.     // Transmitter/reciever QI
  118.     virtual IEventTransmitter * QueryInterfaceTransmitter(void) = 0;
  119.     virtual IEventReceiver    * QueryInterfaceReceiver(void)    = 0;
  120. };
  121. END_NCBI_SCOPE
  122. /*
  123.  * ===========================================================================
  124.  * $Log: iview.hpp,v $
  125.  * Revision 1000.4  2004/06/01 19:46:50  gouriano
  126.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  127.  *
  128.  * Revision 1.13  2004/05/20 12:23:08  dicuccio
  129.  * Removed include for child.hpp
  130.  *
  131.  * Revision 1.12  2004/05/17 13:18:51  dicuccio
  132.  * Removed old document workspace.  Inherit views from IWMClient to support new
  133.  * workspace integration.  Removed references to CChild.
  134.  *
  135.  * Revision 1.11  2004/04/07 12:33:40  dicuccio
  136.  * Removed dead code
  137.  *
  138.  * Revision 1.10  2004/03/30 17:09:56  tereshko
  139.  * Added support for events broadcasting
  140.  *
  141.  * Revision 1.9  2004/03/22 14:17:15  dicuccio
  142.  * Replace gui/gui with gui/types - relieves FLTK dependency
  143.  *
  144.  * Revision 1.8  2004/03/11 17:16:04  dicuccio
  145.  * Use gui/gui instead of gui/types
  146.  *
  147.  * Revision 1.7  2003/12/22 19:12:10  dicuccio
  148.  * Modified mechanism for view-view messaging: provide more explicit function
  149.  * signatures; added helper functions to make posting messages easier.
  150.  *
  151.  * Revision 1.6  2003/11/06 19:53:27  dicuccio
  152.  * Removed USING_SCOPE(objects)
  153.  *
  154.  * Revision 1.5  2003/11/04 17:10:43  dicuccio
  155.  * Added pure virtual functions for querying GUI position/size
  156.  *
  157.  * Revision 1.4  2003/11/04 12:36:50  friedman
  158.  * Added event message handling and callback for the document message pool.
  159.  *
  160.  * Revision 1.3  2003/10/10 17:10:57  dicuccio
  161.  * Added callback for OnExit() - called at view release time
  162.  *
  163.  * Revision 1.2  2003/09/29 15:20:06  dicuccio
  164.  * Deprecated gui/scope.hpp.  Merged gui/core/types.hpp into gui/types.hpp
  165.  *
  166.  * Revision 1.1  2003/09/04 13:56:53  dicuccio
  167.  * Initial revision
  168.  *
  169.  * ===========================================================================
  170.  */
  171. #endif  // GUI_CORE___IVIEW__HPP