mirror of https://github.com/OpenVPN/openvpn-gui
Add restart button to connection menus
- This works the same way as restart button in the status window but is more conveniently accessible from the tray menu. Signed-off-by: Selva Nair <selva.nair@gmail.com>pull/188/head
parent
4055f86206
commit
31896ce33b
3
main.c
3
main.c
|
@ -394,6 +394,9 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
if ( (LOWORD(wParam) >= IDM_DISCONNECTMENU) && (LOWORD(wParam) < IDM_DISCONNECTMENU + MAX_CONFIGS) ) {
|
if ( (LOWORD(wParam) >= IDM_DISCONNECTMENU) && (LOWORD(wParam) < IDM_DISCONNECTMENU + MAX_CONFIGS) ) {
|
||||||
StopOpenVPN(&o.conn[LOWORD(wParam) - IDM_DISCONNECTMENU]);
|
StopOpenVPN(&o.conn[LOWORD(wParam) - IDM_DISCONNECTMENU]);
|
||||||
}
|
}
|
||||||
|
if ( (LOWORD(wParam) >= IDM_RECONNECTMENU) && (LOWORD(wParam) < IDM_RECONNECTMENU + MAX_CONFIGS) ) {
|
||||||
|
RestartOpenVPN(&o.conn[LOWORD(wParam) - IDM_RECONNECTMENU]);
|
||||||
|
}
|
||||||
if ( (LOWORD(wParam) >= IDM_STATUSMENU) && (LOWORD(wParam) < IDM_STATUSMENU + MAX_CONFIGS) ) {
|
if ( (LOWORD(wParam) >= IDM_STATUSMENU) && (LOWORD(wParam) < IDM_STATUSMENU + MAX_CONFIGS) ) {
|
||||||
ShowWindow(o.conn[LOWORD(wParam) - IDM_STATUSMENU].hwndStatus, SW_SHOW);
|
ShowWindow(o.conn[LOWORD(wParam) - IDM_STATUSMENU].hwndStatus, SW_SHOW);
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,6 +149,7 @@
|
||||||
#define IDS_MENU_ASK_STOP_SERVICE 1022
|
#define IDS_MENU_ASK_STOP_SERVICE 1022
|
||||||
#define IDS_MENU_IMPORT 1023
|
#define IDS_MENU_IMPORT 1023
|
||||||
#define IDS_MENU_CLEARPASS 1024
|
#define IDS_MENU_CLEARPASS 1024
|
||||||
|
#define IDS_MENU_RECONNECT 1025
|
||||||
|
|
||||||
/* LogViewer Dialog */
|
/* LogViewer Dialog */
|
||||||
#define IDS_ERR_START_LOG_VIEWER 1101
|
#define IDS_ERR_START_LOG_VIEWER 1101
|
||||||
|
|
20
openvpn.c
20
openvpn.c
|
@ -52,6 +52,7 @@
|
||||||
|
|
||||||
#define WM_OVPN_STOP (WM_APP + 10)
|
#define WM_OVPN_STOP (WM_APP + 10)
|
||||||
#define WM_OVPN_SUSPEND (WM_APP + 11)
|
#define WM_OVPN_SUSPEND (WM_APP + 11)
|
||||||
|
#define WM_OVPN_RESTART (WM_APP + 12)
|
||||||
|
|
||||||
extern options_t o;
|
extern options_t o;
|
||||||
|
|
||||||
|
@ -1565,7 +1566,7 @@ StatusDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
case ID_RESTART:
|
case ID_RESTART:
|
||||||
c->state = reconnecting;
|
c->state = reconnecting;
|
||||||
SetFocus(GetDlgItem(c->hwndStatus, ID_EDT_LOG));
|
SetFocus(GetDlgItem(c->hwndStatus, ID_EDT_LOG));
|
||||||
ManagementCommand(c, "signal SIGHUP", NULL, regular);
|
RestartOpenVPN(c);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1628,6 +1629,18 @@ StatusDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
KillTimer (hwndDlg, IDT_STOP_TIMER);
|
KillTimer (hwndDlg, IDT_STOP_TIMER);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_OVPN_RESTART:
|
||||||
|
c = (connection_t *) GetProp(hwndDlg, cfgProp);
|
||||||
|
/* external messages can trigger when we are not ready -- check the state */
|
||||||
|
if (IsWindowEnabled(GetDlgItem(c->hwndStatus, ID_RESTART)))
|
||||||
|
ManagementCommand(c, "signal SIGHUP", NULL, regular);
|
||||||
|
if (!o.silent_connection)
|
||||||
|
{
|
||||||
|
SetForegroundWindow(c->hwndStatus);
|
||||||
|
ShowWindow(c->hwndStatus, SW_SHOW);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1955,6 +1968,11 @@ SuspendOpenVPN(int config)
|
||||||
PostMessage(o.conn[config].hwndStatus, WM_OVPN_SUSPEND, 0, 0);
|
PostMessage(o.conn[config].hwndStatus, WM_OVPN_SUSPEND, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
RestartOpenVPN(connection_t *c)
|
||||||
|
{
|
||||||
|
PostMessage(c->hwndStatus, WM_OVPN_RESTART, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SetStatusWinIcon(HWND hwndDlg, int iconId)
|
SetStatusWinIcon(HWND hwndDlg, int iconId)
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
BOOL StartOpenVPN(connection_t *);
|
BOOL StartOpenVPN(connection_t *);
|
||||||
void StopOpenVPN(connection_t *);
|
void StopOpenVPN(connection_t *);
|
||||||
void SuspendOpenVPN(int config);
|
void SuspendOpenVPN(int config);
|
||||||
|
void RestartOpenVPN(connection_t *);
|
||||||
BOOL CheckVersion();
|
BOOL CheckVersion();
|
||||||
void SetStatusWinIcon(HWND hwndDlg, int IconID);
|
void SetStatusWinIcon(HWND hwndDlg, int IconID);
|
||||||
|
|
||||||
|
|
|
@ -247,6 +247,7 @@ BEGIN
|
||||||
IDS_MENU_CLOSE "Exit"
|
IDS_MENU_CLOSE "Exit"
|
||||||
IDS_MENU_CONNECT "Connect"
|
IDS_MENU_CONNECT "Connect"
|
||||||
IDS_MENU_DISCONNECT "Disconnect"
|
IDS_MENU_DISCONNECT "Disconnect"
|
||||||
|
IDS_MENU_RECONNECT "Reconnect"
|
||||||
IDS_MENU_STATUS "Show Status"
|
IDS_MENU_STATUS "Show Status"
|
||||||
IDS_MENU_VIEWLOG "View Log"
|
IDS_MENU_VIEWLOG "View Log"
|
||||||
IDS_MENU_EDITCONFIG "Edit Config"
|
IDS_MENU_EDITCONFIG "Edit Config"
|
||||||
|
|
8
tray.c
8
tray.c
|
@ -63,6 +63,7 @@ CreatePopupMenus()
|
||||||
if (o.service_only == 0) {
|
if (o.service_only == 0) {
|
||||||
AppendMenu(hMenu, MF_STRING, IDM_CONNECTMENU, LoadLocalizedString(IDS_MENU_CONNECT));
|
AppendMenu(hMenu, MF_STRING, IDM_CONNECTMENU, LoadLocalizedString(IDS_MENU_CONNECT));
|
||||||
AppendMenu(hMenu, MF_STRING, IDM_DISCONNECTMENU, LoadLocalizedString(IDS_MENU_DISCONNECT));
|
AppendMenu(hMenu, MF_STRING, IDM_DISCONNECTMENU, LoadLocalizedString(IDS_MENU_DISCONNECT));
|
||||||
|
AppendMenu(hMenu, MF_STRING, IDM_RECONNECTMENU, LoadLocalizedString(IDS_MENU_RECONNECT));
|
||||||
AppendMenu(hMenu, MF_STRING, IDM_STATUSMENU, LoadLocalizedString(IDS_MENU_STATUS));
|
AppendMenu(hMenu, MF_STRING, IDM_STATUSMENU, LoadLocalizedString(IDS_MENU_STATUS));
|
||||||
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
AppendMenu(hMenu, MF_SEPARATOR, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +118,7 @@ CreatePopupMenus()
|
||||||
if (o.service_only == 0) {
|
if (o.service_only == 0) {
|
||||||
AppendMenu(hMenuConn[i], MF_STRING, IDM_CONNECTMENU + i, LoadLocalizedString(IDS_MENU_CONNECT));
|
AppendMenu(hMenuConn[i], MF_STRING, IDM_CONNECTMENU + i, LoadLocalizedString(IDS_MENU_CONNECT));
|
||||||
AppendMenu(hMenuConn[i], MF_STRING, IDM_DISCONNECTMENU + i, LoadLocalizedString(IDS_MENU_DISCONNECT));
|
AppendMenu(hMenuConn[i], MF_STRING, IDM_DISCONNECTMENU + i, LoadLocalizedString(IDS_MENU_DISCONNECT));
|
||||||
|
AppendMenu(hMenuConn[i], MF_STRING, IDM_RECONNECTMENU + i, LoadLocalizedString(IDS_MENU_RECONNECT));
|
||||||
AppendMenu(hMenuConn[i], MF_STRING, IDM_STATUSMENU + i, LoadLocalizedString(IDS_MENU_STATUS));
|
AppendMenu(hMenuConn[i], MF_STRING, IDM_STATUSMENU + i, LoadLocalizedString(IDS_MENU_STATUS));
|
||||||
AppendMenu(hMenuConn[i], MF_SEPARATOR, 0, 0);
|
AppendMenu(hMenuConn[i], MF_SEPARATOR, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -349,18 +351,21 @@ SetMenuStatus(connection_t *c, conn_state_t state)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_ENABLED);
|
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_ENABLED);
|
||||||
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_GRAYED);
|
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_GRAYED);
|
||||||
|
EnableMenuItem(hMenu, IDM_RECONNECTMENU, MF_GRAYED);
|
||||||
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_GRAYED);
|
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_GRAYED);
|
||||||
}
|
}
|
||||||
else if (state == connecting || state == resuming || state == connected)
|
else if (state == connecting || state == resuming || state == connected)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_GRAYED);
|
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_GRAYED);
|
||||||
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_ENABLED);
|
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_ENABLED);
|
||||||
|
EnableMenuItem(hMenu, IDM_RECONNECTMENU, MF_ENABLED);
|
||||||
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_ENABLED);
|
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_ENABLED);
|
||||||
}
|
}
|
||||||
else if (state == disconnecting)
|
else if (state == disconnecting)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_GRAYED);
|
EnableMenuItem(hMenu, IDM_CONNECTMENU, MF_GRAYED);
|
||||||
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_GRAYED);
|
EnableMenuItem(hMenu, IDM_DISCONNECTMENU, MF_GRAYED);
|
||||||
|
EnableMenuItem(hMenu, IDM_RECONNECTMENU, MF_GRAYED);
|
||||||
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_ENABLED);
|
EnableMenuItem(hMenu, IDM_STATUSMENU, MF_ENABLED);
|
||||||
}
|
}
|
||||||
if (c->flags & (FLAG_SAVE_AUTH_PASS | FLAG_SAVE_KEY_PASS))
|
if (c->flags & (FLAG_SAVE_AUTH_PASS | FLAG_SAVE_KEY_PASS))
|
||||||
|
@ -384,18 +389,21 @@ SetMenuStatus(connection_t *c, conn_state_t state)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_ENABLED);
|
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_ENABLED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_GRAYED);
|
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_GRAYED);
|
||||||
|
EnableMenuItem(hMenuConn[i], IDM_RECONNECTMENU + i, MF_GRAYED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_GRAYED);
|
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_GRAYED);
|
||||||
}
|
}
|
||||||
else if (state == connecting || state == resuming || state == connected)
|
else if (state == connecting || state == resuming || state == connected)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_GRAYED);
|
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_GRAYED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_ENABLED);
|
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_ENABLED);
|
||||||
|
EnableMenuItem(hMenuConn[i], IDM_RECONNECTMENU + i, MF_ENABLED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_ENABLED);
|
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_ENABLED);
|
||||||
}
|
}
|
||||||
else if (state == disconnecting)
|
else if (state == disconnecting)
|
||||||
{
|
{
|
||||||
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_GRAYED);
|
EnableMenuItem(hMenuConn[i], IDM_CONNECTMENU + i, MF_GRAYED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_GRAYED);
|
EnableMenuItem(hMenuConn[i], IDM_DISCONNECTMENU + i, MF_GRAYED);
|
||||||
|
EnableMenuItem(hMenuConn[i], IDM_RECONNECTMENU + i, MF_GRAYED);
|
||||||
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_ENABLED);
|
EnableMenuItem(hMenuConn[i], IDM_STATUSMENU + i, MF_ENABLED);
|
||||||
}
|
}
|
||||||
if (c->flags & (FLAG_SAVE_AUTH_PASS | FLAG_SAVE_KEY_PASS))
|
if (c->flags & (FLAG_SAVE_AUTH_PASS | FLAG_SAVE_KEY_PASS))
|
||||||
|
|
1
tray.h
1
tray.h
|
@ -42,6 +42,7 @@
|
||||||
#define IDM_EDITMENU (MAX_CONFIGS + IDM_VIEWLOGMENU)
|
#define IDM_EDITMENU (MAX_CONFIGS + IDM_VIEWLOGMENU)
|
||||||
#define IDM_PASSPHRASEMENU (MAX_CONFIGS + IDM_EDITMENU)
|
#define IDM_PASSPHRASEMENU (MAX_CONFIGS + IDM_EDITMENU)
|
||||||
#define IDM_CLEARPASSMENU (MAX_CONFIGS + IDM_PASSPHRASEMENU)
|
#define IDM_CLEARPASSMENU (MAX_CONFIGS + IDM_PASSPHRASEMENU)
|
||||||
|
#define IDM_RECONNECTMENU (MAX_CONFIGS + IDM_CLEARPASSMENU)
|
||||||
|
|
||||||
void CreatePopupMenus();
|
void CreatePopupMenus();
|
||||||
void OnNotifyTray(LPARAM);
|
void OnNotifyTray(LPARAM);
|
||||||
|
|
Loading…
Reference in New Issue