summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/m_ieview.h
blob: 44b8d5201dee2b736d3d800a1be332b9f973967a (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
/*

IEView Plugin for Miranda IM
Copyright (C) 2005  Piotr Piastucki

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/

#ifndef M_IEVIEW_INCLUDED
#define M_IEVIEW_INCLUDED

#define MS_IEVIEW_WINDOW   "IEVIEW/NewWindow"
#define MS_IEVIEW_EVENT    "IEVIEW/Event"
#define MS_IEVIEW_NAVIGATE "IEVIEW/Navigate"

#define ME_IEVIEW_OPTIONSCHANGED  "IEVIEW/OptionsChanged"

/* IEView window commands */
#define IEW_CREATE  1               // create new window (control)
#define IEW_DESTROY 2               // destroy control
#define IEW_SETPOS  3               // set window position and size
#define IEW_SCROLLBOTTOM 4          // scroll text to bottom

/* IEView window type/mode */
#define IEWM_TABSRMM  1             // TabSRMM-compatible HTML builder
#define IEWM_SCRIVER  3             // Scriver-compatible HTML builder
#define IEWM_MUCC     4             // MUCC group chats GUI
#define IEWM_CHAT     5             // chat.dll group chats GUI
#define IEWM_HISTORY  6             // history viewer
#define IEWM_BROWSER  256           // empty browser window

typedef struct {
	int			cbSize;             // size of the strusture
	int			iType;				// one of IEW_* values
	DWORD		dwMode;				// compatibility mode - one of IEWM_* values
	DWORD		dwFlags;			// flags, one of IEWF_* values
	HWND		parent;             // parent window HWND
	HWND 		hwnd;               // IEW_CREATE returns WebBrowser control's HWND here
	int			x;                  // IE control horizontal position
	int			y;                  // IE control vertical position
	int			cx;                 // IE control horizontal size
	int			cy;                 // IE control vertical size

} IEVIEWWINDOW;

#define IEEDF_UNICODE 			0x00000001          // if set pszText is a pointer to wchar_t string instead of char string
#define IEEDF_UNICODE_TEXT		0x00000001          // if set pszText is a pointer to wchar_t string instead of char string
#define IEEDF_UNICODE_NICK		0x00000002          // if set pszNick is a pointer to wchar_t string instead of char string
#define IEEDF_UNICODE_TEXT2		0x00000004          // if set pszText2 is a pointer to wchar_t string instead of char string

/* The following flags are valid only for message events (IEED_EVENT_MESSAGE) */
#define IEEDF_FORMAT_FONT		0x00000100 // if set pszFont (font name) is valid and should be used
#define IEEDF_FORMAT_SIZE		0x00000200 // if set fontSize is valid and should be used
#define IEEDF_FORMAT_COLOR		0x00000400 // if set color is valid and should be used
#define IEEDF_FORMAT_STYLE		0x00000800 // if set fontSize is valid and should be used

#define IEEDF_READ				0x00001000 // if set
#define IEEDF_SENT				0x00002000 // if set
#define IEEDF_RTL				0x00004000 // if set

#define IEED_EVENT_MESSAGE			0x0001 // message
#define IEED_EVENT_STATUSCHANGE		0x0002 // status change
#define IEED_EVENT_FILE				0x0003 // file
#define IEED_EVENT_URL				0x0004 // url
#define IEED_EVENT_ERRMSG           0x0005 // error message
#define IEED_EVENT_SYSTEM           0x0006 // system event

#define IEED_MUCC_EVENT_MESSAGE		0x0001 // message
#define IEED_MUCC_EVENT_TOPIC		0x0002 // topic change
#define IEED_MUCC_EVENT_JOINED		0x0003 // user joined
#define IEED_MUCC_EVENT_LEFT		0x0004 // user left
#define IEED_MUCC_EVENT_ERROR		0x0005 // error

/* MUCC-related dwData bit flags */
#define IEEDD_MUCC_SHOW_NICK		0x00000001
#define IEEDD_MUCC_MSG_ON_NEW_LINE	0x00000002
#define IEEDD_MUCC_SHOW_DATE		0x00000010
#define IEEDD_MUCC_SHOW_TIME		0x00000020
#define IEEDD_MUCC_SECONDS			0x00000040
#define IEEDD_MUCC_LONG_DATE		0x00000080

#define IEED_GC_EVENT_HIGHLIGHT 	0x8000
#define IEED_GC_EVENT_MESSAGE   	0x0001
#define IEED_GC_EVENT_TOPIC     	0x0002
#define IEED_GC_EVENT_JOIN      	0x0003
#define IEED_GC_EVENT_PART      	0x0004
#define IEED_GC_EVENT_QUIT      	0x0006
#define IEED_GC_EVENT_NICK      	0x0007
#define IEED_GC_EVENT_ACTION    	0x0008
#define IEED_GC_EVENT_KICK      	0x0009
#define IEED_GC_EVENT_NOTICE    	0x000A
#define IEED_GC_EVENT_INFORMATION   0x000B
#define IEED_GC_EVENT_ADDSTATUS     0x000C
#define IEED_GC_EVENT_REMOVESTATUS  0x000D

/* GC-related dwData bit flags */
#define IEEDD_GC_SHOW_NICK			0x00000001
#define IEEDD_GC_SHOW_TIME			0x00000002
#define IEEDD_GC_SHOW_ICON			0x00000004
#define IEEDD_GC_MSG_ON_NEW_LINE	0x00001000

#define IE_FONT_BOLD			0x000100	// Bold font flag
#define IE_FONT_ITALIC			0x000200	// Italic font flag
#define IE_FONT_UNDERLINE		0x000400	// Underlined font flags

typedef struct tagIEVIEWEVENTDATA {
	int			cbSize;
	int			iType;				// Event type, one of MUCC_EVENT_* values
	DWORD		dwFlags;			// Event flags - IEEF_*
	const char *fontName;			// Text font name
	int			fontSize;			// Text font size (in pixels)
	int         fontStyle;          // Text font style (combination of IE_FONT_* flags)
	COLORREF	color;				// Text color
	union {
		const TCHAR *ptszNick;		// Nick, usage depends on type of event
		const char *pszNick;		// Nick - ANSII
		const wchar_t *pszNickW;    // Nick - Unicode
	};
	union {
		const TCHAR *ptszText;		// Text, usage depends on type of event
		const char *pszText;		// Text - ANSII
		const wchar_t *pszTextW;	// Text - Unicode
	};
	DWORD		dwData;				// DWORD data e.g. status see IEEDD_* values
	BOOL		bIsMe;				// TRUE if the event is related to the user
	DWORD		time;				// Time of the event
	struct tagIEVIEWEVENTDATA *next;
	union {
		const TCHAR *ptszText2;			// Text2, usage depends on type of event
		const char *pszText2;			// Text2 - ANSII
		const wchar_t *pszText2W;		// Text2 - Unicode
	};
} IEVIEWEVENTDATA;

/* IEView events */
#define IEE_LOG_DB_EVENTS  	1       // log specified number of DB events
#define IEE_CLEAR_LOG		2       // clear log
#define IEE_GET_SELECTION	3       // get selected text
#define IEE_SAVE_DOCUMENT	4       // save current document
#define IEE_LOG_MEM_EVENTS 	5       // log specified number of IEView events

/* IEView event flags */
#define IEEF_RTL          1           // turn on RTL support
#define IEEF_NO_UNICODE   2           // disable Unicode support - valid for IEE_LOG_DB_EVENTS and IEE_GET_SELECTION events

#define IEVIEWEVENT_SIZE_V1 28
#define IEVIEWEVENT_SIZE_V2 32
#define IEVIEWEVENT_SIZE_V3 36

typedef struct {
	int cbSize;           // size of the strusture
	int iType;				 // one of IEE_* values
	DWORD dwFlags;			 // one of IEEF_* values
	HWND hwnd;            // HWND returned by IEW_CREATE
	HCONTACT hContact;    // contact
	union {
		HANDLE hDbEventFirst;   // first event to log, when IEE_LOG_EVENTS returns it will contain
										// the last event actually logged or NULL if no event was logged (IEE_LOG_EVENTS)
		IEVIEWEVENTDATA *eventData;	// the pointer to an array of IEVIEWEVENTDATA objects (IEE_LOG_IEV_EVENTS)
	};
	int count;            // number of events to log
	int codepage;         // ANSI codepage
	const char *pszProto; // Name of the protocol
} IEVIEWEVENT;

#define IEN_NAVIGATE 	1       // navigate to the given destination
#define IENF_UNICODE	1       // if set urlW is used instead of urlW

typedef struct {
	int			cbSize;             // size of the strusture
	int			iType;				// one of IEN_* values
	DWORD		dwFlags;			// one of IEEF_* values
	HWND		hwnd;               // HWND returned by IEW_CREATE
	union {
		const char *url;			// Text, usage depends on type of event
		const wchar_t *urlW;		// Text - Unicode
	};
} IEVIEWNAVIGATE;

#endif