From 1a0c90a612dd547cc41cf7446b08def38c34eb9f Mon Sep 17 00:00:00 2001 From: mlaurent Date: Sat, 8 Jul 2006 19:57:29 +0000 Subject: [PATCH] Compile it. Install desktop files for screensaver (Need to readd screensaver-hack) git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/KDE/kdeartwork@559981 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- CMakeLists.txt | 1 + cmake/modules/FindXscreensaver.cmake | 103 ++++++++++++++++++++++++ config.h.cmake | 6 -- kscreensaver/CMakeLists.txt | 12 ++- kscreensaver/kxsconfig/CMakeLists.txt | 25 ++++-- kscreensaver/kxsconfig/config-kxsconfig.h.cmake | 6 ++ kscreensaver/kxsconfig/kxsconfig.cpp | 18 +++-- kscreensaver/kxsconfig/kxsconfig.h | 4 +- kscreensaver/kxsconfig/kxsrun.cpp | 4 +- kscreensaver/xsavers/swarm.cpp | 12 ++- kscreensaver/xsavers/swarm.h | 6 +- 11 files changed, 159 insertions(+), 38 deletions(-) create mode 100644 cmake/modules/FindXscreensaver.cmake create mode 100644 kscreensaver/kxsconfig/config-kxsconfig.h.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a7f97bc..52d91b10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ if (APPLE) find_package(Carbon REQUIRED) endif (APPLE) +macro_optional_find_package(Xscreensaver) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DHAVE_CONFIG_H=1) link_directories (${KDE4_LIB_DIR}) diff --git a/cmake/modules/FindXscreensaver.cmake b/cmake/modules/FindXscreensaver.cmake new file mode 100644 index 00000000..d4cd4b15 --- /dev/null +++ b/cmake/modules/FindXscreensaver.cmake @@ -0,0 +1,103 @@ +#Macro to found xscreensaver directory + + +FIND_PATH(XSCREENSAVER_DIR lib${KDELIBSUFF}/xscreensaver/flame + ${KDE4_INCLUDE_DIR} + /usr/ + /usr/local/ + /opt/local/ + /usr/X11R6/ + /opt/kde/ + /opt/kde3/ + /usr/kde/ + /usr/local/kde/ + /usr/local/xscreensaver/ + /usr/openwin/lib/xscreensaver/ + /etc/ +) + +if(NOT XSCREENSAVER_DIR) +FIND_PATH(XSCREENSAVER_DIR lib/xscreensaver/flame + ${KDE4_INCLUDE_DIR} + /usr/ + /usr/local/ + /opt/local/ + /usr/X11R6/ + /opt/kde/ + /opt/kde3/ + /usr/kde/ + /usr/local/kde/ + /usr/local/xscreensaver/ + /usr/openwin/lib/xscreensaver/ + /etc/ +) +endif(NOT XSCREENSAVER_DIR) + +if(NOT XSCREENSAVER_DIR) +FIND_PATH(XSCREENSAVER_DIR bin/xscreensaver-hacks/flame + ${KDE4_INCLUDE_DIR} + /usr/ + /usr/local/ + /opt/local/ + /usr/X11R6/ + /opt/kde/ + /opt/kde3/ + /usr/kde/ + /usr/local/kde/ + /usr/local/xscreensaver/ + /usr/openwin/lib/xscreensaver/ + /etc/ +) +endif(NOT XSCREENSAVER_DIR) + +if(NOT XSCREENSAVER_DIR) +FIND_PATH(XSCREENSAVER_DIR hacks/flame + ${KDE4_INCLUDE_DIR} + /usr/ + /usr/local/ + /opt/local/ + /usr/X11R6/ + /opt/kde/ + /opt/kde3/ + /usr/kde/ + /usr/local/kde/ + /usr/local/xscreensaver/ + /usr/openwin/lib/xscreensaver/ + /etc/ +) +endif(NOT XSCREENSAVER_DIR) + + +set(XSCREENSAVER_CONFIG_DIR) +FIND_PATH(XSCREENSAVER_CONFIG_DIR config/flame.xml + ${KDE4_INCLUDE_DIR} + /usr/ + /usr/local/ + /opt/local/ + /usr/X11R6/ + /opt/kde/ + /opt/kde3/ + /usr/kde/ + /usr/share/xscreensaver/ + /usr/local/kde/ + /usr/local/xscreensaver/ + /usr/openwin/lib/xscreensaver/ + /etc/ +) +MESSAGE(STATUS "XSCREENSAVER_CONFIG_DIR :<${XSCREENSAVER_CONFIG_DIR}") +MESSAGE(STATUS "XSCREENSAVER_DIR :<${XSCREENSAVER_DIR}") +if(XSCREENSAVER_CONFIG_DIR) + set(XSCREENSAVER_CONFIG_DIR "${XSCREENSAVER_CONFIG_DIR}/config/") + MESSAGE(STATUS "XSCREENSAVER_CONFIG_DIR <${XSCREENSAVER_CONFIG_DIR}") +endif(XSCREENSAVER_CONFIG_DIR) + +# Need to fix hack + +if(XSCREENSAVER_DIR AND XSCREENSAVER_CONFIG_DIR) + set(XSCREENSAVER_FOUND TRUE) +else(XSCREENSAVER_DIR AND XSCREENSAVER_CONFIG_DIR) + MESSAGE(STATUS "XScreenSaver not found") +endif(XSCREENSAVER_DIR AND XSCREENSAVER_CONFIG_DIR) + +MARK_AS_ADVANCED(XSCREENSAVER_DIR XSCREENSAVER_CONFIG_DIR) + diff --git a/config.h.cmake b/config.h.cmake index 65610777..543da803 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -7,11 +7,5 @@ #cmakedefine HAVE_MEMORY_H 1 -/* Defines where xscreensaver stores it's config files */ -/* #undef XSCREENSAVER_CONFIG_DIR */ - -/* Defines where xscreensaver stores its graphic hacks */ -/* #undef XSCREENSAVER_HACKS_DIR */ - /* define if we want to compile with art support for the moment disable*/ #cmakedefine HAVE_ARTS 1 diff --git a/kscreensaver/CMakeLists.txt b/kscreensaver/CMakeLists.txt index a9d826d3..09e33c6b 100644 --- a/kscreensaver/CMakeLists.txt +++ b/kscreensaver/CMakeLists.txt @@ -1,5 +1,5 @@ -OPTION(WITH_xscreensaver "enable support for xscreensaver") +OPTION(WITH_xscreensaver "enable support for xscreensaver" ON) FIND_PATH( KSCREENSAVER_INCLUDE_DIR kscreensaver.h ${KDE4_INCLUDE_DIR} /usr/include @@ -13,12 +13,10 @@ if(KSCREENSAVER_INCLUDE_DIR) add_subdirectory( kdesavers ) add_subdirectory( kpartsaver ) - if(WITH_xscreensaver) - #add_subdirectory(kxsconfig) - #add_subdirectory(xsavers) - message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}: skipped subdir kxsconfig") - message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}: skipped subdir xsavers") - endif(WITH_xscreensaver) + if(WITH_xscreensaver AND XSCREENSAVER_FOUND) + add_subdirectory(kxsconfig) + add_subdirectory(xsavers) + endif(WITH_xscreensaver AND XSCREENSAVER_FOUND) else(KSCREENSAVER_INCLUDE_DIR) MESSAGE(STATUS "kscreensaver can't be compile. Please install kdebase before to compile it (need kscreensaver.h)") diff --git a/kscreensaver/kxsconfig/CMakeLists.txt b/kscreensaver/kxsconfig/CMakeLists.txt index 759c461f..f3a76a99 100644 --- a/kscreensaver/kxsconfig/CMakeLists.txt +++ b/kscreensaver/kxsconfig/CMakeLists.txt @@ -1,6 +1,5 @@ - - +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kxsconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kxsconfig.h ) ########### next target ############### @@ -14,7 +13,7 @@ kde4_automoc(${kxsconfig_SRCS}) kde4_add_executable(kxsconfig ${kxsconfig_SRCS}) -target_link_libraries(kxsconfig ${KDE4_KDECORE_LIBS} ) +target_link_libraries(kxsconfig ${KDE4_KIO_LIBS} ${X11_Xt_LIB} ) install(TARGETS kxsconfig DESTINATION ${BIN_INSTALL_DIR} ) @@ -31,16 +30,28 @@ kde4_automoc(${kxsrun_SRCS}) kde4_add_executable(kxsrun ${kxsrun_SRCS}) -target_link_libraries(kxsrun ${KDE4_KDECORE_LIBS} ) +target_link_libraries(kxsrun ${KDE4_KIO_LIBS} ) install(TARGETS kxsrun DESTINATION ${BIN_INSTALL_DIR} ) ########### install files ############### -install( FILES DESTINATION ${SERVICES_INSTALL_DIR}/ScreenSavers ) - - +#install( FILES DESTINATION ${SERVICES_INSTALL_DIR}/ScreenSavers ) + +FILE(GLOB _desktopfiles "ScreenSavers/*.desktop" ) +foreach(_currentdesktopfile ${_desktopfiles}) + STRING(REGEX REPLACE ".desktop" "" _newitem "${_currentdesktopfile}" ) + #MESSAGE(STATUS "newItem <${_newitem}>") + GET_FILENAME_COMPONENT(_screensaverName ${_newitem} NAME_WE) + #MESSAGE(STATUS "name without extension <${_screensaverName}>") + find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName} ) + if(XSCREENSAVER_FILE_FOUND) + install(FILES ${_currentdesktopfile} DESTINATION ${SERVICES_INSTALL_DIR}/ScreenSavers ) + else(XSCREENSAVER_FILE_FOUND) + MESSAGE(STATUS "xscreensaver name ${_currentdesktopfile} not found") + endif(XSCREENSAVER_FILE_FOUND) +endforeach(_currentdesktopfile ${_desktopfiles}) #original Makefile.am contents follow: diff --git a/kscreensaver/kxsconfig/config-kxsconfig.h.cmake b/kscreensaver/kxsconfig/config-kxsconfig.h.cmake new file mode 100644 index 00000000..d8c20205 --- /dev/null +++ b/kscreensaver/kxsconfig/config-kxsconfig.h.cmake @@ -0,0 +1,6 @@ +/* Defines where xscreensaver stores it's config files */ +#define XSCREENSAVER_CONFIG_DIR "${XSCREENSAVER_CONFIG_DIR}" + +/* Defines where xscreensaver stores its graphic hacks */ +#define XSCREENSAVER_HACKS_DIR "${XSCREENSAVER_DIR}" + diff --git a/kscreensaver/kxsconfig/kxsconfig.cpp b/kscreensaver/kxsconfig/kxsconfig.cpp index 4604b0a6..ac22ac5d 100644 --- a/kscreensaver/kxsconfig/kxsconfig.cpp +++ b/kscreensaver/kxsconfig/kxsconfig.cpp @@ -33,7 +33,7 @@ * software for any purpose. It is provided "as is" without express or * implied warranty. */ - +#include #include #include @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include @@ -81,9 +80,12 @@ const uint widgetEventMask = // X event mask ); KXSConfigDialog::KXSConfigDialog(const QString &filename, const QString &name) - : KDialogBase(Plain, name, Ok| Cancel, Ok, 0, 0, false), + : KDialog(0), mFilename(filename), mPreviewProc(0), mKilled(true) { + setButtons(Ok| Cancel); + setDefaultButton( Ok); + setModal(false); int slash = filename.findRev('/'); if (slash >= 0) mConfigFile = filename.mid(slash+1); @@ -96,9 +98,11 @@ KXSConfigDialog::KXSConfigDialog(const QString &filename, const QString &name) bool KXSConfigDialog::create() { - QVBoxLayout *topLayout = new QVBoxLayout(plainPage(), spacingHint()); + QWidget *main = new QWidget(this); + setMainWidget(main); + QVBoxLayout *topLayout = new QVBoxLayout(main, spacingHint()); QHBoxLayout *layout = new QHBoxLayout(topLayout, spacingHint()); - Q3VBox *controlLayout = new Q3VBox(plainPage()); + Q3VBox *controlLayout = new Q3VBox(main); controlLayout->setSpacing(spacingHint()); layout->addWidget(controlLayout); ((QBoxLayout*)controlLayout->layout())->addStrut(120); @@ -119,7 +123,7 @@ bool KXSConfigDialog::create() QWidget *spacer = new QWidget(controlLayout); controlLayout->setStretchFactor(spacer, 1 ); if ( !xmlParser.description().isEmpty() ) { - QLabel *l = new QLabel( xmlParser.description(), plainPage() ); + QLabel *l = new QLabel( xmlParser.description(), main ); topLayout->addWidget( l ); } } else { @@ -173,7 +177,7 @@ bool KXSConfigDialog::create() mPreviewTimer = new QTimer(this); connect(mPreviewTimer, SIGNAL(timeout()), SLOT(slotNewPreview())); - mPreview = new QWidget(plainPage()); + mPreview = new QWidget(main); mPreview->setFixedSize(250, 200); // mPreview->setBackgroundMode(QWidget::NoBackground); mPreview->setBackgroundColor(Qt::black); diff --git a/kscreensaver/kxsconfig/kxsconfig.h b/kscreensaver/kxsconfig/kxsconfig.h index 2e0d4eab..473d92af 100644 --- a/kscreensaver/kxsconfig/kxsconfig.h +++ b/kscreensaver/kxsconfig/kxsconfig.h @@ -22,7 +22,7 @@ #ifndef __KXSCONFIG_H__ #define __KXSCONFIG_H__ -#include +#include #include "kxsitem.h" //Added by qt3to4: #include @@ -31,7 +31,7 @@ class KProcess; class QLabel; -class KXSConfigDialog : public KDialogBase +class KXSConfigDialog : public KDialog { Q_OBJECT public: diff --git a/kscreensaver/kxsconfig/kxsrun.cpp b/kscreensaver/kxsconfig/kxsrun.cpp index e3bd2380..6f399fa1 100644 --- a/kscreensaver/kxsconfig/kxsrun.cpp +++ b/kscreensaver/kxsconfig/kxsrun.cpp @@ -18,7 +18,7 @@ // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, // Boston, MA 02110-1301, USA. - +#include #include #include @@ -64,7 +64,7 @@ int main(int argc, char *argv[]) KCmdLineArgs::addCmdLineOptions(options); - KApplication app( false, false ); + KApplication app( false ); KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); diff --git a/kscreensaver/xsavers/swarm.cpp b/kscreensaver/xsavers/swarm.cpp index f5dd2c88..ad2b40ba 100644 --- a/kscreensaver/xsavers/swarm.cpp +++ b/kscreensaver/xsavers/swarm.cpp @@ -20,7 +20,6 @@ #define MAXBATCH 200 #define MINBATCH 0 #define DEFBATCH 20 - #include //Added by qt3to4: #include @@ -313,13 +312,18 @@ void kSwarmSaver::slotTimeout() //----------------------------------------------------------------------------- kSwarmSetup::kSwarmSetup( QWidget *parent, const char *name ) - : KDialogBase( parent, name, true, i18n( "Setup Swarm Screen Saver" ), - Ok|Cancel|Help, Ok, true ) + : KDialog( parent) { + setCaption(i18n( "Setup Swarm Screen Saver" )); + setButtons(Ok|Cancel|Help); + setDefaultButton(Ok); + setModal(true); + showButtonSeparator(true); readSettings(); setButtonText( Help, i18n( "A&bout" ) ); - QWidget *main = makeMainWidget(); + QWidget *main = new QWidget(this); + setMainWidget(main); QHBoxLayout *top = new QHBoxLayout( main/*, 0, spacingHint()*/ ); QVBoxLayout *left = new QVBoxLayout;/*, spacingHint()*/ diff --git a/kscreensaver/xsavers/swarm.h b/kscreensaver/xsavers/swarm.h index dd4b2f6d..1402912f 100644 --- a/kscreensaver/xsavers/swarm.h +++ b/kscreensaver/xsavers/swarm.h @@ -5,10 +5,10 @@ #ifndef __SWARM_H__ #define __SWARM_H__ - +#include #include -#include +#include #include "saver.h" @@ -37,7 +37,7 @@ protected: int maxLevels; }; -class kSwarmSetup : public KDialogBase +class kSwarmSetup : public KDialog { Q_OBJECT public: -- 2.11.4.GIT