KiCad PCB EDA Suite
CONSOLE_PROGRESS_REPORTER Class Reference

#include <drc_proto.h>

Inheritance diagram for CONSOLE_PROGRESS_REPORTER:
PROGRESS_REPORTER_BASE PROGRESS_REPORTER

Public Member Functions

 CONSOLE_PROGRESS_REPORTER (CONSOLE_LOG *log)
 
 ~CONSOLE_PROGRESS_REPORTER ()
 
virtual void SetCurrentProgress (double aProgress) override
 Set the progress value to aProgress (0..1). More...
 
void SetNumPhases (int aNumPhases) override
 Set the number of phases. More...
 
void AddPhases (int aNumPhases) override
 
virtual void BeginPhase (int aPhase) override
 Initialize the aPhase virtual zone of the dialog progress bar. More...
 
virtual void AdvancePhase () override
 Use the next available virtual zone of the dialog progress bar. More...
 
virtual void AdvancePhase (const wxString &aMessage) override
 Use the next available virtual zone of the dialog progress bar and updates the message. More...
 
virtual void Report (const wxString &aMessage) override
 Display aMessage in the progress bar dialog. More...
 
void SetMaxProgress (int aMaxProgress) override
 Fix the value that gives the 100 percent progress bar length (inside the current virtual zone). More...
 
void AdvanceProgress () override
 Increment the progress bar length (inside the current virtual zone). More...
 
bool KeepRefreshing (bool aWait=false) override
 Update the UI dialog. More...
 
void SetTitle (const wxString &aTitle) override
 Change the title displayed on the window caption. More...
 
bool IsCancelled () const override
 

Protected Member Functions

int currentProgress () const
 

Protected Attributes

wxString m_rptMessage
 
bool m_msgChanged
 
std::mutex m_mutex
 
std::atomic_int m_phase
 
std::atomic_int m_numPhases
 
std::atomic_int m_progress
 
std::atomic_int m_maxProgress
 
std::atomic_bool m_cancelled
 

Private Member Functions

virtual bool updateUI () override
 

Private Attributes

CONSOLE_LOGm_log
 

Detailed Description

Definition at line 97 of file drc_proto.h.

Constructor & Destructor Documentation

◆ CONSOLE_PROGRESS_REPORTER()

CONSOLE_PROGRESS_REPORTER::CONSOLE_PROGRESS_REPORTER ( CONSOLE_LOG log)
inline

Definition at line 100 of file drc_proto.h.

100  :
102  m_log( log ) {};
PROGRESS_REPORTER_BASE(int aNumPhases)

◆ ~CONSOLE_PROGRESS_REPORTER()

CONSOLE_PROGRESS_REPORTER::~CONSOLE_PROGRESS_REPORTER ( )
inline

Definition at line 103 of file drc_proto.h.

103 {};

Member Function Documentation

◆ AddPhases()

void PROGRESS_REPORTER_BASE::AddPhases ( int  aNumPhases)
overridevirtualinherited

Implements PROGRESS_REPORTER.

Definition at line 97 of file progress_reporter_base.cpp.

98 {
99  m_numPhases += aNumPhases;
100 }

References PROGRESS_REPORTER_BASE::m_numPhases.

◆ AdvancePhase() [1/2]

void PROGRESS_REPORTER_BASE::AdvancePhase ( )
overridevirtualinherited

Use the next available virtual zone of the dialog progress bar.

Implements PROGRESS_REPORTER.

Definition at line 50 of file progress_reporter_base.cpp.

51 {
52  m_phase.fetch_add( 1 );
53  m_progress.store( 0 );
54 }

References PROGRESS_REPORTER_BASE::m_phase, and PROGRESS_REPORTER_BASE::m_progress.

Referenced by DIALOG_ERC::AdvancePhase(), PROGRESS_REPORTER_BASE::AdvancePhase(), DIALOG_DRC::AdvancePhase(), and DIALOG_ERC::testErc().

◆ AdvancePhase() [2/2]

void PROGRESS_REPORTER_BASE::AdvancePhase ( const wxString &  aMessage)
overridevirtualinherited

Use the next available virtual zone of the dialog progress bar and updates the message.

Implements PROGRESS_REPORTER.

