[WINECFG] use sound tree view for driver selection
Robert Reif
reif at earthlink.net
Thu Dec 15 19:43:30 CST 2005
Changelog:
- Move driver selection and configuration into tree view.
- Only show loadable drivers.
Sorry about the size of this patch but it was necessary to update
all the resource files. Driver tree view description needs translation.
-------------- next part --------------
Index: programs/winecfg/.cvsignore
===================================================================
RCS file: /home/wine/wine/programs/winecfg/.cvsignore,v
retrieving revision 1.5
diff -p -u -r1.5 .cvsignore
--- programs/winecfg/.cvsignore 28 Nov 2005 10:58:33 -0000 1.5
+++ programs/winecfg/.cvsignore 16 Dec 2005 01:27:03 -0000
@@ -1,4 +1,5 @@
Makefile
+idb_checkbox.bmp
idb_wine.bmp
winecfg
winecfg.res
Index: programs/winecfg/Bg.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Bg.rc,v
retrieving revision 1.3
diff -p -u -r1.3 Bg.rc
--- programs/winecfg/Bg.rc 27 Oct 2005 11:24:02 -0000 1.3
+++ programs/winecfg/Bg.rc 16 Dec 2005 01:27:03 -0000
@@ -22,6 +22,14 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
@@ -154,17 +162,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Çâóêîâ äðàéâåð: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Îòêðèâàíå",IDC_AUDIO_AUTODETECT,170,20,69,14
- PUSHBUTTON "Íàñòðîéêà",IDC_AUDIO_CONFIGURE,170,40,69,14
- PUSHBUTTON "Êîíòðîëåí ïàíåë",IDC_AUDIO_CONTROL_PANEL,170,60,69,14
-
- GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
-
- LTEXT "Õàðäóåðíî óñêîðåíèå: ",IDC_STATIC,15,85,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,83,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Ñîôòóåðíà åìóëàöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,100,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Çâóêîâ äðàéâåð ",IDC_STATIC,15,20,227,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Êîíòðîëåí ïàíåë",IDC_AUDIO_CONTROL_PANEL,170,50,69,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
+ LTEXT "Õàðäóåðíî óñêîðåíèå: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Ñîôòóåðíà åìóëàöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
Index: programs/winecfg/De.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/De.rc,v
retrieving revision 1.16
diff -p -u -r1.16 De.rc
--- programs/winecfg/De.rc 8 Dec 2005 13:09:42 -0000 1.16
+++ programs/winecfg/De.rc 16 Dec 2005 01:27:04 -0000
@@ -22,6 +22,14 @@
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
@@ -151,16 +159,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Audio Treiber: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Automatisch",IDC_AUDIO_AUTODETECT,170,20,59,14
- PUSHBUTTON "Konfigurieren",IDC_AUDIO_CONFIGURE,170,40,59,14
- PUSHBUTTON "Kontrollschirm",IDC_AUDIO_CONTROL_PANEL,170,60,59,14
- CONTROL "Geräte",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,40,150,160
- GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
- LTEXT "Hardware Beschleunigung: ", IDC_STATIC,15,215,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Treiber Emulation",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Audio Treiber: ",IDC_STATIC,15,20,227,30
+ CONTROL "Geräte",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,50,140,140
+ PUSHBUTTON "Kontrollschirm",IDC_AUDIO_CONTROL_PANEL,170,50,59,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Hardware Beschleunigung: ", IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Treiber Emulation",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/En.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/En.rc,v
retrieving revision 1.55
diff -p -u -r1.55 En.rc
--- programs/winecfg/En.rc 7 Dec 2005 12:39:21 -0000 1.55
+++ programs/winecfg/En.rc 16 Dec 2005 01:27:04 -0000
@@ -24,6 +24,14 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
@@ -153,16 +161,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Audio driver: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Autodetect",IDC_AUDIO_AUTODETECT,170,20,59,14
- PUSHBUTTON "Configure",IDC_AUDIO_CONFIGURE,170,40,59,14
- PUSHBUTTON "Control Panel",IDC_AUDIO_CONTROL_PANEL,170,60,59,14
- CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,40,150,160
- GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
- LTEXT "Hardware Acceleration: ",IDC_STATIC,15,215,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Driver Emulation",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Select a sound driver by checking the box of the desired driver. Disable sound by not selecting any driver. Selection of multiple drivers is not recomended. Configure a driver by left clicking on it.",IDC_STATIC,15,20,227,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Control Panel",IDC_AUDIO_CONTROL_PANEL,170,50,59,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Hardware Acceleration: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Driver Emulation",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Fi.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Fi.rc,v
retrieving revision 1.3
diff -p -u -r1.3 Fi.rc
--- programs/winecfg/Fi.rc 27 Oct 2005 11:24:02 -0000 1.3
+++ programs/winecfg/Fi.rc 16 Dec 2005 01:27:04 -0000
@@ -22,6 +22,14 @@
LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
@@ -150,17 +158,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Ääniajuri: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "&Tunnista automaattisesti",IDC_AUDIO_AUTODETECT,170,20,79,14
- PUSHBUTTON "&Määritä",IDC_AUDIO_CONFIGURE,170,40,79,14
- PUSHBUTTON "&Hallintapaneeli",IDC_AUDIO_CONTROL_PANEL,170,60,79,14
-
- GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
-
- LTEXT "Laitteistopohjainen kiihdytys:",IDC_STATIC,15,85,110,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,125,83,100,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Ajurin &emulointi",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,100,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Ääniajuri: ",IDC_STATIC,15,20,227,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "&Hallintapaneeli",IDC_AUDIO_CONTROL_PANEL,170,50,79,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Laitteistopohjainen kiihdytys:",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Ajurin &emulointi",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Fr.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Fr.rc,v
retrieving revision 1.12
diff -p -u -r1.12 Fr.rc
--- programs/winecfg/Fr.rc 27 Oct 2005 11:24:02 -0000 1.12
+++ programs/winecfg/Fr.rc 16 Dec 2005 01:27:04 -0000
@@ -22,6 +22,14 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 8, "MS Shell Dlg"
@@ -152,17 +160,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Pilote audio: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Autodétection",IDC_AUDIO_AUTODETECT,170,20,85,14
- PUSHBUTTON "Configurer",IDC_AUDIO_CONFIGURE,170,40,85,14
- PUSHBUTTON "Panneau de configuration",IDC_AUDIO_CONTROL_PANEL,170,60,85,14
-
- GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
-
- LTEXT "Accélération matérielle: ",IDC_STATIC,15,85,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,83,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Emulation pilote",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,100,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Pilote audio: ",IDC_STATIC,15,20,227,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Panneau de configuration",IDC_AUDIO_CONTROL_PANEL,170,50,85,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Accélération matérielle: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Emulation pilote",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Ja.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Ja.rc,v
retrieving revision 1.5
diff -p -u -r1.5 Ja.rc
--- programs/winecfg/Ja.rc 27 Oct 2005 11:24:02 -0000 1.5
+++ programs/winecfg/Ja.rc 16 Dec 2005 01:27:05 -0000
@@ -24,6 +24,14 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
+
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
FONT 9, "MS UI Gothic"
@@ -153,18 +161,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 9, "MS UI Gothic"
BEGIN
- LTEXT "I[fBIhCo: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "©®o",IDC_AUDIO_AUTODETECT,170,20,49,14
- PUSHBUTTON "Ýè",IDC_AUDIO_CONFIGURE,170,40,49,14
- PUSHBUTTON "Rg[pl",IDC_AUDIO_CONTROL_PANEL,170,60,49,14
-
- GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
-
- LTEXT "n[hEFAEANZ[V: ",IDC_STATIC,15,85,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,83,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "hCoEG~
[V",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,100,230,10
-
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "I[fBIhCo: ",IDC_STATIC,10,20,277,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Rg[pl",IDC_AUDIO_CONTROL_PANEL,170,50,49,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "n[hEFAEANZ[V: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "hCoEG~
[V",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Ko.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Ko.rc,v
retrieving revision 1.5
diff -p -u -r1.5 Ko.rc
--- programs/winecfg/Ko.rc 14 Dec 2005 11:25:05 -0000 1.5
+++ programs/winecfg/Ko.rc 16 Dec 2005 01:27:05 -0000
@@ -24,6 +24,14 @@
*/
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
+
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
@@ -154,16 +162,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "¿Àµð¿À µå¶óÀ̹ö: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "ÀÚµ¿°Ë»ö",IDC_AUDIO_AUTODETECT,170,20,59,14
- PUSHBUTTON "¼³Á¤",IDC_AUDIO_CONFIGURE,170,40,59,14
- PUSHBUTTON "Á¦¾îÆÇ",IDC_AUDIO_CONTROL_PANEL,170,60,59,14
- CONTROL "ÀåÄ¡",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,40,150,160
- GROUPBOX "DirectSound ",IDC_STATIC,8,205,244,120
- LTEXT "Çϵå¿þ¾î °¡¼Ó: ",IDC_STATIC,15,215,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "µå¶óÀ̹ö ¾Ö¹Ä",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "¿Àµð¿À µå¶óÀ̹ö: ",IDC_STATIC,10,20,227,30
+ CONTROL "ÀåÄ¡",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,50,140,140
+ PUSHBUTTON "Á¦¾îÆÇ",IDC_AUDIO_CONTROL_PANEL,170,50,59,14
+ GROUPBOX "DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Çϵå¿þ¾î °¡¼Ó: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "µå¶óÀ̹ö ¾Ö¹Ä",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Makefile.in
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Makefile.in,v
retrieving revision 1.15
diff -p -u -r1.15 Makefile.in
--- programs/winecfg/Makefile.in 24 Aug 2005 10:59:40 -0000 1.15
+++ programs/winecfg/Makefile.in 16 Dec 2005 01:27:05 -0000
@@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = winecfg.exe
APPMODE = -mwindows
-IMPORTS = comdlg32 comctl32 shell32 ole32 winmm shlwapi uxtheme user32 advapi32 kernel32
+IMPORTS = comdlg32 comctl32 shell32 ole32 winmm shlwapi uxtheme user32 gdi32 advapi32 kernel32
C_SRCS = \
appdefaults.c \
@@ -21,7 +21,7 @@ C_SRCS = \
RC_SRCS = winecfg.rc
RC_BINSRC = winecfg.rc
-RC_BINARIES = idb_wine.bmp
+RC_BINARIES = idb_wine.bmp idb_checkbox.bmp
@MAKE_PROG_RULES@
Index: programs/winecfg/Nl.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Nl.rc,v
retrieving revision 1.13
diff -p -u -r1.13 Nl.rc
--- programs/winecfg/Nl.rc 12 Dec 2005 12:46:55 -0000 1.13
+++ programs/winecfg/Nl.rc 16 Dec 2005 01:27:05 -0000
@@ -22,6 +22,14 @@
*/
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
+
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
@@ -151,16 +159,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Geluidsbesturing: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Automatisch detecteren",IDC_AUDIO_AUTODETECT,170,18,79,14
- PUSHBUTTON "Configureer",IDC_AUDIO_CONFIGURE,170,38,79,14
- PUSHBUTTON "Configuratiescherm",IDC_AUDIO_CONTROL_PANEL,170,58,79,14
- CONTROL "Apparaten",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,40,150,160
- GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
- LTEXT "Hardwareversnelling: ",IDC_STATIC,15,215,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Stuurprogramma emulatie",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Geluidsbesturing: ",IDC_STATIC,15,20,227,30
+ CONTROL "Apparaten",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,50,150,160
+ PUSHBUTTON "Configuratiescherm",IDC_AUDIO_CONTROL_PANEL,170,50,79,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Hardwareversnelling: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Stuurprogramma emulatie",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/No.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/No.rc,v
retrieving revision 1.6
diff -p -u -r1.6 No.rc
--- programs/winecfg/No.rc 9 Dec 2005 12:16:58 -0000 1.6
+++ programs/winecfg/No.rc 16 Dec 2005 01:27:05 -0000
@@ -21,6 +21,14 @@
*/
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
+
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
@@ -150,16 +158,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Lyddriver: ",IDC_STATIC,10,20,60,8
- COMBOBOX IDC_AUDIO_DRIVER,70,18,85,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Automatisk",IDC_AUDIO_AUTODETECT,170,20,59,14
- PUSHBUTTON "Oppsett",IDC_AUDIO_CONFIGURE,170,40,59,14
- PUSHBUTTON "Kontrollpanel",IDC_AUDIO_CONTROL_PANEL,170,60,59,14
- CONTROL "Enheter",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,10,40,150,160
- GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
- LTEXT "Maskinvareakselerasjon: ",IDC_STATIC,15,215,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Driveremulering",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Lyddriver: ",IDC_STATIC,15,20,227,30
+ CONTROL "Enheter",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Kontrollpanel",IDC_AUDIO_CONTROL_PANEL,170,50,59,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Maskinvareakselerasjon: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Driveremulering",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/Ru.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/Ru.rc,v
retrieving revision 1.17
diff -p -u -r1.17 Ru.rc
--- programs/winecfg/Ru.rc 27 Oct 2005 11:24:02 -0000 1.17
+++ programs/winecfg/Ru.rc 16 Dec 2005 01:27:05 -0000
@@ -21,6 +21,14 @@
*/
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+IDR_WINECFG MENU DISCARDABLE
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "Configure", IDC_AUDIO_CONFIGURE
+ END
+END
IDD_ABOUTCFG DIALOGEX 0, 0, 260, 270
STYLE WS_CHILD
@@ -154,18 +162,14 @@ IDD_AUDIOCFG DIALOG DISCARDABLE 0, 0, 2
STYLE WS_CHILD | WS_DISABLED
FONT 8, "MS Shell Dlg"
BEGIN
- LTEXT "Çâóêîâîé äðàéâåð: ",IDC_STATIC,40,20,90,8
- COMBOBOX IDC_AUDIO_DRIVER,40,40,75,105,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Îïðåäåëèòü àâòîìàòè÷åñêè",IDC_AUDIO_AUTODETECT,150,20,100,14
- PUSHBUTTON "Íàñòðîèòü",IDC_AUDIO_CONFIGURE,170,40,80,14
- PUSHBUTTON "Ïàíåëü óïðàâëåíèÿ",IDC_AUDIO_CONTROL_PANEL,170,60,80,14
-
- GROUPBOX " DirectSound ",IDC_STATIC,8,75,244,120
-
- LTEXT "Àïïàðàòíîå óñêîðåíèå: ",IDC_STATIC,15,85,90,10
- COMBOBOX IDC_DSOUND_HW_ACCEL,100,83,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Ïðîãðàììíàÿ ýìóëÿöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,100,230,10
-
+ GROUPBOX " Driver Selection ",IDC_STATIC,8,4,244,195
+ LTEXT "Çâóêîâîé äðàéâåð: ",IDC_STATIC,15,20,227,30
+ CONTROL "Devices",IDC_AUDIO_TREE,"SysTreeView32",WS_BORDER | WS_TABSTOP,15,50,140,140
+ PUSHBUTTON "Ïàíåëü óïðàâëåíèÿ",IDC_AUDIO_CONTROL_PANEL,170,50,80,14
+ GROUPBOX " DirectSound ",IDC_STATIC,8,205,244,60
+ LTEXT "Àïïàðàòíîå óñêîðåíèå: ",IDC_STATIC,15,215,90,10
+ COMBOBOX IDC_DSOUND_HW_ACCEL,100,213,150,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Ïðîãðàììíàÿ ýìóëÿöèÿ",IDC_DSOUND_DRV_EMUL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_APPEARANCE DIALOG DISCARDABLE 0, 0, 260, 250
Index: programs/winecfg/audio.c
===================================================================
RCS file: /home/wine/wine/programs/winecfg/audio.c,v
retrieving revision 1.19
diff -p -u -r1.19 audio.c
--- programs/winecfg/audio.c 13 Dec 2005 11:01:15 -0000 1.19
+++ programs/winecfg/audio.c 16 Dec 2005 01:27:06 -0000
@@ -40,6 +40,7 @@
#include <shlguid.h>
#include <shlwapi.h>
#include <shlobj.h>
+#include <windowsx.h>
#include <mmsystem.h>
#include <mmreg.h>
#include <mmsystem.h>
@@ -50,6 +51,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(winecfg);
+#define DRIVER_MASK 0x80000000
+#define DEVICE_MASK 0x40000000
+
typedef DWORD (WINAPI * MessagePtr)(UINT, UINT, DWORD, DWORD, DWORD);
static const char* DSound_HW_Accels[] = {
@@ -60,68 +64,112 @@ static const char* DSound_HW_Accels[] =
NULL
};
-/* Select the correct entry in the combobox based on drivername */
-static void selectAudioDriver(HWND hDlg, const char *drivername)
+/* list of available drivers */
+static AUDIO_DRIVER * loadedAudioDrv;
+
+/* local copy of registry setting */
+static char curAudioDriver[1024];
+
+/* driver index to configure */
+static int toConfigure;
+
+/* display a driver specific configuration dialog */
+static void configureAudioDriver(HWND hDlg)
{
- int i;
- const AUDIO_DRIVER *pAudioDrv = NULL;
+ const AUDIO_DRIVER *pAudioDrv = &loadedAudioDrv[toConfigure];
- if ((pAudioDrv = getAudioDrivers()))
- {
- for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++)
+ if (strlen(pAudioDrv->szDriver) != 0)
{
- if (!strcmp (pAudioDrv->szDriver, drivername))
- {
- set_reg_key(config_key, "Drivers", "Audio", (char *) pAudioDrv->szDriver);
- SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM) hDlg, 0); /* enable apply button */
- SendDlgItemMessage(hDlg, IDC_AUDIO_DRIVER, CB_SETCURSEL,
- (WPARAM) i, 0);
- }
+ HDRVR hdrvr;
+ char wine_driver[MAX_NAME_LENGTH + 8];
+ sprintf(wine_driver, "wine%s.drv", pAudioDrv->szDriver);
+ hdrvr = OpenDriverA(wine_driver, 0, 0);
+ if (hdrvr != 0)
+ {
+ if (SendDriverMessage(hdrvr, DRV_QUERYCONFIGURE, 0, 0) != 0)
+ {
+ DRVCONFIGINFO dci;
+ LONG lRes;
+ dci.dwDCISize = sizeof (dci);
+ dci.lpszDCISectionName = NULL;
+ dci.lpszDCIAliasName = NULL;
+ lRes = SendDriverMessage(hdrvr, DRV_CONFIGURE, 0, (LONG)&dci);
+ }
+ CloseDriver(hdrvr, 0, 0);
+ }
+ else
+ {
+ char str[1024];
+ sprintf(str, "Couldn't open %s!", wine_driver);
+ MessageBox(hDlg, str, "Fixme", MB_OK | MB_ICONERROR);
+ }
+ }
+}
+
+/* is driver in local copy of driver registry string */
+static BOOL isDriverSet(const char * driver)
+{
+ WINE_TRACE("driver = %s, curAudioDriver = %s\n", driver, curAudioDriver);
+
+ if (strstr(curAudioDriver, driver))
+ return TRUE;
+
+ return FALSE;
+}
+
+/* add driver to local copy of driver registry string */
+static void addDriver(const char * driver)
+{
+ if (!isDriverSet(driver))
+ {
+ if (strlen(curAudioDriver))
+ strcat(curAudioDriver, ",");
+ strcat(curAudioDriver, driver);
}
- }
}
-static void configureAudioDriver(HWND hDlg, const char *drivername)
+/* remove driver from local copy of driver registry string */
+static void removeDriver(const char * driver)
{
- int i;
- const AUDIO_DRIVER *pAudioDrv = NULL;
+ char before[32], after[32], * start;
+
+ strcpy(before, ",");
+ strcat(before, driver);
+ strcpy(after, driver);
+ strcat(after, ",");
- if ((pAudioDrv = getAudioDrivers()))
- {
- for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++)
+ if ((start = strstr(curAudioDriver, after)))
{
- if (!strcmp (pAudioDrv->szDriver, drivername))
- {
- if (strlen(pAudioDrv->szDriver) != 0)
+ int len = strlen(after);
+ char * end = curAudioDriver + strlen(curAudioDriver);
+ int i, count = end - start + len;
+ for (i = 0; i < count; i++)
{
- HDRVR hdrvr;
- char wine_driver[MAX_NAME_LENGTH + 8];
- sprintf(wine_driver, "wine%s.drv", pAudioDrv->szDriver);
- hdrvr = OpenDriverA(wine_driver, 0, 0);
- if (hdrvr != 0)
- {
- if (SendDriverMessage(hdrvr, DRV_QUERYCONFIGURE, 0, 0) != 0)
- {
- DRVCONFIGINFO dci;
- LONG lRes;
- dci.dwDCISize = sizeof (dci);
- dci.lpszDCISectionName = NULL;
- dci.lpszDCIAliasName = NULL;
- lRes = SendDriverMessage(hdrvr, DRV_CONFIGURE, 0, (LONG)&dci);
- }
- CloseDriver(hdrvr, 0, 0);
- }
- else
- {
- char str[1024];
- sprintf(str, "Couldn't open %s!", wine_driver);
- MessageBox(NULL, str, "Fixme", MB_OK | MB_ICONERROR);
- }
- }
- break;
- }
+ if (start + len >= end)
+ *start = 0;
+ else
+ *start = start[len];
+ start++;
+ }
+ }
+ else if ((start = strstr(curAudioDriver, before)))
+ {
+ int len = strlen(before);
+ char * end = curAudioDriver + strlen(curAudioDriver);
+ int i, count = end - start + len;
+ for (i = 0; i < count; i++)
+ {
+ if (start + len >= end)
+ *start = 0;
+ else
+ *start = start[len];
+ start++;
+ }
+ }
+ else if (strcmp(curAudioDriver, driver) == 0)
+ {
+ strcpy(curAudioDriver, "");
}
- }
}
static void initAudioDeviceTree(HWND hDlg)
@@ -131,45 +179,42 @@ static void initAudioDeviceTree(HWND hDl
TVINSERTSTRUCT insert;
HTREEITEM root, driver[10];
HWND tree = NULL;
+ HIMAGELIST hImageList;
+ HBITMAP hBitMap;
tree = GetDlgItem(hDlg, IDC_AUDIO_TREE);
if (!tree)
return;
+ /* set tree view style */
SetWindowLong(tree, GWL_STYLE, GetWindowLong(tree, GWL_STYLE) | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT);
+ /* state checkbox */
+ hImageList = ImageList_Create(16, 16, FALSE, 3, 0);
+ hBitMap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_CHECKBOX));
+ ImageList_Add(hImageList, hBitMap, NULL);
+ DeleteObject(hBitMap);
+ TreeView_SetImageList(tree, hImageList, TVSIL_STATE);
+
+ /* root item */
insert.hParent = TVI_ROOT;
insert.hInsertAfter = TVI_LAST;
insert.u.item.mask = TVIF_TEXT | TVIF_CHILDREN;
insert.u.item.pszText = "Sound Drivers";
insert.u.item.cChildren = 1;
-
root = (HTREEITEM)SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
- pAudioDrv = getAudioDrivers();
-
- for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++) {
+ /* iterate over list of loaded drivers */
+ for (pAudioDrv = loadedAudioDrv, i = 0; *pAudioDrv->szName; i++, pAudioDrv++) {
HDRVR hdrv;
char name[MAX_PATH];
char text[MAX_PATH];
- if (strlen(pAudioDrv->szDriver) == 0)
- continue;
-
sprintf(name, "wine%s.drv", pAudioDrv->szDriver);
sprintf(text, "%s Driver", pAudioDrv->szName);
- hdrv = OpenDriverA(name, 0, 0);
- if (hdrv == 0) /* no driver loaded */
- {
- insert.hParent = root;
- insert.u.item.mask = TVIF_TEXT;
- insert.u.item.pszText = text;
-
- driver[i] = (HTREEITEM)SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
- }
- else
+ if ((hdrv = OpenDriverA(name, 0, 0)))
{
HMODULE lib;
if ((lib = GetDriverModuleHandle(hdrv)))
@@ -203,8 +248,10 @@ static void initAudioDeviceTree(HWND hDl
if (num_wod == 0 && num_wid == 0 && num_mod == 0 && num_mid == 0 && num_aux == 0 && num_mxd == 0)
{
insert.hParent = root;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_PARAM;
insert.u.item.pszText = text;
+ insert.u.item.stateMask = TVIS_STATEIMAGEMASK;
+ insert.u.item.lParam = i + DRIVER_MASK;
driver[i] = (HTREEITEM)SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -213,9 +260,16 @@ static void initAudioDeviceTree(HWND hDl
HTREEITEM type;
insert.hParent = root;
- insert.u.item.mask = TVIF_TEXT | TVIF_CHILDREN;
+ insert.u.item.mask = TVIF_TEXT | TVIF_CHILDREN | TVIF_STATE | TVIF_PARAM;
insert.u.item.pszText = text;
insert.u.item.cChildren = 1;
+ insert.u.item.stateMask = TVIS_STATEIMAGEMASK;
+ insert.u.item.lParam = i + DRIVER_MASK;
+
+ if (isDriverSet(pAudioDrv->szDriver))
+ insert.u.item.state = INDEXTOSTATEIMAGEMASK(2);
+ else
+ insert.u.item.state = INDEXTOSTATEIMAGEMASK(1);
driver[i] = (HTREEITEM)SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
@@ -233,12 +287,13 @@ static void initAudioDeviceTree(HWND hDl
WAVEOUTCAPSW caps;
char szPname[MAXPNAMELEN];
- wodMessagePtr(j, WODM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ wodMessagePtr(j, WODM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -258,12 +313,13 @@ static void initAudioDeviceTree(HWND hDl
WAVEINCAPSW caps;
char szPname[MAXPNAMELEN];
- widMessagePtr(j, WIDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ widMessagePtr(j, WIDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -283,12 +339,13 @@ static void initAudioDeviceTree(HWND hDl
MIDIOUTCAPSW caps;
char szPname[MAXPNAMELEN];
- modMessagePtr(j, MODM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ modMessagePtr(j, MODM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -308,12 +365,13 @@ static void initAudioDeviceTree(HWND hDl
MIDIINCAPSW caps;
char szPname[MAXPNAMELEN];
- midMessagePtr(j, MIDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ midMessagePtr(j, MIDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -333,12 +391,13 @@ static void initAudioDeviceTree(HWND hDl
AUXCAPSW caps;
char szPname[MAXPNAMELEN];
- auxMessagePtr(j, AUXDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ auxMessagePtr(j, AUXDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -358,12 +417,13 @@ static void initAudioDeviceTree(HWND hDl
MIXERCAPSW caps;
char szPname[MAXPNAMELEN];
- mxdMessagePtr(j, MXDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
+ mxdMessagePtr(j, MXDM_GETDEVCAPS, 0, (DWORD)&caps, sizeof(caps));
WideCharToMultiByte(CP_ACP, 0, caps.szPname, -1, szPname, MAXPNAMELEN, 0, 0);
insert.hParent = type;
- insert.u.item.mask = TVIF_TEXT;
+ insert.u.item.mask = TVIF_TEXT | TVIF_PARAM;
insert.u.item.pszText = szPname;
+ insert.u.item.lParam = j + DEVICE_MASK;
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_INSERTITEM, 0, (LPARAM)&insert);
}
@@ -379,31 +439,108 @@ static void initAudioDeviceTree(HWND hDl
SendDlgItemMessage(hDlg, IDC_AUDIO_TREE, TVM_EXPAND, TVE_EXPAND, (LPARAM)driver[j]);
}
-static void initAudioDlg (HWND hDlg)
+/* find all drivers that can be loaded */
+static void findAudioDrivers(void)
{
- char *curAudioDriver = get_reg_key(config_key, "Drivers", "Audio", "alsa");
+ int numFound = 0;
const AUDIO_DRIVER *pAudioDrv = NULL;
+
+ /* delete an existing list */
+ if (loadedAudioDrv)
+ {
+ HeapFree(GetProcessHeap(), 0, loadedAudioDrv);
+ loadedAudioDrv = 0;
+ }
+
+ for (pAudioDrv = getAudioDrivers(); *pAudioDrv->szName; pAudioDrv++)
+ {
+ if (strlen(pAudioDrv->szDriver))
+ {
+ HDRVR hdrv;
+ char driver[MAX_PATH];
+
+ sprintf(driver, "wine%s.drv", pAudioDrv->szDriver);
+
+ if ((hdrv = OpenDriverA(driver, 0, 0)))
+ {
+ CloseDriver(hdrv, 0, 0);
+
+ if (loadedAudioDrv)
+ loadedAudioDrv = HeapReAlloc(GetProcessHeap(), 0, loadedAudioDrv, (numFound + 1) * sizeof(AUDIO_DRIVER));
+ else
+ loadedAudioDrv = HeapAlloc(GetProcessHeap(), 0, sizeof(AUDIO_DRIVER));
+
+ CopyMemory(&loadedAudioDrv[numFound], pAudioDrv, sizeof(AUDIO_DRIVER));
+ numFound++;
+ }
+ }
+ }
+
+ /* terminate list with empty driver */
+ loadedAudioDrv = HeapReAlloc(GetProcessHeap(), 0, loadedAudioDrv, (numFound + 1) * sizeof(AUDIO_DRIVER));
+ CopyMemory(&loadedAudioDrv[numFound], pAudioDrv, sizeof(AUDIO_DRIVER));
+}
+
+/* check local copy of registry string for unloadable drivers */
+static void checkRegistrySetting(HWND hDlg)
+{
+ const AUDIO_DRIVER *pAudioDrv;
+ char * token, * tokens = strdup(curAudioDriver);
+
+start_over:
+ token = strtok(tokens, ",");
+ while (token != NULL)
+ {
+ BOOL found = FALSE;
+ for (pAudioDrv = loadedAudioDrv; *pAudioDrv->szName; pAudioDrv++)
+ {
+ if (strcmp(token, pAudioDrv->szDriver) == 0)
+ {
+ found = TRUE;
+ break;
+ }
+ }
+ if (found == FALSE)
+ {
+ char str[1024];
+ sprintf(str, "Found driver in registry that in not available!\n\nRemove \"%s\" from registry?", token);
+ if (MessageBox(hDlg, str, "WARNING", MB_ICONWARNING | MB_YESNOCANCEL) == IDYES)
+ {
+ removeDriver(token);
+ strcpy(tokens, curAudioDriver);
+ goto start_over;
+ }
+ }
+ token = strtok(NULL, ",");
+ }
+ free(tokens);
+}
+
+static void initAudioDlg (HWND hDlg)
+{
int i;
char* buf = NULL;
WINE_TRACE("\n");
- pAudioDrv = getAudioDrivers ();
- for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++) {
- SendDlgItemMessage (hDlg, IDC_AUDIO_DRIVER, CB_ADDSTRING,
- 0, (LPARAM) pAudioDrv->szName);
- if (!strcmp (pAudioDrv->szDriver, curAudioDriver)) {
- SendDlgItemMessage(hDlg, IDC_AUDIO_DRIVER, CB_SETCURSEL, i, 0);
- }
- }
+ /* make a local copy of the current registry setting */
+ strcpy(curAudioDriver, get_reg_key(config_key, "Drivers", "Audio", ""));
+
+ WINE_TRACE("curAudioDriver = %s\n", curAudioDriver);
+
+ /* make a list of all drivers that can be loaded */
+ findAudioDrivers();
+
+ /* check for drivers that can't be loaded */
+ checkRegistrySetting(hDlg);
initAudioDeviceTree(hDlg);
SendDlgItemMessage(hDlg, IDC_DSOUND_HW_ACCEL, CB_RESETCONTENT, 0, 0);
for (i = 0; NULL != DSound_HW_Accels[i]; ++i) {
SendDlgItemMessage(hDlg, IDC_DSOUND_HW_ACCEL, CB_ADDSTRING, 0, (LPARAM) DSound_HW_Accels[i]);
- }
- buf = get_reg_key(config_key, keypath("DirectSound"), "HardwareAcceleration", "Full");
+ }
+ buf = get_reg_key(config_key, keypath("DirectSound"), "HardwareAcceleration", "Full");
for (i = 0; NULL != DSound_HW_Accels[i]; ++i) {
if (strcmp(buf, DSound_HW_Accels[i]) == 0) {
SendDlgItemMessage(hDlg, IDC_DSOUND_HW_ACCEL, CB_SETCURSEL, i, 0);
@@ -421,84 +558,16 @@ static void initAudioDlg (HWND hDlg)
else
CheckDlgButton(hDlg, IDC_DSOUND_DRV_EMUL, BST_UNCHECKED);
HeapFree(GetProcessHeap(), 0, buf);
-
-}
-
-static const char *audioAutoDetect(void)
-{
- const char *driversFound[10];
- const char *name[10];
- int numFound = 0;
- const AUDIO_DRIVER *pAudioDrv = NULL;
- int i;
-
- pAudioDrv = getAudioDrivers();
-
- for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++)
- {
- if (strlen(pAudioDrv->szDriver))
- {
- HDRVR hdrv;
- char driver[MAX_PATH];
-
- sprintf(driver, "wine%s.drv", pAudioDrv->szDriver);
-
- if ((hdrv = OpenDriverA(driver, 0, 0)))
- {
- CloseDriver(hdrv, 0, 0);
- driversFound[numFound] = pAudioDrv->szDriver;
- name[numFound] = pAudioDrv->szName;
- numFound++;
- }
- }
- }
-
- if(numFound == 0)
- {
- MessageBox(NULL, "Could not detect any audio devices/servers", "Failed", MB_OK);
- return "";
- }
- else
- {
- /* TODO: possibly smarter handling of multiple drivers? */
- char text[128];
- sprintf(text, "Found ");
- for(i=0;i<numFound;i++)
- {
- strcat(text, name[i]);
- if(i != numFound-1)
- strcat(text,", ");
- }
- MessageBox(NULL, (LPCTSTR)text, "Successful", MB_OK);
- return driversFound[0];
- }
}
-
INT_PTR CALLBACK
AudioDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg) {
case WM_COMMAND:
switch (LOWORD(wParam)) {
- case IDC_AUDIO_AUTODETECT:
- selectAudioDriver(hDlg, audioAutoDetect());
- break;
- case IDC_AUDIO_DRIVER:
- if ((HIWORD(wParam) == CBN_SELCHANGE) ||
- (HIWORD(wParam) == CBN_SELCHANGE))
- {
- const AUDIO_DRIVER *pAudioDrv = getAudioDrivers();
- int selected_driver = SendDlgItemMessage(hDlg, IDC_AUDIO_DRIVER, CB_GETCURSEL, 0, 0);
- selectAudioDriver(hDlg, (char*)pAudioDrv[selected_driver].szDriver);
- }
- break;
case IDC_AUDIO_CONFIGURE:
- {
- const AUDIO_DRIVER *pAudioDrv = getAudioDrivers();
- int selected_driver = SendDlgItemMessage(hDlg, IDC_AUDIO_DRIVER, CB_GETCURSEL, 0, 0);
- configureAudioDriver(hDlg, (char*)pAudioDrv[selected_driver].szDriver);
- }
+ configureAudioDriver(hDlg);
break;
case IDC_AUDIO_CONTROL_PANEL:
MessageBox(NULL, "Launching audio control panel not implemented yet!", "Fixme", MB_OK | MB_ICONERROR);
@@ -508,12 +577,12 @@ AudioDlgProc (HWND hDlg, UINT uMsg, WPAR
int selected_dsound_accel;
SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
selected_dsound_accel = SendDlgItemMessage(hDlg, IDC_DSOUND_HW_ACCEL, CB_GETCURSEL, 0, 0);
- set_reg_key(config_key, keypath("DirectSound"), "HardwareAcceleration", DSound_HW_Accels[selected_dsound_accel]);
+ set_reg_key(config_key, keypath("DirectSound"), "HardwareAcceleration", DSound_HW_Accels[selected_dsound_accel]);
}
break;
case IDC_DSOUND_DRV_EMUL:
if (HIWORD(wParam) == BN_CLICKED) {
- SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
if (IsDlgButtonChecked(hDlg, IDC_DSOUND_DRV_EMUL) == BST_CHECKED)
set_reg_key(config_key, keypath("DirectSound"), "EmulDriver", "Y");
else
@@ -526,18 +595,92 @@ AudioDlgProc (HWND hDlg, UINT uMsg, WPAR
case WM_SHOWWINDOW:
set_window_title(hDlg);
break;
-
+
case WM_NOTIFY:
switch(((LPNMHDR)lParam)->code) {
case PSN_KILLACTIVE:
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE);
break;
case PSN_APPLY:
+ set_reg_key(config_key, "Drivers", "Audio", curAudioDriver);
apply();
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
break;
case PSN_SETACTIVE:
break;
+ case NM_CLICK:
+ if (((LPNMHDR)lParam)->idFrom == IDC_AUDIO_TREE)
+ {
+ TVHITTESTINFO ht;
+ DWORD dwPos = GetMessagePos();
+ HWND tree = ((LPNMHDR)lParam)->hwndFrom;
+ ZeroMemory(&ht, sizeof(ht));
+ ht.pt.x = GET_X_LPARAM(dwPos);
+ ht.pt.y = GET_Y_LPARAM(dwPos);
+ MapWindowPoints(HWND_DESKTOP, tree, &ht.pt, 1);
+ TreeView_HitTest(tree, &ht);
+ if (TVHT_ONITEMSTATEICON & ht.flags)
+ {
+ TVITEM tvItem;
+ int index;
+ ZeroMemory(&tvItem, sizeof(tvItem));
+ tvItem.hItem = ht.hItem;
+ TreeView_GetItem(tree, &tvItem);
+
+ index = TreeView_GetItemState(tree, ht.hItem, TVIS_STATEIMAGEMASK);
+ if (index == INDEXTOSTATEIMAGEMASK(1))
+ {
+ TreeView_SetItemState(tree, ht.hItem, INDEXTOSTATEIMAGEMASK(2), TVIS_STATEIMAGEMASK);
+ addDriver(loadedAudioDrv[tvItem.lParam & 0xff].szDriver);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM) hDlg, 0); /* enable apply button */
+ }
+ else if (index == INDEXTOSTATEIMAGEMASK(2))
+ {
+ TreeView_SetItemState(tree, ht.hItem, INDEXTOSTATEIMAGEMASK(1), TVIS_STATEIMAGEMASK);
+ removeDriver(loadedAudioDrv[tvItem.lParam & 0xff].szDriver);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM) hDlg, 0); /* enable apply button */
+ }
+ }
+ }
+ break;
+ case NM_RCLICK:
+ if (((LPNMHDR)lParam)->idFrom == IDC_AUDIO_TREE)
+ {
+ TVHITTESTINFO ht;
+ DWORD dwPos = GetMessagePos();
+ HWND tree = ((LPNMHDR)lParam)->hwndFrom;
+ POINT pt;
+ ZeroMemory(&ht, sizeof(ht));
+ pt.x = GET_X_LPARAM(dwPos);
+ pt.y = GET_Y_LPARAM(dwPos);
+ ht.pt = pt;
+ MapWindowPoints(HWND_DESKTOP, tree, &ht.pt, 1);
+ TreeView_HitTest(tree, &ht);
+ if (TVHT_ONITEMLABEL & ht.flags)
+ {
+ TVITEM tvItem;
+ ZeroMemory(&tvItem, sizeof(tvItem));
+ tvItem.hItem = ht.hItem;
+ tvItem.mask = TVIF_PARAM;
+ tvItem.lParam = -1;
+ if (TreeView_GetItem(tree, &tvItem))
+ {
+ if (tvItem.lParam & DRIVER_MASK)
+ {
+ if (hPopupMenus)
+ {
+ TrackPopupMenu(GetSubMenu(hPopupMenus, 0), TPM_RIGHTBUTTON, pt.x, pt.y, 0, tree, NULL);
+ toConfigure = tvItem.lParam & ~DRIVER_MASK;
+ }
+ }
+ else if (tvItem.lParam & DEVICE_MASK)
+ {
+ /* FIXME TBD */
+ }
+
+ }
+ }
+ }
}
break;
Index: programs/winecfg/main.c
===================================================================
RCS file: /home/wine/wine/programs/winecfg/main.c,v
retrieving revision 1.26
diff -p -u -r1.26 main.c
--- programs/winecfg/main.c 25 Aug 2005 19:19:33 -0000 1.26
+++ programs/winecfg/main.c 16 Dec 2005 01:27:06 -0000
@@ -259,7 +259,7 @@ WinMain (HINSTANCE hInstance, HINSTANCE
return 0;
}
- if (initialize() != 0) {
+ if (initialize(hInstance) != 0) {
WINE_ERR("initialization failed, aborting\n");
ExitProcess(1);
}
Index: programs/winecfg/resource.h
===================================================================
RCS file: /home/wine/wine/programs/winecfg/resource.h,v
retrieving revision 1.34
diff -p -u -r1.34 resource.h
--- programs/winecfg/resource.h 7 Dec 2005 12:39:21 -0000 1.34
+++ programs/winecfg/resource.h 16 Dec 2005 01:27:06 -0000
@@ -133,13 +133,14 @@
#define IDC_APP_REMOVEAPP 1202
/* audio tab */
-#define IDC_AUDIO_AUTODETECT 1300
-#define IDC_AUDIO_DRIVER 1301
-#define IDC_AUDIO_CONFIGURE 1302
-#define IDC_AUDIO_CONTROL_PANEL 1303
-#define IDC_DSOUND_HW_ACCEL 1304
-#define IDC_DSOUND_DRV_EMUL 1305
-#define IDC_AUDIO_TREE 1306
+#define IDC_AUDIO_CONFIGURE 1300
+#define IDC_AUDIO_CONTROL_PANEL 1301
+#define IDC_DSOUND_HW_ACCEL 1302
+#define IDC_DSOUND_DRV_EMUL 1303
+#define IDC_AUDIO_TREE 1304
+#define IDR_WINECFG 1305
+#define IDB_CHECKBOX 1306
+#define IDB_DEVICE 1307
/* appearance tab */
#define IDC_THEME_COLORCOMBO 1401
Index: programs/winecfg/winecfg.c
===================================================================
RCS file: /home/wine/wine/programs/winecfg/winecfg.c,v
retrieving revision 1.40
diff -p -u -r1.40 winecfg.c
--- programs/winecfg/winecfg.c 13 Oct 2005 13:44:38 -0000 1.40
+++ programs/winecfg/winecfg.c 16 Dec 2005 01:27:07 -0000
@@ -38,9 +38,10 @@
WINE_DEFAULT_DEBUG_CHANNEL(winecfg);
#include "winecfg.h"
+#include "resource.h"
HKEY config_key = NULL;
-
+HMENU hPopupMenus = 0;
/* this is called from the WM_SHOWWINDOW handlers of each tab page.
@@ -604,7 +605,8 @@ void PRINTERROR(void)
WINE_TRACE("error: '%s'\n", msg);
}
-int initialize(void) {
+int initialize(HINSTANCE hInstance)
+{
DWORD res = RegCreateKey(HKEY_CURRENT_USER, WINE_KEY_ROOT, &config_key);
if (res != ERROR_SUCCESS) {
@@ -612,6 +614,9 @@ int initialize(void) {
return 1;
}
+ /* load any menus */
+ hPopupMenus = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_WINECFG));
+
/* we could probably just have the list as static data */
settings = HeapAlloc(GetProcessHeap(), 0, sizeof(struct list));
list_init(settings);
Index: programs/winecfg/winecfg.h
===================================================================
RCS file: /home/wine/wine/programs/winecfg/winecfg.h,v
retrieving revision 1.28
diff -p -u -r1.28 winecfg.h
--- programs/winecfg/winecfg.h 24 Aug 2005 10:59:40 -0000 1.28
+++ programs/winecfg/winecfg.h 16 Dec 2005 01:27:07 -0000
@@ -65,7 +65,7 @@ char **enumerate_values(HKEY root, char
*/
char *keypath(const char *section);
-int initialize(void);
+int initialize(HINSTANCE hInstance);
extern HKEY config_key;
/* hack for the property sheet control */
@@ -133,4 +133,6 @@ static inline void set_text(HWND dialog,
#define WINE_KEY_ROOT "Software\\Wine"
+extern HMENU hPopupMenus;
+
#endif
Index: programs/winecfg/winecfg.rc
===================================================================
RCS file: /home/wine/wine/programs/winecfg/winecfg.rc,v
retrieving revision 1.25
diff -p -u -r1.25 winecfg.rc
--- programs/winecfg/winecfg.rc 14 Nov 2005 11:27:36 -0000 1.25
+++ programs/winecfg/winecfg.rc 16 Dec 2005 01:27:08 -0000
@@ -964,3 +964,40 @@ IDB_WINE BITMAP idb_wine.bmp
'1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B'
'1B 1B 1B 1B 00 00'
} */
+
+/* BINRES idb_checkbox.bmp */
+IDB_CHECKBOX BITMAP idb_checkbox.bmp
+/* {
+ '42 4D F6 01 00 00 00 00 00 00 76 00 00 00 28 00'
+ '00 00 30 00 00 00 10 00 00 00 01 00 04 00 00 00'
+ '00 00 80 01 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
+ '00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
+ '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
+ '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
+ '00 00 FF FF FF 00 FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00'
+ '00 00 00 00 00 0F FF 00 00 00 00 00 00 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 00 00 00 00 00 0F FF 00'
+ '00 00 00 00 00 0F FF FF FF FF FF FF FF FF FF 00'
+ 'FF FF FF FF F0 0F FF 00 FF FF FF FF F0 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 FF FF FF FF F0 0F FF 00'
+ 'FF F0 FF FF F0 0F FF FF FF FF FF FF FF FF FF 00'
+ 'FF FF FF FF F0 0F FF 00 FF 00 0F FF F0 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 FF FF FF FF F0 0F FF 00'
+ 'F0 00 00 FF F0 0F FF FF FF FF FF FF FF FF FF 00'
+ 'FF FF FF FF F0 0F FF 00 F0 0F 00 0F F0 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 FF FF FF FF F0 0F FF 00'
+ 'F0 FF F0 00 F0 0F FF FF FF FF FF FF FF FF FF 00'
+ 'FF FF FF FF F0 0F FF 00 FF FF FF 00 F0 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 FF FF FF FF F0 0F FF 00'
+ 'FF FF FF F0 F0 0F FF FF FF FF FF FF FF FF FF 00'
+ 'FF FF FF FF F0 0F FF 00 FF FF FF FF F0 0F FF FF'
+ 'FF FF FF FF FF FF FF 00 00 00 00 00 00 0F FF 00'
+ '00 00 00 00 00 0F FF FF FF FF FF FF FF FF FF 00'
+ '00 00 00 00 00 0F FF 00 00 00 00 00 00 0F FF FF'
+ 'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
+ 'FF FF FF FF FF FF'
+} */
More information about the wine-patches
mailing list