pax_global_header00006660000000000000000000000064106716332070014517gustar00rootroot0000000000000052 comment=55b4d4e8e47f5efaf2d40acafda09b5d1962dca8 TalkSoup-1.0alpha-32-g55b4d4e/000077500000000000000000000000001067163320700155725ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/COPYING000066400000000000000000000431101067163320700166240ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. TalkSoup-1.0alpha-32-g55b4d4e/ChangeLog000066400000000000000000000235101067163320700173450ustar00rootroot000000000000002005-09-06 Andy Ruder * TalkSoup 1.0alpha 2005-07-14 Andrew Ruder * GNUstepOutput/BundlePreferences: Moved help text to external file, corrected help text. Corrected NSTableView handling... * GNUstepOutput/Misc: Added code to debug NSView hierarchies * GNUstepOutput: Complete overhaul of NSTextView initializations, fixing of some corrupted gorms, making text field take on chat font, and other bug fixes. 2005-07-12 Andrew Ruder * GNUstepOutput NetclassesInput: Made changes to allow default quit message to work when quitting the app, closing a window, and /quit. 2005-07-07 Andrew Ruder * GNUstepOutput: Moved to using distributed notifications instead of distributed objects. * GNUstepOutput: Fix autoresize of nickview * GNUstepOutput: Fix tab completion picking up noncommand commandTyping: 2005-06-27 Andrew Ruder * GNUstepOutput: The NSTextField was much too much of a pain to use anymore. I've replaced the typing view full out with a KeyTextView which I think will also allow OS X to work sanely. 2005-06-26 Andrew Ruder * GNUstepOutput: On OS X focusing a textfield causes the action to be sent. This was causing the messages to be sent everytime the window was made key. Instead I am now trapping the key in the field editor so that it works correctly on OS X and GNUstep. 2005-06-25 Andrew Ruder * GNUstepOutput: Fixed serverlist focusing issues. When you remove a server it won't always scroll to the top. * GNUstepOutput: Added 5 .nibs (special thanks to Aaron Glenn for doing this over IRC ;) 2005-06-24 Andrew Ruder * GNUstepOutput: There was a bug in the sorting code for the userlist. The place for typing will now retain it's position when tabs are changed/ windows are taken from being key. 2005-06-22 Andrew Ruder * IRCSwarm: Updating to allow time constraints (to adjust time between events) and correct case on nicknames. * GNUstepOutput: Using bold font correctly. (It was only appropriately applied when the preferences were updated.) Removed caching (over complicated logic) from NSAttributedString. Several bug fixes in TabMasterController.m along the way to reenabling the select previous/next tab/close tab buttons on the menu. (which now work) * TalkSoup.app: I am a fricking retard. I had doubleReleaseCheck on. Yes. That is why it was slow. I... am... a... retard. Retard Retard Retard TalkSoup is fast again. 2005-06-20 Andrew Ruder * All: Additional header changes/code tweaks to allow clean compilation on OS X. (Still no .nib files though... :-/) * All: Improvements on reducing autorelease usage. * GNUstepOutput: Force use of NSMessagePort even when the default is something else. 2005-06-17 Andrew Ruder * Testing: Added a IRCSwarm testing tool that can replay preprocessed xchat logs (perl scripts can be easily written to process any type of log). It will connect to a server and more or less replay those logs. Useful for debugging large amounts of messages. 2005-06-13 Andrew Ruder * All: Filled in lots of headers that will be needed for OS X compilation. Fixed relative paths in GNUmakefile.preambles in Output/GNUstepOutput and Input/NetclassesInput. * GNUstepOutput: /topic command works again, fixed topic inspector to stop double querying the topic. 2005-06-12 Andrew Ruder * GNUstepOutput: dns_helper returns the reverse lookup of the hostname as well. 2005-06-09 Andrew Ruder * GNUstepOutput: Added a helper tool class to ease use of external tools + distributed objects. Moved /server dns look ups to a helper tool Added /alias,/unalias and a default set of aliases * NetclassesInput: Added a warning when using a package version < 1.04 * Highlighting: Added back in the preferences to new preferences system. * DCCSupport: Added back in the preferences to new preferences system 2005-06-08 Andrew Ruder * GNUstepOutput: Changed /scrollback lines to work with new scrollback history mechanism. Obsoleted several unused preferences. ;) * GNUstepOutput: Added Tools/ directory for various helper tools. Began exec_helper (A tool to help with /exec) * GNUstepOutput: Added /exec and /exec -o commands 2005-06-05 Andrew Ruder * GNUstepOutput: Fixed history corruption when closing tab with /close. Fixed notifications when removing tabs so that new selection is sent out as well. 2005-06-02 Andrew Ruder * GNUstepOutput: Added a method to InputController to allow a command to be executed (programmatically) without making it into the history or messing up what the person is currently typing. Added support for // to escape normal command handling: //dev/hda is cool would send /dev/hda is cool to the channel. Fixed autoconnect commands for autoconnected servers. Fixed InputController's hold on ConnectionController when a ContentController is given a new ConnectionController Got rid of some used methods in ConnectionController pertaining to InputController Made InputController stop throwing things in the history. Added Favorites item to the server list that always stays on top. Added support for s// style tab completion 2005-06-01 Andrew Ruder * GNUstepOutput: Topic inspector did not correctly update when someone else applied a new topic. Fixed several memory leaks between interactions with ConnectionController and the ContentControllers. Should drop connections correctly when window is closed. Added a default quit message preference and added to General preferences UI. Added a dealloc routine for the StandardContentController class. Fixed double initialization of the UI for QueryViewControllers and ChannelViewControllers. 2004-01-12 Andy Ruder * Manually applying various attributes to NSTextView subclasses since OS X doesn't support custom subclasses on them. * Added the emoticon bundle (thanks ludovic) * Fixed a memory leak in bundle setup * Fixed a weirdness on selection in bundle setup 2004-01-11 Andy Ruder * Added /ping, /topic to GNUstepOutput * Made /join not require the # on the channels * DCCSupport (finally) has support for using a specific range of ports and setting the block size. A GNUstepOutput preferences panel was added. 2004-01-10 Andy Ruder * Bundle Controller had a bug when dragging to bottom row * GNUstepOutput will make sure bundle prefs are closed when they are unloaded * Worked on making TS compilable on OSX 2004-01-05 Andy Ruder * Updated the server list * Made the server list realphabetize on startup * Moved defaults into external files and into separate bundles * Made Highlighting not screw up the preferences button in bundle setup 2003-12-30 Andy Ruder * Added the ability for bundles to register preferences with GNUstepOutputBundle * Redid Bundle Configurator to use drag'n'drop * Finished Highlighting's preferences 2003-12-21 Andy Ruder * OFTC made it into the server list * made a change to the topic inspector that will hopefully make it look good on OSX 2003-12-19 Andy Ruder * Made /dcc a little more sane on the syntax. * Fixed some early deallocation bugs in delegate messages * fixed user list weirdness * fixed a server list bug when editing two different things 2003-12-17 Andy Ruder * Finished all .nibs, got Server list working as well as all the other things working on the OSX port. * Slightly modified bundle loading to search for bundles in the .app resource path. Will make things simpler to produce distributable binary for TalkSoup at some other time for OSX. 2003-12-15 Andy Ruder * Lots of minor fixes to get OSX working. * Got Preferences, Bundle Setup, Channels, User lists working on OSX. * Made OSX port use the right directory for bundles (Application Support as opposed to ApplicationSupport) 2003-12-14 Andy Ruder * Bundle setup now auto applies its changes. 2003-12-13 Andy Ruder * I am a retard. I did not realize that outlets do not have an automatic retain when assigned to the instance variable. Therefore I should be releasing those things either! The only reason it worked was due to a GNUstep mem-leak. I am a retard! * Fixed a bug with DCC file transfer support where it never would download without an explicit directory given on the /dcc get line. * Got the OSX port actually connected and talking in a channel. 2003-12-07 Andy Ruder * Made the serverlist reuse unconnected windows (with an option to force a new window) * Put in some checks for the validity of the download directory in dcc support 2003-12-06 Andy Ruder * Made a makefile fix that should disable AppKit from being linked in on OSX where it need not be. 2003-11-21 Andy Ruder * Decided I'm actually going to try to use this change log. * Hopefully fixed problem with buttons not showing up in bundle setup gui 2003-10-15 Andy Ruder * TalkSoup compiles on OS X * All bundles had localization info generated. * Moved to using a netclasses framework 2003-09-10 Andy Ruder * Got bundle setup gui in * Added plugin descriptions to all distributed bundles 2003-09-08 Andy Ruder * TalkSoup 0.82pre2 2003-09-01 Andy Ruder * TalkSoup 0.82pre1 2003-06-18 Andy Ruder * TalkSoup 0.81 2003-05-27 Andy Ruder * TalkSoup 0.80 TalkSoup-1.0alpha-32-g55b4d4e/FAQ000066400000000000000000000236751067163320700161410ustar00rootroot00000000000000TalkSoup is a fully-featured IRC client written with the GNUstep framework =============================================================================== Copyright (C) 2003 Andy Ruder TalkSoup 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 Comments are welcome. =============================================================================== Questions covered in this FAQ: 1. Overview 1.1 What is GNUstep? Where do I get it? 1.2 What is so special about TalkSoup? 1.3 what is a bundle? a filter? a plug-in? 2. Installation 2.1 How do I install TalkSoup as a regular user? 2.2 I get messages about it not being able to find bundles. What's wrong? 3. Usage 3.1 I'm new to IRC? Where do I start? 3.2 Wow, this is really cool! Are there any IRC channels where I can find out more about GNUstep? 3.3 How do I load and unload bundles while talksoup is running? 3.4 Is order important on the input/output filters? 3.5 How do I do logging? =============================================================================== 1. Overview 1.1 What is GNUstep? Where do I get it? "GNUstep provides an Object-Oriented application development framework and tool set for use on a wide variety of computer platforms. GNUstep is based on the original OpenStep specification provided by NeXT, Inc. (now Apple)." [www.gnustep.org] What does that mean in English? Well, GNUstep tries to follow the OpenStep API. The OpenStep API is really easy to develop applications with in Objective-C, and it is the same base API used in Cocoa on the Mac OSX operating system. The best place to obtain GNUstep is from its website at http://www.gnustep.org. It may take a while to compile, but other than that the installation process is fairly straight forward if you read the instructions. 1.2 What is so special about TalkSoup? Well, besides being the only IRC client that I know of developed specifically to be used with GNUstep, it is also one of the most flexible IRC clients in existence! TalkSoup at its core does almost nothing except load bundles and allow them to interface between each other. You can have multiple output plugins or multiple input plugins. For example, you could have a ncurses based output, or a GNUstep based output, or even a GTK or QT based output. Also, there also can be multiple input/output filters. For example, I could write a filter that sends a fortune to the channel everytime you type fortune, and it would be completely independent of the output plugin. So if you wrote this 'fortune' output filter, it would work with the ncurses output plugin as well as the QT or GNUstep output plugin. 1.3 What is a bundle? A filter? A plug-in? Throughout the source as well as the documentation for TalkSoup, these terms are used fairly interchangeably. A plug-in, or bundle is simply something that you can load into TalkSoup to extend its' code at runtime. This is helpful because these plug-ins can be loaded and unloaded and dynamically added to TalkSoup. So, for example, you could find a plug-in (or bundle or filter) made for TalkSoup out on the interweb, compile it, and load it straight into TalkSoup while it's still running! 2. Installation 2.1 How do I install TalkSoup as a regular user? To install any correctly written GNUstep program as a regular user, it should just require: export GNUSTEP_INSTALLATION_DIR="$GNUSTEP_USER_ROOT" make make install which will install GNUstep into your $HOME/GNUstep directory. 2.2 I get messages about it not being able to find bundles. What's wrong? TalkSoup's core does almost nothing. You need bundles (GNUstep's version of plugins) to make it do anything. There's a good chance that you may have just installed the core TalkSoup. When you run compile TalkSoup, you must do so from the head directory. For example, andy ~/TalkSoup $ make ; make install Do not do something like: andy ~/TalkSoup/Source $ make ; make install or it will not install any of the output or input plugins. 3. Usage 3.1 I'm new to IRC? Where do I start? You don't need to know a lot of commands to get around on IRC. First of all, you connect to a server. This can either be done manually by typing: /server irc.freenode.net to connect to irc.freenode.net (or you can use another IRC server if you want) or you can use the server list to connect to a freenode server. To change your nickname on the IRC server, you can use: /nick newname to change it. There can only be one person on a IRC server at a time with a particular nickname, so you have to pick something unique! Now, you are connected, hopefully. Now you just need to join a channel that suits your particular interest. There are lots of channels on IRC, and a lot of times you can just guess what the channel name will be. For example, to talk about GNUstep, you can try: /join #gnustep Or you can try a wide variety of other channels like #chat, #linux, #russia, #debian, #irchelp or whatever your interests may be. If you are using the GNUstep output plugin, you will see a list along the right side of all the users in a channel along the right side of the window. You can begin typing to the people in the channel, just press enter when you want to send your message. When you are done talking, you can use a command like: /part #gnustep to just leave a particular channel. Or, if you want to disconnect and leave all the channels, you can use: /quit As with most IRC clients, the GNUstep output plugin supports tab-completion, so if you just type / you should see a list of all the valid commands. The best thing to do is just to experiment and have fun! 3.2 Wow, this is really cool! Are there any IRC channels where I can find out more about GNUstep? If you connect to irc.freenode.net where many open-source projects have discussion channels, you can join the #gnustep channel. Sometimes it takes a few minutes for someone to be around, so you might need to wait a few minutes to get a reply to a question. My nickname is Beregorn, hope to talk to you there! 3.3 How do I load and unload bundles while TalkSoup is running? If you are using the GNUstepOutput bundle, you can very simply run the Bundle Setup from the Info menu. The following procedure will work on any output bundle: To see what bundles you currently have loaded, type /loaded. If you want to load another input or output filter, you can use the /load command. To load a input filter, type /load in and to load a output filter, type /load out . If you leave off the filtername, TalkSoup will tell you which bundles are available to load. The /unload command works very similar to the /load command. If you get everything the way you want it, you can save your bundle preferences by typing /saveloaded. Also, keep in mind that order is important. Due to a deficiency in the Objective-C compiler, the bundles can NOT be unloaded, they can be merely deactivated. So, if you update a bundle, don't expect that unloading and then loading that bundle will get you using the update. You must restart TalkSoup to use the updated bundle. 3.4 Is order important on the input/output filters? YES! To illustrate how it can make a difference, here's an example using the Highlighting and the MessageInTab input filters. Now, Highlighting highlights a tab when someone talks in it (and you don't have that tab focused). MessageInTab simply opens a separate tab for a person when they private message you. Now, let's say currently when you type /loaded it says: Input Filters: Highlighting, MessageInTab Well, you may be wondering why the tab doesn't turn red when someone private messages you and the new tab is opened. Well, that's because TalkSoup goes through the filters in order! First the Highlighting will run, but at that point, there is no open tab for that person, so no highlighting will be done. Now, if you type: /load in Highlighting And then type /loaded again, you should have something like: Input Filters: MessageInTab, Highlighting Now it should work correctly, because when the private message gets to the Highlighting, it will see that there is a tab open and will highlight it. In short, order is important! 3.5 How do I do logging? Ok, first of all, load the logging bundle: /load in Logging Then, the logging bundle is used very simply by /logging It will log everything into the file you specify. To turn off logging, just type: /logging Now, this logging support will only last for that connection. If you disconnect and reconnect, the logging will be turned off. To make it persistent, create a entry in the server list and add /logging to the connection commands. Then the command will be ran everytime you connect. =============================================================================== Copyright (C) 2005 by Andy Ruder TalkSoup-1.0alpha-32-g55b4d4e/GNUmakefile000066400000000000000000000010471067163320700176460ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME=TalkSoup VERSION=1.0alpha ifneq ($(USE_DMALLOC),) ADDITIONAL_OBJCFLAGS += -include stdlib.h -include dmalloc.h ADDITIONAL_LDFLAGS += -ldmalloc endif ifeq ($(USE_APPKIT),) USE_APPKIT = yes endif ifneq ($(USE_APPKIT),yes) USE_APPKIT = no endif export ADDITIONAL_LDFLAGS export ADDITIONAL_OBJCFLAGS export USE_APPKIT SUBPROJECTS = TalkSoupBundles Source Input Output InFilters OutFilters -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/GNUmakefile.postamble000066400000000000000000000001311067163320700216240ustar00rootroot00000000000000after-clean:: $(MAKE) -C Testing clean after-distclean:: $(MAKE) -C Testing distclean TalkSoup-1.0alpha-32-g55b4d4e/InFilters/000077500000000000000000000000001067163320700174715ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/000077500000000000000000000000001067163320700215715ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/Autorename.h000066400000000000000000000025531067163320700240470ustar00rootroot00000000000000/*************************************************************************** Autorename.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Autorename; #ifndef AUTORENAME_H #define AUTORENAME_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Autorename class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Autorename : NSObject @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/Autorename.m000066400000000000000000000030541067163320700240510ustar00rootroot00000000000000/*************************************************************************** Autorename.m ------------------- begin : Wed Oct 12 02:53:26 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Autorename.h" #import #import #import #import @implementation Autorename - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"When a nick is already taken on connect, " @"this plugin will tell TalkSoup to repeatedly try adding a '_' " @"until we get a nick."), nil); } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/English.lproj/000077500000000000000000000000001067163320700243075ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/English.lproj/Localizable.strings000066400000000000000000000001401067163320700301360ustar00rootroot00000000000000/* Skeleton.m */ "Author: " = "Author: "; "Description: " = "Description: "; "None" = "None"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/GNUmakefile000066400000000000000000000011451067163320700236440ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Autorename BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Autorename_LANGUAGES = English Autorename_LOCALIZED_RESOURCE_FILES = Localizable.strings Autorename_PRINCIPAL_CLASS = Autorename Autorename_OBJC_FILES = Autorename.m ifeq ($(OBJC_RUNTIME_LIB), apple) Autorename_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Autorename_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Autorename/GNUmakefile.preamble000066400000000000000000000005401067163320700254300ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/000077500000000000000000000000001067163320700214575ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/AllLanguages/000077500000000000000000000000001067163320700240165ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/AllLanguages/Defaults.plist000066400000000000000000000002141067163320700266370ustar00rootroot00000000000000{ GetTimeout = "30"; SendTimeout = "30"; PortRange = ""; BlockSize = "2000"; CompletedDirectory = "~/"; DownloadedDirectory = "~/"; } TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/AllLanguages/dccsupport_prefs.tiff000066400000000000000000000225641067163320700302660ustar00rootroot00000000000000II*$iip~~~}~}~|}{}abm{|{{ z{!!z{&%    z{))#y{-,'xz21+ xy66/xy;:3xx?>7  xxCC;vxHG? uwNMD uvRQHff uvWVMbSqtu\ZQӼs|W%atua_VMnh`{tuedZbanmmmhsstji^ɳ,,ThLLFstpod3LmqsuthXL CG M Q VZ_diot"x%}(, /QqtvwxxyyxwwvtsR !  #'+/37 ;?D H MQVZ^dhm"q%u(z ,JejknnoopoponmkRS00 Empty Layer      00 00     罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#4     0000   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     G00[00k0.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     !00!00!   00Selection Mask "z00"00" TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCGetter.h000066400000000000000000000033451067163320700234010ustar00rootroot00000000000000/*************************************************************************** DCCGetter.h ------------------- begin : Wed Jan 7 21:08:21 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class DCCGetter; #ifndef DCC_GETTER_H #define DCC_GETTER_H #import #include @class DCCObject, NSFileHandle, NSString, NSTimer; @class NSDictionary, NSHost; @interface DCCGetter : NSObject { NSFileHandle *file; NSString *path; DCCObject *getter; NSString *status; id connection; id delegate; NSTimer *cpsTimer; int cps; uint32_t oldTransferredBytes; } - initWithInfo: (NSDictionary *)aDict withFileName: (NSString *)aPath withConnection: aConnection withDelegate: aDel; - (NSString *)status; - (NSDictionary *)info; - (id)localHost; - (id)remoteHost; - (NSString *)percentDone; - (int)cps; - cpsTimer: (NSTimer *)aTimer; - (NSString *)path; - (void)abortConnection; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCGetter.m000066400000000000000000000102031067163320700233750ustar00rootroot00000000000000/*************************************************************************** DCCGetter.m ------------------- begin : Wed Jan 7 21:08:21 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "DCCGetter.h" #import "DCCObject.h" #import "DCCSupport.h" #import #import #import #import #import #import #import #import #define get_default(_x) [DCCSupport defaultsObjectForKey: _x] #define set_default(_x, _y) \ { [DCCSupport setDefaultsObject: _y forKey: _x];\ [controller reloadData];} #define GET_DEFAULT_INT(_x) [get_default(_x) intValue] #define SET_DEFAULT_INT(_x, _y) set_default(_x, ([NSString stringWithFormat: @"%d", _y])) @implementation DCCGetter - initWithInfo: (NSDictionary *)aDict withFileName: (NSString *)aPath withConnection: aConnection withDelegate: aDel { id dfm; BOOL isDir; if (!(self = [super init])) return nil; dfm = [NSFileManager defaultManager]; if (![dfm fileExistsAtPath: aPath isDirectory: &isDir]) { if (![dfm createFileAtPath: aPath contents: AUTORELEASE([NSData new]) attributes: nil]) { RELEASE(self); return nil; } } else if (isDir) { RELEASE(self); return nil; } connection = RETAIN(aConnection); file = RETAIN([NSFileHandle fileHandleForWritingAtPath: aPath]); path = RETAIN(aPath); getter = [[DCCReceiveObject alloc] initWithReceiveOfFile: aDict withDelegate: self withTimeout: GET_DEFAULT_INT(DCCGetTimeout) withUserInfo: nil]; delegate = aDel; return self; } - (void)dealloc { [cpsTimer invalidate]; DESTROY(cpsTimer); RELEASE(getter); RELEASE(path); RELEASE(file); RELEASE(connection); RELEASE(status); [super dealloc]; } - cpsTimer: (NSTimer *)aTimer { cps = ([getter transferredBytes] - oldTransferredBytes) / 5; oldTransferredBytes = [getter transferredBytes]; return self; } - DCCInitiated: aConnection { return self; } - DCCStatusChanged: (NSString *)aStatus forObject: aConnection { if (status == aStatus) return self; if ([aStatus isEqualToString: DCCStatusTransferring]) { [cpsTimer invalidate]; RELEASE(cpsTimer); oldTransferredBytes = 0; cpsTimer = RETAIN([NSTimer scheduledTimerWithTimeInterval: 5.0 target: self selector: @selector(cpsTimer:) userInfo: nil repeats: YES]); [delegate startedReceive: self onConnection: connection]; } RELEASE(status); status = RETAIN(aStatus); return self; } - DCCReceivedData: (NSData *)data forObject: aConnection { [file writeData: data]; return self; } - DCCDone: aConnection { [cpsTimer invalidate]; DESTROY(cpsTimer); [delegate finishedReceive: self onConnection: connection]; return self; } - (NSString *)status { return status; } - (NSDictionary *)info { return [getter info]; } - (id)localHost { return [connection localHost]; } - (id)remoteHost { return [connection remoteHost]; } - (NSString *)percentDone { id dict = [getter info]; int length; length = [[dict objectForKey: DCCInfoFileSize] intValue]; if (length < 0) { return @"??%"; } return [NSString stringWithFormat: @"%d%%", ([getter transferredBytes] * 100) / length]; } - (int)cps { return cps; } - (NSString *)path { return path; } - (void)abortConnection { [getter abortConnection]; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCObject.h000066400000000000000000000072011067163320700233500ustar00rootroot00000000000000/*************************************************************************** DCCObject.h ------------------- begin : Wed Jul 2 15:23:24 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class DCCObject, DCCSendObject, DCCReceiveObject, NSString, NSDictionary, NSData; NSString *BuildDCCSendRequest(NSDictionary *info); extern NSString *DCCStatusTransferring; extern NSString *DCCStatusError; extern NSString *DCCStatusTimeout; extern NSString *DCCStatusDone; extern NSString *DCCStatusConnecting; extern NSString *DCCStatusAborted; extern NSString *DCCInfoFileName; //NSString extern NSString *DCCInfoFileSize; //NSNumber extern NSString *DCCInfoPort; //NSNumber extern NSString *DCCInfoHost; //NSHost extern NSString *DCCInfoNick; //NSString #ifndef DCCOBJECT_H #define DCCOBJECT_H /* The DCC support's ideas(and much of the code) came mostly from * Juan Pablo Mendoza */ @protocol DCCObjectDelegateProtocol - DCCInitiated: aConnection; - DCCStatusChanged: (NSString *)aStatus forObject: aConnection; - DCCReceivedData: (NSData *)data forObject: aConnection; - DCCDone: aConnection; - DCCNeedsMoreData: aConnection; @end #import #import #import #include @interface DCCObject : NSObject < NetObject > { uint32_t transferredBytes; id delegate; NSString *status; NSDictionary *info; NSDictionary *userInfo; id transport; } - initWithDelegate: aDelegate withInfo: (NSDictionary *)info withUserInfo: (NSDictionary *)userInfo; - (uint32_t)transferredBytes; - (void)abortConnection; - (void)connectionLost; - connectionEstablished: (id )aTransport; - dataReceived: (NSData *)data; - transport; - (NSString *)status; - (NSDictionary *)info; - (NSDictionary *)userInfo; @end @interface DCCReceiveObject : DCCObject < TCPConnecting > { id connection; } - initWithReceiveOfFile: (NSDictionary *)info withDelegate: aDelegate withTimeout: (int)seconds withUserInfo: (NSDictionary *)userInfo; - connectingFailed: (NSString *)error; - connectingStarted: (TCPConnecting *)aConnection; @end @interface DCCSendObject : DCCObject { TCPPort *port; NSTimer *timeout; uint32_t blockSize; uint32_t confirmedBytes; NSMutableData *receivedData; NSMutableData *dataToWrite; BOOL noMoreData; } - initWithSendOfFile: (NSString *)name withSize: (NSNumber *)size withDelegate: aDelegate withTimeout: (int)seconds withBlockSize: (uint32_t)numBytes withUserInfo: (NSDictionary *)userInfo; - initWithSendOfFile: (NSString *)name withSize: (NSNumber *)size withDelegate: aDelegate withTimeout: (int)seconds withBlockSize: (uint32_t)numBytes withUserInfo: (NSDictionary *)userInfo withPort: (int)low to: (int)high; - writeData: (NSData *)someData; - (uint32_t)blockSize; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCObject.m000066400000000000000000000307171067163320700233650ustar00rootroot00000000000000/*************************************************************************** DCCObject.m ------------------- begin : Wed Jul 2 15:23:24 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "DCCObject.h" #import #import #import #import #import #import #import #import #import #include #include #include #include NSString *DCCStatusTransferring = @"DCCStatusTransferring"; NSString *DCCStatusError = @"DCCStatusError"; NSString *DCCStatusDone = @"DCCStatusDone"; NSString *DCCStatusConnecting = @"DCCStatusConnecting"; NSString *DCCStatusAborted = @"DCCStatusAborted"; NSString *DCCStatusTimeout = @"DCCStatusTimeout"; NSString *DCCInfoFileName = @"DCCInfoFileName"; NSString *DCCInfoFileSize = @"DCCInfoFileSize"; NSString *DCCInfoPort = @"DCCInfoPort"; NSString *DCCInfoHost = @"DCCInfoHost"; NSString *DCCInfoNick = @"DCCInfoNick"; NSString *BuildDCCSendRequest(NSDictionary *info) { struct in_addr inp; NSMutableString *file = [NSMutableString stringWithString: [info objectForKey: DCCInfoFileName]]; NSNumber *size = [info objectForKey: DCCInfoFileSize]; NSNumber *port = [info objectForKey: DCCInfoPort]; NSHost *address = [info objectForKey: DCCInfoHost]; if (!address) return nil; [file replaceOccurrencesOfString: @" " withString: @"_" options: 0 range: NSMakeRange(0, [file length])]; inet_aton([[address address] cString], &inp); return [NSString stringWithFormat: @"SEND %@ %lu %hu %lu", file, ntohl(inp.s_addr), [port unsignedShortValue], [size unsignedLongValue]]; } @implementation DCCObject - initWithDelegate: aDelegate withInfo: (NSDictionary *)aInfo withUserInfo: (NSDictionary *)aUserInfo { if (!(self = [super init])) return nil; delegate = aDelegate; info = RETAIN(aInfo); userInfo = RETAIN(aUserInfo); [delegate DCCInitiated: self]; status = RETAIN(DCCStatusConnecting); [delegate DCCStatusChanged: status forObject: self]; return self; } - (void)dealloc { DESTROY(status); DESTROY(info); DESTROY(userInfo); delegate = nil; [super dealloc]; } - (uint32_t)transferredBytes { return transferredBytes; } - (void)abortConnection { RELEASE(status); status = RETAIN(DCCStatusAborted); [delegate DCCStatusChanged: status forObject: self]; if (transport) { [[NetApplication sharedInstance] disconnectObject: self]; } } - connectionEstablished: (id )aTransport { transport = RETAIN(aTransport); [[NetApplication sharedInstance] connectObject: self]; RELEASE(status); status = RETAIN(DCCStatusTransferring); [delegate DCCStatusChanged: status forObject: self]; return self; } - (void)connectionLost { [transport close]; DESTROY(transport); [delegate DCCDone: self]; } - dataReceived: (NSData *)data { return self; } - transport { return transport; } - (NSDictionary *)info { return info; } - (NSString *)status { return status; } - (NSDictionary *)userInfo { return userInfo; } @end @implementation DCCReceiveObject - initWithReceiveOfFile: (NSDictionary *)aInfo withDelegate: aDelegate withTimeout: (int)seconds withUserInfo: (NSDictionary *)aUserInfo { if (!(self = [super initWithDelegate: aDelegate withInfo: aInfo withUserInfo: aUserInfo])) return nil; connection = RETAIN([[TCPSystem sharedInstance] connectNetObjectInBackground: self toHost: [aInfo objectForKey: DCCInfoHost] onPort: [[aInfo objectForKey: DCCInfoPort] unsignedShortValue] withTimeout: seconds]); return self; } - (void)abortConnection { [super abortConnection]; if (connection) { DESTROY(connection); [self connectionLost]; } } - dataReceived: (NSData *)data { uint32_t len; transferredBytes += [data length]; len = htonl(transferredBytes); [transport writeData: [NSData dataWithBytes: &len length: sizeof(len)]]; [delegate DCCReceivedData: (NSData *)data forObject: self]; return self; } - connectionEstablished: (id )aTransport { DESTROY(connection); [super connectionEstablished: aTransport]; return self; } - (void)connectionLost { if ([status isEqualToString: DCCStatusTransferring]) { if ((int)transferredBytes < [[info objectForKey: DCCInfoFileSize] intValue]) { RELEASE(status); status = RETAIN(DCCStatusError); } else { RELEASE(status); status = RETAIN(DCCStatusDone); } [delegate DCCStatusChanged: status forObject: self]; } [super connectionLost]; } - connectingFailed: (NSString *)anError { if ([anError isEqualToString: NetclassesErrorTimeout]) { RELEASE(status); status = RETAIN(DCCStatusTimeout); } else { RELEASE(status); status = RETAIN(DCCStatusError); } [delegate DCCStatusChanged: status forObject: self]; DESTROY(connection); [self connectionLost]; return self; } - connectingStarted: (TCPConnecting *)aConnection { return self; } @end static id connection_holder = nil; @interface DCCConnectionHolder : NSObject < NetObject > - (void)connectionLost; - connectionEstablished: (id )aTransport; - dataReceived: (NSData *)data; - transport; @end @implementation DCCConnectionHolder - (void)connectionLost { } - connectionEstablished: (id )aTransport { connection_holder = RETAIN(aTransport); return self; } - dataReceived: (NSData *)data { return self; } - transport { return nil; } @end @interface DCCSendObject (InternalSendObject) - portTimeout; - checkAndWrite; @end @interface DCCSendObjectPort : TCPPort { id delegate; } - initOnPort: (int)aPort withDelegate: aDelegate; @end @implementation DCCSendObjectPort - initOnPort: (int)aPort withDelegate: aDelegate { if (!(self = [super initOnPort: aPort])) return nil; delegate = aDelegate; return self; } - newConnection { [super newConnection]; [delegate connectionEstablished: connection_holder]; DESTROY(connection_holder); return self; } - timeoutReceived: (NSTimer *)aTimer { [delegate portTimeout]; return self; } @end @implementation DCCSendObject (InternalSendObject) - portTimeout { if (port) { [[NetApplication sharedInstance] disconnectObject: port]; [timeout invalidate]; DESTROY(timeout); DESTROY(port); RELEASE(status); status = RETAIN(DCCStatusTimeout); [delegate DCCStatusChanged: status forObject: self]; [self connectionLost]; } return self; } - checkAndWrite { int length = [dataToWrite length]; if (confirmedBytes != transferredBytes) // They must acknowledge everything { return self; } if (length > (int)blockSize) { char *buffer = [dataToWrite mutableBytes]; [transport writeData: [NSData dataWithBytes: buffer length: blockSize]]; transferredBytes += blockSize; memmove(buffer, buffer + blockSize, length - blockSize); [dataToWrite setLength: length - blockSize]; } else if (length == (int)blockSize) { [transport writeData: dataToWrite]; [dataToWrite setLength: 0]; transferredBytes += blockSize; } else { if (noMoreData) { if (length == 0) // No data to send and no more is coming { [[NetApplication sharedInstance] disconnectObject: self]; return self; } [transport writeData: dataToWrite]; [dataToWrite setLength: 0]; transferredBytes += length; } else { [delegate DCCNeedsMoreData: self]; } } return self; } @end @implementation DCCSendObject - initWithSendOfFile: (NSString *)name withSize: (NSNumber *)size withDelegate: aDelegate withTimeout: (int)seconds withBlockSize: (uint32_t)numBytes withUserInfo: (NSDictionary *)aUserInfo withPort: (int)low to: (int)high { id address; id portNum; if (!(self = [super initWithDelegate: aDelegate withInfo: AUTORELEASE([NSDictionary new]) withUserInfo: aUserInfo])) return nil; if (seconds < 0) { [self dealloc]; return nil; } if ([name length] == 0) { [self dealloc]; return nil; } if ([size unsignedLongValue] == 0) { [self dealloc]; return nil; } if (low < 0 || high < 0) { port = [[[DCCSendObjectPort alloc] initOnPort: 0 withDelegate: self] setNetObject: [DCCConnectionHolder class]]; } else { if (low > 65535) low = 65535; if (high > 65535) high = 65535; if (low > high) { int temp; temp = high; high = low; low = temp; } if (low == high) { port = [[[DCCSendObjectPort alloc] initOnPort: low withDelegate: self] setNetObject: [DCCConnectionHolder class]]; } else { do { port = [[[DCCSendObjectPort alloc] initOnPort: low withDelegate: self] setNetObject: [DCCConnectionHolder class]]; if (port) break; low++; } while (low <= high); } } if (!port) { [self dealloc]; return nil; } if (numBytes <= 0) { [self dealloc]; return nil; } if (seconds > 0) { timeout = RETAIN([NSTimer scheduledTimerWithTimeInterval: (NSTimeInterval)seconds target: port selector: @selector(timeoutReceived:) userInfo: nil repeats: NO]); } blockSize = numBytes; receivedData = [[NSMutableData alloc] initWithCapacity: 12]; dataToWrite = [[NSMutableData alloc] initWithCapacity: blockSize * 2]; address = [aDelegate localHost]; portNum = [NSNumber numberWithUnsignedShort: [port port]]; RELEASE(info); info = [[NSDictionary alloc] initWithObjectsAndKeys: name, DCCInfoFileName, size, DCCInfoFileSize, portNum, DCCInfoPort, address, DCCInfoHost, nil]; return self; } - initWithSendOfFile: (NSString *)name withSize: (NSNumber *)size withDelegate: aDelegate withTimeout: (int)seconds withBlockSize: (uint32_t)numBytes withUserInfo: (NSDictionary *)aUserInfo { return [self initWithSendOfFile: name withSize: size withDelegate: aDelegate withTimeout: seconds withBlockSize: numBytes withUserInfo: aUserInfo withPort: -1 to: -1]; } - (void)dealloc { if (port) { [[NetApplication sharedInstance] disconnectObject: port]; DESTROY(port); [timeout invalidate]; DESTROY(timeout); } DESTROY(receivedData); DESTROY(dataToWrite); [super dealloc]; } - (void)abortConnection { [super abortConnection]; if (port) { [[NetApplication sharedInstance] disconnectObject: port]; DESTROY(port); if (timeout) { [timeout invalidate]; DESTROY(timeout); } [self connectionLost]; } } - connectionEstablished: (id )aTransport { [super connectionEstablished: aTransport]; [[NetApplication sharedInstance] disconnectObject: port]; DESTROY(port); if (timeout) { [timeout invalidate]; DESTROY(timeout); } [self checkAndWrite]; return self; } - dataReceived: (NSData *)data { char *buffer; char *index; char *bufferEnd; [receivedData appendData: data]; index = buffer = [receivedData mutableBytes]; bufferEnd = buffer + [receivedData length]; while((index + 3) < bufferEnd) { confirmedBytes = ntohl(*((unsigned long int *)index)); index += 4; } memmove(buffer, index, bufferEnd - index); [receivedData setLength: bufferEnd - index]; if (confirmedBytes > transferredBytes) { [[NetApplication sharedInstance] disconnectObject: self]; } [self checkAndWrite]; return self; } - (void)connectionLost { if ([status isEqualToString: DCCStatusTransferring]) { if ((int)confirmedBytes != [[info objectForKey: DCCInfoFileSize] intValue]) { RELEASE(status); status = RETAIN(DCCStatusError); } else { RELEASE(status); status = RETAIN(DCCStatusDone); } [delegate DCCStatusChanged: status forObject: self]; } [super connectionLost]; } - writeData: (NSData *)someData { if (noMoreData) { [self checkAndWrite]; return self; } if (!someData) { noMoreData = YES; } else { [dataToWrite appendData: someData]; } [self checkAndWrite]; return self; } - (uint32_t)blockSize { return blockSize; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSender.h000066400000000000000000000034341067163320700233660ustar00rootroot00000000000000/*************************************************************************** DCCSender.h ------------------- begin : Wed Jan 7 21:13:07 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class DCCSender; #ifndef DCC_SENDER_H #define DCC_SENDER_H #import #include @class DCCSendObject, NSFileHandle, NSString, NSString; @class NSTimer, NSDictionary, NSHost; @interface DCCSender : NSObject { NSFileHandle *file; NSString *path; DCCSendObject *sender; NSString *status; NSString *receiver; id connection; id delegate; NSTimer *cpsTimer; int cps; uint32_t oldTransferredBytes; } - initWithFilename: (NSString *)path withConnection: aConnection to: (NSString *)receiver withDelegate: aDel; - (NSString *)status; - (NSDictionary *)info; - (id)localHost; - (id)remoteHost; - (NSString *)percentDone; - (int)cps; - cpsTimer: (NSTimer *)aTimer; - (NSString *)path; - (NSString *)receiver; - (void)abortConnection; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSender.m000066400000000000000000000120711067163320700233700ustar00rootroot00000000000000/*************************************************************************** DCCSender.m ------------------- begin : Wed Jan 7 21:13:07 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "DCCSender.h" #import "DCCObject.h" #import "DCCSupport.h" #import #import #import #import #import #import #import #import #import #import #import #define get_default(_x) [DCCSupport defaultsObjectForKey: _x] #define set_default(_x, _y) \ { [DCCSupport setDefaultsObject: _y forKey: _x];\ [controller reloadData];} #define GET_DEFAULT_INT(_x) [get_default(_x) intValue] #define SET_DEFAULT_INT(_x, _y) set_default(_x, ([NSString stringWithFormat: @"%d", _y])) @implementation DCCSender - initWithFilename: (NSString *)aPath withConnection: aConnection to: (NSString *)aReceiver withDelegate: aDel; { id dfm; NSNumber *fileSize; id dict; id range; int low, high; dfm = [NSFileManager defaultManager]; if (!(dict = [dfm fileAttributesAtPath: aPath traverseLink: YES])) { return nil; } fileSize = [dict objectForKey: NSFileSize]; if (!(self = [super init])) return nil; file = RETAIN([NSFileHandle fileHandleForReadingAtPath: aPath]); if (!file) { [self dealloc]; return nil; } path = RETAIN(aPath); receiver = RETAIN(aReceiver); connection = RETAIN(aConnection); range = get_default(DCCPortRange); range = [NSMutableArray arrayWithArray: [range componentsSeparatedByString: @"-"]]; [range removeObject: @""]; if ([range count] < 2) { low = -1; high = -1; } else { low = [[range objectAtIndex: 0] intValue]; high = [[range objectAtIndex: 1] intValue]; } sender = [[DCCSendObject alloc] initWithSendOfFile: [path lastPathComponent] withSize: fileSize withDelegate: self withTimeout: GET_DEFAULT_INT(DCCSendTimeout) withBlockSize: GET_DEFAULT_INT(DCCBlockSize) withUserInfo: nil withPort: low to: high]; if (!sender) { [self dealloc]; return nil; } [_TS_ sendCTCPRequest: S2AS(@"DCC") withArgument: S2AS(BuildDCCSendRequest([sender info])) to: S2AS(aReceiver) onConnection: aConnection withNickname: S2AS([aConnection nick]) sender: [_TS_ pluginForOutput]]; delegate = aDel; return self; } - (void)dealloc { [cpsTimer invalidate]; DESTROY(cpsTimer); RELEASE(sender); RELEASE(path); RELEASE(file); RELEASE(connection); RELEASE(status); RELEASE(receiver); [super dealloc]; } - cpsTimer: (NSTimer *)aTimer { cps = ([sender transferredBytes] - oldTransferredBytes) / 5; oldTransferredBytes = [sender transferredBytes]; return self; } - DCCInitiated: aConnection { return self; } - DCCStatusChanged: (NSString *)aStatus forObject: aConnection { if (status == aStatus) return self; if ([aStatus isEqualToString: DCCStatusTransferring]) { [cpsTimer invalidate]; RELEASE(cpsTimer); oldTransferredBytes = 0; cpsTimer = RETAIN([NSTimer scheduledTimerWithTimeInterval: 5.0 target: self selector: @selector(cpsTimer:) userInfo: nil repeats: YES]); [delegate startedSend: self onConnection: connection]; } RELEASE(status); status = RETAIN(aStatus); return self; } - DCCNeedsMoreData: aConnection { NSData *data; data = [file readDataOfLength: [sender blockSize]]; [sender writeData: ([data length]) ? data : nil]; return self; } - DCCDone: aConnection { [cpsTimer invalidate]; DESTROY(cpsTimer); [delegate finishedSend: self onConnection: connection]; return self; } - (NSString *)status { return status; } - (NSDictionary *)info { return [sender info]; } - (id)localHost { return [connection localHost]; } - (id)remoteHost { return [connection remoteHost]; } - (NSString *)percentDone { id dict = [sender info]; int length; length = [[dict objectForKey: DCCInfoFileSize] intValue]; if (length < 0) { return @"??%"; } return [NSString stringWithFormat: @"%d%%", ([sender transferredBytes] * 100) / length]; } - (int)cps { return cps; } - (NSString *)path { return path; } - (NSString *)receiver { return receiver; } - (void)abortConnection { [sender abortConnection]; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSupport.h000066400000000000000000000046731067163320700236300ustar00rootroot00000000000000/*************************************************************************** DCCSupport.h ------------------- begin : Wed Jul 2 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class DCCSupport; @class NSBundle, NSString; extern NSString *DCCDownloadDirectory; extern NSString *DCCCompletedDirectory; extern NSString *DCCPortRange; extern NSString *DCCGetTimeout; extern NSString *DCCSendTimeout; extern NSString *DCCBlockSize; extern NSString *DCCDefault; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [DCCSupport class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] #ifndef DCCSUPPORT_H #define DCCSUPPORT_H #import #import @class NSAttributedString, NSMutableArray, NSDictionary; @interface DCCSupport : NSObject { NSMapTable *connectionMap; id controller; } - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end @interface DCCSupport (PrivateSupport) + (NSDictionary *)defaultSettings; + (id)defaultsObjectForKey: aKey; + (id)defaultDefaultsForKey: aKey; + (void)setDefaultsObject: aObject forKey: aKey; - (void)startedReceive: dcc onConnection: aConnection; - (void)finishedReceive: dcc onConnection: aConnection; - (void)startedSend: dcc onConnection: aConnection; - (void)finishedSend: dcc onConnection: aConnection; - (NSMutableArray *)getConnectionTable: aConnection; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSupport.m000066400000000000000000000632201067163320700236260ustar00rootroot00000000000000/*************************************************************************** DCCSupport.m ------------------- begin : Wed Jul 2 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import #import #import "DCCObject.h" #import "DCCSupport.h" #import "DCCSender.h" #import "DCCGetter.h" #ifdef USE_APPKIT #import "DCCSupportPreferencesController.h" #else @protocol NoAppKitProtocolForDCCSupport - (void)reloadData; @end #endif #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #include #include NSString *DCCDownloadDirectory = @"DCCSupportDownloadedDirectory"; NSString *DCCCompletedDirectory = @"DCCSupportCompletedDirectory"; NSString *DCCPortRange = @"DCCSupportPortRange"; NSString *DCCGetTimeout = @"DCCSupportGetTimeout"; NSString *DCCSendTimeout = @"DCCSupportSendTimeout"; NSString *DCCBlockSize = @"DCCSupportBlockSize"; NSString *DCCDefault = @"DCCSupport"; static NSInvocation *invoc = nil; static NSMutableDictionary *default_dict = nil; #define get_default(_x) [DCCSupport defaultsObjectForKey: _x] #define set_default(_x, _y) \ { [DCCSupport setDefaultsObject: _y forKey: _x];\ [controller reloadData];} #define GET_DEFAULT_INT(_x) [get_default(_x) intValue] #define SET_DEFAULT_INT(_x, _y) set_default(_x, ([NSString stringWithFormat: @"%d", _y])) static NSString *fix_file_name(NSString *name) { NSMutableString *newName; NSRange aRange; newName = [NSMutableString stringWithString: name]; aRange = NSMakeRange(0, [newName length]); [newName replaceOccurrencesOfString: @"/" withString: @"_" options: 0 range: aRange]; [newName replaceOccurrencesOfString: @":" withString: @"_" options: 0 range: aRange]; return newName; } static NSString *unique_path(NSString *path) { int x; id temp; id dfm; dfm = [NSFileManager defaultManager]; if (![dfm fileExistsAtPath: path]) return path; for (x = 0; x < 10000000; x++) { temp = [path stringByAppendingString: [NSString stringWithFormat: @".%d", x]]; if (![dfm fileExistsAtPath: temp]) { return temp; } } return nil; } @implementation DCCSupport (PrivateSupport) + (NSDictionary *)defaultSettings { return default_dict; } + (void)setDefaultsObject: aObject forKey: aKey { NSUserDefaults *object = [NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: DCCDefault] && ![aKey isEqualToString: DCCDefault]) { NSMutableDictionary *y; id tmp; aKey = [aKey substringFromIndex: [DCCDefault length]]; tmp = [object objectForKey: DCCDefault]; if (!tmp) { y = AUTORELEASE([NSMutableDictionary new]); } else { y = [NSMutableDictionary dictionaryWithDictionary: tmp]; } if (aObject) { [y setObject: aObject forKey: aKey]; } else { [y removeObjectForKey: aKey]; } [object setObject: y forKey: DCCDefault]; } } + (id)defaultsObjectForKey: aKey { NSMutableDictionary *object = (NSMutableDictionary *)[NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: DCCDefault] && ![aKey isEqualToString: DCCDefault]) { aKey = [aKey substringFromIndex: [DCCDefault length]]; object = [object objectForKey: DCCDefault]; if (!(object)) { [[NSUserDefaults standardUserDefaults] setObject: object = default_dict forKey: DCCDefault]; } return (object = [object objectForKey: aKey]) ? object : [default_dict objectForKey: aKey]; } return [object objectForKey: aKey]; } + (id)defaultDefaultsForKey: aKey { return [default_dict objectForKey: aKey]; } - (void)startedSend: (id)dcc onConnection: aConnection { id path = [dcc path]; id nick = [dcc receiver]; [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ to %@ initiated."), path, nick) onConnection: aConnection]; } - (void)finishedSend: (id)dcc onConnection: aConnection { id status = [dcc status]; id cps = [NSString stringWithFormat: @"%d", [dcc cps]]; id path = [dcc path]; id nick = [dcc receiver]; id connections = [self getConnectionTable: aConnection]; if ([status isEqualToString: DCCStatusDone]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ to %@ completed successfully! (%@ cps)"), path, nick, cps) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusTimeout]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ to %@ timed out."), path, nick) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusAborted]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ to %@ aborted."), path, nick) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusError]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"There was an error sending %@ to %@."), path, nick) onConnection: aConnection]; } [connections removeObjectIdenticalTo: dcc]; } - (void)startedReceive: (id)dcc onConnection: aConnection { NSDictionary *info = [dcc info]; id nick = [info objectForKey: DCCInfoNick]; id filename = [info objectForKey: DCCInfoFileName]; [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ from %@ initiated."), filename, nick) onConnection: aConnection]; } - (void)finishedReceive: (id)dcc onConnection: aConnection { id status = [dcc status]; NSDictionary *info = [dcc info]; id cps = [NSString stringWithFormat: @"%d", [dcc cps]]; id path = [dcc path]; id filename = [info objectForKey: DCCInfoFileName]; id nick = [info objectForKey: DCCInfoNick]; id connections = [self getConnectionTable: aConnection]; if ([status isEqualToString: DCCStatusDone]) { id completed = get_default(DCCCompletedDirectory); id filename = [path lastPathComponent]; id fm, newpath; completed = [completed stringByStandardizingPath]; [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ to %@ from %@ completed successfully! (%@ cps)"), filename, path, nick, cps) onConnection: aConnection]; fm = [NSFileManager defaultManager]; newpath = [NSString stringWithFormat: @"%@/%@", completed, filename]; newpath = unique_path(newpath); if (!newpath) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Could not move %@ into %@"), filename, completed) onConnection: aConnection]; return; } if (![fm movePath: path toPath: newpath handler: nil]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Could not move %@ to %@"), filename, newpath) onConnection: aConnection]; return; } [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"%@ moved to %@"), filename, newpath) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusTimeout]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ from %@ timed out."), filename, nick) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusAborted]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"Transfer of %@ from %@ aborted."), filename, nick) onConnection: aConnection]; } else if ([status isEqualToString: DCCStatusError]) { [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat(_l(@"There was an error receiving %@ from %@."), filename, nick) onConnection: aConnection]; } [connections removeObjectIdenticalTo: dcc]; } - (NSMutableArray *)getConnectionTable: aConnection { id table = NSMapGet(connectionMap, aConnection); if (table) return table; NSMapInsert(connectionMap, aConnection, table = AUTORELEASE([NSMutableArray new])); return table; } @end @implementation DCCSupport + (void)initialize { if (invoc) return; invoc = RETAIN([NSInvocation invocationWithMethodSignature: [self instanceMethodSignatureForSelector: @selector(commandDCC:connection:)]]); [invoc retainArguments]; [invoc setSelector: @selector(commandDCC:connection:)]; default_dict = [[NSMutableDictionary alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [DCCSupport class]] pathForResource: @"Defaults" ofType: @"plist"]]; } - (NSAttributedString *)commandDCCABORT: (NSString *)command connection: (id)connection { id x, connections; int val = -1; connections = [self getConnectionTable: connection]; x = [command separateIntoNumberOfArguments: 2]; if ([x count]) { val = [[x objectAtIndex: 0] intValue]; if (val < 0) val = 0 - val; } val--; if (val < 0 || val >= (int)[connections count]) { return S2AS(_l(@"Usage: /dcc abort <#>" @"\n" @"Aborts the connection in slot <#>. See /dcc list.")); } x = [connections objectAtIndex: val]; if ([x isKindOfClass: [DCCSender class]] || [x isKindOfClass: [DCCGetter class]]) { [x abortConnection]; } else if ([x isKindOfClass: [NSDictionary class]]) { x = [NSDictionary dictionaryWithDictionary: x]; [connections removeObjectAtIndex: val]; return BuildAttributedFormat(_l(@"Offer of the file %@ from %@ removed."), [(NSDictionary *)x objectForKey: DCCInfoFileName], [(NSDictionary *)x objectForKey: DCCInfoNick]); } return nil; } - (NSAttributedString *)commandDCCPORTRANGE: (NSString *)command connection: (id)connection { id x; x = [command separateIntoNumberOfArguments: 1]; if ([x count] == 0) { return BuildAttributedString(_l(@"Usage: /dcc portrange -" @"\n" @"Sets the range of allowable ports for sending files. If and " @" are the same sending will only use that port. Use " @"/dcc portrange - to allow use of any port. This option should " @"only be needed if you are behind a firewall." @"\n" @"Current portrange: "), get_default(DCCPortRange)); } x = [NSMutableArray arrayWithArray: [[x objectAtIndex: 0] componentsSeparatedByString: @"-"]]; [x removeObject: @""]; if ([x count] == 0) { set_default(DCCPortRange, @""); } else if ([x count] == 1) { int x1; id tmp; x1 = [[x objectAtIndex: 0] intValue]; if (x1 < 0) { set_default(DCCPortRange, @""); } else { if (x1 > 65535) x1 = 65535; tmp = [NSString stringWithFormat: @"%d-%d", x1, x1]; set_default(DCCPortRange, tmp); } } else if ([x count] >= 2) { int x1, x2; id tmp; x1 = [[x objectAtIndex: 0] intValue]; x2 = [[x objectAtIndex: 1] intValue]; if (x1 < 0 || x2 < 0) { set_default(DCCPortRange, @""); } else { if (x1 > 65535) x1 = 65535; if (x2 > 65535) x2 = 65535; if (x1 > x2) { int temp; temp = x2; x2 = x1; x1 = temp; } tmp = [NSString stringWithFormat: @"%d-%d", x1, x2]; set_default(DCCPortRange, tmp); } } return S2AS(_l(@"Ok.")); } - (NSAttributedString *)commandDCCBLOCKSIZE: (NSString *)command connection: (id)connection { id x; int val; x = [command separateIntoNumberOfArguments: 2]; if ([x count] == 0) { return BuildAttributedString(_l(@"Usage: /dcc blocksize " @"\n" @"Sets the block size of files being sent. The default should be " @"fine most of the time." @"\n" @"Current block size: "), get_default(DCCBlockSize), nil); } val = [[x objectAtIndex: 0] intValue]; if (val < 0) val = 0 - val; SET_DEFAULT_INT(DCCBlockSize, val); return S2AS(_l(@"Ok.")); } - (NSAttributedString *)commandDCCGETTIMEOUT: (NSString *)command connection: (id)connection { id x; int val; x = [command separateIntoNumberOfArguments: 2]; if ([x count] == 0) { return BuildAttributedString(_l(@"Usage: /dcc gettimeout " @"\n" @"Sets the timeout in seconds on receiving files." @"\n" @"Current timeout: "), get_default(DCCGetTimeout), nil); } val = [[x objectAtIndex: 0] intValue]; if (val < 0) val = 0 - val; SET_DEFAULT_INT(DCCGetTimeout, val); return S2AS(_l(@"Ok.")); } - (NSAttributedString *)commandDCCSENDTIMEOUT: (NSString *)command connection: (id)connection { id x; int val; x = [command separateIntoNumberOfArguments: 2]; if ([x count] == 0) { return BuildAttributedString(_l(@"Usage: /dcc sendtimeout " @"\n" @"Sets the timeout in seconds on sending files." @"\n" @"Current timeout: "), get_default(DCCSendTimeout), nil); } val = [[x objectAtIndex: 0] intValue]; if (val < 0) val = 0 - val; SET_DEFAULT_INT(DCCSendTimeout, val); return S2AS(_l(@"Ok.")); } - (NSAttributedString *)commandDCCSEND: (NSString *)command connection: (id)connection { id x; id user; id path; id dfm; BOOL isDir; id sender; id connections; x = [command separateIntoNumberOfArguments: 2]; dfm = [NSFileManager defaultManager]; if ([x count] < 2) { return S2AS( _l(@"Usage: /dcc send " @"\n" @"Requests to receive file named ")); } user = [x objectAtIndex: 0]; path = [x objectAtIndex: 1]; path = [path stringByStandardizingPath]; if (![dfm fileExistsAtPath: path isDirectory: &isDir] || isDir) { return S2AS(_l(@"That file does not exist.")); } connections = [self getConnectionTable: connection]; sender = AUTORELEASE([[DCCSender alloc] initWithFilename: path withConnection: connection to: user withDelegate: self]); if (sender) { [connections addObject: sender]; return BuildAttributedFormat(_l(@"Offering %@ to %@."), path, user); } return S2AS(_l(@"Had problems initializing the port.")); } - (NSAttributedString *)commandDCCLIST: (NSString *)command connection: (id)connection { int max, index; id object; NSMutableAttributedString *attr; NSMutableArray *connections; connections = [self getConnectionTable: connection]; attr = AUTORELEASE([NSMutableAttributedString new]); max = [connections count]; for (index = 0; index < max; index++) { object = [connections objectAtIndex: index]; if ([object isKindOfClass: [NSDictionary class]]) { [attr appendAttributedString: BuildAttributedFormat(_l(@"%@. %@ %@ has requested to send %@ (%@ bytes)"), [NSString stringWithFormat: @"%d", index + 1], BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"REQUEST"), nil), [(NSDictionary *)object objectForKey: DCCInfoNick], [(NSDictionary *)object objectForKey: DCCInfoFileName], [NSString stringWithFormat: @"%d", [[(NSDictionary *)object objectForKey: DCCInfoFileSize] intValue]])]; } if ([object isKindOfClass: [DCCGetter class]]) { [attr appendAttributedString: BuildAttributedFormat(_l(@"%@. %@ %@ is sending %@ (%@ of %@ bytes @ %@ cps)"), [NSString stringWithFormat: @"%d", index + 1], BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"RECEIVING"), nil), [[object info] objectForKey: DCCInfoNick], [[object info] objectForKey: DCCInfoFileName], [object percentDone], [NSString stringWithFormat: @"%d", [[[object info] objectForKey: DCCInfoFileSize] intValue]], [NSString stringWithFormat: @"%d", [object cps]])]; } if ([object isKindOfClass: [DCCSender class]]) { if ([[object status] isEqualToString: DCCStatusConnecting]) { [attr appendAttributedString: BuildAttributedFormat(_l(@"%@. %@ You have offered to send %@ to %@"), [NSString stringWithFormat: @"%d", index + 1], BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"OFFERED"), nil), [object path], [object receiver])]; } else { [attr appendAttributedString: BuildAttributedFormat(_l(@"%@. %@ You are sending %@ to %@ (%@ of %@ bytes @ %@ cps)"), [NSString stringWithFormat: @"%d", index + 1], BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"SENDING"), nil), [object path], [object receiver], [object percentDone], [NSString stringWithFormat: @"%d", [[[object info] objectForKey: DCCInfoFileSize] intValue]], [NSString stringWithFormat: @"%d", [object cps]])]; } } [attr appendAttributedString: S2AS(@"\n")]; } if ([attr length] == 0) { [attr appendAttributedString: S2AS(_l(@"End of list (See /dcc help for more information)."))]; } else { [attr appendAttributedString: S2AS(_l(@"End of list."))]; } return attr; } - (NSAttributedString *)commandDCCGET: (NSString *)command connection: (id)connection { id x; id path; NSDictionary *dict; int number; BOOL isDir; id dfm; id getter; NSMutableArray *connections; connections = [self getConnectionTable: connection]; x = [command separateIntoNumberOfArguments: 2]; if ([x count] == 0) { return S2AS(_l(@"Usage: /dcc get <#> [filename]" @"\n" @"Receives the file at <#> position (see /dcc list)." @"If [filename] isn't specified, it will be put into the default" @" directory (see /dcc setdir) with the filename specified by the sender.")); } number = [[x objectAtIndex: 0] intValue] - 1; if (number >= (int)[connections count] || !([(dict = [connections objectAtIndex: number]) isKindOfClass: [NSDictionary class]])) { return S2AS(_l(@"The specified index is invalid. Please see /dcc list.")); } path = @""; if ([x count] == 2) { path = [x objectAtIndex: 1]; } dfm = [NSFileManager defaultManager]; if ([path length] == 0) { path = [dict objectForKey: DCCInfoFileName]; x = get_default(DCCDownloadDirectory); if (![dfm fileExistsAtPath: x isDirectory: &isDir] || !isDir) { return S2AS(_l(@"Invalid download directory, see /dcc setdir.")); } path = [NSString stringWithFormat: @"%@/%@", x, fix_file_name(path)]; } path = [path stringByStandardizingPath]; path = unique_path(path); if (!path) { return S2AS(_l(@"Could not find a unique file name.")); } getter = AUTORELEASE([[DCCGetter alloc] initWithInfo: dict withFileName: path withConnection: connection withDelegate: self]); [connections replaceObjectAtIndex: number withObject: getter]; return nil; } - (NSAttributedString *)commandDCCSETDIR: (NSString *)command connection: (id)connection { id x; id dir; BOOL force = NO; NSEnumerator *iter; id object; BOOL isDir; id current; id dfm; BOOL couldCreate = YES; x = [command separateIntoNumberOfArguments: 1]; dir = [x count] ? [x objectAtIndex: 0] : @""; if ([dir hasPrefix: @"-f"]) { x = [dir separateIntoNumberOfArguments: 2]; if ([x count] != 2) { dir = @""; } else { dir = [x objectAtIndex: 1]; force = YES; } } if ([dir length] == 0) { return BuildAttributedString(_l(@"Usage: /dcc setdir [-f] " @"\n" @"Sets the default download directory to , if -f is specified " @"the directory will be created if it doesn't already exist." @"\n" @"Currently: "), [get_default(DCCDownloadDirectory) stringByExpandingTildeInPath], nil); } dfm = [NSFileManager defaultManager]; dir = [dir stringByExpandingTildeInPath]; dir = [dir stringByStandardizingPath]; if (![dir hasPrefix: @"/"]) { dir = [[@"~/" stringByExpandingTildeInPath] stringByAppendingString: dir]; } if ([dfm fileExistsAtPath: dir isDirectory: &isDir]) { if (!isDir) { return S2AS(_l(@"File exists at path.")); } } else if (force) { x = [dir pathComponents]; iter = [x objectEnumerator]; current = @""; while ((object = [iter nextObject])) { current = [current stringByAppendingString: object]; if ([dfm fileExistsAtPath: current isDirectory: &isDir]) { if (!isDir) { break; } } else { if (![dfm createDirectoryAtPath: current attributes: nil]) { break; } } current = [current stringByAppendingString: @"/"]; } if (object) { return S2AS(_l(@"Could not create directory.")); } } else { couldCreate = NO; } if (couldCreate) { set_default(DCCDownloadDirectory, dir); return S2AS(_l(@"Ok.")); } return S2AS(_l(@"Directory does not exist. Try the -f flag.")); } - (NSAttributedString *)commandDCCHELP: (NSString *)command connection: (id)connection { return S2AS(_l(@"Usage:" @"\n" @"/dcc (lists current connections and requests)" @"\n" @"/dcc get (receives a file)" @"\n" @"/dcc setdir (sets default download directory)" @"\n" @"/dcc send (sends a file)" @"\n" @"/dcc gettimeout (sets timeout on receiving files)" @"\n" @"/dcc sendtimeout (sets timeout on sending files)" @"\n" @"/dcc abort (aborts a connection)" @"\n" @"/dcc blocksize (sets the block size on sending files)" @"\n" @"/dcc portrange (sets allowable ports for sending files)" @"\n" @"/dcc help (this help)")); } - (NSAttributedString *)commandDCC: (NSString *)command connection: (id)connection { id x = [command separateIntoNumberOfArguments: 2]; id arg = @""; int count; SEL sel; if ((count = [x count]) > 0) { command = [x objectAtIndex: 0]; arg = (count > 1) ? [x objectAtIndex: 1] : @""; command = [command uppercaseString]; sel = NSSelectorFromString([NSString stringWithFormat: @"commandDCC%@:connection:", command]); if (sel && [self respondsToSelector: sel]) { return [self performSelector: sel withObject: arg withObject: connection]; } else { return [self commandDCCHELP: arg connection: connection]; } } return [self commandDCCLIST: arg connection: connection]; } - init { if (!(self = [super init])) return nil; connectionMap = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 5); return self; } - (void)dealloc { NSFreeMapTable(connectionMap); [super dealloc]; } - pluginActivated { #ifdef USE_APPKIT controller = [DCCSupportPreferencesController new]; if (controller) { [[NSNotificationCenter defaultCenter] postNotificationName: @"PreferencesModuleAdditionNotification" object: controller]; } #endif [invoc setTarget: self]; [_TS_ addCommand: @"dcc" withInvocation: invoc]; return self; } - pluginDeactivated { #ifdef USE_APPKIT if (controller) { [[NSNotificationCenter defaultCenter] postNotificationName: @"PreferencesModuleRemovalNotification" object: controller]; } DESTROY(controller); #endif [invoc setTarget: nil]; [_TS_ removeCommand: @"dcc"]; return self; } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Provides a interface to DCC file transfer " @"through the /dcc command. Type /dcc when this bundle is loaded " @"for more information."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - DCCSendRequestReceived: (NSDictionary *)aInfo onConnection: aConnection { id connections; connections = [self getConnectionTable: aConnection]; [connections addObject: aInfo]; [[_TS_ pluginForOutput] showMessage: BuildAttributedFormat( _l(@"%@ (%@:%@) has requested to send %@ (%@ bytes)"), [aInfo objectForKey: DCCInfoNick], [[aInfo objectForKey: DCCInfoHost] address], [NSString stringWithFormat: @"%hu", [[aInfo objectForKey: DCCInfoPort] unsignedShortValue]], [aInfo objectForKey: DCCInfoFileName], [NSString stringWithFormat: @"%lu", [[aInfo objectForKey: DCCInfoFileSize] unsignedLongValue]]) onConnection: aConnection]; return self; } - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSArray *list; if (![[[aCTCP string] uppercaseString] isEqualToString: @"DCC"]) { [_TS_ CTCPRequestReceived: aCTCP withArgument: argument to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } list = [[argument string] componentsSeparatedByString: @" "]; if ([list count] < 4) { return self; } if ([[[list objectAtIndex: 0] uppercaseString] isEqualToString: @"SEND"]) { id fileName; id fileSize; id port; id address; if ([list count] >= 5) { fileSize = [NSNumber numberWithUnsignedLong: strtoul([[list objectAtIndex: 4] cString], 0, 10)]; } else { fileSize = [NSNumber numberWithInt: -1]; } port = [NSNumber numberWithUnsignedShort: strtoul([[list objectAtIndex: 3] cString], 0, 10)]; address = [(TCPSystem *)[TCPSystem sharedInstance] hostFromHostOrderInteger: strtoul([[list objectAtIndex: 2] cString], 0, 10)]; fileName = [list objectAtIndex: 1]; [self DCCSendRequestReceived: [NSDictionary dictionaryWithObjectsAndKeys: fileName, DCCInfoFileName, fileSize, DCCInfoFileSize, port, DCCInfoPort, address, DCCInfoHost, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], DCCInfoNick, nil] onConnection: connection]; } return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSupportPreferencesController.h000066400000000000000000000034311067163320700300450ustar00rootroot00000000000000/*************************************************************************** DCCSupportPreferencesController.h ------------------- begin : Wed Jan 7 20:54:25 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class DCCSupportPreferencesController; #ifndef DCC_SUPPORT_PREFERENCES_CONTROLLER #define DCC_SUPPORT_PREFERENCES_CONTROLLER #import @class NSWindow, NSTextField, NSButton, NSImage; @class NSView; @interface DCCSupportPreferencesController : NSObject { NSTextField *blockSizeField; NSTextField *portRangeField; NSTextField *changeCompletedField; NSTextField *changeDownloadField; NSTextField *changeCompletedButton; NSTextField *changeDownloadButton; NSView *window; NSImage *preferencesIcon; BOOL isActive; } - (void)reloadData; - (void)changeCompletedHit: (NSButton *)sender; - (void)changeDownloadHit: (NSButton *)sender; - (void)blockSizeHit: (NSTextField *)sender; - (void)portRangeHit: (NSTextField *)sender; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/DCCSupportPreferencesController.m000066400000000000000000000140001067163320700300440ustar00rootroot00000000000000/*************************************************************************** DCCSupportPreferencesController.m ------------------- begin : Wed Jan 7 20:54:25 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "DCCSupportPreferencesController.h" #import "DCCSupport.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #define get_default(_x) [DCCSupport defaultsObjectForKey: _x] #define set_default(_x, _y) \ { [DCCSupport setDefaultsObject: _y forKey: _x]; } #define GET_DEFAULT_INT(_x) [get_default(_x) intValue] #define SET_DEFAULT_INT(_x, _y) set_default(_x, ([NSString stringWithFormat: @"%d", _y])) @implementation DCCSupportPreferencesController - init { id bundle, path; if (!(self = [super init])) return nil; bundle = [NSBundle bundleForClass: [DCCSupport class]]; if (![bundle loadNibFile: @"DCCSupportPreferences" externalNameTable: [NSDictionary dictionaryWithObjectsAndKeys: self, @"NSOwner", nil] withZone: 0]) { [super dealloc]; return nil; } path = [bundle pathForResource: @"dccsupport_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find dccsupport_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } return self; } - (void)awakeFromNib { NSWindow *tempWindow; tempWindow = (NSWindow *)window; window = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [window setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [self reloadData]; } - (void)reloadData { id path1 = get_default(DCCCompletedDirectory); id path2 = get_default(DCCDownloadDirectory); path1 = [path1 stringByStandardizingPath]; path2 = [path2 stringByStandardizingPath]; set_default(DCCCompletedDirectory, path1); set_default(DCCDownloadDirectory, path2); [changeCompletedField setStringValue: get_default(DCCCompletedDirectory)]; [changeDownloadField setStringValue: get_default(DCCDownloadDirectory)]; [blockSizeField setStringValue: [NSString stringWithFormat: @"%d", GET_DEFAULT_INT(DCCBlockSize)]]; [portRangeField setStringValue: get_default(DCCPortRange)]; } - (void)dealloc { RELEASE(preferencesIcon); DESTROY(window); [super dealloc]; } - (NSView *)preferencesView { return window; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSString *)preferencesName { return _l(@"DCC Support"); } - (void)activate: aPrefs { isActive = YES; [self reloadData]; [[aPrefs window] makeFirstResponder: changeDownloadButton]; } - (void)deactivate { isActive = NO; } - (void)changeCompletedHit: (NSButton *)sender { id openPanel; int result; openPanel = [NSOpenPanel openPanel]; [openPanel setCanChooseFiles: NO]; [openPanel setCanChooseDirectories: YES]; [openPanel setAllowsMultipleSelection: NO]; result = [openPanel runModalForDirectory: nil file: nil types: nil]; if (result == NSOKButton) { id tmp; tmp = [openPanel filenames]; if ([tmp count] == 0) return; tmp = [tmp objectAtIndex: 0]; set_default(DCCCompletedDirectory, tmp); [self reloadData]; } } - (void)changeDownloadHit: (NSButton *)sender { id openPanel; int result; openPanel = [NSOpenPanel openPanel]; [openPanel setCanChooseFiles: NO]; [openPanel setCanChooseDirectories: YES]; [openPanel setAllowsMultipleSelection: NO]; result = [openPanel runModalForDirectory: nil file: nil types: nil]; if (result == NSOKButton) { id tmp; tmp = [openPanel filenames]; if ([tmp count] == 0) return; tmp = [tmp objectAtIndex: 0]; set_default(DCCDownloadDirectory, tmp); [self reloadData]; } } - (void)blockSizeHit: (NSTextField *)sender { SET_DEFAULT_INT(DCCBlockSize, [[sender stringValue] intValue]); [self reloadData]; } - (void)portRangeHit: (NSTextField *)sender { NSMutableArray *array; array = [NSMutableArray arrayWithArray: [[sender stringValue] componentsSeparatedByString: @"-"]]; [array removeObject: @""]; if ([array count] == 0) { set_default(DCCPortRange, @""); } else if ([array count] == 1) { NSString *tmp; int x1; x1 = [[array objectAtIndex: 0] intValue]; if (x1 < 0) { set_default(DCCPortRange, @""); } else { if (x1 > 65535) x1 = 65535; tmp = [NSString stringWithFormat: @"%d", x1]; set_default(DCCPortRange, ([NSString stringWithFormat: @"%@-%@", tmp, tmp])); } } else { int x1,x2; NSString *tmp; x1 = [[array objectAtIndex: 0] intValue]; x2 = [[array objectAtIndex: 1] intValue]; if (x1 < 0 || x2 < 0) { set_default(DCCPortRange, @""); } else { if (x1 > 65535) x1 = 65535; if (x2 > 65535) x2 = 65535; if (x1 > x2) { int tmp2; tmp2 = x2; x2 = x1; x1 = tmp2; } tmp = [NSString stringWithFormat: @"%d-%d", x1, x2]; set_default(DCCPortRange, tmp); } } [self reloadData]; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/000077500000000000000000000000001067163320700241755ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.gorm/000077500000000000000000000000001067163320700313105ustar00rootroot00000000000000data.classes000066400000000000000000000011551067163320700335230ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.gorm{ "## Comment" = "Do NOT change this file, Gorm maintains it"; DCCSupportPreferencesController = { Actions = ( "changeCompletedHit:", "changeDownloadHit:", "blockSizeHit:", "portRangeHit:" ); Outlets = ( blockSizeField, portRangeField, changeCompletedButton, changeDownloadButton, changeCompletedField, changeDownloadField, window ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "changeCompletedHit:", "changeDownloadHit:", "blockSizeHit:", "portRangeHit:" ); Super = NSObject; }; }data.info000066400000000000000000000002701067163320700330160ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.gormGNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamobjects.gorm000066400000000000000000000126061067163320700335550ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.gormGNUstep archive00002af9:0000001b:0000009c:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary& 01NSString& %  TextField1401 NSTextField1 NSControl1NSView1 NSResponder% @ B Co A  Co A& 01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0&01NSFont%&&&&&&&&0%0 1NSColor0 &%NSNamedColorSpace0 &%System0 &%textBackgroundColor0  0& % textColor0&% Button201NSButton% Cz B Bx A  Bx A& 0 &%01 NSButtonCell0&%Change&&&&&&&&%0&0&&&&0& %  TextField150% @ C Co A  Co A&0 &%0 0&%Default download directory:&&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0 &% Button30!% Cz B Bx A  Bx A& 0" &%0#0$&%Change&&&&&&&&%0%&0&&&&&0'&%NSOwner0(&%DCCSupportPreferencesController0)& % GormNSWindow0*1NSWindow%  C C-&% C D2@0+%  C C-  C C-&0, &  0-% C) @ C A  C A&"0. &%0/ 00&&&&&&&&&0%01 02&%System03&%textBackgroundColor04 205& % textColor06% C) B C A  C A&"07 &%08 09&&&&&&&&&0%0: 0;&%System0<&%textBackgroundColor0= ;0>& % textColor0?% @ B C A  C A&$0@ &%0A 0B&%Default block size&&&&&&&&0%0C 0D&%System0E&%textBackgroundColor0F D0G& % textColor0H% @ @ C A  C A&$0I &%0J 0K&%Port range(low-high)&&&&&&&&0%0L 0M&%System0N&%textBackgroundColor0O M0P& % textColor0Q% @ B Co A  Co A& 0R &%0S 0T&&&&&&&&&0%0U 0V&%System0W&%textBackgroundColor0X V0Y& % textColor0Z% @ B Co A  Co A&0[ &%0\ 0]&%Completed download directory:&&&&&&&&0%0^ 0_&%System0`&%textBackgroundColor0a _0b& % textColor!0c 0d&%System0e&%windowBackgroundColor0f&%Window0g&%DCC Preferencesg ? A F@ F@%0h1NSImage0i&%NSApplicationIcon0j&%GSCustomClassMap0k&0l& %  TextField10?0m& %  TextField8-0n& %  TextField11H0o& %  TextField960p& %  TextField12Q0q& %  TextField13Z0r &0s1NSNibConnector)0t&%NSOwner0u1NSNibOutletConnectort)0v&%window0wm0xo0yl0zn0{0|p0}q0~00 0tm01NSMutableString&% portRangeField0t0&% changeCompletedButton0tp0&% changeCompletedField0t 0&% changeDownloadButton0t0&% changeDownloadField0to0&% blockSizeField01NSNibControlConnectorot0& %  blockSizeHit:0mt0& %  portRangeHit:0 t0&% changeDownloadHit:0t0&% changeCompletedHit:0o0& %  nextKeyView0om0 0& %  nextKeyView0m 0& %  nextKeyView01 GSMutableSet1 NSMutableSet1NSSet&*TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.nib/000077500000000000000000000000001067163320700311145ustar00rootroot00000000000000classes.nib000066400000000000000000000014171067163320700331670ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.nib{ IBClasses = ( { ACTIONS = { blockSizeHit = id; changeCompletedHit = id; changeDownloadHit = id; portRangeHit = id; }; CLASS = DCCSupportPreferencesController; LANGUAGE = ObjC; OUTLETS = { blockSizeField = id; changeCompletedButton = id; changeCompletedField = id; changeDownloadButton = id; changeDownloadField = id; portRangeField = id; window = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.nib/info.nib000066400000000000000000000007541067163320700325470ustar00rootroot00000000000000 IBDocumentLocation 69 64 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving keyedobjects.nib000066400000000000000000001253741067163320700342160ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/DCCSupportPreferences.nib $archiver NSKeyedArchiver $objects $null $class CF$UID 162 NSClassesKeys CF$UID 130 NSClassesValues CF$UID 131 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 116 NSNamesValues CF$UID 117 NSNextOid 33 NSObjectsKeys CF$UID 113 NSObjectsValues CF$UID 115 NSOidsKeys CF$UID 132 NSOidsValues CF$UID 133 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 DCCSupportPreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 84 NS.objects CF$UID 9 CF$UID 30 CF$UID 44 CF$UID 48 CF$UID 49 CF$UID 92 CF$UID 94 CF$UID 96 CF$UID 98 CF$UID 100 CF$UID 102 CF$UID 104 CF$UID 107 CF$UID 109 CF$UID 111 $class CF$UID 29 NSDestination CF$UID 23 NSLabel CF$UID 28 NSSource CF$UID 10 $class CF$UID 22 NSCell CF$UID 13 NSEnabled NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 $class CF$UID 86 NSFrame CF$UID 85 NSNextResponder CF$UID 0 NSSubviews CF$UID 55 {{388, 295}, {88, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 14 NSControlView CF$UID 10 NSKeyEquivalent CF$UID 19 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Change $class CF$UID 17 NSName CF$UID 16 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 20 NS.string $classes NSMutableString NSString NSObject $classname NSMutableString $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 22 NSCell CF$UID 25 NSEnabled NSFrame CF$UID 24 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 {{388, 236}, {88, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 26 NSControlView CF$UID 23 NSKeyEquivalent CF$UID 27 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Change $class CF$UID 20 NS.string nextKeyView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 29 NSDestination CF$UID 31 NSLabel CF$UID 28 NSSource CF$UID 23 $class CF$UID 43 NSCell CF$UID 33 NSEnabled NSFrame CF$UID 32 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{175, 214}, {211, 22}} $class CF$UID 42 NSBackgroundColor CF$UID 34 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 31 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 39 $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 37 NSColorName CF$UID 36 NSColorSpace 6 System textBackgroundColor $class CF$UID 38 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 41 NSColorName CF$UID 40 NSColorSpace 6 textColor $class CF$UID 38 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 29 NSDestination CF$UID 45 NSLabel CF$UID 28 NSSource CF$UID 31 $class CF$UID 43 NSCell CF$UID 47 NSEnabled NSFrame CF$UID 46 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{175, 184}, {211, 22}} $class CF$UID 42 NSBackgroundColor CF$UID 34 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 45 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 39 $class CF$UID 29 NSDestination CF$UID 10 NSLabel CF$UID 28 NSSource CF$UID 45 $class CF$UID 29 NSDestination CF$UID 50 NSLabel CF$UID 91 NSSource CF$UID 2 $class CF$UID 90 NSMaxSize CF$UID 89 NSMinSize CF$UID 88 NSScreenRect CF$UID 87 NSViewClass CF$UID 54 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 53 NSWindowRect CF$UID 51 NSWindowStyleMask 14 NSWindowTitle CF$UID 52 NSWindowView CF$UID 11 {{508, 52}, {480, 360}} $class CF$UID 20 NS.string Window NSWindow $class CF$UID 20 NS.string View $class CF$UID 84 NS.objects CF$UID 56 CF$UID 60 CF$UID 10 CF$UID 23 CF$UID 69 CF$UID 73 CF$UID 76 CF$UID 80 CF$UID 31 CF$UID 45 $class CF$UID 43 NSCell CF$UID 58 NSEnabled NSFrame CF$UID 57 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{10, 303}, {376, 22}} $class CF$UID 42 NSBackgroundColor CF$UID 59 NSCellFlags -1531838911 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 56 NSSupport CF$UID 15 NSTextColor CF$UID 39 $class CF$UID 38 NSColorSpace 3 NSWhite MSAwAA== $class CF$UID 43 NSCell CF$UID 62 NSEnabled NSFrame CF$UID 61 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 12 {{7, 333}, {198, 17}} $class CF$UID 42 NSBackgroundColor CF$UID 64 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 63 NSControlView CF$UID 60 NSSupport CF$UID 15 NSTextColor CF$UID 67 Default download directory: $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 66 NSColorName CF$UID 65 NSColorSpace 6 controlColor $class CF$UID 38 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 41 NSColorName CF$UID 68 NSColorSpace 6 controlTextColor $class CF$UID 43 NSCell CF$UID 71 NSEnabled NSFrame CF$UID 70 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 12 {{7, 274}, {244, 17}} $class CF$UID 42 NSBackgroundColor CF$UID 64 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 72 NSControlView CF$UID 69 NSSupport CF$UID 15 NSTextColor CF$UID 67 Completed downloads directory: $class CF$UID 43 NSCell CF$UID 75 NSEnabled NSFrame CF$UID 74 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{10, 244}, {376, 22}} $class CF$UID 42 NSBackgroundColor CF$UID 34 NSCellFlags -1531838911 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 73 NSSupport CF$UID 15 NSTextColor CF$UID 39 $class CF$UID 43 NSCell CF$UID 78 NSEnabled NSFrame CF$UID 77 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 12 {{7, 216}, {163, 17}} $class CF$UID 42 NSBackgroundColor CF$UID 64 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 79 NSControlView CF$UID 76 NSSupport CF$UID 15 NSTextColor CF$UID 67 Default block size $class CF$UID 43 NSCell CF$UID 82 NSEnabled NSFrame CF$UID 81 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 12 {{7, 186}, {163, 17}} $class CF$UID 42 NSBackgroundColor CF$UID 64 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 83 NSControlView CF$UID 80 NSSupport CF$UID 15 NSTextColor CF$UID 67 Port range (low-high) $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {480, 360}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 29 NSDestination CF$UID 45 NSLabel CF$UID 93 NSSource CF$UID 2 portRangeField $class CF$UID 29 NSDestination CF$UID 31 NSLabel CF$UID 95 NSSource CF$UID 2 blockSizeField $class CF$UID 29 NSDestination CF$UID 23 NSLabel CF$UID 97 NSSource CF$UID 2 changeCompletedButton $class CF$UID 29 NSDestination CF$UID 10 NSLabel CF$UID 99 NSSource CF$UID 2 changeDownloadButton $class CF$UID 29 NSDestination CF$UID 56 NSLabel CF$UID 101 NSSource CF$UID 2 changeDownloadField $class CF$UID 29 NSDestination CF$UID 73 NSLabel CF$UID 103 NSSource CF$UID 2 changeCompletedField $class CF$UID 106 NSDestination CF$UID 2 NSLabel CF$UID 105 NSSource CF$UID 45 portRangeHit $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 106 NSDestination CF$UID 2 NSLabel CF$UID 108 NSSource CF$UID 31 blockSizeHit $class CF$UID 106 NSDestination CF$UID 2 NSLabel CF$UID 110 NSSource CF$UID 23 changeCompletedHit $class CF$UID 106 NSDestination CF$UID 2 NSLabel CF$UID 112 NSSource CF$UID 10 changeDownloadHit $class CF$UID 114 NS.objects CF$UID 31 CF$UID 76 CF$UID 45 CF$UID 23 CF$UID 60 CF$UID 73 CF$UID 80 CF$UID 10 CF$UID 50 CF$UID 69 CF$UID 56 CF$UID 11 $classes NSArray NSObject $classname NSArray $class CF$UID 114 NS.objects CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 2 CF$UID 11 CF$UID 11 CF$UID 50 $class CF$UID 114 NS.objects CF$UID 31 CF$UID 76 CF$UID 45 CF$UID 23 CF$UID 60 CF$UID 73 CF$UID 80 CF$UID 10 CF$UID 50 CF$UID 69 CF$UID 56 CF$UID 2 $class CF$UID 114 NS.objects CF$UID 118 CF$UID 119 CF$UID 120 CF$UID 121 CF$UID 122 CF$UID 123 CF$UID 124 CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 NSTextField3 NSTextField22 NSTextField4 NSButton1 NSTextField2 NSTextField1 NSTextField221 NSButton Window NSTextField21 NSTextField File's Owner $class CF$UID 114 NS.objects $class CF$UID 114 NS.objects $class CF$UID 114 NS.objects CF$UID 11 CF$UID 102 CF$UID 56 CF$UID 50 CF$UID 107 CF$UID 48 CF$UID 9 CF$UID 98 CF$UID 73 CF$UID 45 CF$UID 94 CF$UID 30 CF$UID 49 CF$UID 100 CF$UID 104 CF$UID 23 CF$UID 69 CF$UID 60 CF$UID 44 CF$UID 31 CF$UID 76 CF$UID 2 CF$UID 109 CF$UID 96 CF$UID 10 CF$UID 80 CF$UID 92 CF$UID 111 $class CF$UID 114 NS.objects CF$UID 134 CF$UID 135 CF$UID 136 CF$UID 137 CF$UID 138 CF$UID 139 CF$UID 140 CF$UID 141 CF$UID 142 CF$UID 143 CF$UID 144 CF$UID 145 CF$UID 146 CF$UID 147 CF$UID 148 CF$UID 149 CF$UID 150 CF$UID 151 CF$UID 152 CF$UID 153 CF$UID 154 CF$UID 155 CF$UID 156 CF$UID 157 CF$UID 158 CF$UID 159 CF$UID 160 CF$UID 161 6 28 7 5 30 20 17 26 12 16 23 18 21 27 29 10 11 8 19 15 13 1 31 25 9 14 22 32 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/English.lproj/Localizable.strings000066400000000000000000000112621067163320700300330ustar00rootroot00000000000000/* DCCSupport.m */ "Transfer of %@ to %@ initiated." = "Transfer of %@ to %@ initiated."; "Transfer of %@ to %@ completed successfully! (%@ cps)" = "Transfer of %@ to %@ completed successfully! (%@ cps)"; "Transfer of %@ to %@ timed out." = "Transfer of %@ to %@ timed out."; "Transfer of %@ to %@ aborted." = "Transfer of %@ to %@ aborted."; "There was an error sending %@ to %@." = "There was an error sending %@ to %@."; "Transfer of %@ from %@ initiated." = "Transfer of %@ from %@ initiated."; "Transfer of %@ to %@ from %@ completed successfully! (%@ cps)" = "Transfer of %@ to %@ from %@ completed successfully! (%@ cps)"; "Transfer of %@ from %@ timed out." = "Transfer of %@ from %@ timed out."; "Transfer of %@ from %@ aborted." = "Transfer of %@ from %@ aborted."; "There was an error receiving %@ from %@." = "There was an error receiving %@ from %@."; "Usage: /dcc abort <#>\nAborts the connection in slot <#>. See /dcc list." = "Usage: /dcc abort <#>\nAborts the connection in slot <#>. See /dcc list."; "Offer of the file %@ from %@ removed." = "Offer of the file %@ from %@ removed."; "Usage: /dcc gettimeout \nSets the timeout in seconds on receiving files.\nCurrent timeout: " = "Usage: /dcc gettimeout \nSets the timeout in seconds on receiving files.\nCurrent timeout: "; "Ok." = "Ok."; "Usage: /dcc sendtimeout \nSets the timeout in seconds on sending files.\nCurrent timeout: " = "Usage: /dcc sendtimeout \nSets the timeout in seconds on sending files.\nCurrent timeout: "; "Ok." = "Ok."; "Usage: /dcc send \nRequests to receive file named " = "Usage: /dcc send \nRequests to receive file named "; "That file does not exist." = "That file does not exist."; "Offering %@ to %@." = "Offering %@ to %@."; "%@. %@ %@ has requested to send %@ (%@ bytes)" = "%@. %@ %@ has requested to send %@ (%@ bytes)"; "REQUEST" = "REQUEST"; "%@. %@ %@ is sending %@ (%@ of %@ bytes @ %@ cps)" = "%@. %@ %@ is sending %@ (%@ of %@ bytes @ %@ cps)"; "RECEIVING" = "RECEIVING"; "%@. %@ You have offered to send %@ to %@" = "%@. %@ You have offered to send %@ to %@"; "OFFERED" = "OFFERED"; "%@. %@ You are sending %@ to %@ (%@ of %@ bytes @ %@ cps)" = "%@. %@ You are sending %@ to %@ (%@ of %@ bytes @ %@ cps)"; "SENDING" = "SENDING"; "End of list." = "End of list."; "Usage: /dcc get <#> [-c] [filename]\nReceives the file at <#> position (see /dcc list).If [filename] isn't specified, it will be put into the default directory (see /dcc setdir) with the filename specified by the sender." = "Usage: /dcc get <#> [-c] [filename]\nReceives the file at <#> position (see /dcc list).If [filename] isn't specified, it will be put into the default directory (see /dcc setdir) with the filename specified by the sender."; "The specified index is invalid. Please see /dcc list." = "The specified index is invalid. Please see /dcc list."; "Invalid download directory, see /dcc setdir." = "Invalid download directory, see /dcc setdir."; "Could not find a unique file name." = "Could not find a unique file name."; "Usage: /dcc setdir [-f] \nSets the default download directory to , if -f is specified the directory will be created if it doesn't already exist.\nCurrently: " = "Usage: /dcc setdir [-f] \nSets the default download directory to , if -f is specified the directory will be created if it doesn't already exist.\nCurrently: "; "File exists at path." = "File exists at path."; "Could not create directory." = "Could not create directory."; "Ok." = "Ok."; "Directory does not exist. Try the -f flag." = "Directory does not exist. Try the -f flag."; "Usage:\n/dcc list (lists current connections and requests)\n/dcc get (receives a file)\n/dcc setdir (sets default download directory)\n/dcc send (sends a file)\n/dcc gettimeout (sets timeout on receiving files)\n/dcc sendtimeout (sets timeout on sending files)\n/dcc abort (aborts a connection)" = "Usage:\n/dcc list (lists current connections and requests)\n/dcc get (receives a file)\n/dcc setdir (sets default download directory)\n/dcc send (sends a file)\n/dcc gettimeout (sets timeout on receiving files)\n/dcc sendtimeout (sets timeout on sending files)\n/dcc abort (aborts a connection)"; "Author: " = "Author: "; "Description: " = "Description: "; "Provides a interface to DCC file transfer through the /dcc command. Type /dcc when this bundle is loaded for more information." = "Provides a interface to DCC file transfer through the /dcc command. Type /dcc when this bundle is loaded for more information."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; "%@ (%@:%@) has requested to send %@ (%@ bytes)" = "%@ (%@:%@) has requested to send %@ (%@ bytes)"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/GNUmakefile000066400000000000000000000021021067163320700235240ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = DCCSupport BUNDLE_EXTENSION = ifeq ($(USE_APPKIT),) USE_APPKIT = yes endif BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters DCCSupport_OBJC_FILES = DCCSupport.m DCCObject.m DCCSender.m DCCGetter.m ifeq ($(USE_APPKIT), yes) DCCSupport_OBJC_FILES += DCCSupportPreferencesController.m ifeq ($(OBJC_RUNTIME_LIB), apple) DCCSupport_LOCALIZED_RESOURCE_FILES = DCCSupportPreferences.nib else DCCSupport_LOCALIZED_RESOURCE_FILES = DCCSupportPreferences.gorm endif else GUI_LIB = endif DCCSupport_LANGUAGES = English DCCSupport_LOCALIZED_RESOURCE_FILES += Localizable.strings DCCSupport_RESOURCE_FILES = AllLanguages/Defaults.plist AllLanguages/dccsupport_prefs.tiff DCCSupport_PRINCIPAL_CLASS = DCCSupport ifeq ($(OBJC_RUNTIME_LIB), apple) DCCSupport_BUNDLE_LIBS = -framework netclasses -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else DCCSupport_BUNDLE_LIBS = -lTalkSoupBundles -lnetclasses endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/DCCSupport/GNUmakefile.preamble000066400000000000000000000006751067163320700253270ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(USE_APPKIT), yes) ADDITIONAL_OBJCFLAGS += -DUSE_APPKIT endif ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) -F../../TalkSoupBundles ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/000077500000000000000000000000001067163320700206625ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/Debold.h000066400000000000000000000060401067163320700222240ustar00rootroot00000000000000/*************************************************************************** Debold.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Debold; #ifndef DEBOLD_H #define DEBOLD_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Debold class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Debold : NSObject - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/Debold.m000066400000000000000000000110661067163320700222350ustar00rootroot00000000000000/*************************************************************************** Debold.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Debold.h" #import #import #import #import #import static NSAttributedString *debold(id a) { a = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: a]); [a removeAttribute: IRCBold range: NSMakeRange(0, [a length])]; return a; } @implementation Debold - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Removes bold from incoming messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ CTCPReplyReceived: aCTCP withArgument: debold(argument) to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ wallopsReceived: debold(message) from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ channelParted: channel withMessage: debold(aMessage) from: parter onConnection: connection withNickname: aNick sender: self]; return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitIRCWithMessage: debold(aMessage) from: quitter onConnection: connection withNickname: aNick sender: self]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ topicChangedTo: debold(aTopic) in: channel from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ messageReceived: debold(aMessage) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ actionReceived: debold(anAction) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/English.lproj/000077500000000000000000000000001067163320700234005ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/English.lproj/Localizable.strings000066400000000000000000000003531067163320700272350ustar00rootroot00000000000000/* Debold.m */ "Author: " = "Author: "; "Description: " = "Description: "; "Removes bold from incoming messages." = "Removes bold from incoming messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/GNUmakefile000066400000000000000000000011011067163320700227250ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Debold BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Debold_LANGUAGES = English Debold_LOCALIZED_RESOURCE_FILES = Localizable.strings Debold_PRINCIPAL_CLASS = Debold Debold_OBJC_FILES = Debold.m ifeq ($(OBJC_RUNTIME_LIB), apple) Debold_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Debold_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Debold/GNUmakefile.preamble000066400000000000000000000005401067163320700245210ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/000077500000000000000000000000001067163320700217525ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/Decolorizer.h000066400000000000000000000060761067163320700244150ustar00rootroot00000000000000/*************************************************************************** Decolorizer.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Decolorizer; #ifndef DECOLORIZER_H #define DECOLORIZER_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Decolorizer class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Decolorizer : NSObject - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/Decolorizer.m000066400000000000000000000112271067163320700244140ustar00rootroot00000000000000/*************************************************************************** Decolorizer.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Decolorizer.h" #import #import #import #import #import static NSAttributedString *decolor(id a) { a = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: a]); [a removeAttribute: IRCColor range: NSMakeRange(0, [a length])]; [a removeAttribute: IRCBackgroundColor range: NSMakeRange(0, [a length])]; return a; } @implementation Decolorizer - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Removes color from incoming messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ CTCPReplyReceived: aCTCP withArgument: decolor(argument) to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ wallopsReceived: decolor(message) from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ channelParted: channel withMessage: decolor(aMessage) from: parter onConnection: connection withNickname: aNick sender: self]; return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitIRCWithMessage: decolor(aMessage) from: quitter onConnection: connection withNickname: aNick sender: self]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ topicChangedTo: decolor(aTopic) in: channel from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ messageReceived: decolor(aMessage) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ actionReceived: decolor(anAction) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/English.lproj/000077500000000000000000000000001067163320700244705ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/English.lproj/Localizable.strings000066400000000000000000000003621067163320700303250ustar00rootroot00000000000000/* Decolorizer.m */ "Author: " = "Author: "; "Description: " = "Description: "; "Removes color from incoming messages." = "Removes color from incoming messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/GNUmakefile000066400000000000000000000011561067163320700240270ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Decolorizer BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Decolorizer_LANGUAGES = English Decolorizer_LOCALIZED_RESOURCE_FILES = Localizable.strings Decolorizer_PRINCIPAL_CLASS = Decolorizer Decolorizer_OBJC_FILES = Decolorizer.m ifeq ($(OBJC_RUNTIME_LIB), apple) Decolorizer_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Decolorizer_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Decolorizer/GNUmakefile.preamble000066400000000000000000000005401067163320700256110ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/000077500000000000000000000000001067163320700214155ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/Dereverse.h000066400000000000000000000060621067163320700235160ustar00rootroot00000000000000/*************************************************************************** Dereverse.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Dereverse; #ifndef DEREVERSE_H #define DEREVERSE_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Dereverse class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Dereverse : NSObject - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/Dereverse.m000066400000000000000000000111411067163320700235150ustar00rootroot00000000000000/*************************************************************************** Dereverse.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Dereverse.h" #import #import #import #import #import static NSAttributedString *dereverse(id a) { a = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: a]); [a removeAttribute: IRCReverse range: NSMakeRange(0, [a length])]; return a; } @implementation Dereverse - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Removes reverse colors from incoming messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ CTCPReplyReceived: aCTCP withArgument: dereverse(argument) to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ wallopsReceived: dereverse(message) from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ channelParted: channel withMessage: dereverse(aMessage) from: parter onConnection: connection withNickname: aNick sender: self]; return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitIRCWithMessage: dereverse(aMessage) from: quitter onConnection: connection withNickname: aNick sender: self]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ topicChangedTo: dereverse(aTopic) in: channel from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ messageReceived: dereverse(aMessage) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ actionReceived: dereverse(anAction) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/English.lproj/000077500000000000000000000000001067163320700241335ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/English.lproj/Localizable.strings000066400000000000000000000004021067163320700277630ustar00rootroot00000000000000/* Dereverse.m */ "Author: " = "Author: "; "Description: " = "Description: "; "Removes reverse colors from incoming messages." = "Removes reverse colors from incoming messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/GNUmakefile000066400000000000000000000011341067163320700234660ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Dereverse BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Dereverse_LANGUAGES = English Dereverse_LOCALIZED_RESOURCE_FILES = Localizable.strings Dereverse_PRINCIPAL_CLASS = Dereverse Dereverse_OBJC_FILES = Dereverse.m ifeq ($(OBJC_RUNTIME_LIB), apple) Dereverse_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Dereverse_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Dereverse/GNUmakefile.preamble000066400000000000000000000005401067163320700252540ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/000077500000000000000000000000001067163320700217275ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/Deunderline.h000066400000000000000000000060761067163320700243470ustar00rootroot00000000000000/*************************************************************************** Deunderline.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Deunderline; #ifndef DEUNDERLINE_H #define DEUNDERLINE_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Deunderline class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Deunderline : NSObject - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/Deunderline.m000066400000000000000000000110741067163320700243460ustar00rootroot00000000000000/*************************************************************************** Deunderline.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Deunderline.h" #import #import #import #import #import static NSAttributedString *deul(id a) { a = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: a]); [a removeAttribute: IRCUnderline range: NSMakeRange(0, [a length])]; return a; } @implementation Deunderline - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Removes underline from incoming messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ CTCPReplyReceived: aCTCP withArgument: deul(argument) to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ wallopsReceived: deul(message) from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ channelParted: channel withMessage: deul(aMessage) from: parter onConnection: connection withNickname: aNick sender: self]; return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitIRCWithMessage: deul(aMessage) from: quitter onConnection: connection withNickname: aNick sender: self]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ topicChangedTo: deul(aTopic) in: channel from: aPerson onConnection: connection withNickname: aNick sender: self]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ messageReceived: deul(aMessage) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ actionReceived: deul(anAction) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/English.lproj/000077500000000000000000000000001067163320700244455ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/English.lproj/Localizable.strings000066400000000000000000000003721067163320700303030ustar00rootroot00000000000000/* Deunderline.m */ "Author: " = "Author: "; "Description: " = "Description: "; "Removes underline from incoming messages." = "Removes underline from incoming messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/GNUmakefile000066400000000000000000000011561067163320700240040ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Deunderline BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Deunderline_LANGUAGES = English Deunderline_LOCALIZED_RESOURCE_FILES = Localizable.strings Deunderline_PRINCIPAL_CLASS = Deunderline Deunderline_OBJC_FILES = Deunderline.m ifeq ($(OBJC_RUNTIME_LIB), apple) Deunderline_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Deunderline_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Deunderline/GNUmakefile.preamble000066400000000000000000000005401067163320700255660ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/000077500000000000000000000000001067163320700212465ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/000077500000000000000000000000001067163320700236055ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face1.tiff000066400000000000000000000024301067163320700272500ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{8?YbfbYQD:|p۷mgH=?3vU l.% V=:=?=:YP7jHI2B.( '&d Q3111-4)uGC 7 gN۱,3%ϧ9+ـFM7 !zY|#Up2  1:Remoticon-face10.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face11.tiff000066400000000000000000000024321067163320700273330ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbdbYOD:T%&j#ׇVENE$аse2:3ǩ1=qYwXXfӴϫ؋ܖXS?1;wJVbmsnbYI@f>1%Ơ{DQYbfbYXpiG-!p?HQVXVQI@f1+E(ݲi&V?D63+ # @8E81OxeC!vU l.% Vص9l!WIbޛмwdRAʣq'&d Qֱ0111-AՂϷe`DgN۱,3%ϧĞgJ!zY|ya&p2  1:Remoticon-face11.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face13.tiff000066400000000000000000000024321067163320700273350ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVhNE$g[0vmL k^0=1=qYwXֆuߡXˬB۷<1;wJiߠܗN-Cn3BʬA2ٲ/%Ơ{Dd|\+}d}dBBz./ٱ+!p?H|4BB}d}dBBr%(ݲi&V?DԛL`-BBe$*ر*!vU l.% V=:=޿RҰ8/&ر*%ʣq'&d Q3111-(!`DgN۱,JxoϰF¡+gJ!zY|ya&p2  1:Remoticon-face13.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face14.tiff000066400000000000000000000024321067163320700273360ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{DQYOSbYB7:-!p?HBMBSGFBE:C8ُ(ݲi&V?Dƹ=4C8ʶѷR!vU l.% V=/TGeTQCQB׈ʣq'&d Q3ܙَ1-ޜ̮D`DgN۱,3%ϧĞgJ!zY|ya&p2  1:Remoticon-face14.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face15.tiff000066400000000000000000000024321067163320700273370ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX+# Χ f\:FFFm`2l^-FFFjYqwԷQcU%DZaּ^aP¡2wJԷOƬSUDZambԷO¥>¢3Ы-%Ơ{8?YbfbYQD:|p۷۔ĩJԷOܽMH?3(ݲi&ԷOUJ%50å?¥>ܹA۷<6,!vU l.% Vٍɴj.¢3ڵ7ٳ1,%ʣq'&d Qȥ-)$)Ъ)ذ&!`DbJҪϪ(ȥ-׮#ϧĞgJ!zY|ya&p2  1:Remoticon-face19.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face2.tiff000066400000000000000000000024301067163320700272510ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌnuf07/ݘQ.'s`ڑOvX/'ՂuY.(0*Y-&,% T%&j#ׇVb.)/)b.',&1=qYwXXf/)/*f-'.'1;wJVb.)1,b800)1%Ơ{8?YtY`|p۷F;*-!p?bS&&&888333<<<>>>999xi4pi&VIIIIIIӣvU l.% VbRk'&d Q%F9  YM%dzo`DgN۱Ks׈̀ВЖDgJ!zY$ya&p2  1:Remoticon-face5.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face6.tiff000066400000000000000000000024301067163320700272550ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbdbYOD:T%&j#ׇVENE$аse2:3ǩ1=qYwXXf؋ܖ@1;wJVbmsnbWL=1%ƠUn&|j+}l0|l4~n7~m5}l0|j+{h$ydzdgu`U.r(isۭç`El' @сͮ1%&qX?הѸ1W=gNɥ'ԇ׳ȣw1gJ!nP 111Ȥ+j&p2  1:Remoticon-face6.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgTalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/AllLanguages/emoticon-face8.tiff000066400000000000000000000024301067163320700272570ustar00rootroot00000000000000II*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{DQYbfbYQD:-!p?HQVXVQH?3(ݲi&VֶF @class NSBundle, NSAttributedString; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Emoticon class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @interface Emoticon : NSObject - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/Emoticon.m000066400000000000000000000154261067163320700232110ustar00rootroot00000000000000/*************************************************************************** Emoticon.m ------------------- begin : Mon Jan 12 21:08:33 CST 2004 copyright : original(GNUMail)-Ludovic Marcotte Copyright 2003 TalkSoup adaptation-Andrew Ruder Copyright 2003 email : Andrew Ruder: aeruder@ksu.edu Ludovic Marcotte: ludovic@Sophos.ca ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Emoticon.h" #import #import #import #import #import #import #import #import #import #import // // The emoticon images are from gnomemeeting (http://www.gnomemeeting.org). // static struct { NSString *glyph; NSString *image; } emoticons[] = { {@":)", @"emoticon-face1.tiff" }, {@":-)", @"emoticon-face1.tiff" }, {@":o)", @"emoticon-face1.tiff" }, {@"8)", @"emoticon-face2.tiff" }, {@"8-)", @"emoticon-face2.tiff" }, {@";)", @"emoticon-face3.tiff" }, {@";o)", @"emoticon-face3.tiff" }, {@";-)", @"emoticon-face3.tiff" }, {@":-(", @"emoticon-face4.tiff" },// :( conflicts with objc code! like: itemAtIndex:(int)theIndex {@":o(", @"emoticon-face4.tiff" }, {@":-0", @"emoticon-face5.tiff" },// :0 conflicts with a time value! like: 18:00 {@":-o", @"emoticon-face5.tiff" }, {@":D", @"emoticon-face6.tiff" }, {@":-D", @"emoticon-face6.tiff" }, {@":|", @"emoticon-face8.tiff" }, {@":-|", @"emoticon-face8.tiff" }, {@":-/", @"emoticon-face9.tiff" },// :/ conflicts with URLs! like: http://foobarbaz.com {@":o/", @"emoticon-face9.tiff" }, {@":p", @"emoticon-face10.tiff"}, {@":-p", @"emoticon-face10.tiff"}, {@":'(", @"emoticon-face11.tiff"}, {@":,(", @"emoticon-face11.tiff"}, {@";o(", @"emoticon-face11.tiff"}, {@":-*", @"emoticon-face13.tiff"}, {@":-x", @"emoticon-face14.tiff"}, {@"B)", @"emoticon-face15.tiff"}, {@"B-)", @"emoticon-face15.tiff"}, {@":-.", @"emoticon-face19.tiff"}, {@":o", @"emoticon-face5.tiff" } }; static NSString *resource_path = nil; NSAttributedString *emoticonify(NSAttributedString *message) { NSTextAttachment *aTextAttachment; NSFileWrapper *aFileWrapper; NSString *aString; NSMutableAttributedString *mas; int i, count; NSRange aRange; mas = [[NSMutableAttributedString alloc] initWithAttributedString: message]; aString = [mas string]; count = sizeof(emoticons)/sizeof(emoticons[0]); for (i = 0; i < count; i++) { aRange.location = [aString length]; do { aRange = [aString rangeOfString: emoticons[i].glyph options: NSBackwardsSearch|NSCaseInsensitiveSearch range: NSMakeRange(0, aRange.location)]; if (aRange.location != NSNotFound) { aFileWrapper = [[NSFileWrapper alloc] initWithPath: [NSString stringWithFormat: @"%@/%@", resource_path, emoticons[i].image]]; aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; [mas replaceCharactersInRange: aRange withAttributedString: [NSAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); RELEASE(aFileWrapper); } } while (aRange.location != NSNotFound); } return AUTORELEASE(mas); } @implementation Emoticon + (void)initialize { id bundle; if (resource_path) return; bundle = [NSBundle bundleForClass: [Emoticon class]]; resource_path = [bundle resourcePath]; RETAIN(resource_path); } - (NSAttributedString *)pluginDescription { int i; int count; id tmp; NSMutableAttributedString *aString = BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Ludovic Marcotte\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"TalkSoup adaptation: "), @"Andrew Ruder\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Icons: "), @"http://www.gnomemeeting.org\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Converts commonly used emoticons to pictures." @" Has a similar look to many instant messengers in use today.\n\n" @"Available emoticons:\n"), nil); count = sizeof(emoticons)/sizeof(emoticons[0]); for (i = 0; i < count; i++) { tmp = S2AS(emoticons[i].glyph); [aString appendAttributedString: emoticonify(tmp)]; [aString appendAttributedString: BuildAttributedString([NSNull null], IRCColor, IRCColorRed, @" --- ", nil)]; [aString appendAttributedString: tmp]; [aString appendAttributedString: S2AS(@"\n")]; } [aString appendAttributedString: S2AS(_l(@"\nCopyright (C) 2005 by Ludovic Marcotte with changes " @"by Andrew Ruder"))]; return aString; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendMessage: emoticonify(message) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendAction: emoticonify(anAction) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ messageReceived: emoticonify(aMessage) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ actionReceived: emoticonify(anAction) to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/English.lproj/000077500000000000000000000000001067163320700237645ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/English.lproj/Localizable.strings000066400000000000000000000000001067163320700276060ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/GNUmakefile000066400000000000000000000011641067163320700233220ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Emoticon BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Emoticon_LANGUAGES = English Emoticon_LOCALIZED_RESOURCE_FILES = Localizable.strings Emoticon_RESOURCE_FILES = AllLanguages/*.tiff Emoticon_PRINCIPAL_CLASS = Emoticon Emoticon_OBJC_FILES = Emoticon.m ifeq ($(OBJC_RUNTIME_LIB), apple) Emoticon_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Emoticon_BUNDLE_LIBS = -lTalkSoupBundles endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Emoticon/GNUmakefile.preamble000066400000000000000000000005401067163320700251050ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/GNUmakefile000066400000000000000000000006611067163320700215460ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make ifeq ($(USE_APPKIT),) USE_APPKIT=yes endif SUBPROJECTS = Highlighting MessageInTab KeepAlive Debold \ Decolorizer Deunderline Dereverse Logging \ DCCSupport MessageOutTab PrivateBeep Ignore \ Autorename ifeq ($(USE_APPKIT), yes) SUBPROJECTS += Emoticon endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/000077500000000000000000000000001067163320700220765ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/AllLanguages/000077500000000000000000000000001067163320700244355ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/AllLanguages/Defaults.plist000066400000000000000000000002551067163320700272630ustar00rootroot00000000000000{ ExtraWords = ( ); ShouldDoNick = YES; TabAnythingColor = "IRCColorCustom 410 130 140"; TabReferenceColor = "IRCColorCustom 130 140 410"; UserColor = IRCColorBlue; } TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/AllLanguages/highlighting_prefs.tiff000066400000000000000000000225701067163320700311610ustar00rootroot00000000000000II*$iip~~~}~}~|}{}abm{|{{z{z{z{,-0 005004-.3-.3y{!!#hiq\]e55:xz++.((+''*./3./3-.2,,2,,2xy;;BxyxxʊPO IH =< xx10ǃ9lklkz{xw!z{z%kj{z%kjzyyihwv#zzrq |edts"kk$hg4OP0vxŒȁtslrqw'srvJ3J3uuusrtst&rqurqsrNMM|uw9:--,Ņ8eded~}}+hg{ih{z$kj{z$yyylkzz#x*lkxlkzz#@sr=uvMMxuvtutu†ÄƒƒZYƒZYZYZYZYtu:;UTnnww~$powwpovvpovpopo-v1,uuxst++#'&UTgfwwpopowwpovvpovpopoPurqpouuxst+,+GF UTƒjj"ZYZYZYZYZYqp*zz5ZYqsqsqsprpq~;==:+1I^ll kihheYE-6MarrstsraM6-EYeeghhikkl]H1*9==>AFJJLMMNPPJ8"   '(('!2GUZZUG1 '?UgpphV@'  '?UgpphV@' 2GUZZUG1 '(('!8talksoup go ...      cgimp-text-layerG(text "talksoup go\nt class baby\nand i like \nchicken ") (font "Sans") (font-size 5.000000) (font-size-unit pixels) (hinting yes) (antialias yes) (language "c") (base-direction ltr) (color (color-rgba 0.000000 0.000000 0.000000 1.000000)) (justify center) (line-spacing 1.000000) (box-mode dynamic) (box-unit pixels)    `pҶ ! Ϯppn*ӎ0D `I ` 00 Empty Layer      X00 l00 |    罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#4     0000   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     0000&0.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     0000   TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/000077500000000000000000000000001067163320700246145ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.gorm/000077500000000000000000000000001067163320700323465ustar00rootroot00000000000000data.classes000066400000000000000000000012331067163320700345560ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.gorm{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "highlightingHit:", "removeHit:", "highlightInChannelHit:", "highlightInTabHit:", "messageInTabHit:" ); Super = NSObject; }; HighlightingPreferencesController = { Actions = ( "highlightingHit:", "removeHit:", "highlightInChannelHit:", "highlightInTabHit:", "messageInTabHit:" ); Outlets = ( highlightButton, removeButton, extraTable, window, highlightInChannelColor, highlightInTabColor, messageInTabColor ); Super = NSObject; }; }data.info000066400000000000000000000002701067163320700340540ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.gormGNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamobjects.gorm000066400000000000000000000205311067163320700346070ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.gormGNUstep archive00002af9:00000024:000000ec:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&!%!HighlightingPreferencesController0&%TableHeaderView01NSTableHeaderView1NSView1 NSResponder%  C% A  C% A&01 NSMutableArray1 NSArray&0&%ClipView0 1 NSClipView% A A C$ B  C$ B&0 &0 1 NSTableView1 NSControl%  C% C!  C% C!&0 &%0 1NSCell0&01NSFont%&&&&&&&&0 &01 NSTableColumn0&%column1 C% A GP01NSTableHeaderCell1NSTextFieldCell1 NSActionCell0& % Extra Words0% &&&&&&&&0%01NSColor0&%NSNamedColorSpace0&%System0&%controlShadowColor00&%System0&%windowFrameTextColor00&%cinq&&&&&&&&0%00 &%textBackgroundColor0!0"& % textColor0#0$& % gridColor0%0&&%System0'&%controlBackgroundColor0(1GSTableCornerView% @ @ A A  A A&0) &%% A @ @@0*0+&%controlBackgroundColor0,& % GormNSWindow0-1NSWindow%  C C<& % C D00.%  C C<  C C<&0/ &  001 NSColorWell% C B( BT A  BT A& 01 &%0203&&&&&&&&&0405&%NSCalibratedWhiteColorSpace ?06% C B BT A  BT A& 07 &%0809&&&&&&&&&0:5 ?0;% C B BT A  BT A& 0< &%0=0>&&&&&&&&&0?5 ?0@1 NSTextField% CF B B A  B A& 0A &%0B0C&%New Message In Tab&&&&&&&&0%0D0E&%System0F&%textBackgroundColor0GE0H& % textColor0I% CF B B A  B A& 0J &%0K0L&%Highlight In Tab&&&&&&&&0%0M0N&%System0O&%textBackgroundColor0PN0Q& % textColor0R% CF B( B A  B A& 0S &%0T0U&%Highlight in Channel&&&&&&&&0%0V0W&%System0X&%textBackgroundColor0YW0Z& % textColor0[1 NSScrollView% @ B( C; B  C; B&0\ & 0]1 NSScroller% @ A A B  A B&0^ &%0_&&&&&&&&&0` % A @ C$ A  C$ A&0a &0b0c& % controlColor( % A A A A ]`0d1NSButton% @ @ B A  B A&$0e &%0f1 NSButtonCell0g&%Remove&&&&&&&&%0h&0i&&&&0j% @ C C< A  C< A& 0k &%0l0m&%Highlight nickname0n1NSImage0o1NSMutableString&% common_SwitchOff&&&&&&&&%0p&0q&0r0s&% common_SwitchOn&&&0t0u&%System0v&%windowBackgroundColor0w&%Window0x&%Highlighting Preferencesx ? A F@ F@%0y0z&%NSApplicationIcon0{&%Scroller]0|& %  ColorWell300}&%GSCustomClassMap0~&0& %  ScrollView1[0& %  ClipView1`0& %  ColorWell460& %  ColorWell5;0&%TableCornerView(0& %  TableColumn100&%column2 C A GP00&% &&&&&&&&0%0u0&%controlShadowColor00&%System0&%windowFrameTextColor00&%nine&&&&&&&&0%00&%textBackgroundColor00& % textColor0& %  TextField1@0& % TableColumn00&%column1 BP A GP00&% &&&&&&&&0%00&%neuf&&&&&&&&0%0& %  TableColumn200&%column1 C% A GP00& % Extra Words&&&&&&&&0%00&%System0&%controlShadowColor00&%System0&%windowFrameTextColor00&%cinq&&&&&&&&0%00&%textBackgroundColor00& % textColor0& %  TextField3I0& %  TableColumn300&%column2 B A GP00&% &&&&&&&&0%0u0& % controlColor0&&&&&&&&0%0&% Button2d0& %  TableColumn40& %  TextField5R0&% Button3j0&% GormNSTableView1 0 &""01NSNibConnector,0&%NSOwner000001 NSNibOutletConnector,0ñ&%window0ı|0ű0Ʊ0DZ0ȱ0ɱ0ʱ0˱0̱0ͱ0α0ϱ0б{01!NSNibControlConnector{0ұ& % _doScroll:0ӱ0Ա0ձ0ֱ 0ױ& %  extraTable0ر 0ٱ&% highlightButton0ڱ 0۱& %  removeButton0ܱ |0ݱ&% highlightInChannelColor0ޱ 0߱&% highlightInTabColor0 0&% messageInTabColor0!|0&% highlightInChannelHit:0!0&% highlightInTabHit:0!0&% messageInTabHit:0!0& %  removeHit:0!0&% highlightingHit:01" GSMutableSet1# NSMutableSet1$NSSet&-TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.nib/000077500000000000000000000000001067163320700321525ustar00rootroot00000000000000classes.nib000066400000000000000000000014571067163320700342310ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.nib{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { highlightInChannelHit = id; highlightInTabHit = id; highlightingHit = id; messageInTabHit = id; removeHit = id; }; CLASS = HighlightingPreferencesController; LANGUAGE = ObjC; OUTLETS = { extraTable = id; highlightButton = id; highlightInChannelColor = id; highlightInTabColor = id; messageInTabColor = id; removeButton = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }info.nib000066400000000000000000000007551067163320700335270ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.nib IBDocumentLocation 625 70 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving keyedobjects.nib000066400000000000000000001564041067163320700352520ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/HighlightingPreferences.nib $archiver NSKeyedArchiver $objects $null $class CF$UID 208 NSClassesKeys CF$UID 173 NSClassesValues CF$UID 174 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 158 NSNamesValues CF$UID 159 NSNextOid 38 NSObjectsKeys CF$UID 155 NSObjectsValues CF$UID 157 NSOidsKeys CF$UID 175 NSOidsValues CF$UID 176 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 HighlightingPreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 61 NS.objects CF$UID 9 CF$UID 126 CF$UID 128 CF$UID 130 CF$UID 132 CF$UID 134 CF$UID 136 CF$UID 138 CF$UID 140 CF$UID 141 CF$UID 142 CF$UID 143 CF$UID 144 CF$UID 147 CF$UID 149 CF$UID 151 CF$UID 153 $class CF$UID 125 NSDestination CF$UID 10 NSLabel CF$UID 124 NSSource CF$UID 2 $class CF$UID 123 NSMaxSize CF$UID 122 NSMinSize CF$UID 121 NSScreenRect CF$UID 120 NSViewClass CF$UID 15 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 14 NSWindowRect CF$UID 11 NSWindowStyleMask 14 NSWindowTitle CF$UID 12 NSWindowView CF$UID 16 {{159, 125}, {453, 313}} $class CF$UID 13 NS.string Window $classes NSMutableString NSString NSObject $classname NSMutableString NSWindow $class CF$UID 13 NS.string View $class CF$UID 119 NSFrame CF$UID 118 NSNextResponder CF$UID 0 NSSubviews CF$UID 17 $class CF$UID 61 NS.objects CF$UID 18 CF$UID 31 CF$UID 82 CF$UID 87 CF$UID 93 CF$UID 98 CF$UID 103 CF$UID 110 CF$UID 114 $class CF$UID 30 NSCell CF$UID 20 NSEnabled NSFrame CF$UID 19 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 12 {{8, 287}, {176, 18}} $class CF$UID 29 NSAlternateContents CF$UID 28 NSAlternateImage CF$UID 25 NSButtonFlags 1211912703 NSButtonFlags2 2 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 21 NSControlView CF$UID 18 NSKeyEquivalent CF$UID 28 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 22 Highlight nickname $class CF$UID 24 NSName CF$UID 23 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 27 NSImageName CF$UID 26 NSSwitch $classes NSButtonImageSource NSObject $classname NSButtonImageSource $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 81 NSContentView CF$UID 33 NSCornerView CF$UID 41 NSFrame CF$UID 80 NSHScroller CF$UID 75 NSHeaderClipView CF$UID 38 NSNextKeyView CF$UID 33 NSNextResponder CF$UID 16 NSScrollAmts QSAAAEEgAABBmAAAQZgAAA== NSSubviews CF$UID 32 NSSuperview CF$UID 16 NSVScroller CF$UID 71 NSsFlags 18 NSvFlags 274 $class CF$UID 61 NS.objects CF$UID 33 CF$UID 71 CF$UID 75 CF$UID 38 CF$UID 41 $class CF$UID 70 NSBGColor CF$UID 67 NSDocView CF$UID 35 NSFrame CF$UID 66 NSNextKeyView CF$UID 35 NSNextResponder CF$UID 31 NSSubviews CF$UID 34 NSSuperview CF$UID 31 NScvFlags 4 NSvFlags 2304 $class CF$UID 61 NS.objects CF$UID 35 $class CF$UID 65 NSBackgroundColor CF$UID 56 NSCornerView CF$UID 41 NSEnabled NSFrameSize CF$UID 36 NSGridColor CF$UID 62 NSGridStyleMask 2 NSHeaderView CF$UID 37 NSIntercellSpacingHeight 2 NSIntercellSpacingWidth 3 NSNextResponder CF$UID 33 NSRowHeight 17 NSSuperview CF$UID 33 NSTableColumns CF$UID 44 NSTvFlags 381681664 {200, 213} $class CF$UID 40 NSFrameSize CF$UID 39 NSNextResponder CF$UID 38 NSSuperview CF$UID 38 NSTableView CF$UID 35 NSvFlags 256 $class CF$UID 70 NSBGColor CF$UID 67 NSDocView CF$UID 37 NSFrame CF$UID 79 NSNextKeyView CF$UID 37 NSNextResponder CF$UID 31 NSSubviews CF$UID 78 NSSuperview CF$UID 31 NScvFlags 4 NSvFlags 2304 {200, 17} $classes NSTableHeaderView NSView NSResponder NSObject $classname NSTableHeaderView $class CF$UID 43 NSFrame CF$UID 42 NSNextResponder CF$UID 31 NSSuperview CF$UID 31 NSvFlags 256 {{201, 0}, {16, 17}} $classes _NSCornerView NSView NSResponder NSObject $classname _NSCornerView $class CF$UID 61 NS.objects CF$UID 45 $class CF$UID 60 NSDataCell CF$UID 55 NSHeaderCell CF$UID 46 NSIsEditable NSIsResizeable NSMaxWidth 1000 NSMinWidth 40 NSTableView CF$UID 35 NSWidth 197 $class CF$UID 54 NSBackgroundColor CF$UID 48 NSCellFlags 75628032 NSCellFlags2 0 NSContents CF$UID 28 NSSupport CF$UID 47 NSTextColor CF$UID 50 $class CF$UID 24 NSName CF$UID 23 NSSize 11 NSfFlags 28 $class CF$UID 49 NSColorSpace 3 NSWhite MC4zMzMzMzI5OQA= $classes NSColor NSObject $classname NSColor $class CF$UID 49 NSCatalogName CF$UID 51 NSColor CF$UID 53 NSColorName CF$UID 52 NSColorSpace 6 System headerTextColor $class CF$UID 49 NSColorSpace 3 NSWhite MAA= $classes NSTableHeaderCell NSTextFieldCell NSActionCell NSCell NSObject $classname NSTableHeaderCell $class CF$UID 59 NSBackgroundColor CF$UID 56 NSCellFlags 338820672 NSCellFlags2 0 NSControlView CF$UID 35 NSSupport CF$UID 22 NSTextColor CF$UID 57 $class CF$UID 49 NSColorSpace 3 NSWhite MQA= $class CF$UID 49 NSCatalogName CF$UID 51 NSColor CF$UID 53 NSColorName CF$UID 58 NSColorSpace 6 controlTextColor $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTableColumn NSObject $classname NSTableColumn $classes NSMutableArray NSArray NSObject $classname NSMutableArray $class CF$UID 49 NSCatalogName CF$UID 51 NSColor CF$UID 64 NSColorName CF$UID 63 NSColorSpace 6 gridColor $class CF$UID 49 NSColorSpace 3 NSWhite MC41AA== $classes NSTableView %NSTableView NSControl NSView NSResponder NSObject $classname NSTableView {{1, 17}, {200, 213}} $class CF$UID 49 NSCatalogName CF$UID 51 NSColor CF$UID 69 NSColorName CF$UID 68 NSColorSpace 6 controlBackgroundColor $class CF$UID 49 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 74 NSAction CF$UID 73 NSFrame CF$UID 72 NSNextResponder CF$UID 31 NSPercent 0.99473685026168823 NSSuperview CF$UID 31 NSTarget CF$UID 31 NSvFlags 256 {{201, 17}, {15, 213}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 74 NSAction CF$UID 77 NSFrame CF$UID 76 NSNextResponder CF$UID 31 NSPercent 0.99047619104385376 NSSuperview CF$UID 31 NSTarget CF$UID 31 NSsFlags 1 NSvFlags 256 {{-100, -100}, {200, 15}} _doScroller: $class CF$UID 61 NS.objects CF$UID 37 {{1, 0}, {200, 17}} {{10, 50}, {217, 231}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView $class CF$UID 30 NSCell CF$UID 84 NSEnabled NSFrame CF$UID 83 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 36 {{4, 2}, {90, 32}} $class CF$UID 29 NSAlternateContents CF$UID 28 NSAlternateImage CF$UID 22 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 85 NSControlView CF$UID 82 NSKeyEquivalent CF$UID 86 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 22 Remove $class CF$UID 13 NS.string $class CF$UID 92 NSColor CF$UID 91 NSDragTypes CF$UID 88 NSEnabled NSFrame CF$UID 90 NSIsBordered NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 $class CF$UID 7 NS.objects CF$UID 89 $class CF$UID 13 NS.string NSColor pasteboard type {{389, 255}, {54, 26}} $class CF$UID 49 NSColorSpace 1 NSRGB MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA= $classes NSColorWell NSControl NSView NSResponder NSObject $classname NSColorWell $class CF$UID 92 NSColor CF$UID 97 NSDragTypes CF$UID 94 NSEnabled NSFrame CF$UID 96 NSIsBordered NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 $class CF$UID 7 NS.objects CF$UID 95 $class CF$UID 13 NS.string NSColor pasteboard type {{389, 221}, {54, 26}} $class CF$UID 49 NSColorSpace 1 NSRGB MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA= $class CF$UID 92 NSColor CF$UID 102 NSDragTypes CF$UID 99 NSEnabled NSFrame CF$UID 101 NSIsBordered NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 $class CF$UID 7 NS.objects CF$UID 100 $class CF$UID 13 NS.string NSColor pasteboard type {{389, 187}, {54, 26}} $class CF$UID 49 NSColorSpace 1 NSRGB MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA= $class CF$UID 109 NSCell CF$UID 105 NSEnabled NSFrame CF$UID 104 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 {{245, 192}, {139, 17}} $class CF$UID 59 NSBackgroundColor CF$UID 107 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 106 NSControlView CF$UID 103 NSSupport CF$UID 22 NSTextColor CF$UID 57 Highlight in Channel $class CF$UID 49 NSCatalogName CF$UID 51 NSColor CF$UID 69 NSColorName CF$UID 108 NSColorSpace 6 controlColor $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 109 NSCell CF$UID 112 NSEnabled NSFrame CF$UID 111 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 {{245, 260}, {139, 17}} $class CF$UID 59 NSBackgroundColor CF$UID 107 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 113 NSControlView CF$UID 110 NSSupport CF$UID 22 NSTextColor CF$UID 57 New Message in Tab $class CF$UID 109 NSCell CF$UID 116 NSEnabled NSFrame CF$UID 115 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 9 {{245, 226}, {139, 17}} $class CF$UID 59 NSBackgroundColor CF$UID 107 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 117 NSControlView CF$UID 114 NSSupport CF$UID 22 NSTextColor CF$UID 57 Highlight in Tab {{1, 9}, {453, 313}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 125 NSDestination CF$UID 18 NSLabel CF$UID 127 NSSource CF$UID 2 highlightButton $class CF$UID 125 NSDestination CF$UID 35 NSLabel CF$UID 129 NSSource CF$UID 2 extraTable $class CF$UID 125 NSDestination CF$UID 82 NSLabel CF$UID 131 NSSource CF$UID 2 removeButton $class CF$UID 125 NSDestination CF$UID 98 NSLabel CF$UID 133 NSSource CF$UID 2 highlightInChannelColor $class CF$UID 125 NSDestination CF$UID 93 NSLabel CF$UID 135 NSSource CF$UID 2 highlightInTabColor $class CF$UID 125 NSDestination CF$UID 87 NSLabel CF$UID 137 NSSource CF$UID 2 messageInTabColor $class CF$UID 125 NSDestination CF$UID 87 NSLabel CF$UID 139 NSSource CF$UID 18 nextKeyView $class CF$UID 125 NSDestination CF$UID 93 NSLabel CF$UID 139 NSSource CF$UID 87 $class CF$UID 125 NSDestination CF$UID 98 NSLabel CF$UID 139 NSSource CF$UID 93 $class CF$UID 125 NSDestination CF$UID 82 NSLabel CF$UID 139 NSSource CF$UID 98 $class CF$UID 125 NSDestination CF$UID 18 NSLabel CF$UID 139 NSSource CF$UID 82 $class CF$UID 146 NSDestination CF$UID 2 NSLabel CF$UID 145 NSSource CF$UID 87 messageInTabHit: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 146 NSDestination CF$UID 2 NSLabel CF$UID 148 NSSource CF$UID 93 highlightInTabHit: $class CF$UID 146 NSDestination CF$UID 2 NSLabel CF$UID 150 NSSource CF$UID 98 highlightInChannelHit: $class CF$UID 146 NSDestination CF$UID 2 NSLabel CF$UID 152 NSSource CF$UID 18 highlightingHit: $class CF$UID 146 NSDestination CF$UID 2 NSLabel CF$UID 154 NSSource CF$UID 82 removeHit: $class CF$UID 156 NS.objects CF$UID 18 CF$UID 10 CF$UID 35 CF$UID 16 CF$UID 31 CF$UID 93 CF$UID 45 CF$UID 98 CF$UID 103 CF$UID 110 CF$UID 82 CF$UID 114 CF$UID 87 $classes NSArray NSObject $classname NSArray $class CF$UID 156 NS.objects CF$UID 16 CF$UID 2 CF$UID 31 CF$UID 10 CF$UID 16 CF$UID 16 CF$UID 35 CF$UID 16 CF$UID 16 CF$UID 16 CF$UID 16 CF$UID 16 CF$UID 16 $class CF$UID 156 NS.objects CF$UID 18 CF$UID 10 CF$UID 35 CF$UID 93 CF$UID 31 CF$UID 45 CF$UID 98 CF$UID 103 CF$UID 110 CF$UID 2 CF$UID 82 CF$UID 114 CF$UID 87 $class CF$UID 156 NS.objects CF$UID 160 CF$UID 161 CF$UID 162 CF$UID 163 CF$UID 164 CF$UID 165 CF$UID 166 CF$UID 167 CF$UID 168 CF$UID 169 CF$UID 170 CF$UID 171 CF$UID 172 NSButton4 Window NSTableView 2111 NSScrollView1 NSTableColumn 21 NSTextField2 NSTextField21 File's Owner NSButton NSTextField22 2 $class CF$UID 156 NS.objects $class CF$UID 156 NS.objects $class CF$UID 156 NS.objects CF$UID 140 CF$UID 141 CF$UID 87 CF$UID 82 CF$UID 114 CF$UID 93 CF$UID 134 CF$UID 144 CF$UID 142 CF$UID 10 CF$UID 132 CF$UID 110 CF$UID 2 CF$UID 98 CF$UID 143 CF$UID 128 CF$UID 18 CF$UID 147 CF$UID 31 CF$UID 130 CF$UID 103 CF$UID 35 CF$UID 149 CF$UID 16 CF$UID 9 CF$UID 126 CF$UID 151 CF$UID 153 CF$UID 138 CF$UID 136 CF$UID 45 $class CF$UID 156 NS.objects CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 CF$UID 181 CF$UID 182 CF$UID 183 CF$UID 184 CF$UID 185 CF$UID 186 CF$UID 187 CF$UID 188 CF$UID 189 CF$UID 190 CF$UID 191 CF$UID 192 CF$UID 193 CF$UID 194 CF$UID 195 CF$UID 196 CF$UID 197 CF$UID 198 CF$UID 199 CF$UID 200 CF$UID 201 CF$UID 202 CF$UID 203 CF$UID 204 CF$UID 205 CF$UID 206 CF$UID 207 29 30 13 12 18 14 26 33 31 5 25 17 1 15 32 23 7 34 9 24 16 11 35 6 19 20 36 37 28 27 10 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/English.lproj/Localizable.strings000066400000000000000000000046701067163320700304570ustar00rootroot00000000000000/* Highlighting.m */ "The color is any color listed by typing /colors." = "The color is any color listed by typing /colors."; "Usage: /highlighting usercolor " = "Usage: /highlighting usercolor "; "This sets the highlighting color of a person who says your nickname. " = "This sets the highlighting color of a person who says your nickname. "; "Usage: /highlighting tabreferencecolor " = "Usage: /highlighting tabreferencecolor "; "This sets the highlighting color of the tab when a person says your nickname. " = "This sets the highlighting color of the tab when a person says your nickname. "; "Usage: /highlighting tabanythingcolor " = "Usage: /highlighting tabanythingcolor "; "This sets the highlighting color of the tab when a person says anything. " = "This sets the highlighting color of the tab when a person says anything. "; "Usage: /highlighting extrawords " = "Usage: /highlighting extrawords "; "This sets other words that activate the highlighting besides your nickname. The argument should be a list of words separated by '^'. If you simply specify '^', it will clear the list." = "This sets other words that activate the highlighting besides your nickname. The argument should be a list of words separated by '^'. If you simply specify '^', it will clear the list."; "The list is currently: " = "The list is currently: "; "Highlighting Configurator:" = "Highlighting Configurator:"; "Type /highlighting usercolor" = "Type /highlighting usercolor"; "or /highlighting tabreferencecolor" = "or /highlighting tabreferencecolor"; "or /highlighting tabanythingcolor" = "or /highlighting tabanythingcolor"; "or /highlighting extrawords\n" = "or /highlighting extrawords\n"; "for more information." = "for more information."; "Ok." = "Ok."; "Author: " = "Author: "; "Description: " = "Description: "; "This bundle will highlight the names of people who say your name in the channel. It will also handle the highlighting of the tabs. The highlighting colors as well as other words to highlight can be setup through the /highlighting command when this bundle is loaded" = "This bundle will highlight the names of people who say your name in the channel. It will also handle the highlighting of the tabs. The highlighting colors as well as other words to highlight can be setup through the /highlighting command when this bundle is loaded"; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/GNUmakefile000066400000000000000000000021551067163320700241530ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Highlighting BUNDLE_EXTENSION = ifeq ($(USE_APPKIT),) USE_APPKIT = yes endif BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Highlighting_OBJC_FILES = Highlighting.m ifeq ($(USE_APPKIT), yes) Highlighting_OBJC_FILES += HighlightingPreferencesController.m ifeq ($(OBJC_RUNTIME_LIB), apple) Highlighting_LOCALIZED_RESOURCE_FILES = HighlightingPreferences.nib else Highlighting_LOCALIZED_RESOURCE_FILES = HighlightingPreferences.gorm endif else GUI_LIB = endif Highlighting_LANGUAGES = English Highlighting_LOCALIZED_RESOURCE_FILES += Localizable.strings Highlighting_RESOURCE_FILES = AllLanguages/Defaults.plist AllLanguages/highlighting_prefs.tiff Highlighting_PRINCIPAL_CLASS = Highlighting Highlighting_OBJC_FILES = Highlighting.m HighlightingPreferencesController.m ifeq ($(OBJC_RUNTIME_LIB), apple) Highlighting_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Highlighting_BUNDLE_LIBS = -lTalkSoupBundles endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/GNUmakefile.preamble000066400000000000000000000007131067163320700257370ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ADDITIONAL_OBJCFLAGS += -DUSE_APPKIT ifeq ($(USE_APPKIT), yes) ADDITIONAL_OBJCFLAGS += -DUSE_APPKIT endif ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/Highlighting.h000066400000000000000000000074551067163320700246670ustar00rootroot00000000000000/*************************************************************************** Highlighting.h ------------------- begin : Fri May 2 16:48:50 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Highlighting; #ifndef HIGHLIGHTING_H #define HIGHLIGHTING_H @class NSBundle; #import #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Highlighting class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @class NSString, NSDictionary; extern NSString *HighlightingShouldDoNick; extern NSString *HighlightingUserColor; extern NSString *HighlightingTabReferenceColor; extern NSString *HighlightingTabAnythingColor; extern NSString *HighlightingExtraWords; @interface Highlighting : NSObject { id controller; } + (NSDictionary *)defaultSettings; + (void)setDefaultsObject: aObject forKey: aKey; + (id)defaultsObjectForKey: aKey; + (id)defaultDefaultsForKey: aKey; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end /** * This notification is put out everytime something is highlighted. * This can be used by other bundles to trap highlighting without having * to have their own preferences on extra words and such... */ extern NSString *TalkSoupHighlightingNotification; /* TalkSoupHighlightingNotification = @"TalkSoupHighlightingNotification" object: the message (NSAttributedString) userinfo: @"Message": The message (NSAttributedString) @"Type": The type (@"Action", @"Notice", @"Message") (NSString) @"From": The person who sent it (NSAttributedString) @"FromFull": The person who sent it with full prefix information (NSAttributedString) @"To": Who it was sent to. (NSAttributedString) @"Connection": the connection (id ) */ /** * This notification is sent out everytime a private message is received */ extern NSString *TalkSoupPrivateMessageNotification; /* TalkSoupPrivateMessageNotification = @"TalkSoupPrivateMessageNotification" object: the message (NSAttributedString) userinfo: @"Message": The message (NSAttributedString) @"Type": The type (@"Action", @"Notice", @"Message") (NSString) @"From": The person who sent it (NSAttributedString) @"FromFull": The person who sent it with full prefix information (NSAttributedString) @"To": Who it was sent to. (NSAttributedString) @"Connection": the connection (id ) */ #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/Highlighting.m000066400000000000000000000373011067163320700246650ustar00rootroot00000000000000/*************************************************************************** Highlighting.m ------------------- begin : Fri May 2 16:48:50 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Highlighting.h" #import #ifdef USE_APPKIT #import "HighlightingPreferencesController.h" #else @protocol NoAppKitProtocolForHighlighting - (void)reloadData; @end #endif #import #import #import #import #import #import #import #import #import #import #import #import #import #import static NSMutableDictionary *highlighting_defaults = nil; static id main_controller = nil; #define get_pref(__x) [Highlighting defaultsObjectForKey: (__x)] #define set_pref(__x,__y) \ { [Highlighting setDefaultsObject: (__y) forKey: (__x)];\ [main_controller reloadData]; } NSString *HighlightingShouldDoNick = @"HighlightingShouldDoNick"; NSString *HighlightingUserColor = @"HighlightingUserColor"; NSString *HighlightingTabReferenceColor = @"HighlightingTabReferenceColor"; NSString *HighlightingTabAnythingColor = @"HighlightingTabAnythingColor"; NSString *HighlightingExtraWords = @"HighlightingExtraWords"; NSString *TalkSoupHighlightingNotification = @"TalkSoupHighlightingNotification"; NSString *TalkSoupPrivateMessageNotification = @"TalkSoupPrivateMessageNotification"; static BOOL has_name(NSString *str, NSString *name, id connection) { NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString: @".:,- '\"\t!@#$%^&*()[]+=/\\{};<>"]; NSRange cur = {0}; NSRange a = {0}; unichar x; int len; BOOL is = NO; a.length = len = [str length]; str = [str performSelector: [connection lowercasingSelector]]; name = [name performSelector: [connection lowercasingSelector]]; while ((int)a.location < len) { cur = [str rangeOfString: name options: 0 range: a]; if (cur.location == NSNotFound) return NO; is = YES; if (cur.location > 0) { x = [str characterAtIndex: cur.location - 1]; is = [set characterIsMember: x]; } if ((int)cur.location + (int)cur.length < len) { x = [str characterAtIndex: cur.location + cur.length]; is &= [set characterIsMember: x]; } if (is) { return YES; } a.location += cur.location + cur.length; a.length = len - a.location; } return NO; } NSString *get_destination(NSString *to, NSString *from, NSString *nick, id connection) { id name = to; if ([connection caseInsensitiveCompare: name to: nick] == NSOrderedSame) { name = from; } return name; } void handle_notifications(id cont, NSAttributedString *msg, NSString *type, NSAttributedString *sender, NSAttributedString *to, id connection, BOOL highlit) { NSAttributedString *from; NSAttributedString *typeattr; from = [IRCUserComponents(sender) objectAtIndex: 0]; typeattr = AUTORELEASE([[NSAttributedString alloc] initWithString: type]); if (highlit) { [[NSNotificationCenter defaultCenter] postNotificationName: TalkSoupHighlightingNotification object: msg userInfo: [NSDictionary dictionaryWithObjectsAndKeys: msg, @"Message", typeattr, @"Type", from, @"From", sender, @"FromFull", to, @"To", connection, @"Connection", nil ]]; } if ([connection caseInsensitiveCompare: [to string] to: [connection nick]] == NSOrderedSame) { [[NSNotificationCenter defaultCenter] postNotificationName: TalkSoupPrivateMessageNotification object: msg userInfo: [NSDictionary dictionaryWithObjectsAndKeys: msg, @"Message", typeattr, @"Type", from, @"From", sender, @"FromFull", to, @"To", connection, @"Connection", nil ]]; } } NSAttributedString *do_highlighting(id cont, NSString *msg, NSAttributedString *from, NSArray *words, NSString *where, id connection, NSAttributedString *aNick, BOOL *highlit) { NSString *userColor = get_pref(HighlightingUserColor); NSString *refColor = get_pref(HighlightingTabReferenceColor); NSString *anyColor = get_pref(HighlightingTabAnythingColor); NSEnumerator *iter; id object; BOOL does = NO; iter = [words objectEnumerator]; while ((object = [iter nextObject])) { if (has_name(msg, object, connection)) { does = YES; break; } } if (highlit) *highlit = does; if (does) { if (refColor) { [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"HighlightTab", @"Process", refColor, @"TabColor", where, @"TabName", [NSNull null], @"TabPriority", nil] onConnection: connection withNickname: aNick sender: cont]; } if (userColor) { object = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: from]); [object addAttribute: IRCColor value: userColor range: NSMakeRange(0, [object length])]; return object; } } else { if (anyColor) { [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"HighlightTab", @"Process", anyColor, @"TabColor", where, @"TabName", nil] onConnection: connection withNickname: aNick sender: cont]; } } return from; } static NSInvocation *invoc = nil; #define COLOR_MSG _l(@"The color is any color listed by typing /colors.") @implementation Highlighting + (void)initialize { if (invoc) return; invoc = RETAIN([NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(commandHighlighting:connection:)]]); [invoc retainArguments]; [invoc setTarget: self]; [invoc setSelector: @selector(commandHighlighting:connection:)]; highlighting_defaults = [[NSMutableDictionary alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [Highlighting class]] pathForResource: @"Defaults" ofType: @"plist"]]; } + (NSDictionary *)defaultSettings { return highlighting_defaults; } + (void)setDefaultsObject: aObject forKey: aKey { NSUserDefaults *object = [NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: @"Highlighting"] && ![aKey isEqualToString: @"Highlighting"]) { NSMutableDictionary *y; NSDictionary *tmp; aKey = [aKey substringFromIndex: 12]; tmp = [object objectForKey: @"Highlighting"]; if (!tmp) { y = AUTORELEASE([NSMutableDictionary new]); } else { y = [NSMutableDictionary dictionaryWithDictionary: tmp]; } if (aObject) { [y setObject: aObject forKey: aKey]; } else { [y removeObjectForKey: aKey]; } [object setObject: y forKey: @"Highlighting"]; } } + (id)defaultsObjectForKey: aKey { NSMutableDictionary *object = (NSMutableDictionary *)[NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: @"Highlighting"] && ![aKey isEqualToString: @"Highlighting"]) { aKey = [aKey substringFromIndex: 12]; object = [object objectForKey: @"Highlighting"]; if (!(object)) { [[NSUserDefaults standardUserDefaults] setObject: object = highlighting_defaults forKey: @"Highlighting"]; } return (object = [object objectForKey: aKey]) ? object : [highlighting_defaults objectForKey: aKey]; } return [object objectForKey: aKey]; } + (id)defaultDefaultsForKey: aKey { return [highlighting_defaults objectForKey: aKey]; } + (NSAttributedString *)commandHighlighting: (NSString *)args connection: connection { id x = [args separateIntoNumberOfArguments: 2]; id key = nil, val; int cnt = [x count]; id msg = @""; if (cnt > 0) { key = [x objectAtIndex: 0]; } else { key = @""; } if ([key caseInsensitiveCompare: @"shouldhighlightnick"] == NSOrderedSame) { val = get_pref(HighlightingShouldDoNick); if (!val || [val isEqualToString: @"YES"]) { val = @"NO"; msg = _l(@"Turning off nick highlighting...\n"); } else { val = @"YES"; msg = _l(@"Turning on nick highlighting...\n"); } set_pref(HighlightingShouldDoNick, val); } else if ([key caseInsensitiveCompare: @"usercolor"] == NSOrderedSame) { if (cnt == 1) { return BuildAttributedString( _l(@"Usage: /highlighting usercolor "), @"\n", _l(@"This sets the highlighting color of a person who says your nickname. "), COLOR_MSG, nil); } val = IRCColorFromUserColor([x objectAtIndex: 1]); if (!val) { return S2AS(COLOR_MSG); } set_pref(HighlightingUserColor, val); } else if ([key caseInsensitiveCompare: @"tabreferencecolor"] == NSOrderedSame) { if (cnt == 1) { return BuildAttributedString( _l(@"Usage: /highlighting tabreferencecolor "), @"\n", _l(@"This sets the highlighting color of the tab when a person says " @"your nickname. "), COLOR_MSG, nil); } val = IRCColorFromUserColor([x objectAtIndex: 1]); if (!val) { return S2AS(COLOR_MSG); } set_pref(HighlightingTabReferenceColor, val); } else if ([key caseInsensitiveCompare: @"tabanythingcolor"] == NSOrderedSame) { if (cnt == 1) { return BuildAttributedString( _l(@"Usage: /highlighting tabanythingcolor "), @"\n", _l(@"This sets the highlighting color of the tab when a person says anything. "), COLOR_MSG, nil); } val = IRCColorFromUserColor([x objectAtIndex: 1]); if (!val) { return S2AS(COLOR_MSG); } set_pref(HighlightingTabAnythingColor, val); } else if ([key caseInsensitiveCompare: @"extrawords"] == NSOrderedSame) { val = [get_pref(HighlightingExtraWords) componentsJoinedByString: @"^"]; if (!val) val = @""; if (cnt == 1) { return BuildAttributedString( _l(@"Usage: /highlighting extrawords "), @"\n", _l(@"This sets other words that activate the highlighting besides your " @"nickname. The argument should be a list of words separated by " @"'^'. If you simply specify '^', it will clear the list."), @"\n", _l(@"The list is currently: "), val, nil); } val = [[x objectAtIndex: 1] componentsSeparatedByString: @"^"]; val = [NSMutableArray arrayWithArray: val]; [val removeObject: @""]; if ([val count] == 0) { val = nil; } set_pref(HighlightingExtraWords, val); } else { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Highlighting Configurator:"), @"\n", _l(@"Type /highlighting usercolor"), @"\n", _l(@"or /highlighting tabreferencecolor"), @"\n", _l(@"or /highlighting tabanythingcolor"), @"\n", _l(@"or /highlighting extrawords"), @"\n", _l(@"or /highlighting shouldhighlightnick"), @"\n", _l(@"for more information."), nil); } return S2AS(([NSString stringWithFormat: @"%@%@", msg, _l(@"Ok.")])); } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"This bundle will highlight the names of people " @"who say your name in the channel. It will also handle the " @"highlighting of the tabs. The highlighting colors as well as " @"other words to highlight can be setup through the /highlighting " @"command when this bundle is loaded"), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - pluginActivated { #ifdef USE_APPKIT main_controller = controller = [HighlightingPreferencesController new]; if (controller) { [[NSNotificationCenter defaultCenter] postNotificationName: @"PreferencesModuleAdditionNotification" object: controller]; } #endif [_TS_ addCommand: @"highlighting" withInvocation: invoc]; return self; } - pluginDeactivated { #ifdef USE_APPKIT if (controller) { [[NSNotificationCenter defaultCenter] postNotificationName: @"PreferencesModuleRemovalNotification" object: controller]; } main_controller = nil; DESTROY(controller); #endif [_TS_ removeCommand: @"highlighting"]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id from = [IRCUserComponents(sender) objectAtIndex: 0]; id where = get_destination([to string], [from string], [connection nick], connection); id words = get_pref(HighlightingExtraWords); id shouldAdd = get_pref(HighlightingShouldDoNick); NSMutableArray *x = [NSMutableArray arrayWithObjects: nil]; BOOL highlit; if (!shouldAdd || [shouldAdd isEqualToString: @"YES"]) { [x addObject: [connection nick]]; } if ([words isKindOfClass: [NSArray class]]) { [x addObjectsFromArray: words]; } sender = do_highlighting(self, [aMessage string], sender, x, where, connection, aNick, &highlit); handle_notifications(self, aMessage, @"Message", sender, to, connection, highlit); [_TS_ messageReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id from = [IRCUserComponents(sender) objectAtIndex: 0]; id where = get_destination([to string], [from string], [connection nick], connection); id words = get_pref(HighlightingExtraWords); id shouldAdd = get_pref(HighlightingShouldDoNick); NSMutableArray *x = [NSMutableArray arrayWithObjects: nil]; BOOL highlit; if (!shouldAdd || [shouldAdd isEqualToString: @"YES"]) { [x addObject: [connection nick]]; } if ([words isKindOfClass: [NSArray class]]) { [x addObjectsFromArray: words]; } sender = do_highlighting(self, [aMessage string], sender, x, where, connection, aNick, &highlit); handle_notifications(self, aMessage, @"Notice", sender, to, connection, highlit); [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id from = [IRCUserComponents(sender) objectAtIndex: 0]; id where = get_destination([to string], [from string], [connection nick], connection); id words = get_pref(HighlightingExtraWords); id shouldAdd = get_pref(HighlightingShouldDoNick); NSMutableArray *x = [NSMutableArray arrayWithObjects: nil]; BOOL highlit; if (!shouldAdd || [shouldAdd isEqualToString: @"YES"]) { [x addObject: [connection nick]]; } if ([words isKindOfClass: [NSArray class]]) { [x addObjectsFromArray: words]; } sender = do_highlighting(self, [aMessage string], sender, x, where, connection, aNick, &highlit); handle_notifications(self, aMessage, @"Action", sender, to, connection, highlit); [_TS_ actionReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/HighlightingPreferencesController.h000066400000000000000000000035401067163320700311040ustar00rootroot00000000000000/*************************************************************************** HighlightingPreferencesController.h ------------------- begin : Mon Dec 29 12:11:34 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @class NSButton, NSTableView, NSWindow, NSColorWell; @class NSMutableArray, NSView, NSImage; @interface HighlightingPreferencesController : NSObject { NSButton *highlightButton; NSButton *removeButton; NSTableView *extraTable; NSView *window; NSColorWell *highlightInChannelColor; NSColorWell *highlightInTabColor; NSColorWell *messageInTabColor; NSMutableArray *extraNames; NSImage *preferencesIcon; int currentlySelected; BOOL isActive; } - (void)reloadData; - (NSView *)preferencesView; - (NSImage *)preferencesIcon; - (NSString *)preferencesName; - (void)activate: aPrefs; - (void)deactivate; - (void)highlightingHit: (id)sender; - (void)removeHit: (id)sender; - (void)highlightInChannelHit: (id)sender; - (void)highlightInTabHit: (id)sender; - (void)messageInTabHit: (id)sender; @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Highlighting/HighlightingPreferencesController.m000066400000000000000000000143071067163320700311140ustar00rootroot00000000000000/*************************************************************************** HighlightingPreferencesController.m ------------------- begin : Mon Dec 29 12:11:34 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "HighlightingPreferencesController.h" #import "Highlighting.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #define get_pref(__x) [Highlighting defaultsObjectForKey: (__x)] #define set_pref(__x,__y) [Highlighting setDefaultsObject: (__y) forKey: (__x)] NSString *nothingThereYetMessage = nil; @protocol HighlightingPreferencesControllerNeedsSomeGNUstepOutputStuff + (NSColor *)colorFromEncodedData: (id)aData; - (id)encodeToData; @end @implementation HighlightingPreferencesController + (void)initialize { if (nothingThereYetMessage) return; nothingThereYetMessage = _l(@"Double-click to add"); } - init { id bundle, path; if (!(self = [super init])) return nil; bundle = [NSBundle bundleForClass: [Highlighting class]]; if (![NSBundle loadNibNamed: @"HighlightingPreferences" owner: self]) { [super dealloc]; return nil; } path = [bundle pathForResource: @"highlighting_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find highlighting_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } return self; } - (NSView *)preferencesView { return window; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSString *)preferencesName { return _l(@"Highlighting"); } - (void)activate: aPrefs { isActive = YES; [self reloadData]; } - (void)deactivate { isActive = NO; } - (void)awakeFromNib { NSWindow *tempWindow; tempWindow = (NSWindow *)window; window = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [window setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [extraTable setDataSource: self]; [extraTable setDelegate: self]; [extraTable setRowHeight: [[NSFont systemFontOfSize: 0.0] pointSize] * 1.5]; [self reloadData]; } - (void)reloadData { id temp; Class aClass; if (!window || !isActive) return; aClass = [NSColor class]; RELEASE(extraNames); extraNames = (!(temp = get_pref(HighlightingExtraWords))) ? [NSMutableArray new] : RETAIN([NSMutableArray arrayWithArray: temp]); [extraTable reloadData]; temp = get_pref(HighlightingShouldDoNick); if (!temp || [temp isEqualToString: @"YES"]) { [highlightButton setState: NSOnState]; } [highlightInChannelColor setColor: [aClass colorFromEncodedData: get_pref(HighlightingUserColor)]]; [messageInTabColor setColor: [aClass colorFromEncodedData: get_pref(HighlightingTabAnythingColor)]]; [highlightInTabColor setColor: [aClass colorFromEncodedData: get_pref(HighlightingTabReferenceColor)]]; } - (void)dealloc { RELEASE(preferencesIcon); DESTROY(extraNames); DESTROY(window); [super dealloc]; } - (void)highlightingHit: (id)sender { if ([sender state] == NSOffState) { set_pref(HighlightingShouldDoNick, @"NO"); } else { set_pref(HighlightingShouldDoNick, @"YES"); } } - (void)removeHit: (id)sender { if (currentlySelected >= [extraNames count]) return; [extraNames removeObjectAtIndex: currentlySelected]; [self tableView: extraTable shouldSelectRow: currentlySelected]; [extraTable reloadData]; } - (void)highlightInChannelHit: (id)sender { id temp = [sender color]; set_pref(HighlightingUserColor, [temp encodeToData]); } - (void)highlightInTabHit: (id)sender { id temp = [sender color]; set_pref(HighlightingTabReferenceColor, [temp encodeToData]); } - (void)messageInTabHit: (id)sender { id temp = [sender color]; set_pref(HighlightingTabAnythingColor, [temp encodeToData]); } - (BOOL)tableView: (NSTableView *)aTableView shouldSelectRow: (int)aRow { currentlySelected = aRow; if (currentlySelected >= [extraNames count]) { [removeButton setEnabled: NO]; } else { [removeButton setEnabled: YES]; } return YES; } - (int)numberOfRowsInTableView: (NSTableView *)aTableView { return [extraNames count] + 1; } - (id)tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if (rowIndex >= [extraNames count]) { return nothingThereYetMessage; } return [extraNames objectAtIndex: rowIndex]; } - (BOOL)tableView: (NSTableView *)aTableView shouldEditTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if (rowIndex <= [extraNames count]) return YES; return NO; } - (void)tableView: (NSTableView *)aTableView setObjectValue: (id)anObject forTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if ([anObject isEqualToString: nothingThereYetMessage]) { return; } else if (rowIndex >= [extraNames count]) { [extraNames addObject: anObject]; } else { [extraNames insertObject: anObject atIndex: rowIndex]; [extraNames removeObjectAtIndex: rowIndex + 1]; } set_pref(HighlightingExtraWords, AUTORELEASE([extraNames copy])); [aTableView reloadData]; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/000077500000000000000000000000001067163320700207145ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/English.lproj/000077500000000000000000000000001067163320700234325ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/English.lproj/Localizable.strings000066400000000000000000000046701067163320700272750ustar00rootroot00000000000000/* Highlighting.m */ "The color is any color listed by typing /colors." = "The color is any color listed by typing /colors."; "Usage: /highlighting usercolor " = "Usage: /highlighting usercolor "; "This sets the highlighting color of a person who says your nickname. " = "This sets the highlighting color of a person who says your nickname. "; "Usage: /highlighting tabreferencecolor " = "Usage: /highlighting tabreferencecolor "; "This sets the highlighting color of the tab when a person says your nickname. " = "This sets the highlighting color of the tab when a person says your nickname. "; "Usage: /highlighting tabanythingcolor " = "Usage: /highlighting tabanythingcolor "; "This sets the highlighting color of the tab when a person says anything. " = "This sets the highlighting color of the tab when a person says anything. "; "Usage: /highlighting extrawords " = "Usage: /highlighting extrawords "; "This sets other words that activate the highlighting besides your nickname. The argument should be a list of words separated by '^'. If you simply specify '^', it will clear the list." = "This sets other words that activate the highlighting besides your nickname. The argument should be a list of words separated by '^'. If you simply specify '^', it will clear the list."; "The list is currently: " = "The list is currently: "; "Highlighting Configurator:" = "Highlighting Configurator:"; "Type /highlighting usercolor" = "Type /highlighting usercolor"; "or /highlighting tabreferencecolor" = "or /highlighting tabreferencecolor"; "or /highlighting tabanythingcolor" = "or /highlighting tabanythingcolor"; "or /highlighting extrawords\n" = "or /highlighting extrawords\n"; "for more information." = "for more information."; "Ok." = "Ok."; "Author: " = "Author: "; "Description: " = "Description: "; "This bundle will highlight the names of people who say your name in the channel. It will also handle the highlighting of the tabs. The highlighting colors as well as other words to highlight can be setup through the /highlighting command when this bundle is loaded" = "This bundle will highlight the names of people who say your name in the channel. It will also handle the highlighting of the tabs. The highlighting colors as well as other words to highlight can be setup through the /highlighting command when this bundle is loaded"; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/GNUmakefile000066400000000000000000000012341067163320700227660ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Ignore BUNDLE_EXTENSION = ifeq ($(USE_APPKIT),) USE_APPKIT = yes endif BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Ignore_OBJC_FILES = Ignore.m Ignore_LANGUAGES = English Ignore_LOCALIZED_RESOURCE_FILES += Localizable.strings Ignore_RESOURCE_FILES = Ignore_PRINCIPAL_CLASS = Ignore Ignore_OBJC_FILES = Ignore.m ifeq ($(OBJC_RUNTIME_LIB), apple) Ignore_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Ignore_BUNDLE_LIBS = -lTalkSoupBundles endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/GNUmakefile.preamble000066400000000000000000000007131067163320700245550ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ADDITIONAL_OBJCFLAGS += -DUSE_APPKIT ifeq ($(USE_APPKIT), yes) ADDITIONAL_OBJCFLAGS += -DUSE_APPKIT endif ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/Ignore.h000066400000000000000000000042421067163320700223120ustar00rootroot00000000000000/*************************************************************************** Ignore.h ------------------- begin : Tue Oct 11 17:20:38 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Ignore; #ifndef IGNORE_H #define IGNORE_H #import @class NSBundle, NSString, NSDictionary; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Ignore class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] extern NSString *IgnoreMaskList; @class NSAttributedString; @interface Ignore : NSObject + (NSDictionary *)defaultSettings; + (void)setDefaultsObject: aObject forKey: aKey; + (id)defaultsObjectForKey: aKey; + (id)defaultDefaultsForKey: aKey; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Ignore/Ignore.m000066400000000000000000000201241067163320700223140ustar00rootroot00000000000000/*************************************************************************** Ignore.m ------------------- begin : Tue Oct 11 17:18:36 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Ignore.h" #import #import #import #import #import #import #import #import #import #import NSString *IgnoreMaskList = @"IgnoreMaskList"; static NSInvocation *ignore_invoc = nil; static NSDictionary *ignore_defaults = nil; #define get_pref(__x) [Ignore defaultsObjectForKey: (__x)] #define set_pref(__x,__y) [Ignore setDefaultsObject: (__y) forKey: (__x)] BOOL is_ignored(NSAttributedString *sender, id connection) { NSArray *array; NSEnumerator *iter; id object; NSString *from = [sender string]; SEL aSel; aSel = [connection lowercasingSelector]; if (!aSel) aSel = @selector(lowercaseString); array = [Ignore defaultsObjectForKey: IgnoreMaskList]; if (!array) return NO; from = [from performSelector: aSel]; iter = [array objectEnumerator]; while ((object = [iter nextObject])) { if ([from matchesIRCWildcard: [object performSelector: aSel]]) return YES; } return NO; } NSAttributedString *ignore_summary(void) { NSMutableAttributedString *new; NSArray *array; NSEnumerator *iter; id object; new = AUTORELEASE([NSMutableAttributedString new]); array = [Ignore defaultsObjectForKey: IgnoreMaskList]; if (!array || [array count] == 0) return BuildAttributedString(_l(@"No ignore masks defined."), nil); [new appendAttributedString: BuildAttributedString(_l(@"Ignore masks:"), @"\n", nil)]; iter = [array objectEnumerator]; while ((object = [iter nextObject])) { [new appendAttributedString: BuildAttributedString(@" ", object, @"\n", nil)]; } [new appendAttributedString: BuildAttributedString(_l(@"End list."), nil)]; return new; } @implementation Ignore + (void)initialize { if (ignore_invoc) return; ignore_invoc = RETAIN([NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(commandIgnore:connection:)]]); [ignore_invoc retainArguments]; [ignore_invoc setTarget: self]; [ignore_invoc setSelector: @selector(commandIgnore:connection:)]; /* ignore_defaults = [[NSMutableDictionary alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [Ignore class]] pathForResource: @"Defaults" ofType: @"plist"]]; */ ignore_defaults = [NSMutableDictionary new]; } + (NSAttributedString *)commandIgnore: (NSString *)args connection: connection { id x = [args separateIntoNumberOfArguments: 3]; unsigned cnt = [x count]; id array, cmd, lastarg; if (cnt == 0) { return BuildAttributedString(_l(@"Usage:"), @"\n ", _l(@"/ignore - this screen"), @"\n ", _l(@"/ignore del mask - remove ignore mask"), @"\n ", _l(@"/ignore [add] mask - add ignore mask"), @"\n", ignore_summary(), nil); } cmd = [x objectAtIndex: 0]; if (cnt == 1) { if ([cmd isEqualToString: @"add"] || [cmd isEqualToString: @"del"]) return BuildAttributedString(_l(@"Missing required argument."), @"\n", [self commandIgnore: @"" connection: connection], nil); return [self commandIgnore: [NSString stringWithFormat: @"add %@", cmd] connection: connection]; } lastarg = [x objectAtIndex: 1]; array = [self defaultsObjectForKey: IgnoreMaskList]; if (!array) array = AUTORELEASE([NSMutableArray new]); else array = [NSMutableArray arrayWithArray: array]; if ([cmd isEqualToString: @"add"]) { [array removeObject: lastarg]; [array addObject: lastarg]; [self setDefaultsObject: array forKey: IgnoreMaskList]; return BuildAttributedFormat(_l(@"Added '%@' mask to ignore list."), lastarg); } else if ([cmd isEqualToString: @"del"]) { if (![array containsObject: lastarg]) return BuildAttributedFormat(_l(@"Mask '%@' not found.\n%@"), lastarg, [self commandIgnore: @"" connection: connection]); [array removeObject: lastarg]; [self setDefaultsObject: array forKey: IgnoreMaskList]; return BuildAttributedFormat(_l(@"Removed '%@' mask from ignore list."), lastarg); } return BuildAttributedFormat(_l(@"Subcommand '%@' not understood.\n%@"), cmd, [self commandIgnore: @"" connection: connection]); } + (NSDictionary *)defaultSettings { return ignore_defaults; } + (void)setDefaultsObject: aObject forKey: aKey { NSUserDefaults *object = [NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: @"Ignore"] && ![aKey isEqualToString: @"Ignore"]) { NSMutableDictionary *y; NSDictionary *tmp; aKey = [aKey substringFromIndex: 12]; tmp = [object objectForKey: @"Ignore"]; if (!tmp) { y = AUTORELEASE([NSMutableDictionary new]); } else { y = [NSMutableDictionary dictionaryWithDictionary: tmp]; } if (aObject) { [y setObject: aObject forKey: aKey]; } else { [y removeObjectForKey: aKey]; } [object setObject: y forKey: @"Ignore"]; } } + (id)defaultsObjectForKey: aKey { NSDictionary *object = (NSMutableDictionary *)[NSUserDefaults standardUserDefaults]; if ([aKey hasPrefix: @"Ignore"] && ![aKey isEqualToString: @"Ignore"]) { aKey = [aKey substringFromIndex: 12]; object = [object objectForKey: @"Ignore"]; if (!(object)) { [[NSUserDefaults standardUserDefaults] setObject: object = ignore_defaults forKey: @"Ignore"]; } return (object = [object objectForKey: aKey]) ? object : [ignore_defaults objectForKey: aKey]; } return [object objectForKey: aKey]; } + (id)defaultDefaultsForKey: aKey { return [ignore_defaults objectForKey: aKey]; } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Adds /ignore command. Special thanks goes to" @" Patrick \"Diablo-D3\" McFarland for inspiring this plugin."), nil); } - pluginActivated { [_TS_ addCommand: @"ignore" withInvocation: ignore_invoc]; return self; } - pluginDeactivated { [_TS_ removeCommand: @"ignore"]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { if (!is_ignored(sender, connection)) [_TS_ messageReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { if (!is_ignored(sender, connection)) [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { if (!is_ignored(sender, connection)) [_TS_ actionReceived: anAction to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/000077500000000000000000000000001067163320700213365ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/English.lproj/000077500000000000000000000000001067163320700240545ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/English.lproj/Localizable.strings000066400000000000000000000006701067163320700277130ustar00rootroot00000000000000/* KeepAlive.m */ "Author: " = "Author: "; "Description: " = "Description: "; "A simple bundle that will send a ping to all connected servers every 3 minutes. This can be used to stay connected on flaky connections." = "A simple bundle that will send a ping to all connected servers every 3 minutes. This can be used to stay connected on flaky connections."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/GNUmakefile000066400000000000000000000011341067163320700234070ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = KeepAlive BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters KeepAlive_LANGUAGES = English KeepAlive_LOCALIZED_RESOURCE_FILES = Localizable.strings KeepAlive_PRINCIPAL_CLASS = KeepAlive KeepAlive_OBJC_FILES = KeepAlive.m ifeq ($(OBJC_RUNTIME_LIB), apple) KeepAlive_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else KeepAlive_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/GNUmakefile.preamble000066400000000000000000000005401067163320700251750ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/KeepAlive.h000066400000000000000000000026611067163320700233610ustar00rootroot00000000000000/*************************************************************************** KeepAlive.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class KeepAlive; #ifndef KEEP_ALIVE_H #define KEEP_ALIVE_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [KeepAlive class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString, NSTimer; @interface KeepAlive : NSObject { NSTimer *timer; } - pluginActivated; - pluginDeactivated; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/KeepAlive/KeepAlive.m000066400000000000000000000044101067163320700233600ustar00rootroot00000000000000/*************************************************************************** KeepAlive.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "KeepAlive.h" #import #import #import #import #import #import @implementation KeepAlive - fireTimer: (NSTimer *)aTimer { NSEnumerator *iter; id object; iter = [[[_TS_ pluginForInput] connections] objectEnumerator]; while ((object = [iter nextObject])) { [_TS_ sendPingWithArgument: S2AS(@"KeepAlive") onConnection: object withNickname: S2AS([object nick]) sender: [_TS_ pluginForOutput]]; } return self; } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"A simple bundle that will send a ping to " @"all connected servers every 3 minutes. This can be used " @"to stay connected on flaky connections."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - pluginActivated { timer = RETAIN([NSTimer scheduledTimerWithTimeInterval: 180.0 target: self selector: @selector(fireTimer:) userInfo: nil repeats: YES]); return self; } - pluginDeactivated { [timer invalidate]; DESTROY(timer); return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/000077500000000000000000000000001067163320700210575ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/English.lproj/000077500000000000000000000000001067163320700235755ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/English.lproj/Localizable.strings000066400000000000000000000040371067163320700274350ustar00rootroot00000000000000/* Logging.m */ "Connect to a server before using this command" = "Connect to a server before using this command"; "Usage: /logging " = "Usage: /logging "; "[%@] LOGGING DEACTIVATED\n" = "[%@] LOGGING DEACTIVATED\n"; "Logging turned off." = "Logging turned off."; "Could not open file for writing: " = "Could not open file for writing: "; "[%@] LOGGING ACTIVATED\n" = "[%@] LOGGING ACTIVATED\n"; "Logging turned on." = "Logging turned on."; "Author: " = "Author: "; "Description: " = "Description: "; "This command can handle logging to a file. To use it, simply type /logging on any connection to log that connection. To set up persistent logging, please see the FAQ distributed with TalkSoup." = "This command can handle logging to a file. To use it, simply type /logging on any connection to log that connection. To set up persistent logging, please see the FAQ distributed with TalkSoup."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; "[%@] %@ has quit IRC (%@)\n" = "[%@] %@ has quit IRC (%@)\n"; "[%@] <%@:%@> CTCP-REPLY %@ %@\n" = "[%@] <%@:%@> CTCP-REPLY %@ %@\n"; "[%@] <%@:%@> CTCP-REQUEST %@ %@\n" = "[%@] <%@:%@> CTCP-REQUEST %@ %@\n"; "[%@] Connection Terminated\n" = "[%@] Connection Terminated\n"; "[%@] LOGGING DEACTIVATED\n" = "[%@] LOGGING DEACTIVATED\n"; "[%@] <%@:%@> CTCP-REQUEST %@ %@\n" = "[%@] <%@:%@> CTCP-REQUEST %@ %@\n"; "[%@] ERROR: %@\n" = "[%@] ERROR: %@\n"; "[%@] Wallops(%@): %@\n" = "[%@] Wallops(%@): %@\n"; "[%@] %@ was kicked from %@ by %@ (%@)\n" = "[%@] %@ was kicked from %@ by %@ (%@)\n"; "[%@] %@(%@) has invited you to %@\n" = "[%@] %@(%@) has invited you to %@\n"; "[%@] %@ sets mode %@ %@ %@\n" = "[%@] %@ sets mode %@ %@ %@\n"; "[%@] %@ is now known as %@\n" = "[%@] %@ is now known as %@\n"; "[%@] %@(%@) has joined %@\n" = "[%@] %@(%@) has joined %@\n"; "[%@] %@ has parted %@(%@)\n" = "[%@] %@ has parted %@(%@)\n"; "[%@] %@ has quit IRC(%@)\n" = "[%@] %@ has quit IRC(%@)\n"; "[%@] %@ changed the topic in %@ to '%@'\n" = "[%@] %@ changed the topic in %@ to '%@'\n"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/GNUmakefile000066400000000000000000000011121067163320700231240ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Logging BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Logging_LANGUAGES = English Logging_LOCALIZED_RESOURCE_FILES = Localizable.strings Logging_PRINCIPAL_CLASS = Logging Logging_OBJC_FILES = Logging.m ifeq ($(OBJC_RUNTIME_LIB), apple) Logging_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Logging_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/GNUmakefile.preamble000066400000000000000000000005401067163320700247160ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/Logging.h000066400000000000000000000136571067163320700226320ustar00rootroot00000000000000/*************************************************************************** Logging.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Logging; #ifndef LOGGING_H #define LOGGING_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Logging class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString, NSArray; @interface Logging : NSObject - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - lostConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - errorReceived: (NSAttributedString *)anError onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - modeChanged: (NSAttributedString *)mode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Logging/Logging.m000066400000000000000000000477061067163320700226410ustar00rootroot00000000000000/*************************************************************************** Logging.m ------------------- begin : Sat Jun 27 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Logging.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import static NSMapTable *files = 0; static NSInvocation *invoc = nil; #define USE_DATE [[NSDate date] descriptionWithCalendarFormat: @"%Y-%m-%d %H:%M:%S" \ timeZone: nil locale: nil] @implementation Logging + (void)initialize { if (invoc) return; files = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 5); invoc = RETAIN([NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(commandLogging:connection:)]]); [invoc retainArguments]; [invoc setTarget: self]; [invoc setSelector: @selector(commandLogging:connection:)]; } + (NSAttributedString *)commandLogging: (NSString *)command connection: (id)connection { id arr = [command separateIntoNumberOfArguments: 1]; id x; id dfm; BOOL isDir; id path; if (!connection) { return S2AS(_l(@"Connect to a server before using this command")); } if ([arr count] == 0) { x = NSMapGet(files, connection); if (!x) { return S2AS(_l(@"Usage: /logging ")); } else { [x writeData: [[NSString stringWithFormat: _l(@"[%@] LOGGING DEACTIVATED\n"), USE_DATE] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; NSMapRemove(files, connection); return S2AS(_l(@"Logging turned off.")); } } dfm = [NSFileManager defaultManager]; x = nil; path = [[arr objectAtIndex: 0] stringByStandardizingPath]; isDir = NO; if (![dfm fileExistsAtPath: path isDirectory: &isDir]) { isDir = ![dfm createFileAtPath: path contents: AUTORELEASE([NSData new]) attributes: nil]; } if (!isDir) { x = [NSFileHandle fileHandleForWritingAtPath: path]; [x seekToEndOfFile]; } else { return BuildAttributedString(_l(@"Could not open file for writing: "), path, nil); } NSMapInsert(files, connection, x); [x writeData: [[NSString stringWithFormat: _l(@"[%@] LOGGING ACTIVATED\n"), USE_DATE] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return S2AS(_l(@"Logging turned on.")); } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"This command can handle logging to a file. " @"To use it, simply type /logging on any connection to " @"log that connection. To set up persistent logging, please " @"see the FAQ distributed with TalkSoup."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - pluginActivated { [_TS_ addCommand: @"logging" withInvocation: invoc]; return self; } - pluginDeactivated { [_TS_ removeCommand: @"logging"]; return self; } - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ quitWithMessage: aMessage onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ has quit IRC (%@)\n"), USE_DATE, [aConnection nick], [aMessage string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ sendCTCPReply: aCTCP withArgument: args to: aPerson onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] <%@:%@> CTCP-REPLY %@ %@\n"), USE_DATE, [aConnection nick], [aPerson string], [aCTCP string], [args string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ sendCTCPRequest: aCTCP withArgument: args to: aPerson onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] <%@:%@> CTCP-REQUEST %@ %@\n"), USE_DATE, [aConnection nick], [aPerson string], [aCTCP string], [args string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ sendMessage: message to: receiver onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] <%@:%@> %@\n", USE_DATE, [aConnection nick], [receiver string], [message string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ sendNotice: message to: receiver onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] <%@:%@> %@\n", USE_DATE, [aConnection nick], [receiver string], [message string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, aConnection); [_TS_ sendAction: anAction to: receiver onConnection: aConnection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] * %@:%@ %@\n", USE_DATE, [aConnection nick], [receiver string], [anAction string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - lostConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ lostConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] Connection Terminated\n"), USE_DATE] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; [x writeData: [[NSString stringWithFormat: _l(@"[%@] LOGGING DEACTIVATED\n"), USE_DATE] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; NSMapRemove(files, connection); return self; } - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ CTCPRequestReceived: aCTCP withArgument: argument to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] <%@:%@> CTCP-REQUEST %@ %@\n"), USE_DATE, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], [receiver string], [aCTCP string], [argument string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ CTCPReplyReceived: aCTCP withArgument: argument to: receiver from: aPerson onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] <%@:%@> %@ %@\n", USE_DATE, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], [receiver string], [aCTCP string], [argument string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - errorReceived: (NSAttributedString *)anError onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ errorReceived: anError onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] ERROR: %@\n"), USE_DATE, [anError string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ wallopsReceived: message from: sender onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] Wallops(%@): %@\n"), USE_DATE, [[IRCUserComponents(sender) objectAtIndex: 0] string], [message string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ userKicked: aPerson outOf: aChannel for: reason from: kicker onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ was kicked from %@ by %@ (%@)\n"), USE_DATE, [aPerson string], [aChannel string], [[IRCUserComponents(kicker) objectAtIndex: 0] string], [reason string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ invitedTo: aChannel from: inviter onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@(%@) has invited you to %@\n"), USE_DATE, [[IRCUserComponents(inviter) objectAtIndex: 0] string], [[IRCUserComponents(inviter) objectAtIndex: 1] string], [aChannel string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - modeChanged: (NSAttributedString *)mode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); NSMutableString *str; NSEnumerator *iter; id object; [_TS_ modeChanged: mode on: anObject withParams: paramList from: aPerson onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } iter = [paramList objectEnumerator]; str = AUTORELEASE([NSMutableString new]); object = [iter nextObject]; while (object) { [str appendString: [object string]]; if ((object = [iter nextObject])) { [str appendString: @" "]; } } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ sets mode %@ %@ %@\n"), USE_DATE, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], [mode string], [anObject string], str] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); NSMutableString *str; NSEnumerator *iter; id object; [_TS_ numericCommandReceived: command withParams: paramList from: sender onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } iter = [paramList objectEnumerator]; str = AUTORELEASE([NSMutableString new]); object = [iter nextObject]; while (object) { [str appendString: [object string]]; if ((object = [iter nextObject])) { [str appendString: @" "]; } } [x writeData: [[NSString stringWithFormat: @"[%@] (%@) %@\n", USE_DATE, [command string], str] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ nickChangedTo: newName from: aPerson onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ is now known as %@\n"), USE_DATE, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], [newName string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ channelJoined: channel from: joiner onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@(%@) has joined %@\n"), USE_DATE, [[IRCUserComponents(joiner) objectAtIndex: 0] string], [[IRCUserComponents(joiner) objectAtIndex: 1] string], [channel string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ channelParted: channel withMessage: aMessage from: parter onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ has parted %@(%@)\n"), USE_DATE, [[IRCUserComponents(parter) objectAtIndex: 0] string], [channel string], [aMessage string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ quitIRCWithMessage: aMessage from: quitter onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ has quit IRC(%@)\n"), USE_DATE, [[IRCUserComponents(quitter) objectAtIndex: 0] string], [aMessage string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ topicChangedTo: aTopic in: channel from: aPerson onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: _l(@"[%@] %@ changed the topic in %@ to '%@'\n"), USE_DATE, [[IRCUserComponents(aPerson) objectAtIndex: 0] string], [channel string], [aTopic string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ messageReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] <%@:%@> %@\n", USE_DATE, [[IRCUserComponents(sender) objectAtIndex: 0] string], [to string], [aMessage string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ noticeReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] <%@:%@> %@\n", USE_DATE, [[IRCUserComponents(sender) objectAtIndex: 0] string], [to string], [aMessage string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id x = NSMapGet(files, connection); [_TS_ actionReceived: anAction to: to from: sender onConnection: connection withNickname: aNick sender: self]; if (!x) { return self; } [x writeData: [[NSString stringWithFormat: @"[%@] * %@:%@ %@\n", USE_DATE, [[IRCUserComponents(sender) objectAtIndex: 0] string], [to string], [anAction string]] dataUsingEncoding: [NSString defaultCStringEncoding] allowLossyConversion: YES]]; return self; } @end #undef USE_DATE TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/000077500000000000000000000000001067163320700217735ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/English.lproj/000077500000000000000000000000001067163320700245115ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/English.lproj/Localizable.strings000066400000000000000000000004551067163320700303510ustar00rootroot00000000000000/* MessageInTab.m */ "Author: " = "Author: "; "Description: " = "Description: "; "This bundle will open a new tab for any incoming private messages." = "This bundle will open a new tab for any incoming private messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/GNUmakefile000066400000000000000000000012071067163320700240450ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = MessageInTab BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters MessageInTab_LANGUAGES = English MessageInTab_LOCALIZED_RESOURCE_FILES = Localizable.strings MessageInTab_PRINCIPAL_CLASS = MessageInTab main = MessageInTab.m MessageInTab_OBJC_FILES = $(main) ifeq ($(OBJC_RUNTIME_LIB), apple) MessageInTab_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else MessageInTab_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/GNUmakefile.preamble000066400000000000000000000005401067163320700256320ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/MessageInTab.h000066400000000000000000000034461067163320700244550ustar00rootroot00000000000000/*************************************************************************** MessageInTab.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class MessageInTab; #ifndef MESSAGE_IN_TAB_H #define MESSAGE_IN_TAB_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [MessageInTab class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface MessageInTab : NSObject - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageInTab/MessageInTab.m000066400000000000000000000060451067163320700244600ustar00rootroot00000000000000/*************************************************************************** MessageInTab.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "MessageInTab.h" #import #import #import #import #import @implementation MessageInTab - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"This bundle will open a new tab for " @"any incoming private messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name; if ([connection caseInsensitiveCompare: [to string] to: [connection nick]] == NSOrderedSame) { name = [[IRCUserComponents(sender) objectAtIndex: 0] string]; [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"OpenTab", @"Process", name, @"TabName", S2AS(name), @"TabLabel", nil] onConnection: connection withNickname: aNick sender: self]; } [_TS_ messageReceived: aMessage to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name; if ([connection caseInsensitiveCompare: [to string] to: [connection nick]] == NSOrderedSame) { name = [[IRCUserComponents(sender) objectAtIndex: 0] string]; [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"OpenTab", @"Process", name, @"TabName", S2AS(name), @"TabName", nil] onConnection: connection withNickname: aNick sender: self]; } [_TS_ actionReceived: anAction to: to from: sender onConnection: connection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/000077500000000000000000000000001067163320700221745ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/English.lproj/000077500000000000000000000000001067163320700247125ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/English.lproj/Localizable.strings000066400000000000000000000004551067163320700305520ustar00rootroot00000000000000/* MessageInTab.m */ "Author: " = "Author: "; "Description: " = "Description: "; "This bundle will open a new tab for any incoming private messages." = "This bundle will open a new tab for any incoming private messages."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/GNUmakefile000066400000000000000000000012201067163320700242410ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = MessageOutTab BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters MessageOutTab_LANGUAGES = English MessageOutTab_LOCALIZED_RESOURCE_FILES = Localizable.strings MessageOutTab_PRINCIPAL_CLASS = MessageOutTab main = MessageOutTab.m MessageOutTab_OBJC_FILES = $(main) ifeq ($(OBJC_RUNTIME_LIB), apple) MessageOutTab_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else MessageOutTab_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/GNUmakefile.preamble000066400000000000000000000005401067163320700260330ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/MessageOutTab.h000066400000000000000000000033451067163320700250550ustar00rootroot00000000000000/*************************************************************************** MessageOutTab.h ------------------- begin : Tue Aug 2 23:21:01 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class MessageOutTab; #ifndef MESSAGE_OUT_TAB_H #define MESSAGE_OUT_TAB_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [MessageOutTab class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface MessageOutTab : NSObject - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/MessageOutTab/MessageOutTab.m000066400000000000000000000051641067163320700250630ustar00rootroot00000000000000/*************************************************************************** MessageOutTab.m ------------------- begin : Tue Aug 2 23:21:01 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "MessageOutTab.h" #import #import #import #import #import @implementation MessageOutTab - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"This bundle will open a new tab for " @"any outgoing private messages."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"OpenTab", @"Process", [receiver string], @"TabName", receiver, @"TabLabel", nil] onConnection: aConnection withNickname: aNick sender: self]; [_TS_ sendMessage: message to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ controlObject: [NSDictionary dictionaryWithObjectsAndKeys: @"OpenTab", @"Process", [receiver string], @"TabName", receiver, @"TabLabel", nil] onConnection: aConnection withNickname: aNick sender: self]; [_TS_ sendAction: anAction to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/000077500000000000000000000000001067163320700216775ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/English.lproj/000077500000000000000000000000001067163320700244155ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/English.lproj/Localizable.strings000066400000000000000000000001401067163320700302440ustar00rootroot00000000000000/* Skeleton.m */ "Author: " = "Author: "; "Description: " = "Description: "; "None" = "None"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/GNUmakefile000066400000000000000000000011421067163320700237470ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = PrivateBeep BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters PrivateBeep_LANGUAGES = English PrivateBeep_LOCALIZED_RESOURCE_FILES = Localizable.strings PrivateBeep_PRINCIPAL_CLASS = PrivateBeep PrivateBeep_OBJC_FILES = PrivateBeep.m ifeq ($(OBJC_RUNTIME_LIB), apple) PrivateBeep_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else PrivateBeep_BUNDLE_LIBS = -lTalkSoupBundles endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/GNUmakefile.preamble000066400000000000000000000005401067163320700255360ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/PrivateBeep.h000066400000000000000000000025631067163320700242640ustar00rootroot00000000000000/*************************************************************************** PrivateBeep.h ------------------- begin : Tue Aug 9 00:54:55 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class PrivateBeep; #ifndef PRIVATE_BEEP_H #define PRIVATE_BEEP_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [PrivateBeep class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface PrivateBeep : NSObject @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/PrivateBeep/PrivateBeep.m000066400000000000000000000047531067163320700242740ustar00rootroot00000000000000/*************************************************************************** PrivateBeep.m ------------------- begin : Tue Aug 9 00:54:55 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "PrivateBeep.h" #import #import #import #import #import #import @interface PrivateBeep (PrivateMethods) - (void)messageReceived: (NSNotification *)aNotification; @end @implementation PrivateBeep (PrivateMethods) - (void)messageReceived: (NSNotification *)aNotification { NSBeep(); } @end @implementation PrivateBeep - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"This bundle will beep when someone " @"uses your name in a channel or sends you a private message. This " @"bundle works off of a service provided by the Highlighting bundle. For" @"this reason, you must have the Highlighting bundle for this bundle to " @"take effect."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - pluginActivated { [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(messageReceived:) name: @"TalkSoupHighlightingNotification" object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(messageReceived:) name: @"TalkSoupPrivateMessageNotification" object: nil]; return self; } - pluginDeactivated { [[NSNotificationCenter defaultCenter] removeObserver: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/000077500000000000000000000000001067163320700212555ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/English.lproj/000077500000000000000000000000001067163320700237735ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/English.lproj/Localizable.strings000066400000000000000000000001401067163320700276220ustar00rootroot00000000000000/* Skeleton.m */ "Author: " = "Author: "; "Description: " = "Description: "; "None" = "None"; TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/GNUmakefile000066400000000000000000000011231067163320700233240ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Skeleton BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/InFilters Skeleton_LANGUAGES = English Skeleton_LOCALIZED_RESOURCE_FILES = Localizable.strings Skeleton_PRINCIPAL_CLASS = Skeleton Skeleton_OBJC_FILES = Skeleton.m ifeq ($(OBJC_RUNTIME_LIB), apple) Skeleton_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Skeleton_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/GNUmakefile.preamble000066400000000000000000000005401067163320700251140ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/Skeleton.h000066400000000000000000000026421067163320700232160ustar00rootroot00000000000000/*************************************************************************** Skeleton.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Skeleton; #ifndef SKELETON_H #define SKELETON_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Skeleton class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Skeleton : NSObject // Open up TalkSoupProtocols.h and insert methods you want here... @end #endif TalkSoup-1.0alpha-32-g55b4d4e/InFilters/Skeleton/Skeleton.m000066400000000000000000000026421067163320700232230ustar00rootroot00000000000000/*************************************************************************** Skeleton.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Skeleton.h" #import #import #import #import @implementation Skeleton - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Somebody\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"None"), nil); } @end TalkSoup-1.0alpha-32-g55b4d4e/Input/000077500000000000000000000000001067163320700166715ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Input/GNUmakefile000066400000000000000000000002621067163320700207430ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = NetclassesInput -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/000077500000000000000000000000001067163320700220155ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/Functions.h000066400000000000000000000023421067163320700241370ustar00rootroot00000000000000/*************************************************************************** Functions.h ------------------- begin : Mon Apr 28 02:10:41 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @class NSAttributedString, NSString; inline NSAttributedString *NetClasses_AttributedStringFromString(NSString *str); inline NSString *NetClasses_StringFromAttributedString(NSAttributedString *atr); TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/Functions.m000066400000000000000000000217741067163320700241560ustar00rootroot00000000000000/*************************************************************************** Functions.m ------------------- begin : Mon Apr 28 02:10:41 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import #import #import #import #import #import #import #import #import #import #include static inline BOOL scan_two_char_int(NSScanner *beg, int *aInt) { int y; id string; id two; NSRange sub; id scan; string = [beg string]; if (!string) return NO; sub.location = [beg scanLocation]; sub.length = 2; if (sub.location == [string length]) return NO; if (sub.location == ([string length] - 1)) sub.length = 1; two = [string substringWithRange: sub]; scan = [NSScanner scannerWithString: two]; [scan setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString: @""]]; if (!isdigit([two characterAtIndex: 0])) return NO; if (![scan scanInt: &y]) return NO; [beg setScanLocation: sub.location + [scan scanLocation]]; if (aInt) *aInt = y; return YES; } static inline BOOL scan_one_char_from_set(NSScanner *beg, NSCharacterSet *aSet, NSString **y) { unichar x; int pos; if ([beg isAtEnd]) return NO; pos = [beg scanLocation]; x = [[beg string] characterAtIndex: pos]; if (![aSet characterIsMember: x]) return NO; if (y) *y = [NSString stringWithCharacters: &x length: 1]; [beg setScanLocation: pos + 1]; return YES; } static NSCharacterSet *comma = nil; static NSCharacterSet *control = nil; static NSCharacterSet *color_control = nil; static NSCharacterSet *bold_control = nil; static NSCharacterSet *underline_control = nil; static NSCharacterSet *clear_control = nil; static NSCharacterSet *reverse_control = nil; static NSString *colors[16] = { 0 }; static void initialize_stuff(void) { CREATE_AUTORELEASE_POOL(apr); comma = RETAIN([NSCharacterSet characterSetWithCharactersInString: @","]); color_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\003"]); bold_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\002"]); underline_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\037"]); clear_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\017"]); reverse_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\026"]); control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"\003\002\037\017\026"]); colors[0] = RETAIN(IRCColorWhite); colors[1] = RETAIN(IRCColorBlack); colors[2] = RETAIN(IRCColorBlue); colors[3] = RETAIN(IRCColorGreen); colors[4] = RETAIN(IRCColorRed); colors[5] = RETAIN(IRCColorMaroon); colors[6] = RETAIN(IRCColorMagenta); colors[7] = RETAIN(IRCColorOrange); colors[8] = RETAIN(IRCColorYellow); colors[9] = RETAIN(IRCColorLightGreen); colors[10] = RETAIN(IRCColorTeal); colors[11] = RETAIN(IRCColorLightCyan); colors[12] = RETAIN(IRCColorLightBlue); colors[13] = RETAIN(IRCColorLightMagenta); colors[14] = RETAIN(IRCColorGrey); colors[15] = RETAIN(IRCColorLightGrey); RELEASE(apr); } inline NSAttributedString *NetClasses_AttributedStringFromString(NSString *str) { NSScanner *scan; NSString *aString; int x; NSMutableAttributedString *string = AUTORELEASE([NSMutableAttributedString new]); NSMutableDictionary *dict = AUTORELEASE([NSMutableDictionary new]); if (!str) { return nil; } if (!comma) { initialize_stuff(); } scan = [NSScanner scannerWithString: str]; [scan setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString: @""]]; while ([scan isAtEnd] == NO) { if ([scan scanUpToCharactersFromSet: control intoString: &aString]) { [string appendAttributedString: AUTORELEASE([[NSAttributedString alloc] initWithString: aString attributes: [NSDictionary dictionaryWithDictionary: dict]])]; } if ([scan isAtEnd] == YES) break; if (scan_one_char_from_set(scan, bold_control, 0)) { if (![dict objectForKey: IRCBold]) { [dict setObject: IRCBoldValue forKey: IRCBold]; } else { [dict removeObjectForKey: IRCBold]; } } else if (scan_one_char_from_set(scan, underline_control, 0)) { if (![dict objectForKey: IRCUnderline]) { [dict setObject: IRCUnderlineValue forKey: IRCUnderline]; } else { [dict removeObjectForKey: IRCUnderline]; } } else if (scan_one_char_from_set(scan, clear_control, 0)) { [dict removeAllObjects]; } else if (scan_one_char_from_set(scan, reverse_control, 0)) { if (![dict objectForKey: IRCReverse]) { [dict setObject: IRCReverseValue forKey: IRCReverse]; } else { [dict removeObjectForKey: IRCReverse]; } } else if (scan_one_char_from_set(scan, color_control, 0)) { if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCColor]; if (scan_one_char_from_set(scan, comma, 0)) { NSLog(@"Found a background with foreground..."); if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCBackgroundColor]; } } } else if (scan_one_char_from_set(scan, comma, 0)) { if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCBackgroundColor]; } } else { [dict removeObjectForKey: IRCBackgroundColor]; [dict removeObjectForKey: IRCColor]; } NSLog(@"Current dict: %@", dict); } } return string; } static inline NSString *lookup_color(NSString *aString) { int x; for (x = 0; x < 16; x++) { if ([colors[x] isEqualToString: aString]) { return [NSString stringWithFormat: @"%02d", x]; } } return @""; } inline NSString *NetClasses_StringFromAttributedString(NSAttributedString *atr) { NSRange cur = {0, 0}; NSRange work; NSDictionary *b; NSDictionary *so = AUTORELEASE([NSDictionary new]); id begF; id begB; id nowF = @""; id nowB = @""; NSMutableString *aString = [NSMutableString new]; int len = [atr length]; cur.length = len; while (cur.length > 0) { b = [atr attributesAtIndex: cur.location longestEffectiveRange: &work inRange: cur]; begB = [b objectForKey: IRCBold]; begF = [so objectForKey: IRCBold]; if ((!begB || !begF) && (begF || begB)) { [aString appendString: @"\002"]; } begB = [b objectForKey: IRCUnderline]; begF = [so objectForKey: IRCUnderline]; if ((!begB || !begF) && (begF || begB)) { [aString appendString: @"\037"]; } begB = [b objectForKey: IRCReverse]; begF = [so objectForKey: IRCReverse]; if ((!begB || !begF) && (begF || begB)) { [aString appendString: @"\026"]; } begF = nowF; begB = nowB; nowF = [b objectForKey: IRCColor]; nowB = [b objectForKey: IRCBackgroundColor]; if (!nowF) nowF = @""; if (!nowB) nowB = @""; if (![nowF isEqualToString: begF] && ![nowB isEqualToString: begB]) { [aString appendString: @"\003"]; if ([nowB length] > 0 && [nowF length] > 0) { [aString appendString: [NSString stringWithFormat: @"%@,%@", lookup_color(nowF), lookup_color(nowB)]]; } else if ([nowB length] > 0) { [aString appendString: [NSString stringWithFormat: @"\003,%@", lookup_color(nowB)]]; } else if ([nowF length] > 0) { [aString appendString: lookup_color(nowF)]; } } else if (![nowF isEqualToString: begF]) { [aString appendString: @"\003"]; [aString appendString: lookup_color(nowF)]; } else if (![nowB isEqualToString: begB]) { [aString appendString: @"\003"]; if ([nowB length] > 0) { [aString appendString: [NSString stringWithFormat: @",%@", lookup_color(nowB)]]; } else if ([nowF length] > 0) { [aString appendString: [NSString stringWithFormat: @"\003%@", lookup_color(nowF)]]; } } [aString appendString: [[atr string] substringWithRange: work]]; cur.location = work.location + work.length; if (len <= (int)cur.location) break; cur.length = len - cur.location; so = b; } return AUTORELEASE(aString); } TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/GNUmakefile000066400000000000000000000012041067163320700240640ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = NetclassesInput BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/Input ifeq ($(OBJC_RUNTIME_LIB), apple) NetclassesInput_BUNDLE_LIBS = -framework netclasses -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else NetclassesInput_BUNDLE_LIBS = -lnetclasses -lTalkSoupBundles endif NetclassesInput_PRINCIPAL_CLASS = NetclassesInput main = main.m Functions.m NetclassesInput_OBJC_FILES = $(main) NetclassesInputSendThenDieTransport.m GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/GNUmakefile.preamble000066400000000000000000000005671067163320700256650ustar00rootroot00000000000000ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -F../../TalkSoupBundles -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/NetclassesInputSendThenDieTransport.h000066400000000000000000000030071067163320700313020ustar00rootroot00000000000000/*************************************************************************** NetclassesInputSendThenDieTransport.h ------------------- begin : Wed Jul 13 02:25:28 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class NetclassesInputSendThenDieTransport; #import @class NSData; @interface NetclassesInputSendThenDieTransport : NSObject { id realTransport; id dieObject; } - initWithTransport: (id )aTransport; - (void)writeThenCloseForObject: (id )aObject; - (id)localHost; - (id)remoteHost; - writeData: (NSData *)data; - (BOOL)isDoneWriting; - (NSData *)readData: (int)maxReadSize; - (int)desc; - (void)close; @end TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/NetclassesInputSendThenDieTransport.m000066400000000000000000000037701067163320700313160ustar00rootroot00000000000000/*************************************************************************** NetclassesInputSendThenDieTransport.m ------------------- begin : Wed Jul 13 02:25:28 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "NetclassesInputSendThenDieTransport.h" #import @implementation NetclassesInputSendThenDieTransport - initWithTransport: (id )aTransport; { if (!(self = [super init])) return self; ASSIGN(realTransport, aTransport); return self; } - (void)writeThenCloseForObject: (id )aObject { ASSIGN(dieObject, aObject); } - (void)dealloc { RELEASE(realTransport); [super dealloc]; } - (id)localHost { return [realTransport localHost]; } - (id)remoteHost { return [realTransport remoteHost]; } - writeData: (NSData *)data { id val; val = [realTransport writeData: data]; if (dieObject && !data) { [[NetApplication sharedInstance] disconnectObject: dieObject]; DESTROY(dieObject); } return val; } - (BOOL)isDoneWriting { return [realTransport isDoneWriting]; } - (NSData *)readData: (int)maxReadSize { return [realTransport readData: maxReadSize]; } - (int)desc { return [realTransport desc]; } - (void)close { [realTransport close]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/main.h000066400000000000000000000040441067163320700231140ustar00rootroot00000000000000/*************************************************************************** main.h ------------------- begin : Fri Feb 21 00:52:16 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import #import #import @interface NetclassesInput : NSObject { NSMutableArray *connections; } - initiateConnectionToHost: (NSHost *)aHost onPort: (int)aPort withTimeout: (int)seconds withNickname: (NSString *)nickname withUserName: (NSString *)user withRealName: (NSString *)realName withPassword: (NSString *)password withIdentification: (NSString *)ident; - (NSArray *)connections; @end @interface NetclassesConnection : IRCObject { NSString *identification; NSString *errorMessage; int port; id control; } - initWithNickname: (NSString *)aNick withUserName: (NSString *)user withRealName: (NSString *)real withPassword: (NSString *)aPass withIdentification: (NSString *)ident onPort: (int)aPort withControl: plugin; - connectingFailed: (NSString *)error; - connectingStarted: (TCPConnecting *)aConnection; - (NSString *)errorMessage; - (NSString *)identification; - (int)port; - (NSHost *)remoteHost; - (NSHost *)localHost; @end TalkSoup-1.0alpha-32-g55b4d4e/Input/NetclassesInput/main.m000066400000000000000000000605171067163320700231300ustar00rootroot00000000000000/*************************************************************************** main.m ------------------- begin : Fri Feb 21 00:51:41 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "main.h" #import "Functions.h" #import "NetclassesInputSendThenDieTransport.h" #import #import #import #import #import #import #import #define DEPENDS_MAJOR 1 #define DEPENDS_MINOR 4 #ifdef S2AS #undef S2AS #endif #define S2AS(_x) NetClasses_AttributedStringFromString((_x)) #ifdef AS2S #undef AS2S #endif #define AS2S(_x) NetClasses_StringFromAttributedString((_x)) @interface NetclassesInput (PrivateNetclassesInput) - removeConnection: aConnection; @end @implementation NetclassesInput (PrivateNetclassesInput) - removeConnection: aConnection { [connections removeObject: aConnection]; return self; } @end @implementation NetclassesInput - init { if (!(self = [super init])) return nil; if (([NetApplication netclassesMajorVersion] < DEPENDS_MAJOR) || (([NetApplication netclassesMajorVersion] == DEPENDS_MAJOR) && ([NetApplication netclassesMinorVersion] < DEPENDS_MINOR))) { NSLog(@"Depends on netclasses of at least %d.%02d", DEPENDS_MAJOR, DEPENDS_MINOR); NSLog(@"netclasses %@ is installed", [NetApplication netclassesVersion]); } connections = [[NSMutableArray alloc] init]; return self; } - (void)dealloc { RELEASE(connections); [super dealloc]; } - initiateConnectionToHost: (NSHost *)aHost onPort: (int)aPort withTimeout: (int)seconds withNickname: (NSString *)nickname withUserName: (NSString *)user withRealName: (NSString *)realName withPassword: (NSString *)password withIdentification: (NSString *)ident { id connection = [[NetclassesConnection alloc] initWithNickname: nickname withUserName: user withRealName: realName withPassword: password withIdentification: ident onPort: aPort withControl: self]; [[TCPSystem sharedInstance] connectNetObjectInBackground: connection toHost: aHost onPort: aPort withTimeout: seconds]; [connections addObject: connection]; return self; } - (void)closeConnection: (id)connection { AUTORELEASE(RETAIN(connection)); if ([connections containsObject: connection]) { [_TS_ lostConnection: connection withNickname: S2AS([connection nick]) sender: self]; [connections removeObject: connection]; if ([connection transport]) { if (![[connection transport] isDoneWriting]) { [(NetclassesInputSendThenDieTransport *)[connection transport] writeThenCloseForObject: connection]; } else { [[NetApplication sharedInstance] disconnectObject: connection]; } } } } - (NSArray *)connections { return [NSArray arrayWithArray: connections]; } @end @implementation NetclassesConnection - initWithNickname: (NSString *)aNick withUserName: (NSString *)user withRealName: (NSString *)real withPassword: (NSString *)aPass withIdentification: (NSString *)ident onPort: (int)aPort withControl: plugin; { if (!(self = [super initWithNickname: aNick withUserName: user withRealName: real withPassword: aPass])) return nil; identification = RETAIN(ident); port = aPort; control = plugin; // Avoiding circular reference return self; } - (void)dealloc { RELEASE(identification); RELEASE(errorMessage); [super dealloc]; } - connectingFailed: (NSString *)error { [control removeConnection: self]; errorMessage = RETAIN(error); [_TS_ lostConnection: self withNickname: S2AS(nick) sender: control]; return self; } - connectingStarted: (TCPConnecting *)aConnection { return self; } - (NSString *)identification { return identification; } - (NSString *)errorMessage { return errorMessage; } - (int)port { return port; } - (NSHost *)remoteHost { return [transport remoteHost]; } - (NSHost *)localHost { return [transport localHost]; } - (void)connectionLost { [transport close]; [super connectionLost]; [control closeConnection: self]; } - connectionEstablished: (id )aTransport; { id x; aTransport = AUTORELEASE([[NetclassesInputSendThenDieTransport alloc] initWithTransport: aTransport]); x = [super connectionEstablished: aTransport]; [_TS_ newConnection: self withNickname: S2AS(nick) sender: control]; return x; } - registeredWithServer { [_TS_ registeredWithServerOnConnection: self withNickname: S2AS(nick) sender: control]; return self; } - couldNotRegister: (NSString *)reason { [_TS_ couldNotRegister: S2AS(reason) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - CTCPRequestReceived: (NSString *)aCTCP withArgument: (NSString *)argument to: (NSString *)receiver from: (NSString *)aPerson; { [_TS_ CTCPRequestReceived: S2AS(aCTCP) withArgument: S2AS(argument) to: S2AS(receiver) from: S2AS(aPerson) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - CTCPReplyReceived: (NSString *)aCTCP withArgument: (NSString *)argument to: (NSString *)receiver from: (NSString *)aPerson { [_TS_ CTCPReplyReceived: S2AS(aCTCP) withArgument: S2AS(argument) to: S2AS(receiver) from: S2AS(aPerson) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - errorReceived: (NSString *)anError { [_TS_ errorReceived: S2AS(anError) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - wallopsReceived: (NSString *)message from: (NSString *)sender { [_TS_ wallopsReceived: S2AS(message) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - userKicked: (NSString *)aPerson outOf: (NSString *)aChannel for: (NSString *)reason from: (NSString *)kicker { [_TS_ userKicked: S2AS(aPerson) outOf: S2AS(aChannel) for: S2AS(reason) from: S2AS(kicker) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - invitedTo: (NSString *)aChannel from: (NSString *)inviter { [_TS_ invitedTo: S2AS(aChannel) from: S2AS(inviter) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - modeChanged: (NSString *)mode on: (NSString *)anObject withParams: (NSArray *)paramList from: (NSString *)aPerson { NSMutableArray *y; NSEnumerator *iter; id object; y = AUTORELEASE([[NSMutableArray alloc] init]); iter = [paramList objectEnumerator]; while ((object = [iter nextObject])) { [y addObject: S2AS(object)]; } [_TS_ modeChanged: S2AS(mode) on: S2AS(anObject) withParams: [NSArray arrayWithArray: y] from: S2AS(aPerson) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - numericCommandReceived: (NSString *)command withParams: (NSArray *)paramList from: (NSString *)sender { NSMutableArray *y; NSEnumerator *iter; id object; y = AUTORELEASE([[NSMutableArray alloc] init]); iter = [paramList objectEnumerator]; while ((object = [iter nextObject])) { [y addObject: S2AS(object)]; } [_TS_ numericCommandReceived: S2AS(command) withParams: [NSArray arrayWithArray: y] from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - nickChangedTo: (NSString *)newName from: (NSString *)aPerson { [_TS_ nickChangedTo: S2AS(newName) from: S2AS(aPerson) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - channelJoined: (NSString *)channel from: (NSString *)joiner { [_TS_ channelJoined: S2AS(channel) from: S2AS(joiner) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - channelParted: (NSString *)channel withMessage: (NSString *)aMessage from: (NSString *)parter { [_TS_ channelParted: S2AS(channel) withMessage: S2AS(aMessage) from: S2AS(parter) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - quitIRCWithMessage: (NSString *)aMessage from: (NSString *)quitter { [_TS_ quitIRCWithMessage: S2AS(aMessage) from: S2AS(quitter) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - topicChangedTo: (NSString *)aTopic in: (NSString *)channel from: (NSString *)aPerson { [_TS_ topicChangedTo: S2AS(aTopic) in: S2AS(channel) from: S2AS(aPerson) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - messageReceived: (NSString *)aMessage to: (NSString *)to from: (NSString *)sender { [_TS_ messageReceived: S2AS(aMessage) to: S2AS(to) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - noticeReceived: (NSString *)aMessage to: (NSString *)to from: (NSString *)sender { [_TS_ noticeReceived: S2AS(aMessage) to: S2AS(to) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - actionReceived: (NSString *)anAction to: (NSString *)to from: (NSString *)sender { [_TS_ actionReceived: S2AS(anAction) to: S2AS(to) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - pingReceivedWithArgument: (NSString *)arg from: (NSString *)sender { [_TS_ pingReceivedWithArgument: S2AS(arg) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - pongReceivedWithArgument: (NSString *)arg from: (NSString *)sender { [_TS_ pongReceivedWithArgument: S2AS(arg) from: S2AS(sender) onConnection: self withNickname: S2AS(nick) sender: control]; return self; } - newNickNeededWhileRegistering { [_TS_ newNickNeededWhileRegisteringOnConnection: self withNickname: S2AS(nick) sender: control]; return self; } - changeNick: (NSAttributedString *)newNick onConnection: aConnection withNickname: (NSAttributedString *)theNick sender: aPlugin { [_TS_ changeNick: newNick onConnection: self withNickname: theNick sender: control]; [super changeNick: AS2S(newNick)]; return self; } - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitWithMessage: aMessage onConnection: self withNickname: aNick sender: control]; [super quitWithMessage: AS2S(aMessage)]; return self; } - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ partChannel: channel withMessage: aMessage onConnection: self withNickname: aNick sender: control]; [super partChannel: AS2S(channel) withMessage: AS2S(aMessage)]; return self; } - joinChannel: (NSAttributedString *)channel withPassword: (NSAttributedString *)aPassword onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ joinChannel: channel withPassword: aPassword onConnection: self withNickname: aNick sender: control]; [super joinChannel: AS2S(channel) withPassword: AS2S(aPassword)]; return self; } - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPReply: aCTCP withArgument: args to: aPerson onConnection: self withNickname: aNick sender: control]; [super sendCTCPReply: AS2S(aCTCP) withArgument: AS2S(args) to: AS2S(aPerson)]; return self; } - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPRequest: aCTCP withArgument: args to: aPerson onConnection: self withNickname: aNick sender: control]; [super sendCTCPRequest: AS2S(aCTCP) withArgument: AS2S(args) to: AS2S(aPerson)]; return self; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendMessage: message to: receiver onConnection: self withNickname: aNick sender: control]; [super sendMessage: AS2S(message) to: AS2S(receiver)]; return self; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendNotice: message to: receiver onConnection: self withNickname: aNick sender: control]; [super sendNotice: AS2S(message) to: AS2S(receiver)]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendAction: anAction to: receiver onConnection: self withNickname: aNick sender: control]; [super sendAction: AS2S(anAction) to: AS2S(receiver)]; return self; } - becomeOperatorWithName: (NSAttributedString *)aName withPassword: (NSAttributedString *)pass onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ becomeOperatorWithName: aName withPassword: pass onConnection: self withNickname: aNick sender: control]; [super becomeOperatorWithName: AS2S(aName) withPassword: AS2S(pass)]; return self; } - requestNamesOnChannel: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestNamesOnChannel: aChannel onConnection: self withNickname: aNick sender: control]; [super requestNamesOnChannel: AS2S(aChannel)]; return self; } - requestMOTDOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestMOTDOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestMOTDOnServer: AS2S(aServer)]; return self; } - requestSizeInformationFromServer: (NSAttributedString *)aServer andForwardTo: (NSAttributedString *)anotherServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestSizeInformationFromServer: aServer andForwardTo: anotherServer onConnection: self withNickname: aNick sender: control]; [super requestSizeInformationFromServer: AS2S(aServer) andForwardTo: AS2S(anotherServer)]; return self; } - requestVersionOfServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestVersionOfServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestVersionOfServer: AS2S(aServer)]; return self; } - requestServerStats: (NSAttributedString *)aServer for: (NSAttributedString *)query onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerStats: aServer for: query onConnection: self withNickname: aNick sender: control]; [super requestServerStats: AS2S(aServer) for: AS2S(query)]; return self; } - requestServerLink: (NSAttributedString *)aLink from: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerLink: aLink from: aServer onConnection: self withNickname: aNick sender: control]; [super requestServerLink: AS2S(aLink) from: AS2S(aServer)]; return self; } - requestTimeOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestTimeOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestTimeOnServer: AS2S(aServer)]; return self; } - requestServerToConnect: (NSAttributedString *)aServer to: (NSAttributedString *)connectServer onPort: (NSAttributedString *)aPort onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerToConnect: aServer to: connectServer onPort: aPort onConnection: self withNickname: aNick sender: control]; [super requestServerToConnect: AS2S(aServer) to: AS2S(connectServer) onPort: AS2S(aPort)]; return self; } - requestTraceOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestTraceOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestTraceOnServer: AS2S(aServer)]; return self; } - requestAdministratorOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestAdministratorOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestAdministratorOnServer: AS2S(aServer)]; return self; } - requestInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestInfoOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestInfoOnServer: AS2S(aServer)]; return self; } - requestServerRehashOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerRehashOnConnection: self withNickname: aNick sender: control]; [super requestServerRehash]; return self; } - requestServerShutdownOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerShutdownOnConnection: self withNickname: aNick sender: control]; [super requestServerShutdown]; return self; } - requestServerRestartOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestServerRestartOnConnection: self withNickname: aNick sender: control]; [super requestServerRestart]; return self; } - requestUserInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ requestUserInfoOnServer: aServer onConnection: self withNickname: aNick sender: control]; [super requestUserInfoOnServer: AS2S(aServer)]; return self; } - areUsersOn: (NSAttributedString *)userList onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ areUsersOn: userList onConnection: self withNickname: aNick sender: control]; [super areUsersOn: AS2S(userList)]; return self; } - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendWallops: message onConnection: self withNickname: aNick sender: control]; [super sendWallops: AS2S(message)]; return self; } - listWho: (NSAttributedString *)aMask onlyOperators: (BOOL)operators onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ listWho: aMask onlyOperators: operators onConnection: self withNickname: aNick sender: control]; [super listWho: AS2S(aMask) onlyOperators: operators]; return self; } - whois: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ whois: aPerson onServer: aServer onConnection: self withNickname: aNick sender: control]; [super whois: AS2S(aPerson) onServer: AS2S(aServer)]; return self; } - whowas: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer withNumberEntries: (NSAttributedString *)aNumber onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ whowas: aPerson onServer: aServer withNumberEntries: aNumber onConnection: self withNickname: aNick sender: control]; [super whowas: AS2S(aPerson) onServer: AS2S(aServer) withNumberEntries: AS2S(aNumber)]; return self; } - kill: (NSAttributedString *)aPerson withComment: (NSAttributedString *)aComment onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ kill: aPerson withComment: aComment onConnection: self withNickname: aNick sender: control]; [super kill: AS2S(aPerson) withComment: AS2S(aComment)]; return self; } - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setTopicForChannel: aChannel to: aTopic onConnection: self withNickname: aNick sender: control]; [super setTopicForChannel: AS2S(aChannel) to: AS2S(aTopic)]; return self; } - setMode: (NSAttributedString *)aMode on: (NSAttributedString *)anObject withParams: (NSArray *)list onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSMutableArray *a; NSEnumerator *iter; id object; [_TS_ setMode: aMode on: anObject withParams: list onConnection: self withNickname: aNick sender: control]; a = AUTORELEASE([NSMutableArray new]); iter = [list objectEnumerator]; while ((object = [iter nextObject])) { [a addObject: AS2S(object)]; } [super setMode: AS2S(aMode) on: AS2S(anObject) withParams: a]; return self; } - listChannel: (NSAttributedString *)aChannel onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ listChannel: aChannel onServer: aServer onConnection: self withNickname: aNick sender: control]; [super listChannel: AS2S(aChannel) onServer: AS2S(aServer)]; return self; } - invite: (NSAttributedString *)aPerson to: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ invite: aPerson to: aChannel onConnection: self withNickname: aNick sender: control]; [super invite: AS2S(aPerson) to: AS2S(aChannel)]; return self; } - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ kick: aPerson offOf: aChannel for: reason onConnection: self withNickname: aNick sender: control]; [super kick: AS2S(aPerson) offOf: AS2S(aChannel) for: AS2S(reason)]; return self; } - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setAwayWithMessage: message onConnection: self withNickname: aNick sender: control]; [super setAwayWithMessage: AS2S(message)]; return self; } - sendPingWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendPingWithArgument: aString onConnection: self withNickname: aNick sender: control]; [super sendPingWithArgument: AS2S(aString)]; return self; } - sendPongWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendPongWithArgument: aString onConnection: self withNickname: aNick sender: control]; [super sendPongWithArgument: AS2S(aString)]; return self; } - writeRawString: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ writeRawString: aString onConnection: self withNickname: aNick sender: control]; [super writeString: @"%@", AS2S(aString)]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/Misc/000077500000000000000000000000001067163320700164655ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Misc/GNUstep.h000066400000000000000000000046121067163320700201660ustar00rootroot00000000000000/* GNUstep.h - macros to make easier to port gnustep apps to macos-x Copyright (C) 2001 Free Software Foundation, Inc. Written by: Nicola Pero Date: March, October 2001 This file is part of GNUstep. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __GNUSTEP_GNUSTEP_H_INCLUDED_ #define __GNUSTEP_GNUSTEP_H_INCLUDED_ #ifndef GNUSTEP #define AUTORELEASE(object) [object autorelease] #define TEST_AUTORELEASE(object) ({ if (object) [object autorelease]; }) #define RELEASE(object) [object release] #define TEST_RELEASE(object) ({ if (object) [object release]; }) #define RETAIN(object) [object retain] #define TEST_RETAIN(object) ({ if (object) [object retain]; }) #define ASSIGN(object,value) ({\ id __value = (id)(value); \ id __object = (id)(object); \ if (__value != __object) \ { \ if (__value != nil) \ { \ [__value retain]; \ } \ object = __value; \ if (__object != nil) \ { \ [__object release]; \ } \ } \ }) #define ASSIGNCOPY(object,value) ASSIGN(object, [[value copy] autorelease]); #define DESTROY(object) ({ \ if (object) \ { \ id __o = object; \ object = nil; \ [__o release]; \ } \ }) #define CREATE_AUTORELEASE_POOL(X) \ NSAutoreleasePool *(X) = [NSAutoreleasePool new] #define NSLocalizedString(key, comment) \ [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] #define _(X) NSLocalizedString (X, nil) #define __(X) X #define NSLocalizedStaticString(X, Y) X #endif /* GNUSTEP */ #endif /* __GNUSTEP_GNUSTEP_H_INCLUDED_ */ TalkSoup-1.0alpha-32-g55b4d4e/Misc/setup_osx.sh000077500000000000000000000053331067163320700210610ustar00rootroot00000000000000#!/bin/sh if [ "$1" != "install" ] ; then cat < สวัสดีครับ [02:35] こんにちは [02:36] 今日は TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/000077500000000000000000000000001067163320700176725ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/000077500000000000000000000000001067163320700216425ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/Colorizer.h000066400000000000000000000064541067163320700237740ustar00rootroot00000000000000/*************************************************************************** Colorizer.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Colorizer; #ifndef COLORIZER_H #define COLORIZER_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Colorizer class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Colorizer : NSObject - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/Colorizer.m000066400000000000000000000266271067163320700240050ustar00rootroot00000000000000/*************************************************************************** Colorizer.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Colorizer.h" #import #import #import #import #import #import #import #import #import #import #include static inline BOOL scan_two_char_int(NSScanner *beg, int *aInt) { // FIXME this needs to be highly optimized int y; id string; id two; NSRange sub; id scan; string = [beg string]; if (!string) return NO; sub.location = [beg scanLocation]; sub.length = 2; if (sub.location == [string length]) return NO; if (sub.location == ([string length] - 1)) sub.length = 1; two = [string substringWithRange: sub]; scan = [NSScanner scannerWithString: two]; [scan setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString: @""]]; if (!isdigit([two characterAtIndex: 0])) return NO; if (![scan scanInt: &y]) return NO; [beg setScanLocation: sub.location + [scan scanLocation]]; if (aInt) *aInt = y; return YES; } static NSCharacterSet *comma = nil; static NSCharacterSet *control = nil; static NSCharacterSet *color_control = nil; static NSCharacterSet *bold_control = nil; static NSCharacterSet *underline_control = nil; static NSCharacterSet *clear_control = nil; static NSCharacterSet *reverse_control = nil; static NSString *colors[16] = { 0 }; static void initialize_stuff(void) { CREATE_AUTORELEASE_POOL(apr); comma = RETAIN([NSCharacterSet characterSetWithCharactersInString: @","]); color_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"C"]); bold_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"B"]); underline_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"U"]); clear_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"O"]); reverse_control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"R"]); control = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"%"]); colors[0] = RETAIN(IRCColorWhite); colors[1] = RETAIN(IRCColorBlack); colors[2] = RETAIN(IRCColorBlue); colors[3] = RETAIN(IRCColorGreen); colors[4] = RETAIN(IRCColorRed); colors[5] = RETAIN(IRCColorMaroon); colors[6] = RETAIN(IRCColorMagenta); colors[7] = RETAIN(IRCColorOrange); colors[8] = RETAIN(IRCColorYellow); colors[9] = RETAIN(IRCColorLightGreen); colors[10] = RETAIN(IRCColorTeal); colors[11] = RETAIN(IRCColorLightCyan); colors[12] = RETAIN(IRCColorLightBlue); colors[13] = RETAIN(IRCColorLightMagenta); colors[14] = RETAIN(IRCColorGrey); colors[15] = RETAIN(IRCColorLightGrey); RELEASE(apr); } static inline BOOL scan_one_char_from_set(NSScanner *beg, NSCharacterSet *aSet, NSString **y) { unichar x; int pos; if ([beg isAtEnd]) return NO; pos = [beg scanLocation]; x = [[beg string] characterAtIndex: pos]; if (![aSet characterIsMember: x]) return NO; if (y) *y = [NSString stringWithCharacters: &x length: 1]; [beg setScanLocation: pos + 1]; return YES; } static inline NSAttributedString *as2cas(NSAttributedString *astr) { NSScanner *scan; id aString; int x; NSMutableAttributedString *string = AUTORELEASE([NSMutableAttributedString new]); NSMutableDictionary *dict = AUTORELEASE([NSMutableDictionary new]); id str = [astr string]; int location; if (!str) { return nil; } if (!comma) { initialize_stuff(); } scan = [NSScanner scannerWithString: str]; [scan setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString: @""]]; while ([scan isAtEnd] == NO) { location = [scan scanLocation]; if ([scan scanUpToCharactersFromSet: control intoString: &aString]) { NSRange aRange; aRange = NSMakeRange(location, [aString length]); aString = [astr attributedSubstringFromRange: aRange]; aRange.location = [string length]; [string appendAttributedString: aString]; [string addAttributes: [NSDictionary dictionaryWithDictionary: dict] range: aRange]; } if ([scan isAtEnd] == YES) break; [scan setScanLocation: [scan scanLocation] + 1]; if ([scan isAtEnd] == YES) { [string appendAttributedString: AUTORELEASE([[NSAttributedString alloc] initWithString: @"%" attributes: [NSDictionary dictionaryWithDictionary: dict]])]; break; } if (scan_one_char_from_set(scan, control, 0)) { [string appendAttributedString: AUTORELEASE([[NSAttributedString alloc] initWithString: @"%" attributes: [NSDictionary dictionaryWithDictionary: dict]])]; } else if (scan_one_char_from_set(scan, bold_control, 0)) { if (![dict objectForKey: IRCBold]) { [dict setObject: IRCBoldValue forKey: IRCBold]; } else { [dict removeObjectForKey: IRCBold]; } } else if (scan_one_char_from_set(scan, underline_control, 0)) { if (![dict objectForKey: IRCUnderline]) { [dict setObject: IRCUnderlineValue forKey: IRCUnderline]; } else { [dict removeObjectForKey: IRCUnderline]; } } else if (scan_one_char_from_set(scan, clear_control, 0)) { [dict removeAllObjects]; } else if (scan_one_char_from_set(scan, reverse_control, 0)) { if (![dict objectForKey: IRCReverse]) { [dict setObject: IRCReverseValue forKey: IRCReverse]; } else { [dict removeObjectForKey: IRCReverse]; } } else if (scan_one_char_from_set(scan, color_control, 0)) { if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCColor]; if (scan_one_char_from_set(scan, comma, 0)) { if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCBackgroundColor]; } } } else if (scan_one_char_from_set(scan, comma, 0)) { if (scan_two_char_int(scan, &x)) { x = x % 16; [dict setObject: colors[x] forKey: IRCBackgroundColor]; } } else { [dict removeObjectForKey: IRCBackgroundColor]; [dict removeObjectForKey: IRCColor]; } } else { [string appendAttributedString: AUTORELEASE([[NSAttributedString alloc] initWithString: @"%" attributes: [NSDictionary dictionaryWithDictionary: dict]])]; } } return string; } @implementation Colorizer - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Adds color into outgoing messages. " @"The syntax is %C#[,#] for colors. The first # specifies " @"the foreground color and the second # specifies the " @"optional second color. The colors are in the range of " @"0-15\n"), _l(@"Bold is %B, underline is %U, and %R is reverse. Repeating " @"any one of these a second time will result in the turning " @"off of that attribute. Use %O to clear all colors and " @"attributes."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitWithMessage: as2cas(aMessage) onConnection: aConnection withNickname: aNick sender: self]; return self; } - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ partChannel: channel withMessage: as2cas(aMessage) onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPReply: aCTCP withArgument: as2cas(args) to: aPerson onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPRequest: aCTCP withArgument: as2cas(args) to: aPerson onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendMessage: as2cas(message) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendNotice: as2cas(message) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendAction: as2cas(anAction) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendWallops: as2cas(message) onConnection: aConnection withNickname: aNick sender: self]; return self; } - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setTopicForChannel: aChannel to: as2cas(aTopic) onConnection: aConnection withNickname: aNick sender: self]; return self; } - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ kick: aPerson offOf: aChannel for: as2cas(reason) onConnection: aConnection withNickname: aNick sender: self]; return self; } - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setAwayWithMessage: as2cas(message) onConnection: aConnection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/English.lproj/000077500000000000000000000000001067163320700243605ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/English.lproj/Localizable.strings000066400000000000000000000016671067163320700302260ustar00rootroot00000000000000/* Colorizer.m */ "Author: " = "Author: "; "Description: " = "Description: "; "Adds color into outgoing messages. The syntax is %C#[,#] for colors. The first # specifies the foreground color and the second # specifies the optional second color. The colors are in the range of 0-15\n" = "Adds color into outgoing messages. The syntax is %C#[,#] for colors. The first # specifies the foreground color and the second # specifies the optional second color. The colors are in the range of 0-15\n"; "Bold is %B, underline is %U, and %R is reverse. Repeating any one of these a second time will result in the turning off of that attribute. Use %O to clear all colors and attributes." = "Bold is %B, underline is %U, and %R is reverse. Repeating any one of these a second time will result in the turning off of that attribute. Use %O to clear all colors and attributes."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/GNUmakefile000066400000000000000000000011351067163320700237140ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Colorizer BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/OutFilters Colorizer_LANGUAGES = English Colorizer_LOCALIZED_RESOURCE_FILES = Localizable.strings Colorizer_PRINCIPAL_CLASS = Colorizer Colorizer_OBJC_FILES = Colorizer.m ifeq ($(OBJC_RUNTIME_LIB), apple) Colorizer_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Colorizer_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Colorizer/GNUmakefile.preamble000066400000000000000000000005401067163320700255010ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/GNUmakefile000066400000000000000000000002621067163320700217440ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = Colorizer Piper -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/000077500000000000000000000000001067163320700207515ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/English.lproj/000077500000000000000000000000001067163320700234675ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/English.lproj/Localizable.strings000066400000000000000000000014331067163320700273240ustar00rootroot00000000000000/* Piper.m */ "Usage: /piper " = "Usage: /piper "; " is a list of commands separated by the '^' character to pipe outgoing messages through." = " is a list of commands separated by the '^' character to pipe outgoing messages through."; "Ok." = "Ok."; "Author: " = "Author: "; "Description: " = "Description: "; "Piper can pipe outgoing messages through an arbitrary shell program. The syntax is simply /piper . To pipe through multiple programs, separate them with a ^ character." = "Piper can pipe outgoing messages through an arbitrary shell program. The syntax is simply /piper . To pipe through multiple programs, separate them with a ^ character."; "Copyright (C) 2003 by Andrew Ruder" = "Copyright (C) 2003 by Andrew Ruder"; TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/GNUmakefile000066400000000000000000000010711067163320700230220ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Piper BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/OutFilters Piper_LANGUAGES = English Piper_LOCALIZED_RESOURCE_FILES = Localizable.strings Piper_PRINCIPAL_CLASS = Piper Piper_OBJC_FILES = Piper.m ifeq ($(OBJC_RUNTIME_LIB), apple) Piper_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Piper_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/GNUmakefile.preamble000066400000000000000000000005401067163320700246100ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/Piper.h000066400000000000000000000064241067163320700222070ustar00rootroot00000000000000/*************************************************************************** Piper.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Piper; #ifndef PIPER_H #define PIPER_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Piper class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Piper : NSObject - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Piper/Piper.m000066400000000000000000000202511067163320700222060ustar00rootroot00000000000000/*************************************************************************** Piper.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Piper.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import static NSAttributedString *pipeit(NSAttributedString *a) { id piper = [[NSUserDefaults standardUserDefaults] objectForKey: @"Piper"]; NSEnumerator *iter; id object; id task; id pipein; id pipeout; id fdin; id fdout; id newData; id str; if (!piper || ![piper isKindOfClass: [NSArray class]]) return a; str = [a string]; iter = [piper objectEnumerator]; while ((object = [iter nextObject])) { if ([object length] == 0) continue; object = [object separateIntoNumberOfArguments: -1]; if ([object count] == 0) continue; task = AUTORELEASE([NSTask new]); pipein = [NSPipe pipe]; pipeout = [NSPipe pipe]; [task setStandardInput: pipein]; [task setStandardOutput: pipeout]; fdin = [pipein fileHandleForWriting]; fdout = [pipeout fileHandleForReading]; [task setLaunchPath: [object objectAtIndex: 0]]; if ([object count] > 0) { [task setArguments: [object subarrayWithRange: NSMakeRange(1, [object count] - 1)]]; } [task launch]; [fdin writeData: [str dataUsingEncoding: NSUTF8StringEncoding]]; [fdin closeFile]; newData = [fdout readDataToEndOfFile]; str = AUTORELEASE([[NSMutableString alloc] initWithData: newData encoding: NSUTF8StringEncoding]); [task terminate]; if (!str) return a; [str replaceOccurrencesOfString: @"\r\n" withString: @" " options: 0 range: NSMakeRange(0, [str length])]; [str replaceOccurrencesOfString: @"\r" withString: @" " options: 0 range: NSMakeRange(0, [str length])]; [str replaceOccurrencesOfString: @"\n" withString: @" " options: 0 range: NSMakeRange(0, [str length])]; } if ([[a string] isEqualToString: str]) return a; return AUTORELEASE([[NSAttributedString alloc] initWithString: str]); } NSInvocation *invoc = nil; @implementation Piper + (void)initialize { if (invoc) return; invoc = RETAIN([NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(commandPiper:connection:)]]); [invoc retainArguments]; [invoc setTarget: self]; [invoc setSelector: @selector(commandPiper:connection:)]; } + (NSAttributedString *)commandPiper: (NSString *)command connection: aConnection { id x = [command separateIntoNumberOfArguments: 1]; if ([x count] == 0) { return BuildAttributedString(_l(@"Usage: /piper "), @"\n", _l(@" is a list of commands separated by the '^' character" @" to pipe outgoing messages through."), nil); } x = [NSMutableArray arrayWithArray: [[x objectAtIndex: 0] componentsSeparatedByString: @"^"]]; [x removeObject: @""]; [[NSUserDefaults standardUserDefaults] setObject: x forKey: @"Piper"]; return S2AS(_l(@"Ok.")); } - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Andrew Ruder\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"Piper can pipe outgoing messages through " @"an arbitrary shell program. The syntax is simply " @"/piper . To pipe through multiple programs, separate " @"them with a ^ character."), @"\n\n", _l(@"Copyright (C) 2005 by Andrew Ruder"), nil); } - pluginActivated { [_TS_ addCommand: @"piper" withInvocation: invoc]; return self; } - pluginDeactivated { [_TS_ removeCommand: @"piper"]; return self; } - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ quitWithMessage: pipeit(aMessage) onConnection: aConnection withNickname: aNick sender: self]; return self; } - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ partChannel: channel withMessage: pipeit(aMessage) onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPReply: aCTCP withArgument: pipeit(args) to: aPerson onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendCTCPRequest: aCTCP withArgument: pipeit(args) to: aPerson onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendMessage: pipeit(message) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendNotice: pipeit(message) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendAction: pipeit(anAction) to: receiver onConnection: aConnection withNickname: aNick sender: self]; return self; } - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendWallops: pipeit(message) onConnection: aConnection withNickname: aNick sender: self]; return self; } - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setTopicForChannel: aChannel to: pipeit(aTopic) onConnection: aConnection withNickname: aNick sender: self]; return self; } - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ kick: aPerson offOf: aChannel for: pipeit(reason) onConnection: aConnection withNickname: aNick sender: self]; return self; } - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ setAwayWithMessage: pipeit(message) onConnection: aConnection withNickname: aNick sender: self]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/000077500000000000000000000000001067163320700214565ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/English.lproj/000077500000000000000000000000001067163320700241745ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/English.lproj/Localizable.strings000066400000000000000000000001401067163320700300230ustar00rootroot00000000000000/* Skeleton.m */ "Author: " = "Author: "; "Description: " = "Description: "; "None" = "None"; TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/GNUmakefile000066400000000000000000000011241067163320700235260ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Skeleton BUNDLE_EXTENSION = BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/OutFilters Skeleton_LANGUAGES = English Skeleton_LOCALIZED_RESOURCE_FILES = Localizable.strings Skeleton_PRINCIPAL_CLASS = Skeleton Skeleton_OBJC_FILES = Skeleton.m ifeq ($(OBJC_RUNTIME_LIB), apple) Skeleton_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else Skeleton_BUNDLE_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/GNUmakefile.preamble000066400000000000000000000005401067163320700253150ustar00rootroot00000000000000 ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/Skeleton.h000066400000000000000000000026421067163320700234170ustar00rootroot00000000000000/*************************************************************************** Skeleton.h ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Skeleton; #ifndef SKELETON_H #define SKELETON_H #import @class NSBundle; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [Skeleton class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] @class NSAttributedString; @interface Skeleton : NSObject // Open up TalkSoupProtocols.h and insert methods you want here... @end #endif TalkSoup-1.0alpha-32-g55b4d4e/OutFilters/Skeleton/Skeleton.m000066400000000000000000000026421067163320700234240ustar00rootroot00000000000000/*************************************************************************** Skeleton.m ------------------- begin : Sat May 10 18:58:30 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Skeleton.h" #import #import #import #import @implementation Skeleton - (NSAttributedString *)pluginDescription { return BuildAttributedString([NSNull null], IRCBold, IRCBoldValue, _l(@"Author: "), @"Somebody\n\n", [NSNull null], IRCBold, IRCBoldValue, _l(@"Description: "), _l(@"None"), nil); } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/000077500000000000000000000000001067163320700170725ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUmakefile000066400000000000000000000002601067163320700211420ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = GNUstepOutput -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/000077500000000000000000000000001067163320700216405ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/000077500000000000000000000000001067163320700241775ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/BigServerList.plist000066400000000000000000001604471067163320700300140ustar00rootroot00000000000000{ Servers = ( { Name = "MagicStar"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.magicstar.net"; Name = "irc.magicstar.net"; Port = "6667"; } ); }, { Name = "Dark-Tou-Net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.d-t-net.de"; Name = "irc.d-t-net.de"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "bw.d-t-net.de"; Name = "bw.d-t-net.de"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nc.d-t-net.de"; Name = "nc.d-t-net.de"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "wakka.d-t-net.de"; Name = "wakka.d-t-net.de"; Port = "6667"; } ); }, { Name = "KrushNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Jeffersonville.IN.US.KrushNet.Org"; Name = "Jeffersonville.IN.US.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Auckland.NZ.KrushNet.Org"; Name = "Auckland.NZ.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Hastings.NZ.KrushNet.Org"; Name = "Hastings.NZ.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Seattle-R.WA.US.KrushNet.Org"; Name = "Seattle-R.WA.US.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Minneapolis.MN.US.KrushNet.Org"; Name = "Minneapolis.MN.US.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Cullowhee.NC.US.KrushNet.Org"; Name = "Cullowhee.NC.US.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Asheville-R.NC.US.KrushNet.Org"; Name = "Asheville-R.NC.US.KrushNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "San-Antonio.TX.US.KrushNet.Org"; Name = "San-Antonio.TX.US.KrushNet.Org"; Port = "6667"; } ); }, { Name = "RedeBrasilIRC"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.redebrasilirc.org"; Name = "irc.redebrasilirc.org"; Port = "6667"; } ); }, { Name = "ChatJunkies"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.chatjunkies.org"; Name = "irc.chatjunkies.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nl.chatjunkies.org"; Name = "nl.chatjunkies.org"; Port = "6667"; } ); }, { Name = "AbleNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "california.ablenet.org"; Name = "california.ablenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "amazon.ablenet.org"; Name = "amazon.ablenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "agora.ablenet.org"; Name = "agora.ablenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "extreme.ablenet.org"; Name = "extreme.ablenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ablenet.org"; Name = "irc.ablenet.org"; Port = "6667"; } ); }, { Name = "HabberNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.habber.net"; Name = "irc.habber.net"; Port = "6667"; } ); }, { Name = "SlashNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.slashnet.org"; Name = "irc.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "area51.slashnet.org"; Name = "area51.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "moo.slashnet.org"; Name = "moo.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "radon.slashnet.org"; Name = "radon.slashnet.org"; Port = "6667"; } ); }, { Name = "AmigaNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "linux.us.amiganet.org"; Name = "linux.us.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "whiterose.us.amiganet.org"; Name = "whiterose.us.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "thule.no.amiganet.org"; Name = "thule.no.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "dynarc.se.amiganet.org"; Name = "dynarc.se.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "fullcomp.au.amiganet.org"; Name = "fullcomp.au.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "spod.uk.amiganet.org"; Name = "spod.uk.amiganet.org"; Port = "6667"; } ); }, { Name = "Infinity-IRC"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Atlanta.GA.US.Infinity-IRC.Org"; Name = "Atlanta.GA.US.Infinity-IRC.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Babylon.NY.US.Infinity-IRC.Org"; Name = "Babylon.NY.US.Infinity-IRC.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Sunshine.Ca.US.Infinity-IRC.Org"; Name = "Sunshine.Ca.US.Infinity-IRC.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "IRC.Infinity-IRC.Org"; Name = "IRC.Infinity-IRC.Org"; Port = "6667"; } ); }, { Name = "Librenet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.librenet.net"; Name = "irc.librenet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ielf.fr.librenet.net"; Name = "ielf.fr.librenet.net"; Port = "6667"; } ); }, { Name = "NullusNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.spot.org"; Name = "irc.spot.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.nullus.net"; Name = "irc.nullus.net"; Port = "6667"; } ); }, { Name = "StarChat"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.starchat.net"; Name = "irc.starchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "galatea.starchat.net"; Name = "galatea.starchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "stargate.starchat.net"; Name = "stargate.starchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "powerzone.starchat.net"; Name = "powerzone.starchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "utopia.starchat.net"; Name = "utopia.starchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "cairns.starchat.net"; Name = "cairns.starchat.net"; Port = "6667"; } ); }, { Name = "Xentonix.net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ffm.de.eu.xentonix.net"; Name = "irc.ffm.de.eu.xentonix.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.brs.de.eu.xentonix.net"; Name = "irc.brs.de.eu.xentonix.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.stg.ch.eu.xentonix.net"; Name = "irc.stg.ch.eu.xentonix.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.hou.tx.us.xentonix.net"; Name = "irc.hou.tx.us.xentonix.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.kar.de.eu.xentonix.net"; Name = "irc.kar.de.eu.xentonix.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.vie.at.eu.xentonix.net"; Name = "irc.vie.at.eu.xentonix.net"; Port = "6667"; } ); }, { Name = "PTNet, UNI"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.PTNet.org"; Name = "irc.PTNet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "rccn.PTnet.org"; Name = "rccn.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uevora.PTnet.org"; Name = "uevora.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "umoderna.PTnet.org"; Name = "umoderna.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ist.PTnet.org"; Name = "ist.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "aaum.PTnet.org"; Name = "aaum.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uc.PTnet.org"; Name = "uc.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ualg.ptnet.org"; Name = "ualg.ptnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "madinfo.PTnet.org"; Name = "madinfo.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "isep.PTnet.org"; Name = "isep.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ua.PTnet.org"; Name = "ua.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ipg.PTnet.org"; Name = "ipg.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "isec.PTnet.org"; Name = "isec.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "utad.PTnet.org"; Name = "utad.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "iscte.PTnet.org"; Name = "iscte.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ubi.PTnet.org"; Name = "ubi.PTnet.org"; Port = "6667"; } ); }, { Name = "DALnet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dal.net"; Name = "irc.dal.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.dal.net"; Name = "irc.eu.dal.net"; Port = "6667"; } ); }, { Name = "IRCNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.stealth.net"; Name = "irc.stealth.net"; Port = "5550"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.demon.co.uk"; Name = "ircnet.demon.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.hinet.hr"; Name = "ircnet.hinet.hr"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.datacomm.ch"; Name = "irc.datacomm.ch"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.kaptech.fr"; Name = "ircnet.kaptech.fr"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.flashnet.it"; Name = "irc.flashnet.it"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.cwitaly.it"; Name = "irc.cwitaly.it"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.easynet.co.uk"; Name = "ircnet.easynet.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "random.ircd.de"; Name = "random.ircd.de"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.netvision.net.il"; Name = "ircnet.netvision.net.il"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.seed.net.tw"; Name = "irc.seed.net.tw"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.cs.hut.fi"; Name = "irc.cs.hut.fi"; Port = "6667"; } ); }, { Name = "SubCultNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.subcult.ch"; Name = "irc.subcult.ch"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.phuncrew.ch"; Name = "irc.phuncrew.ch"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.mgz.ch"; Name = "irc.mgz.ch"; Port = "6667"; } ); }, { Name = "OFTC"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.oftc.net"; Name = "irc.oftc.net"; Port = "6667"; } ); }, { Name = "Freeworld"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "kabel.freeworld.nu"; Name = "kabel.freeworld.nu"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.freeworld.nu"; Name = "irc.freeworld.nu"; Port = "6667"; } ); }, { Name = "Hashmark"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.hashmark.net"; Name = "irc.hashmark.net"; Port = "6667"; } ); }, { Name = "SceneNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.scene.org"; Name = "irc.scene.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.scene.org"; Name = "irc.eu.scene.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.scene.org"; Name = "irc.us.scene.org"; Port = "6667"; } ); }, { Name = "AstroLink"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.astrolink.org"; Name = "irc.astrolink.org"; Port = "6667"; } ); }, { Name = "CyberArmy"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.cyberarmy.com"; Name = "irc.cyberarmy.com"; Port = "6667"; } ); }, { Name = "FEFNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.fef.net"; Name = "irc.fef.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.villagenet.com"; Name = "irc.villagenet.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ggn.net"; Name = "irc.ggn.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.vendetta.com"; Name = "irc.vendetta.com"; Port = "6667"; } ); }, { Name = "German-Elite"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "dominion.german-elite.net"; Name = "dominion.german-elite.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "komatu.german-elite.net"; Name = "komatu.german-elite.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "liberty.german-elite.net"; Name = "liberty.german-elite.net"; Port = "6667"; } ); }, { Name = "EFnet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.Prison.NET"; Name = "irc.Prison.NET"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.Qeast.net"; Name = "irc.Qeast.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.efnet.pl"; Name = "irc.efnet.pl"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.flamed.net"; Name = "irc.flamed.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "efnet.demon.co.uk"; Name = "efnet.demon.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.lagged.org"; Name = "irc.lagged.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.lightning.net"; Name = "irc.lightning.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.mindspring.com"; Name = "irc.mindspring.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.rt.ru"; Name = "irc.rt.ru"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.easynews.com"; Name = "irc.easynews.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.servercentral.net"; Name = "irc.servercentral.net"; Port = "6667"; } ); }, { Name = "UnderNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.undernet.org"; Name = "us.undernet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "eu.undernet.org"; Name = "eu.undernet.org"; Port = "6667"; } ); }, { Name = "IRCDZone"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ircdzone.net"; Name = "irc.ircdzone.net"; Port = "6667"; } ); }, { Name = "Progameplayer"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.progameplayer.com"; Name = "irc.progameplayer.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "melancholia.oh.us.progameplayer.com"; Name = "melancholia.oh.us.progameplayer.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "deimos.oh.us.progameplayer.com"; Name = "deimos.oh.us.progameplayer.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "paradigm.oh.us.progameplayer.com"; Name = "paradigm.oh.us.progameplayer.com"; Port = "6667"; } ); }, { Name = "FDFNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.fdfnet.net"; Name = "irc.fdfnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.fdfnet.net"; Name = "irc.eu.fdfnet.net"; Port = "6667"; } ); }, { Name = "AfterNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.afternet.org"; Name = "irc.afternet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ic5.eu.afternet.org"; Name = "ic5.eu.afternet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "baltimore.md.us.afternet.org"; Name = "baltimore.md.us.afternet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "boston.afternet.org"; Name = "boston.afternet.org"; Port = "6667"; } ); }, { Name = "IrcLink"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.irclink.net"; Name = "irc.irclink.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Alesund.no.eu.irclink.net"; Name = "Alesund.no.eu.irclink.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Oslo.no.eu.irclink.net"; Name = "Oslo.no.eu.irclink.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "frogn.no.eu.irclink.net"; Name = "frogn.no.eu.irclink.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "tonsberg.no.eu.irclink.net"; Name = "tonsberg.no.eu.irclink.net"; Port = "6667"; } ); }, { Name = "NixHelpNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.nixhelp.org"; Name = "irc.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.nixhelp.org"; Name = "us.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk.nixhelp.org"; Name = "uk.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk2.nixhelp.org"; Name = "uk2.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk3.nixhelp.org"; Name = "uk3.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nl.nixhelp.org"; Name = "nl.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ca.ld.nixhelp.org"; Name = "ca.ld.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.co.nixhelp.org"; Name = "us.co.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.ca.nixhelp.org"; Name = "us.ca.nixhelp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.pa.nixhelp.org"; Name = "us.pa.nixhelp.org"; Port = "6667"; } ); }, { Name = "AxeNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.axenet.org"; Name = "irc.axenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "angel.axenet.org"; Name = "angel.axenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "energy.axenet.org"; Name = "energy.axenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "python.axenet.org"; Name = "python.axenet.org"; Port = "6667"; } ); }, { Name = "KewlNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "random.irc.kewl.org"; Name = "random.irc.kewl.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "la.defense.fr.eu.kewl.org"; Name = "la.defense.fr.eu.kewl.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nanterre.fr.eu.kewl.org"; Name = "nanterre.fr.eu.kewl.org"; Port = "6667"; } ); }, { Name = "PTNet, ISP's"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.PTNet.org"; Name = "irc.PTNet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "rccn.PTnet.org"; Name = "rccn.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "EUnet.PTnet.org"; Name = "EUnet.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "madinfo.PTnet.org"; Name = "madinfo.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "netc2.PTnet.org"; Name = "netc2.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "netc1.PTnet.org"; Name = "netc1.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "telepac1.ptnet.org"; Name = "telepac1.ptnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "esoterica.PTnet.org"; Name = "esoterica.PTnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ip-hub.ptnet.org"; Name = "ip-hub.ptnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "telepac1.ptnet.org"; Name = "telepac1.ptnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nortenet.PTnet.org"; Name = "nortenet.PTnet.org"; Port = "6667"; } ); }, { Name = "QChat.net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.qchat.net"; Name = "irc.qchat.net"; Port = "6667"; } ); }, { Name = "AustNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.austnet.org"; Name = "us.austnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ca.austnet.org"; Name = "ca.austnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "au.austnet.org"; Name = "au.austnet.org"; Port = "6667"; } ); }, { Name = "FreeNode"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.freenode.net"; Name = "irc.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.freenode.net"; Name = "irc.eu.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.au.freenode.net"; Name = "irc.au.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.freenode.net"; Name = "irc.us.freenode.net"; Port = "6667"; } ); }, { Name = "ChatNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "US.ChatNet.Org"; Name = "US.ChatNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "EU.ChatNet.Org"; Name = "EU.ChatNet.Org"; Port = "6667"; } ); }, { Name = "GimpNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gimp.org"; Name = "irc.gimp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.au.gimp.org"; Name = "irc.au.gimp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.gimp.org"; Name = "irc.us.gimp.org"; Port = "6667"; } ); }, { Name = "NeverNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.nevernet.net"; Name = "irc.nevernet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "imagine.nevernet.net"; Name = "imagine.nevernet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "dimension.nevernet.net"; Name = "dimension.nevernet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "universe.nevernet.net"; Name = "universe.nevernet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "wayland.nevernet.net"; Name = "wayland.nevernet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "forte.nevernet.net"; Name = "forte.nevernet.net"; Port = "6667"; } ); }, { Name = "QuakeNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.quakenet.org"; Name = "irc.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.se.quakenet.org"; Name = "irc.se.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dk.quakenet.org"; Name = "irc.dk.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.no.quakenet.org"; Name = "irc.no.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.fi.quakenet.org"; Name = "irc.fi.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.be.quakenet.org"; Name = "irc.be.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.uk.quakenet.org"; Name = "irc.uk.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.de.quakenet.org"; Name = "irc.de.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.it.quakenet.org"; Name = "irc.it.quakenet.org"; Port = "6667"; } ); }, { Name = "Evolnet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.evolnet.org"; Name = "irc.evolnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "blender.evolnet.org"; Name = "blender.evolnet.org"; Port = "6667"; } ); }, { Name = "GalaxyNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.galaxynet.org"; Name = "irc.galaxynet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "sprynet.us.galaxynet.org"; Name = "sprynet.us.galaxynet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "atlanta.ga.us.galaxynet.org"; Name = "atlanta.ga.us.galaxynet.org"; Port = "6667"; } ); }, { Name = "CoolChat"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.coolchat.net"; Name = "irc.coolchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "unix.coolchat.net"; Name = "unix.coolchat.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "toronto.coolchat.net"; Name = "toronto.coolchat.net"; Port = "6667"; } ); }, { Name = "TopGamers"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.topgamers.net"; Name = "irc.topgamers.net"; Port = "6667"; } ); }, { Name = "Gamma Force"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gammaforce.org"; Name = "irc.gammaforce.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "sphinx.or.us.gammaforce.org"; Name = "sphinx.or.us.gammaforce.org"; Port = "6667"; } ); }, { Name = "XWorld"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Buffalo.NY.US.XWorld.org"; Name = "Buffalo.NY.US.XWorld.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Minneapolis.MN.US.Xworld.Org"; Name = "Minneapolis.MN.US.Xworld.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Rochester.NY.US.XWorld.org"; Name = "Rochester.NY.US.XWorld.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Bayern.DE.EU.XWorld.Org"; Name = "Bayern.DE.EU.XWorld.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "Chicago.IL.US.XWorld.Org"; Name = "Chicago.IL.US.XWorld.Org"; Port = "6667"; } ); }, { Name = "DwarfStarNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "IRC.dwarfstar.net"; Name = "IRC.dwarfstar.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "US.dwarfstar.net"; Name = "US.dwarfstar.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "EU.dwarfstar.net"; Name = "EU.dwarfstar.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "AU.dwarfstar.net"; Name = "AU.dwarfstar.net"; Port = "6667"; } ); }, { Name = "Irctoo.net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.canadian.net"; Name = "irc.canadian.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.irctoo.net"; Name = "irc.irctoo.net"; Port = "6667"; } ); }, { Name = "RebelChat"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.rebelchat.org"; Name = "irc.rebelchat.org"; Port = "6667"; } ); }, { Name = "GamesNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gamesnet.net"; Name = "irc.gamesnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.gamesnet.net"; Name = "irc.us.gamesnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "east.us.gamesnet.net"; Name = "east.us.gamesnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "west.us.gamesnet.net"; Name = "west.us.gamesnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ca.gamesnet.net"; Name = "irc.ca.gamesnet.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.gamesnet.net"; Name = "irc.eu.gamesnet.net"; Port = "6667"; } ); }, { Name = "RealmNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.realmnet.com"; Name = "irc.realmnet.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.realmnet.com"; Name = "irc.eu.realmnet.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.realmnet.com"; Name = "irc.us.realmnet.com"; Port = "6667"; } ); }, { Name = "2600net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.2600.net"; Name = "irc.2600.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dc2600.com"; Name = "irc.dc2600.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.nyc2600.com"; Name = "irc.nyc2600.com"; Port = "6667"; } ); }, { Name = "LinkNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.link-net.org"; Name = "irc.link-net.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.no.link-net.org"; Name = "irc.no.link-net.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gamesden.net.au"; Name = "irc.gamesden.net.au"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.bahnhof.se"; Name = "irc.bahnhof.se"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.kinexuseurope.co.uk"; Name = "irc.kinexuseurope.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gamiix.com"; Name = "irc.gamiix.com"; Port = "6667"; } ); }, { Name = "OtherNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.othernet.org"; Name = "irc.othernet.org"; Port = "6667"; } ); }, { Name = "Unsecurity"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.unsecurity.org"; Name = "irc.unsecurity.org"; Port = "6667"; } ); }, { Name = "AzzurraNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.azzurra.org"; Name = "irc.azzurra.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "crypto.azzurra.org"; Name = "crypto.azzurra.org"; Port = "6667"; } ); }, { Name = "OnlyIRC"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.onlyirc.net"; Name = "irc.onlyirc.net"; Port = "6667"; } ); }, { Name = "IRCSoulZ"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ircsoulz.net"; Name = "irc.ircsoulz.net"; Port = "6667"; } ); }, { Name = "EUIrc"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.euirc.net"; Name = "irc.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ham.de.euirc.net"; Name = "irc.ham.de.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ber.de.euirc.net"; Name = "irc.ber.de.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.ffm.de.euirc.net"; Name = "irc.ffm.de.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.bre.de.euirc.net"; Name = "irc.bre.de.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.hes.de.euirc.net"; Name = "irc.hes.de.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.vie.at.euirc.net"; Name = "irc.vie.at.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.inn.at.euirc.net"; Name = "irc.inn.at.euirc.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.bas.ch.euirc.net"; Name = "irc.bas.ch.euirc.net"; Port = "6667"; } ); }, { Name = "RizeNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.rizenet.org"; Name = "irc.rizenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "omega.rizenet.org"; Name = "omega.rizenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "evelance.rizenet.org"; Name = "evelance.rizenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "lisa.rizenet.org"; Name = "lisa.rizenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "scott.rizenet.org"; Name = "scott.rizenet.org"; Port = "6667"; } ); }, { Name = "PTlink"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.PTlink.net"; Name = "irc.PTlink.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "aaia.PTlink.net"; Name = "aaia.PTlink.net"; Port = "6667"; } ); }, { Name = "ARCNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "se1.arcnet.vapor.com"; Name = "se1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us1.arcnet.vapor.com"; Name = "us1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us2.arcnet.vapor.com"; Name = "us2.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us3.arcnet.vapor.com"; Name = "us3.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ca1.arcnet.vapor.com"; Name = "ca1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "de1.arcnet.vapor.com"; Name = "de1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "de3.arcnet.vapor.com"; Name = "de3.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ch1.arcnet.vapor.com"; Name = "ch1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "be1.arcnet.vapor.com"; Name = "be1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "nl3.arcnet.vapor.com"; Name = "nl3.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk1.arcnet.vapor.com"; Name = "uk1.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk2.arcnet.vapor.com"; Name = "uk2.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "uk3.arcnet.vapor.com"; Name = "uk3.arcnet.vapor.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "fr1.arcnet.vapor.com"; Name = "fr1.arcnet.vapor.com"; Port = "6667"; } ); }, { Name = "TNI3"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.tni3.com"; Name = "irc.tni3.com"; Port = "6667"; } ); }, { Name = "Spidernet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.spidernet.org"; Name = "us.spidernet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "eu.spidernet.org"; Name = "eu.spidernet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.spidernet.org"; Name = "irc.spidernet.org"; Port = "6667"; } ); }, { Name = "OzNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "sydney.oz.org"; Name = "sydney.oz.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "melbourne.oz.org"; Name = "melbourne.oz.org"; Port = "6667"; } ); } ); } TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/Defaults.plist000066400000000000000000000007551067163320700270320ustar00rootroot00000000000000{ BackgroundColor = "IRCColorCustom 1000 973 863"; OtherBracketColor = "IRCColorCustom 0 0 1000"; PersonalBracketColor = "IRCColorCustom 1000 0 0"; TextColor = "IRCColorCustom 0 0 0"; BufferLines = 1000; WrapIndent = "0.0"; DefaultQuitMessage = "[TalkSoup] Get it today: http://talksoup.aeruder.net"; TimestampEnabled = YES; TimestampFormat = "[%H:%M] "; Aliases = { j = "/join"; charset = "/encoding"; p = "/part"; q = "/quit"; c = "/close"; connect = "/server"; }; } TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/ServerList.plist000066400000000000000000000300301067163320700273520ustar00rootroot00000000000000{ Servers = ( { Name = "SlashNET"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.slashnet.org"; Name = "irc.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "area51.slashnet.org"; Name = "area51.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "moo.slashnet.org"; Name = "moo.slashnet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "radon.slashnet.org"; Name = "radon.slashnet.org"; Port = "6667"; } ); }, { Name = "AmigaNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "linux.us.amiganet.org"; Name = "linux.us.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "whiterose.us.amiganet.org"; Name = "whiterose.us.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "thule.no.amiganet.org"; Name = "thule.no.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "dynarc.se.amiganet.org"; Name = "dynarc.se.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "fullcomp.au.amiganet.org"; Name = "fullcomp.au.amiganet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "spod.uk.amiganet.org"; Name = "spod.uk.amiganet.org"; Port = "6667"; } ); }, { Name = "DALnet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dal.net"; Name = "irc.dal.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.dal.net"; Name = "irc.eu.dal.net"; Port = "6667"; } ); }, { Name = "IRCNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.stealth.net"; Name = "irc.stealth.net"; Port = "5550"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.demon.co.uk"; Name = "ircnet.demon.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.hinet.hr"; Name = "ircnet.hinet.hr"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.datacomm.ch"; Name = "irc.datacomm.ch"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.kaptech.fr"; Name = "ircnet.kaptech.fr"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.flashnet.it"; Name = "irc.flashnet.it"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.cwitaly.it"; Name = "irc.cwitaly.it"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.easynet.co.uk"; Name = "ircnet.easynet.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "random.ircd.de"; Name = "random.ircd.de"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "ircnet.netvision.net.il"; Name = "ircnet.netvision.net.il"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.seed.net.tw"; Name = "irc.seed.net.tw"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.cs.hut.fi"; Name = "irc.cs.hut.fi"; Port = "6667"; } ); }, { Name = "OFTC"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.oftc.net"; Name = "irc.oftc.net"; Port = "6667"; } ); }, { Name = "EFnet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.Prison.NET"; Name = "irc.Prison.NET"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.Qeast.net"; Name = "irc.Qeast.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.efnet.pl"; Name = "irc.efnet.pl"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.flamed.net"; Name = "irc.flamed.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "efnet.demon.co.uk"; Name = "efnet.demon.co.uk"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.lagged.org"; Name = "irc.lagged.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.lightning.net"; Name = "irc.lightning.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.mindspring.com"; Name = "irc.mindspring.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.rt.ru"; Name = "irc.rt.ru"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.easynews.com"; Name = "irc.easynews.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.servercentral.net"; Name = "irc.servercentral.net"; Port = "6667"; } ); }, { Name = "UnderNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "us.undernet.org"; Name = "us.undernet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "eu.undernet.org"; Name = "eu.undernet.org"; Port = "6667"; } ); }, { Name = "FreeNode"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.freenode.net"; Name = "irc.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.eu.freenode.net"; Name = "irc.eu.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.au.freenode.net"; Name = "irc.au.freenode.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.freenode.net"; Name = "irc.us.freenode.net"; Port = "6667"; } ); }, { Name = "ChatNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "US.ChatNet.Org"; Name = "US.ChatNet.Org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "EU.ChatNet.Org"; Name = "EU.ChatNet.Org"; Port = "6667"; } ); }, { Name = "GimpNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.gimp.org"; Name = "irc.gimp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.au.gimp.org"; Name = "irc.au.gimp.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.us.gimp.org"; Name = "irc.us.gimp.org"; Port = "6667"; } ); }, { Name = "QuakeNet"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.quakenet.org"; Name = "irc.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.se.quakenet.org"; Name = "irc.se.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dk.quakenet.org"; Name = "irc.dk.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.no.quakenet.org"; Name = "irc.no.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.fi.quakenet.org"; Name = "irc.fi.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.be.quakenet.org"; Name = "irc.be.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.uk.quakenet.org"; Name = "irc.uk.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.de.quakenet.org"; Name = "irc.de.quakenet.org"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.it.quakenet.org"; Name = "irc.it.quakenet.org"; Port = "6667"; } ); }, { Name = "2600net"; Entries = ( { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.2600.net"; Name = "irc.2600.net"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.dc2600.com"; Name = "irc.dc2600.com"; Port = "6667"; }, { AutoConnect = "NO"; Commands = ""; Nick = ""; Password = ""; RealName = ""; UserName = ""; Server = "irc.nyc2600.com"; Name = "irc.nyc2600.com"; Port = "6667"; } ); } ); } TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.gorm/000077500000000000000000000000001067163320700301735ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.gorm/data.classes000066400000000000000000000006131067163320700324630ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ChannelController = { Actions = ( ); Outlets = ( tableView, chatView, splitView, window ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; ScrollingTextView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.gorm/data.info000066400000000000000000000002701067163320700317600ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.gorm/objects.gorm000066400000000000000000000051421067163320700325140ustar00rootroot00000000000000GNUstep archive00002af9:0000001f:00000044:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%ChannelController0&%GSCustomClassMap0&0&%TextView0&% ScrollingTextView0 &%TextView0 1GSTextViewTemplate1GSClassSwapper1 NSTextView1 NSText1 NSView1 NSResponder% A @ C_ C  C_ C&0 1 NSMutableArray1 NSArray&0 1NSColor0 &%NSNamedColorSpace0&%System0&%textBackgroundColor  K K0 0& % textColor C_ K0&%GormCustomView01 GSCustomView1 GSNibItem0&%NSView C|  Ch C&0& % ScrollView01 NSScrollView%  Cv C  Cv C&0 &01 NSClipView% A @ C_ C A @ C_ C&0 & 01 NSScroller1 NSControl% @ @ A C  A C&0 &%01NSCell0&01NSFont%&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0& % SplitView0 1 NSSplitView% @ @ C C  C C&0! &0"1NSImage0#&%common_Dimple.tiff0$ 0%&%System0&&%controlBackgroundColor0' %0(&%controlShadowColor%A0)& % GormNSWindow0*1NSWindow%  C C&% C D(0+ %  C C  C C&0, & 0- 0.&%System0/&%windowBackgroundColor00&%Window01&%Window02&%Window C A F@ F@%0304&%NSApplicationIcon05 &  061NSNibConnector)07&%NSOwner081NSNibOutletConnector709& % tableView0:7)0;&%window0<0= 0>0?0@7 0A1NSMutableString&% chatView0B70C& %  splitView0D1 GSMutableSet1 NSMutableSet1NSSet&*TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.nib/000077500000000000000000000000001067163320700277775ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.nib/classes.nib000066400000000000000000000006551067163320700321340ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = ScrollingTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, { CLASS = StandardChannelController; LANGUAGE = ObjC; OUTLETS = {chatView = id; splitView = id; tableView = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.nib/info.nib000066400000000000000000000007521067163320700314300ustar00rootroot00000000000000 IBDocumentLocation 82 57 356 240 0 0 1152 848 IBFramework Version 437.0 IBOpenObjects 5 IBSystem Version 8B9 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardChannel.nib/keyedobjects.nib000066400000000000000000000556311067163320700331560ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 95 NSAccessibilityConnectors CF$UID 92 NSAccessibilityOidsKeys CF$UID 93 NSAccessibilityOidsValues CF$UID 94 NSClassesKeys CF$UID 76 NSClassesValues CF$UID 77 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 72 NSNamesValues CF$UID 73 NSNextOid 24 NSObjectsKeys CF$UID 69 NSObjectsValues CF$UID 71 NSOidsKeys CF$UID 78 NSOidsValues CF$UID 79 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 StandardChannelController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 32 NS.objects CF$UID 9 CF$UID 18 CF$UID 63 CF$UID 65 CF$UID 67 $class CF$UID 17 NSDestination CF$UID 10 NSLabel CF$UID 16 NSSource CF$UID 2 $class CF$UID 15 NSClassName CF$UID 13 NSExtension CF$UID 14 NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 18 $class CF$UID 40 NSBGColor CF$UID 35 NSBounds CF$UID 34 NSDocView CF$UID 10 NSFrame CF$UID 33 NSNextKeyView CF$UID 10 NSNextResponder CF$UID 29 NSSubviews CF$UID 31 NSSuperview CF$UID 29 NScvFlags 4 NSvFlags 2048 {{222, -163}, {229, 346}} ScrollingTextView NSTextView $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView chatView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 17 NSDestination CF$UID 19 NSLabel CF$UID 62 NSSource CF$UID 2 $class CF$UID 61 NSMaxSize CF$UID 60 NSMinSize CF$UID 59 NSScreenRect CF$UID 58 NSViewClass CF$UID 24 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 22 NSWindowRect CF$UID 20 NSWindowStyleMask 14 NSWindowTitle CF$UID 21 NSWindowView CF$UID 25 {{137, 211}, {480, 360}} Window $class CF$UID 23 NS.string NSWindow $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 23 NS.string View $class CF$UID 57 NSFrame CF$UID 56 NSNextResponder CF$UID 0 NSSubviews CF$UID 26 $class CF$UID 32 NS.objects CF$UID 27 $class CF$UID 55 NSFrame CF$UID 54 NSIsVertical NSNextResponder CF$UID 25 NSSubviews CF$UID 28 NSSuperview CF$UID 25 NSvFlags 274 $class CF$UID 32 NS.objects CF$UID 29 CF$UID 50 $class CF$UID 49 NSContentView CF$UID 11 NSFrameSize CF$UID 48 NSHScroller CF$UID 45 NSNextKeyView CF$UID 11 NSNextResponder CF$UID 27 NSSubviews CF$UID 30 NSSuperview CF$UID 27 NSVScroller CF$UID 41 NSsFlags 18 NSvFlags 256 $class CF$UID 32 NS.objects CF$UID 11 CF$UID 41 CF$UID 45 $class CF$UID 32 NS.objects CF$UID 10 $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 1}, {229, 346}} {{222, -163}, {229, 346}} $class CF$UID 39 NSCatalogName CF$UID 36 NSColor CF$UID 38 NSColorName CF$UID 37 NSColorSpace 6 System controlColor $class CF$UID 39 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSColor NSObject $classname NSColor $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 44 NSAction CF$UID 43 NSCurValue 1 NSFrame CF$UID 42 NSNextResponder CF$UID 29 NSPercent 0.91256833076477051 NSSuperview CF$UID 29 NSTarget CF$UID 29 NSvFlags 256 {{230, 1}, {15, 346}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 44 NSAction CF$UID 47 NSCurValue 0.077448748052120209 NSFrame CF$UID 46 NSNextResponder CF$UID 29 NSSuperview CF$UID 29 NSTarget CF$UID 29 NSsFlags 1 NSvFlags 256 {{-100, -100}, {439, 15}} _doScroller: {246, 348} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView $class CF$UID 15 NSClassName CF$UID 52 NSExtension CF$UID 53 NSFrame CF$UID 51 NSNextResponder CF$UID 27 NSSuperview CF$UID 27 {{255, 0}, {214, 348}} $class CF$UID 23 NS.string NSView NSResponder {{6, 6}, {469, 348}} $classes NSSplitView NSView NSResponder NSObject $classname NSSplitView {{1, 9}, {480, 360}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1152, 848}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 17 NSDestination CF$UID 50 NSLabel CF$UID 64 NSSource CF$UID 2 tableView $class CF$UID 17 NSDestination CF$UID 27 NSLabel CF$UID 66 NSSource CF$UID 2 splitView $class CF$UID 17 NSDestination CF$UID 2 NSLabel CF$UID 68 NSSource CF$UID 27 delegate $class CF$UID 70 NS.objects CF$UID 50 CF$UID 25 CF$UID 19 CF$UID 27 CF$UID 10 CF$UID 29 $classes NSArray NSObject $classname NSArray $class CF$UID 70 NS.objects CF$UID 27 CF$UID 19 CF$UID 2 CF$UID 25 CF$UID 29 CF$UID 27 $class CF$UID 70 NS.objects CF$UID 50 CF$UID 19 CF$UID 10 CF$UID 2 $class CF$UID 70 NS.objects CF$UID 74 CF$UID 21 CF$UID 74 CF$UID 75 View File's Owner $class CF$UID 70 NS.objects $class CF$UID 70 NS.objects $class CF$UID 70 NS.objects CF$UID 67 CF$UID 50 CF$UID 65 CF$UID 27 CF$UID 25 CF$UID 9 CF$UID 2 CF$UID 19 CF$UID 29 CF$UID 10 CF$UID 18 CF$UID 63 $class CF$UID 70 NS.objects CF$UID 80 CF$UID 81 CF$UID 82 CF$UID 83 CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 CF$UID 91 23 19 22 21 6 14 1 5 8 7 18 20 $class CF$UID 32 NS.objects $class CF$UID 70 NS.objects $class CF$UID 70 NS.objects $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.gorm/000077500000000000000000000000001067163320700277305ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.gorm/data.classes000066400000000000000000000005511067163320700322210ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; QueryController = { Actions = ( ); Outlets = ( chatView, window ); Super = NSObject; }; ScrollingTextView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.gorm/data.info000066400000000000000000000002701067163320700315150ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.gorm/objects.gorm000066400000000000000000000041741067163320700322550ustar00rootroot00000000000000GNUstep archive00002af9:0000001c:00000033:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%QueryController0&%GSCustomClassMap0&0&%TextView0&% ScrollingTextView0 &%TextView0 1GSTextViewTemplate1GSClassSwapper1 NSTextView1 NSText1 NSView1 NSResponder% A @ C C  C C&0 1 NSMutableArray1 NSArray&0 1NSColor0 &%NSNamedColorSpace0&%System0&%textBackgroundColor  K K0 0& % textColor C K0& % ScrollView01 NSScrollView% @ @ C C  C C&0 &01 NSClipView% A @ C C A @ C C&0 & 01 NSScroller1 NSControl% @ @ A C  A C&0 &%01NSCell0&01NSFont%&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0& % GormNSWindow01NSWindow%  C C&% C D0 %  C C  C C&0 &0  0!&%System0"&%windowBackgroundColor0#&%Window0$&%Window0%&%Window A A F@ F@%0&1NSImage0'&%NSApplicationIcon0( &0)1NSNibConnector0*&%NSOwner0+1NSNibOutletConnector*0,&%window0-0.& % ScrollView0/00&%TextView01*0021NSMutableString&% chatView031 GSMutableSet1 NSMutableSet1NSSet&TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.nib/000077500000000000000000000000001067163320700275345ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.nib/classes.nib000066400000000000000000000006131067163320700316630ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = ScrollingTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, { CLASS = StandardQueryController; LANGUAGE = ObjC; OUTLETS = {chatView = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.nib/info.nib000066400000000000000000000007541067163320700311670ustar00rootroot00000000000000 IBDocumentLocation 95 68 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/StandardQuery.nib/keyedobjects.nib000066400000000000000000000426461067163320700327150ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 73 NSClassesKeys CF$UID 62 NSClassesValues CF$UID 63 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 57 NSNamesValues CF$UID 58 NSNextOid 11 NSObjectsKeys CF$UID 54 NSObjectsValues CF$UID 56 NSOidsKeys CF$UID 64 NSOidsValues CF$UID 65 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 StandardQueryController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 30 NS.objects CF$UID 9 CF$UID 18 $class CF$UID 17 NSDestination CF$UID 10 NSLabel CF$UID 16 NSSource CF$UID 2 $class CF$UID 15 NSClassName CF$UID 13 NSExtension CF$UID 14 NSFrameSize CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 18 $class CF$UID 37 NSBGColor CF$UID 32 NSDocView CF$UID 10 NSFrame CF$UID 31 NSNextKeyView CF$UID 10 NSNextResponder CF$UID 27 NSSubviews CF$UID 29 NSSuperview CF$UID 27 NScvFlags 4 NSvFlags 2304 {538, 331} ScrollingTextView NSTextView $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView chatView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 17 NSDestination CF$UID 19 NSLabel CF$UID 53 NSSource CF$UID 2 $class CF$UID 52 NSMaxSize CF$UID 51 NSMinSize CF$UID 50 NSScreenRect CF$UID 49 NSViewClass CF$UID 24 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 23 NSWindowRect CF$UID 20 NSWindowStyleMask 14 NSWindowTitle CF$UID 21 NSWindowView CF$UID 25 {{145, 249}, {567, 345}} $class CF$UID 22 NS.string Window $classes NSMutableString NSString NSObject $classname NSMutableString NSWindow $class CF$UID 22 NS.string View $class CF$UID 48 NSFrame CF$UID 47 NSNextResponder CF$UID 0 NSSubviews CF$UID 26 $class CF$UID 30 NS.objects CF$UID 27 $class CF$UID 46 NSContentView CF$UID 11 NSFrame CF$UID 45 NSHScroller CF$UID 42 NSNextKeyView CF$UID 11 NSNextResponder CF$UID 25 NSSubviews CF$UID 28 NSSuperview CF$UID 25 NSVScroller CF$UID 38 NSsFlags 18 NSvFlags 274 $class CF$UID 30 NS.objects CF$UID 11 CF$UID 38 CF$UID 42 $class CF$UID 30 NS.objects CF$UID 10 $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 1}, {538, 331}} $class CF$UID 36 NSCatalogName CF$UID 33 NSColor CF$UID 35 NSColorName CF$UID 34 NSColorSpace 6 System controlColor $class CF$UID 36 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSColor NSObject $classname NSColor $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 41 NSAction CF$UID 40 NSCurValue 1 NSFrame CF$UID 39 NSNextResponder CF$UID 27 NSPercent 0.99392098188400269 NSSuperview CF$UID 27 NSTarget CF$UID 27 NSvFlags 256 {{539, 1}, {15, 331}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 41 NSAction CF$UID 44 NSCurValue 0.045454546809196472 NSFrame CF$UID 43 NSNextResponder CF$UID 27 NSSuperview CF$UID 27 NSTarget CF$UID 27 NSsFlags 1 NSvFlags 256 {{-100, -100}, {440, 15}} _doScroller: {{6, 6}, {555, 333}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView {{1, 9}, {567, 345}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 55 NS.objects CF$UID 27 CF$UID 10 CF$UID 25 CF$UID 19 $classes NSArray NSObject $classname NSArray $class CF$UID 55 NS.objects CF$UID 25 CF$UID 27 CF$UID 19 CF$UID 2 $class CF$UID 55 NS.objects CF$UID 10 CF$UID 19 CF$UID 2 $class CF$UID 55 NS.objects CF$UID 59 CF$UID 60 CF$UID 61 View Window File's Owner $class CF$UID 55 NS.objects $class CF$UID 55 NS.objects $class CF$UID 55 NS.objects CF$UID 27 CF$UID 18 CF$UID 9 CF$UID 25 CF$UID 10 CF$UID 19 CF$UID 2 $class CF$UID 55 NS.objects CF$UID 66 CF$UID 67 CF$UID 68 CF$UID 69 CF$UID 70 CF$UID 71 CF$UID 72 8 10 9 6 7 5 1 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.gorm/000077500000000000000000000000001067163320700272035ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.gorm/data.classes000066400000000000000000000011211067163320700314660ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; FocusNotificationTextView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; InputControllerTextView = { Actions = ( ); Outlets = ( ); Super = FocusNotificationTextView; }; KeyTextView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; TabMasterController = { Actions = ( ); Outlets = ( tabView, nickView, typeView, window ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.gorm/data.info000066400000000000000000000002701067163320700307700ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.gorm/objects.gorm000066400000000000000000000304511067163320700315250ustar00rootroot00000000000000GNUstep archive00002af9:00000026:00000054:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%TabMasterController0&%GSCustomClassMap0&0&%TextView0&%InputControllerTextView0 &%TextView0 1GSTextViewTemplate1GSClassSwapper1 NSTextView1 NSText1 NSView1 NSResponder% A @ C A  C A&0 1 NSMutableArray1 NSArray&0 1NSColor0 &%NSNamedColorSpace0&%System0&%textBackgroundColor  K K0 0& % textColor C K0& % ScrollView01 NSScrollView% B A C A  C A&0 &01 NSClipView% A @ C A A @ C A&0 & 01 NSScroller1 NSControl% @ @ A A  A A&0 &%01NSCell0&01NSFont%&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0& % TextField01 NSTextField% @ A Bp A  Bp A&0 &%01NSTextFieldCell1 NSActionCell0 &%TalkSoup0!%&&&&&&&&0%0"0#&%NSCalibratedWhiteColorSpace ?* ?0$# ?0%&%TabView0&1 NSTabView% @ B D C  D C&0' &0( % ? ? D C  D C&0) &0* &0+1 NSTabViewItem0,&%Console0-&%Item 1(%&0.% A@%%0/&%Content001NSWindow%  D C&% D D+01 %  D C  D C&02 &&03 04&%System05&%windowBackgroundColor06&%Window07&%Window08&%Window B BH F@ F@%091NSImage 0:# 0; &0<1NSBitmapImageRep1 NSImageRep0=&%NSDeviceRGBColorSpace B@ B@%%0%00>1 NSDataMalloc1 NSDataStatic1 NSData&$$II*$[=T8J2R-!k[=U:K3xB-H'R-!k[=S7J2xB-H'/ ?[=S7I2xB-H'/ ?[=S7H0xB-H'/ ?[=R7I2xB-H'/ ?[=S7I0xB-H'/ ?[=R7I2xB-H'/ ?[=R7H0xB-H'/ ?[>X/!j:)H'/ ?D49  ?hft{y<;D ?hft}<;D ?<;D ?43:""""43:zzzzͱ""""EEEEEEEEEEEE43:555222t43:0?55hhhiiiyyyVVV777?43:~=0rdxxxUUU444?/17?43:5?0\Mzz{]]]QQQmmm_bn:9@5?0I>e]xxwvtsqpo}66<5?2A3QFA4H:|zzywutrqpbao++05?2@2@2A3B3C4E6}}|zxxwutrqpn}VT_=,, 5@2@3A3A3JdbqihvFEOQ-)Y)!W)`/$k3'q6*n4)l3'i2'f0&c/$`-$Y*!)5C4C4D4E6F7H7Ʀkkk)))LJRkjxihvhgu::B\/&[-$Y-$c/&l3'o4)l3'j2'g2&d0$a/$^-#X*!)5@2D4E6F7H7I8{{{[[[322QPZ^]jjhwhguQP[K33\-&W)_/$j3'm3'm4)j3'h2&d0&b/$_-#],#X*!)P'~>>ddd>>?87?4$$E)&_-#`0'_0&]/&^/&`/&`/&c0&j2'n3'k3'h2&d0$a/$^-#\,!Z,!X*!U)T))ttttttzzz;;;rqyjhwPPZ43:C@?w9,c2)b2)^,#_0&d2'g2'h2'k3)l3)l3)l3'l3'i2'f0&c/$_-#],#Z,!X*!W)T)S))rrr```FFF000mmm\[a<;CA)'^3,I::76v8,_-$b2'g2'l4)r7*s7*s7*w8,t7,q6*n4)k3'g2&d0$`-$],#[,!X*!W)U)S'S')YYY777XWcKJS|||SSS\2,KDD4I:I;A?>~>0b2)f2'p6*x:-y:-{;-x:-v9,s7*o4)l3'i2&f0&c/$_-#\,#Y*!W)T)S'R'S')TR^|z@?Gↄ\Zg<;CJJJm4)D4E6J;UIPEvI@q:/l4)m4)x:,};/{:-y:-w9,t7*q6*m4)j3'h2&c0&a/$]-#[,!X*!V)T)R'R'R')0/5?_^kCBJ43:?QQQ ^-#I:O>SBP?H7?2p6*s7*0|;/y:-p6*f0&d0&c/&`/$_-$]-#\,#T)!T)!T)!T)!T)!T)!T)!)))) ?h3'z;/T)!T)!T)!`/$`/$))))) ? 00$$R0? &  0@1!NSNibConnector/0A&%NSOwner0B!0C!%0D1"NSNibOutletConnectorA%0E&%tabView0F"A0G&%nickView0H"A/0I&%window0J"/A0K1#NSMutableString&% delegate0L"%A0M#&% delegate0N!0O! 0P"A 0Q#&% typeView0R1$ GSMutableSet1% NSMutableSet1&NSSet&0TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.nib/000077500000000000000000000000001067163320700270075ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.nib/classes.nib000066400000000000000000000011031067163320700311310ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = FocusNotificationTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, { CLASS = InputControllerTextView; LANGUAGE = ObjC; SUPERCLASS = FocusNotificationTextView; }, { CLASS = TabMasterController; LANGUAGE = ObjC; OUTLETS = {nickView = id; tabView = id; typeView = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.nib/info.nib000066400000000000000000000007531067163320700304410ustar00rootroot00000000000000 IBDocumentLocation 746 79 356 240 0 0 1152 848 IBFramework Version 437.0 IBOpenObjects 5 IBSystem Version 8B9 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/AllLanguages/TabContent.nib/keyedobjects.nib000066400000000000000000000724331067163320700321650ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 119 NSAccessibilityConnectors CF$UID 116 NSAccessibilityOidsKeys CF$UID 117 NSAccessibilityOidsValues CF$UID 118 NSClassesKeys CF$UID 97 NSClassesValues CF$UID 98 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 89 NSNamesValues CF$UID 90 NSNextOid 32 NSObjectsKeys CF$UID 86 NSObjectsValues CF$UID 88 NSOidsKeys CF$UID 99 NSOidsValues CF$UID 100 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 TabMasterController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 16 NS.objects CF$UID 9 CF$UID 35 CF$UID 79 CF$UID 81 CF$UID 83 CF$UID 84 $class CF$UID 34 NSDestination CF$UID 10 NSLabel CF$UID 33 NSSource CF$UID 2 $class CF$UID 32 NSAllowTruncatedLabels NSDrawsBackground NSFont CF$UID 29 NSFrame CF$UID 17 NSNextResponder CF$UID 11 NSSelectedTabViewItem CF$UID 19 NSSubviews CF$UID 12 NSSuperview CF$UID 11 NSTabViewItems CF$UID 18 NSTvFlags 134217728 NSvFlags 18 $class CF$UID 15 NSFrame CF$UID 73 NSNextResponder CF$UID 0 NSSubviews CF$UID 41 $class CF$UID 16 NS.objects CF$UID 13 $class CF$UID 15 NSFrame CF$UID 14 NSNextResponder CF$UID 10 NSSuperview CF$UID 10 {{10, 25}, {491, 310}} $classes NSView NSResponder NSObject $classname NSView $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{6, 37}, {511, 348}} $class CF$UID 16 NS.objects CF$UID 19 $class CF$UID 28 NSColor CF$UID 23 NSIdentifier CF$UID 20 NSLabel CF$UID 22 NSTabView CF$UID 10 NSView CF$UID 13 $class CF$UID 21 NS.string 1 $classes NSMutableString NSString NSObject $classname NSMutableString Tab $class CF$UID 27 NSCatalogName CF$UID 24 NSColor CF$UID 26 NSColorName CF$UID 25 NSColorSpace 6 System controlColor $class CF$UID 27 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSColor NSObject $classname NSColor $classes NSTabViewItem NSObject $classname NSTabViewItem $class CF$UID 31 NSName CF$UID 30 NSSize 11 NSfFlags 3100 LucidaGrande $classes NSFont NSObject $classname NSFont $classes NSTabView NSView NSResponder NSObject $classname NSTabView tabView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 34 NSDestination CF$UID 36 NSLabel CF$UID 78 NSSource CF$UID 2 $class CF$UID 77 NSMaxSize CF$UID 76 NSMinSize CF$UID 75 NSScreenRect CF$UID 74 NSViewClass CF$UID 40 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 39 NSWindowRect CF$UID 37 NSWindowStyleMask 14 NSWindowTitle CF$UID 38 NSWindowView CF$UID 11 {{121, 329}, {523, 391}} Window $class CF$UID 21 NS.string NSWindow $class CF$UID 21 NS.string View $class CF$UID 16 NS.objects CF$UID 10 CF$UID 42 CF$UID 52 $class CF$UID 51 NSCell CF$UID 44 NSEnabled NSFrame CF$UID 43 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 292 {{14, 6}, {66, 25}} $class CF$UID 50 NSBackgroundColor CF$UID 23 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 45 NSControlView CF$UID 42 NSSupport CF$UID 46 NSTextColor CF$UID 47 TalkSoup $class CF$UID 31 NSName CF$UID 30 NSSize 13 NSfFlags 1044 $class CF$UID 27 NSCatalogName CF$UID 24 NSColor CF$UID 49 NSColorName CF$UID 48 NSColorSpace 6 controlTextColor $class CF$UID 27 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 72 NSContentView CF$UID 54 NSFrame CF$UID 71 NSHScroller CF$UID 68 NSNextKeyView CF$UID 54 NSNextResponder CF$UID 11 NSSubviews CF$UID 53 NSSuperview CF$UID 11 NSVScroller CF$UID 64 NSsFlags 2 NSvFlags 290 $class CF$UID 16 NS.objects CF$UID 54 CF$UID 64 CF$UID 68 $class CF$UID 63 NSBGColor CF$UID 23 NSBounds CF$UID 62 NSDocView CF$UID 56 NSFrame CF$UID 61 NSNextKeyView CF$UID 56 NSNextResponder CF$UID 52 NSSubviews CF$UID 55 NSSuperview CF$UID 52 NScvFlags 2 NSvFlags 2304 $class CF$UID 16 NS.objects CF$UID 56 $class CF$UID 60 NSClassName CF$UID 58 NSExtension CF$UID 59 NSFrame CF$UID 57 NSNextResponder CF$UID 54 NSSuperview CF$UID 54 NSvFlags 18 {{2, 2}, {423, 31}} InputControllerTextView NSTextView $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView {{1, 1}, {423, 31}} {{2, 2}, {423, 31}} $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 67 NSAction CF$UID 66 NSCurValue 0.72413790225982666 NSFrame CF$UID 65 NSNextResponder CF$UID 52 NSPercent 0.60273975133895874 NSSuperview CF$UID 52 NSTarget CF$UID 52 NSvFlags 256 {{-100, -100}, {15, 44}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 67 NSAction CF$UID 70 NSCurValue 0.18013857305049896 NSFrame CF$UID 69 NSNextResponder CF$UID 52 NSPercent 0.5 NSSuperview CF$UID 52 NSTarget CF$UID 52 NSsFlags 1 NSvFlags 256 {{-100, -100}, {433, 15}} _doScroller: {{85, 6}, {425, 33}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView {{1, 9}, {523, 391}} {{0, 0}, {1152, 848}} {250, 197} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 34 NSDestination CF$UID 42 NSLabel CF$UID 80 NSSource CF$UID 2 nickView $class CF$UID 34 NSDestination CF$UID 2 NSLabel CF$UID 82 NSSource CF$UID 36 delegate $class CF$UID 34 NSDestination CF$UID 2 NSLabel CF$UID 82 NSSource CF$UID 10 $class CF$UID 34 NSDestination CF$UID 56 NSLabel CF$UID 85 NSSource CF$UID 2 typeView $class CF$UID 87 NS.objects CF$UID 11 CF$UID 13 CF$UID 52 CF$UID 19 CF$UID 42 CF$UID 56 CF$UID 10 CF$UID 36 $classes NSArray NSObject $classname NSArray $class CF$UID 87 NS.objects CF$UID 36 CF$UID 19 CF$UID 11 CF$UID 10 CF$UID 11 CF$UID 52 CF$UID 11 CF$UID 2 $class CF$UID 87 NS.objects CF$UID 56 CF$UID 13 CF$UID 36 CF$UID 42 CF$UID 19 CF$UID 2 CF$UID 10 $class CF$UID 87 NS.objects CF$UID 91 CF$UID 92 CF$UID 38 CF$UID 93 CF$UID 94 CF$UID 95 CF$UID 96 View NSView NSTextField2 NSTabViewItem File's Owner NSTabView $class CF$UID 87 NS.objects $class CF$UID 87 NS.objects $class CF$UID 87 NS.objects CF$UID 11 CF$UID 84 CF$UID 52 CF$UID 19 CF$UID 9 CF$UID 13 CF$UID 83 CF$UID 79 CF$UID 36 CF$UID 56 CF$UID 42 CF$UID 10 CF$UID 81 CF$UID 35 CF$UID 2 $class CF$UID 87 NS.objects CF$UID 101 CF$UID 102 CF$UID 103 CF$UID 104 CF$UID 105 CF$UID 106 CF$UID 107 CF$UID 108 CF$UID 109 CF$UID 110 CF$UID 111 CF$UID 112 CF$UID 113 CF$UID 114 CF$UID 115 6 31 30 8 16 9 25 20 5 29 12 7 24 18 1 $class CF$UID 16 NS.objects $class CF$UID 87 NS.objects $class CF$UID 87 NS.objects $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/000077500000000000000000000000001067163320700241465ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController.h000066400000000000000000000026721067163320700304710ustar00rootroot00000000000000/*************************************************************************** ConnectionController.h ------------------- begin : Tue May 20 19:04:51 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController/ConnectionController.h" #import "Controllers/ConnectionController/ConnectionControllerCtcp.h" #import "Controllers/ConnectionController/ConnectionControllerDelegate.h" #import "Controllers/ConnectionController/ConnectionControllerInFilter.h" #import "Controllers/ConnectionController/ConnectionControllerNumericCommands.h" #import "Controllers/ConnectionController/ConnectionControllerOutFilter.h" TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/000077500000000000000000000000001067163320700303115ustar00rootroot00000000000000ConnectionController.h000066400000000000000000000054301067163320700345500ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionController.h ------------------- begin : Sun Mar 30 21:53:38 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class ConnectionController; #ifndef CONNECTION_CONTROLLER_H #define CONNECTION_CONTROLLER_H @class NSString, KeyTextView, ContentController, NSArray; @class NSColor, Channel, NSMutableDictionary, GNUstepOutput, NSFont; @class NSDictionary, InputController, HelperExecutor; extern NSString *DNSLookupNotification; #import "Controllers/ContentControllers/ContentController.h" #import #import @interface ConnectionController : NSObject { NSString *typedHost; int typedPort; NSString *preNick; NSString *userName; NSString *password; NSString *realName; NSString *server; id connection; id content; NSArray *tabCompletion; int tabCompletionIndex; NSMutableDictionary *nameToChannelData; BOOL registered; HelperExecutor *helper; } - initWithIRCInfoDictionary: (NSDictionary *)aDict; - initWithIRCInfoDictionary: (NSDictionary *)aDict withContentController: (id )aContent; - connectToServer: (NSString *)aName onPort: (int)aPort; - (Channel *)dataForChannelWithName: (NSString *)aName; - setNick: (NSString *)aString; - (NSString *)nick; - setRealName: (NSString *)aString; - (NSString *)realName; - setUserName: (NSString *)aString; - (NSString *)userName; - setPassword: (NSString *)aString; - (NSString *)password; - (NSString *)serverString; - (id)connection; - (id )contentController; - (void)setContentController: (id )aController; - (NSArray *)channelsWithUser: (NSString *)user; - leaveChannel: (NSString *)channel; @end /* object: The view controller userinfo: @"Channel" Channel data @"Content": The content controller */ extern NSString *ConnectionControllerUpdatedTopicNotification; #endif ConnectionController.m000066400000000000000000000224741067163320700345640ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionController.m ------------------- begin : Sun Mar 30 21:53:38 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "Controllers/ContentControllers/StandardChannelController.h" #import "Controllers/ContentControllers/Tab/TabContentController.h" #import "Controllers/ContentControllers/Tab/TabMasterController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/TopicInspectorController.h" #import "Controllers/InputController.h" #import "Views/ScrollingTextView.h" #import "Models/Channel.h" #import "Misc/HelperExecutor.h" #import "Misc/LookedUpHost.h" #import "Misc/NSColorAdditions.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *ConnectionControllerUpdatedTopicNotification = @"ConnectionControllerUpdatedTopicNotification"; @interface ConnectionController (PrivateMethods) - (void)dnsLookup: (NSNotification *)aNotification; - (void)connectToHost: (NSHost *)aHost; @end NSString *DNSLookupNotification = @"DNSLookupNotification"; static NSString *dns_helper = @"dns_helper"; @implementation ConnectionController - init { return [self initWithIRCInfoDictionary: nil withContentController: nil]; } - initWithIRCInfoDictionary: (NSDictionary *)aDict { return [self initWithIRCInfoDictionary: aDict withContentController: nil]; } - initWithIRCInfoDictionary: (NSDictionary *)aDict withContentController: (id )aContent { NSString *aIdentifier; if (!(self = [super init])) return nil; if (!aDict) { aDict = [NSDictionary dictionaryWithObjectsAndKeys: [_PREFS_ preferenceForKey: IRCDefaultsNick], IRCDefaultsNick, [_PREFS_ preferenceForKey: IRCDefaultsRealName], IRCDefaultsRealName, [_PREFS_ preferenceForKey: IRCDefaultsUserName], IRCDefaultsUserName, [_PREFS_ preferenceForKey: IRCDefaultsPassword], IRCDefaultsPassword, nil]; } preNick = RETAIN([aDict objectForKey: IRCDefaultsNick]); userName = RETAIN([aDict objectForKey: IRCDefaultsUserName]); realName = RETAIN([aDict objectForKey: IRCDefaultsRealName]); password = RETAIN([aDict objectForKey: IRCDefaultsPassword]); if (!aContent) { // FIXME // This needs to use the correct content controller // which is probably stored in defaults. // Also needs to handle the possibility of putting // them into an existing master controller content = [TabContentController new]; } else { // Does this even make sense??? content = RETAIN(aContent); } [content setConnectionController: self]; [content addViewControllerOfType: ContentControllerQueryType withName: ContentConsoleName withLabel: AUTORELEASE([NSAttributedString new]) inMasterController: nil]; [content setNickname: preNick]; [content setLabel: S2AS(_l(@"Unconnected")) forName: ContentConsoleName]; [content setTitle: _l(@"Unconnected") forViewController: [content viewControllerForName: ContentConsoleName]]; nameToChannelData = [NSMutableDictionary new]; [_GS_ addConnectionController: self]; [content bringNameToFront: ContentConsoleName]; aIdentifier = [NSString stringWithFormat: @"%p%@%ld", self, self, rand()]; helper = [[HelperExecutor alloc] initWithHelperName: dns_helper identifier: aIdentifier]; [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] addObserver: self selector: @selector(dnsLookup:) name: DNSLookupNotification object: aIdentifier suspensionBehavior: NSNotificationSuspensionBehaviorDeliverImmediately]; return self; } - (void)dealloc { [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] removeObserver: self]; RELEASE(helper); RELEASE(typedHost); RELEASE(preNick); RELEASE(userName); RELEASE(password); RELEASE(realName); RELEASE(connection); RELEASE(content); RELEASE(tabCompletion); RELEASE(nameToChannelData); [super dealloc]; } - connectToServer: (NSString *)aName onPort: (int)aPort { registered = NO; [_GS_ notWaitingForConnectionOnConnectionController: self]; if (connection) { [[_TS_ pluginForInput] closeConnection: connection]; } [self systemMessage: BuildAttributedFormat(_l(@"Looking up %@"), aName) onConnection: nil]; ASSIGN(typedHost, aName); typedPort = aPort; [helper runWithArguments: [NSArray arrayWithObjects: DNSLookupNotification, typedHost, nil]]; return self; } - (Channel *)dataForChannelWithName: (NSString *)aName { return [nameToChannelData objectForKey: GNUstepOutputLowercase(aName, connection)]; } - setNick: (NSString *)aString { if (preNick != aString) { RELEASE(preNick); preNick = RETAIN(aString); } return self; } - (NSString *)nick { return preNick; } - setRealName: (NSString *)aString { if (realName != aString) { RELEASE(realName); realName = RETAIN(aString); } return self; } - (NSString *)realName { return realName; } - setUserName: (NSString *)aString { if (userName != aString) { RELEASE(userName); userName = RETAIN(aString); } return self; } - (NSString *)userName { return userName; } - setPassword: (NSString *)aString { if (aString != password) { RELEASE(password); password = RETAIN(aString); } return self; } - (NSString *)password { return password; } - (NSString *)serverString { return server; } - (id)connection { return connection; } - (id )contentController { return content; } - (void)setContentController: (id )aController { ASSIGN(content, aController); if (!content) { [helper cleanup]; AUTORELEASE(RETAIN(self)); [_GS_ removeConnectionController: self]; if (connection) { id msg = [_PREFS_ preferenceForKey: GNUstepOutputDefaultQuitMessage]; [_TS_ quitWithMessage: S2AS(msg) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; [[_TS_ pluginForInput] closeConnection: connection]; } } } - (NSArray *)channelsWithUser: (NSString *)user { NSEnumerator *iter; id object; NSMutableArray *a = AUTORELEASE([NSMutableArray new]); iter = [[nameToChannelData allValues] objectEnumerator]; while ((object = [iter nextObject])) { if ([object containsUser: user]) { [a addObject: [object identifier]]; } } return a; } - leaveChannel: (NSString *)channel { id view = [content viewControllerForName: channel]; [view detachChannelSource]; [nameToChannelData removeObjectForKey: channel]; [content setLabel: BuildAttributedString(@"(", channel, @")", nil) forName: channel]; return self; } @end @implementation ConnectionController (PrivateMethods) /* Called by dns_helper */ - (void)dnsLookup: (NSNotification *)aNotification { NSHost *realHost = nil; id userInfo = [aNotification userInfo]; id aHost = [userInfo objectForKey: @"Hostname"]; id aAddress = [userInfo objectForKey: @"Address"]; id aReverse = [userInfo objectForKey: @"Reverse"]; if (!aHost || ![aHost isEqualToString: typedHost]) return; aReverse = AUTORELEASE([aReverse copy]); if (!aReverse) aReverse = typedHost; if (aAddress && aReverse) realHost = [NSHost hostWithName: aReverse address: AUTORELEASE([aAddress copy])]; if (!realHost) { [self systemMessage: BuildAttributedFormat(_l(@"%@ not found"), typedHost) onConnection: nil]; return; } [self connectToHost: realHost]; } - (void)connectToHost: (NSHost *)aHost { NSString *ident = [NSString stringWithFormat: @"%p", self]; [_GS_ waitingForConnection: ident onConnectionController: self]; [[_TS_ pluginForInput] initiateConnectionToHost: aHost onPort: typedPort withTimeout: 30 withNickname: preNick withUserName: userName withRealName: realName withPassword: password withIdentification: ident]; [content setLabel: S2AS(_l(@"Connecting")) forName: ContentConsoleName]; [content setTitle: [NSString stringWithFormat: _l(@"Connecting to %@"), typedHost] forViewController: [content viewControllerForName: ContentConsoleName]]; } @end ConnectionControllerCtcp.h000066400000000000000000000023111067163320700353550ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerCtcp.h ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONNECTION_CONTROLLER_CTCP_H #define CONNECTION_CONTROLLER_CTCP_H #import "Controllers/ConnectionController/ConnectionController.h" @interface ConnectionController (CTCP) @end #endif ConnectionControllerCtcp.m000066400000000000000000000120441067163320700353660ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerCtcp.m ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import #import "Controllers/ContentControllers/ContentController.h" #import "GNUstepOutput.h" #import #import #import #import #import #include #include @implementation ConnectionController (CTCP) - CTCPReplyPING: (NSAttributedString *)argument from: (NSAttributedString *)aPerson { NSString *now; NSString *then; NSString *results; struct timeval tv = {0, 0}; int sec; int microsec; if (gettimeofday(&tv, NULL) == -1) { [content putMessage: S2AS(_l(@"gettimeofday() failed")) in: ContentConsoleName]; return nil; } now = [NSString stringWithFormat: @"%u.%u", (unsigned)tv.tv_sec, (unsigned)(tv.tv_usec / 1000)]; then = [argument string]; if ([then isEqualToString: now]) { sec = 0; microsec = 0; } else { id a1, a2; a1 = [now componentsSeparatedByString: @"."]; a2 = [then componentsSeparatedByString: @"."]; if ([a1 count] < 2 || [a2 count] < 2) return nil; now = [a1 objectAtIndex: 0]; then = [a2 objectAtIndex: 0]; results = [now commonPrefixWithString: then options: 0]; if ([results length] == [now length] && [results length] == [then length]) { sec = 0; } else { if ([now length] == [results length]) { now = @""; } else { now = [now substringFromIndex: [results length]]; } if ([then length] == [results length]) { then = @""; } else { then = [then substringFromIndex: [results length]]; } sec = [now intValue] - [then intValue]; } microsec = [[a1 objectAtIndex: 1] intValue] - [[a2 objectAtIndex: 1] intValue]; if (microsec < 0) { sec -= 1; microsec = 0 - microsec; } } [content putMessage: BuildAttributedFormat(_l(@"CTCP PING reply from %@: %@ seconds"), [IRCUserComponents(aPerson) objectAtIndex: 0], [NSString stringWithFormat: @"%u.%03u", sec, microsec]) in: nil]; return self; } - CTCPRequestPING: (NSAttributedString *)argument from: (NSAttributedString *)aPerson { [_TS_ sendCTCPReply: S2AS(@"PING") withArgument: argument to: [IRCUserComponents(aPerson) objectAtIndex: 0] onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; [content putMessage: BuildAttributedFormat(@"Received a CTCP PING from %@", [IRCUserComponents(aPerson) objectAtIndex: 0]) in: ContentConsoleName]; return self; } - CTCPRequestVERSION: (NSAttributedString *)query from: (NSAttributedString *)aPerson { [_TS_ sendCTCPReply: S2AS(@"VERSION") withArgument: BuildAttributedFormat(@"TalkSoup.app %@ - http://talksoup.aeruder.net", [[[NSBundle mainBundle] infoDictionary] objectForKey: @"ApplicationRelease"]) to: [IRCUserComponents(aPerson) objectAtIndex: 0] onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return nil; } - CTCPRequestCLIENTINFO: (NSAttributedString *)query from: (NSAttributedString *)aPerson { [_TS_ sendCTCPReply: S2AS(@"CLIENTINFO") withArgument: BuildAttributedString(_l(@"TalkSoup can be obtained from: "), @"http://talksoup.aeruder.net", nil) to: [IRCUserComponents(aPerson) objectAtIndex: 0] onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return ContentConsoleName; } - CTCPRequestXYZZY: (NSAttributedString *)query from: (NSAttributedString *)aPerson { [_TS_ sendCTCPReply: S2AS(@"XYZZY") withArgument: S2AS(@"Nothing happened.") to: [IRCUserComponents(aPerson) objectAtIndex: 0] onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return ContentConsoleName; } - CTCPRequestRFM: (NSAttributedString *)query from: (NSAttributedString *)aPerson { [_TS_ sendCTCPReply: S2AS(@"RFM") withArgument: S2AS(@"Problems? Blame RFM") to: [IRCUserComponents(aPerson) objectAtIndex: 0] onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return ContentConsoleName; } @end ConnectionControllerDelegate.h000066400000000000000000000023431067163320700362030ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerDelegate.h ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONNECTION_CONTROLLER_DELEGATE_H #define CONNECTION_CONTROLLER_DELEGATE_H #import "Controllers/ConnectionController/ConnectionController.h" @interface ConnectionController (ApplicationDelegate) @end #endif ConnectionControllerDelegate.m000066400000000000000000000045131067163320700362110ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerDelegate.m ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import #import "GNUstepOutput.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/ContentControllers/StandardChannelController.h" #import "Controllers/InputController.h" #import "Controllers/TopicInspectorController.h" #import "Models/Channel.h" #import "Views/KeyTextView.h" #import #import #import #import #import @implementation ConnectionController (ApplicationDelegate) // FIXME I don't understand why this is here. //- (void)selectNextTab: (id)sender //{ // id tabs = [content tabView]; // int total = [tabs numberOfTabViewItems]; // int current = [tabs indexOfTabViewItem: // [tabs selectedTabViewItem]]; // // current = (current + 1) % total; // // [tabs selectTabViewItemAtIndex: current]; //} //- (void)selectPreviousTab: (id)sender //{ // id tabs = [content tabView]; // int total = [tabs numberOfTabViewItems]; // int current = [tabs indexOfTabViewItem: // [tabs selectedTabViewItem]]; // // current--; // // if (current < 0) current = total - 1; // // [tabs selectTabViewItemAtIndex: current]; //} //- (void)closeCurrentTab: (id)sender //{ // [inputController lineTyped: @"/close"]; //} @end ConnectionControllerInFilter.h000066400000000000000000000136541067163320700362140ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerInFilter.h ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONNECTION_CONTROLLER_IN_FILTER_H #define CONNECTION_CONTROLLER_IN_FILTER_H #import "Controllers/ConnectionController/ConnectionController.h" @class NSAttributedString; @interface ConnectionController (InFilter) - newConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - lostConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - controlObject: (id)aObject onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - registeredWithServerOnConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - couldNotRegister: (NSAttributedString *)reason onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - errorReceived: (NSAttributedString *)anError onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - modeChanged: (NSAttributedString *)aMode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - pingReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - pongReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - newNickNeededWhileRegisteringOnConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - consoleMessage: (NSAttributedString *)arg onConnection: (id)connection; - systemMessage: (NSAttributedString *)arg onConnection: (id)connection; - showMessage: (NSAttributedString *)arg onConnection: (id)connection; @end #endif ConnectionControllerInFilter.m000066400000000000000000000502321067163320700362120ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerInFilter.m ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import #import "GNUstepOutput.h" #import "Models/Channel.h" #import "Controllers/ContentControllers/StandardChannelController.h" #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSColorAdditions.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #define MARK [NSNull null] @implementation ConnectionController (InFilter) - newConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { if (connection) { [[_TS_ pluginForInput] closeConnection: connection]; } connection = RETAIN(aConnection); return self; } - lostConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSEnumerator *iter; id object; iter = [[NSArray arrayWithArray: [nameToChannelData allKeys]] objectEnumerator]; while ((object = [iter nextObject])) { [self leaveChannel: object]; } [self systemMessage: S2AS(_l(@"Disconnected")) onConnection: aConnection]; [content setLabel: S2AS(_l(@"Unconnected")) forName: ContentConsoleName]; [content setTitle: _l(@"Unconnected") forViewController: [content viewControllerForName: ContentConsoleName]]; RELEASE(preNick); preNick = RETAIN([aConnection nick]); DESTROY(connection); return self; } - controlObject: (id)aObject onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id process; if (![aObject isKindOfClass: [NSDictionary class]]) return self; process = [aObject objectForKey: @"Process"]; if (!process) return self; if ([process isEqualToString: @"HighlightTab"]) { id col, name, prior; id curlabel, attribs; id selected, master, controller; name = [aObject objectForKey: @"TabName"]; col = [aObject objectForKey: @"TabColor"]; col = [NSColor colorFromEncodedData: col]; prior = [aObject objectForKey: @"TabPriority"]; master = [content masterControllerForName: name]; selected = [master selectedViewController]; controller = [content viewControllerForName: name]; curlabel = AUTORELEASE([[NSMutableAttributedString alloc] initWithAttributedString: [content labelForName: name]]); if (!name || !col || !curlabel || ![curlabel length] || !controller || (controller == selected)) return self; attribs = [curlabel attributesAtIndex: 0 effectiveRange: NULL]; if (![attribs objectForKey: @"TabPriority"] || prior) { /* This will fail gracefully if prior is nil */ [curlabel setAttributes: [NSDictionary dictionaryWithObjectsAndKeys: col, NSForegroundColorAttributeName, prior, @"TabPriority", nil] range: NSMakeRange(0, [curlabel length])]; [content setLabel: curlabel forName: name]; } } else if ([process isEqualToString: @"LabelTab"]) { id name, label; name = [aObject objectForKey: @"TabName"]; label = [aObject objectForKey: @"TabLabel"]; if (!name || !label) return self; [content setLabel: label forName: name]; } else if ([process isEqualToString: @"OpenTab"]) { id name, label; name = [aObject objectForKey: @"TabName"]; label = [aObject objectForKey: @"TabLabel"]; if (!name || !label) return self; if (![content viewControllerForName: name]) { [content addViewControllerOfType: ContentControllerQueryType withName: name withLabel: label inMasterController: nil]; } } return self; } - registeredWithServerOnConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [content setNickname: [aConnection nick]]; return self; } - couldNotRegister: (NSAttributedString *)reason onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSLog(@"Couldn't register: %@", [reason string]); return self; } - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { SEL sid = NSSelectorFromString([NSString stringWithFormat: @"CTCPRequest%@:from:", [[aCTCP string] uppercaseString]]); id str; id where; where = ContentConsoleName; if (sid && [self respondsToSelector: sid]) { where = [self performSelector: sid withObject: argument withObject: aPerson]; } if (where == self) return self; if ([argument length]) { str = BuildAttributedFormat(_l(@"Received a CTCP '%@ %@' from %@"), aCTCP, argument, [IRCUserComponents(aPerson) objectAtIndex: 0]); } else { str = BuildAttributedFormat(_l(@"Received a CTCP %@ from %@"), aCTCP, [IRCUserComponents(aPerson) objectAtIndex: 0]); } [content putMessage: str in: where]; return self; } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { SEL sid = NSSelectorFromString([NSString stringWithFormat: @"CTCPReply%@:from:", [[aCTCP string] uppercaseString]]); id str; id where = nil; if (sid && [self respondsToSelector: sid]) { where = [self performSelector: sid withObject: argument withObject: aPerson]; } if (where == self) return self; if ([argument length]) { str = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"-", [IRCUserComponents(aPerson) objectAtIndex: 0], MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"-", @" ", aCTCP, @" ", argument, nil); } else { str = BuildAttributedString(MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"-", [IRCUserComponents(aPerson) objectAtIndex: 0], MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"-", @" ", aCTCP, nil); } [content putMessage: str in: where]; return self; } - errorReceived: (NSAttributedString *)anError onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [self systemMessage: BuildAttributedFormat(_l(@"Error: %@"), anError) onConnection: nil]; return self; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [content putMessage: BuildAttributedFormat(_l(@"Wallops(%@): %@"), sender, message) in: ContentConsoleName]; return self; } - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name = [IRCUserComponents(kicker) objectAtIndex: 0]; id lowChan = GNUstepOutputLowercase([aChannel string], connection); id view = [content viewControllerForName: lowChan]; if (GNUstepOutputCompare([aPerson string], [connection nick], connection)) { [self leaveChannel: lowChan]; } else { [[nameToChannelData objectForKey: lowChan] removeUser: [aPerson string]]; [view refreshFromChannelSource]; } [content putMessage: BuildAttributedFormat(_l(@"%@ was kicked from %@ by %@ (%@)"), aPerson, aChannel, name, reason) in: [aChannel string]]; return self; } - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name = [IRCUserComponents(inviter) objectAtIndex: 0]; [content putMessage: BuildAttributedFormat(_l(@"You have been invited to %@ by %@"), aChannel, name) in: nil]; return self; } - modeChanged: (NSAttributedString *)aMode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { Channel *chan; unichar m; BOOL add = YES; int argindex = 0; id mode = [aMode string]; int modeindex; int modelen = [mode length]; int argcnt = [paramList count]; id who = [IRCUserComponents(aPerson) objectAtIndex: 0]; id params; NSEnumerator *iter; id object = nil; iter = [paramList objectEnumerator]; params = AUTORELEASE([NSMutableAttributedString new]); while ((object = [iter nextObject])) { [params appendAttributedString: S2AS(@" ")]; [params appendAttributedString: object]; } chan = [nameToChannelData objectForKey: GNUstepOutputLowercase([anObject string], connection)]; for (modeindex = 0; modeindex < modelen; modeindex++) { m = [mode characterAtIndex: modeindex]; switch (m) { case '+': add = YES; continue; case '-': add = NO; continue; default: break; } if (chan) { switch (m) { case 'o': if (argindex < argcnt) { id user; user = [chan userWithName: [[paramList objectAtIndex: argindex] string]]; [user setOperator: add]; [(id ) [content viewControllerForName: [anObject string]] refreshFromChannelSource]; argindex++; } break; case 'v': if (argindex < argcnt) { id user; user = [chan userWithName: [[paramList objectAtIndex: argindex] string]]; [user setVoice: add]; [(id ) [content viewControllerForName: [anObject string]] refreshFromChannelSource]; argindex++; } break; default: break; } } } [content putMessage: BuildAttributedFormat(_l(@"%@ sets mode %@ %@%@"), who, aMode, anObject, params) in: [anObject string]]; return self; } - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { SEL sel = NSSelectorFromString([NSString stringWithFormat: @"numericHandler%@:", [command string]]); NSMutableAttributedString *a = AUTORELEASE([[NSMutableAttributedString alloc] initWithString: @""]); NSEnumerator *iter; id object; id where; if ([connection connected] && !registered) { ASSIGN(server, [[IRCUserComponents(sender) objectAtIndex: 0] string]); [content setLabel: S2AS(server) forName: ContentConsoleName]; [content setTitle: server forViewController: [content viewControllerForName: ContentConsoleName]]; registered = YES; } iter = [paramList objectEnumerator]; while ((object = [iter nextObject])) { [a appendAttributedString: object]; [a appendAttributedString: S2AS(@" ")]; } where = ContentConsoleName; if (sel && [self respondsToSelector: sel]) { where = [self performSelector: sel withObject: paramList]; } if (where != self) { [content putMessage: a in: where]; } return self; } - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSEnumerator *iter; id object; id array; NSAttributedString *oldName = [IRCUserComponents(aPerson) objectAtIndex: 0]; if (GNUstepOutputCompare([newName string], [connection nick], connection)) { [self setNick: [newName string]]; [content setNickname: [newName string]]; } array = [self channelsWithUser: [oldName string]]; iter = [array objectEnumerator]; while ((object = [iter nextObject])) { [[nameToChannelData objectForKey: GNUstepOutputLowercase(object, connection)] userRenamed: [oldName string] to: [newName string]]; [(id ) [content viewControllerForName: object] refreshFromChannelSource]; } [content putMessage: BuildAttributedFormat( _l(@"%@ is now known as %@"), oldName, newName) in: array]; if ([content viewControllerForName: [oldName string]]) { [content renameViewControllerWithName: [oldName string] to: [newName string]]; [content setLabel: S2AS([newName string]) forName: [newName string]]; } return self; } - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name = [channel string]; id array = IRCUserComponents(joiner); id lowName = GNUstepOutputLowercase(name, connection); if (GNUstepOutputCompare([[array objectAtIndex: 0] string], [aConnection nick], connection)) { id x; [content addViewControllerOfType: ContentControllerChannelType withName: name withLabel: channel inMasterController: [content primaryMasterController]]; [nameToChannelData setObject: x = AUTORELEASE([[Channel alloc] initWithIdentifier: lowName withConnectionController: self]) forKey: lowName]; [(id ) [content viewControllerForName: lowName] attachChannelSource: x]; [content bringNameToFront: name]; } else { [[nameToChannelData objectForKey: lowName] addUser: [[array objectAtIndex: 0] string]]; [(id ) [content viewControllerForName: lowName] refreshFromChannelSource]; } [content putMessage: BuildAttributedFormat(_l(@"%@ (%@) has joined %@"), [array objectAtIndex: 0], [array objectAtIndex: 1], channel) in: name]; return self; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name = [IRCUserComponents(parter) objectAtIndex: 0]; id lowChan = GNUstepOutputLowercase([channel string], connection); id view = [content viewControllerForName: lowChan]; if (GNUstepOutputCompare([name string], [connection nick], connection)) { [self leaveChannel: lowChan]; } else { [[nameToChannelData objectForKey: lowChan] removeUser: [name string]]; [view refreshFromChannelSource]; } if (view) { [content putMessage: BuildAttributedFormat(_l(@"%@ has left %@ (%@)"), name, channel, aMessage) in: lowChan]; } return self; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id name = [IRCUserComponents(quitter) objectAtIndex: 0]; id array = [self channelsWithUser: [name string]]; NSEnumerator *iter; id object; iter = [array objectEnumerator]; while ((object = [iter nextObject])) { id low = GNUstepOutputLowercase(object, connection); [[nameToChannelData objectForKey: low] removeUser: [name string]]; [(id ) [content viewControllerForName: low] refreshFromChannelSource]; } [content putMessage: BuildAttributedFormat(_l(@"%@ has quit IRC (%@)"), name, aMessage) in: array]; return self; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [content putMessage: BuildAttributedFormat(_l(@"%@ changed the topic in %@ to '%@'"), [IRCUserComponents(aPerson) objectAtIndex: 0], channel, aTopic) in: [channel string]]; [_TS_ setTopicForChannel: channel to: nil onConnection: aConnection withNickname: S2AS([aConnection nick]) sender: _GS_]; return self; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id who = [IRCUserComponents(sender) objectAtIndex: 0]; id whos = [who string]; id where; id string; id privstring; id pubstring; privstring = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"*", MARK, TypeOfColor, GNUstepOutputOtherBracketColor, who, MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"*", @" ", aMessage, nil); pubstring = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"<", who, MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @">", @" ", aMessage, nil); string = pubstring; if (GNUstepOutputCompare([to string], [connection nick], connection)) { if (![content viewControllerForName: where = whos]) { where = nil; string = privstring; } } else { if (![content viewControllerForName: where = [to string]]) { where = nil; string = privstring; } } [content putMessage: string in: where]; return self; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [self messageReceived: aMessage to: to from: sender onConnection: aConnection withNickname: aNick sender: aPlugin]; return self; } - actionReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id who = [IRCUserComponents(sender) objectAtIndex: 0]; id whos = [who string]; id where; NSString *prefix = @"*"; if (GNUstepOutputCompare([to string], [connection nick], connection)) { if (![content viewControllerForName: where = whos]) { where = nil; prefix = @"***"; } } else { if (![content viewControllerForName: where = [to string]]) { where = nil; prefix = @"***"; } } [content putMessage: BuildAttributedString( MARK, TypeOfColor, GNUstepOutputOtherBracketColor, prefix, @" ", who, @" ", aMessage, nil) in: where]; return self; } - pingReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [_TS_ sendPongWithArgument: arg onConnection: aConnection withNickname: aNick sender: _GS_]; return self; } - pongReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return self; } - newNickNeededWhileRegisteringOnConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return self; } - consoleMessage: (NSAttributedString *)arg onConnection: (id)connection { [content putMessage: arg in: ContentConsoleName]; return self; } - systemMessage: (NSAttributedString *)arg onConnection: (id)connection { [content putMessageInAll: arg]; return self; } - showMessage: (NSAttributedString *)arg onConnection: (id)connection { [content putMessage: arg in: nil]; return self; } @end #undef FCAN #undef MARK ConnectionControllerNumericCommands.h000066400000000000000000000023661067163320700375620ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerNumericCommands.h ------------------- begin : Tue May 20 19:00:06 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONNECTION_CONTROLLER_NUMERIC_COMMANDS_H #define CONNECTION_CONTROLLER_NUMERIC_COMMANDS_H #import "Controllers/ConnectionController/ConnectionController.h" @interface ConnectionController (NumericCommands) @end #endif ConnectionControllerNumericCommands.m000066400000000000000000000114461067163320700375660ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerNumericCommands.m ------------------- begin : Tue May 20 19:00:06 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/ContentControllers/StandardChannelController.h" #import "Models/Channel.h" #import #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import @implementation ConnectionController (NumericCommands) // RPL_TOPIC - numericHandler332: (NSArray *)arguments { id channel = [arguments objectAtIndex: 0]; id topic = [arguments objectAtIndex: 1]; id lowername = GNUstepOutputLowercase([channel string], connection); id data = [nameToChannelData objectForKey: lowername]; id view = [content viewControllerForName: lowername]; [content putMessage: BuildAttributedFormat(_l(@"Topic for %@ is \"%@\""), channel, topic) in: channel]; [data setTopic: [topic string]]; [data setTopicAuthor: @""]; [data setTopicDate: @""]; [[NSNotificationCenter defaultCenter] postNotificationName: ConnectionControllerUpdatedTopicNotification object: view userInfo: [NSDictionary dictionaryWithObjectsAndKeys: content, @"Content", data, @"Channel", nil]]; return self; } // RPL_TOPIC (extension???) - numericHandler333: (NSArray *)arguments { id channel = [arguments objectAtIndex: 0]; id who = [arguments objectAtIndex: 1]; NSDictionary *attrib; id date = [arguments objectAtIndex: 2]; id lowername = GNUstepOutputLowercase([channel string], connection); id data; id view; data = [nameToChannelData objectForKey: lowername]; view = [content viewControllerForName: lowername]; attrib = [date attributesAtIndex: 0 effectiveRange: 0]; date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S" timeZone: nil locale: nil]; date = AUTORELEASE([[NSAttributedString alloc] initWithString: date attributes: attrib]); [content putMessage: BuildAttributedFormat(_l(@"Topic for %@ set by %@ at %@"), channel, who, date) in: channel]; [data setTopicAuthor: [who string]]; [data setTopicDate: [date string]]; [[NSNotificationCenter defaultCenter] postNotificationName: ConnectionControllerUpdatedTopicNotification object: view userInfo: [NSDictionary dictionaryWithObjectsAndKeys: content, @"Content", data, @"Channel", nil]]; return self; } // RPL_NAMREPLY - numericHandler353: (NSArray *)arguments { id channel = [nameToChannelData objectForKey: GNUstepOutputLowercase([[arguments objectAtIndex: 1] string], connection)]; if (!channel) { return ContentConsoleName; } [channel addServerUserList: [[arguments objectAtIndex: 2] string]]; return self; } // RPL_ENDOFNAMES - numericHandler366: (NSArray *)arguments { id name = GNUstepOutputLowercase([[arguments objectAtIndex: 0] string], connection); id cont = [content viewControllerForName: name]; id channel = [nameToChannelData objectForKey: name]; if (!channel) { return ContentConsoleName; } [channel endServerUserList]; [cont refreshFromChannelSource]; return self; } - numericHandler301: (NSArray *)arguments { return nil; } - numericHandler305: (NSArray *)arguments { return nil; } - numericHandler306: (NSArray *)arguments { return nil; } - numericHandler401: (NSArray *)arguments { return nil; } - numericHandler403: (NSArray *)arguments { return nil; } - numericHandler404: (NSArray *)arguments { return nil; } - numericHandler442: (NSArray *)argments { return nil; } - numericHandler432: (NSArray *)arguments { return nil; } - numericHandler433: (NSArray *)arguments { return nil; } @end ConnectionControllerOutFilter.h000066400000000000000000000033641067163320700364120ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerOutFilter.h ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONNECTION_CONTROLLER_OUT_FILTER_H #define CONNECTION_CONTROLLER_OUT_FILTER_H #import "Controllers/ConnectionController/ConnectionController.h" @interface ConnectionController (OutFilter) - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end #endif ConnectionControllerOutFilter.m000066400000000000000000000063051067163320700364150ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ConnectionController/*************************************************************************** ConnectionControllerOutFilter.m ------------------- begin : Tue May 20 18:38:20 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import #import "Misc/NSAttributedStringAdditions.h" #import "GNUstepOutput.h" #import #import #define MARK [NSNull null] @implementation ConnectionController (OutFilter) - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id where = [receiver string]; if (![content viewControllerForName: where]) { [content putMessage: BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @">", receiver, MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"<", @" ", message, nil) in: nil]; } else { [content putMessage: BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"<", aNick, MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @">", @" ", message, nil) in: where]; } return self; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { [self sendMessage: message to: receiver onConnection: aConnection withNickname: aNick sender: aPlugin]; return self; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id where = [receiver string]; if (![content viewControllerForName: where]) { [content putMessage: BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @">", receiver, MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"<", MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @" * ", aNick, @" ", anAction, nil) in: nil]; } else { [content putMessage: BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"* ", aNick, @" ", anAction, nil) in: where]; } return self; } @end #undef MARK #undef FCAN TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/000077500000000000000000000000001067163320700300075ustar00rootroot00000000000000ContentController.h000066400000000000000000000201761067163320700335650ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** ContentController.h ------------------- begin : Mon Jan 19 12:09:57 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef CONTENT_CONTROLLER_H #define CONTENT_CONTROLLER_H #import @protocol MasterController; @protocol ContentController; @protocol ContentControllerDelegate; @class ConnectionController, NSView, NSString, NSAttributedString; @class NSArray, NSTextView, NSTextField, NSWindow, Channel, NSText; @class KeyTextView; extern NSString *ContentControllerChannelType; extern NSString *ContentControllerQueryType; extern NSString *ContentConsoleName; @protocol ContentControllerQueryController < NSObject > + (NSString *)standardNib; - (NSTextView *)chatView; - (NSView *)contentView; - (void)appendAttributedString: (NSAttributedString *)aString; @end @protocol ContentControllerChannelController < ContentControllerQueryController, NSObject > - (Channel *)channelSource; - (void)attachChannelSource: (Channel *)aChannel; - (void)detachChannelSource; - (void)refreshFromChannelSource; @end @protocol MasterController - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel forContentController: (id )aContentController; - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel atIndex: (unsigned)aIndex forContentController: (id )aContentController; - (void)selectViewController: (id )aController; - (void)selectViewControllerAtIndex: (unsigned)aIndex; - (id )selectedViewController; - (void)removeViewController: (id )aController; - (void)removeViewControllerAtIndex: (unsigned)aIndex; - (void)moveViewController: (id )aController toIndex: (unsigned)aIndex; - (void)moveViewControllerAtIndex: (unsigned)aIndex toIndex: (unsigned)aNewIndex; - (unsigned)indexForViewController: (id )aController; - (unsigned)count; - (NSAttributedString *)labelForViewController: (id )aController; - (void)setLabel: (NSAttributedString *)aLabel forViewController: (id )aController; - (NSArray *)containedContentControllers; - (NSArray *)viewControllerListForContentController: (id )aContentController; - (NSArray *)allViewControllers; - (KeyTextView *)typeView; - (NSTextField *)nickView; - (void)bringToFront; - (NSWindow *)window; @end @protocol TypingController - (void)loseTextField: (KeyTextView *)aField forMasterController: (id )aMaster; - (void)handleTextField: (KeyTextView *)aField forMasterController: (id )aMaster; - (void)commandTyped: (NSString *)aCommand; - (void)processSingleCommand: (NSString *)aCommand; @end @protocol ContentController - (id )typingControllerForViewController: (id )aController; // Not retained - (void)setConnectionController: (ConnectionController *)aController; - (ConnectionController *)connectionController; - (NSArray *)masterControllers; - (id )primaryMasterController; - (void)setPrimaryMasterController: (id )aController; - (NSString *)nameForViewController: (id )aController; - (id )masterControllerForName: (NSString *)aName; - (NSTextView *)chatViewForName: (NSString *)aName; - (id )viewControllerForName: (NSString *)aName; - (NSString *)typeForName: (NSString *)aName; - (NSArray *)allChatViews; - (NSArray *)allControllers; - (NSArray *)allNames; - (NSArray *)allChatViewsOfType: (NSString *)aType; - (NSArray *)allViewControllersOfType: (NSString *)aType; - (NSArray *)allNamesOfType: (NSString *)aType; - (void)putMessage: aMessage in: (id)aName; - (void)putMessage: aMessage in: (id)aName withEndLine: (BOOL)hasEnd; - (void)putMessageInAll: aMessage; - (void)putMessageInAll: aMessage withEndLine: (BOOL)hasEnd; - (void)putMessageInAll: aMessage ofType: (NSString *)aType; - (void)putMessageInAll: aMessage ofType: (NSString *)aType withEndLine: (BOOL)hasEnd; - (id )addViewControllerOfType: (NSString *)aType withName: (NSString *)aName withLabel: (NSAttributedString *)aLabel inMasterController: (id )aMaster; - (void)removeViewControllerWithName: (NSString *)aName; - (void)renameViewControllerWithName: (NSString *)aName to: (NSString *)newName; - (NSString *)presentationalNameForName: (NSString *)aName; - (void)setPresentationName: (NSString *)aPresentationName forName: (NSString *)aName; - (NSAttributedString *)labelForName: (NSString *)aName; - (void)setLabel: (NSAttributedString *)aLabel forName: (NSString *)aName; - (NSString *)nickname; - (void)setNickname: (NSString *)aNickname; - (NSString *)titleForViewController: (id )aController; - (void)setTitle: (NSString *)aTitle forViewController: (id )aController; - (void)bringNameToFront: (NSString *)aName; @end /* object: The view controller. userinfo: @"Channel" The Channel object. @"User" The ChannelUser object. @"View" The view controller. */ extern NSString *ChannelControllerUserOpenedNotification; /* object: The content controller. userinfo: @"OldIndex" Old index @"Index" The new index @"Master" The master controller @"View" The view controller. @"Content" The content controller */ extern NSString *ContentControllerMovedInMasterControllerNotification; /* object: The content controller userinfo: @"Master": The master controller. @"View": The view controller. @"Index": The index @"Content": The content controller */ extern NSString *ContentControllerAddedToMasterControllerNotification; /* object: The content controller userinfo: @"Master": The master controller. @"View": The view controller. @"Content": The content controller. */ extern NSString *ContentControllerRemovedFromMasterControllerNotification; /* object: The content controller userinfo: @"OldNickname": Old nickname @"Nickname": New nickname @"Content": The content controller */ extern NSString *ContentControllerChangedNicknameNotification; /* object: The view controller userinfo: @"Title": New title @"View": The view controller @"Content": The content controller */ extern NSString *ContentControllerChangedTitleNotification; /* object: The content controller userinfo: @"View": The view controller @"Content": The content controller @"Master": The master controller */ extern NSString *ContentControllerSelectedNameNotification; /* object: The content controller userinfo: @"OldLabel": The old label @"Label": The new label @"View": The view controller @"Content": The content controller @"Master": The master controller */ extern NSString *ContentControllerChangedLabelNotification; #endif ContentController.m000066400000000000000000000042221067163320700335640ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** ContentController.m ------------------- begin : Mon Jan 19 12:09:57 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ContentControllers/ContentController.h" #import NSString *ContentControllerChannelType = @"ContentControllerChannelType"; NSString *ContentControllerQueryType = @"ContentControllerQueryType"; NSString *ContentConsoleName = @"ContentConsoleName"; NSString *ChannelControllerUserOpenedNotification = @"ChannelControllerUserOpenedNotification"; NSString *ContentControllerMovedInMasterControllerNotification = @"ContentControllerMovedInMasterControllerNotification"; NSString *ContentControllerAddedToMasterControllerNotification = @"ContentControllerAddedToMasterControllerNotification"; NSString *ContentControllerRemovedFromMasterControllerNotification = @"ContentControllerRemovedFromMasterControllerNotification"; NSString *ContentControllerChangedNicknameNotification = @"ContentControllerChangedNicknameNotification"; NSString *ContentControllerChangedTitleNotification = @"ContentControllerChangedTitleNotification"; NSString *ContentControllerSelectedNameNotification = @"ContentControllerSelectedNameNotification"; NSString *ContentControllerChangedLabelNotification = @"ContentControllerChangedLabelNotification"; StandardChannelController.h000066400000000000000000000032011067163320700351720ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardChannelController.h ------------------- begin : Sat Jan 18 01:38:06 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class StandardChannelController; #ifndef CHANNEL_CONTROLLER_H #define CHANNEL_CONTROLLER_H @class NSTableView, ScrollingTextView, NSSplitView, NSView; @class Channel; #import #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/ContentControllers/StandardQueryController.h" @interface StandardChannelController : StandardQueryController < ContentControllerChannelController > { NSTableView *tableView; NSSplitView *splitView; Channel *channelSource; } - (Channel *)channelSource; - (void)attachChannelSource: (Channel *)aChannel; - (void)detachChannelSource; @end #endif StandardChannelController.m000066400000000000000000000173001067163320700352040ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardChannelController.m ------------------- begin : Sat Jan 18 01:38:06 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "Controllers/ContentControllers/StandardChannelController.h" #import "Views/ScrollingTextView.h" #import "Misc/NSColorAdditions.h" #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSViewAdditions.h" #import "Models/Channel.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import @interface StandardChannelController (PreferencesCenter) - (void)colorChanged: (NSNotification *)aNotification; - (void)userListFontChanged: (NSNotification *)aNotification; @end @interface StandardChannelController (DelegateMethods) - (void)splitView: (NSSplitView *)sender resizeSubviewsWithOldSize: (NSSize)oldSize; - (void)doubleClickedTableView: (NSTableView *)sender; @end @implementation StandardChannelController + (NSString *)standardNib { return @"StandardChannel"; } - init { if (!(self = [super init])) return self; if ([self isMemberOfClass: [StandardChannelController class]] && !([NSBundle loadNibNamed: [StandardChannelController standardNib] owner: self])) { NSLog(@"Failed to load StandardChannelController UI"); [self dealloc]; return nil; } return self; } - (void)awakeFromNib { [super awakeFromNib]; id x; id userColumn; id userScroll; id font; NSRect frame; userColumn = AUTORELEASE([[NSTableColumn alloc] initWithIdentifier: @"User List"]); [userColumn setEditable: NO]; frame = [tableView frame]; AUTORELEASE(RETAIN(tableView)); [tableView removeFromSuperview]; userScroll = AUTORELEASE([[NSScrollView alloc] initWithFrame: frame]); tableView = AUTORELEASE([[NSTableView alloc] initWithFrame: NSMakeRect(0, 0, frame.size.width, frame.size.height)]); [tableView setCornerView: nil]; [tableView setHeaderView: nil]; [tableView setTarget: self]; [tableView setDoubleAction: @selector(doubleClickedTableView:)]; [tableView addTableColumn: userColumn]; [tableView setDrawsGrid: NO]; [userScroll setDocumentView: tableView]; [userScroll setHasHorizontalScroller: NO]; [userScroll setHasVerticalScroller: YES]; [userScroll setBorderType: NSBezelBorder]; x = AUTORELEASE([[NSCell alloc] initTextCell: @""]); [x setFormatter: AUTORELEASE([ChannelFormatter new])]; font = [FontPreferencesController getFontFromPreferences: GNUstepOutputUserListFont]; [x setFont: font]; [tableView setRowHeight: [font pointSize] * 1.5]; [userColumn setDataCell: x]; [splitView addSubview: userScroll]; [splitView setDelegate: self]; [splitView setVertical: YES]; frame = [userScroll frame]; frame.size.width = 120; [userScroll setFrame: frame]; [self splitView: splitView resizeSubviewsWithOldSize: [splitView frame].size]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(userListFontChanged:) name: DefaultsChangedNotification object: GNUstepOutputUserListFont]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; [tableView setTarget: nil]; [splitView setDelegate: nil]; [tableView setDoubleAction: NULL]; DESTROY(channelSource); [super dealloc]; } - (Channel *)channelSource { return channelSource; } - (void)attachChannelSource: (Channel *)aChannel { [tableView setDataSource: nil]; ASSIGN(channelSource, aChannel); [tableView setDataSource: channelSource]; } - (void)detachChannelSource { [tableView setDataSource: nil]; DESTROY(channelSource); } - (void)refreshFromChannelSource { [tableView reloadData]; } @end @implementation StandardChannelController (PreferencesCenter) - (void)colorChanged: (NSNotification *)aNotification { id object; object = [aNotification object]; if ([object isEqualToString: GNUstepOutputBackgroundColor]) { [chatView setBackgroundColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: object]]]; } [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: object]; } - (void)userListFontChanged: (NSNotification *)aNotification { NSTableColumn *column; NSFont *aFont; NSCell *aCell; aFont = [FontPreferencesController getFontFromPreferences: GNUstepOutputUserListFont]; column = [[tableView tableColumns] objectAtIndex: 0]; aCell = [column dataCell]; if (aFont) { [aCell setFont: aFont]; } [tableView setRowHeight: [aFont pointSize] * 1.5]; [tableView setNeedsDisplay: YES]; [tableView reloadData]; } @end @implementation StandardChannelController (DelegateMethods) - (void)splitView: (NSSplitView *)sender resizeSubviewsWithOldSize: (NSSize)oldSize { id tableScroll = [tableView enclosingScrollView]; id chatScroll = [chatView enclosingScrollView]; NSRect frame1; // talkScroll NSRect frame2 = [tableScroll frame]; NSRect frame3 = [splitView frame]; if ((frame3.size.width - [sender dividerThickness]) > frame2.size.width) { // Width of this view is constant(assuming it fits) frame2.origin.x = frame3.size.width - frame2.size.width; frame2.origin.y = 0; frame2.size.height = frame3.size.height; frame1.origin.x = 0; frame1.origin.y = 0; frame1.size.width = frame2.origin.x - [sender dividerThickness]; frame1.size.height = frame3.size.height; } else { frame1.origin.x = 0; frame1.origin.y = 0; frame1.size.width = 0; frame1.size.height = frame3.size.height; frame2.origin.x = 0; frame2.origin.y = 0; frame2.size.width = frame3.size.width; frame2.size.height = frame3.size.height; } [tableScroll setFrame: frame2]; [chatScroll setFrame: frame1]; } - (void)doubleClickedTableView: (NSTableView *)sender { NSArray *userList; ChannelUser *chanUser; userList = [channelSource userList]; if ([sender clickedRow] >= [userList count]) return; chanUser = [userList objectAtIndex: [sender clickedRow]]; [[NSNotificationCenter defaultCenter] postNotificationName: ChannelControllerUserOpenedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: channelSource, @"Channel", chanUser, @"User", self, @"View", nil]]; } @end StandardContentController.h000066400000000000000000000103451067163320700352430ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardContentController.h ------------------- begin : Tue Jan 20 22:08:40 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class StandardContentController; #ifndef STANDARD_CONTENT_CONTROLLER_H #define STANDARD_CONTENT_CONTROLLER_H #import "Controllers/ContentControllers/ContentController.h" #import #import @class NSMutableArray, NSMutableDictionary, NSArray, NSString, NSAttributedString; @class NSText, ConnectionController; @interface StandardContentController : NSObject < ContentController > { NSMutableArray *masterControllers; NSMutableDictionary *nameToChannel; NSMutableDictionary *nameToQuery; NSMutableDictionary *nameToBoth; NSMutableDictionary *nameToPresentation; NSMutableDictionary *nameToLabel; NSMutableDictionary *nameToMasterController; NSMutableDictionary *nameToTyping; NSMutableDictionary *nameToTitle; NSMapTable *bothToName; NSString *nickname; Class channelClass; Class queryClass; ConnectionController *connectionController; id lastSelected; } + (Class)masterClass; + (Class)queryClass; + (Class)channelClass; - initWithMasterController: (id ) aMaster; - (id )typingControllerForViewController: (id )aController; - (NSArray *)masterControllers; - (id )primaryMasterController; - (void)setPrimaryMasterController: (id )aController; - (NSString *)nameForViewController: (id )aController; - (id )masterControllerForName: (NSString *)aName; - (NSTextView *)chatViewForName: (NSString *)aName; - (id )viewControllerForName: (NSString *)aName; - (NSString *)typeForName: (NSString *)aName; - (NSArray *)allChatViews; - (NSArray *)allControllers; - (NSArray *)allNames; - (NSArray *)allChatViewsOfType: (NSString *)aType; - (NSArray *)allViewControllersOfType: (NSString *)aType; - (NSArray *)allNamesOfType: (NSString *)aType; - (void)putMessage: aMessage in: (id)aName; - (void)putMessage: aMessage in: (id)aName withEndLine: (BOOL)hasEnd; - (void)putMessageInAll: aMessage; - (void)putMessageInAll: aMessage withEndLine: (BOOL)hasEnd; - (void)putMessageInAll: aMessage ofType: (NSString *)aType; - (void)putMessageInAll: aMessage ofType: (NSString *)aType withEndLine: (BOOL)hasEnd; - (id )addViewControllerOfType: (NSString *)aType withName: (NSString *)aName withLabel: (NSAttributedString *)aLabel inMasterController: (id )aMaster; - (void)removeViewControllerWithName: (NSString *)aName; - (void)renameViewControllerWithName: (NSString *)aName to: (NSString *)newName; - (NSString *)presentationalNameForName: (NSString *)aName; - (void)setPresentationName: (NSString *)aPresentationName forName: (NSString *)aName; - (NSAttributedString *)labelForName: (NSString *)aName; - (void)setLabel: (NSAttributedString *)aLabel forName: (NSString *)aName; - (NSString *)nickname; - (void)setNickname: (NSString *)aNickname; - (NSString *)titleForViewController: (id )aController; - (void)setTitle: (NSString *)aTitle forViewController: (id )aController; - (void)bringNameToFront: (NSString *)aName; @end #endif StandardContentController.m000066400000000000000000000524731067163320700352600ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardContentController.m ------------------- begin : Tue Jan 20 22:08:40 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ContentControllers/StandardChannelController.h" #import "Controllers/ContentControllers/StandardContentController.h" #import "Controllers/ContentControllers/StandardQueryController.h" #import "Controllers/InputController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/ConnectionController.h" #import "GNUstepOutput.h" #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSColorAdditions.h" #import #import #import #import #import #import #import #import #import #import #import #import #import @interface StandardContentController (PrivateMethods) - (NSColor *)colorForKey: (NSString *)aKey; - (void)viewSelected: (NSNotification *)aNotification; - (void)userOpened: (NSNotification *)aNotification; - (void)windowWillClose: (NSNotification *)aNotification; @end @implementation StandardContentController + (Class)masterClass { return Nil; } + (Class)queryClass { return [StandardQueryController class]; } + (Class)channelClass { return [StandardChannelController class]; } - initWithMasterController: (id ) aMaster { if (!(self = [super init])) return nil; masterControllers = [NSMutableArray new]; nameToChannel = [NSMutableDictionary new]; nameToQuery = [NSMutableDictionary new]; nameToBoth = [NSMutableDictionary new]; nameToPresentation = [NSMutableDictionary new]; nameToLabel = [NSMutableDictionary new]; nameToMasterController = [NSMutableDictionary new]; nameToTyping = [NSMutableDictionary new]; nameToTitle = [NSMutableDictionary new]; bothToName = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 10); if (!aMaster) aMaster = AUTORELEASE([[[self class] masterClass] new]); if (!aMaster) { [self dealloc]; return nil; } [masterControllers addObject: aMaster]; channelClass = [[self class] channelClass]; queryClass = [[self class] queryClass]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(viewSelected:) name: ContentControllerSelectedNameNotification object: self]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(userOpened:) name: ChannelControllerUserOpenedNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(windowWillClose:) name: NSWindowWillCloseNotification object: nil]; return self; } /* Initializes the content controller in a new master * controller */ - init { return [self initWithMasterController: nil]; } /* Returns the corresponding input manager for a view. */ - (id )typingControllerForViewController: (id )aController { id name; if (!aController) return nil; name = NSMapGet(bothToName, aController); if (!name) return nil; return [nameToTyping objectForKey: name]; } /* Sets the connectioncontroller for this content controller. * Does not retain. */ - (void)setConnectionController: (ConnectionController *)aController { NSEnumerator *iter; id object; connectionController = aController; iter = [nameToTyping objectEnumerator]; while ((object = [iter nextObject])) { [object setConnectionController: aController]; } } /* Returns ConnectionController for this content controller. */ - (ConnectionController *)connectionController { return connectionController; } /* Dealllocate this instance while ensuring that it is removed * from the notification pool. */ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(masterControllers); RELEASE(nameToChannel); RELEASE(nameToQuery); RELEASE(nameToBoth); RELEASE(nameToPresentation); RELEASE(nameToLabel); RELEASE(nameToMasterController); RELEASE(nameToTyping); RELEASE(nameToTitle); NSFreeMapTable(bothToName); RELEASE(nickname); connectionController = nil; lastSelected = nil; [super dealloc]; } /* Returns an array of all master controllers that are used by any of the channels or * queries within this controller */ - (NSArray *)masterControllers { return masterControllers; } /* Returns the default master controller that queries and channels will be added to. * Defaults to the master controller holding the console view. */ - (id )primaryMasterController { return [masterControllers objectAtIndex: 0]; } /* Sets another primary master controller, aController */ - (void)setPrimaryMasterController: (id )aController { [masterControllers removeObject: aController]; [masterControllers insertObject: aController atIndex: 0]; } /* Returns the name of the view specified by aController */ - (NSString *)nameForViewController: (id )aController { return NSMapGet(bothToName, aController); } /* Returns the master controller used by the view with the name * aName */ - (id )masterControllerForName: (NSString *)aName { return [nameToMasterController objectForKey: GNUstepOutputLowercase(aName, connectionController)]; } /* Returns the chat view for the name aName */ - (NSTextView *)chatViewForName: (NSString *)aName { return [[nameToBoth objectForKey: GNUstepOutputLowercase(aName, connectionController)] chatView]; } /* Returns the controller for the name aName * This will conform to [(ContentControllerQueryView)] in the case of * a query or [(ContentControllerQueryView)] and [(ContentControllerChannelName)] * in the case of a channel. */ - (id )viewControllerForName: (NSString *)aName; { return [nameToBoth objectForKey: GNUstepOutputLowercase(aName, connectionController)]; } /* Returns the type of view for the name aName. The types is either * ContentControllerChannelType or ContentControllerQueryType. */ - (NSString *)typeForName: (NSString *)aName { id object = [nameToBoth objectForKey: GNUstepOutputLowercase(aName, connectionController)]; if (!object) return nil; if ([object conformsToProtocol: @protocol(ContentControllerChannelController)]) { return ContentControllerChannelType; } if ([object conformsToProtocol: @protocol(ContentControllerQueryController)]) { return ContentControllerQueryType; } return nil; } /* Returns an array of all chat views of all queries and all channels */ - (NSArray *)allChatViews { NSMutableArray *anArray = [NSMutableArray new]; NSEnumerator *iter; id obj; iter = [[nameToBoth allValues] objectEnumerator]; while ((obj = [iter nextObject])) { if ((obj = [obj chatView])) { [anArray addObject: obj]; } } return AUTORELEASE(anArray); } /* Returns an array of all controllers. */ - (NSArray *)allControllers { return [nameToBoth allValues]; } /* Returns an array of all names. */ - (NSArray *)allNames { return [nameToBoth allKeys]; } /* Will return all chat views of the type aType which can either * be ContentControllerChannelType or ContentControllerQueryType */ - (NSArray *)allChatViewsOfType: (NSString *)aType { NSMutableArray *anArray = [NSMutableArray new]; NSArray *targetArray; NSEnumerator *iter; id obj; if ([aType isEqualToString: ContentControllerChannelType]) { targetArray = [nameToChannel allValues]; } else if ([aType isEqualToString: ContentControllerQueryType]) { targetArray = [nameToQuery allValues]; } else { return AUTORELEASE(anArray); } iter = [targetArray objectEnumerator]; while ((obj = [iter nextObject])) { if ((obj = [obj chatView])) { [anArray addObject: obj]; } } return AUTORELEASE(anArray); } /* Returns an array of all controllers of a certain type aType which can either * be ContentControllerChannelType or ContentControllerQueryType */ - (NSArray *)allViewControllersOfType: (NSString *)aType { if ([aType isEqualToString: ContentControllerChannelType]) { return [nameToChannel allValues]; } else if ([aType isEqualToString: ContentControllerQueryType]) { return [nameToQuery allValues]; } return AUTORELEASE([NSArray new]); } /* Returns array of all the names of a certain type aType which can * be either ContentControllerChannelType or ContentControllerQueryType */ - (NSArray *)allNamesOfType: (NSString *)aType { if ([aType isEqualToString: ContentControllerChannelType]) { return [nameToChannel allKeys]; } else if ([aType isEqualToString: ContentControllerQueryType]) { return [nameToQuery allKeys]; } return AUTORELEASE([NSArray new]); } /* Calls putMessage:in:withEndLine: as [self putMessage: aMessage: in: aName * withEndLine: YES]; */ - (void)putMessage: aMessage in: (id)aName { [self putMessage: aMessage in: aName withEndLine: YES]; } /* Puts the message aMessage in aName with an optional * endline character appended to the end (specified by hasEnd). * aName can be a view conforming to , * a NSString with the channel name, a NSAttributedString of the channel name, * or an NSArray of any of the above. If it is nil, it'll put it in the * currently visible channel. */ - (void)putMessage: aMessage in: (id)aName withEndLine: (BOOL)hasEnd { id controller = nil; if (!aMessage) return; if ([aName conformsToProtocol: @protocol(ContentControllerQueryController)]) { controller = aName; } else if ([aName isKindOfClass: [NSString class]]) { controller = [nameToBoth objectForKey: GNUstepOutputLowercase(aName, connectionController)]; } else if ([aName isKindOfClass: [NSAttributedString class]]) { controller = [nameToBoth objectForKey: GNUstepOutputLowercase([aName string], connectionController)]; } else if ([aName isKindOfClass: [NSArray class]]) { NSEnumerator *iter; id object; iter = [aName objectEnumerator]; while ((object = [iter nextObject])) { [self putMessage: aMessage in: object withEndLine: hasEnd]; } return; } if (controller == nil) { controller = lastSelected; } if (![aMessage isKindOfClass: [NSAttributedString class]]) { aMessage = [aMessage description]; } [controller appendAttributedString: aMessage]; if (hasEnd) { [controller appendAttributedString: S2AS(@"\n")]; } } - (void)putMessageInAll: aMessage { [self putMessageInAll: aMessage withEndLine: YES]; } - (void)putMessageInAll: aMessage withEndLine: (BOOL)hasEnd { NSEnumerator *iter; id obj; iter = [[nameToBoth allKeys] objectEnumerator]; while ((obj = [iter nextObject])) { [self putMessage: aMessage in: obj withEndLine: hasEnd]; } } - (void)putMessageInAll: aMessage ofType: (NSString *)aType { [self putMessageInAll: aMessage ofType: aType withEndLine: YES]; } - (void)putMessageInAll: aMessage ofType: (NSString *)aType withEndLine: (BOOL)hasEnd { NSArray *targetArray; NSEnumerator *iter; id obj; if ([aType isEqualToString: ContentControllerChannelType]) { targetArray = [nameToChannel allKeys]; } else if ([aType isEqualToString: ContentControllerQueryType]) { targetArray = [nameToQuery allKeys]; } else { return; } iter = [targetArray objectEnumerator]; while ((obj = [iter nextObject])) { [self putMessage: aMessage in: obj withEndLine: hasEnd]; } } - (id )addViewControllerOfType: (NSString *)aType withName: (NSString *)aName withLabel: (NSAttributedString *)aLabel inMasterController: (id )aMaster { id controller; id name; BOOL isQuery, isChannel; isQuery = [aType isEqualToString: ContentControllerQueryType]; isChannel = [aType isEqualToString: ContentControllerChannelType]; name = GNUstepOutputLowercase(aName, connectionController); if ((controller = [nameToBoth objectForKey: name])) { [self setLabel: aLabel forName: name]; return controller; } if (!isQuery && !isChannel) { return nil; } if (isQuery) { controller = AUTORELEASE([queryClass new]); [nameToQuery setObject: controller forKey: name]; } else if (isChannel) { controller = AUTORELEASE([channelClass new]); [nameToChannel setObject: controller forKey: name]; } [nameToBoth setObject: controller forKey: name]; [nameToPresentation setObject: aName forKey: name]; [nameToLabel setObject: aLabel forKey: name]; NSMapInsert(bothToName, controller, name); if (!aMaster) aMaster = [masterControllers objectAtIndex: 0]; [aMaster addViewController: controller withLabel: aLabel forContentController: self]; [nameToMasterController setObject: aMaster forKey: name]; [nameToTyping setObject: AUTORELEASE([[InputController alloc] initWithViewController: controller contentController: self]) forKey: name]; return controller; } - (void)removeViewControllerWithName: (NSString *)aName { id master; id lo; id cont; lo = GNUstepOutputLowercase(aName, connectionController); master = [nameToMasterController objectForKey: lo]; if (!master) { return; } cont = [nameToBoth objectForKey: lo]; if (!cont) { return; } [master removeViewController: cont]; [nameToChannel removeObjectForKey: lo]; [nameToQuery removeObjectForKey: lo]; [nameToBoth removeObjectForKey: lo]; [nameToPresentation removeObjectForKey: lo]; [nameToLabel removeObjectForKey: lo]; [nameToTyping removeObjectForKey: lo]; [nameToMasterController removeObjectForKey: lo]; [nameToTitle removeObjectForKey: lo]; NSMapRemove(bothToName, cont); AUTORELEASE(masterControllers); masterControllers = [[NSMutableArray alloc] initWithArray: [nameToMasterController allValues]]; if (![masterControllers count]) { AUTORELEASE(RETAIN(self)); /* Do not want to die yet... */ [connectionController setContentController: nil]; connectionController = nil; } } - (void)renameViewControllerWithName: (NSString *)aName to: (NSString *)newName { id lo1, lo2; id obj, which; lo1 = GNUstepOutputLowercase(aName, connectionController); lo2 = GNUstepOutputLowercase(newName, connectionController); if (![nameToBoth objectForKey: lo1]) return; if ([lo1 isEqualToString: lo2]) { if (![[nameToPresentation objectForKey: lo1] isEqualToString: newName]) { [nameToPresentation setObject: newName forKey: lo2]; } return; } if ([nameToBoth objectForKey: lo2]) return; obj = [nameToBoth objectForKey: lo1]; which = ([obj conformsToProtocol: @protocol(ContentControllerChannelController)]) ? nameToChannel : nameToQuery; [which setObject: obj forKey: lo2]; [which removeObjectForKey: lo1]; [nameToBoth setObject: obj forKey: lo2]; [nameToBoth removeObjectForKey: lo1]; [nameToPresentation setObject: newName forKey: lo2]; [nameToPresentation removeObjectForKey: lo1]; [nameToLabel setObject: S2AS(lo2) forKey: lo2]; [nameToLabel removeObjectForKey: lo1]; [nameToMasterController setObject: [nameToMasterController objectForKey: lo1] forKey: lo2]; [nameToMasterController removeObjectForKey: lo1]; [nameToTyping setObject: [nameToTyping objectForKey: lo1] forKey: lo2]; [nameToTyping removeObjectForKey: lo1]; [nameToTitle removeObjectForKey: lo1]; NSMapInsert(bothToName, obj, lo2); } - (NSAttributedString *)labelForName: (NSString *)aName { return [nameToLabel objectForKey: GNUstepOutputLowercase(aName, connectionController)]; } - (void)setLabel: (NSAttributedString *)aLabel forName: (NSString *)aName { id label; id lo; id cont; id mast; lo = GNUstepOutputLowercase(aName, connectionController); if (!(label = RETAIN([nameToLabel objectForKey: lo]))) { return; } if (!(cont = [nameToBoth objectForKey: lo])) { return; } if (!(mast = [nameToMasterController objectForKey: lo])) { return; } AUTORELEASE(label); if (label == aLabel) return; [nameToLabel setObject: aLabel forKey: GNUstepOutputLowercase(aName, connectionController)]; [mast setLabel: aLabel forViewController: cont]; [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerChangedLabelNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: label, @"OldLabel", aLabel, @"Label", cont, @"View", self, @"Content", mast, @"Master", nil]]; return; } - (NSString *)presentationalNameForName: (NSString *)aName { return [nameToPresentation objectForKey: GNUstepOutputLowercase(aName, connectionController)]; } - (void)setPresentationName: (NSString *)aPresentationName forName: (NSString *)aName { [nameToPresentation setObject: aPresentationName forKey: GNUstepOutputLowercase(aName, connectionController)]; } - (NSString *)nickname { return nickname; } - (void)setNickname: (NSString *)aNickname { if (aNickname == nickname) return; RELEASE(nickname); nickname = RETAIN(aNickname); [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerChangedNicknameNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: nickname, @"OldNickname", aNickname, @"Nickname", self, @"Content", nil]]; return; } - (NSString *)titleForViewController: (id )aController { id name; id title; id server; name = NSMapGet(bothToName, aController); if (name && (title = [nameToTitle objectForKey: name])) { return title; } else if (!name) { return nil; } server = [connectionController serverString]; title = [nameToPresentation objectForKey: name]; if (!server || ![server length]) { return title; } return [NSString stringWithFormat: _l(@"%@ / %@"), title, server]; } - (void)setTitle: (NSString *)aTitle forViewController: (id )aController { id name; name = NSMapGet(bothToName, aController); if (!name) { return; } if (!aTitle) { [nameToTitle removeObjectForKey: name]; } else { [nameToTitle setObject: aTitle forKey: name]; } [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerChangedTitleNotification object: aController userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [self titleForViewController: aController], @"Title", self, @"Content", [nameToMasterController objectForKey: name], @"Master", nil]]; } - (void)bringNameToFront: (NSString *)aName { id master; id view; master = [nameToMasterController objectForKey: GNUstepOutputLowercase(aName, connectionController)]; view = [nameToBoth objectForKey: GNUstepOutputLowercase(aName, connectionController)]; if (master) { [master bringToFront]; [master selectViewController: view]; } } @end @implementation StandardContentController (PrivateMethods) - (NSColor *)colorForKey: (NSString *)aKey { return [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: aKey]]; } - (void)viewSelected: (NSNotification *)aNotification { id name; id label; lastSelected = [[aNotification userInfo] objectForKey: @"View"]; name = NSMapGet(bothToName, lastSelected); if (!name) return; label = AUTORELEASE([[NSMutableAttributedString alloc] initWithString: [[nameToLabel objectForKey: name] string]]); [self setLabel: label forName: name]; } - (void)userOpened: (NSNotification *)aNotification { id chan; id view; id chanUser; id userInfo; id name; id master; userInfo = [aNotification userInfo]; chanUser = [userInfo objectForKey: @"User"]; view = [aNotification object]; chan = [userInfo objectForKey: @"Channel"]; if (!chan || !view || !chanUser || !(name = NSMapGet(bothToName, view))) return; chanUser = [chanUser userName]; master = [nameToMasterController objectForKey: name]; [self addViewControllerOfType: ContentControllerQueryType withName: chanUser withLabel: S2AS(chanUser) inMasterController: master]; } - (void)windowWillClose: (NSNotification *)aNotification { NSWindow *win; NSEnumerator *iter; id object; win = [aNotification object]; iter = [masterControllers objectEnumerator]; while ((object = [iter nextObject])) { if ([object window] == win) { NSArray *names; names = [nameToMasterController allKeysForObject: object]; iter = [names objectEnumerator]; while ((object = [iter nextObject])) { [self removeViewControllerWithName: object]; } } } } @end StandardQueryController.h000066400000000000000000000030221067163320700347300ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardQueryController.h ------------------- begin : Sat Jan 18 01:38:06 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class StandardQueryController; #ifndef QUERY_CONTROLLER_H #define QUERY_CONTROLLER_H #import #import "Controllers/ContentControllers/ContentController.h" @class NSView, ScrollingTextView, NSString; @interface StandardQueryController : NSObject < ContentControllerQueryController > { id window; id chatView; int numLines; int scrollLines; } + (NSString *)standardNib; - (NSView *)contentView; - (NSTextView *)chatView; - (void)appendAttributedString: (NSAttributedString *)aString; @end #endif StandardQueryController.m000066400000000000000000000210031067163320700347340ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/*************************************************************************** StandardQueryController.m ------------------- begin : Sat Jan 18 01:38:06 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ContentControllers/StandardQueryController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "GNUstepOutput.h" #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSColorAdditions.h" #import "Views/ScrollingTextView.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import @interface StandardQueryController (PreferencesCenter) - (void)timestampEnabledChanged: (NSNotification *)aNotification; - (void)timestampFormatChanged: (NSNotification *)aNotification; - (void)colorChanged: (NSNotification *)aNotification; - (void)chatFontChanged: (NSNotification *)aNotification; - (void)wrapIndentChanged: (NSNotification *)aNotification; - (void)scrollLinesChanged: (NSNotification *)aNotification; @end @implementation StandardQueryController + (NSString *)standardNib { return @"StandardQuery"; } - init { if (!(self = [super init])) return self; if ([self isMemberOfClass: [StandardQueryController class]] && !([NSBundle loadNibNamed: [StandardQueryController standardNib] owner: self])) { NSLog(@"Failed to load StandardQueryController UI"); [self dealloc]; return nil; } return self; } - initFromChannel { if (!(self = [super init])) return self; if (!([NSBundle loadNibNamed: [StandardQueryController standardNib] owner: self])) { NSLog(@"Failed to load StandardQueryController UI"); [self dealloc]; return nil; } return self; } - (void)awakeFromNib { id x; id contain; [chatView setEditable: NO]; [chatView setSelectable: YES]; [chatView setRichText: NO]; [chatView setDrawsBackground: YES]; [chatView setHorizontallyResizable: NO]; [chatView setVerticallyResizable: YES]; [chatView setMinSize: NSMakeSize(0, 0)]; [chatView setMaxSize: NSMakeSize(1e7, 1e7)]; contain = [chatView textContainer]; [chatView setTextContainerInset: NSMakeSize(2, 2)]; [contain setWidthTracksTextView: YES]; [contain setHeightTracksTextView: NO]; [chatView setBackgroundColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: GNUstepOutputBackgroundColor]]]; [chatView setTextColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: GNUstepOutputTextColor]]]; [chatView setFrame: [[[chatView enclosingScrollView] contentView] bounds]]; [chatView setNeedsDisplay: YES]; x = RETAIN([(NSWindow *)window contentView]); [window close]; AUTORELEASE(window); window = x; [window setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(colorChanged:) name: DefaultsChangedNotification object: GNUstepOutputBackgroundColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(colorChanged:) name: DefaultsChangedNotification object: GNUstepOutputTextColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(colorChanged:) name: DefaultsChangedNotification object: GNUstepOutputOtherBracketColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(colorChanged:) name: DefaultsChangedNotification object: GNUstepOutputPersonalBracketColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(chatFontChanged:) name: DefaultsChangedNotification object: GNUstepOutputChatFont]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(chatFontChanged:) name: DefaultsChangedNotification object: GNUstepOutputBoldChatFont]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(wrapIndentChanged:) name: DefaultsChangedNotification object: GNUstepOutputWrapIndent]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(timestampEnabledChanged:) name: DefaultsChangedNotification object: GNUstepOutputTimestampEnabled]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(timestampFormatChanged:) name: DefaultsChangedNotification object: GNUstepOutputTimestampFormat]; scrollLines = [[_PREFS_ preferenceForKey: GNUstepOutputBufferLines] intValue]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(scrollLinesChanged:) name: DefaultsChangedNotification object: GNUstepOutputBufferLines]; [self wrapIndentChanged: nil]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; DESTROY(window); [super dealloc]; } - (NSTextView *)chatView { return chatView; } - (NSView *)contentView { return window; } - (void)appendAttributedString: (NSAttributedString *)aString { id textStorage; NSMutableAttributedString *mutString; NSString *string; if ([aString length] == 0) { return; } textStorage = [chatView textStorage]; string = [textStorage string]; mutString = [NSMutableAttributedString attributedStringWithGNUstepOutputPreferences: aString]; [mutString addTimestampsAndHandleFirst: ![string length] || [string hasSuffix: @"\n"]]; [textStorage beginEditing]; [textStorage appendAttributedString: mutString]; [textStorage endEditing]; numLines += [[[mutString string] componentsSeparatedByString: @"\n"] count] - 1; if (numLines > scrollLines) { [textStorage chopNumberOfLines: numLines - scrollLines]; numLines = scrollLines; } } @end @implementation StandardQueryController (PreferencesCenter) - (void)timestampEnabledChanged: (NSNotification *)aNotification { [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputTimestampFormat]; } - (void)timestampFormatChanged: (NSNotification *)aNotification { [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: [aNotification object]]; } - (void)colorChanged: (NSNotification *)aNotification { id object; object = [aNotification object]; if ([object isEqualToString: GNUstepOutputBackgroundColor]) { [chatView setBackgroundColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: object]]]; } [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: object]; } - (void)chatFontChanged: (NSNotification *)aNotification { [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: [aNotification object]]; } - (void)wrapIndentChanged: (NSNotification *)aNotification { #ifndef GNUSTEP float wIndentF = [[_PREFS_ preferenceForKey: GNUstepOutputWrapIndent] floatValue]; NSMutableParagraphStyle *paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; [paraStyle setHeadIndent: wIndentF]; [chatView setDefaultParagraphStyle: paraStyle]; #else [[chatView textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputWrapIndent]; #endif } - (void)scrollLinesChanged: (NSNotification *)aNotification { scrollLines = [[_PREFS_ preferenceForKey: GNUstepOutputBufferLines] intValue]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/Tab/000077500000000000000000000000001067163320700305155ustar00rootroot00000000000000TabContentController.h000066400000000000000000000024411067163320700347150ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/Tab/*************************************************************************** TabContentController.h ------------------- begin : Fri Aug 27 11:56:47 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class TabContentController; #ifndef TAB_CONTENT_CONTROLLER_H #define TAB_CONTENT_CONTROLLER_H #import "Controllers/ContentControllers/StandardContentController.h" #import @interface TabContentController : StandardContentController + (Class)masterClass; @end #endif TabContentController.m000066400000000000000000000023521067163320700347230ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/Tab/*************************************************************************** TabContentController.m ------------------- begin : Fri Aug 27 11:56:47 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ContentControllers/Tab/TabContentController.h" #import "Controllers/ContentControllers/Tab/TabMasterController.h" @implementation TabContentController + (Class)masterClass { return [TabMasterController class]; } @end TabMasterController.h000066400000000000000000000066241067163320700345450ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/Tab/*************************************************************************** TabMasterController.h ------------------- begin : Mon Jan 19 11:59:32 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class TabMasterController; #ifndef TAB_MASTER_CONTROLLER_H #define TAB_MASTER_CONTROLLER_H #import "Controllers/ContentControllers/ContentController.h" #import #import @class NSTextField, NSTabView, NSWindow, NSMutableArray; @class NSAttributedString, NSCountedSet, FocusNotificationTextView; @interface TabMasterController : NSObject < MasterController > { NSMutableArray *indexToViewController; NSMapTable *viewControllerToIndex; NSMapTable *viewControllerToTab; NSMapTable *viewControllerToContent; NSMapTable *tabToViewController; NSCountedSet *contentControllers; id selectedController; id typingController; FocusNotificationTextView *typeView; NSTextField *nickView; NSTabView *tabView; NSWindow *window; unsigned numItems; } - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel forContentController: (id )aContentController; - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel atIndex: (unsigned)aIndex forContentController: (id )aContentController; - (void)selectViewController: (id )aController; - (void)selectViewControllerAtIndex: (unsigned)aIndex; - (id )selectedViewController; - (void)removeViewController: (id )aController; - (void)removeViewControllerAtIndex: (unsigned)aIndex; - (void)moveViewController: (id )aController toIndex: (unsigned)aIndex; - (void)moveViewControllerAtIndex: (unsigned)aIndex toIndex: (unsigned)aNewIndex; - (unsigned)indexForViewController: (id )aController; - (unsigned)count; - (NSAttributedString *)labelForViewController: (id )aController; - (void)setLabel: (NSAttributedString *)aLabel forViewController: (id )aController; - (NSArray *)containedContentControllers; - (NSArray *)viewControllerListForContentController: (id )aContentController; - (NSArray *)allViewControllers; - (KeyTextView *)typeView; - (NSTextField *)nickView; - (void)bringToFront; - (NSWindow *)window; @end #endif TabMasterController.m000066400000000000000000000400351067163320700345440ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ContentControllers/Tab/*************************************************************************** TabMasterController.m ------------------- begin : Mon Jan 19 11:59:32 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ContentControllers/Tab/TabMasterController.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Views/AttributedTabViewItem.h" #import "Views/FocusNotificationTextView.h" #import "Misc/NSViewAdditions.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import @interface TabMasterController (PrivateMethods) - (void)setNickname: (NSString *)aNickname; @end @interface TabMasterController (DelegateMethods) - (void)chatFontChanged: (NSNotification *)aNotification; - (void)nicknameChanged: (NSNotification *)aNotification; - (void)titleChanged: (NSNotification *)aNotification; - (void)windowDidBecomeKey:(NSNotification *)aNotification; - (void)windowDidResignKey:(NSNotification *)aNotification; - (void)tabView: (NSTabView *)tabView didSelectTabViewItem: (NSTabViewItem *)tabViewItem; - (void)selectNextTab: (id)aSender; - (void)selectPreviousTab: (id)aSender; - (void)closeCurrentTab: (id)aSender; - (void)textViewTookFocus: (FocusNotificationTextView *)aTextView; - (void)textViewResignedFocus: (FocusNotificationTextView *)aTextView; @end #define FIELD_FONT_SIZE 12.0 @implementation TabMasterController - init { if (!(self = [super init])) return nil; viewControllerToTab = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 10); viewControllerToContent = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 10); tabToViewController = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 10); contentControllers = [NSCountedSet new]; indexToViewController = [NSMutableArray new]; if (!([NSBundle loadNibNamed: @"TabContent" owner: self])) { NSLog(@"Failed to load TabContent UI"); [self dealloc]; return nil; } return self; } - (void)awakeFromNib { id object; id contain; NSRect arect; while ([tabView numberOfTabViewItems] && (object = [tabView tabViewItemAtIndex: 0])) [tabView removeTabViewItem: object]; [typeView setDelegate: self]; [typeView setRichText: NO]; [typeView setUsesFontPanel: NO]; [typeView setEditable: YES]; [typeView setDrawsBackground: YES]; arect = [[[typeView enclosingScrollView] contentView] bounds]; [typeView setFrame: arect]; [typeView setHorizontallyResizable: YES]; [typeView setVerticallyResizable: NO]; [typeView setMinSize: NSMakeSize(0, 0)]; [typeView setMaxSize: NSMakeSize(1e7, 1e7)]; contain = [typeView textContainer]; /* Center the text */ [typeView setTextContainerInset: NSMakeSize(2, (arect.size.height - FIELD_FONT_SIZE)/2)]; [contain setContainerSize: NSMakeSize(1e7, [typeView frame].size.height)]; [contain setHeightTracksTextView: YES]; [contain setWidthTracksTextView: NO]; [[typeView enclosingScrollView] setHasVerticalScroller: NO]; [[typeView enclosingScrollView] setHasHorizontalScroller: NO]; [typeView setFont: [FontPreferencesController getFontFromPreferences: GNUstepOutputChatFont ofSize: FIELD_FONT_SIZE]]; [typeView setNeedsDisplay: YES]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(chatFontChanged:) name: DefaultsChangedNotification object: GNUstepOutputChatFont]; } - (void)dealloc { [window setDelegate: nil]; [window close]; DESTROY(window); [[NSNotificationCenter defaultCenter] removeObserver: self]; NSFreeMapTable(viewControllerToTab); NSFreeMapTable(viewControllerToContent); NSFreeMapTable(tabToViewController); DESTROY(contentControllers); DESTROY(indexToViewController); [typeView setKeyTarget: nil]; [typeView setDelegate: nil]; [nickView setTarget: nil]; [nickView setDelegate: nil]; [tabView setDelegate: nil]; [super dealloc]; } - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel forContentController: (id )aContentController { [self addViewController: aController withLabel: aLabel atIndex: numItems forContentController: aContentController]; } - (void)addViewController: (id )aController withLabel: (NSAttributedString *)aLabel atIndex: (unsigned)aIndex forContentController: (id )aContentController { AttributedTabViewItem *tabItem; int selected; tabItem = AUTORELEASE([AttributedTabViewItem new]); NSMapInsert(viewControllerToTab, aController, tabItem); NSMapInsert(viewControllerToContent, aController, aContentController); NSMapInsert(tabToViewController, tabItem, aController); [indexToViewController insertObject: aController atIndex: aIndex]; [contentControllers addObject: aContentController]; [tabView insertTabViewItem: tabItem atIndex: aIndex]; numItems++; [tabItem setView: [aController contentView]]; [tabItem setAttributedLabel: aLabel]; selected = [tabView indexOfTabViewItem: [tabView selectedTabViewItem]]; [tabView selectTabViewItemAtIndex: aIndex]; [tabView selectTabViewItemAtIndex: selected]; [tabView setNeedsDisplay: YES]; [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerAddedToMasterControllerNotification object: aContentController userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: aIndex], @"Index", self, @"Master", aController, @"View", aContentController, @"Content", nil]]; /* If its the first one, we need to force the selection */ if (numItems == 1) { [self selectViewController: aController]; } } - (void)selectViewController: (id )aController { id tab, content; tab = NSMapGet(viewControllerToTab, aController); content = NSMapGet(viewControllerToContent, aController); [window makeFirstResponder: window]; if (!tab || !content) return; [[NSNotificationCenter defaultCenter] removeObserver: self name: ContentControllerChangedNicknameNotification object: nil]; [[NSNotificationCenter defaultCenter] removeObserver: self name: ContentControllerChangedTitleNotification object: nil]; selectedController = aController; [tabView selectTabViewItem: tab]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(titleChanged:) name: ContentControllerChangedTitleNotification object: selectedController]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(nicknameChanged:) name: ContentControllerChangedNicknameNotification object: content]; [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerSelectedNameNotification object: content userInfo: [NSDictionary dictionaryWithObjectsAndKeys: aController, @"View", content, @"Content", self, @"Master", nil]]; RELEASE(typingController); typingController = RETAIN([content typingControllerForViewController: aController]); [self setNickname: [content nickname]]; [window setTitle: [content titleForViewController: aController]]; [window makeFirstResponder: typeView]; } - (void)selectViewControllerAtIndex: (unsigned)aIndex { id view; if (aIndex >= numItems) return; view = [indexToViewController objectAtIndex: aIndex]; [self selectViewController: view]; } - (id )selectedViewController { return selectedController; } - (void)removeViewController: (id )aController { id tab; id userInfo; id content; int index; if (!(NSMapMember(viewControllerToTab, aController, 0, 0))) { return; } tab = NSMapGet(viewControllerToTab, aController); index = [tabView indexOfTabViewItem: tab]; if (selectedController == aController) { int oldIndex = index + 1; if (oldIndex >= [tabView numberOfTabViewItems]) { oldIndex = [tabView numberOfTabViewItems] - 2; } if (oldIndex >= 0) { [self selectViewControllerAtIndex: oldIndex]; } } [tabView removeTabViewItem: tab]; [tabView setNeedsDisplay: YES]; content = NSMapGet(viewControllerToContent, aController); AUTORELEASE(RETAIN(content)); userInfo = [NSDictionary dictionaryWithObjectsAndKeys: self, @"Master", aController, @"View", content, @"Content", nil]; NSMapRemove(viewControllerToTab, aController); NSMapRemove(viewControllerToContent, aController); NSMapRemove(tabToViewController, tab); [indexToViewController removeObjectAtIndex: index]; [contentControllers removeObject: content]; numItems--; [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerRemovedFromMasterControllerNotification object: content userInfo: userInfo]; } - (void)removeViewControllerAtIndex: (unsigned)aIndex { id aController; id tab; tab = [tabView tabViewItemAtIndex: aIndex]; if (!(NSMapMember(tabToViewController, tab, 0, 0))) { return; } aController = NSMapGet(tabToViewController, tab); [self removeViewController: aController]; } - (void)moveViewController: (id )aController toIndex: (unsigned)aIndex; { unsigned index; id tab; unsigned origIndex; id content; if (!(NSMapMember(viewControllerToTab, aController, 0, 0))) { return; } tab = NSMapGet(viewControllerToTab, aController); origIndex = index = [tabView indexOfTabViewItem: tab]; if (aIndex == index) { return; } if (aIndex > index) { index = aIndex - 1; } else { index = aIndex; } [tabView removeTabViewItem: tab]; [indexToViewController removeObjectAtIndex: origIndex]; [tabView insertTabViewItem: tab atIndex: index]; [indexToViewController insertObject: aController atIndex: aIndex]; content = NSMapGet(viewControllerToContent, aController); [[NSNotificationCenter defaultCenter] postNotificationName: ContentControllerMovedInMasterControllerNotification object: content userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: origIndex], @"OldIndex", [NSNumber numberWithInt: index], @"Index", self, @"Master", aController, @"View", content, @"Content", nil]]; } - (void)moveViewControllerAtIndex: (unsigned)aIndex toIndex: (unsigned)aNewIndex { id tab; id aController; tab = [tabView tabViewItemAtIndex: aIndex]; if (!(NSMapMember(tabToViewController, tab, 0, 0))) { return; } aController = NSMapGet(tabToViewController, tab); [self moveViewController: aController toIndex: aNewIndex]; } - (unsigned)indexForViewController: (id )aController { return [indexToViewController indexOfObject: aController]; } - (unsigned)count { return [indexToViewController count]; } - (NSAttributedString *)labelForViewController: (id )aController { AttributedTabViewItem *tab; tab = NSMapGet(viewControllerToTab, aController); if (!tab) return nil; return [tab attributedLabel]; } - (void)setLabel: (NSAttributedString *)aLabel forViewController: (id )aController { AttributedTabViewItem *tab; if (!aLabel) { aLabel = AUTORELEASE([NSAttributedString new]); } if (!aController) return; tab = NSMapGet(viewControllerToTab, aController); if (!tab) return; [tab setAttributedLabel: aLabel]; } - (NSArray *)containedContentControllers { return [contentControllers allObjects]; } - (NSArray *)viewControllerListForContentController: (id )aContentController { id iter; id object; id vArray; id results; vArray = NSAllMapTableKeys(viewControllerToContent); iter = [vArray objectEnumerator]; results = AUTORELEASE([NSMutableArray new]); while ((object = [iter nextObject])) { if (NSMapGet(viewControllerToContent, object) == aContentController) { [results addObject: object]; } } return results; } - (NSArray *)allViewControllers { return NSAllMapTableKeys(viewControllerToContent); } - (KeyTextView *)typeView { return typeView; } - (NSTextField *)nickView { return nickView; } - (void)bringToFront { [window makeKeyAndOrderFront: nil]; } - (NSWindow *)window { return window; } @end @implementation TabMasterController (PrivateMethods) - (void)setNickname: (NSString *)aNickname { NSRect nick; NSRect type; float oldx; if (!aNickname) { aNickname = @""; } [nickView setStringValue: aNickname]; [nickView sizeToFit]; nick = [nickView frame]; type = [[typeView enclosingScrollView] frame]; oldx = type.origin.x; type.origin.x = NSMaxX(nick) + 6.0; type.size.width += (oldx - type.origin.x); [nickView setFrame: nick]; [[typeView enclosingScrollView] setFrame: type]; type.origin.x = type.origin.y = 0; [typeView setFrame: type]; [[window contentView] setNeedsDisplay: YES]; } @end @implementation TabMasterController (DelegateMethods) - (void)chatFontChanged: (NSNotification *)aNotification { [typeView setFont: [FontPreferencesController getFontFromPreferences: GNUstepOutputChatFont ofSize: FIELD_FONT_SIZE]]; [typeView setNeedsDisplay: YES]; } - (void)nicknameChanged: (NSNotification *)aNotification { id content; content = NSMapGet(viewControllerToContent, selectedController); /* Somehow we got a notification for the non-current content controller */ if (content != [aNotification object]) { return; } [self setNickname: [content nickname]]; } - (void)titleChanged: (NSNotification *)aNotification { if (selectedController != [aNotification object]) { return; } [window setTitle: [[aNotification userInfo] objectForKey: @"Title"]]; } - (void)windowDidBecomeKey:(NSNotification *)aNotification { /* Basically we just need to force the * notification to happen */ [self selectViewController: selectedController]; [window makeFirstResponder: typeView]; } - (void)windowDidResignKey:(NSNotification *)aNotification { [window makeFirstResponder: window]; } - (void)tabView: (NSTabView *)tabView didSelectTabViewItem: (NSTabViewItem *)tabViewItem { id view; view = NSMapGet(tabToViewController, tabViewItem); if (view != selectedController) { [self selectViewController: view]; } } - (void)selectNextTab: (id)aSender { unsigned index; index = [self indexForViewController: selectedController]; if (index >= (numItems - 1)) index = 0; else index++; [self selectViewControllerAtIndex: index]; } - (void)selectPreviousTab: (id)aSender { unsigned index; index = [self indexForViewController: selectedController]; if (index == 0) index = numItems - 1; else index--; [self selectViewControllerAtIndex: index]; } - (void)closeCurrentTab: (id)aSender { [typingController processSingleCommand: @"/close"]; } - (void)textViewTookFocus: (FocusNotificationTextView *)aTextView { [typingController handleTextField: typeView forMasterController: self]; } - (void)textViewResignedFocus: (FocusNotificationTextView *)aTextView { [typingController loseTextField: typeView forMasterController: self]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/GroupEditorController.h000066400000000000000000000027461067163320700306370ustar00rootroot00000000000000/*************************************************************************** GroupEditorController.h ------------------- begin : Tue May 6 14:34:46 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class GroupEditorController; #ifndef GROUP_EDITOR_CONTROLLER_H #define GROUP_EDITOR_CONTROLLER_H #import @class NSTextField, NSWindow, NSButton; @interface GroupEditorController : NSObject { NSTextField *entryField; NSTextField *extraField; NSButton *okButton; NSWindow *window; } - (NSButton *)okButton; - (NSTextField *)extraField; - (NSTextField *)entryField; - (NSWindow *)window; - (void)setEntry: (NSTextField *)sender; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/GroupEditorController.m000066400000000000000000000032421067163320700306340ustar00rootroot00000000000000/*************************************************************************** GroupEditorController.m ------------------- begin : Tue May 6 14:34:46 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/GroupEditorController.h" #import #import #import #import @implementation GroupEditorController - (void)awakeFromNib { [window makeKeyAndOrderFront: nil]; [window makeFirstResponder: entryField]; } - (void)dealloc { [entryField setDelegate: nil]; DESTROY(window); [super dealloc]; } - (NSButton *)okButton { return okButton; } - (NSTextField *)extraField { return extraField; } - (NSTextField *)entryField { return entryField; } - (NSWindow *)window { return window; } - (void)setEntry: (NSTextField *)sender { [okButton performClick: nil]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/InputController.h000066400000000000000000000044161067163320700274670ustar00rootroot00000000000000/*************************************************************************** InputController.h ------------------- begin : Thu Mar 13 13:18:48 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class InputController; #ifndef INPUT_CONTROLLER_H #define INPUT_CONTROLLER_H #import #import "ContentControllers/ContentController.h" @class ConnectionController, NSMutableArray, NSText, KeyTextView, NSTextField; @class NSConnection, HelperExecutor; extern NSString *TaskExecutionOutputNotification; @interface InputController : NSObject { id content; id view; id lastMaster; ConnectionController *controller; unsigned historyIndex; NSMutableArray *history; NSMutableArray *modHistory; KeyTextView *fieldEditor; NSMutableArray *tabCompletion; unsigned tabCompletionIndex; HelperExecutor *helper; NSRange savedRange; } - initWithViewController: (id )aController contentController: (id )aContentController; - (void)setConnectionController: (ConnectionController *)aController; - (void)commandTyped: (NSString *)aCommand; - (void)loseTextField: (KeyTextView *)aField forMasterController: (id )aMaster; - (void)handleTextField: (KeyTextView *)aField forMasterController: (id )aMaster; - (void)processSingleCommand: (NSString *)aCommand; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/InputController.m000066400000000000000000000775601067163320700275060ustar00rootroot00000000000000/*************************************************************************** InputController.m ------------------- begin : Thu Mar 13 13:18:48 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import #import "Controllers/ConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/ContentControllers/StandardQueryController.h" #import "Controllers/InputController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "GNUstepOutput.h" #import "Misc/HelperExecutor.h" #import "Misc/NSObjectAdditions.h" #import "Models/Channel.h" #import "Views/ScrollingTextView.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #include #include #include NSString *TaskExecutionOutputNotification = @"TaskExecutionOutputNotification"; static NSString *exec_helper = @"exec_helper"; static void send_message(id command, id name, id connection) { NSRange aRange = NSMakeRange(0, [command length]); id substring; id nick = S2AS([connection nick]); name = S2AS(name); while (aRange.length >= 450) { substring = [command substringWithRange: NSMakeRange(aRange.location, 450)]; aRange.location += 450; aRange.length -= 450; [_TS_ sendMessage: S2AS(substring) to: name onConnection: connection withNickname: nick sender: _GS_]; } if (aRange.length > 0) { [_TS_ sendMessage: S2AS([command substringWithRange: aRange]) to: name onConnection: connection withNickname: nick sender: _GS_]; } } @interface InputController (PrivateInputController) - (void)viewControllerRemoved: (NSNotification *)aNotification; - (void)nextHistoryItem: (NSText *)aFieldEditor; - (void)previousHistoryItem: (NSText *)aFieldEditor; - (BOOL)chatKeyPressed: (NSEvent *)aEvent sender: (id)sender; - (BOOL)fieldKeyPressed: (NSEvent *)aEvent sender: (id)sender; - (void)taskExecutionOutput: (NSNotification *)aNotification; @end @interface InputController (TabCompletion) - (void)nonTabPressed: (id)sender; - (void)tabPressed: (id)sender; - (void)extraTabPressed: (id)sender; - (void)firstTabPressed: (id)sender; - (NSArray *)completionsInArray: (NSArray *)x startingWith: (NSString *)pre largestValue: (NSString **)large; - (NSArray *)commandStartingWith: (NSString *)pre largestValue: (NSString **)large; - (NSArray *)channelStartingWith: (NSString *)pre largestValue: (NSString **)large; - (NSArray *)nameStartingWith: (NSString *)pre largestValue: (NSString **)large; - (NSArray *)historyStartingWith: (NSString *)pre largestValue: (NSString **)large; @end @implementation InputController - initWithViewController: (id )aController contentController: (id )aContentController { NSString *aIdentifier; if (!(self = [super init])) return nil; content = RETAIN(aContentController); view = RETAIN(aController); controller = [content connectionController]; history = [NSMutableArray new]; modHistory = [NSMutableArray new]; [modHistory addObject: @""]; [(KeyTextView *)[view chatView] setKeyTarget: self]; [(KeyTextView *)[view chatView] setKeyAction: @selector(chatKeyPressed:sender:)]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(viewControllerRemoved:) name: ContentControllerRemovedFromMasterControllerNotification object: content]; aIdentifier = [NSString stringWithFormat: @"%p%@%ld", self, self, rand()]; helper = [[HelperExecutor alloc] initWithHelperName: exec_helper identifier: aIdentifier]; [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] addObserver: self selector: @selector(taskExecutionOutput:) name: TaskExecutionOutputNotification object: aIdentifier suspensionBehavior: NSNotificationSuspensionBehaviorDeliverImmediately]; return self; } - (void)dealloc { [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] removeObserver: self]; [[NSNotificationCenter defaultCenter] removeObserver: self]; [fieldEditor setKeyTarget: nil]; [fieldEditor setDelegate: nil]; [(KeyTextView *)[view chatView] setKeyTarget: nil]; RELEASE(helper); RELEASE(fieldEditor); RELEASE(modHistory); RELEASE(history); RELEASE(content); RELEASE(view); [super dealloc]; } - (void)setConnectionController: (ConnectionController *)aController { controller = aController; } - (void)loseTextField: (KeyTextView *)aField forMasterController: (id )aMaster { int modIndex; if (fieldEditor != aField) NSLog(@"fieldEditor != aField!!!"); modIndex = [history count] - historyIndex; [modHistory replaceObjectAtIndex: modIndex withObject: [NSString stringWithString: [fieldEditor string]]]; savedRange = [fieldEditor selectedRange]; [fieldEditor setKeyTarget: nil]; DESTROY(fieldEditor); } - (void)handleTextField: (KeyTextView *)aField forMasterController: (id )aMaster; { int modIndex; id string; unsigned length; modIndex = [history count] - historyIndex; lastMaster = aMaster; string = [modHistory objectAtIndex: modIndex]; ASSIGN(fieldEditor, aField); [fieldEditor setStringValue: string]; [fieldEditor setKeyTarget: self]; [fieldEditor setKeyAction: @selector(fieldKeyPressed:sender:)]; length = [string length]; if ((savedRange.length + savedRange.location) > length) { savedRange.length = 0; savedRange.location = length; } [fieldEditor setSelectedRange: savedRange]; } - (void)commandTyped: (NSString *)command { NSArray *lines; NSEnumerator *iter, *iter2; id object, object2; lines = [command componentsSeparatedByString: @"\r\n"]; iter = [lines objectEnumerator]; while ((object = [iter nextObject])) { iter2 = [[object componentsSeparatedByString: @"\n"] objectEnumerator]; while ((object2 = [iter2 nextObject])) { if (![object2 isEqualToString: @""]) { [history addObject: object2]; historyIndex = [history count]; [modHistory removeAllObjects]; [modHistory addObject: @""]; [self processSingleCommand: object2]; } } } [fieldEditor setStringValue: @""]; } - (void)processSingleCommand: (NSString *)aCommand { id connection; id name; connection = AUTORELEASE(RETAIN( [_GS_ connectionToConnectionController: controller])); if ([aCommand length] == 0) { return; } /* First check for aliases */ if ([aCommand hasPrefix: @"/"] && ![aCommand hasPrefix: @"//"]) { id tempCommand; id array; tempCommand = [aCommand substringFromIndex: 1]; array = [tempCommand separateIntoNumberOfArguments: 2]; if ([array count] >= 1) { id alias; id aliases; alias = [array objectAtIndex: 0]; alias = [alias lowercaseString]; aliases = [_PREFS_ preferenceForKey: GNUstepOutputAliases]; if ((tempCommand = [aliases objectForKey: alias])) { if ([array count] > 1) { aCommand = [NSString stringWithFormat: @"%@ %@", tempCommand, [array objectAtIndex: 1]]; } else { aCommand = tempCommand; } } } } /* Now the real deal */ if ([aCommand hasPrefix: @"/"] && ![aCommand hasPrefix: @"//"]) { id substring; id arguments; SEL commandSelector; id array; id invoc; aCommand = [aCommand substringFromIndex: 1]; array = [aCommand separateIntoNumberOfArguments: 2]; if ([array count] == 0) { return; } if ([array count] == 1) { arguments = nil; substring = [array objectAtIndex: 0]; } else { arguments = [array objectAtIndex: 1]; substring = [array objectAtIndex: 0]; } substring = GNUstepOutputLowercase(substring, controller); commandSelector = NSSelectorFromString([NSString stringWithFormat: @"ircCommand%@:", [substring capitalizedString]]); if (commandSelector && [self respondsToSelector: commandSelector]) { [self performSelector: commandSelector withObject: arguments]; return; } if ((invoc = [_TS_ invocationForCommand: substring])) { [invoc setArgument: &arguments atIndex: 2]; [invoc setArgument: &connection atIndex: 3]; [invoc invoke]; [invoc getReturnValue: &substring]; arguments = nil; [invoc setArgument: &arguments atIndex: 2]; [invoc setArgument: &arguments atIndex: 3]; [controller showMessage: substring onConnection: nil]; return; } if (connection) { [_TS_ writeRawString: S2AS(([NSString stringWithFormat: @"%@ %@", substring, arguments])) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; } return; } else if ([aCommand hasPrefix: @"/"]) { aCommand = [aCommand substringFromIndex: 1]; } if (!connection) return; name = [content nameForViewController: view]; if (GNUstepOutputCompare(name, ContentConsoleName, controller)) { return; } send_message(aCommand, name, connection); } @end @implementation InputController (PrivateInputController) - (void)viewControllerRemoved: (NSNotification *)aNotification { [helper cleanup]; } - (void)previousHistoryItem: (NSText *)aFieldEditor { int modIndex; id string; if (historyIndex == 0) { return; } string = [NSString stringWithString: [fieldEditor string]]; historyIndex--; modIndex = [history count] - historyIndex; [modHistory replaceObjectAtIndex: modIndex - 1 withObject: string]; if (modIndex < (int)[modHistory count]) { [modHistory replaceObjectAtIndex: modIndex - 1 withObject: string]; [fieldEditor setStringValue: [modHistory objectAtIndex: modIndex]]; } else { string = [history objectAtIndex: historyIndex]; [modHistory addObject: string]; [fieldEditor setStringValue: string]; } } - (void)nextHistoryItem: (NSText *)aFieldEditor { int modIndex; if (historyIndex == (int)[history count]) { return; } historyIndex++; modIndex = [history count] - historyIndex; [modHistory replaceObjectAtIndex: modIndex + 1 withObject: [NSString stringWithString: [fieldEditor string]]]; [fieldEditor setStringValue: [modHistory objectAtIndex: modIndex]]; } - (BOOL)chatKeyPressed: (NSEvent *)aEvent sender: (id)sender { id typeview; typeview = [lastMaster typeView]; if ([[lastMaster window] makeFirstResponder: typeview]) { [fieldEditor keyDown: aEvent]; } return NO; } - (BOOL)fieldKeyPressed: (NSEvent *)aEvent sender: (id)sender { NSString *characters = [aEvent charactersIgnoringModifiers]; unichar character = 0; if ([characters length] == 0) { return YES; } character = [characters characterAtIndex: 0]; if (character == NSCarriageReturnCharacter || character == NSEnterCharacter) { [self commandTyped: [sender string]]; return NO; } if (character == NSTabCharacter) { [self tabPressed: sender]; return NO; } else { [self nonTabPressed: sender]; } if (character == NSUpArrowFunctionKey) { [self previousHistoryItem: sender]; return NO; } if (character == NSDownArrowFunctionKey) { [self nextHistoryItem: sender]; return NO; } if (character == NSPageUpFunctionKey) { [(ScrollingTextView *)[view chatView] pageUp]; return NO; } if (character == NSPageDownFunctionKey) { [(ScrollingTextView *)[view chatView] pageDown]; return NO; } return YES; } - (void)taskExecutionOutput: (NSNotification *)aNotification { id userInfo = [aNotification userInfo]; id message = [userInfo objectForKey: @"Output"]; id dest = [userInfo objectForKey: @"Destination"]; if ([controller connection] && [dest length]) { send_message(AUTORELEASE([message copy]), AUTORELEASE([dest copy]), [controller connection]); } else { [controller showMessage: S2AS(AUTORELEASE([message copy])) onConnection: nil]; } } @end @implementation InputController (TabCompletion) - (void)nonTabPressed: (id)sender { if (tabCompletion) { DESTROY(tabCompletion); } } - (void)tabPressed: (id)sender { NSRange aRange; aRange = [fieldEditor selectedRange]; if (aRange.length != 0 || aRange.location != [[fieldEditor string] length]) return; if (tabCompletion) { [self extraTabPressed: sender]; } else { [self firstTabPressed: sender]; } } - (void)extraTabPressed: (id)sender { NSString *typed = [NSString stringWithString: [fieldEditor string]]; int start; NSRange range; if (tabCompletionIndex == -1) { tabCompletionIndex = 0; [content putMessage: [tabCompletion componentsJoinedByString: @" "] in: nil]; } range = [typed rangeOfCharacterFromSet: [NSCharacterSet whitespaceAndNewlineCharacterSet] options: NSBackwardsSearch]; if (range.location == NSNotFound) range.location = 0; start = range.location + range.length; [fieldEditor setStringValue: [NSString stringWithFormat: @"%@%@", [typed substringToIndex: start], [tabCompletion objectAtIndex: tabCompletionIndex]]]; tabCompletionIndex = (tabCompletionIndex + 1) % [tabCompletion count]; } - (void)firstTabPressed: (id)sender { NSString *typed = [NSString stringWithString: [fieldEditor string]]; NSArray *possibleCompletions; int start; NSRange range; NSString *largest; NSString *word; NSString *filler = @" "; range = [typed rangeOfCharacterFromSet: [NSCharacterSet whitespaceAndNewlineCharacterSet] options: NSBackwardsSearch]; if (range.location == NSNotFound) range.location = 0; start = range.location + range.length; if (start == (int)[typed length]) return; word = [typed substringFromIndex: start]; if (start == 0 && [word hasPrefix: @"/"]) { possibleCompletions = [self commandStartingWith: word largestValue: &largest]; } else if ([word hasPrefix: @"#"]) { possibleCompletions = [self channelStartingWith: word largestValue: &largest]; } else if ([word hasPrefix: @"s/"]) { possibleCompletions = [self historyStartingWith: word largestValue: &largest]; filler = @"/"; } else { possibleCompletions = [self nameStartingWith: word largestValue: &largest]; if (start == 0 && [possibleCompletions count] == 1) { largest = [largest stringByAppendingString: @":"]; } } if ([possibleCompletions count] == 0) { NSBeep(); } else if ([possibleCompletions count] == 1) { [fieldEditor setStringValue: [NSString stringWithFormat: @"%@%@%@", [typed substringToIndex: start], largest, filler]]; } else if ([possibleCompletions count] > 1) { [fieldEditor setStringValue: [NSString stringWithFormat: @"%@%@", [typed substringToIndex: start], largest]]; NSBeep(); tabCompletionIndex = -1; tabCompletion = RETAIN(possibleCompletions); } } - (NSArray *)completionsInArray: (NSArray *)x startingWith: (NSString *)pre largestValue: (NSString **)large { NSEnumerator *iter; id object; NSString *lar = nil; id lowObject; NSMutableArray *out = AUTORELEASE([NSMutableArray new]); pre = GNUstepOutputLowercase(pre, controller); iter = [x objectEnumerator]; while ((object = [iter nextObject])) { lowObject = GNUstepOutputLowercase(object, controller); if ([lowObject hasPrefix: pre]) { [out addObject: object]; if (lar) { lar = [GNUstepOutputLowercase(lar, controller) commonPrefixWithString: lowObject options: 0]; lar = [object substringToIndex: [lar length]]; } else { lar = object; } } } if (large) *large = lar; return out; } - (NSArray *)commandStartingWith: (NSString *)pre largestValue: (NSString **)large { NSMutableSet *aSet = [NSMutableSet new]; id x; NSEnumerator *iter; iter = [[InputController methodsDefinedForClass] objectEnumerator]; while ((x = [iter nextObject])) { if ([x hasPrefix: @"ircCommand"] && [x hasSuffix: @":"] && ![x isEqualToString: @"ircCommand:"]) { x = [x substringFromIndex: 10]; x = [x substringToIndex: [x length] - 1]; x = [@"/" stringByAppendingString: [x uppercaseString]]; [aSet addObject: x]; } } iter = [[_TS_ allCommands] objectEnumerator]; while ((x = [iter nextObject])) { [aSet addObject: [@"/" stringByAppendingString: [x uppercaseString]]]; } x = AUTORELEASE(RETAIN([aSet allObjects])); RELEASE(aSet); return [self completionsInArray: x startingWith: pre largestValue: large]; } - (NSArray *)channelStartingWith: (NSString *)pre largestValue: (NSString **)large { NSMutableArray *x = AUTORELEASE([NSMutableArray new]); NSEnumerator *iter; id object; iter = [[content allNames] objectEnumerator]; while ((object = [iter nextObject])) { [x addObject: object]; } return [self completionsInArray: x startingWith: pre largestValue: large]; } - (NSArray *)nameStartingWith: (NSString *)pre largestValue: (NSString **)large { NSMutableArray *x = AUTORELEASE([NSMutableArray new]); NSEnumerator *iter; id object; id channel; if ([view conformsToProtocol: @protocol(ContentControllerChannelController)]) { channel = (id )view; } else { return AUTORELEASE([NSArray new]); } iter = [[[channel channelSource] userList] objectEnumerator]; while ((object = [iter nextObject])) { [x addObject: [object userName]]; } return [self completionsInArray: x startingWith: pre largestValue: large]; } - (NSArray *)historyStartingWith: (NSString *)pre largestValue: (NSString **)large { NSMutableArray *x = AUTORELEASE([NSMutableArray new]); NSMutableArray *y = AUTORELEASE([NSMutableArray new]); NSString *historyString; unsigned count; unsigned len; NSRange leftRange, wordRange, foundRange; NSEnumerator *iter; id object; count = [history count]; if (count > 0) { historyString = [history objectAtIndex: [history count] - 1]; len = [historyString length]; leftRange = NSMakeRange(0, len); while (leftRange.length > 0) { foundRange = [historyString rangeOfCharacterFromSet: [NSCharacterSet whitespaceAndNewlineCharacterSet] options: 0 range: leftRange]; if (foundRange.location == NSNotFound) { [x addObject: [historyString substringWithRange: leftRange]]; break; } else { wordRange.location = leftRange.location; wordRange.length = foundRange.location - leftRange.location; if (wordRange.length > 0) [x addObject: [historyString substringWithRange: wordRange]]; leftRange.location = foundRange.location + foundRange.length; leftRange.length = len - leftRange.location; } } } iter = [x objectEnumerator]; while ((object = [iter nextObject])) { object = [NSString stringWithFormat: @"s/%@", object]; [y addObject: object]; } return [self completionsInArray: y startingWith: pre largestValue: large]; } @end @interface InputController (CommonCommands) @end @implementation InputController (CommonCommands) - ircCommandPing: (NSString *)aString { NSArray *x; id who; struct timeval tv = {0,0}; id arg; id connection; x = [aString separateIntoNumberOfArguments: 2]; if ([x count] == 0) { [controller showMessage: S2AS(_l(@"Usage: /ping " @"\n" @"Sends a CTCP ping message to (which may be a user " @"or a channel). Their reply should allow the amount of lag " @"between you and them to be determined.")) onConnection: nil]; return self; } who = [x objectAtIndex: 0]; if (gettimeofday(&tv, NULL) == -1) { [controller showMessage: S2AS(_l(@"gettimeofday() failed")) onConnection: nil]; return self; } arg = [NSString stringWithFormat: @"%u.%u", (unsigned)tv.tv_sec, (unsigned)(tv.tv_usec / 1000)]; connection = [controller connection]; [_TS_ sendCTCPRequest: S2AS(@"PING") withArgument: S2AS(arg) to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return self; } - ircCommandSay: (NSString *)aString { NSString *name; if ([aString length] == 0) { [controller showMessage: S2AS(_l(@"Usage: /say " @"\n" @"Sends text to the current channel.")) onConnection: nil]; return self; } name = [content nameForViewController: view]; if (GNUstepOutputCompare(name, ContentConsoleName, controller)) return self; if (![controller connection]) return self; send_message(aString, name, [controller connection]); return self; } - ircCommandTopic: (NSString *)aString { NSArray *x; id connection; id topic; id name; x = [aString separateIntoNumberOfArguments: 1]; topic = ([x count]) ? (S2AS([x objectAtIndex: 0])) : nil; name = [content nameForViewController: view]; if (![[content typeForName: name] isEqualToString: ContentControllerChannelType]) return self; connection = [controller connection]; [_TS_ setTopicForChannel: S2AS(name) to: topic onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return self; } - ircCommandJoin: (NSString *)aString { NSMutableArray *x; NSInvocation *invoc; id connection; x = [NSMutableArray arrayWithArray: [aString separateIntoNumberOfArguments: 3]]; if ([x count] >= 1) { NSMutableArray *y; id tmp = [x objectAtIndex: 0]; int z; int count; y = [NSMutableArray arrayWithArray: [tmp componentsSeparatedByString: @","]]; count = [y count]; for (z = 0; z < count; z++) { tmp = [y objectAtIndex: z]; if ([tmp length] > 0) { if ([[NSCharacterSet alphanumericCharacterSet] characterIsMember: [tmp characterAtIndex: 0]]) { tmp = [NSString stringWithFormat: @"#%@", tmp]; [y replaceObjectAtIndex: z withObject: tmp]; } } } [x replaceObjectAtIndex: 0 withObject: [y componentsJoinedByString: @","]]; } aString = [x componentsJoinedByString: @" "]; if ((invoc = [_TS_ invocationForCommand: @"Join"])) { connection = [controller connection]; [invoc setArgument: &aString atIndex: 2]; [invoc setArgument: &connection atIndex: 3]; [invoc invoke]; connection = nil; [invoc setArgument: &connection atIndex: 2]; [invoc setArgument: &connection atIndex: 3]; [invoc getReturnValue: &connection]; [controller showMessage: connection onConnection: nil]; } return self; } - ircCommandServer: (NSString *)aString { NSArray *x = [aString separateIntoNumberOfArguments: 3]; int aPort; if ([x count] == 0) { [controller showMessage: S2AS(_l(@"Usage: /server [port]")) onConnection: nil]; return self; } if ([x count] == 1) { aPort = 6667; } else { aPort = [[x objectAtIndex: 1] intValue]; } [controller connectToServer: [x objectAtIndex: 0] onPort: aPort]; return self; } - ircCommandNick: (NSString *)aString { NSArray *x = [aString separateIntoNumberOfArguments: 2]; id connection = [controller connection]; if ([x count] == 0) { [controller showMessage: S2AS(_l(@"Usage: /nick ")) onConnection: nil]; return self; } if (!connection) { [controller setNick: [x objectAtIndex: 0]]; [content setNickname: [controller nick]]; return self; } [_TS_ changeNick: S2AS([x objectAtIndex: 0]) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; if (![connection connected]) { [content setNickname: [connection nick]]; } return self; } - ircCommandMe: (NSString *)aString { id connection = [controller connection]; if ([aString length] == 0) { [controller showMessage: S2AS(_l(@"Usage: /me ")) onConnection: nil]; return self; } [_TS_ sendAction: S2AS(aString) to: S2AS([content nameForViewController: view]) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return self; } - ircCommandQuery: (NSString *)aString { NSArray *x = [aString separateIntoNumberOfArguments: 2]; id name; id cont; if ([x count] < 1) { [controller showMessage: S2AS(_l(@"Usage: /query ")) onConnection: nil]; return self; } name = [x objectAtIndex: 0]; cont = [content addViewControllerOfType: ContentControllerQueryType withName: name withLabel: S2AS(name) inMasterController: lastMaster]; [[NSRunLoop currentRunLoop] performSelector: @selector(selectViewController:) target: lastMaster argument: cont order: 0 modes: [NSArray arrayWithObject: NSDefaultRunLoopMode]]; return self; } - ircCommandClose: (NSString *)aString { NSArray *x = [aString separateIntoNumberOfArguments: 2]; id name; id connection = [controller connection]; name = [content nameForViewController: view]; if ([x count] < 1) { if (GNUstepOutputCompare(name, ContentConsoleName, controller)) { [controller showMessage: S2AS(_l(@"Usage: /close ")) onConnection: nil]; return self; } } else { name = [x objectAtIndex: 0]; } /* Closing a tab could very well kill us... */ AUTORELEASE(RETAIN(self)); if ([controller dataForChannelWithName: name]) { [controller leaveChannel: name]; [_TS_ partChannel: S2AS(name) withMessage: S2AS(@"") onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; } [content removeViewControllerWithName: name]; return self; } - ircCommandQuit: (NSString *)args { id x = [args separateIntoNumberOfArguments: 1]; id connection = [controller connection]; id msg; msg = ([x count]) ? [x objectAtIndex: 0] : [_PREFS_ preferenceForKey: GNUstepOutputDefaultQuitMessage]; [_TS_ quitWithMessage: S2AS(msg) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return self; } - ircCommandPart: (NSString *)args { id x = [args separateIntoNumberOfArguments: 2]; id name, msg; id connection = [controller connection]; msg = nil; name = [content nameForViewController: view]; if (![[content typeForName: name] isEqualToString: ContentControllerChannelType]) { name = nil; } if ([x count] >= 1) { name = [x objectAtIndex: 0]; } if ([x count] >= 2) { msg = [x objectAtIndex: 1]; } if (!name) { [controller showMessage: S2AS(_l(@"Usage: /part [message]")) onConnection: nil]; return self; } [_TS_ partChannel: S2AS(name) withMessage: S2AS(msg) onConnection: connection withNickname: S2AS([connection nick]) sender: _GS_]; return self; } - ircCommandClear: (NSString *)command { [[view chatView] setString: @""]; return self; } - ircCommandScrollback: (NSString *)command { id x = [command separateIntoNumberOfArguments: 2]; int length; if ([x count] == 0) { [controller showMessage: BuildAttributedString(_l(@"Usage: /scrollback "), @"\n", _l(@"Current value is: "), [_PREFS_ preferenceForKey: GNUstepOutputBufferLines], nil) onConnection: nil]; return self; } length = [[x objectAtIndex: 0] intValue]; if (length < 0) length = 10; [_PREFS_ setPreference: [NSString stringWithFormat: @"%d", length] forKey: GNUstepOutputBufferLines]; return self; } - ircCommandAlias: (NSString *)command { id x = [command separateIntoNumberOfArguments: 2]; id aliases = [_PREFS_ preferenceForKey: GNUstepOutputAliases]; id alias, to; if ([x count] == 0) { id object; NSEnumerator *iter; [controller showMessage: S2AS(_l(@"Usage: /alias ")) onConnection: nil]; [controller showMessage: S2AS(_l(@"Current aliases:")) onConnection: nil]; iter = [aliases keyEnumerator]; while ((object = [iter nextObject])) { [controller showMessage: BuildAttributedFormat(@" /%@ = '%@'", object, [aliases objectForKey: object]) onConnection: nil]; } [controller showMessage: S2AS(_l(@"End of alias list.")) onConnection: nil]; return self; } alias = [x objectAtIndex: 0]; if ([alias hasPrefix: @"/"]) alias = [alias substringFromIndex: 1]; alias = [alias lowercaseString]; if ([x count] == 1) { id to = [aliases objectForKey: alias]; if (!to) { [controller showMessage: BuildAttributedFormat(_l(@"/%@ is not currently aliased."), alias) onConnection: nil]; } else { [controller showMessage: BuildAttributedFormat(_l(@"/%@ is currently aliased to '%@'"), alias, to) onConnection: nil]; } return self; } to = [x objectAtIndex: 1]; [aliases setObject: to forKey: alias]; [_PREFS_ setPreference: aliases forKey: GNUstepOutputAliases]; [controller showMessage: BuildAttributedFormat(_l(@"/%@ aliased to '%@'"), alias, to) onConnection: nil]; return self; } - ircCommandUnalias: (NSString *)command { id x = [command separateIntoNumberOfArguments: 2]; id aliases = [_PREFS_ preferenceForKey: GNUstepOutputAliases]; id alias, to; if ([x count] == 0) { id object; NSEnumerator *iter; [controller showMessage: S2AS(_l(@"Usage: /unalias ")) onConnection: nil]; [controller showMessage: S2AS(_l(@"Current aliases:")) onConnection: nil]; iter = [aliases keyEnumerator]; while ((object = [iter nextObject])) { [controller showMessage: BuildAttributedFormat(@" /%@ = '%@'", object, [aliases objectForKey: object]) onConnection: nil]; } [controller showMessage: S2AS(_l(@"End of alias list.")) onConnection: nil]; return self; } alias = [x objectAtIndex: 0]; if ([alias hasPrefix: @"/"]) alias = [alias substringFromIndex: 1]; alias = [alias lowercaseString]; to = [aliases objectForKey: alias]; if (!to) { [controller showMessage: BuildAttributedFormat(_l(@"/%@ is not currently aliased."), alias) onConnection: nil]; } else { [aliases removeObjectForKey: alias]; [_PREFS_ setPreference: aliases forKey: GNUstepOutputAliases]; [controller showMessage: BuildAttributedFormat(_l(@"/%@ unaliased."), alias) onConnection: nil]; } return self; } - ircCommandExec: (NSString *)command { id x = [command separateIntoNumberOfArguments: 1]; id newcommand = nil; id destination = nil; if ([x count] > 0 && [[x objectAtIndex: 0] hasPrefix: @"-o "]) { x = [command separateIntoNumberOfArguments: 2]; if ([x count] == 2) { newcommand = [x objectAtIndex: 1]; destination = [content nameForViewController: view]; if (GNUstepOutputCompare(destination, ContentConsoleName, controller)) destination = nil; } } else if ([x count] > 0) { newcommand = [x objectAtIndex: 0]; } if (!newcommand) { [controller showMessage: S2AS(_l(@"Usage: /exec [-o] ")) onConnection: nil]; return self; } if (!helper) { [controller showMessage: S2AS(_l(@"Something went wrong initializing the helper application. Can't execute.")) onConnection: nil]; return self; } [helper runWithArguments: [NSArray arrayWithObjects: TaskExecutionOutputNotification, newcommand, destination, nil]]; return self; } - ircCommandTranslucency: (NSString *)aString { NSArray *x = [aString separateIntoNumberOfArguments: 2]; id name; float alpha; name = [content nameForViewController: view]; if ([x count] < 1) { [controller showMessage: S2AS(_l(@"Usage: /translucency ")) onConnection: nil]; return self; } alpha = [[x objectAtIndex: 0] floatValue]; [[lastMaster window] setAlphaValue: alpha]; return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/NamePromptController.h000066400000000000000000000025521067163320700304510ustar00rootroot00000000000000/*************************************************************************** NamePromptController.h ------------------- begin : Thu May 1 11:45:04 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class NamePromptController; #ifndef NAME_PROMPT_CONTROLLER_H #define NAME_PROMPT_CONTROLLER_H #import @class NSTextField, NSWindow; @interface NamePromptController : NSObject { NSTextField *typeView; NSWindow *window; } - (void)returnHit: (NSTextField *)sender; - (NSWindow *)window; - (NSTextField *)typeView; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/NamePromptController.m000066400000000000000000000047371067163320700304650ustar00rootroot00000000000000/*************************************************************************** NamePromptController.m ------------------- begin : Thu May 1 11:45:04 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/NamePromptController.h" #import "Controllers/ConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import #import #import #import #import @implementation NamePromptController - (void)awakeFromNib { [window setDelegate: self]; [window makeKeyAndOrderFront: nil]; [window makeFirstResponder: window]; [window makeFirstResponder: typeView]; RETAIN(self); } - (void)dealloc { [window setDelegate: nil]; DESTROY(window); [super dealloc]; } - (void)returnHit: (NSTextField *)sender { id components; id x; id content; components = [[typeView stringValue] separateIntoNumberOfArguments: 2]; if ([components count] == 0) { [window close]; return; } x = [ConnectionController new]; [x connectToServer: [components objectAtIndex: 0] onPort: 6667]; AUTORELEASE(RETAIN(self)); [window close]; // This object is officially destroyed at this point... content = [x contentController]; [[[[x contentController] primaryMasterController] window] makeKeyAndOrderFront: nil]; } - (NSWindow *)window { return window; } - (NSTextField *)typeView { return typeView; } @end @interface NamePromptController (WindowDelegate) @end @implementation NamePromptController (WindowDelegate) - (void)windowWillClose: (NSNotification *)aNotification { [window setDelegate: nil]; AUTORELEASE(self); } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/000077500000000000000000000000001067163320700264075ustar00rootroot00000000000000BundlePreferencesController.h000066400000000000000000000035551067163320700341500ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** BundlePreferencesController.h ------------------- begin : Sat Aug 14 19:19:30 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class BundlePreferencesController; #ifndef BUNDLE_PREFERENCES_CONTROLLER_H #define BUNDLE_PREFERENCES_CONTROLLER_H #import @class PreferencesController; @class NSString, NSImage; @class NSView, NSImage; @class NSMutableArray, NSTextView, NSTableView, NSPopUpButton; @interface BundlePreferencesController : NSObject { NSView *preferencesView; NSImage *preferencesIcon; NSPopUpButton *showingPopUp; NSTableView *loadedTable; NSTableView *availableTable; NSTextView *descriptionText; NSMutableArray *availData; NSMutableArray *loadData; int currentShowing; int currentlySelected; id currentTable; id otherTable; } - (NSString *)preferencesName; - (NSImage *)preferencesIcon; - (NSView *)preferencesView; - (void)activate: (PreferencesController *)aPrefs; - (void)deactivate; - (void)showingSelected: (id)sender; @end #endif BundlePreferencesController.m000066400000000000000000000266121067163320700341540ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** BundlePreferencesController.m ------------------- begin : Sat Aug 14 19:19:31 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/BundlePreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSViewAdditions.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import static NSString *bundlePboardType = @"bundlePboardType"; static NSString *big_description = nil; @interface BundlePreferencesController (PrivateStuff) - (void)activateList; - (void)refreshList; - (void)setupList; - (NSAttributedString *)descriptionForSelected: (int)row; - (BOOL)tableView: (NSTableView *)aTableView shouldSelectRow: (int)aRow; - (int)numberOfRowsInTableView: (NSTableView *)aTableView; - (id)tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex; - (BOOL)tableView: (NSTableView *)tableView writeRows: (NSArray *)rows toPasteboard: (NSPasteboard *)pboard; - (NSDragOperation) tableView: (NSTableView *)aTableView validateDrop: (id ) info proposedRow: (int)row proposedDropOperation: (NSTableViewDropOperation)operation; - (BOOL)tableView: (NSTableView *)aTableView acceptDrop: (id )info row: (int)row dropOperation: (NSTableViewDropOperation)operation; - (void)prefsWindowResized: (NSNotification *)aNotification; @end @implementation BundlePreferencesController + (void)initialize { if (big_description) return; big_description = RETAIN([NSString stringWithContentsOfFile: [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"BundlePreferences" ofType: @"txt"]]); } - init { id path; if (!(self = [super init])) return nil; if (!([NSBundle loadNibNamed: @"BundlePreferences" owner: self])) { NSLog(@"Couldn't load BundlePreferences nib"); [self dealloc]; return nil; } path = [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"bundle_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find bundle_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } [[NSNotificationCenter defaultCenter] postNotificationName: PreferencesModuleAdditionNotification object: self]; return self; } - (void)awakeFromNib { NSWindow *tempWindow; NSCell *x; id availCol, loadCol; id aFont; aFont = [NSFont userFontOfSize: 0.0]; x = AUTORELEASE([[NSCell alloc] initTextCell: @""]); [x setFont: aFont]; [availableTable setDelegate: self]; [availableTable setDataSource: self]; [availableTable setRowHeight: [aFont pointSize] * 1.5]; [availableTable registerForDraggedTypes: [NSArray arrayWithObject: bundlePboardType]]; availCol = [availableTable tableColumnWithIdentifier: @"available"]; [availCol setResizable: YES]; [availCol setDataCell: x]; [[availCol headerCell] setFont: aFont]; [availCol sizeToFit]; [loadedTable setDelegate: self]; [loadedTable setDataSource: self]; [loadedTable setRowHeight: [aFont pointSize] * 1.5]; [loadedTable registerForDraggedTypes: [NSArray arrayWithObject: bundlePboardType]]; loadCol = [loadedTable tableColumnWithIdentifier: @"loaded"]; [loadCol setDataCell: x]; [[loadCol headerCell] setFont: aFont]; [loadCol sizeToFit]; [descriptionText setHorizontallyResizable: NO]; [descriptionText setVerticallyResizable: YES]; [descriptionText setMinSize: NSMakeSize(0, 0)]; [descriptionText setMaxSize: NSMakeSize(1e7, 1e7)]; [descriptionText setTextContainerInset: NSMakeSize(2, 2)]; [[descriptionText textContainer] setWidthTracksTextView: YES]; [[descriptionText textContainer] setHeightTracksTextView: NO]; [descriptionText setNeedsDisplay: YES]; tempWindow = (NSWindow *)preferencesView; preferencesView = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [preferencesView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; } - (void)dealloc { [availableTable setDataSource: nil]; [loadedTable setDataSource: nil]; RELEASE(availData); RELEASE(loadData); RELEASE(preferencesView); RELEASE(preferencesIcon); [super dealloc]; } - (NSString *)preferencesName { return @"Plugins"; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSView *)preferencesView { return preferencesView; } - (void)activate: (PreferencesController *)aPrefs { [showingPopUp selectItemAtIndex: 0]; [showingPopUp setEnabled: YES]; [self showingSelected: showingPopUp]; } - (void)deactivate { } - (void)showingSelected: (id)sender { int index = [sender indexOfSelectedItem]; if (index < 0) index = 0; if (index > 1) index = 1; currentShowing = index; [self setupList]; } @end @implementation BundlePreferencesController (PrivateStuff) - (void)activateList { SEL aSel; aSel = (!currentShowing) ? @selector(setActivatedInFilters:) : @selector(setActivatedOutFilters:); [_TS_ performSelector: aSel withObject: loadData]; [_TS_ savePluginList]; } - (void)refreshList { SEL aSel1, aSel2; aSel1 = (!currentShowing) ? @selector(activatedInFilters) : @selector(activatedOutFilters); aSel2 = (!currentShowing) ? @selector(allInFilters) : @selector(allOutFilters); RELEASE(loadData); loadData = RETAIN([NSMutableArray arrayWithArray: [_TS_ performSelector: aSel1]]); RELEASE(availData); availData = RETAIN([NSMutableArray arrayWithArray: [[_TS_ performSelector: aSel2] allKeys]]); [availData removeObjectsInArray: loadData]; [availableTable reloadData]; [loadedTable reloadData]; } - (void)setupList { [self refreshList]; currentlySelected = -1; currentTable = nil; otherTable = nil; [availableTable deselectAll: nil]; [loadedTable deselectAll: nil]; [availableTable setNeedsDisplay: YES]; [loadedTable setNeedsDisplay: YES]; [[descriptionText textStorage] setAttributedString: S2AS(big_description)]; [descriptionText scrollPoint: NSMakePoint(0, 0)]; } - (NSAttributedString *)descriptionForSelected: (int)row { id object = nil; SEL aSel; object = (currentTable == loadedTable) ? [loadData objectAtIndex: row] : [availData objectAtIndex: row]; aSel = (!currentShowing) ? @selector(pluginForInFilter:) : @selector(pluginForOutFilter:); object = [_TS_ performSelector: aSel withObject: object]; if ([object respondsToSelector: @selector(pluginDescription)] && (object = [object pluginDescription])) { return [object substituteColorCodesIntoAttributedStringWithFont: [NSFont systemFontOfSize: 0.0] withBoldFont: [NSFont boldSystemFontOfSize: 0.0]]; } return S2AS(_l(@"No description available.")); } - (BOOL)tableView: (NSTableView *)aTableView shouldSelectRow: (int)aRow { if (aTableView == availableTable) { if ([availData count] == 0) return NO; otherTable = loadedTable; } else { if ([loadData count] == 0) return NO; otherTable = availableTable; } currentTable = aTableView; [otherTable deselectAll: nil]; [otherTable setNeedsDisplay: YES]; [currentTable setNeedsDisplay: YES]; [[descriptionText textStorage] setAttributedString: [self descriptionForSelected: aRow]]; [descriptionText scrollPoint: NSMakePoint(0, 0)]; currentlySelected = aRow; return YES; } - (int)numberOfRowsInTableView: (NSTableView *)aTableView { id data; data = (aTableView == availableTable) ? availData : loadData; if ([data count] == 0) return 1; return [data count]; } - (id)tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { id data; data = (aTableView == availableTable) ? availData : loadData; if ([data count] == 0) return _l(@"Drag to here"); return [data objectAtIndex: rowIndex]; } - (BOOL)tableView: (NSTableView *)tableView writeRows: (NSArray *)rows toPasteboard: (NSPasteboard *)pboard { NSMutableArray *theData; id data; data = (tableView == availableTable) ? availData : loadData; if ([data count] == 0) return NO; theData = [[NSMutableArray alloc] initWithCapacity: 1]; [theData addObject: AUTORELEASE([[data objectAtIndex: [[rows objectAtIndex: 0] intValue]] copy])]; [pboard declareTypes: [NSArray arrayWithObject: bundlePboardType] owner: nil]; [pboard setPropertyList: theData forType: bundlePboardType]; RELEASE(theData); return YES; } - (NSDragOperation) tableView: (NSTableView *)aTableView validateDrop: (id ) info proposedRow: (int)row proposedDropOperation: (NSTableViewDropOperation)operation { if ([info draggingSourceOperationMask] & (NSDragOperationGeneric | NSDragOperationCopy)) { return NSDragOperationGeneric; } return NSDragOperationNone; } - (BOOL)tableView: (NSTableView *)aTableView acceptDrop: (id )info row: (int)row dropOperation: (NSTableViewDropOperation)operation { id origData; id data; id object; int where; data = (aTableView == availableTable) ? availData : loadData; object = AUTORELEASE(RETAIN([[[info draggingPasteboard] propertyListForType: bundlePboardType] objectAtIndex: 0])); origData = ([availData containsObject: object]) ? availData : loadData; if ((data == origData) && (data == availData)) return NO; where = [origData indexOfObject: object]; if (row >= [data count]) { [data addObject: object]; } else { [data insertObject: object atIndex: row]; } if (row <= where && origData == data) where++; [origData removeObjectAtIndex: where]; [self activateList]; [self refreshList]; data = (aTableView == availableTable) ? availData : loadData; where = [data indexOfObject: object]; if ([[aTableView delegate] tableView: aTableView shouldSelectRow: where]) { [aTableView selectRow: where byExtendingSelection: NO]; } return YES; } - (void)prefsWindowResized: (NSNotification *)aNotification { id availCol, loadCol; availCol = [availableTable tableColumnWithIdentifier: @"available"]; // [availableTable sizeToFit]; loadCol = [loadedTable tableColumnWithIdentifier: @"loaded"]; // [loadedTable sizeToFit]; } @end ColorPreferencesController.h000066400000000000000000000041371067163320700340120ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** ColorPreferencesController.h ------------------- begin : Sat Aug 14 19:19:30 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class ColorPreferencesController, NSString; extern NSString *GNUstepOutputPersonalBracketColor; extern NSString *GNUstepOutputOtherBracketColor; extern NSString *GNUstepOutputTextColor; extern NSString *GNUstepOutputBackgroundColor; #ifndef COLOR_PREFERENCES_CONTROLLER_H #define COLOR_PREFERENCES_CONTROLLER_H #import @class NSString, NSImage, PreferencesController; @class NSColorWell, NSView, NSImage; @class NSTextView, NSButton, NSMutableDictionary; @interface ColorPreferencesController : NSObject { NSColorWell *otherColorWell; NSColorWell *personalColorWell; NSColorWell *backgroundColorWell; NSColorWell *textColorWell; NSView *preferencesView; NSImage *preferencesIcon; BOOL activated; NSTextView *textPreview; NSMutableDictionary *lastApplied; } - (void)setDefaultColors: (NSButton *)aButton; - (void)applyChanges: (NSButton *)aButton; - (void)setColorPreference: (NSColorWell *)aWell; - (NSString *)preferencesName; - (NSImage *)preferencesIcon; - (NSView *)preferencesView; - (void)activate: (PreferencesController *)aPrefs; - (void)deactivate; @end #endif ColorPreferencesController.m000066400000000000000000000256431067163320700340240ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** ColorPreferencesController.m ------------------- begin : Sat Aug 14 19:19:31 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Misc/NSColorAdditions.h" #import "Misc/NSAttributedStringAdditions.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *GNUstepOutputPersonalBracketColor = @"GNUstepOutputPersonalBracketColor"; NSString *GNUstepOutputOtherBracketColor = @"GNUstepOutputOtherBracketColor"; NSString *GNUstepOutputTextColor = @"GNUstepOutputTextColor"; NSString *GNUstepOutputBackgroundColor = @"GNUstepOutputBackgroundColor"; @interface ColorPreferencesController (PrivateMethods) - (void)saveFromPreferences; - (void)refreshFromPreferences; - (void)preferenceChanged: (NSNotification *)aNotification; @end @implementation ColorPreferencesController - init { id path; if (!(self = [super init])) return nil; if (!([NSBundle loadNibNamed: @"ColorPreferences" owner: self])) { NSLog(@"Couldn't load ColorPreferences nib"); [self dealloc]; return nil; } path = [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"color_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find color_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } lastApplied = [NSMutableDictionary new]; [self saveFromPreferences]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputPersonalBracketColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputTextColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputBackgroundColor]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputOtherBracketColor]; [[NSNotificationCenter defaultCenter] postNotificationName: PreferencesModuleAdditionNotification object: self]; return self; } #define MARK [NSNull null] - (void)awakeFromNib { id pubstring; id contain; NSWindow *tempWindow; tempWindow = (NSWindow *)preferencesView; preferencesView = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [preferencesView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [textPreview setEditable: NO]; [textPreview setSelectable: YES]; [textPreview setRichText: NO]; [textPreview setDrawsBackground: YES]; [textPreview setHorizontallyResizable: NO]; [textPreview setVerticallyResizable: YES]; [textPreview setMinSize: NSMakeSize(0, 0)]; [textPreview setMaxSize: NSMakeSize(1e7, 1e7)]; contain = [textPreview textContainer]; [textPreview setTextContainerInset: NSMakeSize(2, 2)]; [contain setWidthTracksTextView: YES]; [contain setHeightTracksTextView: NO]; [textPreview setString: @""]; [textPreview setBackgroundColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: GNUstepOutputBackgroundColor]]]; [textPreview setTextColor: [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: GNUstepOutputTextColor]]]; [textPreview setNeedsDisplay: YES]; pubstring = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"<", @"aeruder", MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @">", @" ", _l(@"TalkSoup really works so wonderfully!"), @"\n", nil); [[textPreview textStorage] appendAttributedString: [NSMutableAttributedString attributedStringWithGNUstepOutputPreferences: pubstring]]; pubstring = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @"<", @"ckchan", MARK, TypeOfColor, GNUstepOutputOtherBracketColor, @">", @" ", _l(@"you're so weird"), @"\n", nil); [[textPreview textStorage] appendAttributedString: [NSMutableAttributedString attributedStringWithGNUstepOutputPreferences: pubstring]]; pubstring = BuildAttributedString( MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @"<", @"aeruder", MARK, TypeOfColor, GNUstepOutputPersonalBracketColor, @">", @" ", _l(@"So... you're saying you like it too?"), nil); [[textPreview textStorage] appendAttributedString: [NSMutableAttributedString attributedStringWithGNUstepOutputPreferences: pubstring]]; } #undef MARK - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(preferencesView); RELEASE(preferencesIcon); [super dealloc]; } - (void)setDefaultColors: (NSButton *)aButton { id txColor, otherColor, persColor, bgColor; txColor = [_PREFS_ defaultPreferenceForKey: GNUstepOutputTextColor]; otherColor = [_PREFS_ defaultPreferenceForKey: GNUstepOutputOtherBracketColor]; persColor = [_PREFS_ defaultPreferenceForKey: GNUstepOutputPersonalBracketColor]; bgColor = [_PREFS_ defaultPreferenceForKey: GNUstepOutputBackgroundColor]; [_PREFS_ setPreference: txColor forKey: GNUstepOutputTextColor]; [_PREFS_ setPreference: otherColor forKey: GNUstepOutputOtherBracketColor]; [_PREFS_ setPreference: persColor forKey: GNUstepOutputPersonalBracketColor]; [_PREFS_ setPreference: bgColor forKey: GNUstepOutputBackgroundColor]; [self refreshFromPreferences]; } - (void)applyChanges: (NSButton *)aButton { NSString *x[] = { GNUstepOutputOtherBracketColor, GNUstepOutputPersonalBracketColor, GNUstepOutputBackgroundColor, GNUstepOutputTextColor, nil }; NSString **iter; NSString *curr; for (iter = x; *iter != nil; iter++) { curr = [_PREFS_ preferenceForKey: *iter]; if ([curr isEqualToString: [lastApplied objectForKey: *iter]]) { continue; } [[NSNotificationCenter defaultCenter] postNotificationName: DefaultsChangedNotification object: *iter userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _GS_, @"Bundle", curr, @"New", self, @"Owner", [lastApplied objectForKey: *iter], @"Old", nil]]; } [self saveFromPreferences]; } - (void)setColorPreference: (NSColorWell *)aWell { NSString *preference, *newValue, *oldValue; if (aWell == otherColorWell) { preference = GNUstepOutputOtherBracketColor; } else if (aWell == personalColorWell) { preference = GNUstepOutputPersonalBracketColor; } else if (aWell == backgroundColorWell) { preference = GNUstepOutputBackgroundColor; [textPreview setBackgroundColor: [aWell color]]; } else if (aWell == textColorWell) { preference = GNUstepOutputTextColor; } else { return; } oldValue = [_PREFS_ preferenceForKey: preference]; newValue = [[aWell color] encodeToData]; [_PREFS_ setPreference: newValue forKey: preference]; [[textPreview textStorage] updateAttributedStringForGNUstepOutputPreferences: preference]; } - (NSString *)preferencesName { return @"Colors"; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSView *)preferencesView { return preferencesView; } - (void)activate: (PreferencesController *)aPrefs { activated = YES; [self refreshFromPreferences]; [[aPrefs window] makeFirstResponder: personalColorWell]; } - (void)deactivate { activated = NO; } @end @implementation ColorPreferencesController (PrivateMethods) - (void)saveFromPreferences { id txColor, otherColor, persColor, bgColor; txColor = [_PREFS_ preferenceForKey: GNUstepOutputTextColor]; [lastApplied setObject: txColor forKey: GNUstepOutputTextColor]; otherColor = [_PREFS_ preferenceForKey: GNUstepOutputOtherBracketColor]; [lastApplied setObject: otherColor forKey: GNUstepOutputOtherBracketColor]; persColor = [_PREFS_ preferenceForKey: GNUstepOutputPersonalBracketColor]; [lastApplied setObject: persColor forKey: GNUstepOutputPersonalBracketColor]; bgColor = [_PREFS_ preferenceForKey: GNUstepOutputBackgroundColor]; [lastApplied setObject: bgColor forKey: GNUstepOutputBackgroundColor]; } - (void)refreshFromPreferences { id txColor, otherColor, persColor, bgColor; txColor = [_PREFS_ preferenceForKey: GNUstepOutputTextColor]; otherColor = [_PREFS_ preferenceForKey: GNUstepOutputOtherBracketColor]; persColor = [_PREFS_ preferenceForKey: GNUstepOutputPersonalBracketColor]; bgColor = [_PREFS_ preferenceForKey: GNUstepOutputBackgroundColor]; txColor = [NSColor colorFromEncodedData: txColor]; otherColor = [NSColor colorFromEncodedData: otherColor]; persColor = [NSColor colorFromEncodedData: persColor]; bgColor = [NSColor colorFromEncodedData: bgColor]; [textColorWell setColor: txColor]; [otherColorWell setColor: otherColor]; [personalColorWell setColor: persColor]; [backgroundColorWell setColor: bgColor]; [[textPreview textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputBackgroundColor]; [[textPreview textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputTextColor]; [[textPreview textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputOtherBracketColor]; [[textPreview textStorage] updateAttributedStringForGNUstepOutputPreferences: GNUstepOutputPersonalBracketColor]; } - (void)preferenceChanged: (NSNotification *)aNotification { id userInfo; if (!activated) return; userInfo = [aNotification userInfo]; if ([userInfo objectForKey: @"Owner"] == self) return; [self refreshFromPreferences]; } @end FontPreferencesController.h000066400000000000000000000045051067163320700336410ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** FontPreferencesController.h ------------------- begin : Sat Aug 14 19:19:30 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class FontPreferencesController, NSString; extern NSString *GNUstepOutputChatFont; extern NSString *GNUstepOutputBoldChatFont; extern NSString *GNUstepOutputUserListFont; extern NSString *GNUstepOutputWrapIndent; #ifndef FONT_PREFERENCES_CONTROLLER_H #define FONT_PREFERENCES_CONTROLLER_H #import #import @class NSString, NSImage, NSFont; @class NSView, NSImage, NSTextField, NSButton; @class PreferencesController, NSStepper; @interface FontPreferencesController : NSObject { NSView *preferencesView; NSImage *preferencesIcon; BOOL activated; NSButton *userFontButton; NSButton *chatFontButton; NSButton *boldFontButton; NSTextField *chatFontField; NSTextField *boldFontField; NSTextField *userFontField; NSTextField *wrapIndentField; id fontSetView; id lastView; } + (NSFont *)getFontFromPreferences: (NSString *)aPrefName; + (NSFont *)getFontFromPreferences: (NSString *)aPrefName ofSize: (float)aSize; - (void)hitFontButton: (NSButton *)aButton; - (void)setWrapIndent: (NSTextField *)aField; - (NSString *)preferencesName; - (NSImage *)preferencesIcon; - (NSView *)preferencesView; - (void)activate: (PreferencesController *)aPrefs; - (void)deactivate; @end @interface FontPreferencesFontView : NSView { id delegate; } - (void)setDelegate: aDelegate; @end #endif FontPreferencesController.m000066400000000000000000000225371067163320700336530ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** FontPreferencesController.m ------------------- begin : Sat Aug 14 19:19:31 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #include NSString *GNUstepOutputChatFont = @"GNUstepOutputChatFont"; NSString *GNUstepOutputBoldChatFont = @"GNUstepOutputBoldChatFont"; NSString *GNUstepOutputUserListFont = @"GNUstepOutputUserListFont"; NSString *GNUstepOutputWrapIndent = @"GNUstepOutputWrapIndent"; @interface FontPreferencesController (PrivateMethods) - (void)preferenceChanged: (NSNotification *)aNotification; - (void)refreshFromPreferences; - (void)fontView: (FontPreferencesFontView *)aFontView changeFont: (id)sender; @end @implementation FontPreferencesController + (NSFont *)getFontFromPreferences: (NSString *)aPrefName { NSString *fontName; id tmpSize; float fontSize; NSFont *font; NSString *aPrefSize; aPrefSize = [aPrefName stringByAppendingString: @"Size"]; fontName = [_PREFS_ preferenceForKey: aPrefName]; tmpSize = [_PREFS_ preferenceForKey: aPrefSize]; fontSize = (tmpSize) ? [tmpSize floatValue] : 0.0; if ((!fontName) || ([fontName length] == 0) || (fontSize <= 0.001) || !(font = [NSFont fontWithName: fontName size: fontSize])) { if ([aPrefName isEqualToString: GNUstepOutputBoldChatFont]) { font = [NSFont boldSystemFontOfSize: 0.0]; } else { font = [NSFont userFontOfSize: 0.0]; } } return font; } + (NSFont *)getFontFromPreferences: (NSString *)aPrefName ofSize: (float)aSize { NSFontManager *manager; manager = [NSFontManager sharedFontManager]; return [manager convertFont: [self getFontFromPreferences: aPrefName] toSize: aSize]; } - init { id path; if (!(self = [super init])) return nil; if (!([NSBundle loadNibNamed: @"FontPreferences" owner: self])) { NSLog(@"Couldn't load FontPreferences nib"); [self dealloc]; return nil; } path = [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"font_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find font_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputChatFont]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputUserListFont]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: [GNUstepOutputChatFont stringByAppendingString: @"Size"]]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: [GNUstepOutputUserListFont stringByAppendingString: @"Size"]]; [[NSNotificationCenter defaultCenter] postNotificationName: PreferencesModuleAdditionNotification object: self]; return self; } - (void)awakeFromNib { NSWindow *tempWindow; tempWindow = (NSWindow *)preferencesView; preferencesView = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [preferencesView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [fontSetView setDelegate: self]; } - (void)dealloc { [wrapIndentField setDelegate: nil]; [fontSetView setDelegate: nil]; [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(preferencesView); RELEASE(preferencesIcon); [super dealloc]; } - (void)hitFontButton: (NSButton *)aButton { id panel; if (aButton == userFontButton) { lastView = userFontField; } else if (aButton == chatFontButton) { lastView = chatFontField; } else if (aButton == boldFontButton) { lastView = boldFontField; } else { return; } [[NSFontManager sharedFontManager] setSelectedFont: [lastView font] isMultiple: NO]; [[_PREFS_ window] makeFirstResponder: fontSetView]; panel = [NSFontPanel sharedFontPanel]; [panel orderFront: self]; return; } - (void)setWrapIndent: (NSTextField *)aField { double amount = [aField doubleValue]; id string; id old; [aField setStringValue: [NSString stringWithFormat: @"%.2f", (float)amount]]; old = [_PREFS_ preferenceForKey: GNUstepOutputWrapIndent]; if (amount != 0.0) { amount = amount * 28.35; } string = [NSString stringWithFormat: @"%.5f", (float)amount]; [_PREFS_ setPreference: string forKey: GNUstepOutputWrapIndent]; [[NSNotificationCenter defaultCenter] postNotificationName: DefaultsChangedNotification object: GNUstepOutputWrapIndent userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _GS_, @"Bundle", string, @"New", self, @"Owner", old, @"Old", nil]]; } - (NSString *)preferencesName { return @"Fonts"; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSView *)preferencesView { return preferencesView; } - (void)activate: (PreferencesController *)aPrefs { activated = YES; [self refreshFromPreferences]; [[aPrefs window] makeFirstResponder: chatFontButton]; } - (void)deactivate { activated = NO; } @end @implementation FontPreferencesController (PrivateMethods) - (void)preferenceChanged: (NSNotification *)aNotification { id userInfo; if (!activated) return; userInfo = [aNotification userInfo]; if (([userInfo objectForKey: @"Owner"] == self) || ([userInfo objectForKey: @"Owner"] == [self class])) return; [self refreshFromPreferences]; } - (void)refreshFromPreferences { id uFont, bFont, cFont, wIndent; float wIndentF; uFont = [FontPreferencesController getFontFromPreferences: GNUstepOutputUserListFont]; cFont = [FontPreferencesController getFontFromPreferences: GNUstepOutputChatFont]; bFont = [FontPreferencesController getFontFromPreferences: GNUstepOutputBoldChatFont]; [userFontField setStringValue: [NSString stringWithFormat: @"%@ %.1f", [uFont displayName], [uFont pointSize]]]; [userFontField setFont: uFont]; [chatFontField setStringValue: [NSString stringWithFormat: @"%@ %.1f", [cFont displayName], [cFont pointSize]]]; [chatFontField setFont: cFont]; [boldFontField setStringValue: [NSString stringWithFormat: @"%@ %.1f", [bFont displayName], [bFont pointSize]]]; [boldFontField setFont: bFont]; wIndent = [_PREFS_ preferenceForKey: GNUstepOutputWrapIndent]; wIndentF = [wIndent floatValue]; wIndent = [NSString stringWithFormat: @"%.2f", wIndentF / 28.35]; [wrapIndentField setStringValue: wIndent]; } - (void)fontView: (FontPreferencesFontView *)aFontView changeFont: (id)sender { NSString *preference; NSFont *aFont; NSString *name; NSString *size; NSString *oldName; if (lastView == userFontField) { preference = GNUstepOutputUserListFont; } else if (lastView == chatFontField) { preference = GNUstepOutputChatFont; } else if (lastView == boldFontField) { preference = GNUstepOutputBoldChatFont; } else { return; } oldName = [[lastView font] fontName]; aFont = [[NSFontManager sharedFontManager] convertFont: [lastView font]]; if ([lastView font] == aFont) return; [lastView setFont: aFont]; name = [aFont fontName]; size = [NSString stringWithFormat: @"%.1f", [aFont pointSize]]; [lastView setStringValue: [NSString stringWithFormat: @"%@ %@", [aFont displayName], size]]; [_PREFS_ setPreference: name forKey: preference]; [_PREFS_ setPreference: size forKey: [preference stringByAppendingString: @"Size"]]; [[NSNotificationCenter defaultCenter] postNotificationName: DefaultsChangedNotification object: preference userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _GS_, @"Bundle", name, @"New", self, @"Owner", oldName, @"Old", nil]]; } @end @implementation FontPreferencesFontView - (BOOL)acceptsFirstResponder { return YES; } - (void)setDelegate: aDelegate { delegate = aDelegate; } - (void)changeFont: (id)sender { [delegate fontView: self changeFont: sender]; } @end GeneralPreferencesController.h000066400000000000000000000041301067163320700343020ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** GeneralPreferencesController.h ------------------- begin : Sat Aug 14 19:19:30 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class GeneralPreferencesController; @class NSString; extern NSString *GNUstepOutputBufferLines; extern NSString *GNUstepOutputDefaultQuitMessage; extern NSString *GNUstepOutputAliases; extern NSString *GNUstepOutputTimestampFormat; extern NSString *GNUstepOutputTimestampEnabled; #ifndef GENERAL_PREFERENCES_CONTROLLER_H #define GENERAL_PREFERENCES_CONTROLLER_H #import @class NSImage, NSButton; @class NSView, NSImage; @class NSTextField, PreferencesController; @interface GeneralPreferencesController : NSObject { NSView *preferencesView; NSImage *preferencesIcon; NSTextField *userView; NSTextField *nameView; NSTextField *passwordView; NSTextField *nickView; NSTextField *quitView; NSTextField *timestampFormatField; NSButton *timestampButton; BOOL activated; } + (BOOL)timestampEnabled; - (void)setTimestampEnabled: (NSButton *)aSender; - (void)setText: (NSTextField *)aField; - (NSString *)preferencesName; - (NSImage *)preferencesIcon; - (NSView *)preferencesView; - (void)activate: (PreferencesController *)aPrefs; - (void)deactivate; @end #endif GeneralPreferencesController.m000066400000000000000000000171021067163320700343120ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/*************************************************************************** GeneralPreferencesController.m ------------------- begin : Sat Aug 14 19:19:31 CDT 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/GeneralPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import NSString *GNUstepOutputBufferLines = @"GNUstepOutputBufferLines"; NSString *GNUstepOutputDefaultQuitMessage = @"GNUstepOutputDefaultQuitMessage"; NSString *GNUstepOutputAliases = @"GNUstepOutputAliases"; NSString *GNUstepOutputTimestampFormat = @"GNUstepOutputTimestampFormat"; NSString *GNUstepOutputTimestampEnabled = @"GNUstepOutputTimestampEnabled"; @interface GeneralPreferencesController (PrivateMethods) - (void)preferenceChanged: (NSNotification *)aNotification; - (void)refreshFromPreferences; @end @implementation GeneralPreferencesController + (BOOL)timestampEnabled { id val; val = [_PREFS_ preferenceForKey: GNUstepOutputTimestampEnabled]; if ([val isEqualToString: @"YES"]) { return YES; } return NO; } - init { id path; if (!(self = [super init])) return nil; if (!([NSBundle loadNibNamed: @"GeneralPreferences" owner: self])) { NSLog(@"Couldn't load GeneralPreferences nib"); [self dealloc]; return nil; } path = [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"general_prefs" ofType: @"tiff"]; if (!path) { NSLog(@"Could not find general_prefs.tiff"); [self dealloc]; return nil; } preferencesIcon = [[NSImage alloc] initWithContentsOfFile: path]; if (!preferencesIcon) { NSLog(@"Could not load image %@", path); [self dealloc]; return nil; } [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: IRCDefaultsNick]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: IRCDefaultsRealName]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: IRCDefaultsUserName]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: IRCDefaultsPassword]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferenceChanged:) name: DefaultsChangedNotification object: GNUstepOutputDefaultQuitMessage]; [[NSNotificationCenter defaultCenter] postNotificationName: PreferencesModuleAdditionNotification object: self]; return self; } - (void)awakeFromNib { NSWindow *tempWindow; tempWindow = (NSWindow *)preferencesView; preferencesView = RETAIN([tempWindow contentView]); RELEASE(tempWindow); [preferencesView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(preferencesView); RELEASE(preferencesIcon); [super dealloc]; } - (void)setTimestampEnabled: (NSButton *)aSender { NSString *newState, *oldValue; oldValue = [_PREFS_ preferenceForKey: GNUstepOutputTimestampEnabled]; if ([timestampButton state] == NSOnState) { newState = @"YES"; } else { newState = @"NO"; } if (![oldValue isEqualToString: newState]) { [_PREFS_ setPreference: newState forKey: GNUstepOutputTimestampEnabled]; [[NSNotificationCenter defaultCenter] postNotificationName: DefaultsChangedNotification object: GNUstepOutputTimestampEnabled userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _TS_, @"Bundle", newState, @"New", self, @"Owner", oldValue, @"Old", nil]]; } } - (void)setText: (NSTextField *)aField { NSString *preference, *newValue, *oldValue; if (aField == userView) { preference = IRCDefaultsUserName; } else if (aField == nameView) { preference = IRCDefaultsRealName; } else if (aField == passwordView) { preference = IRCDefaultsPassword; } else if (aField == nickView) { preference = IRCDefaultsNick; } else if (aField == quitView) { preference = GNUstepOutputDefaultQuitMessage; } else if (aField == timestampFormatField) { preference = GNUstepOutputTimestampFormat; } else { return; } oldValue = [_PREFS_ preferenceForKey: preference]; newValue = [aField stringValue]; [_PREFS_ setPreference: newValue forKey: preference]; [[NSNotificationCenter defaultCenter] postNotificationName: DefaultsChangedNotification object: preference userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _TS_, @"Bundle", newValue, @"New", self, @"Owner", oldValue, @"Old", nil]]; } - (NSString *)preferencesName { return @"General"; } - (NSImage *)preferencesIcon { return preferencesIcon; } - (NSView *)preferencesView { return preferencesView; } - (void)activate: (PreferencesController *)aPrefs { activated = YES; [self refreshFromPreferences]; [[aPrefs window] makeFirstResponder: nickView]; } - (void)deactivate { activated = NO; } @end @implementation GeneralPreferencesController (PrivateMethods) - (void)preferenceChanged: (NSNotification *)aNotification { id userInfo; if (!activated) return; userInfo = [aNotification userInfo]; if ([userInfo objectForKey: @"Owner"] == self) return; [self refreshFromPreferences]; } - (void)refreshFromPreferences { id nick, user, pass, rn, qt, fmt, fmtE; nick = [_PREFS_ preferenceForKey: IRCDefaultsNick]; user = [_PREFS_ preferenceForKey: IRCDefaultsUserName]; pass = [_PREFS_ preferenceForKey: IRCDefaultsPassword]; rn = [_PREFS_ preferenceForKey: IRCDefaultsRealName]; qt = [_PREFS_ preferenceForKey: GNUstepOutputDefaultQuitMessage]; fmt = [_PREFS_ preferenceForKey: GNUstepOutputTimestampFormat]; fmtE = [_PREFS_ preferenceForKey: GNUstepOutputTimestampEnabled]; if (!nick) nick = @""; if (!user) user = @""; if (!pass) pass = @""; if (!rn) rn = @""; if (!qt) qt = @""; if (!fmt) fmt = @""; [nickView setStringValue: nick]; [userView setStringValue: user]; [passwordView setStringValue: pass]; [nameView setStringValue: rn]; [quitView setStringValue: qt]; [timestampFormatField setStringValue: fmt]; if ([fmtE isEqualToString: @"YES"]) { [timestampButton setState: NSOnState]; } else if ([fmtE isEqualToString: @"NO"]) { [timestampButton setState: NSOffState]; } else { [timestampButton setState: NSOffState]; [self setTimestampEnabled: timestampButton]; } } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/PreferencesController.h000066400000000000000000000043621067163320700330720ustar00rootroot00000000000000/*************************************************************************** PreferencesController.h ------------------- begin : Thu Apr 3 08:09:15 CST 2003 copyright : (C) 2005 by Andrew Ruder w/ much of the code borrowed from Preferences.app by Jeff Teunissen email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class PreferencesController, NSString; extern NSString *GNUstepOutputServerList; #ifndef PREFERENCES_CONTROLLER_H #define PREFERENCES_CONTROLLER_H #import @class NSView, NSString, NSImage, NSBox; @class NSScrollView, NSWindow, NSMatrix, NSMutableArray; @class NSDictionary, NSMutableDictionary; /* object: the preferences module */ extern NSString *PreferencesModuleAdditionNotification; /* object: the preferences module */ extern NSString *PreferencesModuleRemovalNotification; @protocol GNUstepOutputPrefsModule - (NSView *)preferencesView; - (NSImage *)preferencesIcon; - (NSString *)preferencesName; - (void)activate: (PreferencesController *)aPrefs; - (void)deactivate; @end @interface PreferencesController : NSObject { NSScrollView *scrollView; NSWindow *window; NSMatrix *prefsList; NSView *preferencesView; NSMutableArray *prefsModules; id currentPrefs; NSMutableDictionary *defaultPreferences; NSBox *labelBox; } - (id)preferenceForKey: (NSString *)aKey; - setPreference: (id)aPreference forKey: (NSString *)aKey; - (id)defaultPreferenceForKey: (NSString *)aKey; - (NSWindow *)window; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/Preferences/PreferencesController.m000066400000000000000000000213441067163320700330760ustar00rootroot00000000000000/*************************************************************************** PreferencesController.m ------------------- begin : Thu Apr 3 08:09:15 CST 2003 copyright : (C) 2005 by Andrew Ruder w/ much of the code borrowed from Preferences.app by Jeff Teunissen email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/Preferences/PreferencesController.h" #import "Misc/NSColorAdditions.h" #import "GNUstepOutput.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *PreferencesChangedNotification = @"PreferencesChangedNotification"; NSString *PreferencesModuleAdditionNotification = @"PreferencesModuleAdditionNotification"; NSString *PreferencesModuleRemovalNotification = @"PreferencesModuleRemovalNotification"; NSString *GNUstepOutputServerList = @"GNUstepOutputServerList"; @interface PreferencesController (PrivateMethods) - (void)buttonClicked: (NSMatrix *)aCell; - (void)registerPreferencesModule: aPreferencesModule; - (void)unregisterPreferencesModule: aPreferencesModule; - (void)preferencesModuleAdded: (NSNotification *)aNotification; - (void)preferencesModuleRemoved: (NSNotification *)aNotification; @end @implementation PreferencesController - init { if (!(self = [super init])) return self; prefsModules = [NSMutableArray new]; if (![NSBundle loadNibNamed: @"Preferences" owner: self]) { [self dealloc]; return nil; } defaultPreferences = [[NSMutableDictionary alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [GNUstepOutput class]] pathForResource: @"Defaults" ofType: @"plist"]]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferencesModuleAdded:) name: PreferencesModuleAdditionNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(preferencesModuleRemoved:) name: PreferencesModuleRemovalNotification object: nil]; return self; } - (void)awakeFromNib { /* much of this setup code was shamelessly ripped * from preferences.app. Why redo what works * so nicely? */ prefsList = AUTORELEASE([[NSMatrix alloc] initWithFrame: NSMakeRect(0, 0, 64*30, 64) mode: NSRadioModeMatrix cellClass: [NSButtonCell class] numberOfRows: 1 numberOfColumns: 0]); [prefsList setCellSize: NSMakeSize(64, 64)]; [prefsList setIntercellSpacing: NSZeroSize]; [labelBox setAutoresizesSubviews: YES]; [[labelBox contentView] setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; [prefsList setTarget: self]; [prefsList setAction: @selector(buttonClicked:)]; [scrollView setDocumentView: prefsList]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: NO]; [scrollView setBorderType: NSBezelBorder]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; DESTROY(window); DESTROY(prefsModules); [super dealloc]; } - setPreference: (id)aPreference forKey: (NSString *)aKey { if ([aKey hasPrefix: @"GNUstepOutput"]) { NSMutableDictionary *aDict = AUTORELEASE([NSMutableDictionary new]); id newKey = [aKey substringFromIndex: 13]; id y; if ((y = [[NSUserDefaults standardUserDefaults] objectForKey: @"GNUstepOutput"])) { [aDict addEntriesFromDictionary: y]; } if (aPreference) { [aDict setObject: aPreference forKey: newKey]; } else { [aDict removeObjectForKey: newKey]; } [[NSUserDefaults standardUserDefaults] setObject: aDict forKey: @"GNUstepOutput"]; } else { if (aPreference) { [[NSUserDefaults standardUserDefaults] setObject: aPreference forKey: aKey]; } else { [[NSUserDefaults standardUserDefaults] removeObjectForKey: aKey]; } } return self; } - (id)preferenceForKey: (NSString *)aKey { id z; if ([aKey hasPrefix: @"GNUstepOutput"]) { NSDictionary *y; id newKey = [aKey substringFromIndex: 13]; y = [[NSUserDefaults standardUserDefaults] objectForKey: @"GNUstepOutput"]; if ((z = [y objectForKey: newKey])) { return z; } z = [defaultPreferences objectForKey: newKey]; [self setPreference: z forKey: aKey]; return z; } if ((z = [[NSUserDefaults standardUserDefaults] objectForKey: aKey])) { return z; } z = [defaultPreferences objectForKey: aKey]; [self setPreference: z forKey: aKey]; return z; } - (id)defaultPreferenceForKey: (NSString *)aKey { if ([aKey hasPrefix: @"GNUstepOutput"]) { aKey = [aKey substringFromIndex: 13]; } return [defaultPreferences objectForKey: aKey]; } - (NSWindow *)window { return window; } @end @implementation PreferencesController (PrivateMethods) - (void)buttonClicked: (NSMatrix *)aMatrix { id array = [prefsList cells]; int index; id module; id object; NSView *view; NSEnumerator *iter; NSButtonCell *aCell; aCell = [aMatrix selectedCell]; if (![array containsObject: aCell]) return; index = [array indexOfObject: aCell]; if (index >= [prefsModules count]) return; module = [prefsModules objectAtIndex: index]; if (currentPrefs == module) return; view = [module preferencesView]; if (!view) return; [currentPrefs deactivate]; iter = [[preferencesView subviews] objectEnumerator]; while ((object = [iter nextObject])) { [object removeFromSuperview]; } [view setFrame: [preferencesView frame]]; [view setFrameOrigin: NSMakePoint(0,0)]; [preferencesView addSubview: view]; currentPrefs = module; [labelBox setTitle: [module preferencesName]]; [module activate: self]; } - (void)registerPreferencesModule: aPreferencesModule { id bCell; id icon; id name; if (!(aPreferencesModule)) return; if (!(icon = [aPreferencesModule preferencesIcon])) return; if (!(name = [aPreferencesModule preferencesName])) return; bCell = AUTORELEASE([NSButtonCell new]); if (!(bCell)) return; [bCell setImage: icon]; [bCell setButtonType: NSOnOffButton]; [bCell setTitle: name]; [bCell setImagePosition: NSImageOnly]; [bCell setShowsStateBy: NSPushInCellMask]; [bCell setBordered: YES]; [bCell setBezelStyle: NSRegularSquareBezelStyle]; [prefsModules addObject: aPreferencesModule]; [prefsList addColumnWithCells: [NSArray arrayWithObject: bCell]]; [prefsList sizeToCells]; [prefsList setNeedsDisplay: YES]; // If its the first one, we should auto-click it if ([prefsModules count] == 1) { [prefsList selectCellAtRow: 0 column: 0]; [self buttonClicked: prefsList]; [window makeFirstResponder: prefsList]; } } - (void)unregisterPreferencesModule: aPreferencesModule { int index; if (!(aPreferencesModule)) return; if (!([prefsModules containsObject: aPreferencesModule])) return; index = [prefsModules indexOfObject: aPreferencesModule]; if (index == [prefsList selectedColumn]) { [prefsList selectCellAtRow: 0 column: 0]; [self buttonClicked: prefsList]; [window makeFirstResponder: prefsList]; } [prefsModules removeObjectAtIndex: index]; [prefsList removeColumn: index]; [prefsList sizeToCells]; [prefsList setNeedsDisplay: YES]; } - (void)preferencesModuleAdded: (NSNotification *)aNotification { id object; if (![[aNotification name] isEqualToString: PreferencesModuleAdditionNotification]) return; if (!(object = [aNotification object])) return; [self registerPreferencesModule: object]; } - (void)preferencesModuleRemoved: (NSNotification *)aNotification; { id object; if (![[aNotification name] isEqualToString: PreferencesModuleRemovalNotification]) return; if (!(object = [aNotification object])) return; [self unregisterPreferencesModule: object]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerEditorController.h000066400000000000000000000042421067163320700310020ustar00rootroot00000000000000/*************************************************************************** ServerEditorController.h ------------------- begin : Tue May 6 22:58:36 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class ServerEditorController; #ifndef SERVER_EDITOR_CONTROLLER_H #define SERVER_EDITOR_CONTROLLER_H #import @class NSTextField, NSButton, NSWindow, NSTextView; @interface ServerEditorController : NSObject { NSButton *connectButton; NSTextView *commandsText; NSTextField *portField; NSTextField *serverField; NSTextField *userField; NSTextField *realField; NSTextField *passwordField; NSTextField *extraField; NSButton *okButton; NSTextField *entryField; NSWindow *window; NSTextField *nickField; } - (NSButton *)connectButton; - (NSTextView *)commandsText; - (NSTextField *)portField; - (NSTextField *)serverField; - (NSTextField *)userField; - (NSTextField *)realField; - (NSTextField *)passwordField; - (NSTextField *)extraField; - (NSButton *)okButton; - (NSTextField *)entryField; - (NSWindow *)window; - (NSTextField *)nickField; - (void)setConnect: (id)sender; - (void)setCommands: (id)sender; - (void)setPort: (id)sender; - (void)setServer: (id)sender; - (void)setUser: (id)sender; - (void)setPassword: (id)sender; - (void)setReal: (id)sender; - (void)setNick: (id)sender; - (void)setEntry: (id)sender; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerEditorController.m000066400000000000000000000056301067163320700310110ustar00rootroot00000000000000/*************************************************************************** ServerEditorController.m ------------------- begin : Tue May 6 22:58:36 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ServerEditorController.h" #import #import #import #import #import #import #import #import #import @implementation ServerEditorController - (void)awakeFromNib { [window makeKeyAndOrderFront: nil]; [window makeFirstResponder: entryField]; [commandsText setFrame: [[[commandsText enclosingScrollView] contentView] bounds]]; [commandsText setHorizontallyResizable: NO]; [commandsText setVerticallyResizable: YES]; [commandsText setMinSize: NSMakeSize(0, 0)]; [commandsText setMaxSize: NSMakeSize(1e7, 1e7)]; [commandsText setTextContainerInset: NSMakeSize(2, 2)]; [[commandsText textContainer] setWidthTracksTextView: YES]; [[commandsText textContainer] setHeightTracksTextView: NO]; [commandsText setNeedsDisplay: YES]; } - (void)dealloc { DESTROY(window); [super dealloc]; } - (NSButton *)connectButton { return connectButton; } - (NSTextView *)commandsText { return commandsText; } - (NSTextField *)portField { return portField; } - (NSTextField *)serverField { return serverField; } - (NSTextField *)userField { return userField; } - (NSTextField *)realField { return realField; } - (NSTextField *)passwordField { return passwordField; } - (NSTextField *)extraField { return extraField; } - (NSButton *)okButton { return okButton; } - (NSTextField *)entryField { return entryField; } - (NSWindow *)window { return window; } - (NSTextField *)nickField { return nickField; } - (void)setConnect: (id)sender { } - (void)setCommands: (id)sender { } - (void)setPort: (id)sender { } - (void)setServer: (id)sender { } - (void)setUser: (id)sender { } - (void)setPassword: (id)sender { } - (void)setReal: (id)sender { } - (void)setNick: (id)sender { } - (void)setEntry: (id)sender { } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerInspector.h000066400000000000000000000024771067163320700274660ustar00rootroot00000000000000/*************************************************************************** ServerInspector.h ------------------- begin : Mon Jan 19 12:00:37 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class ServerInspector; #ifndef SERVER_INSPECTOR_H #define SERVER_INSPECTOR_H #import @interface ServerInspector : NSObject { } - registerMaster: (id )aMaster; - unregisterMaster: (id )aMaster; - reloadMaster: (id )aMaster; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerInspector.m000066400000000000000000000017741067163320700274720ustar00rootroot00000000000000/*************************************************************************** ServerInspector.m ------------------- begin : Mon Jan 19 12:00:37 CST 2004 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerListConnectionController.h000066400000000000000000000027771067163320700325220ustar00rootroot00000000000000/*************************************************************************** ServerListConnectionController.h ------------------- begin : Wed May 7 03:31:51 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef SERVER_LIST_CONNECTION_CONTROLLER_H #define SERVER_LIST_CONNECTION_CONTROLLER_H #import "Controllers/ConnectionController.h" @class NSDictionary, NSNotification, NSMutableDictionary; @interface ServerListConnectionController : ConnectionController { int serverRow; int serverGroup; NSDictionary *oldInfo; NSMutableDictionary *newInfo; } - initWithServerListDictionary: (NSDictionary *)info inGroup: (int)group atRow: (int)row withContentController: (id)aContent; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerListConnectionController.m000066400000000000000000000141731067163320700325200ustar00rootroot00000000000000/*************************************************************************** ServerListConnectionController.m ------------------- begin : Wed May 7 03:31:51 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ServerListConnectionController.h" #import "Controllers/ServerListController.h" #import "Controllers/InputController.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/ContentControllers/ContentController.h" #import #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import @implementation ServerListConnectionController - initWithServerListDictionary: (NSDictionary *)aInfo inGroup: (int)group atRow: (int)row withContentController: (id)aContent { id tmp; id tmppref; tmp = [NSMutableDictionary dictionaryWithDictionary: aInfo]; if ([[tmp objectForKey: IRCDefaultsNick] length] == 0) { tmppref = [_PREFS_ preferenceForKey: IRCDefaultsNick]; if (tmppref) [tmp setObject: [_PREFS_ preferenceForKey: IRCDefaultsNick] forKey: IRCDefaultsNick]; } if ([[tmp objectForKey: IRCDefaultsUserName] length] == 0) { tmppref = [_PREFS_ preferenceForKey: IRCDefaultsUserName]; if (tmppref) [tmp setObject: [_PREFS_ preferenceForKey: IRCDefaultsUserName] forKey: IRCDefaultsUserName]; } if ([[tmp objectForKey: IRCDefaultsRealName] length] == 0) { tmppref = [_PREFS_ preferenceForKey: IRCDefaultsRealName]; if (tmppref) [tmp setObject: [_PREFS_ preferenceForKey: IRCDefaultsRealName] forKey: IRCDefaultsRealName]; } if ([[tmp objectForKey: IRCDefaultsPassword] length] == 0) { tmppref = [_PREFS_ preferenceForKey: IRCDefaultsPassword]; if (tmppref) [tmp setObject: [_PREFS_ preferenceForKey: IRCDefaultsPassword] forKey: IRCDefaultsPassword]; } if (!(self = [super initWithIRCInfoDictionary: tmp withContentController: aContent])) return nil; oldInfo = RETAIN(aInfo); newInfo = [[NSMutableDictionary alloc] initWithDictionary: aInfo]; serverRow = row; serverGroup = group; if ((tmp = [aInfo objectForKey: ServerListInfoWindowFrame]) && !aContent) { NSRect a = NSRectFromString(tmp); [[[[self contentController] primaryMasterController] window] setFrame: a display: YES]; } if ((tmp = [aInfo objectForKey: ServerListInfoServer])) { int port = [[aInfo objectForKey: ServerListInfoPort] intValue]; [self connectToServer: tmp onPort: port]; } return self; } - newConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id tmp, invoc; if ((tmp = [newInfo objectForKey: ServerListInfoEncoding])) { invoc = [_TS_ invocationForCommand: @"encoding"]; [invoc setArgument: &tmp atIndex: 2]; [invoc setArgument: &aConnection atIndex: 3]; [invoc invoke]; tmp = nil; [invoc setArgument: &tmp atIndex: 2]; [invoc setArgument: &tmp atIndex: 3]; } [super newConnection: aConnection withNickname: aNick sender: aPlugin]; return self; } - lostConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { NSString *tmp = [_TS_ identifierForEncoding: [aConnection encoding]]; [newInfo setObject: tmp forKey: ServerListInfoEncoding]; [super lostConnection: aConnection withNickname: aNick sender: aPlugin]; [[NSNotificationCenter defaultCenter] removeObserver: self]; return self; } - (void)dealloc { RELEASE(newInfo); RELEASE(oldInfo); [super dealloc]; } - registeredWithServerOnConnection: (id)aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { id tmp; if ([tmp = [newInfo objectForKey: ServerListInfoCommands] length] > 0) { id views = [[content primaryMasterController] viewControllerListForContentController: content]; id view = ([views count]) ? [views objectAtIndex: 0] : nil; id input; id lines, object, object2; NSEnumerator *iter, *iter2; if (view && (input = [content typingControllerForViewController: view])) { lines = [tmp componentsSeparatedByString: @"\r\n"]; iter = [lines objectEnumerator]; while ((object = [iter nextObject])) { iter2 = [[object componentsSeparatedByString: @"\n"] objectEnumerator]; while ((object2 = [iter2 nextObject])) { if (![object2 isEqualToString: @""]) { [input processSingleCommand: object2]; } } } } } return [super registeredWithServerOnConnection: aConnection withNickname: aNick sender: aPlugin]; } - (void)windowWillClose: (NSNotification *)aNotification { id window = [aNotification object]; id master = [content masterControllerForName: ContentConsoleName]; if ([master window] != window) return; [newInfo setObject: NSStringFromRect([window frame]) forKey: ServerListInfoWindowFrame]; if (connection) { [newInfo setObject: [_TS_ identifierForEncoding: [connection encoding]] forKey: ServerListInfoEncoding]; } if ([[ServerListController serverInGroup: serverGroup row: serverRow] isEqual: oldInfo]) { [ServerListController setServer: newInfo inGroup: serverGroup row: serverRow]; } [super windowWillClose: aNotification]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerListController.h000066400000000000000000000052271067163320700304730ustar00rootroot00000000000000/*************************************************************************** ServerListController.h ------------------- begin : Wed Apr 30 14:31:01 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class ServerListController; @class NSString; extern NSString *ServerListInfoWindowFrame; extern NSString *ServerListInfoEncoding; extern NSString *ServerListInfoServer; extern NSString *ServerListInfoPort; extern NSString *ServerListInfoName; extern NSString *ServerListInfoEntries; extern NSString *ServerListInfoCommands; extern NSString *ServerListInfoAutoConnect; #ifndef SERVER_LIST_CONTROLLER_H #define SERVER_LIST_CONTROLLER_H #import @class NSButton, NSBrowser, NSWindow, NSTableColumn, NSScrollView, NSArray; @class NSDictionary, NSMutableArray; @interface ServerListController : NSObject { NSButton *connectButton; NSButton *addGroupButton; NSButton *removeButton; NSButton *addEntryButton; NSButton *editButton; NSButton *forceButton; NSBrowser *browser; NSScrollView *scrollView; NSWindow *window; NSTableColumn *serverColumn; NSMutableArray *cached; id editor; int wasEditing; } + (BOOL)saveServerListPreferences: (NSArray *)aPrefs; + (NSMutableArray *)serverListPreferences; + (BOOL)startAutoconnectServers; + (void)setServer: (NSDictionary *)x inGroup: (int)group row: (int)row; + (NSDictionary *)serverInGroup: (int)group row: (int)row; - (BOOL)saveServerListPreferences: (NSArray *)aPrefs; - (NSMutableArray *)serverListPreferences; - (BOOL)serverFound: (NSDictionary *)x inGroup: (int *)group row: (int *)row; - (void)editHit: (NSButton *)sender; - (void)addEntryHit: (NSButton *)sender; - (void)removeHit: (NSButton *)sender; - (void)connectHit: (NSButton *)sender; - (void)addGroupHit: (NSButton *)sender; - (void)forceHit: (NSButton *)sender; - (NSBrowser *)browser; - (NSWindow *)window; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/ServerListController.m000066400000000000000000000520331067163320700304750ustar00rootroot00000000000000/*************************************************************************** ServerListController.m ------------------- begin : Wed Apr 30 14:30:59 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/ServerListController.h" #import "Controllers/GroupEditorController.h" #import "Controllers/ServerEditorController.h" #import "Controllers/ServerListConnectionController.h" #import "Controllers/ContentControllers/ContentController.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *ServerListInfoEncoding = @"Encoding"; NSString *ServerListInfoWindowFrame = @"WindowFrame"; NSString *ServerListInfoCommands = @"Commands"; NSString *ServerListInfoServer = @"Server"; NSString *ServerListInfoPort = @"Port"; NSString *ServerListInfoName = @"Name"; NSString *ServerListInfoEntries = @"Entries"; NSString *ServerListInfoAutoConnect = @"AutoConnect"; NSString *ServerListFavorites = @"Favorites"; #define APP_SUPPORT @"/ApplicationSupport/" #ifndef GNUSTEP #undef APP_SUPPORT #define APP_SUPPORT @"/Application Support/" #endif #define RSRC_DIR @"/Resources/" #ifndef GNUSTEP #undef RSRC_DIR #define RSRC_DIR @"/Contents/Resources/" #endif static NSMutableArray *add_favorites(NSMutableArray *anArray) { NSEnumerator *iter; id object; iter = [anArray objectEnumerator]; while ((object = [iter nextObject])) { if ([[object objectForKey: ServerListInfoName] isEqualToString: _l(ServerListFavorites)]) { return anArray; } } object = AUTORELEASE([NSMutableDictionary new]); [object setObject: _l(ServerListFavorites) forKey: ServerListInfoName]; [object setObject: AUTORELEASE([NSMutableArray new]) forKey: ServerListInfoEntries]; [anArray addObject: object]; return anArray; } static id mutable_object(id object) { if ( [object isKindOfClass: [NSString class]] && ![object isKindOfClass: [NSMutableString class]]) { return [NSMutableString stringWithString: object]; } else if ( [object isKindOfClass: [NSDictionary class]] ) { id dict = [NSMutableDictionary dictionaryWithCapacity: [object count]]; id iter; id iterobj; iter = [object keyEnumerator]; while ((iterobj = [iter nextObject])) { [dict setObject: mutable_object([object objectForKey: iterobj]) forKey: iterobj]; } return dict; } else if ( [ object isKindOfClass: [NSArray class]] ) { id arr = [NSMutableArray arrayWithCapacity: [object count]]; id iter; id iterobj; iter = [object objectEnumerator]; while ((iterobj = [iter nextObject])) { [arr addObject: mutable_object(iterobj)]; } return arr; } return object; } static int sort_server_dictionary(id first, id second, void *x) { if ([[first objectForKey: ServerListInfoName] isEqualToString: _l(ServerListFavorites)]) return NSOrderedAscending; if ([[second objectForKey: ServerListInfoName] isEqualToString: _l(ServerListFavorites)]) return NSOrderedDescending; return [[first objectForKey: ServerListInfoName] caseInsensitiveCompare: [second objectForKey: ServerListInfoName]]; } /* Giant hack alert! This reloads a column then attempts * to pretty much restore it's position. */ static void reload_column(NSBrowser *browse, int col) { id matrix; NSPoint myPos; NSRect visRect; int row1, row2; int col1, col2; int row3, rows; if (!browse) return; matrix = [browse matrixInColumn: col]; if (!matrix) { [browse reloadColumn: col]; return; } visRect = [matrix visibleRect]; myPos = visRect.origin; [matrix getRow: &row1 column: &col1 forPoint: myPos]; myPos = visRect.origin; myPos.y += visRect.size.height; [matrix getRow: &row2 column: &col2 forPoint: myPos]; row3 = [browse selectedRowInColumn: col]; [browse reloadColumn: col]; matrix = [browse matrixInColumn: col]; rows = [matrix numberOfRows]; if (row2 > rows) row2 = rows; if (row3 > rows) row3 = rows; if (row1 > rows) row1 = rows; [browse selectRow: row2 inColumn: col]; [browse selectRow: row1 inColumn: col]; if (row3 <= row2 && row3 >= row1) [browse selectRow: row3 inColumn: col]; } @implementation ServerListController + (BOOL)saveServerListPreferences: (NSArray *)aPrefs { NSArray *x; NSFileManager *fm; NSEnumerator *iter; id object; BOOL isDir; NSString *subdir; if (!aPrefs) return NO; x = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); fm = [NSFileManager defaultManager]; iter = [x objectEnumerator]; subdir = APP_SUPPORT @"TalkSoup"; while ((object = [iter nextObject])) { NSString *fullPath = [object stringByAppendingString: subdir]; /* Recursively create the directory if it does not exist */ if (![fm fileExistsAtPath: fullPath isDirectory: &isDir]) { NSArray *level; id object2; NSEnumerator *iter; NSMutableString *sofar = AUTORELEASE([NSMutableString new]); NSString *test; level = [subdir pathComponents]; iter = [level objectEnumerator]; [iter nextObject]; while ((object2 = [iter nextObject])) { [sofar appendString: @"/"]; [sofar appendString: object2]; test = [object stringByAppendingString: sofar]; if ([fm fileExistsAtPath: test isDirectory: &isDir]) { if (isDir) continue; break; } if (![fm createDirectoryAtPath: test attributes: nil]) break; } } if ([fm fileExistsAtPath: fullPath isDirectory: &isDir] && isDir) { id dict = AUTORELEASE([NSMutableDictionary new]); object = [fullPath stringByAppendingString: @"/ServerList.plist"]; [dict setObject: aPrefs forKey: @"Servers"]; if ([dict writeToFile: object atomically: YES]) { return YES; } } } return NO; } + (NSMutableArray *)serverListPreferences { NSArray *x; NSFileManager *fm; NSEnumerator *iter; id object; BOOL isDir; NSMutableArray *subdirs; fm = [NSFileManager defaultManager]; subdirs = AUTORELEASE([NSMutableArray new]); x = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); iter = [x objectEnumerator]; while ((object = [iter nextObject])) { object = [object stringByAppendingString: APP_SUPPORT @"TalkSoup"]; [subdirs addObject: object]; } [subdirs addObject: [[NSBundle bundleForClass: [GNUstepOutput class]] resourcePath]]; iter = [subdirs objectEnumerator]; while ((object = [iter nextObject])) { object = [object stringByAppendingString: @"/ServerList.plist"]; if ([fm fileExistsAtPath: object isDirectory: &isDir] && !isDir) { id dict = [NSDictionary dictionaryWithContentsOfFile: object]; id obj; if (dict && (obj = [dict objectForKey: @"Servers"]) && [obj isKindOfClass: [NSArray class]]) { return add_favorites(mutable_object(obj)); } } } return add_favorites(AUTORELEASE([NSMutableArray new])); } + (BOOL)startAutoconnectServers { id tmp = [ServerListController serverListPreferences]; NSEnumerator *iter; NSEnumerator *iter2; BOOL hadOne = NO; id o1, o2; int g = 0, r; iter = [tmp objectEnumerator]; while ((o1 = [iter nextObject])) { iter2 = [[o1 objectForKey: ServerListInfoEntries] objectEnumerator]; r = 0; while ((o2 = [iter2 nextObject])) { if ([[o2 objectForKey: ServerListInfoAutoConnect] isEqualToString: @"YES"]) { AUTORELEASE([[ServerListConnectionController alloc] initWithServerListDictionary: o2 inGroup: g atRow: r withContentController: nil]); hadOne = YES; } r++; } g++; } return hadOne; } + (void)setServer: (NSDictionary *)x inGroup: (int)group row: (int)row { id tmp = [ServerListController serverListPreferences]; id array; if (group >= (int)[tmp count] || group < 0) return; array = [[tmp objectAtIndex: group] objectForKey: ServerListInfoEntries]; if (row >= (int)[tmp count] || row < 0) return; [array replaceObjectAtIndex: row withObject: x]; [ServerListController saveServerListPreferences: tmp]; } + (NSDictionary *)serverInGroup: (int)group row: (int)row { id tmp = [self serverListPreferences]; if (group >= (int)[tmp count] || group < 0) return nil; tmp = [[tmp objectAtIndex: group] objectForKey: ServerListInfoEntries]; if (row >= (int)[tmp count] || row < 0) return nil; return [tmp objectAtIndex: row]; } - (BOOL)saveServerListPreferences: (NSArray *)aPrefs { AUTORELEASE(cached); cached = nil; return [ServerListController saveServerListPreferences: aPrefs]; } - (NSMutableArray *)serverListPreferences { if (!cached) { cached = RETAIN([ServerListController serverListPreferences]); [cached sortUsingFunction: sort_server_dictionary context: 0]; } return cached; } - (BOOL)serverFound: (NSDictionary *)x inGroup: (int *)group row: (int *)row { id tmp = [self serverListPreferences]; NSEnumerator *iter; NSEnumerator *iter2; id o1, o2; int g = 0, r; iter = [tmp objectEnumerator]; while ((o1 = [iter nextObject])) { iter2 = [[o1 objectForKey: ServerListInfoEntries] objectEnumerator]; r = 0; while ((o2 = [iter2 nextObject])) { if ([o2 isEqual: x]) { if (group) *group = g; if (row) *row = r; return YES; } r++; } g++; } return NO; } - (void)awakeFromNib { id tmp; [browser setMaxVisibleColumns: 2]; [browser setHasHorizontalScroller: NO]; [browser setAllowsMultipleSelection: NO]; [browser setAllowsEmptySelection: NO]; [browser setAllowsBranchSelection: NO]; [browser setDoubleAction: @selector(connectHit:)]; [browser setDelegate: self]; [browser setTarget: self]; [window setDelegate: self]; [window makeKeyAndOrderFront: nil]; tmp = [self serverListPreferences]; [browser reloadColumn: 0]; [window makeFirstResponder: browser]; RETAIN(self); wasEditing = -1; } - (void)dealloc { RELEASE(window); [[editor window] close]; [super dealloc]; } - (void)editorDone: (id)sender { id string; if (!editor) return; string = AUTORELEASE(RETAIN([[editor entryField] stringValue])); if ([string length] == 0) { [[editor extraField] setStringValue: _l(@"Specify entry name")]; [[editor window] makeFirstResponder: [editor entryField]]; return; } if ([editor isKindOfClass: [GroupEditorController class]]) { NSMutableArray *x; id newOne; x = [self serverListPreferences]; if (wasEditing != -1 && wasEditing < (int)[x count]) { newOne = [x objectAtIndex: wasEditing]; [newOne setObject: string forKey: ServerListInfoName]; [x replaceObjectAtIndex: wasEditing withObject: newOne]; } else { newOne = [NSDictionary dictionaryWithObjectsAndKeys: string, ServerListInfoName, AUTORELEASE([NSArray new]), ServerListInfoEntries, nil]; [x addObject: newOne]; } [self saveServerListPreferences: x]; reload_column(browser, 0); [[editor window] close]; [window makeKeyAndOrderFront: nil]; } else if ([editor isKindOfClass: [ServerEditorController class]]) { id server = [[editor serverField] stringValue]; id commands = [[editor commandsText] string]; id nick = [[editor nickField] stringValue]; id user = [[editor userField] stringValue]; id real = [[editor realField] stringValue]; id password = [[editor passwordField] stringValue]; id port = [[editor portField] stringValue]; int first = [browser selectedRowInColumn: 0]; id autoconnect; id array; id newOne; id prefs = [self serverListPreferences]; if ([server length] == 0) { [[editor extraField] setStringValue: _l(@"Specify the server")]; [[editor window] makeFirstResponder: [editor serverField]]; return; } if ([port length] == 0) { port = @"6667"; } if (first >= (int)[prefs count] || first < 0) { return; } if ([[editor connectButton] state] == NSOnState) { autoconnect = @"YES"; } else { autoconnect = @"NO"; } array = [[prefs objectAtIndex: first] objectForKey: ServerListInfoEntries]; if (wasEditing != -1 && wasEditing < (int)[array count]) { newOne = [array objectAtIndex: wasEditing]; [newOne setObject: server forKey: ServerListInfoServer]; [newOne setObject: commands forKey: ServerListInfoCommands]; [newOne setObject: nick forKey: IRCDefaultsNick]; [newOne setObject: real forKey: IRCDefaultsRealName]; [newOne setObject: password forKey: IRCDefaultsPassword]; [newOne setObject: user forKey: IRCDefaultsUserName]; [newOne setObject: port forKey: ServerListInfoPort]; [newOne setObject: string forKey: ServerListInfoName]; [newOne setObject: autoconnect forKey: ServerListInfoAutoConnect]; [array replaceObjectAtIndex: wasEditing withObject: newOne]; } else { newOne = [NSDictionary dictionaryWithObjectsAndKeys: server, ServerListInfoServer, commands, ServerListInfoCommands, nick, IRCDefaultsNick, real, IRCDefaultsRealName, password, IRCDefaultsPassword, user, IRCDefaultsUserName, port, ServerListInfoPort, string, ServerListInfoName, autoconnect, ServerListInfoAutoConnect, nil]; [array addObject: newOne]; } [self saveServerListPreferences: prefs]; reload_column(browser, 1); [[editor window] close]; [window makeKeyAndOrderFront: nil]; } } - (void)addEntryHit: (NSButton *)sender { if (editor) { if ([editor isKindOfClass: [ServerEditorController class]]) { [[editor window] makeKeyAndOrderFront: nil]; return; } else { [[editor window] close]; } } if ([browser selectedColumn] < 0) return; editor = [[ServerEditorController alloc] init]; if (![NSBundle loadNibNamed: @"ServerEditor" owner: editor]) { DESTROY(editor); return; } [[editor window] setDelegate: self]; [[editor okButton] setTarget: self]; [[editor okButton] setAction: @selector(editorDone:)]; } - (void)addGroupHit: (NSButton *)sender { if (editor) { if ([editor isKindOfClass: [GroupEditorController class]]) { [[editor window] makeKeyAndOrderFront: nil]; return; } else { [[editor window] close]; } } editor = [[GroupEditorController alloc] init]; if (![NSBundle loadNibNamed: @"GroupEditor" owner: editor]) { DESTROY(editor); return; } [[editor window] setDelegate: self]; [[editor okButton] setTarget: self]; [[editor okButton] setAction: @selector(editorDone:)]; } - (void)editHit: (NSButton *)sender { id tmp = [self serverListPreferences]; int row; id o; if ([browser selectedColumn] == 0) { row = [browser selectedRowInColumn: 0]; if (row >= (int)[tmp count] || row < 0) return; [self addGroupHit: nil]; o = [tmp objectAtIndex: row]; [[editor entryField] setStringValue: [o objectForKey: ServerListInfoName]]; wasEditing = row; } else { int first = [browser selectedRowInColumn: 0]; row = [browser selectedRowInColumn: 1]; if (first >= (int)[tmp count] || first < 0) return; o = [[tmp objectAtIndex: first] objectForKey: ServerListInfoEntries]; if (row >= (int)[o count] || row < 0) return; [self addEntryHit: nil]; o = [o objectAtIndex: row]; [[editor entryField] setStringValue: [o objectForKey: ServerListInfoName]]; [[editor nickField] setStringValue: [o objectForKey: IRCDefaultsNick]]; [[editor realField] setStringValue: [o objectForKey: IRCDefaultsRealName]]; [[editor passwordField] setStringValue: [o objectForKey: IRCDefaultsPassword]]; [[editor userField] setStringValue: [o objectForKey: IRCDefaultsUserName]]; [[editor serverField] setStringValue: [o objectForKey: ServerListInfoServer]]; [[editor portField] setStringValue: [o objectForKey: ServerListInfoPort]]; [[editor commandsText] setString: [o objectForKey: ServerListInfoCommands]]; if ([[o objectForKey: ServerListInfoAutoConnect] isEqualToString: @"YES"]) { [[editor connectButton] setState: NSOnState]; } else { [[editor connectButton] setState: NSOffState]; } wasEditing = row; } } - (void)removeHit: (NSButton *)sender { id prefs = [self serverListPreferences]; int row; if ([browser selectedColumn] == 0) { row = [browser selectedRowInColumn: 0]; if (row >= (int)[prefs count]) return; [prefs removeObjectAtIndex: row]; [self saveServerListPreferences: prefs]; reload_column(browser, 0); } else { id x; int first = [browser selectedRowInColumn: 0]; row = [browser selectedRowInColumn: 1]; if (first >= (int)[prefs count]) return; x = [[prefs objectAtIndex: first] objectForKey: ServerListInfoEntries]; if (row >= (int)[x count]) return; [x removeObjectAtIndex: row]; [self saveServerListPreferences: prefs]; reload_column(browser, 1); } } - (void)connectHit: (NSButton *)sender { id tmp = [self serverListPreferences]; id aContent = nil; id aConnect; int first, row; if ([browser selectedColumn] != 1) return; first = [browser selectedRowInColumn: 0]; row = [browser selectedRowInColumn: 1]; if (first >= (int)[tmp count]) return; tmp = [[tmp objectAtIndex: first] objectForKey: ServerListInfoEntries]; if (row >= (int)[tmp count]) return; if ([forceButton state] == NSOffState) { id tmpArray; tmpArray = [_GS_ unconnectedConnectionControllers]; if ([tmpArray count]) { aConnect = [tmpArray objectAtIndex: 0]; aContent = RETAIN([aConnect contentController]); AUTORELEASE(aContent); [aContent setConnectionController: nil]; [aConnect setContentController: nil]; } } AUTORELEASE(aConnect = [[ServerListConnectionController alloc] initWithServerListDictionary: [tmp objectAtIndex: row] inGroup: first atRow: row withContentController: aContent]); aContent = [aConnect contentController]; [[editor window] close]; [window close]; [[[aContent primaryMasterController] window] makeKeyAndOrderFront: nil]; } - (void)forceHit: (NSButton *)sender { } - (NSBrowser *)browser { return browser; } - (NSWindow *)window { return window; } @end @interface ServerListController (WindowDelegate) @end @implementation ServerListController (WindowDelegate) - (void)windowWillClose: (NSNotification *)aNotification { if ([aNotification object] == window) { [window setDelegate: nil]; [browser setDelegate: nil]; [browser setTarget: nil]; AUTORELEASE(self); } else if ([aNotification object] == [editor window]) { [[editor window] setDelegate: nil]; [[editor okButton] setTarget: nil]; AUTORELEASE(editor); editor = nil; wasEditing = -1; } } @end @interface ServerListController (BrowserDelegate) @end @implementation ServerListController (BrowserDelegate) - (int)browser: (NSBrowser *)sender numberOfRowsInColumn: (int)column { id serverList = [self serverListPreferences]; if (!serverList) { return 0; } if (column == 0) { return [serverList count]; } if (column == 1) { int col = [sender selectedRowInColumn: 0]; id group; if (col >= (int)[serverList count]) { return 0; } group = [serverList objectAtIndex: col]; group = [group objectForKey: ServerListInfoEntries]; return [group count]; } return 0; } - (NSString *)browser: (NSBrowser *)sender titleOfColumn: (int)column { if (column == 0) { return _l(@"Groups"); } if (column == 1) { return _l(@"Servers"); } return @""; } - (void)browser: (NSBrowser *)sender willDisplayCell: (id)cell atRow: (int)row column: (int)column { id serverList = [self serverListPreferences]; if (!serverList) return; if (column == 0) { id tmp; if (row >= (int)[serverList count]) return; tmp = [serverList objectAtIndex: row]; [cell setStringValue: [tmp objectForKey: ServerListInfoName]]; [cell setLeaf: NO]; } else if (column == 1) { id tmp; int first; first = [sender selectedRowInColumn: 0]; if (first >= (int)[serverList count]) return; tmp = [serverList objectAtIndex: first]; tmp = [tmp objectForKey: ServerListInfoEntries]; if (row >= (int)[tmp count]) return; tmp = [tmp objectAtIndex: row]; [cell setStringValue: [tmp objectForKey: ServerListInfoName]]; [cell setLeaf: YES]; } [cell setFont: [NSFont userFontOfSize: 0.0]]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/TopicInspectorController.h000066400000000000000000000035351067163320700313360ustar00rootroot00000000000000/*************************************************************************** TopicInspectorController.h ------------------- begin : Thu May 8 22:40:13 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class TopicInspectorController; #ifndef TOPIC_INSPECTOR_CONTROLLER_H #define TOPIC_INSPECTOR_CONTROLLER_H #import #import "Controllers/ContentControllers/ContentController.h" @class NSView, NSWindow, NSTextField, KeyTextView; @class NSString, ConnectionController, Channel; @interface TopicInspectorController : NSObject { NSView *nothingView; NSView *contentView; NSWindow *window; NSTextField *dateField; NSTextField *authorField; NSTextField *channelField; KeyTextView *topicText; ConnectionController *connection; id content; id view; } - (NSView *)contentView; - (NSView *)nothingView; - (NSWindow *)window; - (NSTextField *)dateField; - (NSTextField *)authorField; - (NSTextField *)channelField; - (KeyTextView *)topicText; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Controllers/TopicInspectorController.m000066400000000000000000000144331067163320700313420ustar00rootroot00000000000000/*************************************************************************** TopicInspectorController.m ------------------- begin : Thu May 8 22:40:13 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Controllers/TopicInspectorController.h" #import "Controllers/ConnectionController.h" #import "GNUstepOutput.h" #import "Views/KeyTextView.h" #import "Models/Channel.h" #import #import #import #import #import #import #import #import #import #import #import #import #import @interface TopicInspectorController (PrivateMethods) - (void)focusedControllerChanged: (NSNotification *)aNotification; - (void)topicChanged: (NSNotification *)aNotification; - (void)suckFieldsFromChannel: (NSString *)aChannel withSource: (Channel *)aSource; - (BOOL)topicKeyHit: (NSEvent *)aEvent sender: (id)sender; - (void)windowDidBecomeKey:(NSNotification *)aNotification; @end @implementation TopicInspectorController - (void)awakeFromNib { id temp = nothingView; nothingView = RETAIN([(NSWindow *)temp contentView]); AUTORELEASE(temp); contentView = RETAIN([(NSWindow *)window contentView]); [window setContentView: nothingView]; [topicText setFrame: [[[topicText enclosingScrollView] contentView] bounds]]; [topicText setHorizontallyResizable: NO]; [topicText setVerticallyResizable: YES]; [topicText setMinSize: NSMakeSize(0, 0)]; [topicText setMaxSize: NSMakeSize(1e7, 1e7)]; [topicText setTextContainerInset: NSMakeSize(2, 2)]; [[topicText textContainer] setWidthTracksTextView: YES]; [[topicText textContainer] setHeightTracksTextView: YES]; [topicText setEditable: YES]; [topicText setSelectable: YES]; [topicText setRichText: NO]; [topicText setNeedsDisplay: YES]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(focusedControllerChanged:) name: ContentControllerSelectedNameNotification object: nil]; [topicText setKeyTarget: self]; [topicText setKeyAction: @selector(topicKeyHit:sender:)]; [window setDelegate: self]; } - (void)dealloc { [window setDelegate: nil]; [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(nothingView); RELEASE(contentView); RELEASE(window); RELEASE(connection); [super dealloc]; } - (NSView *)contentView { return contentView; } - (NSView *)nothingView { return nothingView; } - (NSWindow *)window { return window; } - (NSTextField *)dateField { return dateField; } - (NSTextField *)authorField { return authorField; } - (NSTextField *)channelField { return channelField; } - (KeyTextView *)topicText { return topicText; } @end @implementation TopicInspectorController (PrivateMethods) - (void)focusedControllerChanged: (NSNotification *)aNotification { id userInfo = nil; id name = nil; id data = nil; id tempView; [[NSNotificationCenter defaultCenter] removeObserver: self name: ConnectionControllerUpdatedTopicNotification object: nil]; view = nil; connection = nil; content = nil; userInfo = [aNotification userInfo]; tempView = [userInfo objectForKey: @"View"]; if ([tempView conformsToProtocol: @protocol(ContentControllerChannelController)]) { content = [aNotification object]; userInfo = [aNotification userInfo]; view = tempView; connection = [content connectionController]; name = [content presentationalNameForName: [content nameForViewController: view]]; data = [view channelSource]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(topicChanged:) name: ConnectionControllerUpdatedTopicNotification object: view]; } [self suckFieldsFromChannel: name withSource: data]; } - (void)topicChanged: (NSNotification *)aNotification { id name, data; if ([aNotification object] == view) { name = [content presentationalNameForName: [content nameForViewController: view]]; data = [view channelSource]; [self suckFieldsFromChannel: name withSource: data]; } } - (void)suckFieldsFromChannel: (NSString *)aChannel withSource: (Channel *)aSource { id topicDate; id topicAuthor; id topic; if (!aChannel || !aSource) { [window setContentView: nothingView]; } else { topicDate = [aSource topicDate]; topicAuthor = [aSource topicAuthor]; topic = [aSource topic]; if (!topicDate) topicDate = @""; if (!topicAuthor) topicAuthor = @""; if (!topic) topic = @""; [window setContentView: contentView]; [channelField setStringValue: aChannel]; [dateField setStringValue: topicDate]; [authorField setStringValue: topicAuthor]; [topicText setString: topic]; } } - (BOOL)topicKeyHit: (NSEvent *)aEvent sender: (id)sender { id channel; NSString *characters = [aEvent characters]; unichar character = 0; if ([characters length] == 0) { return YES; } character = [characters characterAtIndex: 0]; if ( (character != NSCarriageReturnCharacter) && (character != NSEnterCharacter) && (character != NSFormFeedCharacter)) return YES; channel = [channelField stringValue]; if (connection) { id realConnect = [connection connection]; [_TS_ setTopicForChannel: S2AS(channel) to: S2AS([sender string]) onConnection: realConnect withNickname: S2AS([realConnect nick]) sender: _GS_]; } return NO; } - (void)windowDidBecomeKey:(NSNotification *)aNotification { [window makeFirstResponder: topicText]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/000077500000000000000000000000001067163320700243565ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.gorm/000077500000000000000000000000001067163320700307145ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.gorm/data.classes000066400000000000000000000007101067163320700332020ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; BundlePreferencesController = { Actions = ( "showingSelected:" ); Outlets = ( preferencesView, descriptionText, availableTable, loadedTable, showingPopUp ); Super = NSObject; }; FirstResponder = { Actions = ( "showingSelected:" ); Super = NSObject; }; NewClass = { Actions = ( ); Outlets = ( ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.gorm/data.info000066400000000000000000000002701067163320700325010ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.gorm/objects.gorm000066400000000000000000000161521067163320700332400ustar00rootroot00000000000000GNUstep archive00002af9:00000028:000000bf:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString& %  TableColumn201 NSTableColumn0&%loaded C A GP01NSTableHeaderCell1NSTextFieldCell1 NSActionCell1 NSCell0&%Loaded01 NSFont% &&&&&&&&0%0 1 NSColor0 &%NSNamedColorSpace0 &%System0 &%controlShadowColor0 0&%System0&%windowFrameTextColor00&%six0 %&&&&&&&&0%0 0&%textBackgroundColor0 0& % textColor0& %  ScrollView101 NSScrollView1NSView1 NSResponder% C B C, B  C, B&01NSMutableArray1NSArray&01 NSClipView% A A C B  C B&0&01 NSTableView1 NSControl%  C C!  C C!&0&%0 0&&&&&&&&&0 &0! 0"& % gridColor0# 0$&%controlBackgroundColor0%1NSTableHeaderView%  C A  C A&0&&0'1GSTableCornerView% @ @ A A  A A&0(&%% A @ @@#0)1 NSScroller% @ A A B  A B&0*&%0+ &&&&&&&&&2 _doScroll:v12@0:4@80,% A @ C A  C A&0-&%0. 0/& % controlColor'% A A A A ),00& %  TableColumn30102&%column2 B A GP0304&% &&&&&&&&0%05 06&%System07& % controlColor 0809&%five9&&&&&&&&0%0: 0;&%textBackgroundColor0< 0=& % textColor0>&%NSOwner0?&% BundlePreferencesController0@& %  ScrollView20A % @ @ C B  C B&"0B&0C% A @ Cހ B A @ Cހ B&0D&0E1 NSTextView1NSText% A @ Cހ B  Cހ B&0F&0G 0H&% System0I& % controlColor  K K0J 0K&%System0L& % textColor Cހ KG0M% @ @ A B  A B&0N&%0O 0P&&&&&&&&&&AC% A A A A M0Q& % ScrollView0R % C B C' B  C' B&0S&0T% A A C B  C B&0U&0V%  C C!  C C!&0W&%0X 0Y&&&&&&&&&0Z&0[0\& % available C A GP0]0^& % Available&&&&&&&&0% 0_ 0`&%System0a&%windowFrameTextColor0b&&&&&&&&0%0c `0d&%textBackgroundColor0e `0f& % textColor0g `0h& % gridColor0i 0j&% System0k&%controlBackgroundColor0l%  C A  C A&0m&0n% @ @ A A  A A&0o&%% A @ @@i0p% A @ C A  C A&0q&l0r `0s& % controlColor0t% @ A A B  A B&0u&%0v Y&&&&&&&&&RnT% A A A A tp0w& % GormNSWindow0x1NSWindow%  C Cw&% C D0y%  C Cw  C Cw&0z&R0{1 NSPopUpButton1NSButton% @ C[ B A  B A& 0|&%0}1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell0~&0 %&&&&&&&&01 NSMenu0&0&01! NSMenuItem0& % Input Plugins0&&&%01"NSImage0& % common_Nibble%0!0&%Output Plugins&&%%%0&0&&&&%%%%%A0 0&%System0&%windowBackgroundColor0&%Window0&%Window0&%Window ? A F@ F@%0"0&%NSApplicationIcon0&%TextViewE0&%GSCustomClassMap0&0&%GormNSPopUpButton{0& %  MenuItem10& % TableColumn[0&%GormNSTableViewV0&% GormNSTableView10&%MenuItem0& %  TableColumn100&%column2 B A GP00&% &&&&&&&&0%5_099&&&&&&&&0%ce0&01#NSNibConnectorw0&%NSOwner01$NSNibOutletConnectorw0&%preferencesView0#Q0#0#0#0#0#0#0#00#0#@0#0#0#0$0&%descriptionText0$0&%availableTable0$0& % loadedTable0$0& % showingPopUp01%NSNibControlConnector0&% showingSelected:01& GSMutableSet1' NSMutableSet1(NSSet&xTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.nib/000077500000000000000000000000001067163320700305205ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.nib/classes.nib000066400000000000000000000010321067163320700326430ustar00rootroot00000000000000{ IBClasses = ( { ACTIONS = {showingSelected = id; }; CLASS = BundlePreferencesController; LANGUAGE = ObjC; OUTLETS = { availableTable = id; descriptionText = id; loadedTable = id; preferencesView = id; showingPopUp = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.nib/info.nib000066400000000000000000000007541067163320700321530ustar00rootroot00000000000000 IBDocumentLocation 69 64 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving keyedobjects.nib000066400000000000000000002042251067163320700336130ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.nib $archiver NSKeyedArchiver $objects $null $class CF$UID 247 NSClassesKeys CF$UID 221 NSClassesValues CF$UID 222 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 207 NSNamesValues CF$UID 208 NSNextOid 28 NSObjectsKeys CF$UID 204 NSObjectsValues CF$UID 206 NSOidsKeys CF$UID 223 NSOidsValues CF$UID 224 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 BundlePreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 42 NS.objects CF$UID 9 CF$UID 191 CF$UID 194 CF$UID 196 CF$UID 198 CF$UID 200 CF$UID 202 $class CF$UID 190 NSDestination CF$UID 116 NSLabel CF$UID 189 NSSource CF$UID 10 $class CF$UID 188 NSMaxSize CF$UID 187 NSMinSize CF$UID 186 NSScreenRect CF$UID 185 NSViewClass CF$UID 15 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 14 NSWindowRect CF$UID 11 NSWindowStyleMask 14 NSWindowTitle CF$UID 12 NSWindowView CF$UID 16 {{332, 134}, {470, 310}} $class CF$UID 13 NS.string Window $classes NSMutableString NSString NSObject $classname NSMutableString NSWindow $class CF$UID 13 NS.string View $class CF$UID 184 NSFrame CF$UID 183 NSNextResponder CF$UID 0 NSSubviews CF$UID 17 $class CF$UID 42 NS.objects CF$UID 18 CF$UID 83 CF$UID 112 CF$UID 156 $class CF$UID 82 NSContentView CF$UID 20 NSFrame CF$UID 81 NSHScroller CF$UID 78 NSNextKeyView CF$UID 20 NSNextResponder CF$UID 16 NSSubviews CF$UID 19 NSSuperview CF$UID 16 NSVScroller CF$UID 74 NSsFlags 18 NSvFlags 290 $class CF$UID 42 NS.objects CF$UID 20 CF$UID 74 CF$UID 78 $class CF$UID 73 NSBGColor CF$UID 46 NSCursor CF$UID 71 NSDocView CF$UID 22 NSFrame CF$UID 70 NSNextKeyView CF$UID 22 NSNextResponder CF$UID 18 NSSubviews CF$UID 21 NSSuperview CF$UID 18 NScvFlags 4 NSvFlags 2304 $class CF$UID 42 NS.objects CF$UID 22 $class CF$UID 69 NSDelegate CF$UID 0 NSDragTypes CF$UID 23 NSFrameSize CF$UID 35 NSMaxSize CF$UID 68 NSNextResponder CF$UID 20 NSSharedData CF$UID 45 NSSuperview CF$UID 20 NSTVFlags 6 NSTextContainer CF$UID 36 NSvFlags 2066 $class CF$UID 7 NS.objects CF$UID 24 CF$UID 25 CF$UID 26 CF$UID 27 CF$UID 28 CF$UID 29 CF$UID 30 CF$UID 31 CF$UID 32 CF$UID 33 CF$UID 34 Apple PDF pasteboard type Apple PICT pasteboard type NSStringPboardType NeXT Rich Text Format v1.0 pasteboard type NeXT Encapsulated PostScript v1.2 pasteboard type Apple HTML pasteboard type NSFilenamesPboardType NeXT TIFF v4.0 pasteboard type NeXT RTFD pasteboard type CorePasteboardFlavorType 0x6D6F6F76 NSColor pasteboard type {433, 111} $class CF$UID 44 NSLayoutManager CF$UID 37 NSTCFlags 1 NSTextView CF$UID 22 NSWidth 433 $class CF$UID 43 NSDelegate CF$UID 0 NSLMFlags 6 NSTextContainers CF$UID 41 NSTextStorage CF$UID 38 $class CF$UID 40 NSDelegate CF$UID 0 NSString CF$UID 39 $class CF$UID 13 NS.string $classes NSTextStorage NSMutableAttributedString NSAttributedString NSObject $classname NSTextStorage $class CF$UID 42 NS.objects CF$UID 36 $classes NSMutableArray NSArray NSObject $classname NSMutableArray $classes NSLayoutManager NSObject $classname NSLayoutManager $classes NSTextContainer NSObject $classname NSTextContainer $class CF$UID 67 NSBackgroundColor CF$UID 46 NSDefaultParagraphStyle CF$UID 0 NSFlags 3041 NSInsertionColor CF$UID 48 NSLinkAttributes CF$UID 59 NSMarkedAttributes CF$UID 0 NSSelectedAttributes CF$UID 49 $class CF$UID 47 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 47 NSColorSpace 3 NSWhite MAA= $class CF$UID 58 NS.keys CF$UID 50 CF$UID 51 NS.objects CF$UID 52 CF$UID 56 NSBackgroundColor NSColor $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 55 NSColorName CF$UID 54 NSColorSpace 6 System selectedTextBackgroundColor $class CF$UID 47 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 48 NSColorName CF$UID 57 NSColorSpace 6 selectedTextColor $classes NSDictionary NSObject $classname NSDictionary $class CF$UID 58 NS.keys CF$UID 60 CF$UID 61 CF$UID 51 NS.objects CF$UID 62 CF$UID 63 CF$UID 66 NSUnderline NSCursor 1 $class CF$UID 65 NSCursorType 13 NSHotSpot CF$UID 64 {8, -8} $classes NSCursor NSObject $classname NSCursor $class CF$UID 47 NSColorSpace 1 NSRGB MCAwIDEA $classes NSTextViewSharedData NSObject $classname NSTextViewSharedData {433, 1e+07} $classes NSTextView %NSTextView NSText NSView NSResponder NSObject $classname NSTextView {{1, 1}, {433, 111}} $class CF$UID 65 NSCursorType 1 NSHotSpot CF$UID 72 {4, -5} $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 77 NSAction CF$UID 76 NSCurValue 1 NSFrame CF$UID 75 NSNextResponder CF$UID 18 NSSuperview CF$UID 18 NSTarget CF$UID 18 NSvFlags 256 {{434, 1}, {15, 111}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 77 NSAction CF$UID 80 NSCurValue 1 NSFrame CF$UID 79 NSNextResponder CF$UID 18 NSPercent 0.94565218687057495 NSSuperview CF$UID 18 NSTarget CF$UID 18 NSsFlags 1 NSvFlags 256 {{-100, -100}, {87, 18}} _doScroller: {{10, 10}, {450, 113}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView $class CF$UID 111 NSCell CF$UID 85 NSEnabled NSFrame CF$UID 84 NSNextResponder CF$UID 16 NSSuperview CF$UID 16 NSvFlags 12 {{7, 276}, {135, 26}} $class CF$UID 110 NSAlternateContents CF$UID 90 NSAlternateImage CF$UID 89 NSAltersState NSArrowPosition 1 NSButtonFlags 109199615 NSButtonFlags2 1 NSCellFlags -2076049920 NSCellFlags2 134217728 NSControlView CF$UID 83 NSKeyEquivalent CF$UID 91 NSMenu CF$UID 93 NSMenuItem CF$UID 92 NSPeriodicDelay 400 NSPeriodicInterval 75 NSPreferredEdge 3 NSSupport CF$UID 86 NSUsesItemFromMenu $class CF$UID 88 NSName CF$UID 87 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 88 NSName CF$UID 87 NSSize 13 NSfFlags 16 $class CF$UID 13 NS.string $class CF$UID 13 NS.string $class CF$UID 103 NSAction CF$UID 102 NSKeyEquiv CF$UID 95 NSKeyEquivModMask 1048576 NSMenu CF$UID 93 NSMixedImage CF$UID 100 NSMnemonicLoc 2147483647 NSOnImage CF$UID 96 NSState 1 NSTarget CF$UID 85 NSTitle CF$UID 94 $class CF$UID 109 NSMenuItems CF$UID 105 NSTitle CF$UID 104 Input Plugins $class CF$UID 99 NSClassName CF$UID 97 NSResourceName CF$UID 98 NSImage NSMenuCheckmark $classes NSCustomResource %NSCustomResource NSObject $classname NSCustomResource $class CF$UID 99 NSClassName CF$UID 97 NSResourceName CF$UID 101 NSMenuMixedState _popUpItemAction: $classes NSMenuItem NSObject $classname NSMenuItem $class CF$UID 13 NS.string OtherViews $class CF$UID 42 NS.objects CF$UID 92 CF$UID 106 $class CF$UID 103 NSAction CF$UID 108 NSKeyEquiv CF$UID 95 NSKeyEquivModMask 1048576 NSMenu CF$UID 93 NSMixedImage CF$UID 100 NSMnemonicLoc 2147483647 NSOnImage CF$UID 96 NSTarget CF$UID 85 NSTitle CF$UID 107 Output Plugins _popUpItemAction: $classes NSMenu NSObject $classname NSMenu $classes NSPopUpButtonCell NSMenuItemCell NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSPopUpButtonCell $classes NSPopUpButton NSButton NSControl NSView NSResponder NSObject $classname NSPopUpButton $class CF$UID 82 NSContentView CF$UID 114 NSCornerView CF$UID 122 NSFrame CF$UID 155 NSHScroller CF$UID 150 NSHeaderClipView CF$UID 119 NSNextKeyView CF$UID 114 NSNextResponder CF$UID 16 NSScrollAmts QSAAAEEgAABBmAAAQZgAAA== NSSubviews CF$UID 113 NSSuperview CF$UID 16 NSVScroller CF$UID 147 NSsFlags 18 NSvFlags 278 $class CF$UID 42 NS.objects CF$UID 114 CF$UID 147 CF$UID 150 CF$UID 119 CF$UID 122 $class CF$UID 73 NSBGColor CF$UID 145 NSDocView CF$UID 116 NSFrame CF$UID 144 NSNextKeyView CF$UID 116 NSNextResponder CF$UID 112 NSSubviews CF$UID 115 NSSuperview CF$UID 112 NScvFlags 4 NSvFlags 2304 $class CF$UID 42 NS.objects CF$UID 116 $class CF$UID 143 NSBackgroundColor CF$UID 135 NSCornerView CF$UID 122 NSEnabled NSFrameSize CF$UID 117 NSGridColor CF$UID 140 NSGridStyleMask 2 NSHeaderView CF$UID 118 NSIntercellSpacingHeight 2 NSIntercellSpacingWidth 3 NSNextResponder CF$UID 114 NSRowHeight 17 NSSuperview CF$UID 114 NSTableColumns CF$UID 125 NSTvFlags 314572800 {137, 151} $class CF$UID 121 NSFrameSize CF$UID 120 NSNextResponder CF$UID 119 NSSuperview CF$UID 119 NSTableView CF$UID 116 NSvFlags 256 $class CF$UID 73 NSBGColor CF$UID 145 NSDocView CF$UID 118 NSFrame CF$UID 154 NSNextKeyView CF$UID 118 NSNextResponder CF$UID 112 NSSubviews CF$UID 153 NSSuperview CF$UID 112 NScvFlags 4 NSvFlags 2304 {137, 17} $classes NSTableHeaderView NSView NSResponder NSObject $classname NSTableHeaderView $class CF$UID 124 NSFrame CF$UID 123 NSNextResponder CF$UID 112 NSSuperview CF$UID 112 NSvFlags 256 {{138, 0}, {16, 17}} $classes _NSCornerView NSView NSResponder NSObject $classname _NSCornerView $class CF$UID 42 NS.objects CF$UID 126 $class CF$UID 139 NSDataCell CF$UID 134 NSHeaderCell CF$UID 127 NSIsResizeable NSMaxWidth 1000 NSMinWidth 50.671001434326172 NSTableView CF$UID 116 NSWidth 133.67100524902344 $class CF$UID 133 NSBackgroundColor CF$UID 130 NSCellFlags 75628032 NSCellFlags2 134217728 NSContents CF$UID 128 NSSupport CF$UID 129 NSTextColor CF$UID 131 Loaded $class CF$UID 88 NSName CF$UID 87 NSSize 11 NSfFlags 28 $class CF$UID 47 NSColorSpace 3 NSWhite MC4zMzMzMzI5OQA= $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 48 NSColorName CF$UID 132 NSColorSpace 6 headerTextColor $classes NSTableHeaderCell NSTextFieldCell NSActionCell NSCell NSObject $classname NSTableHeaderCell $class CF$UID 138 NSBackgroundColor CF$UID 135 NSCellFlags 338820672 NSCellFlags2 0 NSControlView CF$UID 116 NSSupport CF$UID 86 NSTextColor CF$UID 136 $class CF$UID 47 NSColorSpace 3 NSWhite MQA= $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 48 NSColorName CF$UID 137 NSColorSpace 6 controlTextColor $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTableColumn NSObject $classname NSTableColumn $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 142 NSColorName CF$UID 141 NSColorSpace 6 gridColor $class CF$UID 47 NSColorSpace 3 NSWhite MC41AA== $classes NSTableView %NSTableView NSControl NSView NSResponder NSObject $classname NSTableView {{1, 17}, {137, 151}} $class CF$UID 47 NSCatalogName CF$UID 53 NSColor CF$UID 55 NSColorName CF$UID 146 NSColorSpace 6 controlBackgroundColor $class CF$UID 77 NSAction CF$UID 149 NSFrame CF$UID 148 NSNextResponder CF$UID 112 NSPercent 0.79473686218261719 NSSuperview CF$UID 112 NSTarget CF$UID 112 NSvFlags 256 {{138, 17}, {15, 151}} _doScroller: $class CF$UID 77 NSAction CF$UID 152 NSFrame CF$UID 151 NSNextResponder CF$UID 112 NSPercent 0.99047619104385376 NSSuperview CF$UID 112 NSTarget CF$UID 112 NSsFlags 1 NSvFlags 256 {{-100, -100}, {120, 15}} _doScroller: $class CF$UID 42 NS.objects CF$UID 118 {{1, 0}, {137, 17}} {{147, 131}, {154, 169}} $class CF$UID 82 NSContentView CF$UID 158 NSCornerView CF$UID 165 NSFrame CF$UID 182 NSHScroller CF$UID 177 NSHeaderClipView CF$UID 163 NSNextKeyView CF$UID 158 NSNextResponder CF$UID 16 NSScrollAmts QSAAAEEgAABBmAAAQZgAAA== NSSubviews CF$UID 157 NSSuperview CF$UID 16 NSVScroller CF$UID 174 NSsFlags 18 NSvFlags 275 $class CF$UID 42 NS.objects CF$UID 158 CF$UID 174 CF$UID 177 CF$UID 163 CF$UID 165 $class CF$UID 73 NSBGColor CF$UID 145 NSDocView CF$UID 160 NSFrame CF$UID 173 NSNextKeyView CF$UID 160 NSNextResponder CF$UID 156 NSSubviews CF$UID 159 NSSuperview CF$UID 156 NScvFlags 4 NSvFlags 2304 $class CF$UID 42 NS.objects CF$UID 160 $class CF$UID 143 NSBackgroundColor CF$UID 135 NSCornerView CF$UID 165 NSEnabled NSFrameSize CF$UID 161 NSGridColor CF$UID 140 NSGridStyleMask 2 NSHeaderView CF$UID 162 NSIntercellSpacingHeight 2 NSIntercellSpacingWidth 3 NSNextResponder CF$UID 158 NSRowHeight 17 NSSuperview CF$UID 158 NSTableColumns CF$UID 167 NSTvFlags 314572800 {134, 151} $class CF$UID 121 NSFrameSize CF$UID 164 NSNextResponder CF$UID 163 NSSuperview CF$UID 163 NSTableView CF$UID 160 NSvFlags 256 $class CF$UID 73 NSBGColor CF$UID 145 NSDocView CF$UID 162 NSFrame CF$UID 181 NSNextKeyView CF$UID 162 NSNextResponder CF$UID 156 NSSubviews CF$UID 180 NSSuperview CF$UID 156 NScvFlags 4 NSvFlags 2304 {134, 17} $class CF$UID 124 NSFrame CF$UID 166 NSNextResponder CF$UID 156 NSSuperview CF$UID 156 NSvFlags 256 {{135, 0}, {16, 17}} $class CF$UID 42 NS.objects CF$UID 168 $class CF$UID 139 NSDataCell CF$UID 172 NSHeaderCell CF$UID 169 NSIsResizeable NSMaxWidth 1000 NSMinWidth 50.671001434326172 NSTableView CF$UID 160 NSWidth 130.67100524902344 $class CF$UID 133 NSBackgroundColor CF$UID 171 NSCellFlags 75628032 NSCellFlags2 134217728 NSContents CF$UID 170 NSSupport CF$UID 129 NSTextColor CF$UID 131 Available $class CF$UID 47 NSColorSpace 3 NSWhite MC4zMzMzMzI5OQA= $class CF$UID 138 NSBackgroundColor CF$UID 135 NSCellFlags 338820672 NSCellFlags2 0 NSControlView CF$UID 160 NSSupport CF$UID 86 NSTextColor CF$UID 136 {{1, 17}, {134, 151}} $class CF$UID 77 NSAction CF$UID 176 NSFrame CF$UID 175 NSNextResponder CF$UID 156 NSPercent 0.79473686218261719 NSSuperview CF$UID 156 NSTarget CF$UID 156 NSvFlags 256 {{135, 17}, {15, 151}} _doScroller: $class CF$UID 77 NSAction CF$UID 179 NSFrame CF$UID 178 NSNextResponder CF$UID 156 NSPercent 0.99047619104385376 NSSuperview CF$UID 156 NSTarget CF$UID 156 NSsFlags 1 NSvFlags 256 {{-100, -100}, {120, 15}} _doScroller: $class CF$UID 42 NS.objects CF$UID 162 {{1, 0}, {134, 17}} {{309, 131}, {151, 169}} {{1, 9}, {470, 310}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate initialFirstResponder $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 193 NSDestination CF$UID 2 NSLabel CF$UID 192 NSSource CF$UID 83 showingSelected: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 190 NSDestination CF$UID 83 NSLabel CF$UID 195 NSSource CF$UID 2 showingPopUp $class CF$UID 190 NSDestination CF$UID 116 NSLabel CF$UID 197 NSSource CF$UID 2 loadedTable $class CF$UID 190 NSDestination CF$UID 160 NSLabel CF$UID 199 NSSource CF$UID 2 availableTable $class CF$UID 190 NSDestination CF$UID 22 NSLabel CF$UID 201 NSSource CF$UID 2 descriptionText $class CF$UID 190 NSDestination CF$UID 10 NSLabel CF$UID 203 NSSource CF$UID 2 preferencesView $class CF$UID 205 NS.objects CF$UID 10 CF$UID 16 CF$UID 160 CF$UID 156 CF$UID 126 CF$UID 83 CF$UID 92 CF$UID 93 CF$UID 106 CF$UID 112 CF$UID 18 CF$UID 168 CF$UID 22 CF$UID 116 $classes NSArray NSObject $classname NSArray $class CF$UID 205 NS.objects CF$UID 2 CF$UID 10 CF$UID 156 CF$UID 16 CF$UID 116 CF$UID 16 CF$UID 93 CF$UID 83 CF$UID 93 CF$UID 16 CF$UID 16 CF$UID 160 CF$UID 18 CF$UID 112 $class CF$UID 205 NS.objects CF$UID 10 CF$UID 160 CF$UID 156 CF$UID 126 CF$UID 83 CF$UID 92 CF$UID 93 CF$UID 106 CF$UID 112 CF$UID 2 CF$UID 18 CF$UID 22 CF$UID 168 CF$UID 116 $class CF$UID 205 NS.objects CF$UID 209 CF$UID 210 CF$UID 211 CF$UID 212 CF$UID 213 CF$UID 214 CF$UID 215 CF$UID 216 CF$UID 217 CF$UID 218 CF$UID 219 CF$UID 220 CF$UID 212 CF$UID 210 Window NSTableView NSScrollView11 NSTableColumn NSPopUpButton NSMenuItem PopUpList NSMenuItem1 NSScrollView1 File's Owner NSScrollView2 NSTextView $class CF$UID 205 NS.objects $class CF$UID 205 NS.objects $class CF$UID 205 NS.objects CF$UID 116 CF$UID 2 CF$UID 18 CF$UID 92 CF$UID 160 CF$UID 200 CF$UID 112 CF$UID 22 CF$UID 10 CF$UID 83 CF$UID 191 CF$UID 93 CF$UID 202 CF$UID 194 CF$UID 16 CF$UID 126 CF$UID 198 CF$UID 9 CF$UID 196 CF$UID 156 CF$UID 168 CF$UID 106 $class CF$UID 205 NS.objects CF$UID 225 CF$UID 226 CF$UID 227 CF$UID 228 CF$UID 229 CF$UID 230 CF$UID 231 CF$UID 232 CF$UID 233 CF$UID 234 CF$UID 235 CF$UID 236 CF$UID 237 CF$UID 238 CF$UID 239 CF$UID 240 CF$UID 241 CF$UID 242 CF$UID 243 CF$UID 244 CF$UID 245 CF$UID 246 17 1 7 13 18 26 14 8 5 11 22 10 27 23 6 15 25 21 24 20 19 9 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/BundlePreferences.txt000066400000000000000000000017421067163320700305160ustar00rootroot00000000000000Welcome to the TalkSoup Plugin Preferences. TalkSoup is a highly-modular IRC client, and parts of it can be loaded and unloaded while it is running. These optional parts are called plugins (or bundles). There are two sets of bundles. The first set, the input bundles, affect data coming into the IRC client. The second set, the output bundles, affect the data leaving the IRC client. The pop up button located at the top is used to change which of these sets are being configured. Above are two tables of bundles. On the left, there is a table showing the loaded bundles and the order they are loaded in. On the right, there is a table showing the bundles which can be loaded but currently are not. You may click and drag these various bundles to/from the table on the left to load/unload them. All the changes will be automatically applied to TalkSoup and saved for the next time TalkSoup is opened. Clicking on any bundle will show information about that bundle in this text area. TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.gorm/000077500000000000000000000000001067163320700305615ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.gorm/data.classes000066400000000000000000000072121067163320700330530ustar00rootroot00000000000000{ ColorPreferencesController = { Actions = ( "setColorPreference:", "setDefaultColors:", "applyChanges:" ); Outlets = ( otherColorWell, personalColorWell, textColorWell, backgroundColorWell, preferencesView, textPreview ); Super = NSObject; }; FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "open:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "setColorPreference:", "setDefaultColors:", "applyChanges:" ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.gorm/data.info000066400000000000000000000002701067163320700323460ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.gorm/objects.gorm000066400000000000000000000137321067163320700331060ustar00rootroot00000000000000GNUstep archive00002af9:00000022:000000a7:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%ColorPreferences01NSWindow1 NSResponder%  C Ca&% D C01NSView%  C Ca  C Ca&01 NSMutableArray1 NSArray&  01 NSTextField1 NSControl% A C9 C A  C A&0 &%0 1 NSTextFieldCell1 NSActionCell1NSCell0 &%Personal Bracket Color0 1NSFont%&&&&&&&&0%0 1NSColor0 &%NSNamedColorSpace0&%System0&%textBackgroundColor0 0& % textColor0 % A C C A  C A&0 &%0 0&%Others Bracket Color &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0 % Cq C9 C A  C A& 0 &%0 0& % Background0%&&&&&&&&0%0  0!&%System0"&%textBackgroundColor0# !0$& % textColor0% % Cq C C A  C A& 0& &%0' 0(& % Text Color&&&&&&&&0%0) 0*&%System0+&%textBackgroundColor0, *0-& % textColor0.1 NSColorWell% C- C9 Bl A  Bl A&0/ &%0001&&&&&&&&&0203&%NSCalibratedWhiteColorSpace ?04% C- C Bl A  Bl A&05 &%0607&&&&&&&&&083 ?09% C C9 Bl A  Bl A& 0: &%0;0<&&&&&&&&&0=3 ?0>% C C Bl A  Bl A& 0? &%0@0A&&&&&&&&&0B3 ?0C1NSButton% @ @ B B  B B&$0D &%0E1 NSButtonCell0F&%Default Colors&&&&&&&&%0G&0H&&&&0I% C @ B B  B B&!0J &%0K0L&%Apply&&&&&&&&%0M&0N&&&&0O1NSBox% @ B, C B  C B&0P &0Q% @ @ C݀ B  C݀ B&0R &0S1 NSScrollView% @ @ Cـ B  Cـ B&0T &0U1 NSClipView% A @ C Bt A @ C Bt&0V &0W1 NSTextView1NSText% A @ C Bt  C Bt&0X &0Y 0Z&%System0[&%textBackgroundColor  K K0\ Z0]& % textColor C KY0^1 NSScroller% @ @ A Bt  A Bt&0_ &%0`0a&&&&&&&&&&S2 _doScroll:v12@0:4@8U% A A A A ^0b0c&%Preview&&&&&&&& @ @%%0d 0e&%System0f&%windowBackgroundColor0g&%Window0h&%Window0i&%Window C B F@ F@%0j1NSImage0k&%NSApplicationIcon0l&%NSOwner0m&%ColorPreferencesController0n& % ScrollViewS0o& %  TextField10p& %  TextField20q& % TextField0r&%TextViewW0s& %  TextField3%0t& %  ColorWell140u&%GSCustomClassMap0v&0w& %  ColorWell290x&%ButtonC0y& % NSVisible0z &0{& %  ColorWell3>0|&%BoxO0}&% Button1I0~& % ColorWell.0 &01NSNibConnector0&%NSOwner0q0o0p0s0~0t0w0{01NSNibOutletConnector0&%preferencesView0~0&%personalColorWell0t0&%otherColorWell0w0&%backgroundColorWell0{0& % textColorWell01NSNibControlConnectort0&% setColorPreference:0{0w0~0x0x0&% setDefaultColors:0}00&%Box00& % ScrollView00&%TextView001NSMutableString& %  textPreview0}0& %  applyChanges:01 GSMutableSet1! NSMutableSet1"NSSet&TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.nib/000077500000000000000000000000001067163320700303655ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.nib/classes.nib000066400000000000000000000011641067163320700325160ustar00rootroot00000000000000{ IBClasses = ( { ACTIONS = {applyChanges = id; setColorPreference = id; setDefaultColors = id; }; CLASS = ColorPreferencesController; LANGUAGE = ObjC; OUTLETS = { backgroundColorWell = id; otherColorWell = id; personalColorWell = id; preferencesView = id; textColorWell = id; textPreview = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.nib/info.nib000066400000000000000000000007041067163320700320130ustar00rootroot00000000000000 IBDocumentLocation 72 126 356 240 0 0 1024 746 IBFramework Version 439.0 IBOpenObjects 5 IBSystem Version 8A428 keyedobjects.nib000066400000000000000000000245571067163320700334700ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ColorPreferences.nibbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AEYaouv    !#(1578:?@C?H?M?R?W\]bchinot "'(239:<?BCGHMdehilz  #$+,34;<CDKLMNOPSTgi|fX 7    "U$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootρЀ  р́&234[NSClassName_ColorPreferencesController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FXGHIJKLMNOPQRSTUVW  )07>ACEGIKMOQoZ[\0^_`]NSDestinationWNSLabelXNSSource bcdefghhjklmn_NSNextResponder[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell  pbdq.stZNSSubviewsǀ_{{388, 7}, {87, 32}}wxyz{|}~`_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2 @UApplyVNSSizeVNSNameXNSfFlags"AP\LucidaGrande78;VNSFontPYNS.string78;_NSMutableStringXNSString78g;\NSButtonCell]%NSButtonCell\NSActionCell78;XNSButtonYNSControlVNSView[NSResponder]applyChanges:78;_NSNibControlConnector^NSNibConnectorZ[\0_bcdefghhkm  _{{5, 7}, {122, 32}}wxyz{|}~^Default Colors_setDefaultColors:Z[\0_Ӏ(!bcdefhhkk\NSIsBorderedWNSColor[NSDragTypes %$  '">@#_NSColor pasteboard type_{{138, 204}, {54, 26}}UNSRGB\NSColorSpaceO0.058130499 0.055541899 1&78֢;78;[NSColorWell_setColorPreference:Z[\0_/*bcdefhhkk .-  '+>@,_{{415, 204}, {54, 26}}&Z[\0_61bcdefhhkk 54 '2>@3_{{415, 238}, {54, 26}}&Z[\0%_'=8bcdefhhk,-k0 <; '9>2@3:_{{138, 238}, {54, 26}}&Z[\<='1?@8[nextKeyView78ABB;_NSNibOutletConnectorZ[\E=!B@1Z[\J=Ӏ*D@!Z[\`O= F@*Z[\'T=`8H@ Z[\Y=0!J@^otherColorWellZ[\'_=08L@_personalColorWellZ[\e=0*N@]textColorWellZ[\k=01P@_backgroundColorWellZ[\pq=0R@ubcvwxyfz{||~.[NSFrameSize\NSSharedDataYNSMaxSizeZNSDelegateYNSTVFlags_NSTextContainer`SSr Tapbcdfpp]NSNextKeyViewYNSBGColorYNSDocViewYNScvFlagsXNSCursorRsR >@UVWXYZ[\]^__Apple HTML pasteboard type_Apple PICT pasteboard type_1NeXT Encapsulated PostScript v1.2 pasteboard type_*NeXT Rich Text Format v1.0 pasteboard type_Apple PDF pasteboard type_NSFilenamesPboardType_NSStringPboardType_NeXT TIFF v4.0 pasteboard type_#CorePasteboardFlavorType 0x6D6F6F76_NeXT RTFD pasteboard typeY{442, 46}pWNSWidthZNSTextView_NSLayoutManagerYNSTCFlags"CRbqx.]NSTextStorageYNSLMFlags_NSTextContainerscpnx.\NSAttributesemdUa b c>WNS.keys΀hjрfgl_NSParagraphStyle"A@i_Helvetica-Oblique.ZNSTabStopsk78;_NSMutableParagraphStyle78;\NSDictionary78;_NSMutableAttributedString_NSAttributedString>Xao78;^NSMutableArrayWNSArray78;78zz;.._NSSelectedAttributesWNSFlags_NSDefaultParagraphStyle_NSInsertionColor_NSLinkAttributes_NSMarkedAttributes_NSBackgroundColoru t~s WNSWhiteB1&  B0&>Ңx|vwlSColorName]NSCatalogName{zy&VSystem_selectedTextBackgroundColor  K0.66666669&$t}y&_selectedTextColor>)-ң*+,./0l[NSUnderline45678YNSHotSpot\NSCursorType W{8, -8}78;;=F0 0 1&78@AA;_NSTextViewSharedData\{442, 1e+07}78DEF;[%NSTextViewVNSText[textPreviewZ[\IJ=0̀@NOPQRSTwUVWXYZ[\]^_habc_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRect\NSWindowViewYNSWTFlags[NSViewClassɀȀʀ pxˀ_{{396, 173}, {484, 272}}fVWindowXNSWindowjTView>mXn`'uvwx *18!Àopbc{|}d~fhh Y\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType 2>Xopbcdnnt>Xopbcdf|Y|[NSHScrollerXNSsFlags[NSVScrollerSS>X|So>XpRo_{{1, 1}, {442, 104}}458W{4, -5}78;ZNSClipViewbcdfZNSCurValueXNSTargetXNSAction"?_{{-100, -100}, {15, 60}}\_doScroller:78˥;ZNSScrollerbcdfYNSPercent"?rC_{{-100, -100}, {87, 18}}_{{8, 11}, {444, 106}}78٤;\NSScrollView_{{2, 2}, {460, 128}}78;_{{8, 51}, {464, 145}}V{0, 0}yz[NSTextColorWPreview"A0 sy&_textBackgroundColor M0 0.80000001&78g;_NSTextFieldCell78;UNSBoxbcdefghhk _{{306, 209}, {104, 17}}yz{u @UText {y&\controlColorty&_controlTextColor78;[NSTextField\%NSTextFieldbcdefghhk" _{{306, 243}, {104, 17}}yz{(v [Background bcdefghh/k2 _{{8, 209}, {125, 17}}yz{8w €_Others Bracket bcdefghh?kB _{{8, 243}, {125, 17}}yz{Hx ƀÀ_Personal Bracket _{{1, 9}, {484, 272}}_{{0, 0}, {1024, 746}}Z{213, 129}_{3.40282e+38, 3.40282e+38}78QRR;_NSWindowTemplate_preferencesView>UfnIuhvwp`x' R!1 À*878h;>jfhh0nhIhhhhhhhh  >}f0Inuvwp`'xR!1 *8À>fҀӀԀՀր׀؀ـڀۀ܀݀ހ߀\File's Owner\NSTextField2]NSTextField21^NSTextField211S212R21YNSButton1]NSScrollView2Q2S211^NSTextField212>f>f>f"RuJpHNIUvx`'0QGMTKPWnSLIhOVwI)R!A OÀ1 8G* >M0EK7 CQ>f"*󀂀  # "%  !$>Xo>f> f78#$$;^NSIBObjectData#,1:LQVdf(6R_ry  %')FOXchw   0>FOQSUWt2DWalz +29BGIKN[dipqz '5>E]l}      ! # 7 H J L N P u    2 4 = B K V b x     ! # H J L M O Q R T V _ b d f o q  & ( 9 ; = ? A M V ] t      - > @ B D F T e g i k m !$&(*WeoyIv",AITfpuwy{!#6GLNPR[oqz!*1@HQV_d +368:GJLY^`bgikm")+-/68:<>JWanprt| Qew "+49;D[]_acegikmoqs   !$&(=?ACEGPSUW $/P[dmoqvxz}  '?HQ^u~/<JLU^py,ACEGI\er~#%')*,.Fgikmoqs5@]fk~ "$&(*,.02468:Cfhjlnprtvxz|~ ,.2AJKMVWYb ? A C E G I K M O Q S U W Y [ ] _ a c e g i k m o q s u x { ~ %!TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.gorm/000077500000000000000000000000001067163320700304115ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.gorm/data.classes000066400000000000000000000010161067163320700326770ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "hitFontButton:", "setWrapIndent:" ); Super = NSObject; }; FontPreferencesController = { Actions = ( "hitFontButton:", "setWrapIndent:" ); Outlets = ( preferencesView, userFontButton, chatFontButton, chatFontField, userFontField, fontSetView, boldFontButton, boldFontField, wrapIndentStepper, wrapIndentField ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.gorm/data.info000066400000000000000000000002701067163320700321760ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.gorm/objects.gorm000066400000000000000000000366151067163320700327430ustar00rootroot00000000000000GNUstep archive00002af9:00000022:000000be:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&% Button201NSButton1 NSControl1NSView1 NSResponder% C B B` A  B` A& 01 NSMutableArray1 NSArray&%01 NSButtonCell1 NSActionCell1NSCell0&%Change01NSFont%&&&&&&&&%0 &0 &&&&0 &%NSOwner0 &%FontPreferencesController0 & %  TextField101 NSTextField% A B Cр A  Cр A& 0 &%01NSTextFieldCell0&&&&&&&&&0%01NSColor0&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0& %  TextField20% A C Cр A  Cр A& 0 &%00&&&&&&&&&0%00&%System0&%textBackgroundColor0 0!& % textColor0"& % TextField0#% A CN Cр A  Cр A& 0$ &%0%0&&&&&&&&&&0%0'0(&%System0)&%textBackgroundColor0*(0+& % textColor0,& %  TextField30-% C Bd BL A  BL A& 0. &%0/00&%Text&&&&&&&&0%0102&%System03&%textBackgroundColor04205& % textColor06& % GormNSWindow071NSWindow%  C C&% D D08%  C C  C C&09 &  #0:1 GSCustomView1 GSNibItem0;&%FontPreferencesFontView Cp Cr C A&-0<% A Bd C A  C A& 0= &%0>0?&%Wrapped line indent:&&&&&&&&0%0@0A&%System0B&%textBackgroundColor0CA0D& % textColor0E% CL Bd A A  A A& 0F &%0G0H&%cm0I% A@&&&&&&&&0%0J0K&%System0L&%textBackgroundColor0MK0N& % textColor0O% C CN B` A  B` A& 0P &%0Q 0R&%Change&&&&&&&&%0S&0T&&&&0U% C C B` A  B` A& 0V &%0W 0X&%Change&&&&&&&&%0Y&0Z&&&&0[% A Cr C A  C A& 0\ &%0]0^& % Chat Font:I&&&&&&&&0%0_0`&%System0a&%textBackgroundColor0b`0c& % textColor0d% A C7 C A  C A& 0e &%0f0g&%Bold Chat Font:I&&&&&&&&0%0h0i&%System0j&%textBackgroundColor0ki0l& % textColor0m% A B C A  C A& 0n &%0o0p&%User List Font:I&&&&&&&&0%0q0r&%System0s&%textBackgroundColor0tr0u& % textColor0v0w&%System0x&%windowBackgroundColor0y&%Window0z&%Window0{&%Window ? A F@ F@%0|1NSImage 0}0~&%NSCalibratedWhiteColorSpace 0 &01NSBitmapImageRep1 NSImageRep0&%NSDeviceRGBColorSpace B@ B@%%0%001 NSDataMalloc1 NSDataStatic1NSData&$$II*$[=T8J2R-!k[=U:K3xB-H'R-!k[=S7J2xB-H'/ ?[=S7I2xB-H'/ ?[=S7H0xB-H'/ ?[=R7I2xB-H'/ ?[=S7I0xB-H'/ ?[=R7I2xB-H'/ ?[=R7H0xB-H'/ ?[>X/!j:)H'/ ?D49  ?hft{y<;D ?hft}<;D ?<;D ?43:""""43:zzzzͱ""""EEEEEEEEEEEE43:555222t43:0?55hhhiiiyyyVVV777?43:~=0rdxxxUUU444?/17?43:5?0\Mzz{]]]QQQmmm_bn:9@5?0I>e]xxwvtsqpo}66<5?2A3QFA4H:|zzywutrqpbao++05?2@2@2A3B3C4E6}}|zxxwutrqpn}VT_=,, 5@2@3A3A3JdbqihvFEOQ-)Y)!W)`/$k3'q6*n4)l3'i2'f0&c/$`-$Y*!)5C4C4D4E6F7H7Ʀkkk)))LJRkjxihvhgu::B\/&[-$Y-$c/&l3'o4)l3'j2'g2&d0$a/$^-#X*!)5@2D4E6F7H7I8{{{[[[322QPZ^]jjhwhguQP[K33\-&W)_/$j3'm3'm4)j3'h2&d0&b/$_-#],#X*!)P'~>>ddd>>?87?4$$E)&_-#`0'_0&]/&^/&`/&`/&c0&j2'n3'k3'h2&d0$a/$^-#\,!Z,!X*!U)T))ttttttzzz;;;rqyjhwPPZ43:C@?w9,c2)b2)^,#_0&d2'g2'h2'k3)l3)l3)l3'l3'i2'f0&c/$_-#],#Z,!X*!W)T)S))rrr```FFF000mmm\[a<;CA)'^3,I::76v8,_-$b2'g2'l4)r7*s7*s7*w8,t7,q6*n4)k3'g2&d0$`-$],#[,!X*!W)U)S'S')YYY777XWcKJS|||SSS\2,KDD4I:I;A?>~>0b2)f2'p6*x:-y:-{;-x:-v9,s7*o4)l3'i2&f0&c/$_-#\,#Y*!W)T)S'R'S')TR^|z@?Gↄ\Zg<;CJJJm4)D4E6J;UIPEvI@q:/l4)m4)x:,};/{:-y:-w9,t7*q6*m4)j3'h2&c0&a/$]-#[,!X*!V)T)R'R'R')0/5?_^kCBJ43:?QQQ ^-#I:O>SBP?H7?2p6*s7*0|;/y:-p6*f0&d0&c/&`/$_-$]-#\,#T)!T)!T)!T)!T)!T)!T)!)))) ?h3'z;/T)!T)!T)!`/$`/$))))) ? 00$$R0& %  TextField4<0& %  TextField5E0&%GSCustomClassMap0&0& %  TextField6[0&%ButtonO0& % NSVisible0 &0& %  TextField7d0&%GormCustomView:0& %  TextField8m0&% Button1U0 &01NSNibConnector60&%NSOwner01NSNibOutletConnector60&%preferencesView0"0 0 0& % userFontField0"0& % chatFontField000& % fontSetView000& % boldFontField0,000,0&%wrapIndentField01NSNibControlConnector,0&% setWrapIndent:000000001NSMutableString& %  nextKeyView00,0,00&% userFontButton00&% boldFontButton00&% chatFontButton00&% hitFontButton:0001 GSMutableSet1! NSMutableSet1"NSSet&7TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.nib/000077500000000000000000000000001067163320700302155ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.nib/classes.nib000066400000000000000000000014251067163320700323460ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {hitFontButton = id; setWrapIndent = id; }; CLASS = FontPreferencesController; LANGUAGE = ObjC; OUTLETS = { boldFontButton = id; boldFontField = id; chatFontButton = id; chatFontField = id; fontSetView = id; preferencesView = id; userFontButton = id; userFontField = id; wrapIndentField = id; }; SUPERCLASS = NSObject; }, {CLASS = FontPreferencesFontView; LANGUAGE = ObjC; SUPERCLASS = NSView; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.nib/info.nib000066400000000000000000000007541067163320700316500ustar00rootroot00000000000000 IBDocumentLocation 69 64 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving keyedobjects.nib000066400000000000000000001423711067163320700333130ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/FontPreferences.nib $archiver NSKeyedArchiver $objects $null $class CF$UID 184 NSClassesKeys CF$UID 147 NSClassesValues CF$UID 148 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 131 NSNamesValues CF$UID 132 NSNextOid 40 NSObjectsKeys CF$UID 128 NSObjectsValues CF$UID 130 NSOidsKeys CF$UID 149 NSOidsValues CF$UID 150 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 FontPreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 95 NS.objects CF$UID 9 CF$UID 29 CF$UID 34 CF$UID 48 CF$UID 49 CF$UID 103 CF$UID 105 CF$UID 107 CF$UID 109 CF$UID 111 CF$UID 113 CF$UID 115 CF$UID 117 CF$UID 119 CF$UID 122 CF$UID 124 CF$UID 126 $class CF$UID 28 NSDestination CF$UID 23 NSLabel CF$UID 27 NSSource CF$UID 10 $class CF$UID 22 NSCell CF$UID 13 NSEnabled NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 $class CF$UID 97 NSFrame CF$UID 96 NSNextResponder CF$UID 0 NSSubviews CF$UID 55 {{388, 296}, {88, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 14 NSControlView CF$UID 10 NSKeyEquivalent CF$UID 19 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Change $class CF$UID 17 NSName CF$UID 16 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 20 NS.string $classes NSMutableString NSString NSObject $classname NSMutableString $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 22 NSCell CF$UID 25 NSEnabled NSFrame CF$UID 24 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 {{388, 241}, {88, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 14 NSControlView CF$UID 23 NSKeyEquivalent CF$UID 26 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 $class CF$UID 20 NS.string nextKeyView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 28 NSDestination CF$UID 30 NSLabel CF$UID 27 NSSource CF$UID 23 $class CF$UID 22 NSCell CF$UID 32 NSEnabled NSFrame CF$UID 31 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 {{388, 186}, {88, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 14 NSControlView CF$UID 30 NSKeyEquivalent CF$UID 33 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 $class CF$UID 20 NS.string $class CF$UID 28 NSDestination CF$UID 35 NSLabel CF$UID 27 NSSource CF$UID 30 $class CF$UID 47 NSCell CF$UID 37 NSEnabled NSFrame CF$UID 36 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{236, 163}, {150, 22}} $class CF$UID 46 NSBackgroundColor CF$UID 38 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 35 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 43 $class CF$UID 42 NSCatalogName CF$UID 39 NSColor CF$UID 41 NSColorName CF$UID 40 NSColorSpace 6 System textBackgroundColor $class CF$UID 42 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 42 NSCatalogName CF$UID 39 NSColor CF$UID 45 NSColorName CF$UID 44 NSColorSpace 6 textColor $class CF$UID 42 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 28 NSDestination CF$UID 10 NSLabel CF$UID 27 NSSource CF$UID 35 $class CF$UID 28 NSDestination CF$UID 50 NSLabel CF$UID 102 NSSource CF$UID 2 $class CF$UID 101 NSMaxSize CF$UID 100 NSMinSize CF$UID 99 NSScreenRect CF$UID 98 NSViewClass CF$UID 54 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 53 NSWindowRect CF$UID 51 NSWindowStyleMask 14 NSWindowTitle CF$UID 52 NSWindowView CF$UID 11 {{343, 160}, {480, 360}} Window NSWindow $class CF$UID 20 NS.string View $class CF$UID 95 NS.objects CF$UID 10 CF$UID 23 CF$UID 30 CF$UID 56 CF$UID 59 CF$UID 62 CF$UID 65 CF$UID 74 CF$UID 78 CF$UID 82 CF$UID 35 CF$UID 86 CF$UID 90 $class CF$UID 47 NSCell CF$UID 58 NSEnabled NSFrame CF$UID 57 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{10, 303}, {376, 22}} $class CF$UID 46 NSBackgroundColor CF$UID 38 NSCellFlags -2068709823 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 56 NSSupport CF$UID 15 NSTextColor CF$UID 43 $class CF$UID 47 NSCell CF$UID 61 NSEnabled NSFrame CF$UID 60 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{10, 248}, {376, 22}} $class CF$UID 46 NSBackgroundColor CF$UID 38 NSCellFlags -2068709823 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 59 NSSupport CF$UID 15 NSTextColor CF$UID 43 $class CF$UID 47 NSCell CF$UID 64 NSEnabled NSFrame CF$UID 63 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 10 {{10, 193}, {376, 22}} $class CF$UID 46 NSBackgroundColor CF$UID 38 NSCellFlags -2068709823 NSCellFlags2 4194304 NSContents CF$UID 18 NSControlView CF$UID 62 NSSupport CF$UID 15 NSTextColor CF$UID 43 $class CF$UID 47 NSCell CF$UID 67 NSEnabled NSFrame CF$UID 66 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 8 {{7, 333}, {114, 17}} $class CF$UID 46 NSBackgroundColor CF$UID 69 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 68 NSControlView CF$UID 65 NSSupport CF$UID 15 NSTextColor CF$UID 72 Chat Font: $class CF$UID 42 NSCatalogName CF$UID 39 NSColor CF$UID 71 NSColorName CF$UID 70 NSColorSpace 6 controlColor $class CF$UID 42 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 42 NSCatalogName CF$UID 39 NSColor CF$UID 45 NSColorName CF$UID 73 NSColorSpace 6 controlTextColor $class CF$UID 47 NSCell CF$UID 76 NSEnabled NSFrame CF$UID 75 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 8 {{7, 278}, {114, 17}} $class CF$UID 46 NSBackgroundColor CF$UID 69 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 77 NSControlView CF$UID 74 NSSupport CF$UID 15 NSTextColor CF$UID 72 Bold Font: $class CF$UID 47 NSCell CF$UID 80 NSEnabled NSFrame CF$UID 79 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 8 {{7, 223}, {114, 17}} $class CF$UID 46 NSBackgroundColor CF$UID 69 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 81 NSControlView CF$UID 78 NSSupport CF$UID 15 NSTextColor CF$UID 72 User List Font: $class CF$UID 47 NSCell CF$UID 84 NSEnabled NSFrame CF$UID 83 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 12 {{84, 165}, {147, 17}} $class CF$UID 46 NSBackgroundColor CF$UID 69 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 85 NSControlView CF$UID 82 NSSupport CF$UID 15 NSTextColor CF$UID 72 Hanging indent: $class CF$UID 47 NSCell CF$UID 88 NSEnabled NSFrame CF$UID 87 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 9 {{391, 165}, {72, 17}} $class CF$UID 46 NSBackgroundColor CF$UID 69 NSCellFlags 67239424 NSCellFlags2 4194304 NSContents CF$UID 89 NSControlView CF$UID 86 NSSupport CF$UID 15 NSTextColor CF$UID 72 cm $class CF$UID 94 NSClassName CF$UID 92 NSExtension CF$UID 93 NSFrame CF$UID 91 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 8 {{152, 333}, {76, 17}} FontPreferencesFontView NSView $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {480, 360}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate preferencesView $class CF$UID 28 NSDestination CF$UID 23 NSLabel CF$UID 104 NSSource CF$UID 2 boldFontButton $class CF$UID 28 NSDestination CF$UID 59 NSLabel CF$UID 106 NSSource CF$UID 2 boldFontField $class CF$UID 28 NSDestination CF$UID 10 NSLabel CF$UID 108 NSSource CF$UID 2 chatFontButton $class CF$UID 28 NSDestination CF$UID 56 NSLabel CF$UID 110 NSSource CF$UID 2 chatFontField $class CF$UID 28 NSDestination CF$UID 90 NSLabel CF$UID 112 NSSource CF$UID 2 fontSetView $class CF$UID 28 NSDestination CF$UID 30 NSLabel CF$UID 114 NSSource CF$UID 2 userFontButton $class CF$UID 28 NSDestination CF$UID 62 NSLabel CF$UID 116 NSSource CF$UID 2 userFontField $class CF$UID 28 NSDestination CF$UID 35 NSLabel CF$UID 118 NSSource CF$UID 2 wrapIndentField $class CF$UID 121 NSDestination CF$UID 2 NSLabel CF$UID 120 NSSource CF$UID 30 hitFontButton: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 121 NSDestination CF$UID 2 NSLabel CF$UID 123 NSSource CF$UID 23 hitFontButton: $class CF$UID 121 NSDestination CF$UID 2 NSLabel CF$UID 125 NSSource CF$UID 10 hitFontButton: $class CF$UID 121 NSDestination CF$UID 2 NSLabel CF$UID 127 NSSource CF$UID 35 setWrapIndent: $class CF$UID 129 NS.objects CF$UID 82 CF$UID 62 CF$UID 23 CF$UID 86 CF$UID 78 CF$UID 10 CF$UID 59 CF$UID 11 CF$UID 65 CF$UID 74 CF$UID 35 CF$UID 50 CF$UID 30 CF$UID 90 CF$UID 56 $classes NSArray NSObject $classname NSArray $class CF$UID 129 NS.objects CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 50 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 2 CF$UID 11 CF$UID 11 CF$UID 11 $class CF$UID 129 NS.objects CF$UID 82 CF$UID 62 CF$UID 23 CF$UID 86 CF$UID 2 CF$UID 10 CF$UID 78 CF$UID 59 CF$UID 65 CF$UID 74 CF$UID 35 CF$UID 50 CF$UID 30 CF$UID 90 CF$UID 56 $class CF$UID 129 NS.objects CF$UID 133 CF$UID 134 CF$UID 135 CF$UID 136 CF$UID 137 CF$UID 138 CF$UID 139 CF$UID 140 CF$UID 141 CF$UID 142 CF$UID 143 CF$UID 52 CF$UID 144 CF$UID 145 CF$UID 146 NSTextField24 NSTextField2 NSButton1 NSTextField241 File's Owner NSButton NSTextField23 NSTextField1 NSTextField21 NSTextField22 NSTextField3 NSButton2 View NSTextField $class CF$UID 129 NS.objects $class CF$UID 129 NS.objects $class CF$UID 129 NS.objects CF$UID 50 CF$UID 82 CF$UID 119 CF$UID 107 CF$UID 74 CF$UID 126 CF$UID 111 CF$UID 124 CF$UID 122 CF$UID 23 CF$UID 65 CF$UID 35 CF$UID 48 CF$UID 113 CF$UID 78 CF$UID 11 CF$UID 56 CF$UID 34 CF$UID 10 CF$UID 105 CF$UID 49 CF$UID 30 CF$UID 115 CF$UID 2 CF$UID 109 CF$UID 62 CF$UID 86 CF$UID 103 CF$UID 59 CF$UID 117 CF$UID 9 CF$UID 90 CF$UID 29 $class CF$UID 129 NS.objects CF$UID 151 CF$UID 152 CF$UID 153 CF$UID 154 CF$UID 155 CF$UID 156 CF$UID 157 CF$UID 158 CF$UID 159 CF$UID 160 CF$UID 161 CF$UID 162 CF$UID 163 CF$UID 164 CF$UID 165 CF$UID 166 CF$UID 167 CF$UID 168 CF$UID 169 CF$UID 170 CF$UID 171 CF$UID 172 CF$UID 173 CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 CF$UID 181 CF$UID 182 CF$UID 183 5 19 36 30 17 39 32 38 37 8 16 20 26 33 18 6 10 25 7 29 27 9 34 1 31 14 21 28 13 35 23 22 24 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.gorm/000077500000000000000000000000001067163320700300675ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.gorm/data.classes000066400000000000000000000100211067163320700323510ustar00rootroot00000000000000{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "changeFont:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontFontPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "doApplicationTerminate:", "doApplicationHide:", "openTopicInspector:", "openEmptyWindow:", "openNamePrompt:", "openServerList:", "loadBundleConfigurator:", "loadPreferencesPanel:", "doApplicationOrderFrontStandardAboutPanel:", "closeCurrentTab:", "selectPreviousTab:", "selectNextTab:" ); Super = NSObject; }; GNUstepOutput = { Actions = ( "doApplicationTerminate:", "doApplicationHide:", "openTopicInspector:", "openEmptyWindow:", "openNamePrompt:", "openServerList:", "loadBundleConfigurator:", "loadPreferencesPanel:", "doApplicationOrderFrontStandardAboutPanel:" ); Outlets = ( menu ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.gorm/data.info000066400000000000000000000002701067163320700316540ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.gorm/objects.gorm000066400000000000000000000145041067163320700324120ustar00rootroot00000000000000GNUstep archive00002af9:00000011:000000ec:00000008:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&/01NSString& %  MenuItem1901 NSMenuItem0&%Paste0&%v&&%01NSImage01NSMutableString&% common_2DCheckMark0 0 & %  common_2DDash2 paste:@12@0:4@8%0 & %  MenuItem300 0 &%Bundle Setup...0&%B&&% %0& %  MenuItem3100& % Connection0&&&% %01 NSMenu01 NSMutableArray1 NSArray&00&%Open Server List...0&%o&&% %00&%Connected Window...0&%N&&% %00&%Unconnected Window0&%n&&% %0& %  MenuItem3200 & % Select All0!&%a&&% %0"& %  MenuItem10#0$&%Quit0%&%q&&% %0&& % NSVisible0' &0(& %  MenuItem330)0*&%Hide0+&%h&&% %0,& %  MenuItem20-0.&%Info0/&&&% %00 .01 &0203& % Info Panel...04&&&% %0506&%Preferences...07&%P&&% %08& %  MenuItem34#09& %  MenuItem320:& %  MenuItem450;& %  MenuItem60<&%MenuItem)0=& %  MenuItem70>& %  MenuItem80?& %  MenuItem90@& % GormNSMenu00A& %  MenuItem200B& %  MenuItem210C0D&%Delete0E&&&% 2 delete:@12@0:4@8%0F& %  MenuItem220G0H&%Windows0I&&&% 2submenuAction:%0J H0K &0L0M&%Arrange In Front0N&&&% 2 arrangeInFront:v12@0:4@8%0O0P&%Miniaturize Window0Q&%m&&% 2 miniaturize:@12@0:4@8%0R0S& % Close Window0T&%W&&% 2 performClose:v12@0:4@8%0U 0V&%TalkSoup0W &  -0X0Y&%Tab0Z&&&% %0[ Y0\ &0]0^&%Next Tab0_&%k&&% %0`0a& % Previous Tab0b&%j&&% %0c0d& % Close Tab0e&%w&&% %U0f0g&%Tools0h&&&% %0i g0j &0k0l&%Topic Inspector0m&%t&&% %U0n0o&%Edit0p&&&% %0q o0r &0s0t&%Cut0u&%x&&% 2 cut:@12@0:4@8%0v0w&%Copy0x&%c&&% 2 copy:@12@0:4@8%CUG0y0z&%Services0{&&&% %0| z0} &U)#0~& %  MenuItem23L0& %  MenuItem24O0& %  MenuItem25R0& %  MenuItem26y0& %  MenuItem27-0& %  MenuItem2820& %  MenuItem2950& %  GormNSMenu10& %  GormNSMenu2[0& %  GormNSMenu3i0& %  GormNSMenu4q0& %  GormNSMenu5J0& %  GormNSMenu6|0&%NSServicesMenu|0& % NSWindowsMenuJ0& %  MenuItem10X0&%GSCustomClassMap0&0& %  MenuItem11]0& %  MenuItem12`0& %  MenuItem13c0& %  MenuItem14f0&%NSMenuU0& %  MenuItem15k0& %  MenuItem16n0&%NSOwner0& % GNUstepOutput0& %  MenuItem17s0& %  MenuItem18v0 &8801 NSNibConnector0&%NSOwner0 <0 "01 NSNibControlConnector<0&%doApplicationHide:0 "0&%doApplicationTerminate:0 ,0 @,0 9@0 :@0 90&*% *doApplicationOrderFrontStandardAboutPanel:0 :0&%loadPreferencesPanel:0 ;0 ;0 =0 >0 ?0 =0&%openServerList:0 >0&%openNamePrompt:0 0 0 0 0 0 0 0 0 0&%NSFirst0&%selectNextTab:0 0&%selectPreviousTab:0± 0ñ&%closeCurrentTab:0ı 0ű&%openTopicInspector:0Ʊ 0DZ 0ȱ 0ɱ 0ʱ 0˱ A0̱ B0ͱ A0α& % selectAll:0ϱ B0б&%delete:0ѱ 0ұ&%paste:0ӱ 0Ա&%copy:0ձ 0ֱ&%cut:0ױ F0ر F0ٱ ~0ڱ 0۱ 0ܱ 0ݱ 0ޱ ~0߱&%arrangeInFront:0 0& % miniaturize:01NSNibOutletConnector0&%menu0 ?0&% openEmptyWindow:0 0& % performClose:0 ,0&%submenuAction:0 ;0&%submenuAction:01 GSMutableSet1 NSMutableSet1NSSet&UTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.nib/000077500000000000000000000000001067163320700276735ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.nib/classes.nib000066400000000000000000000016501067163320700320240ustar00rootroot00000000000000{ IBClasses = ( { ACTIONS = {closeCurrentTab = id; selectNextTab = id; selectPreviousTab = id; }; CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { doApplicationHide = id; doApplicationHideOtherApplications = id; doApplicationOrderFrontStandardAboutPanel = id; doApplicationTerminate = id; doApplicationUnhideAllApplications = id; loadPreferencesPanel = id; openEmptyWindow = id; openNamePrompt = id; openServerList = id; openTopicInspector = id; }; CLASS = GNUstepOutput; LANGUAGE = ObjC; OUTLETS = {menu = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.nib/info.nib000066400000000000000000000011341067163320700313170ustar00rootroot00000000000000 IBDocumentLocation 362 149 356 240 0 0 1152 848 IBEditorPositions 29 222 620 393 44 0 0 1152 848 IBFramework Version 437.0 IBOpenObjects 29 IBSystem Version 8B9 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GNUstepOutput.nib/keyedobjects.nib000066400000000000000000003051461067163320700330510ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 363 NSAccessibilityConnectors CF$UID 360 NSAccessibilityOidsKeys CF$UID 361 NSAccessibilityOidsValues CF$UID 362 NSClassesKeys CF$UID 260 NSClassesValues CF$UID 261 NSConnections CF$UID 9 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 247 NSNamesValues CF$UID 248 NSNextOid 275 NSObjectsKeys CF$UID 244 NSObjectsValues CF$UID 246 NSOidsKeys CF$UID 262 NSOidsValues CF$UID 263 NSRoot CF$UID 2 NSVisibleWindows CF$UID 7 $class CF$UID 4 NSClassName CF$UID 3 GNUstepOutput $classes NSCustomObject NSObject $classname NSCustomObject $class CF$UID 6 NS.string IBCocoaFramework $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 8 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 197 NS.objects CF$UID 10 CF$UID 24 CF$UID 29 CF$UID 34 CF$UID 40 CF$UID 45 CF$UID 50 CF$UID 55 CF$UID 60 CF$UID 65 CF$UID 70 CF$UID 75 CF$UID 80 CF$UID 84 CF$UID 88 CF$UID 94 CF$UID 98 CF$UID 102 CF$UID 106 CF$UID 111 CF$UID 116 CF$UID 121 CF$UID 126 CF$UID 131 CF$UID 136 CF$UID 142 CF$UID 148 CF$UID 153 CF$UID 158 CF$UID 162 CF$UID 166 CF$UID 171 CF$UID 176 CF$UID 182 $class CF$UID 23 NSLabel CF$UID 22 NSSource CF$UID 11 $class CF$UID 21 NSKeyEquiv CF$UID 14 NSKeyEquivModMask 1048576 NSMenu CF$UID 12 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 13 $class CF$UID 199 NSMenuItems CF$UID 238 NSName CF$UID 240 NSTitle CF$UID 237 Minimize m $class CF$UID 18 NSClassName CF$UID 16 NSResourceName CF$UID 17 NSImage NSMenuCheckmark $classes NSCustomResource %NSCustomResource NSObject $classname NSCustomResource $class CF$UID 18 NSClassName CF$UID 16 NSResourceName CF$UID 20 NSMenuMixedState $classes NSMenuItem NSObject $classname NSMenuItem $class CF$UID 6 NS.string performMiniaturize: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 23 NSLabel CF$UID 28 NSSource CF$UID 25 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 12 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 26 Bring All to Front $class CF$UID 6 NS.string arrangeInFront: $class CF$UID 23 NSLabel CF$UID 33 NSSource CF$UID 30 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 31 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 32 $class CF$UID 199 NSMenuItems CF$UID 221 NSTitle CF$UID 219 Check Spelling as You Type toggleContinuousSpellChecking: $class CF$UID 23 NSLabel CF$UID 39 NSSource CF$UID 35 $class CF$UID 21 NSKeyEquiv CF$UID 38 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 37 $class CF$UID 199 NSMenuItems CF$UID 210 NSTitle CF$UID 208 Undo z $class CF$UID 6 NS.string undo: $class CF$UID 23 NSLabel CF$UID 44 NSSource CF$UID 41 $class CF$UID 21 NSKeyEquiv CF$UID 43 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 42 Copy c $class CF$UID 6 NS.string copy: $class CF$UID 23 NSLabel CF$UID 49 NSSource CF$UID 46 $class CF$UID 21 NSKeyEquiv CF$UID 48 NSKeyEquivModMask 1048576 NSMenu CF$UID 31 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 47 Check Spelling ; $class CF$UID 6 NS.string checkSpelling: $class CF$UID 23 NSLabel CF$UID 54 NSSource CF$UID 51 $class CF$UID 21 NSKeyEquiv CF$UID 53 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 52 Paste v $class CF$UID 6 NS.string paste: $class CF$UID 23 NSLabel CF$UID 59 NSSource CF$UID 56 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 57 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 58 $class CF$UID 199 NSMenuItems CF$UID 225 NSTitle CF$UID 223 Stop Speaking stopSpeaking: $class CF$UID 23 NSLabel CF$UID 64 NSSource CF$UID 61 $class CF$UID 21 NSKeyEquiv CF$UID 63 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 62 Cut x $class CF$UID 6 NS.string cut: $class CF$UID 23 NSLabel CF$UID 69 NSSource CF$UID 66 $class CF$UID 21 NSKeyEquiv CF$UID 68 NSKeyEquivModMask 1048576 NSMenu CF$UID 31 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 67 Spelling… : $class CF$UID 6 NS.string showGuessPanel: $class CF$UID 23 NSLabel CF$UID 74 NSSource CF$UID 71 $class CF$UID 21 NSKeyEquiv CF$UID 73 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 72 Redo Z $class CF$UID 6 NS.string redo: $class CF$UID 23 NSLabel CF$UID 79 NSSource CF$UID 76 $class CF$UID 21 NSKeyEquiv CF$UID 78 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 77 Select All a $class CF$UID 6 NS.string selectAll: $class CF$UID 23 NSLabel CF$UID 83 NSSource CF$UID 81 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 57 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 82 Start Speaking startSpeaking: $class CF$UID 23 NSLabel CF$UID 87 NSSource CF$UID 85 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 86 Delete delete: $class CF$UID 23 NSLabel CF$UID 93 NSSource CF$UID 89 $class CF$UID 21 NSKeyEquiv CF$UID 92 NSKeyEquivModMask 1048576 NSMenu CF$UID 90 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTag 1 NSTitle CF$UID 91 $class CF$UID 199 NSMenuItems CF$UID 217 NSTitle CF$UID 216 Find… f performFindPanelAction: $class CF$UID 23 NSLabel CF$UID 93 NSSource CF$UID 95 $class CF$UID 21 NSKeyEquiv CF$UID 97 NSKeyEquivModMask 1048576 NSMenu CF$UID 90 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTag 2 NSTitle CF$UID 96 Find Next g $class CF$UID 23 NSLabel CF$UID 93 NSSource CF$UID 99 $class CF$UID 21 NSKeyEquiv CF$UID 101 NSKeyEquivModMask 1048576 NSMenu CF$UID 90 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTag 3 NSTitle CF$UID 100 Find Previous G $class CF$UID 23 NSLabel CF$UID 93 NSSource CF$UID 103 $class CF$UID 21 NSKeyEquiv CF$UID 105 NSKeyEquivModMask 1048576 NSMenu CF$UID 90 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTag 7 NSTitle CF$UID 104 Use Selection for Find e $class CF$UID 23 NSLabel CF$UID 110 NSSource CF$UID 107 $class CF$UID 21 NSKeyEquiv CF$UID 109 NSKeyEquivModMask 1048576 NSMenu CF$UID 90 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 108 Jump to Selection j centerSelectionInVisibleArea: $class CF$UID 23 NSLabel CF$UID 115 NSSource CF$UID 112 $class CF$UID 21 NSKeyEquiv CF$UID 114 NSKeyEquivModMask 1572864 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 113 Paste and Match Style V pasteAsPlainText: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 120 NSSource CF$UID 117 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 119 $class CF$UID 199 NSMenuItems CF$UID 188 NSName CF$UID 202 NSTitle CF$UID 186 About TalkSoup doApplicationOrderFrontStandardAboutPanel: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 125 NSSource CF$UID 122 $class CF$UID 21 NSKeyEquiv CF$UID 124 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 123 Preferences… , loadPreferencesPanel: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 130 NSSource CF$UID 127 $class CF$UID 21 NSKeyEquiv CF$UID 129 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 128 Hide TalkSoup h doApplicationHide: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 135 NSSource CF$UID 132 $class CF$UID 21 NSKeyEquiv CF$UID 134 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 133 Quit TalkSoup q doApplicationTerminate: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 141 NSSource CF$UID 137 $class CF$UID 21 NSKeyEquiv CF$UID 140 NSKeyEquivModMask 1048576 NSMenu CF$UID 138 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 139 $class CF$UID 199 NSMenuItems CF$UID 206 NSTitle CF$UID 204 Open Server List... o openServerList: $class CF$UID 23 NSLabel CF$UID 147 NSSource CF$UID 143 $class CF$UID 21 NSKeyEquiv CF$UID 146 NSKeyEquivModMask 1048576 NSMenu CF$UID 144 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 145 $class CF$UID 199 NSMenuItems CF$UID 229 NSTitle CF$UID 227 Next Tab K selectNextTab: $class CF$UID 23 NSLabel CF$UID 152 NSSource CF$UID 149 $class CF$UID 21 NSKeyEquiv CF$UID 151 NSKeyEquivModMask 1048576 NSMenu CF$UID 144 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 150 Previous Tab J selectPreviousTab: $class CF$UID 23 NSLabel CF$UID 157 NSSource CF$UID 154 $class CF$UID 21 NSKeyEquiv CF$UID 156 NSKeyEquivModMask 1048576 NSMenu CF$UID 144 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 155 Close Tab w closeCurrentTab: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 161 NSSource CF$UID 159 $class CF$UID 21 NSKeyEquiv CF$UID 129 NSKeyEquivModMask 1572864 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 160 Hide Others doApplicationHideOtherApplications: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 165 NSSource CF$UID 163 $class CF$UID 21 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 164 Show All doApplicationUnhideAllApplications: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 170 NSSource CF$UID 167 $class CF$UID 21 NSKeyEquiv CF$UID 169 NSKeyEquivModMask 1048576 NSMenu CF$UID 138 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 168 Connected Window... N openNamePrompt: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 175 NSSource CF$UID 172 $class CF$UID 21 NSKeyEquiv CF$UID 174 NSKeyEquivModMask 1048576 NSMenu CF$UID 138 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 173 Unconnected Window n openEmptyWindow: $class CF$UID 23 NSDestination CF$UID 2 NSLabel CF$UID 181 NSSource CF$UID 177 $class CF$UID 21 NSKeyEquiv CF$UID 180 NSKeyEquivModMask 1048576 NSMenu CF$UID 178 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 179 $class CF$UID 199 NSMenuItems CF$UID 233 NSTitle CF$UID 231 Topic Inspector t openTopicInspector: $class CF$UID 243 NSDestination CF$UID 183 NSLabel CF$UID 242 NSSource CF$UID 2 $class CF$UID 199 NSMenuItems CF$UID 184 NSName CF$UID 241 NSTitle CF$UID 3 $class CF$UID 197 NS.objects CF$UID 185 CF$UID 203 CF$UID 207 CF$UID 226 CF$UID 230 CF$UID 234 $class CF$UID 21 NSAction CF$UID 187 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 118 NSTitle CF$UID 186 TalkSoup submenuAction: $class CF$UID 197 NS.objects CF$UID 117 CF$UID 189 CF$UID 122 CF$UID 190 CF$UID 191 CF$UID 200 CF$UID 127 CF$UID 159 CF$UID 163 CF$UID 201 CF$UID 132 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 $class CF$UID 21 NSAction CF$UID 193 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 194 NSTitle CF$UID 192 Services submenuAction: $class CF$UID 199 NSMenuItems CF$UID 196 NSName CF$UID 198 NSTitle CF$UID 195 $class CF$UID 6 NS.string Services $class CF$UID 197 NS.objects $classes NSMutableArray NSArray NSObject $classname NSMutableArray _NSServicesMenu $classes NSMenu NSObject $classname NSMenu $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 118 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 _NSAppleMenu $class CF$UID 21 NSAction CF$UID 205 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 138 NSTitle CF$UID 204 Connection submenuAction: $class CF$UID 197 NS.objects CF$UID 137 CF$UID 167 CF$UID 172 $class CF$UID 21 NSAction CF$UID 209 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 36 NSTitle CF$UID 208 Edit submenuAction: $class CF$UID 197 NS.objects CF$UID 35 CF$UID 71 CF$UID 211 CF$UID 61 CF$UID 41 CF$UID 51 CF$UID 112 CF$UID 85 CF$UID 76 CF$UID 212 CF$UID 213 CF$UID 218 CF$UID 222 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 $class CF$UID 21 NSAction CF$UID 215 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 90 NSTitle CF$UID 214 Find submenuAction: $class CF$UID 6 NS.string Find $class CF$UID 197 NS.objects CF$UID 89 CF$UID 95 CF$UID 99 CF$UID 103 CF$UID 107 $class CF$UID 21 NSAction CF$UID 220 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 31 NSTitle CF$UID 219 Spelling submenuAction: $class CF$UID 197 NS.objects CF$UID 66 CF$UID 46 CF$UID 30 $class CF$UID 21 NSAction CF$UID 224 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 36 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 57 NSTitle CF$UID 223 Speech submenuAction: $class CF$UID 197 NS.objects CF$UID 81 CF$UID 56 $class CF$UID 21 NSAction CF$UID 228 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 144 NSTitle CF$UID 227 Tab submenuAction: $class CF$UID 197 NS.objects CF$UID 149 CF$UID 143 CF$UID 154 $class CF$UID 21 NSAction CF$UID 232 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 178 NSTitle CF$UID 231 Tools submenuAction: $class CF$UID 197 NS.objects CF$UID 177 $class CF$UID 21 NSAction CF$UID 236 NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 183 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSSubmenu CF$UID 12 NSTitle CF$UID 235 Window submenuAction: $class CF$UID 6 NS.string Window $class CF$UID 197 NS.objects CF$UID 11 CF$UID 239 CF$UID 25 $class CF$UID 21 NSIsDisabled NSIsSeparator NSKeyEquiv CF$UID 27 NSKeyEquivModMask 1048576 NSMenu CF$UID 12 NSMixedImage CF$UID 19 NSMnemonicLoc 2147483647 NSOnImage CF$UID 15 NSTitle CF$UID 27 _NSWindowsMenu _NSMainMenu menu $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 245 NS.objects CF$UID 172 CF$UID 122 CF$UID 95 CF$UID 81 CF$UID 90 CF$UID 85 CF$UID 56 CF$UID 46 CF$UID 143 CF$UID 12 CF$UID 201 CF$UID 226 CF$UID 41 CF$UID 200 CF$UID 190 CF$UID 177 CF$UID 230 CF$UID 99 CF$UID 11 CF$UID 76 CF$UID 35 CF$UID 144 CF$UID 51 CF$UID 132 CF$UID 127 CF$UID 183 CF$UID 117 CF$UID 25 CF$UID 149 CF$UID 137 CF$UID 191 CF$UID 178 CF$UID 103 CF$UID 218 CF$UID 185 CF$UID 30 CF$UID 207 CF$UID 212 CF$UID 36 CF$UID 239 CF$UID 112 CF$UID 203 CF$UID 222 CF$UID 159 CF$UID 138 CF$UID 89 CF$UID 118 CF$UID 154 CF$UID 234 CF$UID 194 CF$UID 167 CF$UID 107 CF$UID 189 CF$UID 57 CF$UID 71 CF$UID 31 CF$UID 213 CF$UID 66 CF$UID 61 CF$UID 163 CF$UID 211 $classes NSArray NSObject $classname NSArray $class CF$UID 245 NS.objects CF$UID 138 CF$UID 118 CF$UID 90 CF$UID 57 CF$UID 213 CF$UID 36 CF$UID 57 CF$UID 31 CF$UID 144 CF$UID 234 CF$UID 118 CF$UID 183 CF$UID 36 CF$UID 118 CF$UID 118 CF$UID 178 CF$UID 183 CF$UID 90 CF$UID 12 CF$UID 36 CF$UID 36 CF$UID 226 CF$UID 36 CF$UID 118 CF$UID 118 CF$UID 2 CF$UID 118 CF$UID 12 CF$UID 144 CF$UID 138 CF$UID 118 CF$UID 230 CF$UID 90 CF$UID 36 CF$UID 183 CF$UID 31 CF$UID 183 CF$UID 36 CF$UID 207 CF$UID 12 CF$UID 36 CF$UID 183 CF$UID 36 CF$UID 118 CF$UID 203 CF$UID 90 CF$UID 185 CF$UID 144 CF$UID 183 CF$UID 191 CF$UID 138 CF$UID 90 CF$UID 118 CF$UID 222 CF$UID 36 CF$UID 218 CF$UID 36 CF$UID 31 CF$UID 36 CF$UID 118 CF$UID 36 $class CF$UID 245 NS.objects CF$UID 12 CF$UID 46 CF$UID 132 CF$UID 30 CF$UID 2 CF$UID 122 CF$UID 218 CF$UID 31 CF$UID 239 CF$UID 183 CF$UID 66 $class CF$UID 245 NS.objects CF$UID 249 CF$UID 251 CF$UID 252 CF$UID 253 CF$UID 254 CF$UID 255 CF$UID 251 CF$UID 256 CF$UID 257 CF$UID 258 CF$UID 259 $class CF$UID 250 $classes NSNull %NSNull NSObject $classname NSNull NSMenuItem 1111 NSMenuItem2 $class CF$UID 6 NS.string File's Owner 121 NSMenu $class CF$UID 6 NS.string $class CF$UID 6 NS.string MainMenu NSMenuItem1 $class CF$UID 245 NS.objects $class CF$UID 245 NS.objects $class CF$UID 245 NS.objects CF$UID 90 CF$UID 171 CF$UID 61 CF$UID 163 CF$UID 138 CF$UID 25 CF$UID 60 CF$UID 149 CF$UID 102 CF$UID 176 CF$UID 81 CF$UID 95 CF$UID 189 CF$UID 148 CF$UID 51 CF$UID 132 CF$UID 106 CF$UID 121 CF$UID 177 CF$UID 226 CF$UID 45 CF$UID 153 CF$UID 167 CF$UID 222 CF$UID 103 CF$UID 24 CF$UID 111 CF$UID 126 CF$UID 190 CF$UID 142 CF$UID 75 CF$UID 31 CF$UID 239 CF$UID 76 CF$UID 131 CF$UID 57 CF$UID 116 CF$UID 143 CF$UID 194 CF$UID 36 CF$UID 117 CF$UID 136 CF$UID 200 CF$UID 12 CF$UID 66 CF$UID 71 CF$UID 213 CF$UID 159 CF$UID 65 CF$UID 137 CF$UID 158 CF$UID 89 CF$UID 230 CF$UID 41 CF$UID 56 CF$UID 201 CF$UID 10 CF$UID 162 CF$UID 50 CF$UID 154 CF$UID 29 CF$UID 11 CF$UID 99 CF$UID 80 CF$UID 122 CF$UID 166 CF$UID 112 CF$UID 203 CF$UID 30 CF$UID 178 CF$UID 34 CF$UID 182 CF$UID 85 CF$UID 84 CF$UID 211 CF$UID 172 CF$UID 40 CF$UID 107 CF$UID 191 CF$UID 218 CF$UID 35 CF$UID 183 CF$UID 88 CF$UID 2 CF$UID 70 CF$UID 234 CF$UID 212 CF$UID 207 CF$UID 127 CF$UID 144 CF$UID 94 CF$UID 118 CF$UID 185 CF$UID 55 CF$UID 98 CF$UID 46 $class CF$UID 245 NS.objects CF$UID 264 CF$UID 265 CF$UID 266 CF$UID 267 CF$UID 268 CF$UID 269 CF$UID 270 CF$UID 271 CF$UID 272 CF$UID 273 CF$UID 274 CF$UID 275 CF$UID 276 CF$UID 277 CF$UID 278 CF$UID 279 CF$UID 280 CF$UID 281 CF$UID 282 CF$UID 283 CF$UID 284 CF$UID 285 CF$UID 286 CF$UID 287 CF$UID 288 CF$UID 289 CF$UID 290 CF$UID 291 CF$UID 292 CF$UID 293 CF$UID 294 CF$UID 295 CF$UID 296 CF$UID 297 CF$UID 298 CF$UID 299 CF$UID 300 CF$UID 301 CF$UID 302 CF$UID 303 CF$UID 304 CF$UID 305 CF$UID 306 CF$UID 307 CF$UID 308 CF$UID 309 CF$UID 310 CF$UID 311 CF$UID 312 CF$UID 313 CF$UID 314 CF$UID 315 CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 CF$UID 320 CF$UID 321 CF$UID 322 CF$UID 323 CF$UID 324 CF$UID 325 CF$UID 326 CF$UID 327 CF$UID 328 CF$UID 329 CF$UID 330 CF$UID 331 CF$UID 332 CF$UID 333 CF$UID 334 CF$UID 335 CF$UID 336 CF$UID 337 CF$UID 338 CF$UID 339 CF$UID 340 CF$UID 341 CF$UID 342 CF$UID 343 CF$UID 344 CF$UID 345 CF$UID 346 CF$UID 347 CF$UID 348 CF$UID 349 CF$UID 350 CF$UID 351 CF$UID 352 CF$UID 353 CF$UID 354 CF$UID 355 CF$UID 356 CF$UID 357 CF$UID 358 CF$UID 359 220 272 199 150 249 5 228 259 244 273 196 208 236 267 203 136 245 262 256 251 225 268 257 211 221 39 247 263 143 266 232 200 92 198 264 212 261 253 130 205 58 265 144 24 204 215 218 145 230 250 269 209 254 197 195 149 37 270 226 260 222 23 213 233 129 271 246 248 219 255 223 274 202 235 206 258 224 210 131 216 207 29 241 1 231 19 214 217 134 252 242 57 56 227 243 201 $class CF$UID 197 NS.objects $class CF$UID 245 NS.objects $class CF$UID 245 NS.objects $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.gorm/000077500000000000000000000000001067163320700310605ustar00rootroot00000000000000data.classes000066400000000000000000000007261067163320700332760ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.gorm{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setText:", "setTimestampEnabled:" ); Super = NSObject; }; GeneralPreferencesController = { Actions = ( "setText:", "setTimestampEnabled:" ); Outlets = ( preferencesView, userView, nameView, passwordView, nickView, quitView, timestampButton, timestampFormatField ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.gorm/data.info000066400000000000000000000002701067163320700326450ustar00rootroot00000000000000GNUstep archive00002b5d:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed Streamobjects.gorm000066400000000000000000000147021067163320700333240ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.gormGNUstep archive00002b5d:0000001d:000000c6:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%GeneralPreferencesController0& %  TextField101 NSTextField1 NSControl1NSView1 NSResponder% C B B A  B A& 01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0 &0 1NSFont%&&&&&&&&0%0 1NSColor0 &%NSNamedColorSpace0 &%System0&%textBackgroundColor0 0& % textColor0& %  TextField20% B B B A  B A&0 &%0 0& &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0& % TextField0% B B B A  B A&0 &%0 0& &&&&&&&&0%0  0!&%System0"&%textBackgroundColor0# !0$& % textColor0%& %  TextField30&% C B B A  B A& 0' &%0( 0)& &&&&&&&&0%0* 0+&%System0,&%textBackgroundColor0- +0.& % textColor0/& % GormNSWindow001GSWindowTemplate1GSClassSwapper01&%NSWindow1NSWindow%  C B&% C D02%  C B  C B&03 &  &04% @ B B A  B A& 05 &%06 07&%Nick &&&&&&&&0%08 09&%System0:&%textBackgroundColor0; 90<& % textColor0=% @ B B A  B A& 0> &%0? 0@&%Password &&&&&&&&0%0A 0B&%System0C&%textBackgroundColor0D B0E& % textColor0F% CH B B A  B A& 0G &%0H 0I& % Real Name &&&&&&&&0%0J 0K&%System0L&%textBackgroundColor0M K0N& % textColor0O% CH B B A  B A& 0P &%0Q 0R&%Username &&&&&&&&0%0S 0T&%System0U&%textBackgroundColor0V T0W& % textColor0X% B B C A  C A& 0Y &%0Z 0[& &&&&&&&&0%0\ 0]&%System0^&%textBackgroundColor0_ ]0`& % textColor0a% @ B B A  B A& 0b &%0c 0d& % Quit Message &&&&&&&&0%0e 0f&%System0g&%textBackgroundColor0h f0i& % textColor0j1NSButton% B @ B A  B A& 0k &%0l1 NSButtonCell0m& % Timestamps0n1NSImage0o1NSMutableString&% common_SwitchOff &&&&&&&&%0p&0q&0r0s&% common_SwitchOn&&&0t% CR @ B A  B A& 0u &%0v 0w&%Format &&&&&&&&0%0x 0y&%System0z&%textBackgroundColor0{ y0|& % textColor0}% C @ B A  B A& 0~ &%0  &&&&&&&&0%0 0&%System0&%windowBackgroundColor0&%Window0&%Window0&%Window ? B F@ F@%00&%NSApplicationIcon&   E D0& %  TextField440& %  TextField5=0&%GSCustomClassMap0&0&%Buttonj0& %  TextField6F0& %  TextField10t0& % NSVisible0 &0& %  TextField7O0& %  TextField11}0& %  TextField8X0& %  TextField9a0 &""01NSNibConnector/0&%NSOwner01NSNibOutletConnector/0&%preferencesView0000%000000& % passwordView00&%nickView0%0&%userView00&%nameView01NSNibControlConnector0&% setText:000%0000&% setText:00&% quitView00& %  nextKeyView00%0%000000&% setTimestampEnabled:00&% timestampFormatField0±0ñ&% timestampButton0ı0ű&% setText:01 GSMutableSet1 NSMutableSet1NSSet&0TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.nib/000077500000000000000000000000001067163320700306645ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.nib/classes.nib000066400000000000000000000012201067163320700330060ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {setText = id; setTimestampEnabled = id; }; CLASS = GeneralPreferencesController; LANGUAGE = ObjC; OUTLETS = { nameView = id; nickView = id; passwordView = id; preferencesView = id; quitView = id; timestampButton = id; timestampFormatField = id; userView = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.nib/info.nib000066400000000000000000000007551067163320700323200ustar00rootroot00000000000000 IBDocumentLocation 50 111 356 240 0 0 1024 746 IBFramework Version 439.0 IBOpenObjects 6 IBSystem Version 8A428 IBUsesTextArchiving keyedobjects.nib000066400000000000000000001533101067163320700337550ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GeneralPreferences.nib $archiver NSKeyedArchiver $objects $null $class CF$UID 202 NSAccessibilityConnectors CF$UID 199 NSAccessibilityOidsKeys CF$UID 200 NSAccessibilityOidsValues CF$UID 201 NSClassesKeys CF$UID 157 NSClassesValues CF$UID 158 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 141 NSNamesValues CF$UID 142 NSNextOid 48 NSObjectsKeys CF$UID 138 NSObjectsValues CF$UID 140 NSOidsKeys CF$UID 159 NSOidsValues CF$UID 160 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 GeneralPreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 102 NS.objects CF$UID 9 CF$UID 30 CF$UID 38 CF$UID 43 CF$UID 48 CF$UID 53 CF$UID 110 CF$UID 113 CF$UID 115 CF$UID 117 CF$UID 119 CF$UID 121 CF$UID 123 CF$UID 124 CF$UID 125 CF$UID 126 CF$UID 128 CF$UID 129 CF$UID 130 CF$UID 132 CF$UID 134 CF$UID 136 $class CF$UID 29 NSDestination CF$UID 10 NSLabel CF$UID 28 NSSource CF$UID 2 $class CF$UID 27 NSCell CF$UID 13 NSEnabled NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 266 $class CF$UID 104 NSFrame CF$UID 103 NSNextResponder CF$UID 0 NSSubviews CF$UID 60 {{115, 74}, {331, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4195328 NSContents CF$UID 14 NSControlView CF$UID 10 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 $class CF$UID 17 NSName CF$UID 16 NSSize 13 NSfFlags 1044 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 21 NSColorName CF$UID 20 NSColorSpace 6 System textBackgroundColor $class CF$UID 22 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 25 NSColorName CF$UID 24 NSColorSpace 6 textColor $class CF$UID 22 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField quitView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 29 NSDestination CF$UID 31 NSLabel CF$UID 37 NSSource CF$UID 2 $class CF$UID 36 NSCell CF$UID 35 NSClassName CF$UID 32 NSEnabled NSFrame CF$UID 34 NSNextResponder CF$UID 11 NSOriginalClassName CF$UID 33 NSSuperview CF$UID 11 NSvFlags 268 NSSecureTextField NSTextField {{115, 104}, {106, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4195328 NSContents CF$UID 14 NSControlView CF$UID 31 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 $classes NSClassSwapper NSObject $classname NSClassSwapper passwordView $class CF$UID 29 NSDestination CF$UID 39 NSLabel CF$UID 42 NSSource CF$UID 2 $class CF$UID 27 NSCell CF$UID 41 NSEnabled NSFrame CF$UID 40 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 266 {{318, 104}, {128, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4195328 NSContents CF$UID 14 NSControlView CF$UID 39 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 userView $class CF$UID 29 NSDestination CF$UID 44 NSLabel CF$UID 47 NSSource CF$UID 2 $class CF$UID 27 NSCell CF$UID 46 NSEnabled NSFrame CF$UID 45 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{115, 134}, {106, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4195328 NSContents CF$UID 14 NSControlView CF$UID 44 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 nickView $class CF$UID 29 NSDestination CF$UID 49 NSLabel CF$UID 52 NSSource CF$UID 2 $class CF$UID 27 NSCell CF$UID 51 NSEnabled NSFrame CF$UID 50 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 266 {{318, 134}, {128, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4195328 NSContents CF$UID 14 NSControlView CF$UID 49 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 nameView $class CF$UID 29 NSDestination CF$UID 54 NSLabel CF$UID 109 NSSource CF$UID 2 $class CF$UID 108 NSMaxSize CF$UID 107 NSMinSize CF$UID 106 NSScreenRect CF$UID 105 NSViewClass CF$UID 58 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 57 NSWindowRect CF$UID 55 NSWindowStyleMask 14 NSWindowTitle CF$UID 56 NSWindowView CF$UID 11 {{96, 392}, {453, 161}} Window NSWindow $class CF$UID 59 NS.string View $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 102 NS.objects CF$UID 44 CF$UID 31 CF$UID 10 CF$UID 61 CF$UID 70 CF$UID 74 CF$UID 78 CF$UID 82 CF$UID 39 CF$UID 49 CF$UID 86 CF$UID 95 CF$UID 98 $class CF$UID 27 NSCell CF$UID 63 NSEnabled NSFrame CF$UID 62 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 264 {{8, 76}, {100, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 64 NSControlView CF$UID 61 NSSupport CF$UID 15 NSTextColor CF$UID 68 Quit Message $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 67 NSColorName CF$UID 66 NSColorSpace 6 controlColor $class CF$UID 22 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 25 NSColorName CF$UID 69 NSColorSpace 6 controlTextColor $class CF$UID 27 NSCell CF$UID 72 NSEnabled NSFrame CF$UID 71 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{8, 106}, {102, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 73 NSControlView CF$UID 70 NSSupport CF$UID 15 NSTextColor CF$UID 68 Password $class CF$UID 27 NSCell CF$UID 76 NSEnabled NSFrame CF$UID 75 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{8, 136}, {102, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 77 NSControlView CF$UID 74 NSSupport CF$UID 15 NSTextColor CF$UID 68 Nickname $class CF$UID 27 NSCell CF$UID 80 NSEnabled NSFrame CF$UID 79 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{226, 104}, {87, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 81 NSControlView CF$UID 78 NSSupport CF$UID 15 NSTextColor CF$UID 68 Username $class CF$UID 27 NSCell CF$UID 84 NSEnabled NSFrame CF$UID 83 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{226, 136}, {87, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 85 NSControlView CF$UID 82 NSSupport CF$UID 15 NSTextColor CF$UID 68 Real Name $class CF$UID 94 NSCell CF$UID 88 NSEnabled NSFrame CF$UID 87 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{83, 43}, {167, 18}} $class CF$UID 93 NSAlternateContents CF$UID 14 NSAlternateImage CF$UID 90 NSButtonFlags 1210864127 NSButtonFlags2 2 NSCellFlags 67239424 NSCellFlags2 67108864 NSContents CF$UID 89 NSControlView CF$UID 86 NSKeyEquivalent CF$UID 14 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Enable Timestamps $class CF$UID 92 NSImageName CF$UID 91 NSSwitch $classes NSButtonImageSource NSObject $classname NSButtonImageSource $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 27 NSCell CF$UID 97 NSEnabled NSFrame CF$UID 96 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 266 {{318, 42}, {128, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 272630784 NSContents CF$UID 14 NSControlView CF$UID 95 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 $class CF$UID 27 NSCell CF$UID 100 NSEnabled NSFrame CF$UID 99 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 268 {{253, 44}, {60, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 101 NSControlView CF$UID 98 NSSupport CF$UID 15 NSTextColor CF$UID 68 Format $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {453, 161}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1024, 746}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate preferencesView $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 111 NSSource CF$UID 31 setText: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 114 NSSource CF$UID 10 setText: $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 116 NSSource CF$UID 39 setText: $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 118 NSSource CF$UID 44 setText: $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 120 NSSource CF$UID 49 setText: $class CF$UID 29 NSDestination CF$UID 49 NSLabel CF$UID 122 NSSource CF$UID 44 nextKeyView $class CF$UID 29 NSDestination CF$UID 31 NSLabel CF$UID 122 NSSource CF$UID 49 $class CF$UID 29 NSDestination CF$UID 39 NSLabel CF$UID 122 NSSource CF$UID 31 $class CF$UID 29 NSDestination CF$UID 10 NSLabel CF$UID 122 NSSource CF$UID 39 $class CF$UID 29 NSDestination CF$UID 86 NSLabel CF$UID 127 NSSource CF$UID 10 nextKeyView $class CF$UID 29 NSDestination CF$UID 95 NSLabel CF$UID 127 NSSource CF$UID 86 $class CF$UID 29 NSDestination CF$UID 44 NSLabel CF$UID 127 NSSource CF$UID 95 $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 131 NSSource CF$UID 95 setText $class CF$UID 112 NSDestination CF$UID 2 NSLabel CF$UID 133 NSSource CF$UID 86 setTimestampEnabled $class CF$UID 29 NSDestination CF$UID 86 NSLabel CF$UID 135 NSSource CF$UID 2 timestampButton $class CF$UID 29 NSDestination CF$UID 95 NSLabel CF$UID 137 NSSource CF$UID 2 timestampFormatField $class CF$UID 139 NS.objects CF$UID 78 CF$UID 44 CF$UID 49 CF$UID 31 CF$UID 70 CF$UID 11 CF$UID 74 CF$UID 54 CF$UID 39 CF$UID 86 CF$UID 95 CF$UID 98 CF$UID 82 CF$UID 10 CF$UID 61 $classes NSArray NSObject $classname NSArray $class CF$UID 139 NS.objects CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 54 CF$UID 11 CF$UID 2 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 $class CF$UID 139 NS.objects CF$UID 78 CF$UID 44 CF$UID 49 CF$UID 31 CF$UID 2 CF$UID 74 CF$UID 70 CF$UID 54 CF$UID 39 CF$UID 86 CF$UID 95 CF$UID 98 CF$UID 82 CF$UID 10 CF$UID 61 $class CF$UID 139 NS.objects CF$UID 143 CF$UID 144 CF$UID 145 CF$UID 146 CF$UID 147 CF$UID 148 CF$UID 149 CF$UID 56 CF$UID 150 CF$UID 151 CF$UID 152 CF$UID 153 CF$UID 154 CF$UID 155 CF$UID 156 NSTextField213 NSTextField NSTextField3111 NSTextField1 File's Owner NSTextField212 NSTextField211 NSTextField311 NSButton4 NSTextField3 NSTextField2131 NSTextField214 NSTextField2 NSTextField21 $class CF$UID 139 NS.objects CF$UID 31 $class CF$UID 139 NS.objects CF$UID 32 $class CF$UID 139 NS.objects CF$UID 70 CF$UID 115 CF$UID 54 CF$UID 53 CF$UID 44 CF$UID 121 CF$UID 82 CF$UID 86 CF$UID 74 CF$UID 98 CF$UID 134 CF$UID 11 CF$UID 38 CF$UID 61 CF$UID 123 CF$UID 126 CF$UID 95 CF$UID 113 CF$UID 2 CF$UID 129 CF$UID 119 CF$UID 49 CF$UID 43 CF$UID 10 CF$UID 117 CF$UID 136 CF$UID 39 CF$UID 124 CF$UID 30 CF$UID 78 CF$UID 128 CF$UID 9 CF$UID 110 CF$UID 48 CF$UID 125 CF$UID 130 CF$UID 31 CF$UID 132 $class CF$UID 139 NS.objects CF$UID 161 CF$UID 162 CF$UID 163 CF$UID 164 CF$UID 165 CF$UID 166 CF$UID 167 CF$UID 168 CF$UID 169 CF$UID 170 CF$UID 171 CF$UID 172 CF$UID 173 CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 CF$UID 181 CF$UID 182 CF$UID 183 CF$UID 184 CF$UID 185 CF$UID 186 CF$UID 187 CF$UID 188 CF$UID 189 CF$UID 190 CF$UID 191 CF$UID 192 CF$UID 193 CF$UID 194 CF$UID 195 CF$UID 196 CF$UID 197 CF$UID 198 14 30 6 27 7 33 17 38 15 40 46 5 23 13 34 41 39 29 1 43 32 19 24 9 31 47 18 35 21 16 42 20 28 26 36 44 8 45 $class CF$UID 102 NS.objects $class CF$UID 139 NS.objects $class CF$UID 139 NS.objects $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.gorm/000077500000000000000000000000001067163320700275645ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.gorm/data.classes000066400000000000000000000004711067163320700320560ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; GroupEditorController = { Actions = ( "setEntry:" ); Outlets = ( entryField, window, okButton ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.gorm/data.info000066400000000000000000000002701067163320700313510ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.gorm/objects.gorm000066400000000000000000000134601067163320700321070ustar00rootroot00000000000000GNUstep archive00002af9:0000001b:000000b1:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString& % GroupEditor01NSWindow1 NSResponder%  C B&% C C01NSView%  C B  C B&01 NSMutableArray1 NSArray&01 NSTextField1 NSControl% B BD C A  C A&0 &%0 1 NSTextFieldCell1 NSActionCell1NSCell0 &0 1NSFont%&&&&&&&&0%0 1NSColor0 &%NSNamedColorSpace0&%System0&%textBackgroundColor0 0& % textColor0 % A BD B A  B A&0 &%0 0& % Entry Name &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor01NSButton% Cʀ @ B B  B B&0 &%01 NSButtonCell0&%OK01NSImage0 &%common_ret.tiff &&&&&&&&%0!&% 0"&0#0$&%common_retH.tiff&&&0% % A A@ C A  C A&0& &%0' 0(& &&&&&&&&0%0) 0*&%System0+&%textBackgroundColor0, *0-& % textColor0. 0/&%System00&%windowBackgroundColor01&%Window02& % Group Editor2 ? A F@ F@%0304&%NSApplicationIcon05&%NSOwner06&%GroupEditorController07& %  TextField108& %  TextField209 % B B A  B A&0: &%0; 0<&%Nick0=%0>& % Helvetica A`A`&&&&&&&&0%0? 0@&%System0A&%textBackgroundColor0B @0C& % textColor0D& % TextField0E& %  TextField30F % B B B A  B A&0G &%0H 0I&0J%0K& % Helvetica A@A@&&&&&&&&0%0L 0M&%System0N&%textBackgroundColor0O M0P& % textColor0Q& %  TextField40R % CY B B A  B A&0S &%0T 0U& % Real Name=&&&&&&&&0%0V 0W&%System0X&%textBackgroundColor0Y W0Z& % textColor0[& %  TextField50\ % C B B A  B A&0] &%0^ 0_&J&&&&&&&&0%0` 0a&%System0b&%textBackgroundColor0c a0d& % textColor0e&%GSCustomClassMap0f&0g&%Button0h& %  TextField60i % @ B A  B A&0j &%0k 0l&%Password=&&&&&&&&0%0m 0n&%System0o&%textBackgroundColor0p n0q& % textColor0r& %  TextField70s % B @ B A  B A&0t &%0u 0v&J&&&&&&&&0%0w 0x&%System0y&%textBackgroundColor0z x0{& % textColor0|& % NSVisible0} &0~& %  TextField10%0& %  TextField80 % CY @ B A  B A&0 &%0 0& % User Name=&&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0& %  TextField90 % C @ B A  B A&0 &%0 0&J&&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0 &01NSNibConnector0&%NSOwner0D0701NSNibOutletConnectorD0& % entryField080E0Q0[0h0r0000&%window0g0~0~0& % extraField0g0&%okButton01NSNibControlConnectorD0& % setEntry:0D01NSMutableString&% initialFirstResponder0Dg0& %  nextKeyView0gD01 GSMutableSet1 NSMutableSet1NSSet&TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.nib/000077500000000000000000000000001067163320700273705ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.nib/classes.nib000066400000000000000000000005621067163320700315220ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {setEntry = id; }; CLASS = GroupEditorController; LANGUAGE = ObjC; OUTLETS = {entryField = id; okButton = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.nib/info.nib000066400000000000000000000007561067163320700310250ustar00rootroot00000000000000 IBDocumentLocation 518 211 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/GroupEditor.nib/keyedobjects.nib000066400000000000000000000567331067163320700325530ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 99 NSClassesKeys CF$UID 82 NSClassesValues CF$UID 83 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 75 NSNamesValues CF$UID 76 NSNextOid 17 NSObjectsKeys CF$UID 72 NSObjectsValues CF$UID 74 NSOidsKeys CF$UID 84 NSOidsValues CF$UID 85 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 GroupEditorController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 56 NS.objects CF$UID 9 CF$UID 25 CF$UID 40 CF$UID 64 CF$UID 67 CF$UID 68 CF$UID 70 $class CF$UID 24 NSDestination CF$UID 10 NSLabel CF$UID 23 NSSource CF$UID 2 $class CF$UID 22 NSCell CF$UID 13 NSEnabled NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 $class CF$UID 58 NSFrame CF$UID 57 NSNextResponder CF$UID 0 NSSubviews CF$UID 46 {{323, 12}, {78, 32}} $class CF$UID 21 NSAlternateContents CF$UID 18 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 14 NSControlView CF$UID 10 NSKeyEquivalent CF$UID 19 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Done $class CF$UID 17 NSName CF$UID 16 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 20 NS.string $classes NSMutableString NSString NSObject $classname NSMutableString $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton okButton $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 24 NSDestination CF$UID 26 NSLabel CF$UID 39 NSSource CF$UID 2 $class CF$UID 38 NSCell CF$UID 28 NSEnabled NSFrame CF$UID 27 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 {{126, 60}, {269, 22}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags -1804468671 NSCellFlags2 0 NSContents CF$UID 18 NSControlView CF$UID 26 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 34 $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 32 NSColorName CF$UID 31 NSColorSpace 6 System textBackgroundColor $class CF$UID 33 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 36 NSColorName CF$UID 35 NSColorSpace 6 textColor $class CF$UID 33 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField entryField $class CF$UID 24 NSDestination CF$UID 41 NSLabel CF$UID 63 NSSource CF$UID 2 $class CF$UID 62 NSMaxSize CF$UID 61 NSMinSize CF$UID 60 NSScreenRect CF$UID 59 NSViewClass CF$UID 45 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 44 NSWindowRect CF$UID 42 NSWindowStyleMask 1 NSWindowTitle CF$UID 43 NSWindowView CF$UID 11 {{336, 462}, {415, 102}} Edit Group NSWindow $class CF$UID 20 NS.string View $class CF$UID 56 NS.objects CF$UID 26 CF$UID 47 CF$UID 10 $class CF$UID 38 NSCell CF$UID 49 NSEnabled NSFrame CF$UID 48 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 {{17, 62}, {104, 17}} $class CF$UID 37 NSBackgroundColor CF$UID 51 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 50 NSControlView CF$UID 47 NSSupport CF$UID 15 NSTextColor CF$UID 54 Group Name $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 53 NSColorName CF$UID 52 NSColorSpace 6 controlColor $class CF$UID 33 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 36 NSColorName CF$UID 55 NSColorSpace 6 controlTextColor $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {415, 102}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {131.13, 72} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 66 NSDestination CF$UID 2 NSLabel CF$UID 65 NSSource CF$UID 26 setEntry $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 66 NSDestination CF$UID 2 NSLabel CF$UID 65 NSSource CF$UID 10 $class CF$UID 24 NSDestination CF$UID 10 NSLabel CF$UID 69 NSSource CF$UID 26 nextKeyView $class CF$UID 24 NSDestination CF$UID 26 NSLabel CF$UID 71 NSSource CF$UID 41 initialFirstResponder $class CF$UID 73 NS.objects CF$UID 47 CF$UID 41 CF$UID 10 CF$UID 11 CF$UID 26 $classes NSArray NSObject $classname NSArray $class CF$UID 73 NS.objects CF$UID 11 CF$UID 2 CF$UID 11 CF$UID 41 CF$UID 11 $class CF$UID 73 NS.objects CF$UID 47 CF$UID 41 CF$UID 10 CF$UID 26 CF$UID 2 $class CF$UID 73 NS.objects CF$UID 77 CF$UID 78 CF$UID 79 CF$UID 80 CF$UID 81 NSTextField2 Window NSButton NSTextField File's Owner $class CF$UID 73 NS.objects $class CF$UID 73 NS.objects $class CF$UID 73 NS.objects CF$UID 64 CF$UID 25 CF$UID 10 CF$UID 2 CF$UID 41 CF$UID 26 CF$UID 68 CF$UID 11 CF$UID 70 CF$UID 40 CF$UID 9 CF$UID 47 CF$UID 67 $class CF$UID 73 NS.objects CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 CF$UID 91 CF$UID 92 CF$UID 93 CF$UID 94 CF$UID 95 CF$UID 96 CF$UID 97 CF$UID 98 13 11 9 1 5 7 15 6 16 12 10 8 14 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Localizable.strings000066400000000000000000000114321067163320700302130ustar00rootroot00000000000000/* GNUstepOutput.m */ "Error: " = "Error: "; "Info" = "Info"; "About TalkSoup" = "About TalkSoup"; "Preferences..." = "Preferences..."; "Bundle Setup..." = "Bundle Setup..."; "Connection" = "Connection"; "Open Server List..." = "Open Server List..."; "Connected Window..." = "Connected Window..."; "Unconnected Window" = "Unconnected Window"; "Tab" = "Tab"; "Next Tab" = "Next Tab"; "Previous Tab" = "Previous Tab"; "Close Tab" = "Close Tab"; "Tools" = "Tools"; "Topic Inspector" = "Topic Inspector"; "Edit" = "Edit"; "Cut" = "Cut"; "Copy" = "Copy"; "Paste" = "Paste"; "Delete" = "Delete"; "Select All" = "Select All"; "Windows" = "Windows"; "Services" = "Services"; "Hide" = "Hide"; "Quit" = "Quit"; "ServerList" = "ServerList"; "NamePrompt" = "NamePrompt"; /* Controllers/BundleConfigureController.m */ "Welcome to the TalkSoup Bundle Configuration Interface.\n\nTalkSoup is a highly-modular IRC client, and parts of it can be loaded and unloaded while it is running. These optional parts are called bundles. There are two sets of bundles. The first set, the input bundles, affect data coming into the IRC client. The second set, the output bundles, affect the data leaving the IRC client. The pop up button located at the top is used to change which of these sets are being configured.\n\nAbove are two tables of bundles. On the left, there is a table showing the loaded bundles and the order they are loaded in. The arrows on the left can be used to move the selected bundle up and down throughout the list of loaded bundles. On the right is the bundles which can be loaded but currently are not. Use the arrow in the center to move bundles between the two tables.\n\nClicking on any bundle will show information about that bundle in this text area." = "Welcome to the TalkSoup Bundle Configuration Interface.\n\nTalkSoup is a highly-modular IRC client, and parts of it can be loaded and unloaded while it is running. These optional parts are called bundles. There are two sets of bundles. The first set, the input bundles, affect data coming into the IRC client. The second set, the output bundles, affect the data leaving the IRC client. The pop up button located at the top is used to change which of these sets are being configured.\n\nAbove are two tables of bundles. On the left, there is a table showing the loaded bundles and the order they are loaded in. The arrows on the left can be used to move the selected bundle up and down throughout the list of loaded bundles. On the right is the bundles which can be loaded but currently are not. Use the arrow in the center to move bundles between the two tables.\n\nClicking on any bundle will show information about that bundle in this text area."; /* Controllers/ContentController.m */ "Unconnected" = "Unconnected"; /* Controllers/InputController.m */ "Usage: /server [port]" = "Usage: /server [port]"; "Usage: /nick " = "Usage: /nick "; "Usage: /me " = "Usage: /me "; "Usage: /query " = "Usage: /query "; "Usage: /close " = "Usage: /close "; "Usage: /part [message]" = "Usage: /part [message]"; "Usage: /scrollback " = "Usage: /scrollback "; "Current value is: " = "Current value is: "; /* Controllers/ServerListController.m */ "Specify entry name" = "Specify entry name"; "Specify the server" = "Specify the server"; "Groups" = "Groups"; "Servers" = "Servers"; /* Controllers/ConnectionController/ConnectionController.m */ "Unconnected" = "Unconnected"; "Unconnected" = "Unconnected"; "Host not found: " = "Host not found: "; "Connecting" = "Connecting"; "Connecting to %@" = "Connecting to %@"; /* Controllers/ConnectionController/ConnectionControllerCtcp.m */ "TalkSoup can be obtained from: " = "TalkSoup can be obtained from: "; /* Controllers/ConnectionController/ConnectionControllerInFilter.m */ "Disconnected" = "Disconnected"; "Unconnected" = "Unconnected"; "Unconnected" = "Unconnected"; "Received a CTCP '%@ %@' from %@" = "Received a CTCP '%@ %@' from %@"; "Received a CTCP %@ from %@" = "Received a CTCP %@ from %@"; "Error: %@" = "Error: %@"; "Wallops(%@): %@" = "Wallops(%@): %@"; "%@ was kicked from %@ by %@ (%@)" = "%@ was kicked from %@ by %@ (%@)"; "You have been invited to %@ by %@" = "You have been invited to %@ by %@"; "%@ sets mode %@ %@%@" = "%@ sets mode %@ %@%@"; "%@ is now known as %@" = "%@ is now known as %@"; "%@ (%@) has joined %@" = "%@ (%@) has joined %@"; "%@ has left %@ (%@)" = "%@ has left %@ (%@)"; "%@ has quit IRC (%@)" = "%@ has quit IRC (%@)"; "%@ changed the topic in %@ to '%@'" = "%@ changed the topic in %@ to '%@'"; /* Controllers/ConnectionController/ConnectionControllerNumericCommands.m */ "Topic for %@ is \"%@\"" = "Topic for %@ is \"%@\""; "Topic for %@ set by %@ at %@" = "Topic for %@ set by %@ at %@"; TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.gorm/000077500000000000000000000000001067163320700274035ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.gorm/data.classes000066400000000000000000000004501067163320700316720ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; NamePromptController = { Actions = ( "returnHit:" ); Outlets = ( typeView, window ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.gorm/data.info000066400000000000000000000002701067163320700311700ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.gorm/objects.gorm000066400000000000000000000050401067163320700317210ustar00rootroot00000000000000GNUstep archive00002af9:0000001b:00000049:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%NamePromptController0&%GSCustomClassMap0&0& % NSVisible01NSMutableArray1NSArray&0 1NSWindow1 NSResponder%  C B&% D C0 1 NSView%  C B  C B&0 &0 1 NSTextField1 NSControl% A B4 B A  B A&0 &%01 NSTextFieldCell1 NSActionCell1NSCell0&%Server01NSFont%&&&&&&&&0%01NSColor0&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0 % B B4 C A  C A&0&%0 0&&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0 1NSButton% C @ Bx B  Bx B&0!&%0"1 NSButtonCell0#&%OK0$1NSImage0%&%common_ret.tiff0&% A@&&&&&&&&%0'&% 0(&0)0*&%common_retH.tiff&&&0+0,&%System0-&%windowBackgroundColor0.&%Window0/& % Connect.../ A A F@ F@%0001&%NSApplicationIcon02&%Button 03& % TextField 04& %  TextField105& % NamePrompt 06&  071NSNibConnector508&%NSOwner0930:40;1NSNibOutletConnector850<&%window0=840>&%typeView0?540@1NSMutableString&% initialFirstResponder0A20B1NSNibControlConnector420C& %  performClick:0D280E& %  returnHit:0F420G& %  nextKeyView0H24G0I1 GSMutableSet1 NSMutableSet1NSSet& TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.nib/000077500000000000000000000000001067163320700272075ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.nib/classes.nib000066400000000000000000000005411067163320700313360ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {returnHit = id; }; CLASS = NamePromptController; LANGUAGE = ObjC; OUTLETS = {typeView = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.nib/info.nib000066400000000000000000000007541067163320700306420ustar00rootroot00000000000000 IBDocumentLocation 69 64 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 6 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/NamePrompt.nib/keyedobjects.nib000066400000000000000000000571331067163320700323650ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 99 NSClassesKeys CF$UID 82 NSClassesValues CF$UID 83 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 75 NSNamesValues CF$UID 76 NSNextOid 17 NSObjectsKeys CF$UID 72 NSObjectsValues CF$UID 74 NSOidsKeys CF$UID 84 NSOidsValues CF$UID 85 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 NamePromptController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 59 NS.objects CF$UID 9 CF$UID 38 CF$UID 40 CF$UID 43 CF$UID 67 CF$UID 69 CF$UID 70 $class CF$UID 37 NSDestination CF$UID 28 NSLabel CF$UID 36 NSSource CF$UID 10 $class CF$UID 27 NSCell CF$UID 13 NSEnabled NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 2 $class CF$UID 61 NSFrame CF$UID 60 NSNextResponder CF$UID 0 NSSubviews CF$UID 49 {{100, 20}, {241, 22}} $class CF$UID 26 NSBackgroundColor CF$UID 18 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 14 NSControlView CF$UID 10 NSDrawsBackground NSSupport CF$UID 15 NSTextColor CF$UID 23 $class CF$UID 17 NSName CF$UID 16 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 21 NSColorName CF$UID 20 NSColorSpace 6 System textBackgroundColor $class CF$UID 22 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 25 NSColorName CF$UID 24 NSColorSpace 6 textColor $class CF$UID 22 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 35 NSCell CF$UID 30 NSEnabled NSFrame CF$UID 29 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 1 {{343, 12}, {92, 32}} $class CF$UID 34 NSAlternateContents CF$UID 14 NSAlternateImage CF$UID 15 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 31 NSControlView CF$UID 28 NSKeyEquivalent CF$UID 32 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 15 Connect $class CF$UID 33 NS.string $classes NSMutableString NSString NSObject $classname NSMutableString $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton performClick $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 37 NSDestination CF$UID 2 NSLabel CF$UID 39 NSSource CF$UID 28 returnHit $class CF$UID 42 NSDestination CF$UID 10 NSLabel CF$UID 41 NSSource CF$UID 2 typeView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 42 NSDestination CF$UID 44 NSLabel CF$UID 66 NSSource CF$UID 2 $class CF$UID 65 NSMaxSize CF$UID 64 NSMinSize CF$UID 63 NSScreenRect CF$UID 62 NSViewClass CF$UID 48 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 47 NSWindowRect CF$UID 45 NSWindowStyleMask 10 NSWindowTitle CF$UID 46 NSWindowView CF$UID 11 {{475, 194}, {442, 62}} Connect... NSWindow $class CF$UID 33 NS.string View $class CF$UID 59 NS.objects CF$UID 10 CF$UID 28 CF$UID 50 $class CF$UID 27 NSCell CF$UID 52 NSEnabled NSFrame CF$UID 51 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 4 {{17, 22}, {78, 17}} $class CF$UID 26 NSBackgroundColor CF$UID 54 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 53 NSControlView CF$UID 50 NSSupport CF$UID 15 NSTextColor CF$UID 57 Server $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 56 NSColorName CF$UID 55 NSColorSpace 6 controlColor $class CF$UID 22 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $class CF$UID 22 NSCatalogName CF$UID 19 NSColor CF$UID 25 NSColorName CF$UID 58 NSColorSpace 6 controlTextColor $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {442, 62}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {300, 84} {600, 84} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 42 NSDestination CF$UID 28 NSLabel CF$UID 68 NSSource CF$UID 10 nextKeyView $class CF$UID 42 NSDestination CF$UID 10 NSLabel CF$UID 68 NSSource CF$UID 28 $class CF$UID 42 NSDestination CF$UID 10 NSLabel CF$UID 71 NSSource CF$UID 44 initialFirstResponder $class CF$UID 73 NS.objects CF$UID 11 CF$UID 10 CF$UID 44 CF$UID 50 CF$UID 28 $classes NSArray NSObject $classname NSArray $class CF$UID 73 NS.objects CF$UID 44 CF$UID 11 CF$UID 2 CF$UID 11 CF$UID 11 $class CF$UID 73 NS.objects CF$UID 2 CF$UID 10 CF$UID 44 CF$UID 50 CF$UID 28 $class CF$UID 73 NS.objects CF$UID 77 CF$UID 78 CF$UID 79 CF$UID 80 CF$UID 81 File's Owner NSTextField Window NSTextField2 NSButton $class CF$UID 73 NS.objects $class CF$UID 73 NS.objects $class CF$UID 73 NS.objects CF$UID 10 CF$UID 38 CF$UID 50 CF$UID 44 CF$UID 43 CF$UID 67 CF$UID 40 CF$UID 28 CF$UID 9 CF$UID 2 CF$UID 11 CF$UID 70 CF$UID 69 $class CF$UID 73 NS.objects CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 CF$UID 91 CF$UID 92 CF$UID 93 CF$UID 94 CF$UID 95 CF$UID 96 CF$UID 97 CF$UID 98 7 11 9 6 13 14 12 8 10 1 5 16 15 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.gorm/000077500000000000000000000000001067163320700275625ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.gorm/data.classes000066400000000000000000000066561067163320700320670ustar00rootroot00000000000000{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "open:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:" ); Super = NSObject; }; PreferencesController = { Actions = ( ); Outlets = ( scrollView, window, preferencesView, labelBox ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.gorm/data.info000066400000000000000000000002701067163320700313470ustar00rootroot00000000000000GNUstep archive00002a96:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.gorm/objects.gorm000066400000000000000000000034121067163320700321010ustar00rootroot00000000000000GNUstep archive00002a96:00000017:0000002f:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%PreferencesController0&%GSCustomClassMap0&0&% GormCustomView101 GSCustomView1 GSNibItem0 &%NSView  C CJ&0 &%GormCustomView0 0 & % NSScrollView @ Cr C B& 0 &% Box101NSBox1 NSView1 NSResponder% @ @ C Cj  C Cj&01 NSMutableArray1 NSArray&0 % @ @ C CK  C CK&0 &01 NSCell0&%Box01NSFont%&&&&&&&& @ @%%0& % Preferences01NSWindow%  C C& % C] D0 %  C C  C C&0 & 01NSColor0&%NSNamedColorSpace0&%System0&%windowBackgroundColor0&%Window0& % Preferences C C F@ F@%01NSImage0 &%NSApplicationIcon0! &0"1NSNibConnector0#&%NSOwner0$ 0%1NSNibOutletConnector# 0&& % scrollView0'#0(&%window0) 0*0+#0,1NSMutableString&% preferencesView0-# 0.&%labelBox0/1 GSMutableSet1 NSMutableSet1NSSet&TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.nib/000077500000000000000000000000001067163320700273665ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.nib/classes.nib000066400000000000000000000005361067163320700315210ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { CLASS = PreferencesController; LANGUAGE = ObjC; OUTLETS = {labelBox = id; preferencesView = id; scrollView = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.nib/info.nib000066400000000000000000000007541067163320700310210ustar00rootroot00000000000000 IBDocumentLocation 36 57 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/Preferences.nib/keyedobjects.nib000066400000000000000000000627531067163320700325500ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 105 NSClassesKeys CF$UID 89 NSClassesValues CF$UID 90 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 82 NSNamesValues CF$UID 83 NSNextOid 19 NSObjectsKeys CF$UID 79 NSObjectsValues CF$UID 81 NSOidsKeys CF$UID 91 NSOidsValues CF$UID 92 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 PreferencesController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 24 NS.objects CF$UID 9 CF$UID 19 CF$UID 43 CF$UID 77 $class CF$UID 18 NSDestination CF$UID 10 NSLabel CF$UID 17 NSSource CF$UID 2 $class CF$UID 16 NSClassName CF$UID 13 NSExtension CF$UID 15 NSFrame CF$UID 12 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 18 $class CF$UID 26 NSFrame CF$UID 25 NSNextResponder CF$UID 20 NSSubviews CF$UID 23 NSSuperview CF$UID 20 {{10, 11}, {462, 260}} $class CF$UID 14 NS.string NSView $classes NSMutableString NSString NSObject $classname NSMutableString NSResponder $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView preferencesView $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 18 NSDestination CF$UID 20 NSLabel CF$UID 42 NSSource CF$UID 2 $class CF$UID 41 NSBorderType 3 NSBoxType 0 NSContentView CF$UID 11 NSFrame CF$UID 27 NSNextResponder CF$UID 21 NSOffsets CF$UID 28 NSSubviews CF$UID 22 NSSuperview CF$UID 21 NSTitleCell CF$UID 29 NSTitlePosition 2 NSTransparent NSvFlags 18 $class CF$UID 26 NSFrame CF$UID 71 NSNextResponder CF$UID 0 NSSubviews CF$UID 49 $class CF$UID 24 NS.objects CF$UID 11 $class CF$UID 24 NS.objects CF$UID 10 $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{2, 2}, {482, 281}} $classes NSView NSResponder NSObject $classname NSView {{7, 6}, {486, 298}} {0, 0} $class CF$UID 40 NSBackgroundColor CF$UID 34 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 30 NSSupport CF$UID 31 NSTextColor CF$UID 39 Preferences $class CF$UID 33 NSName CF$UID 32 NSSize 11 NSfFlags 28 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 37 NSColorName CF$UID 36 NSColorSpace 6 System textBackgroundColor $class CF$UID 38 NSColorSpace 3 NSWhite MQA= $classes NSColor NSObject $classname NSColor $class CF$UID 38 NSColorSpace 3 NSWhite MCAwLjgwMDAwMDAxAA== $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSBox NSView NSResponder NSObject $classname NSBox labelBox $class CF$UID 18 NSDestination CF$UID 44 NSLabel CF$UID 76 NSSource CF$UID 2 $class CF$UID 75 NSMaxSize CF$UID 74 NSMinSize CF$UID 73 NSScreenRect CF$UID 72 NSViewClass CF$UID 48 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 47 NSWindowRect CF$UID 45 NSWindowStyleMask 10 NSWindowTitle CF$UID 46 NSWindowView CF$UID 21 {{242, 324}, {500, 400}} TalkSoup Preferences $class CF$UID 14 NS.string NSWindow $class CF$UID 14 NS.string View $class CF$UID 24 NS.objects CF$UID 20 CF$UID 50 $class CF$UID 70 NSContentView CF$UID 52 NSFrame CF$UID 69 NSHScroller CF$UID 66 NSNextKeyView CF$UID 52 NSNextResponder CF$UID 21 NSSubviews CF$UID 51 NSSuperview CF$UID 21 NSVScroller CF$UID 62 NSsFlags 34 NSvFlags 266 $class CF$UID 24 NS.objects CF$UID 52 CF$UID 62 CF$UID 66 $class CF$UID 61 NSBGColor CF$UID 58 NSDocView CF$UID 54 NSFrame CF$UID 57 NSNextKeyView CF$UID 54 NSNextResponder CF$UID 50 NSSubviews CF$UID 53 NSSuperview CF$UID 50 NScvFlags 4 NSvFlags 2304 $class CF$UID 24 NS.objects CF$UID 54 $class CF$UID 16 NSClassName CF$UID 56 NSExtension CF$UID 15 NSFrameSize CF$UID 55 NSNextResponder CF$UID 52 NSSuperview CF$UID 52 {173, 64} $class CF$UID 14 NS.string NSView {{1, 1}, {478, 64}} $class CF$UID 38 NSCatalogName CF$UID 35 NSColor CF$UID 60 NSColorName CF$UID 59 NSColorSpace 6 controlColor $class CF$UID 38 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 65 NSAction CF$UID 64 NSFrame CF$UID 63 NSNextResponder CF$UID 50 NSSuperview CF$UID 50 NSTarget CF$UID 50 NSvFlags 256 {{-100, -100}, {15, 64}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 65 NSAction CF$UID 68 NSCurValue 0.05780346691608429 NSFrame CF$UID 67 NSNextResponder CF$UID 50 NSSuperview CF$UID 50 NSTarget CF$UID 50 NSsFlags 1 NSvFlags 256 {{1, 65}, {478, 15}} _doScroller: {{10, 312}, {480, 81}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView {{1, 9}, {500, 400}} {{0, 0}, {1280, 1002}} {500, 422} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 18 NSDestination CF$UID 50 NSLabel CF$UID 78 NSSource CF$UID 2 scrollView $class CF$UID 80 NS.objects CF$UID 20 CF$UID 21 CF$UID 10 CF$UID 54 CF$UID 50 CF$UID 11 CF$UID 44 $classes NSArray NSObject $classname NSArray $class CF$UID 80 NS.objects CF$UID 21 CF$UID 44 CF$UID 11 CF$UID 50 CF$UID 21 CF$UID 20 CF$UID 2 $class CF$UID 80 NS.objects CF$UID 2 CF$UID 10 CF$UID 54 CF$UID 20 CF$UID 11 CF$UID 44 $class CF$UID 80 NS.objects CF$UID 84 CF$UID 85 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 File's Owner View NSBox NSView Window $class CF$UID 80 NS.objects $class CF$UID 80 NS.objects $class CF$UID 80 NS.objects CF$UID 43 CF$UID 44 CF$UID 50 CF$UID 2 CF$UID 10 CF$UID 21 CF$UID 11 CF$UID 20 CF$UID 54 CF$UID 77 CF$UID 9 CF$UID 19 $class CF$UID 80 NS.objects CF$UID 93 CF$UID 94 CF$UID 95 CF$UID 96 CF$UID 97 CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 CF$UID 102 CF$UID 103 CF$UID 104 14 5 17 1 9 6 8 7 16 18 11 13 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.gorm/000077500000000000000000000000001067163320700277365ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.gorm/data.classes000066400000000000000000000012011067163320700322200ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; ServerEditorController = { Actions = ( "setConnect:", "setCommands:", "setPort:", "setServer:", "setUser:", "setPassword:", "setReal:", "setNick:", "setEntry:" ); Outlets = ( connectButton, commandsField, portField, serverField, userField, realField, passwordField, extraField, okButton, entryField, window, nickField, commandsText ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.gorm/data.info000066400000000000000000000002701067163320700315230ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.gorm/objects.gorm000066400000000000000000000246221067163320700322630ustar00rootroot00000000000000GNUstep archive00002af9:00000024:00000141:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%ServerEditorController0& %  TextField701 NSTextField1 NSControl1NSView1 NSResponder% CW  B A  B A&01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0 & % User Name0 1NSFont%&&&&&&&&0%0 1NSColor0 &%NSNamedColorSpace0 &%System0&%textBackgroundColor0 0& % textColor0& %  TextField80% C A C A  C A&0 &%0 0& &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0& % TextField0% A C B A  B A&0 &%0 0& % Entry Name &&&&&&&&0%0  0!&%System0"&%textBackgroundColor0# !0$& % textColor0%& %  TextField90&% C  C A  C A&0' &%0( 0)& &&&&&&&&0%0* 0+&%System0,&%textBackgroundColor0- +0.& % textColor0/& % ServerEditor001NSWindow%  C C&% D D0@01%  C C  C C&02 &03% B C C A  C A&04 &%05 06& &&&&&&&&0%07 08&%System09&%textBackgroundColor0: 80;& % textColor0<1NSButton% A A@ C A  C A&0= &%0>1 NSButtonCell0?&%Connect on startup0@1NSImage0A1NSMutableString&% common_SwitchOff &&&&&&&&%0B&0C&0D0E&% common_SwitchOn&&&0F% Cʀ @ B B  B B&0G &%0H0I&%OK0J0K& %  common_ret &&&&&&&&%0L&% 0M&0N0O& %  common_retH&&&0P% C+ A@ Ce A  Ce A&0Q &%0R 0S& &&&&&&&&0%0T 0U&%System0V&%textBackgroundColor0W U0X& % textColor0Y1NSBox% A CK C B  C B&0Z &0[% @ @ C B  C B&0\ &0]% B A B A  B A&0^ &%0_ 0`& &&&&&&&&0%0a 0b&%System0c&%textBackgroundColor0d b0e& % textColor0f1GSControlTemplate1GSClassSwapper0g&% NSSecureTextField% B  B A  B A&0h &%0i1NSSecureTextFieldCell0j& &&&&&&&&0%0k 0l&%System0m&%textBackgroundColor0n l0o& % textColor0p% A B A  B A&0q &%0r 0s&%Nick &&&&&&&&0%0t 0u&%System0v&%textBackgroundColor0w u0x& % textColor0y% CW A B A  B A&0z &%0{ 0|& % Real Name &&&&&&&&0%0} 0~&%System0&%textBackgroundColor0 ~0& % textColor&0%  B A  B A&0 &%0 0&%Password &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0 0&%General0% A@&&&&&&&&0%0 0&%System0&%windowBackgroundColor0 0&%System0& % textColor @ @%%0% A BD C C  C C&0 &0% @ @ C B  C B&0 &0% B B A  B A&0 &%0 0&%Server &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0% Bt B A  B A&0 &%0 0&%Commands &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0% C B B A  B A&0 &%0 0&%Port &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0% C B B A  B A&0 &%0 0& &&&&&&&&0%0 0&%System0&%textBackgroundColor0 0& % textColor0% B B C^ A  C^ A&0 &%0 0& &&&&&&&&0%0 0&%System0±&%textBackgroundColor0ñ 0ı& % textColor01 NSScrollView% B  C B  C B&0Ʊ &01 NSClipView% A @ C B A  C B&0ȱ &01 NSTextView1NSText% A  C B  C B&0ʱ &0˱0̱&%NSCalibratedWhiteColorSpace ? ?  K K0ͱ 0α&%System0ϱ& % textColor C K01 NSScroller% @ @ A B  A B&0ѱ &%0ұ0ӱ&0Ա%0ձ& % Helvetica A@A@&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0ֱ 0ױ& % Connection&&&&&&&&0%0ر 0ٱ&%System0ڱ& % textColor @ @%%0۱&%Window0ܱ& % Server Editor A A F@ F@%0ݱ0ޱ&%NSApplicationIcon0߱&%Button<0&%TextView0& % NSVisible0 &00& %  TextField100& %  TextField110&%GSCustomClassMap0&0& %  TextField4g0& % ScrollView0& %  TextField120& %  TextField130&%BoxY0& %  TextField130& %  TextField140& %  TextField150& %  TextField2P0&% Button1F0& %  TextField3]f0&% Box10& %  TextField5p0& %  TextField6y0 &4401NSNibConnector/0&%NSOwner00쐐0ߐ000됐00琐PPPPP%P㐐P1 NSNibOutletConnectorP& % nickFieldP P & % realFieldP P & % passwordFieldP %P & % userFieldP P& % entryFieldPP䐐P鐐PꐐP퐐PP P& % serverFieldP P& % portFieldP P& % connectButtonP P& % extraFieldP P&%okButtonP 1!NSNibControlConnectorP!&%setNick:P"!P#&%setReal:P$!%P%&%setUser:P&!P'& % setPassword:P(!P)& % setServer:P*!P+&%setPort:P,!߰P-& % setConnect:P.!P/& % setEntry:P0 /P1&%windowP2萐P3P4 P5& % commandsTextP6 P7& %  nextKeyViewP8 7P9 7P: %7P; %7P< 7P= P>& %  nextKeyViewP? ߰>P@ >PA1" GSMutableSet1# NSMutableSet1$NSSet&0TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.nib/000077500000000000000000000000001067163320700275425ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.nib/classes.nib000066400000000000000000000017521067163320700316760ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { setConnect = id; setEntry = id; setNick = id; setPassword = id; setPort = id; setReal = id; setServer = id; setUser = id; }; CLASS = ServerEditorController; LANGUAGE = ObjC; OUTLETS = { commandsText = id; connectButton = id; entryField = id; extraField = id; nickField = id; okButton = id; passwordField = id; portField = id; realField = id; serverField = id; userField = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.nib/info.nib000066400000000000000000000007541067163320700311750ustar00rootroot00000000000000 IBDocumentLocation 92 59 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerEditor.nib/keyedobjects.nib000066400000000000000000002551451067163320700327230ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 322 NSClassesKeys CF$UID 263 NSClassesValues CF$UID 264 NSConnections CF$UID 180 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 235 NSNamesValues CF$UID 236 NSNextOid 59 NSObjectsKeys CF$UID 232 NSObjectsValues CF$UID 234 NSOidsKeys CF$UID 265 NSOidsValues CF$UID 266 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 ServerEditorController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 179 NS.objects CF$UID 7 $class CF$UID 178 NSMaxSize CF$UID 177 NSMinSize CF$UID 176 NSScreenRect CF$UID 175 NSViewClass CF$UID 11 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 10 NSWindowRect CF$UID 8 NSWindowStyleMask 7 NSWindowTitle CF$UID 9 NSWindowView CF$UID 13 {{443, 86}, {500, 358}} Server Editor NSWindow $class CF$UID 12 NS.string View $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 78 NSFrame CF$UID 174 NSNextResponder CF$UID 0 NSSubviews CF$UID 14 $class CF$UID 76 NS.objects CF$UID 15 CF$UID 32 CF$UID 41 CF$UID 85 CF$UID 157 CF$UID 166 CF$UID 169 $class CF$UID 31 NSCell CF$UID 17 NSEnabled NSFrame CF$UID 16 NSNextResponder CF$UID 13 NSSuperview CF$UID 13 {{17, 318}, {104, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 18 NSControlView CF$UID 15 NSSupport CF$UID 19 NSTextColor CF$UID 27 Entry Name $class CF$UID 21 NSName CF$UID 20 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 25 NSColorName CF$UID 24 NSColorSpace 6 System controlColor $class CF$UID 26 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSColor NSObject $classname NSColor $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 29 NSColorName CF$UID 28 NSColorSpace 6 controlTextColor $class CF$UID 26 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 31 NSCell CF$UID 34 NSEnabled NSFrame CF$UID 33 NSNextResponder CF$UID 13 NSSuperview CF$UID 13 {{126, 316}, {354, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 32 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 38 NSColorName CF$UID 37 NSColorSpace 6 textBackgroundColor $class CF$UID 26 NSColorSpace 3 NSWhite MQA= $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 29 NSColorName CF$UID 40 NSColorSpace 6 textColor $class CF$UID 84 NSBorderType 3 NSBoxType 0 NSContentView CF$UID 43 NSFrame CF$UID 79 NSNextResponder CF$UID 13 NSOffsets CF$UID 80 NSSubviews CF$UID 42 NSSuperview CF$UID 13 NSTitleCell CF$UID 81 NSTitlePosition 2 NSTransparent $class CF$UID 76 NS.objects CF$UID 43 $class CF$UID 78 NSFrame CF$UID 77 NSNextResponder CF$UID 41 NSSubviews CF$UID 44 NSSuperview CF$UID 41 $class CF$UID 76 NS.objects CF$UID 45 CF$UID 49 CF$UID 53 CF$UID 56 CF$UID 62 CF$UID 66 CF$UID 70 CF$UID 73 $class CF$UID 31 NSCell CF$UID 47 NSEnabled NSFrame CF$UID 46 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{9, 40}, {92, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 48 NSControlView CF$UID 45 NSSupport CF$UID 19 NSTextColor CF$UID 27 Nick $class CF$UID 31 NSCell CF$UID 51 NSEnabled NSFrame CF$UID 50 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{9, 10}, {92, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 52 NSControlView CF$UID 49 NSSupport CF$UID 19 NSTextColor CF$UID 27 Password $class CF$UID 31 NSCell CF$UID 55 NSEnabled NSFrame CF$UID 54 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{106, 38}, {118, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 53 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $class CF$UID 61 NSCell CF$UID 60 NSClassName CF$UID 57 NSEnabled NSFrame CF$UID 59 NSNextResponder CF$UID 43 NSOriginalClassName CF$UID 58 NSSuperview CF$UID 43 NSSecureTextField NSTextField {{106, 8}, {118, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 56 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $classes NSClassSwapper NSObject $classname NSClassSwapper $class CF$UID 31 NSCell CF$UID 64 NSEnabled NSFrame CF$UID 63 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{229, 10}, {89, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 65 NSControlView CF$UID 62 NSSupport CF$UID 19 NSTextColor CF$UID 27 Username $class CF$UID 31 NSCell CF$UID 68 NSEnabled NSFrame CF$UID 67 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{229, 40}, {89, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 69 NSControlView CF$UID 66 NSSupport CF$UID 19 NSTextColor CF$UID 27 Real Name $class CF$UID 31 NSCell CF$UID 72 NSEnabled NSFrame CF$UID 71 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{323, 38}, {129, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 70 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $class CF$UID 31 NSCell CF$UID 75 NSEnabled NSFrame CF$UID 74 NSNextResponder CF$UID 43 NSSuperview CF$UID 43 {{323, 8}, {129, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 73 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{2, 2}, {462, 70}} $classes NSView NSResponder NSObject $classname NSView {{17, 216}, {466, 87}} {0, 0} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 82 NSSupport CF$UID 83 NSTextColor CF$UID 27 General $class CF$UID 21 NSName CF$UID 20 NSSize 11 NSfFlags 28 $classes NSBox NSView NSResponder NSObject $classname NSBox $class CF$UID 84 NSBorderType 3 NSBoxType 0 NSContentView CF$UID 87 NSFrame CF$UID 153 NSNextResponder CF$UID 13 NSOffsets CF$UID 154 NSSubviews CF$UID 86 NSSuperview CF$UID 13 NSTitleCell CF$UID 155 NSTitlePosition 2 NSTransparent $class CF$UID 76 NS.objects CF$UID 87 $class CF$UID 78 NSFrame CF$UID 152 NSNextResponder CF$UID 85 NSSubviews CF$UID 88 NSSuperview CF$UID 85 $class CF$UID 76 NS.objects CF$UID 89 CF$UID 93 CF$UID 97 CF$UID 100 CF$UID 104 CF$UID 107 $class CF$UID 31 NSCell CF$UID 91 NSEnabled NSFrame CF$UID 90 NSNextResponder CF$UID 87 NSSuperview CF$UID 87 {{9, 105}, {88, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 92 NSControlView CF$UID 89 NSSupport CF$UID 19 NSTextColor CF$UID 27 Server $class CF$UID 31 NSCell CF$UID 95 NSEnabled NSFrame CF$UID 94 NSNextResponder CF$UID 87 NSSuperview CF$UID 87 {{9, 78}, {88, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 96 NSControlView CF$UID 93 NSSupport CF$UID 19 NSTextColor CF$UID 27 Commands $class CF$UID 31 NSCell CF$UID 99 NSEnabled NSFrame CF$UID 98 NSNextResponder CF$UID 87 NSSuperview CF$UID 87 {{102, 103}, {193, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 97 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $class CF$UID 31 NSCell CF$UID 102 NSEnabled NSFrame CF$UID 101 NSNextResponder CF$UID 87 NSSuperview CF$UID 87 {{300, 105}, {68, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 103 NSControlView CF$UID 100 NSSupport CF$UID 19 NSTextColor CF$UID 27 Port $class CF$UID 31 NSCell CF$UID 106 NSEnabled NSFrame CF$UID 105 NSNextResponder CF$UID 87 NSSuperview CF$UID 87 {{373, 103}, {79, 22}} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags -1804468671 NSCellFlags2 4194304 NSContents CF$UID 35 NSControlView CF$UID 104 NSDrawsBackground NSSupport CF$UID 19 NSTextColor CF$UID 39 $class CF$UID 151 NSContentView CF$UID 109 NSFrame CF$UID 150 NSHScroller CF$UID 147 NSNextKeyView CF$UID 109 NSNextResponder CF$UID 87 NSSubviews CF$UID 108 NSSuperview CF$UID 87 NSVScroller CF$UID 143 NSsFlags 18 NSvFlags 256 $class CF$UID 76 NS.objects CF$UID 109 CF$UID 143 CF$UID 147 $class CF$UID 142 NSBGColor CF$UID 38 NSCursor CF$UID 139 NSDocView CF$UID 111 NSFrame CF$UID 138 NSNextKeyView CF$UID 111 NSNextResponder CF$UID 107 NSSubviews CF$UID 110 NSSuperview CF$UID 107 NScvFlags 4 NSvFlags 2304 $class CF$UID 76 NS.objects CF$UID 111 $class CF$UID 137 NSDelegate CF$UID 0 NSFrameSize CF$UID 112 NSMaxSize CF$UID 136 NSNextResponder CF$UID 109 NSSharedData CF$UID 121 NSSuperview CF$UID 109 NSTVFlags 6 NSTextContainer CF$UID 113 NSvFlags 2066 {333, 83} $class CF$UID 120 NSLayoutManager CF$UID 114 NSTCFlags 1 NSTextView CF$UID 111 NSWidth 333 $class CF$UID 119 NSDelegate CF$UID 0 NSLMFlags 6 NSTextContainers CF$UID 118 NSTextStorage CF$UID 115 $class CF$UID 117 NSDelegate CF$UID 0 NSString CF$UID 116 $class CF$UID 12 NS.string $classes NSTextStorage NSMutableAttributedString NSAttributedString NSObject $classname NSTextStorage $class CF$UID 76 NS.objects CF$UID 113 $classes NSLayoutManager NSObject $classname NSLayoutManager $classes NSTextContainer NSObject $classname NSTextContainer $class CF$UID 135 NSBackgroundColor CF$UID 38 NSDefaultParagraphStyle CF$UID 0 NSFlags 2915 NSInsertionColor CF$UID 29 NSLinkAttributes CF$UID 130 NSMarkedAttributes CF$UID 0 NSSelectedAttributes CF$UID 122 $class CF$UID 129 NS.keys CF$UID 123 CF$UID 124 NS.objects CF$UID 125 CF$UID 127 NSBackgroundColor NSColor $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 25 NSColorName CF$UID 126 NSColorSpace 6 selectedTextBackgroundColor $class CF$UID 26 NSCatalogName CF$UID 23 NSColor CF$UID 29 NSColorName CF$UID 128 NSColorSpace 6 selectedTextColor $classes NSDictionary NSObject $classname NSDictionary $class CF$UID 129 NS.keys CF$UID 131 CF$UID 132 NS.objects CF$UID 133 CF$UID 134 NSUnderline NSColor 1 $class CF$UID 26 NSColorSpace 1 NSRGB MCAwIDEA $classes NSTextViewSharedData NSObject $classname NSTextViewSharedData {348, 1e+07} $classes NSTextView %NSTextView NSText NSView NSResponder NSObject $classname NSTextView {{1, 1}, {333, 83}} $class CF$UID 141 NSCursorType 1 NSHotSpot CF$UID 140 {4, -5} $classes NSCursor NSObject $classname NSCursor $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 146 NSAction CF$UID 145 NSCurValue 1 NSFrame CF$UID 144 NSNextResponder CF$UID 107 NSSuperview CF$UID 107 NSTarget CF$UID 107 NSvFlags 256 {{334, 1}, {15, 83}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 146 NSAction CF$UID 149 NSCurValue 1 NSFrame CF$UID 148 NSNextResponder CF$UID 107 NSPercent 0.94565218687057495 NSSuperview CF$UID 107 NSTarget CF$UID 107 NSsFlags 1 NSvFlags 256 {{-100, -100}, {87, 18}} _doScroller: {{102, 10}, {350, 85}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView {{2, 2}, {462, 135}} {{17, 51}, {466, 152}} {0, 0} $class CF$UID 30 NSBackgroundColor CF$UID 36 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 156 NSSupport CF$UID 83 NSTextColor CF$UID 27 Connection $class CF$UID 165 NSCell CF$UID 159 NSEnabled NSFrame CF$UID 158 NSNextResponder CF$UID 13 NSSuperview CF$UID 13 {{18, 21}, {144, 18}} $class CF$UID 164 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 161 NSButtonFlags 1211912703 NSButtonFlags2 2 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 160 NSControlView CF$UID 157 NSKeyEquivalent CF$UID 35 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 19 Connect on Startup $class CF$UID 163 NSImageName CF$UID 162 NSSwitch $classes NSButtonImageSource NSObject $classname NSButtonImageSource $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 31 NSCell CF$UID 168 NSEnabled NSFrame CF$UID 167 NSNextResponder CF$UID 13 NSSuperview CF$UID 13 {{165, 22}, {240, 17}} $class CF$UID 30 NSBackgroundColor CF$UID 22 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 35 NSControlView CF$UID 166 NSSupport CF$UID 19 NSTextColor CF$UID 27 $class CF$UID 165 NSCell CF$UID 171 NSEnabled NSFrame CF$UID 170 NSNextResponder CF$UID 13 NSSuperview CF$UID 13 {{404, 12}, {82, 32}} $class CF$UID 164 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 19 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 172 NSControlView CF$UID 169 NSKeyEquivalent CF$UID 173 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 19 OK $class CF$UID 12 NS.string {{1, 9}, {500, 358}} {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 76 NS.objects CF$UID 181 CF$UID 184 CF$UID 187 CF$UID 189 CF$UID 191 CF$UID 193 CF$UID 195 CF$UID 197 CF$UID 199 CF$UID 201 CF$UID 203 CF$UID 205 CF$UID 207 CF$UID 209 CF$UID 211 CF$UID 213 CF$UID 215 CF$UID 217 CF$UID 219 CF$UID 221 CF$UID 223 CF$UID 225 CF$UID 226 CF$UID 227 CF$UID 228 CF$UID 229 CF$UID 230 CF$UID 231 $class CF$UID 183 NSDestination CF$UID 7 NSLabel CF$UID 182 NSSource CF$UID 2 window $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 185 NSSource CF$UID 97 setServer $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 188 NSSource CF$UID 104 setPort $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 190 NSSource CF$UID 157 setConnect $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 192 NSSource CF$UID 56 setPassword $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 194 NSSource CF$UID 73 setUser $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 196 NSSource CF$UID 70 setReal $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 198 NSSource CF$UID 53 setNick $class CF$UID 186 NSDestination CF$UID 2 NSLabel CF$UID 200 NSSource CF$UID 32 setEntry $class CF$UID 183 NSDestination CF$UID 111 NSLabel CF$UID 202 NSSource CF$UID 2 commandsText $class CF$UID 183 NSDestination CF$UID 157 NSLabel CF$UID 204 NSSource CF$UID 2 connectButton $class CF$UID 183 NSDestination CF$UID 169 NSLabel CF$UID 206 NSSource CF$UID 2 okButton $class CF$UID 183 NSDestination CF$UID 32 NSLabel CF$UID 208 NSSource CF$UID 2 entryField $class CF$UID 183 NSDestination CF$UID 166 NSLabel CF$UID 210 NSSource CF$UID 2 extraField $class CF$UID 183 NSDestination CF$UID 53 NSLabel CF$UID 212 NSSource CF$UID 2 nickField $class CF$UID 183 NSDestination CF$UID 56 NSLabel CF$UID 214 NSSource CF$UID 2 passwordField $class CF$UID 183 NSDestination CF$UID 104 NSLabel CF$UID 216 NSSource CF$UID 2 portField $class CF$UID 183 NSDestination CF$UID 70 NSLabel CF$UID 218 NSSource CF$UID 2 realField $class CF$UID 183 NSDestination CF$UID 97 NSLabel CF$UID 220 NSSource CF$UID 2 serverField $class CF$UID 183 NSDestination CF$UID 73 NSLabel CF$UID 222 NSSource CF$UID 2 userField $class CF$UID 183 NSDestination CF$UID 53 NSLabel CF$UID 224 NSSource CF$UID 32 nextKeyView $class CF$UID 183 NSDestination CF$UID 70 NSLabel CF$UID 224 NSSource CF$UID 53 $class CF$UID 183 NSDestination CF$UID 56 NSLabel CF$UID 224 NSSource CF$UID 70 $class CF$UID 183 NSDestination CF$UID 73 NSLabel CF$UID 224 NSSource CF$UID 56 $class CF$UID 183 NSDestination CF$UID 97 NSLabel CF$UID 224 NSSource CF$UID 73 $class CF$UID 183 NSDestination CF$UID 104 NSLabel CF$UID 224 NSSource CF$UID 97 $class CF$UID 183 NSDestination CF$UID 157 NSLabel CF$UID 224 NSSource CF$UID 104 $class CF$UID 183 NSDestination CF$UID 169 NSLabel CF$UID 224 NSSource CF$UID 157 $class CF$UID 233 NS.objects CF$UID 15 CF$UID 157 CF$UID 70 CF$UID 13 CF$UID 166 CF$UID 111 CF$UID 45 CF$UID 32 CF$UID 100 CF$UID 7 CF$UID 107 CF$UID 66 CF$UID 49 CF$UID 43 CF$UID 85 CF$UID 89 CF$UID 93 CF$UID 87 CF$UID 53 CF$UID 73 CF$UID 169 CF$UID 62 CF$UID 56 CF$UID 104 CF$UID 41 CF$UID 97 $classes NSArray NSObject $classname NSArray $class CF$UID 233 NS.objects CF$UID 13 CF$UID 13 CF$UID 43 CF$UID 7 CF$UID 13 CF$UID 107 CF$UID 43 CF$UID 13 CF$UID 87 CF$UID 2 CF$UID 87 CF$UID 43 CF$UID 43 CF$UID 41 CF$UID 13 CF$UID 87 CF$UID 87 CF$UID 85 CF$UID 43 CF$UID 43 CF$UID 13 CF$UID 43 CF$UID 43 CF$UID 87 CF$UID 13 CF$UID 87 $class CF$UID 233 NS.objects CF$UID 15 CF$UID 157 CF$UID 70 CF$UID 166 CF$UID 111 CF$UID 45 CF$UID 32 CF$UID 2 CF$UID 100 CF$UID 7 CF$UID 107 CF$UID 66 CF$UID 49 CF$UID 43 CF$UID 85 CF$UID 89 CF$UID 93 CF$UID 87 CF$UID 53 CF$UID 73 CF$UID 169 CF$UID 62 CF$UID 56 CF$UID 104 CF$UID 41 CF$UID 97 $class CF$UID 233 NS.objects CF$UID 237 CF$UID 238 CF$UID 239 CF$UID 240 CF$UID 241 CF$UID 242 CF$UID 243 CF$UID 244 CF$UID 245 CF$UID 246 CF$UID 247 CF$UID 248 CF$UID 249 CF$UID 250 CF$UID 251 CF$UID 252 CF$UID 253 CF$UID 254 CF$UID 255 CF$UID 256 CF$UID 257 CF$UID 258 CF$UID 259 CF$UID 260 CF$UID 261 CF$UID 262 NSTextField2 NSButton4 NSTextField3 NSTextField21 NSTextView NSTextField2 NSTextField File's Owner NSTextField22 Window NSScrollView2 NSTextField22 NSTextField21 NSView NSBox1 NSTextField2 NSTextField21 NSView NSTextField NSTextField31 NSButton NSTextField211 NSTextField1 NSTextField1 NSBox NSTextField $class CF$UID 233 NS.objects CF$UID 56 $class CF$UID 233 NS.objects CF$UID 57 $class CF$UID 233 NS.objects CF$UID 89 CF$UID 166 CF$UID 189 CF$UID 195 CF$UID 66 CF$UID 49 CF$UID 181 CF$UID 7 CF$UID 187 CF$UID 191 CF$UID 193 CF$UID 157 CF$UID 228 CF$UID 43 CF$UID 15 CF$UID 32 CF$UID 221 CF$UID 215 CF$UID 201 CF$UID 219 CF$UID 229 CF$UID 169 CF$UID 53 CF$UID 70 CF$UID 227 CF$UID 41 CF$UID 209 CF$UID 2 CF$UID 225 CF$UID 231 CF$UID 85 CF$UID 184 CF$UID 197 CF$UID 104 CF$UID 223 CF$UID 205 CF$UID 97 CF$UID 226 CF$UID 45 CF$UID 107 CF$UID 87 CF$UID 56 CF$UID 203 CF$UID 213 CF$UID 199 CF$UID 111 CF$UID 211 CF$UID 13 CF$UID 62 CF$UID 230 CF$UID 93 CF$UID 207 CF$UID 217 CF$UID 73 CF$UID 100 $class CF$UID 233 NS.objects CF$UID 267 CF$UID 268 CF$UID 269 CF$UID 270 CF$UID 271 CF$UID 272 CF$UID 273 CF$UID 274 CF$UID 275 CF$UID 276 CF$UID 277 CF$UID 278 CF$UID 279 CF$UID 280 CF$UID 281 CF$UID 282 CF$UID 283 CF$UID 284 CF$UID 285 CF$UID 286 CF$UID 287 CF$UID 288 CF$UID 289 CF$UID 290 CF$UID 291 CF$UID 292 CF$UID 293 CF$UID 294 CF$UID 295 CF$UID 296 CF$UID 297 CF$UID 298 CF$UID 299 CF$UID 300 CF$UID 301 CF$UID 302 CF$UID 303 CF$UID 304 CF$UID 305 CF$UID 306 CF$UID 307 CF$UID 308 CF$UID 309 CF$UID 310 CF$UID 311 CF$UID 312 CF$UID 313 CF$UID 314 CF$UID 315 CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 CF$UID 320 CF$UID 321 21 29 34 37 16 12 31 5 33 35 36 28 55 9 7 8 50 47 40 49 56 30 13 17 54 10 44 1 52 58 20 32 38 25 51 42 23 53 11 26 19 14 41 46 39 27 45 6 15 57 22 43 48 18 24 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.gorm/000077500000000000000000000000001067163320700274235ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.gorm/data.classes000066400000000000000000000010371067163320700317140ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "forceHit:" ); Super = NSObject; }; ServerListController = { Actions = ( "editHit:", "connectHit:", "addGroupHit:", "removeHit:", "addEntryHit:", "forceHit:" ); Outlets = ( connectButton, addGroupButton, removeButton, editButton, scrollView, window, addEntryButton, browser, forceButton ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.gorm/data.info000066400000000000000000000002701067163320700312100ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0& % Typed StreamTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.gorm/objects.gorm000066400000000000000000000275401067163320700317520ustar00rootroot00000000000000GNUstep archive00002af9:00000023:00000152:00000004:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%ServerListController0&% Button501NSButton1 NSControl1NSView1 NSResponder% Cz B Cj A  Cj A&01 NSMutableArray1 NSArray&%01 NSButtonCell1 NSActionCell1NSCell0 &%Force new window0 1NSImage0 1NSMutableString&% common_SwitchOff0 1NSFont%&&&&&&&&%0 &0&00&% common_SwitchOn&&&0& % TextField01 NSTextField% B B A  B A&0 &%01NSTextFieldCell0&%Server0%0& % Helvetica A`A`&&&&&&&&0%01NSColor0&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0& % GormNSBrowser01 NSBrowser% A B C Cm  C Cm&0 &0!1 NSScroller% @ ? C A  C A&0" &%0#0$&0%%0&& % Helvetica A@A@&&&&&&&&&2 scrollViaScroller:v12@0:4@80'1 NSScrollView% A C C?  C C?&0( &0)1 NSClipView% A @ C C;  C C;&0* &0+1NSMatrix%  C B  C B&0, &%0- 0.&0/%&&&&&&&&%% C B 0001&%System02&%controlBackgroundColor003& % NSBrowserCell041 NSBrowserCell$%&&&&&&&&%%05 &2doClick:2doDoubleClick:0607&%System08&%controlBackgroundColor09% @ @ A C;  A C;&0: &%0;$%&&&&&&&&&'2 _doScroll:v12@0:4@8)% A A A A 90<% C A C C?  C C?&0= &0>% A @ C C;  C C;&0? &0@0A&%System0B& % controlColor0C% @ @ A C;  A C;&0D &%0E0F&%&&&&&&&&&<>% A A A A C0G% C A C C?  C C?&0H &0I% A @ C C;  C C;&0J &@0K% @ @ A C;  A C;&0L &%0MF%&&&&&&&&&GI% A A A A K%0N$ &&&&&&&&40O&%NSMatrix0P&%/% B! @ ? C A C C?0Q &0R1NSBrowserColumn'+%P0S<%0TG%%%0U&%Button0V% A B B A  B A&0W &%0X 0Y& % Add Group &&&&&&&&%0Z&0[&&&&0\& % NSVisible0] &0^& % ServerList0_1NSWindow%  C C&% C D0`%  C C  C C&0a &V0b% B @ B B\  B B\&0c &%0d 0e&%Remove &&&&&&&&%0f&0g&&&&0h% A @ B A  B A&0i &%0j 0k& % Add Server &&&&&&&&%0l&0m&&&&0n% C1 @ B B\  B B\&0o &%0p 0q&%Edit &&&&&&&&%0r&0s&&&&0t% Cǀ @ B A  B A&0u &%0v 0w&%Connect &&&&&&&&%0x&0y&&&&0z0{&%System0|&%windowBackgroundColor0}&%Window0~& % Server List~ A A F@ F@%00&%NSApplicationIcon0&%GSCustomClassMap0&0&%Box01NSBox% A B C B  C B&0 &0% @ @ C Bt  C Bt&0 &0% B B A  B A&0 &%00&%Nick&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% C B B A  B A&0 &%00&%&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% C @ B A  B A&0 &%00&%&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% B @ B A  B A&0 &%00&%&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% B B B A  B A&0 &%00&%&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% @ B A  B A&0 &%00&%Password&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0% CY B B A  B A&0 &%00& % Real Name&&&&&&&&0%0±0ñ&%System0ı&%textBackgroundColor0ű0Ʊ& % textColor0DZ% CY @ B A  B A&0ȱ &%0ɱ0ʱ& % User Name&&&&&&&&0%0˱0̱&%System0ͱ&%textBackgroundColor0α0ϱ& % textColor0б0ѱ&%General%&&&&&&&&0%0ұ0ӱ&%System0Ա&%windowBackgroundColor0ձ0ֱ&%System0ױ& % textColor @ @%%0ر& %  TextField10ٱ% B B CL A  CL A&0ڱ &%0۱0ܱ&%&&&&&&&&0%0ݱ0ޱ&%System0߱&%textBackgroundColor00& % textColor0& %  TextField20% C B B A  B A&0 &%00&%Port&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0&% Button1b0& %  TextField30% C B B A  B A&0 &%00&%&&&&&&&&0%00&%System0&%textBackgroundColor00& % textColor0& %  TextField40% @ B A  B A&0 &%00&%Commands&&&&&&&&0%00&%System0&%textBackgroundColor0P& % textColorP&% Button2hP& %  TextField5P% B @ C A  C A&P &%PP&%&&&&&&&&0%PP&%SystemP &%textBackgroundColorP P & % textColorP &% Box1P % A A  C B  C B&P &P% @ @ C Bt  C Bt&P &ٰPP&%Box%&&&&&&&&0%PP&%SystemP& % textColor @ @%%P&% Button3nP&% Button4tP &%%P1NSNibConnector^P&%NSOwnerP1NSNibOutletConnector^P&%windowPUP쐐PP P!P"1 NSNibControlConnectorP#&%editHit:P$ P%& % removeHit:P& P'& %  addEntryHit:P( UP)& %  addGroupHit:P* P+& % connectHit:P,UP-&%addGroupButtonP.P/&%addEntryButtonP0P1& % removeButtonP2P3& % editButtonP4P5& % connectButtonP6P7 P8P9ؐP:␐P;퐐P<P=P>P?P@&%browserPAPBPC& % forceButtonPD PE& % forceHit:PFUPG& %  nextKeyViewPHUGPIGPJGPKGPLGPMPN& %  nextKeyViewPO1! GSMutableSet1" NSMutableSet1#NSSet&_TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.nib/000077500000000000000000000000001067163320700272275ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.nib/classes.nib000066400000000000000000000014561067163320700313640ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { addEntryHit = id; addGroupHit = id; connectHit = id; editHit = id; forceHit = id; removeHit = id; }; CLASS = ServerListController; LANGUAGE = ObjC; OUTLETS = { addEntryButton = id; addGroupButton = id; browser = id; connectButton = id; editButton = id; forceButton = id; removeButton = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.nib/info.nib000066400000000000000000000007561067163320700306640ustar00rootroot00000000000000 IBDocumentLocation 237 242 356 240 0 0 1280 1002 IBFramework Version 364.0 IBOpenObjects 6 IBSystem Version 7W98 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/ServerList.nib/keyedobjects.nib000066400000000000000000001152611067163320700324020ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 153 NSClassesKeys CF$UID 122 NSClassesValues CF$UID 123 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 111 NSNamesValues CF$UID 112 NSNextOid 31 NSObjectsKeys CF$UID 108 NSObjectsValues CF$UID 110 NSOidsKeys CF$UID 124 NSOidsValues CF$UID 125 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 ServerListController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 70 NS.objects CF$UID 9 CF$UID 25 CF$UID 78 CF$UID 80 CF$UID 82 CF$UID 84 CF$UID 86 CF$UID 88 CF$UID 90 CF$UID 93 CF$UID 95 CF$UID 97 CF$UID 99 CF$UID 101 CF$UID 103 CF$UID 105 CF$UID 106 $class CF$UID 24 NSDestination CF$UID 10 NSLabel CF$UID 23 NSSource CF$UID 2 $class CF$UID 22 NSBrFlags 402669568 NSCellPrototype CF$UID 13 NSColumnResizingType 1 NSEnabled NSFirstColumnTitle CF$UID 21 NSFrame CF$UID 12 NSMaxNumberOfVisibleColumns 2 NSMinColumnWidth 100 NSNextResponder CF$UID 11 NSNumberOfVisibleColumns 2 NSPathSeparator CF$UID 20 NSPreferedColumnWidth 100 NSSuperview CF$UID 11 NSvFlags 18 $class CF$UID 72 NSFrame CF$UID 71 NSNextResponder CF$UID 0 NSSubviews CF$UID 30 {{20, 78}, {440, 282}} $class CF$UID 19 NSCellFlags 67239488 NSCellFlags2 0 NSContents CF$UID 14 NSSupport CF$UID 16 $class CF$UID 15 NS.string BrowserItem $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 18 NSName CF$UID 17 NSSize 13 NSfFlags 20 LucidaGrande $classes NSFont NSObject $classname NSFont $classes NSBrowserCell NSCell NSObject $classname NSBrowserCell $class CF$UID 15 NS.string / Server List $classes NSBrowser NSControl NSView NSResponder NSObject $classname NSBrowser browser $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 24 NSDestination CF$UID 26 NSLabel CF$UID 77 NSSource CF$UID 2 $class CF$UID 76 NSMaxSize CF$UID 75 NSMinSize CF$UID 74 NSScreenRect CF$UID 73 NSViewClass CF$UID 29 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 28 NSWindowRect CF$UID 27 NSWindowStyleMask 10 NSWindowTitle CF$UID 21 NSWindowView CF$UID 11 {{289, 380}, {480, 360}} NSWindow $class CF$UID 15 NS.string View $class CF$UID 70 NS.objects CF$UID 10 CF$UID 31 CF$UID 39 CF$UID 44 CF$UID 49 CF$UID 60 CF$UID 65 $class CF$UID 38 NSCell CF$UID 33 NSEnabled NSFrame CF$UID 32 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 33 {{374, 12}, {92, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 16 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 34 NSControlView CF$UID 31 NSKeyEquivalent CF$UID 36 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Connect $class CF$UID 15 NS.string $classes NSButtonCell %NSButtonCell NSActionCell NSCell NSObject $classname NSButtonCell $classes NSButton NSControl NSView NSResponder NSObject $classname NSButton $class CF$UID 38 NSCell CF$UID 41 NSEnabled NSFrame CF$UID 40 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 32 {{14, 12}, {109, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 16 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 42 NSControlView CF$UID 39 NSKeyEquivalent CF$UID 43 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Add Group $class CF$UID 15 NS.string $class CF$UID 38 NSCell CF$UID 46 NSEnabled NSFrame CF$UID 45 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 36 {{14, 44}, {109, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 16 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 47 NSControlView CF$UID 44 NSKeyEquivalent CF$UID 48 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Add Server $class CF$UID 15 NS.string $class CF$UID 38 NSCell CF$UID 51 NSEnabled NSFrame CF$UID 50 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 33 {{298, 46}, {164, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 57 NSButtonFlags 1211912703 NSButtonFlags2 2 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 52 NSControlView CF$UID 49 NSKeyEquivalent CF$UID 35 NSNormalImage CF$UID 53 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Force New Window $class CF$UID 56 NSClassName CF$UID 54 NSResourceName CF$UID 55 NSImage NSSwitch $classes NSCustomResource %NSCustomResource NSObject $classname NSCustomResource $class CF$UID 59 NSImageName CF$UID 58 NSSwitch $classes NSButtonImageSource NSObject $classname NSButtonImageSource $class CF$UID 38 NSCell CF$UID 62 NSEnabled NSFrame CF$UID 61 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 36 {{129, 44}, {90, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 16 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 63 NSControlView CF$UID 60 NSKeyEquivalent CF$UID 64 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Edit $class CF$UID 15 NS.string $class CF$UID 38 NSCell CF$UID 67 NSEnabled NSFrame CF$UID 66 NSNextResponder CF$UID 11 NSSuperview CF$UID 11 NSvFlags 36 {{129, 12}, {90, 32}} $class CF$UID 37 NSAlternateContents CF$UID 35 NSAlternateImage CF$UID 16 NSButtonFlags -2038284033 NSButtonFlags2 1 NSCellFlags 67239424 NSCellFlags2 134217728 NSContents CF$UID 68 NSControlView CF$UID 65 NSKeyEquivalent CF$UID 69 NSPeriodicDelay 200 NSPeriodicInterval 25 NSSupport CF$UID 16 Remove $class CF$UID 15 NS.string $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{1, 9}, {480, 360}} $classes NSView NSResponder NSObject $classname NSView {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $class CF$UID 24 NSDestination CF$UID 65 NSLabel CF$UID 79 NSSource CF$UID 2 removeButton $class CF$UID 24 NSDestination CF$UID 49 NSLabel CF$UID 81 NSSource CF$UID 2 forceButton $class CF$UID 24 NSDestination CF$UID 60 NSLabel CF$UID 83 NSSource CF$UID 2 editButton $class CF$UID 24 NSDestination CF$UID 31 NSLabel CF$UID 85 NSSource CF$UID 2 connectButton $class CF$UID 24 NSDestination CF$UID 39 NSLabel CF$UID 87 NSSource CF$UID 2 addGroupButton $class CF$UID 24 NSDestination CF$UID 44 NSLabel CF$UID 89 NSSource CF$UID 2 addEntryButton $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 91 NSSource CF$UID 44 addEntryHit: $classes NSNibControlConnector NSNibConnector NSObject $classname NSNibControlConnector $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 94 NSSource CF$UID 39 addGroupHit: $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 96 NSSource CF$UID 60 editHit: $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 98 NSSource CF$UID 65 removeHit: $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 100 NSSource CF$UID 49 forceHit: $class CF$UID 92 NSDestination CF$UID 2 NSLabel CF$UID 102 NSSource CF$UID 31 connectHit: $class CF$UID 24 NSDestination CF$UID 2 NSLabel CF$UID 104 NSSource CF$UID 10 delegate $class CF$UID 24 NSDestination CF$UID 2 NSLabel CF$UID 104 NSSource CF$UID 26 $class CF$UID 24 NSDestination CF$UID 10 NSLabel CF$UID 107 NSSource CF$UID 26 initialFirstResponder $class CF$UID 109 NS.objects CF$UID 44 CF$UID 11 CF$UID 31 CF$UID 60 CF$UID 10 CF$UID 49 CF$UID 65 CF$UID 39 CF$UID 26 $classes NSArray NSObject $classname NSArray $class CF$UID 109 NS.objects CF$UID 11 CF$UID 26 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 11 CF$UID 2 $class CF$UID 109 NS.objects CF$UID 44 CF$UID 60 CF$UID 31 CF$UID 10 CF$UID 49 CF$UID 2 CF$UID 65 CF$UID 39 CF$UID 26 $class CF$UID 109 NS.objects CF$UID 113 CF$UID 114 CF$UID 115 CF$UID 116 CF$UID 117 CF$UID 118 CF$UID 119 CF$UID 120 CF$UID 121 NSButton2 NSButton3 NSButton NSBrowser1 NSButton4 File's Owner NSButton5 NSButton1 Window $class CF$UID 109 NS.objects $class CF$UID 109 NS.objects $class CF$UID 109 NS.objects CF$UID 31 CF$UID 84 CF$UID 93 CF$UID 2 CF$UID 80 CF$UID 88 CF$UID 49 CF$UID 105 CF$UID 39 CF$UID 44 CF$UID 60 CF$UID 101 CF$UID 65 CF$UID 78 CF$UID 11 CF$UID 26 CF$UID 25 CF$UID 10 CF$UID 90 CF$UID 99 CF$UID 82 CF$UID 106 CF$UID 95 CF$UID 86 CF$UID 9 CF$UID 103 CF$UID 97 $class CF$UID 109 NS.objects CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 CF$UID 131 CF$UID 132 CF$UID 133 CF$UID 134 CF$UID 135 CF$UID 136 CF$UID 137 CF$UID 138 CF$UID 139 CF$UID 140 CF$UID 141 CF$UID 142 CF$UID 143 CF$UID 144 CF$UID 145 CF$UID 146 CF$UID 147 CF$UID 148 CF$UID 149 CF$UID 150 CF$UID 151 CF$UID 152 8 19 23 1 17 21 11 29 9 10 12 27 13 16 5 6 15 7 22 26 18 30 24 20 14 28 25 $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.gorm/000077500000000000000000000000001067163320700302665ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.gorm/data.classes000066400000000000000000000071331067163320700325620ustar00rootroot00000000000000{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "changeFont:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontFontPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:" ); Super = NSObject; }; KeyTextView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; TopicInspectorController = { Actions = ( ); Outlets = ( nothingView, window, topicText, channelField, dateField, authorField ); Super = NSObject; }; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.gorm/objects.gorm000066400000000000000000000125351067163320700326130ustar00rootroot00000000000000GNUstep archive000029cf:0000001c:00000097:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0&%TopicInspectorController0& %  TextField101 NSTextField1 NSControl1NSView1 NSResponder% B< B A  B A&01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0 &%Channel:0 1NSFont%&&&&&&&&%0 1NSColor0 &%NSNamedColorSpace0 &%System0&%textBackgroundColor0 0& % textColor0& % ScrollView01 NSScrollView% @ @ Ct B  Ct B&0 &01 NSClipView% A @ C] B A  C] B&0 &01GSTextViewTemplate1GSClassSwapper0& % KeyTextView1 NSTextView1NSText% A  C] B  C] B&0 &00&%NSCalibratedWhiteColorSpace ? ?  K K0 0&%System0& % textColor C] K01 NSScroller% @ @ A B  A B&0 &%0 0!&0"% A@&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0#& %  TextField20$% A B A  B A&0% &%0& 0'&%Date: &&&&&&&&%$0( 0)&%System0*&%textBackgroundColor0+ )0,& % textColor0-& % TextField0.% A A  C! A  C! A&-0/ &%00 01&%Not Applicable &&&&&&&&%.02 03&%System04&%textBackgroundColor05 > ?06& %  TextField307% @@ B A  B A&08 &%09 0:&%Set By: &&&&&&&&%70; 0<&%System0=&%textBackgroundColor0> <0?& % textColor0@& % GormNSWindow0A1NSWindow%  C CM& % C C0B%  C CM  C CM&0C &0D1NSBox% @ B Ct B  Ct B& 0E &0F% @ @ Cf B  Cf B&0G &$70H% B B< C A  C A&0I &%0J 0K& &&&&&&&&%H0L 0M&%System0N&%textBackgroundColor0O M0P& % textColor0Q% B A C A  C A&0R &%0S 0T& &&&&&&&&%Q0U 0V&%System0W&%textBackgroundColor0X V0Y& % textColor0Z% B @@ C A  C A&0[ &%0\ 0]& &&&&&&&&%Z0^ 0_&%System0`&%textBackgroundColor0a _0b& % textColor0c 0d& % Information0e% A@&&&&&&&&%D0f 0g&%System0h&%windowBackgroundColor0i 0j&%System0k& % textColor @ @%%f0l&%Window0m&%Topic Inspectorm A A F@ F@%0n1NSImage0o&%NSApplicationIcon0p&%TextView0q& %  GormNSWindow10r%  C4 BD&% C D0s%  C4 BD  C4 BD&0t &.fl0u&%Window0v&%Window A A F@ F@%n0w& %  TextField4H0x&%GSCustomClassMap0y&0z&%TextView0{& %  TextField5Q0|& %  TextField6Z0}&%BoxD0~ &01NSNibConnector@0&%NSOwner0q0-0}00#060w0{0|00p01NSNibOutletConnector|0& % authorField0{0& % dateField0w0& % channelField0p0& % topicText0@0&%window0q0& % nothingViewTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.nib/000077500000000000000000000000001067163320700300725ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.nib/classes.nib000066400000000000000000000011011067163320700322120ustar00rootroot00000000000000{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = KeyTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, { CLASS = TopicInspectorController; LANGUAGE = ObjC; OUTLETS = { authorField = id; channelField = id; dateField = id; nothingView = id; topicText = id; window = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.nib/info.nib000066400000000000000000000010041067163320700315120ustar00rootroot00000000000000 IBDocumentLocation 496 609 356 240 0 0 1280 1002 IBFramework Version 437.0 IBOpenObjects 5 7 IBSystem Version 8B9 IBUsesTextArchiving TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/English.lproj/TopicInspector.nib/keyedobjects.nib000066400000000000000000001423101067163320700332400ustar00rootroot00000000000000 $archiver NSKeyedArchiver $objects $null $class CF$UID 190 NSAccessibilityConnectors CF$UID 187 NSAccessibilityOidsKeys CF$UID 188 NSAccessibilityOidsValues CF$UID 189 NSClassesKeys CF$UID 157 NSClassesValues CF$UID 158 NSConnections CF$UID 8 NSFontManager CF$UID 0 NSFramework CF$UID 5 NSNamesKeys CF$UID 141 NSNamesValues CF$UID 142 NSNextOid 38 NSObjectsKeys CF$UID 138 NSObjectsValues CF$UID 140 NSOidsKeys CF$UID 159 NSOidsValues CF$UID 160 NSRoot CF$UID 2 NSVisibleWindows CF$UID 6 $class CF$UID 4 NSClassName CF$UID 3 TopicInspectorController $classes NSCustomObject NSObject $classname NSCustomObject IBCocoaFramework $class CF$UID 7 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 57 NS.objects CF$UID 9 CF$UID 107 CF$UID 126 CF$UID 128 CF$UID 130 CF$UID 132 CF$UID 134 CF$UID 136 $class CF$UID 106 NSDestination CF$UID 10 NSLabel CF$UID 105 NSSource CF$UID 2 $class CF$UID 104 NSMaxSize CF$UID 103 NSMinSize CF$UID 102 NSScreenRect CF$UID 101 NSViewClass CF$UID 15 NSWTFlags -260571136 NSWindowBacking 2 NSWindowClass CF$UID 13 NSWindowRect CF$UID 11 NSWindowStyleMask 10 NSWindowTitle CF$UID 12 NSWindowView CF$UID 16 {{523, 222}, {263, 274}} Topic Inspector $class CF$UID 14 NS.string NSWindow $classes NSMutableString NSString NSObject $classname NSMutableString $class CF$UID 14 NS.string View $class CF$UID 59 NSFrame CF$UID 100 NSNextResponder CF$UID 0 NSSubviews CF$UID 17 $class CF$UID 57 NS.objects CF$UID 18 CF$UID 70 $class CF$UID 69 NSBorderType 3 NSBoxType 0 NSContentView CF$UID 20 NSFrame CF$UID 60 NSNextResponder CF$UID 16 NSOffsets CF$UID 61 NSSubviews CF$UID 19 NSSuperview CF$UID 16 NSTitleCell CF$UID 62 NSTitlePosition 2 NSTransparent NSvFlags 10 $class CF$UID 57 NS.objects CF$UID 20 $class CF$UID 59 NSFrame CF$UID 58 NSNextResponder CF$UID 18 NSSubviews CF$UID 21 NSSuperview CF$UID 18 $class CF$UID 57 NS.objects CF$UID 22 CF$UID 39 CF$UID 43 CF$UID 47 CF$UID 51 CF$UID 54 $class CF$UID 38 NSCell CF$UID 24 NSEnabled NSFrame CF$UID 23 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{16, 53}, {65, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 25 NSControlView CF$UID 22 NSSupport CF$UID 26 NSTextColor CF$UID 34 Channel: $class CF$UID 28 NSName CF$UID 27 NSSize 10 NSfFlags 2843 LucidaGrande $classes NSFont NSObject $classname NSFont $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 32 NSColorName CF$UID 31 NSColorSpace 6 System controlColor $class CF$UID 33 NSColorSpace 3 NSWhite MC42NjY2NjY2OQA= $classes NSColor NSObject $classname NSColor $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 36 NSColorName CF$UID 35 NSColorSpace 6 controlTextColor $class CF$UID 33 NSColorSpace 3 NSWhite MAA= $classes NSTextFieldCell NSActionCell NSCell NSObject $classname NSTextFieldCell $classes NSTextField %NSTextField NSControl NSView NSResponder NSObject $classname NSTextField $class CF$UID 38 NSCell CF$UID 41 NSEnabled NSFrame CF$UID 40 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{16, 32}, {65, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 42 NSControlView CF$UID 39 NSSupport CF$UID 26 NSTextColor CF$UID 34 Author: $class CF$UID 38 NSCell CF$UID 45 NSEnabled NSFrame CF$UID 44 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{16, 11}, {65, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 71303168 NSContents CF$UID 46 NSControlView CF$UID 43 NSSupport CF$UID 26 NSTextColor CF$UID 34 Date: $class CF$UID 38 NSCell CF$UID 49 NSEnabled NSFrame CF$UID 48 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{89, 53}, {120, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 272629760 NSContents CF$UID 50 NSControlView CF$UID 47 NSSupport CF$UID 26 NSTextColor CF$UID 34 $class CF$UID 38 NSCell CF$UID 53 NSEnabled NSFrame CF$UID 52 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{89, 32}, {120, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 272629760 NSContents CF$UID 50 NSControlView CF$UID 51 NSSupport CF$UID 26 NSTextColor CF$UID 34 $class CF$UID 38 NSCell CF$UID 56 NSEnabled NSFrame CF$UID 55 NSNextResponder CF$UID 20 NSSuperview CF$UID 20 NSvFlags 256 {{89, 11}, {120, 13}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 67239424 NSCellFlags2 272629760 NSContents CF$UID 50 NSControlView CF$UID 54 NSSupport CF$UID 26 NSTextColor CF$UID 34 $classes NSMutableArray NSArray NSObject $classname NSMutableArray {{2, 2}, {225, 76}} $classes NSView NSResponder NSObject $classname NSView {{17, 181}, {229, 93}} {0, 0} $class CF$UID 37 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 63 NSSupport CF$UID 64 NSTextColor CF$UID 68 Information $class CF$UID 28 NSName CF$UID 27 NSSize 11 NSfFlags 3100 $class CF$UID 33 NSCatalogName CF$UID 30 NSColor CF$UID 67 NSColorName CF$UID 66 NSColorSpace 6 textBackgroundColor $class CF$UID 33 NSColorSpace 3 NSWhite MQA= $class CF$UID 33 NSColorSpace 3 NSWhite MCAwLjgwMDAwMDAxAA== $classes NSBox NSView NSResponder NSObject $classname NSBox $class CF$UID 69 NSBorderType 3 NSBoxType 0 NSContentView CF$UID 72 NSFrame CF$UID 95 NSNextResponder CF$UID 16 NSOffsets CF$UID 96 NSSubviews CF$UID 71 NSSuperview CF$UID 16 NSTitleCell CF$UID 97 NSTitlePosition 2 NSTransparent NSvFlags 18 $class CF$UID 57 NS.objects CF$UID 72 $class CF$UID 59 NSFrame CF$UID 94 NSNextResponder CF$UID 70 NSSubviews CF$UID 73 NSSuperview CF$UID 70 $class CF$UID 57 NS.objects CF$UID 74 $class CF$UID 93 NSContentView CF$UID 76 NSFrame CF$UID 92 NSHScroller CF$UID 89 NSNextKeyView CF$UID 76 NSNextResponder CF$UID 72 NSSubviews CF$UID 75 NSSuperview CF$UID 72 NSVScroller CF$UID 85 NSsFlags 18 NSvFlags 274 $class CF$UID 57 NS.objects CF$UID 76 CF$UID 85 CF$UID 89 $class CF$UID 84 NSBGColor CF$UID 29 NSDocView CF$UID 78 NSFrame CF$UID 83 NSNextKeyView CF$UID 78 NSNextResponder CF$UID 74 NSSubviews CF$UID 77 NSSuperview CF$UID 74 NScvFlags 4 NSvFlags 2048 $class CF$UID 57 NS.objects CF$UID 78 $class CF$UID 82 NSClassName CF$UID 80 NSExtension CF$UID 81 NSFrameSize CF$UID 79 NSNextResponder CF$UID 76 NSSuperview CF$UID 76 NSvFlags 18 {172, 119} KeyTextView NSTextView $classes NSCustomView NSView NSResponder NSObject $classname NSCustomView {{1, 1}, {176, 120}} $classes NSClipView NSView NSResponder NSObject $classname NSClipView $class CF$UID 88 NSAction CF$UID 87 NSCurValue 1 NSFrame CF$UID 86 NSNextResponder CF$UID 74 NSPercent 0.99122804403305054 NSSuperview CF$UID 74 NSTarget CF$UID 74 NSvFlags 256 {{177, 1}, {15, 120}} _doScroller: $classes NSScroller NSControl NSView NSResponder NSObject $classname NSScroller $class CF$UID 88 NSAction CF$UID 91 NSCurValue 0.13372093439102173 NSFrame CF$UID 90 NSNextResponder CF$UID 74 NSSuperview CF$UID 74 NSTarget CF$UID 74 NSsFlags 1 NSvFlags 256 {{-100, -100}, {172, 15}} _doScroller: {{16, 11}, {193, 122}} $classes NSScrollView NSView NSResponder NSObject $classname NSScrollView {{2, 2}, {225, 144}} {{17, 16}, {229, 161}} {0, 0} $class CF$UID 37 NSBackgroundColor CF$UID 65 NSCellFlags 67239424 NSCellFlags2 0 NSContents CF$UID 98 NSSupport CF$UID 64 NSTextColor CF$UID 99 Topic $class CF$UID 33 NSColorSpace 3 NSWhite MCAwLjgwMDAwMDAxAA== {{1, 9}, {263, 274}} {{0, 0}, {1280, 1002}} {263, 296} {3.40282e+38, 3.40282e+38} $classes NSWindowTemplate NSObject $classname NSWindowTemplate window $classes NSNibOutletConnector NSNibConnector NSObject $classname NSNibOutletConnector $class CF$UID 106 NSDestination CF$UID 108 NSLabel CF$UID 125 NSSource CF$UID 2 $class CF$UID 104 NSMaxSize CF$UID 124 NSMinSize CF$UID 123 NSScreenRect CF$UID 122 NSViewClass CF$UID 112 NSWTFlags 1886912512 NSWindowBacking 2 NSWindowClass CF$UID 111 NSWindowRect CF$UID 109 NSWindowStyleMask 14 NSWindowTitle CF$UID 110 NSWindowView CF$UID 113 {{255, 626}, {213, 107}} $class CF$UID 14 NS.string Window $class CF$UID 14 NS.string NSWindow $class CF$UID 14 NS.string View $class CF$UID 59 NSFrame CF$UID 121 NSNextResponder CF$UID 0 NSSubviews CF$UID 114 $class CF$UID 57 NS.objects CF$UID 115 $class CF$UID 38 NSCell CF$UID 117 NSEnabled NSFrame CF$UID 116 NSNextResponder CF$UID 113 NSSuperview CF$UID 113 NSvFlags 298 {{17, 45}, {179, 17}} $class CF$UID 37 NSBackgroundColor CF$UID 29 NSCellFlags 604110336 NSCellFlags2 138412032 NSContents CF$UID 118 NSControlView CF$UID 115 NSSupport CF$UID 119 NSTextColor CF$UID 120 Not Applicable $class CF$UID 28 NSName CF$UID 27 NSSize 13 NSfFlags 1044 $class CF$UID 33 NSColorSpace 1 NSRGB MC43NSAwLjc1IDAuNzUA {{1, 9}, {213, 107}} {{0, 0}, {1280, 1002}} {213, 129} {3.40282e+38, 3.40282e+38} nothingView $class CF$UID 106 NSDestination CF$UID 78 NSLabel CF$UID 127 NSSource CF$UID 2 topicText $class CF$UID 106 NSDestination CF$UID 54 NSLabel CF$UID 129 NSSource CF$UID 2 dateField $class CF$UID 106 NSDestination CF$UID 51 NSLabel CF$UID 131 NSSource CF$UID 2 authorField $class CF$UID 106 NSDestination CF$UID 47 NSLabel CF$UID 133 NSSource CF$UID 2 channelField $class CF$UID 106 NSDestination CF$UID 78 NSLabel CF$UID 135 NSSource CF$UID 10 initialFirstResponder $class CF$UID 106 NSDestination CF$UID 2 NSLabel CF$UID 137 NSSource CF$UID 10 delegate $class CF$UID 139 NS.objects CF$UID 16 CF$UID 47 CF$UID 115 CF$UID 70 CF$UID 22 CF$UID 10 CF$UID 74 CF$UID 108 CF$UID 43 CF$UID 78 CF$UID 54 CF$UID 113 CF$UID 20 CF$UID 72 CF$UID 18 CF$UID 39 CF$UID 51 $classes NSArray NSObject $classname NSArray $class CF$UID 139 NS.objects CF$UID 10 CF$UID 20 CF$UID 113 CF$UID 16 CF$UID 20 CF$UID 2 CF$UID 72 CF$UID 2 CF$UID 20 CF$UID 74 CF$UID 20 CF$UID 108 CF$UID 18 CF$UID 70 CF$UID 16 CF$UID 20 CF$UID 20 $class CF$UID 139 NS.objects CF$UID 51 CF$UID 20 CF$UID 10 CF$UID 47 CF$UID 72 CF$UID 22 CF$UID 78 CF$UID 115 CF$UID 43 CF$UID 108 CF$UID 2 CF$UID 18 CF$UID 54 CF$UID 39 CF$UID 70 $class CF$UID 139 NS.objects CF$UID 143 CF$UID 144 CF$UID 145 CF$UID 146 CF$UID 144 CF$UID 147 CF$UID 148 CF$UID 149 CF$UID 150 CF$UID 151 CF$UID 152 CF$UID 153 CF$UID 154 CF$UID 155 CF$UID 156 NSTextField11111131 NSView Window NSTextField1111113 NSTextField111111 View NSTextField2 NSTextField1111112 Window1 File's Owner NSBox NSTextField11111132 NSTextField1111111 NSBox1 $class CF$UID 139 NS.objects $class CF$UID 139 NS.objects $class CF$UID 139 NS.objects CF$UID 20 CF$UID 54 CF$UID 10 CF$UID 113 CF$UID 16 CF$UID 18 CF$UID 39 CF$UID 2 CF$UID 130 CF$UID 47 CF$UID 9 CF$UID 132 CF$UID 70 CF$UID 115 CF$UID 107 CF$UID 72 CF$UID 108 CF$UID 51 CF$UID 74 CF$UID 128 CF$UID 134 CF$UID 43 CF$UID 22 CF$UID 126 CF$UID 136 CF$UID 78 $class CF$UID 139 NS.objects CF$UID 161 CF$UID 162 CF$UID 163 CF$UID 164 CF$UID 165 CF$UID 166 CF$UID 167 CF$UID 168 CF$UID 169 CF$UID 170 CF$UID 171 CF$UID 172 CF$UID 173 CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 CF$UID 181 CF$UID 182 CF$UID 183 CF$UID 184 CF$UID 185 CF$UID 186 11 29 5 8 6 10 15 1 34 27 30 35 23 9 31 24 7 28 26 33 36 16 14 32 37 25 $class CF$UID 57 NS.objects $class CF$UID 139 NS.objects $class CF$UID 139 NS.objects $classes NSIBObjectData NSObject $classname NSIBObjectData $top IB.objectdata CF$UID 1 $version 100000 TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/GNUmakefile000066400000000000000000000072161067163320700237200ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = GNUstepOutput BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/TalkSoup/Output BUNDLE_EXTENSION = Pref_Nibs = Preferences.nib \ FontPreferences.nib \ GeneralPreferences.nib \ ColorPreferences.nib \ BundlePreferences.nib All_Localized_Nibs = $(Pref_Nibs) \ ServerEditor.nib \ ServerList.nib \ NamePrompt.nib \ GroupEditor.nib \ ServerEditor.nib \ TopicInspector.nib \ GNUstepOutput.nib All_Localized_Other = BundlePreferences.txt \ Localizable.strings ifeq ($(OBJC_RUNTIME_LIB), apple) GNUstepOutput_LOCALIZED_RESOURCE_FILES = $(All_Localized_Other) \ $(All_Localized_Nibs) else GNUstepOutput_LOCALIZED_RESOURCE_FILES = $(All_Localized_Other) \ $(shell \ echo "$(All_Localized_Nibs)" | \ sed -e 's/\.nib/\.gorm/g') endif Pref_Images = Images/bundle_prefs.tiff \ Images/color_prefs.tiff \ Images/font_prefs.tiff \ Images/general_prefs.tiff GNUstepOutput_RESOURCE_FILES = Images/common_ret.tiff Images/common_retH.tiff \ AllLanguages/Defaults.plist AllLanguages/ServerList.plist $(Pref_Images) All_NonLocalized_Nibs = \ AllLanguages/StandardChannel.nib \ AllLanguages/StandardQuery.nib \ AllLanguages/TabContent.nib ifeq ($(OBJC_RUNTIME_LIB), apple) Extra_Resources = $(All_NonLocalized_Nibs) else Extra_Resources = $(shell \ echo "$(All_NonLocalized_Nibs)" | \ sed -e 's/\.nib/\.gorm/g') endif GNUstepOutput_RESOURCE_FILES += $(Extra_Resources) GNUstepOutput_RESOURCE_FILES += Tools/Tools GNUstepOutput_LANGUAGES = English GNUstepOutput_PRINCIPAL_CLASS = GNUstepOutput ifeq ($(OBJC_RUNTIME_LIB), apple) GNUstepOutput_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else GNUstepOutput_BUNDLE_LIBS = -lTalkSoupBundles $(GUI_LIBS) endif ConnectionController = Controllers/ConnectionController/ConnectionController.m \ Controllers/ConnectionController/ConnectionControllerCtcp.m \ Controllers/ConnectionController/ConnectionControllerDelegate.m \ Controllers/ConnectionController/ConnectionControllerInFilter.m \ Controllers/ConnectionController/ConnectionControllerNumericCommands.m \ Controllers/ConnectionController/ConnectionControllerOutFilter.m ContentController = Controllers/ContentControllers/StandardContentController.m \ Controllers/ContentControllers/ContentController.m \ Controllers/ContentControllers/Tab/TabContentController.m \ Controllers/ContentControllers/Tab/TabMasterController.m \ Controllers/ContentControllers/StandardChannelController.m \ Controllers/ContentControllers/StandardQueryController.m Preferences = Controllers/Preferences/GeneralPreferencesController.m \ Controllers/Preferences/BundlePreferencesController.m \ Controllers/Preferences/ColorPreferencesController.m \ Controllers/Preferences/FontPreferencesController.m \ Controllers/Preferences/PreferencesController.m Controllers = \ Controllers/NamePromptController.m \ Controllers/ServerListController.m \ Controllers/InputController.m \ Controllers/GroupEditorController.m \ Controllers/ServerEditorController.m \ Controllers/ServerListConnectionController.m \ Controllers/TopicInspectorController.m \ $(Preferences) \ $(ConnectionController) \ $(ContentController) Views = Views/AttributedTabViewItem.m \ Views/ScrollingTextView.m \ Views/FocusNotificationTextView.m \ Views/KeyTextView.m \ Views/InputControllerTextView.m Misc = Misc/NSColorAdditions.m \ Misc/NSObjectAdditions.m \ Misc/NSAttributedStringAdditions.m \ Misc/LookedUpHost.m \ Misc/NSViewAdditions.m \ Misc/HelperExecutor.m Models = Models/Channel.m GNUstepOutput_OBJC_FILES = GNUstepOutput.m $(Controllers) $(Views) $(Misc)\ $(Models) -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/GNUmakefile.postamble000066400000000000000000000007621067163320700257040ustar00rootroot00000000000000before-all:: $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Controllers/Preferences $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Controllers/ConnectionController $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Controllers/ContentControllers $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Controllers/ContentControllers/Tab $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Views $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Misc $(MKDIRS) $(GNUSTEP_OBJ_DIR)/Models $(MAKE) -C Tools all $(MAKE) -C Tools install after-clean:: $(MAKE) -C Tools clean after-distclean:: $(MAKE) -C Tools distclean TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/GNUmakefile.preamble000066400000000000000000000005361067163320700255040ustar00rootroot00000000000000ADDITIONAL_INCLUDE_DIRS += -I. -I../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/GNUstepOutput.h000066400000000000000000000057671067163320700245760ustar00rootroot00000000000000/*************************************************************************** GNUStepOutput.h ------------------- begin : Sat Jan 18 01:31:16 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class GNUstepOutput, PreferencesController, NSString, NSColor; #import #import NSString *StandardLowercase(NSString *aString); NSString *IRCLowercase(NSString *aString); // lowercase function to be used by GNUstepOutput NSString *GNUstepOutputLowercase(NSString *aString, id connection); BOOL GNUstepOutputCompare(NSString *aString, NSString *aString2, id connection); NSString *GNUstepOutputIdentificationForController(id controller); extern GNUstepOutput *_GS_; extern PreferencesController *_PREFS_; #ifdef _l #undef _l #endif #define _l(X) [[NSBundle bundleForClass: [GNUstepOutput class]] \ localizedStringForKey: (X) value: nil \ table: @"Localizable"] #ifndef GNUSTEP_OUTPUT_H #define GNUSTEP_OUTPUT_H #import #import "TalkSoupBundles/TalkSoup.h" @class NSAttributedString, NSArray, NSAttributedString, NSMutableDictionary; @class NSDictionary, ConnectionController, PreferencesController; @class TopicInspectorController, ServerListController; @class BundleConfigureController, NSMenu; @protocol GNUstepOutputBundlePreferences - (void)shouldDisplay; - (void)shouldHide; @end @interface GNUstepOutput : NSObject { NSMutableDictionary *pendingIdentToConnectionController; NSMapTable *connectionToConnectionController; NSMutableArray *connectionControllers; NSMutableArray *serverLists; TopicInspectorController *topic; BundleConfigureController *bundle; BOOL terminating; NSMenu *menu; } - (id)connectionToConnectionController: (id)aObject; - waitingForConnection: (NSString *)aIdent onConnectionController: (id)controller; - notWaitingForConnectionOnConnectionController: (ConnectionController *)aController; - addConnectionController: (ConnectionController *)aCont; - removeConnectionController: (ConnectionController *)aCont; - (NSArray *)connectionControllers; - (NSArray *)unconnectedConnectionControllers; - (TopicInspectorController *)topicInspectorController; - (void)run; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/GNUstepOutput.m000066400000000000000000000330201067163320700245620ustar00rootroot00000000000000/*************************************************************************** GNUStepOutput.m ------------------- begin : Sat Jan 18 01:31:16 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "GNUstepOutput.h" #import "Controllers/Preferences/PreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/BundlePreferencesController.h" #import "Controllers/ConnectionController.h" #import "Controllers/ServerListController.h" #import "Controllers/NamePromptController.h" #import "Controllers/ContentControllers/ContentController.h" #import "Controllers/TopicInspectorController.h" #import "Misc/NSColorAdditions.h" #import "Views/KeyTextView.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *GNUstepOutputLowercase(NSString *aString, id connection) { if (connection) { if ([connection isKindOfClass: [ConnectionController class]]) { connection = [connection connection]; } else if ([connection conformsToProtocol: @protocol(ContentController)]) { connection = [[connection connectionController] connection]; } } if (!connection || ![connection respondsToSelector: @selector(lowercasingSelector)]) { aString = [aString lowercaseString]; } else { aString = [aString performSelector: [connection lowercasingSelector]]; } return aString; } NSString *GNUstepOutputIdentificationForController(id controller) { id string; string = [NSString stringWithFormat: @"%p", controller]; return string; } BOOL GNUstepOutputCompare(NSString *aString, NSString *aString2, id connection) { return [GNUstepOutputLowercase(aString, connection) isEqualToString: GNUstepOutputLowercase(aString2, connection)]; } GNUstepOutput *_GS_ = nil; PreferencesController *_PREFS_ = nil; @implementation GNUstepOutput - init { id x; id fontName = nil; id fontSize = nil; if (!(self = [super init])) return nil; [NSApplication sharedApplication]; // Make sure NSApp is allocated.. if (![NSBundle loadNibNamed: @"GNUstepOutput" owner: self]) { NSLog(@"Could not load GNUstepOutput, exiting..."); [self dealloc]; return nil; } [NSApp setMainMenu: menu]; connectionToConnectionController = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 10); connectionControllers = [NSMutableArray new]; serverLists = [NSMutableArray new]; pendingIdentToConnectionController = [NSMutableDictionary new]; x = [NSFont userFontOfSize: 0.0]; if (x) { fontName = [x fontName]; fontSize = [NSString stringWithFormat: @"%d", (int)[x pointSize]]; } if (!fontName) fontName = @"Helvetica"; if ([fontSize intValue] < 0 || !fontSize) fontSize = @"12"; RELEASE(_GS_); _GS_ = RETAIN(self); _PREFS_ = [PreferencesController new]; AUTORELEASE([GeneralPreferencesController new]); AUTORELEASE([ColorPreferencesController new]); AUTORELEASE([FontPreferencesController new]); AUTORELEASE([BundlePreferencesController new]); return self; } - (void)dealloc { [[topic topicText] setKeyTarget: nil]; RELEASE(topic); RELEASE(connectionControllers); RELEASE(pendingIdentToConnectionController); NSFreeMapTable(connectionToConnectionController); [super dealloc]; } - (id)connectionToConnectionController: (id)aObject { return NSMapGet(connectionToConnectionController, aObject); } - waitingForConnection: (NSString *)aIdent onConnectionController: (id)controller { [pendingIdentToConnectionController removeObjectsForKeys: [pendingIdentToConnectionController allKeysForObject: controller]]; [pendingIdentToConnectionController setObject: controller forKey: aIdent]; return self; } - notWaitingForConnectionOnConnectionController: (ConnectionController *)aController { [pendingIdentToConnectionController removeObjectsForKeys: [pendingIdentToConnectionController allKeysForObject: aController]]; return self; } - addConnectionController: (ConnectionController *)aCont { [connectionControllers addObject: aCont]; return self; } - removeConnectionController: (ConnectionController *)aCont { [pendingIdentToConnectionController removeObjectsForKeys: [pendingIdentToConnectionController allKeysForObject: aCont]]; [connectionControllers removeObject: aCont]; return self; } - (NSArray *)unconnectedConnectionControllers { NSEnumerator *iter; id object; NSMutableArray *arr; arr = AUTORELEASE([NSMutableArray new]); iter = [connectionControllers objectEnumerator]; while ((object = [iter nextObject])) { if ([[pendingIdentToConnectionController allKeysForObject: object] count] == 0 && ![object connection]) { [arr addObject: object]; } } return arr; } - (NSArray *)connectionControllers { return [NSArray arrayWithArray: connectionControllers]; } - newConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id controller; id ident = [connection identification]; controller = AUTORELEASE(RETAIN([pendingIdentToConnectionController objectForKey: ident])); if (!(controller)) { NSLog(@"Connection came through but there is no related" @"connection controller waiting for that connection..." @"closing connection..."); [[_TS_ pluginForInput] closeConnection: connection]; return self; } [pendingIdentToConnectionController removeObjectForKey: ident]; NSMapInsert(connectionToConnectionController, connection, controller); NSMapInsert(connectionToConnectionController, controller, connection); [controller newConnection: connection withNickname: aNick sender: aPlugin]; return self; } - lostConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { id control; if ((control = [pendingIdentToConnectionController objectForKey: [connection identification]])) { [control systemMessage: BuildAttributedString(_l(@"Error: "), [connection errorMessage], nil) onConnection: nil]; [control lostConnection: connection withNickname: aNick sender: aPlugin]; [pendingIdentToConnectionController removeObjectForKey: [connection identification]]; } else { control = NSMapGet(connectionToConnectionController, connection); [control lostConnection: connection withNickname: aNick sender: aPlugin]; NSMapRemove(connectionToConnectionController, connection); NSMapRemove(connectionToConnectionController, control); } return self; } - consoleMessage: (NSAttributedString *)arg onConnection: (id)aConnection { id controller = NSMapGet(connectionToConnectionController, aConnection); if ([controller respondsToSelector: _cmd]) { [controller performSelector: _cmd withObject: arg withObject: aConnection]; } return self; } - systemMessage: (NSAttributedString *)arg onConnection: (id)aConnection { id controller = NSMapGet(connectionToConnectionController, aConnection); if ([controller respondsToSelector: _cmd]) { [controller performSelector: _cmd withObject: arg withObject: aConnection]; } return self; } - showMessage: (NSAttributedString *)arg onConnection: (id)aConnection { id controller = NSMapGet(connectionToConnectionController, aConnection); if ([controller respondsToSelector: _cmd]) { [controller performSelector: _cmd withObject: arg withObject: aConnection]; } return self; } - controlObject: (NSDictionary *)aControl onConnection: aConnection withNickname: aNick sender: aSender { id process; process = [aControl objectForKey: @"Process"]; if (aConnection) { ConnectionController *object; object = NSMapGet(connectionToConnectionController, aConnection); [object controlObject: aControl onConnection: aConnection withNickname: aNick sender: aSender]; } return self; } - (BOOL)respondsToSelector: (SEL)aSel { NSString *selS; NSString *tmp; SEL tmpSel; if (!aSel) return NO; selS = NSStringFromSelector(aSel); if ([selS hasPrefix: @"doApplication"]) { tmp = [selS substringFromIndex: 13]; tmp = [NSString stringWithFormat: @"%@%@", [[tmp substringToIndex: 1] lowercaseString], [tmp substringFromIndex: 1]]; tmpSel = NSSelectorFromString(tmp); if (tmpSel != 0 && [NSApp respondsToSelector: tmpSel]) { return YES; } } if ([selS hasSuffix: @"nConnection:withNickname:sender:"] && [ConnectionController instancesRespondToSelector: aSel]) return YES; return [super respondsToSelector: aSel]; } - (NSMethodSignature *)methodSignatureForSelector: (SEL)aSel { id x; NSString *selS; selS = NSStringFromSelector(aSel); if ([selS hasPrefix: @"doApplication"]) { SEL tmpSel; x = [selS substringFromIndex: 13]; x = [NSString stringWithFormat: @"%@%@", [[x substringToIndex: 1] lowercaseString], [x substringFromIndex: 1]]; tmpSel = NSSelectorFromString(x); if (tmpSel != 0 && (x = [NSApp methodSignatureForSelector: tmpSel])) { return x; } } if ((x = [ConnectionController instanceMethodSignatureForSelector: aSel])) { return x; } return [super methodSignatureForSelector: aSel]; } - (void)forwardInvocation: (NSInvocation *)aInvoc { SEL sel = [aInvoc selector]; NSString *selS = NSStringFromSelector(sel); [aInvoc retainArguments]; if ([selS hasPrefix: @"doApplication"]) { SEL tmpSel; NSString *x; x = [selS substringFromIndex: 13]; x = [NSString stringWithFormat: @"%@%@", [[x substringToIndex: 1] lowercaseString], [x substringFromIndex: 1]]; tmpSel = NSSelectorFromString(x); if (tmpSel != 0 && [NSApp respondsToSelector: tmpSel]) { [aInvoc setSelector: tmpSel]; [aInvoc invokeWithTarget: NSApp]; return; } } if ([selS hasSuffix: @"nConnection:withNickname:sender:"]) { int num; id connection; id object; num = [[selS componentsSeparatedByString: @":"] count] - 1; [aInvoc getArgument: &connection atIndex: num + 2 - 1 - 1 - 1]; object = NSMapGet(connectionToConnectionController, connection); if (sel && [object respondsToSelector: sel]) { [aInvoc invokeWithTarget: object]; } } } - (TopicInspectorController *)topicInspectorController { return topic; } - (void)run { [NSApp setDelegate: self]; [NSApp run]; } @end @interface GNUstepOutput (GNUstepOutputApplicationDelegate) @end @implementation GNUstepOutput (GNUstepOutputApplicationDelegate) - (void)applicationDidFinishLaunching: (NSNotification *)aNotification { topic = [TopicInspectorController new]; [NSBundle loadNibNamed: @"TopicInspector" owner: topic]; if (![ServerListController startAutoconnectServers]) { AUTORELEASE([ConnectionController new]); } } - (void)applicationWillTerminate: (NSNotification *)aNotification { NSArray *x; NSEnumerator *iter; id object; terminating = YES; x = [NSArray arrayWithArray: connectionControllers]; iter = [x objectEnumerator]; while ((object = [iter nextObject])) { id masters; id object2; id iter2; masters = [[object contentController] masterControllers]; iter2 = [masters objectEnumerator]; while ((object2 = [iter2 nextObject])) { [[object2 window] close]; } } /* Give about half a second to close off connections * properly... */ [[NSRunLoop currentRunLoop] runUntilDate: [NSDate dateWithTimeIntervalSinceNow: .5]]; } - (void)doApplicationTerminate: (id)sender { [NSApp terminate: sender]; } - (void)doApplicationHide: (id)sender { [NSApp hide: sender]; } - (void)doApplicationOrderFrontStandardAboutPanel: (id)sender { [NSApp orderFrontStandardAboutPanel: sender]; } - (void)openEmptyWindow: (NSNotification *)aNotification { AUTORELEASE([ConnectionController new]); } - (void)openServerList: (NSNotification *)aNotification { [NSBundle loadNibNamed: _l(@"ServerList") owner: AUTORELEASE([ServerListController new])]; } - (void)openNamePrompt: (NSNotification *)aNotification { [NSBundle loadNibNamed: _l(@"NamePrompt") owner: AUTORELEASE([NamePromptController new])]; } - (void)openTopicInspector: (NSNotification *)aNotification { [[topic window] makeKeyAndOrderFront: nil]; } - (void)loadPreferencesPanel: (NSNotification *)aNotification { [[_PREFS_ window] makeKeyAndOrderFront: nil]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/000077500000000000000000000000001067163320700230455ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/bundle_prefs.tiff000066400000000000000000000224541067163320700263760ustar00rootroot00000000000000II*$iip~~~}~}~|}{}abm{|{{z{z{~}}|}z{||y{{|xzz|xyz{xyyzxxPPY{|yzxxz{}}}}}}}}}}}}}}}}xyvxPPYz{}}}}ddd}}}xyuwyz|}}}}ddd}}}wyuvOPXyz|}}}}}}}ppp}}}}}}wxuv}||}}}}}}}}}vxtu~}||vxtu}||uwtu{|uvstz{uvstz{uuqsyzuuqsxyuuqswxwxvxuwuwuvuuprpq~pr~pq~op~op~op}~opbcm|}{|{{{{z{y{y{xzxyxyxxxxvxuvuvtvtvtutustqsqsprprpqpqpqopopopopWXi00$ $%@$%$%(R/home/andy/bundles.tiffCreated with The GIMPHHTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/bundle_prefs.xcf000077500000000000000000000202221067163320700262200ustar00rootroot00000000000000gimp xcf file00BB/ gimp-commentCreated with The GIMPUnnamedwAIڛA5AATA2ATA2ARBARBATBA/ B*ABABAA6AA6AhA7YAS@·dAr@A^O@̠ Empty PathsS gimp-commentCreated with The GIMPgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) $ Of00Empty Layer#2     0000..-------ѹ""""""#@..-------Ի""""""#@..----------'((*@1+1*11)11)11)11)11)114!114411 1111111_1111 _1111141164!114$100Empty Layer#1     :00N00^'&%%%}}%}d}%}d}%}}p}}%}}%%ϤϽ%%%' '&%%%}}%}d}%}d}%}}p}}%}}%%ϤϽ%%%' '&%%%}}%}d}%}d}%}}p}}%}}%%ϤϽ%%%' 4'44$44"4 4!4 4!4 4;4 4;4 4;4 4;4 4;4 4!4 4!4 4!4 4!4 4!4 4!4 4"44$44&400 Empty Layer      00 00     罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#3     ;00O00_   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     00000.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     600J00Z   00Selection Mask 0000 W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/color_prefs.tiff000066400000000000000000000224541067163320700262430ustar00rootroot00000000000000II*$,-fh,-,-bcbdbd,-,-egfhfh,-`bvwvwvwbdiipvv~vv~tt}pq|givwvwvwfhmn{{}abmfhfhfh{|&Bo&{{&EqEpEp&rtstz{;E5@&BoBoBo&-ststst#}z{JW5@5@5@CPGq QQQEpC#}#}#}8z{]mCPCPCPTdGoQQQGo C8888y{]mTdTdTdTdBoBoBoC8888xz]mTdTdTdTdC8888xy]mTdTdTdTdO| L~C8888xy]mTdTdTdTd_L~L~L~ZC8888xx]mTdTdTdTdu7ZZZp(B8888xx]mTdTdTdTdu7p(p(p(p(B8888vx]mTdTdTdTdu7p(p(p(p(B8888uw\lTdTdTdTdu7p(p(p(p(B8888uv\lTdTdTdTdu7p(p(p(p(B8888uv\lTdTdTdTdu7p(p(p(p(B8888tu\lTdTdTdTdu7p(p(p(p(A8888tu\lTdTdTdTdu7p(p(p(p(+~ststst#}tuJV5@5@5@CPt6p(p(p(p(stt6p(p(p(p(stt6p(p(p(p(+~ststst#}qsIU5@5@5@CPt6p(p(p(p(qst5p(p(p(p(qs^L~L~L~Z*~ststst#}prIU5@5@5@CP@8888pq~ZkTdTdTdTd@8888pr~ZkTdTdTdTd^L~L~L~Z?8888pq~YjTdTdTdTd,-,-,-,-,-op~op~]L~L~L~Zop}~s4p(p(p(p(opbcm|}{|{{{{z{y{y{xzxyxyxxjjyp0p(p(p(p(efwqsqsprprpqpqpqopopopopWXig$p(p(p(p(&&&&&00$ $%@$%$%(R/home/andy/colors.tiffCreated with The GIMPHHTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/color_prefs.xcf000077500000000000000000000242621067163320700260750ustar00rootroot00000000000000gimp xcf file00BB/ gimp-commentCreated with The GIMPUnnamedwAIڛA5AATA2ATA2ARBARBATBA/ B*ABABAA6AA6AhA7YAS@·dAr@A^O@̠ Empty PathsS gimp-commentCreated with The GIMPgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) $"$I'00Empty Layer#1     0000%%$$&*[))ܰ)************)**.%%$$&*[35)A55C)TCCT)T*T*T*T*T*T*T*T*T*T*T*T*B55CB55CB55C)T*T*T.%%$$&*[=@)N@@P)dPPd)d*d*d*d*d*d*d*d*d*d*d*d*N@@PN@@PN@@P)d*d*d.,+)'%%%%%%%%%%%%%%%%%%%%%%%%%%%%&(00Empty Layer#3     0000  %   %  $  $  $ %&&%"#%8##8%8&8&8&8&8&8&8&8&8&8&8&8&"#%&&"#%&&"#%8&8&8'(,;;;%,;,f,;;%,;,ff,;;,$,;,ff,;;,$,;fvvf;,$,;evve,%,f&,&,os,%,|ss},%,}},%,&,&,&,&,&,&,&,&,&,&,&,&,|ss},%,&,&,|ss},%,&,&,|ss},%,&,&,',,,,(,,-;;;%-;-h-;;%-;-hh-;;-$-;-hh-;;-$-;hwwh;-$-;fwwf-%-h&-&-pt-%-~tt-%--%-&-&-&-&-&-&-&-&-&-&-&-&-~tt-%-&-&-~tt-%-&-&-~tt-%-&-&-'----(--,+))&%%%%%%%%%%%%%%%%%%%%%%%%%%%&(00Empty Layer#2      0000(""%"B""$"BB"$"BB"$"BQQB$"@QQ@%B&&IL%YLLZ%pZZp%p&p&p&p&p&p&p&p&p&p&p&p&YLLZ%&&YLLZ%&&YLLZ%p&p'pp'p.pp&&(&::%&:&o&::&$&:&oo&:&$&:&oo&:&$&:oo&$&:kk&%&o&&&&z~&%&~~&%&&%&&&&&&&&&&&&&&&&&&&&&&&&&~~&%&&&&&~~&%&&&&&~~&%&&&'&&'&&.&&&&&, )(()(*(*(*(*(*(*(*(*(*(*(*(*   )(*(*()(.((,*('&%%%%%%%%%%%%%%%%%%%%%%%%%%%&)00 Empty Layer     C00W00g    罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#4     #00#00#   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     $00% 00%0.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     (00(00(   TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/common_ret.tiff000066400000000000000000000015401067163320700260610ustar00rootroot00000000000000II*`UUUUUUUUUUUUUUUCCCdddGGGdddGGGdddGGGdddIII 2 :@XPX(R/tmp/common_ret.tiffHHTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/common_retH.tiff000066400000000000000000000016561067163320700262010ustar00rootroot00000000000000II*`UUUUUUUUUUUUUUUCCCdddGGGdddGGGdddGGGdddIII > AF@X(R/usr/home/mirko/Sources/gnustep/core/gui/Images/common_retH.tiffCreated with The GIMPHHTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/font_prefs.tiff000066400000000000000000000224521067163320700260710ustar00rootroot00000000000000II*$iip~~~}~}~|}{}abm{|{{z{z{z{y{xzxyxy<<<<xxLLLL}|~|}xx<    罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#2     ^00r00   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     00000.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     Y00m00}   TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/general_prefs.tiff000066400000000000000000000225541067163320700265430ustar00rootroot00000000000000II*$iip~~~}~}~|}{}abm{|{{z{z{z{~~~~}~|}||y{~{|xz####((((####y{xy~((((yzxy~}~((((z{yzxx}~|}((((yzy{xx||((((y{vx||((((yyuw{|((((yyvxvvvvuvuvuvuvz|((((yyvxstuvz{####mxyvx############sstuyzxyvx######rstuyyyyyyxyvw##,,WXd##qrtuvv####,,,,,,qrstuv########,,,,qrstuv####,,,,pqqsuv##ssss##,,pqqstv######,,opqsst##########,,opprssoppq~qsprpqpqpqoppr~pq~op~op~op}~opbcm|}{|{{{{z{y{y{xzxyxyxxxxvxuvuvtvtvtutustqsqsprprpqpqpqopopopopWXi00$ W$F%@$\%d%(R/home/andy/Project/Objective-C/TalkSoup/Output/GNUstepOutput/Images/general_prefs.tiffCreated with The GIMPHHTalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Images/general_prefs.xcf000066400000000000000000000162621067163320700263720ustar00rootroot00000000000000gimp xcf file00BB/ gimp-commentCreated with The GIMPUnnamedwAIڛA5AATA2ATA2ARBARBATBA/ B*ABABAA6AA6AhA7YAS@·dAr@A^O@̠ Empty PathsS gimp-commentCreated with The GIMPgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  I00Empty Layer#2     0000    00Empty Layer#1     0000ì&)-----,m(&&+,'&'##((##&(()(-(-(-(-(-(,###(##&#,#&#,+#,,#,'##,&##,'#,##((##&(()(-(-(-(-(-(,###(##&#,#&#,+#,,#,'##,&##,'#,~&??#??!?? ??!????#???%??&????????????&????&?????n???"??"?? ??? ??!??#??%??'Q00 Empty Layer     K00_00o    罹 触  🞞   񟞝젟 렟       𠟞   򙘗 W      罹            󟞞   񚙘W             W                                V00Empty Layer#4     0000   W" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "&00Background copy     00 000.----------------------------------------------0.----------------------------------------------0.---------------------------------------------- 00 Background     0000   TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/000077500000000000000000000000001067163320700225335ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/HelperExecutor.h000066400000000000000000000026371067163320700256520ustar00rootroot00000000000000/*************************************************************************** HelperExecutor.h ------------------- begin : Thu Jun 9 19:12:10 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef HELPER_EXECUTOR_H #define HELPER_EXECUTOR_H #import @class NSConnection, NSString, NSMutableArray, NSArray; @interface HelperExecutor : NSObject { NSString *notificationName; NSMutableArray *executingTasks; NSString *helper; } - initWithHelperName: (NSString *)aName identifier: (NSString *)aIdentifier; - (void)runWithArguments: (NSArray *)aArgs; - (void)cleanup; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/HelperExecutor.m000066400000000000000000000064301067163320700256520ustar00rootroot00000000000000/*************************************************************************** HelperExecutor.m ------------------- begin : Thu Jun 9 19:12:10 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/HelperExecutor.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import @interface HelperExecutor (PrivateMethods) - (void)taskEnded: (NSNotification *)aNotification; @end @implementation HelperExecutor - initWithHelperName: (NSString *)aName identifier: (NSString *)aIdentifier { NSBundle *aBundle; NSFileManager *aManager; if (!(self = [super init])) return nil; aBundle = [NSBundle bundleForClass: [_GS_ class]]; helper = [[aBundle resourcePath] stringByAppendingPathComponent: @"Tools"]; helper = [helper stringByAppendingPathComponent: aName]; aManager = [NSFileManager defaultManager]; if (!helper || ![aManager isExecutableFileAtPath: helper]) { NSLog(@"%@ is not executable", helper); [super dealloc]; return nil; } RETAIN(helper); executingTasks = [NSMutableArray new]; notificationName = RETAIN(aIdentifier); [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskEnded:) name: NSTaskDidTerminateNotification object: nil]; return self; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(executingTasks); RELEASE(notificationName); RELEASE(helper); [super dealloc]; } - (void)runWithArguments: (NSArray *)aArgs { NSMutableArray *args; NSTask *aTask; if (!aArgs) aArgs = AUTORELEASE([NSArray new]); args = [NSMutableArray new]; [args addObject: notificationName]; [args addObjectsFromArray: aArgs]; aTask = AUTORELEASE([NSTask new]); [aTask setLaunchPath: helper]; [aTask setArguments: args]; [executingTasks addObject: aTask]; [aTask launch]; } - (void)cleanup { NSEnumerator *iter; id object; iter = [[NSArray arrayWithArray: executingTasks] objectEnumerator]; while ((object = [iter nextObject])) { [object terminate]; } } @end @implementation HelperExecutor (PrivateMethods) - (void)taskEnded: (NSNotification *)aNotification { id task = [aNotification object]; if (![executingTasks containsObject: task]) return; [executingTasks removeObject: task]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/LookedUpHost.h000066400000000000000000000027761067163320700253000ustar00rootroot00000000000000/*************************************************************************** LookedUpHost.h ------------------- begin : Thu Jun 9 19:12:10 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class LookedUpHost; #ifndef LOOKED_UP_HOST_H #define LOOKED_UP_HOST_H #import /* Basically this class is a thin wrapper around NSHost that allows us * to specify that we already know the host and the address, but we * just want the NSHost interface. */ @class NSString; @interface NSHost (LookedUpHostAdditions) + (NSHost *)hostWithName: (NSString *)aName address: (NSString *)aAddress; @end @interface LookedUpHost : NSHost { NSString *hostName; NSString *address; } @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/LookedUpHost.m000066400000000000000000000053071067163320700252760ustar00rootroot00000000000000/*************************************************************************** LookedUpHost.m ------------------- begin : Thu Jun 9 19:12:10 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/LookedUpHost.h" #import #import #import #import @interface LookedUpHost (PrivateMethods) - (void)setName: (NSString *)aName; - (void)setAddress: (NSString *)aAddress; @end @implementation LookedUpHost (PrivateMethods) - (void)setName: (NSString *)aName { ASSIGN(hostName, aName); } - (void)setAddress: (NSString *)aAddress { ASSIGN(address, aAddress); } @end @implementation NSHost (LookedUpHostAdditions) + (NSHost *)hostWithName: (NSString *)aName address: (NSString *)aAddress { id host; if (!aName && !aAddress) return nil; if (!aName) { return [NSHost hostWithAddress: aAddress]; } if (!aAddress) { return [NSHost hostWithName: aName]; } host = [LookedUpHost new]; AUTORELEASE(host); [host setName: aName]; [host setAddress: aAddress]; return host; } @end @implementation LookedUpHost - init { /* Bypass parents init. Ugly, but it should work. */ IMP objInit; objInit = [NSObject instanceMethodForSelector: _cmd]; if (!(self = objInit(self, _cmd))) return nil; return self; } - (NSString *)address { return address; } - (NSArray *)addresses { return [NSArray arrayWithObject: address]; } - (NSString *)name { return hostName; } - (NSArray *)names { return [NSArray arrayWithObject: hostName]; } - (BOOL)isEqualToHost: (NSHost *)aHost { return [[aHost addresses] containsObject: address]; } - (void)dealloc { /* Bypass parents dealloc. Ugly, but it should work. */ void (*objDealloc)(id, SEL); objDealloc = (void (*)(id, SEL))[NSObject instanceMethodForSelector: _cmd]; RELEASE(address); RELEASE(hostName); objDealloc(self, _cmd); if (1) return; [super dealloc]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSAttributedStringAdditions.h000066400000000000000000000035101067163320700303010ustar00rootroot00000000000000/*************************************************************************** NSAttributedStringAdditions.h ------------------- begin : Mon Apr 28 06:48:06 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef OUTPUT_NS_ATTRIBUTED_STRING_ADDITIONS_H #define OUTPUT_NS_ATTRIBUTED_STRING_ADDITIONS_H #import extern NSString *TypeOfColor; extern NSString *InverseTypeForeground; extern NSString *InverseTypeBackground; @class NSFont, NSColor; @interface NSAttributedString (OutputAdditions) - (NSMutableAttributedString *)substituteColorCodesIntoAttributedStringWithFont: (NSFont *)aFont withBoldFont: (NSFont *)aBoldFont; @end @interface NSMutableAttributedString (OutputAdditions2) + (NSMutableAttributedString *)attributedStringWithGNUstepOutputPreferences: (id)aString; - (void)updateAttributedStringForGNUstepOutputPreferences: (NSString *)aKey; - (void)chopNumberOfLines: (int)numLines; - (void)updateTimestamps; - (void)addTimestampsAndHandleFirst: (BOOL)handleFirst; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSAttributedStringAdditions.m000066400000000000000000000340041067163320700303100ustar00rootroot00000000000000/*************************************************************************** NSAttributedStringAdditions.m ------------------- begin : Mon Apr 28 06:48:06 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/NSAttributedStringAdditions.h" #import "Misc/NSColorAdditions.h" #import "Controllers/Preferences/FontPreferencesController.h" #import "Controllers/Preferences/ColorPreferencesController.h" #import "Controllers/Preferences/GeneralPreferencesController.h" #import "Controllers/Preferences/PreferencesController.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *TypeOfColor = @"TypeOfColor"; NSString *InverseTypeForeground = @"InverseTypeForeground"; NSString *InverseTypeBackground = @"InverseTypeBackground"; @implementation NSAttributedString (OutputAdditions) - (NSMutableAttributedString *)substituteColorCodesIntoAttributedStringWithFont: (NSFont *)chatFont withBoldFont: (NSFont *)aBoldFont { NSMutableAttributedString *a = AUTORELEASE([NSMutableAttributedString new]); NSRange all = { 0 }; NSRange work = { 0 }; int len = [self length]; NSMutableDictionary *dict; id obj; id fg; id bg; all.length = len; while (all.length > 0) { dict = [NSMutableDictionary dictionaryWithDictionary: [self attributesAtIndex: all.location longestEffectiveRange: &work inRange: all]]; fg = NSForegroundColorAttributeName; bg = NSBackgroundColorAttributeName; if ([dict objectForKey: IRCReverse]) { fg = NSBackgroundColorAttributeName; bg = NSForegroundColorAttributeName; } if ((obj = [dict objectForKey: IRCColor])) { if (![dict objectForKey: fg]) { id temp; temp = [NSColor colorFromIRCString: obj]; if (temp) { [dict setObject: temp forKey: fg]; } } } if ((obj = [dict objectForKey: IRCBackgroundColor])) { if (![dict objectForKey: bg]) { id temp; temp = [NSColor colorFromIRCString: obj]; if (temp) { [dict setObject: temp forKey: bg]; } } } if ([dict objectForKey: IRCUnderline]) { [dict setObject: [NSNumber numberWithInt: NSSingleUnderlineStyle] forKey: NSUnderlineStyleAttributeName]; } if ([dict objectForKey: IRCBold]) { [dict setObject: aBoldFont forKey: NSFontAttributeName]; } else { [dict setObject: chatFont forKey: NSFontAttributeName]; } [a appendAttributedString: AUTORELEASE([[NSAttributedString alloc] initWithString: [[self string] substringWithRange: work] attributes: dict])]; all.location = work.location + work.length; all.length = len - all.location; } return a; } @end #define COLOR_FOR_KEY(_aKey) \ [NSColor colorFromEncodedData: [_PREFS_ preferenceForKey: (_aKey)]] @implementation NSMutableAttributedString (OutputAdditions2) - (void)addTimestampsAndHandleFirst: (BOOL)handleFirst { NSString *string; NSRange allRange, thisRange; id date; unsigned all; string = [self string]; allRange = NSMakeRange(0, [string length]); date = [NSDate date]; thisRange.location = 0; thisRange.length = 1; while (1) { string = [self string]; all = [string length]; if (!handleFirst) { thisRange = [string rangeOfString: @"\n" options: 0 range: allRange]; if (thisRange.location == NSNotFound) break; thisRange.location += 1; } else { handleFirst = NO; } allRange.location = thisRange.location; allRange.length = all - allRange.location; if (allRange.length == 0) break; [self beginEditing]; [self addAttribute: @"Timestamp" value: date range: NSMakeRange(allRange.location, 1)]; [self endEditing]; } [self updateTimestamps]; } - (void)updateTimestamps { NSRange curRange; NSRange allRange; NSString *string = nil; unsigned len; NSRange lastRange; NSDictionary *lastAttributes = nil; NSDictionary *thisAttributes; NSDate *date; NSDate *lastDate = nil; NSAttributedString *lastFmt = nil; NSFont *chatFont; unsigned lastFmtLength = 0; BOOL timestampEnabled = [GeneralPreferencesController timestampEnabled]; NSString *timestampFormat; timestampFormat = [_PREFS_ preferenceForKey: GNUstepOutputTimestampFormat]; string = [self string]; len = [string length]; if (!len) return; allRange = NSMakeRange(0, len); chatFont = RETAIN([FontPreferencesController getFontFromPreferences: GNUstepOutputChatFont]); thisAttributes = [self attributesAtIndex: 0 longestEffectiveRange: &curRange inRange: allRange]; lastRange = curRange; while (1) { if ((date = [thisAttributes objectForKey: @"Timestamp"])) { [self beginEditing]; if (lastAttributes && [lastAttributes objectForKey: @"TimestampFormat"]) { [self deleteCharactersInRange: lastRange]; curRange.location -= lastRange.length; len -= lastRange.length; } if (timestampEnabled) { if (![lastDate isEqual: date]) { NSString *aFmt; aFmt = [date descriptionWithCalendarFormat: timestampFormat timeZone: nil locale: nil]; lastFmt = AUTORELEASE(([[NSAttributedString alloc] initWithString: aFmt attributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSNull null], @"TimestampFormat", chatFont, NSFontAttributeName, nil]])); lastFmtLength = [[lastFmt string] length]; } lastDate = date; [self insertAttributedString: lastFmt atIndex: curRange.location]; curRange.location += lastFmtLength; len += lastFmtLength; } [self endEditing]; } if ((curRange.location + curRange.length) >= len) break; lastAttributes = thisAttributes; lastRange = curRange; allRange.length = len; thisAttributes = [self attributesAtIndex: (curRange.location + curRange.length) longestEffectiveRange: &curRange inRange: allRange]; } RELEASE(chatFont); } + (NSMutableAttributedString *)attributedStringWithGNUstepOutputPreferences: (id)aString { NSMutableAttributedString *aResult; NSFont *chatFont, *boldFont; NSRange aRange; NSMutableParagraphStyle *paraStyle; float wIndentF; id object1, object2; chatFont = RETAIN([FontPreferencesController getFontFromPreferences: GNUstepOutputChatFont]); boldFont = RETAIN([FontPreferencesController getFontFromPreferences: GNUstepOutputBoldChatFont]); if ([aString isKindOfClass: [NSAttributedString class]]) { aRange = NSMakeRange(0, [aString length]); // Change those attributes used by the underlying TalkSoup system into attributes // used by AppKit aResult = [aString substituteColorCodesIntoAttributedStringWithFont: chatFont withBoldFont: boldFont]; // NOTE: a large part of the code below sets an attribute called 'TypeOfColor' to the // GNUstepOutput type of color. This is used to more accurately change the colors should // the colors change at a later time. // Set the InverseTypeForeground to non-nil for ones without foreground already set // Set the foreground to the default background color when the foreground color // does not already have a color and IRCReverse is set object1 = [[NSArray alloc] initWithObjects: [NSNull null], IRCReverseValue, nil]; object2 = [[NSArray alloc] initWithObjects: NSForegroundColorAttributeName, IRCReverse, nil]; [aResult setAttribute: InverseTypeForeground toValue: @"" inRangesWithAttributes: object2 matchingValues: object1 withRange: aRange]; RELEASE(object2); [aResult setAttribute: NSForegroundColorAttributeName toValue: COLOR_FOR_KEY(GNUstepOutputBackgroundColor) inRangesWithAttribute: InverseTypeForeground matchingValue: @"" withRange: aRange]; // Set the InverseTypeBackground to non-nil for ones without background already set // Set the background to the default foreground color when the background color // does not already have a color and IRCReverse is set. object2 = [[NSArray alloc] initWithObjects: NSBackgroundColorAttributeName, IRCReverse, nil]; [aResult setAttribute: InverseTypeBackground toValue: @"" inRangesWithAttributes: object2 matchingValues: object1 withRange: aRange]; RELEASE(object1); RELEASE(object2); [aResult setAttribute: NSBackgroundColorAttributeName toValue: COLOR_FOR_KEY(GNUstepOutputTextColor) inRangesWithAttribute: InverseTypeBackground matchingValue: @"" withRange: aRange]; // When NSForegroundColorAttribute is not set, set the type of color to foreground color object1 = [[NSArray alloc] initWithObjects: NSForegroundColorAttributeName, TypeOfColor, nil]; object2 = [[NSArray alloc] initWithObjects: [NSNull null], [NSNull null], nil]; [aResult setAttribute: TypeOfColor toValue: GNUstepOutputTextColor inRangesWithAttributes: object1 matchingValues: object2 withRange: aRange]; RELEASE(object1); RELEASE(object2); // and then set the actual color to the foreground color [aResult setAttribute: NSForegroundColorAttributeName toValue: COLOR_FOR_KEY(GNUstepOutputTextColor) inRangesWithAttribute: TypeOfColor matchingValue: GNUstepOutputTextColor withRange: aRange]; // set the other bracket colors type of color attribute [aResult setAttribute: NSForegroundColorAttributeName toValue: COLOR_FOR_KEY(GNUstepOutputOtherBracketColor) inRangesWithAttribute: TypeOfColor matchingValue: GNUstepOutputOtherBracketColor withRange: aRange]; // set the personal bracket colors type of color attribute [aResult setAttribute: NSForegroundColorAttributeName toValue: COLOR_FOR_KEY(GNUstepOutputPersonalBracketColor) inRangesWithAttribute: TypeOfColor matchingValue: GNUstepOutputPersonalBracketColor withRange: aRange]; } else { // just make it all the foreground color if they just passed in a regular string aRange = NSMakeRange(0, [[aString description] length]); aResult = AUTORELEASE(([[NSMutableAttributedString alloc] initWithString: [aString description] attributes: [NSDictionary dictionaryWithObjectsAndKeys: chatFont, NSFontAttributeName, TypeOfColor, GNUstepOutputTextColor, COLOR_FOR_KEY(GNUstepOutputTextColor), NSForegroundColorAttributeName, nil]])); } wIndentF = [[_PREFS_ preferenceForKey: GNUstepOutputWrapIndent] floatValue]; paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; [paraStyle setHeadIndent: wIndentF]; [aResult addAttribute: NSParagraphStyleAttributeName value: paraStyle range: aRange]; RELEASE(chatFont); RELEASE(boldFont); return aResult; } - (void)updateAttributedStringForGNUstepOutputPreferences: (NSString *)aKey { id font, color; [self beginEditing]; if ([aKey isEqualToString: GNUstepOutputChatFont]) { font = [FontPreferencesController getFontFromPreferences: aKey]; [self setAttribute: NSFontAttributeName toValue: font inRangesWithAttribute: IRCBold matchingValue: nil withRange: NSMakeRange(0, [self length])]; } else if ([aKey isEqualToString: GNUstepOutputBoldChatFont]) { font = [FontPreferencesController getFontFromPreferences: aKey]; [self setAttribute: NSFontAttributeName toValue: font inRangesWithAttribute: IRCBold matchingValue: IRCBoldValue withRange: NSMakeRange(0, [self length])]; } else if ([aKey isEqualToString: GNUstepOutputWrapIndent]) { NSRange aRange; float wIndentF; NSMutableParagraphStyle *paraStyle; aRange = NSMakeRange(0, [self length]); wIndentF = [[_PREFS_ preferenceForKey: GNUstepOutputWrapIndent] floatValue]; paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; [paraStyle setHeadIndent: wIndentF]; [self addAttribute: NSParagraphStyleAttributeName value: paraStyle range: aRange]; } else if ([aKey isEqualToString: GNUstepOutputTimestampFormat]) { [self updateTimestamps]; } else if ((color = COLOR_FOR_KEY(aKey))) { [self setAttribute: NSForegroundColorAttributeName toValue: color inRangesWithAttribute: TypeOfColor matchingValue: aKey withRange: NSMakeRange(0, [self length])]; if ([aKey isEqualToString: GNUstepOutputBackgroundColor]) { [self setAttribute: NSForegroundColorAttributeName toValue: color inRangesWithAttribute: InverseTypeForeground matchingValue: @"" withRange: NSMakeRange(0, [self length])]; } else if ([aKey isEqualToString: GNUstepOutputTextColor]) { [self setAttribute: NSBackgroundColorAttributeName toValue: color inRangesWithAttribute: InverseTypeBackground matchingValue: @"" withRange: NSMakeRange(0, [self length])]; } } [self endEditing]; } - (void)chopNumberOfLines: (int)numLines { NSRange aRange; NSString *text; int start, len; text = [self string]; len = [text length]; start = 0; while (numLines > 0) { aRange = [text rangeOfString: @"\n" options: 0 range: NSMakeRange(start, len - start)]; if (aRange.location == NSNotFound) return; start = aRange.location + aRange.length; numLines--; } [self beginEditing]; [self deleteCharactersInRange: NSMakeRange(0, start)]; [self endEditing]; } @end #undef COLOR_FOR_KEY TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSColorAdditions.h000066400000000000000000000024341067163320700260650ustar00rootroot00000000000000/*************************************************************************** NSColorAdditions.h ------------------- begin : Mon Apr 7 20:52:48 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef NS_COLOR_ADDITIONS_H #define NS_COLOR_ADDITIONS_H #import @interface NSColor (EncodingAdditions) + (NSString *)commonColorSpaceName; + colorFromEncodedData: (id)aData; + (NSColor *)colorFromIRCString: (NSString *)aString; - (id)encodeToData; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSColorAdditions.m000066400000000000000000000106541067163320700260750ustar00rootroot00000000000000/*************************************************************************** NSColorAdditions.m ------------------- begin : Mon Apr 7 20:52:48 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/NSColorAdditions.h" #import #import #import #import #import #import #import #import static NSColor *common_color = nil; #define COL_CON 1000 static inline NSColor *map_color(NSString *aName) { static NSDictionary *colors = nil; if (!colors) { colors = RETAIN(([NSDictionary dictionaryWithObjectsAndKeys: [NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 1.0], IRCColorWhite, [NSColor colorWithCalibratedRed: 0.0 green: 0.0 blue: 0.0 alpha: 1.0], IRCColorBlack, [NSColor colorWithCalibratedRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0], IRCColorBlue, [NSColor colorWithCalibratedRed: 0.0 green: 1.0 blue: 0.0 alpha: 1.0], IRCColorGreen, [NSColor colorWithCalibratedRed: 1.0 green: 0.0 blue: 0.0 alpha: 1.0], IRCColorRed, [NSColor colorWithCalibratedRed: 0.5 green: 0.0 blue: 0.0 alpha: 1.0], IRCColorMaroon, [NSColor colorWithCalibratedRed: 0.5 green: 0.0 blue: 0.5 alpha: 1.0], IRCColorMagenta, [NSColor colorWithCalibratedRed: 1.0 green: 0.7 blue: 0.0 alpha: 1.0], IRCColorOrange, [NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 0.0 alpha: 1.0], IRCColorYellow, [NSColor colorWithCalibratedRed: 0.6 green: 0.9 blue: 0.6 alpha: 1.0], IRCColorLightGreen, [NSColor colorWithCalibratedRed: 0.0 green: 0.5 blue: 0.5 alpha: 1.0], IRCColorTeal, [NSColor colorWithCalibratedRed: 0.5 green: 1.0 blue: 1.0 alpha: 1.0], IRCColorLightCyan, [NSColor colorWithCalibratedRed: 0.7 green: 0.8 blue: 0.9 alpha: 1.0], IRCColorLightBlue, [NSColor colorWithCalibratedRed: 1.0 green: 0.75 blue: 0.75 alpha: 1.0], IRCColorLightMagenta, [NSColor colorWithCalibratedRed: 0.5 green: 0.5 blue: 0.5 alpha: 1.0], IRCColorGrey, [NSColor colorWithCalibratedRed: 0.8 green: 0.8 blue: 0.8 alpha: 1.0], IRCColorLightGrey, nil])); } if ([aName hasPrefix: IRCColorCustom]) { id scan; float r=0.0,g=0.0,b=0.0; int ri=0,gi=0,bi=0; scan = [NSScanner scannerWithString: aName]; [scan scanUpToCharactersFromSet: [NSCharacterSet whitespaceCharacterSet] intoString: 0]; [scan scanInt: &ri]; [scan scanInt: &gi]; [scan scanInt: &bi]; r = ri / (float)COL_CON; g = gi / (float)COL_CON; b = bi / (float)COL_CON; return [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0]; } return [colors objectForKey: aName]; } @implementation NSColor (EncodingAdditions) + (NSString *)commonColorSpaceName { if (!common_color) { common_color = RETAIN([NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 1.0]); } return [common_color colorSpaceName]; } + colorFromEncodedData: (id)aData { return map_color(aData); } + (NSColor *)colorFromIRCString: (NSString *)aString { return map_color(aString); } - (id)encodeToData { id color = [self colorUsingColorSpaceName: [NSColor commonColorSpaceName]]; return [NSString stringWithFormat: @"IRCColorCustom %d %d %d", (int)([color redComponent] * COL_CON), (int)([color greenComponent] * COL_CON), (int)([color blueComponent] * COL_CON)]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSObjectAdditions.h000066400000000000000000000023031067163320700262100ustar00rootroot00000000000000/*************************************************************************** NSObjectAdditions.h ------------------- begin : Fri Apr 11 15:10:32 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef NSOBJECT_ADDITIONS_H #define NSOBJECT_ADDITIONS_H #import @class NSArray; @interface NSObject (Introspection) + (NSArray *)methodsDefinedForClass; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSObjectAdditions.m000066400000000000000000000040221067163320700262150ustar00rootroot00000000000000/*************************************************************************** NSObjectAdditions.m ------------------- begin : Fri Apr 11 15:10:32 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/NSObjectAdditions.h" #import #import #import #import #import #ifdef __APPLE__ #include #endif @implementation NSObject (Introspection) + (NSArray *)methodsDefinedForClass { struct objc_method_list *list; #ifdef __APPLE__ void *iterator; #endif Class class; int z; int y; SEL sel; NSMutableArray *array = AUTORELEASE([NSMutableArray new]); class = [self class]; #ifdef __APPLE__ iterator = 0; while ((list = class_nextMethodList(class, &iterator))) { #else for (list = class->methods; list != NULL; list=list->method_next) { #endif y = list->method_count; for (z = 0; z < y; z++) { sel = list->method_list[z].method_name; #ifdef __APPLE__ [array addObject: AUTORELEASE([[NSString alloc] initWithUTF8String: (char *)sel])]; #else [array addObject: NSStringFromSelector(sel)]; #endif } } return [NSArray arrayWithArray: array]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSViewAdditions.h000066400000000000000000000023711067163320700257210ustar00rootroot00000000000000/*************************************************************************** NSViewAdditions.h ------------------- begin : Thu Jul 14 02:37:49 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @class NSString; @interface NSView (View_Debugging_GNUstepOutput) - (NSString *)viewHierarchyWithFunction: (NSString *(*)(NSView *obj))descFunction; - (NSString *)viewHierarchy; - (NSString *)viewHierarchyWithResizingInfo; @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Misc/NSViewAdditions.m000066400000000000000000000070221067163320700257240ustar00rootroot00000000000000/*************************************************************************** NSViewAdditions.m ------------------- begin : Thu Jul 14 02:37:49 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Misc/NSViewAdditions.h" #import #import #import NSString *object_description(NSView *object) { return [object description]; } NSString *object_description_resizing(NSView *object) { NSMutableString *margins = AUTORELEASE([NSMutableString new]); unsigned *mask; NSString *str[] = { @"<", @">", @"v", @"^", @"=", @"|", nil }; unsigned masks[] = { NSViewMinXMargin, NSViewMaxXMargin, NSViewMinYMargin, NSViewMaxYMargin, NSViewWidthSizable, NSViewHeightSizable }; NSString **test; unsigned rlsmask; rlsmask = [object autoresizingMask]; for (test = str, mask = masks; *test != nil; test++, mask++) { if (*mask & rlsmask) [margins appendString: *test]; } return [NSString stringWithFormat: @"%@ MASK:%@ SUBVIEWS:%@", [object description], margins, ([object autoresizesSubviews]) ? @"YES" : @"NO"]; } NSString *build_hierarchy(NSString *(*desc)(NSView *object),id object, int level) { int x; NSMutableString *mystring; id o1; id views; NSEnumerator *iter; mystring = [NSMutableString new]; for (x = 0; x < level * 2; x++) { [mystring appendString: @"."]; } [mystring appendString: [NSString stringWithFormat: @"%@\n", desc(object)]]; views = [object subviews]; iter = [views objectEnumerator]; while ((o1 = [iter nextObject])) { [mystring appendString: build_hierarchy(desc, o1, level+1)]; } o1 = [NSString stringWithString: mystring]; RELEASE(mystring); return o1; } @implementation NSView (View_Debugging_GNUstepOutput) - (NSString *)viewHierarchy { return [self viewHierarchyWithFunction: object_description]; } - (NSString *)viewHierarchyWithResizingInfo { return [self viewHierarchyWithFunction: object_description_resizing]; } - (NSString *)viewHierarchyWithFunction: (NSString *(*)(NSView *obj))descFunction { NSMutableString *hierarchy = AUTORELEASE([NSMutableString new]); id temparray; NSEnumerator *iter; id object; unsigned index; object = self; [hierarchy setString: [NSString stringWithFormat: @"View Hierarchy for %@\n", [self description]]]; index = [hierarchy length]; do { [hierarchy insertString: [NSString stringWithFormat: @"%@\n", descFunction(object)] atIndex: index]; } while ((object != [object superview]) && (object = [object superview])); temparray = [self subviews]; iter = [temparray objectEnumerator]; while ((object = [iter nextObject])) { [hierarchy appendString: build_hierarchy(descFunction, object, 1)]; } return [hierarchy substringToIndex: [hierarchy length] - 1]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Models/000077500000000000000000000000001067163320700230635ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Models/Channel.h000066400000000000000000000051501067163320700246050ustar00rootroot00000000000000/*************************************************************************** Channel.h ------------------- begin : Tue Apr 8 17:15:55 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class Channel; #ifndef CHANNEL_H #define CHANNEL_H #import #import @class NSString, NSArray, NSMutableArray; @interface ChannelUser : NSObject { NSString *userName; NSString *lowerName; BOOL hasOps; BOOL hasVoice; id connection; } - initWithModifiedName: (NSString *)aName withConnectionController: aConnection; - copyWithZone: (NSZone *)aZone; - (NSString *)userName; - setUserName: (NSString *)aName; - (NSString *)formattedName; - (BOOL)isOperator; - setOperator: (BOOL)aOp; - (BOOL)isVoice; - setVoice: (BOOL)aVoice; @end extern const int ChannelUserOperator; extern const int ChannelUserVoice; @interface ChannelFormatter : NSFormatter @end @interface Channel : NSObject { NSString *identifier; NSMutableArray *userList; NSMutableArray *lowercaseList; NSMutableArray *tempList; BOOL resetFlag; NSString *topic; NSString *topicDate; NSString *topicAuthor; id connection; } - initWithIdentifier: (NSString *)aName withConnectionController: aConnection; - setTopic: (NSString *)aTopic; - (NSString *)topic; - setTopicAuthor: (NSString *)aTopicAuthor; - (NSString *)topicAuthor; - setTopicDate: (NSString *)aTopicDate; - (NSString *)topicDate; - setIdentifier: (NSString *)aName; - (NSString *)identifier; - sortUserList; - addUser: (NSString *)aString; - (BOOL)containsUser: aString; - removeUser: (NSString *)aString; - userRenamed: (NSString *)oldName to: (NSString *)newName; - (NSArray *)userList; - (ChannelUser *)userWithName: (NSString *)name; - addServerUserList: (NSString *)aString; - endServerUserList; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Models/Channel.m000066400000000000000000000166351067163320700246240ustar00rootroot00000000000000/*************************************************************************** Channel.m ------------------- begin : Tue Apr 8 17:15:55 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Models/Channel.h" #import "GNUstepOutput.h" #import #import #import #import #import #import #import @interface ChannelUser (PrivateMethods) - (NSString *)lowerName; @end @implementation ChannelUser (PrivateMethods) - (NSString *)lowerName { return lowerName; } @end @implementation ChannelUser - initWithModifiedName: (NSString *)aName withConnectionController: aConnection { if (!(self = [super init])) return nil; [self setUserName: aName]; connection = aConnection; return self; } - copyWithZone: (NSZone *)aZone { return [[ChannelUser allocWithZone: aZone] initWithModifiedName: [self formattedName] withConnectionController: connection]; } - (void)dealloc { DESTROY(userName); [super dealloc]; } - (NSString *)userName { return userName; } - (NSString *)formattedName { if (hasOps) { return [NSString stringWithFormat: @"@%@", userName]; } if (hasVoice) { return [NSString stringWithFormat: @"+%@", userName]; } return userName; } - setUserName: (NSString *)aName { if (aName == userName) return self; hasOps = hasVoice = NO; if ([aName hasPrefix: @"@"]) { hasOps = YES; aName = [aName substringFromIndex: 1]; } else if ([aName hasPrefix: @"+"]) { hasVoice = YES; aName = [aName substringFromIndex: 1]; } RELEASE(userName); userName = RETAIN(aName); RELEASE(lowerName); lowerName = RETAIN(GNUstepOutputLowercase(userName, connection)); return self; } - (BOOL)isOperator { return hasOps; } - setOperator: (BOOL)aOp { hasOps = aOp; return self; } - (BOOL)isVoice { return hasVoice; } - setVoice: (BOOL)aVoice { hasVoice = aVoice; return self; } - (NSComparisonResult)sortByName: (ChannelUser *)aUser { return [lowerName compare: [aUser lowerName]]; } @end @implementation ChannelFormatter - (NSString *)stringForObjectValue: (id)anObject { if (![anObject isKindOfClass: [ChannelUser class]]) return nil; return [anObject formattedName]; } - (BOOL)getObjectValue: (id *)obj forString: (NSString *)string errorDescription: (NSString **)error { *obj = AUTORELEASE([[Channel alloc] initWithModifiedName: string withConnectionController: nil]); return YES; } @end @interface Channel (TableViewDataSource) @end @implementation Channel - init { return [self initWithIdentifier: nil withConnectionController: nil]; } - initWithIdentifier: (NSString *)aName withConnectionController: aConnection; { if (!(self = [super init])) return nil; resetFlag = YES; tempList = [NSMutableArray new]; userList = [NSMutableArray new]; lowercaseList = [NSMutableArray new]; connection = aConnection; [self setIdentifier: aName]; return self; } - (void)dealloc { DESTROY(identifier); DESTROY(tempList); DESTROY(userList); DESTROY(lowercaseList); DESTROY(topic); DESTROY(topicAuthor); DESTROY(topicDate); [super dealloc]; } - setTopic: (NSString *)aTopic { if (topic == aTopic) return self; RELEASE(topic); topic = RETAIN(aTopic); return self; } - (NSString *)topic { return topic; } - setTopicAuthor: (NSString *)aTopicAuthor { if (topicAuthor == aTopicAuthor) return self; RELEASE(topicAuthor); topicAuthor = RETAIN(aTopicAuthor); return self; } - (NSString *)topicAuthor { return topicAuthor; } - setTopicDate: (NSString *)aTopicDate { if (topicDate == aTopicDate) return self; RELEASE(topicDate); topicDate = RETAIN(aTopicDate); return self; } - (NSString *)topicDate { return topicDate; } - setIdentifier: (NSString *)aIdentifier { if (aIdentifier == identifier) return self; RELEASE(identifier); identifier = RETAIN(aIdentifier); return self; } - (NSString *)identifier { return identifier; } - sortUserList { NSEnumerator *iter; id object; [userList sortUsingSelector: @selector(sortByName:)]; [lowercaseList removeAllObjects]; iter = [userList objectEnumerator]; while ((object = [iter nextObject])) { [lowercaseList addObject: GNUstepOutputLowercase([object userName], connection)]; } return self; } - addUser: (NSString *)aString { id user; user = AUTORELEASE([[ChannelUser alloc] initWithModifiedName: aString withConnectionController: connection]); [userList addObject: user]; [self sortUserList]; return self; } - (BOOL)containsUser: aString { return [lowercaseList containsObject: GNUstepOutputLowercase(aString, connection)]; } - removeUser: (NSString *)aString { int x = [lowercaseList indexOfObject: GNUstepOutputLowercase(aString, connection)]; if (x != NSNotFound) { [userList removeObjectAtIndex: x]; [lowercaseList removeObjectAtIndex: x]; } return self; } - userRenamed: (NSString *)oldName to: (NSString *)newName // Keeps mode in tact { BOOL hasVoice; BOOL hasOps; int index; index = [lowercaseList indexOfObject: GNUstepOutputLowercase(oldName, connection)]; if (index == NSNotFound) return self; hasVoice = [[userList objectAtIndex: index] isVoice]; hasOps = [[userList objectAtIndex: index] isOperator]; [self removeUser: oldName]; [self addUser: newName]; index = [lowercaseList indexOfObject: GNUstepOutputLowercase(newName, connection)]; if (index == NSNotFound) return self; [[userList objectAtIndex: index] setVoice: hasVoice]; [[userList objectAtIndex: index] setVoice: hasOps]; return self; } - (ChannelUser *)userWithName: (NSString *)name { int index; index = [lowercaseList indexOfObject: GNUstepOutputLowercase(name, connection)]; if (index == NSNotFound) return nil; return [userList objectAtIndex: index]; } - addServerUserList: (NSString *)aString { NSEnumerator *iter; NSArray *array = [aString componentsSeparatedByString: @" "]; id object; id user; iter = [array objectEnumerator]; while ((object = [iter nextObject])) { if ([object length] == 0) break; user = AUTORELEASE([[ChannelUser alloc] initWithModifiedName: object withConnectionController: connection]); [tempList addObject: user]; } return self; } - endServerUserList { [userList setArray: tempList]; [tempList removeAllObjects]; [self sortUserList]; return self; } - (NSArray *)userList { return [NSArray arrayWithArray: userList]; } @end @implementation Channel (TableViewDataSource) - (int)numberOfRowsInTableView: (NSTableView *)aTableView { return [userList count]; } - (id)tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { return [userList objectAtIndex: rowIndex]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/000077500000000000000000000000001067163320700227405ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/GNUmakefile000066400000000000000000000011001067163320700250020ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = exec_helper dns_helper TOOL_INSTALL_DIR = Tools ifeq ($(OBJC_RUNTIME_LIB), apple) exec_helper_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) dns_helper_BUNDLE_LIBS = -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else exec_helper_BUNDLE_LIBS = -lTalkSoupBundles dns_helper_BUNDLE_LIBS = -lTalkSoupBundles endif exec_helper_OBJC_FILES = exec_helper.m dns_helper_OBJC_FILES = dns_helper.m -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/tool.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/GNUmakefile.postamble000066400000000000000000000000341067163320700267740ustar00rootroot00000000000000after-clean:: rm -fr Tools TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/GNUmakefile.preamble000066400000000000000000000005521067163320700266020ustar00rootroot00000000000000ADDITIONAL_INCLUDE_DIRS += -I. -I../../.. ADDITIONAL_OBJCFLAGS += -Wall -Wno-protocol ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../../../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../../../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../../../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/dns_helper.m000066400000000000000000000046631067163320700252520ustar00rootroot00000000000000/*************************************************************************** dns_helper.m ------------------- begin : Wed Jun 8 20:55:48 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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 is a simple tool that handles the problem of doing dns lookups * without having to lock up the main application. */ #import #import #import #import #import #import #import #import #include int main(int argc, char **argv, char **env) { CREATE_AUTORELEASE_POOL(apr); NSString *notname, *regname, *address, *reverse, *hostname; NSHost *aHost, *aHost2; signal(SIGPIPE, SIG_IGN); if (argc < 4) return 1; regname = [NSString stringWithCString: argv[1]]; notname = [NSString stringWithCString: argv[2]]; hostname = [NSString stringWithCString: argv[3]]; NSLog(@"Performing DNS lookup for %@", hostname); aHost = [NSHost hostWithName: hostname]; address = [aHost address]; reverse = nil; if (address) { aHost2 = [NSHost hostWithAddress: address]; reverse = [aHost2 name]; } NSLog(@"DNS Lookup: host: %@ addr: %@ reverse: %@: ", hostname, address, reverse); [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] postNotificationName: notname object: regname userInfo: [NSDictionary dictionaryWithObjectsAndKeys: hostname, @"Hostname", address, @"Address", reverse, @"Reverse", nil] deliverImmediately: YES]; RELEASE(apr); return 0; } TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Tools/exec_helper.m000066400000000000000000000105221067163320700254010ustar00rootroot00000000000000/*************************************************************************** exec_helper.m ------------------- begin : Wed Jun 8 20:55:48 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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 is a simple tool that handles the problem of execing a separate task * without having to worry about the exec'd task hanging, using lots of * cpu, running forever, etc... */ #import #import #import #import #import #import #import #import #import #import #import #import #import #include static NSString *my_dest = nil; static NSString *my_regname = nil; static NSString *my_notname = nil; static NSString *getlp(NSString *command) { return @"/bin/sh"; } static NSArray *getargs(NSString *command) { return [NSArray arrayWithObjects: @"-c", command, nil]; } static void handle_lines(NSMutableString *str, int force_all) { NSMutableArray *lines; NSRange aRange; NSEnumerator *iter; NSString *output; lines = [NSMutableArray arrayWithArray: [str componentsSeparatedByString: @"\n"]]; if (!force_all) { aRange.location = 0; aRange.length = [str length] - [[lines objectAtIndex: [lines count] - 1] length]; [str deleteCharactersInRange: aRange]; [lines removeObjectAtIndex: [lines count] - 1]; } else { [str setString: @""]; } iter = [lines objectEnumerator]; while ((output = [iter nextObject])) { if ([output hasSuffix: @"\r"]) output = [output substringToIndex: [output length] - 1]; if ([output hasPrefix: @"\r"]) output = [output substringFromIndex: 1]; if ([output length] == 0) continue; [(NSDistributedNotificationCenter *)[NSDistributedNotificationCenter defaultCenter] postNotificationName: my_notname object: my_regname userInfo: [NSDictionary dictionaryWithObjectsAndKeys: output, @"Output", my_dest, @"Destination", nil] deliverImmediately: YES]; } } static void run_it(NSString *command) { NSTask *task; NSPipe *pipein; NSPipe *pipeout; NSFileHandle *fdin; NSFileHandle *fdout; NSData *newData; NSString *str; NSMutableString *sofar; task = AUTORELEASE([NSTask new]); pipein = [NSPipe pipe]; pipeout = [NSPipe pipe]; [task setStandardInput: pipein]; [task setStandardOutput: pipeout]; [task setStandardError: pipeout]; fdin = [pipein fileHandleForWriting]; fdout = [pipeout fileHandleForReading]; [task setLaunchPath: getlp(command)]; [task setArguments: getargs(command)]; [task launch]; [fdin closeFile]; sofar = [NSMutableString stringWithString: @""]; while (1) { newData = [fdout availableData]; if ([newData length] == 0) break; str = AUTORELEASE([[NSMutableString alloc] initWithData: newData encoding: NSUTF8StringEncoding]); if (!str) break; [sofar appendString: str]; handle_lines(sofar, 0); } handle_lines(sofar, 1); [task terminate]; } int main(int argc, char **argv, char **env) { CREATE_AUTORELEASE_POOL(apr); NSString *command; signal(SIGPIPE, SIG_IGN); if (argc < 4) return 1; my_regname = [NSString stringWithCString: argv[1]]; my_notname = [NSString stringWithCString: argv[2]]; command = [NSString stringWithCString: argv[3]]; if (argc >= 5) my_dest = [NSString stringWithCString: argv[4]]; run_it(command); RELEASE(apr); return 0; } TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/000077500000000000000000000000001067163320700227355ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/AttributedTabViewItem.h000066400000000000000000000026771067163320700273320ustar00rootroot00000000000000/*************************************************************************** AttributedTabViewItem.h ------------------- begin : Thu Dec 5 00:25:40 CST 2002 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class AttributedTabViewItem; #ifndef ATTRIBUTED_TAB_VIEW_ITEM_H #define ATTRIBUTED_TAB_VIEW_ITEM_H #import @class NSAttributedString, NSColor, NSMutableAttributedString; @interface AttributedTabViewItem : NSTabViewItem { NSMutableAttributedString *attributedLabel; } - setLabelColor: (NSColor *)aColor; - setAttributedLabel: (NSAttributedString *)label; - (NSAttributedString *)attributedLabel; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/AttributedTabViewItem.m000066400000000000000000000052361067163320700273310ustar00rootroot00000000000000/*************************************************************************** AttributedTabViewItem.m ------------------- begin : Thu Dec 5 00:25:40 CST 2002 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/AttributedTabViewItem.h" #import #import #import #import #import #import #import @implementation AttributedTabViewItem - (void)dealloc { DESTROY(attributedLabel); [super dealloc]; } - (void)drawLabel: (BOOL)shouldTruncateLabel inRect: (NSRect)tabRect { id string; string = RETAIN([self label]); [self setLabel: @""]; [super drawLabel: shouldTruncateLabel inRect: tabRect]; [self setLabel: string]; RELEASE(string); [attributedLabel drawInRect: tabRect]; } - setLabelColor: (NSColor *)aColor { if (!aColor) { [attributedLabel removeAttribute: NSForegroundColorAttributeName range: NSMakeRange(0, [attributedLabel length])]; [[self tabView] setNeedsDisplay: YES]; return self; } [attributedLabel addAttribute: NSForegroundColorAttributeName value: aColor range: NSMakeRange(0, [attributedLabel length])]; [[self tabView] setNeedsDisplay: YES]; return self; } - setAttributedLabel: (NSAttributedString *)aString { if (!aString) return self; RELEASE(attributedLabel); attributedLabel = [[NSMutableAttributedString alloc] initWithAttributedString: aString]; [attributedLabel addAttribute: NSFontAttributeName value: [[self tabView] font] range: NSMakeRange(0, [attributedLabel length])]; [self setLabel: [attributedLabel string]]; [[self tabView] setNeedsDisplay: YES]; return self; } - (NSAttributedString *)attributedLabel { return AUTORELEASE([[NSAttributedString alloc] initWithAttributedString: attributedLabel]); } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/FocusNotificationTextView.h000066400000000000000000000024761067163320700302450ustar00rootroot00000000000000/*************************************************************************** FocusNotificationTextView.h ------------------- begin : Mon Jun 27 23:53:30 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/KeyTextView.h" @class FocusNotificationTextView; @protocol FocusNotificationTextViewInformalProtocol - (void)textViewTookFocus: (FocusNotificationTextView *)aTextView; - (void)textViewResignedFocus: (FocusNotificationTextView *)aTextView; @end @interface FocusNotificationTextView : KeyTextView @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/FocusNotificationTextView.m000066400000000000000000000031571067163320700302470ustar00rootroot00000000000000/*************************************************************************** FocusNotificationTextView.m ------------------- begin : Mon Jun 27 23:53:30 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/FocusNotificationTextView.h" @implementation FocusNotificationTextView - (BOOL)resignFirstResponder { id delegate; if (![super resignFirstResponder]) return NO; delegate = [self delegate]; if (delegate && [delegate respondsToSelector: @selector(textViewResignedFocus:)]) { [delegate textViewResignedFocus: self]; } return YES; } - (BOOL)becomeFirstResponder { id delegate; if (![super becomeFirstResponder]) return NO; delegate = [self delegate]; if (delegate && [delegate respondsToSelector: @selector(textViewTookFocus:)]) { [delegate textViewTookFocus: self]; } return YES; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/InputControllerTextView.h000066400000000000000000000027321067163320700277550ustar00rootroot00000000000000/*************************************************************************** InputControllerTextView.h ------------------- begin : Wed Jul 13 01:02:02 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class InputControllerTextView; #import "Views/FocusNotificationTextView.h" @class NSString; /** * This is used as the main input text view. It does not allow * returns or enters to make it into the textview at all (except * possibly programmatically). It will trigger an event for each * return while properly inserting the correct amount of text. */ @interface InputControllerTextView : FocusNotificationTextView { } - (void)insertText: (NSString *)someText; @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/InputControllerTextView.m000066400000000000000000000062001067163320700277540ustar00rootroot00000000000000/*************************************************************************** InputControllerTextView.m ------------------- begin : Wed Jul 13 01:02:02 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/InputControllerTextView.h" #import #import #import #import #import #import #import static NSCharacterSet *newline_set = nil; static NSEvent *newline_event = nil; @implementation InputControllerTextView + (void)initialize { unichar enters[] = { NSEnterCharacter, NSNewlineCharacter, NSCarriageReturnCharacter }; if (newline_set) return; newline_set = RETAIN([NSCharacterSet characterSetWithCharactersInString: [NSString stringWithCharacters: enters length: 3]]); newline_event = RETAIN([NSEvent keyEventWithType: NSKeyDown location: NSMakePoint(0, 0) modifierFlags: 0 timestamp: 1 windowNumber: 1 context: nil characters: [NSString stringWithCharacters: enters length: 1] charactersIgnoringModifiers: [NSString stringWithCharacters: enters length: 1] isARepeat: NO keyCode: 0xBEEF]); } - (void)insertText: (NSString *)someText { NSMutableArray *components = [NSMutableArray new]; NSRange aRange; unsigned length; NSEnumerator *iter; NSString *arg; length = [someText length]; aRange.length = length; aRange.location = 0; while (aRange.length > 0) { NSRange thisRange; thisRange = [someText rangeOfCharacterFromSet: newline_set options: 0 range: aRange]; if (thisRange.location == NSNotFound) break; [components addObject: [someText substringWithRange: NSMakeRange(aRange.location, thisRange.location - aRange.location)]]; aRange.location = thisRange.location + thisRange.length; aRange.length = length - aRange.location; } iter = [components objectEnumerator]; while ((arg = [iter nextObject])) { BOOL (*function)(id, SEL, NSEvent *, id); if ([arg length]) [super insertText: arg]; if (!keyTarget || !keyAction) { continue; } function = (BOOL (*)(id, SEL, NSEvent *, id)) [keyTarget methodForSelector: keyAction]; if (function) { function(keyTarget, keyAction, newline_event, self); } } if (aRange.length) [super insertText: [someText substringWithRange: aRange]]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/KeyTextView.h000066400000000000000000000024361067163320700253430ustar00rootroot00000000000000/*************************************************************************** KeyTextView.h ------------------- begin : Fri Apr 11 14:14:45 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class KeyTextView; #ifndef KEY_TEXT_VIEW_H #define KEY_TEXT_VIEW_H #import @interface KeyTextView : NSTextView { id keyTarget; SEL keyAction; } - setKeyTarget: (id)aTarget; - setKeyAction: (SEL)aSel; - (void)setStringValue: (NSString *)aValue; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/KeyTextView.m000066400000000000000000000035631067163320700253520ustar00rootroot00000000000000/*************************************************************************** KeyTextView.m ------------------- begin : Fri Apr 11 14:14:45 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/KeyTextView.h" #import #import #import #import @implementation KeyTextView - setKeyTarget: (id)aTarget { keyTarget = aTarget; return self; }; - setKeyAction: (SEL)aSel { keyAction = aSel; return self; } - (void)keyDown: (NSEvent *)theEvent { BOOL (*function)(id, SEL, NSEvent *, id); if (!keyTarget || !keyAction) { [super keyDown: theEvent]; return; } function = (BOOL (*)(id, SEL, NSEvent *, id)) [keyTarget methodForSelector: keyAction]; if (function) { if ((function(keyTarget, keyAction, theEvent, self))) [super keyDown: theEvent]; } else { [super keyDown: theEvent]; } } - (void)setStringValue: (NSString *)aValue { [self setString: [NSString stringWithString: aValue]]; [self setSelectedRange: NSMakeRange([aValue length], 0)]; } @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/ScrollingTextView.h000066400000000000000000000021601067163320700265410ustar00rootroot00000000000000/*************************************************************************** ScrollingTextView.h ------------------- begin : Tue Nov 5 22:24:03 CST 2002 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/KeyTextView.h" @interface ScrollingTextView : KeyTextView - (void)pageUp; - (void)pageDown; @end TalkSoup-1.0alpha-32-g55b4d4e/Output/GNUstepOutput/Views/ScrollingTextView.m000066400000000000000000000046071067163320700265560ustar00rootroot00000000000000/*************************************************************************** ScrollingTextView.m ------------------- begin : Tue Nov 5 22:24:03 CST 2002 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Views/ScrollingTextView.h" #import #import #import #import #import #include @implementation ScrollingTextView - (void)pageUp { NSRect vis = [[[self enclosingScrollView] contentView] documentVisibleRect]; unsigned int y; y = NSMinY(vis); y = (y < vis.size.height) ? 0 : y - vis.size.height; [self scrollPoint: NSMakePoint(0, y)]; } - (void)pageDown { NSRect vis = [[[self enclosingScrollView] contentView] documentVisibleRect]; unsigned int max = NSMaxY([self frame]); unsigned int y; y = NSMinY(vis); y = ((y + vis.size.height) > max) ? max : y + vis.size.height; [self scrollPoint: NSMakePoint(0, y)]; } - (void)setFrame: (NSRect)frameRect { BOOL scroll = NO; if (fabs(NSMaxY([[[self enclosingScrollView] contentView] documentVisibleRect]) - NSMaxY([self frame])) < 5) { scroll = YES; } [super setFrame: frameRect]; if (scroll) { [self scrollPoint: NSMakePoint(0, NSMaxY([self frame]))]; } } - (void)setFrameSize: (NSSize)frameSize { BOOL scroll = NO; if (fabs(NSMaxY([[[self enclosingScrollView] contentView] bounds]) - NSMaxY([self frame])) < 5) { scroll = YES; } [super setFrameSize: frameSize]; if (scroll) { [self scrollPoint: NSMakePoint(0, NSMaxY([self frame]))]; } } @end TalkSoup-1.0alpha-32-g55b4d4e/README000066400000000000000000000251101067163320700164510ustar00rootroot00000000000000TalkSoup is a fully-featured IRC client written with the GNUstep framework =============================================================================== Copyright (C) 2003 Andy Ruder TalkSoup 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 Comments are welcome. =============================================================================== **************************************************************** * netclasses MUST be installed before installation of TalkSoup * **************************************************************** **** Please see README.osx for instructions dealing with OS X compilation **** ============================ Compilation/Installation/Use ============================ 1. Compile and install TalkSoup andy ~/TalkSoup $ make andy ~/TalkSoup $ su -c 'make install' 2. Run TalkSoup andy ~ $ gopen TalkSoup.app Enjoy! Read below for more information about what you've just installed and are running :) =========== Description =========== TalkSoup.app is a fully-featured IRC client which uses GNUstep base. While TalkSoup.app itself is just a very basic core which can simply pass messages between bundles (plugins), there are many bundles which make up the functionality. This distribution comes with: Input Plugins: *NetclassesInput: an input plugin based on netclasses Output Plugins: *GNUstepOutput: an output plugin based on gnustep-gui Input Filters: *Highlighting: highlights keywords and nicknames and handles highlighting tabs as well. See the /highlighting command for configuration options. (Bundle must be loaded) *KeepAlive: sends a ping to the server every three minutes on every connection to keep you connected *DCCSupport: allows files to be sent and received from client to client. There is no DCC chat support and probably never will be. See /dcc command once the bundle is loaded for more information. Logging: allows a log of a connection to be made. See the /logging command for more information (once the bundle is loaded). Also see FAQ question 3.5 on using the logging support. MessageInTab: opens a new tab when someone private messages you Decolorizer: removes colors from incoming messages. Debold: removes bold from incoming messages Deunderline: removes underlining from incoming messages Output Filters: *Colorizer: Lets you use %B for bold, %U for underline, %R for reverse, %O for clear all attributes, and %C(0-15),(0-15) to set colors. (First number is the foreground color, second number is the background color). Piper: Lets you pipe outgoing messages through arbitrary commands. See the /piper command when the bundle is loaded to configure. * == Used by default ======== Commands ======== /load : Loads a input/output filter bundle named . If that bundle is already loaded, it will move it to the end of the list. /unload : Unloads a input/output filter bundle named /loaded : Shows what bundles are currently loaded /saveloaded : Saves the currently loaded bundles to the defaults so that the same ones will be loaded upon the next startup of TalkSoup.app /join [,channel2,...] [password1[,password2,...]] Joins a channel (optionally 2 or more channels separated by commas with no space) with an optional password (or if there are multiple channels specified, then multiple passwords separated only by a comma) /nick Changes your nickname to /msg Sends the private message to the person named /quit Disconnects you from the currently connected IRC server. If is specified, it will use that as the quit message. /notice Sends the private notice to the person named Most of the time, you should send people regular messages using the /msg command. However, in certain cases, you may want to use a notice instead. /away This command sets your away message if is specified. If you don't specify , it will mark you as back. /colors This simply explains to you the valid colors that other commands may ask you to use. /ctcp [args] Sends the ctcp command with optional arguments [args] to the person with the nick . CTCP messages are used for a lot of extensions to IRC such as DCC and getting information from another person's IRC client. /version This is a sortcut for /ctcp VERSION, which, on most IRC clients, will return the person named 's IRC client and version. /clientinfo This is a shortcut for /ctcp CLIENTINFO, which, on most IRC clients, will return information on getting the IRC client that the person named is using. /ping This is a shortcut for /ctcp PING . With most IRC clients, the other client will respond immediately with a PING CTCP message with the same argument. You can use this to see how lagged you are. /userinfo This is a shortcut for /ctcp USERINFO. On some IRC clients this will respond with information about the user named . /topic [topic] This will set 's topic to [topic]. If [topic] is not specified, it will refresh the channel's topic. /kick [comment] This will kick the specified out of a . If [comment] is specified, it will be displayed to the user instead of the default message. /raw This command will send to the server as it is, no formatting or command substitution will take place on the string. /encoding This command changes the encoding for incoming and outgoing messages on that particular connection. By not specifying the command will list the available encodings. ============================================================== Commands specific to the GNUstep output plugin (GNUstepOutput) ============================================================== /me Sends an action to the channel, for example: /me runs around the channel screaming 'GNUstep rules' would print * runs around the channel screaming 'GNUstep rules' /query Opens a new tab for a person named . All of their private messages will appear in there, and typing to the person in that tab will send them private messages. /server [port] Disconnects from current server and connects to . If [port] is unspecified, it defaults to 6667. /close [name] This closes the tab named [name]. If you don't specify the name, it will close the current tab. /clear Clears the text in the current tab. /scrollback This sets how many lines are in the scroll-back buffer. This change will automatically be saved to the defaults. /ping Good way to find out the lag between you and that person. /topic [topic] This will set the current channel's topic to [topic]. If [topic] is not specified, the topic for the channel will be displayed. /exec [-o] command This will execute command and display it's output. If -o is specified, the output will actually be sent to the current channel/query. /alias Alias a command to another command. For example, /alias j /join This will make /j the same as /join. /alias hi hello everybody!!!! This will make /hi send "hello everybody!!!!" to the channel/query. /unalias Unset an alias set with the /alias command. =================================== Notes about GNUstepOutput (default) =================================== * Double clicking a person in the user list in a channel will open a query tab for them. * See the 'Bundle Setup' to configure loaded bundles. Some of the bundles even provide nice GUIs for configuration. =============================================================================== The FAQ (Frequently Asked Questions) also covers many common questions that TalkSoup users have. =============================================================================== ======= Authors ======= Main author: Andrew Ruder ============== Special Thanks ============== Luis Garcia Alanis For his initial drive to make a GNUstep IRC client using netclasses and his first version of Charla.app Alex Perez For his immense testing efforts and all his suggestions and he also drew the icon that is currently being used by the GNUstep output plugin right now. Alex is also one of the primary people behind making the original OS X port possible. Jeff Reinecke Jeff provided the machine that the port was done on. Using solely VNC and SSH into his machine, the very first TalkSoup OS X was made possible. Thanks a ton Jeff!!!! Lyndon Tremblay For his time and effort in both testing and making TalkSoup an icon. Gregory Casemento For his tremendous work on Gorm, which made TalkSoup possible. Alexander Malmberg For his constant help, bug-fixes, and overall contributions to the GNUstep project. Matt Rice: He knows something about everything; a constant source of advice and help during the development of TalkSoup. Aaron Glenn: Actually made several of the new TalkSoup OS X nibs with me explaining (over IRC, of course) how to make them. (He was unfamiliar with using Interface Builder). Without this guy, it's unlikely I would have ever gotten started on the new TalkSoup OS X port. Also, a big thanks goes out to: Nicolas Roard, Thom Cherryhomes, Tim Harrison, Ian Jones, and all the other people I probably forgot about who offered bug fixes, suggestions, and just took the time to compile and use TalkSoup. =============================================================================== Copyright (C) 2003 by Andy Ruder aeruder@ksu.edu http://talksoup.aeruder.net TalkSoup-1.0alpha-32-g55b4d4e/README.osx000066400000000000000000000042071067163320700172650ustar00rootroot00000000000000TalkSoup is a fully-featured IRC client written with the GNUstep framework =============================================================================== Copyright (C) 2003 Andy Ruder TalkSoup 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 Comments are welcome. =============================================================================== **** First off, let me say that since I do not own and never have owned a Mac I have absolutely no way to actually maintain proper building methods on OSX. Therefore, building on OSX will be limited to gnustep-make style compilations. Secondly, if you cannot understand the instructions herein, please download the binaries rather than wasting my time with issues related to lack of skill with unix-like systems and the command line environment. The binaries are the recommended way of dealing with TalkSoup on OS X. You have been warned. **** Step 1: Download gnustep-make from http://www.gnustep.org. You do not need gnustep-base or gnustep-gui; all you need is gnustep-make. Read the included documentation and proceed with its installation. Step 2: Download netclasses from http://netclasses.aeruder.net Step 2: Run Misc/setup_osx.sh and read the instructions. Step 3: Target .app will be at TalkSoup.app with all frameworks and plugins as part of the bundle. Conclusion: Have fun! Hope you enjoy TalkSoup! :) =============================================================================== Copyright (C) 2003 by Andy Ruder aeruder@ksu.edu http://talksoup.aeruder.net TalkSoup-1.0alpha-32-g55b4d4e/Source/000077500000000000000000000000001067163320700170325ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Source/Defaults.plist000066400000000000000000000004351067163320700216600ustar00rootroot00000000000000{ Nick = "TalkSoup"; Password = ""; Plugins = { InFilters = ( Highlighting, KeepAlive, DCCSupport, Ignore, MessageInTab ); Input = NetclassesInput; OutFilters = ( Colorizer ); Output = GNUstepOutput; }; RealName = ""; UserName = ""; } TalkSoup-1.0alpha-32-g55b4d4e/Source/GNUmakefile000066400000000000000000000007511067163320700211070ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make APP_NAME = TalkSoup TalkSoup_OBJC_FILES = main.m commands.m TalkSoup_RESOURCE_FILES = Defaults.plist Images/TalkSoup.tiff Images/TalkSoup.icns ifeq ($(OBJC_RUNTIME_LIB), apple) TalkSoup_GUI_LIBS = -framework netclasses -framework TalkSoupBundles $(ADDITIONAL_FRAMEWORK_DIRS) else TalkSoup_GUI_LIBS = -lTalkSoupBundles endif GUI_LIB = -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Source/GNUmakefile.preamble000066400000000000000000000006011067163320700226670ustar00rootroot00000000000000ADDITIONAL_OBJCFLAGS += -Wall -I../ ifeq ($(DOUBLE_RELEASE_COUNT), YES) ADDITIONAL_OBJCFLAGS += -DDOUBLE_RELEASE_COUNT endif ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -I../Misc -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_LDFLAGS += -F../TalkSoupBundles else ADDITIONAL_LDFLAGS += -L../TalkSoupBundles/TalkSoupBundles.framework/Versions/Current endif TalkSoup-1.0alpha-32-g55b4d4e/Source/Images/000077500000000000000000000000001067163320700202375ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Source/Images/TalkSoup.icns000066400000000000000000002106321067163320700226630ustar00rootroot00000000000000icnsics#H????????is32(&?],#.Eq'%/1%Dy,Of:jxlХnj|sd`r缪dvh[XbfXlmòk|r{~wwԛޱv ̩k-rvvdZYHUoggugH:?ANyR3+,41*68P  " 8R} !-Bcn !1.$@q~ua-M_`r_Clgfe_^v`p_TA=ju|VW\P?;Fi{vO2) $Qwbvvvj7.ASUfrueTA-!Pe`y{jiiqlFBf[GSz`Red^efddfkd^yd}h~nXw^_eo^ah]TNHf_tNhqcjgt[g]\b`KEBADsR_RdsAA}Ri]U^_IAA?==;=AFZq_ckSWdkMQ?@;;AJ[w}|uʭ^G;?;BQWiż~nlprrmiqE=@FT`Rlɮ{jGeǽOzYFnKKBFRXYbhmb8:,!3<77B[pI7..)-6=??6&0323;Kx]QE5'$!(,++9Lf3 .E !5 *8d?!'.4?,-)(,8Nmy|Q3*.)1?J_wnpy||vnrz֨w2.3/CTN{go]?ZOtM/?E{Lnpxcmp_Il_WcALxWuR|ui[IXi֊B\Yx{TzpOWicl)>=VvS]__{X^o~>qTcugKMn:ӊzsrjRH0?ckhgszsqW=&$.409tyj]OC7$"&'$!%<42)(>~xs`SMN=0-66@A="'2=89F[rG2%!&&'#%0435?M]OB1#'-,-=Ql8mkx ;h HmlO$ ]|T3ok!o6=3gl:aJ?NtXr? CGvzIKich#H??????????ih32 C  W -x  +Q   )U<  $J_c$  # ,:<    ;Qqȷm"]) "*9Sn̶> #"5a̪$# ! lí%N#0qU&j" !""  $D{زb!!").5<@AB?:3,)%  %)Jt}z+֛_'-2=@DPZ]_^]ZSPIA;3& #7wwyUFÒP% *1:CO[mz|ysi`UD6-(tpwwY3D\t㶪s\L%5@vqossʌ~wR:Rp¸կȧeOCWXcurt虇{nktȾǽ{`h@[uxwy}wiln}ƽp^dsw|qtpluhawwżȮnWmv~wwwhhohjdZ׿ĸOnwksy~rfdeddb`a]|Ͼ꽸֙Mgvtjqp{ucbb__^\[\[ft̯}Ejq]hlosc[^\^YWZ]^_csm¥Gsooo`pgiW[]WWUW\`ehsuhS~vѫelgYR]YUW[^bmzӶhrcRdž`fPU[VW\afq׽e_goy{teYR溹WfPZY[aem|ZFJkmeZWZXi}raN`Y_ijoGR|uٶwtZka{fOaedrRDآNkOՓh?^{LjKdkm²rA+Y8ɑQI.ՙ5?hzbxUdo3ݼ7ɝOnhenByIۄg^|Ǜ WE0ަ=ФCCDCDGTQBI]qk^aQG?G%ϓ|\mmpxvyh^ddenY:)BFEj$ײjblbNN0+?IHDAg%Փ{hNRXJRdmzu|qETVA.00@DE?A=C9UXctwywrO-2-',13?=><729*2'65722?I61! ((-57:=9;2(0)#(&$!-<2*#").445056JT  5U  GU    /Z  !K  +D  @?,   #3:^bUU  !6EXjêug$"( !#+9Ph~a#% !(6\U6   #""i'!%!=vgU&iU Jaf(ŞQ !(0699:93-'#+$)Bbf_q+}xL#(39COX[\\[YRMA94."!'7z|a^bUD~svtpC# "(09EUly{uh^UJ<4-#/g[_jjshhmqkV)1AYqK62@DyoWL1EIpc\]stefinsjXDVmc|;sDtaopaRga^`ah҉]gcddgjoa\pEWjgEqr{R^\cgm]c`bcbec[RNayFvg\LG2rj]blڋW`YdkaTOHNDDtEPR9G94/^XaqlV^\deWHFH@DBE$oL[k=>@>A~~EZ6G9DDMObt^NZZaYEBA?@?;;=>QlzR'3B:N]tJITY[I?@=?<9<>@DKabzt1TR64\UU|[BXRP=?@8;:8;ADHQaxvdwbJԽkHO8=A::@HMXp½{YTalzuaTGqŹޮDO7@<>?FReO@Da­kXQHEIGVpt^J5E=DKNl_@KĵslǨkgP_UlN4EILZyJ>ȕG`H…_9SlC\mk0HOVyi<(Rƿ3HA)/bRuaH_wwO\f/Ʃ1Fc\`:j?{VKxiPu?,œ65]( 3aC^0ä*@ES+zs^n,X`_ȴyt™`kضfe|ieiɁˀ [JZ[p hrwɀ ÕeONbu ׉whùɽ^QQ@AM[v'w˼ŽrJ7,;EMAKIY%ƌzerbhWC>ET[a_YTJ>1$':IEOSN>*_ٵ{~umcO3",-/065*4IZQCI<4.<%Åi}wwuy_:FBGOMOWfcMFKIFN?' 8=?c$׫{}}ldokgb^`^V\eeqsraOFLE376@>;6d%̊r^BDH8BB:2*"":47JWVLg+̳h]aH"$.7CR_eged_WM80)!$!/7DtoMLUUaMOU_E2'/8DVq~zn`RE521#8F\KMZNSDDNJT^@#2E]uD+%5:veUSHfku[NNm\GJLLNGQdkYdt]x/m8iTezaPS^yKIJKLNVUAU9K_[8fuDWZ~OKHIJILL>/8#OV`}HGEKRH;6*-+7~7yBD*8*#zϽ}NWe]AGGKL>/-/&/2?e@M],8);mIWgz?BDKI:-,+*,/20<{{x7L'8*63[;WgS>BCLC0-,*--,.02GnnE$3x;@Rg>==CE3*+(*(',0/-2N]rwh"ED),OGGmU8B==(,-&&%)05A?1'0,'(,17BVprjoOwȸd7=&,0(*.3:HalSXfvj^KdҮ6:10&-7@WG=A]Ew`OH@=A?NitR8":2,6>\U=Gicc{]IWUi|B%<@4DkE:zAxXAxT3G]:rUgc --7IOTSLG=1# )509>:- _%ܻs~lgd]ULF:& !"!"! "%:F8*3)##9%dži~yohZRPMUB#+$,3027CE3/52*3(4>Cg$ײxpsWJQGED>@=4:?;CAC=8/40 (6@?<9g%ՍnY?==))06@9;;>:@=D2)) /;<686;Yh$ڦUN=3+"*')76710  %245336GB3 ## (DHN?55#  "!%DLU_UU >>-  !  244/-33?_U? ..5/, #  '-2=ExfaU+%! #" *-08Br̿?_N-%# 9!"&-5Q_`ilqvݶm3$3$  *!%6>BQU_owȻm/D*  ; #18"" !"'38J^fη$?:&! ! #-1>LRhow33K0!  "!"$%(.4QoxUm>'$  $Cbn??m?10$ #!0>F^hp̪.IH2 ( !! 07GlwUUUSR8   (.<^h} fsv]IC+%'(*.CXa~U mb6"! !" ( "$+ALv|{½mŪxK3/  !"#$$&'(())(('&8''%$$! "$ *;Diwy|}{{~̙ɲy[R* !!"&()-.02479:<=<<96610.*)'&&$#"!%#$+1HQZquy}}~~˱g\0!"#$(*,/0367<>?@AABBCA@>=;7530/-,+)'&"! $"#(-AITpuy~~{z~Uȵ|tM=4"$$''(*+134779<=DFHLMNOPPQPONMLKHFE@?>=;97610-+)%$"!%*:APw|yyǥi[L% %'),./029<<>?ABDKNQWYZ\\^\9[[XXVQOONLIGE@?<9831.'$"  "&28K~|wxwxy|UUȾqeU,# "')*/0135=?@BCFIJRUW^`abcdeed*cb`_^XXWUTPNLGFC@>:74+*&" !$16K~w x{q5»qKA1" "&(,.067;?AHKNTV\belpryz|~~~}}zywrp0ojifa_ZVUNLH><71/*'$(+Etsqqtxw~5~WM;(" #)+/139;?BDLORY\dlowz}<}|{yxusqjid`^XUQFC=75/-'$(Bŋtspptwxvwz?c[G4-#+-469ADIOQ\_fuz~yvromfc_URLFD<94'#! (+@tsrppruvuu 1}hTK)#04>BHUYcmqӻ#}zslh[VRGC4&&049GNf~uqqpprstw@̻q^T0"&37CGM\ajtz·"}vse`\RM=,*369>CZqsqopqrsw?ҶzjbD83*)4@ETZarv~Ƽ|xsjeVGECBDUegddehjnstsruz~ IJ1wpXNI::DNSfmtɴ(ļ}pb^SNKDDNXYZZ\bdltusrsuw z{t^UPBAKUZlt{¾εŭymhZUQIHPYYVUX`cltutsttvͣ|}b}nge``ejoػ๰vpj[Y^b_MFLZ_isuvwyТ||tnmklosxWÿžܽ뾵{uc`dhcJ@FX]hsvwxwxy̛~~z~rmmlmoqu¿˿ܿ鿶{hdjojQGM[`irtwwxx{Ϙ}|~)~zwmijllnor{¾ހÿþ-spx}e[]bdkrtvxx{}ǖ|zz}~~{wvlijllnoqy}¾Ŀýur|i_`bdjqrvwy|}{wwz}|{EzyvuuvukhghhmrtxzĿ؀aþrfd_`gnpuvx~~tqu{vurqpnnqttkhfbbkuvwwźzmhZYcmotvy~涔}}tquysrpoolmpsskhfbbjsuyzĻ~qjZWblntvy˥}xxwvy~{yslkjjkoomkkjjhdcbae}?˾|qVR_mouwzš}zvw z~yvoih|iookhhjjiec_[`tVQ^louwz|ywtwwxy|urmhg}ilmjghghfdb_]awyVQ]jmuwzonpqtvxy~wtqihgeefedcc`2ccjz~7ɾ˥VOZfisvzxlmoptwyz~~~tqnhfedcaa`_3^]dw|}ƿ8ɾϧVOZeirvztklmorstv|}|{yokjeddccba``__^+\\anquz}΀;Ԡ{QKXfiqtxwwqjlmnqpprz{xvthdcb`_``_]\\]j\[^fhntyųיqLGWhkoqvttmjjlnoporxzwsqfbba``_^]]\\[\q[^egmswȶΏvkPMZhknpuaafjijlnopqutnif`]]__^]]^^]ZYY[[\]^`celstvvyU¼ìjUZehknoopw]]ahhiklooprrkdb][\^^]\\^^]YYXWXYZ[]P^^__`bdkrrnmq}ܻ[GRmrqpo wffdggjlmnppha_][\^^\ZZ[\[XWXZ[\^_n`bbcghovxyz|ý¿h^euyvssqqxllgabhmoihhjibZY[[\]]ZX{WWVWWXZ\\_`acdffioqw~|}ui]b}{wu|rrjabhmnighgg`XXZ[\]]ZW7UUVWX[]^_`cfgijmuw|{{4tib[c|zђudbgmmigfa`ZUUZ\[2XVVWWXWXYZZ^_afgkoqvy~!}|Vתgehkligd[ZVRSZ]\YYWUUWWXZ[\^_`adlnsx{}nloswj{if[XdݯmjiijhgdYXURSZ]\XXWUVWXY\\^_`bdgnpxƼurtuw6viga`mã|occefaTRSTUZ\ZXWXYZ[_`acekmr~¼uoomnpsuxy{ysqifeabo|ǫq``efaRPSUVZ[ZWVWWXZ\]`acfhnqv@oec``cfhmorwy|}{zusmfd\YWSUlÀ'ŭu_^dfaRPSVWZ[ZXWXZZ]^`cdhl knvxŀóyxvstvvxyy{|{zyxussqpo-pqqsu缼]ZcfaRPUY ZZ]_`bdfkmsxud]YPORTYmuс/}yqokhfb__]]^__\\_hlwӀπ΀길]Zcf`RPUZ[Y[\^`adegnpuzwaYUMLMOSdjҀqnljha^]YZZYY^mq~р҂렠gde^RPV\]ZYZ]^adegglvywvrZQYosvzve^sʺyszuhd_[[`boӂ9쁁—rnea\RPW^_ZYZ_`dhijjpyqkRH\gSfҀ:¤}{Ѻzvpf\\fj~ҀӂQyufa\QPW^_\Z\_`ejjnov{ngQG]r_oɺ~vtӼԀ!}tnga[\hm~ҁӂwwpe_RQX_abLcior^VIDWҹtn}vnnmtϪ|}׵^T~;/EZ`qwtjmɂԁӀԀӀlaat{~sf`RQX_adeedekqvWPGDVѰYSpukdSXͤmoرSFv%8Zbt{pRQrԀӀԂր__wv{vnfRPX`bef2gpx}ofVOZs{ϢfdwQSʣhiЀTHu,Ejtfao}ԀԀրycsurRMWbeijkln|zlcNIC=G}ɀblǤKCß\\سZLq=2aʻhFRր׀SPnr}vUPYbejllorxlPH=1;sxWfҬKAŸXXπ"\PpC8fƤk?Iր׀qfihvy{~gbccemqt|jKNp~kF\ȤJA¤XXظk^m}ɪ^Q`n|Ź]]zҁ׀ր εoHPgkpzvlcdrw|{acɗfbmq^5SƾH@èYXپzllkxԹwhYJWʣ{qZQpցسl?[ggl~shjsx~wVVƖfcrx]3S¹HAĩWVپ|ng`nֿtZ?IxnRHh׀ ˪{$ihhklx}{{:2QpzrRWZ0RظIDɭLIٽxgS?O̭`! K[foZUIEfӪ}hgif_^r|¦}/#zZYUVfvqQCUֿA3EX[^`S4,"-̕]Q;2G|׀Ч|~$?ifhjos߀2̃f_LKZjfH(EЁـįU\`kqqtw{ف4˫olsvֽA!Dۀέs_apwvutx5˽з|ðI(Fۀـ¢~~m?f~vvz~܁ ڂ!̼rUZgqـԸy{svutvx}ރ߀ނ݂܀ۀڃل ɃgcV\׃Чvrsvwr~wvzނ݂܀ۀڃل ̖zmrځûroqtw|v~ނ݂܀ـ؀ڂ ºހռrjiecmvxq ýwނ݂܀ـ؀ڃ%÷̰yjdcbakwym"̸ވہۇ&zolfdchip{}–݀ނ݂݂߅%ľ}{yy}~wea`^^bcfpsy Ü߁݂߀ނނ)Ǿurrqquvp`]\\]abfoqxy ȷ--ƾ}tkg[VWY[afinqlb``aa^]^hkr Ƶ^¾~f_WOKC?DNRZbdknka`ced^[\eil?gǹxrk[VRNLIGJQT[cekmjcbba^VRVeilJ{oliffggjprvz{}{yxwunmhdc^[XNKD=<=>?FLOWZ[`egjkkih_WRC8;Xkc2ͷtqia]SNMHINSUZ\[0YWWUUTPOONMOOMGE?88<>AILU^`cec]]`cc`^]YXQKGB?Cawn1ĻvlfPHB64:@AEFE(FHIQSRPOG@AFHLY\dmnkjg`_``_VRPJIEA@EGLl̪ľ#tnXOI86BGGHGFBCEXgif#?>ujgcacjke`]QLLML>1/.-2=@EIHHGGDBBABTb_f?U#ļtnnmnrwwrpprruwxyz|=yiZX[[]``YSOC>>??700458?ADGGDDCCA@??DHJRWXbd-̹|umiYRSUUX\ZSOQUW^egmory{xvw{}+wo]JIQUUWVMDA40011001;>?BCDEEA@@A@>=AUZZ`e+ß~sgbUOPPQSUTKHIOPW^aehjqrrqrvxzqjWDDLPPQOG?;2.//0 1<@NRV^]Qy`[WURKJIHGDBBAADHHMNMIJS\^`adkmsxy{|}|{s\VF549;:862/.,,-01235<@?@@?=<<==>??==?BDGJK ŧ|\W@TIHEBA@??<<=>?BCA:;GSVWXZbdkstwwxxyxwwsriTM>/.121.-*'(*,-01234><>?>?ADHJz]YZZVJHEA@>=<99;= ;88@HINORVY^cdf gghiihh`MG;0.-))'&'*+,/0013:=<;;<==<<;<>>?ABFKL#ѹw`]^^YLIE@?986436970-.220./8;=??;::;<@EGLNI;940.'#"!&(())+./467789::<=<99:;97622586/+-00,()15433466217>@EHC9630.$ !%(+-.244778::<=<99:;;31.*)./.**'#$')'"!$''%%$""(.09=:31/,)!"##""&))./1345540035566;GKOSTPӰ{uhea_^ZYWQOMKHA>;31-)).0.*)&#$&(%! "%&$$#!!'-/8<931.+( "##""&))-.0345540035566;GKOST  +8.U  +8.U  $3    :G3UU  ,3(3    !3+DU3   #01BfU    ),,70   "-IO3   !*KU'  !&*#3$U    "+.S^_cf_fUU /   '   $'*-3BIKJKQXYZ_b{ҹufU?HU   <"%17:CGMUYcjqxsjpnO$ " O "/36>@GPS\ag{{qmUU  = %'(+,.13478@BEGJUW\chmqt{~u\f    !*##$&'-04;@HQUdjo|jkf'<   2 !""#&(+46>GJX]bnrvzyfmUU   !""$%',.147@CFOR]ioxUH *  1 $(+58IZazpUU-  9#%(.1=JObin{U   ! "##%&).3Nip U$6   !""!  %B`h}?$  "1?E[dix|~~}~UU$$  $ "$$! $9BOqx}oipU++ ' !#$! 19Edkt|{okpu? 3EG?73!%!$%)-BV^wylhlpsU Uhi]VM( '-GRyfacfjmqqe;%!   "##" ',?Hjwrcacfiw~bf-̙µfKB !&&*-.234564320/+*)&%#! %)'#"(-1DKQ_bdffdcgrvöoTK$ !"$(*-01678:;<;85510.+*(%%#"! %*)%$'),;AI_cegg`_cos td]=/) "(*,015:;ACEGHIJJKJJIGGDCB=<:8720.,+(%%"!!!##%(*8=Ihoppoeaafgoz~~}xvqTI<!"%')/2479=ACKNPUVXYYZYXWVTPOMKIA><87421.-*"  !$'*38Hqyz{xga` acjUU5½||zwsZQD$!$%'*+257;=BGIRUW\^^_`b/aa``__^\XWTRPIFD>=:8742/'%#"! $')26Hs}ja`_ `fuq5{vwwxwuskg\=6+   #%'+-147=@CMPX_bknqwyz||}|7zywrpnlia^\VTQNLFC@741/-)'$#&.1G~{fd]]^_aou{9}ustvvuttqpdIA3%  !#&(*/059:BEISV`knvy|7|{xutkhe`^ZUTMJG><843/-("$,/GǾgd\[]_agjt?}{rqqssr*ppgRL>1, %',.18;AFISWVRRX^_egjqsuwz7wtronidc\YUMKFB@:73'%&')15Gt~jg_]^_adgp ݮqnqtsji.knopqnhe[QJ0%"$.1:>DQU_im}vSKE>=<;?FHJLU0}zrplieXROHD;12=BFOTmunkca_]\__dtz nkoqqjh.kmnopomkbXR6,((15?CJY^hqv~ULC;9426ACCDN2|{vro`ZXQNC77CGHIMd{|solca`^]^^cou æzifjlljijkkno'g`\H@;109AERW^ot|`WXYT@7@UYOEN)~zwroif[QPSSRNP`prkiga_^__ckp |vqgeeghhi,nopqqnjfZUPCBJSWfksiblwpK;IimZGO+zuhdu}q||tmjc_\RR\ggdba`_`_`bhl~ xqnfeefgghwmnoqqnjg\XTLKS[_ns{snwyM$6fteLOY\cjeG5AȦ[STUW_bgrwqWUWZ\ZY[`a _WTQIHFDDCBB@?T>??@??@@AFIWy~sv~ymNIR[WA7SZGcT9==>y??>>??@Ou}tQKT]ZC:TWE`T9=GIFDQسWLNOR\afrw}}aQPUY[YY[aa`^[PLJEDCBBAA@@?>=>??Jbis}'tptyv`XitjF7SQ6DhmYENݩMCHNQ[`erwaaVONSXZ\``][WKFEBAA@@?@?<;<=??DPTanu~vxZQ4)DN3LkGJs/➄qD>??DMQ^jpL|`W>3LL3KjIJjv֒xiF?GNQX\brxUUMKMPRVXYZ]\UNLDAA@?>?X==;::;;<==>?@ABELOXbfnqutkwtD1>_cYPNJI^ū_GJQSVW`u~JJHIKNQUXYY[ZRJGB?@?>=?<<;99;<<>?N@CDEJMV_abbhw}vlB1:PTSRN=6O໕J4>W\YU_wLLJHJORUWWXOGEA?@??>=<>>=;;:<=>?@ABBEFHNQYadilow{QyYKRadcb^NG\¢wUHN]_][YXWaxYYMDENUWTSSQOHA?@??<98;*::;<=?@@CCEHHLMPWZ`gk~xvutxJvo{̷ucQTozvljhed^\d{ffPDDMVWTRQPNF>>?@?@?;88;)<=>@ABEEHKLOQT^`ekp{yuqtFzĭuh[NSxronljdbj||ZGFMUVRQOJHB<<>@?@?;88;;<>?'@CDEJLPTW`civz~hwtz~͒gKIMQTQPLEB>;;?A@@?;88;;=?@BCDFHJOPX_bou}wtiiqx|w|idWR]yӞrOMOQRPOLB@=;;@BA?>;88;<=ABDEFIJMTV^fjx~{nmrwz5vfbZVcշfaVKLNPJ=:;<=@A?<;:=>@EFIKLQTYejv|xlhgeejoqvxz?{tqgda[[dlrܽpiXIHNOJ:8;=>@A?;:9;>@BGHKMOUX^mr~waYXUU[`bilox{>}vtkb_WTPIJ\nxĿ޺~w_IHMOI:7:>??@><;,>??@DFIORYa`UQNHFJNRcj}¹}qkh^\ZWWQPOUNQX[dmt欬wJFMOI:8;??=<=>@ACEFIJO]``a^NGPekmol]Vi@Ⱥico{zmhcYUQMMRS_|Ŀ8yya[OJE86=DD?=>BCFJJMNUgke`\H@S_M^1|wtrıun|icZQQZ^qluue`PJE86=DDA?ADEIMNRT[nph_YG?TiWfxtnk{ìƮqi~c]VPR]aqCffu{uYMG75=DEFFGIKPUYhnwpTMC?Q{êkdq~|jc irtUJru3)=PVbhe`bzkUUbmo{~\NH75=DFHIJLMSY^qysOHA>OwQKei`ZKP{dfŢJ?jq!2OVelaHGeoOOghkxz^UL749ArȺvZcxF>wtQR PDf6,V{]?ISC]bhjkjl]:4=GINPRWZjz}oeJC8-5i~ȸnO]~D;ttOP SGd<3Z_8Aq3Z]_`dloeNIHHITW[eiz~bFHgsȷcAUĸB:twPO¦`TbpzRFTamvRQku ǰH$5UUZmtna]SIJY^drwzq[\_[dhǵW2Mñ@9r{ONªm` khZNAMkbNFa Ϊk6PRWkqnheZPQ\agx~{oOP}^ZinǴU/L®?9s|MLªna\WcreN7Ai`I?\ }xf$USUVVcynkhfpq5-JgphKQǴR,KB=v{DB}k\J7FUBQZstbPK@w{A>{jZB+:X)3?[_REB=9j"XK7$5d$+1>af]UUZ\r¾ynnll$:UuZ_buǹoRQMN\ieGnwy|ûyhcehkYKWXYY]rſȺx]VEDQ^ZA6K~?29ABFG?+& ,^R5*?r}ÂĽrmb_`hmY3_Z[]^iszȿ{a]chhcaqlaYQQVXY\\XS^wi7#=~ÿvljiijgfU\W]_``ae~Ăǀˀ<ĵ|usruxb`fis:<λqkhffu|}\OU`fda_cy˂ʀˀ6ż¹omtvA$?ÀÁ ïhdgu}|m?fu|phhjmq}Ɉˁ "fLP\dľuog`_hlljs\wjidefhmɈ˄ŃĂÀ t[WLQĺv^ZZ[\ippf}trifhnr̀ˀ˅ŃĂÀ pkbe¸sl[WY]^iqpi"ogmz}zxyɂŃĂÀƀĺsm\UTPOWacjssUrjo}ytuwx̀ ɅŃĂÀzf`TOV`bjvsH"wy{}˅ƂŅ€ăžni_TRONNSTZfilstU˺xzpmtz΁̄ǂŀāļ~id^YXSHEDCDJMNXZbstgf?z{qnrv|ɂˀ ƀŃĂǀ%wp]YUPPOPLB@ABCJMOZ]apum;¿Ȁ-lf]URFABDDFHHMNKBAEIIJJLWY]s_k}xxɿĿzrhOIA86.,/9<@DFKMJBAFKKIIKVZ\z?/´~~~~8~tpb]VD@<97536=?CFHLNLEDFHFBAEUX\s ʽ|sjn{wunnpsrhd_SPO>TVZbdgiimnnlljggdca[YUPNEB?74.)(**+,-38:BEEDDINOQRQNMF@<4/3Of\Uf}zpglxsoecfig\XSHDB@@BDGOQTXX\]]\\YVVRQOIGC?=41.'$!#(*2;>GJIFEJOPPQPNLE>90+.IfX1ȯyqt~|yqoppneb^URMHF><;;=:77432.-'!"')-69AIJLMKEDHLKIGFA@;75327Zkc3ռ{}~}xtsnlib_WPK:40'%*/00112110%56643/**027EHOWWRPLECFIGA><6420/6:@a|y̪־z{~zutpnlfd]VR?83(%*/0/00223)45:<;;:4//46;FJPWVROMEDFGF<973210/9;@Wfb:?÷yoq ~}zwwuutpokZTL85:??>=>@ADGGE/GGJNPWZZXWNEDCBDJKLMMJIIKKFB?2-+&&-45:;=BCK_hcîvkl}zwuuwyuf_V>;@EFCBCGGKOOM/OPSVYbfecaXOLHFGJKJIHGFHMMG@<-'& !,78<=<>?G^fcT­{oq~~ywvuuttsqqrspd_YGDHLKIGILNQTUTSUWX[^`figdaXOLHFHKLJHGCACGG@85)%&/9:<=<<>CKOS`\U%йzy|~~vpmihkoomlkiiged`^][ZUTUXZ]ab1eklnopoplc_XQNHFHKLIFD95699.#!$14:??>>=::98:Sgif?ּ}|#}~qjhcbhmmihgedb`__^^__^^]XVX[]adehnpqrrqqlb^VNLGEFJKGCA51253*!%36;??>>=;:758N_\f?Uļwwurn^WWTTX[ZSQSVWWXY^^\ZZXXY\]`bcflm/nniZVK@?@ABDC=74)%&))% %',58;>>;::98545?DGLSXbdJtqjb]KDDFFHJH?;=;754334569:844@FMNM̪yXSPNJA?;875320/../12/''3?A@@ADELRSTUUVVTQPMLE4/$!"$%'/2234432 456788<=DJLvXSQOKA?:66321/./4..,&&.6889:<=BGGHGHGHGFFDC>/+# !"$&-002232 11244667=?DJLM?˳qYVSRMB?932.-,)*,/.'#$&&# !)++))*+*'&&%%(,,..+!  "#$),,./03001347ACGNN%ĭnYVTSOB?:42.-,)*,/.%!"%$ #&&$8#!"$&)*' !"$)+,--./012100//0227BDJOO'ŮwrdXVTSPFC@=;631,+*)(%$##" "!  !%&$(!#&((++,--//.**,./015ACHMM=ʬytnb_ZWVTSQJIGED<960.(""&'&  ! !$%&)*+,*'&),-/04@BGKK=ͨxqk_]XVVTSQKJHFE=:70.(!!&'% ! !$%&)*++*'&)++./4?BGKK4UEU4UEU#6f Hf3UU :F53'36UU'44UwUU!+,GB3   !##$#+DHN?  +DLU_UU %% &699768D'3?_U?   !" ).37?@FNnwvo_m?UUfU="""(-08=AEPjyzfUUO1? &)*.038;QZ]_iddfxo{{²ufU?HU 3C  !##(-.=DIQW\chv{xsszyo?H"E  ""&+.:@CNPW^bmrxm?E !"$'(.124578:>@BJJPTU]`bgkptw~u\f&'!%'()((')+-8==?ALX]pwo\Y]aezUU{m`Z, +!"%&%##&*,6:6--=MUstUPSV[vmqqg<%" !"#""!  #""%(*6:700@BDB>=954/-+&%#! $ !%3974357:EJNWYXWVNLRag}sn`TP8.*]$&(-/369@CFNPQSTUUTPONLJFEC>=965,)(&%#"! "$+./12579CGOaedc`RMNWYdrv8vkh_]]_\KE<% !"$*-/57<@CLPS\^`bcdedb9a`]\ZUSOKG;64/.+('" #$#"&.0479@DOlqpojUMMNOSW^}UUuoeb[[]_]OJA+%! $').13:<752/-'%#!%&$#&-/379ADQryz{uZOOLMPSZwuq5znjZRRSSUXXZZS@;4-*!$%*,/24;>BLPZcgpsv~}vtrpnda^VSNIF?<80./--+''/69BFXoXUNLNOQ`foqqb^PMMOPRTV]_YHD;3/ %').0379ADHTXdor{~}{xqnka_YSPHEA7532211-%$-79CF[ɾx\WMKLMOWZgz?|wue]ZOKLMNPRTXZVKHC>:*$"!#,/29JN^yb]RONMOTWb ̛uURSURHE6JOOLLMQRVYUC;5%")/2@BDN%{xpmg`^TQPNMIFJ[bfos}rl\XSOPVnv sQNPRPGDaINNKJMSTZ_\IB;*'.48CHN^blw{OD:1.(%*589:Fywphf[XWWUQMPahimp}uo_[VPOWhp snaMKMNNIHKNNJIKRTZ`_YVPA?EJMW\cuzZQ>L4*4LOE;D|y|tx{xroolljgipttvx~wqa]WPQVch e^XJHIKLSMNMIGJORZbdgidYW\`cmqye^hqj@/>bgQ;C}qk]Xjtgs~ztc^XQPQRU^cv aYUIGHJJKLMMNNJIKPRX_afhea`eknwzphr}uD1Ain[IPkeVQehYi*|ufaXPORSV]auϺ|uXNMHIIJJKLVMNOQRSTSOKLVZd{P6J}}gdjqvd[G?Yvh3?sm\JIRVWZ^nαzrUKJIJJKKLMNOTVVUTKBCPUcSU9NsRLU^f`W@8SjZ.xr\GFSWXY\l|~DZ{mfRJJIJJKLNORTRPNE=>KO]}VU9N{pUPUZ_s{lbD8Ttd& 3|v_IHSWY[_o~ʺwWRLKKHHIJtIIJLLMMJB@933631//24;LSlT8MriSNLIF94QM8TB&Cy[WRQ_ú~hROUWZafyݨ{_IGHGGEEHKLOQOIGB=;974,+,--,,/8?]{UT7MxjJCCDA2+KM8TG*E_0('&ͱk[M?@QW[ej}}YA@ BCDEJKJIG>:7/-,++**+,,//0010019?QW[ejnnP@?@@BCDEJKHFD953.-,+*+,,-./0l67Efo}idinjSJ]}i_7(DC'7\aL6>wXJD>@NTXejQQE@??@BCCFKLHCA40/.-,+*+-,C/0//0229IO_ozrjtmNC%6~?$=~_8?BMRWejMMG>?@?ACCEJKFA>4//--,+*+--,/i0016CGWhr|u|qTJ/#=~>$<{^:<`n}ࡇuF>>?BLPVekHHA=<==?BCDGF?86.,+))*)+,,/0/.069FTZkry|7i_ksh7#1QVLA?==V˱`FGIJHFGIJRgo><>BCDED<42,**++)((*(''(*,-//00/--.13@MPY]f}wr~+w~|k_4"+AEDDA0)F忙F,4KOKGQhqFF@;;<=?ABBCB:20-+,0*'(()((''((,-.012332248;EPTbgm{{>xoM?FUYXWTE?YǥvL@?> =4*)+,,--*'*&&'((./1457::=>AGJQY^v}uty}$zuNj|dMM`gcXVUPNWluffG;;=?A>=<2)(,-)&%%'*+.0166:>?BDGORX_d}xv|@ֽ|m[ILgrl^[[\[VT\qy||U=;=@A?><86/)(-..,,*' ('(+-.245:? ;1/+().0/-,*(5)-./138:=EGQ[_ou|yvpov|4ql]Xa{ɴ_XH;:<=8+))*+.0.*),-.12589ACIV[gtz{roifgjlqwy|urnecdfj|иhaK88;=7)&),-/0.)()**-./236:82$"-99421--146<>EW[XURD>P}YHWrnihwjdzxp_ZRJJRUf huu}ZT@93%#.99542..279ADK^a[TPB=PdSanjdbphaz{qXRMIJTXf8ffrwqkL@9(%0:;;<9339?DX`hfMG?;Lva\grqaZ `xeeMDf~g.%5FJW[YTVj~ FUUbilu{uQB;)&0;=?@=65>VnxiOOadhqwrTJA)%0;=@A>98BLRlv~x^WJENelvynTRjsmaBCtwmTU~D:\h#4PWhneMKT^grMZ]gii`_P'!.;=DFE@BSdll_XD@:5=k}lS[mt?8jviIIwF~rCU[ceecdS*#/;=EGGDFYlsvi_F?4*1budIUr|>6iuhGGwI?Xqyw5,Or}~tS29wp3ZSY]_fh\>899;HMOTXk{}}v\AC_j~Y:Lz<5gykHGxTJVbkJ@KU`jIH_gv ڼ`$5OQUiogQLA7:KRWch}wnUWYU\`vN,D}94f}nHHx`UTT__RF:DaXG?W Ȝpj{6JMSfjeZUJ?@NTYhnxkLKvYU`ezM*Dz:5f~nFFwbVQMXi\G2;s}_W@8Q¹hb{$USURS]uyma_YXazl3+Fbk|aEIuL)Eq;7in>;q_QB2?}L:GPfiXGC95Oҽra^zRWPIGZ|ok_Zem)3HPkvtmiS=E}L)Eo:7jm:7m^P;&4M $-7QTI>;64MѶvhd\ZBUOURLJZw|wrqmltH?KW]pxvspeZ`S2FxxmbFGsp83^}OC3"0X '+8V[SKKNPcpec]\z$:USUV[]l}zy{{}fKJEER^Z?5Cgru3(7EHJKA(""vtH?.(8aikntnj_]_dfxKWXWUWj}mUN=?8&"'t{TI0&8eosw}s_]ZZ\hm3_Z[dlqTxnVQW^]XVe_UOHHKMNRRNJSk_1 6o{~bXYbeggfU\W]__\\_t{Zoigfiv{~jVTY\e}|s35y_YSQUq|}\OU`fc_[]mtT{urprvbafhq{: 7tuVQPPUm}|m?f|qgfcdgpu ;YBFQX|}ub]WPQ[aads\ymi_]\[_y&fPLCGrwf^JFJNQ`iifytb^_`cu&tb^UX|gYSFCHORakkiladnokginq}$~jWQ@99;;FSVfvxUūodgpqjcbfgt  |r]HC835:;GUXg{yH#ƶwvrrtuurqsy{.~yssrrkYSG;8658CFO^ah{tȕts}}zr^[^ag|sjSME<;:752..57EGKUWY\]_`__^\YXVUSMLGA?741)'"  $()021//368;=<873/,&$)I]\U1¦wrg[]u~zomhcaWSPHFJNLC?;1/../46:DFJMNOP1OMKIFEC=<60.'#!%*,25300489<=<983.*&#'FfXȰ{qfhx~znlied^[YRQOHEB:9632/./014789:09774420/,)(#!  ),167664..1564420/+(&+,1Zwn2ù{rr{~znljggdcb]\XTSNKJEC?:6,'%!"##$#" "! !$)59>CC;84-,/22,*)%$$##07=ay/̪ľ|ss{~zpnkhgfec^]YUTOMKHFB>;/*& ! ""#$#$#&$$&%!$&+6:>CB:63,,.10)&%!!#%&39=Zib:?7̽xmmz~|wurnligd\[WSRPONKKLNL@;5$!%)($"$(),//, ./0139;<<;5.-/567760./00-+(%.09>BDLaic<ȳ}pqx}{xwspngc`XVTRQNMLKLNPOEA;.,-//*()/0256323668:;AC'B<641/145321*(*00)# !+58<>>ADFMQ]ihUн~}xxvrqqro`ZWNMOPPKIHGFEA??< ;:42478;>>;:<@BCB?>;761/13420.%!#((.28>>?;<=Sgif ?zxuqp m\URJILONGEDCB?>?/><6459:=??<;=BCA@@CCB>=9651/0220/," &&26;? <;98;Pb_f?Uļ}pnkgcRKJEDFGF;87878:<;8;;<>>;:<@ BC@960*)+,,//*&$!'69;>>;: 9768CHJRWXbd̹rmf]XGA@?>??=0+ ,.01569>?=:9;<>>;:ysgZUGA@>=<<:.))((+-.2358987878899;==:9:>>=<=AB=2.##&%!+029:;;:7667769;>NRV^]$vZUMJG?=965.+*%$" #$"%-.,-.38&789:744550$ !$-125567745 679:=BDINO*ȫ|ZTPNJ?=832-+)#!()('((*06767741100+    #%'/2344543 467:<;?AFKM#ǦzYTPNJ><710+)'" "##$*//-,+' !#&-0022343 456:;ٴzrb_YUUTSQJIFDB;74+)$ ! !#*+,*('*-.238EHKOPt8mk@͂dO ͂dO ؞r@3! ǕS# ګg4( ʨxM<41.)&  Maü}{peaUOI:60+( D÷mf[PK:4,  6ı~rgcRLB,% DU{Y6,  $2rʪrG: 'W׿rgG:1 ":պWH/%ɮlZ?# mѥ|`T+ E[׹K1&  :MpɰcJ= !+DøvgA1dwΙU" ,:KuٰrD7  eຕD*  #v̫U:,  &@TƖj*BoͧI3Qܷ[E) ;Kݣa0)K]w>6-k~Õhb6Fh DWy"1u9M)K`Y!k )8~Xl %h}=..U44[EElKKsGGo::c77a33\//X..V**R))Q((O((O((O//W66^==dVVzaa]]TTyPPvFFn;;d44\C9/I]cs佭v@1:KؖTA,9qvd1 #,F̺qT? 2rυhP @Lr幨SC17Zqϐ]:5 *I_ۥsQL/ʸ zsff )';)>TalkSoup-1.0alpha-32-g55b4d4e/Source/Images/TalkSoup.tiff000066400000000000000000000225421067163320700226600ustar00rootroot00000000000000II*$   d         v  ,    !c  .    $ O     ## &sJ# A  "       !# !*40:<3=?19@2:uIA9BB:B?9::323-*,'")#% "%+:$4))7JBJtbW}fV{`Mmcxhh#0 j`Y}f}]xa_LH"'-#2($=3.@97DCCPORZX_][e_\g^\e][dZY_SRWPMMIA8A90;4)3.!&" $!!/#'777Dzt|owaMw^LzcVx("#9A<5U~mTڇsMvOtUp_PCE%#2 *"1(':0/C98OED[UVmlqzy~|{yuzshni^``URUJED<5642--1##8(/Ftg\p[Kw_Mxk[sr'!"6=82Ps]EݍtThDhDmNqJkTYV^)@#312DAE\Y]tquKD6+2%@5D:yvsoe\WULLS%1H5Ef@Ikvqpuoc[s\Ns]Ntn3/,?r_KfHfJiLiLiNnGsQwjdRXk:DYRVdpmtc]|x;/smD8˜tiaToeepOaCRWgXazc^au`PraSth^th\]L{gIcJdKdLgNjVoUaAn\UkptE9Ȗ͊WKj_ǘg[E8qf{`rh{@R[^uu\DxcWwgZ~a\Zpv[M}cK`HbIcJbIeLcL[>wR/iNɗG8ʛ2#p^rdjs]OwbV|l`.++1zrgWHq`GYEdKkRaHtT;pO6lH*uN-hD+aD7wt~wE7ŖфyPBRD9*˙G8Ʀ9*Ş4#/ȄznW^}mXNvaWqe;96KtdVwVAw^G\GdKeLwW>hH/hF-oH/h@&jD/dB2ZE?Í$oeL@[Mk]<,̚G8´Ť9)J;.ėOUmnWIwbWsg 8^G8s]ByYD~bKaIrR:fF-dC,eB+d>*d=,b>/`@2a>0]A<|~~{ς{xE7ZL6'ƤΒG8ĵǦ9*D6D3MM[gO;vbWtg.XA4qZBpZC{aLuYCcE0bB-bA,_?*_@-^?-\;,[;.\=0[>2fQGtlnƙznɚRE'Γ˛3$ȚB3̀x}E:;jN@q]Rtg )S;1lT=oYCs[EcI3[?*^@+\=(^?*Y<(W9'Z<,]>0^@/_D-cK2saNmb]zrЂw›th1"TERD6)˜G4,s\OoUGoUG|mɾ'L5-pXBgR=iP=W=([?,]@-W8&W;&U:%W<)\A0`D5eI,U8'W;([A,^D1bH7mQBzaVxpӼvrhdjrwcboRJOw˺MIGa|d]`H7fO=P8&U=,[A0V:(W:*\@.aH3fM:qXHpa¸³˺¯׽{leYS_TXgafolvyz{tueajYT^RGKqdũŴʹķ°ú=99RWD6fO:P7Z@1Y<0[>&a?-eF7mR@|eWZOGF@=JDAka]ƴҿѿó;ξ²wk`mXOeQHZH@WE=ZIAXG?iVNpi˰ιҼϹϺҼDz9r^RaJ8N5"`E:Y=2_D,iK6jN>l\o_UG@=RKGĶĵŵ|siulcŵǷȶƴwkc{tg]ZPIk_W¯ԿιӽӽѻѼҼĵ QGE}fNBO4%aE:zȸNGAxk`XOHA¯xh_Tĭŭ?93^SG{l]LC:rԽӻһվս־Խվ̿H~idkcK0 dH7j^T50*ví/*%H@9NE=$ؿ_SJ1+'zlu׿׿īվλ²s`ZFC% bSSu`Yxõùɻ˼ʹʸ˸ʶɵȴǴyltgí¬m`Uyk^ʳëĭíµǴҶfTeP3--ZIDGtrfhve]~i[ǹ;ɹ˹˸˶˵ɴɳɴDzůĮĮíí¬׿g[PTJAӼȷӾêfrZFtZMWFB('*4}vhbrr`wf®Ѿ˷ιʵɳȲȲȲŰįĮíí¬¬¬¬Ưʲɴòðy~eGdO3bN:gUK$=XV[fwr{hVu[ӼϿпͼ˶˴˶ȵƱƯůƯŭììƮǰȴDzɳɳֽªnv^GsQ3xQ3\@2[A+cM7lWO0(*Tǐocw\oؾ˴Ӽ͵ڿ̶кʵ˴ǯʳη˳űҽrdaJ;M7$?,Q;&cE,nM3`A.eK4[I8J@< 667=ϘzseW~mcrRbEhMtW>^C-U>-UE7aTIk[OtaTr_SkYLfTG\J=S>1J1#;$- 29'M:)^I5[E0fO9kS>jN:T>-1%0HGHR뢕{s~lgd~]uUmLcFkO:G3&0">, C-C/!D/"C/!D/"G0!T6 Q5"B*I4%]I:qZFkQ8^C*aI3Q<)G4#?.#;20.758=}jj~yoh}ZwRwPuMyU_B\:#mF+mB$pG,xO3vM0yO2W7fCcEhM3^F/dK5dI2eF*nN3Y?(:') B84F=>?9= J_[_{qu}x}pslWdJoQkGgEbD^>`@^=V4\:e?e;qCsArCa=jO8bF/lL4bE0N3 N7(0+?66I@@H>?D;<902('(`IFIV|soh^YNB?RD=XH=J8)R<)dI0mQ6z\@uV9|Y;\;b>a:j@h=jDqO2E-T<)V;)A(. 00 @2/D:;E;.C29%UA*X@'cD)tS7wU6yV7wQ1rL0O1- 2-',1" 3%%?22=34>45<23<23?56?82+7,#2)91'*!2&' 6'5%7%22?&I*61! ((-#"5+*7-.:01=349/0;13<38JDHROR%$&+_W^f]_^VUYSSPJIJFD>:72.*(!0'!)#(&$!-"; CopyrightDescription = "Released under the GNU GPL. See COPYING for details."; FullVersionID = "1.0alpha"; CFBundleExecutable = "TalkSoup"; CFBundleGetInfoString = "1.0alpha, Copyright \u00a9 2005 Andrew Ruder"; CFBundleIconFile = "TalkSoup.icns"; CFBundleIdentifier = "net.aeruder.talksoup"; CFBundleInfoDictionaryVersion = "6.0"; CFBundleName = "TalkSoup"; CFBundlePackageType = "APPL"; CFBundleShortVersionString = "1.0alpha"; CFBundleSignature = "TSup"; CFBundleVersion = "1.0alpha"; } TalkSoup-1.0alpha-32-g55b4d4e/Source/commands.h000066400000000000000000000022461067163320700210100ustar00rootroot00000000000000/*************************************************************************** commands.h ------------------- begin : Mon Dec 22 07:34:32 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef TALKSOUP_BASE_COMMANDS_H #define TALKSOUP_BASE_COMMANDS_H #import @interface TalkSoup (Commands) - (void)setupCommandList; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Source/commands.m000066400000000000000000000375501067163320700210230ustar00rootroot00000000000000/*************************************************************************** commands.m ------------------- begin : Mon Dec 22 07:34:32 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "commands.h" #import #import #import #import #import #import #import #import #import #define MARK [NSNull null] #define NO_CONNECT S2AS(_(@"Connect to a server before using this command")) @implementation TalkSoup (Commands) - (NSAttributedString *)commandSaveLoaded: (NSString *)args connection: (id)connection { [self savePluginList]; return S2AS(_(@"The loaded bundles will now load automagically on TalkSoup startup.")); } - (NSAttributedString *)commandLoaded: (NSString *)args connection: (id)connection { return BuildAttributedString(_(@"Currently loaded bundles:\n"), MARK, IRCBold, IRCBoldValue, _(@"Output: "), activatedOutput, @"\n", MARK, IRCBold, IRCBoldValue, _(@"Input: "), activatedInput, @"\n", MARK, IRCBold, IRCBoldValue, _(@"Output Filters: "), [[self activatedOutFilters] componentsJoinedByString: @", "], @"\n", MARK, IRCBold, IRCBoldValue, _(@"Input Filters: "), [[self activatedInFilters] componentsJoinedByString: @", "], nil); } - (NSAttributedString *)commandLoad: (NSString *)args connection: (id)connection { id x = [args separateIntoNumberOfArguments: 3]; id first, second; id key; id array = nil; BOOL isIn = NO; [self refreshPluginList]; if ([x count] < 1) { return S2AS(_(@"Usage: /load ")); } first = [x objectAtIndex: 0]; if ([first isEqualToString: @"in"]) { array = [inNames allKeys]; isIn = YES; } else if ([first isEqualToString: @"out"]) { array = [outNames allKeys]; } else { return S2AS(_(@"Usage: /load ")); } second = ([x count] > 1) ? [x objectAtIndex: 1] : nil; if (second && [array containsObject: second]) { key = second; } else if (second) { NSEnumerator *iter; iter = [array objectEnumerator]; while ((key = [iter nextObject])) { if ([[key lowercaseString] isEqualToString: second]) break; } } if (!second || !key) { return BuildAttributedString( _(@"Usage: /load "), @"\n", MARK, IRCBold, IRCBoldValue, _(@"Possible filters: "), [array componentsJoinedByString: @", "], nil); } if (isIn) { [self activateInFilter: key]; } else { [self activateOutFilter: key]; } return BuildAttributedString(key, _(@" loaded"), nil); } - (NSAttributedString *)commandUnload: (NSString *)args connection: (id)connection { id x = [args separateIntoNumberOfArguments: 3]; id first, second; id key; id array = nil; BOOL isIn = NO; if ([x count] < 1) { return S2AS(_(@"Usage: /unload ")); } first = [x objectAtIndex: 0]; if ([first isEqualToString: @"in"]) { array = [self activatedInFilters]; isIn = YES; } else if ([first isEqualToString: @"out"]) { array = [self activatedOutFilters]; } else { return S2AS(_(@"Usage: /unload ")); } second = ([x count] > 1) ? [x objectAtIndex: 1] : nil; if (second && [array containsObject: second]) { key = second; } else if (second) { NSEnumerator *iter; iter = [array objectEnumerator]; while ((key = [iter nextObject])) { if ([[key lowercaseString] isEqualToString: second]) break; } } if (!second || !key) { return BuildAttributedString( _(@"Usage: /unload "), @"\n", MARK, IRCBold, IRCBoldValue, _(@"Possible filters: "), [array componentsJoinedByString: @", "], nil); } if (isIn) { [self deactivateInFilter: key]; } else { [self deactivateOutFilter: key]; } return BuildAttributedString(key, _(@" unloaded"), nil); } - (NSAttributedString *)commandJoin: (NSString *)aString connection: connection { NSArray *x = [aString separateIntoNumberOfArguments: 3]; id pass; if (!connection) return NO_CONNECT; if ([x count] == 0) { return S2AS(_(@"Usage: /join [password1[,password2...]]")); } pass = ([x count] == 2) ? [x objectAtIndex: 1] : nil; [_TS_ joinChannel: S2AS([x objectAtIndex: 0]) withPassword: S2AS(pass) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandMsg: (NSString *)aString connection: connection { NSArray *x = [aString separateIntoNumberOfArguments: 2]; if (!connection) return NO_CONNECT; if ([x count] < 2) { return S2AS(_(@"Usage: /msg ")); } [_TS_ sendMessage: S2AS([x objectAtIndex: 1]) to: S2AS([x objectAtIndex: 0]) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandPart: (NSString *)args connection: connection { id x = [args separateIntoNumberOfArguments: 2]; id name, msg; if (!connection) return NO_CONNECT; msg = name = nil; if ([x count] >= 1) { name = [x objectAtIndex: 0]; } if ([x count] >= 2) { msg = [x objectAtIndex: 1]; } if (!name) { return S2AS(_(@"Usage: /part [message]")); } [_TS_ partChannel: S2AS(name) withMessage: S2AS(msg) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandNotice: (NSString *)aString connection: connection { NSArray *x = [aString separateIntoNumberOfArguments: 2]; if (!connection) return NO_CONNECT; if ([x count] < 2) { return S2AS(_(@"Usage: /notice ")); } [_TS_ sendNotice: S2AS([x objectAtIndex: 1]) to: S2AS([x objectAtIndex: 0]) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandAway: (NSString *)aString connection: connection { NSArray *x = [aString separateIntoNumberOfArguments: 1]; id y = nil; if (!connection) return NO_CONNECT; if ([x count] > 0) { y = [x objectAtIndex: 0]; } [_TS_ setAwayWithMessage: S2AS(y) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - commandNick: (NSString *)aString connection: connection { NSArray *x = [aString separateIntoNumberOfArguments: 2]; if (!connection) return NO_CONNECT; if ([x count] == 0) { return S2AS(_(@"Usage: /nick ")); } [_TS_ changeNick: S2AS([x objectAtIndex: 0]) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandQuit: (NSString *)aString connection: connection { if (!connection) return NO_CONNECT; [_TS_ quitWithMessage: S2AS(aString) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandColors: (NSString *)aString connection: connection { return BuildAttributedString( _(@"Valid color names include any color from the following list: "), [PossibleUserColors() componentsJoinedByString: @", "], @"\n", _(@"Also, a string is valid if it is of the form 'custom [red] [green] [blue]' "), _(@"where [red], [green], [blue] are the red, green, and blue "), _(@"components of the color on a scale of 0 to 1000."), nil); } - (NSAttributedString *)commandCtcp: (NSString *)command connection: connection { id array; id ctcp; id args; id who; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 3]; if ([array count] < 2) { return S2AS(_(@"Usage: /ctcp [arguments]")); } args = ([array count] == 3) ? [array objectAtIndex: 2] : nil; ctcp = [[array objectAtIndex: 1] uppercaseString]; who = [array objectAtIndex: 0]; [_TS_ sendCTCPRequest: S2AS(ctcp) withArgument: S2AS(args) to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandVersion: (NSString *)command connection: connection { id array; id who; array = [command separateIntoNumberOfArguments: 2]; if (!connection) return NO_CONNECT; if ([array count] == 0) { return S2AS(_(@"Usage: /version ")); } who = [array objectAtIndex: 0]; [_TS_ sendCTCPRequest: S2AS(@"VERSION") withArgument: nil to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandClientinfo: (NSString *)command connection: connection { id array; id who; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 2]; if ([array count] == 0) { return S2AS(_(@"Usage: /clientinfo ")); } who = [array objectAtIndex: 0]; [_TS_ sendCTCPRequest: S2AS(@"CLIENTINFO") withArgument: nil to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandUserinfo: (NSString *)command connection: connection { id array; id who; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 2]; if ([array count] == 0) { return S2AS(_(@"Usage: /userinfo ")); } who = [array objectAtIndex: 0]; [_TS_ sendCTCPRequest: S2AS(@"USERINFO") withArgument: nil to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandPing: (NSString *)command connection: connection { id array; id who; id arg = nil; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 2]; if ([array count] <= 1) { return S2AS(_(@"Usage: /ping ")); } who = [array objectAtIndex: 0]; arg = [array objectAtIndex: 1]; [_TS_ sendCTCPRequest: S2AS(@"PING") withArgument: S2AS(arg) to: S2AS(who) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandTopic: (NSString *)command connection: connection { id array; id who; id arg = nil; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 2]; if ([array count] < 1) { return S2AS(_(@"Usage: /topic [topic]")); } who = [array objectAtIndex: 0]; if ([array count] > 1) { arg = [array objectAtIndex: 1]; } [_TS_ setTopicForChannel: S2AS(who) to: S2AS(arg) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandKick: (NSString *)command connection: connection { id array; id who; id arg = nil; id chan; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 3]; if ([array count] <= 1) { return S2AS(_(@"Usage: /kick [comment]")); } who = [array objectAtIndex: 1]; chan = [array objectAtIndex: 0]; if ([array count] > 2) { arg = [array objectAtIndex: 2]; } [_TS_ kick: S2AS(who) offOf: S2AS(chan) for: S2AS(arg) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandRaw: (NSString *)command connection: connection { id array; id arg = nil; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 1]; if ([array count] == 0) { return S2AS(_(@"Usage: /raw ")); } arg = [array objectAtIndex: 0]; [_TS_ writeRawString: S2AS(arg) onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandMode: (NSString *)command connection: connection { id array; id mode; id arg = AUTORELEASE([NSMutableArray new]); id obj; int ind, max; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: -1]; max = [array count]; if (max <= 1) { return S2AS(_(@"Usage: /mode [arguments]")); } mode = [array objectAtIndex: 1]; obj = [array objectAtIndex: 0]; for (ind = 2; ind < max; ind++) { [arg addObject: S2AS([array objectAtIndex: ind])]; } [_TS_ setMode: S2AS(mode) on: S2AS(obj) withParams: arg onConnection: connection withNickname: S2AS([connection nick]) sender: output]; return nil; } - (NSAttributedString *)commandEncoding: (NSString *)command connection: connection { id array; id arg = nil; NSStringEncoding enc = 0; if (!connection) return NO_CONNECT; array = [command separateIntoNumberOfArguments: 2]; if ([array count] > 0) { arg = [array objectAtIndex: 0]; arg = [arg lowercaseString]; } if (arg) enc = [_TS_ encodingForIdentifier: arg]; if (!enc) { NSMutableAttributedString *string; const NSStringEncoding *iter; string = AUTORELEASE([NSMutableAttributedString new]); for (iter = [_TS_ allEncodings]; *iter; iter++) { NSAttributedString *thisone; if ([string length] > 0) [string appendAttributedString: S2AS(@", ")]; thisone = BuildAttributedString(@"(", MARK, IRCBold, IRCBoldValue, [_TS_ identifierForEncoding: *iter], @")", [_TS_ nameForEncoding: *iter], nil); [string appendAttributedString: thisone]; } return BuildAttributedString(_(@"Usage: /encoding "), @"\n", MARK, IRCBold, IRCBoldValue, _(@"Available encodings: "), string, @"\n", _(@"Current encoding: "), @"(", MARK, IRCBold, IRCBoldValue, [_TS_ identifierForEncoding: [connection encoding]], @")", [_TS_ nameForEncoding: [connection encoding]], nil); } [connection setEncoding: enc]; return S2AS(_(@"Ok.")); } - (void)setupCommandList { #define ADD_COMMAND(_sel, _name) { id invoc; \ invoc = [NSInvocation invocationWithMethodSignature: \ [self methodSignatureForSelector: \ (_sel)]]; \ [invoc retainArguments];\ [invoc setSelector: (_sel)];\ [invoc setTarget: self];\ [self addCommand: (_name) withInvocation: invoc];} ADD_COMMAND(@selector(commandLoad:connection:), @"load"); ADD_COMMAND(@selector(commandUnload:connection:), @"unload"); ADD_COMMAND(@selector(commandLoaded:connection:), @"loaded"); ADD_COMMAND(@selector(commandSaveLoaded:connection:), @"saveloaded"); ADD_COMMAND(@selector(commandJoin:connection:), @"join"); ADD_COMMAND(@selector(commandMsg:connection:), @"msg"); ADD_COMMAND(@selector(commandPart:connection:), @"part"); ADD_COMMAND(@selector(commandNotice:connection:), @"notice"); ADD_COMMAND(@selector(commandAway:connection:), @"away"); ADD_COMMAND(@selector(commandQuit:connection:), @"quit"); ADD_COMMAND(@selector(commandColors:connection:), @"colors"); ADD_COMMAND(@selector(commandCtcp:connection:), @"ctcp"); ADD_COMMAND(@selector(commandVersion:connection:), @"version"); ADD_COMMAND(@selector(commandClientinfo:connection:), @"clientinfo"); ADD_COMMAND(@selector(commandUserinfo:connection:), @"userinfo"); ADD_COMMAND(@selector(commandPing:connection:), @"ping"); ADD_COMMAND(@selector(commandTopic:connection:), @"topic"); ADD_COMMAND(@selector(commandKick:connection:), @"kick"); ADD_COMMAND(@selector(commandRaw:connection:), @"raw"); ADD_COMMAND(@selector(commandMode:connection:), @"mode"); ADD_COMMAND(@selector(commandEncoding:connection:), @"encoding"); #undef ADD_COMMAND } @end #undef MARK TalkSoup-1.0alpha-32-g55b4d4e/Source/main.m000066400000000000000000000055331067163320700201420ustar00rootroot00000000000000/*************************************************************************** main.m ------------------- begin : Fri Jan 17 11:38:55 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import #import "commands.h" #import #import #import #import #import #import #import #import #import #import #include #include #include @interface NSException (blah) @end @implementation NSException (blah) #if 0 - (void)raise { abort(); } #endif @end id GetSetting(NSString *key) { NSDictionary *obj; NSUserDefaults *ud; ud = [NSUserDefaults standardUserDefaults]; if (!(obj = [ud objectForKey: key])) { obj = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"Defaults" ofType: @"plist"]]; if ([key isEqualToString: @"Plugins"]) { NSEnumerator *iter; id object; iter = [obj keyEnumerator]; while ((object = [iter nextObject])) { [ud setObject: [obj objectForKey: object] forKey: object]; } } obj = [obj objectForKey: key]; if (obj) { [ud setObject: obj forKey: key]; } } return obj; } int main(void) { NSDictionary *defaultPlugins; CREATE_AUTORELEASE_POOL(apr); signal(SIGPIPE, SIG_IGN); #ifdef GNUSTEP #ifdef DOUBLE_RELEASE_COUNT [NSObject enableDoubleReleaseCheck: YES]; #endif #endif srand(time(NULL)); [TalkSoup sharedInstance]; defaultPlugins = GetSetting(@"Plugins"); [_TS_ setInput: [defaultPlugins objectForKey: @"Input"]]; [_TS_ setOutput: [defaultPlugins objectForKey: @"Output"]]; [_TS_ setActivatedInFilters: [defaultPlugins objectForKey: @"InFilters"]]; [_TS_ setActivatedOutFilters: [defaultPlugins objectForKey: @"OutFilters"]]; [_TS_ setupCommandList]; [[_TS_ pluginForOutput] run]; DESTROY(apr); return EXIT_SUCCESS; } TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/000077500000000000000000000000001067163320700206515ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/Dummy.h000066400000000000000000000022271067163320700221200ustar00rootroot00000000000000/*************************************************************************** Dummy.h ------------------- begin : Sat Apr 5 22:07:20 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class TalkSoupDummyProtocolClass; #ifndef DUMMY_H #define DUMMY_H #import @interface TalkSoupDummyProtocolClass : NSObject @end #endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/Dummy.m000066400000000000000000000325061067163320700221300ustar00rootroot00000000000000/*************************************************************************** Dummy.m ------------------- begin : Sat Apr 5 22:03:18 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Dummy.h" #import #import #import @implementation TalkSoupDummyProtocolClass - pluginActivated { return nil; } - pluginDeactivated { return nil; } - controlObject: (id)aObject onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - changeNick: (NSAttributedString *)newNick onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - joinChannel: (NSAttributedString *)channel withPassword: (NSAttributedString *)aPassword onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - becomeOperatorWithName: (NSAttributedString *)aName withPassword: (NSAttributedString *)pass onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestNamesOnChannel: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestMOTDOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestSizeInformationFromServer: (NSAttributedString *)aServer andForwardTo: (NSAttributedString *)anotherServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestVersionOfServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerStats: (NSAttributedString *)aServer for: (NSAttributedString *)query onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerLink: (NSAttributedString *)aLink from: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestTimeOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerToConnect: (NSAttributedString *)aServer to: (NSAttributedString *)connectServer onPort: (NSAttributedString *)aPort onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestTraceOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestAdministratorOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerRehashOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerShutdownOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestServerRestartOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - requestUserInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - areUsersOn: (NSAttributedString *)userList onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - listWho: (NSAttributedString *)aMask onlyOperators: (BOOL)operators onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - whois: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - whowas: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer withNumberEntries: (NSAttributedString *)aNumber onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - kill: (NSAttributedString *)aPerson withComment: (NSAttributedString *)aComment onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - setMode: (NSAttributedString *)aMode on: (NSAttributedString *)anObject withParams: (NSArray *)list onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - listChannel: (NSAttributedString *)aChannel onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - invite: (NSAttributedString *)aPerson to: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendPingWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - sendPongWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - writeRawString: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - (NSString *)identification { return nil; } - newConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - lostConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - registeredWithServerOnConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - couldNotRegister: (NSAttributedString *)reason onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - errorReceived: (NSAttributedString *)anError onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - modeChanged: (NSAttributedString *)mode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - pingReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - pongReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } - newNickNeededWhileRegisteringOnConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin { return nil; } @end TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/Encodings.h000066400000000000000000000030401067163320700227300ustar00rootroot00000000000000/*************************************************************************** Encodings.h ------------------- begin : Sat Sep 3 15:18:19 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef TALKSOUP_BUNDLES_ENCODINGS_H #define TALKSOUP_BUNDLES_ENCODINGS_H #import "TalkSoup.h" #import @class NSArray; @interface TalkSoup (Encodings) - (NSStringEncoding)encodingForName: (NSString *)aName; - (NSString *)nameForEncoding: (NSStringEncoding)aEncoding; - (NSArray *)allEncodingNames; - (NSArray *)allEncodingIdentifiers; - (const NSStringEncoding *)allEncodings; - (NSString *)identifierForEncoding: (NSStringEncoding)aEncoding; - (NSStringEncoding)encodingForIdentifier: (NSString *)aIdentifier; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/Encodings.m000066400000000000000000000054351067163320700227470ustar00rootroot00000000000000/*************************************************************************** Encodings.m ------------------- begin : Sat Sep 3 15:18:19 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "Encodings.h" #import #import #import #include static inline NSString *identifierForEncoding(NSStringEncoding encoding) { return [NSString stringWithFormat: @"%u", (unsigned)encoding]; } static inline NSStringEncoding encodingForIdentifier(NSString *ident) { unsigned ret; sscanf([ident cStringUsingEncoding: NSASCIIStringEncoding], "%u", &ret); return (NSStringEncoding)ret; } @implementation TalkSoup (Encodings) - (NSStringEncoding)encodingForName: (NSString *)aName { const NSStringEncoding *iter = [NSString availableStringEncodings]; for (; *iter; iter++) { if ([aName isEqualToString: [NSString localizedNameOfStringEncoding: *iter]]) return *iter; } return 0; } - (NSString *)nameForEncoding: (NSStringEncoding)aEncoding { return [NSString localizedNameOfStringEncoding: aEncoding]; } - (NSArray *)allEncodingNames { const NSStringEncoding *iter = [NSString availableStringEncodings]; NSMutableArray *array = AUTORELEASE([NSMutableArray new]); for (; *iter; iter++) { [array addObject: [NSString localizedNameOfStringEncoding: *iter]]; } return [NSArray arrayWithArray: array]; } - (NSArray *)allEncodingIdentifiers { const NSStringEncoding *iter = [NSString availableStringEncodings]; NSMutableArray *array = AUTORELEASE([NSMutableArray new]); for (; *iter; iter++) { [array addObject: identifierForEncoding(*iter)]; } return [NSArray arrayWithArray: array]; } - (const NSStringEncoding *)allEncodings { return [NSString availableStringEncodings]; } - (NSString *)identifierForEncoding: (NSStringEncoding)aEncoding { return identifierForEncoding(aEncoding); } - (NSStringEncoding)encodingForIdentifier: (NSString *)aIdentifier { return encodingForIdentifier(aIdentifier); } @end TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/English.lproj/000077500000000000000000000000001067163320700233675ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/English.lproj/Localizable.strings000066400000000000000000000060031067163320700272220ustar00rootroot00000000000000/* Functions.m */ "white" = "white"; "black" = "black"; "blue" = "blue"; "green" = "green"; "red" = "red"; "maroon" = "maroon"; "magenta" = "magenta"; "orange" = "orange"; "yellow" = "yellow"; "light green" = "light green"; "teal" = "teal"; "light cyan" = "light cyan"; "light blue" = "light blue"; "light magenta" = "light magenta"; "light grey" = "light grey"; "grey" = "grey"; "custom" = "custom"; /* TalkSoup.m */ "Connect to a server before using this command" = "Connect to a server before using this command"; "The loaded bundles will now load automagically on TalkSoup startup." = "The loaded bundles will now load automagically on TalkSoup startup."; "Currently loaded bundles:\n" = "Currently loaded bundles:\n"; "Output: " = "Output: "; "Input: " = "Input: "; "Output Filters: " = "Output Filters: "; "Input Filters: " = "Input Filters: "; "Usage: /load " = "Usage: /load "; "Usage: /load " = "Usage: /load "; "Usage: /load " = "Usage: /load "; "Possible filters: " = "Possible filters: "; " loaded" = " loaded"; "Usage: /unload " = "Usage: /unload "; "Usage: /unload " = "Usage: /unload "; "Usage: /unload " = "Usage: /unload "; "Possible filters: " = "Possible filters: "; " unloaded" = " unloaded"; "Usage: /join [password1[,password2...]]" = "Usage: /join [password1[,password2...]]"; "Usage: /msg " = "Usage: /msg "; "Usage: /part [message]" = "Usage: /part [message]"; "Usage: /notice " = "Usage: /notice "; "Usage: /nick " = "Usage: /nick "; "Valid color names include any color from the following list: " = "Valid color names include any color from the following list: "; "Also, a string is valid if it is of the form 'custom [red] [green] [blue]' " = "Also, a string is valid if it is of the form 'custom [red] [green] [blue]' "; "where [red], [green], [blue] are the red, green, and blue " = "where [red], [green], [blue] are the red, green, and blue "; "components of the color on a scale of 0 to 1000." = "components of the color on a scale of 0 to 1000."; "Usage: /ctcp [arguments]" = "Usage: /ctcp [arguments]"; "Usage: /version " = "Usage: /version "; "Usage: /clientinfo " = "Usage: /clientinfo "; "Usage: /userinfo " = "Usage: /userinfo "; "Usage: /ping " = "Usage: /ping "; "Usage: /topic [topic]" = "Usage: /topic [topic]"; "Usage: /kick [comment]" = "Usage: /kick [comment]"; "Usage: /raw " = "Usage: /raw "; "Usage: /mode [arguments]" = "Usage: /mode [arguments]"; "Usage: /encoding " = "Usage: /encoding "; "Available encodings: " = "Available encodings: "; "Current encoding: " = "Current encoding: "; "Ok." = "Ok."; TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/Functions.m000066400000000000000000000343111067163320700230010ustar00rootroot00000000000000/*************************************************************************** Functions.m ------------------- begin : Sat Apr 5 22:21:33 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "TalkSoup.h" #import "TalkSoupPrivate.h" #import #import #import #import #import #import #import #import #import #import #import #include static NSDictionary *mappings = nil; static void build_mappings(void) { RELEASE(mappings); mappings = RETAIN(([NSDictionary dictionaryWithObjectsAndKeys: IRCColorWhite, _l(@"white"), IRCColorBlack, _l(@"black"), IRCColorBlue, _l(@"blue"), IRCColorGreen, _l(@"green"), IRCColorRed, _l(@"red"), IRCColorMaroon, _l(@"maroon"), IRCColorMagenta, _l(@"magenta"), IRCColorOrange, _l(@"orange"), IRCColorYellow, _l(@"yellow"), IRCColorLightGreen, _l(@"light green"), IRCColorTeal, _l(@"teal"), IRCColorLightCyan, _l(@"light cyan"), IRCColorLightBlue, _l(@"light blue"), IRCColorLightMagenta, _l(@"light magenta"), IRCColorLightGrey, _l(@"light grey"), IRCColorGrey, _l(@"grey"), nil])); } NSString *IRCColorFromUserColor(NSString *string) { id x; if (!mappings) build_mappings(); string = [string lowercaseString]; x = [mappings objectForKey: string]; if ([string hasPrefix: _l(@"custom")]) { int r,g,b; id scan; scan = [NSScanner scannerWithString: string]; [scan scanUpToCharactersFromSet: [NSCharacterSet whitespaceCharacterSet] intoString: 0]; [scan scanInt: &r]; [scan scanInt: &g]; [scan scanInt: &b]; r = r % 1001; g = g % 1001; b = b % 1001; return [NSString stringWithFormat: @"IRCColorCustom %d %d %d", r, g, b]; } return x; } NSArray *PossibleUserColors(void) { if (!mappings) build_mappings(); return [mappings allKeys]; } static NSArray *get_first_word(NSString *arg) { NSRange aRange; NSString *first, *rest; id white = [NSCharacterSet whitespaceCharacterSet]; arg = [arg stringByTrimmingCharactersInSet: white]; if ([arg length] == 0) { return [NSArray arrayWithObjects: nil]; } aRange = [arg rangeOfCharacterFromSet: white]; if (aRange.location == NSNotFound && aRange.length == 0) { return [NSArray arrayWithObjects: arg, nil]; } rest = [[arg substringFromIndex: aRange.location] stringByTrimmingCharactersInSet: white]; first = [arg substringToIndex: aRange.location]; return [NSArray arrayWithObjects: first, rest, nil]; } @implementation NSString (Separation) - separateIntoNumberOfArguments: (int)num { NSMutableArray *array = AUTORELEASE([NSMutableArray new]); id object; int temp; id string = self; if (num == 0) { return [NSArray arrayWithObject: string]; } if (num == 1) { return [NSArray arrayWithObject: [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]]; } if (num == 2) { return get_first_word(string); } while (num != 1) { object = get_first_word(string); temp = [object count]; switch(temp) { case 0: return [NSArray arrayWithObjects: nil]; case 1: [array addObject: [object objectAtIndex: 0]]; return array; case 2: string = [object objectAtIndex: 1]; [array addObject: [object objectAtIndex: 0]]; if (num > 0) num--; } } [array addObject: string]; return array; } @end @implementation NSMutableAttributedString (AttributesAppend) - (void)addAttributeIfNotPresent: (NSString *)name value: (id)aVal withRange: (NSRange)aRange { NSRange effect; NSDictionary *aDict; NSMutableDictionary *aDict2; if ([self length] == 0) return; [self beginEditing]; aDict = [self attributesAtIndex: aRange.location effectiveRange: &effect]; while (1) { if (![aDict objectForKey: name]) { if (effect.location + effect.length > aRange.location + aRange.length) { effect.length = aRange.location + aRange.length - effect.location; } aDict2 = [NSMutableDictionary dictionaryWithDictionary: aDict]; [aDict2 setObject: aVal forKey: name]; [self setAttributes: aDict2 range: effect]; } effect.location = effect.location + effect.length; if (effect.location < aRange.length + aRange.location) { aDict = [self attributesAtIndex: effect.location effectiveRange: &effect]; } else { break; } } [self endEditing]; } - (void)replaceAttribute: (NSString *)name withValue: (id)aVal withValue: (id)newVal withRange: (NSRange)aRange { NSRange effect; NSDictionary *aDict; NSMutableDictionary *aDict2; if ([self length] == 0) return; [self beginEditing]; aDict = [self attributesAtIndex: aRange.location effectiveRange: &effect]; while (1) { if ([[aDict objectForKey: name] isEqual: aVal]) { if (effect.location + effect.length > aRange.location + aRange.length) { effect.length = aRange.location + aRange.length - effect.location; } aDict2 = [NSMutableDictionary dictionaryWithDictionary: aDict]; [aDict2 setObject: newVal forKey: name]; [self setAttributes: aDict2 range: effect]; } effect.location = effect.location + effect.length; if (effect.location < aRange.length + aRange.location) { aDict = [self attributesAtIndex: effect.location effectiveRange: &effect]; } else { break; } } [self endEditing]; } - (void)setAttribute: (NSString *)name toValue: (id)aVal inRangesWithAttribute: (NSString *)name2 matchingValue: (id)aVal2 withRange: (NSRange)aRange { NSRange effect; NSDictionary *aDict; NSMutableDictionary *aDict2; id temp; if ([self length] == 0) return; if (!name2) return; [self beginEditing]; aDict = [self attributesAtIndex: aRange.location effectiveRange: &effect]; while (1) { temp = [aDict objectForKey: name2]; if ([temp isEqual: aVal2] || temp == aVal2) { if (effect.location + effect.length > aRange.location + aRange.length) { effect.length = aRange.location + aRange.length - effect.location; } aDict2 = [NSMutableDictionary dictionaryWithDictionary: aDict]; [aDict2 setObject: aVal forKey: name]; [self setAttributes: aDict2 range: effect]; } effect.location = effect.location + effect.length; if (effect.location < aRange.length + aRange.location) { aDict = [self attributesAtIndex: effect.location effectiveRange: &effect]; } else { break; } } [self endEditing]; } - (void)setAttribute: (NSString *)name toValue: (id)aVal inRangesWithAttributes: (NSArray *)name2 matchingValues: (NSArray *)aVal2 withRange: (NSRange)aRange { NSRange effect; NSDictionary *aDict; NSMutableDictionary *aDict2; id temp; id object1; id object2; BOOL doIt; NSEnumerator *iter1; NSEnumerator *iter2; if ([self length] == 0) return; [self beginEditing]; aDict = [self attributesAtIndex: aRange.location effectiveRange: &effect]; while (1) { iter1 = [name2 objectEnumerator]; iter2 = [aVal2 objectEnumerator]; doIt = YES; while ((object1 = [iter1 nextObject]) && (object2 = [iter2 nextObject])) { temp = [aDict objectForKey: object1]; if (![temp isEqual: object2] && (temp || ![object2 isKindOfClass: [NSNull class]])) { doIt = NO; break; } } if (doIt) { if (effect.location + effect.length > aRange.location + aRange.length) { effect.length = aRange.location + aRange.length - effect.location; } aDict2 = [NSMutableDictionary dictionaryWithDictionary: aDict]; [aDict2 setObject: aVal forKey: name]; [self setAttributes: aDict2 range: effect]; } effect.location = effect.location + effect.length; if (effect.location < aRange.length + aRange.location) { aDict = [self attributesAtIndex: effect.location effectiveRange: &effect]; } else { break; } } [self endEditing]; } @end static NSCharacterSet *wildcardCharacters = nil; static NSCharacterSet *normalCharacters = nil; @implementation NSString (IRCWildcards) - (BOOL)matchesIRCWildcard: (NSString *)wildcard { NSScanner *scanner = [NSScanner scannerWithString: wildcard]; NSString *read; unichar special; NSString *left = self; if (!wildcardCharacters) { wildcardCharacters = RETAIN([NSCharacterSet characterSetWithCharactersInString: @"*?"]); normalCharacters = RETAIN([wildcardCharacters invertedSet]); } while (![scanner isAtEnd]) { unsigned charsskip; unsigned charsleft; if (![scanner scanUpToCharactersFromSet: wildcardCharacters intoString: &read]) read = @""; charsskip = [read length]; if (charsskip && ![left hasPrefix: read]) return NO; left = [left substringFromIndex: charsskip]; charsleft = [left length]; if ([scanner isAtEnd]) { /* If we have chars left and we are at the wc end, oops */ if (charsleft > 0) return NO; return YES; } /* Next char is a wildcard */ special = [wildcard characterAtIndex: charsskip]; wildcard = [wildcard substringFromIndex: charsskip + 1]; [scanner setScanLocation: [scanner scanLocation] + 1]; if (special == '*') { unsigned j; if ([scanner isAtEnd]) /* Last char is an asterick? that matches */ return YES; for (j = 0; j <= charsleft; j++) { /* Look for a recursive match to work */ if ([[left substringFromIndex: j] matchesIRCWildcard: wildcard]) return YES; } return NO; } /* We are doing a question mark, if we have a char left, keep going */ if (charsleft == 0) return NO; else left = [left substringFromIndex: 1]; } return ([left length] == 0) ? YES : NO; } @end NSMutableAttributedString *BuildAttributedString(id aObject, ...) { va_list ap; NSMutableAttributedString *str; id objects; id keys; int state = 0; id newstr = nil; int x; int y; if (aObject == nil) return AUTORELEASE([[NSMutableAttributedString alloc] initWithString: @""]); objects = [NSMutableArray new]; keys = [NSMutableArray new]; str = AUTORELEASE([[NSMutableAttributedString alloc] initWithString: @""]); va_start(ap, aObject); do { if (state != 0) { if (state == 1) { [keys addObject: aObject]; state = 2; } else if (state == 2) { [objects addObject: aObject]; state = 0; } } else { if ([aObject isKindOfClass: [NSNull class]]) { state = 1; } else { if ([aObject isKindOfClass: [NSAttributedString class]]) { newstr = [[NSMutableAttributedString alloc] initWithAttributedString: aObject]; } else { newstr = [[NSMutableAttributedString alloc] initWithString: [aObject description]]; } if (newstr) { y = [objects count]; for (x = 0; x < y; x++) { [newstr addAttributeIfNotPresent: [keys objectAtIndex: x] value: [objects objectAtIndex: x] withRange: NSMakeRange(0, [newstr length])]; } [objects removeAllObjects]; [keys removeAllObjects]; [str appendAttributedString: newstr]; DESTROY(newstr); } } } } while ((aObject = va_arg(ap, id))); va_end(ap); RELEASE(objects); RELEASE(keys); return str; } NSMutableAttributedString *BuildAttributedFormat(id aObject, ...) { va_list ap; NSMutableAttributedString *str; NSString *format; NSRange range; NSRange tmpr; int len; id tmp = nil; str = AUTORELEASE([[NSMutableAttributedString alloc] initWithString: @""]); if (aObject == nil) return str; if ([aObject isKindOfClass: [NSString class]]) { aObject = AUTORELEASE([[NSAttributedString alloc] initWithString: aObject]); } else if (![aObject isKindOfClass: [NSAttributedString class]]) { return str; } va_start(ap, aObject); format = [aObject string]; range.location = 0; range.length = len = [format length]; while ((int)range.location < len) { tmpr = [format rangeOfString: @"%@" options: 0 range: range]; if (tmpr.location == NSNotFound) { [str appendAttributedString: [aObject attributedSubstringFromRange: range]]; return str; } else { NSRange oldRange = range; range.location = tmpr.location + 2; range.length = len - range.location; tmpr.length = tmpr.location - oldRange.location; tmpr.location = oldRange.location; [str appendAttributedString: [aObject attributedSubstringFromRange: tmpr]]; tmp = va_arg(ap, id); if ([tmp isKindOfClass: [NSString class]]) { tmp = AUTORELEASE([[NSAttributedString alloc] initWithString: tmp]); } else if (![tmp isKindOfClass: [NSAttributedString class]]) { tmp = AUTORELEASE([[NSAttributedString alloc] initWithString: [tmp description]]); } [str appendAttributedString: tmp]; } } va_end(ap); return str; } NSArray *IRCUserComponents(NSAttributedString *from) { NSArray *components = [[from string] componentsSeparatedByString: @"!"]; NSAttributedString *string1, *string2; NSRange aRange = {0, 0}; if (from) { aRange.location = 0; aRange.length = [[components objectAtIndex: 0] length]; string1 = [from attributedSubstringFromRange: aRange]; aRange.location = aRange.length + 1; } else { string1 = AUTORELEASE([[NSAttributedString alloc] initWithString: @""]); } if (((int)[from length] - (int)aRange.location) <= 0) { string2 = AUTORELEASE([[NSAttributedString alloc] initWithString: @""]); } else { aRange.length = [from length] - aRange.length - 1; string2 = [from attributedSubstringFromRange: aRange]; } return [NSArray arrayWithObjects: string1, string2, nil]; } TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/GNUmakefile000066400000000000000000000010311067163320700227160ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make FRAMEWORK_NAME = TalkSoupBundles TalkSoupBundles_LANGUAGES = English TalkSoupBundles_LOCALIZED_RESOURCE_FILES = Localizable.strings TalkSoupBundles_HEADER_FILES = TalkSoup.h TalkSoupProtocols.h TalkSoupMisc.h Encodings.h TalkSoupBundles_OBJC_FILES = TalkSoup.m Functions.m Dummy.m Encodings.m TalkSoupBundles_CURRENT_VERSION_NAME=0.990 TalkSoupBundles_DEPLOY_WITH_CURRENT_VERSION=yes -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/framework.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/GNUmakefile.preamble000066400000000000000000000003361067163320700245130ustar00rootroot00000000000000ADDITIONAL_OBJCFLAGS += -Wall ifeq ($(OBJC_RUNTIME_LIB), apple) LIB_LINK_INSTALL_NAME = @executable_path/../Frameworks/TalkSoupBundles.framework/TalkSoupBundles ADDITIONAL_OBJCFLAGS += -I../Misc -include GNUstep.h endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/TalkSoup.h000066400000000000000000000102611067163320700225640ustar00rootroot00000000000000/*************************************************************************** TalkSoup.h ------------------- begin : Fri Jan 17 11:04:36 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ @class TalkSoup, TalkSoupDummyProtocolClass, NSString, NSArray; /* object: the preference string * * dictionary: * @"Bundle" the bundle object * @"Old" the old value * @"New" the new value * @"Owner" the owner of the preference change */ extern NSString *DefaultsChangedNotification; // Defaults stuff extern NSString *IRCDefaultsNick; extern NSString *IRCDefaultsRealName; extern NSString *IRCDefaultsUserName; extern NSString *IRCDefaultsPassword; // Attributed string stuff #ifdef S2AS #undef S2AS #endif #define S2AS(_x) AUTORELEASE([[NSAttributedString alloc] initWithString: \ (_x)]) // Key extern NSString *IRCColor; extern NSString *IRCBackgroundColor; // Values extern NSString *IRCColorWhite; extern NSString *IRCColorBlack; extern NSString *IRCColorBlue; extern NSString *IRCColorGreen; extern NSString *IRCColorRed; extern NSString *IRCColorMaroon; extern NSString *IRCColorMagenta; extern NSString *IRCColorOrange; extern NSString *IRCColorYellow; extern NSString *IRCColorLightGreen; extern NSString *IRCColorTeal; extern NSString *IRCColorLightCyan; extern NSString *IRCColorLightBlue; extern NSString *IRCColorLightMagenta; extern NSString *IRCColorGrey; extern NSString *IRCColorLightGrey; extern NSString *IRCColorCustom; // Keys extern NSString *IRCBold; extern NSString *IRCBoldValue; extern NSString *IRCUnderline; extern NSString *IRCUnderlineValue; extern NSString *IRCReverse; extern NSString *IRCReverseValue; #ifndef TALKSOUP_H #define TALKSOUP_H #import #import #import #import @class NSInvocation, NSString, NSMutableDictionary, NSMutableArray; extern id _TS_; extern id _TSDummy_; @interface TalkSoup : NSObject { NSMutableDictionary *inputNames; NSString *activatedInput; id input; NSMutableDictionary *outputNames; NSString *activatedOutput; id output; NSMutableDictionary *inNames; NSMutableArray *activatedInFilters; NSMutableDictionary *inObjects; NSMutableDictionary *outNames; NSMutableArray *activatedOutFilters; NSMutableDictionary *outObjects; NSMutableDictionary *commandList; } + (TalkSoup *)sharedInstance; - (void)refreshPluginList; - (void)savePluginList; - (NSInvocation *)invocationForCommand: (NSString *)aCommand; - addCommand: (NSString *)aCommand withInvocation: (NSInvocation *)invoc; - removeCommand: (NSString *)aCommand; - (NSArray *)allCommands; - (NSString *)input; - (NSString *)output; - (NSDictionary *)allInputs; - (NSDictionary *)allOutputs; - setInput: (NSString *)aInput; - setOutput: (NSString *)aOutput; - (NSArray *)activatedInFilters; - (NSArray *)activatedOutFilters; - (NSDictionary *)allInFilters; - (NSDictionary *)allOutFilters; - activateInFilter: (NSString *)aFilt; - activateOutFilter: (NSString *)aFilt; - deactivateInFilter: (NSString *)aFilt; - deactivateOutFilter: (NSString *)aFilt; - setActivatedInFilters: (NSArray *)filters; - setActivatedOutFilters: (NSArray *)filters; - (id)pluginForOutput; - (id)pluginForOutFilter: (NSString *)aFilt; - (id)pluginForInFilter: (NSString *)aFilt; - (id)pluginForInput; @end #import #endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/TalkSoup.m000066400000000000000000000400511067163320700225710ustar00rootroot00000000000000/*************************************************************************** TalkSoup.m ------------------- begin : Fri Jan 17 11:04:36 CST 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "TalkSoup.h" #import "TalkSoupPrivate.h" #import "Dummy.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import NSString *DefaultsChangedNotification = @"DefaultsChangedNotification"; NSString *IRCDefaultsNick = @"Nick"; NSString *IRCDefaultsRealName = @"RealName"; NSString *IRCDefaultsUserName = @"UserName"; NSString *IRCDefaultsPassword = @"Password"; NSString *IRCColor = @"IRCColor"; NSString *IRCBackgroundColor = @"IRCBackgroundColor"; NSString *IRCColorWhite = @"IRCColorWhite"; NSString *IRCColorBlack = @"IRCColorBlack"; NSString *IRCColorBlue = @"IRCColorBlue"; NSString *IRCColorGreen = @"IRCColorGreen"; NSString *IRCColorRed = @"IRCColorRed"; NSString *IRCColorMaroon = @"IRCColorMaroon"; NSString *IRCColorMagenta = @"IRCColorMagenta"; NSString *IRCColorOrange = @"IRCColorOrange"; NSString *IRCColorYellow = @"IRCColorYellow"; NSString *IRCColorLightGreen = @"IRCColorLightGreen"; NSString *IRCColorTeal = @"IRCColorTeal"; NSString *IRCColorLightCyan = @"IRCColorLightCyan"; NSString *IRCColorLightBlue = @"IRCColorLightBlue"; NSString *IRCColorLightMagenta = @"IRCColorLightMagenta"; NSString *IRCColorGrey = @"IRCColorGrey"; NSString *IRCColorLightGrey = @"IRCColorLightGrey"; NSString *IRCColorCustom = @"IRCColorCustom"; NSString *IRCBold = @"IRCBold"; NSString *IRCBoldValue = @"IRCBoldValue"; NSString *IRCUnderline = @"IRCUnderline"; NSString *IRCUnderlineValue = @"IRCUnderlineValue"; NSString *IRCReverse = @"IRCReverse"; NSString *IRCReverseValue = @"IRCReverseValue"; id _TS_; id _TSDummy_; static inline id activate_bundle(NSDictionary *a, NSString *name) { id dir; id bundle; if (!name) { NSLog(@"Can't activate a bundle with a nil name!"); return nil; } if (!(dir = [a objectForKey: name])) { NSLog(@"Could not load '%@' from '%@'", name, [a allValues]); return nil; } bundle = [NSBundle bundleWithPath: dir]; if (!bundle) { NSLog(@"Could not load '%@' from '%@'", name, dir); return nil; } return AUTORELEASE([[[bundle principalClass] alloc] init]); } static inline void carefully_add_bundles(NSMutableDictionary *a, NSArray *arr) { NSEnumerator *iter; id object; id bundle; iter = [arr objectEnumerator]; while ((object = [iter nextObject])) { bundle = [object lastPathComponent]; if (![a objectForKey: bundle]) { [a setObject: object forKey: bundle]; } } } static inline NSArray *get_directories_with_talksoup() { NSArray *x; NSMutableArray *y; NSFileManager *fm; id object; NSEnumerator *iter; BOOL isDir; x = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); fm = [NSFileManager defaultManager]; iter = [x objectEnumerator]; y = [NSMutableArray new]; while ((object = [iter nextObject])) { object = [object stringByAppendingString: #ifdef GNUSTEP @"/ApplicationSupport/TalkSoup" #else @"/Application Support/TalkSoup" #endif ]; if ([fm fileExistsAtPath: object isDirectory: &isDir] && isDir) { [y addObject: object]; } } [y addObject: [[NSBundle mainBundle] resourcePath]]; x = [NSArray arrayWithArray: y]; RELEASE(y); return x; } static inline NSArray *get_bundles_in_directory(NSString *dir) { NSFileManager *fm; NSEnumerator *iter; id object; BOOL isDir; NSMutableArray *y; NSArray *x; fm = [NSFileManager defaultManager]; x = [fm directoryContentsAtPath: dir]; if (!x) { return AUTORELEASE([NSArray new]); } y = [NSMutableArray new]; iter = [x objectEnumerator]; while ((object = [iter nextObject])) { object = [NSString stringWithFormat: @"%@/%@", dir, object]; if ([fm fileExistsAtPath: object isDirectory: &isDir] && isDir) { [y addObject: object]; } } x = [NSArray arrayWithArray: y]; RELEASE(y); return x; } static void add_old_entries(NSMutableDictionary *new, NSMutableDictionary *names, NSMutableDictionary *objects) { NSEnumerator *iter; id object; if (!names) return; iter = [objects keyEnumerator]; while ((object = [iter nextObject])) { [new setObject: [names objectForKey: object] forKey: object]; } } @implementation TalkSoup + (TalkSoup *)sharedInstance { if (!_TS_) { AUTORELEASE([TalkSoup new]); if (!_TS_) { NSLog(@"Couldn't initialize the TalkSoup object"); } _TSDummy_ = [TalkSoupDummyProtocolClass new]; } return _TS_; } - init { if (_TS_) return nil; if (!(self = [super init])) return nil; [self refreshPluginList]; commandList = [NSMutableDictionary new]; activatedInFilters = [NSMutableArray new]; inObjects = [NSMutableDictionary new]; activatedOutFilters = [NSMutableArray new]; outObjects = [NSMutableDictionary new]; _TS_ = RETAIN(self); return self; } - (void)refreshPluginList { NSArray *dirList; id object; NSEnumerator *iter; id arr; NSMutableDictionary *inputNames2, *outputNames2, *inNames2, *outNames2; dirList = get_directories_with_talksoup(); iter = [dirList objectEnumerator]; inputNames2 = [NSMutableDictionary new]; outputNames2 = [NSMutableDictionary new]; inNames2 = [NSMutableDictionary new]; outNames2 = [NSMutableDictionary new]; while ((object = [iter nextObject])) { arr = get_bundles_in_directory( [object stringByAppendingString: @"/Input"]); carefully_add_bundles(inputNames2, arr); arr = get_bundles_in_directory( [object stringByAppendingString: @"/InFilters"]); carefully_add_bundles(inNames2, arr); arr = get_bundles_in_directory( [object stringByAppendingString: @"/OutFilters"]); carefully_add_bundles(outNames2, arr); arr = get_bundles_in_directory( [object stringByAppendingString: @"/Output"]); carefully_add_bundles(outputNames2, arr); } if (activatedInput) { [inputNames2 setObject: [inputNames objectForKey: activatedInput] forKey: activatedInput]; } if (activatedOutput) { [outputNames2 setObject: [outputNames objectForKey: activatedOutput] forKey: activatedOutput]; } add_old_entries(inNames2, inNames, inObjects); add_old_entries(outNames2, outNames, outObjects); RELEASE(inputNames); RELEASE(outputNames); RELEASE(inNames); RELEASE(outNames); inputNames = inputNames2; outputNames = outputNames2; inNames = inNames2; outNames = outNames2; } - (void)savePluginList { id dict = [NSDictionary dictionaryWithObjectsAndKeys: activatedInput, @"Input", activatedOutput, @"Output", [self activatedOutFilters], @"OutFilters", [self activatedInFilters], @"InFilters", nil]; [[NSUserDefaults standardUserDefaults] setObject: dict forKey: @"Plugins"]; } - (NSInvocation *)invocationForCommand: (NSString *)aCommand { return [commandList objectForKey: [aCommand uppercaseString]]; } - addCommand: (NSString *)aCommand withInvocation: (NSInvocation *)invoc { [commandList setObject: invoc forKey: [aCommand uppercaseString]]; return self; } - removeCommand: (NSString *)aCommand { [commandList removeObjectForKey: [aCommand uppercaseString]]; return self; } - (NSArray *)allCommands { return [commandList allKeys]; } - (BOOL)respondsToSelector: (SEL)aSel { if (!aSel) return NO; if ([_TSDummy_ respondsToSelector: aSel]) return YES; return [super respondsToSelector: aSel]; } - (NSMethodSignature *)methodSignatureForSelector: (SEL)aSel { id object; if ((object = [_TSDummy_ methodSignatureForSelector: aSel])) return object; return [super methodSignatureForSelector: aSel]; } - (void)forwardInvocation: (NSInvocation *)aInvocation { NSMutableArray *in; NSMutableArray *out; SEL sel; id selString; int args; int index = NSNotFound; id sender; id next; CREATE_AUTORELEASE_POOL(apr); sel = [aInvocation selector]; selString = NSStringFromSelector(sel); args = [[selString componentsSeparatedByString: @":"] count] - 1; if (![selString hasSuffix: @"sender:"]) { [super forwardInvocation: aInvocation]; goto out1; } [aInvocation retainArguments]; in = [[NSMutableArray alloc] initWithObjects: input, nil]; out = [[NSMutableArray alloc] initWithObjects: output, nil]; [in addObjectsFromArray: activatedInFilters]; [out addObjectsFromArray: activatedOutFilters]; [aInvocation getArgument: &sender atIndex: args + 1]; if ((index = [in indexOfObjectIdenticalTo: sender]) != NSNotFound) { #ifdef GNUSTEP NSDebugLLog(@"TalkSoup", @"In %@ by %@", selString, sender); #endif if (index == (int)([in count] - 1)) { next = output; } else { next = [in objectAtIndex: index + 1]; } if (sel && [next respondsToSelector: sel]) { [aInvocation invokeWithTarget: next]; goto out2; } else { if (next != output) { [aInvocation setArgument: &next atIndex: args + 1]; [self forwardInvocation: aInvocation]; } } } else if ((index = [out indexOfObjectIdenticalTo: sender]) != NSNotFound) { id connection; [aInvocation getArgument: &connection atIndex: args - 1]; #ifdef GNUSTEP NSDebugLLog(@"TalkSoup", @"Out %@ by %@", selString, sender); #endif if (index == (int)([out count] - 1)) { next = connection; } else { next = [out objectAtIndex: index + 1]; } if (sel && [next respondsToSelector: sel]) { [aInvocation invokeWithTarget: next]; goto out2; } else { if (next != connection) { [aInvocation setArgument: &next atIndex: args + 1]; [self forwardInvocation: aInvocation]; } } } out2: RELEASE(in); RELEASE(out); out1: RELEASE(apr); } - (NSString *)input { return activatedInput; } - (NSString *)output { return activatedOutput; } - (NSDictionary *)allInputs { return [NSDictionary dictionaryWithDictionary: inputNames]; } - (NSDictionary *)allOutputs { return [NSDictionary dictionaryWithDictionary: outputNames]; } - setInput: (NSString *)aInput { if (activatedInput) return self; input = RETAIN(activate_bundle(inputNames, aInput)); if (input) { activatedInput = RETAIN(aInput); } if ([input respondsToSelector: @selector(pluginActivated)]) { [input pluginActivated]; } return self; } - setOutput: (NSString *)aOutput { if (activatedOutput) return self; output = RETAIN(activate_bundle(outputNames, aOutput)); if (output) { activatedOutput = RETAIN(aOutput); } if ([output respondsToSelector: @selector(pluginActivated)]) { [output pluginActivated]; } return self; } - (NSArray *)activatedInFilters { NSEnumerator *iter; id object; NSMutableArray *x = AUTORELEASE([[NSMutableArray alloc] init]); iter = [activatedInFilters objectEnumerator]; while ((object = [iter nextObject])) { [x addObject: [[inObjects allKeysForObject: object] objectAtIndex: 0]]; } return x; } - (NSArray *)activatedOutFilters { NSEnumerator *iter; id object; NSMutableArray *x = AUTORELEASE([[NSMutableArray alloc] init]); iter = [activatedOutFilters objectEnumerator]; while ((object = [iter nextObject])) { [x addObject: [[outObjects allKeysForObject: object] objectAtIndex: 0]]; } return x; } - (NSDictionary *)allInFilters { return [NSDictionary dictionaryWithDictionary: inNames]; } - (NSDictionary *)allOutFilters { return [NSDictionary dictionaryWithDictionary: outNames]; } - activateInFilter: (NSString *)aFilt { id obj; if (!aFilt) return self; if ((obj = [inObjects objectForKey: aFilt])) { if ([activatedInFilters containsObject: obj]) { [activatedInFilters removeObject: obj]; if ([obj respondsToSelector: @selector(pluginDeactivated)]) { [obj pluginDeactivated]; } } [activatedInFilters addObject: obj]; if ([obj respondsToSelector: @selector(pluginActivated)]) { [obj pluginActivated]; } return self; } obj = activate_bundle(inNames, aFilt); if (!obj) { return self; } [inObjects setObject: obj forKey: aFilt]; [activatedInFilters addObject: obj]; if ([obj respondsToSelector: @selector(pluginActivated)]) { [obj pluginActivated]; } return self; } - activateOutFilter: (NSString *)aFilt { id obj; if (!aFilt) return self; if ((obj = [outObjects objectForKey: aFilt])) { if ([activatedOutFilters containsObject: obj]) { [activatedOutFilters removeObject: obj]; if ([obj respondsToSelector: @selector(pluginDeactivated)]) { [obj pluginDeactivated]; } } [activatedOutFilters addObject: obj]; if ([obj respondsToSelector: @selector(pluginActivated)]) { [obj pluginActivated]; } return self; } obj = activate_bundle(outNames, aFilt); if (!obj) { return self; } [outObjects setObject: obj forKey: aFilt]; [activatedOutFilters addObject: obj]; if ([obj respondsToSelector: @selector(pluginActivated)]) { [obj pluginActivated]; } return self; } - deactivateInFilter: (NSString *)aFilt { id obj; if (!aFilt) return self; if ((obj = [inObjects objectForKey: aFilt])) { if ([activatedInFilters containsObject: obj]) { [activatedInFilters removeObject: obj]; if ([obj respondsToSelector: @selector(pluginDeactivated)]) { [obj pluginDeactivated]; } } } return self; } - deactivateOutFilter: (NSString *)aFilt { id obj; if (!aFilt) return self; if ((obj = [outObjects objectForKey: aFilt])) { if ([activatedOutFilters containsObject: obj]) { [activatedOutFilters removeObject: obj]; if ([obj respondsToSelector: @selector(pluginDeactivated)]) { [obj pluginDeactivated]; } } } return self; } - setActivatedInFilters: (NSArray *)filters { NSEnumerator *iter; id object; while ([activatedInFilters count] > 0) { object = [activatedInFilters objectAtIndex: 0]; [activatedInFilters removeObjectAtIndex: 0]; if ([object respondsToSelector: @selector(pluginDeactivated)]) { [object pluginDeactivated]; } } iter = [filters objectEnumerator]; while ((object = [iter nextObject])) { [self activateInFilter: object]; } return self; } - setActivatedOutFilters: (NSArray *)filters { NSEnumerator *iter; id object; while ([activatedOutFilters count] > 0) { object = [activatedOutFilters objectAtIndex: 0]; [activatedOutFilters removeObjectAtIndex: 0]; if ([object respondsToSelector: @selector(pluginDeactivated)]) { [object pluginDeactivated]; } } iter = [filters objectEnumerator]; while ((object = [iter nextObject])) { [self activateOutFilter: object]; } return self; } - (id)pluginForOutput { return output; } - (id)pluginForOutFilter: (NSString *)aFilt { id obj; if (!aFilt) return nil; if ((obj = [outObjects objectForKey: aFilt])) { return obj; } obj = activate_bundle(outNames, aFilt); if (obj) { [outObjects setObject: obj forKey: aFilt]; } return obj; } - (id)pluginForInFilter: (NSString *)aFilt { id obj; if (!aFilt) return nil; if ((obj = [inObjects objectForKey: aFilt])) { return obj; } obj = activate_bundle(inNames, aFilt); if (obj) { [inObjects setObject: obj forKey: aFilt]; } return obj; } - (id)pluginForInput { return input; } @end TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/TalkSoupMisc.h000066400000000000000000000043411067163320700234020ustar00rootroot00000000000000/*************************************************************************** TalkSoupMisc.h ------------------- begin : Mon Apr 7 21:45:49 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef TALKSOUP_MISC_H #define TALKSOUP_MISC_H #import #import NSArray *PossibleUserColors(void); NSString *IRCColorFromUserColor(NSString *string); @interface NSString (Separation) - separateIntoNumberOfArguments: (int)num; @end @interface NSString (IRCWildcards) - (BOOL)matchesIRCWildcard: (NSString *)wildcard; @end @interface NSMutableAttributedString (AttributesAppend) - (void)addAttributeIfNotPresent: (NSString *)name value: (id)aVal withRange: (NSRange)aRange; - (void)replaceAttribute: (NSString *)name withValue: (id)aVal withValue: (id)newVal withRange: (NSRange)aRange; - (void)setAttribute: (NSString *)name toValue: (id)aVal inRangesWithAttribute: (NSString *)name2 matchingValue: (id)aVal2 withRange: (NSRange)aRange; - (void)setAttribute: (NSString *)name toValue: (id)aVal inRangesWithAttributes: (NSArray *)name2 matchingValues: (NSArray *)aVal2 withRange: (NSRange)aRange; @end NSMutableAttributedString *BuildAttributedString(id aObject, ...); // This only understands '%@' which will ALWAYS be interepretted literally NSMutableAttributedString *BuildAttributedFormat(id aObject, ...); NSArray *IRCUserComponents(NSAttributedString *from); #endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/TalkSoupPrivate.h000066400000000000000000000023451067163320700241230ustar00rootroot00000000000000/*************************************************************************** TalkSoupPrivate.h ------------------- begin : Tue Oct 14 18:03:57 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef TALKSOUP_PRIVATE_H #define TALKSOUP_PRIVATE_H #import "TalkSoup.h" #ifdef _l #undef _l #endif #define _l(_X) ([[NSBundle bundleForClass: [TalkSoup class]] \ localizedStringForKey: (_X) value: (_X) table: nil]) #endif TalkSoup-1.0alpha-32-g55b4d4e/TalkSoupBundles/TalkSoupProtocols.h000066400000000000000000000351551067163320700245020ustar00rootroot00000000000000/*************************************************************************** TalkSoupProtocols.h ------------------- begin : Mon Apr 7 20:46:46 CDT 2003 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef TALKSOUP_PROTOCOLS_H #define TALKSOUP_PROTOCOLS_H @class NSInvocation, NSMutableArray, NSString, NSAttributedString; @class NSHost, NSMutableDictionary; @protocol TalkSoupPluginProtocol - pluginActivated; - pluginDeactivated; - controlObject: (id)aObject onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - (NSAttributedString *)pluginDescription; @end @protocol TalkSoupInputPluginProtocol < TalkSoupPluginProtocol > - initiateConnectionToHost: (NSHost *)aHost onPort: (int)aPort withTimeout: (int)seconds withNickname: (NSString *)nickname withUserName: (NSString *)user withRealName: (NSString *)realName withPassword: (NSString *)password withIdentification: (NSString *)ident; - (void)closeConnection: (id)connection; - (NSArray *)connections; @end @protocol TalkSoupOutFilterProtocol < TalkSoupPluginProtocol > - changeNick: (NSAttributedString *)aNick onConnection: aConnection withNickname: (NSAttributedString *)nick sender: aPlugin; - quitWithMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - partChannel: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - joinChannel: (NSAttributedString *)channel withPassword: (NSAttributedString *)aPassword onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPReply: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendCTCPRequest: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)args to: (NSAttributedString *)aPerson onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendMessage: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendNotice: (NSAttributedString *)message to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendAction: (NSAttributedString *)anAction to: (NSAttributedString *)receiver onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - becomeOperatorWithName: (NSAttributedString *)aName withPassword: (NSAttributedString *)pass onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestNamesOnChannel: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestMOTDOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestSizeInformationFromServer: (NSAttributedString *)aServer andForwardTo: (NSAttributedString *)anotherServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestVersionOfServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerStats: (NSAttributedString *)aServer for: (NSAttributedString *)query onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerLink: (NSAttributedString *)aLink from: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestTimeOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerToConnect: (NSAttributedString *)aServer to: (NSAttributedString *)connectServer onPort: (NSAttributedString *)aPort onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestTraceOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestAdministratorOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerRehashOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerShutdownOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestServerRestartOnConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - requestUserInfoOnServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - areUsersOn: (NSAttributedString *)userList onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendWallops: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - listWho: (NSAttributedString *)aMask onlyOperators: (BOOL)operators onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - whois: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - whowas: (NSAttributedString *)aPerson onServer: (NSAttributedString *)aServer withNumberEntries: (NSAttributedString *)aNumber onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - kill: (NSAttributedString *)aPerson withComment: (NSAttributedString *)aComment onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setTopicForChannel: (NSAttributedString *)aChannel to: (NSAttributedString *)aTopic onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setMode: (NSAttributedString *)aMode on: (NSAttributedString *)anObject withParams: (NSArray *)list onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - listChannel: (NSAttributedString *)aChannel onServer: (NSAttributedString *)aServer onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - invite: (NSAttributedString *)aPerson to: (NSAttributedString *)aChannel onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - kick: (NSAttributedString *)aPerson offOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - setAwayWithMessage: (NSAttributedString *)message onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendPingWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - sendPongWithArgument: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; - writeRawString: (NSAttributedString *)aString onConnection: aConnection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end @protocol TalkSoupConnectionProtocol < TalkSoupOutFilterProtocol > - (NSString *)identification; - (NSString *)errorMessage; - (BOOL)connected; - (NSString *)nick; - (int)port; /** * The object returned by this method should be or at least act like * a NSHost object */ - (id)remoteHost; /** * The object returned by this method should be or at least act like * a NSHost object */ - (id)localHost; - setEncoding: (NSStringEncoding)encoding; - (NSStringEncoding)encoding; /** * Set the lowercasing selector. This is the selector that is called * on a NSString to get the lowercase form. Used to determine if two * nicknames are equivalent. Generally aSelector would be * either @selector(lowercaseString) or @selector(lowercaseIRCString). * By default, this is lowercaseIRCString but will be autodetected * from the server if possible. It will be reset to lowercaseIRCString * upon reconnection. */ - setLowercasingSelector: (SEL)aSelector; /** * Return the lowercasing selector. See -setLowercasingSelector: for * more information on the use of this lowercasing selector. */ - (SEL)lowercasingSelector; /** * Use the lowercasingSelector to compare two strings. Returns a * NSComparisonResult ( NSOrderedAscending, NSOrderedSame or * NSOrderedDescending ) */ - (NSComparisonResult)caseInsensitiveCompare: (NSString *)aString1 to: (NSString *)aString2; @end @protocol TalkSoupInFilterProtocol < TalkSoupPluginProtocol > - newConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - lostConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - registeredWithServerOnConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - couldNotRegister: (NSAttributedString *)reason onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPRequestReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - CTCPReplyReceived: (NSAttributedString *)aCTCP withArgument: (NSAttributedString *)argument to: (NSAttributedString *)receiver from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - errorReceived: (NSAttributedString *)anError onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - wallopsReceived: (NSAttributedString *)message from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - userKicked: (NSAttributedString *)aPerson outOf: (NSAttributedString *)aChannel for: (NSAttributedString *)reason from: (NSAttributedString *)kicker onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - invitedTo: (NSAttributedString *)aChannel from: (NSAttributedString *)inviter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - modeChanged: (NSAttributedString *)mode on: (NSAttributedString *)anObject withParams: (NSArray *)paramList from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - numericCommandReceived: (NSAttributedString *)command withParams: (NSArray *)paramList from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - nickChangedTo: (NSAttributedString *)newName from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelJoined: (NSAttributedString *)channel from: (NSAttributedString *)joiner onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - channelParted: (NSAttributedString *)channel withMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)parter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - quitIRCWithMessage: (NSAttributedString *)aMessage from: (NSAttributedString *)quitter onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - topicChangedTo: (NSAttributedString *)aTopic in: (NSAttributedString *)channel from: (NSAttributedString *)aPerson onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - messageReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - noticeReceived: (NSAttributedString *)aMessage to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - actionReceived: (NSAttributedString *)anAction to: (NSAttributedString *)to from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - pingReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - pongReceivedWithArgument: (NSAttributedString *)arg from: (NSAttributedString *)sender onConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; - newNickNeededWhileRegisteringOnConnection: (id)connection withNickname: (NSAttributedString *)aNick sender: aPlugin; @end @protocol TalkSoupOutputPluginProtocol < TalkSoupInFilterProtocol > - (void)run; - consoleMessage: (NSAttributedString *)arg onConnection: (id)aConnection; - systemMessage: (NSAttributedString *)arg onConnection: (id)aConnection; - showMessage: (NSAttributedString *)arg onConnection: (id)aConnection; @end #endif TalkSoup-1.0alpha-32-g55b4d4e/Testing/000077500000000000000000000000001067163320700172075ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Testing/GNUmakefile000066400000000000000000000003271067163320700212630ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make ifeq ($(USE_APPKIT),) USE_APPKIT=yes endif SUBPROJECTS = IRCSwarm -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/000077500000000000000000000000001067163320700206365ustar00rootroot00000000000000TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/GNUmakefile000066400000000000000000000005351067163320700227130ustar00rootroot00000000000000include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = IRCSwarm IRCSwarm_OBJC_FILES = main.m misc.m IRCSwarmBot.m GUI_LIB = ifeq ($(OBJC_RUNTIME_LIB), apple) IRCSwarm_TOOL_LIBS = -framework netclasses $(ADDITIONAL_FRAMEWORK_DIRS) else IRCSwarm_TOOL_LIBS = -lnetclasses endif -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/tool.make TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/GNUmakefile.preamble000066400000000000000000000002671067163320700245030ustar00rootroot00000000000000ADDITIONAL_OBJCFLAGS = -Wall ifeq ($(OBJC_RUNTIME_LIB), apple) ADDITIONAL_OBJCFLAGS += -include GNUstep.h $(ADDITIONAL_FRAMEWORK_DIRS) ADDITIONAL_INCLUDE_DIRS = -I../../Misc endif TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/IRCSwarmBot.h000066400000000000000000000024551067163320700231110ustar00rootroot00000000000000/*************************************************************************** IRCSwarmBot.h ------------------- begin : Wed Jun 5 03:28:59 UTC 2002 copyright : (C) 2003 by Andy Ruder email : aeruder@yahoo.com ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @class ControlSwarm; @interface IRCSwarmBot : IRCObject { ControlSwarm *control; } - initWithNickname: (NSString *)aNickname withUserName: (NSString *)aUser withRealName: (NSString *)aReal withPassword: (NSString *)aPass withControl: (ControlSwarm *)aControl; @end TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/IRCSwarmBot.m000066400000000000000000000067021067163320700231150ustar00rootroot00000000000000/*************************************************************************** IRCSwarmBot.m ------------------- begin : Thu Jun 16 22:01:45 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "IRCSwarmBot.h" #import "main.h" #import #import #import #import #include #include #include static inline NSData *chomp_line(NSMutableData *data) { char *memory = [data mutableBytes]; char *memoryEnd = memory + [data length]; char *lineEndWithControls; char *lineEnd; int tempLength; id lineData; lineEndWithControls = lineEnd = memchr(memory, '\n', memoryEnd - memory); if (!lineEnd) { return nil; } while (((*lineEnd == '\n') || (*lineEnd == '\r')) && (lineEnd >= memory)) { lineEnd--; } lineData = [NSData dataWithBytes: memory length: lineEnd - memory + 1]; tempLength = memoryEnd - lineEndWithControls - 1; memmove(memory, lineEndWithControls + 1, tempLength); [data setLength: tempLength]; return lineData; } @implementation IRCSwarmBot - initWithNickname: (NSString *)aNickname withUserName: (NSString *)aUser withRealName: (NSString *)aReal withPassword: (NSString *)aPass withControl: (ControlSwarm *)aControl { if (!(self = [super initWithNickname: aNickname withUserName: aUser withRealName: aReal withPassword: aPass])) return nil; control = RETAIN(aControl); return self; } - connectionEstablished: aTransport { return [super connectionEstablished: aTransport]; } - (void)connectionLost { [control botDied: self]; [super connectionLost]; } - registeredWithServer { [control botRegistered: self]; return self; } - CTCPRequestReceived: (NSString *)aCTCP withArgument: (NSString *)argument to: (NSString *)aReceiver from: (NSString *)aPerson { if ([aCTCP compare: @"PING"] == NSOrderedSame) { [self sendCTCPReply: @"PING" withArgument: argument to: ExtractIRCNick(aPerson)]; } if ([aCTCP compare: @"VERSION"] == NSOrderedSame) { NSString *version, *reply; version = [NetApplication netclassesVersion]; reply = [NSString stringWithFormat: @"netclasses:%@:GNUstep", version]; [self sendCTCPReply: @"VERSION" withArgument: reply to: ExtractIRCNick(aPerson)]; } return self; } - pingReceivedWithArgument: (NSString *)anArgument from: (NSString *)aSender { [self sendPongWithArgument: anArgument]; return self; } - messageReceived: (NSString *)aMessage to: (NSString *)to from: (NSString *)whom { if ([aMessage caseInsensitiveCompare: @"get out of here"] == NSOrderedSame) { exit(2); return self; } return self; } @end TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/README000066400000000000000000000004321067163320700215150ustar00rootroot00000000000000This will basically replay logs to an IRC server. Run the program for example usage. The script ./cleanupxchatlog will process Xchat logs into a format that this program can understand. I'm not responsible if you get kick-banned for life for using this on a non personal server. TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/cleanupxchatlog000077500000000000000000000011661067163320700237510ustar00rootroot00000000000000#!/usr/bin/perl while (<>) { my $msg = $_; my $x = 0; # Remove date $msg =~ s/^[A-Z][a-z]+ +\d+ \d+:\d+:\d+ // and ++$x; # Handle joins $msg =~ s/.*-->\011([^ ]*).*has joined.*/JOIN $1/ and ++$x; # quits $msg =~ s/.*\<--.([^ ]*) has quit.*/QUIT $1/ and ++$x; # messages $msg =~ s/^\<([^>]+)>.(.*)/MESSAGE $1 $2/ and ++$x; # actions $msg =~ s/^\*.([^ ]+) (.*)/ACTION $1 $2/ and ++$x; # nick $msg =~ s/.*?([^ \011]+) is now known as ([^ ]+).*/NICK $1 $2/ and ++$x; # parts $msg =~ s/.*\<--.([^ ]*) \(.* has left.*/PART $1/ and ++$x; if ($x <= 1) { print STDERR "Can't handle line: $msg"; } else { print $msg; } } TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/main.h000066400000000000000000000032311067163320700217320ustar00rootroot00000000000000/*************************************************************************** main.h ------------------- begin : Thu Jun 16 22:05:36 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @class NSString, NSMutableArray, NSTimer, NSHost; @class IRCSwarmBot; @interface ControlSwarm : NSObject { NSString *channel; NSMutableArray *play; int curIndex; NSHost *host; int repeat; } - initWithChannel: (NSString *)aChan withPlay: (NSString *)aPlay withHost: (NSHost *)aHost; - getBotForName: (NSString *)aName; - (void)timerFired: (NSTimer *)aTimer; - (void)botDied: (IRCSwarmBot *)aBot; - (void)botRegistered: (IRCSwarmBot *)aBot; - commandACTION: (NSString *)command; - commandJOIN: (NSString *)command; - commandQUIT: (NSString *)command; - commandPART: (NSString *)command; - commandMESSAGE: (NSString *)command; @end TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/main.m000066400000000000000000000176671067163320700217610ustar00rootroot00000000000000/*************************************************************************** main.m ------------------- begin : Thu Jun 16 22:05:36 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "main.h" #import "misc.h" #import "IRCSwarmBot.h" #import #import #import #import #import #import #import #import #include #include NSMutableDictionary *sharedBots = nil; NSMutableDictionary *connectingBots = nil; static int max_clients = 200; static float low_time = 0.0; static float wait_connecting = 0.0; static float wait_cant_connect = 300.0; static float high_time = 0.0; @implementation ControlSwarm + (void)initialize { if (sharedBots) return; sharedBots = [NSMutableDictionary new]; connectingBots = [NSMutableDictionary new]; } - initWithChannel: (NSString *)aChan withPlay: (NSString *)aPlay withHost: (NSHost *)aHost { NSString *aString; NSAutoreleasePool *aPool; unsigned done = 0; unsigned length = 0; if (!(self = [super init])) return self; aPool = [NSAutoreleasePool new]; aString = [NSString stringWithContentsOfFile: aPlay]; play = [NSMutableArray new]; length = [aString length]; while (done < length) { NSRange aRange; unsigned start; unsigned end; unsigned lineend; aRange.location = done; aRange.length = 0; [aString getLineStart: &start end: &lineend contentsEnd: &end forRange: aRange]; [play addObject: [aString substringWithRange: NSMakeRange(start, end - start)]]; done = lineend + 1; } RELEASE(aPool); channel = RETAIN(aChan); host = RETAIN(aHost); [NSTimer scheduledTimerWithTimeInterval:5.0 target: self selector: @selector(timerFired:) userInfo: nil repeats: NO]; return self; } - (void)timerFired: (NSTimer *)aTimer { id this_string; id separate; id ret = self; float lenwait; SEL aSel; lenwait = low_time + ((high_time - low_time)*rand()/(RAND_MAX + 1.0)); this_string = [play objectAtIndex: curIndex]; separate = [this_string separateIntoNumberOfArguments: 2]; if ([separate count] < 2) { NSLog(@"Couldn't parse %@!!!", this_string); curIndex = (curIndex == [play count] - 1) ? 0 : curIndex + 1; [NSTimer scheduledTimerWithTimeInterval: lenwait target:self selector: @selector(timerFired:) userInfo: nil repeats: NO]; } aSel = NSSelectorFromString([NSString stringWithFormat: @"command%@:", [separate objectAtIndex: 0]]); if (aSel != NULL && [self respondsToSelector: aSel]) { ret = [self performSelector: aSel withObject: [separate objectAtIndex: 1]]; } if (ret) { repeat = 0; curIndex = (curIndex == [play count] - 1) ? 0 : curIndex + 1; } else { repeat++; lenwait = wait_connecting; } if (repeat > 5) { lenwait = wait_cant_connect; curIndex = (curIndex == [play count] - 1) ? 0 : curIndex + 1; } [NSTimer scheduledTimerWithTimeInterval: lenwait target:self selector: @selector(timerFired:) userInfo: nil repeats: NO]; } - getBotForName: (NSString *)aNick { id bot; id normalName; int num; if ([aNick length] > 8) aNick = [aNick substringToIndex: 8]; normalName = aNick; aNick = [aNick lowercaseString]; bot = [sharedBots objectForKey: aNick]; if (bot) return bot; bot = [connectingBots objectForKey: aNick]; if ([bot transport]) return nil; num = [[sharedBots allKeys] count]; if (num > max_clients) { int index = (int)(num * (rand() / (RAND_MAX + 1.0))); id bot; bot = [sharedBots objectForKey: [[sharedBots allKeys] objectAtIndex: index]]; NSLog(@"Disconnecting %@ (index %d)", [bot nick], index); [[NetApplication sharedInstance] disconnectObject: bot]; } bot = [[IRCSwarmBot alloc] initWithNickname: normalName withUserName: nil withRealName: @"IRCSwarm Bot" withPassword: nil withControl: self]; NSLog(@"Connecting up a bot for %@", aNick); if ([[TCPSystem sharedInstance] connectNetObject: bot toHost: host onPort: 6667 withTimeout: 30]) { [connectingBots setObject: bot forKey: aNick]; } return nil; } - commandACTION: (NSString *)command { id separate; id bot; id nick; id msg; separate = [command separateIntoNumberOfArguments: 2]; if ([separate count] != 2) { NSLog(@"Bad action %@", command); return self; } nick = [separate objectAtIndex: 0]; msg = [separate objectAtIndex: 1]; bot = [self getBotForName: nick]; if (bot) { [bot sendAction: msg to: channel]; return self; } return nil; } - commandJOIN: (NSString *)command { id separate; id bot; id nick; separate = [command separateIntoNumberOfArguments: 2]; if ([separate count] == 0) { NSLog(@"Bad join %@", command); return self; } nick = [separate objectAtIndex: 0]; bot = [self getBotForName: nick]; return self; } - commandQUIT: (NSString *)command { id separate; id bot; id nick; separate = [command separateIntoNumberOfArguments: 2]; if ([separate count] == 0) { NSLog(@"Bad quit/part %@", command); return self; } nick = [separate objectAtIndex: 0]; bot = [self getBotForName: nick]; if (!bot) { return nil; } [bot quitWithMessage: nil]; return self; } - commandPART: (NSString *)command { return [self commandQUIT: command]; } - commandMESSAGE: (NSString *)command { id separate; id bot; id nick; id msg; separate = [command separateIntoNumberOfArguments: 2]; if ([separate count] != 2) { NSLog(@"Bad message %@", command); return self; } nick = [separate objectAtIndex: 0]; msg = [separate objectAtIndex: 1]; bot = [self getBotForName: nick]; if (bot) { [bot sendMessage: msg to: channel]; return self; } return nil; } - (void)botDied: (IRCSwarmBot *)aBot { id nick = [[aBot nick] lowercaseString]; [sharedBots removeObjectForKey: nick]; [sharedBots removeObjectForKey: nick]; } - (void)botRegistered: (IRCSwarmBot *)aBot { id nick = [[aBot nick] lowercaseString]; if ([connectingBots objectForKey: nick]) { [sharedBots setObject: aBot forKey: nick]; [connectingBots removeObjectForKey: nick]; } [aBot joinChannel: channel withPassword: nil]; } @end int main(int argc, char **argv, char **env) { int index; NSArray *args; NSHost *aHost; CREATE_AUTORELEASE_POOL(arp); srand(time(0) ^ gethostid() % getpid()); args = [[NSProcessInfo processInfo] arguments]; if (([args count] < 7) || (([args count] % 2) != 1)) { NSLog(@"Usage: %@ [ ] ...", [args objectAtIndex: 0]); exit(0); } aHost = [NSHost hostWithName: [args objectAtIndex: 4]]; if (!aHost) { NSLog(@"Couldn't find host %@", [args objectAtIndex: 4]); exit(2); } low_time = [[args objectAtIndex: 1] floatValue]; high_time = [[args objectAtIndex: 2] floatValue]; wait_connecting = [[args objectAtIndex: 3] floatValue]; if ((high_time - low_time) <= 0.00001) { NSLog(@"Invalid time constraints"); exit(1); } for (index = 5; index < [args count]; index += 2) { [[ControlSwarm alloc] initWithChannel: [args objectAtIndex: index] withPlay: [args objectAtIndex: index + 1] withHost: aHost]; } [[NSRunLoop currentRunLoop] run]; RELEASE(arp); return 0; } TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/misc.h000066400000000000000000000021431067163320700217420ustar00rootroot00000000000000/*************************************************************************** misc.h ------------------- begin : Thu Jun 16 23:32:40 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import @interface NSString (Separation) - separateIntoNumberOfArguments: (int)num; @end TalkSoup-1.0alpha-32-g55b4d4e/Testing/IRCSwarm/misc.m000066400000000000000000000055721067163320700217600ustar00rootroot00000000000000/*************************************************************************** misc.m ------------------- begin : Thu Jun 16 23:32:40 CDT 2005 copyright : (C) 2005 by Andrew Ruder email : aeruder@ksu.edu ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #import "misc.h" #import #import #import #import #import #import #import #import #import #import #import #include static NSArray *get_first_word(NSString *arg) { NSRange aRange; NSString *first, *rest; id white = [NSCharacterSet whitespaceCharacterSet]; arg = [arg stringByTrimmingCharactersInSet: white]; if ([arg length] == 0) { return [NSArray arrayWithObjects: nil]; } aRange = [arg rangeOfCharacterFromSet: white]; if (aRange.location == NSNotFound && aRange.length == 0) { return [NSArray arrayWithObjects: arg, nil]; } rest = [[arg substringFromIndex: aRange.location] stringByTrimmingCharactersInSet: white]; first = [arg substringToIndex: aRange.location]; return [NSArray arrayWithObjects: first, rest, nil]; } @implementation NSString (Separation) - separateIntoNumberOfArguments: (int)num { NSMutableArray *array = AUTORELEASE([NSMutableArray new]); id object; int temp; id string = self; if (num == 0) { return [NSArray arrayWithObject: string]; } if (num == 1) { return [NSArray arrayWithObject: [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]]; } if (num == 2) { return get_first_word(string); } while (num != 1) { object = get_first_word(string); temp = [object count]; switch(temp) { case 0: return [NSArray arrayWithObjects: nil]; case 1: [array addObject: [object objectAtIndex: 0]]; return array; case 2: string = [object objectAtIndex: 1]; [array addObject: [object objectAtIndex: 0]]; if (num > 0) num--; } } [array addObject: string]; return array; } @end