Reimplemented in DIALOG_DRC, and DIALOG_ERC.

Definition at line 57 of file progress_reporter_base.cpp.

58 {
59  AdvancePhase();
60  Report( aMessage );
61 }
virtual void AdvancePhase() override
Use the next available virtual zone of the dialog progress bar.
virtual void Report(const wxString &aMessage) override
Display aMessage in the progress bar dialog.

References PROGRESS_REPORTER_BASE::AdvancePhase(), and PROGRESS_REPORTER_BASE::Report().

◆ AdvanceProgress()

void PROGRESS_REPORTER_BASE::AdvanceProgress ( )
overridevirtualinherited

Increment the progress bar length (inside the current virtual zone).

Implements PROGRESS_REPORTER.

Definition at line 85 of file progress_reporter_base.cpp.

86 {
87  m_progress.fetch_add( 1 );
88 }

References PROGRESS_REPORTER_BASE::m_progress.

◆ BeginPhase()

void PROGRESS_REPORTER_BASE::BeginPhase ( int  aPhase)
overridevirtualinherited

Initialize the aPhase virtual zone of the dialog progress bar.

Implements PROGRESS_REPORTER.

Definition at line 43 of file progress_reporter_base.cpp.

44 {
45  m_phase.store( aPhase );
46  m_progress.store( 0 );
47 }

References PROGRESS_REPORTER_BASE::m_phase, and PROGRESS_REPORTER_BASE::m_progress.

◆ currentProgress()

int PROGRESS_REPORTER_BASE::currentProgress ( ) const
protectedinherited

Definition at line 103 of file progress_reporter_base.cpp.

104 {
105  double current = ( 1.0 / (double) m_numPhases ) *
106  ( (double) m_phase + ( (double) m_progress.load() / (double) m_maxProgress ) );
107 
108  return (int)( current * 1000 );
109 }

References PROGRESS_REPORTER_BASE::m_maxProgress, PROGRESS_REPORTER_BASE::m_numPhases, PROGRESS_REPORTER_BASE::m_phase, and PROGRESS_REPORTER_BASE::m_progress.

Referenced by WX_PROGRESS_REPORTER::updateUI(), and GAUGE_PROGRESS_REPORTER::updateUI().

◆ IsCancelled()

bool PROGRESS_REPORTER_BASE::IsCancelled ( ) const
inlineoverridevirtualinherited

Implements PROGRESS_REPORTER.

Definition at line 108 of file progress_reporter_base.h.

108 { return m_cancelled; }

References PROGRESS_REPORTER_BASE::m_cancelled.

◆ KeepRefreshing()

bool PROGRESS_REPORTER_BASE::KeepRefreshing ( bool  aWait = false)
overridevirtualinherited

Update the UI dialog.

Warning
This should only be called from the main thread.
Returns
false if the user clicked Cancel.

Implements PROGRESS_REPORTER.

Definition at line 112 of file progress_reporter_base.cpp.

113 {
114  if( aWait )
115  {
116  while( m_progress.load() < m_maxProgress && m_maxProgress > 0 )
117  {
118  if( !updateUI() )
119  {
120  m_cancelled.store( true );
121  return false;
122  }
123 
124  wxMilliSleep( 20 );
125  }
126 
127  return true;
128  }
129  else
130  {
131  if( !updateUI() )
132  {
133  m_cancelled.store( true );
134  return false;
135  }
136 
137  return true;
138  }
139 }
virtual bool updateUI()=0

References PROGRESS_REPORTER_BASE::m_cancelled, PROGRESS_REPORTER_BASE::m_maxProgress, PROGRESS_REPORTER_BASE::m_progress, and PROGRESS_REPORTER_BASE::updateUI().

◆ Report()

void PROGRESS_REPORTER_BASE::Report ( const wxString &  aMessage)
overridevirtualinherited

Display aMessage in the progress bar dialog.

Implements PROGRESS_REPORTER.

Reimplemented in DIALOG_ERC.

Definition at line 64 of file progress_reporter_base.cpp.

65 {
66  std::lock_guard<std::mutex> guard( m_mutex );
67  m_rptMessage = aMessage;
68  m_msgChanged = true;
69 }

