/*************************************************************************** main.cpp - description ------------------- begin : Tue Oct 29 20:06:08 CET 2002 copyright : (C) 2002, 2005, 2006, 2007 by Thomas Friedrichsmeier email : tfry@users.sourceforge.net ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ /*! ** \mainpage RKWard ** \author Thomas Friedrichsmeier and the RKWard Team ** ** \section website Website ** ** RKWard's project page ** ** \section description Description ** ** RKWard is meant to become an easy to use, transparent frontend to the R-language, a very powerful, yet hard-to-get-into ** scripting-language with a strong focus on statistic functions. It will not only provide a convenient user-interface, however, but also ** take care of seamless integration with an office-suite. Practical statistics is not just about calculating, after all, but also about ** documenting and ultimately publishing the results. ** ** RKWard then is (will be) something like a free replacement for commercial statistical packages. ** ** \section docOverview Getting started with the documentation ** ** The following sections of the API-documentation provide useful entry-points: ** ** - \ref UsingTheInterfaceToR ** - \ref RKComponentProperties ** ** \section copyright Copyright ** ** 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 #include #include #include #include "rkward.h" #include "rkwardapplication.h" #include "config.h" #include "debug.h" int RK_Debug_Level = 0; int RK_Debug_Flags = ALL; static const char *version = I18N_NOOP(VERSION); static const char *description = I18N_NOOP("RKWard"); static KCmdLineOptions options[] = { { "+[File]", I18N_NOOP ("file to open"), 0 }, { "debug-level ", I18N_NOOP ("Verbosity of debug messages (0-5)"), "2"}, { "debug-flags ", I18N_NOOP ("Mask for components to debug (see debug.h)"), "8191" }, { "debugger ", I18N_NOOP ("Debugger (enclose any debugger arguments in single quotes ('') together with the command)"), ""}, { "disable-stack-check", I18N_NOOP ("Disable R C stack checking"), 0 }, { 0, 0, 0 } // INSERT YOUR COMMANDLINE OPTIONS HERE }; int main(int argc, char *argv[]) { KAboutData aboutData( "rkward", I18N_NOOP ("RKWard"), version, description, KAboutData::License_GPL, "(c) 2002, 2004, 2005, 2006, 2007", 0, "http://rkward.sf.net", "rkward-devel@lists.sourceforge.net"); aboutData.addAuthor ("Thomas Friedrichsmeier", I18N_NOOP ("Project leader / main developer"), 0); aboutData.addAuthor ("Pierre Ecochard", I18N_NOOP ("C++ coder since 0.2.9"), 0); aboutData.addAuthor ("Stefan Roediger", I18N_NOOP ("Many plugins, suggestions, marketing, translations"), 0); aboutData.addAuthor ("Prasenjit Kapat", I18N_NOOP ("Many plugins, suggestions"), 0); aboutData.addCredit ("Contributors in alphabetical order", 0, 0); aboutData.addCredit ("Philippe Grosjean", I18N_NOOP ("Several helpful comments and discussions"), 0); aboutData.addCredit ("Adrien d'Hardemare", I18N_NOOP ("Plugins and patches"), 0); aboutData.addCredit ("Yves Jacolin", I18N_NOOP ("New website"), 0); aboutData.addCredit ("Marco Martin", I18N_NOOP ("A cool icon"), 0); aboutData.addCredit ("Daniele Medri", I18N_NOOP ("RKWard logo, many suggestions, help on wording"), 0); aboutData.addCredit ("David Sibai", I18N_NOOP ("Several valuable comments, hints and patches"), 0); aboutData.addCredit ("Ilias Soumpasis", I18N_NOOP ("Translation, Suggestions, plugins"), 0); aboutData.addCredit ("Ralf Tautenhahn", I18N_NOOP ("Many comments, useful suggestions, and bug reports"), 0); aboutData.addCredit ("Roland Vollgraf", I18N_NOOP ("Some patches"), 0); aboutData.addCredit (I18N_NOOP ("Many more people on rkward-devel@lists.sourceforge.net"), I18N_NOOP ("Sorry, if we forgot to list you. Please contact us to get added"), 0); // before initializing the commandline args, remove the ".bin" from "rkward.bin". // This is so it prints "Usage rkward..." instead of "Usage rkward.bin...", etc. // it seems safest to keep a copy, since the shell still owns argv[0] char *argv_zero_copy = argv[0]; argv[0] = qstrdup (QString (argv_zero_copy).remove (".bin").local8Bit ()); KCmdLineArgs::init( argc, argv, &aboutData ); KCmdLineArgs::addCmdLineOptions( options ); // Add our own options. KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); RK_Debug_Level = 5 - QString (args->getOption ("debug-level")).toInt (); RK_Debug_Flags = QString (args->getOption ("debug-flags")).toInt (); if (!args->getOption ("debugger").isEmpty ()) { RK_DO (qDebug ("--debugger option should have been handled by wrapper script. Ignoring."), ALL, DL_ERROR); } RKWardStartupOptions *stoptions = new RKWardStartupOptions; KURL *open_url = 0; if (args->count ()) { open_url = new KURL (args->makeURL (args->arg (0))); } stoptions->initial_url = open_url; stoptions->no_stack_check = args->isSet ("disable-stack-check"); RKWardApplication app; if (app.isRestored ()) { RESTORE(RKWardMainWindow); // well, whatever this is supposed to do -> TODO } else { new RKWardMainWindow(stoptions); } args->clear(); // do it! int status = app.exec (); // restore old argv[0] so the shell is happy argv[0] = argv_zero_copy; return status; }