Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Initial commit

  • Loading branch information...
commit 16acced4af8e196ab95a25a6bc3a7e13df3d8914 0 parents
@daagaak daagaak authored
Showing with 39,814 additions and 0 deletions.
  1. +340 −0 COPYING
  2. BIN  English.lproj/InfoPlist.strings
  3. +171 −0 English.lproj/MainMenu.nib/classes.nib
  4. +20 −0 English.lproj/MainMenu.nib/info.nib
  5. BIN  English.lproj/MainMenu.nib/keyedobjects.nib
  6. +83 −0 English.lproj/MainMenu~.nib/classes.nib
  7. +26 −0 English.lproj/MainMenu~.nib/info.nib
  8. BIN  English.lproj/MainMenu~.nib/keyedobjects.nib
  9. +155 −0 English.lproj/Preferences.nib/classes.nib
  10. +20 −0 English.lproj/Preferences.nib/info.nib
  11. BIN  English.lproj/Preferences.nib/keyedobjects.nib
  12. +63 −0 English.lproj/Preferences~.nib/classes.nib
  13. +16 −0 English.lproj/Preferences~.nib/info.nib
  14. BIN  English.lproj/Preferences~.nib/keyedobjects.nib
  15. +50 −0 English.lproj/Tab new old.nib/classes.nib
  16. +26 −0 English.lproj/Tab new old.nib/info.nib
  17. BIN  English.lproj/Tab new old.nib/keyedobjects.nib
  18. +121 −0 English.lproj/Tab new.nib/classes.nib
  19. +20 −0 English.lproj/Tab new.nib/info.nib
  20. BIN  English.lproj/Tab new.nib/keyedobjects.nib
  21. +53 −0 English.lproj/Tab new~.nib/classes.nib
  22. +26 −0 English.lproj/Tab new~.nib/info.nib
  23. BIN  English.lproj/Tab new~.nib/keyedobjects.nib
  24. +29 −0 English.lproj/UKUpdateChecker.strings
  25. +4 −0 Files containing version number
  26. +1 −0  Growl-WithInstaller.framework/Growl-WithInstaller
  27. +1 −0  Growl-WithInstaller.framework/Headers
  28. +1 −0  Growl-WithInstaller.framework/Resources
  29. BIN  Growl-WithInstaller.framework/Versions/A/Growl-WithInstaller
  30. +6 −0 Growl-WithInstaller.framework/Versions/A/Headers/Growl.h
  31. +758 −0 Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
  32. +556 −0 Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h
  33. +307 −0 Growl-WithInstaller.framework/Versions/A/Headers/GrowlDefines.h
  34. BIN  Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallation.strings
  35. +135 −0 ...l-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  36. BIN  Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  37. +23 −0 Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallation.strings
  38. +135 −0 Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  39. BIN  Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  40. BIN  Growl-WithInstaller.framework/Versions/A/Resources/Growl.prefPane.zip
  41. +32 −0 Growl-WithInstaller.framework/Versions/A/Resources/GrowlPrefPaneInfo.plist
  42. +24 −0 Growl-WithInstaller.framework/Versions/A/Resources/Info.plist
  43. +23 −0 Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallation.strings
  44. +134 −0 ...-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  45. BIN  Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  46. +23 −0 Growl-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallation.strings
  47. BIN  ...l-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  48. +23 −0 Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallation.strings
  49. +2,415 −0 Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  50. +55 −0 Growl-WithInstaller.framework/Versions/A/Resources/pl.lproj/GrowlInstallation.strings
  51. +2,421 −0 Growl-WithInstaller.framework/Versions/A/Resources/pl.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  52. +23 −0 Growl-WithInstaller.framework/Versions/A/Resources/zh_CN.lproj/GrowlInstallation.strings
  53. +2,519 −0 Growl-WithInstaller.framework/Versions/A/Resources/zh_CN.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  54. +1 −0  Growl-WithInstaller.framework/Versions/Current
  55. +1 −0  Growl.framework/Growl
  56. +1 −0  Growl.framework/Headers
  57. +1 −0  Growl.framework/Resources
  58. BIN  Growl.framework/Versions/A/Growl
  59. +6 −0 Growl.framework/Versions/A/Headers/Growl.h
  60. +758 −0 Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
  61. +556 −0 Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h
  62. +307 −0 Growl.framework/Versions/A/Headers/GrowlDefines.h
  63. +24 −0 Growl.framework/Versions/A/Resources/Info.plist
  64. +1 −0  Growl.framework/Versions/Current
  65. +92 −0 HISTORY
  66. +30 −0 Info.plist
  67. BIN  MacIrssi-Alert.png
  68. BIN  MacIrssi.icns
  69. BIN  MacIrssi.old.icns
  70. +78 −0 MacIrssi.plist
  71. +2,835 −0 MacIrssi.xcode/koldolme.pbxuser
  72. +1,781 −0 MacIrssi.xcode/kolis.mode1
  73. +1,607 −0 MacIrssi.xcode/kolis.mode1v3
  74. +5,164 −0 MacIrssi.xcode/kolis.pbxuser
  75. +1,561 −0 MacIrssi.xcode/matt.mode1v3
  76. +2,262 −0 MacIrssi.xcode/matt.pbxuser
  77. +3,724 −0 MacIrssi.xcode/project.pbxproj
  78. +8 −0 MacIrssi_Prefix.pch
  79. +1 −0  MacPAD.url
  80. BIN  Macirssi-dot.png
  81. +5 −0 MemoryCheck
  82. +1,156 −0 Misc/daniel patch/ChannelController.m
  83. +30 −0 Misc/daniel patch/NSAttributedStringAdditions.h
  84. +105 −0 Misc/daniel patch/NSAttributedStringAdditions.m
  85. BIN  Old icons/iconOnPriv.tif
  86. BIN  Old icons/irssix.icns
  87. BIN  Old icons/irssix.png
  88. +340 −0 Product Stuff/COPYING
  89. +316 −0 Product Stuff/Documents from irssi/botnet.txt
  90. +156 −0 Product Stuff/Documents from irssi/design.txt
  91. +140 −0 Product Stuff/Documents from irssi/faq.html
  92. +118 −0 Product Stuff/Documents from irssi/faq.txt
  93. +72 −0 Product Stuff/Documents from irssi/formats.txt
  94. +1,035 −0 Product Stuff/Documents from irssi/manual.txt
  95. +1,108 −0 Product Stuff/Documents from irssi/perl.txt
  96. +326 −0 Product Stuff/Documents from irssi/signals.txt
  97. +114 −0 Product Stuff/Documents from irssi/special_vars.txt
  98. +974 −0 Product Stuff/Documents from irssi/startup-HOWTO.html
  99. +1 −0  Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller
  100. +1 −0  Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Headers
  101. +1 −0  Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Resources
  102. BIN  Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Growl-WithInstaller
  103. +6 −0 Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h
  104. +758 −0 ...si.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
  105. +556 −0 .../MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h
  106. +307 −0 Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlDefines.h
  107. BIN  ...tents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallation.strings
  108. +135 −0 ...l-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  109. BIN  ...owl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  110. +23 −0 ...ntents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallation.strings
  111. +135 −0 ...wl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  112. BIN  ...rowl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  113. BIN  ...tuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Growl.prefPane.zip
  114. +32 −0 ...MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/GrowlPrefPaneInfo.plist
  115. +24 −0 Product Stuff/MacIrssi.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Info.plist
  116. +23 −0 ...ents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallation.strings
  117. +134 −0 ...-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
  118. BIN  ...wl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  119. +23 −0 ...nts/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallation.strings
  120. BIN  ...l-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallationPrompt.nib/keyedobjects.nib
  121. +23 −0 ...tents/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallation.strings
