xW: improve beeping
This adds yet another build dependency, but it's better than the alternatives of handling it in code.
This commit is contained in:
parent
3d345987c3
commit
fcd1b8e011
|
@ -59,6 +59,13 @@ function (icon_for_win32 ico pngs pngs_raw)
|
||||||
COMMENT "Generating Windows program icon" VERBATIM)
|
COMMENT "Generating Windows program icon" VERBATIM)
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
|
# Produce a beep sample
|
||||||
|
find_program (sox_EXECUTABLE sox ${find_program_REQUIRE})
|
||||||
|
add_custom_command (OUTPUT beep.wav
|
||||||
|
COMMAND ${sox_EXECUTABLE} -b 16 -Dr 44100 -n beep.wav
|
||||||
|
synth 0.1 0 25 triangle 800 vol 0.5 fade t 0 -0 0.005 pad 0 0.05
|
||||||
|
COMMENT "Generating a beep sample" VERBATIM)
|
||||||
|
|
||||||
# Rasterize SVG icons
|
# Rasterize SVG icons
|
||||||
set (icon_ico_list)
|
set (icon_ico_list)
|
||||||
foreach (icon xW xW-highlighted)
|
foreach (icon xW xW-highlighted)
|
||||||
|
@ -76,7 +83,8 @@ foreach (icon xW xW-highlighted)
|
||||||
list (APPEND icon_ico_list ${icon_ico})
|
list (APPEND icon_ico_list ${icon_ico})
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
set_property (SOURCE xW.rc APPEND PROPERTY OBJECT_DEPENDS ${icon_ico_list})
|
set_property (SOURCE xW.rc
|
||||||
|
APPEND PROPERTY OBJECT_DEPENDS ${icon_ico_list} beep.wav)
|
||||||
|
|
||||||
# Build the main executable and link it
|
# Build the main executable and link it
|
||||||
set (root "${PROJECT_SOURCE_DIR}/..")
|
set (root "${PROJECT_SOURCE_DIR}/..")
|
||||||
|
@ -97,7 +105,7 @@ add_custom_target (xC-proto DEPENDS ${PROJECT_BINARY_DIR}/xC-proto.cpp)
|
||||||
|
|
||||||
add_executable (xW WIN32 xW.cpp xW.rc xW.manifest ${project_config}
|
add_executable (xW WIN32 xW.cpp xW.rc xW.manifest ${project_config}
|
||||||
${root}/liberty/tools/lxdrgen-cpp-win32.cpp)
|
${root}/liberty/tools/lxdrgen-cpp-win32.cpp)
|
||||||
target_link_libraries (xW comctl32 ws2_32)
|
target_link_libraries (xW comctl32 ws2_32 winmm)
|
||||||
add_dependencies (xW xC-proto)
|
add_dependencies (xW xC-proto)
|
||||||
|
|
||||||
# At least with MinGW, this is a fully independent portable executable
|
# At least with MinGW, this is a fully independent portable executable
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#define IDI_ICON 1
|
#define IDI_ICON 1
|
||||||
#define IDI_HIGHLIGHTED 2
|
#define IDI_HIGHLIGHTED 2
|
||||||
|
#define IDR_BEEP 3
|
||||||
#define IDA_ACCELERATORS 10
|
#define IDA_ACCELERATORS 10
|
||||||
|
|
||||||
// Named after input_add_functions() in xC.
|
// Named after input_add_functions() in xC.
|
||||||
|
|
14
xW/xW.cpp
14
xW/xW.cpp
|
@ -165,6 +165,14 @@ window_get_text(HWND hWnd)
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
beep()
|
||||||
|
{
|
||||||
|
if (!PlaySound(MAKEINTRESOURCE(IDR_BEEP),
|
||||||
|
GetModuleHandle(NULL), SND_ASYNC | SND_RESOURCE))
|
||||||
|
Beep(800, 100);
|
||||||
|
}
|
||||||
|
|
||||||
// --- Networking --------------------------------------------------------------
|
// --- Networking --------------------------------------------------------------
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
@ -785,8 +793,7 @@ relay_process_buffer_line(Buffer &b, Relay::EventData_BufferLine &m)
|
||||||
|
|
||||||
if (line->is_highlight || (!visible && !line->is_unimportant &&
|
if (line->is_highlight || (!visible && !line->is_unimportant &&
|
||||||
b.kind == Relay::BufferKind::PRIVATE_MESSAGE)) {
|
b.kind == Relay::BufferKind::PRIVATE_MESSAGE)) {
|
||||||
// TODO(p): Avoid the PC speaker, which is also unreliable.
|
beep();
|
||||||
Beep(800, 100);
|
|
||||||
|
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
b.highlighted = true;
|
b.highlighted = true;
|
||||||
|
@ -1261,9 +1268,8 @@ input_complete(const InputStamp &state, const std::wstring &error,
|
||||||
SendMessage(g.hwndInput, EM_REPLACESEL, TRUE, (LPARAM) insert.c_str());
|
SendMessage(g.hwndInput, EM_REPLACESEL, TRUE, (LPARAM) insert.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(p): Avoid the PC speaker, which is also unreliable.
|
|
||||||
if (response->completions.size() != 1)
|
if (response->completions.size() != 1)
|
||||||
Beep(800, 100);
|
beep();
|
||||||
|
|
||||||
// TODO(p): Show all completion options.
|
// TODO(p): Show all completion options.
|
||||||
}
|
}
|
||||||
|
|
1
xW/xW.rc
1
xW/xW.rc
|
@ -12,6 +12,7 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "xW.manifest"
|
||||||
|
|
||||||
IDI_ICON ICON "xW.ico"
|
IDI_ICON ICON "xW.ico"
|
||||||
IDI_HIGHLIGHTED ICON "xW-highlighted.ico"
|
IDI_HIGHLIGHTED ICON "xW-highlighted.ico"
|
||||||
|
IDR_BEEP WAVE "beep.wav"
|
||||||
|
|
||||||
IDA_ACCELERATORS ACCELERATORS
|
IDA_ACCELERATORS ACCELERATORS
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
Loading…
Reference in New Issue