[ENH] sbw-IRC-Enhancements

swessels at one.net swessels at one.net
Sat Jan 28 03:57:01 UTC 2012


from preamble:

"Change Set:		sbw-IRC-Enhancements
Date:			28 February 2002
Author:			Stephan B. Wessels

GENERAL NOTES:
The existing IRC cllient has been left alone and a subclassed client was
created.

For background IRC protocol information please see
http://www.irchelp.org/irchelp/rfc/.

See (IRCConnectionEnhanced releaseNotes) for a workspace window
containing
all release notes.

Key new features include:
	A new user interface having one console window per connection 
	and then having all console messages, channel messages and private 
	messages contained inside the main console window using tabbed 
	swapped panes.

	Support was added for /WHOIS and /ACTION from the channel chat
	windows.  Other windows do not have complete support for these 
	commands yet.

	The channel messages text, private messages text, and console messages
	text panes are read-only.  This allows you to put the cursor over
either
	the input pane at the bottom or the actual text pane and begin typing.
	The input text you type is sent only to the input pane at the bottom.
	Copy and Find operations are still possible with the read-only text
pane
	content.

	You can jump to a channel from the channels listing pane by one ot
	two techniques.  First you can select a channel from the produced list.
	Second, you can use the Prompted Channel button and be asked for
	the name of a channel you want to join.  The channel name does not
	need to appear in the list.  Further a check is made against the
channel
	name you enter and a # is prefixed if you left it off.

	The console Connect button indicates the state of the connection.  It
	highlights in a color to indicate that you are connected.  The label of
	the button also changes to Disconnect once you are connected.  If your
	connection drops by itself, for some reason, the button color shows
	another color to indicate it was dropped and the button text is changed
	to Connect.

	The Channels list pane is a multi-column pane.  The Refresh button also
	changes color to indicate that a refresh is active.  A channel refresh
	action can take a while so the tag of the Refresh button also attempts
	to update with an indication of the number of channels fetched so far
	as an indicator of progress.

	The channel chat input pane performs Nick Completion.  Anywhere on
	the input text line you are typing you can begin to type a few
characters
	from the beginning of a channel Nick and hit the tab key.  This will
	complete the nick tag for you.  If there is more than one Nick that
	begin with the same characters, the tab key will rotate through them
	for you.  You can also do Nick Completion multiple times on the same
	line of text.

	A leading tab on a channel chat input line is invalid and ignored.
	Also empty input lines are ignored.

	Highlilght your transmitted messages in the channel chat pane with
	a color.  Also, messages that have your nick in them on the channel
	chat pane will be highlighted in another color.

	/ACTION is supported from the channel chat input.  You can type in
	a command like
		/action looks around room
	and that message will be sent as an ACTION message to the channel.
	All ACTION messages are highlighed in the channel chat text pane in
	italics.

	The channell chat pane is formatted into 2 columns.  The left most
	column is the nick and the next column to the right shows the
	typed text.

	New server configuraton dialogs.  Includes the ability to tailor
options
	while connected.  Modification of connection parameters for the current
	session is prohibited while connected.

	Connection Profiles are supported.  You can specify a unique
	set of connection parameters for any session and save them in a
	list.  The options you select when you create a new profile are those
	of the current profile.

	Added a built-in table of many IRC servers you can choose from with
	a dialog window.

	You mayhave multiple console sessions open at the same time, each
	having a unique IRC server connection.  The title of the console window
	reflects the basic parameters of that connected session.

	Added support for roll back/forward of previously typed text.  Use the
	up and down arrow keys to scroll through text lines.

	/WHOIS command sends response from the server to your channel chat
	window now.

	Only sends private message to the Provate pane that are NOT already
	being sent to another private messages pane.  That is, if you have a 
	private messages pane open the responses there are no longer duplicated
	in the Private Messages window.

	Tabbed channel text and private chat panes have their tabs highlighted
	if messages appear there while you have another pane in front.  You
	can use this feature to watch for activity on a channel or private
	chat.

	Channel member JOINS and PARTS are now logged to the channel chat
	text.  There are options to disable this.

	An option is provided that supported INVITE requests.  When you get an
	INVITE request to join another channel this option will allow automatic
	opening of that channel then adding you to the members there.

	An option is provided that automatically opens up a private chat
	window if you receive an unsolicitied private message.  This can
	include server messages and NICKSERV messages.

	Added support for multiple line input to a channel and private chat
	pane.  This allows you to know PASTE into a channel.

	Channel members are now listed in a logical order.  Channel operators
	are at the top, followed by +voiced channel members and then
	normal members.  Also, the nicks for operators are shown in red
	on the channel members list and the voiced members are show in
	another color.

	Added support for the /CLEAR command to console, private chat and
	channel chat windows.  /CLEAR will clear the contents of the text
	pane.  This command is not sent to the IRC server of course.

	Added /INSPECT to console, private and channel chat input pane
	commands.  This will cause a Squeak Inspector to open up on the model
	for that text pane.

	Support provided for NICK change messages receieved from the IRC
