summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/delphi/m_ieview.inc
blob: 5b0a309f683dea9bab91b16f86b9abacf6f47aa9 (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
195
196
197
198
199
200
201
202
203
204
205
206
207
{
  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}
{$DEFINE M_IEVIEW}

const
  MS_IEVIEW_WINDOW              = 'IEVIEW/NewWindow';
  MS_IEVIEW_EVENT               = 'IEVIEW/Event';
  MS_IEVIEW_NAVIGATE            = 'IEVIEW/Navigate';

  ME_IEVIEW_OPTIONSCHANGED      = 'IEVIEW/OptionsChanged';
(*
  MS_IEVIEW_UTILS               = 'IEVIEW/Utils';
  MS_IEVIEW_SHOWSMILEYSELECTION = 'IEVIEW/ShowSmileySelection';
  ME_IEVIEW_NOTIFICATION        = 'IEVIEW/Notification';
*)
  IEW_CREATE       = 1; // create new window (control)
  IEW_DESTROY      = 2; // destroy control
  IEW_SETPOS       = 3; // set window position and size
  IEW_SCROLLBOTTOM = 4; // scroll text to bottom

  IEWM_SRMM    = 0; // regular SRMM
  IEWM_TABSRMM = 1; // TabSRMM-compatible HTML builder
  IEWM_HTML    = 2; // HTML
  IEWM_SCRIVER = 3; // HTML
  IEWM_MUCC    = 4; // MUCC group chats GUI
  IEWM_CHAT    = 5; // chat.dll group chats GUI
  IEWM_HISTORY = 6; // history viewer
  IEWM_BROWSER = 256; // empty browser window

type
  PIEVIEWWINDOW = ^TIEVIEWWINDOW;
  TIEVIEWWINDOW = record
    iType  : int;   // one of IEW_* values
    dwMode : dword; // compatibility mode - one of IEWM_* values
    dwFlags: dword; // flags, one of IEWF_* values
    parent : HWND;  // parent window HWND
    hwnd   : HWND;  // IEW_CREATE returns WebBrowser control's HWND here
    x      : int;   // IE control horizontal position
    y      : int;   // IE control vertical position
    cx     : int;   // IE control horizontal size
    cy     : int;   // IE control vertical size
  end;

const
  IEEDF_UNICODE       = 1; // if set pszText is a pointer to wchar_t string instead of AnsiChar string
  IEEDF_UNICODE_TEXT  = 1; // if set pszText is a pointer to wchar_t string instead of AnsiChar string
  IEEDF_UNICODE_NICK  = 2; // if set pszNick is a pointer to wchar_t string instead of AnsiChar string
  IEEDF_UNICODE_TEXT2 = 4; // if set pszText2 is a pointer to wchar_t string instead of AnsiChar string
// The following flags are valid only for message events (IEED_EVENT_MESSAGE)
  IEEDF_FORMAT_FONT  = $00000100; // if set pszFont (font name) is valid and should be used
  IEEDF_FORMAT_SIZE  = $00000200; // if set fontSize is valid and should be used
  IEEDF_FORMAT_COLOR = $00000400; // if set color is valid and should be used
  IEEDF_FORMAT_STYLE = $00000800; // if set fontSize is valid and should be used

  IEEDF_READ = $00001000; // if set
  IEEDF_SENT = $00002000; // if set
  IEEDF_RTL  = $00004000; // if set

  IEED_EVENT_MESSAGE      = $0001; // message
  IEED_EVENT_STATUSCHANGE = $0002; // status change
  IEED_EVENT_FILE         = $0003; // file
  IEED_EVENT_ERRMSG       = $0005; // error message
  IEED_EVENT_SYSTEM       = $0006; // system event

  IEED_MUCC_EVENT_MESSAGE = $0001; // message
  IEED_MUCC_EVENT_TOPIC   = $0002; // topic change
  IEED_MUCC_EVENT_JOINED  = $0003; // user joined
  IEED_MUCC_EVENT_LEFT    = $0004; // user left
  IEED_MUCC_EVENT_ERROR   = $0005; // error

// MUCC-related dwData bit flags
  IEEDD_MUCC_SHOW_NICK       = $00000001;
  IEEDD_MUCC_MSG_ON_NEW_LINE = $00000002;
  IEEDD_MUCC_SHOW_DATE       = $00000010;
  IEEDD_MUCC_SHOW_TIME       = $00000020;
  IEEDD_MUCC_SECONDS         = $00000040;
  IEEDD_MUCC_LONG_DATE       = $00000080;

  IEED_GC_EVENT_HIGHLIGHT    = $8000;
  IEED_GC_EVENT_MESSAGE      = $0001;
  IEED_GC_EVENT_TOPIC        = $0002;
  IEED_GC_EVENT_JOIN         = $0003;
  IEED_GC_EVENT_PART         = $0004;
  IEED_GC_EVENT_QUIT         = $0006;
  IEED_GC_EVENT_NICK         = $0007;
  IEED_GC_EVENT_ACTION       = $0008;
  IEED_GC_EVENT_KICK         = $0009;
  IEED_GC_EVENT_NOTICE       = $000A;
  IEED_GC_EVENT_INFORMATION  = $000B;
  IEED_GC_EVENT_ADDSTATUS    = $000C;
  IEED_GC_EVENT_REMOVESTATUS = $000D;

// GC-related dwData bit flags
  IEEDD_GC_SHOW_NICK       = $00000001;
  IEEDD_GC_SHOW_TIME       = $00000002;
  IEEDD_GC_SHOW_ICON       = $00000004;
  IEEDD_GC_MSG_ON_NEW_LINE = $00001000;

  IE_FONT_BOLD      = $000100; // Bold font flag
  IE_FONT_ITALIC    = $000200; // Italic font flag
  IE_FONT_UNDERLINE = $000400; // Underlined font flags

type
  PtagIEVIEWEVENTDATA = ^TtagIEVIEWEVENTDATA;
  TtagIEVIEWEVENTDATA = record
    iType    :int;       // Event type, one of MUCC_EVENT_* values
    dwFlags  :dword;     // Event flags - IEEF_*
    fontName :PAnsiChar;     // Text font name
    fontSize :int;       // Text font size (in pixels)
    fontStyle:int;       // Text font style (combination of IE_FONT_* flags)
    color    :TCOLORREF; // Text color
    Nick     :TChar;     // Nick, usage depends on type of event
    Text     :TChar;     // Text, usage depends on type of event
    dwData   :dword;     // dword data e.g. status
    bIsMe    :bool;      // TRUE if the event is related to the user
    time     :dword;     // Time of the event
    hEvent   :TMEVENT;   // Database event handle, if present
    next     :PtagIEVIEWEVENTDATA;
  end;
  PIEVIEWEVENTDATA = PtagIEVIEWEVENTDATA;
  TIEVIEWEVENTDATA = TtagIEVIEWEVENTDATA;

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

  IEEF_RTL          = 1; // turn on RTL support
  IEEF_NO_UNICODE   = 2; // disable Unicode support
  IEEF_NO_SCROLLING = 4; // do not scroll logs to bottom

type
  tagIEVIEWEVENT = record
    case byte of
      0: (hDbEventFirst:TMEVENT);
      1: (eventData    :PIEVIEWEVENTDATA);
  end;

  PIEVIEWEVENT = ^TIEVIEWEVENT;
  TIEVIEWEVENT = record
    iType    :int;            // one of IEE_* values
    dwFlags  :dword;          // one of IEEF_* values
    hwnd     :HWND;           // HWND returned by IEW_CREATE
    hContact :TMCONTACT;      // contact
    Event    :tagIEVIEWEVENT; // first event to log, when IEE_LOG_EVENTS
                              // returns it will contain the last event
                              // actually logged or NULL if no event was logged
    count    :int;            // number of events to log
    codepage :int;            // ANSI codepage
    pszProto :PAnsiChar;
  end;
(*
type
  PIEVIEWSHOWSMILEYSEL = ^TIEVIEWSHOWSMILEYSEL;
  TIEVIEWSHOWSMILEYSEL = record
    cbSize       : int;    // size of the structure
    Protocolname : PAnsiChar;  // protocol to use... if you have defined a protocol,
                           // u can use your own protocol name. Smiley add will
                           // automatically select the smileypack that is
                           // defined for your protocol. Or, use "Standard" for
                           // standard smiley set. Or "ICQ" if you
                           // prefer those icons. If not found or NULL:
                           // "Standard" will be used
    xPosition    : int;    // Postition to place the selectwindow
    yPosition    : int;
    Direction    : int;    // Direction (i.e. size upwards/downwards/etc) of
                           // the window 0, 1, 2, 3
    hwndTarget   : HWND;   // Window, where to send the message when smiley is
                           // selected.
    targetMessage: dword;  // Target message, to be sent.
    targetWParam : LPARAM; // Target WParam to be sent (LParam will be AnsiChar*
                           // to select smiley) see the example file.
  end;
*)
const
  IEN_NAVIGATE = 1; // navigate to the given destination
  IENF_UNICODE = 1; // if set urlW is used instead of urlW

type
  IEVIEWNAVIGATE = record
    iType  :int;   // one of IEN_* values
    dwFlags:dword; // one of IEEF_* values
    hwnd   :HWND;  // HWND returned by IEW_CREATE
    url    :TChar; // Text, usage depends on type of event
end;

{$ENDIF}