libtdescreensaver
main.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <config.h>
00021
00022 #include <stdlib.h>
00023 #include <stdio.h>
00024 #include <signal.h>
00025
00026 #include <tqdialog.h>
00027 #include <tdelocale.h>
00028 #include <tdeglobal.h>
00029 #include <kdebug.h>
00030 #include <tdecmdlineargs.h>
00031 #include <tdeapplication.h>
00032 #include <kcrash.h>
00033
00034 #include "tdescreensaver.h"
00035 #include "tdescreensaver_vroot.h"
00036
00037 bool argb_visual = FALSE;
00038
00039 extern "C"
00040 {
00041 extern const char *kss_applicationName;
00042 extern const char *kss_description;
00043 extern const char *kss_version;
00044 KScreenSaver *kss_create( WId d );
00045 TQDialog *kss_setup();
00046 }
00047
00048 static const TDECmdLineOptions options[] =
00049 {
00050 { "setup", I18N_NOOP("Setup screen saver"), 0 },
00051 { "window-id wid", I18N_NOOP("Run in the specified XWindow"), 0 },
00052 { "root", I18N_NOOP("Run in the root XWindow"), 0 },
00053 { "demo", I18N_NOOP("Start screen saver in demo mode"), "default"},
00054 TDECmdLineLastOption
00055 };
00056
00057 static void crashHandler( int )
00058 {
00059 #ifdef SIGABRT
00060 signal (SIGABRT, SIG_DFL);
00061 #endif
00062 abort();
00063 }
00064
00065
00066
00067 class DemoWindow : public TQWidget
00068 {
00069 public:
00070 DemoWindow() : TQWidget()
00071 {
00072 setFixedSize(600, 420);
00073 }
00074
00075 protected:
00076 virtual void keyPressEvent(TQKeyEvent *e)
00077 {
00078 if (e->ascii() == 'q')
00079 {
00080 kapp->quit();
00081 }
00082 }
00083
00084 virtual void closeEvent( TQCloseEvent * )
00085 {
00086 kapp->quit();
00087 }
00088 };
00089
00090
00091
00092 #if defined(Q_WS_QWS) || defined(Q_WS_MACX)
00093 typedef WId Window;
00094 #endif
00095
00096 KDE_EXPORT int main(int argc, char *argv[])
00097 {
00098 TDELocale::setMainCatalogue("libtdescreensaver");
00099 TDECmdLineArgs::init(argc, argv, kss_applicationName, kss_description, kss_version);
00100
00101 TDECmdLineArgs::addCmdLineOptions(options);
00102
00103 #ifdef HAVE_XCOMPOSITE
00104 TDEApplication app(TDEApplication::openX11RGBADisplay());
00105 argb_visual = app.isX11CompositionAvailable();
00106 #else
00107 TDEApplication app;
00108 #endif
00109
00110 TDECrash::setCrashHandler( crashHandler );
00111 TDEGlobal::locale()->insertCatalogue("klock");
00112 TDEGlobal::locale()->insertCatalogue("tdescreensaver");
00113
00114 DemoWindow *demoWidget = 0;
00115 Window saveWin = 0;
00116 KScreenSaver *target;
00117
00118 TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
00119
00120 if (args->isSet("setup"))
00121 {
00122 TQDialog *dlg = kss_setup();
00123 args->clear();
00124 dlg->exec();
00125 delete dlg;
00126 exit(0);
00127 }
00128
00129 if (args->isSet("window-id"))
00130 {
00131 saveWin = atol(args->getOption("window-id"));
00132 }
00133
00134 #ifdef Q_WS_X11 //FIXME
00135 if (args->isSet("root"))
00136 {
00137 saveWin = RootWindow(tqt_xdisplay(), tqt_xscreen());
00138 }
00139 #endif
00140
00141 if (args->isSet("demo"))
00142 {
00143 saveWin = 0;
00144 }
00145
00146 if (saveWin == 0)
00147 {
00148 demoWidget = new DemoWindow();
00149 demoWidget->setBackgroundMode(TQWidget::NoBackground);
00150 saveWin = demoWidget->winId();
00151 app.setMainWidget(demoWidget);
00152 app.processEvents();
00153 }
00154
00155 target = kss_create( saveWin );
00156
00157 if ( demoWidget )
00158 {
00159 demoWidget->setFixedSize( 600, 420 );
00160 demoWidget->show();
00161 }
00162 args->clear();
00163 app.exec();
00164
00165 delete target;
00166 delete demoWidget;
00167
00168 return 0;
00169 }
00170