[PATCH] winmm: Make mixer UI translatable.

Alex Henrie alexhenrie24 at gmail.com
Tue May 19 00:44:25 CDT 2015


---
 dlls/winmm/resource.h | 22 ++++++++++++++++++++++
 dlls/winmm/waveform.c | 35 +++++++++++------------------------
 dlls/winmm/winmm.rc   |  7 +++++++
 3 files changed, 40 insertions(+), 24 deletions(-)
 create mode 100644 dlls/winmm/resource.h

diff --git a/dlls/winmm/resource.h b/dlls/winmm/resource.h
new file mode 100644
index 0000000..8a7552a
--- /dev/null
+++ b/dlls/winmm/resource.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2015 Alex Henrie
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define IDS_MAPPER_NAME    1000
+#define IDS_VOLUME         1001
+#define IDS_MASTER_VOLUME  1002
+#define IDS_MUTE           1003
diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c
index c010c39..1afef74 100644
--- a/dlls/winmm/waveform.c
+++ b/dlls/winmm/waveform.c
@@ -36,6 +36,7 @@
 #include "winternl.h"
 
 #include "winemm.h"
+#include "resource.h"
 
 #include "ole2.h"
 #include "initguid.h"
@@ -48,12 +49,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(winmm);
 
-/* FIXME: Should be localized */
-static const WCHAR volumeW[] = {'V','o','l','u','m','e',0};
-static const WCHAR mastervolumeW[] = {'M','a','s','t','e','r',' ','V','o','l',
-    'u','m','e',0};
-static const WCHAR muteW[] = {'M','u','t','e',0};
-
 /* HWAVE (and HMIXER) format:
  *
  * XXXX... 1FDD DDDD IIII IIII
@@ -2657,10 +2652,6 @@ UINT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW lpCaps,
     if (lpCaps == NULL)	return MMSYSERR_INVALPARAM;
 
     if(WINMM_IsMapper(uDeviceID)){
-        /* FIXME: Should be localized */
-        static const WCHAR mapper_pnameW[] = {'W','i','n','e',' ','S','o','u',
-            'n','d',' ','M','a','p','p','e','r',0};
-
         mapper_caps.wMid = 0xFF;
         mapper_caps.wPid = 0xFF;
         mapper_caps.vDriverVersion = 0x00010001;
@@ -2669,7 +2660,7 @@ UINT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW lpCaps,
         mapper_caps.dwSupport = WAVECAPS_LRVOLUME | WAVECAPS_VOLUME |
             WAVECAPS_SAMPLEACCURATE;
         mapper_caps.wChannels = 2;
