38 #include <unordered_set>
51 : m_Order(param.GetOrder())
52 , m_Name(param.GetName())
54 , m_DispName(param.GetDisplayName())
55 , m_Profile(param.GetTrackProfile())
56 , m_Source(param.GetSource())
57 , m_Category(param.GetCategory())
58 , m_Subcategory(param.GetSubcategory())
59 , m_SettingGroup(param.GetSettingGroup())
60 , m_UseGroupDefault(param.GetUseGroupDefault())
61 , m_Filter(param.m_Filter)
62 , m_SortBy(param.m_SortBy)
64 , m_Shown(param.GetShown())
65 , m_Help(param.m_Help)
66 , m_Expanded(param.GetExpanded())
67 , m_Realized(param.IsRealized())
69 , m_Comments(param.m_Comments)
70 , m_Highlights(param.m_Highlights)
71 , m_HighlightsColor(param.m_HighlightsColor)
72 , m_ShowTitle(param.m_ShowTitle)
73 , m_ErrorStatus(param.m_ErrorStatus)
74 , m_isPrivate(param.m_isPrivate)
75 , m_StoredScale(param.m_StoredScale)
77 , m_SubTracks(param.m_SubTracks)
79 , m_Subkey(param.m_Subkey)
80 , m_Annots(param.m_Annots)
81 , m_Action(param.m_Action)
82 , m_TimeStamp(param.m_TimeStamp)
83 , m_Batch(param.m_Batch)
84 , m_RemotePath(param.m_RemotePath)
85 , m_RemoteData(param.m_RemoteData)
86 , m_SeqDataKey(param.m_SeqDataKey)
87 , m_BigDataIndex(param.m_BigDataIndex)
97 if (
this == ¶m)
return *
this;
172 const string& name,
const string& filter,
const string& title)
175 if (filter.empty()) {
188 string name_modified(name);
191 if ((*iter)->GetName() == name_modified) {
202 string name_modified(name);
205 if ((*iter)->GetName() == name_modified) {
208 if ((*iter)->GetTrackProfile().empty()) {
211 if ((*iter)->GetFilter().empty()) {
214 if ((*iter)->GetSortBy().empty()) {
217 if ((*iter)->GetSource().empty()) {
218 (*iter)->SetSource(name);
291 static const string k_id =
"Id";
292 static const string k_db =
"dbname";
300 time_t defTimeStamp = time(
NULL);
301 if (defTimeStamp != -1) defTimeStamp -= 30 * 24 * 60 * 60;
309 string name = iter->key;
320 vector<string> tokens;
322 if (tokens.size() > 0) {
324 if (tokens.size() > 1) {
344 proxies.push_back(track);
351 unordered_set<string> ExistingKeys;
352 if(isMergeWithExisting) {
353 for(
auto proxy: proxies) {
354 ExistingKeys.insert(proxy->GetKey());
357 time_t defTimeStamp = time(
NULL);
359 string key = path +
".Tracks";
371 if(isMergeWithExisting && ExistingKeys.count(sKey)) {
390 vector<string> tokens;
392 if (tokens.size() > 0) {
394 if (tokens.size() > 1) {
409 if (annot_str.empty()) {
414 track->SetAnnots(annots);
418 if (!subtracks.empty())
419 track->SetSubTracks() = subtracks;
420 track->SetName(iter->key);
434 static const size_t kMaxTrackSaved = 100;
439 size_t delCount = settings.size() > kMaxTrackSaved ?
440 settings.size() - kMaxTrackSaved : 0;
446 auto it = settings.begin();
447 while (it != settings.end() && delCount > 0) {
448 it = settings.erase(it);
462 dynamic_cast<const CTrackProxy*
>(iter->GetPointer());
470 string key = path +
".TempTracks";
472 key = path +
".Tracks";
503 if (!params->
GetHelp().empty()) {
552 CTrackProxy::TAnnots::iterator a_iter =
553 find(annots.begin(), annots.end(),
555 if (a_iter != annots.end()) {
556 annots.erase(a_iter);
558 if (!annots.empty()) {
560 bool first_one =
true;
563 annots_str = *aa_iter;
567 annots_str +=
"|" + *aa_iter;
596 , m_DataKey(param.m_DataKey)
597 , m_ContShown(param.m_ContShown)
603 if (
this == ¶m)
return *
this;
static const string kDecimalDot
static CGuiRegistry & GetInstance()
access the application-wide singleton
class CRegistryReadView provides a nested hierarchical view at a particular key.
int GetInt(const string &key, int default_val=0) const
access a named key at this level, with no recursion
bool GetBool(const string &key, bool default_val=false) const
list< SKeyInfo > TKeys
retrieve information about all keys in the registry
void GetTopKeys(TKeys &keys) const
Retrieve information about the top level keys in this view.
string GetString(const string &key, const string &default_val=kEmptyStr) const
void Set(const string &key, int val)
access a named key at this level, with no recursion
const TTrackErrorStatus & GetErrorStatus() const
void UpdateNA_ChildVisibility(CTempTrackProxy &child) const
string m_Batch
AlignDb batch.
string m_Filter
track-specific filter
void SetShown(bool shown)
const string & GetSubkey() const
string m_SortBy
track-specific sortby
const string & GetHelp() const
void SetName(const string &name)
void SetCategory(const string &cat)
const string & GetCategory() const
bool m_Expanded
track expanded/collapsed.
CRef< CLayoutTrack > m_Track
the delegated layout track object.
bool m_Shown
track on/off state.
const string & GetDisplayName() const
virtual CRef< CTempTrackProxy > Clone() const
const string & GetSortBy() const
string m_BigDataIndex
The location of a remote data file containing the index.
TTrackProxies m_Children
settings for children tracks.
string m_HighlightsColor
Color to use for highlighting.
list< CRef< CTempTrackProxy > > TTrackProxies
CRef< CAnnotMetaData > m_NAdata
void SetSource(const string &src)
void SetFilter(const string &filter)
CConstRef< CTempTrackProxy > GetChildTempTrack(const string &name) const
Get track params for child temporary track.
const string & GetKey() const
void SetNAdata(CAnnotMetaData &na)
void SetHelp(const string &help)
vector< string > TSubTracks
string m_DispName
track display name.
int m_Order
track order for vertical ordering in its parent scope.
static void LoadFromRegistry(TTrackProxies &proxies, const string &path, bool isMergeWithExisting=false)
if isMergeWithExisting is true, then load should skip all registry tracks that have keys as in the al...
void SetTrackProfile(const string &profile)
bool m_UseGroupDefault
flag indicating if group default setting applies.
string m_Help
track help string
bool GetUseGroupDefault() const
const TAnnots & GetAnnots() const
string m_Category
track category.
static const string kAnonTrackName
CTempTrackProxy class implementation.
time_t GetTimeStamp() const
void SetSettingGroup(const string &name)
void SetSubcategory(const string &scat)
static void SaveToRegistry(const TTrackProxies &proxies, const string &path)
bool IsExtendedNA() const
check for an extended NA (named annotation::number, as used in e.g. SNP2)
const string & GetId() const
string m_Name
track name, may serve as track title.
string m_Profile
track profile (setting style or list of settings).
string m_Key
may be used for creating a track
const string & GetTrackProfile() const
void SetSortBy(const string &sort_by)
const TTrackProxies & GetChildren() const
TTrackErrorStatus m_ErrorStatus
static void ParseSubtracks(const string &subtracks_str, TSubTracks &subtracks)
convert a string with a list of subtracks to a list of subtracks
CTempTrackProxy & operator=(const CTempTrackProxy ¶m)
assignment operator.
void SetOrder(int order)
CTempTrackProxy class implementation.
string m_Subcategory
track sub-category.
bool m_Empty
The track proxy is empty.
void SetTimeStamp(time_t timeStamp)
const string & GetName() const
bool m_Realized
Has this been connected to any real track before.
void SetDisplayName(const string &name)
string m_Source
data source.
const CAnnotMetaData * GetNAdata() const
string m_Id
unique track identifier.
const string & GetSource() const
const string & GetSettingGroup() const
void SetUseGroupDefault(bool flag)
string m_SettingGroup
setting group name.
string m_RemotePath
Track remote path.
const string & GetSubcategory() const
CRef< CTempTrackProxy > AddTempTrack(const string &name, const string &title)
add a new template track params.
string m_Subkey
may be used for creating DataSource
void SetErrorStatus(const TTrackErrorStatus &ErrorStatus)
TAnnots m_Annots
can be 'Unnamed', 'Named', or annot names
const string & GetFilter() const
CTrackProxy data structure contains information about the position of a track in its parent scope,...
virtual CRef< CTempTrackProxy > Clone() const
string m_DataKey
user-data net storage key (SViewer only)
CTrackProxy & operator=(const CTrackProxy ¶m)
string m_DB
data source DB name
bool GetContShown() const
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
static bool IsNAA(const string &annot, bool isStrict=false)
check if a given annotation is a named annotation accession[.version][number] when isSctrict == false...
static const string & NameTypeValueToStr(TAnnotNameType type)
string m_SubCategory
annotation subcategory
static const string & GetUnnamedAnnot()
Get the commonly used symbol representing a unnnamed annotation.
string m_Title
annotation title
static bool IsNAA_Name(const string &annot)
check if a given annotation is a named annotation name with '.' replaced with '_'.
static bool IsExtendedNAA(const string &annot, bool isStrict=false)
check if a given annotation is an extended NAA (named accession[.version][number],...
string m_Name
annotation name, e.g. named annotation accession
@ eAnnot_All
all annotations
static void TokenizeWithEscape(const string &str, const string &delim, vector< string > &tokens, bool remove_escape=false)
Tokenize a string using the delim.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool StringToBool(const CTempString str)
Convert string to bool.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static string & Replace(const string &src, const string &search, const string &replace, string &dst, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate spaces in a string.
static const string k_help
static const string k_display_name
static void s_LoadTempTrackRecursive(CTempTrackProxy::TTrackProxies &proxies, const string &path)
static const string k_key
static const string k_track_profile
static const string k_setting_group
static const string k_category
static const string k_order
static const string k_expanded
static const string k_subtracks
static const string k_time_stamp
static const string k_subcategory
static const string k_subkey
static const string k_shown
static const string k_sortby
static const string k_trid
static const string k_filter
static const string k_annots
static const string k_annot_separation
const struct ncbi::grid::netcache::search::fields::KEY key
static bool s_CompareCRefs(const CRef< CTempTrackProxy > &t1, const CRef< CTempTrackProxy > &t2)