Adding Sound notifications for Linux (see issue 469)
This commit is contained in:
@@ -204,6 +204,11 @@ if (WITH_BZIP)
|
|||||||
endif (BZIP2_FOUND)
|
endif (BZIP2_FOUND)
|
||||||
endif (WITH_BZIP)
|
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)
|
if (WITH_MYFILE_MMAP)
|
||||||
add_definitions (-DMYFILE_MMAP)
|
add_definitions (-DMYFILE_MMAP)
|
||||||
endif (WITH_MYFILE_MMAP)
|
endif (WITH_MYFILE_MMAP)
|
||||||
|
29
COMPILE.txt
29
COMPILE.txt
@@ -80,6 +80,7 @@ DEPENDENCIES
|
|||||||
JPEG libjpeg>=6b http://libjpeg-turbo.virtualgl.org/
|
JPEG libjpeg>=6b http://libjpeg-turbo.virtualgl.org/
|
||||||
http://jpegclub.org/
|
http://jpegclub.org/
|
||||||
http://www.ijg.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/
|
LCMS2 lcms>=2.0a http://www.littlecms.com/
|
||||||
LIBIPTCDATA libiptcdata>=1.0.2 http://libiptcdata.sourceforge.net
|
LIBIPTCDATA libiptcdata>=1.0.2 http://libiptcdata.sourceforge.net
|
||||||
PNG libpng>=1.2.44 http://www.libpng.org/
|
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.
|
See the list of dependencies at the beginning of this document.
|
||||||
|
|
||||||
In Ubuntu/Debian the requirements can be installed by running:
|
In Ubuntu/Debian the requirements can be installed by running:
|
||||||
sudo apt-get install build-essential cmake libfftw3-dev libbz2-dev \
|
sudo apt-get install build-essential cmake libcanberra-gtk-dev \
|
||||||
libexiv2-dev libexpat1-dev libglib2.0-dev libglibmm-2.4-dev \
|
libfftw3-dev libbz2-dev libexiv2-dev libexpat1-dev libglib2.0-dev \
|
||||||
libgtk2.0-dev libgtkmm-2.4-dev libiptcdata-dev libjpeg8-dev \
|
libglibmm-2.4-dev libgtk2.0-dev libgtkmm-2.4-dev libiptcdata-dev \
|
||||||
liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev mercurial \
|
libjpeg8-dev liblcms2-dev libpng-dev libsigc++-2.0-dev libtiff-dev \
|
||||||
zlib1g-dev
|
mercurial zlib1g-dev
|
||||||
|
|
||||||
In Fedora, run:
|
In Fedora, run:
|
||||||
sudo yum install gcc-c++ cmake bzip2-devel exiv2-devel expat-devel \
|
sudo yum install gcc-c++ cmake bzip2-devel exiv2-devel expat-devel \
|
||||||
fftw-devel glib2-devel glibmm24-devel gtk+-devel gtkmm24-devel \
|
fftw-devel glib2-devel glibmm24-devel gtk+-devel gtkmm24-devel \
|
||||||
libjpeg-turbo-devel lcms2-devel libiptcdata-devel libpng-devel \
|
libcanberra-devel libjpeg-turbo-devel lcms2-devel libiptcdata-devel \
|
||||||
libsigc++20-devel libtiff-devel zlib-devel
|
libpng-devel libsigc++20-devel libtiff-devel zlib-devel
|
||||||
|
|
||||||
In Gentoo, run:
|
In Gentoo, run:
|
||||||
sudo emerge -uva app-arch/bzip2 media-gfx/exiv2 dev-libs/expat \
|
sudo emerge -uva app-arch/bzip2 media-gfx/exiv2 dev-libs/expat \
|
||||||
dev-libs/glib dev-cpp/glibmm x11-libs/gtk+ dev-cpp/gtkmm \
|
dev-libs/glib dev-cpp/glibmm x11-libs/gtk+ dev-cpp/gtkmm \
|
||||||
media-libs/libjpeg-turbo media-libs/lcms media-libs/libiptcdata \
|
media-libs/libcanberra media-libs/libjpeg-turbo media-libs/lcms \
|
||||||
media-libs/libpng dev-libs/libsigc++ media-libs/tiff sci-libs/fftw \
|
media-libs/libiptcdata media-libs/libpng dev-libs/libsigc++ \
|
||||||
sys-libs/zlib
|
media-libs/tiff sci-libs/fftw sys-libs/zlib
|
||||||
|
|
||||||
In Arch, run:
|
In Arch, run:
|
||||||
sudo pacman -S bzip2 exiv2 expat fftw glib2 glibmm gtk gtkmm lcms2 \
|
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:
|
In openSUSE, run:
|
||||||
sudo zypper in gcc-c++ cmake fftw3-devel glib2-devel gtk2-devel \
|
sudo zypper in gcc-c++ cmake fftw3-devel glib2-devel gtk2-devel \
|
||||||
glibmm2-devel gtkmm2-devel libbz2-devel libexpat-devel libiptcdata-devel \
|
glibmm2-devel gtkmm2-devel libbz2-devel libcanberra-devel libexpat-devel \
|
||||||
libjpeg-devel liblcms2-devel libpng-devel libsigc++2-devel libtiff-devel \
|
libiptcdata-devel libjpeg-devel liblcms2-devel libpng-devel \
|
||||||
zlib-devel
|
libsigc++2-devel libtiff-devel zlib-devel
|
||||||
|
|
||||||
COMPILE:
|
COMPILE:
|
||||||
The Automatic Way:
|
The Automatic Way:
|
||||||
|
@@ -42,9 +42,9 @@ if (WIN32)
|
|||||||
#set_target_properties (rth PROPERTIES LINK_FLAGS "-mwindows")
|
#set_target_properties (rth PROPERTIES LINK_FLAGS "-mwindows")
|
||||||
else (WIN32)
|
else (WIN32)
|
||||||
include_directories (${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS}
|
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}
|
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)
|
endif (WIN32)
|
||||||
# create config.h which defines where data are stored
|
# create config.h which defines where data are stored
|
||||||
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
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}
|
#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})
|
# ${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}
|
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})
|
install (TARGETS rth DESTINATION ${BINDIR})
|
||||||
|
|
||||||
|
@@ -348,7 +348,11 @@ void Options::setDefaults () {
|
|||||||
cutOverlayBrush = std::vector<double> (4);
|
cutOverlayBrush = std::vector<double> (4);
|
||||||
cutOverlayBrush[3] = 0.667; // :-p
|
cutOverlayBrush[3] = 0.667; // :-p
|
||||||
|
|
||||||
|
#if defined(__linux__) || defined(WIN32)
|
||||||
sndEnable=true;
|
sndEnable=true;
|
||||||
|
#else
|
||||||
|
sndEnable=false;
|
||||||
|
#endif
|
||||||
sndLngEditProcDoneSecs=3.0;
|
sndLngEditProcDoneSecs=3.0;
|
||||||
|
|
||||||
// Reminder: 0 = SET mode, 1 = ADD mode
|
// Reminder: 0 = SET mode, 1 = ADD mode
|
||||||
|
@@ -1280,6 +1280,10 @@ void Preferences::fillPreferences () {
|
|||||||
ckbSndEnable->set_active (moptions.sndEnable);
|
ckbSndEnable->set_active (moptions.sndEnable);
|
||||||
txtSndBatchQueueDone->set_text (moptions.sndBatchQueueDone);
|
txtSndBatchQueueDone->set_text (moptions.sndBatchQueueDone);
|
||||||
txtSndLngEditProcDone->set_text (moptions.sndLngEditProcDone);
|
txtSndLngEditProcDone->set_text (moptions.sndLngEditProcDone);
|
||||||
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
|
txtSndBatchQueueDone->set_sensitive (false);
|
||||||
|
txtSndLngEditProcDone->set_sensitive (false);
|
||||||
|
#endif
|
||||||
spbSndLngEditProcDoneSecs->set_value (moptions.sndLngEditProcDoneSecs);
|
spbSndLngEditProcDoneSecs->set_value (moptions.sndLngEditProcDoneSecs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1307,9 +1311,12 @@ void Preferences::autocielabToggled () {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
void Preferences::sndEnableToggled () {
|
void Preferences::sndEnableToggled () {
|
||||||
|
#ifdef WIN32
|
||||||
txtSndBatchQueueDone->set_sensitive(ckbSndEnable->get_active());
|
txtSndBatchQueueDone->set_sensitive(ckbSndEnable->get_active());
|
||||||
txtSndLngEditProcDone->set_sensitive(ckbSndEnable->get_active());
|
txtSndLngEditProcDone->set_sensitive(ckbSndEnable->get_active());
|
||||||
|
#elif defined(__linux__) || defined(WIN32)
|
||||||
spbSndLngEditProcDoneSecs->set_sensitive(ckbSndEnable->get_active());
|
spbSndLngEditProcDoneSecs->set_sensitive(ckbSndEnable->get_active());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Preferences::langAutoDetectToggled () {
|
void Preferences::langAutoDetectToggled () {
|
||||||
|
@@ -26,6 +26,10 @@
|
|||||||
#include <mmsystem.h>
|
#include <mmsystem.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <canberra-gtk.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void SoundManager::init()
|
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").
|
// 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)
|
void SoundManager::playSoundAsync(const Glib::ustring &sound)
|
||||||
{
|
{
|
||||||
if (sound.empty() || !options.sndEnable) return;
|
if (!options.sndEnable) return;
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
if (sound.empty()) return;
|
||||||
DWORD sndParam=SND_ASYNC | SND_NODEFAULT;
|
DWORD sndParam=SND_ASYNC | SND_NODEFAULT;
|
||||||
|
|
||||||
if (sound.find('.')!=Glib::ustring::npos) {
|
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);
|
wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (sound.c_str(), -1, NULL, NULL, NULL);
|
||||||
PlaySoundW(wfilename, NULL, sndParam);
|
PlaySoundW(wfilename, NULL, sndParam);
|
||||||
g_free( wfilename );
|
g_free( wfilename );
|
||||||
#else
|
#elif defined(__linux__)
|
||||||
// TODO: Add code for other OSes here
|
ca_context_play(ca_gtk_context_get(), 0, CA_PROP_EVENT_ID, "complete", NULL);
|
||||||
printf("Sound not supported on your OS (yet)\n");
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user