You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.7 KiB
103 lines
3.7 KiB
/*************************************************************************** |
|
* Copyright (C) 2002 by Wilco Greven <greven@kde.org> * |
|
* Copyright (C) 2003 by Christophe Devriese * |
|
* <Christophe.Devriese@student.kuleuven.ac.be> * |
|
* Copyright (C) 2003 by Laurent Montel <montel@kde.org> * |
|
* Copyright (C) 2003-2007 by Albert Astals Cid <aacid@kde.org> * |
|
* Copyright (C) 2004 by Andy Goossens <andygoossens@telenet.be> * |
|
* * |
|
* This program is free software; you can redistribute it and/or modify * |
|
* it under the terms of the GNU General Public License as published by * |
|
* the Free Software Foundation; either version 2 of the License, or * |
|
* (at your option) any later version. * |
|
***************************************************************************/ |
|
|
|
#include "shell.h" |
|
#include <kapplication.h> |
|
#include <kcmdlineargs.h> |
|
#include <klocale.h> |
|
#include <QtDBus/qdbusinterface.h> |
|
#include <QTextStream> |
|
#include "aboutdata.h" |
|
#include "shellutils.h" |
|
|
|
static bool attachUniqueInstance(KCmdLineArgs* args) |
|
{ |
|
if (!args->isSet("unique") || args->count() != 1) |
|
return false; |
|
|
|
QDBusInterface iface("org.kde.okular", "/okular", "org.kde.okular"); |
|
QDBusInterface iface2("org.kde.okular", "/okularshell", "org.kde.okular"); |
|
if (!iface.isValid() || !iface2.isValid()) |
|
return false; |
|
|
|
if (args->isSet("print")) |
|
iface.call("enableStartWithPrint"); |
|
if (args->isSet("page")) |
|
iface.call("openDocument", ShellUtils::urlFromArg(args->arg(0), ShellUtils::qfileExistFunc(), args->getOption("page")).url()); |
|
else |
|
iface.call("openDocument", ShellUtils::urlFromArg(args->arg(0), ShellUtils::qfileExistFunc()).url()); |
|
if (args->isSet("raise")){ |
|
iface2.call("tryRaise"); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
int main(int argc, char** argv) |
|
{ |
|
KAboutData about = okularAboutData( "okular", I18N_NOOP( "Okular" ) ); |
|
|
|
KCmdLineArgs::init(argc, argv, &about); |
|
|
|
KCmdLineOptions options; |
|
options.add("p"); |
|
options.add("page <number>", ki18n("Page of the document to be shown")); |
|
options.add("presentation", ki18n("Start the document in presentation mode")); |
|
options.add("print", ki18n("Start with print dialog")); |
|
options.add("unique", ki18n("\"Unique instance\" control")); |
|
options.add("noraise", ki18n("Not raise window")); |
|
options.add("+[URL]", ki18n("Document to open. Specify '-' to read from stdin.")); |
|
KCmdLineArgs::addCmdLineOptions( options ); |
|
KApplication app; |
|
|
|
// see if we are starting with session management |
|
if (app.isSessionRestored()) |
|
{ |
|
RESTORE(Shell); |
|
} else { |
|
// no session.. just start up normally |
|
KCmdLineArgs* args = KCmdLineArgs::parsedArgs(); |
|
|
|
// try to attach the "unique" session: if we succeed, do nothing more and exit |
|
if (attachUniqueInstance(args)) |
|
{ |
|
args->clear(); |
|
return 0; |
|
} |
|
|
|
if (args->count() == 0) |
|
{ |
|
Shell* widget = new Shell(args); |
|
widget->show(); |
|
} |
|
else if (args->isSet( "unique" ) && args->count() > 1) |
|
{ |
|
QTextStream stream(stderr); |
|
stream << i18n( "Error: Can't open more than one document with the --unique switch" ) << endl; |
|
return -1; |
|
} |
|
else |
|
{ |
|
for (int i = 0; i < args->count(); ++i) |
|
{ |
|
Shell* widget = new Shell(args, i); |
|
widget->show(); |
|
} |
|
} |
|
} |
|
|
|
return app.exec(); |
|
} |
|
|
|
// vim:ts=2:sw=2:tw=78:et
|
|
|