25 #include <MarbleDirs.h>
30 #include <QTextStream>
31 #include <QStyleFactory>
33 #include <QTranslator>
34 #include <QLibraryInfo>
37 #include <Carbon/Carbon.h>
42 #define ARG_LANGUAGE "lang"
43 #define ARG_GUISTYLE "style"
44 #define ARG_RESET "reset"
45 #define ARG_HELP "help"
46 #define ARG_DATADIR "datadir"
47 #define ARG_PIDFILE "pidfile"
48 #define ARG_LOGFILE "logfile"
49 #define ARG_LOGLEVEL "loglevel"
50 #define ARG_READ_PASSWORD_FROM_STDIN \
51 "read-password-from-stdin"
71 vDebug(
"QtDebugMsg: %1").arg(msg);
74 vNotice(
"QtWarningMsg: %1").arg(msg);
77 vWarn(
"QtCriticalMsg: %1").arg(msg);
80 vError(
"QtFatalMsg: %1").arg(msg);
83 if (type == QtFatalMsg) {
84 vError(
"Fatal Qt error. Aborting.");
93 : QApplication(argc, argv)
134 Marble::MarbleDirs::setMarblePluginPath(
vApp->applicationDirPath()
135 +
"/plugins/marble");
139 setStyleSheet(
"QTreeWidget { font-size: 12pt }");
167 #if defined(Q_OS_WIN)
171 Vidalia::winEventFilter(MSG *msg,
long *result)
173 if (msg->message == WM_QUERYENDSESSION) {
176 return QApplication::winEventFilter(msg, result);
192 QTextStream out(&usage);
194 out <<
"Available Options:" << endl;
197 tcol(tr(
"Displays this usage message and exits.")));
199 tcol(tr(
"Resets ALL stored Vidalia settings.")));
201 tcol(tr(
"Sets the directory Vidalia uses for data files.")));
203 tcol(tr(
"Sets the name and location of Vidalia's pidfile.")));
205 tcol(tr(
"Sets the name and location of Vidalia's logfile.")));
207 tcol(tr(
"Sets the verbosity of Vidalia's logging.") +
210 tcol(tr(
"Sets Vidalia's interface style.") +
211 "<br>[" + QStyleFactory::keys().join(
"|") +
"]"));
213 tcol(tr(
"Sets Vidalia's language.") +
241 for (
int i = 0;
i < args.size();
i++) {
243 arg = args.at(
i).toLower();
247 if (arg.startsWith(
"-")) {
248 arg = arg.mid((arg.startsWith(
"--") ? 2 : 1));
251 if (arg.indexOf(
"=") > -1) {
252 value = arg.right(arg.length() - (arg.indexOf(
"=")+1));
253 arg = arg.left(arg.indexOf(
"="));
258 value = args.at(++
i);
261 _args.insert(arg, value);
270 QMapIterator<QString, QString> _i(
_args);
272 while(_i.hasNext()) {
275 errmsg = tr(
"Value required for parameter :") + _i.key();
288 Qt::CaseInsensitive)) {
300 errmsg = tr(
"Unable to open log file '%1': %2")
316 if (languageCode.isEmpty()) {
336 if (styleKey.isEmpty()) {
341 if (QApplication::setStyle(styleKey)) {
362 #if defined(Q_OS_WIN32)
364 #elif defined(Q_OS_MAC)
365 return (QDir::homePath() +
"/Library/Vidalia");
367 return (QDir::homePath() +
"/.vidalia");
378 return QDir::convertSeparators(
"/var/run/tor/tor.pid");
398 QObject *receiver,
const char *slot)
400 QShortcut *s =
new QShortcut(key, sender);
401 connect(s, SIGNAL(activated()), receiver, slot);
408 QObject *receiver,
const char *slot)
416 vInfo(
"Removing all currently installed UI translator objects.");
418 QApplication::removeTranslator(translator);
427 QTranslator *systemQtTranslator = 0;
428 QTranslator *vidaliaQtTranslator = 0;
429 QTranslator *vidaliaTranslator = 0;
432 vWarn(
"Invalid language code: %1").arg(languageCode);
435 if (! languageCode.compare(
"en", Qt::CaseInsensitive)) {
436 vNotice(
"Resetting UI translation to English default.");
442 systemQtTranslator =
new QTranslator(
vApp);
443 Q_CHECK_PTR(systemQtTranslator);
444 QString qtDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
445 systemQtTranslator->load(qtDir +
"/qt_" + languageCode +
".qm");
448 vidaliaQtTranslator =
new QTranslator(
vApp);
449 Q_CHECK_PTR(vidaliaQtTranslator);
450 vidaliaQtTranslator->load(
":/lang/qt_" + languageCode +
".qm");
452 vidaliaTranslator =
new QTranslator(
vApp);
453 Q_CHECK_PTR(vidaliaTranslator);
454 if (! vidaliaTranslator->load(
":/lang/vidalia_" + languageCode +
".qm"))
461 QApplication::installTranslator(systemQtTranslator);
462 QApplication::installTranslator(vidaliaQtTranslator);
463 QApplication::installTranslator(vidaliaTranslator);
465 << vidaliaQtTranslator
466 << vidaliaTranslator;
471 vWarn(
"Unable to set UI translation to '%1'").arg(languageCode);
472 if (systemQtTranslator)
473 delete systemQtTranslator;
474 if (vidaliaQtTranslator)
475 delete vidaliaQtTranslator;
476 if (vidaliaTranslator)
477 delete vidaliaTranslator;
491 confUrlRef = CFBundleCopyResourceURL(CFBundleGetMainBundle(),
492 CFSTR(
"vidalia"), CFSTR(
"conf"), NULL);
493 if (confUrlRef == NULL)
496 pathRef = CFURLCopyFileSystemPath(confUrlRef, kCFURLPOSIXPathStyle);
497 path = CFStringGetCStringPtr(pathRef, CFStringGetSystemEncoding());
500 QString defaultConfFile = QString::fromLocal8Bit(path);
501 QFileInfo fi(defaultConfFile);
504 if (! out.dir().exists())
505 out.dir().mkpath(
".");
506 QFile::copy(defaultConfFile, out.absoluteFilePath());
509 CFRelease(confUrlRef);