Of course, we will need a lot of #ifdefs there...
I could not find out how to specify per-target #defines in cmake, so I use different source files
named build_*.cpp that set a #define and #include main.cpp (actually, main_mono.cpp, which is to be renamed
in the next commit).
# KDevelop Custom Project File List
+dev-notes
+dev-notes/builtin_cmds.obsolete.cpp
+dev-notes/paulk-mainwindow.ui
Makefile
src
src/client
src/client/buffer.cpp
src/client/buffer.h
+src/client/buffertreemodel.cpp
+src/client/buffertreemodel.h
src/client/client.cpp
src/client/client.h
src/client/clientproxy.cpp
src/client/clientproxy.h
+src/client/CMakeLists.txt
+src/client/treemodel.cpp
+src/client/treemodel.h
src/CMakeLists.txt
src/common
src/common/CMakeLists.txt
src/common/message.cpp
src/common/message.h
src/common/proxy_common.h
+src/common/quasselui.h
src/common/settings.cpp
src/common/settings.h
src/common/util.cpp
src/plugins/plugin.h
src/qtgui
src/qtgui/bufferview.cpp
+src/qtgui/bufferviewfilter.cpp
+src/qtgui/bufferviewfilter.h
src/qtgui/bufferview.h
src/qtgui/bufferviewwidget.cpp
src/qtgui/bufferviewwidget.h
src/qtgui/bufferwidget.h
src/qtgui/channelwidgetinput.cpp
src/qtgui/channelwidgetinput.h
+src/qtgui/chatline.cpp
+src/qtgui/chatline.h
src/qtgui/chatwidget.cpp
src/qtgui/chatwidget.h
src/qtgui/CMakeLists.txt
src/qtgui/ui/servereditdlg.ui
src/qtgui/ui/serverlistdlg.ui
src/qtgui/ui/settingsdlg.ui
-src/common/quasselui.h
-src/client/CMakeLists.txt
-src/qtgui/chatline.cpp
-src/qtgui/chatline.h
-src/client/buffertreemodel.h
-src/client/buffertreemodel.cpp
-src/client/treemodel.cpp
-src/client/treemodel.h
+src/common/build_mono.cpp
+src/common/build_qtgui.cpp
+src/common/build_core.cpp
# Select if Quassel should be built in client, server or monolithic mode
SET(BUILD "mono" CACHE STRING "Defines which Quassel parts are to be built. Can contain 'core', 'gui' and/or 'monolithic' (which is the default), or 'all' to build everything.")
SET(BUILD_CORE )
-SET(BUILD_CLIENT )
+SET(BUILD_QTGUI )
SET(BUILD_MONO )
IF(BUILD MATCHES "core" OR BUILD MATCHES "all")
SET(BUILD_CORE true)
MESSAGE("Building Quassel core.")
ENDIF(BUILD MATCHES "core" OR BUILD MATCHES "all")
-IF(BUILD MATCHES "client" OR BUILD MATCHES "all")
- SET(BUILD_CLIENT true)
- MESSAGE("Building Quassel GUI.")
-ENDIF(BUILD MATCHES "client" OR BUILD MATCHES "all")
+IF(BUILD MATCHES "gui" OR BUILD MATCHES "all")
+ SET(BUILD_QTGUI true)
+ MESSAGE("Building Quassel GUI for Qt.")
+ENDIF(BUILD MATCHES "gui" OR BUILD MATCHES "all")
IF(BUILD MATCHES "mono" OR BUILD MATCHES "all")
SET(BUILD_MONO true)
MESSAGE("Building monolithic Quassel.")
MESSAGE(FATAL_ERROR "\nYou have not selected which parts of Quassel I should build. Aborting.\nRun 'cmake <path> -DBUILD=<part>', where <part> contains one or more of 'core', 'gui' or 'monolithic', or 'all' to build everything.\n")
ENDIF(NOT BUILD_MONO AND NOT BUILD_CORE AND NOT BUILD_GUI)
-IF(BUILD_CORE OR BUILD_CLIENT)
+IF(BUILD_CORE OR BUILD_QTGUI)
MESSAGE(FATAL_ERROR "\nBuilding of standalone core or GUI not supported at this time. Please check back later.\n")
-ENDIF(BUILD_CORE OR BUILD_CLIENT)
+ENDIF(BUILD_CORE OR BUILD_QTGUI)
SET(CMAKE_BUILD_TYPE Debug)
# Define files
-SET(quassel_mono_SRCS common/main_mono.cpp)
-SET(quassel_core_SRCS common/main_core.cpp)
-SET(quassel_client_SRCS common/main_gui.cpp ${common_SRCS})
+SET(quassel_mono_SRCS common/build_mono.cpp)
+SET(quassel_core_SRCS common/build_core.cpp)
+SET(quassel_qtgui_SRCS common/build_qtgui.cpp)
SET(quassel_RCCS images/icons.qrc)
SET(quassel_DIRS common client core qtgui)
SET(SDIRS ${SDIRS} "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
ENDFOREACH(dir)
INCLUDE_DIRECTORIES(${SDIRS} plugins)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/qtgui)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/qtgui) # so that ui files are found
# We need Qt4 support.
SET(QT_MIN_VERSION "4.3.0") # 4.3 is required for SSL, crypto and some other stuff
SET(TARGET_LIST )
IF(BUILD_CORE)
- ADD_DEFINITIONS(-DBUILD_CORE)
ADD_EXECUTABLE(quasselcore ${quassel_core_SRCS} ${_RCCS})
TARGET_LINK_LIBRARIES(quasselcore common core ${QT_LIBRARIES})
SET(TARGET_LIST ${TARGET_LIST} quasselcore)
- REMOVE_DEFINITIONS(-DBUILD_CORE)
ENDIF(BUILD_CORE)
-IF(BUILD_CLIENT OR BUILD_MONO) # OK, now we need QtGui!
+IF(BUILD_QTGUI OR BUILD_MONO) # OK, now we need QtGui!
REMOVE_DEFINITIONS(-DQT_CORE_LIB -DQT_GUI_LIB ${QT_DEFINITIONS})
SET(QT_DONT_USE_QTGUI "")
SET(QT_INCLUDE_DIR "")
ADD_SUBDIRECTORY(qtgui)
IF(BUILD_MONO)
- ADD_DEFINITIONS(-DBUILD_MONO)
ADD_EXECUTABLE(quassel ${quassel_mono_SRCS} ${_RCCS})
TARGET_LINK_LIBRARIES(quassel common client core qtgui ${QT_LIBRARIES})
SET(TARGET_LIST ${TARGET_LIST} quassel)
- REMOVE_DEFINITIONS(-DBUILD_MONO)
ENDIF(BUILD_MONO)
- IF(BUILD_CLIENT)
- ADD_DEFINITIONS(-DBUILD_CLIENT)
- ADD_EXECUTABLE(quasselgui ${quassel_gui_SRCS} ${_RCCS})
+ IF(BUILD_QTGUI)
+ ADD_EXECUTABLE(quasselclient ${quassel_gui_SRCS} ${_RCCS})
TARGET_LINK_LIBRARIES(quasselclient common client qtgui ${QT_LIBRARIES})
- SET(TARGET_LIST ${TARGET_LIST} quasselgui)
- REMOVE_DEFINITIONS(-DBUILD_CLIENT)
- ENDIF(BUILD_CLIENT)
+ SET(TARGET_LIST ${TARGET_LIST} quasselclient)
+ ENDIF(BUILD_QTGUI)
-ENDIF(BUILD_CLIENT OR BUILD_MONO)
+ENDIF(BUILD_QTGUI OR BUILD_MONO)
INSTALL(TARGETS ${TARGET_LIST}
RUNTIME DESTINATION bin
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-07 by The Quassel IRC Development Team *
+ * devel@quassel-irc.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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#define BUILD_CORE
+#include "main.cpp"
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-07 by The Quassel IRC Development Team *
+ * devel@quassel-irc.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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#define BUILD_MONO
+#include "main_mono.cpp"
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-07 by The Quassel IRC Development Team *
+ * devel@quassel-irc.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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#define BUILD_QTGUI
+#include "main.cpp"
void dataUpdatedRemotely(UserId, QString key); // sent by remote update only!
public:
- enum RunMode { Monolithic, GuiOnly, CoreOnly };
+ enum RunMode { Monolithic, ClientOnly, CoreOnly };
static RunMode runMode;
static QString quasselDir;
#include <iostream>
-#include <QApplication>
+#include "global.h"
+#include "settings.h"
-#include "client.h"
+#if defined BUILD_CORE
+#include <QCoreApplication>
#include "core.h"
+
+#elif defined BUILD_QTGUI
+#include <QApplication>
#include "style.h"
-#include "global.h"
+#include "client.h"
#include "clientproxy.h"
+#include "mainwin.h"
+
+#elif defined BUILD_MONO
+#include <QApplication>
+#include "core.h"
#include "coreproxy.h"
-#include "settings.h"
-#include "chatwidget.h"
+#include "style.h"
+#include "client.h"
+#include "clientproxy.h"
#include "mainwin.h"
+#else
+#error "Something is wrong - you need to #define a build mode!"
+#endif
+
int main(int argc, char **argv) {
+#if defined BUILD_CORE
+ Global::runMode = Global::CoreOnly;
+ QCoreApplication app(argc, argv);
+#elif defined BUILD_QTGUI
+ Global::runMode = Global::ClientOnly;
QApplication app(argc, argv);
+#else
+ Global::runMode = Global::Monolithic;
+ QApplication app(argc, argv);
+#endif
+
QCoreApplication::setOrganizationDomain("quassel-irc.org");
QCoreApplication::setApplicationName("Quassel IRC");
QCoreApplication::setOrganizationName("Quassel IRC Development Team");
- Global::runMode = Global::Monolithic;
Global::quasselDir = QDir::homePath() + "/.quassel";
- //settings = new Settings();
- //global = new Global();
- //guiProxy = new GUIProxy();
- //coreProxy = new CoreProxy();
+#ifdef BUILD_MONO
QObject::connect(Core::localSession(), SIGNAL(proxySignal(CoreSignal, QVariant, QVariant, QVariant)), ClientProxy::instance(), SLOT(recv(CoreSignal, QVariant, QVariant, QVariant)));
QObject::connect(ClientProxy::instance(), SIGNAL(send(ClientSignal, QVariant, QVariant, QVariant)), Core::localSession(), SLOT(processSignal(ClientSignal, QVariant, QVariant, QVariant)));
+#endif
Settings::init();
Style::init();
MainWin *mainWin = new MainWin();
- //mainWin->show();
Client::init(mainWin);
mainWin->init();
int exitCode = app.exec();
- //delete core;
-
// the mainWin has to be deleted before the Core
// if not Quassel will crash on exit under certain conditions since the gui
// still wants to access clientdata
delete mainWin;
Client::destroy();
Core::destroy();
- //delete guiProxy;
- //delete coreProxy;
- //delete global;
- //delete mainWin;
- //delete settings;
return exitCode;
}
// any servers connected at this stage...
}
-/*
-void CoreProxy::sendToGUI(CoreSignal sig, QVariant arg1, QVariant arg2, QVariant arg3) {
- guiProxy->recv(sig, arg1, arg2, arg3);
-}
-*/
-
-/*
-GUIProxy::GUIProxy() {
- if(guiProxy) qFatal("Trying to instantiate more than one GUIProxy object!");
-}
-*/
-/*
-void GUIProxy::send(GUISignal sig, QVariant arg1, QVariant arg2, QVariant arg3) {
- coreProxy->recv(sig, arg1, arg2, arg3);
-}
-*/
-
-// Dummy function definitions
-// These are not needed, since we don't have a network connection to the core.
-/*
-void GUIProxy::serverHasData() {}
-void GUIProxy::connectToCore(QString, quint16) {}
-void GUIProxy::disconnectFromCore() {}
-void GUIProxy::updateCoreData(QString) {}
-void GUIProxy::serverError(QAbstractSocket::SocketError) {}
-*/