NCBI C++ ToolKit
asn_element_item.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef GUI_WIDGETS_SEQ___ASN_ELEMENT_ITEM__HPP
2 #define GUI_WIDGETS_SEQ___ASN_ELEMENT_ITEM__HPP
3 
4 /* $Id: asn_element_item.hpp 39821 2017-11-08 16:18:05Z katargir $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors: Roman Katargin
30  *
31  * File Description:
32  *
33  */
34 
35 #include <corelib/ncbiobj.hpp>
36 #include <gui/gui_export.h>
37 
38 #include <serial/serialdef.hpp>
39 
41 
43 
44 
46 
47 class CMemberId;
48 class CStyledTextOStream;
49 class CAsnBioContext;
50 
52 {
53 public:
54  friend class CAsnViewContext;
55 
56  CAsnElementItem(const CMemberId& memberId,
58  TConstObjectPtr ptr,
59  size_t indent,
60  CAsnBioContext* bioContext) :
61  m_MemberId(memberId),
62  m_Type(type),
63  m_Ptr(ptr),
66  m_BioContext(bioContext),
67  m_EditFlags() {}
68 
69  CAsnElementItem(const CAsnElementItem& element) :
70  m_MemberId(element.m_MemberId),
71  m_Type(element.m_Type),
72  m_Ptr(element.m_Ptr),
73  m_Indent(element.m_Indent),
74  m_TrailComma(element.m_TrailComma),
75  m_BioContext(element.m_BioContext),
76  m_EditFlags(element.m_EditFlags) {}
77 
78  virtual int GetIndent() const;
79 
80  void SetTrailComma(bool fTrailComma) { m_TrailComma = fTrailComma; }
81  bool GetTrailComma() const { return m_TrailComma; }
82 
83  TTypeInfo GetType() const { return m_Type; }
84  TConstObjectPtr GetObjectPtr() const { return m_Ptr; }
85 
87  int GetEditFlags() const { return m_EditFlags; }
88 
89  virtual const CConstRef<CObject> GetAssosiatedObject() const;
90 
91  virtual bool IsSelectable() const { return (m_EditFlags != 0); }
92 
93  static void GetRealObject(TTypeInfo& type, TConstObjectPtr& ptr);
95 
96  CEditObject GetEditObject(objects::CScope& scope);
97 
98 protected:
99  virtual void x_RenderText(CStyledTextOStream& ostream, CTextPanelContext* context) const;
100 
102  TTypeInfo type, TConstObjectPtr ptr) const = 0;
103 
104  static string x_GetMemberId(const CMemberId& memberId);
105 
107  void x_RenderComma(CStyledTextOStream& ostream) const;
108 
112  size_t m_Indent;
115 
117 };
118 
120 
121 #endif // GUI_WIDGETS_SEQ___ASN_ELEMENT_ITEM__HPP
virtual const CConstRef< CObject > GetAssosiatedObject() const
const CMemberId & m_MemberId
void SetEditFlags(int flags)
CAsnElementItem(const CAsnElementItem &element)
void x_RenderComma(CStyledTextOStream &ostream) const
virtual bool IsSelectable() const
CAsnBioContext * m_BioContext
TTypeInfo GetType() const
TConstObjectPtr m_Ptr
int GetEditFlags() const
void SetTrailComma(bool fTrailComma)
virtual int GetIndent() const
CAsnElementItem(const CMemberId &memberId, TTypeInfo type, TConstObjectPtr ptr, size_t indent, CAsnBioContext *bioContext)
TConstObjectPtr GetObjectPtr() const
virtual void RenderValue(CStyledTextOStream &ostream, CTextPanelContext *context, TTypeInfo type, TConstObjectPtr ptr) const =0
static void GetRealObject(TTypeInfo &type, TConstObjectPtr &ptr)
virtual void x_RenderText(CStyledTextOStream &ostream, CTextPanelContext *context) const
bool GetTrailComma() const
CEditObject GetEditObject(objects::CScope &scope)
static string x_GetMemberId(const CMemberId &memberId)
static void x_NormalizeType(TTypeInfo &type, TConstObjectPtr &ptr)
static void GetSelectionObject(TTypeInfo &type, TConstObjectPtr &ptr)
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
Definition: typeinfo.hpp:76
static uch flags
#define true
Definition: bool.h:35
const void * TConstObjectPtr
Definition: serialdef.hpp:59
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Defines to provide correct exporting from DLLs in Windows.
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.
string indent(" ")
Definition: type.c:6
static CS_CONTEXT * context
Definition: will_convert.c:21
Modified on Fri Sep 20 14:57:20 2024 by modify_doxy.py rev. 669887