from preamble:
"Change Set: sbw-IRC-Enhancements Date: 28 February 2002 Author: Stephan B. Wessels
See (IRCConnectionEnhanced releaseNotes) for a workspace window containing notes.
These are the changes I have made to the IRC client for Squeak. Key new features are a new user interface having one console window per connection and then all console messages, channel messages and private messages are contained inside the main console window using tabbed swapped panes. Also support was added for /WHOIS and /ACTION from the channel chat windows. Other windows not complete support for these commands yet.
Revisions History: (-n is change set revision number). Most recent at top. -41 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
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/.
NEED TO DO: (or would be nice to do) - 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
"!
squeak-dev@lists.squeakfoundation.org