-        lstrcpyW(mapper_caps.szPname, mapper_pnameW);
+        LoadStringW(hWinMM32Instance, IDS_MAPPER_NAME, mapper_caps.szPname, MAXPNAMELEN);
 
         caps = &mapper_caps;
     }else{
@@ -3318,17 +3309,13 @@ UINT WINAPI waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW lpCaps, UINT uSi
         return MMSYSERR_INVALPARAM;
 
     if(WINMM_IsMapper(uDeviceID)){
-        /* FIXME: Should be localized */
-        static const WCHAR mapper_pnameW[] = {'W','i','n','e',' ','S','o','u',
-            'n','d',' ','M','a','p','p','e','r',0};
-
         mapper_caps.wMid = 0xFF;
         mapper_caps.wPid = 0xFF;
         mapper_caps.vDriverVersion = 0x00010001;
         mapper_caps.dwFormats = 0xFFFFFFFF;
         mapper_caps.wReserved1 = 0;
         mapper_caps.wChannels = 2;
-        lstrcpyW(mapper_caps.szPname, mapper_pnameW);
+        LoadStringW(hWinMM32Instance, IDS_MAPPER_NAME, mapper_caps.szPname, MAXPNAMELEN);
 
         caps = &mapper_caps;
     }else{
@@ -4016,8 +4003,8 @@ static UINT WINMM_GetVolumeLineControl(WINMM_MMDevice *mmdevice, DWORD line,
     ctl->dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
     ctl->fdwControl = MIXERCONTROL_CONTROLF_UNIFORM;
     ctl->cMultipleItems = 0;
-    lstrcpyW(ctl->szShortName, volumeW);
-    lstrcpyW(ctl->szName, volumeW);
+    LoadStringW(hWinMM32Instance, IDS_VOLUME, ctl->szShortName, MIXER_SHORT_NAME_CHARS);
+    LoadStringW(hWinMM32Instance, IDS_VOLUME, ctl->szName, MIXER_LONG_NAME_CHARS);
     ctl->Bounds.s1.dwMinimum = 0;
     ctl->Bounds.s1.dwMaximum = 0xFFFF;
     ctl->Metrics.cSteps = 192;
@@ -4032,8 +4019,8 @@ static UINT WINMM_GetMuteLineControl(WINMM_MMDevice *mmdevice, DWORD line,
     ctl->dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
     ctl->fdwControl = MIXERCONTROL_CONTROLF_UNIFORM;
     ctl->cMultipleItems = 0;
-    lstrcpyW(ctl->szShortName, muteW);
-    lstrcpyW(ctl->szName, muteW);
+    LoadStringW(hWinMM32Instance, IDS_MUTE, ctl->szShortName, MIXER_SHORT_NAME_CHARS);
+    LoadStringW(hWinMM32Instance, IDS_MUTE, ctl->szName, MIXER_LONG_NAME_CHARS);
     ctl->Bounds.s1.dwMinimum = 0;
     ctl->Bounds.s1.dwMaximum = 1;
     ctl->Metrics.cSteps = 0;
@@ -4144,8 +4131,8 @@ static UINT WINMM_GetSourceLineInfo(WINMM_MMDevice *mmdevice, UINT mmdev_index,
     info->Target.wPid = ~0;
     info->Target.vDriverVersion = 0;
 
-    lstrcpyW(info->szShortName, volumeW);
-    lstrcpyW(info->szName, mastervolumeW);
+    LoadStringW(hWinMM32Instance, IDS_VOLUME, info->szShortName, MIXER_SHORT_NAME_CHARS);
+    LoadStringW(hWinMM32Instance, IDS_MASTER_VOLUME, info->szName, MIXER_LONG_NAME_CHARS);
 
     if(is_out){
         info->dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
@@ -4177,8 +4164,8 @@ static UINT WINMM_GetDestinationLineInfo(WINMM_MMDevice *mmdevice,
     info->cConnections = 1;
     info->cControls = 2;
 
-    lstrcpyW(info->szShortName, volumeW);
-    lstrcpyW(info->szName, mastervolumeW);
+    LoadStringW(hWinMM32Instance, IDS_VOLUME, info->szShortName, MIXER_SHORT_NAME_CHARS);
+    LoadStringW(hWinMM32Instance, IDS_MASTER_VOLUME, info->szName, MIXER_LONG_NAME_CHARS);
 
     info->Target.dwDeviceID = mmdev_index;
     info->Target.wMid = ~0;
diff --git a/dlls/winmm/winmm.rc b/dlls/winmm/winmm.rc
index e3c9789..78c1de9 100644
--- a/dlls/winmm/winmm.rc
+++ b/dlls/winmm/winmm.rc
@@ -18,6 +18,7 @@
 
 #include "windef.h"
 #include "mmddk.h"
+#include "resource.h"
 
 #pragma makedep po
 
@@ -130,4 +131,10 @@ MCIERR_SEQ_PORT_NONEXISTENT, 	"The specified MIDI device is not installed on the
 MCIERR_SEQ_PORTUNSPECIFIED, 	"The system doesn't have a current MIDI port specified."
 MCIERR_SEQ_TIMER, 		"All multimedia timers are being used by other applications. Quit one of these applications; then, try again."
 
+/* mixer UI */
+IDS_MAPPER_NAME,		"Wine Sound Mapper"
+IDS_VOLUME,			"Volume"
+IDS_MASTER_VOLUME,		"Master Volume"
+IDS_MUTE,			"Mute"
+
 END
-- 
2.4.1




More information about the wine-patches mailing list