From b1553ccc7539b13a6a02e5e209ea909c056dfacf Mon Sep 17 00:00:00 2001 From: Denis Loginov Date: Sat, 6 Aug 2011 14:39:16 -0400 Subject: [PATCH] Added MAC OS X support and updated program icon from the old project wiki for better looks in Dock etc. Scan popup and hotkeys are not supported. The program is tested on Snow Leopard and Lion. Works with the default system libraries. Signed-off-by: Denis Loginov --- goldendict.pro | 6 ++++++ hotkeywrapper.cc | 3 ++- hotkeywrapper.hh | 28 ++++++++++++++++++++++++++++ icons/macicon.png | Bin 0 -> 31460 bytes initializing.cc | 8 ++++++-- keyboardstate.cc | 2 ++ main.cc | 10 +++++++++- resources.qrc | 1 + 8 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 icons/macicon.png diff --git a/goldendict.pro b/goldendict.pro index b19d794e..e91b3a8b 100644 --- a/goldendict.pro +++ b/goldendict.pro @@ -88,6 +88,12 @@ unix { desktops2.files = redist/*.desktop INSTALLS += desktops2 } +mac { + LIBS += -lvorbisfile \ + -liconv \ + -lhunspell-1.2 \ + -L/usr/X11/lib +} DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\" # Input diff --git a/hotkeywrapper.cc b/hotkeywrapper.cc index 850fded3..bf592c32 100644 --- a/hotkeywrapper.cc +++ b/hotkeywrapper.cc @@ -65,6 +65,7 @@ HotkeyStruct::HotkeyStruct( quint32 key_, quint32 key2_, quint32 modifier_, ////////////////////////////////////////////////////////////////////////// +#ifndef Q_WS_MAC HotkeyWrapper::HotkeyWrapper(QObject *parent) : QThread( parent ), state2(false) { @@ -545,4 +546,4 @@ void HotkeyWrapper::unregister() } #endif - +#endif diff --git a/hotkeywrapper.hh b/hotkeywrapper.hh index c51a980a..cb085839 100644 --- a/hotkeywrapper.hh +++ b/hotkeywrapper.hh @@ -32,6 +32,7 @@ struct HotkeyStruct ////////////////////////////////////////////////////////////////////////// +#ifndef Q_OS_MAC class HotkeyWrapper : public QThread // Thread is actually only used on X11 { Q_OBJECT @@ -125,6 +126,33 @@ signals: #endif }; +#else + +class HotkeyWrapper : public QObject +{ + Q_OBJECT + + friend class QHotkeyApplication; + +public: + + DEF_EX( exInit, "Hotkey wrapper failed to init", std::exception ) + + HotkeyWrapper(QObject *parent): QObject( parent ) + {} + + bool setGlobalKey( int key, int key2, Qt::KeyboardModifiers modifier, + int handle ) + { return true; } + + void unregister() + {} + +signals: + + void hotkeyActivated( int ); +}; +#endif ////////////////////////////////////////////////////////////////////////// diff --git a/icons/macicon.png b/icons/macicon.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7d4542a583f5b3733ce7ddd4e2cb8b543ec4b7 GIT binary patch literal 31460 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 literal 0 HcmV?d00001 diff --git a/initializing.cc b/initializing.cc index 498aeff6..8dc8a15e 100644 --- a/initializing.cc +++ b/initializing.cc @@ -9,8 +9,12 @@ Initializing::Initializing( QWidget * parent, bool showOnStartup ): QDialog( par ui.setupUi( this ); setWindowFlags( Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint ); - - setWindowIcon( QIcon( ":/icons/programicon.png" ) ); + + #ifndef Q_OS_MAC + setWindowIcon( QIcon( ":/icons/programicon.png" ) ); + #else + setWindowIcon( QIcon( ":/icons/macicon.png" ) ); + #endif if ( showOnStartup ) { diff --git a/keyboardstate.cc b/keyboardstate.cc index c341efc3..ef434abe 100644 --- a/keyboardstate.cc +++ b/keyboardstate.cc @@ -30,7 +30,9 @@ bool KeyboardState::checkModifiersPressed( int mask ) #else XkbStateRec state; + #ifndef Q_OS_MAC XkbGetState( QX11Info::display(), XkbUseCoreKbd, &state ); + #endif return !( ( mask & Alt && !( state.base_mods & Mod1Mask ) ) || diff --git a/main.cc b/main.cc index 0015daf5..73a14037 100644 --- a/main.cc +++ b/main.cc @@ -22,6 +22,10 @@ int main( int argc, char ** argv ) { + #ifdef Q_OS_MAC + setenv("LANG", "en_US.UTF-8", 1); + #endif + // The following clause fixes a race in the MinGW runtime where throwing // exceptions for the first time in several threads simultaneously can cause // an abort(). This code throws first exception in a safe, single-threaded @@ -88,7 +92,11 @@ int main( int argc, char ** argv ) app.setOrganizationDomain( "http://goldendict.org/" ); app.setStyle(new GdAppStyle); - app.setWindowIcon( QIcon( ":/icons/programicon.png" ) ); + #ifndef Q_OS_MAC + app.setWindowIcon( QIcon( ":/icons/programicon.png" ) ); + #else + app.setWindowIcon( QIcon( ":/icons/macicon.png" ) ); + #endif Config::Class cfg( Config::load() ); diff --git a/resources.qrc b/resources.qrc index 205b28bd..8a503f27 100644 --- a/resources.qrc +++ b/resources.qrc @@ -46,5 +46,6 @@ CREDITS.txt icons/highlighter.png icons/error.png + icons/macicon.png