23 #include <QMessageBox>
24 #include <QFileDialog>
25 #include <QInputDialog>
26 #include <QMessageBox>
30 #define SETTING_MSG_FILTER "MessageFilter"
31 #define SETTING_MAX_MSG_COUNT "MaxMsgCount"
32 #define SETTING_ENABLE_LOGFILE "EnableLogFile"
33 #define SETTING_LOGFILE "LogFile"
34 #define DEFAULT_MSG_FILTER \
35 (tc::ErrorSeverity|tc::WarnSeverity|tc::NoticeSeverity)
36 #define DEFAULT_MAX_MSG_COUNT 50
37 #define DEFAULT_ENABLE_LOGFILE false
38 #if defined(Q_OS_WIN32)
41 #define DEFAULT_LOGFILE \
42 (win32_program_files_folder()+"\\Tor\\tor-log.txt")
44 #define DEFAULT_LOGFILE ("/var/log/tor/tor.log")
47 #define ADD_TO_FILTER(f,v,b) (f = ((b) ? ((f) | (v)) : ((f) & ~(v))))
80 ui.listNotifications->sortItems(0, Qt::AscendingOrder);
94 connect(
ui.actionSave_Selected, SIGNAL(triggered()),
97 connect(
ui.actionSave_All, SIGNAL(triggered()),
100 connect(
ui.actionSelect_All, SIGNAL(triggered()),
103 connect(
ui.actionCopy, SIGNAL(triggered()),
106 connect(
ui.actionFind, SIGNAL(triggered()),
109 connect(
ui.actionClear, SIGNAL(triggered()),
110 this, SLOT(
clear()));
112 connect(
ui.actionHelp, SIGNAL(triggered()),
115 connect(
ui.btnSaveSettings, SIGNAL(clicked()),
118 connect(
ui.btnCancelSettings, SIGNAL(clicked()),
121 connect(
ui.btnBrowse, SIGNAL(clicked()),
124 #if defined(Q_WS_MAC)
125 ui.actionHelp->setShortcut(QString(
"Ctrl+?"));
127 ui.actionClose->setShortcut(QString(
"Esc"));
136 ui.chkTorErr->setToolTip(tr(
"Messages that appear when something has \n"
137 "gone very wrong and Tor cannot proceed."));
138 ui.chkTorWarn->setToolTip(tr(
"Messages that only appear when \n"
139 "something has gone wrong with Tor."));
140 ui.chkTorNote->setToolTip(tr(
"Messages that appear infrequently \n"
141 "during normal Tor operation and are \n"
142 "not considered errors, but you may \n"
144 ui.chkTorInfo->setToolTip(tr(
"Messages that appear frequently \n"
145 "during normal Tor operation."));
146 ui.chkTorDebug->setToolTip(tr(
"Hyper-verbose messages primarily of \n"
147 "interest to Tor developers."));
154 ui.retranslateUi(
this);
165 ui.spnbxMaxCount->setValue(maxMsgCount);
166 ui.listMessages->setMaximumMessageCount(maxMsgCount);
167 ui.listNotifications->setMaximumItemCount(maxMsgCount);
174 ui.lineFile->setText(QDir::convertSeparators(logfile));
188 QApplication::setOverrideCursor(Qt::WaitCursor);
190 QApplication::restoreOverrideCursor();
213 p(tr(
"Vidalia was unable to register for Tor's log events.")) +
p(errmsg),
229 p(tr(
"Vidalia was unable to open the specified log file."))+
p(errmsg),
251 p(tr(
"You must enter a filename to be able to save log "
259 ui.lineFile->setText(QDir::convertSeparators(
ui.lineFile->text()));
264 ui.listMessages->setMaximumMessageCount(
ui.spnbxMaxCount->value());
265 ui.listNotifications->setMaximumItemCount(
ui.spnbxMaxCount->value());
278 QApplication::setOverrideCursor(Qt::WaitCursor);
280 QApplication::restoreOverrideCursor();
283 ui.actionSettings->toggle();
292 ui.actionSettings->toggle();
302 QString filename = QDir::convertSeparators(
303 QFileDialog::getSaveFileName(
this,
304 tr(
"Select Log File"),
"tor-log.txt"));
305 if (!filename.isEmpty()) {
306 ui.lineFile->setText(filename);
316 if (!messages.size()) {
320 QString fileName = QFileDialog::getSaveFileName(
this,
321 tr(
"Save Log Messages"),
323 QDateTime::currentDateTime().toString(
"MM.dd.yyyy")
324 +
".txt", tr(
"Text Files (*.txt)"));
327 if (!fileName.isEmpty()) {
332 if (!logFile.
open(fileName, &errmsg)) {
334 p(tr(
"Cannot write file %1\n\n%2."))
342 QApplication::setOverrideCursor(Qt::WaitCursor);
343 foreach (QString msg, messages) {
344 logFile << msg <<
"\n";
346 QApplication::restoreOverrideCursor();
354 if (
ui.tabWidget->currentIndex() == 0)
355 save(
ui.listNotifications->selectedEvents());
357 save(
ui.listMessages->selectedMessages());
364 if (
ui.tabWidget->currentIndex() == 0)
365 save(
ui.listNotifications->allEvents());
367 save(
ui.listMessages->allMessages());
373 if (
ui.tabWidget->currentIndex() == 0)
374 ui.listNotifications->selectAll();
376 ui.listMessages->selectAll();
385 if (
ui.tabWidget->currentIndex() == 0)
386 contents =
ui.listNotifications->selectedEvents().join(
"\n");
388 contents =
ui.listMessages->selectedMessages().join(
"\n");
390 if (!contents.isEmpty()) {
392 QApplication::clipboard()->setText(contents);
401 if (
ui.tabWidget->currentIndex() == 0)
402 ui.listNotifications->clear();
404 ui.listMessages->clearMessages();
416 QString text = QInputDialog::getText(
this, tr(
"Find in Message Log"),
417 tr(
"Find:"), QLineEdit::Normal, QString(), &ok);
419 if (ok && !text.isEmpty()) {
421 QTreeWidgetItem *firstItem = 0;
424 if (
ui.tabWidget->currentIndex() == 0) {
425 QList<StatusEventItem *> results =
ui.listNotifications->find(text,
true);
426 if (results.size() > 0) {
427 tree =
ui.listNotifications;
428 firstItem =
dynamic_cast<QTreeWidgetItem *
>(results.at(0));
431 QList<LogTreeItem *> results =
ui.listMessages->find(text,
true);
432 if (results.size() > 0) {
433 tree =
ui.listMessages;
434 firstItem =
dynamic_cast<QTreeWidgetItem *
>(results.at(0));
440 p(tr(
"Search found 0 matches.")),
443 tree->scrollToItem(firstItem);
456 setUpdatesEnabled(
false);
464 QString currStatusTip =
ui.statusbar->currentMessage();
465 if (!currStatusTip.isEmpty()) {
466 currStatusTip =
ui.listMessages->statusTip();
467 ui.statusbar->showMessage(currStatusTip);
475 setUpdatesEnabled(
true);