NCBI C++ ToolKit
trace_graph_track.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /*
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors: Andrei Shkeda
27  *
28  * File Description:
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
33 
39 
40 
47 
48 #include <gui/objutils/utils.hpp>
49 #include <gui/objutils/label.hpp>
50 
52 
54 #include <corelib/rwstream.hpp>
56 #include <serial/objistr.hpp>
57 #include <serial/objostr.hpp>
58 #include <serial/serial.hpp>
59 
60 
61 #include <wx/menu.h>
62 
63 
66 
67 
68 ///////////////////////////////////////////////////////////////////////////////
69 /// CTraceGraphTrack
70 
71 static const string kDefaultAnnotName = "Traces";
72 
74  "DNA Sequencing Chromatograms");
75 
77  : CDataTrack(r_cntx)
78  , m_DS(ds)
79  , m_Config(new CTraceGraphConfig)
80 {
81  m_DS->SetJobListener(this);
84  eIcon_Settings, "Settings", true, "track_settings"));
85 
86 }
87 
88 
90 {
91 }
92 
93 
95 {
96  return m_TypeInfo;
97 }
98 
100 {
102 }
103 
104 
106 {
108 }
109 
110 
112 {
113  // use the standard way ?
115 }
116 
117 
119 {
120  return CLayoutTrack::InitHTMLActiveArea(p_areas);
121 }
122 
123 
124 void CTraceGraphTrack::x_LoadSettings(const string& /*preset_style*/,
125  const TKeyValuePairs& settings)
126 {
127  _ASSERT(m_Config);
128  if (!m_Config)
129  return;
130  // Parse known parameters
131  ITERATE (TKeyValuePairs, iter, settings) {
132  try {
133  if (NStr::EqualNocase(iter->first, "colorA")) {
134  m_Config->m_colors[0].FromString(iter->second);
135  } else if (NStr::EqualNocase(iter->first, "colorC")) {
136  m_Config->m_colors[1].FromString(iter->second);
137  } else if (NStr::EqualNocase(iter->first, "colorG")) {
138  m_Config->m_colors[2].FromString(iter->second);
139  } else if (NStr::EqualNocase(iter->first, "colorT")) {
140  m_Config->m_colors[3].FromString(iter->second);
141  } else if (NStr::EqualNocase(iter->first, "colorConfMin")) {
142  m_Config->m_colorConfMin.FromString(iter->second);
143  } else if (NStr::EqualNocase(iter->first, "colorConfMax")) {
144  m_Config->m_colorConfMax.FromString(iter->second);
145  } else if (NStr::EqualNocase(iter->first, "height")) {
147  } else if (NStr::EqualNocase(iter->first, "style")) {
148  if (iter->second == "curve")
150  else if (iter->second == "intensity")
152 
153  } else if (NStr::EqualNocase(iter->first, "show_conf_graph")) {
154  m_Config->m_ConfGraphState = (iter->second == "false")
156  }
157  } catch (std::exception&) {
158  LOG_POST(Error << "CTraceGraphTrack::x_LoadSettings: invalid settings "
159  << iter->second);
160  }
161  }
162 }
163 
164 void CTraceGraphTrack::x_SaveSettings(const string& /*preset_style*/)
165 {
167 
168  settings["colorA"] = m_Config->m_colors[0].ToString();
169  settings["colorC"] = m_Config->m_colors[1].ToString();
170  settings["colorG"] = m_Config->m_colors[2].ToString();
171  settings["colorT"] = m_Config->m_colors[3].ToString();
172  settings["colorConfMin"] = m_Config->m_colorConfMin.ToString();
173  settings["colorConfMax"] = m_Config->m_colorConfMax.ToString();
174  settings["height"] = NStr::NumericToString(m_Config->m_Height);
175  settings["style"] = m_Config->m_SignalStyle == CTraceGraphConfig::eCurve
176  ? "curve" : "intensity";
177  settings["show_conf_graph"] = m_Config->m_ConfGraphState == CTraceGraphConfig::eExpanded
178  ? "true" : "false";
179 
181 }
182 
184 {
185  if (SetGroup().GetChildrenNum() == 0) {
186  //x_SetStartStatus();
187  m_DS->LoadData();
188  if(m_DS->HasData()) {
190 
191  //SetGroup().Clear();
192  SetGroup().PushBack(glyph);
193  SetTitle(m_DS->GetData()->GetTitle());
194  //x_SetFinishStatus();
195  }
196  }
197  x_UpdateLayout();
198 }
199 
201 {
202 }
203 
204 ///////////////////////////////////////////////////////////////////////////////
205 /// CTraceGraphTrackFactory methods
206 
209  ISGDataSourceContext* ds_context,
210  CRenderingContext* r_cntx,
211  const SExtraParams& params,
212  const TAnnotMetaDataList& src_annots) const
213 {
215  CIRef<ISGDataSource> ds = ds_context->GetDS(
216  typeid(CSGTraceGraphDSType).name(), object);
217  CSGTraceGraphDS* trace_graph_ds = dynamic_cast<CSGTraceGraphDS*>(ds.GetPointer());
218  if(!params.m_SkipGenuineCheck && !trace_graph_ds->HasData())
219  return tracks;
220  CRef<CTraceGraphTrack> track(new CTraceGraphTrack(trace_graph_ds, r_cntx));
221  tracks["Traces"] = track.GetPointer();
222  return tracks;
223 }
224 
225 
227 {
229 }
230 
231 
233 {
235 }
236 
237 
239 CTraceGraphTrackFactory::GetSettings(const string& /*profile*/,
240  const TKeyValuePairs& settings,
241  const CTempTrackProxy* track_proxy) const
242 {
243  CRef<CTrackConfigSet> config_set(new CTrackConfigSet);
245  config_set->Set().push_back(config);
246  config->SetLegend_text("anchor_13");
247  string style = "curve";
248  string show_conf_graph = "true";
249 
250  ITERATE (TKeyValuePairs, iter, settings) {
251  try {
252  if (NStr::EqualNocase(iter->first, "colorA")) {
253  config->SetHidden_settings().push_back
254  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
255  } else if (NStr::EqualNocase(iter->first, "colorC")) {
256  config->SetHidden_settings().push_back
257  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
258  } else if (NStr::EqualNocase(iter->first, "colorG")) {
259  config->SetHidden_settings().push_back
260  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
261  } else if (NStr::EqualNocase(iter->first, "colorT")) {
262  config->SetHidden_settings().push_back
263  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
264  } else if (NStr::EqualNocase(iter->first, "colorConfMin")) {
265  config->SetHidden_settings().push_back
266  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
267  } else if (NStr::EqualNocase(iter->first, "colorConfMax")) {
268  config->SetHidden_settings().push_back
269  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
270  } else if (NStr::EqualNocase(iter->first, "height")) {
271  config->SetHidden_settings().push_back
272  (CTrackConfigUtils::CreateHiddenSetting(iter->first, iter->second));
273  } else if (NStr::EqualNocase(iter->first, "style")) {
274  style = iter->second;
275  } else if (NStr::EqualNocase(iter->first, "show_conf_graph")) {
276  show_conf_graph = iter->second;
277  }
278  } catch (std::exception&) {
279  LOG_POST(Error << "CTraceGraphTrack::GetSettings: invalid settings "
280  << iter->second);
281  }
282  }
283 
285  ("style",
286  "Trace Chromatogram style",
287  style,
288  "Trace Chromatogram style");
289  choice->SetValues().push_back
291  ("curve",
292  "Signal",
293  "Shown as Signal Traces",
294  "Trace data shown as graph"));
295  choice->SetValues().push_back(
297  "intensity",
298  "Intensity bands",
299  "Shown as intensity bands",
300  "Trace data shown as intensity bands"));
301  config->SetChoice_list().push_back(choice);
302 
303  config->SetCheck_boxes().push_back(CTrackConfigUtils::CreateCheckBox(
304  "show_conf_graph", "Show Confidence Graph", "", "",
305  !NStr::EqualNocase(show_conf_graph,"false")));
306 
307  config->SetHelp() = GetThisTypeInfo().GetDescr();
308 
309 
310  return config_set;
311 }
312 
313 
315 {
317 }
318 
320 {
321  if (GetHeight() == 0 || m_Context->IntersectVisible(this).Empty())
322  return;
324 }
325 
327 {
328  switch (id) {
329  case eIcon_Settings:
331  break;
332  default:
333  // use default handlers
335  }
336 }
337 
338 
340 {
341  wxMenu menu;
342  UseDefaultMarginWidth(menu);
343  int id_base = 10000;
344  wxMenuItem* item_style = 0;
346  item_style = menu.AppendCheckItem(id_base, wxT("Show Intensity Graph"));
347  else
348  item_style = menu.AppendCheckItem(id_base, wxT("Show Signal Graph"));
349 
350  wxMenuItem* item_conf_graph = menu.AppendCheckItem(id_base + 1, wxT("Show Confidence Graph"));
352  item_conf_graph->Check();
353  m_LTHost->LTH_PopupMenu(&menu);
354 
355  if (item_style->IsChecked()) {
358  } else {
360  }
361  }
362  m_Config->m_ConfGraphState = item_conf_graph->IsChecked() ?
364 
365  x_UpdateLayout();
366 
367 }
368 
369 
370 
User-defined methods of the data storage class.
CAppJobNotification Notification send by CAppJobEventTranslator.
CConstRef –.
Definition: ncbiobj.hpp:1266
CDataTrack - a abstract base class for layout tracks which need to deal with background data retrieva...
Definition: data_track.hpp:55
void x_UpdateLayout()
Definition: data_track.hpp:127
virtual void x_UpdateBoundingBox()
Update the bounding box assuming children's sizes are fixed if any.
virtual void x_RenderContent() const
The content rendering must be implemented in the derived layout tracks.
virtual void GetHTMLActiveAreas(TAreaVector *p_areas) const
Get html active areas.
CLayoutGroup & SetGroup()
CRef< CSimpleLayout > m_Simple
void SetLayoutPolicy(ILayoutPolicy *policy)
Set policy on how to deploy the layout of its children.
void PushBack(CSeqGlyph *obj)
Append a layout object to the end.
void SetTitle(const string &label, const string &default_title=NcbiEmptyString)
@ eIcon_Settings
icon id for track settings
ILayoutTrackHost * m_LTHost
Top level host owning the tracks.
virtual void x_OnIconClicked(TIconID id)
Mouse left-click event handler on an icon.
void SetProfile(const string &preset_style)
CLayoutTrack inline method implmentation.
int TIconID
use int as TIconID instead of EIconID.
virtual CHTMLActiveArea * InitHTMLActiveArea(TAreaVector *p_areas) const
Initialize the HTML active area for a track.
void x_RegisterIcon(const SIconInfo &icon)
register track icons.
CRef –.
Definition: ncbiobj.hpp:618
CRenderingContext offers the basic context and utility methods for rendering layout objects in featur...
TModelRange IntersectVisible(const CSeqGlyph *obj) const
static string ComposeProfileString(const TKeyValuePairs &settings)
void SetJobListener(CEventHandler *listener)
Set JobDispatcher listener.
const string & GetTitle() const
CSGTraceGraphDSType.
CSGTraceGraphDS.
CRef< CSGTraceData > GetData() const
Sequence related information.
bool HasData() const
CRenderingContext * m_Context
the rendering context
Definition: seq_glyph.hpp:346
virtual TModelUnit GetHeight() const
Definition: seq_glyph.hpp:587
vector< CHTMLActiveArea > TAreaVector
Definition: seq_glyph.hpp:84
File Description:
ESingnalStyle m_SignalStyle
Definition: trace_glyph.hpp:80
CRgbaColor m_colorConfMax
Definition: trace_glyph.hpp:89
EGraphState m_ConfGraphState
Definition: trace_glyph.hpp:82
array< CRgbaColor, 4 > m_colors
Definition: trace_glyph.hpp:87
CRgbaColor m_colorConfMin
Definition: trace_glyph.hpp:88
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual TTrackMap CreateTracks(SConstScopedObject &object, ISGDataSourceContext *ds_context, CRenderingContext *r_cntx, const SExtraParams &params=SExtraParams(), const TAnnotMetaDataList &src_annots=TAnnotMetaDataList()) const
create a layout track based on the input objects and extra parameters.
virtual CRef< objects::CTrackConfigSet > GetSettings(const string &profile, const TKeyValuePairs &settings, const CTempTrackProxy *track_proxy) const
virtual const CTrackTypeInfo & GetThisTypeInfo() const
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
CTraceGraphTrack –.
virtual void GetHTMLActiveAreas(TAreaVector *p_areas) const
Get html active areas.
virtual void x_RenderContent() const
The content rendering must be implemented in the derived layout tracks.
CRef< CSGTraceGraphDS > m_DS
virtual void x_UpdateData()
update track content.
virtual CHTMLActiveArea * InitHTMLActiveArea(TAreaVector *p_areas) const
Initialize the HTML active area for a track.
virtual const CTrackTypeInfo & GetTypeInfo() const
virtual void x_SaveSettings(const string &preset_style)
save part of settings to a profile string.
virtual void x_OnIconClicked(TIconID id)
Mouse left-click event handler on an icon.
virtual CRef< CSGGenBankDS > GetDataSource()
Method for accessing the data source.
virtual void x_UpdateBoundingBox()
Update the bounding box assuming children's sizes are fixed if any.
virtual void x_OnJobCompleted(CAppJobNotification &notify)
virtual void x_LoadSettings(const string &preset_style, const TKeyValuePairs &settings)
load the track settings.
CRef< CTraceGraphConfig > m_Config
static CTrackTypeInfo m_TypeInfo
CTraceGraphTrack(CSGTraceGraphDS *ds, CRenderingContext *r_cntx)
CTrackConfigSet –.
static CRef< objects::CChoice > CreateChoice(const string &name, const string &disp_name, const string &curr_val, const string &help, bool optional=false)
Definition: layout_conf.hpp:79
static CRef< objects::CHiddenSetting > CreateHiddenSetting(const string &name, const string &value)
static CRef< objects::CCheckBox > CreateCheckBox(const string &name, const string &disp_n, const string &help_text, const string &legend_txt, bool value, bool optional=false)
Definition: layout_conf.hpp:96
static CRef< objects::CChoiceItem > CreateChoiceItem(const string &name, const string &disp_name, const string &help, const string &legend_txt, bool optional=false)
Definition: layout_conf.hpp:61
CTrackConfig –.
Definition: TrackConfig.hpp:66
CTrackTypeInfo - holds description of a layout track type.
const string & GetDescr() const
const string & GetId() const
virtual void LTH_PopupMenu(wxMenu *menu)=0
show track-specific context menu.
ISGDSManager is seqgraphic data source manage that serves as an data source context.
virtual CIRef< ISGDataSource > GetDS(const string &type, SConstScopedObject &object)=0
Get a seqgraphic data source instance of the specified type.
struct config config
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
Definition: ncbidiag.hpp:226
void Error(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1197
string ToString(bool printAlpha=true, bool uchars=true) const
Return a string representation of the current color.
Definition: rgba_color.cpp:309
void FromString(const string &str)
Assign color values encoded in a string.
Definition: rgba_color.cpp:363
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
Definition: ncbiobj.hpp:998
bool Empty(void) const
Definition: range.hpp:148
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
static int StringToNonNegativeInt(const CTempString str, TStringToNumFlags flags=0)
Convert string to non-negative integer value.
Definition: ncbistr.cpp:457
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
Definition: ncbistr.hpp:5352
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
Definition: ncbistr.hpp:673
Tdata & Set(void)
Assign a value to data member.
#define wxT(x)
Definition: muParser.cpp:41
NetCache ICache client specs.
Reader-writer based streams.
A help struct for storing information about a icon.
extra parameter for initializing a track.
bool m_SkipGenuineCheck
Flag indicating if track verification is required.
#define _ASSERT
USING_SCOPE(objects)
static const string kDefaultAnnotName
CTraceGraphTrack.
void UseDefaultMarginWidth(wxMenu &menu)
Using default menu item margin width.
Definition: wx_utils.cpp:693
Modified on Sat Dec 02 09:19:39 2023 by modify_doxy.py rev. 669887