summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/m_toptoolbar.h
blob: 5ef3a2035286b77ff3d158f40dc7b3c732cc64eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#ifndef M_TOPTOOLBAR_H
#define M_TOPTOOLBAR_H

#define TTB_OPTDIR "TopToolBar"

//button flags
#define TTBBF_DISABLED       0x0001
#define TTBBF_VISIBLE        0x0002
#define TTBBF_PUSHED         0x0004
#define TTBBF_SHOWTOOLTIP    0x0008
#define TTBBF_ISSEPARATOR    0x0020
#define TTBBF_ISLBUTTON      0x0040
#define TTBBF_ICONBYHANDLE   0x0080
#define TTBBF_ISSBUTTON      0x0100
#define TTBBF_ASPUSHBUTTON   0x0200

typedef struct {
	int cbSize;
	union {
		char *pszService;
		TCHAR *program;
	};
	DWORD dwFlags;
	LPARAM lParamUp;
	WPARAM wParamUp;
	LPARAM lParamDown;
	WPARAM wParamDown;
	char *name;
	union {
		HICON hIconUp;
		HANDLE hIconHandleUp;
	};
	union {
		HICON hIconDn;
		HANDLE hIconHandleDn;
	};

	char *pszTooltipUp;
	char *pszTooltipDn;
}
	TTBButton, * lpTTBButton;

//=== EVENTS ===
/*
toptoolbar/moduleloaded event
wParam = lParam = 0
Called when the toolbar services are available

!!!Warning you may work with TTB services only in this event or later.

*/
#define ME_TTB_MODULELOADED   "TopToolBar/ModuleLoaded"

/*
toptoolbar/initbuttons event
wParam = lParam = 0
Called when the toolbar needs to add default buttons
*/
#define ME_TTB_INITBUTTONS   "TopToolBar/InitButtons"


//=== SERVICES ===
/*
toptoolbar/addbutton service
wparam = (TTBButton*)lpTTBButton
lparam = hLangpack
returns: hTTBButton - handle of added button on success, -1 on failure.
*/

extern int hLangpack;

__forceinline HANDLE TopToolbar_AddButton(TTBButton *pButton)
{	return (HANDLE)CallService("TopToolBar/AddButton", (WPARAM)pButton, hLangpack);
}

/*
toptoolbar/removebutton service
wparam = (HANDLE)hTTButton
lparam = 0
returns: 0 on success, -1 on failure.
*/
#define MS_TTB_REMOVEBUTTON					"TopToolBar/RemoveButton"

/*
toptoolbar/setstate service
wparam = (HANDLE)hTTButton
lparam = (LPARAM) state
returns: 0 on success, -1 on failure.
*/
#define TTBST_PUSHED			1
#define TTBST_RELEASED		2

#define MS_TTB_SETBUTTONSTATE					"TopToolBar/SetState"

/*
toptoolbar/getstate service
wparam = (HANDLE)hTTButton
lparam = 0
returns: state on success, -1 on failure.
*/
#define MS_TTB_GETBUTTONSTATE					"TopToolBar/GetState"

/*
toptoolbar/getoptions service
(HIWORD)wparam = (HANDLE)hTTButton
(LOWORD)wparam = TTBO_FLAG
lparam = 0,or lparam=lpTTBButton if flag=TTBO_ALLDATA
returns: value on success, -1 on failure.
*/
#define TTBO_FLAGS            0     //get/set all flags
#define TTBO_WIDTH            2     //not impemented
#define TTBO_HEIGHT           3     //not impemented
#define TTBO_TIPNAME          4     //tool tip name
#define TTBO_ALLDATA          5     //change all data via lparam=lpTTBButton


#define MS_TTB_GETBUTTONOPTIONS					"TopToolBar/GetOptions"

/*
toptoolbar/setoptions service
(HIWORD)wparam = (HANDLE)hTTButton
(LOWORD)wparam = TTBO_FLAG
lparam = value
returns: 1 on success, -1 on failure.
*/
#define MS_TTB_SETBUTTONOPTIONS					"TopToolBar/SetOptions"

/*
toptoolbar/setcustomproc service
wparam = pfnCustomproc
lparam = procedure parameter
returns: always returns 0.
*/

#define TTB_WINDOW_HANDLE   ((HANDLE)-1)

typedef void (__cdecl *pfnCustomProc)(HANDLE hTTButton, HWND hwndBtn, LPARAM userInfo);

__forceinline void TopToolbar_SetCustomProc(pfnCustomProc pFunc, LPARAM lParam)
{	CallService("TopToolBar/SetCustomProc", (WPARAM)pFunc, lParam);
}

#endif