summaryrefslogtreecommitdiff
path: root/rbutil
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil')
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp1
-rw-r--r--rbutil/rbutilqt/systrace.cpp47
-rw-r--r--rbutil/rbutilqt/systrace.h5
-rw-r--r--rbutil/rbutilqt/systracefrm.ui74
4 files changed, 86 insertions, 41 deletions
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 292a0026b1..ececb782d4 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -149,6 +149,7 @@ void RbUtilQt::shutdown(void)
149 // object destruction -- the trace object could already be destroyed. 149 // object destruction -- the trace object could already be destroyed.
150 // Fixes segfaults on exit. 150 // Fixes segfaults on exit.
151 qInstallMsgHandler(0); 151 qInstallMsgHandler(0);
152 SysTrace::save();
152 this->close(); 153 this->close();
153} 154}
154 155
diff --git a/rbutil/rbutilqt/systrace.cpp b/rbutil/rbutilqt/systrace.cpp
index 1aed5c05b5..1b9de6b713 100644
--- a/rbutil/rbutilqt/systrace.cpp
+++ b/rbutil/rbutilqt/systrace.cpp
@@ -21,6 +21,7 @@
21#include "systrace.h" 21#include "systrace.h"
22#include "ui_systracefrm.h" 22#include "ui_systracefrm.h"
23 23
24#include "rbsettings.h"
24 25
25QString SysTrace::debugbuffer; 26QString SysTrace::debugbuffer;
26 27
@@ -32,7 +33,8 @@ SysTrace::SysTrace(QWidget *parent) : QDialog(parent)
32 refresh(); 33 refresh();
33 34
34 connect(ui.buttonClose, SIGNAL(clicked()), this, SLOT(close())); 35 connect(ui.buttonClose, SIGNAL(clicked()), this, SLOT(close()));
35 connect(ui.buttonSave, SIGNAL(clicked()), this, SLOT(save())); 36 connect(ui.buttonSave, SIGNAL(clicked()), this, SLOT(saveCurrentTrace()));
37 connect(ui.buttonSavePrevious, SIGNAL(clicked()), this, SLOT(savePreviousTrace()));
36 connect(ui.buttonRefresh, SIGNAL(clicked()), this, SLOT(refresh())); 38 connect(ui.buttonRefresh, SIGNAL(clicked()), this, SLOT(refresh()));
37} 39}
38 40
@@ -41,22 +43,51 @@ void SysTrace::refresh(void)
41 int pos = ui.textTrace->verticalScrollBar()->value(); 43 int pos = ui.textTrace->verticalScrollBar()->value();
42 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); 44 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>");
43 ui.textTrace->verticalScrollBar()->setValue(pos); 45 ui.textTrace->verticalScrollBar()->setValue(pos);
46 QString oldlog = RbSettings::value(RbSettings::CachePath).toString()
47 + "/rbutil-trace.log";
48 ui.buttonSavePrevious->setEnabled(QFileInfo(oldlog).isFile());
44} 49}
45 50
46void SysTrace::save(void) 51
52void SysTrace::save(QString filename)
47{ 53{
48 QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"), 54 if(filename.isEmpty())
49 QDir::homePath(), "*.log"); 55 filename = RbSettings::value(RbSettings::CachePath).toString()
50 if(fp == "") 56 + "/rbutil-trace.log";
51 return; 57 // append save date to the trace. Append it directly instead of using
52 58 // qDebug() as the handler might have been unregistered.
53 QFile fh(fp); 59 debugbuffer.append("[SysTrace] saving trace at ");
60 debugbuffer.append(QDateTime::currentDateTime().toString(Qt::ISODate));
61 debugbuffer.append("\n");
62 QFile fh(filename);
54 if(!fh.open(QIODevice::WriteOnly)) 63 if(!fh.open(QIODevice::WriteOnly))
55 return; 64 return;
56 fh.write(debugbuffer.toUtf8(), debugbuffer.size()); 65 fh.write(debugbuffer.toUtf8(), debugbuffer.size());
57 fh.close(); 66 fh.close();
58} 67}
59 68
69void SysTrace::saveCurrentTrace(void)
70{
71 QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"),
72 QDir::homePath(), "*.log");
73 if(!fp.isEmpty())
74 save(fp);
75}
76
77
78void SysTrace::savePreviousTrace(void)
79{
80 QString fp = QFileDialog::getSaveFileName(this, tr("Save system trace log"),
81 QDir::homePath(), "*.log");
82 if(fp.isEmpty())
83 return;
84
85 QString oldlog = RbSettings::value(RbSettings::CachePath).toString()
86 + "/rbutil-trace.log";
87 QFile::copy(oldlog, fp);
88 return;
89}
90
60void SysTrace::debug(QtMsgType type, const char* msg) 91void SysTrace::debug(QtMsgType type, const char* msg)
61{ 92{
62 (void)type; 93 (void)type;
diff --git a/rbutil/rbutilqt/systrace.h b/rbutil/rbutilqt/systrace.h
index a8253ce9e6..4e6206a886 100644
--- a/rbutil/rbutilqt/systrace.h
+++ b/rbutil/rbutilqt/systrace.h
@@ -31,14 +31,15 @@ class SysTrace : public QDialog
31 public: 31 public:
32 SysTrace(QWidget *parent); 32 SysTrace(QWidget *parent);
33 static void debug(QtMsgType type, const char* msg); 33 static void debug(QtMsgType type, const char* msg);
34
35 static QString getTrace() {return debugbuffer;} 34 static QString getTrace() {return debugbuffer;}
35 static void save(QString filename = "");
36 private: 36 private:
37 Ui::SysTraceFrm ui; 37 Ui::SysTraceFrm ui;
38 static QString debugbuffer; 38 static QString debugbuffer;
39 39
40 private slots: 40 private slots:
41 void save(void); 41 void saveCurrentTrace(void);
42 void savePreviousTrace(void);
42 void refresh(void); 43 void refresh(void);
43 44
44}; 45};
diff --git a/rbutil/rbutilqt/systracefrm.ui b/rbutil/rbutilqt/systracefrm.ui
index 7a83eecb80..eb8bb6dac6 100644
--- a/rbutil/rbutilqt/systracefrm.ui
+++ b/rbutil/rbutilqt/systracefrm.ui
@@ -1,7 +1,8 @@
1<ui version="4.0" > 1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0">
2 <class>SysTraceFrm</class> 3 <class>SysTraceFrm</class>
3 <widget class="QDialog" name="SysTraceFrm" > 4 <widget class="QDialog" name="SysTraceFrm">
4 <property name="geometry" > 5 <property name="geometry">
5 <rect> 6 <rect>
6 <x>0</x> 7 <x>0</x>
7 <y>0</y> 8 <y>0</y>
@@ -9,29 +10,29 @@
9 <height>550</height> 10 <height>550</height>
10 </rect> 11 </rect>
11 </property> 12 </property>
12 <property name="windowTitle" > 13 <property name="windowTitle">
13 <string>System Trace</string> 14 <string>System Trace</string>
14 </property> 15 </property>
15 <layout class="QGridLayout" name="gridLayout" > 16 <layout class="QGridLayout" name="gridLayout">
16 <item row="0" column="0" colspan="5" > 17 <item row="0" column="0" colspan="6">
17 <widget class="QLabel" name="label" > 18 <widget class="QLabel" name="label">
18 <property name="text" > 19 <property name="text">
19 <string>System State trace</string> 20 <string>System State trace</string>
20 </property> 21 </property>
21 <property name="wordWrap" > 22 <property name="wordWrap">
22 <bool>true</bool> 23 <bool>true</bool>
23 </property> 24 </property>
24 </widget> 25 </widget>
25 </item> 26 </item>
26 <item row="1" column="0" colspan="5" > 27 <item row="1" column="0" colspan="6">
27 <widget class="QTextEdit" name="textTrace" /> 28 <widget class="QTextEdit" name="textTrace"/>
28 </item> 29 </item>
29 <item row="2" column="1" colspan="2" > 30 <item row="2" column="1" colspan="2">
30 <spacer name="horizontalSpacer" > 31 <spacer name="horizontalSpacer">
31 <property name="orientation" > 32 <property name="orientation">
32 <enum>Qt::Horizontal</enum> 33 <enum>Qt::Horizontal</enum>
33 </property> 34 </property>
34 <property name="sizeHint" stdset="0" > 35 <property name="sizeHint" stdset="0">
35 <size> 36 <size>
36 <width>487</width> 37 <width>487</width>
37 <height>26</height> 38 <height>26</height>
@@ -39,43 +40,54 @@
39 </property> 40 </property>
40 </spacer> 41 </spacer>
41 </item> 42 </item>
42 <item row="2" column="4" > 43 <item row="2" column="5">
43 <widget class="QPushButton" name="buttonClose" > 44 <widget class="QPushButton" name="buttonClose">
44 <property name="text" > 45 <property name="text">
45 <string>&amp;Close</string> 46 <string>&amp;Close</string>
46 </property> 47 </property>
47 <property name="icon" > 48 <property name="icon">
48 <iconset resource="rbutilqt.qrc" > 49 <iconset resource="rbutilqt.qrc">
49 <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset> 50 <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset>
50 </property> 51 </property>
51 </widget> 52 </widget>
52 </item> 53 </item>
53 <item row="2" column="3" > 54 <item row="2" column="4">
54 <widget class="QPushButton" name="buttonSave" > 55 <widget class="QPushButton" name="buttonSave">
55 <property name="text" > 56 <property name="text">
56 <string>&amp;Save</string> 57 <string>&amp;Save</string>
57 </property> 58 </property>
58 <property name="icon" > 59 <property name="icon">
59 <iconset resource="rbutilqt.qrc" > 60 <iconset resource="rbutilqt.qrc">
60 <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset> 61 <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset>
61 </property> 62 </property>
62 </widget> 63 </widget>
63 </item> 64 </item>
64 <item row="2" column="0" > 65 <item row="2" column="0">
65 <widget class="QPushButton" name="buttonRefresh" > 66 <widget class="QPushButton" name="buttonRefresh">
66 <property name="text" > 67 <property name="text">
67 <string>&amp;Refresh</string> 68 <string>&amp;Refresh</string>
68 </property> 69 </property>
69 <property name="icon" > 70 <property name="icon">
70 <iconset resource="rbutilqt.qrc" > 71 <iconset resource="rbutilqt.qrc">
71 <normaloff>:/icons/view-refresh.png</normaloff>:/icons/view-refresh.png</iconset> 72 <normaloff>:/icons/view-refresh.png</normaloff>:/icons/view-refresh.png</iconset>
72 </property> 73 </property>
73 </widget> 74 </widget>
74 </item> 75 </item>
76 <item row="2" column="3">
77 <widget class="QPushButton" name="buttonSavePrevious">
78 <property name="text">
79 <string>Save &amp;previous</string>
80 </property>
81 <property name="icon">
82 <iconset resource="rbutilqt.qrc">
83 <normaloff>:/icons/document-save.png</normaloff>:/icons/document-save.png</iconset>
84 </property>
85 </widget>
86 </item>
75 </layout> 87 </layout>
76 </widget> 88 </widget>
77 <resources> 89 <resources>
78 <include location="rbutilqt.qrc" /> 90 <include location="rbutilqt.qrc"/>
79 </resources> 91 </resources>
80 <connections/> 92 <connections/>
81</ui> 93</ui>