Fixed: #1190 Run Georges Editor Qt on Mac OS X

This commit is contained in:
rti 2010-12-12 19:10:58 +01:00
parent 78229f4b67
commit 8ff3df26b3
5 changed files with 76 additions and 37 deletions

View file

@ -17,7 +17,7 @@ QT4_WRAP_CPP( OBJECT_VIEWER_WIDGET_MOC_SRCS ${OBJECT_VIEWER_WIDGET_HDR} )
SOURCE_GROUP(QtGeneratedMocSrc FILES ${OBJECT_VIEWER_WIDGET_MOC_SRCS}) SOURCE_GROUP(QtGeneratedMocSrc FILES ${OBJECT_VIEWER_WIDGET_MOC_SRCS})
ADD_LIBRARY(object_viewer_widget_qt SHARED ADD_LIBRARY(object_viewer_widget_qt MODULE
${OBJECT_VIEWER_WIDGET_SRC} ${OBJECT_VIEWER_WIDGET_SRC}
${OBJECT_VIEWER_WIDGET_MOC_SRCS}) ${OBJECT_VIEWER_WIDGET_MOC_SRCS})

View file

@ -63,6 +63,8 @@ namespace NLQT
CObjectViewerWidget(QWidget *parent = 0); CObjectViewerWidget(QWidget *parent = 0);
virtual ~CObjectViewerWidget(); virtual ~CObjectViewerWidget();
virtual QPaintEngine* paintEngine() const { return NULL; }
void setNelContext(NLMISC::INelContext &nelContext); void setNelContext(NLMISC::INelContext &nelContext);
static CObjectViewerWidget &objViewWid() { return *_objectViewerWidget; } static CObjectViewerWidget &objViewWid() { return *_objectViewerWidget; }
@ -159,13 +161,13 @@ namespace NLQT
virtual QString name() const {return ("ObjectViewerWidget");} virtual QString name() const {return ("ObjectViewerWidget");}
protected: protected:
#if defined(NL_OS_WINDOWS) #if defined(NL_OS_WINDOWS)
virtual bool winEvent(MSG * message, long * result); virtual bool winEvent(MSG * message, long * result);
#elif defined(NL_OS_MAC) #elif defined(NL_OS_MAC)
virtual bool macEvent(EventHandlerCallRef caller, EventRef event); virtual bool macEvent(EventHandlerCallRef caller, EventRef event);
#elif defined(NL_OS_UNIX) #elif defined(NL_OS_UNIX)
virtual bool x11Event(XEvent *event); virtual bool x11Event(XEvent *event);
#endif #endif
private Q_SLOTS: private Q_SLOTS:

View file

