Moved the Sound Gain control option from the Tools menu to a new Sound icon on the status bar;
LPT2 and LPT3 devices can now be selected.
This commit is contained in:
32
src/config.c
32
src/config.c
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Configuration file handler.
|
||||
*
|
||||
* Version: @(#)config.c 1.0.39 2018/01/27
|
||||
* Version: @(#)config.c 1.0.40 2018/02/06
|
||||
*
|
||||
* Authors: Sarah Walker,
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -686,9 +686,21 @@ load_ports(void)
|
||||
|
||||
p = (char *)config_get_string(cat, "lpt1_device", NULL);
|
||||
if (p != NULL)
|
||||
strcpy(lpt1_device_name, p);
|
||||
strcpy(lpt_device_names[0], p);
|
||||
else
|
||||
strcpy(lpt1_device_name, "none");
|
||||
strcpy(lpt_device_names[0], "none");
|
||||
|
||||
p = (char *)config_get_string(cat, "lpt2_device", NULL);
|
||||
if (p != NULL)
|
||||
strcpy(lpt_device_names[1], p);
|
||||
else
|
||||
strcpy(lpt_device_names[1], "none");
|
||||
|
||||
p = (char *)config_get_string(cat, "lpt3_device", NULL);
|
||||
if (p != NULL)
|
||||
strcpy(lpt_device_names[2], p);
|
||||
else
|
||||
strcpy(lpt_device_names[2], "none");
|
||||
}
|
||||
|
||||
|
||||
@@ -1779,10 +1791,20 @@ save_ports(void)
|
||||
else
|
||||
config_set_int(cat, "lpt_enabled", lpt_enabled);
|
||||
|
||||
if (!strcmp(lpt1_device_name, "none"))
|
||||
if (!strcmp(lpt_device_names[0], "none"))
|
||||
config_delete_var(cat, "lpt1_device");
|
||||
else
|
||||
config_set_string(cat, "lpt1_device", lpt1_device_name);
|
||||
config_set_string(cat, "lpt1_device", lpt_device_names[0]);
|
||||
|
||||
if (!strcmp(lpt_device_names[1], "none"))
|
||||
config_delete_var(cat, "lpt2_device");
|
||||
else
|
||||
config_set_string(cat, "lpt2_device", lpt_device_names[1]);
|
||||
|
||||
if (!strcmp(lpt_device_names[2], "none"))
|
||||
config_delete_var(cat, "lpt3_device");
|
||||
else
|
||||
config_set_string(cat, "lpt3_device", lpt_device_names[2]);
|
||||
|
||||
delete_section_if_empty(cat);
|
||||
}
|
||||
|
150
src/lpt.c
150
src/lpt.c
@@ -12,7 +12,7 @@
|
||||
#include "sound/snd_lpt_dss.h"
|
||||
|
||||
|
||||
char lpt1_device_name[16];
|
||||
char lpt_device_names[3][16];
|
||||
|
||||
|
||||
static struct
|
||||
@@ -42,118 +42,102 @@ char *lpt_device_get_internal_name(int id)
|
||||
return lpt_devices[id].internal_name;
|
||||
}
|
||||
|
||||
static lpt_device_t *lpt1_device;
|
||||
static void *lpt1_device_p;
|
||||
static lpt_device_t *lpt_device_ts[3];
|
||||
static void *lpt_device_ps[3];
|
||||
|
||||
void lpt1_device_init()
|
||||
void lpt_devices_init()
|
||||
{
|
||||
int i = 0;
|
||||
int c = 0;
|
||||
|
||||
while (strcmp(lpt_devices[c].internal_name, lpt1_device_name) && strlen(lpt_devices[c].internal_name) != 0)
|
||||
c++;
|
||||
for (i = 0; i < 3; i++) {
|
||||
while (strcmp(lpt_devices[c].internal_name, lpt_device_names[i]) && strlen(lpt_devices[c].internal_name) != 0)
|
||||
c++;
|
||||
|
||||
if (strlen(lpt_devices[c].internal_name) == 0)
|
||||
lpt1_device = NULL;
|
||||
else
|
||||
if (strlen(lpt_devices[c].internal_name) == 0)
|
||||
lpt_device_ts[i] = NULL;
|
||||
else
|
||||
{
|
||||
lpt_device_ts[i] = lpt_devices[c].device;
|
||||
if (lpt_device_ts[i])
|
||||
lpt_device_ps[i] = lpt_device_ts[i]->init();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void lpt_devices_close()
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (lpt_device_ts[i])
|
||||
lpt_device_ts[i]->close(lpt_device_ps[i]);
|
||||
lpt_device_ts[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t lpt_dats[3], lpt_ctrls[3];
|
||||
|
||||
void lpt_write(int i, uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
lpt1_device = lpt_devices[c].device;
|
||||
if (lpt1_device)
|
||||
lpt1_device_p = lpt1_device->init();
|
||||
case 0:
|
||||
if (lpt_device_ts[i])
|
||||
lpt_device_ts[i]->write_data(val, lpt_device_ps[i]);
|
||||
lpt_dats[i] = val;
|
||||
break;
|
||||
case 2:
|
||||
if (lpt_device_ts[i])
|
||||
lpt_device_ts[i]->write_ctrl(val, lpt_device_ps[i]);
|
||||
lpt_ctrls[i] = val;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void lpt1_device_close()
|
||||
uint8_t lpt_read(int i, uint16_t port, void *priv)
|
||||
{
|
||||
if (lpt1_device)
|
||||
lpt1_device->close(lpt1_device_p);
|
||||
lpt1_device = NULL;
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
return lpt_dats[i];
|
||||
case 1:
|
||||
if (lpt_device_ts[i])
|
||||
return lpt_device_ts[i]->read_status(lpt_device_ps[i]);
|
||||
return 0;
|
||||
case 2:
|
||||
return lpt_ctrls[i];
|
||||
}
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
static uint8_t lpt1_dat, lpt2_dat, lpt3_dat;
|
||||
static uint8_t lpt1_ctrl, lpt2_ctrl, lpt3_ctrl;
|
||||
|
||||
void lpt1_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
if (lpt1_device)
|
||||
lpt1_device->write_data(val, lpt1_device_p);
|
||||
lpt1_dat = val;
|
||||
break;
|
||||
case 2:
|
||||
if (lpt1_device)
|
||||
lpt1_device->write_ctrl(val, lpt1_device_p);
|
||||
lpt1_ctrl = val;
|
||||
break;
|
||||
}
|
||||
lpt_write(0, port, val, priv);
|
||||
}
|
||||
|
||||
uint8_t lpt1_read(uint16_t port, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
return lpt1_dat;
|
||||
case 1:
|
||||
if (lpt1_device)
|
||||
return lpt1_device->read_status(lpt1_device_p);
|
||||
return 0;
|
||||
case 2:
|
||||
return lpt1_ctrl;
|
||||
}
|
||||
return 0xff;
|
||||
return lpt_read(0, port, priv);
|
||||
}
|
||||
|
||||
void lpt2_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
lpt2_dat = val;
|
||||
break;
|
||||
case 2:
|
||||
lpt2_ctrl = val;
|
||||
break;
|
||||
}
|
||||
lpt_write(1, port, val, priv);
|
||||
}
|
||||
|
||||
uint8_t lpt2_read(uint16_t port, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
return lpt2_dat;
|
||||
case 1:
|
||||
return 0;
|
||||
case 2:
|
||||
return lpt2_ctrl;
|
||||
}
|
||||
return 0xff;
|
||||
return lpt_read(1, port, priv);
|
||||
}
|
||||
|
||||
void lpt3_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
lpt3_dat = val;
|
||||
break;
|
||||
case 2:
|
||||
lpt3_ctrl = val;
|
||||
break;
|
||||
}
|
||||
lpt_write(2, port, val, priv);
|
||||
}
|
||||
|
||||
uint8_t lpt3_read(uint16_t port, void *priv)
|
||||
{
|
||||
switch (port & 3)
|
||||
{
|
||||
case 0:
|
||||
return lpt3_dat;
|
||||
case 1:
|
||||
return 0;
|
||||
case 2:
|
||||
return lpt3_ctrl;
|
||||
}
|
||||
return 0xff;
|
||||
return lpt_read(2, port, priv);
|
||||
}
|
||||
|
||||
uint16_t lpt_addr[3] = { 0x378, 0x278, 0x3bc };
|
||||
|
@@ -7,13 +7,13 @@ extern void lpt2_remove_ams();
|
||||
extern void lpt3_init(uint16_t port);
|
||||
extern void lpt3_remove();
|
||||
|
||||
void lpt1_device_init();
|
||||
void lpt1_device_close();
|
||||
void lpt_devices_init();
|
||||
void lpt_devices_close();
|
||||
|
||||
char *lpt_device_get_name(int id);
|
||||
char *lpt_device_get_internal_name(int id);
|
||||
|
||||
extern char lpt1_device_name[16];
|
||||
extern char lpt_device_names[3][16];
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
10
src/pc.c
10
src/pc.c
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Main emulator module where most things are controlled.
|
||||
*
|
||||
* Version: @(#)pc.c 1.0.56 2018/01/29
|
||||
* Version: @(#)pc.c 1.0.57 2018/02/06
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -751,6 +751,8 @@ pc_reset_hard_close(void)
|
||||
|
||||
mouse_close();
|
||||
|
||||
lpt_devices_close();
|
||||
|
||||
device_close_all();
|
||||
|
||||
midi_close();
|
||||
@@ -810,7 +812,7 @@ pc_reset_hard_init(void)
|
||||
/* Reset some basic devices. */
|
||||
speaker_init();
|
||||
serial_reset();
|
||||
lpt1_device_init();
|
||||
lpt_devices_init();
|
||||
|
||||
/* Reset keyboard and/or mouse. */
|
||||
// FIXME: do we really have to reset the *AT* keyboard?? --FvK
|
||||
@@ -944,6 +946,8 @@ pc_close(thread_t *ptr)
|
||||
|
||||
plat_mouse_capture(0);
|
||||
|
||||
lpt_devices_close();
|
||||
|
||||
for (i=0; i<ZIP_NUM; i++)
|
||||
zip_close(i);
|
||||
|
||||
@@ -959,8 +963,6 @@ pc_close(thread_t *ptr)
|
||||
|
||||
video_close();
|
||||
|
||||
lpt1_device_close();
|
||||
|
||||
device_close_all();
|
||||
|
||||
midi_close();
|
||||
|
5
src/ui.h
5
src/ui.h
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Define the various UI functions.
|
||||
*
|
||||
* Version: @(#)ui.h 1.0.12 2018/01/22
|
||||
* Version: @(#)ui.h 1.0.13 2018/02/06
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
@@ -48,7 +48,8 @@ extern void ui_check_menu_item(int id, int checked);
|
||||
#define SB_RDISK 0x30
|
||||
#define SB_HDD 0x50
|
||||
#define SB_NETWORK 0x60
|
||||
#define SB_TEXT 0x70
|
||||
#define SB_SOUND 0x70
|
||||
#define SB_TEXT 0x80
|
||||
|
||||
extern wchar_t *ui_window_title(wchar_t *s);
|
||||
extern void ui_status_update(void);
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Application resource script for Windows.
|
||||
*
|
||||
* Version: @(#)86Box.rc 1.0.27 2018/01/27
|
||||
* Version: @(#)86Box.rc 1.0.28 2018/02/06
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
@@ -119,8 +119,6 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "S&tatus", IDM_STATUS
|
||||
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "S&ound gain...", IDM_SND_GAIN
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Logging"
|
||||
@@ -415,7 +413,7 @@ BEGIN
|
||||
PUSHBUTTON "Configure",IDC_CONFIGURE_NET,214,43,46,12
|
||||
END
|
||||
|
||||
DLG_CFG_PORTS DIALOG DISCARDABLE 97, 0, 267, 61
|
||||
DLG_CFG_PORTS DIALOG DISCARDABLE 97, 0, 267, 99
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT 9, "Segoe UI"
|
||||
BEGIN
|
||||
@@ -423,13 +421,21 @@ BEGIN
|
||||
COMBOBOX IDC_COMBO_LPT1,71,7,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT "LPT2 Device:",IDT_1717,7,27,61,10
|
||||
COMBOBOX IDC_COMBO_LPT2,71,26,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT "LPT3 Device:",IDT_1718,7,46,61,10
|
||||
COMBOBOX IDC_COMBO_LPT3,71,45,189,120,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
CONTROL "Serial port 1",IDC_CHECK_SERIAL1,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,26,94,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,64,94,10
|
||||
CONTROL "Serial port 2",IDC_CHECK_SERIAL2,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,26,94,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,147,64,94,10
|
||||
|
||||
CONTROL "Parallel port",IDC_CHECK_PARALLEL,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,44,94,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,82,94,10
|
||||
END
|
||||
|
||||
DLG_CFG_PERIPHERALS DIALOG DISCARDABLE 97, 0, 267, 97
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Windows resource defines.
|
||||
*
|
||||
* Version: @(#)resource.h 1.0.19 2018/01/26
|
||||
* Version: @(#)resource.h 1.0.19 2018/02/06
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -148,9 +148,11 @@
|
||||
#define IDC_COMBO_NET 1092
|
||||
|
||||
#define IDC_COMBO_LPT1 1110 /* ports config */
|
||||
#define IDC_CHECK_SERIAL1 1111
|
||||
#define IDC_CHECK_SERIAL2 1112
|
||||
#define IDC_CHECK_PARALLEL 1113
|
||||
#define IDC_COMBO_LPT2 1111
|
||||
#define IDC_COMBO_LPT3 1112
|
||||
#define IDC_CHECK_SERIAL1 1113
|
||||
#define IDC_CHECK_SERIAL2 1114
|
||||
#define IDC_CHECK_PARALLEL 1115
|
||||
|
||||
#define IDC_OTHER_PERIPH 1120 /* other periph config */
|
||||
#define IDC_COMBO_SCSI 1121
|
||||
@@ -237,7 +239,6 @@
|
||||
#define IDM_CONFIG_LOAD 40021
|
||||
#define IDM_CONFIG_SAVE 40022
|
||||
#define IDM_STATUS 40030
|
||||
#define IDM_SND_GAIN 40040
|
||||
#define IDM_VID_RESIZE 40050
|
||||
#define IDM_VID_REMEMBER 40051
|
||||
#define IDM_VID_DDRAW 40060
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Windows 86Box Settings dialog handler.
|
||||
*
|
||||
* Version: @(#)win_settings.c 1.0.36 2018/01/27
|
||||
* Version: @(#)win_settings.c 1.0.37 2018/02/06
|
||||
*
|
||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
@@ -77,7 +77,7 @@ static int temp_net_type, temp_net_card;
|
||||
static char temp_pcap_dev[520];
|
||||
|
||||
/* Ports category */
|
||||
static char temp_lpt1_device_name[16];
|
||||
static char temp_lpt_device_names[3][16];
|
||||
static int temp_serial[2], temp_lpt;
|
||||
|
||||
/* Other peripherals category */
|
||||
@@ -177,7 +177,8 @@ static void win_settings_init(void)
|
||||
temp_net_card = network_card;
|
||||
|
||||
/* Ports category */
|
||||
strncpy(temp_lpt1_device_name, lpt1_device_name, sizeof(temp_lpt1_device_name) - 1);
|
||||
for (i = 0; i < 3; i++)
|
||||
strncpy(temp_lpt_device_names[i], lpt_device_names[i], sizeof(temp_lpt_device_names[i]) - 1);
|
||||
temp_serial[0] = serial_enabled[0];
|
||||
temp_serial[1] = serial_enabled[1];
|
||||
temp_lpt = lpt_enabled;
|
||||
@@ -292,7 +293,8 @@ static int win_settings_changed(void)
|
||||
i = i || (network_card != temp_net_card);
|
||||
|
||||
/* Ports category */
|
||||
i = i || strncmp(temp_lpt1_device_name, lpt1_device_name, sizeof(temp_lpt1_device_name) - 1);
|
||||
for (i = 0; i < 3; i++)
|
||||
i = i || strncmp(temp_lpt_device_names[i], lpt_device_names[i], sizeof(temp_lpt_device_names[i]) - 1);
|
||||
i = i || (temp_serial[0] != serial_enabled[0]);
|
||||
i = i || (temp_serial[1] != serial_enabled[1]);
|
||||
i = i || (temp_lpt != lpt_enabled);
|
||||
@@ -395,7 +397,8 @@ static void win_settings_save(void)
|
||||
network_card = temp_net_card;
|
||||
|
||||
/* Ports category */
|
||||
strncpy(lpt1_device_name, temp_lpt1_device_name, sizeof(temp_lpt1_device_name) - 1);
|
||||
for (i = 0; i < 3; i++)
|
||||
strncpy(lpt_device_names[i], temp_lpt_device_names[i], sizeof(temp_lpt_device_names[i]) - 1);
|
||||
serial_enabled[0] = temp_serial[0];
|
||||
serial_enabled[1] = temp_serial[1];
|
||||
lpt_enabled = temp_lpt;
|
||||
@@ -1427,41 +1430,36 @@ win_settings_ports_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
int d = 0;
|
||||
char *s;
|
||||
LPTSTR lptsTemp;
|
||||
int i;
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
lptsTemp = (LPTSTR) malloc(512);
|
||||
|
||||
h = GetDlgItem(hdlg, IDC_COMBO_LPT1);
|
||||
c = d = 0;
|
||||
while (1)
|
||||
{
|
||||
s = lpt_device_get_name(c);
|
||||
for (i = 0; i < 3; i++) {
|
||||
h = GetDlgItem(hdlg, IDC_COMBO_LPT1 + i);
|
||||
c = d = 0;
|
||||
while (1) {
|
||||
s = lpt_device_get_name(c);
|
||||
|
||||
if (!s)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (!s)
|
||||
break;
|
||||
|
||||
if (c == 0)
|
||||
{
|
||||
SendMessage(h, CB_ADDSTRING, 0, (LPARAM) plat_get_string(IDS_2152));
|
||||
}
|
||||
else
|
||||
{
|
||||
mbstowcs(lptsTemp, s, strlen(s) + 1);
|
||||
SendMessage(h, CB_ADDSTRING, 0, (LPARAM) lptsTemp);
|
||||
}
|
||||
if (c == 0) {
|
||||
SendMessage(h, CB_ADDSTRING, 0, (LPARAM) plat_get_string(IDS_2152));
|
||||
} else {
|
||||
mbstowcs(lptsTemp, s, strlen(s) + 1);
|
||||
SendMessage(h, CB_ADDSTRING, 0, (LPARAM) lptsTemp);
|
||||
}
|
||||
|
||||
if (!strcmp(temp_lpt1_device_name, lpt_device_get_internal_name(c)))
|
||||
{
|
||||
d = c;
|
||||
}
|
||||
if (!strcmp(temp_lpt_device_names[i], lpt_device_get_internal_name(c)))
|
||||
d = c;
|
||||
|
||||
c++;
|
||||
c++;
|
||||
}
|
||||
SendMessage(h, CB_SETCURSEL, d, 0);
|
||||
}
|
||||
SendMessage(h, CB_SETCURSEL, d, 0);
|
||||
|
||||
h=GetDlgItem(hdlg, IDC_CHECK_SERIAL1);
|
||||
SendMessage(h, BM_SETCHECK, temp_serial[0], 0);
|
||||
@@ -1477,9 +1475,11 @@ win_settings_ports_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
return TRUE;
|
||||
|
||||
case WM_SAVESETTINGS:
|
||||
h = GetDlgItem(hdlg, IDC_COMBO_LPT1);
|
||||
c = SendMessage(h, CB_GETCURSEL, 0, 0);
|
||||
strcpy(temp_lpt1_device_name, lpt_device_get_internal_name(c));
|
||||
for (i = 0; i < 3; i++) {
|
||||
h = GetDlgItem(hdlg, IDC_COMBO_LPT1 + i);
|
||||
c = SendMessage(h, CB_GETCURSEL, 0, 0);
|
||||
strcpy(temp_lpt_device_names[i], lpt_device_get_internal_name(c));
|
||||
}
|
||||
|
||||
h = GetDlgItem(hdlg, IDC_CHECK_SERIAL1);
|
||||
temp_serial[0] = SendMessage(h, BM_GETCHECK, 0, 0);
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Implement the application's Status Bar.
|
||||
*
|
||||
* Version: @(#)win_stbar.c 1.0.12 2018/01/29
|
||||
* Version: @(#)win_stbar.c 1.0.13 2018/02/06
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
@@ -465,6 +465,20 @@ StatusBarCreateNetworkTip(int part)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
StatusBarCreateSoundTip(int part)
|
||||
{
|
||||
WCHAR tempTip[512];
|
||||
|
||||
_swprintf(tempTip, plat_get_string(IDS_2068));
|
||||
|
||||
if (sbTips[part] != NULL)
|
||||
free(sbTips[part]);
|
||||
sbTips[part] = (WCHAR *)malloc((wcslen(tempTip) << 1) + 2);
|
||||
wcscpy(sbTips[part], tempTip);
|
||||
}
|
||||
|
||||
|
||||
/* API */
|
||||
void
|
||||
ui_sb_update_tip(int meaning)
|
||||
@@ -506,6 +520,10 @@ ui_sb_update_tip(int meaning)
|
||||
StatusBarCreateNetworkTip(part);
|
||||
break;
|
||||
|
||||
case SB_SOUND:
|
||||
StatusBarCreateSoundTip(part);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -692,7 +710,7 @@ ui_sb_update_panes(void)
|
||||
if (do_net) {
|
||||
sb_parts++;
|
||||
}
|
||||
sb_parts++;
|
||||
sb_parts += 2;
|
||||
|
||||
iStatusWidths = (int *)malloc(sb_parts * sizeof(int));
|
||||
memset(iStatusWidths, 0, sb_parts * sizeof(int));
|
||||
@@ -809,11 +827,16 @@ ui_sb_update_panes(void)
|
||||
sb_parts++;
|
||||
}
|
||||
|
||||
edge += SB_ICON_WIDTH;
|
||||
iStatusWidths[sb_parts] = edge;
|
||||
sb_part_meanings[sb_parts] = SB_SOUND;
|
||||
sb_parts++;
|
||||
|
||||
if (sb_parts)
|
||||
iStatusWidths[sb_parts - 1] += (24 - SB_ICON_WIDTH);
|
||||
iStatusWidths[sb_parts] = -1;
|
||||
sb_part_meanings[sb_parts] = SB_TEXT;
|
||||
sb_parts++;
|
||||
sb_parts ++;
|
||||
|
||||
SendMessage(hwndSBAR, SB_SETPARTS, (WPARAM)sb_parts, (LPARAM)iStatusWidths);
|
||||
|
||||
@@ -874,6 +897,11 @@ ui_sb_update_panes(void)
|
||||
StatusBarCreateNetworkTip(i);
|
||||
break;
|
||||
|
||||
case SB_SOUND: /* Sound */
|
||||
sb_part_icons[i] = 259;
|
||||
StatusBarCreateSoundTip(i);
|
||||
break;
|
||||
|
||||
case SB_TEXT: /* Status text */
|
||||
SendMessage(hwndSBAR, SB_SETTEXT, i | SBT_NOBORDERS, (LPARAM)L"");
|
||||
sb_part_icons[i] = -1;
|
||||
@@ -1189,6 +1217,17 @@ StatusBarProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
StatusBarPopupMenu(hwnd, pt, (pt.x / SB_ICON_WIDTH));
|
||||
break;
|
||||
|
||||
case WM_LBUTTONDBLCLK:
|
||||
GetClientRect(hwnd, (LPRECT)& rc);
|
||||
pt.x = GET_X_LPARAM(lParam);
|
||||
pt.y = GET_Y_LPARAM(lParam);
|
||||
item_id = (pt.x / SB_ICON_WIDTH);
|
||||
if (PtInRect((LPRECT) &rc, pt) && (item_id < sb_parts)) {
|
||||
if (sb_part_meanings[item_id] == SB_SOUND)
|
||||
SoundGainDialogCreate(hwndMain);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return(CallWindowProc((WNDPROC)OriginalProcedure,
|
||||
hwnd, message, wParam, lParam));
|
||||
@@ -1221,6 +1260,8 @@ StatusBarCreate(HWND hwndParent, uintptr_t idStatus, HINSTANCE hInst)
|
||||
hIcon[i] = LoadIconEx((PCTSTR) i);
|
||||
for (i = 224; i < 226; i++)
|
||||
hIcon[i] = LoadIconEx((PCTSTR) i);
|
||||
for (i = 259; i < 260; i++)
|
||||
hIcon[i] = LoadIconEx((PCTSTR) i);
|
||||
for (i = 384; i < 386; i++)
|
||||
hIcon[i] = LoadIconEx((PCTSTR) i);
|
||||
for (i = 400; i < 402; i++)
|
||||
|
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* user Interface module for WinAPI on Windows.
|
||||
*
|
||||
* Version: @(#)win_ui.c 1.0.15 2018/02/01
|
||||
* Version: @(#)win_ui.c 1.0.16 2018/02/06
|
||||
*
|
||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -311,10 +311,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
win_settings_open(hwnd);
|
||||
break;
|
||||
|
||||
case IDM_SND_GAIN:
|
||||
SoundGainDialogCreate(hwnd);
|
||||
break;
|
||||
|
||||
case IDM_ABOUT:
|
||||
AboutDialogCreate(hwnd);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user