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

Go to the SVN repository for this file.

1 /* $Id: net_blast_ui_data_source.cpp 39666 2017-10-25 16:01:13Z katargir $
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: Andrey Yazhuk, Anatoliy Kuznetsov
27  *
28  */
29 
30 #include <ncbi_pch.hpp>
31 
32 #include <corelib/ncbi_system.hpp>
33 
35 
38 
41 #include <gui/core/app_dialogs.hpp>
43 
45 
49 
51 
53 
59 
61 
66 
67 #include <wx/menu.h>
68 #include <wx/msgdlg.h>
69 #include <wx/stopwatch.h>
70 #include <wx/filename.h>
71 #include <wx/datetime.h>
72 
73 //#include <gui/packages/pkg_alignment/blast_winmask_dialog.hpp>
74 
77 
78 ///////////////////////////////////////////////////////////////////////////////
79 ///
80 
81 ///////////////////////////////////////////////////////////////////////////////
82 /// CNetBlastDSEvtHandler - wxEvtHandler-derived adapter for Net BLAST data source.
83 /// This class translates menu commands into Net BLAST data source method calls.
84 
85 class CNetBlastDSEvtHandler : public wxEvtHandler
86 {
88 public:
90  : m_NetBlastDS(&ds)
91  {};
92 
94  : m_NetBlastDS(&ds), m_Jobs(jobs)
95  {};
96 
98  {
99  }
100 
101  void OnRetrieve(wxCommandEvent& event)
102  {
104  }
105  void OnMonitor(wxCommandEvent& event)
106  {
108  }
109  void OnDelete(wxCommandEvent& event)
110  {
112  }
113  void OnExplore(wxCommandEvent& event)
114  {
116  }
117  void OnLoadRIDs(wxCommandEvent& event)
118  {
120  }
121 
122 public:
125 };
126 
127 BEGIN_EVENT_TABLE(CNetBlastDSEvtHandler, wxEvtHandler)
134 
135 ///////////////////////////////////////////////////////////////////////////////
136 /// CNetBLASTUIDataSource
137 
138 static const char* kNetBLAST_DS_Icon = "icon::gb_data_source"; //TODO
139 //static const char* kNetBlastCmdContributor = "net_blast_cmd_contributor";
140 static const char* kCmdExtPoint = "scoped_objects::cmd_contributor";
141 static const char* kAppExpCmdExtPoint = "project_tree_view::context_menu::item_cmd_contributor";
142 
143 
145 : m_Descr("NCBI Net BLAST", kNetBLAST_DS_Icon),
146  m_Type(&type),
147  m_SrvLocator(NULL),
148  m_Open(false)
149 {
150 }
151 
152 
154 {
155  _ASSERT(! m_Open);
156 }
157 
158 
160 {
161  return "net_blast_data_source";
162 }
163 
164 
166 {
167  return "Net BLAST Data Source";
168 }
169 
170 
172 {
173  m_SrvLocator = locator;
174 }
175 
176 //static const char* kCNetBLASTUIRootKey = "NetBlastUI";
177 //static const char* kLocalMaskPath = "LocalMaskPath";
178 //static const char* kRemoteMaskURL = "RemoteMaskURL";
179 
180 void CNetBLASTUIDataSource::SetRegistryPath( const string& path )
181 {
182  m_RegPath = path;
183 }
184 
186 {
187  _ASSERT(! m_RegPath.empty() );
188 
189  if( !m_RegPath.empty() ){
191  CRegistryWriteView view = gui_reg.GetWriteView(m_RegPath);
192  }
193 }
194 
195 
197 {
198  _ASSERT(! m_RegPath.empty());
199 
200  if( ! m_RegPath.empty()) {
202  CRegistryReadView view = gui_reg.GetReadView(m_RegPath);
203  }
204 }
205 
207 {
208  return *m_Type;
209 }
210 
211 
213 {
214  return m_Descr;
215 }
216 
217 
219 {
220  return m_Open;
221 }
222 
223 
225 {
226  if ( !m_Open ) {
227  ERR_POST(Info <<"Opening Net BLAST Data Source...");
228 
229  CStopWatch sw;
230  sw.Start();
231 
232  wxString homePath = CSysPath::ResolvePath(wxT("<home>"));
233  wxString dbTreePath = CSysPath::ResolvePath(wxT("<std>/etc/blastdb-spec/blast-db-tree.asn"));
234  CBLASTDatabases::GetInstance().Load(homePath.ToUTF8(), dbTreePath.ToUTF8());
235 
236  /// register itself as menu contributor
238  reg->AddExtension(kCmdExtPoint, *this);
239  reg->AddExtension(kAppExpCmdExtPoint, *this);
240 
242 
244 
245  m_Open = true;
246 
247  string t = NStr::DoubleToString(sw.Elapsed(), 3);
248  ERR_POST(Info << "Registered Net BLAST Data Source - " << t << " sec");
249  return true;
250  } else {
251  return false;
252  }
253 }
254 
255 
257 {
258  if(m_Open) {
259 # ifdef _DEBUG
261 # endif
262 
264  m_JobDescrs.clear();
265 
266 # ifdef _DEBUG
267  watch.Stop();
268  ERR_POST(Info << "x_SaveJobDescriptors(): saving takes " << watch.AsSmartString() );
269  watch.Restart();
270 # endif
271 
272  /// remove itself from menu contribution points
274  reg->RemoveExtension(kCmdExtPoint, *this);
275  reg->RemoveExtension(kAppExpCmdExtPoint, *this);
276 
277  m_Open = false;
278  return true;
279  } else return false;
280 }
281 
282 
284 {
285  //TODO
286 }
287 
288 
290 {
291  // TODO may need to link the manager to this particular datasource
292  return new CNetBLASTUILoadManager(*this); //TODO ?
293 }
294 
295 
297  return eCmdLoadRIDs;
298 }
299 
301 
302  return new CNetBlastDSEvtHandler( *this );
303 }
304 
305 
308 {
309  wxMenu* menu = NULL;
310  wxEvtHandler* handler = NULL;
311 
312  if( ! objects.empty()) {
313  // examine data
314  int retrieve = 0;
315  int monitor = 0;
317 
319  const CObject* obj = it->object.GetPointer();
320  const CNetBlastJobDescriptor* const_descr =
321  dynamic_cast<const CNetBlastJobDescriptor*>(obj);
322  CNetBlastJobDescriptor* descr = const_cast<CNetBlastJobDescriptor*>(const_descr);
323 
324  if(descr) {
325  jobs.push_back(CRef<CNetBlastJobDescriptor>(descr));
326 
328 
329  switch(state) {
332  retrieve++;
333  break;
335  monitor++;
336  break;
337  default:
338  break;
339  }
340  }
341  }
342 
344 
345  menu = new wxMenu;
346  menu->Append(wxID_SEPARATOR, wxT("Top Actions"));
347  if(retrieve > 0) {
348  cmd_reg.AppendMenuItem(*menu, eCmdRetriveBlastJobs);
349  }
350  if(monitor > 0) {
351  cmd_reg.AppendMenuItem(*menu, eCmdMonitorBlastJobs);
352  }
353  if( ! jobs.empty()) {
354  cmd_reg.AppendMenuItem(*menu, eCmdDeleteBlastJobs);
355  handler = new CNetBlastDSEvtHandler(*this, jobs);
356  }
357  }
358 
360 }
361 
362 
365 {
367  if(items.size() != 1) {
368  return contrib;
369  }
370 
372 
373  PT::CItem* item = items[0];
374  int type = item->GetType();
375 
376  if(type == PT::eDataSource) {
377  PT::CDataSource* ds_item = dynamic_cast<PT::CDataSource*>(item);
378  if(ds_item) {
379  CIRef<IUIDataSource> ds = ds_item->GetData();
380  CNetBLASTUIDataSource* blast_ds = dynamic_cast<CNetBLASTUIDataSource*>(ds.GetPointer());
381 
382  if(blast_ds) {
383  wxMenu* menu = new wxMenu;
384  menu->Append(wxID_SEPARATOR, wxT("Top Actions"));
385  cmd_reg.AppendMenuItem(*menu, eCmdExploreNetBLAST);
386  cmd_reg.AppendMenuItem(*menu, eCmdLoadRIDs);
387 
388  contrib.first = menu;
389  contrib.second = new CNetBlastDSEvtHandler(*this);
390  }
391  }
392  }
393  return contrib;
394 }
395 
398 {
400 
402  descr->Init(params, *this);
403  m_JobDescrs.push_back(descr);
404  return descr;
405 }
406 
407 
410 {
412 
414  descr->Init(rid, *this);
415  m_JobDescrs.push_back(descr);
416  return descr;
417 }
418 
419 
421 {
423 
424  for( size_t i = 0; i < m_JobDescrs.size(); i++ ) {
426  if( ! descr->IsDeleted()) {
427  descriptors.push_back(descr);
428  }
429  }
430 }
431 
432 
434 {
436 
438  for( size_t i = 0; i < m_JobDescrs.size(); i++ ) {
440  if( descr->GetRID() == rid ){
441  result = descr;
442  break;
443  }
444  }
445  return result;
446 }
447 
448 
449 //static const wxChar* kBLAST_DBsPath = wxT("<home>/blast-dbs.asn");
450 
451 static const wxChar* kJobDescrPath = wxT("<home>/net_blast_jobs.asn");
452 static const char* kJobsTag = "Jobs";
453 
455 {
456  LOG_POST(Info << "Net BLAST Data Source - saving job descriptors...");
457 
458  try {
459 
460  vector< CRef<CUser_object> > jobs;
461 
462  for( size_t i = 0; i < m_JobDescrs.size(); i++ ) {
463  try {
465 
466  // do not save Descriptors marked as deleted, we preserve them
467  // at run-time, but purge between application sessions
468  if( ! descr.IsDeleted()) {
469  CRef<CUser_object> job_obj(descr.ToUserObject());
470  jobs.push_back(job_obj);
471  }
472  } catch(CException& e) {
473  LOG_POST(Error << "Saving Net BLAST jobs - exception while saving a job - " << e.GetMsg());
474  }
475  }
476 
477  CRef<CUser_object> container(new CUser_object());
478  container->SetType().SetStr(kJobsTag);
479  container->AddField(kJobsTag, jobs);
480 
481  wxString path = CSysPath::ResolvePath(kJobDescrPath);
482  CNcbiOfstream ostr(path.fn_str());
483  ostr << MSerial_AsnText << *container;
484 
485  LOG_POST(Info << "Net BLAST Data Source - finished saving job descriptors");
486  } catch(CException& e) {
487  LOG_POST(Info << "Net BLAST Data Source - failed to save jobs - " << e.GetMsg());
488  }
489 }
490 
491 
493 {
494  LOG_POST(Info << "Net BLAST Data Source - loading job descriptors...");
495 
496  wxString path = CSysPath::ResolvePath(kJobDescrPath);
497 
498  if (wxFileName::FileExists(path)) {
499  try {
500  CRef<CUser_object> container(new CUser_object());
501  CNcbiIfstream istr(path.fn_str());
502  istr >> MSerial_AsnText >> *container;
503 
504  const CUser_field& field = container->GetField(kJobsTag);
505  const vector< CRef<CUser_object> >& jobs = field.GetData().GetObjects();
506 
507  m_JobDescrs.clear();
508  for( size_t i = 0; i < jobs.size(); i++ ) {
509  const CUser_object& job_obj = *jobs[i];
510 
512  descr->FromUserObject(job_obj);
513 
514  if(descr->GetState() != CNetBlastJobDescriptor::eInvalidState) {
515  m_JobDescrs.push_back(descr);
516  }
517  }
518 
519  LOG_POST(Info << "Net BLAST Data Source - finished loading job descriptors");
520  }
521  catch (CException& e) {
522  LOG_POST(Error << "Net BLAST Data Source - failed to load job descriptors" << e.GetMsg());
523  }
524  }
525 }
526 
528 {
530 }
531 
532 
534 {
535  vector<string> RIDs;
536  for( size_t i = 0; i < jobs.size(); i++) {
537  CNetBlastJobDescriptor& descr = *jobs[i];
538  RIDs.push_back(descr.GetRID());
539  }
540 
541  CRef<CBlastSearchTask> task(new CBlastSearchTask(m_SrvLocator, *this, "Net BLAST Search"));
542  task->Init_RetrieveRID(RIDs);
543 
544  x_StartTask(*task);
545 }
546 
547 
549 {
550  CRef<CBlastSearchTask> task(new CBlastSearchTask(m_SrvLocator, *this, "Net BLAST Search"));
551  task->Init_Monitoring(jobs);
552 
553  x_StartTask(*task);
554 }
555 
556 
558 {
559  for( size_t i = 0; i < descriptors.size(); i++) {
560  CNetBlastJobDescriptor& descr = *descriptors[i];
561  descr.MarkDeleted(true);
562  }
563 }
564 
565 
567 {
568  if(m_SrvLocator) {
569  /// first show the view
571  CIRef<IView> view = view_srv->ShowSingletonView("Search View");
572 
573  // here - send command to the view
574  CDataMiningView* dm_view = dynamic_cast<CDataMiningView*>(view.GetPointer());
575  if(dm_view) {
577  }
578  }
579 }
580 
581 
583 {
584  /// TODO this is not a good solution, but simple
585  IWorkbench* workbench = dynamic_cast<IWorkbench*>(m_SrvLocator);
586 
587  if(workbench) {
589  }
590 }
591 
593 {
594  CSelectProjectOptions options;
595  options.Set_DecideLater();
596  task.SetLoadingOptions(options);
597 
599  task_srv->AddTask(task);
600 }
601 
602 
603 // start monitoring task for all jobs that are still in progress
605 {
606  TJobDescrVec monitor_jobs;
607  {{
609 
610  // get jobs that have "Submitted" status
611  for( size_t i = 0; i < m_JobDescrs.size(); i++) {
613  if(descr->GetState() == CNetBlastJobDescriptor::eSubmitted) {
614  monitor_jobs.push_back(descr);
615  }
616  }
617  }}
618 
619  size_t n = monitor_jobs.size();
620  if(n > 0) {
621  LOG_POST(Info << "Net BLAST start monitoring for " << n << " jobs");
622  StartMonitoringTask(monitor_jobs);
623  }
624 }
625 
626 
627 ///////////////////////////////////////////////////////////////////////////////
628 /// CNetBLASTUIDataSourceType
630 : m_Descr( "Net BLAST Client Service", "", "", "", "NetBlastUI" )
631 {
632  //wxFileArtProvider* provider = GetDefaultFileArtProvider();
633  //TODO provider->RegisterFileAlias(kNetBLAST_DS_Icon, "net_blast_data_source.png");
634 }
635 
636 
638 {
639  return m_Descr;
640 }
641 
642 
644 {
645  return new CNetBLASTUIDataSource(*this);
646 }
647 
648 
650 {
651  return true; // create NCBI Net BLAST by default
652 }
653 
654 
656 {
657  static string ext_id("net_blast_data_source_type");
658  return ext_id;
659 }
660 
661 
663 {
664  return m_Descr.GetLabel();
665 }
666 
667 
User-defined methods of the data storage class.
User-defined methods of the data storage class.
#define static
User-defined methods of the data storage class.
#define false
Definition: bool.h:36
static void COpenDialog(IWorkbench *workbench, const string &loader_label=NcbiEmptyString, const vector< wxString > &filenames=vector< wxString >())
CAppTaskService - Application Task Service.
static CBLASTDatabases & GetInstance()
void Load(const char *path, const char *dbtree)
CBLASTParams - save user-specified parameters and preferences.
CDataMiningView.
virtual void SelectToolByName(const string &name)
CRegistryWriteView GetWriteView(const string &section)
get a read-write view at a particular level.
Definition: registry.cpp:462
static CGuiRegistry & GetInstance()
access the application-wide singleton
Definition: registry.cpp:400
CRegistryReadView GetReadView(const string &section) const
get a read-only view at a particular level.
Definition: registry.cpp:428
CNetBLASTUIDataSourceType.
CNetBlastDSEvtHandler - wxEvtHandler-derived adapter for Net BLAST data source.
void OnLoadRIDs(wxCommandEvent &event)
void OnMonitor(wxCommandEvent &event)
CNetBlastDSEvtHandler(CNetBLASTUIDataSource &ds)
void OnRetrieve(wxCommandEvent &event)
void OnDelete(wxCommandEvent &event)
void OnExplore(wxCommandEvent &event)
CNetBLASTUIDataSource::TJobDescrVec m_Jobs
CNetBlastDSEvtHandler(CNetBLASTUIDataSource &ds, CNetBLASTUIDataSource::TJobDescrVec &jobs)
CRef< CNetBLASTUIDataSource > m_NetBlastDS
CNetBlastJobDescriptor.
CObject –.
Definition: ncbiobj.hpp:180
class CRegistryReadView provides a nested hierarchical view at a particular key.
Definition: reg_view.hpp:58
CProjectSelectOptions - describes how new Project Items shall be added to a workspace.
CStopWatch –.
Definition: ncbitime.hpp:1938
static wxString ResolvePath(const wxString &path, const wxString &rel_name)
Utility function to hide the platform specifics of locating our standard directories and files.
Definition: sys_path.cpp:106
CUICommandRegistry is a centralized registry where all application commands should be registered.
Definition: ui_command.hpp:146
static CUICommandRegistry & GetInstance()
the main instance associated with the application
Definition: ui_command.cpp:176
wxMenuItem * AppendMenuItem(wxMenu &menu, TCmdID cmd_id) const
Definition: ui_command.cpp:300
CUser_object & AddField(const string &label, const string &value, EParseField parse=eParse_String)
add a data field to the user object that holds a given value
const CUser_field & GetField(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
Access a named field in this user object.
Definition: User_object.cpp:71
pair< wxMenu *, wxEvtHandler * > TContribution
Contribution consists of a Menu object and event handler.
Definition: pt_item.hpp:152
pair< wxMenu *, wxEvtHandler * > TContribution
IServiceLocator - an abstract mechanism for locating services.
Definition: service.hpp:71
IUIDataSourceType - defines a type of a Data Source, can serve as a Data Source factory.
IUIDataSource - an interface representing a Data Source.
IUIObject - object that provides basic properties often required in a UI object.
Definition: ui_object.hpp:63
IViewManagerService IViewManagerService manages views in Workbench.
IWorkbench is the central interface in the application framework.
Definition: workbench.hpp:113
virtual int GetType() const =0
const TData & GetData() const
Definition: pt_item.hpp:135
void(*)(CSeq_entry_Handle seh, IWorkbench *wb, const CSerialObject &obj) handler
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
Definition: ncbimisc.hpp:822
#define NULL
Definition: ncbistd.hpp:225
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
Definition: ncbidiag.hpp:186
#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
const string & GetMsg(void) const
Get message string.
Definition: ncbiexpt.cpp:461
void Info(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1185
CIRef< T > GetServiceByType()
retrieves a typed reference to a service, the name of C++ type is used as the name of the service.
Definition: service.hpp:91
void AddTask(IAppTask &task)
Add a task to the queue.
virtual CIRef< IView > ShowSingletonView(const string &singleton_ui_name)=0
activates the specified view, create a new view if it does not exist
void GetJobDescriptors(TJobDescrVec &descriptors)
returns Job Descriptors not marked as Deleted
void DeleteJobDescriptors(TJobDescrVec &descriptors)
void x_StartTask(CBlastSearchTask &task)
void StartMonitoringTask(TJobDescrVec &descriptors)
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual void SetServiceLocator(IServiceLocator *locator)
CRef< CNetBlastJobDescriptor > FindJobDescriptor(const string &rid)
virtual void SaveSettings() const
virtual IUIDataSourceType & GetType() const
void StartRetrievingTask(TJobDescrVec &descriptors)
virtual const IUIObject & GetDescr()
returns UI description of the object (label, icon etc.)
virtual void SetRegistryPath(const string &path)
objects::CUser_object * ToUserObject() const
virtual void SetLoadingOptions(CSelectProjectOptions &options)
define how the task results shall be handled
virtual bool IsOpen()
a Data source needs to be open before use and closed after.
CRef< CNetBLASTUIDataSourceType > m_Type
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
CNetBLASTUIDataSourceType()
CNetBLASTUIDataSourceType.
virtual wxEvtHandler * CreateEvtHandler()
#define NET_BLAST_LOADER_LABEL
virtual bool Open()
Prepares Data Source for use, any initialization that can be potentially time-consuming or may requir...
void x_OnJobDescrChanged(CNetBlastJobDescriptor &descr)
callback - invoked by CNetBlastJobDescriptor
CRef< CNetBlastJobDescriptor > CreateJobDescriptor(const CBLASTParams &params)
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
#define NET_BLAST_DM_TOOL_NAME
virtual bool AutoCreateDefaultDataSource()
returns "true" if this type needs to create a default instance of the Data Source at start-up
vector< CRef< CNetBlastJobDescriptor > > TJobDescrVec
virtual IObjectCmdContributor::TContribution GetMenu(TConstScopedObjects &objects)
returns a menu with commands applicable to the objects and optional command handler for the commands ...
virtual const IUIObject & GetDescr()
returns UI description of the type (label, icon etc.)
void MarkDeleted(bool deleted)
virtual IUIToolManager * GetLoadManager()
virtual IUIDataSource * CreateDataSource()
factory method; create an Data Source instance
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
@ eCmdRetriveBlastJobs
@ eCmdMonitorBlastJobs
static CIRef< IExtensionRegistry > GetInstance()
provides access to the Singleton
void Post(CRef< CEvent > evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Handles an event asynchronously (process and/or dispatch).
virtual const string & GetLabel() const
Definition: ui_object.cpp:124
vector< SConstScopedObject > TConstScopedObjects
Definition: objects.hpp:65
#define MSerial_AsnText
I/O stream manipulators –.
Definition: serialbase.hpp:696
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
Definition: ncbiobj.hpp:998
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
Definition: ncbistre.hpp:500
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
Definition: ncbistre.hpp:439
static string DoubleToString(double value, int precision=-1, TNumToStringFlags flags=0)
Convert double to string.
Definition: ncbistr.hpp:5186
double Restart(void)
Return time elapsed since first Start() or last Restart() call (in seconds).
Definition: ncbitime.hpp:2817
double Elapsed(void) const
Return time elapsed since first Start() or last Restart() call (in seconds).
Definition: ncbitime.hpp:2776
void Stop(void)
Suspend the timer.
Definition: ncbitime.hpp:2793
string AsSmartString(CTimeSpan::ESmartStringPrecision precision, ERound rounding, CTimeSpan::ESmartStringZeroMode zero_mode=CTimeSpan::eSSZ_SkipZero) const
Transform elapsed time to "smart" string.
Definition: ncbitime.hpp:2851
void Start(void)
Start the timer.
Definition: ncbitime.hpp:2765
@ eStart
Start timer immediately after creating.
Definition: ncbitime.hpp:1942
const TData & GetData(void) const
Get the Data member data.
void SetType(TType &value)
Assign a value to Type data member.
const TObjects & GetObjects(void) const
Get the variant data.
static CStopWatch sw
int i
yy_size_t n
#define wxT(x)
Definition: muParser.cpp:41
@ eDataSource
Definition: pt_item.hpp:121
vector< CItem * > TItems
Definition: pt_item.hpp:113
EIPRangeType t
Definition: ncbi_localip.c:101
USING_SCOPE(objects)
static const char * kCmdExtPoint
END_EVENT_TABLE()
static const char * kJobsTag
static const wxChar * kJobDescrPath
static const char * kNetBLAST_DS_Icon
CNetBLASTUIDataSource.
static const char * kAppExpCmdExtPoint
ViewerWindowBase::OnEditMenu ViewerWindowBase::OnJustification EVT_MENU(MID_SHOW_GEOM_VLTNS, ViewerWindowBase::OnShowGeomVltns) EVT_MENU(MID_FIND_PATTERN
NCBI
Definition: static_set.hpp:72
Definition: type.c:6
#define _ASSERT
else result
Definition: token2.c:20
#define const
Definition: zconf.h:230
Modified on Sat Dec 09 04:45:44 2023 by modify_doxy.py rev. 669887