diff --git a/CMakeLists.txt b/CMakeLists.txt index 73db4accc..a0aa42264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,6 +204,11 @@ if (WITH_BZIP) endif (BZIP2_FOUND) endif (WITH_BZIP) +#Check for libcanberra-gtk (sound events on Linux) +if (UNIX AND (NOT APPLE)) + pkg_check_modules (CANBERRA-GTK REQUIRED libcanberra-gtk) +endif (UNIX AND (NOT APPLE)) + if (WITH_MYFILE_MMAP) add_definitions (-DMYFILE_MMAP) endif (WITH_MYFILE_MMAP) diff --git a/COMPILE.txt b/COMPILE.txt index b21695d6e..7deb09069 100644 --- a/COMPILE.txt +++ b/COMPILE.txt @@ -80,6 +80,7 @@ DEPENDENCIES JPEG libjpeg>=6b http://libjpeg-turbo.virtualgl.org/ http://jpegclub.org/ http://www.ijg.org/ + LIBCANBERRA libcanberra-gtk http://0pointer.de/lennart/projects/libcanberra/ [Only on Linux] LCMS2 lcms>=2.0a http://www.littlecms.com/ LIBIPTCDATA libiptcdata>=1.0.2 http://libiptcdata.sourceforge.net PNG libpng>=1.2.44 http://www.libpng.org/ @@ -413,34 +414,34 @@ LINUX See the list of dependencies at the beginning of this document. In Ubuntu/Debian the requirements can be installed by running: - sudo apt-get install build-essential cmake libfftw3-dev libbz2-dev \ - libexiv2-dev libexpat1-dev libglib2.0-dev libglibmm-2.4-dev \ - libgtk2.0-dev libgtkmm-2.4-dev libiptcdata-dev libjpeg8-dev \ - liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev mercurial \ - zlib1g-dev + sudo apt-get install build-essential cmake libcanberra-gtk-dev \ + libfftw3-dev libbz2-dev libexiv2-dev libexpat1-dev libglib2.0-dev \ + libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata-dev \ + libjpeg8-dev liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev \ + mercurial zlib1g-dev In Fedora, run: sudo yum install gcc-c++ cmake bzip2-devel exiv2-devel expat-devel \ fftw-devel glib2-devel glibmm24-devel gtk+-devel gtkmm24-devel \ - libjpeg-turbo-devel lcms2-devel libiptcdata-devel libpng-devel \ - libsigc++20-devel libtiff-devel zlib-devel + libcanberra-devel libjpeg-turbo-devel lcms2-devel libiptcdata-devel \ + libpng-devel libsigc++20-devel libtiff-devel zlib-devel In Gentoo, run: sudo emerge -uva app-arch/bzip2 media-gfx/exiv2 dev-libs/expat \ dev-libs/glib dev-cpp/glibmm x11-libs/gtk+ dev-cpp/gtkmm \ - media-libs/libjpeg-turbo media-libs/lcms media-libs/libiptcdata \ - media-libs/libpng dev-libs/libsigc++ media-libs/tiff sci-libs/fftw \ - sys-libs/zlib + media-libs/libcanberra media-libs/libjpeg-turbo media-libs/lcms \ + media-libs/libiptcdata media-libs/libpng dev-libs/libsigc++ \ + media-libs/tiff sci-libs/fftw sys-libs/zlib In Arch, run: sudo pacman -S bzip2 exiv2 expat fftw glib2 glibmm gtk gtkmm lcms2 \ - libiptcdata libjpeg-turbo libpng libsigc++ libtiff zlib + libcanberra libiptcdata libjpeg-turbo libpng libsigc++ libtiff zlib In openSUSE, run: sudo zypper in gcc-c++ cmake fftw3-devel glib2-devel gtk2-devel \ - glibmm2-devel gtkmm2-devel libbz2-devel libexpat-devel libiptcdata-devel \ - libjpeg-devel liblcms2-devel libpng-devel libsigc++2-devel libtiff-devel \ - zlib-devel + glibmm2-devel gtkmm2-devel libbz2-devel libcanberra-devel libexpat-devel \ + libiptcdata-devel libjpeg-devel liblcms2-devel libpng-devel \ + libsigc++2-devel libtiff-devel zlib-devel COMPILE: The Automatic Way: diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index ba55d7356..62a99bc71 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -42,9 +42,9 @@ if (WIN32) #set_target_properties (rth PROPERTIES LINK_FLAGS "-mwindows") else (WIN32) include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} - ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} ) + ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} ${CANBERRA-GTK_INCLUDE_DIRS}) link_directories (${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} - ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${GIO_LIBRARY_DIRS} ${GIOMM_LIBRARY_DIRS} ${IPTCDATA_LIBRARY_DIRS} ${LCMS_LIBRARY_DIRS} ${EXPAT_LIBRARY_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_LIBRARY_DIRS} ${GOBJECT_LIBRARY_DIRS}) + ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${GIO_LIBRARY_DIRS} ${GIOMM_LIBRARY_DIRS} ${IPTCDATA_LIBRARY_DIRS} ${LCMS_LIBRARY_DIRS} ${EXPAT_LIBRARY_DIRS} ${FFTW3F_LIBRARY_DIRS} ${GTHREAD_LIBRARY_DIRS} ${GOBJECT_LIBRARY_DIRS} ${CANBERRA-GTK_LIBRARY_DIRS}) endif (WIN32) # create config.h which defines where data are stored configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") @@ -55,6 +55,6 @@ set_target_properties (rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_ #target_link_libraries (rth rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${EXTRA_LIB} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} # ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${GTK_LIBRARIES} ${GTKMM_LIBRARIES} ${GIO_LIBRARIES} ${GIOMM_LIBRARIES} ${LCMS_LIBRARIES} ${IPTCDATA_LIBRARIES}) target_link_libraries (rth rtengine ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${TIFF_LIBRARIES} ${GOBJECT_LIBRARIES} ${GTHREAD_LIBRARIES} - ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${GTK_LIBRARIES} ${GTKMM_LIBRARIES} ${GIO_LIBRARIES} ${GIOMM_LIBRARIES} ${LCMS_LIBRARIES} ${EXPAT_LIBRARIES} ${FFTW3F_LIBRARIES} ${IPTCDATA_LIBRARIES} ${EXTRA_LIB_RTGUI}) + ${GLIB2_LIBRARIES} ${GLIBMM_LIBRARIES} ${GTK_LIBRARIES} ${GTKMM_LIBRARIES} ${GIO_LIBRARIES} ${GIOMM_LIBRARIES} ${LCMS_LIBRARIES} ${EXPAT_LIBRARIES} ${FFTW3F_LIBRARIES} ${IPTCDATA_LIBRARIES} ${CANBERRA-GTK_LIBRARIES} ${EXTRA_LIB_RTGUI}) install (TARGETS rth DESTINATION ${BINDIR}) diff --git a/rtgui/options.cc b/rtgui/options.cc index 21f63a9ec..9220d1cb0 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -348,7 +348,11 @@ void Options::setDefaults () { cutOverlayBrush = std::vector (4); cutOverlayBrush[3] = 0.667; // :-p +#if defined(__linux__) || defined(WIN32) sndEnable=true; +#else + sndEnable=false; +#endif sndLngEditProcDoneSecs=3.0; // Reminder: 0 = SET mode, 1 = ADD mode diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 24a12c162..9e6dd6081 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1280,6 +1280,10 @@ void Preferences::fillPreferences () { ckbSndEnable->set_active (moptions.sndEnable); txtSndBatchQueueDone->set_text (moptions.sndBatchQueueDone); txtSndLngEditProcDone->set_text (moptions.sndLngEditProcDone); +#if defined(__linux__) || defined(__APPLE__) + txtSndBatchQueueDone->set_sensitive (false); + txtSndLngEditProcDone->set_sensitive (false); +#endif spbSndLngEditProcDoneSecs->set_value (moptions.sndLngEditProcDoneSecs); } @@ -1307,9 +1311,12 @@ void Preferences::autocielabToggled () { } */ void Preferences::sndEnableToggled () { +#ifdef WIN32 txtSndBatchQueueDone->set_sensitive(ckbSndEnable->get_active()); txtSndLngEditProcDone->set_sensitive(ckbSndEnable->get_active()); +#elif defined(__linux__) || defined(WIN32) spbSndLngEditProcDoneSecs->set_sensitive(ckbSndEnable->get_active()); +#endif } void Preferences::langAutoDetectToggled () { diff --git a/rtgui/soundman.cc b/rtgui/soundman.cc index 67be7a5e9..847e7fe9b 100644 --- a/rtgui/soundman.cc +++ b/rtgui/soundman.cc @@ -26,6 +26,10 @@ #include #endif +#ifdef __linux__ +#include +#endif + void SoundManager::init() { @@ -45,9 +49,10 @@ void SoundManager::init() // param is either file name or name of the system event on Windows (e.g. "SystemAsterisk" or "SystemDefault"). void SoundManager::playSoundAsync(const Glib::ustring &sound) { - if (sound.empty() || !options.sndEnable) return; + if (!options.sndEnable) return; #ifdef WIN32 + if (sound.empty()) return; DWORD sndParam=SND_ASYNC | SND_NODEFAULT; if (sound.find('.')!=Glib::ustring::npos) { @@ -61,8 +66,7 @@ void SoundManager::playSoundAsync(const Glib::ustring &sound) wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (sound.c_str(), -1, NULL, NULL, NULL); PlaySoundW(wfilename, NULL, sndParam); g_free( wfilename ); -#else - // TODO: Add code for other OSes here - printf("Sound not supported on your OS (yet)\n"); +#elif defined(__linux__) + ca_context_play(ca_gtk_context_get(), 0, CA_PROP_EVENT_ID, "complete", NULL); #endif -} \ No newline at end of file +}