/[svn]/qsampler/trunk/src/qsamplerMessages.cpp
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerMessages.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1738 by capela, Wed May 14 15:24:22 2008 UTC revision 2583 by capela, Fri May 30 21:03:25 2014 UTC
# Line 1  Line 1 
1  // qsamplerMessages.cpp  // qsamplerMessages.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2008, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2014, rncbc aka Rui Nuno Capela. All rights reserved.
5     Copyright (C) 2007, Christian Schoenebeck     Copyright (C) 2007, Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
# Line 49  namespace QSampler { Line 49  namespace QSampler {
49  #define QSAMPLER_MESSAGES_FDREAD    0  #define QSAMPLER_MESSAGES_FDREAD    0
50  #define QSAMPLER_MESSAGES_FDWRITE   1  #define QSAMPLER_MESSAGES_FDWRITE   1
51    
52    
53  //-------------------------------------------------------------------------  //-------------------------------------------------------------------------
54  // QSampler::Messages - Messages log dockable window.  // QSampler::Messages - Messages log dockable window.
55  //  //
56    
57  // Constructor.  // Constructor.
58  Messages::Messages ( QWidget *pParent )  Messages::Messages ( QWidget *pParent )
59      : QDockWidget(pParent)          : QDockWidget(pParent)
60  {  {
61          // Surely a name is crucial (e.g.for storing geometry settings)          // Surely a name is crucial (e.g.for storing geometry settings)
62          QDockWidget::setObjectName("qsamplerMessages");          QDockWidget::setObjectName("qsamplerMessages");
63    
64      // Intialize stdout capture stuff.          // Intialize stdout capture stuff.
65      m_pStdoutNotifier = NULL;          m_pStdoutNotifier = NULL;
66      m_fdStdout[QSAMPLER_MESSAGES_FDREAD]  = QSAMPLER_MESSAGES_FDNIL;          m_fdStdout[QSAMPLER_MESSAGES_FDREAD]  = QSAMPLER_MESSAGES_FDNIL;
67      m_fdStdout[QSAMPLER_MESSAGES_FDWRITE] = QSAMPLER_MESSAGES_FDNIL;          m_fdStdout[QSAMPLER_MESSAGES_FDWRITE] = QSAMPLER_MESSAGES_FDNIL;
68    
69          // Create local text view widget.          // Create local text view widget.
70          m_pMessagesTextView = new QTextEdit(this);          m_pMessagesTextView = new QTextEdit(this);
# Line 100  Messages::Messages ( QWidget *pParent ) Line 101  Messages::Messages ( QWidget *pParent )
101  // Destructor.  // Destructor.
102  Messages::~Messages (void)  Messages::~Messages (void)
103  {  {
104            // Turn off and close logging.
105          setLogging(false);          setLogging(false);
106    
107      // No more notifications.          // No more notifications.
108      if (m_pStdoutNotifier)          if (m_pStdoutNotifier)
109          delete m_pStdoutNotifier;                  delete m_pStdoutNotifier;
   
     // No need to delete child widgets, Qt does it all for us.  
 }  
   
110    
111  void Messages::showEvent ( QShowEvent *pEvent )          // No need to delete child widgets, Qt does it all for us.
 {  
     QDockWidget::showEvent(pEvent);  
     emit visibilityChanged(isVisible());  
112  }  }
113    
114    
# Line 121  void Messages::showEvent ( QShowEvent *p Line 116  void Messages::showEvent ( QShowEvent *p
116  void Messages::stdoutNotify ( int fd )  void Messages::stdoutNotify ( int fd )
117  {  {
118  #if !defined(WIN32)  #if !defined(WIN32)
119      char achBuffer[1024];          char achBuffer[1024];
120      int  cchBuffer = ::read(fd, achBuffer, sizeof(achBuffer) - 1);          const int cchBuffer = ::read(fd, achBuffer, sizeof(achBuffer) - 1);
121      if (cchBuffer > 0) {          if (cchBuffer > 0) {
122          achBuffer[cchBuffer] = (char) 0;                  achBuffer[cchBuffer] = (char) 0;
123          appendStdoutBuffer(achBuffer);                  appendStdoutBuffer(achBuffer);
124      }          }
125  #endif  #endif
126  }  }
127    
# Line 136  void Messages::appendStdoutBuffer ( cons Line 131  void Messages::appendStdoutBuffer ( cons
131  {  {
132          m_sStdoutBuffer.append(s);          m_sStdoutBuffer.append(s);
133    
134          int iLength = m_sStdoutBuffer.lastIndexOf('\n');          const int iLength = m_sStdoutBuffer.lastIndexOf('\n');
135          if (iLength > 0) {          if (iLength > 0) {
136                  QString sTemp = m_sStdoutBuffer.left(iLength);                  const QString& sTemp = m_sStdoutBuffer.left(iLength);
137                  m_sStdoutBuffer.remove(0, iLength + 1);                  m_sStdoutBuffer.remove(0, iLength + 1);
138                  QStringList list = sTemp.split('\n');                  QStringList list = sTemp.split('\n');
139                  QStringListIterator iter(list);                  QStringListIterator iter(list);
# Line 151  void Messages::appendStdoutBuffer ( cons Line 146  void Messages::appendStdoutBuffer ( cons
146  // Stdout flusher -- show up any unfinished line...  // Stdout flusher -- show up any unfinished line...
147  void Messages::flushStdoutBuffer (void)  void Messages::flushStdoutBuffer (void)
148  {  {
149      if (!m_sStdoutBuffer.isEmpty()) {          if (!m_sStdoutBuffer.isEmpty()) {
150          appendMessagesText(m_sStdoutBuffer);                  appendMessagesText(m_sStdoutBuffer);
151          m_sStdoutBuffer.truncate(0);                  m_sStdoutBuffer.truncate(0);
152      }          }
153  }  }
154    
155    
156  // Stdout capture accessors.  // Stdout capture accessors.
157  bool Messages::isCaptureEnabled (void)  bool Messages::isCaptureEnabled (void)
158  {  {
159      return (bool) (m_pStdoutNotifier != NULL);          return (m_pStdoutNotifier != NULL);
160  }  }
161    
162  void Messages::setCaptureEnabled ( bool bCapture )  void Messages::setCaptureEnabled ( bool bCapture )
163  {  {
164      // Flush current buffer.          // Flush current buffer.
165      flushStdoutBuffer();          flushStdoutBuffer();
166    
167  #if !defined(WIN32)  #if !defined(WIN32)
168          // Destroy if already enabled.          // Destroy if already enabled.
# Line 179  void Messages::setCaptureEnabled ( bool Line 174  void Messages::setCaptureEnabled ( bool
174                          ::close(m_fdStdout[QSAMPLER_MESSAGES_FDREAD]);                          ::close(m_fdStdout[QSAMPLER_MESSAGES_FDREAD]);
175                          m_fdStdout[QSAMPLER_MESSAGES_FDREAD]  = QSAMPLER_MESSAGES_FDNIL;                          m_fdStdout[QSAMPLER_MESSAGES_FDREAD]  = QSAMPLER_MESSAGES_FDNIL;
176                  }                  }
                 if (m_fdStdout[QSAMPLER_MESSAGES_FDREAD] != QSAMPLER_MESSAGES_FDNIL) {  
                         ::close(m_fdStdout[QSAMPLER_MESSAGES_FDREAD]);  
                         m_fdStdout[QSAMPLER_MESSAGES_FDREAD]  = QSAMPLER_MESSAGES_FDNIL;  
                 }  
177          }          }
178          // Are we going to make up the capture?          // Are we going to make up the capture?
179          if (bCapture && m_pStdoutNotifier == NULL && ::pipe(m_fdStdout) == 0) {          if (bCapture && m_pStdoutNotifier == NULL && ::pipe(m_fdStdout) == 0) {
# Line 201  void Messages::setCaptureEnabled ( bool Line 192  void Messages::setCaptureEnabled ( bool
192  // Message font accessors.  // Message font accessors.
193  QFont Messages::messagesFont (void)  QFont Messages::messagesFont (void)
194  {  {
195      return m_pMessagesTextView->font();          return m_pMessagesTextView->font();
196  }  }
197    
198  void Messages::setMessagesFont ( const QFont& font )  void Messages::setMessagesFont ( const QFont& font )
199  {  {
200      m_pMessagesTextView->setFont(font);          m_pMessagesTextView->setFont(font);
201  }  }
202    
203    
204  // Maximum number of message lines accessors.  // Maximum number of message lines accessors.
205  int Messages::messagesLimit (void)  int Messages::messagesLimit (void)
206  {  {
207      return m_iMessagesLimit;          return m_iMessagesLimit;
208  }  }
209    
210  void Messages::setMessagesLimit ( int iMessagesLimit )  void Messages::setMessagesLimit ( int iMessagesLimit )
211  {  {
212      m_iMessagesLimit = iMessagesLimit;          m_iMessagesLimit = iMessagesLimit;
213      m_iMessagesHigh  = iMessagesLimit + (iMessagesLimit / 3);          m_iMessagesHigh  = iMessagesLimit + (iMessagesLimit / 3);
214  }  }
215    
216  // Messages logging stuff.  // Messages logging stuff.
# Line 287  void Messages::appendMessagesLine ( cons Line 278  void Messages::appendMessagesLine ( cons
278  // The main utility methods.  // The main utility methods.
279  void Messages::appendMessages ( const QString& s )  void Messages::appendMessages ( const QString& s )
280  {  {
281      appendMessagesColor(s, "#999999");          appendMessagesColor(s, "#999999");
282  }  }
283    
284  void Messages::appendMessagesColor ( const QString& s, const QString &c )  void Messages::appendMessagesColor ( const QString& s, const QString &c )
285  {  {
286          QString sText = QTime::currentTime().toString("hh:mm:ss.zzz") + ' ' + s;          const QString& sText
287                            = QTime::currentTime().toString("hh:mm:ss.zzz") + ' ' + s;
288          appendMessagesLine("<font color=\"" + c + "\">" + sText + "</font>");          appendMessagesLine("<font color=\"" + c + "\">" + sText + "</font>");
289          appendMessagesLog(sText);          appendMessagesLog(sText);
290  }  }

Legend:
Removed from v.1738  
changed lines
  Added in v.2583

  ViewVC Help
Powered by ViewVC