Sorry, we could not display the entire diff because too many files (4,243) changed.
340 COPYING
@@ -0,0 +1,340 @@
+ 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.
+
+ <signature of Ty Coon>, 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.
BIN  English.lproj/InfoPlist.strings
Binary file not shown
171 English.lproj/MainMenu.nib/classes.nib
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBClasses</key>
+ <array>
+ <dict>
+ <key>CLASS</key>
+ <string>CustomTableView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSTableView</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>pageDown</key>
+ <string>id</string>
+ <key>pageUp</key>
+ <string>id</string>
+ <key>scrollBottom</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>FirstResponder</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>checkForUpdates</key>
+ <string>id</string>
+ <key>takeBoolFromObject</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>UKUpdateChecker</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>prefsButton</key>
+ <string>NSButton</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>changeServer</key>
+ <string>id</string>
+ <key>paste</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>CustomWindow</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>controller</key>
+ <string>AppController</string>
+ <key>inputTextField</key>
+ <string>NSTextField</string>
+ <key>searchField</key>
+ <string>NSSearchField</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSWindow</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>ChannelBar</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>tabView</key>
+ <string>NSTabView</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSView</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>activeChannel</key>
+ <string>id</string>
+ <key>closeChannel</key>
+ <string>id</string>
+ <key>editCurrentChannel</key>
+ <string>id</string>
+ <key>endErrorWindow</key>
+ <string>id</string>
+ <key>endReasonWindow</key>
+ <string>id</string>
+ <key>findNext</key>
+ <string>id</string>
+ <key>findPrevious</key>
+ <string>id</string>
+ <key>gotoChannel</key>
+ <string>id</string>
+ <key>makeSearchFieldFirstResponder</key>
+ <string>id</string>
+ <key>nextChannel</key>
+ <string>id</string>
+ <key>performShortcut</key>
+ <string>id</string>
+ <key>previousChannel</key>
+ <string>id</string>
+ <key>sendCommand</key>
+ <string>id</string>
+ <key>showFontPanel</key>
+ <string>id</string>
+ <key>showPreferencePanel</key>
+ <string>id</string>
+ <key>useSelectionForFind</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>AppController</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>box</key>
+ <string>id</string>
+ <key>channelBar</key>
+ <string>ChannelBar</string>
+ <key>channelMenu</key>
+ <string>NSMenu</string>
+ <key>channelTableView</key>
+ <string>CustomTableView</string>
+ <key>editCurrentChannelMenuItem</key>
+ <string>NSMenuItem</string>
+ <key>errorTextField</key>
+ <string>NSTextField</string>
+ <key>errorWindow</key>
+ <string>NSWindow</string>
+ <key>findNextMenuItem</key>
+ <string>NSMenuItem</string>
+ <key>findPreviousMenuItem</key>
+ <string>NSMenuItem</string>
+ <key>inputTextField</key>
+ <string>NSTextField</string>
+ <key>mainWindow</key>
+ <string>NSWindow</string>
+ <key>reasonTextField</key>
+ <string>NSTextField</string>
+ <key>reasonWindow</key>
+ <string>NSWindow</string>
+ <key>shortcutsMenu</key>
+ <string>NSMenu</string>
+ <key>tabView</key>
+ <string>NSTabView</string>
+ <key>updateChecker</key>
+ <string>UKUpdateChecker</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ </array>
+ <key>IBVersion</key>
+ <string>1</string>
+</dict>
+</plist>
20 English.lproj/MainMenu.nib/info.nib
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBFramework Version</key>
+ <string>629</string>
+ <key>IBLastKnownRelativeProjectPath</key>
+ <string>../../MacIrssi.xcode</string>
+ <key>IBOldestOS</key>
+ <integer>5</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>275</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9C7010</string>
+ <key>targetFramework</key>
+ <string>IBCocoaFramework</string>
+</dict>
+</plist>
BIN  English.lproj/MainMenu.nib/keyedobjects.nib
Binary file not shown
83 English.lproj/MainMenu~.nib/classes.nib
@@ -0,0 +1,83 @@
+{
+ IBClasses = (
+ {
+ ACTIONS = {
+ activeChannel = id;
+ closeChannel = id;
+ editCurrentChannel = id;
+ endErrorWindow = id;
+ endReasonWindow = id;
+ findNext = id;
+ findPrevious = id;
+ gotoChannel = id;
+ makeSearchFieldFirstResponder = id;
+ nextChannel = id;
+ performShortcut = id;
+ previousChannel = id;
+ sendCommand = id;
+ showFontPanel = id;
+ showPreferencePanel = id;
+ useSelectionForFind = id;
+ };
+ CLASS = AppController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ box = id;
+ channelBar = ChannelBar;
+ channelMenu = NSMenu;
+ channelTableView = CustomTableView;
+ editCurrentChannelMenuItem = NSMenuItem;
+ errorTextField = NSTextField;
+ errorWindow = NSWindow;
+ findNextMenuItem = NSMenuItem;
+ findPreviousMenuItem = NSMenuItem;
+ inputTextField = NSTextField;
+ mainWindow = NSWindow;
+ reasonTextField = NSTextField;
+ reasonWindow = NSWindow;
+ shortcutsMenu = NSMenu;
+ tabView = NSTabView;
+ updateChecker = UKUpdateChecker;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = ChannelBar;
+ LANGUAGE = ObjC;
+ OUTLETS = {tabView = NSTabView; };
+ SUPERCLASS = NSView;
+ },
+ {CLASS = CustomTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; },
+ {
+ ACTIONS = {changeServer = id; };
+ CLASS = CustomWindow;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ controller = AppController;
+ inputTextField = NSTextField;
+ searchField = NSSearchField;
+ };
+ SUPERCLASS = NSWindow;
+ },
+ {
+ ACTIONS = {pageDown = id; pageUp = id; scrollBottom = id; };
+ CLASS = FirstResponder;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = FloaterWindow;
+ LANGUAGE = ObjC;
+ OUTLETS = {appController = AppController; message = NSTextField; };
+ SUPERCLASS = NSWindow;
+ },
+ {
+ ACTIONS = {checkForUpdates = id; takeBoolFromObject = id; };
+ CLASS = UKUpdateChecker;
+ LANGUAGE = ObjC;
+ OUTLETS = {prefsButton = NSButton; };
+ SUPERCLASS = NSObject;
+ }
+ );
+ IBVersion = 1;
+}
26 English.lproj/MainMenu~.nib/info.nib
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>100 74 356 240 0 0 1600 1178 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>29</key>
+ <string>28 568 398 44 0 0 1600 1178 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>439.0</string>
+ <key>IBOldestOS</key>
+ <integer>3</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>314</integer>
+ <integer>29</integer>
+ <integer>21</integer>
+ <integer>489</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8C46</string>
+</dict>
+</plist>
BIN  English.lproj/MainMenu~.nib/keyedobjects.nib
Binary file not shown
155 English.lproj/Preferences.nib/classes.nib
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBClasses</key>
+ <array>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>buttonChange</key>
+ <string>id</string>
+ <key>cancelChanges</key>
+ <string>id</string>
+ <key>changeColor</key>
+ <string>id</string>
+ <key>chatEventPopup</key>
+ <string>id</string>
+ <key>revertColorsToDefaults</key>
+ <string>id</string>
+ <key>saveChanges</key>
+ <string>id</string>
+ <key>showWindow</key>
+ <string>id</string>
+ <key>soundListPopUp</key>
+ <string>id</string>
+ <key>swithChannelBar</key>
+ <string>id</string>
+ <key>updateThemeList</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>PreferenceController</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>F10Field</key>
+ <string>NSTextField</string>
+ <key>F11Field</key>
+ <string>NSTextField</string>
+ <key>F12Field</key>
+ <string>NSTextField</string>
+ <key>F1Field</key>
+ <string>NSTextField</string>
+ <key>F2Field</key>
+ <string>NSTextField</string>
+ <key>F3Field</key>
+ <string>NSTextField</string>
+ <key>F4Field</key>
+ <string>NSTextField</string>
+ <key>F5Field</key>
+ <string>NSTextField</string>
+ <key>F6Field</key>
+ <string>NSTextField</string>
+ <key>F7Field</key>
+ <string>NSTextField</string>
+ <key>F8Field</key>
+ <string>NSTextField</string>
+ <key>F9Field</key>
+ <string>NSTextField</string>
+ <key>askQuitCheckBox</key>
+ <string>NSButton</string>
+ <key>bounceIconButton</key>
+ <string>NSButton</string>
+ <key>bounceIconUntilFrontButton</key>
+ <string>NSButton</string>
+ <key>channelBGColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelFGColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelListBGColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelListFGActionColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelListFGNoActivityColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelListFGPrivateMessageColorWell</key>
+ <string>NSColorWell</string>
+ <key>channelListFGPublicMessageColorWell</key>
+ <string>NSColorWell</string>
+ <key>chatEventPopUpButton</key>
+ <string>NSPopUpButton</string>
+ <key>defaultAltNickField</key>
+ <string>NSTextField</string>
+ <key>defaultNickField</key>
+ <string>NSTextField</string>
+ <key>defaultQuitMessageField</key>
+ <string>NSTextField</string>
+ <key>defaultRealnameField</key>
+ <string>NSTextField</string>
+ <key>defaultUsernameField</key>
+ <string>NSTextField</string>
+ <key>growlEventBackgroundButton</key>
+ <string>NSButton</string>
+ <key>growlEventButton</key>
+ <string>NSButton</string>
+ <key>growlEventUntilFrontButton</key>
+ <string>NSButton</string>
+ <key>inputTextFieldBGColorWell</key>
+ <string>NSColorWell</string>
+ <key>inputTextFieldFGColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListBGColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListFGHalfOpColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListFGNormalColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListFGOpColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListFGServerOpColorWell</key>
+ <string>NSColorWell</string>
+ <key>nickListFGVoiceColorWell</key>
+ <string>NSColorWell</string>
+ <key>playSoundBackgroundButton</key>
+ <string>NSButton</string>
+ <key>playSoundButton</key>
+ <string>NSButton</string>
+ <key>preferenceWindow</key>
+ <string>NSWindow</string>
+ <key>previewTextView</key>
+ <string>NSTextView</string>
+ <key>soundListPopUpButton</key>
+ <string>NSPopUpButton</string>
+ <key>textEncodingPopUpButton</key>
+ <string>NSPopUpButton</string>
+ <key>themePreviewDaemon</key>
+ <string>id</string>
+ <key>themeTableView</key>
+ <string>NSTableView</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSWindowController</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>FirstResponder</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>CustomTextView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSTextView</string>
+ </dict>
+ </array>
+ <key>IBVersion</key>
+ <string>1</string>
+</dict>
+</plist>
20 English.lproj/Preferences.nib/info.nib
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBFramework Version</key>
+ <string>629</string>
+ <key>IBLastKnownRelativeProjectPath</key>
+ <string>../../MacIrssi.xcode</string>
+ <key>IBOldestOS</key>
+ <integer>5</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>109</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9C7010</string>
+ <key>targetFramework</key>
+ <string>IBCocoaFramework</string>
+</dict>
+</plist>
BIN  English.lproj/Preferences.nib/keyedobjects.nib
Binary file not shown
63 English.lproj/Preferences~.nib/classes.nib
@@ -0,0 +1,63 @@
+{
+ IBClasses = (
+ {CLASS = CustomTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; },
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ ACTIONS = {
+ cancelChanges = id;
+ changeColor = id;
+ revertColorsToDefaults = id;
+ saveChanges = id;
+ showWindow = id;
+ swithChannelBar = id;
+ updateThemeList = id;
+ };
+ CLASS = PreferenceController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ F10Field = NSTextField;
+ F11Field = NSTextField;
+ F12Field = NSTextField;
+ F1Field = NSTextField;
+ F2Field = NSTextField;
+ F3Field = NSTextField;
+ F4Field = NSTextField;
+ F5Field = NSTextField;
+ F6Field = NSTextField;
+ F7Field = NSTextField;
+ F8Field = NSTextField;
+ F9Field = NSTextField;
+ askQuitCheckBox = NSButton;
+ bounceIconCheckBox = NSButton;
+ channelBGColorWell = NSColorWell;
+ channelFGColorWell = NSColorWell;
+ channelListBGColorWell = NSColorWell;
+ channelListFGActionColorWell = NSColorWell;
+ channelListFGNoActivityColorWell = NSColorWell;
+ channelListFGPrivateMessageColorWell = NSColorWell;
+ channelListFGPublicMessageColorWell = NSColorWell;
+ defaultAltNickField = NSTextField;
+ defaultNickField = NSTextField;
+ defaultQuitMessageField = NSTextField;
+ defaultRealnameField = NSTextField;
+ defaultUsernameField = NSTextField;
+ floaterCheckBox = NSButton;
+ inputTextFieldBGColorWell = NSColorWell;
+ inputTextFieldFGColorWell = NSColorWell;
+ nickListBGColorWell = NSColorWell;
+ nickListFGHalfOpColorWell = NSColorWell;
+ nickListFGNormalColorWell = NSColorWell;
+ nickListFGOpColorWell = NSColorWell;
+ nickListFGServerOpColorWell = NSColorWell;
+ nickListFGVoiceColorWell = NSColorWell;
+ preferenceWindow = NSWindow;
+ previewTextView = NSTextView;
+ textEncodingPopUpButton = NSPopUpButton;
+ themePreviewDaemon = id;
+ themeTableView = NSTableView;
+ };
+ SUPERCLASS = NSWindowController;
+ }
+ );
+ IBVersion = 1;
+}
16 English.lproj/Preferences~.nib/info.nib
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>48 202 356 240 0 0 1600 1178 </string>
+ <key>IBFramework Version</key>
+ <string>439.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>5</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8C46</string>
+</dict>
+</plist>
BIN  English.lproj/Preferences~.nib/keyedobjects.nib
Binary file not shown
50 English.lproj/Tab new old.nib/classes.nib
@@ -0,0 +1,50 @@
+{
+ IBClasses = (
+ {
+ ACTIONS = {
+ endReasonWindow = id;
+ endTopicWindow = id;
+ mainTextViewMenuClicked = id;
+ modeChanged = id;
+ nickListRowDoubleClicked = id;
+ nickViewMenuClicked = id;
+ raiseTopicWindow = id;
+ };
+ CLASS = ChannelController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ cancelButton = NSButton;
+ editChannelButton = NSButton;
+ floaterCheckBox = NSButton;
+ inviteCheckBox = NSButton;
+ keyTextField = NSTextField;
+ mainTextScrollView = NSScrollView;
+ mainTextView = NSTextView;
+ mainTextViewMenu = NSMenu;
+ maxUsersTextField = NSTextField;
+ moderatedCheckBox = NSButton;
+ nickTableScrollView = NSScrollView;
+ nickTableView = NSTableView;
+ nickViewMenu = NSMenu;
+ noExternalMessagesCheckBox = NSButton;
+ onlyOpsCanChangeTopicCheckBox = NSButton;
+ privateCheckBox = NSButton;
+ reasonWindow = NSWindow;
+ saveButton = NSButton;
+ secretCheckBox = NSButton;
+ splitView = NSSplitView;
+ topicByTextField = NSTextField;
+ topicEditableTextField = NSTextField;
+ topicTextField = NSTextField;
+ topicTimeTextField = NSTextField;
+ topicWindow = NSWindow;
+ wholeView = NSView;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = CustomTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; },
+ {CLASS = CustomTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; },
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
+ );
+ IBVersion = 1;
+}
26 English.lproj/Tab new old.nib/info.nib
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>144 133 426 246 0 0 1600 1178 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>5</key>
+ <string>425 611 749 378 0 0 1600 1178 </string>
+ <key>52</key>
+ <string>32 321 170 175 0 0 1600 1178 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>364.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>185</integer>
+ <integer>5</integer>
+ <integer>115</integer>
+ <integer>52</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>7R28</string>
+</dict>
+</plist>
BIN  English.lproj/Tab new old.nib/keyedobjects.nib
Binary file not shown
121 English.lproj/Tab new.nib/classes.nib
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBClasses</key>
+ <array>
+ <dict>
+ <key>CLASS</key>
+ <string>CustomTableView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSTableView</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>endReasonWindow</key>
+ <string>id</string>
+ <key>endTopicWindow</key>
+ <string>id</string>
+ <key>mainTextViewMenuClicked</key>
+ <string>id</string>
+ <key>modeChanged</key>
+ <string>id</string>
+ <key>nickListRowDoubleClicked</key>
+ <string>id</string>
+ <key>nickViewMenuClicked</key>
+ <string>id</string>
+ <key>performSearch</key>
+ <string>id</string>
+ <key>raiseTopicWindow</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>ChannelController</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>cancelButton</key>
+ <string>NSButton</string>
+ <key>editChannelButton</key>
+ <string>NSButton</string>
+ <key>floaterCheckBox</key>
+ <string>NSButton</string>
+ <key>inviteCheckBox</key>
+ <string>NSButton</string>
+ <key>keyTextField</key>
+ <string>NSTextField</string>
+ <key>mainTextScrollView</key>
+ <string>NSScrollView</string>
+ <key>mainTextView</key>
+ <string>NSTextView</string>
+ <key>mainTextViewMenu</key>
+ <string>NSMenu</string>
+ <key>maxUsersTextField</key>
+ <string>NSTextField</string>
+ <key>moderatedCheckBox</key>
+ <string>NSButton</string>
+ <key>nickTableScrollView</key>
+ <string>NSScrollView</string>
+ <key>nickTableView</key>
+ <string>NSTableView</string>
+ <key>nickViewMenu</key>
+ <string>NSMenu</string>
+ <key>noExternalMessagesCheckBox</key>
+ <string>NSButton</string>
+ <key>onlyOpsCanChangeTopicCheckBox</key>
+ <string>NSButton</string>
+ <key>privateCheckBox</key>
+ <string>NSButton</string>
+ <key>reasonWindow</key>
+ <string>NSWindow</string>
+ <key>saveButton</key>
+ <string>NSButton</string>
+ <key>searchField</key>
+ <string>NSSearchField</string>
+ <key>secretCheckBox</key>
+ <string>NSButton</string>
+ <key>splitView</key>
+ <string>NSSplitView</string>
+ <key>textEncodingPopUpButton</key>
+ <string>NSPopUpButton</string>
+ <key>topicByTextField</key>
+ <string>NSTextField</string>
+ <key>topicEditableTextField</key>
+ <string>NSTextField</string>
+ <key>topicTextField</key>
+ <string>NSTextField</string>
+ <key>topicTimeTextField</key>
+ <string>NSTextField</string>
+ <key>topicWindow</key>
+ <string>NSWindow</string>
+ <key>wholeView</key>
+ <string>NSView</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>FirstResponder</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>CustomTextView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSTextView</string>
+ </dict>
+ </array>
+ <key>IBVersion</key>
+ <string>1</string>
+</dict>
+</plist>
20 English.lproj/Tab new.nib/info.nib
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBFramework Version</key>
+ <string>629</string>
+ <key>IBLastKnownRelativeProjectPath</key>
+ <string>../../MacIrssi.xcode</string>
+ <key>IBOldestOS</key>
+ <integer>5</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>5</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9A581</string>
+ <key>targetFramework</key>
+ <string>IBCocoaFramework</string>
+</dict>
+</plist>
BIN  English.lproj/Tab new.nib/keyedobjects.nib
Binary file not shown
53 English.lproj/Tab new~.nib/classes.nib
@@ -0,0 +1,53 @@
+{
+ IBClasses = (
+ {
+ ACTIONS = {
+ endReasonWindow = id;
+ endTopicWindow = id;
+ mainTextViewMenuClicked = id;
+ modeChanged = id;
+ nickListRowDoubleClicked = id;
+ nickViewMenuClicked = id;
+ performSearch = id;
+ raiseTopicWindow = id;
+ };
+ CLASS = ChannelController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ cancelButton = NSButton;
+ editChannelButton = NSButton;
+ floaterCheckBox = NSButton;
+ inviteCheckBox = NSButton;
+ keyTextField = NSTextField;
+ mainTextScrollView = NSScrollView;
+ mainTextView = NSTextView;
+ mainTextViewMenu = NSMenu;
+ maxUsersTextField = NSTextField;
+ moderatedCheckBox = NSButton;
+ nickTableScrollView = NSScrollView;
+ nickTableView = NSTableView;
+ nickViewMenu = NSMenu;
+ noExternalMessagesCheckBox = NSButton;
+ onlyOpsCanChangeTopicCheckBox = NSButton;
+ privateCheckBox = NSButton;
+ reasonWindow = NSWindow;
+ saveButton = NSButton;
+ searchField = NSSearchField;
+ secretCheckBox = NSButton;
+ splitView = NSSplitView;
+ textEncodingPopUpButton = NSPopUpButton;
+ topicByTextField = NSTextField;
+ topicEditableTextField = NSTextField;
+ topicTextField = NSTextField;
+ topicTimeTextField = NSTextField;
+ topicWindow = NSWindow;
+ wholeView = NSView;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = CustomTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; },
+ {CLASS = CustomTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; },
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
+ );
+ IBVersion = 1;
+}
26 English.lproj/Tab new~.nib/info.nib
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>118 37 426 246 0 0 1600 1178 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>5</key>
+ <string>425 611 749 377 0 0 1600 1178 </string>
+ <key>52</key>
+ <string>32 321 180 175 0 0 1600 1178 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>439.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>185</integer>
+ <integer>52</integer>
+ <integer>5</integer>
+ <integer>115</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8C46</string>
+</dict>
+</plist>
BIN  English.lproj/Tab new~.nib/keyedobjects.nib
Binary file not shown
29 English.lproj/UKUpdateChecker.strings
@@ -0,0 +1,29 @@
+/* A New Version is Available - dialog text */
+"NEW_VERSION_TEXT" = "There is a new version of %@ available (v%@). Do you want to download it now?";
+
+/* A New Version is Available - dialog title */
+"NEW_VERSION_TITLE" = "A New Version is Available";
+
+/* When soft is up-to-date - dialog text */
+"UP_TO_DATE_TITLE" = "You are up-to-date";
+
+/* When soft is up-to-date - dialog title */
+"UP_TO_DATE_TEXT" = "Your copy of %@ is the most recent version and does not need to be updated right now.";
+
+/* When update test failed - dialog title */
+"UPDATE_ERROR_TITLE" = "An Error Occured";
+
+/* When update test failed - dialog text */
+"UPDATE_ERROR_TEXT" = "%@ was unable to check for software updates.";
+
+/* Asking whether to check for updates at startup - dialog title */
+"CHECK_FOR_UPDATES_TITLE" = "Check for updates at startup?";
+
+/* Asking whether to check for updates at startup - dialog text */
+"CHECK_FOR_UPDATES_TEXT" = "Do you want to be notified when you start up the application and a new version is available on the web? You can also manually initiate this check using the \"Check for updates...\" menu item in the \"%@\" application menu";
+
+
+"OK" = "OK";
+
+
+"Cancel" = "Cancel";
4 Files containing version number
@@ -0,0 +1,4 @@
+Info.plist
+InfoPlist.strings
+fe-core-commands.c
+ctcp.c
1  Growl-WithInstaller.framework/Growl-WithInstaller
1  Growl-WithInstaller.framework/Headers
1  Growl-WithInstaller.framework/Resources
BIN  Growl-WithInstaller.framework/Versions/A/Growl-WithInstaller
Binary file not shown
6 Growl-WithInstaller.framework/Versions/A/Headers/Growl.h
@@ -0,0 +1,6 @@
+#include "GrowlDefines.h"
+
+#ifdef __OBJC__
+# include "GrowlApplicationBridge.h"
+#endif
+#include "GrowlApplicationBridge-Carbon.h"
758 Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
@@ -0,0 +1,758 @@
+//
+// GrowlApplicationBridge-Carbon.h
+// Growl
+//
+// Created by Mac-arena the Bored Zo on Wed Jun 18 2004.
+// Based on GrowlApplicationBridge.h by Evan Schoenberg.
+// This source code is in the public domain. You may freely link it into any
+// program.
+//
+
+#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_
+#define _GROWLAPPLICATIONBRIDGE_CARBON_H_
+
+#include <sys/cdefs.h>
+#include <Carbon/Carbon.h>
+
+/*! @header GrowlApplicationBridge-Carbon.h
+ * @abstract Declares an API that Carbon applications can use to interact with Growl.
+ * @discussion GrowlApplicationBridge uses a delegate to provide information //XXX
+ * to Growl (such as your application's name and what notifications it may
+ * post) and to provide information to your application (such as that Growl
+ * is listening for notifications or that a notification has been clicked).
+ *
+ * You can set the Growldelegate with Growl_SetDelegate and find out the
+ * current delegate with Growl_GetDelegate. See struct Growl_Delegate for more
+ * information about the delegate.
+ */
+
+__BEGIN_DECLS
+
+/*! @struct Growl_Delegate
+ * @abstract Delegate to supply GrowlApplicationBridge with information and respond to events.
+ * @discussion The Growl delegate provides your interface to
+ * GrowlApplicationBridge. When GrowlApplicationBridge needs information about
+ * your application, it looks for it in the delegate; when Growl or the user
+ * does something that you might be interested in, GrowlApplicationBridge
+ * looks for a callback in the delegate and calls it if present
+ * (meaning, if it is not <code>NULL</code>).
+ * XXX on all of that
+ * @field size The size of the delegate structure.
+ * @field applicationName The name of your application.
+ * @field registrationDictionary A dictionary describing your application and the notifications it can send out.
+ * @field applicationIconData Your application's icon.
+ * @field growlInstallationWindowTitle The title of the installation window.
+ * @field growlInstallationInformation Text to display in the installation window.
+ * @field growlUpdateWindowTitle The title of the update window.
+ * @field growlUpdateInformation Text to display in the update window.
+ * @field referenceCount A count of owners of the delegate.
+ * @field retain Called when GrowlApplicationBridge receives this delegate.
+ * @field release Called when GrowlApplicationBridge no longer needs this delegate.
+ * @field growlIsReady Called when GrowlHelperApp is listening for notifications.
+ * @field growlNotificationWasClicked Called when a Growl notification is clicked.
+ * @field growlNotificationTimedOut Called when a Growl notification timed out.
+ */
+struct Growl_Delegate {
+ /* @discussion This should be sizeof(struct Growl_Delegate).
+ */
+ size_t size;
+
+ /*All of these attributes are optional.
+ *Optional attributes can be NULL; required attributes that
+ * are NULL cause setting the Growl delegate to fail.
+ *XXX - move optional/required status into the discussion for each field
+ */
+
+ /* This name is used both internally and in the Growl preferences.
+ *
+ * This should remain stable between different versions and incarnations of
+ * your application.
+ * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
+ * "SurfWriter Lite" are not.
+ *
+ * This can be <code>NULL</code> if it is provided elsewhere, namely in an
+ * auto-discoverable plist file in your app bundle
+ * (XXX refer to more information on that) or in registrationDictionary.
+ */
+ CFStringRef applicationName;
+
+ /*
+ * Must contain at least these keys:
+ * GROWL_NOTIFICATIONS_ALL (CFArray):
+ * Contains the names of all notifications your application may post.
+ *
+ * Can also contain these keys:
+ * GROWL_NOTIFICATIONS_DEFAULT (CFArray):
+ * Names of notifications that should be enabled by default.
+ * If omitted, GROWL_NOTIFICATIONS_ALL will be used.
+ * GROWL_APP_NAME (CFString):
+ * Same as the applicationName member of this structure.
+ * If both are present, the applicationName member shall prevail.
+ * If this key is present, you may omit applicationName (set it to <code>NULL</code>).
+ * GROWL_APP_ICON (CFData):
+ * Same as the iconData member of this structure.
+ * If both are present, the iconData member shall prevail.
+ * If this key is present, you may omit iconData (set it to <code>NULL</code>).
+ *
+ * If you change the contents of this dictionary after setting the delegate,
+ * be sure to call Growl_Reregister.
+ *
+ * This can be <code>NULL</code> if you have an auto-discoverable plist file in your app
+ * bundle. (XXX refer to more information on that)
+ */
+ CFDictionaryRef registrationDictionary;
+
+ /* The data can be in any format supported by NSImage. As of
+ * Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and
+ * PICT formats.
+ *
+ * If this is not supplied, Growl will look up your application's icon by
+ * its application name.
+ */
+ CFDataRef applicationIconData;
+
+ /* Installer display attributes
+ *
+ * These four attributes are used by the Growl installer, if this framework
+ * supports it.
+ * For any of these being <code>NULL</code>, a localised default will be
+ * supplied.
+ */
+
+ /* If this is <code>NULL</code>, Growl will use a default,
+ * localized title.
+ *
+ * Only used if you're using Growl-WithInstaller.framework. Otherwise,
+ * this member is ignored.
+ */
+ CFStringRef growlInstallationWindowTitle;
+ /* This information may be as long or short as desired (the
+ * window will be sized to fit it). If Growl is not installed, it will
+ * be displayed to the user as an explanation of what Growl is and what
+ * it can do in your application.
+ * It should probably note that no download is required to install.
+ *
+ * If this is <code>NULL</code>, Growl will use a default, localized
+ * explanation.
+ *
+ * Only used if you're using Growl-WithInstaller.framework. Otherwise,
+ * this member is ignored.
+ */
+ CFStringRef growlInstallationInformation;
+ /* If this is <code>NULL</code>, Growl will use a default,
+ * localized title.
+ *
+ * Only used if you're using Growl-WithInstaller.framework. Otherwise,
+ * this member is ignored.
+ */
+ CFStringRef growlUpdateWindowTitle;
+ /* This information may be as long or short as desired (the
+ * window will be sized to fit it). If an older version of Growl is
+ * installed, it will be displayed to the user as an explanation that an
+ * updated version of Growl is included in your application and
+ * no download is required.
+ *
+ * If this is <code>NULL</code>, Growl will use a default, localized
+ * explanation.
+ *
+ * Only used if you're using Growl-WithInstaller.framework. Otherwise,
+ * this member is ignored.
+ */
+ CFStringRef growlUpdateInformation;
+
+ /* This member is provided for use by your retain and release
+ * callbacks (see below).
+ *
+ * GrowlApplicationBridge never directly uses this member. Instead, it
+ * calls your retain callback (if non-<code>NULL</code>) and your release
+ * callback (if non-<code>NULL</code>).
+ */
+ unsigned referenceCount;
+
+ //Functions. Currently all of these are optional (any of them can be NULL).
+
+ /* When you call Growl_SetDelegate(newDelegate), it will call
+ * oldDelegate->release(oldDelegate), and then it will call
+ * newDelegate->retain(newDelegate), and the return value from retain
+ * is what will be set as the delegate.
+ * (This means that this member works like CFRetain and -[NSObject retain].)
+ * This member is optional (it can be <code>NULL</code>).
+ * For a delegate allocated with malloc, this member would be
+ * <code>NULL</code>.
+ * @result A delegate to which GrowlApplicationBridge holds a reference.
+ */
+ void *(*retain)(void *);
+ /* When you call Growl_SetDelegate(newDelegate), it will call
+ * oldDelegate->release(oldDelegate), and then it will call
+ * newDelegate->retain(newDelegate), and the return value from retain
+ * is what will be set as the delegate.
+ * (This means that this member works like CFRelease and
+ * -[NSObject release].)
+ * This member is optional (it can be NULL).
+ * For a delegate allocated with malloc, this member might be
+ * <code>free</code>(3).
+ */
+ void (*release)(void *);
+
+ /* Informs the delegate that Growl (specifically, the GrowlHelperApp) was
+ * launched successfully (or was already running). The application can
+ * take actions with the knowledge that Growl is installed and functional.
+ */
+ void (*growlIsReady)(void);
+
+ /* Informs the delegate that a Growl notification was clicked. It is only
+ * sent for notifications sent with a non-<code>NULL</code> clickContext,
+ * so if you want to receive a message when a notification is clicked,
+ * clickContext must not be <code>NULL</code> when calling
+ * Growl_PostNotification or
+ * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
+ */
+ void (*growlNotificationWasClicked)(CFPropertyListRef clickContext);
+
+ /* Informs the delegate that a Growl notification timed out. It is only
+ * sent for notifications sent with a non-<code>NULL</code> clickContext,
+ * so if you want to receive a message when a notification is clicked,
+ * clickContext must not be <code>NULL</code> when calling
+ * Growl_PostNotification or
+ * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
+ */
+ void (*growlNotificationTimedOut)(CFPropertyListRef clickContext);
+};
+
+/*! @struct Growl_Notification
+ * @abstract Structure describing a Growl notification.
+ * @discussion XXX
+ * @field size The size of the notification structure.
+ * @field name Identifies the notification.
+ * @field title Short synopsis of the notification.
+ * @field description Additional text.
+ * @field iconData An icon for the notification.
+ * @field priority An indicator of the notification's importance.
+ * @field reserved Bits reserved for future usage.
+ * @field isSticky Requests that a notification stay on-screen until dismissed explicitly.
+ * @field clickContext An identifier to be passed to your click callback when a notification is clicked.
+ * @field clickCallback A callback to call when the notification is clicked.
+ */
+struct Growl_Notification {
+ /* This should be sizeof(struct Growl_Notification).
+ */
+ size_t size;
+
+ /* The notification name distinguishes one type of
+ * notification from another. The name should be human-readable, as it
+ * will be displayed in the Growl preference pane.
+ *
+ * The name is used in the GROWL_NOTIFICATIONS_ALL and
+ * GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and
+ * in this member of the Growl_Notification structure.
+ */
+ CFStringRef name;
+
+ /* A notification's title describes the notification briefly.
+ * It should be easy to read quickly by the user.
+ */
+ CFStringRef title;
+
+ /* The description supplements the title with more
+ * information. It is usually longer and sometimes involves a list of
+ * subjects. For example, for a 'Download complete' notification, the
+ * description might have one filename per line. GrowlMail in Growl 0.6
+ * uses a description of '%d new mail(s)' (formatted with the number of
+ * messages).
+ */
+ CFStringRef description;
+
+ /* The notification icon usually indicates either what
+ * happened (it may have the same icon as e.g. a toolbar item that
+ * started the process that led to the notification), or what it happened
+ * to (e.g. a document icon).
+ *
+ * The icon data is optional, so it can be <code>NULL</code>. In that
+ * case, the application icon is used alone. Not all displays support
+ * icons.
+ *
+ * The data can be in any format supported by NSImage. As of Mac OS X
+ * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form
+ * ats.
+ */
+ CFDataRef iconData;
+
+ /* Priority is new in Growl 0.6, and is represented as a
+ * signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low
+ * priority, and +2 is Very High priority.
+ *
+ * Not all displays support priority. If you do not wish to assign a
+ * priority to your notification, assign 0.
+ */
+ signed int priority;
+
+ /* These bits are not used in Growl 0.6. Set them to 0.
+ */
+ unsigned reserved: 31;
+
+ /* When the sticky bit is clear, in most displays,
+ * notifications disappear after a certain amount of time. Sticky
+ * notifications, however, remain on-screen until the user dismisses them
+ * explicitly, usually by clicking them.
+ *
+ * Sticky notifications were introduced in Growl 0.6. Most notifications
+ * should not be sticky. Not all displays support sticky notifications,
+ * and the user may choose in Growl's preference pane to force the
+ * notification to be sticky or non-sticky, in which case the sticky bit
+ * in the notification will be ignored.
+ */
+ unsigned isSticky: 1;
+
+ /* If this is not <code>NULL</code>, and your click callback
+ * is not <code>NULL</code> either, this will be passed to the callback
+ * when your notification is clicked by the user.
+ *
+ * Click feedback was introduced in Growl 0.6, and it is optional. Not
+ * all displays support click feedback.
+ */
+ CFPropertyListRef clickContext;
+
+ /* If this is not <code>NULL</code>, it will be called instead
+ * of the Growl delegate's click callback when clickContext is
+ * non-<code>NULL</code> and the notification is clicked on by the user.
+ *
+ * Click feedback was introduced in Growl 0.6, and it is optional. Not
+ * all displays support click feedback.
+ *
+ * The per-notification click callback is not yet supported as of Growl
+ * 0.7.
+ */
+ void (*clickCallback)(CFPropertyListRef clickContext);
+};
+
+#pragma mark -
+#pragma mark Easy initialisers
+
+/*! @defined InitGrowlDelegate
+ * @abstract Callable macro. Initializes a Growl delegate structure to defaults.
+ * @discussion Call with a pointer to a struct Growl_Delegate. All of the
+ * members of the structure will be set to 0 or <code>NULL</code>, except for
+ * size (which will be set to <code>sizeof(struct Growl_Delegate)</code>) and
+ * referenceCount (which will be set to 1).
+ */
+#define InitGrowlDelegate(delegate) \
+ do { \
+ if (delegate) { \
+ (delegate)->size = sizeof(struct Growl_Delegate); \
+ (delegate)->applicationName = NULL; \
+ (delegate)->registrationDictionary = NULL; \
+ (delegate)->applicationIconData = NULL; \
+ (delegate)->growlInstallationWindowTitle = NULL; \
+ (delegate)->growlInstallationInformation = NULL; \
+ (delegate)->growlUpdateWindowTitle = NULL; \
+ (delegate)->growlUpdateInformation = NULL; \
+ (delegate)->referenceCount = 1U; \
+ (delegate)->retain = NULL; \
+ (delegate)->release = NULL; \
+ (delegate)->growlIsReady = NULL; \
+ (delegate)->growlNotificationWasClicked = NULL; \
+ (delegate)->growlNotificationTimedOut = NULL; \
+ } \
+ } while(0)
+
+/*! @defined InitGrowlNotification
+ * @abstract Callable macro. Initializes a Growl notification structure to defaults.
+ * @discussion Call with a pointer to a struct Growl_Notification. All of
+ * the members of the structure will be set to 0 or <code>NULL</code>, except
+ * for size (which will be set to
+ * <code>sizeof(struct Growl_Notification)</code>).
+ */
+#define InitGrowlNotification(notification) \
+ do { \
+ if (notification) { \
+ (notification)->size = sizeof(struct Growl_Notification); \
+ (notification)->name = NULL; \
+ (notification)->title = NULL; \
+ (notification)->description = NULL; \
+ (notification)->iconData = NULL; \
+ (notification)->priority = 0; \
+ (notification)->reserved = 0U; \
+ (notification)->isSticky = false; \
+ (notification)->clickContext = NULL; \
+ } \
+ } while(0)
+
+#pragma mark -
+#pragma mark Public API
+
+// @functiongroup Managing the Growl delegate
+
+/*! @function Growl_SetDelegate
+ * @abstract Replaces the current Growl delegate with a new one, or removes
+ * the Growl delegate.
+ * @param newDelegate
+ * @result Returns false and does nothing else if a pointer that was passed in
+ * is unsatisfactory (because it is non-<code>NULL</code>, but at least one
+ * required member of it is <code>NULL</code>). Otherwise, sets or unsets the
+ * delegate and returns true.
+ * @discussion When <code>newDelegate</code> is non-<code>NULL</code>, sets
+ * the delegate to <code>newDelegate</code>. When it is <code>NULL</code>,
+ * the current delegate will be unset, and no delegate will be in place.
+ *
+ * It is legal for <code>newDelegate</code> to be the current delegate;
+ * nothing will happen, and Growl_SetDelegate will return true. It is also
+ * legal for it to be <code>NULL</code>, as described above; again, it will
+ * return true.
+ *
+ * If there was a delegate in place before the call, Growl_SetDelegate will
+ * call the old delegate's release member if it was non-<code>NULL</code>. If
+ * <code>newDelegate</code> is non-<code>NULL</code>, Growl_SetDelegate will
+ * call <code>newDelegate->retain</code>, and set the delegate to its return
+ * value.
+ *
+ * If you are using Growl-WithInstaller.framework, and an older version of
+ * Growl is installed on the user's system, the user will automatically be
+ * prompted to update.
+ *
+ * GrowlApplicationBridge currently does not copy this structure, nor does it
+ * retain any of the CF objects in the structure (it regards the structure as
+ * a container that retains the objects when they are added and releases them
+ * when they are removed or the structure is destroyed). Also,
+ * GrowlApplicationBridge currently does not modify any member of the
+ * structure, except possibly the referenceCount by calling the retain and
+ * release members.
+ */
+Boolean Growl_SetDelegate(struct Growl_Delegate *newDelegate);
+
+/*! @function Growl_GetDelegate
+ * @abstract Returns the current Growl delegate, if any.
+ * @result The current Growl delegate.
+ * @discussion Returns the last pointer passed into Growl_SetDelegate, or
+ * <code>NULL</code> if no such call has been made.
+ *
+ * This function follows standard Core Foundation reference-counting rules.
+ * Because it is a Get function, not a Copy function, it will not retain the
+ * delegate on your behalf. You are responsible for retaining and releasing
+ * the delegate as needed.
+ */
+struct Growl_Delegate *Growl_GetDelegate(void);
+
+#pragma mark -
+
+// @functiongroup Posting Growl notifications
+
+/*! @function Growl_PostNotification
+ * @abstract Posts a Growl notification.
+ * @param notification The notification to post.
+ * @discussion This is the preferred means for sending a Growl notification.
+ * The notification name and at least one of the title and description are
+ * required (all three are preferred). All other parameters may be
+ * <code>NULL</code> (or 0 or false as appropriate) to accept default values.
+ *
+ * If using the Growl-WithInstaller framework, if Growl is not installed the
+ * user will be prompted to install Growl.
+ * If the user cancels, this function will have no effect until the next
+ * application session, at which time when it is called the user will be
+ * prompted again. The user is also given the option to not be prompted again.
+ * If the user does choose to install Growl, the requested notification will
+ * be displayed once Growl is installed and running.
+ */
+void Growl_PostNotification(const struct Growl_Notification *notification);
+
+/*! @function Growl_PostNotificationWithDictionary
+* @abstract Notifies using a userInfo dictionary suitable for passing to
+* CFDistributedNotificationCenter.
+* @param userInfo The dictionary to notify with.
+* @discussion Before Growl 0.6, your application would have posted
+* notifications using CFDistributedNotificationCenter by creating a userInfo
+* dictionary with the notification data. This had the advantage of allowing
+* you to add other data to the dictionary for programs besides Growl that
+* might be listening.
+*
+* This function allows you to use such dictionaries without being restricted
+* to using CFDistributedNotificationCenter. The keys for this dictionary
+ * can be found in GrowlDefines.h.
+*/
+void Growl_PostNotificationWithDictionary(CFDictionaryRef userInfo);
+
+/*! @function Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext
+ * @abstract Posts a Growl notification using parameter values.
+ * @param title The title of the notification.
+ * @param description The description of the notification.
+ * @param notificationName The name of the notification as listed in the
+ * registration dictionary.
+ * @param iconData Data representing a notification icon. Can be <code>NULL</code>.
+ * @param priority The priority of the notification (-2 to +2, with -2
+ * being Very Low and +2 being Very High).
+ * @param isSticky If true, requests that this notification wait for a
+ * response from the user.
+ * @param clickContext An object to pass to the clickCallback, if any. Can
+ * be <code>NULL</code>, in which case the clickCallback is not called.
+ * @discussion Creates a temporary Growl_Notification, fills it out with the
+ * supplied information, and calls Growl_PostNotification on it.
+ * See struct Growl_Notification and Growl_PostNotification for more
+ * information.
+ *
+ * The icon data can be in any format supported by NSImage. As of Mac OS X
+ * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT formats.
+ */
+void Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(
+ /*inhale*/
+ CFStringRef title,
+ CFStringRef description,
+ CFStringRef notificationName,
+ CFDataRef iconData,
+ signed int priority,
+ Boolean isSticky,
+ CFPropertyListRef clickContext);
+
+#pragma mark -
+
+// @functiongroup Registering
+
+/*! @function Growl_RegisterWithDictionary
+ * @abstract Register your application with Growl without setting a delegate.
+ * @discussion When you call this function with a dictionary,
+ * GrowlApplicationBridge registers your application using that dictionary.
+ * If you pass <code>NULL</code>, GrowlApplicationBridge will ask the delegate
+ * (if there is one) for a dictionary, and if that doesn't work, it will look
+ * in your application's bundle for an auto-discoverable plist.
+ * (XXX refer to more information on that)
+ *
+ * If you pass a dictionary to this function, it must include the
+ * <code>GROWL_APP_NAME</code> key, unless a delegate is set.
+ *
+ * This function is mainly an alternative to the delegate system introduced
+ * with Growl 0.6. Without a delegate, you cannot receive callbacks such as
+ * <code>growlIsReady</code> (since they are sent to the delegate). You can,
+ * however, set a delegate after registering without one.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ * @result <code>false</code> if registration failed (e.g. if Growl isn't installed).
+ */
+Boolean Growl_RegisterWithDictionary(CFDictionaryRef regDict);
+
+/*! @function Growl_Reregister
+ * @abstract Updates your registration with Growl.
+ * @discussion If your application changes the contents of the
+ * GROWL_NOTIFICATIONS_ALL key in the registrationDictionary member of the
+ * Growl delegate, or if it changes the value of that member, or if it
+ * changes the contents of its auto-discoverable plist, call this function
+ * to have Growl update its registration information for your application.
+ *
+ * Otherwise, this function does not normally need to be called. If you're
+ * using a delegate, your application will be registered when you set the
+ * delegate if both the delegate and its registrationDictionary member are
+ * non-<code>NULL</code>.
+ *
+ * This function is now implemented using
+ * <code>Growl_RegisterWithDictionary</code>.
+ */
+void Growl_Reregister(void);
+
+#pragma mark -
+
+/*! @function Growl_SetWillRegisterWhenGrowlIsReady
+ * @abstract Tells GrowlApplicationBridge to register with Growl when Growl
+ * launches (or not).
+ * @discussion When Growl has started listening for notifications, it posts a
+ * <code>GROWL_IS_READY</code> notification on the Distributed Notification
+ * Center. GrowlApplicationBridge listens for this notification, using it to
+ * perform various tasks (such as calling your delegate's
+ * <code>growlIsReady</code> callback, if it has one). If this function is
+ * called with <code>true</code>, one of those tasks will be to reregister
+ * with Growl (in the manner of <code>Growl_Reregister</code>).
+ *
+ * This attribute is automatically set back to <code>false</code>
+ * (the default) after every <code>GROWL_IS_READY</code> notification.
+ * @param flag <code>true</code> if you want GrowlApplicationBridge to register with
+ * Growl when next it is ready; <code>false</code> if not.
+ */
+void Growl_SetWillRegisterWhenGrowlIsReady(Boolean flag);
+/*! @function Growl_WillRegisterWhenGrowlIsReady
+ * @abstract Reports whether GrowlApplicationBridge will register with Growl
+ * when Growl next launches.
+ * @result <code>true</code> if GrowlApplicationBridge will register with
+ * Growl when next it posts GROWL_IS_READY; <code>false</code> if not.
+ */
+Boolean Growl_WillRegisterWhenGrowlIsReady(void);
+
+#pragma mark -
+
+// @functiongroup Obtaining registration dictionaries
+
+/*! @function Growl_CopyRegistrationDictionaryFromDelegate
+ * @abstract Asks the delegate for a registration dictionary.
+ * @discussion If no delegate is set, or if the delegate's
+ * <code>registrationDictionary</code> member is <code>NULL</code>, this
+ * function returns <code>NULL</code>.
+ *
+ * This function does not attempt to clean up the dictionary in any way - for
+ * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ * will be missing it too. Use
+ * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
+ * <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
+ * to try to fill in missing keys.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
+CFDictionaryRef Growl_CopyRegistrationDictionaryFromDelegate(void);
+
+/*! @function Growl_CopyRegistrationDictionaryFromBundle
+ * @abstract Looks in a bundle for a registration dictionary.
+ * @discussion This function looks in a bundle for an auto-discoverable
+ * registration dictionary file using <code>CFBundleCopyResourceURL</code>.
+ * If it finds one, it loads the file using <code>CFPropertyList</code> and
+ * returns the result.
+ *
+ * If you pass <code>NULL</code> as the bundle, the main bundle is examined.
+ *
+ * This function does not attempt to clean up the dictionary in any way - for
+ * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ * will be missing it too. Use
+ * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
+ * <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
+ * to try to fill in missing keys.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
+CFDictionaryRef Growl_CopyRegistrationDictionaryFromBundle(CFBundleRef bundle);
+
+/*! @function Growl_CreateBestRegistrationDictionary
+ * @abstract Obtains a registration dictionary, filled out to the best of
+ * GrowlApplicationBridge's knowledge.
+ * @discussion This function creates a registration dictionary as best
+ * GrowlApplicationBridge knows how.
+ *
+ * First, GrowlApplicationBridge examines the Growl delegate (if there is
+ * one) and gets the registration dictionary from that. If no such dictionary
+ * was obtained, GrowlApplicationBridge looks in your application's main
+ * bundle for an auto-discoverable registration dictionary file. If that
+ * doesn't exist either, this function returns <code>NULL</code>.
+ *
+ * Second, GrowlApplicationBridge calls
+ * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary</code> with
+ * whatever dictionary was obtained. The result of that function is the
+ * result of this function.
+ *
+ * GrowlApplicationBridge uses this function when you call
+ * <code>Growl_SetDelegate</code>, or when you call
+ * <code>Growl_RegisterWithDictionary</code> with <code>NULL</code>.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
+CFDictionaryRef Growl_CreateBestRegistrationDictionary(void);
+
+#pragma mark -
+
+// @functiongroup Filling in registration dictionaries
+
+/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionary
+ * @abstract Tries to fill in missing keys in a registration dictionary.
+ * @param regDict The dictionary to fill in.
+ * @result The dictionary with the keys filled in.
+ * @discussion This function examines the passed-in dictionary for missing keys,
+ * and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ * Key Value
+ * --- -----
+ * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
+ * <code>GROWL_APP_ICON</code> The icon of the application.
+ * <code>GROWL_APP_LOCATION</code> The location of the application.
+ * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ * Keys are only filled in if missing; if a key is present in the dictionary,
+ * its value will not be changed.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ */
+CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionary(CFDictionaryRef regDict);
+/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys
+ * @abstract Tries to fill in missing keys in a registration dictionary.
+ * @param regDict The dictionary to fill in.
+ * @param keys The keys to fill in. If <code>NULL</code>, any missing keys are filled in.
+ * @result The dictionary with the keys filled in.
+ * @discussion This function examines the passed-in dictionary for missing keys,
+ * and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ * Key Value
+ * --- -----
+ * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
+ * <code>GROWL_APP_ICON</code> The icon of the application.
+ * <code>GROWL_APP_LOCATION</code> The location of the application.
+ * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ * Only those keys that are listed in <code>keys</code> will be filled in.
+ * Other missing keys are ignored. Also, keys are only filled in if missing;
+ * if a key is present in the dictionary, its value will not be changed.
+ *
+ * This function was introduced in Growl.framework 0.7.
+ */
+CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys(CFDictionaryRef regDict, CFSetRef keys);
+
+#pragma mark -
+
+// @functiongroup Querying Growl's status
+
+/*! @function Growl_IsInstalled
+ * @abstract Determines whether the Growl prefpane and its helper app are
+ * installed.
+ * @result Returns true if Growl is installed, false otherwise.
+ */
+Boolean Growl_IsInstalled(void);
+
+/*! @function Growl_IsRunning
+ * @abstract Cycles through the process list to find whether GrowlHelperApp
+ * is running.
+ * @result Returns true if Growl is running, false otherwise.
+ */
+Boolean Growl_IsRunning(void);
+
+#pragma mark -
+
+// @functiongroup Launching Growl
+
+/*! @typedef GrowlLaunchCallback
+ * @abstract Callback to notify you that Growl is running.
+ * @param context The context pointer passed to Growl_LaunchIfInstalled.
+ * @discussion Growl_LaunchIfInstalled calls this callback function if Growl
+ * was already running or if it launched Growl successfully.
+ */
+typedef void (*GrowlLaunchCallback)(void *context);
+
+/*! @function Growl_LaunchIfInstalled
+ * @abstract Launches GrowlHelperApp if it is not already running.
+ * @param callback A callback function which will be called if Growl was successfully
+ * launched or was already running. Can be <code>NULL</code>.
+ * @param context The context pointer to pass to the callback. Can be <code>NULL</code>.
+ * @result Returns true if Growl was successfully launched or was already
+ * running; returns false and does not call the callback otherwise.
+ * @discussion Returns true and calls the callback (if the callback is not
+ * <code>NULL</code>) if the Growl helper app began launching or was already
+ * running. Returns false and performs no other action if Growl could not be
+ * launched (e.g. because the Growl preference pane is not properly installed).
+ *
+ * If <code>Growl_CreateBestRegistrationDictionary</code> returns
+ * non-<code>NULL</code>, this function will register with Growl atomically.
+ *
+ * The callback should take a single argument; this is to allow applications
+ * to have context-relevant information passed back. It is perfectly
+ * acceptable for context to be <code>NULL</code>. The callback itself can be
+ * <code>NULL</code> if you don't want one.
+ */
+Boolean Growl_LaunchIfInstalled(GrowlLaunchCallback callback, void *context);
+
+#pragma mark -
+#pragma mark Constants
+
+/*! @defined GROWL_PREFPANE_BUNDLE_IDENTIFIER
+ * @abstract The CFBundleIdentifier of the Growl preference pane bundle.
+ * @discussion GrowlApplicationBridge uses this to determine whether Growl is
+ * currently installed, by searching for the Growl preference pane. Your
+ * application probably does not need to use this macro itself.
+ */
+#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER
+#define GROWL_PREFPANE_BUNDLE_IDENTIFIER CFSTR("com.growl.prefpanel")
+#endif
+
+__END_DECLS
+
+#endif /* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */
556 Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h
@@ -0,0 +1,556 @@
+//
+// GrowlApplicationBridge.h
+// Growl
+//
+// Created by Evan Schoenberg on Wed Jun 16 2004.
+// Copyright 2004-2005 The Growl Project. All rights reserved.
+//
+
+/*!
+ * @header GrowlApplicationBridge.h
+ * @abstract Defines the GrowlApplicationBridge class.
+ * @discussion This header defines the GrowlApplicationBridge class as well as
+ * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant.
+ */
+
+#ifndef __GrowlApplicationBridge_h__
+#define __GrowlApplicationBridge_h__
+
+#import <Foundation/Foundation.h>
+#import "GrowlDefines.h"
+
+//Forward declarations
+@protocol GrowlApplicationBridgeDelegate;
+
+/*!
+ * @defined GROWL_PREFPANE_BUNDLE_IDENTIFIER
+ * @discussion The bundle identifier for the Growl prefpane.
+ */
+#define GROWL_PREFPANE_BUNDLE_IDENTIFIER @"com.growl.prefpanel"
+
+/*!
+ * @defined GROWL_PREFPANE_NAME
+ * @discussion The file name of the Growl prefpane.
+ */
+#define GROWL_PREFPANE_NAME @"Growl.prefPane"
+
+//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation)
+#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION @"User chose not to install"
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ * @class GrowlApplicationBridge
+ * @abstract A class used to interface with Growl.
+ * @discussion This class provides a means to interface with Growl.
+ *
+ * Currently it provides a way to detect if Growl is installed and launch the
+ * GrowlHelperApp if it's not already running.
+ */
+@interface GrowlApplicationBridge : NSObject {
+
+}
+
+/*!
+ * @method isGrowlInstalled
+ * @abstract Detects whether Growl is installed.
+ * @discussion Determines if the Growl prefpane and its helper app are installed.
+ * @result Returns YES if Growl is installed, NO otherwise.
+ */
++ (BOOL) isGrowlInstalled;
+
+/*!
+ * @method isGrowlRunning
+ * @abstract Detects whether GrowlHelperApp is currently running.
+ * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings.
+ * @result Returns YES if GrowlHelperApp is running, NO otherwise.
+ */
++ (BOOL) isGrowlRunning;
+
+#pragma mark -
+
+/*!
+ * @method setGrowlDelegate:
+ * @abstract Set the object which will be responsible for providing and receiving Growl information.
+ * @discussion This must be called before using GrowlApplicationBridge.
+ *
+ * The methods in the GrowlApplicationBridgeDelegate protocol are required
+ * and return the basic information needed to register with Growl.
+ *
+ * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol
+ * informal protocol are individually optional. They provide a greater
+ * degree of interaction between the application and growl such as informing
+ * the application when one of its Growl notifications is clicked by the user.
+ *
+ * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol
+ * informal protocol are individually optional and are only applicable when
+ * using the Growl-WithInstaller.framework which allows for automated Growl
+ * installation.
+ *
+ * When this method is called, data will be collected from inDelegate, Growl
+ * will be launched if it is not already running, and the application will be
+ * registered with Growl.
+ *
+ * If using the Growl-WithInstaller framework, if Growl is already installed
+ * but this copy of the framework has an updated version of Growl, the user
+ * will be prompted to update automatically.
+ *
+ * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol.
+ */
++ (void) setGrowlDelegate:(NSObject<GrowlApplicationBridgeDelegate> *)inDelegate;
+
+/*!
+ * @method growlDelegate
+ * @abstract Return the object responsible for providing and receiving Growl information.
+ * @discussion See setGrowlDelegate: for details.
+ * @result The Growl delegate.
+ */
++ (NSObject<GrowlApplicationBridgeDelegate> *) growlDelegate;
+
+#pragma mark -
+
+/*!
+ * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:
+ * @abstract Send a Growl notification.
+ * @discussion This is the preferred means for sending a Growl notification.
+ * The notification name and at least one of the title and description are
+ * required (all three are preferred). All other parameters may be
+ * <code>nil</code> (or 0 or NO as appropriate) to accept default values.
+ *
+ * If using the Growl-WithInstaller framework, if Growl is not installed the
+ * user will be prompted to install Growl. If the user cancels, this method
+ * will have no effect until the next application session, at which time when
+ * it is called the user will be prompted again. The user is also given the
+ * option to not be prompted again. If the user does choose to install Growl,
+ * the requested notification will be displayed once Growl is installed and
+ * running.
+ *
+ * @param title The title of the notification displayed to the user.
+ * @param description The full description of the notification displayed to the user.
+ * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
+ * @param iconData <code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
+ * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
+ * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
+ * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
+ */
++ (void) notifyWithTitle:(NSString *)title
+ description:(NSString *)description
+ notificationName:(NSString *)notifName
+ iconData:(NSData *)iconData
+ priority:(signed int)priority
+ isSticky:(BOOL)isSticky
+ clickContext:(id)clickContext;
+
+/*!
+ * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier:
+ * @abstract Send a Growl notification.
+ * @discussion This is the preferred means for sending a Growl notification.
+ * The notification name and at least one of the title and description are
+ * required (all three are preferred). All other parameters may be
+ * <code>nil</code> (or 0 or NO as appropriate) to accept default values.
+ *
+ * If using the Growl-WithInstaller framework, if Growl is not installed the
+ * user will be prompted to install Growl. If the user cancels, this method
+ * will have no effect until the next application session, at which time when
+ * it is called the user will be prompted again. The user is also given the
+ * option to not be prompted again. If the user does choose to install Growl,
+ * the requested notification will be displayed once Growl is installed and
+ * running.
+ *
+ * @param title The title of the notification displayed to the user.
+ * @param description The full description of the notification displayed to the user.
+ * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
+ * @param iconData <code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
+ * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
+ * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
+ * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
+ * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced.
+ */
++ (void) notifyWithTitle:(NSString *)title
+ description:(NSString *)description
+ notificationName:(NSString *)notifName
+ iconData:(NSData *)iconData
+ priority:(signed int)priority
+ isSticky:(BOOL)isSticky
+ clickContext:(id)clickContext
+ identifier:(NSString *)identifier;
+
+/*! @method notifyWithDictionary:
+ * @abstract Notifies using a userInfo dictionary suitable for passing to
+ * <code>NSDistributedNotificationCenter</code>.
+ * @param userInfo The dictionary to notify with.
+ * @discussion Before Growl 0.6, your application would have posted
+ * notifications using <code>NSDistributedNotificationCenter</code> by
+ * creating a userInfo dictionary with the notification data. This had the
+ * advantage of allowing you to add other data to the dictionary for programs
+ * besides Growl that might be listening.
+ *
+ * This method allows you to use such dictionaries without being restricted
+ * to using <code>NSDistributedNotificationCenter</code>. The keys for this dictionary
+ * can be found in GrowlDefines.h.
+ */
++ (void) notifyWithDictionary:(NSDictionary *)userInfo;
+
+#pragma mark -
+
+/*! @method registerWithDictionary:
+ * @abstract Register your application with Growl without setting a delegate.
+ * @discussion When you call this method with a dictionary,
+ * GrowlApplicationBridge registers your application using that dictionary.
+ * If you pass <code>nil</code>, GrowlApplicationBridge will ask the delegate
+ * (if there is one) for a dictionary, and if that doesn't work, it will look
+ * in your application's bundle for an auto-discoverable plist.
+ * (XXX refer to more information on that)
+ *
+ * If you pass a dictionary to this method, it must include the
+ * <code>GROWL_APP_NAME</code> key, unless a delegate is set.
+ *
+ * This method is mainly an alternative to the delegate system introduced
+ * with Growl 0.6. Without a delegate, you cannot receive callbacks such as
+ * <code>-growlIsReady</code> (since they are sent to the delegate). You can,
+ * however, set a delegate after registering without one.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ */
++ (BOOL) registerWithDictionary:(NSDictionary *)regDict;
+
+/*! @method reregisterGrowlNotifications
+ * @abstract Reregister the notifications for this application.
+ * @discussion This method does not normally need to be called. If your
+ * application changes what notifications it is registering with Growl, call
+ * this method to have the Growl delegate's
+ * <code>-registrationDictionaryForGrowl</code> method called again and the
+ * Growl registration information updated.
+ *
+ * This method is now implemented using <code>-registerWithDictionary:</code>.
+ */
++ (void) reregisterGrowlNotifications;
+
+#pragma mark -
+
+/*! @method setWillRegisterWhenGrowlIsReady:
+ * @abstract Tells GrowlApplicationBridge to register with Growl when Growl
+ * launches (or not).
+ * @discussion When Growl has started listening for notifications, it posts a
+ * <code>GROWL_IS_READY</code> notification on the Distributed Notification
+ * Center. GrowlApplicationBridge listens for this notification, using it to
+ * perform various tasks (such as calling your delegate's
+ * <code>-growlIsReady</code> method, if it has one). If this method is
+ * called with <code>YES</code>, one of those tasks will be to reregister
+ * with Growl (in the manner of <code>-reregisterGrowlNotifications</code>).
+ *
+ * This attribute is automatically set back to <code>NO</code> (the default)
+ * after every <code>GROWL_IS_READY</code> notification.
+ * @param flag <code>YES</code> if you want GrowlApplicationBridge to register with
+ * Growl when next it is ready; <code>NO</code> if not.
+ */
++ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag;
+/*! @method willRegisterWhenGrowlIsReady
+ * @abstract Reports whether GrowlApplicationBridge will register with Growl
+ * when Growl next launches.
+ * @result <code>YES</code> if GrowlApplicationBridge will register with Growl
+ * when next it posts GROWL_IS_READY; <code>NO</code> if not.
+ */
++ (BOOL) willRegisterWhenGrowlIsReady;
+
+#pragma mark -
+
+/*! @method registrationDictionaryFromDelegate
+ * @abstract Asks the delegate for a registration dictionary.
+ * @discussion If no delegate is set, or if the delegate's
+ * <code>-registrationDictionaryForGrowl</code> method returns
+ * <code>nil</code>, this method returns <code>nil</code>.
+ *
+ * This method does not attempt to clean up the dictionary in any way - for
+ * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ * will be missing it too. Use <code>+[GrowlApplicationBridge
+ * registrationDictionaryByFillingInDictionary:]</code> or
+ * <code>+[GrowlApplicationBridge
+ * registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
+ * to fill in missing keys.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
++ (NSDictionary *) registrationDictionaryFromDelegate;
+
+/*! @method registrationDictionaryFromBundle:
+ * @abstract Looks in a bundle for a registration dictionary.
+ * @discussion This method looks in a bundle for an auto-discoverable
+ * registration dictionary file using <code>-[NSBundle
+ * pathForResource:ofType:]</code>. If it finds one, it loads the file using
+ * <code>+[NSDictionary dictionaryWithContentsOfFile:]</code> and returns the
+ * result.
+ *
+ * If you pass <code>nil</code> as the bundle, the main bundle is examined.
+ *
+ * This method does not attempt to clean up the dictionary in any way - for
+ * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ * will be missing it too. Use <code>+[GrowlApplicationBridge
+ * registrationDictionaryByFillingInDictionary:]</code> or
+ * <code>+[GrowlApplicationBridge
+ * registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
+ * to fill in missing keys.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
++ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle;
+
+/*! @method bestRegistrationDictionary
+ * @abstract Obtains a registration dictionary, filled out to the best of
+ * GrowlApplicationBridge's knowledge.
+ * @discussion This method creates a registration dictionary as best
+ * GrowlApplicationBridge knows how.
+ *
+ * First, GrowlApplicationBridge contacts the Growl delegate (if there is
+ * one) and gets the registration dictionary from that. If no such dictionary
+ * was obtained, GrowlApplicationBridge looks in your application's main
+ * bundle for an auto-discoverable registration dictionary file. If that
+ * doesn't exist either, this method returns <code>nil</code>.
+ *
+ * Second, GrowlApplicationBridge calls
+ * <code>+registrationDictionaryByFillingInDictionary:</code> with whatever
+ * dictionary was obtained. The result of that method is the result of this
+ * method.
+ *
+ * GrowlApplicationBridge uses this method when you call
+ * <code>+setGrowlDelegate:</code>, or when you call
+ * <code>+registerWithDictionary:</code> with <code>nil</code>.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ * @result A registration dictionary.
+ */
++ (NSDictionary *) bestRegistrationDictionary;
+
+#pragma mark -
+
+/*! @method registrationDictionaryByFillingInDictionary:
+ * @abstract Tries to fill in missing keys in a registration dictionary.
+ * @discussion This method examines the passed-in dictionary for missing keys,
+ * and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ * Key Value
+ * --- -----
+ * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
+ * <code>GROWL_APP_ICON</code> The icon of the application.
+ * <code>GROWL_APP_LOCATION</code> The location of the application.
+ * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ * Keys are only filled in if missing; if a key is present in the dictionary,
+ * its value will not be changed.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ * @param regDict The dictionary to fill in.
+ * @result The dictionary with the keys filled in. This is an autoreleased
+ * copy of <code>regDict</code>.
+ */
++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict;
+/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys:
+ * @abstract Tries to fill in missing keys in a registration dictionary.
+ * @discussion This method examines the passed-in dictionary for missing keys,
+ * and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ * Key Value
+ * --- -----
+ * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
+ * <code>GROWL_APP_ICON</code> The icon of the application.
+ * <code>GROWL_APP_LOCATION</code> The location of the application.
+ * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ * Only those keys that are listed in <code>keys</code> will be filled in.
+ * Other missing keys are ignored. Also, keys are only filled in if missing;
+ * if a key is present in the dictionary, its value will not be changed.
+ *
+ * This method was introduced in Growl.framework 0.7.
+ * @param regDict The dictionary to fill in.
+ * @param keys The keys to fill in. If <code>nil</code>, any missing keys are filled in.
+ * @result The dictionary with the keys filled in. This is an autoreleased
+ * copy of <code>regDict</code>.
+ */
++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys;
+
+@end
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ * @protocol GrowlApplicationBridgeDelegate
+ * @abstract Required protocol for the Growl delegate.
+ * @discussion The methods in this protocol are required and are called
+ * automatically as needed by GrowlApplicationBridge. See
+ * <code>+[GrowlApplicationBridge setGrowlDelegate:]</code>.
+ * See also <code>GrowlApplicationBridgeDelegate_InformalProtocol</code>.
+ */
+
+@protocol GrowlApplicationBridgeDelegate
+
+// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7.
+
+@end
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ * @category NSObject(GrowlApplicationBridgeDelegate_InformalProtocol)
+ * @abstract Methods which may be optionally implemented by the GrowlDelegate.
+ * @discussion The methods in this informal protocol will only be called if implemented by the delegate.
+ */
+@interface NSObject (GrowlApplicationBridgeDelegate_InformalProtocol)
+
+/*!
+ * @method registrationDictionaryForGrowl
+ * @abstract Return the dictionary used to register this application with Growl.
+ * @discussion The returned dictionary gives Growl the complete list of
+ * notifications this application will ever send, and it also specifies which
+ * notifications should be enabled by default. Each is specified by an array
+ * of <code>NSString</code> objects.
+ *
+ * For most applications, these two arrays can be the same (if all sent
+ * notifications should be displayed by default).
+ *
+ * The <code>NSString</code> objects of these arrays will correspond to the
+ * <code>notificationName:</code> parameter passed in
+ * <code>+[GrowlApplicationBridge
+ * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]</code> calls.
+ *
+ * The dictionary should have 2 key object pairs:
+ * key: GROWL_NOTIFICATIONS_ALL object: <code>NSArray</code> of <code>NSString</code> objects
+ * key: GROWL_NOTIFICATIONS_DEFAULT object: <code>NSArray</code> of <code>NSString</code> objects
+ *
+ * You do not need to implement this method if you have an auto-discoverable
+ * plist file in your app bundle. (XXX refer to more information on that)
+ *
+ * @result The <code>NSDictionary</code> to use for registration.
+ */
+- (NSDictionary *) registrationDictionaryForGrowl;
+
+/*!
+ * @method applicationNameForGrowl
+ * @abstract Return the name of this application which will be used for Growl bookkeeping.
+ * @discussion This name is used both internally and in the Growl preferences.
+ *
+ * This should remain stable between different versions and incarnations of
+ * your application.
+ * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
+ * "SurfWriter Lite" are not.
+ *
+ * You do not need to implement this method if you are providing the
+ * application name elsewhere, meaning in an auto-discoverable plist file in
+ * your app bundle (XXX refer to more information on that) or in the result
+ * of -registrationDictionaryForGrowl.
+ *
+ * @result The name of the application using Growl.
+ */
+- (NSString *) applicationNameForGrowl;
+
+/*!
+ * @method applicationIconDataForGrowl
+ * @abstract Return the <code>NSData</code> to treat as the application icon.
+ * @discussion The delegate may optionally return an <code>NSData</code>
+ * object to use as the application icon; if this is not implemented, the
+ * application's own icon is used. This is not generally needed.
+ * @result The <code>NSData</code> to treat as the application icon.
+ */
+- (NSData *) applicationIconDataForGrowl;
+
+/*!
+ * @method growlIsReady
+ * @abstract Informs the delegate that Growl has launched.
+ * @discussion Informs the delegate that Growl (specifically, the
+ * GrowlHelperApp) was launched successfully or was already running. The
+ * application can take actions with the knowledge that Growl is installed and
+ * functional.
+ */
+- (void) growlIsReady;
+
+/*!
+ * @method growlNotificationWasClicked:
+ * @abstract Informs the delegate that a Growl notification was clicked.
+ * @discussion Informs the delegate that a Growl notification was clicked. It
+ * is only sent for notifications sent with a non-<code>nil</code>
+ * clickContext, so if you want to receive a message when a notification is
+ * clicked, clickContext must not be <code>nil</code> when calling
+ * <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.
+ * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:].
+ */
+- (void) growlNotificationWasClicked:(id)clickContext;
+
+/*!
+ * @method growlNotificationTimedOut:
+ * @abstract Informs the delegate that a Growl notification timed out.
+ * @discussion Informs the delegate that a Growl notification timed out. It
+ * is only sent for notifications sent with a non-<code>nil</code>
+ * clickContext, so if you want to receive a message when a notification is
+ * clicked, clickContext must not be <code>nil</code> when calling
+ * <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.