94 enum EFlatfileRowType {
139 static EFlatfileRowType s_GetFlatRowType(
const IFlatItem* itemp)
144 return eRow_reference;
152 return eRow_accession;
154 return eRow_genom_project;
158 return eRow_keywords;
162 return eRow_feature_header;
164 return eRow_source_feature;
168 return eRow_sequence;
170 return eRow_begin_section;
172 return eRow_end_section;
174 return eRow_dbsource;
175 }
else if (
dynamic_cast<const CGapItem*
>(itemp) !=
NULL) {
178 return eRow_base_count;
183 }
else if (
dynamic_cast<const CWGSItem*
>(itemp) !=
NULL) {
185 }
else if (
dynamic_cast<const CTSAItem*
>(itemp) !=
NULL) {
189 }
else if (
dynamic_cast<const CEndItem*
>(itemp) !=
NULL) {
196 enum EChapterType sChapters[] = {
312 const size_t kLineSize = 60;
317 size_t numLines = (length + kLineSize - 1)/kLineSize;
318 size_t maxNumber = (numLines - 1)*kLineSize + 1;
323 }
while (maxNumber > 0);
338 bool expand =
false) :
CExpandItem(collapsedItem, expandedItem, expand) {}
357 EFlatfileRowType row_type = s_GetFlatRowType(itemp);
358 EChapterType chap_type = sChapters[row_type];
360 if (row_type == eRow_begin)
363 if (row_type == eRow_begin_section) {
368 else if (row_type == eRow_end_section) {
386 else if (row_type == eRow_locus) {
403 if (row_type == eRow_unknown)
406 if (row_type == eRow_end || row_type == eRow_end_section || chap_type !=
m_ChapterType)
409 if (row_type == eRow_end)
418 case eChapter_header:
427 case eChapter_references:
435 case eChapter_comment:
443 case eChapter_primary:
451 case eChapter_features:
458 case eChapter_sequence:
476 if (eRow_source_feature == row_type ||eRow_feature == row_type || eRow_gap == row_type) {
481 else if (eRow_sequence == row_type) {
486 else if (eRow_locus == row_type) {
495 const vector<pair<CBioseq_Handle, string> >& handles,
528 ctx->SetAnnotSelector().SetResolveAll();
533 gatherer->Gather(*
ctx, *builder);
535 vector<ITextItem*>& items = builder->GetItems();
536 if (!items.empty()) {
537 item = items.front();
void AddItem(ITextItem *item, bool updatePositions=true)
void SetSelectable(bool selectable=true)
const CMappedFeat & GetFeat(void) const
CFlatFileExpandItem(CTextItem *collapsedItem, CTextItem *expandedItem, bool expand=false)
virtual bool Traverse(ICompositeTraverser &traverser)
vector< ITextItem * > m_Items
CFlatFileRetrieveJob & m_Job
vector< ITextItem * > & GetItems()
CFlatFileFactoryBuilder(CFlatFileRetrieveJob &job, bool hideVariations, bool hideSTS, CFlatFileContext &ctx)
virtual void AddItem(CConstRef< IFlatItem > item)
EChapterType m_ChapterType
~CFlatFileFactoryBuilder()
unique_ptr< CCompositeTextItem > m_CurrentSection
CCompositeTextItem * m_CurrentChapter
friend class CFlatFileFactoryBuilder
vector< pair< objects::CBioseq_Handle, string > > m_Handles
virtual EJobState x_Run()
virtual ~CFlatFileRetrieveJob()
CFlatFileRetrieveJob(CTextPanelContext &context, const vector< pair< objects::CBioseq_Handle, string > > &handles, const SFlatFileParams ¶ms)
void SetEditFlags(int flags)
static CFlatGatherer * New(CFlatFileConfig::TFormat format)
CBioseqContext * GetContext(void)
const string & GetName(void) const
void AddLine(const string &line)
ESubtype GetSubtype(void) const
void x_CheckCancelled() const
void x_AddItem(ITextItem *item)
virtual bool ProcessItem(CTextItem &textItem)=0
const size_t kMinSeqBlockDigits
static size_t s_CalcSeqBlockDigits(size_t length)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
EJobState
Job states (describe FSM)
bool IsNucleotide(void) const
const CSeqFeatData & GetData(void) const
TSeqPos GetBioseqLength(void) const
TObjectType * GetPointerOrNull(void) const THROWS_NONE
Get pointer value.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CConstRef< objects::CSeq_loc > m_SeqLoc
objects::CFlatFileConfig::EMode m_Mode
bool m_ShowComponentFeats
CConstRef< objects::CSubmit_block > m_SeqSubmit
objects::CFlatFileConfig::EStyle m_Style