/[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 1558 by capela, Thu Dec 6 09:35:33 2007 UTC revision 1738 by capela, Wed May 14 15:24:22 2008 UTC
# Line 1  Line 1 
1  // qsamplerMessages.cpp  // qsamplerMessages.cpp
2  //  //
3  /****************************************************************************  /****************************************************************************
4     Copyright (C) 2004-2007, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2004-2008, 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 24  Line 24 
24  #include "qsamplerMessages.h"  #include "qsamplerMessages.h"
25    
26  #include <QSocketNotifier>  #include <QSocketNotifier>
27    
28    #include <QFile>
29  #include <QTextEdit>  #include <QTextEdit>
30  #include <QTextCursor>  #include <QTextCursor>
31    #include <QTextStream>
32  #include <QTextBlock>  #include <QTextBlock>
33  #include <QScrollBar>  #include <QScrollBar>
34  #include <QDateTime>  #include <QDateTime>
# Line 63  Messages::Messages ( QWidget *pParent ) Line 66  Messages::Messages ( QWidget *pParent )
66      m_fdStdout[QSAMPLER_MESSAGES_FDWRITE] = QSAMPLER_MESSAGES_FDNIL;      m_fdStdout[QSAMPLER_MESSAGES_FDWRITE] = QSAMPLER_MESSAGES_FDNIL;
67    
68          // Create local text view widget.          // Create local text view widget.
69          m_pTextView = new QTextEdit(this);          m_pMessagesTextView = new QTextEdit(this);
70  //  QFont font(m_pTextView->font());  //  QFont font(m_pMessagesTextView->font());
71  //  font.setFamily("Fixed");  //  font.setFamily("Fixed");
72  //  m_pTextView->setFont(font);  //  m_pMessagesTextView->setFont(font);
73          m_pTextView->setLineWrapMode(QTextEdit::NoWrap);          m_pMessagesTextView->setLineWrapMode(QTextEdit::NoWrap);
74          m_pTextView->setReadOnly(true);          m_pMessagesTextView->setReadOnly(true);
75          m_pTextView->setUndoRedoEnabled(false);          m_pMessagesTextView->setUndoRedoEnabled(false);
76  //      m_pTextView->setTextFormat(Qt::LogText);  //      m_pMessagesTextView->setTextFormat(Qt::LogText);
77    
78          // Initialize default message limit.          // Initialize default message limit.
79          m_iMessagesLines = 0;          m_iMessagesLines = 0;
80          setMessagesLimit(QSAMPLER_MESSAGES_MAXLINES);          setMessagesLimit(QSAMPLER_MESSAGES_MAXLINES);
81    
82            m_pMessagesLog = NULL;
83    
84          // Prepare the dockable window stuff.          // Prepare the dockable window stuff.
85          QDockWidget::setWidget(m_pTextView);          QDockWidget::setWidget(m_pMessagesTextView);
86          QDockWidget::setFeatures(QDockWidget::AllDockWidgetFeatures);          QDockWidget::setFeatures(QDockWidget::AllDockWidgetFeatures);
87          QDockWidget::setAllowedAreas(          QDockWidget::setAllowedAreas(
88                  Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);                  Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
# Line 95  Messages::Messages ( QWidget *pParent ) Line 100  Messages::Messages ( QWidget *pParent )
100  // Destructor.  // Destructor.
101  Messages::~Messages (void)  Messages::~Messages (void)
102  {  {
103            setLogging(false);
104    
105      // No more notifications.      // No more notifications.
106      if (m_pStdoutNotifier)      if (m_pStdoutNotifier)
107          delete m_pStdoutNotifier;          delete m_pStdoutNotifier;
# Line 103  Messages::~Messages (void) Line 110  Messages::~Messages (void)
110  }  }
111    
112    
113  void Messages::showEvent (QShowEvent* event)  void Messages::showEvent ( QShowEvent *pEvent )
114  {  {
115      QDockWidget::showEvent(event);      QDockWidget::showEvent(pEvent);
116      emit visibilityChanged(isVisible());      emit visibilityChanged(isVisible());
117  }  }
118    
# Line 194  void Messages::setCaptureEnabled ( bool Line 201  void Messages::setCaptureEnabled ( bool
201  // Message font accessors.  // Message font accessors.
202  QFont Messages::messagesFont (void)  QFont Messages::messagesFont (void)
203  {  {
204      return m_pTextView->font();      return m_pMessagesTextView->font();
205  }  }
206    
207  void Messages::setMessagesFont( const QFont& font )  void Messages::setMessagesFont ( const QFont& font )
208  {  {
209      m_pTextView->setFont(font);      m_pMessagesTextView->setFont(font);
210  }  }
211    
212    
# Line 215  void Messages::setMessagesLimit ( int iM Line 222  void Messages::setMessagesLimit ( int iM
222      m_iMessagesHigh  = iMessagesLimit + (iMessagesLimit / 3);      m_iMessagesHigh  = iMessagesLimit + (iMessagesLimit / 3);
223  }  }
224    
225    // Messages logging stuff.
226    bool Messages::isLogging (void) const
227    {
228            return (m_pMessagesLog != NULL);
229    }
230    
231  // The main utility methods.  void Messages::setLogging ( bool bEnabled, const QString& sFilename )
 void Messages::appendMessages ( const QString& s )  
232  {  {
233      appendMessagesColor(s, "#999999");          if (m_pMessagesLog) {
234                    appendMessages(tr("Logging stopped --- %1 ---")
235                            .arg(QDateTime::currentDateTime().toString()));
236                    m_pMessagesLog->close();
237                    delete m_pMessagesLog;
238                    m_pMessagesLog = NULL;
239            }
240    
241            if (bEnabled) {
242                    m_pMessagesLog = new QFile(sFilename);
243                    if (m_pMessagesLog->open(QIODevice::Text | QIODevice::Append)) {
244                            appendMessages(tr("Logging started --- %1 ---")
245                                    .arg(QDateTime::currentDateTime().toString()));
246                    } else {
247                            delete m_pMessagesLog;
248                            m_pMessagesLog = NULL;
249                    }
250            }
251  }  }
252    
253  void Messages::appendMessagesColor ( const QString& s, const QString &c )  
254    // Messages log output method.
255    void Messages::appendMessagesLog ( const QString& s )
256  {  {
257          appendMessagesText("<font color=\"" + c + "\">"          if (m_pMessagesLog) {
258                  + QTime::currentTime().toString("hh:mm:ss.zzz")                  QTextStream(m_pMessagesLog) << s << endl;
259                  + ' ' + s + "</font>");                  m_pMessagesLog->flush();
260            }
261  }  }
262    
263  void Messages::appendMessagesText ( const QString& s )  // Messages widget output method.
264    void Messages::appendMessagesLine ( const QString& s )
265  {  {
266      // Check for message line limit...          // Check for message line limit...
267      if (m_iMessagesLines > m_iMessagesHigh) {          if (m_iMessagesLines > m_iMessagesHigh) {
268                  m_pTextView->setUpdatesEnabled(false);                  m_pMessagesTextView->setUpdatesEnabled(false);
269                  QTextCursor textCursor(m_pTextView->document()->begin());                  QTextCursor textCursor(m_pMessagesTextView->document()->begin());
270                  while (m_iMessagesLines > m_iMessagesLimit) {                  while (m_iMessagesLines > m_iMessagesLimit) {
271                          // Move cursor extending selection                          // Move cursor extending selection
272                          // from start to next line-block...                          // from start to next line-block...
# Line 244  void Messages::appendMessagesText ( cons Line 276  void Messages::appendMessagesText ( cons
276                  }                  }
277                  // Remove the excessive line-blocks...                  // Remove the excessive line-blocks...
278                  textCursor.removeSelectedText();                  textCursor.removeSelectedText();
279                  m_pTextView->setUpdatesEnabled(true);                  m_pMessagesTextView->setUpdatesEnabled(true);
280      }          }
281    
282          // Count always as a new line out there...          m_pMessagesTextView->append(s);
         m_pTextView->append(s);  
283          m_iMessagesLines++;          m_iMessagesLines++;
284  }  }
285    
286    
287    // The main utility methods.
288    void Messages::appendMessages ( const QString& s )
289    {
290        appendMessagesColor(s, "#999999");
291    }
292    
293    void Messages::appendMessagesColor ( const QString& s, const QString &c )
294    {
295            QString sText = QTime::currentTime().toString("hh:mm:ss.zzz") + ' ' + s;
296            
297            appendMessagesLine("<font color=\"" + c + "\">" + sText + "</font>");
298            appendMessagesLog(sText);
299    }
300    
301    void Messages::appendMessagesText ( const QString& s )
302    {
303            appendMessagesLine(s);
304            appendMessagesLog(s);
305    }
306    
307    
308  // History reset.  // History reset.
309  void Messages::clear (void)  void Messages::clear (void)
310  {  {
311          m_iMessagesLines = 0;          m_iMessagesLines = 0;
312          m_pTextView->clear();          m_pMessagesTextView->clear();
313  }  }
314    
315  } // namespace QSampler  } // namespace QSampler

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

  ViewVC Help
Powered by ViewVC