@ -24,6 +24,17 @@ SOURCE_GROUP(QtResources FILES ${GEORGES_EDITOR_UIS} ${GEORGES_EDITOR_RCS})
SOURCE_GROUP(QtGeneratedUiHdr FILES ${GEORGES_EDITOR_UI_HDRS}) SOURCE_GROUP(QtGeneratedUiHdr FILES ${GEORGES_EDITOR_UI_HDRS})
SOURCE_GROUP(QtGeneratedMocSrc FILES ${GEORGES_EDITOR_MOC_SRCS}) SOURCE_GROUP(QtGeneratedMocSrc FILES ${GEORGES_EDITOR_MOC_SRCS})
if(APPLE)
SET(MACOSX_BUNDLE_INFO_STRING "Georges Editor Qt")
SET(MACOSX_BUNDLE_ICON_FILE "georges_logo.icns")
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "")
SET(MACOSX_BUNDLE_LONG_VERSION_STRING ${NL_VERSION})
SET(MACOSX_BUNDLE_BUNDLE_NAME "Georges Editor Qt")
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "0.9")
SET(MACOSX_BUNDLE_BUNDLE_VERSION "0.9")
SET(MACOSX_BUNDLE_COPYRIGHT "Winchgate and The Ryzom Core Community")
ENDIF(APPLE)
ADD_EXECUTABLE(georges_editor_qt WIN32 MACOSX_BUNDLE ${GEORGES_EDITOR_SRC} ${GEORGES_EDITOR_MOC_SRCS} ${GEORGES_EDITOR_RC_SRCS} ${GEORGES_EDITOR_UI_HDRS}) ADD_EXECUTABLE(georges_editor_qt WIN32 MACOSX_BUNDLE ${GEORGES_EDITOR_SRC} ${GEORGES_EDITOR_MOC_SRCS} ${GEORGES_EDITOR_RC_SRCS} ${GEORGES_EDITOR_UI_HDRS})
TARGET_LINK_LIBRARIES(georges_editor_qt TARGET_LINK_LIBRARIES(georges_editor_qt

View file

@ -1,5 +1,5 @@
/* /*
Georges Editor Qt Georges Editor Qt
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com> Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -23,6 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <QDir> #include <QDir>
#include <QString> #include <QString>
#include <nel/misc/debug.h>
NLQT::CConfiguration *Modules::_configuration = NULL; NLQT::CConfiguration *Modules::_configuration = NULL;
NLQT::IObjectViewer *Modules::_objViewerInterface = NULL; NLQT::IObjectViewer *Modules::_objViewerInterface = NULL;
NLQT::CMainWindow *Modules::_mainWindow = NULL; NLQT::CMainWindow *Modules::_mainWindow = NULL;
@ -47,30 +49,55 @@ void Modules::release()
delete _configuration; _configuration = NULL; delete _configuration; _configuration = NULL;
} }
bool Modules::loadPlugin() bool Modules::loadPlugin()
{ {
QDir pluginsDir(qApp->applicationDirPath()); #if defined(Q_OS_WIN)
/*#if defined(Q_OS_WIN) QString pluginPath = qApp->applicationDirPath();
if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release") QString pluginFilename = "object_viewer_widget_qt.dll";
pluginsDir.cdUp(); #elif defined(Q_OS_MAC)
#elif defined(Q_OS_MAC) QString pluginPath = qApp->applicationDirPath() + "/../PlugIns/";
if (pluginsDir.dirName() == "MacOS") { QString pluginFilename = "libobject_viewer_widget_qt.so";
pluginsDir.cdUp(); #else // LINUX
pluginsDir.cdUp(); QString pluginPath = qApp->applicationDirPath();
pluginsDir.cdUp(); QString pluginFilename = "libobject_viewer_widget_qt.so";
} #endif
#endif*/
//pluginsDir.cd("plugins"); // if(!QFile::exists(pluginPath + pluginFilename))
//Q_FOREACH (QString fileName, pluginsDir.entryList(QDir::Files)) { // {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath("object_viewer_widget_qt.dll")); // nlwarning("Cannot find %s in %s, fallback to working dir",
QObject *plugin = pluginLoader.instance(); // pluginFilename.toStdString().c_str(), pluginPath.toStdString().c_str());
if (plugin) //
{ // pluginPath = "";
_objViewerInterface = qobject_cast<NLQT::IObjectViewer *>(plugin); //
if (_objViewerInterface) // Q_FOREACH (QString path, qApp->libraryPaths())
return true; // nlwarning("libraryPaths %s", path.toStdString().c_str());
} // }
//}
QDir pluginsDir(pluginPath);
return false; QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(pluginFilename));
}
QObject *plugin = pluginLoader.instance();
if (plugin)
{
_objViewerInterface = qobject_cast<NLQT::IObjectViewer *>(plugin);
if (_objViewerInterface)
{
nlinfo("Loaded %s",
pluginsDir.absoluteFilePath(pluginFilename).toStdString().c_str());
return true;
}
else
{
nlwarning("Loaded %s, but cannot cast to NLQT::IObjectViewer*",
pluginFilename.toStdString().c_str());
}
}
else
{
nlwarning("Cannot get plugin instance for %s (searched in %s)",
pluginFilename.toStdString().c_str(),
(qApp->applicationDirPath() + pluginPath).toStdString().c_str());
}
return false;
}

View file

@ -59,7 +59,6 @@ namespace NLQT
~CObjectViewerDialog(); ~CObjectViewerDialog();
virtual void setVisible(bool visible); virtual void setVisible(bool visible);
virtual QPaintEngine* paintEngine() const { return NULL; }
QAction *createSaveScreenshotAction(QObject *parent); QAction *createSaveScreenshotAction(QObject *parent);
QAction *createSetBackgroundColor(QObject *parent); QAction *createSetBackgroundColor(QObject *parent);