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

📄 view.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: view.hpp,v $ * PRODUCTION Revision 1000.5  2004/06/01 19:47:05  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.29 * PRODUCTION * =========================================================================== */#ifndef GUI_CORE___VIEW__HPP#define GUI_CORE___VIEW__HPP/*  $Id: view.hpp,v 1000.5 2004/06/01 19:47:05 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: *    CView -- abstract base class for GBENCH views */#include <gui/core/iview.hpp>#include <gui/objutils/iselection.hpp>#include <gui/utils/view_event.hpp>#include <util/ievent_receiver.hpp>#include <util/ievent_transmitter.hpp>#include <gui/plugin/PluginArgSet.hpp>#include <gui/print/print_options.hpp>#include <objmgr/bioseq_handle.hpp>#include <memory>BEGIN_NCBI_SCOPEclass CSelectionBuffer;///////////////////////////////////////////////////////////////////////////////  CView -- base class for all views//class NCBI_GUICORE_EXPORT CView : public IView,                                  public IEventTransmitter,                                  public IEventReceiver,                                  public ISelection{    friend class CDocWorkspace;public:    // default ctor    CView();    // virtual dtor    virtual ~CView(void);    // Show the current window    virtual void Show(void);    // Hide the current window    virtual void Hide(void);    // callback for exiting a given window    virtual void OnExit(void);    // Print the contents of the current window.  This is made virtual to allow    // overrides by derived classes.    virtual void OnPrint(void);    // set the size of the window for this view.    virtual void SetSize(int width, int height);    // get the size of the window for this view.    virtual void GetSize(int& width, int& height) const;    // set the position of the window for this view.    virtual void SetPosition(int pos_x, int pos_y);    // set the position of the window for this view.    virtual void GetPosition(int& pos_x, int& pos_y) const;    // resize this window.    virtual void Resize(int pos_x, int pos_y, int width, int height);    // Access the document associated with this view    IDocument*  GetDocument(void);    // set the view's title    void SetTitle(const string& title);    // Access the event mask.  The event mask is a bitmap of flags, each bit of    // which corresponds to a distinct event.  These events define the scope of    // communication between views and from document to view.    void         SetEventMask(TUpdateFlags flags);    TUpdateFlags GetEventMask(void) const;    // Access the selection buffer.  The selection buffer is a hierarchical    // data structure holding lists of items for a number of documents.    const CSelectionBuffer& GetSelBuffer(void) const;    CSelectionBuffer&       SetSelBuffer(void);    // ISelection interface requirements.    void GetSelections(TConstScopedObjects& objs) const;    void SetSelections(const TConstScopedObjects& objs);    // Access the visible range.  This is provided as a global mechanism to    // permit other views to maneuver the visible range of their sibling views.    // This is provided as a virtual function such that sibling views can    // choose to ignore this message.    virtual void SetVisibleRange(const objects::CSeq_loc& range);    // Access the current visible range    const objects::CSeq_loc& GetVisibleRange(void) const;    //    // IWMClient interface    //    string GetLabel() const;    const CMenuItem* GetMenu() const;    //    // messaging API    //    // Message even handler for inter-view messaging    void MessageEventHandler(TUpdateFlags flags, const void *user_data);    // message event triggers.  These functions start the messaging cascade.    void PostDocumentChanged(void);    void PostVisibleRangeChanged(const objects::CSeq_loc& loc);    void PostSelectionChanged(const CSelectionBuffer& buf);    // Message events callbacks    virtual void OnSelectionChanged(const CSelectionBuffer& sels);    virtual void OnDocumentChanged(void);    virtual void OnViewReleased(IView& view);    virtual void OnViewCreated(IView& view);    virtual void OnVisibleRangeChanged(const objects::CSeq_loc& loc);    // Default events handler - reports unhandled event       void OnAllEvents(CViewEvent::TEventObject evt);    // Events map - all events to default handler    EVENT_MAP_RX_BEGIN_INT        EVENT_ACCEPT_ALL(OnAllEvents)    EVENT_MAP_RX_END    // IEventTransmitter    EVENT_MAP_TX_BEGIN        EVENT_FIRE_ALL()    EVENT_MAP_TX_END    // Transmitter/reciever QI for registering events with document    virtual IEventTransmitter * QueryInterfaceTransmitter(void);    virtual IEventReceiver    * QueryInterfaceReceiver(void);protected:    // The core chunk of the FLTK GUI that we represent: a child window for the    // genome workbench framework    auto_ptr<Fl_Window>    m_Window;    // Each view holds a CRef<> of a single document    CRef<IDocument>         m_Document;    // Each view manages its own selection buffer.    CRef<CSelectionBuffer>  m_SelBuffer;    // The bitmask of events this view has chosen to receive.    TUpdateFlags            m_EventMask;    // The current visible range    CRef<objects::CSeq_loc> m_VisibleRange;    // our title (FLTK stores only the pointer, not the contents)    string m_TitleStr;    // internal document set function (this hides a const cast)    void x_SetDocument(const IDocument& doc);    // internal overridable hook for printing    virtual void x_Print(const CPrintOptions& opts);    // create a title string for this view, given a bioseq-handle    string x_GetTitle(const objects::CBioseq_Handle& handle) const;private:    // Prohibit copying!    CView(const CView&);    CView& operator= (const CView&);};/////////////////////////////////////////////////////////////////////////// Inline Methods////////////////////////////////////////////////////////////////////////inlinevoid CView::SetEventMask(TUpdateFlags flags){    m_EventMask = flags;}inlineTUpdateFlags CView::GetEventMask(void) const{    return m_EventMask;}inlineconst CSelectionBuffer& CView::GetSelBuffer(void) const{    return *m_SelBuffer;}inlineCSelectionBuffer& CView::SetSelBuffer(void){    return *m_SelBuffer;}inlineIDocument* CView::GetDocument(void){    return m_Document;}END_NCBI_SCOPE/* * =========================================================================== * $Log: view.hpp,v $ * Revision 1000.5  2004/06/01 19:47:05  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.29 * * Revision 1.29  2004/05/20 12:23:26  dicuccio * Removed include for child.hpp * * Revision 1.28  2004/05/17 13:18:51  dicuccio * Removed old document workspace.  Inherit views from IWMClient to support new * workspace integration.  Removed references to CChild. * * Revision 1.27  2004/05/03 12:42:17  dicuccio * Split gui_utils into gui_utils and gui_objutils * * Revision 1.26  2004/04/16 14:31:57  dicuccio * Inherit CView from ISelection.  Provide base class support for marshalling * selections * * Revision 1.25  2004/04/07 12:37:35  dicuccio * Dropped unnneeded conversion ctor * * Revision 1.24  2004/03/30 17:09:56  tereshko * Added support for events broadcasting * * Revision 1.23  2004/01/20 18:14:21  dicuccio * Added default ctor.  Removed dead code * * Revision 1.22  2003/12/22 19:12:11  dicuccio * Modified mechanism for view-view messaging: provide more explicit function * signatures; added helper functions to make posting messages easier. * * Revision 1.21  2003/11/06 19:59:29  dicuccio * Removed USING_SCOPE(objects) * * Revision 1.20  2003/11/04 17:13:37  dicuccio * Added APIs for querying GUI position/size * * Revision 1.19  2003/11/04 13:08:24  dicuccio * Formatting changes * * Revision 1.18  2003/11/04 12:36:50  friedman * Added event message handling and callback for the document message pool. * * Revision 1.17  2003/10/16 15:47:41  dicuccio * Added standard interface for retrieving a view's title given a bioseq-handle * * Revision 1.16  2003/10/10 17:10:57  dicuccio * Added callback for OnExit() - called at view release time * * Revision 1.15  2003/09/04 14:00:26  dicuccio * Introduce IDocument and IView as abstract base classes.  Use IDocument instead * of CDocument. * * Revision 1.14  2003/08/15 19:33:22  dicuccio * Changed location of print code * * Revision 1.13  2003/06/25 16:59:41  dicuccio * Changed CPluginHandle into a pointer-to-implementation (the previous * implementation is now the pointer held).  Lots of #include file clean-ups. * * Revision 1.12  2003/06/20 14:42:18  dicuccio * Added initial print capabilities * * Revision 1.11  2003/06/16 15:55:57  dicuccio * Work-in-progress: everything compiles, still much reorganization to be done. * Moved generic functionality out of opengl/print/ and into gui/utils (print * options, print dialogs, etc.).  Removed interactive state from CGlCanvas. * Added hook in CView for opening standard print dialog, and for generic print * handling. * * Revision 1.10  2003/05/19 13:32:43  dicuccio * Moved gui/core/plugin --> gui/plugin/ * * Revision 1.9  2003/04/24 16:14:02  dicuccio * Added new interface functions for retrieving / setting the document associated * with a view * * Revision 1.8  2003/03/17 14:58:01  dicuccio * Added member variable for the FLTK gui component (stored as auto_ptr<>). * Changed Show()/Hide() from pure virtual to virtual; provided default * implementation. * * Revision 1.7  2003/03/03 14:20:32  dicuccio * Added visible range as a base class quantity * * Revision 1.6  2003/01/13 13:11:42  dicuccio * Namespace clean-up.  Retired namespace gui -> converted to namespace ncbi. * Moved all FLUID-generated code into namespace ncbi. * * Revision 1.5  2002/12/19 18:13:02  dicuccio * Added export specifiers for Win32. * * Revision 1.4  2002/12/12 15:18:57  dicuccio * Changed SetSelBuffer to non-const GetSelBuffer.  Added copious function * description comments. * * Revision 1.3  2002/11/19 16:56:46  dicuccio * Added non-const accessor to a view's selection buffer. * * Revision 1.2  2002/11/07 18:20:14  dicuccio * Moved #ifdef to top of file. * * Revision 1.1  2002/11/05 19:42:54  dicuccio * Initial revision * * =========================================================================== */#endif  // GUI_CORE___VIEW__HPP

⌨️ 快捷键说明

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