summaryrefslogtreecommitdiffstats
path: root/ksquirrel/main.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 19:31:25 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-22 19:31:25 +0000
commit6afd9d8dddbe9e450690e05d498a503c00333a5e (patch)
treeee3eaca74e8e33dd66f24f5fb6c1431d7a9ff429 /ksquirrel/main.cpp
downloadksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.tar.gz
ksquirrel-6afd9d8dddbe9e450690e05d498a503c00333a5e.zip
Added KDE3 version of ksquirrel photo manager
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ksquirrel@1094446 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ksquirrel/main.cpp')
-rw-r--r--ksquirrel/main.cpp186
1 files changed, 186 insertions, 0 deletions
diff --git a/ksquirrel/main.cpp b/ksquirrel/main.cpp
new file mode 100644
index 0000000..b3ca621
--- /dev/null
+++ b/ksquirrel/main.cpp
@@ -0,0 +1,186 @@
+/***************************************************************************
+ main.cpp - description
+ -------------------
+ begin : Dec 10 2003
+ copyright : (C) 2004 by Baryshev Dmitry
+ email : ksquirrel.iv@gmail.com
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 <qgl.h>
+#include <qdir.h>
+#include <qfile.h>
+
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <klocale.h>
+#include <kconfig.h>
+#include <dcopclient.h>
+#include <kglobal.h>
+#include <kstandarddirs.h>
+
+#include <cstdlib>
+
+#include "ksquirrel.h"
+#include "sq_splashscreen.h"
+#include "sq_hloptions.h"
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* ****************************************************************** */
+
+// Our command line options
+static KCmdLineOptions options[] =
+{
+ {"+[file to open]", I18N_NOOP("File to be opened at startup."), 0},
+ {"l", I18N_NOOP("Print found libraries and exit."), 0},
+ {"d", 0, 0},
+ {"print-dcop", I18N_NOOP("Print available DCOP parameters"), 0},
+ {"nodirectorybasket", I18N_NOOP("Folder basket"), 0},
+ {"noimagebasket", I18N_NOOP("Image basket"), 0},
+ {"nocategories", I18N_NOOP("Categories"), 0},
+ {"nomountview", I18N_NOOP("Mount view"), 0},
+
+ KCmdLineLastOption
+};
+
+int main(int argc, char *argv[])
+{
+ KSquirrel *SQ;
+ SQ_HLOptions *high;
+ const QCString App = "ksquirrel";
+
+ KAboutData aboutData(
+ "ksquirrel",
+ "KSquirrel",
+ VERSION,
+ I18N_NOOP("KSquirrel - image viewer for KDE"),
+ KAboutData::License_GPL,
+ "(c) 2003-2007 Baryshev Dmitry",
+ QString::null,
+ "http://ksquirrel.sourceforge.net",
+ "ksquirrel.iv@gmail.com");
+
+ // setup 'About' dialog
+ aboutData.addAuthor("Dmitry Baryshev aka Krasu", "Author", "ksquirrel.iv@gmail.com", QString::null);
+ aboutData.addCredit("Andrey Rahmatullin aka wrar", I18N_NOOP("Bug reports, patches"), "wrar@altlinux.ru", QString::null);
+ aboutData.addCredit("SeaJey", I18N_NOOP("Testing"), "seajey.serg@gmail.com", QString::null);
+ aboutData.addCredit("JaguarWan", I18N_NOOP("Bug reports"), "jaguarwan@gmail.com", QString::null);
+ aboutData.addCredit("NightGoblin", I18N_NOOP("Translation help"), 0, "http://nightgoblin.info");
+ aboutData.addCredit(I18N_NOOP("TiamaT"), I18N_NOOP("Initial artwork for edit tools"), "plasticfantasy@tut.by", "http://www.livejournal.com/users/tiamatik/");
+ aboutData.addCredit(I18N_NOOP("Fera"), I18N_NOOP("Great artwork for edit tools"), "morrigan171@mail.ru", QString::null);
+ aboutData.addCredit(I18N_NOOP("OpenGL forum at"), 0, 0, "http://opengl.org");
+ aboutData.addCredit(I18N_NOOP("GameDev forum at"), 0, 0, "http://gamedev.ru");
+
+ // parse command line
+ KCmdLineArgs::init(argc, argv, &aboutData);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KCmdLineArgs *sq_args = KCmdLineArgs::parsedArgs();
+
+ //create high level options
+ high = new SQ_HLOptions;
+
+ if(sq_args->count())
+ high->param = QFile::decodeName(sq_args->arg(0));
+
+ high->showLibsAndExit = sq_args->isSet("l");
+ bool printDCOP = sq_args->isSet("d");
+
+ high->have_directorybasket = sq_args->isSet("directorybasket");
+ high->have_imagebasket = sq_args->isSet("imagebasket");
+ high->have_categories = sq_args->isSet("categories");
+ high->have_mountview = sq_args->isSet("mountview");
+
+ KApplication a;
+
+ if(!QGLFormat::hasOpenGL())
+ {
+ qWarning("KSquirrel: this system has no OpenGL support. Exiting." );
+ exit(1);
+ }
+
+ // don't even try to connect to DCOP if -l specified -
+ // anyway we will exit later
+ if(!high->showLibsAndExit)
+ {
+ bool reg = a.dcopClient()->isApplicationRegistered(App);
+
+ // Check if KSquirrel already registered.
+ // If registered, send an url to it.
+ if(reg && !high->param.isEmpty())
+ {
+ // Yes, it is registered. Let's send a message to it.
+ QCString replyType;
+ QByteArray data, replyData;
+ QDataStream dataStream(data, IO_WriteOnly);
+
+ dataStream << high->param;
+
+ if(!a.dcopClient()->call(App, App, "load(QString)", data, replyType, replyData))
+ qDebug("\nUnable to send data to old instance of KSquirrel: exiting.\n");
+
+ sq_args->clear();
+ delete high;
+
+ exit(0);
+ }
+ // If registered, but no url was specified in command line
+ else if(reg)
+ {
+ QString data;
+
+ if(!a.dcopClient()->send(App, App, "activate()", data))
+ qDebug("\nUnable to send data to old instance of KSquirrel: exiting.\n");
+
+ sq_args->clear();
+ delete high;
+
+ exit(0);
+ }
+ }
+
+ KGlobal::dirs()->addResourceType("data", KStandardDirs::kde_default("data") + QString::fromLatin1("ksquirrel"));
+
+ SQ_SplashScreen *splash = 0;
+
+ // should we show a splash screen ?
+ KConfig *config = new KConfig("ksquirrelrc");
+ config->setGroup("Main");
+
+ if(config->readBoolEntry("splash", true))
+ {
+ splash = new SQ_SplashScreen(0, "ksquirrel-splash-screen");
+ if(!high->showLibsAndExit) splash->show(); // don't show splash when -l
+ KApplication::flush();
+ }
+
+ delete config;
+
+ // connect to DCOP server and register KSquirrel. Now we can
+ // send messages to KSquirrel (see README for parameters)
+ if(a.dcopClient()->attach())
+ a.dcopClient()->registerAs(App, false);
+
+ // create an instance
+ SQ = new KSquirrel(0, App);
+
+ if(printDCOP)
+ SQ->printDCOP();
+
+ a.setMainWidget(SQ);
+
+ sq_args->clear();
+
+ return a.exec();
+}