References PROGRESS_REPORTER_BASE::m_msgChanged, PROGRESS_REPORTER_BASE::m_mutex, and PROGRESS_REPORTER_BASE::m_rptMessage.

Referenced by PROGRESS_REPORTER_BASE::AdvancePhase().

◆ SetCurrentProgress()

virtual void CONSOLE_PROGRESS_REPORTER::SetCurrentProgress ( double  aProgress)
inlineoverridevirtual

Set the progress value to aProgress (0..1).

Reimplemented from PROGRESS_REPORTER_BASE.

Definition at line 105 of file drc_proto.h.

106  {
108  updateUI();
109  }
virtual bool updateUI() override
Definition: drc_proto.h:112
virtual void SetCurrentProgress(double aProgress) override
Set the progress value to aProgress (0..1).

References PROGRESS_REPORTER_BASE::SetCurrentProgress(), and updateUI().

◆ SetMaxProgress()

void PROGRESS_REPORTER_BASE::SetMaxProgress ( int  aMaxProgress)
overridevirtualinherited

Fix the value that gives the 100 percent progress bar length (inside the current virtual zone).

Implements PROGRESS_REPORTER.

Definition at line 72 of file progress_reporter_base.cpp.

73 {
74  m_maxProgress.store( aMaxProgress );
75 }

References PROGRESS_REPORTER_BASE::m_maxProgress.

◆ SetNumPhases()

void PROGRESS_REPORTER_BASE::SetNumPhases ( int  aNumPhases)
overridevirtualinherited

Set the number of phases.

Implements PROGRESS_REPORTER.

Definition at line 91 of file progress_reporter_base.cpp.

92 {
93  m_numPhases = aNumPhases;
94 }

References PROGRESS_REPORTER_BASE::m_numPhases.

◆ SetTitle()

void PROGRESS_REPORTER_BASE::SetTitle ( const wxString &  aTitle)
inlineoverridevirtualinherited

Change the title displayed on the window caption.

Has meaning only for some reporters. Does nothing for others.

Warning
This should only be called from the main thread.

Implements PROGRESS_REPORTER.

Reimplemented in WX_PROGRESS_REPORTER.

Definition at line 106 of file progress_reporter_base.h.

106 { }

◆ updateUI()

virtual bool CONSOLE_PROGRESS_REPORTER::updateUI ( )
inlineoverrideprivatevirtual

Implements PROGRESS_REPORTER_BASE.

Definition at line 112 of file drc_proto.h.

113  {
115  m_log->PrintProgress( wxString::Format( " | %s : %.02f%%",
116  m_rptMessage,
117  (double) m_progress / (double) m_maxProgress *
118  100.0 ) );
119  return true;
120  }
void SetColor(COLOR color)
Definition: drc_proto.h:72
void PrintProgress(const wxString &aMessage)
Definition: drc_proto.h:48
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References Format(), CONSOLE_LOG::GREEN, m_log, PROGRESS_REPORTER_BASE::m_maxProgress, PROGRESS_REPORTER_BASE::m_progress, PROGRESS_REPORTER_BASE::m_rptMessage, CONSOLE_LOG::PrintProgress(), and CONSOLE_LOG::SetColor().

Referenced by SetCurrentProgress().

Member Data Documentation

◆ m_cancelled

std::atomic_bool PROGRESS_REPORTER_BASE::m_cancelled
protectedinherited

◆ m_log

CONSOLE_LOG* CONSOLE_PROGRESS_REPORTER::m_log
private

Definition at line 122 of file drc_proto.h.

Referenced by updateUI().

◆ m_maxProgress

◆ m_msgChanged

bool PROGRESS_REPORTER_BASE::m_msgChanged
protectedinherited

◆ m_mutex

std::mutex PROGRESS_REPORTER_BASE::m_mutex
mutableprotectedinherited

◆ m_numPhases

std::atomic_int PROGRESS_REPORTER_BASE::m_numPhases
protectedinherited

◆ m_phase

std::atomic_int PROGRESS_REPORTER_BASE::m_phase
protectedinherited

◆ m_progress

◆ m_rptMessage

wxString PROGRESS_REPORTER_BASE::m_rptMessage
protectedinherited

The documentation for this class was generated from the following file: