diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..7a7d0c0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,115 @@ +/*************************************************************************** + * Copyright (C) 2003 by Sébastien Laoût * + * slaout@linux62.org * + * * + * 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. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <stdlib.h> + +#include <kcmdlineargs.h> +#include <kaboutdata.h> +#include <kiconloader.h> +#include <qpixmap.h> +#include <klocale.h> +#include <kglobalaccel.h> +#include <kmessagebox.h> +#include <kstandarddirs.h> +#include <kdebug.h> +#include <qfile.h> +#include <qfileinfo.h> + +#include <kconfig.h> // TMP IN ALPHA 1 + +#include "application.h" +#include "backgroundmanager.h" +#include "mainwindow.h" +#include "settings.h" +#include "global.h" +#include "debugwindow.h" +#include "notedrag.h" +#include "basket.h" +#include "aboutdata.h" +#include "basket_options.h" +#include "backup.h" + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +/* Thanks to JuK for this Application class */ +/*#if KDE_IS_VERSION( 3, 1, 90 ) +typedef KUniqueApplication Application; // KDE 3.2 and later already re-show the main window +#else +class Application : public KUniqueApplication +{ + public: + Application() : KUniqueApplication(true, true, false) {} + virtual ~Application() {} + virtual int newInstance() { + if (win) + win->setActive(true); + return KUniqueApplication::newInstance(); + } +}; +#endif +*/ + +int main(int argc, char *argv[]) +{ + // KCmdLineArgs::init will modify argv[0] so we remember it: + const char *argv0 = (argc >= 1 ? argv[0] : ""); + + KCmdLineArgs::init(argc, argv, Global::about()); + KCmdLineArgs::addCmdLineOptions(basket_options); + + KUniqueApplication::addCmdLineOptions(); + //KUniqueApplication app; + Application app; + + Backup::figureOutBinaryPath(argv0, app); + + /* Main Window */ + MainWindow* win = new MainWindow(); + Global::bnpView->handleCommandLine(); + app.setMainWidget(win); +// if (!(Settings::useSystray() && KCmdLineArgs::parsedArgs() && KCmdLineArgs::parsedArgs()->isSet("start-hidden"))) +// win->show(); + + if (Settings::useSystray()) { + // The user wanted to not show the window (but it is already hidden by default, so we do nothing): + if (KCmdLineArgs::parsedArgs() && KCmdLineArgs::parsedArgs()->isSet("start-hidden")) + ; + // When the application is restored by KDE session, restore its state: + else if (app.isRestored()) + win->setShown(!Settings::startDocked()); + // Else, the application has been launched explicitely by the user (KMenu, keyboard shortcut...), so he need it, we show it: + else + win->show(); + } else + // No system tray icon: always show: + win->show(); + + // Self-test of the presence of basketui.rc (the only requiered file after basket executable) + if (Global::bnpView->popupMenu("basket") == 0L) + // An error message will be show by BNPView::popupMenu() + return 1; + + /* Go */ + int result = app.exec(); + //return result; + exit(result); // Do not clean up memory to not crash while deleting the KApplication, or do not hang up on KDE exit +} |