server.

	/NICK command is now supported from the channel chat input pane.

Revisions History:
	(-n is change set revision number up until -41, when code was
published).
	Entries made after that are by release date.  Most recent at top.

6-mar-2002 #1
	Bug in editing a profile name was fixed.
	Added logging of commands in the console.
	Incorrectly setting our nick any time someone changes theirs.  Oops.
5 mar 2002 #4
	Added button to profiles dialog that saves the current configuration
	as a new profile.
5 mar 2002 #3
	Server based messages that are posted to channel chat panes are now
	aligned with the columns of other member base chat traffic.
5 mar 2002 #2
	More tweaks to the multi column headered morph so that headers show
	up even when the list is empty.
	Mode changes noted in channel chat now show NICK of person
	that initiated the mode change (+/- voice/op).
5 mar 2002 #1
	Fixed a bug where profile names could be
	mismatched from the keys used to store them.
	Factored the release notes into 3 editable strings.  One for features
	enumeration, one for revisions history and a to-do list.
	Added some utility functions that make it easier to produce a new
	change set preamble that agrees with the release notes.
	Fixed a bug in the multicolumn header morph where it would try
	to draw headers before the list contents where known.
	Channels pane redesign of layout.
4 mar 2002
	Added provision to edit an existing profile.
	Also added provision for user to change the server selected from
	the profile dialog.
-41	(published 4 mar 2002) Fixed a bug pointed out by Bijan Parsia.
	Thanks.
-40	Problem with post load initializer.
-39	Trim blanks around any added profile name.
	Generate better initial profile names from server names.
	Cosmetics.
-38	Extended multi column list morph with a new morph 
PluggableMultiColumnListMorphByItemWithHeader used in the profiles
	selection dialog.  This morph provides multi-column ability with a
built-in
	header row.
	Disable active editing of configuration while connected.
	Profiles are working.  Note that the current options are copied into
any new
	profile you create.-37	Factoring of message sending code.  Still needs
more
	cleanup in that code.
	Made options available on a per connection basis.  Each connection can
have
	their own unique options.  When you open up a new console window from
	the World menu the options are set to the defaults.  When you open up a
	new console from the New Console button the options from the existing
	console window are copied forward to the new one.
	Added support for Profiles.  A Profile contains a nick, server, and
options
	which can be used for initializing a connection.  Profiles management
for
	the user are not coded yet.
-36	Factoring.
-35	Handles nick change messages received from IRC server.
	Also properly handles /whois and /nick changes initiated from channel
window.
-34	Fetch of channels list shows update count while fetching.
	Detect when IRC server fails to send channel list because of server
loading.
-33	fixed problem parsing PART messages from some servers
	Generalized the reserved keywords (CLEAR, INSPECT) to be included in
	any IRC input pane (console, channel or private messages).
-32	Support /CLEAR in channel chat window.  Added support for /INSPECT
too.
-31	Fixed some bugs with mode changes in channels
	Fixed problem with connection dialog/setup window after being
collapsed.
	Better factoring of TabbedSwappingControl morph.
	Lots of factoring in IRCConnectionEnhanced.
-30	Fixed bug in servers populate code.
-29	Show channel member names in logical order with color highlighting
for operators
	and voiced members.  Detected mode changes that impact member status.
	Fixed bug where PART messages were being sometimes sent to the wrong
channel pane.
-28	Fixed problem with post load initializer where populated servers
database was empty.
-27	Bug fix in paste/copy code for channel text.
-26	Handle multiple line inputs, such as can come from a paste
operation.
-25	Cosmetics in text messages from server.
	Added close option to channel text menu.
	Command keys work from the channel and console text panes now.
-24	Change set maintenance.
-23	Fixed problem where new private messages were not causing the tab to
update.
	Open up a chat window pane for private messages we receive except for
from server.
	Member channel joins, parts and quits are now shown in the channel
window panes.
	Support INVITE requests.
	Added Options pane to Setup dialog.
	Factored out most of the swap/tabbed pane into a new pane design used
in
	the Config dialog.
