-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathReadMe.txt
More file actions
229 lines (194 loc) · 6.07 KB
/
Copy pathReadMe.txt
File metadata and controls
229 lines (194 loc) · 6.07 KB
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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
BUGS
o WM6.5 the keyboard button disappears - phigan on #pocketpc - use hardware button to bring up home/taskmanager
o Can't Send/Receive files from storage card
o DCC not recognised in some formats, notice type maybe?
o Replace "[ ... ]" with "" in channel list
o Unlamify "Trying..." and other status messages
TODO
o Multiple codepage support
o Logging
o Per network/server? channel lists
o Take channel list out of session object
o Auto Reconnect on Disconnection
o Secondary/generated nick
o Resizeable user list
o Network server lists
o DNS lookup on server provided host info
o Make /list window headers sortable
o Show user list by default option
o Hold to scroll right/left through tabs
o Highlight tab arrow with highest notification colour
o Notify list
o Ignore list
o Channel mode window
o Top of window info bar on disconnect/kick/DCC
o Key combinations for navigating the interface, tabs
o Scroll dialogs into view when tabbing to controls off screen
o Tweak scroll behavior when SIP raised/lowered, try to maintain view
o Auto Rejoin on Kick
o DCC Progress meter
o Open/Run/Play files from DCC window
? Simply socket sink to a single callback with messages
? Auto-connect on run
? Single thread socket handling
? DLL Plugins
? Event scripts
? Configurable command menus
? Tray Notifications
? Audio/Vibration notifications?
? Have TabStrip autosize itself instead of MainWindow doing so
? Double click nick to query
? General perform on connect script
? Per network join on connect and perform
x Server capability parsing
x Doesn't properly parse user mode flags like % and &, general problem of any non-EFNet server flag compatibility
x Channel list breaks on non-breaking spaces in nicknames !#%#@ (irc.visp.ru, #sarovnet, "Dr Geegle")
x User changes nick with query open can no longer talk to that user
x Make DCC List window landscape/square friendly
? drano - can't add favourite to channel (with key?)
x psyBNC compat, has usernames starting with -, ( and )
? psyBNC compat, joining channel with many users causes an error (no other details known)
x Remove duplicates when adding stuff to input combo box
x Enable green button at all times since you can always use it :/
x /server and /connect behaviour when already connected
x Channel List doesn't parse some channels correctly
x Remember channel list (per session)
x Landscape friendly Options dlg
x Landscape friendly Channels dlg
x Add List tab to Channels window and ability to join by typing in a new one
x Timestamps
x Allow querying nicks with ' in them?
x Support /commands
x Better Win32 error code reporting
x Popup menu on channel window too, not just tab
x Perform on connect / join channel / channel favourites
x Nick list menu
x Disable popup menus when disconnected
x DCC chat
x DCC file transfer
x URL hotlinks in display
x Popup menu for nicks and channels in display
XML MENU
<MENU NAME="Channel">
<COMMAND NAME="Part">
Part
</COMMAND>
<COMMAND NAME="Say">
Say(InputBar.GetText());
</COMMAND>
<COMMAND NAME="Topic">
Topic(InputBar.GetText());
</COMMAND>
<SUBMENU NAME="Modes">
<COMMAND NAME="+s">
Mode("+s");
</COMMAND>
<COMMAND NAME="+s">
Mode("+s");
</COMMAND>
</SUBMENU>
</MENU>
<MENU NAME="Query">
<COMMAND NAME="Close">
Close
</COMMAND>
<COMMAND NAME="Say">
Say(InputBar.GetText());
</COMMAND>
</MENU>
INCOMING EVENT
o Session gets parsed IRCEvent
o Session updates internal state based on
NICK or MODE changes
JOIN, PART, KICK events, remote QUITs
o Session optionally passes event to script engine
o If script engine indicates the message should not be processed further, break.
o Session handles PING replies, creates QUERY windows if required
o Event passed to output dispatcher for display on the screen
USER INPUT
o Parse command into IRCCommand object
o Pass IRCCommand to script engine
o If script engine indicates the command should not be processed further, break
o Build in or scripted handler builds an IRCEvent
o IRCEvent is passed to IRCSession
o Session passes Event to OutputDispatcher for display
o IRCSession passed IRCEvent to IRCWriter which formats the event for network transport
o Outgoing message is written to tranport
CHANNEL MODES
O - give "channel creator" status;
o - give/take channel operator privilege;
v - give/take the voice privilege;
a - toggle the anonymous channel flag;
i - toggle the invite-only channel flag;
m - toggle the moderated channel;
n - toggle the no messages to channel from clients on the
outside;
q - toggle the quiet channel flag;
p - toggle the private channel flag;
s - toggle the secret channel flag;
r - toggle the server reop channel flag;
t - toggle the topic settable by channel operator only flag;
k - set/remove the channel key (password);
l - set/remove the user limit to channel;
b - set/remove ban mask to keep users out;
e - set/remove an exception mask to override a ban mask;
I - set/remove an invitation mask to automatically override
the invite-only flag;
MENU COMMANDS
- Global Commands
JOIN (input)
QUIT (input)
QUERY (input)
WHOIS (input)
CTCP (input)
NICK (input)
MODE (self) (input)
RAW (input)
DCC
SEND (input)
XMIT (input)
CHAT (input)
- Channel
SAY (channel) (input)
ACT (channel) (input)
NOTICE (channel) (input)
CTCP (channel) (input)
PART (channel)
MODE (channel) (*input)
INVITE (channel) (input)
User
VOICE (channel) (input)
DEVOICE (channel) (input)
OP (channel) (input)
DEOP (channel) (input)
KICK (channel) (input)
BAN (channel) (input)
KICK/BAN (channel) (input)
- Channel User
VOICE (channel) (user)
DEVOICE (channel) (user)
OP (channel) (user)
DEOP (channel) (user)
KICK (channel) (user) (*input)
BAN (channel) (user)
KICK/BAN (channel) (user) (*input)
User
MSG (user) (input)
NOTICE (user) (input)
CTCP (user) (input)
QUERY (user)
- Query
Say(user, input);
Act(user, input);
Notice(user, input);
CTCP(user, input);
Whois(user);
OpenQuer(user);
CloseQuery(user);
Invite(input, user);
DCC
DCCSend(user);
DCCChat(user);
DCCXmit(user);
IMenuProvider:
DoMenu(MENU_TYPE_X, POINT pt, channel, user, input);