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.
ksquirrel/ksquirrel/main.cpp

187 lines
6.4 KiB

/***************************************************************************
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 <tqgl.h>
#include <tqdir.h>
#include <tqfile.h>
#include <tdeapplication.h>
#include <tdecmdlineargs.h>
#include <tdeaboutdata.h>
#include <tdelocale.h>
#include <tdeconfig.h>
#include <dcopclient.h>
#include <tdeglobal.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 TDECmdLineOptions 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},
TDECmdLineLastOption
};
int main(int argc, char *argv[])
{
KSquirrel *SQ;
SQ_HLOptions *high;
const TQCString App = "ksquirrel";
TDEAboutData aboutData(
"ksquirrel",
"KSquirrel",
VERSION,
I18N_NOOP("KSquirrel - image viewer for TDE"),
TDEAboutData::License_GPL,
"(c) 2003-2007 Baryshev Dmitry",
TQString(),
"http://ksquirrel.sourceforge.net",
"ksquirrel.iv@gmail.com");
// setup 'About' dialog
aboutData.addAuthor("Dmitry Baryshev aka Krasu", "Author", "ksquirrel.iv@gmail.com", TQString());
aboutData.addCredit("Andrey Rahmatullin aka wrar", I18N_NOOP("Bug reports, patches"), "wrar@altlinux.ru", TQString());
aboutData.addCredit("SeaJey", I18N_NOOP("Testing"), "seajey.serg@gmail.com", TQString());
aboutData.addCredit("JaguarWan", I18N_NOOP("Bug reports"), "jaguarwan@gmail.com", TQString());
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", TQString());
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
TDECmdLineArgs::init(argc, argv, &aboutData);
TDECmdLineArgs::addCmdLineOptions(options);
TDECmdLineArgs *sq_args = TDECmdLineArgs::parsedArgs();
//create high level options
high = new SQ_HLOptions;
if(sq_args->count())
high->param = TQFile::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");
TDEApplication a;
if(!TQGLFormat::hasOpenGL())
{
tqWarning("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.
TQCString replyType;
TQByteArray data, replyData;
TQDataStream dataStream(data, IO_WriteOnly);
dataStream << high->param;
if(!a.dcopClient()->call(App, App, "load(TQString)", data, replyType, replyData))
tqDebug("\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)
{
TQString data;
if(!a.dcopClient()->send(App, App, "activate()", data))
tqDebug("\nUnable to send data to old instance of KSquirrel: exiting.\n");
sq_args->clear();
delete high;
exit(0);
}
}
TDEGlobal::dirs()->addResourceType("data", TDEStandardDirs::kde_default("data") + TQString::fromLatin1("ksquirrel"));
SQ_SplashScreen *splash = 0;
// should we show a splash screen ?
TDEConfig *config = new TDEConfig("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
TDEApplication::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();
}