mirror of
https://invent.kde.org/graphics/okular
synced 2024-11-05 18:34:53 +00:00
37403a031a
- on command line, properly read the URL ref ('#foobar' at the end), avoiding a KCmdLineArgs behaviour which encodes it as part of the file name - pass what was specified as ref or the page (as specified with -p/--page) to the kpart - make the okularpart take out the ref from the URL it opens and then: a) if it is a number, assume it is the destination page number b) otherwise, use that string as named destination CCMAIL: okular-devel@kde.org svn path=/trunk/KDE/kdegraphics/okular/; revision=969227
84 lines
2.8 KiB
C++
84 lines
2.8 KiB
C++
/***************************************************************************
|
|
* 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 "aboutdata.h"
|
|
|
|
static bool attachUniqueInstance(KCmdLineArgs* args)
|
|
{
|
|
if (!args->isSet("unique") || args->count() != 1)
|
|
return false;
|
|
|
|
QDBusInterface iface("org.kde.okular", "/okular", "org.kde.okular");
|
|
if (!iface.isValid())
|
|
return false;
|
|
|
|
iface.call("openDocument", args->url(0).pathOrUrl());
|
|
|
|
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("unique", ki18n("\"Unique instance\" control"));
|
|
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
|
|
{
|
|
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
|