-22	minor code factoring.
-21	/ACTION messages supported in channel chat.
-20	Added support for /WHOIS command to channel chat windows and users
menu.
-19	Added rollback of messages to console window pane.
	Fixed bug in private chat window where ""me"" was still being used as
nick for
	outgoing messages.
	Fixed places where we were using asLowercase instead of asIRCLowercase.
	Stop sending private messages to private messages redundantly pane if
there is already a 
	private chat window open to get them.
	Factored sound messages for possible future enhancement.
-18	Since we can now have multiple consoles open on different IRC
servers, the title of
	the window now reflects the connection.
	Rollback of previously typed text.
	Fixed the bug where there was a delay before channel members were
displayed.
-17	Redesign of the ""population/status"" pane.
	First hooks put into place to add support for find/copy etc from
keyboard in the
	channel text pane.  Keys are not mapped yet.
-16	New server configuration dialog allows choices from many possible
IRC servers.
	Added a built intable of several known IRC servers.
-15	Dropped the ""me"" designations for the real nick.
	Factored all the colors into IRCClientColors class.  It's not as nice
as a having
	color preferences management, but you can edit them all in one place. 
An
	extension would be to allow storing and loading of customized colors
without
	code changes.
	Highlight transmitted messages in a color, and highgllight recived
messages
	that contain our nick in a color.
	Highlight ACTION message responses with italic.
	Channel chat pane breaks nicks into column before messages.
	Fix problems with automatic nick completion.  It used to take more than
1 TAB
	key hit to get started, and you could not embed TABs in the text line
if they were
	not part of nick search.  Also, you could not begin a line with a tab. 
In the case
	where someone types a tab in the first column and there are no
characters to
	match against a nick, treat it like someone is typing indented text.
-14	Nick completion.  We trap the TAB key and rotate through nicks.
-13	bug fixes and more cosmetic tweaks
-12	bug in menu for channel chat pane fixed.
	added menu to private chat panes.
	cosmetics to the population counter pane.
-11	Removed connect button from setup dialog.  Ensured that setup window
could not
	be closed if edits were not accepted.
	Indicate if the connection was dropped by color change in connect
button.
	Reconnect channels and private chats that were open if the user
connectd
	after a dropped
	connection.
-10	added some edit menu functions to the readonly chat pane.
	added menu to user list in chat pane.
	selected channels button will bring existing channels window into focus
if
	already defined.
	on manual disconnect, close the closeable tabs to avoid later
conflicts.
	made the users status pane (population: x) read only.
	cleanup the borders and pane background colors for the user list in the
chat pane.
	cleanup the borders and pane background colors for the channel buttons.
	private message windows have the same focus properties as the channel
browsers.
	Input goes to the input pane.
	made console pane readonly and again used the input pane to catch
focused keystrokes.
	replaced console menu with one more appropriate since functions from
old
	menu are now buttons.
	show channel list refresh is busy by way of button colors.
	removed special button from channels pane.
-9	Better connect/disconnect detect and indication.
	Release the channel listeners when we close a tabbed pane.
	Handle rotate left/right of tab panes.
-8	Opening up a private chat pane now becomes the active tabbed pane.
	Highlight the tabbed panes that see messages while you have another
pane in front.
	Check for missing # in front of prompted channel names.
-7	detect socket drop and change connect button state to indicate what
happened.
	Fixed missing
	when someone parted from a channel.
-6	bugs fixed
-5	new provision for closing tabbed panes.  Only specific panes can be
closed.  Also
	added buttons to move pane tabs left and right but nothing implemented
to support
	those features yet,
-4	more clean up of little bugs
-3	clean up of change set contents.
-2	fixed problem with send of private messages.  Input pane was not
constructed properly
-1	general release

NEED TO DO: (or would be nice to do)
	These are in no special priority order.

- cleanup code to add class methods defining new constants for commands
I have added.

- mIRC colored text

- logging

- DCC send/recv

- PING response for server timeout?  Verify this mechanism is working
right.  I occasionally get disconnects and think this may be why.

- add 401 no such nick/channel to channel feedback

- /away needs to be supported

- /action does not work from private discuss pane.  This problem is best
resolved by first refactoring all the communications paths.  It is a
pretty confusing maze right now and with the addition of local and
special messages support the problem gets worse.

- disconnect does not close private message panes

"!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sbw-IRC-Enhancements.cs.gz
Type: application/octet-stream
Size: 64482 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20120128/d3845312/sbw-IRC-Enhancements.cs.obj


More information about the Squeak-dev mailing list