on bcbc40d help sign in
unity8/plugins/Unity/Debug/consolelog.h
87 lines 2.0 kB history raw
1/*
2 * Copyright 2016 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/
17#ifndef CONSOLELOG_H
18#define CONSOLELOG_H
20#include <QThread>
21#include <QMutex>
22#include <QSet>
24class ConsoleLog;
26class LogRedirector : public QThread
28 Q_OBJECT
29public:
30 static LogRedirector *instance();
32 void add(ConsoleLog* logger);
33 void remove(ConsoleLog* logger);
35private Q_SLOTS:
36 void checkLog();
38Q_SIGNALS:
39 void log(QString log);
41private:
42 LogRedirector();
43 void run() Q_DECL_OVERRIDE;
45 QMutex m_mutex;
46 int m_pipe[2];
47 int m_ref;
48 bool m_stop;
50 enum PIPES { READ, WRITE };
51};
53class ConsoleLog : public QObject
55 Q_OBJECT
56 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
57 Q_PROPERTY(QString out READ out NOTIFY outChanged)
58 Q_PROPERTY(int maxLines READ maxLines WRITE setMaxLines NOTIFY maxLinesChanged)
59public:
60 explicit ConsoleLog(QObject *parent = 0);
61 ~ConsoleLog();
63 bool isEnabled() const { return m_enabled; }
64 void setEnabled(bool enabled);
66 QString out() const;
68 int maxLines() const { return m_maxLines; }
69 void setMaxLines(int maxLines);
71public Q_SLOTS:
72 void logged(QString captured);
74Q_SIGNALS:
75 void enabledChanged();
76 void outChanged();
77 void maxLinesChanged();
79private:
80 void updateEnabled();
82 QStringList m_out;
83 bool m_enabled;
84 int m_maxLines;
85};
87#endif // CONSOLELOG_H