summaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 00000000..54d64b4c
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,153 @@
+#include <config.h>
+
+#include <kaboutdata.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <klocale.h>
+#include <kmainwindow.h>
+#include <kstandarddirs.h>
+#include <kdebug.h>
+#include <dcopclient.h>
+
+#include <qfileinfo.h>
+
+#include "splashscreen.h"
+#include "toplevel.h"
+#include "plugincontroller.h"
+#include "partcontroller.h"
+#include "core.h"
+#include "projectmanager.h"
+
+#include "kdevideextension.h"
+
+static KCmdLineOptions options[] =
+{
+ { "profile <profile>", I18N_NOOP("Profile to load"), 0 },
+ { "+file(s)", I18N_NOOP("Files to load"), 0 },
+ { 0,0,0 }
+};
+
+int main(int argc, char *argv[])
+{
+ static const char description[] = I18N_NOOP("The KDevelop Integrated Development Environment");
+ KAboutData aboutData("kdevelop", I18N_NOOP("KDevelop"),
+ VERSION, description, KAboutData::License_GPL,
+ I18N_NOOP("(c) 1999-2007, The KDevelop developers"), "", "http://www.kdevelop.org");
+ aboutData.addAuthor("Alexander Dymo", I18N_NOOP("Release coordinator, Overall improvements, Pascal support, C++ support, New File and Documentation parts"), "[email protected]");
+ aboutData.addAuthor("Amilcar do Carmo Lucas", I18N_NOOP("Release coordinator, API documentation, Doxygen and autoproject patches"), "[email protected]");
+ aboutData.addAuthor("David Nolden", I18N_NOOP("Advanced C++ code completion, C++ support, overall improvements"), "[email protected]");
+ aboutData.addAuthor("Bernd Gehrmann", I18N_NOOP("Initial idea, basic architecture, much initial source code"), "[email protected]");
+ aboutData.addAuthor("Caleb Tennis", I18N_NOOP("KTabBar, bugfixes"), "[email protected]");
+ aboutData.addAuthor("Richard Dale", I18N_NOOP("Java & Objective C support"), "[email protected]");
+ aboutData.addAuthor("John Birch", I18N_NOOP("Debugger frontend"), "[email protected]");
+ aboutData.addAuthor("Vladimir Prus", I18N_NOOP("Debugger frontend"), "[email protected]");
+ aboutData.addAuthor("Sandy Meier", I18N_NOOP("PHP support, context menu stuff"), "[email protected]");
+ aboutData.addAuthor("Kurt Granroth", I18N_NOOP("KDE application templates"), "[email protected]");
+ aboutData.addAuthor("Ian Reinhart Geiser", I18N_NOOP("Dist part, bash support, application templates"), "[email protected]");
+ aboutData.addAuthor("Matthias Hoelzer-Kluepfel", I18N_NOOP("Several components, htdig indexing"), "[email protected]");
+ aboutData.addAuthor("Victor Roeder", I18N_NOOP("Help with Automake manager and persistent class store"), "[email protected]");
+ aboutData.addAuthor("Megan Webb", I18N_NOOP("Automake manager patches, Astyle plugin update, plugin patches and improvements"),"[email protected]");
+ aboutData.addAuthor("Harald Fernengel", I18N_NOOP("Ported to Qt 3, patches, valgrind, diff and perforce support"), "[email protected]");
+ aboutData.addAuthor("Roberto Raggi", I18N_NOOP("QEditor component, code completion, Abbrev component, C++ support, Java support"), "[email protected]");
+ aboutData.addAuthor("Simon Hausmann", I18N_NOOP("Help with KParts infrastructure"), "[email protected]");
+ aboutData.addAuthor("Oliver Kellogg", I18N_NOOP("Ada support"), "[email protected]");
+ aboutData.addAuthor("Andreas Pakulat", I18N_NOOP("QMake projectmanager, Qt4 Support"), "[email protected]");
+ aboutData.addAuthor("Jakob Simon-Gaarde", I18N_NOOP("QMake projectmanager"), "[email protected]");
+ aboutData.addAuthor("F@lk Brettschneider", I18N_NOOP("MDI modes, QEditor, bugfixes"), "[email protected]");
+ aboutData.addAuthor("Mario Scalas", I18N_NOOP("PartExplorer, redesign of CvsPart, patches, bugs(fixes)"), "[email protected]");
+ aboutData.addAuthor("Jens Dagerbo", I18N_NOOP("Replace, Bookmarks, FileList and CTags2 plugins. Overall improvements and patches"), "[email protected]");
+ aboutData.addAuthor("Julian Rockey", I18N_NOOP("Filecreate part and other bits and patches"), "[email protected]");
+ aboutData.addCredit("Ajay Guleria", I18N_NOOP("ClearCase support"), "[email protected]");
+ aboutData.addCredit("Marek Janukowicz", I18N_NOOP("Ruby support"), "[email protected]");
+
+ aboutData.addCredit("The KWrite authors", I18N_NOOP("Kate editor component"), "[email protected]");
+ aboutData.addCredit("The KHTML authors", I18N_NOOP("HTML documentation component"), "[email protected]");
+ aboutData.addCredit("Robert Moniot", I18N_NOOP("Fortran documentation"), "[email protected]");
+ aboutData.addCredit("Ka-Ping Yee", I18N_NOOP("Python documentation utility"), "[email protected]");
+ aboutData.addCredit("Dimitri van Heesch", I18N_NOOP("Doxygen wizard"), "[email protected]");
+ aboutData.addCredit("Hugo Varotto", I18N_NOOP("Fileselector component"), "[email protected]");
+ aboutData.addCredit("Matt Newell", I18N_NOOP("Fileselector component"), "[email protected]");
+ aboutData.addCredit("Trolltech AS", I18N_NOOP("Designer code"), "[email protected]");
+ aboutData.addCredit("Daniel Engelschalt", I18N_NOOP("C++ code completion, persistent class store"), "[email protected]");
+ aboutData.addCredit("Stephane ANCELOT", I18N_NOOP("Patches"), "[email protected]");
+ aboutData.addCredit("Jens Zurheide", I18N_NOOP("Patches"), "[email protected]");
+ aboutData.addCredit("Luc Willems", I18N_NOOP("Help with Perl support"), "[email protected]");
+ aboutData.addCredit("Marcel Turino", I18N_NOOP("Documentation index view"), "[email protected]");
+ aboutData.addCredit("Yann Hodique", I18N_NOOP("Patches"), "[email protected]");
+ aboutData.addCredit("Tobias Gl\303\244\303\237er" , I18N_NOOP("Documentation Finder, qmake projectmanager patches, usability improvements, bugfixes ... "), "[email protected]");
+ aboutData.addCredit("Andreas Koepfle" , I18N_NOOP("QMake project manager patches"), "[email protected]");
+ aboutData.addCredit("Sascha Cunz" , I18N_NOOP("Cleanup and bugfixes for qEditor, AutoMake and much other stuff"), "[email protected]");
+ aboutData.addCredit("Robert Gruber" , I18N_NOOP("SnippetPart, debugger and usability patches"), "[email protected]");
+ aboutData.addCredit("Zoran Karavla", I18N_NOOP("Artwork for the Ruby language"), "[email protected]", "http://the-error.net");
+
+ KCmdLineArgs::init(argc, argv, &aboutData);
+ KCmdLineArgs::addCmdLineOptions( options );
+ KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
+
+ KApplication app;
+
+ KDevIDEExtension::init();
+
+ KDevSplashScreen *splash = 0;
+ QString splashFile = locate("appdata", "pics/kdevelop-splash.png");
+ if (!splashFile.isEmpty())
+ {
+ QPixmap pm;
+ pm.load(splashFile);
+ splash = new KDevSplashScreen( pm );
+ }
+
+ app.processEvents();
+
+ if (splash) splash->message( i18n( "Loading Settings" ) );
+ TopLevel::getInstance()->loadSettings();
+
+ QObject::connect(PluginController::getInstance(), SIGNAL(loadingPlugin(const QString &)),
+ splash, SLOT(message(const QString &)));
+ if (splash) splash->show();
+
+ PluginController::getInstance()->loadInitialPlugins();
+
+ Core::getInstance()->doEmitCoreInitialized();
+
+ if (splash) splash->message( i18n( "Starting GUI" ) );
+ TopLevel::getInstance()->main()->show();
+
+ if (splash) delete splash;
+
+ for( int i=0; i<args->count(); ++i ){
+ kdDebug(9000) << "------> arg " << args->arg(i) << endl;
+ }
+
+ bool openProject = false;
+ if( args->count() == 0 ){
+ ProjectManager::getInstance()->loadDefaultProject();
+ openProject = true;
+ } else if( args->count() > 0 ){
+ KURL url = args->url( 0 );
+ QString ext = QFileInfo( url.fileName() ).extension();
+ if( ext == "kdevelop" ){
+ ProjectManager::getInstance()->loadProject( url );
+ openProject = true;
+ }
+ }
+
+ if( !openProject ){
+ for( int a=0; a<args->count(); ++a ){
+ PartController::getInstance()->editDocument( KURL(args->url(a)) );
+ }
+ }
+
+ kapp->dcopClient()->registerAs("kdevelop");
+
+ int ret = app.exec();
+
+ ProjectManager::getInstance()->closeProject( true ); // exiting
+ delete ProjectManager::getInstance();
+
+ delete PluginController::getInstance();
+ if (TopLevel::mainWindowValid())
+ delete TopLevel::getInstance();
+
+ return ret;
+}