pax_global_header00006660000000000000000000000064134722634250014522gustar00rootroot0000000000000052 comment=6c4099258ca7868a359c243104d7b58dfd0d6625 apps-projectcenter-master/000077500000000000000000000000001347226342500161675ustar00rootroot00000000000000apps-projectcenter-master/.cvsignore000066400000000000000000000001121347226342500201610ustar00rootroot00000000000000.gwdir *.swp *~ *.app *.bundle *.framework *obj derived_src ProjectCenter apps-projectcenter-master/.dist-ignore000066400000000000000000000000201347226342500204040ustar00rootroot00000000000000.gwdir *.swp *~ apps-projectcenter-master/COPYING000066400000000000000000001045141347226342500172270ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . apps-projectcenter-master/ChangeLog000066400000000000000000003345641347226342500177600ustar00rootroot000000000000002019-05-25 Riccardo Mottola * Modules/Editors/ProjectCenter/SyntaxDefinition.h * Modules/Editors/ProjectCenter/SyntaxDefinition.m Uniform context type to NSUInteger. 2019-05-22 Riccardo Mottola * Framework/PCButton.m * Headers/ProjectCenter/PCButton.h Remove custom ToolTip implementation now present in GUI. 2018-06-19 Riccardo Mottola * Modules/Projects/Framework/PCFrameworkProject.h * Modules/Projects/Framework/PCFrameworkProject.m Add some GSDoc makefile aids 2017-08-16 Riccardo Mottola * Modules/Projects/Application/PCAppProject.m Fix for nil bundle identifier. 2017-01-17 Riccardo Mottola * Framework/PCProjectManager.m * Modules/Projects/Application/PCAppProject.h Fix wrong declaration and missing subtype option. 2017-01-13 Riccardo Mottola * Framework/PCProjectManager.m * Headers/Protocols/ProjectType.h * Modules/Projects/Aggregate/PCAggregateProject.h * Modules/Projects/Aggregate/PCAggregateProject.m * Modules/Projects/Application/PCAppProject.h * Modules/Projects/Application/PCAppProject.m * Modules/Projects/Bundle/PCBundleProject.h * Modules/Projects/Bundle/PCBundleProject.m * Modules/Projects/Framework/PCFrameworkProject.h * Modules/Projects/Framework/PCFrameworkProject.m * Modules/Projects/ResourceSet/PCResourceSetProject.h * Modules/Projects/ResourceSet/PCResourceSetProject.m * Modules/Projects/Tool/PCToolProject.h * Modules/Projects/Tool/PCToolProject.m Pass options to createProjectAt and use those to create Gorm/Renaissance subtypes, enable the former by default. 2016-12-16 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PipeDelegate.m Conditionally split on windows with CR-LF 2016-11-28 Riccardo Mottola * Modules/Parsers/ProjectCenter/PCParser.m Fix off-by-one in length when checking the last character. 2016-11-25 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PipeDelegate.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m skip and report empty lines as PCDBEmptyRecord 2016-11-19 11:22-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Added/implemented debuggerSetup method. 2016-11-18 Riccardo Mottola * Modules/Projects/Application/PCAppProject+Inspector.h * Modules/Projects/Application/PCAppProject+Inspector.m * Modules/Projects/Application/Resources/Inspector.gorm Connect add/remove buttons. * Modules/Debuggers/ProjectCenter/PipeDelegate.m Commands need new-line. 2016-11-17 09:20-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Change flag to yes in parseLine method to indicate debugger has started. 2016-11-17 09:18-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.h * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PipeDelegate.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Added notification to fix breakpoint loading. 2016-09-29 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PCDebugger.h * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m Add skeleton to handle breakpoints, add breakpoint types. 2016-06-06 11:47-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Add code to make commands appear when the button is pressed. 2016-05-22 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditorView.h * Modules/Editors/ProjectCenter/PCEditorView.m Comply to protocol. * Modules/Editors/ProjectCenter/SyntaxHighlighter.h * Modules/Editors/ProjectCenter/SyntaxHighlighter.m Transition to NSInteger/NSUInteger 2016-05-15 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PCDebugger.m On windows kill with DebugBreakProcess() and not tskill. Available only on WinXP or higher. * Modules/Debuggers/ProjectCenter/PipeDelegate.m For GDB < v. 7 (on win), attempt to grab process id from Windows thread information. 2016-05-05 15:43-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Minor changes. 2016-05-05 13:13-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Partial parsing of result records to yield correct status in debuggerView. 2016-05-05 11:23-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Handle more escaped sequences to futher clean up output. 2016-05-03 19:40-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PipeDelegate.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Add parsers to handle output from various types of MI data. Code to handle each individual case is being written. 2016-05-03 18:00-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PCDebuggerView.m * Modules/Debuggers/ProjectCenter/PipeDelegate.m: Changes to allow pid to be passed back to PCDebugger by calling setSubProcessId once the pid is parsed from the mi output. 2016-05-03 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PCDebugger.h * Modules/Debuggers/ProjectCenter/PCDebugger.m Refactor path to executablePath. * Modules/Debuggers/ProjectCenter/PipeDelegate.m Do not permit deletion beyond the new line or the gdb prompt. 2016-03-23 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PCDebuggerView.h * Modules/Debuggers/ProjectCenter/PCDebuggerView.m * Modules/Debuggers/ProjectCenter/PipeDelegate.h * Modules/Debuggers/ProjectCenter/PipeDelegate.m * Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h Merge in from pipes branch: stdio/stdout over pipes handled in a separate delegate class. 2016-03-23 Riccardo Mottola * Framework/PCBundleManager.m * Framework/PCProjectLauncher.m Merge from branch: check bundle loading and warn. 2016-03-15 18:47-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PTYView.h * Modules/Debuggers/ProjectCenter/PTYView.m: Undo previous change. Move Riccardo's change to branch ptyview_with_pipes. 2016-03-14 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PTYView.h * Modules/Debuggers/ProjectCenter/PTYView.m Use stdio/stdout over pipes instead of a tty 2016-03-08 Riccardo Mottola * Framework/PCProjectLauncher.m Update debug executable path search to run, make it work on windows. 2015-11-09 Riccardo Mottola * Framework/PCProjectInspector.m Allocate a Mutable Array before assagning an Array to a MutableArray 2015-11-05 Riccardo Mottola * Modules/Projects/Application/PCAppProject+Inspector.h * Modules/Projects/Application/PCAppProject+Inspector.m * Headers/ProjectCenter/PCDefines.h * Modules/Projects/Application/PCAppProject.h * Modules/Projects/Application/PCAppProject.m * Modules/Projects/Application/Resources/Inspector.gorm CFBundleIdentifier support for Apps. 2015-11-02 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditorView.m Cleanups and NSInteger conversion. * Modules/Editors/ProjectCenter/LineJumper.h * Modules/Editors/ProjectCenter/LineJumper.m declare missing method 2015-06-16 Riccardo Mottola * Framework/GNUmakefile * Framework/PCFileCreator.m * Headers/ProjectCenter/PCFileCreator.h * Framework/Resources/ocppclass.template Enable project addition of obj-c++ classes. 2015-06-13 Riccardo Mottola * Framework/PCProjectEditor.m Re-enable wrongly uncommented statement. * Framework/PCEditorManager.m If we have a directory, we check if it is a bundle that an app can open it and open it through NSWorkspace. 2015-06-12 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditor.m Enable parsing of obj-c++ 2015-06-12 Riccardo Mottola * Modules/Editors/ProjectCenter/Resources/Info.table Enable Obj-C++ extension. * Framework/PCEditorManager.m Use the internal editor if it is available, even if no parser is available. * Modules/Editors/ProjectCenter/PCEditor.m Handle missing image better. 2015-04-07 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditorView.m Use constants and not strings as keys. * Modules/Debuggers/ProjectCenter/PCDebugger.m Use console font for the view. 2015-03-22 Riccardo Mottola * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m Use Preferences color methods. 2015-03-22 Riccardo Mottola * Headers/Protocols/Preferences.h * PCPrefController.m Direct preferences method for setting and getting colors. 2015-03-22 Riccardo Mottola * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m Convert CMYK to RGB before serializing. 2015-03-22 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditor.m Actually use the background color preference. 2015-03-22 Riccardo Mottola * Headers/Protocols/Preferences.h * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m * PCPrefController.m Move colorFromString from PCEditorFSCPrefs to PCPrefsController and make it thus generally available. 2015-03-12 Riccardo Mottola * Modules/Projects/Framework/PCFrameworkProject.m Generate the PACKAGE_NAME for Frameworks. 2015-03-11 Riccardo Mottola * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m Bug Fix: Set the font manager with the picked font, not always the same. 2015-03-11 Riccardo Mottola * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m * Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm Provide Editor and Fixed font preferences, instead of plain and rich. * Modules/Editors/ProjectCenter/PCEditorView.m Use the preferences Editor font instead of the system one. 2014-12-16 Riccardo Mottola * Framework/PCProject.m Initialize backup wrapper after wrapperPath since it depends on it! 2014-12-16 Riccardo Mottola * Framework/PCMakefileFactory.m Generate sections only if there are classes. 2014-12-15 Riccardo Mottola * Framework/PCMakefileFactory.m Create mm sections in makefiles for Objective-C++ 2014-12-08 Riccardo Mottola * Framework/PCProject.m Accept also Objective-C++ classes as Class files 2014-11-20 Riccardo Mottola * Modules/Parsers/ProjectCenter/PCParser.m Force last action on parser if file lacks a new line at EOF. 2014-11-20 Riccardo Mottola * Modules/Parsers/ProjectCenter/ObjCCommentHandler.m Fix parser to ignore comments inside strings. 2014-10-07 Riccardo Mottola * Framework/PCProjectManager.m * PCAppController.m Revert windows-specific hacks by German to make project-type choice work. They would crash when using PC without the WinUX theme. 2014-09-08 German Arias * Modules/Editors/ProjectCenter/Resources/LineJumper.gorm: Remove modifier key for button. 2014-09-02 Riccardo Mottola * Framework/PCAddFilesPanel.m * Framework/PCProjectBuilder.m Do not use GS internals but standard methods. 2014-08-29 Riccardo Mottola * Modules/Editors/ProjectCenter/GNUmakefile * Modules/Editors/ProjectCenter/LineJumper.h * Modules/Editors/ProjectCenter/LineJumper.m * Modules/Editors/ProjectCenter/PCEditorView.m * Modules/Editors/ProjectCenter/Resources/LineJumper.gorm Implement and add a simple go-to-line panel 2014-08-25 Wolfgang Lux * Modules/Editors/ProjectCenter/PCEditor.m (unhighlightCharacter:): * Modules/Editors/ProjectCenter/PCEditor.m (highlightCharacterAt:inEditor:): Fix condition order to prevent out of range array accesses, which may lead to a segfault when unhighlighting two matching parentheses. Fix by Markus . 2014-08-18 16:07-EDT Gregory John Casamento * Modules/Projects/Aggregate/Resources/Inspector.gorm * Modules/Projects/Application/Resources/Inspector.gorm * Modules/Projects/Application/Resources/Main.gorm * Modules/Projects/Bundle/Resources/Inspector.gorm * Modules/Projects/Framework/Resources/Inspector.gorm * Modules/Projects/Library/Resources/Inspector.gorm * Modules/Projects/ResourceSet/Resources/Inspector.gorm * Modules/Projects/Tool/Resources/Inspector.gorm: Update all gorm files to latest version. 2014-08-04 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditorView.m Fix return value. 2014-08-04 Riccardo Mottola * English.lproj/ProjectCenter.gorm * Headers/Protocols/CodeEditorView.h * Modules/Editors/ProjectCenter/PCEditor.m * Modules/Editors/ProjectCenter/PCEditorView.h * Modules/Editors/ProjectCenter/PCEditorView.m Move GoToLine to the View akin to the NSTextView find panel and declare it in the editor view protocol. 2014-08-03 German Arias * Modules/Editors/ProjectCenter/PCEditor.m: Don't use PCAuxiliaryWindow. This avoid the use of FindPanel. 2014-07-30 Riccardo Mottola * Framework/PCEditorManager.m * Framework/PCProjectBuilder.m * Headers/Protocols/CodeEditor.h * Modules/Editors/ProjectCenter/PCEditor.h * Modules/Editors/ProjectCenter/PCEditor.m Convert line numbers to NSUInteger / integerValue 2014-05-06 Riccardo Mottola * Framework/PCProjectBuilder.m Enhance clang support. 2014-05-03 Riccardo Mottola * Framework/PCProjectBuilder.m Recognize also egcc and clang as compilers. 2014-05-03 Riccardo Mottola * Framework/PCProjectBuilder.m Add recognition of fatal errors. 2014-04-08 German Arias * Modules/Editors/ProjectCenter/PCEditorView.m (-insertText:): Add a comment for last commit. 2014-04-06 German Arias * Headers/ProjectCenter/PCProjectLauncher.h: Add new variable _isErrorRunning. * Framework/PCProjectLauncher.m: Remove observer in -logStdOut: and -logErrOut:. And wait until receive all data in -runDidTerminate:. 2014-04-02 German Arias * Framework/PCFileCreator.m (-replaceTagsInFileAtPath:withProject:): Ensure UTF-8 when read and write a file in Windows. * Modules/Editors/ProjectCenter/PCEditorView.m (-insertText:): Ensure UTF-8 when insert a text in Windows. 2014-04-02 German Arias * Framework/English.lproj/SaveModified.gorm: Use class PCAuxiliaryWindow to not display menu. 2014-04-02 German Arias * Framework/PCFileCreator.m: Removed two last commits. There is something wrong with these. 2014-03-30 German Arias * Framework/PCFileCreator.m: Fix last change to ensure all string in the file is UTF-8, since GNU make can't handle UTF-16 (this change is for Windows). 2014-03-27 German Arias * Framework/PCFileCreator.m: Be sure to use an UTF8 string for the user name on Windows. 2014-03-08 German Arias * Framework/PCFileManager.m (-isTextFile:): Rewrite this method to work on Windows. 2014-03-07 German Arias * Framework/PCProjectManager.m: Remove the extension returned by native panel. 2014-03-02 German Arias * PCAppController.m: For Windows add a menu with all types of projects. So the user can select directly the type of project he want. * Headers/ProjectCenter/PCProjectManager.h: * Framework/PCProjectManager.m: Add the neccesary changes to use the selected type of project at main menu (on Windows). * PCMenuController.m: Use the new method to make a new project. 2014-01-17 German Arias * English.lproj/ProjectCenter.gorm: Connect option "Line Number..." to first responder (I was sure I did this before, but no). 2014-01-13 Riccardo Mottola * Framework/PCFileManager.m * Headers/ProjectCenter/PCFileManager.h Convenience method to find executables, by Richard Frith-Macdonald * Modules/Preferences/Build/PCBuildPrefs.m * Modules/Preferences/Misc/PCMiscPrefs.m Use the convenience method to determine better defaults for make and gdb. 2013-12-17 Riccardo Mottola * Framework/PCProjectLauncher.m Check that the executable exists before running it. 2013-10-20 German Arias * English.lproj/Preferences.gorm: * Modules/Preferences/Build/Resources/BuildPrefs.gorm: * Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm: * Modules/Preferences/Saving/Resources/SavingPrefs.gorm: * Modules/Preferences/Misc/Resources/MiscPrefs.gorm: Change the height of the panel. 2013-10-15 German Arias * TextFinder.h: * TextFinder.m: Deleted. * GNUmakefile: Remove TextFinder. * PCMenuController.m: Remove TextFinder. Now we use the standard menu Find. 2013-10-13 German Arias * English.lproj/ProjectCenter.gorm: Use the standard menu Find and connect option "Line Number..." to first responder. * Modules/Editors/ProjectCenter/PCEditor.m: Use Find panel. * Headers/PCMenuController.h: * PCMenuController.m: Remove unnecessary methods. 2013-10-06 German Arias * Headers/PCPrefController.h: * PCPrefController.m: Don't retain the user defaults. And don't call synchronize every time, this are causing conflicts with defaults of the PC windows, which stores its frames here. 2013-09-24 German Arias * PCAppController.m (-applicationDidFinishLaunching: and -applicationShouldTerminate:) Code to handle the style NSWindows95InterfaceStyle. * Headers/ProjectCenter/PCAuxiliaryWindow.h: * Framework/PCAuxiliaryWindow.m: Add this class for auxiliary windows. This is windows that don't should add the in-window menu. * Framework/English.lproj/BuilderPanel.gorm: * Modules/Editors/ProjectCenter/PCEditor.m: Use the new class PCAuxiliaryWindow. * Framework/GNUmakefile: Add new class. 2013-09-22 Riccardo Mottola * Modules/Parsers/ProjectCenter/PCParser.m Do not advance start and get startType if we are at the end anyway. * Modules/Parsers/ProjectCenter/ObjCClassHandler.h * Modules/Parsers/ProjectCenter/ObjCClassHandler.m * Modules/Parsers/ProjectCenter/ObjCMethodHandler.h * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m NSUInteger / NSInteger transitions for count/length variables. * Modules/Projects/Application/PCAppProject.m * Modules/Projects/Bundle/PCBundleProject.m * Modules/Projects/Framework/PCFrameworkProject.m * Modules/Projects/Library/PCLibProject.m * Modules/Projects/ResourceSet/PCResourceSetProject.m * Modules/Projects/Tool/PCToolProject.m Transition to NSUInteger. 2013-09-21 Riccardo Mottola * Modules/Parsers/ProjectCenter/PCParser.h * Modules/Parsers/ProjectCenter/PCParser.m Transition count/length variables to NSUInteger 2013-09-21 Riccardo Mottola * Modules/Parsers/ProjectCenter/PCParser.m Fix parser check for temrination, do not look past last char. * PCAppController.m If filename is not absolute, normalize it (happens when invoking with the filename as argument to the application, e.g. 'ProjectCenter myProject'). 2013-09-20 Riccardo Mottola * Framework/PCFileCreator.m Do not launch replacing if copying was not successful, avoids hang of app. 2013-09-17 Riccardo Mottola * Modules/Projects/ResourceSet/PCResourceSetProject.m Replace deprecated make variable. * Framework/PCProjectBuilder.m Fix int vs. float. 2013-02-25: Sebastian Reitenbach * Framework/PCFileNameIcon.m * unsigned int -> NSDragOperation 2013-02-10: Sebastian Reitenbach * Framework/PCProjectInspector.m * Modules/Editors/ProjectCenter/SyntaxDefinition.m * Modules/Editors/ProjectCenter/SyntaxHighlighter.m * Modules/Editors/ProjectCenter/TextPattern.m * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m some more (unsigned) int -> NS(U)Integer transitions and some shutup of clang compiler warnings * Framework/PCProjectBrowser.m * Framework/PCSaveModified.m * Framework/PCProjectLoadedFiles.m * Framework/PCProjectBuilder.m * Headers/ProjectCenter/PCProjectBrowser.h * Headers/ProjectCenter/PCSaveModified.h * Headers/ProjectCenter/PCProjectLoadedFiles.h * Modules/Projects/Application/PCAppProject+Inspector.h * Modules/Projects/Application/PCAppProject+Inspector.m some more (unsigned) int -> NS(U)Integer transitions not catched from clang, but found by libobjc2 in debug mode 2013-02-09 Sebastian Reitenbach * Framework/PCFileCreator.m * Framework/PCMakefileFactory.m * Framework/PCProjectBuilder.m * Framework/PCProjectLauncher.m * Framework/PCProjectManager.m * Framework/PCProject.m * Modules/Projects/Application/PCAppProject.m * Modules/Projects/Tool/PCToolProject.m shutup clang compiler warning about redunant literal string usage * Modules/Preferences/Build/PCBuildPrefs.m * Framework/PCButton.m * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m shutup some clang warnings * Framework/PCProjectBrowser.m NSInteger conversions * Modules/Debuggers/ProjectCenter/PTYView.m Include right headers for openpty on OpenBSD 2012-11-22 German Arias * Modules/Projects/Library/PCLibProject.m: Don't add the prefix "lib" to LIBRARY_NAME, gnustep-make will add this prefix anyway. On the other hand, the super class isn't able to add this prefix to XXX_RESOURCE_FILES at GNUmakefile. 2012-08-30 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PTYView.m Do not include stropts.h for most OS's anymore. 2012-08-09 Riccardo Mottola * English.lproj/ProjectCenter.gorm * Framework/PCProjectManager.m Recent Document menu support. 2012-07-30 Wolfgang Lux * Framework/PCProjectBuilder.m (-line:startsWithString:, -parseErrorLine:): * Modules/Editors/ProjectCenter/PCEditor.h: * Modules/Editors/ProjectCenter/PCEditor.m (FindDelimiterInString, -highlightCharacterAt:inEditor:): Fix for compilation on 64-bit hosts. 2012-07-09 Serg Stoyan * Framework/PCProjectInspector.m: (-removeAuthor): Improve selection of author list items after item deletion. Inspired by bug #25571. Bug should be closed. 2012-06-12 Riccardo Mottola * Framework/PCProjectWindow.m Use centerScanRect to avoid strange problems with AA text in editor. * Headers/PCAppController.h * PCAppController.m Update applicationShouldTerminate signature. 2012-04-20 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PTYView.m NetBSD doesn't support streams either. 2012-04-17 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PTYView.m Fix imports and includes for FreeBSD 2011-09-08 Riccardo Mottola * Framework/PCAddFilesPanel.m [-setFileTypes]: use setAllowedFileTypes method instead of private method which was removed 2011-04-28 Riccardo Mottola * Framework/PCFileManager.m: Correct cast according to ctypes caveats. 2011-04-07 Riccardo Mottola * Headers/ProjectCenter/PCDefines.h Change ifdef to detect non-gnustep. * Framework/PCProjectInspector.m Warning fix. * Modules/Preferences/Misc/PCMiscPrefs.m Remove extra parentheses which confuse = and == warning. 2011-04-06 Fred Kiefer * Modules/Parsers/ProjectCenter/PCParser.m [-parse]: Move the selector and IMP definitions inside the method. Global IMP caching is always wrong! And this broke compilation with llvm. 2011-03-14 Nicola Pero * Modules/Projects/ResourceSet/PCResourceSetProject.m ([PCResourceSetProject -appendHead:]): Added FIXME. 2011-01-24 Wolfgang Lux * Modules/Editors/ProjectCenter/PCEditor.m (-revertFileToSaved): Ask for confirmation before reverting. 2011-01-24 Wolfgang Lux * Modules/Editors/ProjectCenter/PCEditorView.m (-performIndentation): Fix annoying bug where pressing the tab key would delete whole empty lines. Also register insertions done by the tab key at the undo manager. 2011-01-06 Wolfgang Lux * Modules/Projects/Application/PCAppProject+Inspector.m (-setDocBasedApp:): Fix bug where the document based app flag was reset after opening the project inspector for the first time. 2010-12-28 Wolfgang Lux * Framework/PCProjectBuilder.m (-buildArguments): Add either debug=yes or debug=no to the arguments since the debug variable no longer has a clear default for quite some time. 2010-12-22 German Arias * Headers/ProjectCenter/PCProject.h: Added method -resourceDirForLanguage:. So we can call this method to manage the languages. * Headers/ProjectCenter/PCProjectInspector.h: * Framework/PCProjectInspector.m: * Framework/English.lproj/ProjectLanguages.gorm: Added UI controls for languages at Inspector, and methods -addLanguage: and -removeLanguage:. 2010-12-18 German Arias * Headers/ProjectCenter/PCProjectInspector.h: * Framework/PCProjectInspector.m: * Framework/English.lproj/ProjectInspector.gorm: Added "Project Languages" option on Inspector. 2010-12-04 Wolfgang Lux * Framework/PCProjectBuilder.m (-build:, -logStdOut:, -logErrOut:): Fix race condition, which could lock PC after running a build task. 2010-12-04 Wolfgang Lux * Framework/PCProjectManager.m (-newProject): Improve Riccardo's previous patch. Don't ask for a new project directory with an extension project or pcproj and do not arbitrarily strip extensions from the project name. 2010-12-04 German Arias * Modules/Projects/Application/PCAppProject.m: Reverted a previous change since the extension "project" is not used anymore. 2010-12-01 Riccardo Mottola * Framework/PCProjectManager.m: Create project in a path with the project name. * Resources/Info-gnustep.plist, * English.lproj/Info.gorm Version bump. * Framework/PCProjectBuilder.m: Removed useless INSTDOMAIN variable during build phase. 2010-11-28 Riccardo Mottola * Framework/PCMakefileFactory.m * Framework/PCProjectBuilder.m * Framework/PCProjectInspector.m * Framework/English.lproj/BuildAttributes.gorm * Modules/Projects/Application/PCAppProject.m * Modules/Projects/ResourceSet/PCResourceSetProject.m * Modules/Projects/Bundle/PCBundleProject.m * Modules/Projects/Tool/PCToolProject.m * Headers/ProjectCenter/PCDefines.h * Headers/ProjectCenter/PCProjectInspector.h: Set, use and create makefiles using ain installation DOMAIN and not a directory. 2010-11-24 German Arias * Headers/ProjectCenter/PCProjectInspector.h: * Framework/PCProjectInspector.m: * Framework/English.lproj/ProjectInspector.gorm: Removed "Project Languages" option on Inspector. 2010-11-23 Riccardo Mottola * Framework/PCFileManager.m: Initialize isDir value. 2010-11-22 German Arias * Framework/GNUmakefile: Added ProjectLanguages.gorm * Headers/ProjectCenter/PCProjectInspector.h: * Framework/PCProjectInspector.m: Added projectLanguagesView and the method create the panel. * Framework/English.lproj/ProjectInspector.gorm: Added "ProjectLanguages" option. * Framework/English.lproj/ProjectLanguages.gorm: New "Project Languages" panel. At the moment this is empty, I will add the content later. 2010-11-21 German Arias * Framework/PCProjectInspector.m: Set "project" and "projectDir" when the panel is loaded. And take the languages to the popup from the PCUserLanguages key instead of NSUserDefaults. 2010-11-21 German Arias * Framework/PCProject.m: * Modules/Projects/Application/PCAppProject.m: * Modules/Projects/Application/PCAggregateProject.m: * Modules/Projects/Application/PCLibProject.m: * Modules/Projects/Application/PCBundleProject.m: * Modules/Projects/Application/PCFrameworkProject.m: * Modules/Projects/Application/PCToolProject.m: * Modules/Projects/Application/PCResourceSetProject.m: Set the key PCUserLanguages when the project is created not when is loaded. 2010-11-18 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditor.m: Init could return a different object, take it in account. * Framework/PCProjectEditor.m: Remove useless instruction and assignment. * Framework/PCProject.m: Fix memory leak. * Modules/Editors/ProjectCenter/PCEditor.m: Initialize range to ensure it does not contain garbage. 2010-11-16 German Arias * Framework/PCFileManager.m: Allow open .project directories to add files placed at project directory in AddFiles panel. 2010-11-05 German Arias * Modules/Projects/Application/PCAppProject.m: (-createProjectAt:) Delete the extension on the project name to avoid file names like MyApp.project.plist and an ugly name of the app (MyApp.project) at info panel. 2010-08-10 Sergii Stoian * Framework/PCProjectBrowser.m: (-nameOfSelectedCategory): Return 'nil' if name of subproject selected. Add comments. (-nameOfSelectedFile): Check if category is selected. (-click:): check if category is selected. 2010-07-31 Sergii Stoian * Framework/PCProject.m: (-assignProjectDict:): Fix setting projectPath to project dir (not to *.pcproj dir). * Framework/PCFilemanager.m: (-filesOfTypes:operation:multiple:title:accView:): Set allowed file types to panel of types is not nil. (-panel:isValidFilename): Use set allowed file types to panel. 2010-07-30 Sergii Stoian * Framework/PCProject.m: (-subprojectWithName:): Pass to openProjectAt: subproject dir. openProjectat: can now handle this situation. * Framework/PCProjectManager.m: (-openProjectAt:): Implement handling of 'aPath' argument as project file and as project dir. Select *.pcproj if exists then try to load PC.project. (-openProject): Implement intelligent selection of project file when selected *.pcproj, PC.project or project dir. * Framework/PCFilemanager.m: (-filesOfTypes:operation:multiple:title:accView:): Remove code specific for opening projects (moved to PCProjectManager's openProject). (-panel:isValidFilename): Fix handling project file detection. (-filesWithExtension:atPath:includeDirs:): New method. Returns list of files with specified extension. Also returns dirs if 'includeDirs' set to YES. 2010-07-28 Sergii Stoian * Framework/PCProject.m: (close:): Fix closing of subprojects. Remove subproject from Projectmanager's list of loaded projects. * Framework/PCLogController.m: (-init): Change font size to systemFontSize. 2010-07-24 Sergii Stoian * Headers/ProjectCenter/PCProjectBuilder.m: * Framework/PCProjectBuilder.m: (cleanupAfterMake:): Added new argument (NSString) to method containing current status text. Before status text in project window always stated "...terminated". 2010-07-13 Riccardo Mottola * Framework/PCProjectManager.m Log conversion into PC log and not console. Remove unneded keys. 2010-07-10 Riccardo Mottola * Modules/Projects/Application/Resources/PC.project * Modules/Projects/Library/Resources/PC.project * Modules/Projects/Aggregate/Resources/PC.project * Modules/Projects/Bundle/Resources/PC.project * Modules/Projects/Framework/Resources/PC.project * Modules/Projects/Tool/Resources/PC.project Remove LAST_EDITING from project template. It is not needed for validation. 2010-07-10 01:20-EDT Gregory John Casamento * Modules/Editors/ProjectCenter/PCEditor.m: in -save implemented simple mechanism for propagating changes in classes to Gorm when updating a header file. 2010-07-08 Riccardo Mottola * Framework/PCProject.m * Framework/PCProjectManager.m When opening a subproject pass the bundle name, or it gets concerted. 2010-07-07 14:49-EDT Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Fixed issue where if there is no pid it would attempt to stop the current process. 2010-06-24 Riccardo Mottola * Headers/Protocols/CodeEditorView.h Fixed warning. 2010-06-22 Riccardo Mottola * Modules/Editors/ProjectCenter/PCEditor.h * Modules/Editors/ProjectCenter/PCEditor.m * Modules/Editors/ProjectCenter/PCEditor+Document.m Clean up parenthesis highlighting. * Modules/Editors/ProjectCenter/PCEditor.h * Modules/Editors/ProjectCenter/PCEditor.m Fix highlighting for standalone editors. * Modules/Editors/ProjectCenter/PCEditor+Document.m Deleted * Framework/PCProjectWindow.m Removed floorf() in favour of nothing or truncation. 2010-06-15 Wolfgang Lux * Framework/PCProject.m (-fileTypesForCategoryKey:): Add .dylib to the list of known library extensions. 2010-06-15 Wolfgang Lux * Modules/Projects/Application/PCAppProject.m (-writeMakefile): * Modules/Projects/Bundle/PCBundleProject.m (-writeMakefile): * Modules/Projects/Framework/PCFrameworkProject.m (-writeMakefile): * Modules/Projects/Library/PCLibProject.m (-writeMakefile): * Modules/Projects/ResourceSet/PCResourceSetProject.m (-writeMakefile) * Modules/Projects/Tool/PCToolProject.m (-writeMakefile): Fix bug where PC could include some localized resources in the RESOURCE_FILES Makefile variable. 2010-06-15 Wolfgang Lux * Framework/PCProjectManager.m(-openProjectAt:makeActive:): Prevent a crash when opening a subproject by not creating a new project window for the subproject. This window is immediately released again when the new project's super project is set anyway. * Framework/PCProjectManager.m(-closeAllProjects): Fix bug where PC would not quit after opening a subproject due to a bogus enumerator loop. 2010-06-07 Wolfgang Lux * Framework/PCProjectWindow.m (-dealloc): * Modules/Editors/ProjectCenter/PCEditor.m (-dealloc): Attempt to prevent crashes when a project is closed by ensuring that project and editor windows are closed before their owners are deallocated. 2010-06-04 Riccardo Mottola * TextFinder.m: check before replacing and allow undo (by Wolfgang Lux) 2010-06-03 Riccardo Mottola * Headers/Protocols/CodeEditorView.h: Declare new view protocol * Modules/Editors/ProjectCenter/PCEditorView.h * Modules/Editors/ProjectCenter/PCEditorView.m: Conform to CodeEditorView protocol and add accessor to the editor. * Framework/PCProjectWindow.m: Return the view's editor undo manager. * Modules/Preferences/Misc/PCMiscPrefs.m: declare strintg constants with @ 2010-06-01 Riccardo Mottola * Modules\Editors\ProjectCenter\PCEditor.m, * Modules\Editors\ProjectCenter\PCEditor.m: keep an undoManager for the Editor and return that to the window 2010-05-30 03:42-EDT Gregory John Casamento * Modules/Projects/Application/Resources/main.m: Same as below. 2010-05-30 03:17-EDT Gregory John Casamento * Modules/Projects/Application/Resources/AppController.h * Modules/Projects/Application/Resources/AppController.m * Modules/Projects/Tool/Resources/main.m: Remove licensing and copyright information from these since we don't want to assume that the user will be writing a GPLv3 program owned by the FSF (while that would be nice) it's not correct to assume it. 2010-05-30 01:54-EDT Gregory John Casamento * Framework/English.lproj/SaveModified.gorm: Correct issues with Gorm file. * Framework/PCSaveModified.m: Use setTitle: instead of setStringValue: to set the titles of the buttons. 2010-05-30 01:44-EDT Gregory John Casamento * Modules/Editors/ProjectCenter/PCEditor.m: Temporarily comment out previous change util we find the proper fix as it was preventing files from being saved. 2010-03-06 Riccardo Mottola * Modules\Editors\ProjectCenter\PCEditor.m: setup undo on the editor view 2009-11-26 Richard frith-Macdonald * Modules/Projects/Application/Resources/AppController.m: * Modules/Projects/Application/Resources/main.m: * Modules/Projects/Application/Resources/AppController.h: * Modules/Projects/Tool/Resources/main.m: Update to conform to coding standards and to use GPL 3 as default copyleft. 2009-09-20 03:45-EDT Gregory John Casamento * Framework/PCMakefileFactory.m: Check if buildDir is nil before generating the BUILD_DIR directive in the make file. Sometimes this is coming up with (nil) on Windows which is causing the build phase to fail. 2009-09-19 Riccardo Mottola * Images/Options.tiff: Added new icon, drawn by me. 2009-09-18 Riccardo Mottola * Framework/PCProjectLauncher.m Use path component instead of hard-coded slash 2009-09-17 Nicola Pero * Framework/PCMakefileFactory.m ([-createMakefileForProject:]): If GNUSTEP_INSTALLATION_DOMAIN is not set, do not output it. This is what was already happening, but the code seemed to assume otherwise. 2009-09-17 Nicola Pero Old patch from Markus Hitter , updated to the current code: * Framework/PCProjectManager.m ([-openProjectAt:makeActive:]): Pop up a warning panel if the project path includes a whitespace. ([-newProject]): Same change. 2009-09-15 Richard frith-Macdonald * Framework/PCMakefileFactory.m: generate makefiles with standard preamble to determine GNUSTEP_MAKEFILES if possible, and warn if not found. 2009-09-15 Riccardo Mottola * Headers/ProjectCenter/PCProject.h * Framework/PCProject.m Removed execToolName * Framework/PCProjectLauncher.m Launch executable directly without openapp/opentool and do not use execToolName to determine the project type 2009-06-23 18:22-EDT Gregory John Casamento * Framework/PCProject.m * Framework/PCProjectManager.m * Headers/ProjectCenter/PCProjectManager.h * PCAppController.m: Correct issues with project bundle loading. 2009-05-19 17:13-EDT Gregory John Casamento * Resources/Info-gnustep.plist: Added PCProjectFileType to the entry for pcproj to allow opening of bundles. 2009-06-10 Riccardo Mottola * Framework/PCProject.m, * Framework/PCProjectManager.m * Framework/PCProjectWindow.m * Headers/ProjectCenter/PCDefines.h use PCDefine constant for PC_WINDOWS dictionary key 2009-06-10 Riccardo Mottola * Framework/PCProject.m save last editing in user file inside the wrapper and not main project file 2009-05-19 17:13-EDT Gregory John Casamento * Framework/PCEditorManager.m: Added code in -openEditorForFile: editable:windowed: to open files which are not handled by any editor using [NSWorkspace openFile:] as a fallback. 2009-05-18 17:27-EDT Gregory John Casamento * Framework/PCProject.m: Add new project directory name. * Framework/PCProjectManager.m: Fix issue reported with loading of subprojects from an aggregate project. Changed loadProjectAt: method to handle both the current and old file locations. 2009-04-27 17:09-EDT Gregory John Casamento * Framework/PCProjectManager.m: Remove logic requiring projectWindow to be key in order to save file. This was causing files in tear-off editors to not be saved. This change is in the saveFile method. 2009-04-22 16:31-EDT Gregory John Casamento * Framework/PCProject.m: Changes to make plist output in human readable format. * Resources/Info-gnustep.plist: Changes to read C++ files using C editor. 2009-04-15 Sergii Stoian * Framework/PCProjectBuilder.m: (-startBuild:), (-startClean:): Move _isBuilding and _isCleaning vars before build: method call for correct determination in cleanupAfterMake method. (build:): Initialize build time vars before call to preBuildChecj method. * Framework/PCProjectBuilderOptions.m: Do not notify when changing project properties (build options). 2009-03-31 Riccardo Mottola * PCSplitView: removed and replaced with standard NSSplitView in all instances 2009-03-28 Sergii Stoian * Framework/PCProjectBuilder.m: (updateTargetField): Process args correctly when it has nil value. (startBuild): Move initializing of currentBuildPath and currentBuildFile from here... (build:):...to here. Rename pipes and handles vars to more appropriate names. Initialize pipes with alloc, init. (startClean): Use buildArguments as in startBuild method. (stopMake:): It seems that [makeTask isRunning] works correctly - use it. Remove comment. (cleanupAfterMake): Use _isBuilding and _isCleaning vars to detect running mode. Release currentBuildPath and currentBuildFile here. (buildDidTerminate): Release pipes here. (logData:error:): Initialize newLineRange.location before entering cycle. (logBuildString:newLine:): Cleanup. 2009-03-27 03:00-EDT Gregory John Casamento * Framework/PCProject.m: Implement openWrapperAtPath: * Framework/PCProjectManager.m: Change method call to use openWrapperAtPath: * Headers/ProjectCenter/PCProject.h: Add wrapperPath ivar. * Modules/Projects/Application/PCAppProject.m: Change method to call super. * Modules/Projects/Tool/PCToolProject.m: Change method to call super. 2009-03-27 01:18-EDT Gregory John Casamento * Framework/English.lproj/Builder.gorm: Update icons for stop and options. * Framework/PCProject.m: Added code to put files into packages when saving. * Headers/ProjectCenter/PCProject.h: Added ivar for file wrapper. 2009-03-27 Riccardo Mottola * Framework/PCProject.m: save windows placements to a separate file with the username as name 2009-03-24 Sergii Stoian * Framework/PCProjectBuilder.m: Add some comments (parseCompilerLine:): Implemented gcc output for compiling and linking. Set currentBuildFile var on file compilation. (cleanupAfterMake),(build:),(parseBuildLine:),(buildDidTerminate): Update status field of builder panel and project window 2009-03-23 Sergii Stoian * Framework/PCProjectBuilder.m: Change type of currentBuildPath var to NSMutableString. (buildArguments): Always use messages=yes argument internally. "Verbose ouput" option (Build Options panel) just toogle if build shows as with make argument 'messages=yes' or not. (line:startsWithString:): Implemented line start detection. (parseMakeLine:): Inital implementation of parsing make tool output. (parseCompilerLine:): Add for future implementation. (logBuildString:newLine:): Remove error: argument as it's not used. Method outputs to build view. (parseBuildLine:): Add implementation of entry point of build output parsing. 2009-03-22 Sergii Stoian * Framework/PCProjectBuilderOptions.m: (initWithProject:): Listen to PCProjectDictDidChangeNotification notification. (awakeFromNib): Move loading of project properties from here... (loadProjectProperties): ...to here. This is a notification action. * Framework/PCProjectInspector.m: (searchOrderPopupDidChange:): Clean selection in list. Clean text field. (searchOrderClick:): Show value of selected item in text field. (addSearchOrder:): Add check for entered value. More checking will be added in the future. * Documentation/TODO: Rearrange some items. Update state. * Framework/PCProjectBuilder.m: Some rearrangement of log methods. Category 'Logging' is for general logging methods, 'BuildLogging' for stantard output processing, 'ErrorLogging' for error output processing. (logBuildString:newLine:): New name of logString:error:newLine:. Use new name across the file. 2009-03-20 Sergii Stoian * Framework/PCProject.m: (buildTargets): Return default build targets only if project file doesn't contain list of them. * Framework/PCProjectBuilder.m: (prebuildCheck): Create build directory only if preference was set. (build:): Set initial "=== started ===" string. * Framework/PCProjectInspector.m: (createBuildAttributes): Set target and action for table view. (searchOrderPopupDidChange:): Add support for "Build Targets". (setSearchOrderButtonsState): Enable "Remove" button only if item in list was selected. (syncSearchOrder): Add support for "Build Targets". * Documentation/TODO: Add some tasks and update status of others. * Headers/ProjectCenter/PCDefines.h: Add key for build targets support. 2009-03-19 Sergii Stoian * Framework/PCProjectManager.m: (dealloc): Replace if() check with TEST_RELEASE. (openFileAtPath:): Use class variable instead of method's local. (saveFile): Call saveFile to project editor if project is active and project window has key state. Call non-project editor manager otherwise. * PCPrefController.m: (stringForKey:defaultValue:): Set value to non-existent key only if defaultValue is not 'nil' ('nil' when called via stringForKey: method). (boolForKey:defaultValue:): Set value to non-existent key only if defaultValue has positive value (has '-1' when called via boolForKey: method). 2009-03-17 02:14 Sergii Stoian * Framework/PCProjectManager.m: (openProjectAt:): Setactive project to loaded after all initalization completed. * Framework/PCProject.m: (saveProjectWindowsAndPanels): Save project windows and panels according to preferences setting. (close:): Remove unsused code. * Framework/PCProjectBuilder.m: Cleanup. 2009-03-15 02:14 Sergii Stoian * Headers/Protocols/Preferences.h: Add new methods. * PCPrefController.m: Implemented set/get of preferences value dependent. All values are stored in preferences as NSString values and converted upon request to specified type. * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m: Use new methods of PCPrefController. Implemented setting of editor fonts. (setDefaults): Removed. * Modules/Preferences/Build/PCBuildPrefs.m, * Modules/Preferences/Misc/PCMiscPrefs.m, * Modules/Preferences/Saving/PCSavingPrefs.m: Use new methods of PCPrefController. (setDefaults): Removed. * Framework/PCProjectLoadedFiles.m, * Framework/PCMakefileFactory.m, * Framework/PCProject.m, * Framework/PCProjectLauncherPanel.m, * Framework/PCFileManager.m, * Framework/PCProjectBrowser.m, * Framework/PCProjectBuilder.m, * Framework/PCEditorManager.m, * Framework/PCProjectLoadedFilesPanel.m, * Framework/PCProjectLauncher.m, * Framework/PCProjectBuilderPanel.m, * Framework/PCProjectWindow.m, * PCAppController.m, * Framework/PCProjectManager.m: Use new methods of PCPrefController. 2009-03-05 02:43 Sergii Stoian * ChangeLog: Update. * Modules/Preferences/Misc/PCMiscPrefs.h, * Modules/Preferences/Misc/PCMiscPrefs.m, * Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes, * Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm: Add new setting UseTearOffWindows. * Framework/PCProjectWindow.m: Use new setting. * Modules/Editors/ProjectCenter/PCEditor.m: (dealloc): Add releasing _window. * Documentation/TODO: Update. 2009-03-05 01:01 Sergii Stoian * Framework/PCProjectManager.m: (convertLegacyProject:atPath:): Correctly convert legacy application project. * Framework/PCEditorManager.m; (openEditorForFile:editable:windowed:): Don't open lert panel if file is not text file. Situation when editor for non text files called to be opened must be reviewd. 2009-03-05 00:08 Sergii Stoian * Framework/PCProjectBrowser.m: Stop using 'SeparateEditor' prefernce. Remove use of preferences code. (doubleClick:): Change support of external editor (add support for .app editors). * Framework/PCProjectWindow.m: Start implementing two-mode handling of tear-off windows. New handling will support two modes: 1. all windows are opened inside projet window and 2. Build, Launch/Debug, Loaded Files (Project Find in future) are opened as tear-off windows. This simplifiles the code and in my opinion more intuitive then current implementation. * Modules/Editors/ProjectCenter/PCEditor.m: (_createWindow): Change window attribute ReleasedWhenClosed to NO. * PCPrefController.m: Add new parameter 'notify' to method setObject. This parameter is usefull for situation when open and save panels saves its values. For example: when project are opened 'Open Project' panel save last opened dir to PC prefernces and post notificaion about prefs changes. Newly created objects of projects may lead to PC segfault. * Modules/Preferences/Build/PCBuildPrefs.m, * Modules/Preferences/Interface/PCInterfacePrefs.m, * Modules/Preferences/Saving/PCSavingPrefs.m, * Modules/Preferences/Misc/PCMiscPrefs.m, * Framework/PCFileManager: Use new preferences setObject method. 2009-03-03 Riccardo Mottola * Framework/PCProjectInspector.m: allow authors inside table to scroll during editing 2009-03-02 Riccardo Mottola * Framework/PCProject.m, * Framework/PCProjectBuilder.m, * Framework/PCProjectManager.m, * Framework/PCFileCreator.m, * Framework/PCEditorManager.m: Fix string constants 2009-03-01 03:10 Sergii Stoian * Modules/Preferences/Interface/PCInterfacePrefs.h: * Modules/Preferences/Interface/Resources/InterfacePrefs.gorm: * Modules/Preferences/Interface/PCInterfacePrefs.m: Move options "Remember windows and panels opened in project" and "Display Log Panel at startup" from here... * Modules/Preferences/Misc/PCMiscPrefs.h: * Modules/Preferences/Misc/PCMiscPrefs.m: * Modules/Preferences/Misc/Resources/MiscPrefs.gorm: to here. 2009-03-01 00:47 Sergii Stoian * Modules/Preferences/Build/PCBuildPrefs.h: * Modules/Preferences/Build/PCBuildPrefs.m: * Modules/Preferences/Build/Resources/BuildPrefs.gorm: Move "Remove files in root build directory on quit" option from here... * Modules/Preferences/Misc/PCMiscPrefs.h: * Modules/Preferences/Misc/PCMiscPrefs.m: * Modules/Preferences/Misc/Resources/MiscPrefs.gorm: to here. 2009-03-01 Sergii Stoian * Framework/PCProjectManager.m: * Framework/PCProjectLoadedFiles.m: * Framework/PCMakefileFactory.m: * Framework/PCProject.m: * Framework/PCFileManager.m: * Framework/PCProjectBrowser.m: * Framework/PCButton.m: * Framework/PCProjectBuilder.m: * Framework/PCEditorManager.m: * Framework/PCLogController.m: * Framework/PCProjectLauncher.m: * Framework/PCProjectWindow.m: * PCAppController.m: * Modules/Preferences/Build/PCBuildPrefs.m: * Modules/Preferences/Interface/PCInterfacePrefs.m: * Headers/Protocols/Preferences.h: * Headers/ProjectCenter/PCProject.h: * Headers/ProjectCenter/PCProjectBrowser.h: * Headers/ProjectCenter/PCProjectBuilder.h: * Headers/ProjectCenter/PCEditorManager.h: * Headers/PCPrefController.h: * PCPrefController.m: Use new preferences system instead of direct using of NSUserDefaults. 2009-02-27 Sergii Stoian * Rewriting of preferences was finished. Now prefereces sections are implemented as modules "Modules/Preferences/*". 2009-02-25 Sergii Stoian * Rewriting of preferences was started. 2009-02-23 Sergii Stoian * Set all textfields attributes to 'scrollable'. * Framework/PCProjectBuilderOptions.m: Set first reponder after panel is ordereder (call to makeFirstResponder: in awakeFromNib prevents textfield from draw its' border. GNUstep bug?). 2009-02-22 Sergii Stoian * Framework/PCSaveModifiedFiles.m: Change to more generic implementation. PCRunSaveModifiedFilesPanel() implemented. * Framework/PCProjectBuilder.m: (prebuildCheck): Use PCRunSaveModifiedFiles(). 2009-02-22 Sergii Stoian * Framework/PCSaveModifiedFiles.m: * Framework/English.lproj/SaveModifiedFiles.gorm: * Headers/ProjectCenter/PCSaveModifiedFiles.h: Add initial implementation of "Save Modified Files" panel. * Framework/PCProjectBuilder.m: (prebuildCheck): Use PCSaveModifiedFiles. 2009-02-19 Sergii Stoian * Framework/PCProjectBuilder.m: (prebuildCheck): Swap button names. 2009-02-17 Sergii Stoian * Framework/PCProjectBuilder.m: Cleanup. * Framework/PCEditorManager.m: (openEditorForFile:editable:windowed:): Add alert panel that ordeder front when file to open doesn't exist. Remove commented out call to [self orderFrontEditorForFile:filePath] (this method should be called directly to PCEditorManager or PCProjectEditor classes). * Documentation/TODO: Added "Fix reported bugs" to list. 2009-02-16 Sergii Stoian * Framework/PCProjectManager.m: (close): Implemented. Closes not only project but also non project files editors. * Framework/PCProject.m: Clean and alert panels in various situations. * Framework/PCProjectEditor.m: Move closeAllEditors, saveEditedFiles:, saveAllFiles and saveFileAs: methods to PCEditorManager. (saveFileAs:): Use superclass method. * Framework/PCEditorManager.m: Adopt moved methods. (modifiedFiles): Implemented. Return array of file paths. (hasModifiedFiles): Implemented for future use (e.g. prebuild check in ProjectBuilder). (reviewUnsaved:): Implemented. Go through modified files' editors and close which results in opening of alert "Save?" panels. * PCAppController.m: (applicationShouldTerminate:): Use PCProjectManager close method instead of closeAllProjects. * Modules/Editors/ProjectCenter/PCEditor.m: (_createWindow): Set "edited" flag according to current state. * Framework/PCProjectBuilder.m: (prebuildCheck): Check if project has edited files. 2009-02-15 14:14-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Detect when the program has stopped or exited so that status can be displayed. 2009-02-15 Sergii Stoian * Framework/PCProjectBrowser.m: (click:): Do not call editor if subproject name selected. (fileNameIconImage): Set "FileProject" icon if subproject name selected. * Framework/PCProjectManager.m: Remove unused methods projectPath and selectedFileName. * Framework/PCFileManager.m: Add alert panels if operation ends with error. * Framework/PCMakefileFactory.m: Add alert panels on error of creating files. * Framework/PCProjectBuilder.m: Review all situations when alert panels should be opened. Panels text corrected according to OpenStep UIG. 2009-02-14 Sergii Stoian * PCMenuController.m: (showInfoPanel:): Use appController intead of [NSApp delegate]. * GNUmakefile: Change version to 0.5.1. * Resources/Info-gnustep.plist: ditto. * Framework/PCProjectManager.m: (open): Move ordering front project window for here... (openProjectAt:): to here. * Framework/PCProjectBrowser.m: (nameOfSelectedCategory): Edit comment text. * Framework/PCLogController.m: (showPanel): Call makeKeyAndOrderFront instead of orderFront. * Headers/PCInfoController.[hm]: (showInfoWindow:): Get version info from Info-gnustep.plist. * PCPrefController.m: (showPanel:): Call makeKeyAndOrderFront instead of orderFront. 2009-02-14 Nicola Pero * Modules/GNUmakefile (SUBPROJECTS): Removed Debuggers/ProjectCenter on MinGW since it doesn't compile there. 2009-02-12 23:03-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Correct mispelling of search string. 2009-02-12 11:58-EST Gregory John Casamento * Framework/PCProjectManager.m: openProject to correct bug #25565. There was an extra semi-colon after the if statement in this method which was causing it to return before bringing the project window to the front. 2009-02-11 19:45-EST Gregory John Casamento * Framework/PCEditorManager.m: Switch to editor and line in the -debuggerDidHitBreakpoint: method. * Modules/Debuggers/ProjectCenter/PCDebugger.m: Minor cleanup. * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Changes to -[PCDebuggerView logString:newLine:] to detect state and change it on debugger window. * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Left justify the status field. 2009-02-11 Sergii Stoian * PCMenuController.m: (subprojectNew): Use renamed [projectManager openNewSubprojectPanel] method. * Framework/PCProjectManager.m: Change all alert panel names according to operation performed. Edit messages text of alert panels. Cleanup. (newSubproject): Rename to openNewSubprojectPanel which is more informative. (createSubproject): Change method definition to createSubproject:(id)sender and merge code with old createSubproject:(id)sender. (controlTextDidChange:): Activate 'Create' button only if subproject with entered name doesn't exist in project. * Framework/PCProjectBrowser.m: (nameOfSelectedCategory): Fix bug which prevent from removing subprojects. Now selected category is checked against superproject category list. When subproject name selected, name of superproject's category is returned. As side effect ProjectBrowser tries to load editor for selected subproject's name. Need to fix. 2009-02-10 Sergii Stoian * Framework/PCProjectManager.m: Corrections in alert panel names. Make "Add Files" panel run in modal mode. * Framework/PCProject.m: Corrections in alert panel names. * Framework/PCFileCreator.[mh]: Partial rewrite. Check existance of files wich will be added. Make panel run in modal mode. Add "Add Header File" option button. * Documentation/TODO: Update. 2009-02-08 Sergii Stoian * PCMenuController.m: (validateMenuItem:): Enable "File" menu items for files opened witout project. It fixes bug #25311 (now file saved). * Framework/PCProjectManager.m: (openFileAtPath:): Call to orderFrontEditorForFile: explicitly because of last change in PCEditorManager. * Framework/PCProjectBrowser.m: doubleClick:): Do not open file in separate window with PCProjectEditor not PCProjectManager. * Framework/PCProjectEditor.m: (openEditorForCategoryPath:windowed:): Cleanup. * Framework/PCEditorManager.m: (openEditorForFile:editable:windowed:): Remove call to orderFrontEditorForFile:. * Modules/Editors/ProjectCenter/PCEditor.m: (_createWindow): Modify default size and position of window. (openFileAtPath:editorManager:editable:): Remove creation of internal view. Create it when first requested (editorView and componentView methods). (windowDidBecomeKey:) No need to set first responder. It seems first responder remembered by window correctly. (windowDidResignKey:): Call resignFirstResponder: to notify others. * Modules/Projects/Application/PCAppProject.m: (dealloc): TODO added. * Documentation/TODO: Mark "Finish FileNameIcon..." task as done. 2009-02-06 Sergii Stoian * Framework/PCProject.m: (dealloc): Replace DEVELOPMENT with DEBUG * Framework/PCProjectBrowser.m: (fileNameIconPath): Implement new method. * Framework/PCFileNameIcon.m: (mouseDown:) Finish drag&drop implementation. (init): Do not set image by default. (dealloc): Replace DEVELOPMENT with DEBUG. (setDelegate:): Use ASSIGN. (updateIcon): Cleanup. * Framework/English.lproj/ProjectInspector.gorm: Remove 'Hide on deactivate' attribute to panel. It allows drag&drop operations for external applications (e.g. Workspace). * Modules/Projects/Application/PCAppProject.*: Use PCFileNameIcon in inspector to use drag&drop functionality. Cleanup. 2009-01-27 Sergii Stoian * Framework/GNUmakefile: Remove Preferences.gorm, Headers/PCPrefController.h, PCPrefController.m * GNUmakefile: Add Preferences.gorm, Headers/PCPrefController.h, PCPrefController.m * Framework/PCProjectManager.m: Access PCPrefController via var preController which is set by PCAppController. * Framework/PCProjectLoadedFiles.m: Remove #import of PCPrefController.h which is not used. * Framework/PCProjectBuilder.m: Access PCPrefController via PCProjectManager. * Framework/PCProjectWindow.m: ditto. * Framework/GNUmakefile.preamble: Remove -W from ADDITIONAL_OBJCFLAGS. It removes useless warnings from GNUstep libraries. 2009-01-17 Yavor Doganov * Framework/GNUmakefile: (ProjectCenter_LIBRARIES_DEPEND_UPON): Define to `$(OBJC_LIBS) $(FND_LIBS) $(GUI_LIBS)' to avoid unresolved symbols. Fixes bug #23792. 2009-01-17 Sergii Stoian * Framework/GNUmakefile: (ProjectCenter_HEADER_FILES): Include PCFileNameField.h and PCFileNameIcon.h in as referenced by PCProjectInspector.h. Fixes bug #21619. * Framework/PCProject.m: (fileTypesForCategoryKey:): add "nib" as recognizable interface file type. * Modules/Projects/Application/Resources/AppController.m: (awakeFromNib:): Remove setting menu title for better GORM integration (Thanks to German Arias). 2009-01-13 Riccardo Mottola * Framework/English.lproj/ProjectDescription.gorm: make the textfields scrollable 2009-01-02 Riccardo Mottola * Modules/Debuggers/ProjectCenter/PTYView.m: OpenBSD portability 2009-01-01 19:40-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PTYView.[mh]: Changes to use new openpty replacement code on systems which don't have openpty, otherwise use the built-in version. 2009-01-01 17:41-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/Resources/Info.table: Add blank to file extension so that tools can be debugged as well. 2009-01-01 16:05-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Change the status bar size and set minimum window size. 2009-01-01 13:08-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/GNUmakefile * Modules/Debuggers/ProjectCenter/PTYView.h * Modules/Debuggers/ProjectCenter/PTYView.m: Change code to use openpty(...). 2008-12-31 Sergii Stoian * Framework/PCFileNameIcon.m: * Headers/ProjectCenter/PCFileNameIcon.h: Implementation of dragging functionality. * Framework/PCProjectBrowser.m: Implement file icon delegate methods. Dragging files to category icon adds files to project. 2008-12-30 Richard frith-Macdonald * PCMenuController.m: * Framework/PCProjectManager.m: * Framework/PCBundleManager.m: * Framework/PCMakefileFactory.m: * Framework/PCProject.m: * Framework/PCProjectLauncherPanel.m: * Framework/PCFileManager.m: * Framework/PCButton.m: * Framework/PCProjectBuilder.m: * Framework/PCProjectLoadedFilesPanel.m: * Framework/PCFileNameField.m: * Framework/PCSplitView.m: * Framework/PCProjectLauncher.m: * Framework/PCAddFilesPanel.m: * Framework/Resources/class.template: * Framework/Resources/header.template: * Framework/Resources/cfile.template: * Framework/PCProjectBuilderPanel.m: * Framework/PCFileCreator.m: * PCAppController.m: * PCFindController.m: * ProjectCenter_main.m: * Modules/Parsers/ProjectCenter/ObjCMethodHandler.h: * Modules/Parsers/ProjectCenter/ObjCCommentHandler.h: * Modules/Parsers/ProjectCenter/PCParser.h: * Modules/Parsers/ProjectCenter/ObjCClassHandler.h: * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m: * Modules/Parsers/ProjectCenter/ObjCCommentHandler.m: * Modules/Parsers/ProjectCenter/CodeHandler.h: * Modules/Debuggers/ProjectCenter/PCDebugger.m: * Modules/Debuggers/ProjectCenter/PTYView.m: * Modules/Debuggers/ProjectCenter/PCDebuggerView.h: * Modules/Debuggers/ProjectCenter/PCDebugger.h: * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: * Modules/Debuggers/ProjectCenter/PTYView.h: * Modules/Projects/Application/PCAppProject.h: * Modules/Projects/Application/PCAppProject+Inspector.h: * Modules/Projects/Application/PCAppProject.m: * Modules/Projects/Application/PCAppProject+Inspector.m: * Modules/Projects/Application/Resources/AppController.m: * Modules/Projects/Application/Resources/main.m: * Modules/Projects/Application/Resources/AppController.h: * Modules/Projects/ResourceSet/PCResourceSetProject.h: * Modules/Projects/ResourceSet/PCResourceSetProject.m: * Modules/Projects/Library/PCLibProject.h: * Modules/Projects/Library/PCLibProject.m: * Modules/Projects/Aggregate/PCAggregateProject.h: * Modules/Projects/Aggregate/PCAggregateProject.m: * Modules/Projects/Bundle/PCBundleProject.h: * Modules/Projects/Bundle/PCBundleProject.m: * Modules/Projects/Framework/PCFrameworkProject.m: * Modules/Projects/Framework/PCFrameworkProject.h: * Modules/Projects/Tool/PCToolProject.m: * Modules/Projects/Tool/Resources/main.m: * Modules/Projects/Tool/PCToolProject.h: * Headers/PCMenuController.h: * Headers/Protocols/CodeDebugger.h: * Headers/Protocols/CodeEditor.h: * Headers/Protocols/CodeParser.h: * Headers/Protocols/ProjectType.h: * Headers/ProjectCenter/PCProject.h: * Headers/ProjectCenter/PCProjectLauncherPanel.h: * Headers/ProjectCenter/PCProjectBrowser.h: * Headers/ProjectCenter/PCFileManager.h: * Headers/ProjectCenter/PCButton.h: * Headers/ProjectCenter/PCProjectBuilder.h: * Headers/ProjectCenter/PCDefines.h: * Headers/ProjectCenter/PCProjectEditor.h: * Headers/ProjectCenter/PCEditorManager.h: * Headers/ProjectCenter/PCProjectLoadedFilesPanel.h: * Headers/ProjectCenter/ProjectCenter.h: * Headers/ProjectCenter/PCLogController.h: * Headers/ProjectCenter/PCSplitView.h: * Headers/ProjectCenter/PCProjectLauncher.h: * Headers/ProjectCenter/PCAddFilesPanel.h: * Headers/ProjectCenter/PCProjectBuilderPanel.h: * Headers/ProjectCenter/PCProjectInspector.h: * Headers/ProjectCenter/PCFileCreator.h: * Headers/ProjectCenter/PCPrefController.h: * Headers/ProjectCenter/PCProjectManager.h: * Headers/ProjectCenter/PCProjectLoadedFiles.h: * Headers/ProjectCenter/PCBundleManager.h: * Headers/ProjectCenter/PCMakefileFactory.h: * Headers/PCInfoController.h: * Headers/PCAppController.h: * PCInfoController.m: Update to use #import rather than #include now that it is no longer deprecated and is the officially preferred mechanism. 2008-12-29 22:29-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/Resources/continue_button.png: Add image. 2008-12-29 22:27-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/GNUmakefile: Add continue icon. * Modules/Debuggers/ProjectCenter/PCDebugger.m: Add continue method. 2008-12-29 20:23-EST Gregory John Casamento * Documentation/TODO: Update progress. * Modules/Debuggers/ProjectCenter/GNUmakefile: Add images to makefile. * Modules/Debuggers/ProjectCenter/PCDebugger.m: Add up and down methods to implement this behaviour. * Modules/Debuggers/ProjectCenter/Resources/down_button.png * Modules/Debuggers/ProjectCenter/Resources/up_button.png: Images for the up/down buttons. 2008-12-29 00:30-EST Gregory John Casamento * Framework/PCProjectLauncher.m: Remove local variable for debugger from method. Also add it to the launcher dealloc method. * Headers/ProjectCenter/PCProjectLauncher.h: Add an ivar for the debugger. * Modules/Debuggers/ProjectCenter/PCDebugger.m: Add dealloc to shut down the debugger window when it's dealloc. * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Don't set status when terminated, since it causes a crash. 2008-12-28 11:25-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.m: Added code to do the restart and pause actions in the debugger. * Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Added method subProcessId and an ivar and the logic to parse the process id from debugger output. 2008-12-28 02:23-EST Gregory John Casamento * Framework/PCEditorManager.m: Remove log. * Modules/Debuggers/ProjectCenter/GNUmakefile: Added new images to resource list. * Modules/Debuggers/ProjectCenter/PCDebugger.[hm]: Added setStatus: method to manage status field. * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Added code to handle the toolbar. * Modules/Debuggers/ProjectCenter/PTYView.[hm]: Added method called "terminate" so that subclasses can override how the process is terminated. * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Added status line. * Modules/Debuggers/ProjectCenter/Resources/go_button.png * Modules/Debuggers/ProjectCenter/Resources/next_button.png * Modules/Debuggers/ProjectCenter/Resources/pause_button.png * Modules/Debuggers/ProjectCenter/Resources/restart_button.png * Modules/Debuggers/ProjectCenter/Resources/stepin_button.png * Modules/Debuggers/ProjectCenter/Resources/stepout_button.png: Images for debugger toolbar. 2008-12-27 00:47-EST Gregory John Casamento * Framework/PCEditorManager.m: Changed code to use the filePath that is passed in, since it is now fully qualified. * Modules/Debuggers/ProjectCenter/PCDebugger.m: Pass the "-f" (fullname) flag to gdb. This causes gdb to give a fully qualified pathname back. * Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Code to extract the line and file information. * Modules/Debuggers/ProjectCenter/PTYView.[hm]: New method putString:. 2008-12-26 13:01-EST Gregory John Casamento * Framework/PCEditorManager.m: Scroll to and select the line that the debugger has stopped at. * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: bring the debugger window to the front when a breakpoint is detected. 2008-12-26 02:25-EST Gregory John Casamento * Framework/PCEditorManager.m * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Changes to bring up the file in which the debugger has stopped in. 2008-12-25 23:46-EST Gregory John Casamento * Framework/PCProject.m * Headers/ProjectCenter/PCProject.h: Added notification for hitting a breakpoint. * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Added code to detect when a breakpoint is hit. 2008-12-25 10:30-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/GNUmakefile: Added PTYView.[hm] * Modules/Debuggers/ProjectCenter/PCDebugger.[hm]: Simplified to call PCDebuggerView instance with the program to start. * Modules/Debuggers/ProjectCenter/PCDebuggerView.[hm]: Refactored into a subclass of PTYView. * Modules/Debuggers/ProjectCenter/PTYView.[hm]: pty based terminal view which allows us to read and write from a pseudo-terminal. The code in the master/slave methods was inspired by an example given in "UNIX Network Programming" by W. Richard Stevens and also Nicola Vitacolonna. * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Added PTYView and made the PCDebuggerView a subclass of it. Also made the window release when closed so that the gdb process gets terminated. 2008-12-22 21:51-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.m: Write to the filehandle via the stream in -[PCDebugger putChar:]. 2008-12-22 19:56-EST Gregory John Casamento * Modules/Debuggers/ProjectCenter/PCDebugger.h * Modules/Debuggers/ProjectCenter/PCDebugger.m * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Add code to write to the file desicriptor. 2008-12-22 18:36-EST Gregory John Casamento * English.lproj/ProjectCenter.gorm: Minor changes. * Framework/PCEditorManager.m: Cleanup. * Framework/PCProjectLauncher.m: Cleanup. * GNUmakefile: New module. * Headers/Protocols/CodeDebugger.h: New methods * Modules/Debuggers/ProjectCenter/GNUmakefile: Added debugger to resources. * Modules/Debuggers/ProjectCenter/PCDebugger.h * Modules/Debuggers/ProjectCenter/PCDebugger.m: Changes to talk to debugger task * Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm: Debugger gorm file. 2008-12-23 Sergii Stoian * Documentatio/TODO: move unfinshed tasks from 0.5 to 0.6 release 2008-12-21 Sergii Stoian * Documentatio/TODO: update tasks for 0.6 release 2008-12-19 Nicola Pero * All GNUmakefiles: removed GNUSTEP_CORE_SOFTWARE=YES and added PACKAGE_NAME=ProjectCenter. * GNUmakefile: Export PACKAGE_NAME to reduce chances of a problem if a GNUmakefile in a subdirectory is missing it. 2008-12-18 Nicola Pero * Framework/GNUmakefile.preamble (GMAKE): Take advantage of the MAKE variable, which must already be set to the correct make else we wouldn't be able to compile PC itself, when searching for a working make. (GMAKE, GDB): Use := to void spawning a subshell every time one of these variables is read. 2008-12-18 Nicola Pero * All GNUmakefiles: added GNUSTEP_CORE_SOFTWARE=YES at the beginning. * GNUmakefile: Export GNUSTEP_CORE_SOFTWARE to reduce chances of a problem if a GNUmakefile in a subdirectory is missing it. 2008-12-17 Richard frith-Macdonald Where files are to be entered using NSOpenPanel and a 'set' button, make the corresponding textfields which display the filename selectable but not editable. 2008-12-17 Richard frith-Macdonald Clean up document type keys in ...info.plist Implement support for help document. 2008-12-16 Richard frith-Macdonald Attempt to get NSRole set correctly in document type info. 2008-12-09 Riccardo Mottola * Framework/PCPrefController.m: corrected wrong outlet 2008-12-07 Riccardo Mottola * Headers/ProjectCenter/PCPrefController.h, Framework/PCPrefController.m: handle setting path from Buttons 2008-11-27 22:06-EST Gregory John Casamento * Modules/Projects/Application/Resources/AppController.m: Correct warning in application:openFile: in AppController.m in Application project module. 2008-11-27 12:01-EST Gregory John Casamento * Framework/GNUmakefile * GNUmakefile: Correction for bug #24674. 2008-11-27 01:29-EST Gregory John Casamento * Framework/PCProjectBrowser.m: Check return value of [NSWorkspace getInfoForFile:application:type:]. Corrects crash when no editor is available for a type. 2008-10-25 20:48-EDT Gregory John Casamento * Version: 0.5 2008-10-22 Riccardo Mottola * English.lproj/Info.gorm: correct bugtracker URL 2008-10-22 Wolfgang Lux * Framework/PCProjectBuilder.m: fix memory related crash * Framework/PCProjectBuilder.m, Modules/Projects/Application/PCAppProject.m, Modules/Projects/Tool/PCToolProject.m: enhancements for relative install paths 2008-10-18 18:18-EDT Gregory John Casamento * ChangeLog: Moved to here top level of project. * Documentation/ChangeLog: Removed from here... * Modules/Editors/ProjectCenter/PCEditor.m: Corrected an issue in the windowDidResignKey: method which was making the window the first responder. This was preventing Find from working properly. 2008-02-20 Sergii Stoian * Framework/PCProjectBuilder.m: (-parseErorLine:): Fixed type of saved row and column values. Cleanup. * Framework/PCEditorManager.m: (-openEditorForFile:editable:windowed:): Fixed another NSLog parameter missing. 2008-02-19 Sergii Stoian * PCMenuController.m: Start thinking about "Go to line:" popup. * English.lproj/ProjectCenter.gorm: Added "Edit->Find->Line Number..." menu item. * Framework/PCProjectBrowser.m: (-nameOfSelectedFile:): Improve category select detection. (-pathToSelectedFile:): Use nameOfSelctedFile:. Cleanup. (-nameOfSelctedCategory:): Return project name if subproject is selected. * Framework/PCProjectEditor.m: (-openEditorForCategoryPath:windowed:): Use PCEditor's fileStructureItemSelected if file structure component selected in browser. * Framework/PCProjectBuilder.m: Go to line number in editor on error/warning click functionality implemented. * Framework/PCProjectWindow.m: Cleanup. * Framework/PCPrefController.m: Fix some compiler warnings. * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m: * Modules/Parsers/ProjectCenter/ObjCClassHandler.m: Fix bug #20855. Improve class names parsing: don't include spaces. * Modules/Editors/ProjectCenter/PCEditorView.h: Remove unused editorDocument variable. * Modules/Editors/ProjectCenter/PCEditor.h: * Modules/Editors/ProjectCenter/PCEditor.m: Make class independent from ProjectCenter framework. Added variable _highlighSyntax. It sould be set via preferences in the future. (-_createEditorViewWithFrame:): Use _highlighSyntax variable. (-_methodsForClass:): New method. Used to return to browser methods only for selected class. (-browserItemsForItem:): Use _methodsForClass method. (-scrollToClassName:): Implemented. Now it's a almost identical copy of scrollToMethodName:. TODO: think about code optimization. * Modules/Editors/ProjectCenter/PCEditorView.m: (-drawRect:): Call highilghter only if it's enabled. 2008-02-13 22:10-EST Gregory John Casamento * Framework/PCMakefileFactory.m: Correction for bug#22311. Added project-type specific makefile generation. 2008-02-10 23:53-EST Gregory John Casamento * Framework/PCEditorManager.m: Corrected problem with call to NSLog(..) which was causing a crash. 2008-02-05 Sergii Stoian * PCMenuController.m: Start thinking about "Go to line:" popup. * English.lproj/ProjectCenter.gorm: Added "Edit->Find->Line Number..." menu item. * Framework/PCProjectBrowser.m: (-nameOfSelectedFile:): Improve category select detection. (-pathToSelectedFile:): Use nameOfSelctedFile:. Cleanup. (-nameOfSelctedCategory:): Return project name if subproject is selected. * Framework/PCProjectEditor.m: (-openEditorForCategoryPath:windowed:): Use PCEditor's fileStructureItemSelected if file structure component selected in browser. * Framework/PCProjectBuilder.m: Go to line number in editor on error/warning click functionality implemented. * Framework/PCProjectWindow.m: Cleanup. * Framework/PCPrefController.m: Fix some compiler warnings. * Modules/Parsers/ProjectCenter/ObjCMethodHandler.m: * Modules/Parsers/ProjectCenter/ObjCClassHandler.m: Fix bug #20855. Improve class names parsing: don't include spaces. * Modules/Editors/ProjectCenter/PCEditorView.h: Remove unused editorDocument variable. * Modules/Editors/ProjectCenter/PCEditor.h: * Modules/Editors/ProjectCenter/PCEditor.m: Make class independent from ProjectCenter framework. Added variable _highlighSyntax. It sould be set via preferences in the future. (-_createEditorViewWithFrame:): Use _highlighSyntax variable. (-_methodsForClass:): New method. Used to return to browser methods only for selected class. (-browserItemsForItem:): Use _methodsForClass method. (-scrollToClassName:): Implemented. Now it's a almost identical copy of scrollToMethodName:. TODO: think about code optimization. * Modules/Editors/ProjectCenter/PCEditorView.m: (-drawRect:): Call highilghter only if it's enabled. 2008-02-13 22:10-EST Gregory John Casamento * Framework/PCMakefileFactory.m: Correction for bug#22311. Added project-type specific makefile generation. 2008-02-10 23:53-EST Gregory John Casamento * Framework/PCEditorManager.m: Corrected problem with call to NSLog(..) which was causing a crash. 2008-02-05 Sergii Stoian * Framework/PCProjectManager.[mh]: Cleaning up code that manages non-project editors. Use PCEditorManager instead. Remove PCFileManager's dalegate code(FileManagerDelegates category). (-newFile): Call PCFileCreator's method newFileInProject:. * Framework/PCFileManager.[mh]: Move code related to creation of new file in project from here * Framework/PCFileCreator.[mh]: to here. (-createFile): Add additional check before adding file to project (fixes bug #17493). * Framework/English.lproj/NewFile.gorm: Set owner to PCFileCreator. 2008-01-22 Sergii Stoian * Framework/PCEditorManager.m: Added. * Headers/ProjectCenter/PCEditormanager.h: Added. * PCMenuController.m: (-fileSaveAs:): move code to PCProjectManager.m. * Headers/ProjectCenter/PCEditorManager.h: New file. * Framework/PCEditorManager.m: New file. Superclass for PCProjectEditor. * Framework/PCProjectManager.m: Use PCEditorManager. Implement opening files outside of projects (fixes bug #15992). * Framework/PCProjectLoadedFiles.m: Use PCEditorManager. * Framework/PCProject.m: (-setProjectManager:): Use new method of initializing PCProjectEditor. * Framework/GNUmakefile: Add PCEditorManager.[hm]. * Framework/PCProjectBrowser.m: Made use of PCProjectEditor's editorForFile: method. * Framework/PCProjectEditor.m: Remove initializing of extern variables (moved into PCEditorManager). Use '_componentView' var instead of 'componentView'. The same with _scrollView and _project. (-initWithProject:): renamed into init. Removed code duplicated with superclass' code. (-dealloc): Removed code duplicated with superclass' code. (-editorForFile:key:): Removed. Code moved into superclass' editorForFile: method. (-openEditorForCategoryPath:windowed:): Code that determines existance of file and if file is plain text move into [super openEditorForFile:editable:windowed:]. Changed file opening coditions. Made use of [ fileStructureItemSelected] method. Code that determines classes and methods in category path was removed. (openEditorForFile:categoryPath:editable:windowed:): Removed in favour of superclass' method. (activeEditor): Ditto. (allEditors): Ditto. (closeActiveEditor:): Ditto. (closeEditorForFile:): Ditto. (saveFile): Ditto. (saveFileTo:): Ditto. (revertFileToSaved): Ditto. (editorDidResignActive:): Ditto. (editorDidChangeFileName:): Ditto. (closeAllEditors:): Cleanup. (saveFileAs:): Made use of new -openEditorForFile:editable:windowed: method. * Framework/PCProjectWindow.m: Made usage of editorManager method of protocol. * Modules/Editors/ProjectCenter/PCEditorView.m: (becomeFirstResponder): Use new -becomeFirstResponder: method of PCEditor class. * Modules/Editors/ProjectCenter/PCEditor.h: Change name of var projectEditor to _editorManager. Add parameter (PCEditorView *)view to becomeFistResponder and resignFirstResponder methods. Add some comments. * Modules/Editors/ProjectCenter/PCEditor.m: Rename method -openFileAtPath:categoryPath:projectEditor:editable: to -openFileAtPath:editorManager:editable. Rename -projectEditor method to -editorManager. Change becomeFistResponder and resignFirstResponder methods' definitions. (fileStructureItemSelected:): Add initial implementation of action code according to the type of selected item. * Headers/Protocols/CodeEditor.h: Change definition of -openFileAtPath:categoryPath:projectEditor:editable: mathod to -openFileAtPath:editorManager:editable. Remove methods scrollToClassName: and scrollToMethodName:. Rename projectEditor method into editorManager. * Headers/ProjectCenter/PCProjectEditor.h: Made PCProjectEditor as subclass of PCEditorManager. Add prefix '_' to variables. (-initWithProject:): renamed into init. (setProject:): Added. Removed methods and variables duplicated with superclass. * Headers/ProjectCenter/PCProjectManager.h: Add editorManager var. (-saveFileAs:): renamed to saveFileAs. 2008-01-17 Sergii Stoian * Framework/PCProjectBrowser.m: (doubleClick:): open file with external application only if NSWorkspace doesn't return "ProjectCenter.app" appliction name. 2008-01-16 Sergii Stoian * GNUmakefile: Remove FileRTF.tiff from resoures. * Images/FileRTF.tiff: Removed. * Images/FileM.tiff, * Images/FileMH.tiff, * Images/FileH.tiff, * Images/FileHH.tiff, * Images/FileC.tiff, * Images/FileCH.tiff, Moved to Modules/Editors/ProjectEditor/Resources. * Images/FileProject.tiff: Added * Modules/Editors/ProjectCenter/PCEditor.h: Added new variable _isEditable. * Modules/Editors/ProjectCenter/PCEditor.m: (_createEditorViewWithFrame:): Set editable state for NSTextView here. Add observer for changed text notification here. * Resources/Info.plist: NSTypes was extended. 2008-01-15 Sergii Stoian * Framework/PCBundleManager.m: (objectForClassName:bundleType:protocol:) Return nil if className is nil. 2007-12-20 Nicola Pero * PCMakefileFactory.m ([-createPreambleForProject:]): Output the -l flags in the ADDITIONAL_GUI_LIBS variable, not the ADDITIONAL_LDFLAGS one. This should fix linking applications on Windows, but will not work well for linking non-GUI libraries. ProjectCenter needs to be extended to allow specifying ADDITIONAL_TOOL_LIBS and ADDITIONAL_OBJC_LIBS on the gui. 2007-12-13 Nicola Pero * GNUmakefile.preamble (ADDITIONAL_LIB_DIRS): Improved linking to the ProjectCenter framework when it's not installed yet so that it should work on non-flattened layouts. * Modules/GNUmakefile.bundles (ADDITIONAL_LIB_DIRS): Same change. (BUNDLE_INSTALL_DIR): Use GNUSTEP_APPS, not GNUSTEP_SYSTEM_ROOT. 2007-09-27 Sergii Stoian * Framework/PCBundleManager.m, * Headers/ProjectCenter/PCBundleManager.h: Make massive cleaup. some methods changed, some deleted, some added. * Framework/PCProjectManager.m, * Framework/PCProjectEditor.m: Make use of changed PCBundleManager. * TextFinder.m: (-enterSelection:): Add sanity check for text variable. (-jumpToSelection:): Ditto. * Modules/Parsers/ProjectCenter/Resources/Info.table: Fix value of "Name" key. * Headers/Protocols/CodeEditor.h: Remove declaration of openExternalEditor:withPath:projectEditor: method. It will be provided by Custom.editor bundle (will be added soon). * Headers/ProjectCenter/PCProjectEditor.h: Cleanup. 2007-09-24 Sergii Stoian * English.lproj/FindPanel.gorm: Added Find panel. * PCMenuController.m: Added Find panel support. * TextFinder.[hm]: Added implementation of Find panel. 2007-08-29 Sergii Stoian * Frameworks/PCFileManager.m: (-filesForOpenOfType:multiple:title:accView:): Removed (-fileForSaveOfType:title:accView:): Removed. (-filesForAddOfTypes:): Removed. (-filesOfTypes:operation:multiple:title:accView:): Implemented. Replaces removed methods. (-_panelForOperation:title:accView:): New method. Returns panel for specified operation type. (-_saveLastDirectoryForPanel:): New method. Saves last opened directory for operation type (panel). (-panel:isValidFilename:): Validate directory as correct filename if project is opening and directory has PC.project file. * Headers/ProjectCenter/PCFileManager.h: Added new variable 'operation' and declaraion of new mathods. * Framework/PCProjectManager.m: Use new methods of PCFileManager. * Framework/PCProjectWindow.m: (-preferencesDidChange:): Show Builder and Launcher panels only they are visible in project window (fixes bug #20858). * Modules/Projects/Library/Resources/Version: Changed GCC version to 2.95.3. 2007-08-23 Sergii Stoian * Modules/Editors/ProjectCenter/Resources/ObjC.syntax: Change color of 'NO'. * Modules/Projects/Library/Resources/Version: Change gcc version to 2.9.5. 2007-08-22 Sergii Stoian * Framework/PCProjectBuilderOptions.m: Add missing file. * Headers/ProjectCenter/PCProjectBuilderOptions.h: Add missing file. * Framework/PCProject.m: (-rootCategories): Call subproject's method if subproject is active. (-rootEntries): Ditto. (-keyForCategory:): Ditto. Fix bug #20854. (-categoryForKey:): Ditto. (-keyForRootCategoryInCategoryPath:): Since keyForCategory: was made subproject's sensitive implement key searching here. 2007-08-21 Sergii Stoian * Framework/PCProjectBuilderOptions.m: New file. * Headers/ProjectCenter/PCProjectBuilderOptions.h: New file. * ProjectBuilder options handling finished. * Fixed compliance to GNUstep make v2. * Framework/PCFileNameIcon.m: Start implementing drag/drop. * Images/ProjectCenter.tiff: Use ProjectManager's app icon. * Modules/Projects/*/Resources/Info.table: change default targets. * Headers/ProjectCenter/PCDefines.h: Clean up. 2007-07-19 Sergii Stoian * GNUmakefile.postamble: Cleanup old code. * Headers/ProjectCenter/PCMakefileFacory.h: * Framework/PCMakefileFacory.m: (-createMakefileFroProject:): change argument type from NSSrting to PCProject. Set installation path PCInstallDir value. * Modules/Projects/*/PC*Project.m: (-writeMakefile): Adopt createMakefileForProject argument type changes. 2007-06-06 Sergii Stoian * GNUmakefile: Set GNUSTEP_INSTALLATION_DOMAIN to SYSTEM. 2007-06-05 Sergii Stoian * Framework/PCProjectBuilder.m: Added parsing of gcc error output. 2007-04-27 Nicola Pero * PCProjectLauncher.m ([-debug:]): Fixed determining the path of the executable to debug. Try (in the order) xxx.debug/xxx, xxx.app/xxx and obj/xxx. Fixed path printed in error message when gdb is not found. (Originally from a patch by Friedrich ) 2007-04-27 Nicola Pero * PCProject.m ([-execToolName]): Fixed typo where 'ExecuToolName' had been typed instead of 'ExecToolName'. * PCProjectLauncher.m ([-run:]): Add './' before the name when we're using openapp, so that we use 'openapp ./Gorm.app' but 'opentool autogsdoc'. This fixes running application/tool projects. 2007-03-06 Nicola Pero * GNUmakefile: Set GNUSTEP_MAKEFILES using gnustep-config if not yet set. Do not set GNUSTEP_INSTALLATION_DOMAIN. * PCBundleManager.m ([-loadBundlesWithExtension:]): Rewritten to use the proper NSSearchPathForDirectoriesInDomains API so that it works with all filesystem layouts. Also, load bundles from all ApplicationSupport/ProjectCenter locations, not just the System one. * Framework/PCPrefController.m (-setBundlePath:): Method removed. * Headers/ProjectCenter/PCPrefController.h: Same change. * PCFileManager.m ([-createDirectoriesIfNeededAtPath:]): Avoid infinite loop that would be triggered the first time you tried to build your project. 2007-02-14 Nicola Pero * GNUmakefile.bundles (BUNDLE_INSTALL_DIR): Fixed definition basing it on GNUSTEP_APPS. 2007-02-14 Nicola Pero * Modules/Projects/Application/PCAppProject.m: Do not set GNUSTEP_INSTALLATION_DIR in the GNUmakefile. This would not work with the new filesystem support. The GUI probably needs updating to make users aware of this. * Modules/Projects/Tool/PCToolProject.m: Same change. 2007-01-20 Sergii Stoian * Modules/Editors/ProjectCenter/Resources/ObjC.syntax: Update. 2007-01-15 Sergii Stoian * Framework/PCProjectManager.m: Remove code handling rootBuildPath var. Remove rootBuildPath var. * Headers/ProjectCenter/PCProjectManager.h: Ditto. * Framework/PCFileManager.m: Add removeDirsIfEmpty:(BOOL) parameter to remove* methods. * Headers/ProjectCenter/PCFileManager.h: Ditto. * Framework/PCProject.m: Pass removeDirsIfEmpty:(BOOL) parameter to PCFileManager remove* methods calls. * PCAppController.m: Ditto. * Modules/Projects/Application/PCAppProject.m: Ditto. * Modules/Projects/Tool/PCToolProject.m: Ditto. * Framework/PCProjectBuilder.m: Rename ivar currentProject into project. Use it. (prebuildCheck:): Create root build directory if not exist. * Headers/ProjectCenter/PCProjectBuilder.h: Rename ivar currentProject into project. * Documentation/TODO: Update. * Documentation/ANNOUNCE: Ditto. 2007-01-15 Sergii Stoian * Framework/PCProjectManager.m: Fix problem with closing project. * Framework/PCProjectr.m: Ditto. * Framework/PCMakefileFactory.m: Support for root build directory added. * Framework/PCProjectBuilder.m: Code cleanup. * Framework/PCProjectEditor.m: Enable usage of parser. Start testing process. * Framework/PCProjectWindows.m: Enable tooltips for buttons. * Framework/PCPrefController.m: setRootBuildDir: fix. * PCAppController.m: applicationWillTerminate: Remove file from build dir on application quit. This code still needs review (also removed build dir because of use PCFileManager's method). * Modules/Editors/ProjectCenter/PCEditor.m: browserItemsForItem: Crashes if file is not supported by parser. Fixed. 2007-01-12 Sergii Stoian * Framework/PCProjectBuilder.m: Parsing of error output almost complete, testing. Display number of warnings and errors in statud line after build process finished. * Framework/English.lproj/BuilderPanel.gorm: Change minimal size. * Framework/English.lproj/ProjectWindow.gorm: Fix minimal size. 2007-01-09 Sergii Stoian * Framework/English.lproj/Builder.gorm: Added. * Framework/English.lproj/BuilderPanel.gorm: Added. * Framework/PCProjectBuilder.m: Use GORM file for interface. Initial parsing for error logging view was added. * Framework/PCProjectBuilderPanel.m: Use GORM file for interface. 2006-12-26 Sergii Stoian * Merge changes from UNSTABLE_0_5 into trunk. * Localizable resources for application and framework was defined (English.lproj). * Rename directory with ProjectCenter framework from Library to Framework. * Fix makefiles wrt to framework directory renaming. 2006-11-20 Sergii Stoian * Rewritte bundle loading mechanizm. Bundle now loaded on demand. * Created Protocols directory. * PCEditor and friends moved to loadable bundle Modules/Editors/ProjectCenter. * PCLogController.[hm] and PCPrefController.[hm] was moved to Library. * Fixes for MingW environment (thanks to Adam Fedor). * Added attempt to find make and debugger utilities. 2006-11-15 Nicola Pero * Modules/GNUmakefile.bundles (BUNDLE_INSTALL_DIR): Install the bundles in GNUSTEP_INSTALLATION_DIR, not in GNUSTEP_SYSTEM_ROOT. * Modules/ApplicationProject/PCAppProject.m ([PCAppProject -appendHead:]): Do not hardcode GNUSTEP_INSTALLATION_DIR in GNUmakefiles. See comments in the file for an explanation of how to improve PC's installation controls. * Modules/RenaissanceProject/PCRenaissanceProject.m ([PCRenaissanceProject -appendHead:]): Same change. * Modules/ToolProject/PCToolProject.m ([PCToolProject -appendHead:]): Same change. * Modules/BundleProject/Resources/PC.project (INSTALLDIR): Install bundles by default in $(GNUSTEP_BUNDLES). 2006-10-21 15:41-EDT Gregory John Casamento * Resources/ProjectCenter.gorm: Corrected issue with dangling menu/ menu items in the .gorm file. 2006-10-09 Nicola Pero * GNUmakefile (GNUSTEP_INSTALLATION_DIR): Do not set GNUSTEP_INSTALLATION_DIR. It should never be set in GNUmakefiles. * Library/GNUmakefile: Same change. * Modules/GNUmakefile: Same change. * ProjectCenter/Resources/GNUmakefile: Same change. 2005-09-11 Serg Stoyan * Library/PCProject.m: (saveProjectWindowsAndPanels): save ProjectBrowser frame. * Library/PCProjectWindow.m: gormified. (_initUI): Adopt to grom model. Make self as delegate for h_split. (splitView:resizeSubviewsWithOldSize:) implemented h_split delegate method. Used for restoring saved frame of ProjectBrowser. In general, used to restore subviews size of horisontal and verstical split views from last session. "Remember project windows and panels in PC.project" task from TODO file is considered fully comleted now. Will use this scheme for other split views in PC. * Library/PCFileNameIcon.[hm]: new files. I'm not sure yet if it should be separate class for file icons. 2005-06-20 Serg Stoyan * Library/PCFileNameField.m: new file. * Library/PCProjectInspector.m: moved class PCFileNameField to separate file. * Library/PCProjectWindow.m: (_initUI)fileIconTitle now is PCFileNameField instead of NSTextField. 2005-06-11 Serg Stoyan * PCAppController.m: (applicationWillTerminate:): Don't remove temorary directory. Needs more investigation since NSTemporaryDirectory() returns f.e. /tmp/GNUstepSecure1000. * Library/PCProjectEditor.m: (orderFrontEditorForFile:): Always show editor subview (Fixed bug#11779). Incorporated from HEAD branch. 2005-01-28 Serg Stoyan * Moduleas/ResourceSetProject: Added. 2005-01-27 Serg Stoyan * Renaissance project type removed. 2005-01-26 Serg Stoyan * Renaissance project type code and templates moved into Applicaton project type. 2005-01-25 Serg Stoyan * Move "Project Name", "Project Type" and "Language" fields into Project Inspector's "Project Attributes section" * Library/PCProject.m: Add "Project Attributes" view. Modules' inspectors now subview of this view. 2005-01-23 Serg Stoyan * Move appendLibraries: from project modules into PCMakefileFactory.m * Include into GNUmakefile only public headers for Framework and Library project types. * Project type bundles now have .project suffix. * Library/PCBundleLoader.[hm]: (loadBundlesWithExtension:): Added and implemented. (loadBundlesAtPath:withExtension:): ditto. (loadBundleWithFullPath:): ditto. (loadBundles): removed. * Library/PCProjectManager.m: (loadProjectTypeBunldes): Call loadBundlesWithExtension:@"project". * Added Framework project type. * 0.5 branch started. 2005-01-22 Serg Stoyan * Release 0.4.1 * Modules/ApplicationProject/PCAppProject+Inspector.m: (addDocType:): Set all textfields to default values. (removeDocType:): Call fillFieldsForRow: after row removing. 2005-01-09 Gregory Jonh Casamento * Library/PCProjectBuilder.m: (build:): Exception handler added. 2005-01-09 Serg Stoyan * Library/PCButton.m: (release): Added and implemented. Remove tooltips if object is about to be dealloced. * Library/PCProjectBuilder.m: (stopBuild:): Eception handler added. 2005-01-05 Serg Stoyan * Library/GNUstep.postamble: Make "ln -s" ProjectCenter to the ../Library. It should make correct compiling on Windows. * Library/PCFileManager.m: (defaultManager:): Don't autorelease returned object. 2005-01-04 Serg Stoyan * Library/PCFilesManager.[hm]: (createDirectoriesIfNeededAtPath:): Added and implemented. (copyFile:toFile:): ditto. (copyFile:intoDirectory:): ditto. * Use above methods where it's appropriate. 2005-01-03 Serg Stoyan * Library/PCAddFilesPanel.[hm]: New implementation. Derived from NSOpenPanel. * Library/PCFileManager.m: Use PCAddFilesPanel instead of NSOpenPanel. * Library/PCProject.m: (projectFileFromFile:forKey:): Rewritten to correctly support subprojects' files and libraries. (addFiles:forKey:notify:): Add path to PCSearchLibs when adding libraries. * Library/PCProjectInspector.m: Observe project dictionary changes and reread it. Accept entered value when textfields are losting focus. * Library/PCProjectBrowser.m: (doubleClick:): Don't try to open libraries. * Modules/ApplicationProject/Resources/Main.gorm: Connect delegate to AppController (bug #11478). * Library/PCProjectEditor.m: (editorForFile:categoryPath:windowed:): Call orderFrontEditorForFile: to show already opened file (bug #11448). * Library/PCEditor.m: (_createEditorViewWithFrame:): Remove return of autoreleased ivar. * Library/PCFileManager.m: (filesForAddOfTypes:): Get list of categories from active project not from root active project. 2004-12-24 Serg Stoyan * "Build Tool" setting from Project Inspector was moved to PC Preferences. * Implemented support of document-based applications * Added "Document types" panel into Project Inspector * Library/PCFileManager.m: Fix crashing while calling "Add Files" panel. 2004-10-14 Serg Stoyan * Fixed interface (*.gorm) files wrt to latest GORM changes. 2004-07-22 Serg Stoyan * Library/PCButton.m: Rewritten tooltips code. Almost ready for incorporation into NSView. * Library/PCProjectBuilder.m: Use new tooltip code and remove old style code. * Library/PCProjectLauncher.m: ditto. * Library/PCProjectWindow.m: ditto. *Images/ButtonTile.tiff: removed. 2004-07-15 Serg Stoyan * Library/PCProject.m: (projectFileForFile:forKey:): Fix recognizing of subproject files. * Library/PCProjectManager.m: (addProjectFiles):ditto. * Update all GORM files with latest CVS GORM version. * Resources/Preferences.gorm: Fix Auto-Save slider. 2004-07-14 Serg Stoyan * Library/PCButton.m: PCButtonCell removed. (initWithFrame:): [self setCell:] removed. [_cell setGradientType:] added. 2004-07-04 Serg Stoyan * Library/PCProject.m: (projectFileFromFile:forKey:): If adding files from subproject to project add it with relative path to project's one. * Modules/ApplicationProject/PCAppProject.m: (writeMakefile): Do not add "Resources/" prefix if resource file is part of subproject. * Modules/BundleProject/PCBundleProject.m: (writeMakefile): ditto. * Modules/LibraryProject/PCLibProject.m: (writeMakefile): ditto. * Modules/RenaissanceProject/PCRenaissanceProject.m: (writeMakefile): ditto. * Modules/ToolProject/PCToolProject.m: (writeMakefile): ditto. 2004-07-03 Serg Stoyan * Library/PCProjectManager.m: (addProjectFiles:): Don't copy files that already in project directory structure. This allows adding of subproject's files to project resources. * Across the ProjectCenter: Comment out calls for PCLog*. This is speedup PC. 2004-06-22 Serg Stoyan * Library/PCFileManager.m: (panel:shouldShowFilename:): Treat .gorm dirs not as dirs. * Library/PCProject.m: (doesAcceptFile:forKey:): Check existance of file in sourceFileKeys and resourceFileKeys. * Modules/*: Made cleanup in sourceFileKeys, resourceFileKeys and otherKeys methods. 2004-06-21 Serg Stoyan * Library/PCFileManager.m: (panel:shouldShowFilename:): Fix filtering out files already included in project. Optimized. * GNUmakefile: Change VERSION var to 0.4.1pre. 2004-06-20 Serg Stoyan * Release 0.4.0. * Library/PCProjectWindow.m: (activeProjectDidChange:): Take into account subprojects of subprojects. (showProjectLaunch:): Remove attention panel if project is not executable. * Library/PCProjectBrowser.m: (activeProjectDidChange:): ditto. Take into account subprojects of subprojects. * Library/PCProjectLauncher.m: (debug:): Check if project is executable and order attention panel if not. * Modules/ApplicationProject/Resources/Inspector.gorm: Fix connection between "Add" button and addDocIcon: method. * Modules/ApplicationProject/PCAppProject.m: (appendApplication:): Removed. (appndHead:): Move appendApplication's code here. Write into GNUmakefile _STANDARD_INSTALL = no if install dir attribute was not set. * Modules/BundleProject/PCBundleProject.m: (appendHead:): Write into GNUmakefile _STANDARD_INSTALL = no if install dir attribute was not set. * Modules/RenaissanceProject/PCRenaissanceProject.m: (appendApplication:): ditto. * Modules/ToolProject/PCToolProject.m: (appendHead:): ditto 2004-06-19 Serg Stoyan * Library/PCProjectManager.m: (convertLegacyProject:atPath:): Get files list from .pcproj file not from directories. * Library/PCProject.m: (renameFile:toFile): Handle the case when filename already exist. Do not use removeFiles and addFiles methods, change projectDict directly. (setProjectDictObject:forKey:): Post notification with dictionary as notification object. Dictionary consists of "Project" and "Attribute" records. This is narrows actions to be taken on project dictionary changes. (assignProjectDict:): Set LANGUAGES to [NSUserDefaults userLanguages]. (setProjectDictObject:forKey:notify:): Renamed from setProjectDictObject:forKey:. Changed in various places accordinly. (removeFiles:forKey:notify:): Renamed from removeFiles:forKey:. (addFiles:forKey:notify:): Renamed from addFiles:forKey:. * Library/PCProjectBrowser.m: (projectDictDidChange): Changed wrt last PCProject changes. Reload column only if "Attribute" is one of the tracked by Projectbrowser. (reloadLastColumn): Renamed to reloadLastColumnAndNotify: and changed accordinly to its name. (reloadLastColumnAndSelectFile:): Added and implemented. * Library/PCProjectWindow.m: (projectDictDidChange:): Changed wrt last PCProject changes. * Library/PCLoadedFiles.m: (initWithProject:): Change NSLog with PCLogStatus. * Library/PCProjectInspector.m: (activeProjectDidChange:): Set window title only if project change to other project not subproject. * Library/PCFileManager.m: (filesForAdd): Fix setting panel attributes. * Modules/AggregateProject/PCAggregateProject.m: (appendHead:) Added generating of VERSION var. * Modules/ApplicationProject/PCAppProject.m: (appendApplication:): ditto. * Modules/BundleProject/PCBundleProject.m: (appendHead:): ditto. * Modules/LibraryProject/PCLibProject.m: (appendHead:): ditto. Added support for public headers. (renameFile:toFile:): Implemented. Handles the case with public headers. * Modules/RenaissanceProject/PCRenaissanceProject.m: (appendApplication:): ditto. * Modules/ToolProject/PCToolProject.m: (appendHead:): ditto * Modules/: Cleanup PC.project templates. Added PUBLIC_HEADERS and LANGUAGES. 2004-06-15 Serg Stoyan * Library/PCProjectManager.m: (convertLegacyProject:atPath:): added and implemented for conversion of old projects. (closeProject:): check if panels visible before performing close. * Libarary/PCProject.m: (fileTypesForCategoryKey:): moved implementation here from PC*Project classes. (dirForCategory:): ditto. * Library/PCProjectEditor.m: (editorDidClose:): remove calling to setActiveEditor:. (editorDidResignActive:): check if editor belongs to current project. (editorDidBecomeActive:): fix checking if editor belongs to current project. * Library/PCProjectBrowser.m: (projectDictDidChange:): Fix detection of project changed. * Modules/ApplicationProject/*.[hm]: * Modules/BundleProject/*.[hm]: * Modules/LibraryProject/*.[hm]: * Modules/RenaissanceProject/*.[hm]: * Modules/ToolProject/*.[hm]: Default location of non-localized resources changed to Resources subdir in project directory layout. No more Documentation and Images subdirectories. Removed PCProject overridings that are identical. Cleaned up. 2004-06-14 Serg Stoyan * Library/PCFileManager.m: (createFile): Removed extra ";" in newFiles declaration. * Modules/AggregateProject: Aggregate project type added. * Images/MultiFiles.tiff: added. 2004-06-13 Serg Stoyan * Library/PCProjectBrowser.m: (reloadLastColumn): Reload subprojects list only if subprojects added/removed. 2004-06-12 Serg Stoyan * Library/PCProjectManager.m: * Library/PCProject.m: * PCPrefController.m: Fix bugs related to opening legacy projects. * Fixes made to compile with gcc 3.4 * Resources/ProjectCenter.gorm: Remove all unimplemented items. 2004-06-11 Serg Stoyan * Library/PCProjectManager.m: (loadProjectAt:): Fix loading "Gorm" poject. 2004-06-09 Serg Stoyan * Library/PCProjectBrowser.[hm]: (pathOfSelectedFile): renamed to pathToSelectedFile. (nameOfSelectedCategory): implemented. Use it insetead PCProject's -categoryForCategoryPath. (pathToSelectedCategory): implemented. (setPathForFile:category:): removed. (reloadLastColumn): implemented. * Modules/ApplicationProject/PCAppProject.m: (renameFile:toFile:): remove calling of PCProjectBrowser's setPathForFile:category. * Modules/RenaissanceProject/ PCRenaissanceProject.m: (renameFile:toFile:): ditto. * Library/PCLoadedFilesPanel.m: * Library/PCBuildPanel.m: * Library/PCLaunchPanel.m: (activeProjectDidChange:): return if root project wasn't changed. * Library/PCProject.m: (setProjectmanager:): don't set project components for subproject. 2004-06-02 Serg Stoyan * Library/PCProjectManager (openProjectAt:): get project name from PC.project file instead of directory name. So project name and directory name may differ. * Library/PCProjectLauncher.m (debug:): Debug application using full path instead of "~/Application". * PCMenuController.m: disable "Tear-Off Editor Size" fields editing if Project Editor is not tear-off or Editor is not "ProjectCenter". Check only first arg of Editor value. 2004-06-01 Serg Stoyan * Finished on-the-fly applying "Tear-Off Panels" preferences. * Implemented remembering windows and panels visibility on project opening. * Various PCProject fixes. * Remove PC.project.backup if preference "Keep Project Backup File" is not set. 2004-05-27 Serg Stoyan * Finished support of external editors. 2004-05-10 Serg Stoyan * Preferences interface created using GORM. * Resources/Prefernces.gorm: added. * PCPrefController+UInterface.[hm]: removed. 2004-05-08 Serg Stoyan * Start new ChangeLog. Old ChangeLog resides in Documentation/ChangeLog-1 new in Documentation/ChangeLog. * Summary of changes: - massive overall refactoring and cleanup. Directory layout of PC changed; - ProjectWindow: implemented toolbar(hide/show); menu entry implemented; - ProjectInspector: PC*Project's parts moved into PC*Projects; more or less finished; - ProjectBuilder: switch from NSThread to NSTask method of executing tasks; "Build", "Stop Build", "Clean" menu entries implemented; - ProjectLauncher: ditto; finished all related menu entries; - LoadedFiles: Fully implemented; - LogController: implemented; made use it; - initial subprojects support added; - more stability around the whole ProjectCenter; - GORMified parts of PC now is: PC main menu, ProjectInspector, "File->New in Project" panel, "Project-> New Subproject" panel. - "File->Rename" implemented; - ProjectCenter library now framework. apps-projectcenter-master/Documentation/000077500000000000000000000000001347226342500210005ustar00rootroot00000000000000apps-projectcenter-master/Documentation/ANNOUNCE000066400000000000000000000040431347226342500221320ustar00rootroot00000000000000 ANNOUNCE ******** This is version 0.5.0 of ProjectCenter. What is ProjectCenter? ====================== ProjectCenter is GNUstep IDE(Intergated Development Environment) application. It is a clone of the OPENSTEP ProjectBuilder application for GNUstep. ProjectCenter is covered under the GNU General Public License. This means if you make changes to these programs, you cannot charge a fee, other than distribution fees, for others to use the program. You should read the Documentation/COPYING file for more information. Noteworthy changes in version `0.5.0'. ====================================== * Added new project types "Framework" and "Resource Set". * Implemented on demand loading of bundles (project types, editor). * Impemented localization support for projects. * Some user interface ehnancements were made (save/restore geometry of subviews in project window splitview, drag and drop for icons). * Clicking on .m and .h file in project browser expands to file structure (classes, methods). * Incorporated ProjectManager's editor with some modifications. Implemented syntax color highlighting. * All windows and panels are now GORM files. * Fixes for MingW environment. * Support for separate build directory added. How can I get support for this software? ======================================== You may wish to use the GNUstep discussion mailing list for general questions and discussion. Look at the GNUstep Web Pages for more information regarding GNUstep resources Where can you get it? How can you compile it? ============================================== You can download sources from ftp://ftp.gnustep.org/pub/gnustep/dev-apps/. Where do I send bug reports? ============================ Bug reports can be sent to . Obtaining GNU Software ====================== Check out the GNU web site. (`http://www.gnu.org/') Check out the GNUstep web site. (`http://www.gnustep.org/') apps-projectcenter-master/Documentation/AUTHORS000066400000000000000000000006001347226342500220440ustar00rootroot00000000000000Authors: Philippe C.D. Robert Sergii Stoian Contributors: David Ayers Richard Frith-Macdonald Nicola Pero Pierre-Yves Rivaille Adam Fedor Daniel Luederwald Gregory Jonh Casamento apps-projectcenter-master/Documentation/BUGS000066400000000000000000000063611347226342500214710ustar00rootroot00000000000000KNOWN BUGS: ~~~~~~~~~~ - [bug #25571] exception on removing author in project inspector. This happens to me with project-center-0.5.0. in the Project Inspector -> Project Description, click the Add button to add an Author now the text input field is active, to add an author, as long as this is active, and then pressing remove button, to remove an author, then PC exits with the following exception: NSRangeException: Index 1 is out of range 1 (in 'removeObjectAtIndex:') - [sr #106614] ProjectCenter, document type extensions. In the project center project properties editor, if there are several extensions separated bya space, they should be encoded as element arrays - [bug #25193] pc fails to load project from ImageViewer.pc.project. - [bug #22815] ProjectCenter won't open a new project . [doesn't work for me] - [bug #22411] font types in ProjectCenter Editor. - [bug #22441] Usability: Project Center should have a separate project type for Renaissance based applications - [bug #22124] ProjectCenter doesn't support extra entries in Plist. - [bug #22008] Project Center should support more flexible directory configurations. - [bug #22026] ProjectCenter should split up project file. - [bug #11931] Build before launch on change. - [bug #20858] UI components (editor, builder, launcher). The latest change fixes the initial problem but introduces a new one! The new issue is that doesn't matter what I check or uncheck on the Interface Preferences the only thing that is shown is the Editor in the SplitView. It's reproducable every time, no matter what. All you need to do is check every option, so that only the browser will be shown, then uncheck random options. On another note, but still related, when the Editor is shown (after being hidden by the preferences) it doesn't preserve it's previous size. RELEASE CRTITICAL UNKNOWN BUGS: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ProjectBuilder's incorrectly parses output of gnustep-make (incorrect directories, incorrectly recognises initial point of error etc.). - Browser must be double checked for correct behaviour on browsing, file removal, opening editor (currently is bad). - It seems that changing subproject's attributes doesn't change 'edited' state of project window. - Removing files works bad (crashes, strange warnings, exceptions). Check it! Maybe this happens only in subprojects... It may be connected to browser's functionality. - PC tries to load internal editor for .gorm files. Fix it!!! - Setting localizable resources through inspector works bad. Double check it and fix!!! Also check this functionality when multiple files selected. - Double check support for "Resource Set" project type as subproject of existing projecttypes. - WHISH LIST: ~~~~~~~~~~ + Open panel with list of modified files on project close and project build. - Think about browser initial responder status: now very uncomfortable to find some file in browser list when editor is open. - "Project Attributes" for Application should be reviewed after split of "Application" to "Application" and "Renaissance" project types. - Add setting to preferences "Create template-based files on project creation". It should allow to switch off creation of .m, .h, .gorm files from templates. apps-projectcenter-master/Documentation/COPYING000066400000000000000000000430761347226342500220450ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02111, 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 Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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., 675 Mass Ave, Cambridge, MA 02111, 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) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. apps-projectcenter-master/Documentation/ChangeLog-1000066400000000000000000002165261347226342500227240ustar00rootroot000000000000002003-08-25 Philippe C.D. Robert * Fixing "stop logging" fix: PCProjectBuilder.m 2003-08-25 Serg Stoyan * PCProjectBuilder.[hm]: stop logging when building/cleaning. Cleanups 2003-08-09 Philippe C.D. Robert * Support for an external debugger: PCLib/PCDefines.h, PCAppController.m, PCPrefController.m, PCPrefController+UInterface.m, PCPrefController.h, PCLib/PCProjectDebugger.m 2003-08-03 Philippe C.D. Robert * Fixed typo: PCLib/PCProject+ComponentHandling.m, PCMenuController.m 2003-08-01 Philippe C.D. Robert * Removed -Werror: GNUMakefile.preamble, GNUMakefile.bundles * Added -methodSignatureForSelector: PCAppController.[hm] 2003-07-10 Philippe C.D. Robert * Updated the ANNOUNCE text * Added missing includes: PCLib/PCDataSource.m, PCLib/PCButton.m * Added note in README about using ProjectCenter with Cocoa * Disabled unused menu entries: ProjectCenter_main.m * Some spelling corrections: PCMenuController.m 2003-07-05 Philippe C.D. Robert * Uppercase key for interface category lookup: PCFileManager.m * Adjusting UI elements: PCGormProject.m * Adding proper header: PCLib/PCButton.h, PCLib/PCButton.m * Code cleanup and corrected contact address: PCInfoController.m, PCInfoController.h, PCLogController.m, PCLogController.h, PCAppController.h, PCAppController.m, PCFindController.h, PCFindController.m, PCMenuController.h, PCMenuController.m, PCPrefController.m, PCPrefController.h PCLib/PCBundleLoader.m, PCLib/PCDataSource.h, PCLib/PCDataSource.m * Extracting UI creation into category: PCPrefController+UInterface.h, PCPrefController+UInterface.m, PCPrefController.m, PCPrefController.h, PCLib/PCProjectDebugger+UInterface.h, PCLib/PCProjectDebugger.h, PCLib/PCProjectDebugger+UInterface.m, PCLib/PCProjectDebugger.m * Disabling unused menu entries using defines: ProjectCenter_main.m * Added missing files to project: PCLib/PCButton.h, PCLib/PCButton.m * Updated version for PCLib: PCLib/Version * Changed menu title to ProjectCenter: ProjectCenter_main.m * Adjusting UI elements and cleaned up code: PCRenaissanceProject.m 2003-08-01 Philippe C.D. Robert * Removed -Werror: GNUMakefile.preamble, GNUMakefile.bundles * Added -methodSignatureForSelector: PCAppController.[hm] * Code cleanup: PCLib/PCFileManager.m, PCLib/PCProjectManager.m 2003-07-10 Philippe C.D. Robert * Updated the ANNOUNCE text * Added missing includes: PCLib/PCDataSource.m, PCLib/PCButton.m * Added note in README about using ProjectCenter with Cocoa * Disabled unused menu entries: ProjectCenter_main.m * Some spelling corrections: PCMenuController.m 2003-07-05 Philippe C.D. Robert * Uppercase key for interface category lookup: PCFileManager.m * Adjusting UI elements: PCGormProject.m * Adding proper header: PCLib/PCButton.h, PCLib/PCButton.m * Code cleanup and corrected contact address: PCInfoController.m, PCInfoController.h, PCLogController.m, PCLogController.h, PCAppController.h, PCAppController.m, PCFindController.h, PCFindController.m, PCMenuController.h, PCMenuController.m, PCPrefController.m, PCPrefController.h PCLib/PCBundleLoader.m, PCLib/PCDataSource.h, PCLib/PCDataSource.m * Extracting UI creation into category: PCPrefController+UInterface.h, PCPrefController+UInterface.m, PCPrefController.m, PCPrefController.h, PCLib/PCProjectDebugger+UInterface.h, PCLib/PCProjectDebugger.h, PCLib/PCProjectDebugger+UInterface.m, PCLib/PCProjectDebugger.m * Disabling unused menu entries using defines: ProjectCenter_main.m * Added missing files to project: PCLib/PCButton.h, PCLib/PCButton.m * Updated version for PCLib: PCLib/Version * Changed menu title to ProjectCenter: ProjectCenter_main.m * Adjusting UI elements and cleaned up code: PCRenaissanceProject.m 2003-07-04 Philippe C.D. Robert * Updated TODO, ANNOUNCE, README and INSTALL files * PCProject+ComponentHandling.[hm]: Cleanup and fix * PCProjectBuilder: Button state fix 2003-07-04 Serg Stoyan * PCAppController.m: Change REL_LIB_PC and ABS_LIB_PC to ApplicationSupport dir. * PCInfoController.m: (init): Load Info-gnustep.plist instead of Info-project.plist. (showInfoWindow:): Set title of info window to "Info". * PCPrefController.m: (_initUI): Move releasing of controls here from -dealloc. (popupChnaged:): Don't retain views. * PCAppProj/PCAppProject.m: (updateValuesFromProjectDict): Change size of appicon frame to 48x48. Check PCAppIcon field value is not equal to @"". * PCLib/PCButton.m (PCButton dealloc): Release tooltip window. (PCButtonCell dealloc): Added. * PCLib/PCProject+UInterface.m: (_initUI): Cleanup. fileIcon now NSImageView. (setFileIcon:): Check for source of notification. Cleanup. 2003-07-02 Serg Stoyan * PCAppProj/PCAppProj.m: * PCBundleProj/PCBundleProj.m: * PCGormProj/PCGormProj.m: * PCLibProj/PCLibProj.m: * PCRenaissanceProj/PCRenaissanceProj.m: * PCToolProj/PCToolProj.m: Set project type field to class description both in GNUstep and non-GNUstep environment. Fixes bug #3393. * PCAppProj/PCAppProject.m: (_initUI): Rearrangements of controls. Release control after adding to superview. * PCLib/PCFileManager.m: (showAddFileWindow): Handling of image, docs, models and non project files added. Now images go into Images subdir, docs into Documentation, .gorm files into $LANGUAGE.lproj subdir. * PCLib/PCProject+UInterface.m: (_initUI): Files' history list enabled back. Adjust size of history list. Added some fileds, controls rearranged in Project Inspector. Release of box added after adding to split. * PCLib/PCProject.h: Added definition of new Inspector fields. * PCLib/PCProject.m: (updateValuesFromProjectDict): Set project's language. (dealloc): Extra releases removed. * PCLib/PCProjectBuilder.m: Stability improved via cleanup in build task handling. (topButtonPressed:): Removed. * PCLib/PCProjectManager+UInterface.m: ProjectInspector content view resized. Changed title from "Inspector" to "Project Inspector". * PCMenuController.m: (validateMenuItem:): Return by default YES if no project loaded. * PCAppProj/PCAppProject.m: (dealloc): Release of appClassField and appImageField removed. 2003-06-20 Serg Stoyan * Images/ButtonTile.tiff: Added. * GNUmakefile: Add Images/ButtonTile.tiff. * ProjectCenterInfo.plist: Fixed order of authors. * PCLib/GNUmakefile: Added PCButton.[hm]. * PCLib/PCButton.[hm]: Added and implemented. * PCLib/PCBrowserController.h: PCBrowserDidSetPathNotification delcaration added. * PCLib/PCBrowserController.m: (click:): Post PCBrowserDidSetPathNotification. (doubleClick:): Idem. Return result instead of path. * PCLib/PCProject+UInterface.m: Switch toolbar from matrix to number of PCButtons. Added icon in top left corner that represents object selected in browser. (setFileIcon:): Added. Sets icon image according to the object selected in browser. * PCLib/PCProject.m: (setProjectName:): Set label of icon to project name on loading. * PCLib/PCProject.[mh]: Switch to using PCButtons. (buildDidTerminate:): Check if notification object is build task added. * PCLib/PCProjectDebugger.[h]: Switch to using PCButtons. 2003-05-30 Serg Stoyan * PCLib/PCEditor.[hm]: Added becomeFirstResponder. * PCLib/PCEditorController.[hm]: Rename setBrowser: to setBrowserPath:category:. * PCLib/PCEditorController.m: (activeEditor): Don't count on [project isEditorActive]. * PCLib/PCEditorView.m: (becomeFirstResponder): Call editor's becomeFirstResponder. 2003-05-29 Serg Stoyan * PCMenuController.m: (projectRemoveFiles:): Call removeFilesPermanently. (fileSaveAs:): Implemented. * PCAppProj/PCAppProject.m: (init): Initialize rootObjects and rootKeys arrays. Initialize rootCategories dictionary with these arrays to preserve order of categories in browser. "Non Project Files" category added. (dealloc): Release rootObjects and rootKeys arrays. (otherKeys): Added PCNonProject. * PCBundleProj/PCBundleProject.m: Ditto. * PCGormProj/PCGormProject.m: Ditto. * PCLibProj/PCLibProject.m: Ditto. * PCRenaissanceProj/PCRenaissanceProject.m: Ditto. * PCToolProj/PCToolProject.m: Ditto. * PCLib/PCBrowserController.[hm]: Rename method setPathForFile: to setPathForFile:category:. * PCLib/PCBrowserController.m: (isEditableCategory:file:): PCOtherSources, PCOtherResources and PCNonProject to editable categories. (projectDictDidChange:): Set path to category if there is no file editing. * PCLib/PCEditor.[hm]: Added _category ivar. Every editor now holds category of the file being edited. Added methods category and setCategory:. Removed saveFileAs: method. * PCLib/PCEditorController.[hm]: Added and implemented method closeEditorForFile:. * PCLib/PCEditorController.m: (editorDidClose:): Call [PCBrowserController projectDictDidChange:] instead of [self setBrowserPath:]. * PCLib/PCProject.h: Added PCNonProject contant. Added rootObjects, rootKeys ivars. Removed categoryForFile: method. Renamed removeSelectedFilePermanently: to removeSelectedFilesPermanently:. * PCLib/PCProject.m: (fileExtensionsForCategory:): Removed .m and .M extenstions from PCOtherSources category. (browserDidClickFile:category:): Setting category to editor added. (removeFile:forKey:): Close editor when file removed. (contentAtKeyPath:): Return rootKeys instead of all keys of rootCategories dictionary. (removeFilesPermanently:): Call removeSelectedFilesPermanently: (after renaming). 2003-05-23 Serg Stoyan * PCMenuController.h: Added fileOpenQuickly:, fileNewUntitled: methods. * PCMenuController.m: (projectSaveFiles:): Call [projectManager saveAllFiles]. (openFile:): Check existance of opening file and call [PCEditorController openFileInEditor:] here. (fileSaveTo:): Implemented. (fileRevertToSaved:): Call [projectManager revertFileToSaved]. (fileOpenQuickly:): Added with alert panel. (fileNewUntitled:): Ditto. (validateMenuItem:): "File" menu items enabled for external editor window. * ProjectCenter_main.m: (createMenu): Added actions to "Open Quickly..." and "New Untitled" menu items. * PCLib/PCBrowserController.[hm]: setPathForFile: method added. Removed browser:willDisplayCell:atRow:column: and browser:selectCellWithString:inColumn: methods. * PCLib/PCBrowserController.m: (click:): Don't load file into editor if multiple files selected. * PCLib/PCEditor+UInterface.m: (_initUI): Set delegate for window to self. Removed bezel border. Set text container added. Cleanup. * PCLib/PCEditor.[hm]: Added methods internalView, externalView, setPath:, isEdited, saveFileAs:, saveFileTo:, revertFileToSaved, closeFile:, editorShouldClose, windowShouldClose: * PCLib/PCEditor.m: (setDelegate:): Set delegate for internal and external text views. (revertFileToSaved): Set attributes to saved text before loading into text view. * PCLib/PCEditorController.[hm]: Added methods saveFileAs:, saveFileTo:, closeFile:, revertFileToSaved, setBrowserPath:. * PCLib/PCEditorController.m: (openFileInEditor:): Set delegate to editor. (closeAllEditors): Call PCEditor closeFile instead of editor's window performClose. (editorDidClose): After closing editor, show next in list. Set to / if no editors left. * PCLib/PCEditorView.m: becomeFirstResponder method added. * PCLib/PCProject.[hm]: categoryForFile:, projectEditor, editorController methodd added. saveFile, saveAllFiles, saveAllFilesIfNeeded, revertFile methods removed. * PCLib/PCProjectDebugger.h: textAttributes ivar added. logString:error: and logString:error:newLine: methods removed. logString:newLine: added. * PCLib/PCProjectDebugger.m: Cleanup. Error view removed. * PCLib/PCProjectEditor.m: Removed horizonal scroller. * PCLib/PCProjectManager.[hm]: saveAllFiles, saveFileAs:, saveFileTo:, revertFileToSaved, closeFile, activeProject, projectPath, selectedFileName methods added. 2003-05-16 Serg Stoyan * GNUmakefile: Remove PCAppController+MenuHandling.h and PCAppController+MenuHandling.m. * GNUmakefile.bundles: Add -Wall -Werror options to ADDITIONAL_CFLAGS, ADDITIONAL_CPPFLAGS and ADDITIONAL_OBJCFLAGS. * GNUmakefile.preamble: Ditto. * PCAppController.h: infoController and menuController definitions added. * PCAppController.m: respondsToSelector:, forwardInvocation:, infoController, menuController methods added. * PCMenuController.h: Rename all action methods in form like openFile into fileOpen to avoid name conflict with PCLib/ objects's methods. * ProjectCenter_main.m: Ditto. Remove unused format_font ivar. * PCMenuController.m: Ditto. (projectSaveAs:): Added alert panel. (projectRemoveFiles:): Ability to remove multiple files added. (fileSaveAs:): Added alert panel. (fileSaveTo:): Ditto. (fileClose:): Ditto. (validateMenuItem:): Fixes related to "File" menu items. * PCPrefController.m: (_initUI): Increase prefEmptyView height by 2 pixels. * PCLib/PCBrowserController.h: selectedFiles method added. * PCLib/PCBrowserController.m: (selectedFiles): Added. Returns array of selected filenames. * PCLib/PCBundleLoader.m: (loadBundlesAtPath:): Added parentheses around assignment used as truth value to avoid warning. * PCLib/PCDataSource.m: (init): Ditto. * PCLib/PCEditorController.h: Added activeEditor method. * PCLib/PCEditorController.m: (activeEditor): Implemented. Returns current editor displayed in project window. (internalEditorForFile:): Added parentheses around assignment used as truth value to avoid warning. (saveFile): Use activeEditor. (revertFile): Ditto. * PCLib/PCFileManager.m: (showAddFileWindow): Initialize ivars to avoid warning. Added parentheses around assignment used as truth value to avoid warning. * PCLib/PCProject.m: (removeSelectedFilePermanently:): Initialize ivars to avoid warning. Added ability to remove multiple files. * PCLib/PCProjectBuilder.m: (_createComponentView): Remove unused box and separateView ivars. * PCLib/PCProjectDebugger.m (_createComponentView): Remove unused split, scrollView1 and box ivars. (run:): Initialize tn ivar. * PCLib/ProjectDelegate.h: Added. Declare ProjectDelegate protocol. * PCLib/PCProjectManager.h: Added ProjectDelegate protocol. delegate conforms to ProjectDelegate protocol. * PCLib/PCProjectManager.m (saveProjectAs:): Removed alert panel. 2003-05-11 Philippe C.D. Robert * PCFileManager.m: Directories can be chosen in case of interfaces. 2003-05-08 Serg Stoyan * PCMenuController.m: (validateMenuItem:): Update to the current set of menu items. * ProjectCenter_main.m: (createMenu): Set saveFiles: action to "Save Files..." menu item. * ProjectCenterInfo.plist: Update authors' e-mails. * PCBaseFileTypes/PCBaseFileType.m: (createFileOfType:type:project): Initializing newFile ivar before creating file. Cleanup. * PCLib/PCFileManager+UInterface.m: (_initUI): Set spacing between buttons to 8. * PCLib/PCFileManager.m: (showAddFileWindow): Reformatting. * PCLib/PCProject.m: (save): Removed calling to [self saveAllFiles]. * PCLib/PCProjectManager.m: (saveProject): Removed saving all files. (saveFiles): Call [activeProject saveAllFiles] added. * PCLib/PCBrowserController.m: (setBrowser:): Change setAllowsMultipleSelection to YES. * PCLib/PCProject+UInterface.m: (_initUI): Removed setting browser characteristics code. 2003-05-07 Serg Stoyan * ProjectCenter: Files moved to root directory. * ProjectCenterInfo.plist: List of authors updated. * GNUmakefile: Don't create ProjectCenter link to . dir. * GNUmakefile.postamble: Add removing headers after uninstall. * GNUmakefile.bundles: Added. This file is included by bundle's GNUmakefile. * Removed all unused GNUmakefile.preamble, GNUmakefile.postamble, .pcproj and plist files. * Add include ../GNUmakefile.bundles to all bundles' GNUmakefiles. 2003-05-06 Serg Stoyan * PCAppProj/Templates: Created. AppController.h, AppController.m, PC.proj, main.m moved here. Added GNUmakefile.preamble and GNUmakefile.postamble files. * PCAppProj/Templates/PC.proj: Changed MAKEFILEDIR to $(GNUSTEP_MAKEFILES). * PCAppProj/GNUmakefile: Changed resources' locations to new. * PCAppProj/Info-project.plist: Removed. 2003-05-05 Serg Stoyan * GNUmakefile: Place ProjectCenter subproject after PCLib. * pcproj_bundle.make: Added. * PCAppProj/GNUmakefile: Added include pcproj_bundle.make. * PCBaseFileTypes/GNUmakefile: Ditto. * PCBundleProj/GNUmakefile: Ditto. * PCGormProj/GNUmakefile: Ditto. * PCLibProj/GNUmakefile: Ditto. * PCRenaissanceProj/GNUmakefile: Ditto. * PCToolProj/GNUmakefile: Ditto. * PCLib/PCBundleLoader.h: (loadBundlesAtPath:): Added. * PCLib/PCBundleLoader.m: (loadBundles): First load bundles from main bundle's resource directory, then load third party bundles from directory Library/ApplicationSupport/ProjectCenter. (loadBundlesAtPath:): Added. Loads bundles from specified directory. 2003-05-02 Serg Stoyan * PCLib/PCProjectBuilder.h: * PCLib/PCProjectBuilder.m: Rename buildPanelCreate: to createBuildPanel. Add buildPanel method. (_createBuildPanel): Add setHidesOnDeactivate: NO. * PCLib/PCProjectDebugger.h: * PCLib/PCProjectDebugger.m: Rename launchPanelCreate: to createLaunchPanel. Add launchPanel method. (_createLaunchPanel): Add setHidesOnDeactivate:NO and setReleasedWhenClosed:NO. * PCLib/PCProject+ComponentHandling.m: (showBuildView): Fix methods calling according to the above changes. (showRunView): Ditto. * PCLib/PCProject.m: (windowWillClose:): Close build and debugger panels if any. 2003-05-01 Serg Stoyan * PCLib/PCProjectBuilder.h: * PCLib/PCProjectBuilder.m: Building was made a separate task. * PCLib/PCProjectManager.m: (createProjectOfType:): Add pcproj filename before adding to loadedProjects array. * ProjectCenter/Images/Stop.tiff: Added. * ProjectCenter/GNUmakefile: Added Stop.tiff to resources. * ProjectCenter/PCPrefController.m: (showPrefWindow:): Set successField and failureField values from defaults. 2003-04-28 Adam Fedor * PCLib/PCMakefileFactory.m (-appendOtherSources): Changed from appendCFiles. (-appendHeaders:forTarget:, -appendClasses:forTarget:, -appendOtherSources:forTarget): New. (-appendHeaders:, -appendClasses:, -appendOtherSources:, -appendLibraryHeaders:, appendLibraryClasses:, appendLibraryOtherSources:): Use them. * PCLib/PCProject.m (-fileExtensionsForCategory): Add .m to PCOtherSources. * PCAppProj/PCAppProject.m (-writeMakefile): Use appendOtherSources: * PCBundleProj/PCBundleProject.m, PCGormProj/PCGormProject.m, PCLibProj/PCLibProject.m, PCRenaissanceProj/PCRenaissanceProject.m, PCToolProj/PCToolProject.m: Idem. 2003-04-27 Adam Fedor * PCAppProj/PCAppProj.pcproj, PCBaseFileTypes/PCBaseFileTypes.pcproj, PCBundleProj/PCBundleProj.pcproj, PCGormProj/PCGormProj.pcproj, PCLib/ProjectCenter.pcproj, PCLibProj/PCLibProj.pcproj, PCRenaissanceProj/PCRenaissanceProj.pcproj, PCToolProj/PCToolProj.pcproj, ProjectCenter/ProjectCenter.pcproj: Change $(GNUSTEP_SYSTEM_ROOT)/Makefiles to $(GNUSTEP_MAKEFILES) 2003-04-23 Serg Stoyan * PCLib/PCDefines.h: SeparateBuilder, SeparateLauncher, SeparateEditor defines were added. * PCLib/PCProject+ComponentHandling.m: Added ability to display ProjectBuilder as separate panel or as view inside main project window. * PCLib/PCProject+UInterface.m: Ditto. * PCLib/PCProjectBuilder.m: Ditto. * PCLib/PCProjectBuilder.h: Ditto. * PCLib/PCProject.m: (windowWillClose:): Removed calling showBuildView: hack. * PCLib/PCProjectManager.m: (loadProjectAt:): Removed centering project window. * ProjectCenter/PCPrefController.h: separateBuilder separateLauncher, id separateEditor defines added. * ProjectCenter/PCPrefController.m: Added new section "Interface". Moved "Use external Editor" and "Prompt when quitting" from "Miscellaneous" section into "Interface" section. Cleanup. * ChangLogs in all subprojects moved to ChangeLog.old files. All changes should go into this ChangeLog only. * PCAppProj/PCAppProject.m: Added PCProject+UInterface.h include. * PCBundleProj/PCBundleProject.m: Ditto. * PCGormProj/PCGormProject.m: Ditto. * PCLibProj/PCLibProject.m: Ditto. * PCRenaissanceProj/PCRenaissanceProject.m: Ditto. * PCToolProj/PCToolProject.m: Ditto. 2003-01-25 Daniel Luederwald * GNUmakefile (SUBPROJECTS): New project PCRenaissanceProj 2002-10-06 15:45 probert * AUTHORS, PCLib/PCEditor.h, PCLib/PCEditor.m, PCLib/PCEditorView.m, PCLib/PCProjectEditor.h, PCLib/PCProjectEditor.m, ProjectCenter/ProjectCenterInfo.plist, ProjectCenter/ProjectCenter_main.m: Updated the AUTHORS file and applied David Ayers' patch. 2002-08-10 16:24 probert * AUTHORS: Added the AUTHORS file 2002-08-10 14:10 probert * PCLib/PCEditor.m: Applied patch sent in by O. Kornilov to avoid exception when clicking on file name in browser 2002-08-10 13:41 probert * PCLib/PCEditorView+Highlighting.m: Removed call to super's initialize 2002-06-01 16:00 probert * INSTALL, PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCGormProj/ChangeLog, PCLib/ChangeLog, PCLibProj/ChangeLog, PCToolProj/ChangeLog, ProjectCenter/ChangeLog: Updated ChangeLogs 2002-06-01 15:56 probert * PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/PCBaseFileTypes.pcproj, PCBundleProj/GNUmakefile, PCBundleProj/PCBundleProj.pcproj, PCGormProj/GNUmakefile, PCGormProj/PCGormProj.pcproj, PCLibProj/GNUmakefile, PCLibProj/PCLibProj.pcproj, PCToolProj/GNUmakefile, PCToolProj/PCToolProj.pcproj: Installation into GNUSPTE_INSTALLATION_DIR 2002-06-01 15:55 probert * PCLib/PCMakefileFactory.m: Code cleanup 2002-06-01 15:54 probert * ProjectCenter/: GNUmakefile, ProjectCenter.pcproj, ProjectCenterInfo.plist: New version 0.3.0 2002-06-01 15:53 probert * PCAppProj/: GNUmakefile, PCAppProj.pcproj, PCAppProject.m: Fixed a bug in the app makefile creation 2002-06-01 15:46 probert * PCLib/: GNUmakefile, PCBundleLoader.m, PCMakefileFactory.m, ProjectCenter.pcproj: Fixed a bug in the lib makefile creation part. 2002-06-01 15:07 probert * PCBundleProj/: PC.proj, PCBundleProject.m: The default installation path prefix for bundles is now set to $GNUSTEP_INSTALLATION_DIR 2002-04-26 05:12 fedor * PCAppProj/ChangeLog, PCAppProj/PCAppProject.m, PCBundleProj/ChangeLog, PCBundleProj/PCBundleProject.m, PCGormProj/ChangeLog, PCGormProj/PCGormProject.m, PCLib/ChangeLog, PCLib/GNUmakefile, PCLib/PCBrowserController.m, PCLib/PCHistoryController.m, PCLib/PCProject.m, PCLib/PCProjectManager.m, PCLibProj/ChangeLog, PCLibProj/PCLibProject.m, PCToolProj/ChangeLog, PCToolProj/PCToolProject.m: removed bunches of duplicate calls, retains and releases. 2002-04-25 23:12 fedor * PCLib/: ChangeLog, PCBrowserController.m, PCHistoryController.m: Retain browser 2002-03-25 20:37 probert * NEWS, PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCGormProj/ChangeLog, PCLib/ChangeLog, PCLib/Version, PCLibProj/ChangeLog, PCToolProj/ChangeLog, ProjectCenter/ChangeLog, ProjectCenter/ProjectCenterInfo.plist: ChangeLog updates 2002-03-04 11:19 CaS * ChangeLog, ProjectCenter/PCMenuController.m: Tidy save panel a bit. 2002-03-03 16:31 probert * PCLibProj/PCLibProject.m: Forgot to include the Version file - fixed. 2002-03-03 14:47 probert * PCLib/: PCHistoryController.m, PCProject.m: Fixed mem leak in the history controller. 2002-03-03 14:45 probert * ProjectCenter/ProjectCenter_main.m: Removed conflicting keybindings ( font and find panel ) 2002-03-02 14:58 probert * ProjectCenter/ProjectCenter_main.m: The font menu is back ( needed by the file editors ) 2002-03-02 14:58 probert * PCLib/: PCEditor.m, PCEditorView.m: Editors should now use the font panel. 2002-03-02 14:15 probert * PCLib/: PCEditor.h, PCEditor.m, PCEditorController.m: Using saveFileIfNeeded instead of saveFile. 2002-03-02 14:11 probert * PCLib/: PCEditorController.h, PCEditorController.m, PCProject.m, PCProjectManager.m: The timed safe mechanism now also saves all project files, if needed. 2002-03-01 16:32 probert * PCToolProj/: GNUmakefile, PCToolMakefileFactory.h, PCToolMakefileFactory.m, PCToolProj.pcproj, PCToolProject.m: This project now uses the makefile factory too. 2002-03-01 16:19 probert * PCLib/: PCMakefileFactory.h, PCMakefileFactory.m: Added support for tool projects. 2002-03-01 16:06 probert * PCLibProj/: GNUmakefile, PCLibMakefileFactory.h, PCLibMakefileFactory.m, PCLibProj.pcproj, PCLibProject.m: This project now uses the makefile factory too. 2002-03-01 15:58 probert * PCLib/: PCMakefileFactory.h, PCMakefileFactory.m: Support for libraries added. 2002-03-01 15:38 probert * PCGormProj/: GNUmakefile, PCGormMakefileFactory.h, PCGormMakefileFactory.m, PCGormProj.pcproj, PCGormProject.m: This project now uses the makefile factory too. 2002-03-01 15:22 probert * PCBundleProj/PCBundleProj.m: Fix to avoid warning 2002-03-01 15:18 probert * PCLib/: PCMakefileFactory.h, PCMakefileFactory.m: Support for bundles 2002-03-01 15:18 probert * PCBundleProj/: GNUmakefile, PCBundleMakefileFactory.h, PCBundleMakefileFactory.m, PCBundleProj.pcproj, PCBundleProject.m: The project now uses the shared makefile factory too. 2002-03-01 14:30 probert * PCAppProj/PCAppProject.m: Removed old include statements. 2002-03-01 14:28 probert * PCAppProj/: GNUmakefile, PCAppMakefileFactory.h, PCAppMakefileFactory.m, PCAppProj.pcproj, PCAppProject.m: The project now uses the makefile factory to create makefiles. 2002-03-01 11:39 probert * PCLib/: GNUmakefile, PCMakefileFactory.h, PCMakefileFactory.m, ProjectCenter.h, ProjectCenter.pcproj: Began to clean up the makefile creation code. Introduced a shared factory for that purpose which implements basic stuff used by all projects. 2002-02-22 19:48 probert * PCLib/PCEditorController.m: Fixed a bug which caused PC to crash when an external GS editor was used, thx to Richard for pointing me to the right place! 2002-02-21 22:26 probert * PCLib/PCProjectManager.m: Removed annoying alert panel raised upon saving all projects 2002-02-21 22:17 probert * PCLib/: GNUmakefile, PCBrowserController.m, PCHistoryController.h, PCHistoryController.m, PCProject.h, PCProject.m, ProjectCenter.h, ProjectCenter.pcproj: First attempt of integrating a history browser for better file navigation. There are still bugs though... 2002-02-21 13:50 probert * PCLib/PCEditorController.m: When a GNUstep app is used as external editor, NSWorkspace is used to open the file using the repsective app. 2002-02-21 13:25 probert * ProjectCenter/PCAppController.m: Fixed a bug which prevented the app to load a project when being told via application:openfile: 2002-02-21 12:41 probert * ProjectCenter/PCMenuController.m: The path for creating new projects is now maintained by a separate defaults entry. 2002-02-21 12:29 probert * PCLib/PCProject.m: Removing a file causes the browser to be updated 2002-02-21 12:25 probert * PCLib/: PCBrowserController.m, PCProject.m: If the project changes the browser reloads the correct column. 2002-02-21 11:45 probert * PCLib/PCProject+ComponentHandling.h, PCLib/PCProject+ComponentHandling.m, PCLib/PCProject.h, PCLib/PCProject.m, ProjectCenter/PCAppController+MenuHandling.h, ProjectCenter/PCAppController+MenuHandling.m, ProjectCenter/PCMenuController.m, ProjectCenter/ProjectCenter_main.m: All project components are now accessible via menu entry. Furthermore it is also possible to launch the selected target via menu entry. 2002-02-21 11:15 probert * PCLib/: PCEditorController.h, PCEditorController.m, PCProject.m: Single click always invokes the internal editor now. 2002-02-21 11:05 probert * PCLib/: PCBrowserController.h, PCBrowserController.m, PCProject.h, PCProject.m: Cleaned up the code which is called upon seleting a file in the project browser. Now libraries etc. do not show up in the internal editor anymore. 2002-02-17 21:10 probert * PCBaseFileTypes/ChangeLog, PCGormProj/ChangeLog, PCLib/ChangeLog, ProjectCenter/ChangeLog: Updated the ChangeLog files 2002-02-17 21:03 probert * ProjectCenter/: PCPrefController.h, PCPrefController.m: Added a new preference panel related to code editing. For now there is only 1 option available, the tab behaviour. 2002-02-17 21:02 probert * PCLib/PCDefines.h: Added the TabBehaviour define required by the preferences 2002-02-17 18:40 probert * PCLib/: GNUmakefile, PCEditorView+Highlighting.h, PCEditorView+Highlighting.m, PCEditorView.h, PCEditorView.m, ProjectCenter.h, ProjectCenter.pcproj: Moved the (deprecated) highlighting code into PCEditorView+Highlighting and implemented tab (\t) capabilities. 2002-02-17 14:14 probert * PCLib/: PCEditor.m, PCEditorController.m, PCEditorView.m, PCProject.m, PCProjectEditor.m, PCProjectManager.m: Fixed 2 bugs which caused a severe crash. 2002-02-16 22:21 probert * PCGormProj/baseInterface.gorm: Enhanced the default menu entries by adding standard submenu. 2002-02-16 22:12 probert * PCGormProj/: baseInterface.classes, baseInterface.gorm: Updated the Gorm generated files using the latest Gorm CVS code. 2002-02-16 21:46 probert * PCLib/: PCBrowserController.m, PCFileManager.h, PCFileManager.m, PCProject+ComponentHandling.m, PCProjectEditor.m: Enhanced the 'new file window' by adding a description view. 2002-02-16 21:43 probert * PCBaseFileTypes/: GNUmakefile, PCBaseFileType.m, PCBaseFileTypes.pcproj, nsviewclass.template, nsviewheader.template: Added support for a NSView subclass template. Also added a description to every file template. 2002-02-12 22:44 probert * PCLib/PCProject.m: Fixed the bug that when clicking on a source file for the first time, the editor did not display the file's content. 2002-02-12 21:14 probert * ProjectCenter/ProjectCenterInfo.plist: Updated copyright message... 2002-02-12 21:05 probert * PCLib/: PCProjectBuilder.m, PCProjectDebugger.h, PCProjectDebugger.m: Added a launch target popup which lets the user choose between the default or the debug target. 2002-02-11 23:19 probert * PCLib/GNUmakefile, PCLib/PCEditor.h, PCLib/PCEditor.m, PCLib/PCEditorController.m, PCLib/PCEditorView.h, PCLib/PCEditorView.m, PCLib/PCFileManager.m, PCLib/PCProject+ComponentHandling.h, PCLib/PCProject+ComponentHandling.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, PCLib/PCProjectDebugger.h, PCLib/PCProjectEditor.h, PCLib/PCProjectEditor.m, PCLib/ProjectCenter.h, PCLib/ProjectCenter.pcproj, PCLib/ProjectComponent.h, ProjectCenter/PCAppController+MenuHandling.m: Began to work on support for an integrated editor, thus much has been rewritten related to editor handling. This is work in progress... Every PCProject component now has to conform to the ProjectComponent protocol. Syntax highlighting is disabled for now, this will undergo a major rewrite soon. Furthermore I separated the component handling stuff from the main class file and put it into PCProject+ComponentHandling. 2002-02-03 20:31 probert * PCLib/: PCEditor.h, PCEditor.m, PCProject.m, PCTextFinder.m: Optimised text edition reflection. Embedded editing will need more changes in that respect, I fear... 2002-02-03 17:31 probert * ProjectCenter/: PCAppController+MenuHandling.h, PCAppController+MenuHandling.m, PCAppController.m, PCMenuController.m, ProjectCenter_main.m: Integrated the text finder into the menu structure and cleaned up some parts of the code related to menus. 2002-02-03 17:30 probert * PCLib/: GNUmakefile, PCEditor.m, PCTextFinder.h, PCTextFinder.m, ProjectCenter.h, ProjectCenter.pcproj: Added a text finder to ProjectCenter (based on Ali Ozer's code). 2002-02-02 22:15 probert * ProjectCenter/: PCAppController+MenuHandling.h, PCAppController+MenuHandling.m, PCMenuController.h, PCMenuController.m, ProjectCenter_main.m: Menus are now enabled/disabled whenever they should... 2002-02-02 22:13 probert * PCLib/PCDefines.h: Defines belong into PCDefines.h now 2002-02-02 22:12 probert * PCLib/: GNUmakefile, PCBrowserController.h, PCBundleLoader.h, PCEditor.h, PCEditor.m, PCEditorView.m, PCFileManager.h, PCProject.h, PCProjectBuilder.h, PCProjectManager.h, PCProjectManager.m, PCServer.h, PreferenceController.h, ProjectBuilder.h, ProjectCenter.h, ProjectCenter.pcproj, ProjectDebugger.h, ProjectEditor.h, Server.h: Cleaned up the header files ( added ifndef/define statements ), splitted the ProjectCenter.h header and some other cleanups. Editor now send notifications whenever they become or resign key. 2002-02-02 20:21 probert * PCLib/PCBrowserController.m, PCLib/PCEditor.h, PCLib/PCEditor.m, PCLib/PCEditorController.h, PCLib/PCEditorController.m, PCLib/PCEditorView.h, PCLib/PCEditorView.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectManager.m, ProjectCenter/PCAppController.m: Kind of implemented saving and reverting of common files. A long way to go, but for now it works... 2002-02-02 18:56 probert * PCLib/: GNUmakefile, PCBrowserController.h, PCBrowserController.m, PCBundleLoader.h, PCBundleLoader.m, PCEditor.h, PCEditor.m, PCEditorController.h, PCEditorController.m, PCEditorView.h, PCEditorView.m, PCProject.h, PCProject.m, PCProjectManager.m, PCServer.h, PCServer.m, ProjectCenter.pcproj: Rewriting the entire editor code. Hence introduced a PCEditorController and cleaned up the PCServer class. Every project now has a controller which controls all editors. Editors itself use an editor view to display the files or external editors. 2002-01-29 22:46 probert * PCLib/: PCEditor.h, PCEditor.m, PCProjectManager.m: Fixed a bug preventing reopening projects. Also added 2 methods which will be used to make an editor embedded. 2002-01-29 22:29 probert * PCLib/: GNUmakefile, PCEditor.h, PCEditor.m, PCServer.h, PCServer.m, ProjectCenter.pcproj: Cleaning up the internal editor code. More to come... 2002-01-27 14:55 probert * PCLib/: GNUmakefile, PCProject.m, PCProjectDebugger.m, PCSplitView.h, PCSplitView.m, ProjectCenter.pcproj: Using a customised split view instead of a NSSplitView - more to come... 2002-01-27 14:37 probert * PCLib/PCProject.m: Minor UI enhancement: main button alignement adjusted. 2002-01-27 14:32 probert * PCLib/: PCProject.m, PCProjectBuilder.h, PCProjectBuilder.m, PCProjectDebugger.m: Removed unneeded buttons, added a title to the remaining ones and introduced a splitview between the project browser and component view. In the build view a popup button is now used for build targets. 2002-01-20 12:02 probert * GNUmakefile: Cleanup of the toplevel makefile 2002-01-19 12:54 nico * ChangeLog, GNUmakefile: Minor change to make it compile again 2002-01-07 16:36 probert * PCGormProj/PC.proj, PCAppProj/PC.proj: Somehow $(GNUSTEP_LOCAL_ROOT) is enough for the install path to be correct. 2002-01-07 16:05 probert * PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCGormProj/ChangeLog, PCLib/ChangeLog, PCLibProj/ChangeLog, PCToolProj/ChangeLog, ProjectCenter/ChangeLog: Updated all ChangeLog files (using cvs2cl.pl) 2002-01-07 16:01 probert * PCAppProj/GNUmakefile, PCAppProj/PCAppProj.pcproj, PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/PCBaseFileTypes.pcproj, PCBundleProj/GNUmakefile, PCBundleProj/PCBundleProj.pcproj, PCGormProj/GNUmakefile, PCGormProj/GNUmakefile.preamble, PCGormProj/PCGormProj.pcproj, PCLibProj/GNUmakefile, PCLibProj/PCLibProj.pcproj, PCToolProj/GNUmakefile, PCToolProj/PCToolProj.pcproj: Added libProjectCenter to the bundle's library link settings. 2002-01-07 11:00 probert * Version, PCLib/GNUmakefile, PCLib/PCBrowserController.m, PCLib/PCEditorView.m, PCLib/PCFileManager.m, PCLib/ProjectCenter.pcproj, PCLib/Version: PCLib is now maintained by ProjectCenter as well! 2002-01-07 10:37 probert * PCAppProj/PC.project, PCAppProj/PCAppProj.m, PCAppProj/PCAppProj.pcproj, PCBaseFileTypes/PC.project, PCBaseFileTypes/PCBaseFileTypes.pcproj, PCBundleProj/PC.project, PCBundleProj/PCBundleProj.m, PCBundleProj/PCBundleProj.pcproj, PCGormProj/PC.project, PCGormProj/PCGormProj.m, PCGormProj/PCGormProj.pcproj, PCLib/PCProject.m, PCLib/PCProjectManager.m, PCLibProj/PC.project, PCLibProj/PCLibProj.m, PCLibProj/PCLibProj.pcproj, PCToolProj/PC.project, PCToolProj/PCToolProj.m, PCToolProj/PCToolProj.pcproj, ProjectCenter/PC.project, ProjectCenter/PCMenuController.m, ProjectCenter/ProjectCenter.pcproj, ProjectCenter/ProjectCenterInfo.plist: ProjectCenter now stores the project files under PROJECTNAME.pcproj to avoid name clashes. 2002-01-07 05:40 fedor * PCGormProj/: ChangeLog, GNUmakefile.preamble: Include -lProjectCenter correctly 2002-01-02 18:51 probert * PCAppProj/PC.proj, PCAppProj/PC.project, PCBaseFileTypes/PC.project, PCBundleProj/PC.proj, PCBundleProj/PC.project, PCGormProj/PC.proj, PCGormProj/PC.project, PCLibProj/PC.proj, PCLibProj/PC.project, PCToolProj/PC.proj, PCToolProj/PC.project, ProjectCenter/PC.project: Changed the build tool entry to /usr/bin/make in all project files and templates. 2002-01-02 18:43 probert * PCLib/: PCProject.m, PCProjectBuilder.m: The build tool can now be customised. Make sure to enter a valid path in the inspector field! 2002-01-02 18:33 probert * PCLib/GNUmakefile: The library now gets installed in the proper directory as well. 2002-01-02 17:37 probert * PCGormProj/ChangeLog: Added the ChangeLog for the Gorm App project 2002-01-02 17:33 probert * PCGormProj/PCGormMakefileFactory.m, PCLibProj/PCLibMakefileFactory.m, PCToolProj/PCToolMakefileFactory.m: Libraries, Gorm apps and tools use the install path now, too. 2002-01-02 17:05 probert * PCAppProj/GNUmakefile, PCAppProj/PC.proj, PCAppProj/PC.project, PCAppProj/PCAppMakefileFactory.m, PCAppProj/PCAppProject.m, PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/PC.project, PCBundleProj/GNUmakefile, PCBundleProj/PC.proj, PCBundleProj/PC.project, PCBundleProj/PCBundleMakefileFactory.m, PCBundleProj/PCBundleProject.m, PCGormProj/GNUmakefile, PCGormProj/PC.proj, PCGormProj/PC.project, PCGormProj/PCGormProject.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectBuilder.m, PCLib/PCProjectManager.m, PCLibProj/GNUmakefile, PCLibProj/LibProject.gmodel, PCLibProj/PC.proj, PCLibProj/PC.project, PCToolProj/GNUmakefile, PCToolProj/PC.proj, PCToolProj/PC.project, ProjectCenter/GNUmakefile, ProjectCenter/PC.project: The inspector now handles the installation path and other settings. Furthermore it does not save changes automatically but marks the project as being edited. Upon 'save' the project file and GNUmakefile are being saved, not before! In addition the various PC* bundles are now maintained by ProjectCenter itself. The installation path for ProjectCenter.app is corrected to the SYSTEM ROOT as well. 2002-01-02 13:13 probert * INSTALL, PCAppProj/AppController.h, PCAppProj/AppController.m, PCAppProj/GNUmakefile, PCAppProj/PC.proj, PCBaseFileTypes/GNUmakefile, PCBundleProj/GNUmakefile, PCBundleProj/PC.proj, PCGormProj/GNUmakefile, PCGormProj/PC.proj, PCLib/PCBundleLoader.m, PCLibProj/GNUmakefile, PCLibProj/PC.proj, PCToolProj/GNUmakefile, PCToolProj/PC.proj, ProjectCenter/PCAppController.m: All bundles and libProjectCenter are now installed under GNUSTEP_SYSTEM_ROOT. Also the PC.proj templates have now a correct install path default value. 2002-01-01 19:21 probert * PCLib/PCProjectBuilder.m: Added a new button for the build target 'dist' in the builder panel 2002-01-01 19:09 probert * ProjectCenter/: GNUmakefile, PC.project, ProjectCenter_dist.tiff, ProjectCenter_rpm.tiff: Added the icon for creating a tar.gz dist and updated the project files using the latest CVS code. 2002-01-01 18:27 probert * Version, PCAppProj/PC.proj, PCAppProj/PCAppProject.h, PCAppProj/PCAppProject.m, PCBundleProj/PC.proj, PCBundleProj/PCBundleProject.h, PCBundleProj/PCBundleProject.m, PCGormProj/PC.proj, PCGormProj/PCGormProject.h, PCGormProj/PCGormProject.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectBuilder.m, PCLib/PCProjectManager.m, PCLibProj/PC.proj, PCLibProj/PCLibProject.h, PCLibProj/PCLibProject.m, PCToolProj/PC.proj, PCToolProj/PCToolProject.h, PCToolProj/PCToolProject.m, ProjectCenter/ProjectCenterInfo.plist: ProjectCenter now validates project dictionaries and updates them if requested. I also added new keys tp the PC.project files in order to be able to generate valid *.spec.in files needed when building RPMs. 2001-12-29 16:56 probert * ANNOUNCE: Updated ANNOUNCE file 2001-12-29 16:44 probert * NEWS: Updated NEWS for 0.2.6 2001-12-29 16:37 probert * ChangeLog, Version, PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCLib/ChangeLog, PCLibProj/ChangeLog, PCToolProj/ChangeLog, ProjectCenter/ChangeLog, ProjectCenter/ProjectCenterInfo.plist: Removed the toplevel ChangeLog, updated the ChangeLogs in the subdirectories and raised the version number to 0.2.6. 2001-12-29 16:28 probert * ProjectCenter/PCPrefController.h, ProjectCenter/PCPrefController.m, PCLib/PCProjectManager.h, PCLib/PCProjectManager.m: Automatic, periodic saving of all open projectfiles is now supported. 2001-12-29 15:41 probert * PCLib/PCProject.m: Fixed some minor issues with file backup handling 2001-12-29 15:10 probert * ProjectCenter/: PCAppController+MenuHandling.h, PCAppController+MenuHandling.m, PCAppController.m, PCMenuController.h, PCMenuController.m, PCPrefController.h, PCPrefController.m, ProjectCenter_main.m: Implemented more preference handling and cleaned up some ugly parts of the code. Removed the loadedProjectsWindow feature, it just does not make any sense. 2001-12-29 15:09 probert * PCLib/: PCProject.m, PCProjectManager.h, PCProjectManager.m, ProjectCenter.h: Cleaned up the writeMakefile method and implemented the save stuff the way it should be. Some additions for proper preference handling have been made as well. 2001-12-29 15:07 probert * PCLibProj/PCLibProject.m: leaned up the writeMakefile method 2001-12-29 15:06 probert * PCAppProj/PCAppProj.m, PCAppProj/PCAppProject.m, PCBundleProj/PCBundleProject.m, PCGormProj/PCGormProject.m, PCToolProj/PCToolProject.m: Cleaned up the writeMakefile method 2001-12-28 15:11 probert * PCLib/PCProjectDebugger.m: Fixed a typo and altered matrix button behaviour 2001-12-28 15:11 probert * ProjectCenter/: GNUmakefile, PC.project: Added the missing rpm icon 2001-12-28 14:46 probert * PCBaseFileTypes/: cfile.template, cheader.template, class.template, header.template, protocol.template: Updated the header information for all created file types 2001-09-25 17:46 fedor * ChangeLog, PCGormProj/GNUmakefile.preamble: Include proper header dirs 2001-08-03 16:31 probert * INSTALL, ProjectCenter/ProjectCenterInfo.plist: Minor changes 2001-08-03 16:23 probert * Version, PCAppProj/AppController.h, PCAppProj/AppController.m, PCAppProj/PCAppMakefileFactory.h, PCAppProj/PCAppMakefileFactory.m, PCAppProj/PCAppProj.h, PCAppProj/PCAppProj.m, PCAppProj/PCAppProject.h, PCAppProj/PCAppProject.m, PCBaseFileTypes/PCBaseFileType.h, PCBaseFileTypes/PCBaseFileType.m, PCBundleProj/PCBundleMakefileFactory.h, PCBundleProj/PCBundleMakefileFactory.m, PCBundleProj/PCBundleProj.h, PCBundleProj/PCBundleProj.m, PCBundleProj/PCBundleProject.h, PCBundleProj/PCBundleProject.m, PCGormProj/PCGormMakefileFactory.h, PCGormProj/PCGormMakefileFactory.m, PCGormProj/PCGormProj.h, PCGormProj/PCGormProj.m, PCGormProj/PCGormProject.h, PCGormProj/PCGormProject.m, PCLib/FileCreator.h, PCLib/PCBrowserController.h, PCLib/PCBrowserController.m, PCLib/PCBundleLoader.h, PCLib/PCBundleLoader.m, PCLib/PCDataSource.h, PCLib/PCDataSource.m, PCLib/PCEditorView.h, PCLib/PCEditorView.m, PCLib/PCFileManager.h, PCLib/PCFileManager.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, PCLib/PCProjectDebugger.h, PCLib/PCProjectDebugger.m, PCLib/PCProjectManager.h, PCLib/PCProjectManager.m, PCLib/PCServer.h, PCLib/PCServer.m, PCLib/PreferenceController.h, PCLib/ProjectBuilder.h, PCLib/ProjectCenter.h, PCLib/ProjectDebugger.h, PCLib/ProjectEditor.h, PCLib/ProjectType.h, PCLib/Server.h, PCLibProj/PCLibMakefileFactory.h, PCLibProj/PCLibMakefileFactory.m, PCLibProj/PCLibProj.h, PCLibProj/PCLibProj.m, PCLibProj/PCLibProject.h, PCLibProj/PCLibProject.m, PCToolProj/PCToolMakefileFactory.h, PCToolProj/PCToolMakefileFactory.m, PCToolProj/PCToolProj.h, PCToolProj/PCToolProj.m, PCToolProj/PCToolProject.h, PCToolProj/PCToolProject.m, ProjectCenter/PCAppController+MenuHandling.h, ProjectCenter/PCAppController+MenuHandling.m, ProjectCenter/PCAppController.h, ProjectCenter/PCAppController.m, ProjectCenter/PCFindController.h, ProjectCenter/PCFindController.m, ProjectCenter/PCInfoController.h, ProjectCenter/PCInfoController.m, ProjectCenter/PCLogController.h, ProjectCenter/PCLogController.m, ProjectCenter/PCMenuController.h, ProjectCenter/PCMenuController.m, ProjectCenter/PCPrefController.h, ProjectCenter/PCPrefController.m, ProjectCenter/ProjectCenter_main.m: New version - now copyrighted by the FSF 2001-08-01 18:27 probert * PCLib/PCEditorView.m: Better highlighting of keywords 2001-08-01 18:27 probert * PCBaseFileTypes/: PCBaseFileType.m, cheader.template, header.template: Better templates for headers 2001-08-01 15:12 probert * PCBaseFileTypes/: PCBaseFileType.m, cheader.template, header.template: optimised include behaviour 2001-08-01 14:43 probert * ProjectCenter/: ChangeLog, ProjectCenterInfo.plist: Some updated information regarding the version 2001-08-01 14:43 probert * ChangeLog: Removed the toplevel ChangeLog file 2001-08-01 14:35 probert * GNUmakefile, GNUmakefile.postamble, GNUmakefile.preamble, INSTALL, NEWS, README, PCAppProj/GNUmakefile, PCAppProj/GNUmakefile.postamble, PCAppProj/GNUmakefile.preamble, PCAppProj/PCAppMakefileFactory.m, PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/GNUmakefile.preamble, PCBundleProj/GNUmakefile, PCBundleProj/GNUmakefile.postamble, PCBundleProj/GNUmakefile.preamble, PCBundleProj/PCBundleMakefileFactory.m, PCGormProj/GNUmakefile, PCGormProj/GNUmakefile.postamble, PCGormProj/GNUmakefile.preamble, PCGormProj/PCGormMakefileFactory.m, PCLib/GNUmakefile, PCLib/GNUmakefile.postamble, PCLib/GNUmakefile.preamble, PCLibProj/GNUmakefile, PCLibProj/GNUmakefile.postamble, PCLibProj/GNUmakefile.preamble, PCLibProj/PCLibMakefileFactory.m, PCLibProj/h.template, PCToolProj/GNUmakefile, PCToolProj/GNUmakefile.postamble, PCToolProj/GNUmakefile.preamble, PCToolProj/PCToolMakefileFactory.m, ProjectCenter/GNUmakefile, ProjectCenter/GNUmakefile.postamble, ProjectCenter/GNUmakefile.preamble: New copyright information and minor template additions 2001-07-15 13:41 probert * ChangeLog: Added ChangeLog file 2001-07-07 13:56 probert * ProjectCenter/: PCAppController.m, ProjectCenterInfo.plist: Default editor is now vi, new version number added 2001-07-07 13:56 probert * Version: New version 0.2.4 2001-07-07 13:48 probert * ProjectCenter/: GNUmakefile, ProjectCenter_main.m: Little GUI modifications 2001-07-07 13:48 probert * PCLib/: PCProjectDebugger.m, PCServer.m: Little GUI modifications, done by Pierre-Yves Rivaille 2001-07-07 13:48 probert * PCGormProj/: GNUmakefile, GNUmakefile.postamble, GNUmakefile.preamble, Info-project.plist, Info.table, PC.proj, PCGormMakefileFactory.h, PCGormMakefileFactory.m, PCGormProj.h, PCGormProj.m, PCGormProject.h, PCGormProject.m, baseInterface.classes, baseInterface.gorm, h.template, m.template, main.m: Added the GormApplication project, done by Pierre-Yves Rivaille 2001-07-07 13:47 probert * GNUmakefile: [no log message] 2001-07-01 21:02 probert * PCBaseFileTypes/GNUmakefile.preamble, PCLib/GNUmakefile.postamble: Added makefile 2001-07-01 21:01 probert * PCAppProj/GNUmakefile, PCAppProj/GNUmakefile.preamble, PCBaseFileTypes/GNUmakefile, PCBundleProj/GNUmakefile, PCBundleProj/GNUmakefile.preamble, PCLib/GNUmakefile, PCLib/GNUmakefile.preamble, PCLibProj/GNUmakefile, PCLibProj/GNUmakefile.preamble, PCToolProj/GNUmakefile, PCToolProj/GNUmakefile.preamble, ProjectCenter/GNUmakefile.preamble: Applied patch from Adam Fedor 2001-07-01 21:01 probert * ANNOUNCE: Minor update 2001-01-29 13:17 robert * PCLib/: PCEditorView.m, PCProjectBuilder.m, PCServer.m: new textview code required some changes 2001-01-26 09:45 robert * ProjectCenter/: GNUmakefile, Info-project.plist, PC.project, ProjectCenterInfo.plist: updated the PC.project file and renamed the plist file 2001-01-20 11:48 robert * PCAppProj/PCAppMakefileFactory.m: Fixed the ADDITIONAL_GUI_LIBS line - this time it should be 100% OK 2001-01-19 11:33 robert * PCAppProj/PCAppMakefileFactory.m: using LDFLAGS instead of ADDITIONAL_GUI_LIBS solves the linker problem 2001-01-14 18:54 robert * PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCLib/ChangeLog, PCLibProj/ChangeLog, PCToolProj/ChangeLog, ProjectCenter/ChangeLog: Updated the ChangeLogs 2001-01-14 18:01 robert * PCLib/PB.project: removing old PB stuff 2001-01-14 17:57 robert * PCLib/: PCProjectBuilder.m, PCProjectDebugger.h, PCProjectDebugger.m: Major improvements to the launch/debugger part 2001-01-14 17:23 robert * PCLib/: Makefile, Makefile.postamble, Makefile.preamble: removed old PB stuff 2001-01-14 17:20 robert * Version: new version... 2001-01-14 17:19 robert * ProjectCenter/ProjectCenter_main.m: cleanup in main() 2001-01-14 17:15 robert * PCBaseFileTypes/: Makefile, Makefile.postamble, Makefile.preamble, PB.project, PCBaseFileType.m: removed old PB stuff and rearranged the file types 2001-01-14 17:08 robert * PCAppProj/PCAppProject.m, PCBundleProj/PCBundleProject.m, PCLibProj/PCLibProject.m, PCToolProj/PCToolProject.m: Added the supporting files category 2001-01-14 16:53 robert * PCLib/PCProject.m: Fixed some mem leaks 2001-01-14 16:38 robert * ProjectCenter/: PCPrefController.h, PCPrefController.m: UI cleanup and optimisation 2001-01-14 16:08 robert * PCBundleProj/: PCBundleProject.h, PCBundleProject.m: the principal class can now be set using the GUI 2001-01-14 16:07 robert * PCAppProj/: PCAppProject.h, PCAppProject.m: teh application class can now be set - althoug still ignored by the makefile 2001-01-13 21:46 robert * PCBundleProj/PCBundleMakefileFactory.m, PCLib/PCFileManager.m, PCLib/PCProject.m: fix in the bundle project related to the principal class. 2001-01-13 16:56 robert * PCBundleProj/PCBundleMakefileFactory.m: the principal class should now be set in any cases 2001-01-11 20:21 robert * PCLib/: PCProjectBuilder.m, PCProjectDebugger.m: some more textview handling...sigh 2001-01-11 19:42 robert * PCLib/: PCProjectBuilder.m, PCProjectDebugger.h, PCProjectDebugger.m: Added a primitive app/too launcher/debugger 2001-01-10 16:19 robert * Version, PCBundleProj/PCBundleMakefileFactory.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, ProjectCenter/GNUmakefile, ProjectCenter/ProjectCenter_rpm.tiff: Initial support for RPM SPEC file creation 2001-01-10 15:19 robert * PCToolProj/PCToolMakefileFactory.m: inclusion of PACKAGE_NAME 2001-01-10 15:18 robert * PCAppProj/: Makefile, Makefile.postamble, Makefile.preamble, PB.project, PCAppMakefileFactory.m: no PB support anymore, inclusion of PACKAGE_NAME 2001-01-10 15:17 robert * PCLibProj/: Makefile, Makefile.postamble, Makefile.preamble, PB.project: no PB support anymore 2001-01-10 14:10 robert * PCAppProj/main.m: applied the patch of nicola 2001-01-10 13:56 robert * PCAppProj/AppController.m: default is YES in applicationShouldTerminate: 2001-01-07 15:43 robert * PCAppProj/PCAppProject.m, PCLib/PCProjectManager.h, PCLib/PCProjectManager.m, ProjectCenter/Info-project.plist, ProjectCenter/PCAppController+MenuHandling.m: some more minor fix and cleanup work 2001-01-07 15:11 robert * PCLib/PCBrowserController.m: removed unneeded log 2001-01-07 15:10 robert * PCLib/PCProjectManager.m: logs only when in DEBUG 2001-01-07 15:07 robert * PCLib/PCBrowserController.m: opening files using the workspace now works a little bit better... 2001-01-07 14:44 robert * PCLib/: PCServer.h, PCServer.m: reopening a file in the internal editor now works w/o crashing 2001-01-07 13:12 robert * PCLib/: PCBrowserController.m, PCProject.m, PCProjectManager.m: reopening projects is now possible - finally... 2001-01-07 12:36 robert * PCAppProj/PCAppProject.m: somehow the makefile was not being written...?! 2001-01-06 17:46 robert * INSTALL: slight correction 2001-01-06 17:44 robert * PCAppProj/: PCAppProject.h, PCAppProject.m: AppIcons are now set/cleaned correctly 2001-01-06 17:26 robert * PCLib/: PCProject.h, PCProject.m, PCServer.m: minor bugfix in the editor textview and new method to copy files into proj 2001-01-03 07:38 robert * PCAppProj/: AppController.h, AppController.m: fixed a typo 2000-11-10 19:27 robert * PCAppProj/PCAppProject.h, PCAppProj/PCAppProject.m, PCBundleProj/PCBundleProject.h, PCBundleProj/PCBundleProject.m, PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectManager.m, PCLibProj/PCLibProject.h, PCLibProj/PCLibProject.m, PCToolProj/PCToolProject.h, PCToolProj/PCToolProject.m, ProjectCenter/PCPrefController.m: some daily work... 2000-11-10 15:07 robert * PCAppProj/ChangeLog, PCBaseFileTypes/ChangeLog, PCBundleProj/ChangeLog, PCLibProj/ChangeLog, PCToolProj/ChangeLog: changelog for 0.2 2000-11-10 15:07 robert * PCLib/ChangeLog, ProjectCenter/ChangeLog: changelog for 0.2.0 2000-11-04 18:11 robert * ProjectCenter/PCPrefController.m: some interface changes 2000-11-04 17:48 robert * ProjectCenter/: PCAppController.m, PCPrefController.m: the bundle path is now depending on the GNUSTEP_LOCAL_ROOT env variable 2000-11-04 17:47 robert * PCLib/PCBundleLoader.m: the bundle path is now depending on the env variable 2000-11-04 14:22 robert * PCBundleProj/: GNUmakefile, GNUmakefile.postamble, GNUmakefile.preamble, Info.table, PC.proj, PCBundleMakefileFactory.h, PCBundleMakefileFactory.m, PCBundleProj.h, PCBundleProj.m, PCBundleProject.h, PCBundleProject.m: the new bundle project type - probably not 100% correct but working 2000-11-04 14:21 robert * GNUmakefile: Added the bundle project type 2000-11-04 14:20 robert * PCLib/: PCProject.h, PCProject.m: projects are by default not executable 2000-11-04 13:41 robert * PCToolProj/: PCToolProject.h, PCToolProject.m: The project type is executable 2000-11-04 13:41 robert * PCAppProj/: PCAppProj.m, PCAppProject.h, PCAppProject.m: we do not use gmodels, and the project is executable 2000-11-02 11:21 robert * PCLib/: PCProject.m, PCProjectBuilder.m: 2 lines of information when launching... 2000-11-01 11:38 robert * PCLib/: PCBrowserController.m, PCProject.m: removed logs 2000-10-29 21:17 robert * PCLib/: PCProjectDebugger.h, PCProjectDebugger.m: added the class which will one day become a simple gdb frontend 2000-10-29 21:15 robert * PCLib/: GNUmakefile, PCBrowserController.m, PCProject.h, PCProject.m, PCProjectBuilder.h, PCProjectBuilder.m, ProjectCenter.h: new style interface - simpler but hopefully more usable 2000-10-29 13:16 robert * ProjectCenter/Info-project.plist: some GWorkspace additions 2000-10-29 13:01 robert * ProjectCenter/Info-project.plist: 0.2 coming soon 2000-10-29 13:00 robert * ANNOUNCE, INSTALL, README, Version, PCBaseFileTypes/protocol.template: updated textfiles and new version coming soon... 2000-10-29 13:00 robert * PCLib/: PCBundleLoader.m, PCProject.m, PCProjectBuilder.h, PCProjectBuilder.m, PCServer.h, PCServer.m: build logging now works, as well as some enhancements when using the internal 'editor' 2000-10-27 19:15 robert * PCLib/: PCProject.h, PCProject.m: removed the 2 popups, which are not needed on the top right side 2000-10-26 11:12 robert * PCLib/PCProject.m: more image files are allowed now 2000-10-20 20:20 robert * ProjectCenter/: Makefile, Makefile.postamble, Makefile.preamble, PB.project: remove old PB support 2000-10-20 20:18 robert * ProjectCenter/PC.project: updated project file 2000-10-20 20:13 robert * PCLib/: PCProject.h, PCProjectBuilder.m: new build images in the build panel 2000-10-20 20:13 robert * ProjectCenter/: GNUmakefile, ProjectCenter_clean.tiff, ProjectCenter_debug.tiff, ProjectCenter_install.tiff, ProjectCenter_make.tiff, ProjectCenter_profile.tiff: added build images 2000-10-20 17:18 robert * PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/PCBaseFileType.m, PCBaseFileTypes/protocol.template, PCLib/PCEditorView.m, PCLib/PCProject.m, ProjectCenter/PCAppController.m: Support for protocols in file creation 2000-10-20 16:49 robert * PCAppProj/: PCAppMakefileFactory.m, PCAppProj.m, PCAppProject.h, PCAppProject.m: some more UI 2000-10-15 20:29 robert * PCAppProj/PCAppProject.m, PCLibProj/PCLibProject.m, PCToolProj/PCToolProject.m: some code improvements regarding the inspector 2000-10-15 20:24 robert * PCLib/: PCBrowserController.m, PCProject.h, PCProject.m, PCProjectBuilder.m, PCProjectManager.m: More UI enhancements - not really functional yet 2000-10-15 20:23 robert * ProjectCenter/: PCAppController.h, PCAppController.m: modified launching behaviour 2000-10-15 14:36 robert * PCAppProj/: AppController.h, AppController.m, main.m: fixed the info panel issue 2000-10-15 14:27 robert * INSTALL, PCLib/PCBrowserController.m, PCLib/PCProject.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, PCLib/PCProjectManager.m: typo and note about GNUstep version added 2000-10-15 14:25 robert * PCAppProj/PCAppProj.m: Added the plist file to "Other Resources" 2000-10-15 14:25 robert * ProjectCenter/PCPrefController.m: UI improvement 2000-10-11 15:15 robert * PCToolProj/PCToolProject.m: daily work 2000-10-11 09:35 robert * PCAppProj/: AppController.h, AppController.m: removed old method 2000-10-11 09:33 robert * PCAppProj/: AppController.h, AppController.m, PCAppProj.m, main.m: new info panel approach - uch simpler, thanks Nicola! 2000-09-24 15:37 robert * PCLibProj/PCLibProject.m: minor UI issue 2000-09-23 17:45 robert * PCLibProj/PCLibMakefileFactory.m: another issue... 2000-09-23 16:24 robert * PCLibProj/: PCLibMakefileFactory.m, PCLibProject.m: Fixed some makefile issues 2000-09-22 19:11 robert * PCLib/: PCProject.h, PCProject.m: minor UI changes 2000-09-22 12:33 robert * PCLib/: PCBrowserController.m, PCProject.h, PCProject.m, PCProjectBuilder.h, PCProjectBuilder.m: some UI modifications 2000-09-22 11:24 robert * PCToolProj/PCToolMakefileFactory.m: Fix in the makefile generation section 2000-09-21 09:36 robert * PCLib/PCBundleLoader.m: bundle path issues 2000-09-21 09:32 robert * ProjectCenter/PCPrefController.m: bundle path issue now fixed, hopefully... 2000-09-21 09:17 robert * INSTALL: better install file 2000-09-21 09:07 robert * PCLibProj/: PCLibMakefileFactory.m, PCLibProj.m: removed the English.lproj stuff in libs 2000-09-21 07:42 robert * ProjectCenter/: PCAppController.m, PCPrefController.m: open file now works, too 2000-09-21 07:42 robert * PCLib/: PCProjectManager.h, PCProjectManager.m: daily work 2000-09-21 07:20 robert * PCLib/PCFileManager.m: daily work 2000-09-21 07:16 robert * PCLib/PCEditorView.m: @end is now highlighted, too 2000-09-20 17:53 robert * Version: Version 0.1 2000-09-20 17:50 robert * ProjectCenter/ChangeLog, PCLib/ChangeLog, PCAppProj/ChangeLog, PCLibProj/ChangeLog, PCBaseFileTypes/ChangeLog: Added a changelog 2000-09-20 17:46 robert * ProjectCenter/ProjectCenter_main.m: Added the font panel stuff 2000-09-20 17:46 robert * PCLib/: GNUmakefile, PCBrowserController.m, PCEditorView.h, PCEditorView.m, PCProject.h, PCProject.m, PCServer.m, ProjectCenter.h: Added a first editor with syntax highlighting 2000-09-20 12:35 robert * ProjectCenter/PCPrefController.m: some more work on the preferences 2000-09-20 11:59 robert * PCLib/PCProjectBuilder.m: daily work 2000-09-20 11:53 robert * PCLib/: PCProject.m, PCProjectBuilder.m: minor UI changes (scrollers in scrollviews) 2000-09-20 10:50 robert * PCAppProj/: AppController.h, AppController.m, PCAppMakefileFactory.m, PCAppProj.m, main.m: enhanced the created app to support GC and an info panel and more ... 2000-09-19 17:39 robert * PCLib/: PCProject.m, PCProjectBuilder.m: sizeToCells was missing ... 2000-09-17 16:40 robert * PCLib/PCProject.h, PCLib/PCProject.m, PCLib/PCProjectBuilder.m, ProjectCenter/PCPrefController.h, ProjectCenter/PCPrefController.m: Basic preferences handling 2000-09-17 14:14 robert * PCAppProj/: PCAppProject.h, PCAppProject.m: daily work 2000-09-17 14:13 robert * PCLibProj/PCLibMakefileFactory.m: makefile improvements 2000-09-17 14:13 robert * PCLib/: PCBrowserController.h, PCBrowserController.m, PCFileManager.h, PCFileManager.m, PCProject.h, PCProject.m, PCProjectBuilder.h, PCProjectBuilder.m, PCProjectManager.h, PCProjectManager.m, PCServer.h, PCServer.m, ProjectCenter.h, Server.h: Implemented a first 'editor', UI enhancements and other nice things 2000-09-17 14:12 robert * ProjectCenter/: GNUmakefile, Info-project.plist, PCAppController+MenuHandling.h, PCAppController+MenuHandling.m, PCAppController.m, PCMenuController.m, ProjectCenter_main.m, ProjectCentre_build.tiff, ProjectCentre_find.tiff, ProjectCentre_prefs.tiff, ProjectCentre_settings.tiff, ProjectCentre_uml.tiff: Updated some images, fixed some bugs and enhanced the featurelist... 2000-09-14 11:04 robert * ProjectCenter/PCAppController.m: another minor flaw 2000-09-14 10:54 robert * PCAppProj/: AppController.h, AppController.m, AppProject.gmodel, GNUmakefile, Main.gmodel, PC.proj, PCAppMakefileFactory.m, main.m: apps now don't use gmodels anymore 2000-09-14 10:28 robert * ProjectCenter/PCAppController.m: fixed some bugs introduced by removing the gmodel 2000-09-13 12:45 robert * PCBaseFileTypes/PCBaseFileType.m, ProjectCenter/GNUmakefile, ProjectCenter/PCAppController+MenuHandling.h, ProjectCenter/PCAppController+MenuHandling.m, ProjectCenter/PCAppController.h, ProjectCenter/PCAppController.m, ProjectCenter/PCMenuController.h, ProjectCenter/PCMenuController.m, ProjectCenter/ProjectCenter_main.m, ProjectCenter/English.lproj/ProjectCenter.gmodel: removed the gmodels completely from ProjectCenter.app 2000-09-03 22:10 robert * Version, PCAppProj/GNUmakefile.preamble, PCLib/GNUmakefile, PCToolProj/GNUmakefile.preamble: renamed libPC into libProjectCenter 2000-09-03 21:59 robert * ProjectCenter/: GNUmakefile.preamble, PC.project, PCAppController.m: minor stuff 2000-09-03 21:15 robert * ProjectCenter/PCAppController.m: New DO code 2000-08-28 21:04 robert * PCLib/: PCBrowserController.m, PCFileManager.h: The class and header files are now being displayed 2000-08-27 21:11 robert * Version, ANNOUNCE, INSTALL, README, COPYING, GNUmakefile, GNUmakefile.postamble, GNUmakefile.preamble, PCAppProj/Makefile.preamble, PCAppProj/PB.project, PCAppProj/PCAppProj.h, PCAppProj/Makefile, PCAppProj/h.template, PCAppProj/m.template, PCAppProj/Info.table, PCAppProj/PCAppProj.m, PCAppProj/Makefile.postamble, PCAppProj/PCAppProject.h, PCAppProj/PCAppProject.m, PCAppProj/GNUmakefile.postamble, PCAppProj/GNUmakefile.preamble, PCAppProj/PC.proj, PCAppProj/main.m, PCAppProj/PCAppMakefileFactory.h, PCAppProj/PCAppMakefileFactory.m, PCAppProj/AppProject.gmodel, PCAppProj/GNUmakefile, PCAppProj/AppController.h, PCAppProj/AppController.m, PCAppProj/Info-project.plist, PCAppProj/Main.gmodel, PCBaseFileTypes/Makefile, PCBaseFileTypes/Makefile.postamble, PCBaseFileTypes/Makefile.preamble, PCBaseFileTypes/PB.project, PCBaseFileTypes/PCBaseFileType.h, PCBaseFileTypes/PCBaseFileType.m, PCBaseFileTypes/FileIcon_.m.tiff, PCBaseFileTypes/FileIcon_.h.tiff, PCBaseFileTypes/FileIcon_.c.tiff, PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/cfile.template, PCBaseFileTypes/cheader.template, PCBaseFileTypes/class.template, PCBaseFileTypes/header.template, PCLib/Makefile.preamble, PCLib/PB.project, PCLib/h.template, PCLib/m.template, PCLib/Makefile, PCLib/Makefile.postamble, PCLib/ProjectEditor.h, PCLib/Server.h, PCLib/PCServer.h, PCLib/PCServer.m, PCLib/ProjectCenter.h, PCLib/ProjectDebugger.h, PCLib/ProjectType.h, PCLib/PCProjectManager.m, PCLib/PCProjectManager.h, PCLib/PCBundleLoader.h, PCLib/PCBundleLoader.m, PCLib/PreferenceController.h, PCLib/ProjectBuilder.h, PCLib/PCBrowserController.h, PCLib/PCDataSource.h, PCLib/PCDataSource.m, PCLib/PCProject.h, PCLib/PCFileManager.h, PCLib/PCProject.m, PCLib/PCFileManager.m, PCLib/FileCreator.h, PCLib/GNUmakefile, PCLib/GNUmakefile.preamble, PCLib/PCBrowserController.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, ProjectCenter/Makefile.preamble, ProjectCenter/PB.project, ProjectCenter/h.template, ProjectCenter/m.template, ProjectCenter/Makefile, ProjectCenter/ProjectCenter_main.m, ProjectCenter/Makefile.postamble, ProjectCenter/PCAppController.h, ProjectCenter/PCAppController.m, ProjectCenter/PCPrefController.h, ProjectCenter/PCPrefController.m, ProjectCenter/PCFindController.h, ProjectCenter/PCFindController.m, ProjectCenter/PCInfoController.h, ProjectCenter/PCInfoController.m, ProjectCenter/PCLogController.h, ProjectCenter/PCLogController.m, ProjectCenter/PCMenuController.h, ProjectCenter/ProjectCenter.tiff, ProjectCenter/PCMenuController.m, ProjectCenter/GNUmakefile, ProjectCenter/GNUmakefile.postamble, ProjectCenter/GNUmakefile.preamble, ProjectCenter/PC.project, ProjectCenter/FileIcon_.m.tiff, ProjectCenter/ProjectCentre_documentation.tiff, ProjectCenter/ProjectCentre_cvs.tiff, ProjectCenter/ProjectCentre_prefs.tiff, ProjectCenter/ProjectCenter.app.tiff, ProjectCenter/FileIcon_rtf.tiff, ProjectCenter/ProjectCentre_files.tiff, ProjectCenter/FileIcon_.c.tiff, ProjectCenter/ProjectCentre_clean.tiff, ProjectCenter/ProjectCentre_find.tiff, ProjectCenter/FileIcon_.h.tiff, ProjectCenter/Info-project.plist, ProjectCenter/ProjectCentre_add.tiff, ProjectCenter/ProjectCentre_build.tiff, ProjectCenter/ProjectCentre_run.tiff, ProjectCenter/ProjectCentre_uml.tiff, PCLibProj/PCLibMakefileFactory.h, PCLibProj/PCLibProj.h, ProjectCenter/English.lproj/ProjectCenter.gmodel, PCLibProj/GNUmakefile, PCLibProj/GNUmakefile.postamble, PCLibProj/GNUmakefile.preamble, PCLibProj/Info.table, PCLibProj/PCLibProj.m, PCLibProj/Makefile, PCLibProj/Makefile.postamble, PCLibProj/Makefile.preamble, PCLibProj/PB.project, PCLibProj/PC.proj, PCLibProj/PCLibMakefileFactory.m, PCLibProj/PCLibProject.h, PCLibProj/PCLibProject.m, PCLibProj/h.template, PCLibProj/m.template, PCLibProj/LibProject.gmodel, PCLibProj/Version, PCToolProj/PCToolProj.h, PCToolProj/PCToolProj.m, PCToolProj/h.template, PCToolProj/m.template, PCToolProj/Info.table, PCToolProj/PCToolProject.m, PCToolProj/GNUmakefile.postamble, PCToolProj/GNUmakefile.preamble, PCToolProj/PCToolProject.h, PCToolProj/main.m, PCToolProj/PCToolMakefileFactory.m, PCToolProj/GNUmakefile, PCToolProj/Info-project.plist, PCToolProj/PC.proj, PCToolProj/PCToolMakefileFactory.h: Initial revision 2000-08-27 21:11 robert * Version, ANNOUNCE, INSTALL, README, COPYING, GNUmakefile, GNUmakefile.postamble, GNUmakefile.preamble, PCAppProj/Makefile.preamble, PCAppProj/PB.project, PCAppProj/PCAppProj.h, PCAppProj/Makefile, PCAppProj/h.template, PCAppProj/m.template, PCAppProj/Info.table, PCAppProj/PCAppProj.m, PCAppProj/Makefile.postamble, PCAppProj/PCAppProject.h, PCAppProj/PCAppProject.m, PCAppProj/GNUmakefile.postamble, PCAppProj/GNUmakefile.preamble, PCAppProj/PC.proj, PCAppProj/main.m, PCAppProj/PCAppMakefileFactory.h, PCAppProj/PCAppMakefileFactory.m, PCAppProj/AppProject.gmodel, PCAppProj/GNUmakefile, PCAppProj/AppController.h, PCAppProj/AppController.m, PCAppProj/Info-project.plist, PCAppProj/Main.gmodel, PCBaseFileTypes/Makefile, PCBaseFileTypes/Makefile.postamble, PCBaseFileTypes/Makefile.preamble, PCBaseFileTypes/PB.project, PCBaseFileTypes/PCBaseFileType.h, PCBaseFileTypes/PCBaseFileType.m, PCBaseFileTypes/FileIcon_.m.tiff, PCBaseFileTypes/FileIcon_.h.tiff, PCBaseFileTypes/FileIcon_.c.tiff, PCBaseFileTypes/GNUmakefile, PCBaseFileTypes/cfile.template, PCBaseFileTypes/cheader.template, PCBaseFileTypes/class.template, PCBaseFileTypes/header.template, PCLib/Makefile.preamble, PCLib/PB.project, PCLib/h.template, PCLib/m.template, PCLib/Makefile, PCLib/Makefile.postamble, PCLib/ProjectEditor.h, PCLib/Server.h, PCLib/PCServer.h, PCLib/PCServer.m, PCLib/ProjectCenter.h, PCLib/ProjectDebugger.h, PCLib/ProjectType.h, PCLib/PCProjectManager.m, PCLib/PCProjectManager.h, PCLib/PCBundleLoader.h, PCLib/PCBundleLoader.m, PCLib/PreferenceController.h, PCLib/ProjectBuilder.h, PCLib/PCBrowserController.h, PCLib/PCDataSource.h, PCLib/PCDataSource.m, PCLib/PCProject.h, PCLib/PCFileManager.h, PCLib/PCProject.m, PCLib/PCFileManager.m, PCLib/FileCreator.h, PCLib/GNUmakefile, PCLib/GNUmakefile.preamble, PCLib/PCBrowserController.m, PCLib/PCProjectBuilder.h, PCLib/PCProjectBuilder.m, ProjectCenter/Makefile.preamble, ProjectCenter/PB.project, ProjectCenter/h.template, ProjectCenter/m.template, ProjectCenter/Makefile, ProjectCenter/ProjectCenter_main.m, ProjectCenter/Makefile.postamble, ProjectCenter/PCAppController.h, ProjectCenter/PCAppController.m, ProjectCenter/PCPrefController.h, ProjectCenter/PCPrefController.m, ProjectCenter/PCFindController.h, ProjectCenter/PCFindController.m, ProjectCenter/PCInfoController.h, ProjectCenter/PCInfoController.m, ProjectCenter/PCLogController.h, ProjectCenter/PCLogController.m, ProjectCenter/PCMenuController.h, ProjectCenter/ProjectCenter.tiff, ProjectCenter/PCMenuController.m, ProjectCenter/GNUmakefile, ProjectCenter/GNUmakefile.postamble, ProjectCenter/GNUmakefile.preamble, ProjectCenter/PC.project, ProjectCenter/FileIcon_.m.tiff, ProjectCenter/ProjectCentre_documentation.tiff, ProjectCenter/ProjectCentre_cvs.tiff, ProjectCenter/ProjectCentre_prefs.tiff, ProjectCenter/ProjectCenter.app.tiff, ProjectCenter/FileIcon_rtf.tiff, ProjectCenter/ProjectCentre_files.tiff, ProjectCenter/FileIcon_.c.tiff, ProjectCenter/ProjectCentre_clean.tiff, ProjectCenter/ProjectCentre_find.tiff, ProjectCenter/FileIcon_.h.tiff, ProjectCenter/Info-project.plist, ProjectCenter/ProjectCentre_add.tiff, ProjectCenter/ProjectCentre_build.tiff, ProjectCenter/ProjectCentre_run.tiff, ProjectCenter/ProjectCentre_uml.tiff, PCLibProj/PCLibMakefileFactory.h, PCLibProj/PCLibProj.h, ProjectCenter/English.lproj/ProjectCenter.gmodel, PCLibProj/GNUmakefile, PCLibProj/GNUmakefile.postamble, PCLibProj/GNUmakefile.preamble, PCLibProj/Info.table, PCLibProj/PCLibProj.m, PCLibProj/Makefile, PCLibProj/Makefile.postamble, PCLibProj/Makefile.preamble, PCLibProj/PB.project, PCLibProj/PC.proj, PCLibProj/PCLibMakefileFactory.m, PCLibProj/PCLibProject.h, PCLibProj/PCLibProject.m, PCLibProj/h.template, PCLibProj/m.template, PCLibProj/LibProject.gmodel, PCLibProj/Version, PCToolProj/PCToolProj.h, PCToolProj/PCToolProj.m, PCToolProj/h.template, PCToolProj/m.template, PCToolProj/Info.table, PCToolProj/PCToolProject.m, PCToolProj/GNUmakefile.postamble, PCToolProj/GNUmakefile.preamble, PCToolProj/PCToolProject.h, PCToolProj/main.m, PCToolProj/PCToolMakefileFactory.m, PCToolProj/GNUmakefile, PCToolProj/Info-project.plist, PCToolProj/PC.proj, PCToolProj/PCToolMakefileFactory.h: Initial import apps-projectcenter-master/Documentation/INSTALL000066400000000000000000000007161347226342500220350ustar00rootroot00000000000000Installation ************ This file documents the installation of the GNUstep ProjectCenter application. Installing `ProjectCenter' ========================= ProjectCenter requires GNUstep core to be installed. Make sure that you have the latest released version installed. Here is the quick way of building and installing ProjectCenter: cd ProjectCenter; make; make install; By default ProjectCenter gets installed under GNUSTEP_SYSTEM_ROOT. apps-projectcenter-master/Documentation/README000066400000000000000000000015231347226342500216610ustar00rootroot00000000000000 ProjectCenter ============= This is ProjectCenter, the GNUstep IDE which is part of the GNUstep project and is copyrighted by the Free Softare Foundation. ProjectCenter is released under the GPL - see Documentation/COPYING for the details. Further information can be found on the GNUstep site at www.gnustep.org on the ProjectCenter page http://www.gnustep.org/experience/ProjectCenter.html For the installation instructions read the INSTALL file. For a list of upcoming and/or planned features read the TODO file. For a list of changes in released versions read the ANNOUNCE file. The main author of ProjectCenter is Philippe C.D. Robert, current maintainer is Serg Stoyan, but others have contributed a lot to the current state of the project (see Documentatio/AUTHORS). Many of the icons have been created by Andrew Lindsay. apps-projectcenter-master/Documentation/README.contributions000066400000000000000000000022321347226342500245600ustar00rootroot00000000000000 ProjectCenter Contributions =========================== Contributions are welcome! You can either send code diffs or new stuff to be added to the maintainer of ProjectCenter () or apply the change by yourself if you have write access to the CVS. If you plane to apply changes by yourself please consider to following rules: - Major features will first have to be approved, please contact the maintainer beforehand! This is because we want to keep the project as much focused as possible and not because we do not trust you! - If a feature is approved for a particular version it can be commited to the appropriate CVS branch, this might be HEAD or RELEASE_X_Y_Z. - If a feature is not yet approved for a specific release it might go into the respective UNSTABLE_X_Y tree. Changes from this branch will then later be merged into HEAD, if it makes sense. Remember, these rules are made to enhance the quality of the project and to be able to stick to our release plan! However if you think these rules have some weaknesses please let us know, so that we can discuss it! apps-projectcenter-master/Documentation/SCHEME000066400000000000000000000050251347226342500216710ustar00rootroot00000000000000 +- PCProjectInspector | +- PCLoadedFilesPanel | +- PCBuildPanel | +- PCLaunchPanel | +- [SI]PCFindPanel PCAppController-\ | | ----- PCProjectManager PCMenuController/ | || | PCProject | | | +- PCProjectWindow | | | +- PCProjectBrowser | | | +- PCProjectLoadedFiles | | | +- PCProjectBuilder | | | +- PCProjectLauncher | | | +- [SI]PCProjectFinder | | | +- PCProjectEditor | || | PCEditor | | | +- PCEditorView | PCTextFinder | PCFileManager | +- PCFileCreator ------------------------------ Other (controls, tools, etc.): ------------------------------ PCButton PCSplitView PCOutputView (Should be implemented. Used by e.g. Project Builder) PCBundleLoader (Used in ProjectCenter application) PCMakefileFactory (Used in PC*Project bundles) PCServer (don't used) ---------- THOUGHTS: ---------- - implement PCProjectFinder and PCFindPanel GUI; - "Edit" menu should be completely provided by Editor part; - "Add Files" panel should provide selection of type and "Choose Folders" and "Add Class", "Add Header" and so on checkbox; - "New File in Project..." panel should provide "Create Header", "Create Class" and so on checkbox. - Add "Installable" or something to "Bundle" project type project attributes. Localization: ~~~~~~~~~~~~~ - On project creation, all resources go to Resources subdir and placed into GNUmakefile as *_RESOURCE_FILES; [done!] - If some file from [PC*Proj localizableKeys] categories selected as "Localizable Resource", that file removed from *_RESOURCE_FILES and placed into *_LOCALIZED_RESOURCE_FILES (for directories: Resources->Language.lproj); - in PC.project add USER_LANGUAGES=(); [done!] - in PC.project add LOCALIZED_RESOURCES=(); [done!] apps-projectcenter-master/Documentation/TODO000066400000000000000000000136441347226342500215000ustar00rootroot00000000000000TODO **** This is the GNUstep ProjectCenter TODO list. Feel free to propose changes to this list or make suggestions! ProjectCenter 0.4 Owner/Status ----------------- ------------ - Review and cleanup of PC project bundles/templates [done!] - Finish Project Inspector [done!] - Inspector UI using Gorm [done!] - File creation (File->New in project) cleanup and finishing [done!] - Initial suprojects support [done!] - Finish support of external editors [done!] - Preferences enhancements and UI using Gorm [done!] - Remember project windows and panels in PC.project [done!] ProjectCenter 0.5 ----------------- - Create ProjectWindow GORM file [done!] - Add "Framework" project type [done!] - Add "Resource Set" project type [done!] - Implement on demand loading of bundles [done!] - Localization support for projects [done!] - Finish save/restore size of split views in Project Window [done!] --- Project Editor: - Implement on demand loading (editor for file type) [done!] - Open some files read only (Supporting Files) [done!] - Implement code parser (get it from CodeEditor?) [done!] - Project Browser should show file structure. [done!] - Click on Browser item should move cursor to line in file [done!] --- Project Builder: - Create panel and builder GORM files [done!] - Implement root build directory handling [done!] - Finish options handling [done!] - Parse gcc output [95% done!] - Display warnings,errors,options etc. as clickable list [done!] - GNUstep make version 2.0 compliance [done!] - Save last used path separately for different file panels [done!] ProjectCenter 0.6 ----------------- - Create new Info panel [done!] - Implement support for integrated debugging [90% done] - change project type from file to bundle [done!] casamento/mottola - Finish FileNameIcon (draggable, files can be dragged to it) [done!] - More options for file creation [done!] - Review all situations when dialogs must be popped up [done!] - Check all textfields if 'scrollable' attribute set [done!] - Rewrite Preferences (3rd party sections etc.) [done!] --- Project Builder -------------------------------------------- - Review build, compiler, linker options setting (Build Options, Inspector) [done!] - Finish parsing build output (compiler errors/warnings, make errors, gnustep-make verbose mode) stoyan - Finish interaction with Editor (errors, warnings) stoyan - Add support for running configurable(Build Options) command before and after make stoyan --- Project Editor --------------------------------------------- - review situations when editor is opened stoyan - implement go to line stoyan - Implement interaction with Builder (errors, warnings) stoyan - Implement indentation stoyan - implement undo inside editor [done!] - Add and use basic editor preferences (fonts, colors, sizes) [50% done] --- Project Inspector ------------------------------------------ - Make sections as loadable bundles stoyan - Finish functionality of all sections stoyan - Review all sections for correct behaviour stoyan - Split "Application" to "Application GORM" and "Application Renaissance" project types stoyan - Add "Palette" project type ??? - Add "Component" project type ??? - Process reported bugs ??? - Think about imlementing pending adding/removal of files ??? - New icons. Need volunteers!!! ??? ProjectCenter 0.7 ----------------- - Finish suppor of integrated debugging ??? - Add support for browsing 'Library' category entries ??? - Add support for non-project files ??? - Implement symbols indexing. This feature touches Browser (class and method list) and Editor (autocompletion) ??? - Editor: implement autocompletion ??? - An initial project wide find feature ??? - Better integration with other tools (GORM). DevKit? ??? ProjectCenter 0.8 ----------------- - Implement code folding in Editor ??? - Direct code documentation (using autogsdoc) ??? - Think about adopting existing directory tree (more flexible directory configurations) [bug #22008] ??? ProjectCenter 0.9 ----------------- - ProjectCenter localization ??? - Initial user documentation ??? - Implement Plist editor for editing project files[bug #22124] ??? - An initial class browser/documentation feature ??? ProjectCenter 1.0 ----------------- Version 1.0 is aimed at stabilising and optimising existing features. There will not be any new features since 0.9. After 1.0 --------- - CVS/SVN integration ??? apps-projectcenter-master/English.lproj/000077500000000000000000000000001347226342500207055ustar00rootroot00000000000000apps-projectcenter-master/English.lproj/FindPanel.gorm/000077500000000000000000000000001347226342500235105ustar00rootroot00000000000000apps-projectcenter-master/English.lproj/FindPanel.gorm/data.classes000066400000000000000000000012011347226342500257720ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "findNext:", "findNextAndOrderFindPanelOut:", "findPrevious:", "ignoreCase:", "replace:", "replaceAll:", "replaceAndFind:" ); Super = NSObject; }; TextFinder = { Actions = ( "findNext:", "findNextAndOrderFindPanelOut:", "findPrevious:", "replace:", "replaceAll:", "replaceAndFind:" ); Outlets = ( findNextButton, findTextField, ignoreCaseButton, replaceAllScopeMatrix, replaceTextField, statusField ); Super = NSObject; }; }apps-projectcenter-master/English.lproj/FindPanel.gorm/data.info000066400000000000000000000002701347226342500252750ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/English.lproj/FindPanel.gorm/objects.gorm000066400000000000000000000203321347226342500260270ustar00rootroot00000000000000GNUstep archive00002e7c:00000020:000000e9:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A CÅ C&&% C- D€01 NSView% ?€ A CÅ C&  CÅ C&&01 NSMutableArray1NSArray&  01 NSTextField1 NSControl% BŌ C C‹ AØ  C‹ AØ&0±% BŌ BŚ C‹ AØ  C‹ AØ&°0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±&0 1NSFont% A@° &&&&&&&&&&&&&&%’0 1NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’01NSButton% C”€ A Bt AĄ  Bt AĄ&°0±% C A B| AĄ  B| AĄ&°0±% C A BĄ AĄ  BĄ AĄ&°0±% Bŗ A B` AĄ  B` AĄ&°0±% A A Bœ AĄ  Bœ AĄ&°0± &%01 NSButtonCell0±& % Replace All° °&&&&&&&&&&&&&&%’0±&0±&&&& &&0± &%0±0±&%Replace° °&&&&&&&&&&&&&&%’0 ±&0!±&&&& &&0"± &%0#±0$±&%Replace & Find° °$&&&&&&&&&&&&&&%’0%±&0&±&&&& &&0'± &%0(±0)±&%Previous° °)&&&&&&&&&&&&&&%’0*±&0+±&&&& &&0,± &%0-±0.±&%Next0/1NSImage00±& % common_ret° °.&&&&&&&&&&&&&&%’01±&02±&03±04±& % common_retH&&& &&05± &%06±07±&° °7&&&&&&&&&&&&&&%’08±°09±&%System0:±&%textBackgroundColor0;±°°90<±& % textColor’°0=±% A C B° AØ  B° AØ&0>± &%0?±0@±&%Find:° °@&&&&&&&&&&&&&&%’0A±°0B±&%System0C±&%textBackgroundColor0D±°°B0E±& % textColor’0F±% A BŚ B° AØ  B° AØ&0G± &%0H±0I±& % Replace with:° &&&&&&&&&&&&&&%’0J±°0K±&%System0L±&%textBackgroundColor0M±°°K0N±& % textColor’°°°°°0O±% A B$ B° B\  B° B\&0P± &%0Q±0R±&0S±% A@°R&&&&&&&&&&&&&&%’0T±0U±&%NSCalibratedWhiteColorSpace ?€ ?€0V±°U ? ?€’0W1NSBox% BŌ B$ C B|  C B|&0X± &0Y± % @ą @ą C B  C B&0Z± &0[1NSMatrix% A  @ Bž B  Bž B&0\± &%0]±0^±&0_±%0`±& % Helvetica A@A@&&&&&&&&&&&&&&%’% Bž A 0a±°0b±&%System0c±&%controlBackgroundColor°a0d±& % NSButtonCell0e±0f±&%Radio0g±0h1NSMutableString&%common_RadioOff°_&&&&&&&&&&&&&&%’0i±&0j±&0k±0l±&%common_RadioOn&&& &&%%0m± &0n±0o±& % Entire File°g° °o&&&&&&&&&&&&&&%*’°i°j°k&&& &&0p±0q±& % Selection°g° °q&&&&&&&&&&&&&&%+’°i°j°k&&& &&’’’°n0r±0s±&%Replace All Scope0t±%0u±&%Helvetica-Bold A@A@°s&&&&&&&&&&&&&&%’0v±°0w±&%System0x±&%windowBackgroundColor0y±°0z±&%System0{±& % textColor @  @ %%0|±% C B$ C B|  C B|&0}± &0~± % @ą @ą Bę B  Bę B&0± &0€±% A A@ B¬ A€  B¬ A€&0± &%0‚±0ƒ±& % Ignore Case0„±0…±&%common_SwitchOff° &&&&&&&&&&&&&&%’0†±&0‡±&0ˆ±0‰±&%common_SwitchOn&&& &&0б0‹±& % Find Options°t&&&&&&&&&&&&&&%’°v0Œ±°0±&%System0ޱ& % textColor @  @ %%0±°0±&%System0‘±&%windowBackgroundColor0’±&%Window0“±&%Find°“ ?€ ?€ F@ F@%&   D  D€0”± &°0•± &°0–1NSMutableDictionary1 NSDictionary&0—±&%Button2°0˜±&%Button3°0™±&%Button4°0š±&%Box1°|0›±&%NSOwner0œ±& % TextFinder0±&%Button5°€0ž±& % TextField1°0Ÿ±& % TextField2°=0 ±& % TextField°0”±&%View°Y0¢±& % TextField3°F0£±& % TextField4°O0¤±&%View1°~0„±&%Button°0¦±& % FindPanel°0§±&%Box°W0ر&%Matrix°[0©±&%Button1°0Ŗ± &**0«1NSNibConnector°¦0¬±&%NSOwner0­±° 0®±°ž0Ʊ°Ÿ0°±°¢0±±°„0²±°©0³±°—0“±°˜0µ±°™0¶±°£0·±°§0ø±°š0¹±°”°§0ŗ±°Ø°”0»±°¤°š0¼±°°¤0½1NSNibOutletConnector°¦° 0¾±&%initialFirstResponder0æ±° °ž0Ą±& % nextKeyView0Į±°ž°Ø°Ą0±°Ø°°Ą0Ʊ°°„°Ą0ı°„°˜°Ą0ű°˜°—°Ą0ʱ°—°©°Ą0DZ°©°™°Ą0ȱ°™° °Ą0É1 NSNibControlConnector° °¬0ʱ&%findNextAndOrderFindPanelOut:0˱ °ž°¬°Ź0̱ °0ͱ&%NSFirst0α& % ignoreCase:0ϱ °„°¬0б& % replaceAll:0ѱ °˜°¬0ұ&%replace:0Ó± °—°¬0Ō±&%replaceAndFind:0Õ± °©°¬0Ö±& % findPrevious:0×± °™°¬0Ų±& % findNext:0ٱ°¦°¬0ڱ&%delegate0Ū±°¬°™0ܱ&%findNextButton0ݱ°¬° 0ޱ& % findTextField0ß±°¬°ž0ą±&%replaceTextField0į±°¬°0ā±&%ignoreCaseButton0ć±°¬°Ø0ä±&%replaceAllScopeMatrix0å±°¬°£0ę±& % statusField0ē±&apps-projectcenter-master/English.lproj/Info.gorm/000077500000000000000000000000001347226342500225435ustar00rootroot00000000000000apps-projectcenter-master/English.lproj/Info.gorm/Info.tiff000066400000000000000000002414441347226342500243210ustar00rootroot00000000000000II*ųA /l*+µJKŽ“JKց56™U##e5@ "  QޱCD÷ĖST’ŲZ[’ŚZ[žĶUVńŗMNܟBC¼{34“V#$g)2  @jżk’m!"’./’ >?’·JK’ĘQR’ŠVWžŃWXśĶUVņ½OOą;<«f**y>J%-  @šhżd’P’F’L’W’i"#’‚/0’š;<’øJK’ĖTU’Ł[\’ÖYZūÄQRčÆIIϊ9:¤i+,}>K % ?—hżd’T’N’M’L’K’I’J’N’Y’s'(’56’ÆEF’ĄNO’ĢSTžĻVWūĢUVņ“bcć’vwĄnWXnii‹ghh’.,,C  …ÖéĘa >“iżd’W’S’S’Q’P’O’N’K’J’G’F’M’[’s'(’‹34’§CC’ŸXX’œyy’²ØØ’¾ææ’‘‘’ƒ~~Śq``”L>>`':Ó’’’’’–= hüd’Z’Y’Y’W’V’T’S’Q’P’N’M’K’J’I’H’K’R’i12’ŸŽŽ’”ƒƒ’ŠYY’‰]]žŒppü‰rrö—PPē«HHĢ‹9:„\&&m5? $ <<<<<<<<8*˜’’’’’’’IcšøĄ“•f&< Šhüd’\’_’_’]’[’Z’Y’W’V’T’S’Q’P’N’M’K’I’J’U,,’O ’P’b ’r*+’†88’¬FG’ČRS’ÓWXžÕXYūÉTUķ­HH͊99¤c)*v<H &  P’’’’’’’’’’’ōĀ}š’’’’’’’Ÿšł’’’’’’’’+: †hūc’^’e’e’c’a’`’_’]’[’Z’X’W’U’S’R’P’P’N’L’K’I’G’F’H’M’[’p&'’56’ŖCD’ĮNO’ĶTUżĻVWłÉTTīµKL֘?@“q//‡FT%-P’’’’’’’’’’’’’’śŠ ’’’’’’’’ŗ?é’’’’’’’’’’,9 gśc’a’i’j’h’g’e’d’c’a’`’^’]’[’Y’X’V’U’K’>’9 ’?’I’L’J’I’G’F’E’J’W’m%%’‡22’„AA’¼LM’ĢSTžŃWXśĶUVņ¹LMښ?@¶u01‹L [+3P’’’’’’’’’’’’’’’’Äļ’’’’’’’ž9ˆˆˆˆˆˆˆE÷’’’’’’’’’’’,9ˆˆˆˆˆˆˆ7 |gśc’c’o’o’m’l’k’j’h’g’e’d’b’a’_’^’[’@’’’’’’4 ’M’O’M’L’J’I’G’E’E’H’R’d !’}--’š;<’“HI’ČRS’ĻUVūĪVWōĮPQć£CDĮ‚66›L`P’’’’’’’’’’’’’’’’’ •’’’’’’’Bl’’’’’’’ #ń’’’’’’’’’’’’,l’’’’’’’   6 xgłc’e’s’s’r’q’p’o’m’l’k’i’h’f’e’c’O’’’’’’’’, ’O’S’Q’P’N’M’K’J’H’G’D’D’G’O’`’w*+’”99’ÆFG’ĘQR’ĢSTżš34į+ HP’’’’’’’’’’’’’’’’’’/Š’’’’’‹l’’’’’’’ ½’’’’’’’’’’’’’,l’’’’’’’  $H9[{a ˜nV ‘3 sgłc’g’x’x’w’v’u’s’r’q’p’n’m’l’j’i’3 ’’’’’’’BBB’B==’?’W’W’U’T’R’Q’O’N’M’K’I’H’F’D’C’D’I’]’*+’†!ģ* OP’’’’’’’’’’’’’’’’’’Ÿ ‚ÓęĀYl’’’’’’’ ^’’’’’’’’’’’’’’,l’’’’’’’ 1%>“s¹Ö§ķē“üĢ ónV Ž - ogųc’i’{’|’{’z’y’x’w’v’t’s’q’q’o’m’% ’’’’’’’   ’ŻŽŽ’–‘‘’T’]’[’Z’X’W’U’T’R’Q’O’N’L’J’I’G’F’O’… ’~į AP’’’’’’’Ų 9æ’’’’’’’įl’’’’’’’ Ń’’’’’’’’õŠH;e¾+l’’’’’’’ qX ˆĻ”õģø’šŗ’ɝń^I | * jg÷c’j’’€’’~’}’|’{’z’y’x’w’u’t’s’0 ’’’’YYY’000’&&&’“““’žžž’ģķķ’X34’`’a’_’^’]’[’Z’X’W’U’T’R’P’O’M’L’\’Š !’tĪ,P’’’’’’’Ų ć’’’’’’’  l’’’’’’’ 8’’’’’’’’ļ, l’’’’’’’  n©Ó„ūš»’ļŗ’Ą•ęN<g) fgöc’k’’ƒ ’‚ ’’€’€’~’~’|’|’z’z’y’x’N’’’AAA’ééé’ÓÓÓ’«««’ąąą’’’’’’’’’eNO’`’f’e’c’b’a’_’^’\’Z’Y’W’V’T’S’Q’g’Œ !žc“ P’’’’’’’Ųž’’’’’’’/R€€€€€€* wŅįxÄó’’üŚ›;.€€€€€€€8ąž’’ļĄt=¦č’’ųÉqp€¶’’’’’’’†€\’’’’’’’’_8ąž’’ļĄtR€€€€€€>M¤ĻÕ¶ap€¶’’’’’’’†€\8ąž’’ļĄtR€€€€€€* wŅį!)mÆÖ§ūó½’ļŗž¼“āE6Y' bfõd’l’‚’… ’„ ’ƒ ’ƒ ’‚’‚’’€’€’~’}’}’|’n’*’’bbb’ūūū’žžž’üüü’žžž’’’’’žžž’nVV’e’l’j’i’h’f’d’c’b’`’_’]’\’Z’Y’W’q’Ž!"żP–P’’’’’’’Ų‹’’’’’’’@¤’’’’’’T-ß’’äjó’’’’’’’’’±\’’’’’’’ ¢’’’’’’’’’ša ’’’’’’’ōą’’’’’’’’’’’øÅ’’’’’’’ē ¢’’’’’’’’’ša¤’’’’’’|¹’’’’’’­ą’’’’’’’’’’’ø ¢’’’’’’’’’ša¤’’’’’’T-ß’’ä%.„€Č䲞ō¾’ķø’²‹Ö4(G%^fōd’o’‡’ ’Ž!"’‹!"’‡ ’… ’„ ’ƒ ’ƒ ’‚’’’{’s’}’g"#’ƒ||’¼¼¼’żżż’’’’’’’’’’’’’’’’’ģķķ’W44’n’q’o’n’m’k’j’h’g’f’d’c’a’`’^’]’{’!"üA|P’’’’’’’Ų¶’’’’’’’:¤’’’’’’tė’’’䎒’’’’’’’’’’’Ś\’’’’’’’Ā’’’’’’’’’’’’sø’’’’’’’’ōą’’’’’’’’’’’ø÷’’’’’’’ Ā’’’’’’’’’’’’s¤’’’’’’€Į’’’’’’’’]ą’’’’’’’’’’’øĀ’’’’’’’’’’’’s¤’’’’’’tė’’’ä5)AµĪė·żō¾’䱿£Ģ* :' ^góm’‡*,’ ]b’¦nu’”47’%&’˜$%’“#$’!"’‰ !’† ’… ’„ ’n’9’1!$’J’|’t67’°””’ķģģ’śūū’žžž’żżż’īļ˜˜’`’w’v’t’s’q’q’o’n’l’l’j’h’g’f’d’d’‚ ’ !÷/ [P’’’’’’’ŲOž’’’’’’’&¤’’’’’’ō’’’’äa’’’’’’’’’’’’’’Į\’’’’’’’“’’’’’’’’’’’’’ż6…’’’’’’’’’ōą’’’’’’’’’’’ø ’’’’’’’’q“’’’’’’’’’’’’’ż6¤’’’’’’ę’’’’’’’’’ŗą’’’’’’’’’’’ø“’’’’’’’’’’’’’ż6¤’’’’’’ō’’’’ä@2Pæ•ßšŗžō¾’ä²ż“qæ_+Ÿ€ö’*-’£~‰’±ÅÓ’“ŹŲ’Ǝ˜’§=?’¤&'’¢&'’ž&'’š$%’”#$’"#’‰ !’O’#’88=’ ’u’’t%%’Šee’Ŗœœ’Ąŗŗ’¶°°’ˆpq’e*+’z’{’z’y’w’w’u’t’r’r’p’o’n’l’k’j’k’ˆ !’† ķ=P’’’’’’’ģ‘Äž’’’’’’’ń¤’’’’’’’’’’’äķ’’’’’’’’’’’’’’’]\’’’’’’’*ż’’’’’’ŃÄ’’’’’’¹!ł’’’’’’’’’ōą’’’’’’’’’’’ø1’’’’’’’’Q*ż’’’’’’ŃÄ’’’’’’¹¤’’’’’’’’’’’’’’’’čą’’’’’’’’’’’ø*ż’’’’’’ŃÄ’’’’’’¹¤’’’’’’’’’’’ä775…}L×Ó«0ūź·’ń¼’Ž­ū°tõ™2&ž•eq’—øŠ’§ÉÜ’²ĢÜ’“É×’°š£’§?B’„(*’„'(’¤'(’¢&'’ &'’š%&’\’’98<’ ’o’… ’ƒ’ !’{''’y..’v*+’x!!’}’’~’}’|’|’z’z’x’w’v’t’t’s’q’p’n’q’!"’ć $P’’’’’’’’’’’’’’’’’’°¤’’’’’’’’’’’äo’’’’’’’’’’’’’’’’Ļ\’’’’’’’•’’’’’’Æn’’’’’žŒ’’’’’’’’’’ōą’’’’’’’’’’’øA’’’’’’’’D•’’’’’’Æn’’’’’ž¤’’’’’’’’’’’’’’’’łą’’’’’’’’’’’ø•’’’’’’Æn’’’’’ž¤’’’’’’’’’’’ä!!!1666hhiü‹|žµžV’å·,’š»’ŪŖ’Ÿ{=’y–­’„µŃ’’ĄŁ’¤ČÜ’±ĢÜ’µĶŪ’±„°’ØPT’„&'’„'(’„'(’„'(’„'(’t’’86;’ ’n’"#’‹!"’‡ !’… ’… ’„ ’ƒ ’ƒ ’‚’‚’’€’€’~’}’|’|’w*.’X2<’d-6’v "’v’u’s’x’!"’uŠ P’’’’’’’’’’’’’’’’’’@¤’’’’’’’’’’’äĆ’’’’’’’i5Ł’’’’’’’#\’’’’’’’å’’’’’’6ó’’’’’^į’’’’’’’’ƖĆÜüż’’’’’’’üüµI’’’’’’’’?å’’’’’’6ó’’’’’^¤’’’’’’’’’’’’’’’’üÜüż’’’’’’’üüµå’’’’’’6ó’’’’’^¤’’’’’’’’’’’ä,,,T{{{½'''>@IIIįmmm’‹‰„’”‘`’ąµ3’å·+’”œZ’e”­’v§Ć’ƒ“Š’’æŁ’¤ĒÜ’°ĖÜ’“ĢŚ’±­¹’ØLQ’„*+’„'(’„'(’¦'(’ƒ ’ ’64:’’k’”()’œ'(’–%&’‘#$’Œ""’ˆ!!’† ’… ’„ ’„ ’ƒ ’ƒ ’‚ ’’€’’„/1’‚u‚’#E]’/Mf’hM[’z"$’y’x’’‘"#’`²P’’’’’’’’’’’’’’’’’­¤’’’’’’’’Ęe8#ś’’’’’’ĮY’’’’’’’_\’’’’’’’!’’’’’’ńŃ’’’’’Œ’’’’’’’’žl’’’’’’’ B’’’’’’’’I!’’’’’’ńŃ’’’’’Œ¤’’’’’’’qCÜ’’’’’’ül’’’’’’’ !’’’’’’ńŃ’’’’’Œ¤’’’’’’’’Ęe8# AAAƒ¢¢¢śzzzĒ/*6[99ĻQLL’rqq’{z{’ŽŒƒ’ž–’¾¦I’}w’b‘Ŗ’q£æ’€±Ģ’޽ؒ ÅÜ’ÆĖÜ’“ĶÜ’³øÅ’Ŗdk’¢*+’¤()’„()’’$%’ ’104’’]’Ø+,’¦*+’¦*+’¤+,’ *+’›()’–&'’$%’Š""’‡ !’… ’… ’„ ’ƒ ’ƒ ’‰69’¤”ž’«Ē×’Mx‘’*[w’Y†”’z\i’}!#’|’… ’”"#’DŠP’’’’’’’’’’’’’’’’Ķ ¤’’’’’’’¦)’’’’’’’…’’’’’’’‡\’’’’’’’H’’’’’’łŌŌŌŌö’’’’’ØH’’’’’’’žl’’’’’’’ 2’’’’’’’’`H’’’’’’łŌŌŌŌö’’’’’ؤ’’’’’’Öv’’’’’’ül’’’’’’’ H’’’’’’łŌŌŌŌö’’’’’ؤ’’’’’’’¦999|ŸŸŸü›››ūn``µƒ99Āt**łgHH’vtt’ƒƒƒ’““”’——•’Ą£L’Ö°.’€‘t’_©’q¢¾’€²Ķ’޼ג ĘÜ’®ĖÜ’“ĶÜ’²ŗĒ’Z_’q88’<<’'(’# ’,+.’ ’P’§*+’¦*+’§+,’§,-’§,-’¦-.’„-.’¢,-’*+’˜((’’%%’Œ"#’ˆ!"’† ’‰02’£™’³Č×’²ĢܒаǒIz–’`’®’{–®’€>D’’‰ !’’!"ü4 jP’’’’’’’’’’’’’’’” ¤’’’’’’’#A’’’’’’’jż’’’’’’Ÿ\’’’’’’’`’’’’’’’’’’’’’’’’’¶`’’’’’’’Ül’’’’’’’ ’’’’’’’’‰`’’’’’’’’’’’’’’’’’¶¤’’’’’’¼d’’’’’’ül’’’’’’’ `’’’’’’’’’’’’’’’’’¶¤’’’’’’’#,,,i‹‹‹ų¢¢¢’•““ž‹vv’„mm’‚’‚‚‚’†††’‡‡‡’““”’Ŗši’ģ¹!’ݲ&’Œ“a’`ŒŸ’mŸ»’}®Ź’‹»Ö’šĆŪ’¬ŹÜ’ÆÉ×’LTW’!!!’SSS’B))’$ ’"!#’(&(’>’¦*+’¦*+’§+,’§,-’§-.’Ø./’Ø./’Ø/0’Ø/0’§/0’¦00’¢..’+,’™>@’§—”’“ĪÜ’±ĢÜ’„ČÜ’“æŁ’z«Ē’r£æ’ÆĖ’ƒhv’ƒ !’€,1’z%)ļ# FP’’’’’’’’’’’’ćŸ0¤’’’’’’éJ’’’’’’’aö’’’’’’©\’’’’’’’i’’’’’’’’’’’’’’’’’ŗj’’’’’’’Ēl’’’’’’’ ń’’’’’’’Ķi’’’’’’’’’’’’’’’’’ŗ¤’’’’’’¼d’’’’’’ül’’’’’’’ i’’’’’’’’’’’’’’’’’ŗ¤’’’’’’é'Oqnnń‹‹‹’’’’’’‡ˆˆ’‚‚‚’yyy’QQQ’;;;’^^^’›“x’ܱ-’ņ¼’޲$’‹_’]Š ’l¹’}®Ź’‰¹Õ’›ĆÜ’£ĮŅ’156’’DEE’734’’’++-’- ’•%&’”()’§+,’§,-’§-.’Ø./’Ø./’Ø/0’©/0’©01’©12’©12’ŖCE’Ɨ”’“ÉŲ’²ĢÜ’§ČÜ’”ĄŚ’„µŃ’u¦Ā’g—“’s…œ’…GO’Zb’DMa’3:Mī!UP’’’’’’’ā@=.¤’’’’’’ŌG’’’’’’’fū’’’’’’¦\’’’’’’’g’’’’’’œœœœœœœœmf’’’’’’’Ķl’’’’’’’ Ā’’’’’’’’0g’’’’’’œœœœœœœœm¤’’’’’’¼d’’’’’’ül’’’’’’’ g’’’’’’œœœœœœœœm¤’’’’’’ŌGW78ČcCCżWVV’{{{’ŸŸŸ’———’ŽŽŽ’~~~’>>>’)))’777’‡†‚’¹M’ź¶’š»’ć³ ’œ—S’a‰”’iš·’yŖĘ’‡·Ó’’¼Õ’=EJ’ ’'''’???’ ’’6;>’(’x’€’Š"#’•&&’Ÿ)*’¤,-’Ø./’©/0’©/0’©01’©13’«GI’±¦’µĪÜ’±ĢÜ’„ČÜ’“ĄŁ’‚³Ļ’u¦Ā’a‘¬’fo„’‹QY’¢‰“’¬ÄŌ’Al…’Hcž:ayŃ(P’’’’’’’Ų¤’’’’’’Š6’’’’’’’{’’’’’’’•\’’’’’’’Y’’’’’’ŲW’’’’’’’šl’’’’’’’ ’’’’’’’’ÄY’’’’’’Ų¤’’’’’’¼d’’’’’’ül’’’’’’’ Y’’’’’’Ų¤’’’’’’ŠT"#eš9:ć|$%žd%%’o``’HHH’’¶¶¶’œœœ’ŽŽŽ’ddd’%%%’JJJ’‰ˆ‰’›Ši’Ķ !’éµ’ń»’ß°’œ”L’[„–’g˜“’z«Ē’„µŃ’Vmy’’’<<<’’ "’S\a’B58’x !’|’|’}’‚ ’Š"#’•&'’Ÿ+,’§./’©/0’ŖDF’°—”’“ŹŁ’²ĢÜ’§ČÜ’”ĄŚ’„µŃ’u¦Ā’b“Æ’gtŠ’—ny’©„±’­ĘÖ’«ĒŲ’m•®’'Tp’Crś/HYƒ P’’’’’’’Ų¤’’’’’’Š’’’’’’’ŖA’’’’’’’u\’’’’’’’<’’’’’’ė%,,,,,8’’’’’’’’Ql’’’’’’’ -’’’’’’’’’ŗ&n <’’’’’’ė%,,,,,¤’’’’’’¼d’’’’’’ül’’’’’’’ <’’’’’’ė%,,,,,¤’’’’’’Њ@A£µOPóx&&’i’h’u;;’hPP’i__’™––’Æ®®’¬¬¬’ššš’yyy’………’†††’’žŒa’Ō©+’ī¹’ņ¼’௒šŠB’^}†’d•±’t„Į’m“©’#*/’’...’’&(*’ltx’ZTU’y&&’|’|’|’|’|’|’’‡"#’˜<>’°§’µĪÜ’±ĢÜ’„ĒÜ’“ĄŁ’‚“Ļ’t„Į’a‘¬’g~–’–œ’±Ć’ˆØ½’‰ŖĮ’‰±Ķ’s„Å’Ct”’Gy›’Gs‘Ó#4P’’’’’’’Ų¤’’’’’’Šä’’’’’’õ!­’’’’’’’D\’’’’’’’ž’’’’’’ ÷’’’’’I ü’’’’’’’šwW‡l’’’’’’’ Ä’’’’’’’’’’ēįż’,ž’’’’’’ ÷’’’’’I¤’’’’’’¼d’’’’’’ül’’’’’’’ ž’’’’’’ ÷’’’’’I¤’’’’’’И35øŃRS’½VV’¢HH’-.’k’g’g))’i<<’tUU’ˆuu’›””’ŖŖŖ’Ø©©’•••’‚‚‚’€~’šŽj’ŃŖ1’š»’šŗ’Ü«’˜€<’UwŽ’_¬’qŸ¹’EXc’ ’’’"#$’bik’IKL’g((’|’|’|’|’|’|’|’‚36’”š’“ĖŁ’²ĶÜ’„ČÜ’“ĄŁ’„µŃ’u¦Ā’b’®’e‹¤’‘£¶’—µĒ’±Å’4Zs’7c€’a•¹’[’ø’Nƒ¦’Oƒ§’R„¤ē)2HP’’’’’’’Ų¤’’’’’’М’’’’’’’ńÜ’’’’’’’ó \’’’’’’’Ģ’’’’’’Ÿ–’’’’’üÄ’’’’’’’’’’ōl’’’’’’’ @’’’’’’’’’’’’’’,Ģ’’’’’’Ÿ–’’’’’ü¤’’’’’’¼d’’’’’’ül’’’’’’’ Ģ’’’’’’Ÿ–’’’’’ü¤’’’’’’Šj„Ź/0ūĻ67’ÓCD’ŠUV’æWW’CC’,,’m’g’e’g''’l@@’]]’‘€’™——’ŽŽŽ’‚’•Žy’ɧ@’ėø’ī¹’ŚŖ’”r8’[lz’]ŽŖ’c‰Ÿ’#')’’’ ’FJM’/24’-’u !’|’|’|’|’|’‚04’„Ø’“ĶŪ’°ĢÜ’¤ĒÜ’’æŲ’‚³Ļ’t„Į’_¬’c©’±Ę’ž¼Ļ’ŖÅÕ’ØÄÕ’7d}’#Tp’U†„’R„¦’Br’ü6^xŲ%9Fi P’’’’’’’Ų¤’’’’’’Š:’’’’’’’’’’’’’’’’š\’’’’’’’p’’’’’’’ōó’’’’’’¶h’’’’’’’’’’ōl’’’’’’’  ’’’’’’’’’’’’’,p’’’’’’’ōó’’’’’’¶¤’’’’’’¼d’’’’’’ül’’’’’’’ p’’’’’’’ōó’’’’’’¶¤’’’’’’ŠL_Į-.ļĪ12’Ī12’Ļ34’Š9:’ŃHI’ĖUV’“RR’“==’u%%’h’a’n’w*+’tMM’‡ƒƒ’‘‘‘’ŠŠ‰’”€’ƦP’īŗ’ī¹’Ź›’c0’Wg}’Yˆ£’=PZ’’’ ’CFJ’IMP’IJO’Šbh’}"#’|’|’|’ƒ58’”š’“ĖŁ’²ĢÜ’„ĒÜ’“æŁ’ƒ³Ļ’t„Į’a’®’`Ø’‰¬Ā’¢ĄŅ’°ŹŁ’“ĶÜ’ÆĖŪ’j”­’:k†’a’®’\Цł.Mb²$AP’’’’’’’Ų¤’’’’’’е’’’’’’’’’’’’’’ö \’’’’’’’ ē’’’’’’’’’’’’’ž; ā’’’’’’’’’ōl’’’’’’’ Ķ’’’’’’’’’’’’, ē’’’’’’’’’’’’’ž;¤’’’’’’¼d’’’’’’ül’’’’’’’ ē’’’’’’’’’’’’’ž;¤’’’’’’Š3 @²*+ŻĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ń:;’ŌJK’ĖVW’²PP’‹9:’{&'’{’z’s66’zkk’’‘‘’ˆˆˆ’ŒŠ†’·¢a’ä¶*’ī¹’ǘ’ˆO+’\Yk’Eg|’’&&&’"""’268’`kj’¢Ŗ’²ČÕ’š}…’-0’|’ƒ36’¦ «’“ĢŪ’±ĢÜ’¤ĒÜ’¾Ų’²Ī’r£æ’^«’_Œ§’ŽÆÅ’©ÅÕ’“ĶÜ’³ĶÜ’®ŹÜ’¢ĘÜ’ŠøŅ’e–²’p”½’k”­Ž -P’’’’’’’Ų¤’’’’’’Šę’’’’’’’’’’’’’d\’’’’’’’Mž’’’’’’’’’’’’ŒFż’’’’’’’’ōl’’’’’’’ Å’’’’’’’’’’’,Mž’’’’’’’’’’’’Œ¤’’’’’’¼d’’’’’’ül’’’’’’’ Mž’’’’’’’’’’’’Œ¤’’’’’’Š&ž$&ÄĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ56’Š>?’ĶKL’ÄUV’¬LM’45’}#$’t23’}kk’’ŠŠŠ’‹‡’§˜i’į“+’ā°’ĄŠ’‹J)’XN]’&,’’///’)-.’’£½Ė’²ĶÜ’²ĘŌ’žŠ“’ˆEI’¢’œ’“ĖŚ’²ĢÜ’¤ĒÜ’’æŁ’‚³Ļ’t„Į’`‘­’^‹„’ÆĆ’®ČŲ’“ĶÜ’²ĢÜ’ŖÉÜ’œÄے޽ؒ²Ī’t„Į’vØÄžg„Ķ$P’’’’’’’Ų¤’’’’’’Š)Ž’’’’’’’’’’üo\’’’’’’’eū’’’’’’’’’’˜eż’’’’’’’ōl’’’’’’’ ›ž’’’’’’’’’,eū’’’’’’’’’’˜¤’’’’’’¼d’’’’’’ül’’’’’’’ eū’’’’’’’’’’˜¤’’’’’’Š‚¢Ķ01žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī34’Ņ@A’ŅQR’ĀTU’ØGH’Œ@A’y``’Šˆˆ’ŽŽ’€€€’ulQ’”"’ß®’ĄŒ’„<#’E+.’BBC’CCC’’gpm’•øÉ’¦ČÜ’²ĢÜ’“ĶŪ’°ĄĪ’“ĢŚ’°ĖÜ’¤ĒÜ’¾Ų’³Ī’q¢¾’]ŽŖ’d©’šøĖ’³ĢŪ’“ĶÜ’ÆĖÜ’£ĒÜ’”ĄŚ’†·Ó’{¬Č’nŸ»’_Œ§’UcuŲ$*AP’’’’’’’Ų¤’’’’’’Š‹ń’’’’’’ž¼5\’’’’’’’5Ą’’’’’’’ŌR>Ļ’’’’’’×l’’’’’’’ 5·ū’’’’’’Ī5Ą’’’’’’’ŌR¤’’’’’’¼d’’’’’’ül’’’’’’’ 5Ą’’’’’’’ŌR¤’’’’’’Šh‚Ģ01żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ23’Š9:’ŠCD’ŹPQ’ø__’¢op’œ‰‰’spp’())’1-!’“v’Õ§’µ~’zYF’|z{’lll’[iq’|’’Š®¾’“ĄŁ’ØČÜ’³ĶÜ’µĪŻ’²ĢÜ’£ĘÜ’’æŁ’‚³Ī’t„Į’`¬’j”­’ž»Ķ’“ĶŪ’³ĶÜ’«ŹÜ’ŸÅÜ’½Ų’ƒ“Š’wØÄ’hš¶’]›’oQ`žY"« FuŒ‘\\’’’’’’’#b…‘‰j03oŒzDWwކb$#b…‘‰j0#b…‘‰j0DUČ/0ųĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ56’øhi’©ww’¹fg’ŖWW’pBC’G11’.'"’eR’Ėž’ŗ‰$’–[L’ø§§’“§³’|—ž’ƒ”«’ˆ¶Ļ’«ŹŪ’“ĪÜ’°ĢÜ’£ĒÜ’½×’²Ī’q”¾’h—±’„©½’­Č×’“ĶÜ’°ĖÜ’„ĒÜ’–ĮŚ’ˆøŌ’|­Ź’p”½’aŖ’go…’:B’"$śI‚\’’’’’’’( 2Ć./ņĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī78’ɋŒ’­©©’aa’ÄDE’ĶHI’øTU’QR’c>;’nS"’»’’°s!’³‡’§®³’xŒ•’ˆ”§’ŸĄŃ’“ĶÜ’±ĢÜ’¢ĒÜ’‘¾Ł’€±Ķ’r£Ą’sŸø’–¶É’±ĖŁ’“ĶÜ’­ŹÜ’”ĘÜ’‘æŁ’„µŃ’yŖĘ’jœø’]‰¤’€l}’”;A’‘"#’‹ !ö6 a\’’’’’’’  ³)*ßĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī78’ĶŽ’ĀĄĄ’¦¤¤’žŠŠ’—bc’Œno’Ÿ€€’¬qq’°ab’¬`K’Ā„3’æ“]’µ¬¬’—…ˆ’«ĮŹ’“ĶŪ’ÆĖÜ’¢Ęܒ޼ג€±Ķ’x¦Į’‡­Ä’¬Č×’“ĶÜ’°ĖÜ’§ČÜ’˜ĀŚ’‰¹Õ’~ÆĖ’q¢¾’b’®’\w’’\i’«;=’’#$’‘"#’ƒč!;\’’’’’’’—#$¼Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī67’Ķ€’Ā»»’§ØØ’½¾¾’›œœ’‘’’’ĀĆĆ’µ±±’Ÿtu’ÅEF’ŃSL’Ńn]’Ǝ’²Ÿ¦’²ĒÕ’°ĶŽ’¢ĘÜ’‘¾Ų’€±Ķ’|«Å’š¼Ļ’°ŹŁ’“ĶÜ’ÆĖÜ’¢ĘÜ’“ĄŁ’†·Ņ’z«Ē’mžŗ’ZŒØ’\k’ŽJS’“AC’–&'’‘"#’‘"#’xŌ#\’’’’’’’pŒĶ01žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī56’Ąbb’ššš’•••’………’†††’ÉÉÉ’ĖĖĖ’ „„’½56’Ī23’Ī45’Ń?A’ŌWX’Ėuy’ø“’œ©¾’ˆ¬Å’“Ź’ØĒ×’³ĶÜ’±ĢÜ’ØČÜ’šĆŪ’‹ŗÕ’±Ģ’s¤Ą’c”°’X{”’eO^’Ž59’·BC’š)*’‘"#’‘"#’‘"#’hø\’’’’’’’OcĘ/0öĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’ŗef’°³³’¶¶¶’|||’rr’ĒĮĄ’ĢĪĪ’ž‚‚’¾55’Ī12’Ī12’Ī01’Ī12’Š9:’ŃFH’É^b’»y’ŗ¢¬’µ»Ē’­ÉŚ’£ČŽ’”ĄŚ’‡·Ó’{¬Č’nŸ»’\Ø’Xo†’l?J’ˆ)+’¶BC’¢/0’‘"#’‘"#’‘"#’!"üR™\’’’’’’’5 C¶+,āĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ67’¶‡‡’®°°’“““’†tt’¢BB’ŹVV’͆†’¦pp’Į45’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ34’Ļ78’ŃJL’Ńdg’Ą„‹’¦›¬’ŒØĄ’y¤¾’f–²’ZŠ„’tš±’•š’Š8;’²@A’©56’‘#$’‘"#’‘"#’‘"#’!"ł7 Ž' &%&ĀŠ02žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī23’ČZZ’°  ’žžž’Ÿžž’–ww’©IJ’Å-.’Ī23’Č89’Ģ23’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī23’Ņ<=’ŃMN’Įfl’¦z…’|’’‚³’ŖĒŲ’²¾Ė’¶fj’³<=’”$%’‘"#’‘"#’‘"#’‘"#’‡ õ$ŽQ=( - S… Õ¶+,ōČ/0żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ9:’Åpq’“ŒŒ’§’Švv’™ZZ’„KK’»,-’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ56’Ļ=>’ĖQT’Čqv’½˜’»‰’ŗIK’–&'’‘"#’‘"#’‘"#’‘"#’‘"#’yč~ZL<.8' }jÅ£&'šČ/0žŠ23’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’ĖIJ’Ćef’²56’«>>’ž23’©RR’«OO’¹+,’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ļ34’Ó@A’ĪLM’Ÿ-.’‘"#’‘"#’‘"#’‘"#’‘"#’‘"#’hÖ nVI<1$  *fPµ•#$ęĄ,.łĢ/1žĪ12’Ī12’Ī12’Ī12’Ī12’Ī/0’Č`a’¼QQ’¹,-’Ź01’Ä/0’æTU’®TT’ø+,’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Į./’—$%’‘"#’‘"#’‘"#’‘"#’‘"#’!"žTĮbN@3(  I9 •zҰ)*õĖ01’Ļ12’Ī12’Ī12’Ī01’ÉOP’²ee’¹GH’Ė67’Ī12’ĘST’ÆYZ’¶*+’Ģ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’¼-.’•#$’‘"#’‘"#’‘"#’‘"#’‘"#’‹!"ł3 ”U:' ’’’’’’’’’’’’’’’’’’’’’’’’ 6* {bĮ¦'(īĘ/0üĪ12’Ī12’Ķ45’ĀGH’²]^’²gh’½UU’Ę^^’µTT’µ*+’Ģ01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ12’ø,-’”#$’‘"#’‘"#’‘"#’‘"#’‘"#’iå„R5 ’’’’’’’’’’’’’’’’’]I¦Œ!"ßŗ+,łĶ12’Ī11’Ē12’½=>’¶XY’ø[[’¶56’½-.’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ12’³*+’’#$’‘"#’‘"#’‘"#’‘"#’ö) “iP>* ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’I6 wÓ²*+öŹ/0žĪ01’É01’Į/0’æ./’Ė01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ12’®)*’’"#’‘"#’‘"#’‘"#’Ž!"żMÕƒZK>0!’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 1"u]»ž%%ėĮ./ūĻ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ01’Ŗ()’‘"#’‘"#’‘"#’‘"#’pķžgRE9-" ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!^E£!"į¹,,ųĪ12’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ė01’¤'(’‘"#’‘"#’‘"#’… ł3 Ćx\MA4) ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ B- „sĻ©'(ńŹ/0žĻ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ź01’Ÿ&'’‘"#’‘"#’ "žTŻ’fVH<0% ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ /l]¾š$%éĆ./üĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Č01’›$%’‘"#’’"#’yó®v^QD8,!’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’RA£Ž»,-ūĪ12’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Å/0’—#$’‘"#’‰!ū: φhXL?3' ’’’ @. kŠÆ)*ōĒ/0żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ā./’”#$’!"ž^ę £sbTG:.# ’’’’’’'oP³”##ėæ-.żŠ13’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ12’½-.’’"#’}ö»ƒi\NB5*   Z: ¢ˆ ć¹+,ųĢ01žĪ12’Ī12’Ī12’Ī12’Ļ12’ø,-’Œ !żEŪ–udWJ>1'  8!yfœ%&źĒ/0żŠ12’Ī12’Ļ23’Æ)*žcģ®m_RE8," /dS²˜#$åĒ/0śĪ01ž &&ł* Ė’vhZM@4( 7/ m½JÉ™yfWH:-" 3UN<.$ ž/DŹB 1ŅBC@ CCC(R/Users/me/Source/GNUstep/ProjectCenter/Info.tiff//šHHapps-projectcenter-master/English.lproj/Info.gorm/data.classes000066400000000000000000000002741347226342500250360ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; PCInfoController = { Actions = ( ); Outlets = ( infoWindow, versionField ); Super = NSObject; }; }apps-projectcenter-master/English.lproj/Info.gorm/data.info000066400000000000000000000002701347226342500243300ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/English.lproj/Info.gorm/objects.gorm000066400000000000000000002561021347226342500250700ustar00rootroot00000000000000GNUstep archive000f4240:00000021:00000096:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C³€ CŒ&% C" Có€01 NSView% ?€ A C³€ CŒ  C³€ CŒ&01 NSMutableArray1 NSArray&  01 NSImageView1 NSControl% A CF C§ B  C§ B&0± &%0 1 NSImageCell1NSCell0 1NSImage C—€ Bˆ0 1NSColor0 ±&% NSCalibratedWhiteColorSpace 0 ± &01NSBitmapImageRep1 NSImageRep0±&% NSDeviceRGBColorSpace C—€ Bˆ%%/%D01NSData&BŠBŠII*ųA /l*+µJKŽ“JKց56™U##e5@ "  QޱCD÷ĖST’ŲZ[’ŚZ[žĶUVńŗMNܟBC¼{34“V#$g)2  @jżk’m!"’./’ >?’·JK’ĘQR’ŠVWžŃWXśĶUVņ½OOą;<«f**y>J%-  @šhżd’P’F’L’W’i"#’‚/0’š;<’øJK’ĖTU’Ł[\’ÖYZūÄQRčÆIIϊ9:¤i+,}>K % ?—hżd’T’N’M’L’K’I’J’N’Y’s'(’56’ÆEF’ĄNO’ĢSTžĻVWūĢUVņ“bcć’vwĄnWXnii‹ghh’.,,C  …ÖéĘa >“iżd’W’S’S’Q’P’O’N’K’J’G’F’M’[’s'(’‹34’§CC’ŸXX’œyy’²ØØ’¾ææ’‘‘’ƒ~~Śq``”L>>`':Ó’’’’’–= hüd’Z’Y’Y’W’V’T’S’Q’P’N’M’K’J’I’H’K’R’i12’ŸŽŽ’”ƒƒ’ŠYY’‰]]žŒppü‰rrö—PPē«HHĢ‹9:„\&&m5? $ <<<<<<<<8*˜’’’’’’’IcšøĄ“•f&< Šhüd’\’_’_’]’[’Z’Y’W’V’T’S’Q’P’N’M’K’I’J’U,,’O ’P’b ’r*+’†88’¬FG’ČRS’ÓWXžÕXYūÉTUķ­HH͊99¤c)*v<H &  P’’’’’’’’’’’ōĀ}š’’’’’’’Ÿšł’’’’’’’’+: †hūc’^’e’e’c’a’`’_’]’[’Z’X’W’U’S’R’P’P’N’L’K’I’G’F’H’M’[’p&'’56’ŖCD’ĮNO’ĶTUżĻVWłÉTTīµKL֘?@“q//‡FT%-P’’’’’’’’’’’’’’śŠ ’’’’’’’’ŗ?é’’’’’’’’’’,9 gśc’a’i’j’h’g’e’d’c’a’`’^’]’[’Y’X’V’U’K’>’9 ’?’I’L’J’I’G’F’E’J’W’m%%’‡22’„AA’¼LM’ĢSTžŃWXśĶUVņ¹LMښ?@¶u01‹L [+3P’’’’’’’’’’’’’’’’Äļ’’’’’’’ž9ˆˆˆˆˆˆˆE÷’’’’’’’’’’’,9ˆˆˆˆˆˆˆ7 |gśc’c’o’o’m’l’k’j’h’g’e’d’b’a’_’^’[’@’’’’’’4 ’M’O’M’L’J’I’G’E’E’H’R’d !’}--’š;<’“HI’ČRS’ĻUVūĪVWōĮPQć£CDĮ‚66›L`P’’’’’’’’’’’’’’’’’ •’’’’’’’Bl’’’’’’’ #ń’’’’’’’’’’’’,l’’’’’’’   6 xgłc’e’s’s’r’q’p’o’m’l’k’i’h’f’e’c’O’’’’’’’’, ’O’S’Q’P’N’M’K’J’H’G’D’D’G’O’`’w*+’”99’ÆFG’ĘQR’ĢSTżš34į+ HP’’’’’’’’’’’’’’’’’’/Š’’’’’‹l’’’’’’’ ½’’’’’’’’’’’’’,l’’’’’’’  $H9[{a ˜nV ‘3 sgłc’g’x’x’w’v’u’s’r’q’p’n’m’l’j’i’3 ’’’’’’’BBB’B==’?’W’W’U’T’R’Q’O’N’M’K’I’H’F’D’C’D’I’]’*+’†!ģ* OP’’’’’’’’’’’’’’’’’’Ÿ ‚ÓęĀYl’’’’’’’ ^’’’’’’’’’’’’’’,l’’’’’’’ 1%>“s¹Ö§ķē“üĢ ónV Ž - ogųc’i’{’|’{’z’y’x’w’v’t’s’q’q’o’m’% ’’’’’’’   ’ŻŽŽ’–‘‘’T’]’[’Z’X’W’U’T’R’Q’O’N’L’J’I’G’F’O’… ’~į AP’’’’’’’Ų 9æ’’’’’’’įl’’’’’’’ Ń’’’’’’’’õŠH;e¾+l’’’’’’’ qX ˆĻ”õģø’šŗ’ɝń^I | * jg÷c’j’’€’’~’}’|’{’z’y’x’w’u’t’s’0 ’’’’YYY’000’&&&’“““’žžž’ģķķ’X34’`’a’_’^’]’[’Z’X’W’U’T’R’P’O’M’L’\’Š !’tĪ,P’’’’’’’Ų ć’’’’’’’  l’’’’’’’ 8’’’’’’’’ļ, l’’’’’’’  n©Ó„ūš»’ļŗ’Ą•ęN<g) fgöc’k’’ƒ ’‚ ’’€’€’~’~’|’|’z’z’y’x’N’’’AAA’ééé’ÓÓÓ’«««’ąąą’’’’’’’’’eNO’`’f’e’c’b’a’_’^’\’Z’Y’W’V’T’S’Q’g’Œ !žc“ P’’’’’’’Ųž’’’’’’’/R€€€€€€* wŅįxÄó’’üŚ›;.€€€€€€€8ąž’’ļĄt=¦č’’ųÉqp€¶’’’’’’’†€\’’’’’’’’_8ąž’’ļĄtR€€€€€€>M¤ĻÕ¶ap€¶’’’’’’’†€\8ąž’’ļĄtR€€€€€€* wŅį!)mÆÖ§ūó½’ļŗž¼“āE6Y' bfõd’l’‚’… ’„ ’ƒ ’ƒ ’‚’‚’’€’€’~’}’}’|’n’*’’bbb’ūūū’žžž’üüü’žžž’’’’’žžž’nVV’e’l’j’i’h’f’d’c’b’`’_’]’\’Z’Y’W’q’Ž!"żP–P’’’’’’’Ų‹’’’’’’’@¤’’’’’’T-ß’’äjó’’’’’’’’’±\’’’’’’’ ¢’’’’’’’’’ša ’’’’’’’ōą’’’’’’’’’’’øÅ’’’’’’’ē ¢’’’’’’’’’ša¤’’’’’’|¹’’’’’’­ą’’’’’’’’’’’ø ¢’’’’’’’’’ša¤’’’’’’T-ß’’ä%.„€Č䲞ō¾’ķø’²‹Ö4(G%^fōd’o’‡’ ’Ž!"’‹!"’‡ ’… ’„ ’ƒ ’ƒ ’‚’’’{’s’}’g"#’ƒ||’¼¼¼’żżż’’’’’’’’’’’’’’’’’ģķķ’W44’n’q’o’n’m’k’j’h’g’f’d’c’a’`’^’]’{’!"üA|P’’’’’’’Ų¶’’’’’’’:¤’’’’’’tė’’’䎒’’’’’’’’’’’Ś\’’’’’’’Ā’’’’’’’’’’’’sø’’’’’’’’ōą’’’’’’’’’’’ø÷’’’’’’’ Ā’’’’’’’’’’’’s¤’’’’’’€Į’’’’’’’’]ą’’’’’’’’’’’øĀ’’’’’’’’’’’’s¤’’’’’’tė’’’ä5)AµĪė·żō¾’䱿£Ģ* :' ^góm’‡*,’ ]b’¦nu’”47’%&’˜$%’“#$’!"’‰ !’† ’… ’„ ’n’9’1!$’J’|’t67’°””’ķģģ’śūū’žžž’żżż’īļ˜˜’`’w’v’t’s’q’q’o’n’l’l’j’h’g’f’d’d’‚ ’ !÷/ [P’’’’’’’ŲOž’’’’’’’&¤’’’’’’ō’’’’äa’’’’’’’’’’’’’’Į\’’’’’’’“’’’’’’’’’’’’’ż6…’’’’’’’’’ōą’’’’’’’’’’’ø ’’’’’’’’q“’’’’’’’’’’’’’ż6¤’’’’’’ę’’’’’’’’’ŗą’’’’’’’’’’’ø“’’’’’’’’’’’’’ż6¤’’’’’’ō’’’’ä@2Pæ•ßšŗžō¾’ä²ż“qæ_+Ÿ€ö’*-’£~‰’±ÅÓ’“ŹŲ’Ǝ˜’§=?’¤&'’¢&'’ž&'’š$%’”#$’"#’‰ !’O’#’88=’ ’u’’t%%’Šee’Ŗœœ’Ąŗŗ’¶°°’ˆpq’e*+’z’{’z’y’w’w’u’t’r’r’p’o’n’l’k’j’k’ˆ !’† ķ=P’’’’’’’ģ‘Äž’’’’’’’ń¤’’’’’’’’’’’äķ’’’’’’’’’’’’’’’]\’’’’’’’*ż’’’’’’ŃÄ’’’’’’¹!ł’’’’’’’’’ōą’’’’’’’’’’’ø1’’’’’’’’Q*ż’’’’’’ŃÄ’’’’’’¹¤’’’’’’’’’’’’’’’’čą’’’’’’’’’’’ø*ż’’’’’’ŃÄ’’’’’’¹¤’’’’’’’’’’’ä775…}L×Ó«0ūź·’ń¼’Ž­ū°tõ™2&ž•eq’—øŠ’§ÉÜ’²ĢÜ’“É×’°š£’§?B’„(*’„'(’¤'(’¢&'’ &'’š%&’\’’98<’ ’o’… ’ƒ’ !’{''’y..’v*+’x!!’}’’~’}’|’|’z’z’x’w’v’t’t’s’q’p’n’q’!"’ć $P’’’’’’’’’’’’’’’’’’°¤’’’’’’’’’’’äo’’’’’’’’’’’’’’’’Ļ\’’’’’’’•’’’’’’Æn’’’’’žŒ’’’’’’’’’’ōą’’’’’’’’’’’øA’’’’’’’’D•’’’’’’Æn’’’’’ž¤’’’’’’’’’’’’’’’’łą’’’’’’’’’’’ø•’’’’’’Æn’’’’’ž¤’’’’’’’’’’’ä!!!1666hhiü‹|žµžV’å·,’š»’ŪŖ’Ÿ{=’y–­’„µŃ’’ĄŁ’¤ČÜ’±ĢÜ’µĶŪ’±„°’ØPT’„&'’„'(’„'(’„'(’„'(’t’’86;’ ’n’"#’‹!"’‡ !’… ’… ’„ ’ƒ ’ƒ ’‚’‚’’€’€’~’}’|’|’w*.’X2<’d-6’v "’v’u’s’x’!"’uŠ P’’’’’’’’’’’’’’’’’’@¤’’’’’’’’’’’äĆ’’’’’’’i5Ł’’’’’’’#\’’’’’’’å’’’’’’6ó’’’’’^į’’’’’’’’ƖĆÜüż’’’’’’’üüµI’’’’’’’’?å’’’’’’6ó’’’’’^¤’’’’’’’’’’’’’’’’üÜüż’’’’’’’üüµå’’’’’’6ó’’’’’^¤’’’’’’’’’’’ä,,,T{{{½'''>@IIIįmmm’‹‰„’”‘`’ąµ3’å·+’”œZ’e”­’v§Ć’ƒ“Š’’æŁ’¤ĒÜ’°ĖÜ’“ĢŚ’±­¹’ØLQ’„*+’„'(’„'(’¦'(’ƒ ’ ’64:’’k’”()’œ'(’–%&’‘#$’Œ""’ˆ!!’† ’… ’„ ’„ ’ƒ ’ƒ ’‚ ’’€’’„/1’‚u‚’#E]’/Mf’hM[’z"$’y’x’’‘"#’`²P’’’’’’’’’’’’’’’’’­¤’’’’’’’’Ęe8#ś’’’’’’ĮY’’’’’’’_\’’’’’’’!’’’’’’ńŃ’’’’’Œ’’’’’’’’žl’’’’’’’ B’’’’’’’’I!’’’’’’ńŃ’’’’’Œ¤’’’’’’’qCÜ’’’’’’ül’’’’’’’ !’’’’’’ńŃ’’’’’Œ¤’’’’’’’’Ęe8# AAAƒ¢¢¢śzzzĒ/*6[99ĻQLL’rqq’{z{’ŽŒƒ’ž–’¾¦I’}w’b‘Ŗ’q£æ’€±Ģ’޽ؒ ÅÜ’ÆĖÜ’“ĶÜ’³øÅ’Ŗdk’¢*+’¤()’„()’’$%’ ’104’’]’Ø+,’¦*+’¦*+’¤+,’ *+’›()’–&'’$%’Š""’‡ !’… ’… ’„ ’ƒ ’ƒ ’‰69’¤”ž’«Ē×’Mx‘’*[w’Y†”’z\i’}!#’|’… ’”"#’DŠP’’’’’’’’’’’’’’’’Ķ ¤’’’’’’’¦)’’’’’’’…’’’’’’’‡\’’’’’’’H’’’’’’łŌŌŌŌö’’’’’ØH’’’’’’’žl’’’’’’’ 2’’’’’’’’`H’’’’’’łŌŌŌŌö’’’’’ؤ’’’’’’Öv’’’’’’ül’’’’’’’ H’’’’’’łŌŌŌŌö’’’’’ؤ’’’’’’’¦999|ŸŸŸü›››ūn``µƒ99Āt**łgHH’vtt’ƒƒƒ’““”’——•’Ą£L’Ö°.’€‘t’_©’q¢¾’€²Ķ’޼ג ĘÜ’®ĖÜ’“ĶÜ’²ŗĒ’Z_’q88’<<’'(’# ’,+.’ ’P’§*+’¦*+’§+,’§,-’§,-’¦-.’„-.’¢,-’*+’˜((’’%%’Œ"#’ˆ!"’† ’‰02’£™’³Č×’²ĢܒаǒIz–’`’®’{–®’€>D’’‰ !’’!"ü4 jP’’’’’’’’’’’’’’’” ¤’’’’’’’#A’’’’’’’jż’’’’’’Ÿ\’’’’’’’`’’’’’’’’’’’’’’’’’¶`’’’’’’’Ül’’’’’’’ ’’’’’’’’‰`’’’’’’’’’’’’’’’’’¶¤’’’’’’¼d’’’’’’ül’’’’’’’ `’’’’’’’’’’’’’’’’’¶¤’’’’’’’#,,,i‹‹‹ų¢¢¢’•““ž‹vv’„mm’‚’‚‚‚’†††’‡‡‡’““”’Ŗši’ģ¹!’ݲ&’Œ“a’`ŒŸ’mŸ»’}®Ź’‹»Ö’šĆŪ’¬ŹÜ’ÆÉ×’LTW’!!!’SSS’B))’$ ’"!#’(&(’>’¦*+’¦*+’§+,’§,-’§-.’Ø./’Ø./’Ø/0’Ø/0’§/0’¦00’¢..’+,’™>@’§—”’“ĪÜ’±ĢÜ’„ČÜ’“æŁ’z«Ē’r£æ’ÆĖ’ƒhv’ƒ !’€,1’z%)ļ# FP’’’’’’’’’’’’ćŸ0¤’’’’’’éJ’’’’’’’aö’’’’’’©\’’’’’’’i’’’’’’’’’’’’’’’’’ŗj’’’’’’’Ēl’’’’’’’ ń’’’’’’’Ķi’’’’’’’’’’’’’’’’’ŗ¤’’’’’’¼d’’’’’’ül’’’’’’’ i’’’’’’’’’’’’’’’’’ŗ¤’’’’’’é'Oqnnń‹‹‹’’’’’’‡ˆˆ’‚‚‚’yyy’QQQ’;;;’^^^’›“x’ܱ-’ņ¼’޲$’‹_’]Š ’l¹’}®Ź’‰¹Õ’›ĆÜ’£ĮŅ’156’’DEE’734’’’++-’- ’•%&’”()’§+,’§,-’§-.’Ø./’Ø./’Ø/0’©/0’©01’©12’©12’ŖCE’Ɨ”’“ÉŲ’²ĢÜ’§ČÜ’”ĄŚ’„µŃ’u¦Ā’g—“’s…œ’…GO’Zb’DMa’3:Mī!UP’’’’’’’ā@=.¤’’’’’’ŌG’’’’’’’fū’’’’’’¦\’’’’’’’g’’’’’’œœœœœœœœmf’’’’’’’Ķl’’’’’’’ Ā’’’’’’’’0g’’’’’’œœœœœœœœm¤’’’’’’¼d’’’’’’ül’’’’’’’ g’’’’’’œœœœœœœœm¤’’’’’’ŌGW78ČcCCżWVV’{{{’ŸŸŸ’———’ŽŽŽ’~~~’>>>’)))’777’‡†‚’¹M’ź¶’š»’ć³ ’œ—S’a‰”’iš·’yŖĘ’‡·Ó’’¼Õ’=EJ’ ’'''’???’ ’’6;>’(’x’€’Š"#’•&&’Ÿ)*’¤,-’Ø./’©/0’©/0’©01’©13’«GI’±¦’µĪÜ’±ĢÜ’„ČÜ’“ĄŁ’‚³Ļ’u¦Ā’a‘¬’fo„’‹QY’¢‰“’¬ÄŌ’Al…’Hcž:ayŃ(P’’’’’’’Ų¤’’’’’’Š6’’’’’’’{’’’’’’’•\’’’’’’’Y’’’’’’ŲW’’’’’’’šl’’’’’’’ ’’’’’’’’ÄY’’’’’’Ų¤’’’’’’¼d’’’’’’ül’’’’’’’ Y’’’’’’Ų¤’’’’’’ŠT"#eš9:ć|$%žd%%’o``’HHH’’¶¶¶’œœœ’ŽŽŽ’ddd’%%%’JJJ’‰ˆ‰’›Ši’Ķ !’éµ’ń»’ß°’œ”L’[„–’g˜“’z«Ē’„µŃ’Vmy’’’<<<’’ "’S\a’B58’x !’|’|’}’‚ ’Š"#’•&'’Ÿ+,’§./’©/0’ŖDF’°—”’“ŹŁ’²ĢÜ’§ČÜ’”ĄŚ’„µŃ’u¦Ā’b“Æ’gtŠ’—ny’©„±’­ĘÖ’«ĒŲ’m•®’'Tp’Crś/HYƒ P’’’’’’’Ų¤’’’’’’Š’’’’’’’ŖA’’’’’’’u\’’’’’’’<’’’’’’ė%,,,,,8’’’’’’’’Ql’’’’’’’ -’’’’’’’’’ŗ&n <’’’’’’ė%,,,,,¤’’’’’’¼d’’’’’’ül’’’’’’’ <’’’’’’ė%,,,,,¤’’’’’’Њ@A£µOPóx&&’i’h’u;;’hPP’i__’™––’Æ®®’¬¬¬’ššš’yyy’………’†††’’žŒa’Ō©+’ī¹’ņ¼’௒šŠB’^}†’d•±’t„Į’m“©’#*/’’...’’&(*’ltx’ZTU’y&&’|’|’|’|’|’|’’‡"#’˜<>’°§’µĪÜ’±ĢÜ’„ĒÜ’“ĄŁ’‚“Ļ’t„Į’a‘¬’g~–’–œ’±Ć’ˆØ½’‰ŖĮ’‰±Ķ’s„Å’Ct”’Gy›’Gs‘Ó#4P’’’’’’’Ų¤’’’’’’Šä’’’’’’õ!­’’’’’’’D\’’’’’’’ž’’’’’’ ÷’’’’’I ü’’’’’’’šwW‡l’’’’’’’ Ä’’’’’’’’’’ēįż’,ž’’’’’’ ÷’’’’’I¤’’’’’’¼d’’’’’’ül’’’’’’’ ž’’’’’’ ÷’’’’’I¤’’’’’’И35øŃRS’½VV’¢HH’-.’k’g’g))’i<<’tUU’ˆuu’›””’ŖŖŖ’Ø©©’•••’‚‚‚’€~’šŽj’ŃŖ1’š»’šŗ’Ü«’˜€<’UwŽ’_¬’qŸ¹’EXc’ ’’’"#$’bik’IKL’g((’|’|’|’|’|’|’|’‚36’”š’“ĖŁ’²ĶÜ’„ČÜ’“ĄŁ’„µŃ’u¦Ā’b’®’e‹¤’‘£¶’—µĒ’±Å’4Zs’7c€’a•¹’[’ø’Nƒ¦’Oƒ§’R„¤ē)2HP’’’’’’’Ų¤’’’’’’М’’’’’’’ńÜ’’’’’’’ó \’’’’’’’Ģ’’’’’’Ÿ–’’’’’üÄ’’’’’’’’’’ōl’’’’’’’ @’’’’’’’’’’’’’’,Ģ’’’’’’Ÿ–’’’’’ü¤’’’’’’¼d’’’’’’ül’’’’’’’ Ģ’’’’’’Ÿ–’’’’’ü¤’’’’’’Šj„Ź/0ūĻ67’ÓCD’ŠUV’æWW’CC’,,’m’g’e’g''’l@@’]]’‘€’™——’ŽŽŽ’‚’•Žy’ɧ@’ėø’ī¹’ŚŖ’”r8’[lz’]ŽŖ’c‰Ÿ’#')’’’ ’FJM’/24’-’u !’|’|’|’|’|’‚04’„Ø’“ĶŪ’°ĢÜ’¤ĒÜ’’æŲ’‚³Ļ’t„Į’_¬’c©’±Ę’ž¼Ļ’ŖÅÕ’ØÄÕ’7d}’#Tp’U†„’R„¦’Br’ü6^xŲ%9Fi P’’’’’’’Ų¤’’’’’’Š:’’’’’’’’’’’’’’’’š\’’’’’’’p’’’’’’’ōó’’’’’’¶h’’’’’’’’’’ōl’’’’’’’  ’’’’’’’’’’’’’,p’’’’’’’ōó’’’’’’¶¤’’’’’’¼d’’’’’’ül’’’’’’’ p’’’’’’’ōó’’’’’’¶¤’’’’’’ŠL_Į-.ļĪ12’Ī12’Ļ34’Š9:’ŃHI’ĖUV’“RR’“==’u%%’h’a’n’w*+’tMM’‡ƒƒ’‘‘‘’ŠŠ‰’”€’ƦP’īŗ’ī¹’Ź›’c0’Wg}’Yˆ£’=PZ’’’ ’CFJ’IMP’IJO’Šbh’}"#’|’|’|’ƒ58’”š’“ĖŁ’²ĢÜ’„ĒÜ’“æŁ’ƒ³Ļ’t„Į’a’®’`Ø’‰¬Ā’¢ĄŅ’°ŹŁ’“ĶÜ’ÆĖŪ’j”­’:k†’a’®’\Цł.Mb²$AP’’’’’’’Ų¤’’’’’’е’’’’’’’’’’’’’’ö \’’’’’’’ ē’’’’’’’’’’’’’ž; ā’’’’’’’’’ōl’’’’’’’ Ķ’’’’’’’’’’’’, ē’’’’’’’’’’’’’ž;¤’’’’’’¼d’’’’’’ül’’’’’’’ ē’’’’’’’’’’’’’ž;¤’’’’’’Š3 @²*+ŻĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ń:;’ŌJK’ĖVW’²PP’‹9:’{&'’{’z’s66’zkk’’‘‘’ˆˆˆ’ŒŠ†’·¢a’ä¶*’ī¹’ǘ’ˆO+’\Yk’Eg|’’&&&’"""’268’`kj’¢Ŗ’²ČÕ’š}…’-0’|’ƒ36’¦ «’“ĢŪ’±ĢÜ’¤ĒÜ’¾Ų’²Ī’r£æ’^«’_Œ§’ŽÆÅ’©ÅÕ’“ĶÜ’³ĶÜ’®ŹÜ’¢ĘÜ’ŠøŅ’e–²’p”½’k”­Ž -P’’’’’’’Ų¤’’’’’’Šę’’’’’’’’’’’’’d\’’’’’’’Mž’’’’’’’’’’’’ŒFż’’’’’’’’ōl’’’’’’’ Å’’’’’’’’’’’,Mž’’’’’’’’’’’’Œ¤’’’’’’¼d’’’’’’ül’’’’’’’ Mž’’’’’’’’’’’’Œ¤’’’’’’Š&ž$&ÄĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ56’Š>?’ĶKL’ÄUV’¬LM’45’}#$’t23’}kk’’ŠŠŠ’‹‡’§˜i’į“+’ā°’ĄŠ’‹J)’XN]’&,’’///’)-.’’£½Ė’²ĶÜ’²ĘŌ’žŠ“’ˆEI’¢’œ’“ĖŚ’²ĢÜ’¤ĒÜ’’æŁ’‚³Ļ’t„Į’`‘­’^‹„’ÆĆ’®ČŲ’“ĶÜ’²ĢÜ’ŖÉÜ’œÄے޽ؒ²Ī’t„Į’vØÄžg„Ķ$P’’’’’’’Ų¤’’’’’’Š)Ž’’’’’’’’’’üo\’’’’’’’eū’’’’’’’’’’˜eż’’’’’’’ōl’’’’’’’ ›ž’’’’’’’’’,eū’’’’’’’’’’˜¤’’’’’’¼d’’’’’’ül’’’’’’’ eū’’’’’’’’’’˜¤’’’’’’Š‚¢Ķ01žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī34’Ņ@A’ŅQR’ĀTU’ØGH’Œ@A’y``’Šˆˆ’ŽŽ’€€€’ulQ’”"’ß®’ĄŒ’„<#’E+.’BBC’CCC’’gpm’•øÉ’¦ČÜ’²ĢÜ’“ĶŪ’°ĄĪ’“ĢŚ’°ĖÜ’¤ĒÜ’¾Ų’³Ī’q¢¾’]ŽŖ’d©’šøĖ’³ĢŪ’“ĶÜ’ÆĖÜ’£ĒÜ’”ĄŚ’†·Ó’{¬Č’nŸ»’_Œ§’UcuŲ$*AP’’’’’’’Ų¤’’’’’’Š‹ń’’’’’’ž¼5\’’’’’’’5Ą’’’’’’’ŌR>Ļ’’’’’’×l’’’’’’’ 5·ū’’’’’’Ī5Ą’’’’’’’ŌR¤’’’’’’¼d’’’’’’ül’’’’’’’ 5Ą’’’’’’’ŌR¤’’’’’’Šh‚Ģ01żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ23’Š9:’ŠCD’ŹPQ’ø__’¢op’œ‰‰’spp’())’1-!’“v’Õ§’µ~’zYF’|z{’lll’[iq’|’’Š®¾’“ĄŁ’ØČÜ’³ĶÜ’µĪŻ’²ĢÜ’£ĘÜ’’æŁ’‚³Ī’t„Į’`¬’j”­’ž»Ķ’“ĶŪ’³ĶÜ’«ŹÜ’ŸÅÜ’½Ų’ƒ“Š’wØÄ’hš¶’]›’oQ`žY"« FuŒ‘\\’’’’’’’#b…‘‰j03oŒzDWwކb$#b…‘‰j0#b…‘‰j0DUČ/0ųĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ56’øhi’©ww’¹fg’ŖWW’pBC’G11’.'"’eR’Ėž’ŗ‰$’–[L’ø§§’“§³’|—ž’ƒ”«’ˆ¶Ļ’«ŹŪ’“ĪÜ’°ĢÜ’£ĒÜ’½×’²Ī’q”¾’h—±’„©½’­Č×’“ĶÜ’°ĖÜ’„ĒÜ’–ĮŚ’ˆøŌ’|­Ź’p”½’aŖ’go…’:B’"$śI‚\’’’’’’’( 2Ć./ņĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī78’ɋŒ’­©©’aa’ÄDE’ĶHI’øTU’QR’c>;’nS"’»’’°s!’³‡’§®³’xŒ•’ˆ”§’ŸĄŃ’“ĶÜ’±ĢÜ’¢ĒÜ’‘¾Ł’€±Ķ’r£Ą’sŸø’–¶É’±ĖŁ’“ĶÜ’­ŹÜ’”ĘÜ’‘æŁ’„µŃ’yŖĘ’jœø’]‰¤’€l}’”;A’‘"#’‹ !ö6 a\’’’’’’’  ³)*ßĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī78’ĶŽ’ĀĄĄ’¦¤¤’žŠŠ’—bc’Œno’Ÿ€€’¬qq’°ab’¬`K’Ā„3’æ“]’µ¬¬’—…ˆ’«ĮŹ’“ĶŪ’ÆĖÜ’¢Ęܒ޼ג€±Ķ’x¦Į’‡­Ä’¬Č×’“ĶÜ’°ĖÜ’§ČÜ’˜ĀŚ’‰¹Õ’~ÆĖ’q¢¾’b’®’\w’’\i’«;=’’#$’‘"#’ƒč!;\’’’’’’’—#$¼Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī67’Ķ€’Ā»»’§ØØ’½¾¾’›œœ’‘’’’ĀĆĆ’µ±±’Ÿtu’ÅEF’ŃSL’Ńn]’Ǝ’²Ÿ¦’²ĒÕ’°ĶŽ’¢ĘÜ’‘¾Ų’€±Ķ’|«Å’š¼Ļ’°ŹŁ’“ĶÜ’ÆĖÜ’¢ĘÜ’“ĄŁ’†·Ņ’z«Ē’mžŗ’ZŒØ’\k’ŽJS’“AC’–&'’‘"#’‘"#’xŌ#\’’’’’’’pŒĶ01žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī56’Ąbb’ššš’•••’………’†††’ÉÉÉ’ĖĖĖ’ „„’½56’Ī23’Ī45’Ń?A’ŌWX’Ėuy’ø“’œ©¾’ˆ¬Å’“Ź’ØĒ×’³ĶÜ’±ĢÜ’ØČÜ’šĆŪ’‹ŗÕ’±Ģ’s¤Ą’c”°’X{”’eO^’Ž59’·BC’š)*’‘"#’‘"#’‘"#’hø\’’’’’’’OcĘ/0öĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’ŗef’°³³’¶¶¶’|||’rr’ĒĮĄ’ĢĪĪ’ž‚‚’¾55’Ī12’Ī12’Ī01’Ī12’Š9:’ŃFH’É^b’»y’ŗ¢¬’µ»Ē’­ÉŚ’£ČŽ’”ĄŚ’‡·Ó’{¬Č’nŸ»’\Ø’Xo†’l?J’ˆ)+’¶BC’¢/0’‘"#’‘"#’‘"#’!"üR™\’’’’’’’5 C¶+,āĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ67’¶‡‡’®°°’“““’†tt’¢BB’ŹVV’͆†’¦pp’Į45’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ34’Ļ78’ŃJL’Ńdg’Ą„‹’¦›¬’ŒØĄ’y¤¾’f–²’ZŠ„’tš±’•š’Š8;’²@A’©56’‘#$’‘"#’‘"#’‘"#’!"ł7 Ž' &%&ĀŠ02žĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī23’ČZZ’°  ’žžž’Ÿžž’–ww’©IJ’Å-.’Ī23’Č89’Ģ23’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī23’Ņ<=’ŃMN’Įfl’¦z…’|’’‚³’ŖĒŲ’²¾Ė’¶fj’³<=’”$%’‘"#’‘"#’‘"#’‘"#’‡ õ$ŽQ=( - S… Õ¶+,ōČ/0żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ9:’Åpq’“ŒŒ’§’Švv’™ZZ’„KK’»,-’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ56’Ļ=>’ĖQT’Čqv’½˜’»‰’ŗIK’–&'’‘"#’‘"#’‘"#’‘"#’‘"#’yč~ZL<.8' }jÅ£&'šČ/0žŠ23’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’ĖIJ’Ćef’²56’«>>’ž23’©RR’«OO’¹+,’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ļ34’Ó@A’ĪLM’Ÿ-.’‘"#’‘"#’‘"#’‘"#’‘"#’‘"#’hÖ nVI<1$  *fPµ•#$ęĄ,.łĢ/1žĪ12’Ī12’Ī12’Ī12’Ī12’Ī/0’Č`a’¼QQ’¹,-’Ź01’Ä/0’æTU’®TT’ø+,’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Į./’—$%’‘"#’‘"#’‘"#’‘"#’‘"#’!"žTĮbN@3(  I9 •zҰ)*õĖ01’Ļ12’Ī12’Ī12’Ī01’ÉOP’²ee’¹GH’Ė67’Ī12’ĘST’ÆYZ’¶*+’Ģ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’¼-.’•#$’‘"#’‘"#’‘"#’‘"#’‘"#’‹!"ł3 ”U:' ’’’’’’’’’’’’’’’’’’’’’’’’ 6* {bĮ¦'(īĘ/0üĪ12’Ī12’Ķ45’ĀGH’²]^’²gh’½UU’Ę^^’µTT’µ*+’Ģ01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ12’ø,-’”#$’‘"#’‘"#’‘"#’‘"#’‘"#’iå„R5 ’’’’’’’’’’’’’’’’’]I¦Œ!"ßŗ+,łĶ12’Ī11’Ē12’½=>’¶XY’ø[[’¶56’½-.’Ķ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ķ12’³*+’’#$’‘"#’‘"#’‘"#’‘"#’ö) “iP>* ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’I6 wÓ²*+öŹ/0žĪ01’É01’Į/0’æ./’Ė01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ12’®)*’’"#’‘"#’‘"#’‘"#’Ž!"żMÕƒZK>0!’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 1"u]»ž%%ėĮ./ūĻ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ģ01’Ŗ()’‘"#’‘"#’‘"#’‘"#’pķžgRE9-" ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!^E£!"į¹,,ųĪ12’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ė01’¤'(’‘"#’‘"#’‘"#’… ł3 Ćx\MA4) ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ B- „sĻ©'(ńŹ/0žĻ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ź01’Ÿ&'’‘"#’‘"#’ "žTŻ’fVH<0% ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ /l]¾š$%éĆ./üĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Č01’›$%’‘"#’’"#’yó®v^QD8,!’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’RA£Ž»,-ūĪ12’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Å/0’—#$’‘"#’‰!ū: φhXL?3' ’’’ @. kŠÆ)*ōĒ/0żĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ā./’”#$’!"ž^ę £sbTG:.# ’’’’’’'oP³”##ėæ-.żŠ13’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ12’½-.’’"#’}ö»ƒi\NB5*   Z: ¢ˆ ć¹+,ųĢ01žĪ12’Ī12’Ī12’Ī12’Ļ12’ø,-’Œ !żEŪ–udWJ>1'  8!yfœ%&źĒ/0żŠ12’Ī12’Ļ23’Æ)*žcģ®m_RE8," /dS²˜#$åĒ/0śĪ01ž &&ł* Ė’vhZM@4( 7/ m½JÉ™yfWH:-" 3UN<.$  ž’/D‚BšAR01NSFont%&&&&&&&&&&&&&&%%% C—€ Bˆ’01NSBox% A Bņ C¦€ @  C¦€ @&0± &0± % @ą @ą CŸ€   CŸ€ &0± &0±0±&%Box°&&&&&&&&&&&&&& @  @ %%01 NSTextField% Ck C„ BŹ A€  BŹ A€&0± &%01NSTextFieldCell1 NSActionCell0±& % Version 0.50±% A@°&&&&&&&& &&&&&&%’0±0±&% NSNamedColorSpace0±&%System0 ±&%textBackgroundColor0!±°°0"±& % textColor’0#±% A C? C¦€ @  C¦€ @&0$± &0%± % @ą @ą CŸ€   CŸ€ &0&± &0'±0(±&%Box°&&&&&&&&&&&&&& @  @ %%0)±% AP A C£€ A`  C£€ A`&0*± &%0+±0,±&3%3Copyright (C) 1999 - 2014 Free Software Foundation°°,&&&&&&&& &&&&&&%’°0-±° >ŖŖ« ?€’0.±% AP @€ C£€ A`  C£€ A`&0/± &%00±01±&-%-Released under the GNU General Public License°°1&&&&&&&& &&&&&&%’°02±° >ŖŖ« ?€’03±% A C C©€ A  C©€ A&04± &%05±06±&4%4http://www.gnustep.org/experience/ProjectCenter.html07±% A@°6&&&&&&&& &&&&&&%’°°!’081NSButton% A BĘ CŖ A`  CŖ A`&09± &%0:1 NSButtonCell0;±&2%2Philippe C.D. Robert - Sergii Stoian - David Ayers°0<±&%Philippe C.D. Robert&&&&&&&&&&&&&&%’0=±&0>±&&&& &&0?±% A B‚ CŖ A`  CŖ A`&0@± &%0A±0B±&%Nicola Pero - Adam Fedor°0C±&%Richard Frith-Macdonald&&&&&&&&&&&&&&%’0D±&0E±&&&& &&0F±% A B8 CŖ A`  CŖ A`&0G± &%0H±0I±&'%'Pierre-Yves Rivaille - Riccardo Mottola°0J±&%Pierre-Yves Rivaille&&&&&&&&&&&&&&%’0K±&0L±&&&& &&0M±% C B BĄ @  BĄ @&0N± &0O± % @ą @ą B¤   B¤ &0P± &0Q±0R±&%Box°&&&&&&&&&&&&&& @  @ %%0S±% A0 C  C£ A`  C£ A`&0T± &%0U±0V±&%Bugs: http://bugs.gnustep.org°7°V&&&&&&&& &&&&&&%’°°!’0W±% A B¤ CŖ A`  CŖ A`&0X± &%0Y±0Z±&0%0Richard Frith-Macdonald - Gregory John Casamento°0[±&%Richard Frith-Macdonald&&&&&&&&&&&&&&%’0\±&0]±&&&& &&0^±°0_±&% System0`±&% windowBackgroundColor0a±&%Window0b±&%Info°b ?€ A F8 Fą%&   DÆ Dƒ@0c± &0d± &°0e1NSMutableDictionary1 NSDictionary&0f±& % Button(0)°W0g±& % Button(7)°F0h±& % TextField(0)°0i±&%View(0)°0j±&%Box(1)°#0k±& % Button(4)°?0l±& % TextField(4)°30m±&%View(4)°O0n±& % ImageView(0)°0o±& % Button(1)°80p±& % TextField(1)°)0q±&% NSOwner0r±&%PCInfoController0s±&%View(1)°0t±&%Box(2)°M0u±& % TextField(5)°S0v±& % TextField(2)°.0w±& % ButtonCell(0)°Y0x±&%View(2)°%0y±& % InfoPanel°0z±&%Box(0)°0{± &0|1 NSNibConnector°y0}±&% NSOwner0~± °i°y0± °n°i0€± °z°i0± °s°z0‚± °h°i0ƒ± °j°i0„± °x°j0…± °p°i0†± °v°i0‡± °l°i0ˆ± °o°i0‰± °k°i0б °g°i0‹± °t°i0Œ± °m°t0± °u°i0Ž1!NSNibOutletConnector°}°h0±& % versionField0±!°}°y0‘±& % infoWindow0’± °f°i0“± °w°f0”±&apps-projectcenter-master/English.lproj/Preferences.gorm/000077500000000000000000000000001347226342500241115ustar00rootroot00000000000000apps-projectcenter-master/English.lproj/Preferences.gorm/data.classes000066400000000000000000000027051347226342500264050ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setBuildTool:" ); Super = NSObject; }; PCPrefController = { Actions = ( "popupChanged:", "setSuccessSound:", "setFailureSound:", "setPromptOnClean:", "setKeepBackup:", "setSaveOnQuit:", "setSavePeriod:", "setDisplayPanels:", "setPromptWhenQuit:", "setDebugger:", "setEditor:", "setTabBehaviour:", "setTabSpaces:", "setRootBuildDir:", "setDeleteCache:", "setFullPathInFilePanels:", "setRememberWindows:", "setEditorSize:", "setDisplayLog:", "setBuildTool:" ); Outlets = ( panel, popupButton, sectionsView, buildingView, successField, setSuccessButton, failureField, setFailureButton, promptOnClean, savingView, keyBindingsView, miscView, saveOnQuit, keepBackup, autosaveSlider, autosaveField, separateBuilder, separateLauncher, separateEditor, separateLoadedFiles, promptWhenQuit, debuggerField, editorField, interfaceView, deleteCache, fullPathInFilePanels, rememberWindows, tabMatrix, tabSpacesField, rootBuildDirField, rootBuildDirButton, editorColumnsField, editorLinesField, displayLog, buildToolField, debuggerButton, buildToolButton ); Super = NSObject; }; }apps-projectcenter-master/English.lproj/Preferences.gorm/data.info000066400000000000000000000002701347226342500256760ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/English.lproj/Preferences.gorm/objects.gorm000066400000000000000000000057441347226342500264420ustar00rootroot00000000000000GNUstep archive000f4240:00000020:0000004d:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C„ C—&% Cs DJ€01 NSView% ?€ A C„ C—  C„ C—&01 NSMutableArray1 NSArray&01 NSPopUpButton1NSButton1 NSControl% B† Cˆ CE A   CE A &0± &%0 1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell1 NSActionCell1NSCell0 ±&0 1NSFont%&&&&&&&&0 1NSMenu0 ±&0± &01 NSMenuItem0±&%Item 10±&&&’%01NSImage0±& %  common_Nibble’%0±0±&%Item 2°&&’%’%0±0±&%Item 3°&&’%’%&&&&&&%’0±&0±&&&& &&°° °%%%%%01NSBox% Ą Ą C§ Cƒ€  C§ Cƒ€&0± &0± % ?€ ?€ C¦ C‚€  C¦ C‚€&0± &0±0±&%Box° °&&&&&&&&&&&&&& %%0 1NSColor0!±&% NSNamedColorSpace0"±&% System0#±&% windowBackgroundColor0$±&%Window0%±& % Preferences°% ?€ B F@ F@%0&±0'±&% NSApplicationIcon&   D  D€0(± &0)± &0*1NSMutableDictionary1 NSDictionary& 0+±&%View(0)0,± % @ą @ą B( B0  B( B0&0-± &0.±&%Box°0/±&%GormNSPopUpButton°00±& % MenuItem2°01±&%MenuItem°02±&% NSOwner03±&%PCPrefController04±& % MenuItem1°05±&%Box(0)06±% C„€ B B` B  B` B&07± &°,08±09±&%Title° &&&&&&&&&&&&&& @  @ %%0:±&%Panel°0;± &  0<1NSNibConnector°:0=±&% NSOwner0>±°/0?±°.0@±°10A±°40B±°00C1NSNibOutletConnector°=°:0D±&%panel0E±°=°/0F±& % popupButton0G±°=°.0H±& % sectionsView0I1 NSNibControlConnector°/°=0J±& % popupChanged:0K±°50L±°+°50M±&apps-projectcenter-master/English.lproj/ProjectCenter.gorm/000077500000000000000000000000001347226342500244175ustar00rootroot00000000000000apps-projectcenter-master/English.lproj/ProjectCenter.gorm/data.classes000066400000000000000000000026261347226342500267150ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "findEnterSelection:", "findJumpToSelection:", "findNext:", "findPrevious:", "findShowPanel:", "performGoToLinePanelAction:" ); Super = NSObject; }; PCAppController = { Actions = ( ); Outlets = ( menuController ); Super = NSObject; }; PCMenuController = { Actions = ( "showInfoPanel:", "showPrefWindow:", "projectOpen:", "projectNew:", "projectSave:", "projectAddFiles:", "projectSaveFiles:", "projectRemoveFiles:", "subprojectNew:", "subprojectAdd:", "fileOpen:", "fileNew:", "fileSave:", "fileSaveAs:", "fileSaveTo:", "fileRevertToSaved:", "fileClose:", "fileOpenQuickly:", "fileRename:", "fileNewUntitled:", "showInspector:", "showBuildPanel:", "showLoadedFilesPanel:", "runTarget:", "executeBuild:", "stopBuild:", "startClean:", "showLaunchPanel:", "debugTarget:", "toggleToolbar:", "loadedFilesSortByTime:", "loadedFilesSortByName:", "loadedFilesNextFile:", "loadedFilesPreviousFile:", "showLogPanel:", "findEnterSelection:", "findNext:", "findPrevious:", "findShowPanel:", "findJumpToSelection:", "goToLine:" ); Outlets = ( ); Super = NSObject; }; }apps-projectcenter-master/English.lproj/ProjectCenter.gorm/data.info000066400000000000000000000002701347226342500262040ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/English.lproj/ProjectCenter.gorm/objects.gorm000066400000000000000000000702211347226342500267400ustar00rootroot00000000000000GNUstep archive000f4240:00000011:000003ef:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01 GSNibItem01NSString&%PCAppController  &01NSMenu0±&%PC01NSMutableArray1 NSArray&  01 NSMenuItem0 ±&%Info0 ±&&&’%0 1 NSImage0 1 NSMutableString&%GSMenuSelected0 ± 0± & % GSMenuMixed’%0±° 0±&0± 0±& % Info Panel...0±&&&’%° ° ’%0± 0±&%Preferences...0±&&&’%° ° ’%0± 0±& % Log Panel...0±&&&’%° ° ’%°0± 0±&%Project0±&&&’%° ° ’%0±°0±&  0± 0 ±&%Open...0!±&%O&&’%° ° ’%0"± 0#±& % Open Recent0$±&&&’%° ° ’%0%±0&±& % Open Recent0'±&0(± 0)±& % Clear List°$&&’%° ° ’%°0*± 0+±&%New...0,±&%N&&’%° ° ’%0-± 0.±&%Save0/±&%S&&’%° ° ’%00± 01±& % Add Files...02±&%A&&’%° ° ’%03± 04±& % Save Files...05±&%Q&&’%° ° ’%06± 07±&%Remove Files...08±&%r&&’%° ° ’%09± 0:±&%New Subproject...0;±&&&’%° ° ’%0<± 0=±&%Add Subproject...0>±&&&’%° ° ’%°0?± 0@±&%File0A±&&&’%° ° ’%0B±°@0C±&0D± 0E±&%Open...0F±&%o&&’%° ° ’%0G± 0H±&%New in Project0I±&%n&&’%° ° ’%0J± 0K±&%Save0L±&%s&&’%° ° ’%0M± 0N±& % Save As...0O±&&&’%° ° ’%0P± 0Q±& % Save To...0R±&&&’%° ° ’%0S± 0T±&%Revert to Saved0U±&%u&&’%° ° ’%0V± 0W±&%Close0X±&%W&&’%° ° ’%0Y± 0Z±&%Rename0[±&&&’%° ° ’%°0\± 0]±&%Edit0^±&&&’%° ° 2 submenuAction:v12@0:4@8%0_±°]0`±&0a± 0b±&%Undo0c±&%z&&’%° ° ’%0d± 0e±&%Redo0f±&%Z&&’%° ° ’%0g± 0h±&%Cut0i±&%x&&’%° ° ’%0j± 0k±&%Copy0l±&%c&&’%° ° ’%0m± 0n±&%Paste0o±&%v&&’%° ° ’%0p± 0q±& % Select All0r±&%a&&’%° ° ’%0s± 0t±&%Find0u±&&&’%° ° ’%0v±°t0w±&0x± 0y±& % Find Panel...0z±&%f&&’%° ° ’%0{± 0|±& % Find Next0}±&%g&&’%° ° ’%0~± 0±& % Find Previous0€±&%d&&’%° ° ’%0± 0‚±&%Enter Selection0ƒ±&%e&&’%° ° ’%0„± 0…±&%Jump To Selection0†±&%j&&’%° ° ’%0‡± 0ˆ±& % LineNumber...0‰±&%l&&’%° ° ’%°_°0б 0‹±&%Tools0Œ±&&&’%° ° ’%0±°‹0ޱ&0± 0±& % Hide Tool Bar0‘±&&&’%° ° ’%0’± 0“±& % Inspector...0”±&&&’%° ° ’%0•± 0–±& % Project Build0—±&&&’%° ° ’%0˜±°–0™±&0š± 0›±& % Show Panel...0œ±&&&’%° ° ’%0± 0ž±&%Build0Ÿ±&%B&&’%° ° ’%0 ± 0”±& % Stop Build0¢±&%\&&’%° ° ’%0£± 0¤±&%Clean0„±&&&’%° ° ’%°0¦± 0§±& % Loaded Files0ر&&&’%° ° ’%0©±°§0Ŗ±&0«± 0¬±& % Show Panel...0­±&%L&&’%° ° ’%0®± 0Ʊ&%Sort by Time Viewed0°±&&&’%° ° ’%0±± 0²±& % Sort by Name0³±&&&’%° ° ’%0“± 0µ±& % Next File0¶±&%+&&’%° ° ’%0·± 0ø±& % Previous File0¹±&%_&&’%° ° ’%°0ŗ± 0»±&%Launcher0¼±&&&’%° ° ’%0½±°»0¾±&0æ± 0Ą±& % Show Panel...0Į±&&&’%° ° ’%0± 0Ʊ&%Run0ı&&&’%° ° ’%0ű 0ʱ&%Debug0DZ&&&’%° ° ’%°°0ȱ 0ɱ&%Windows0ʱ&&&’%° ° ²%0˱°É0̱&0ͱ 0α&%Arrange In Front0ϱ&&&’%° ° ’%0б 0ѱ&%Miniaturize Window0ұ&%m&&’%° ° ’%0Ó± 0Ō±& % Close Window0Õ±&%w&&’%° ° ’%°0Ö± 0×±&%Services0Ų±&&&’%° ° ’%0ٱ°×0ڱ&°0Ū± 0ܱ&%Hide0ݱ&%h&&’%° ° ’%0ޱ 0ß±&%Quit0ą±&%q&&’%° ° ’%0į±0ā±& % NSFontManager  &0ć±0ä±&%PCMenuController  &0å±&0ę±&0ē1 NSMutableDictionary1 NSDictionary&s0č±& % MenuItem(117)°P0é±& % MenuItem81°š0ź±& % MenuItem(21)°Y0ė±& % MenuItem183°š0ģ±& % MenuItem(87)°•0ķ±& % GormNSMenu1°0ī±&%Menu(13)°0ļ±& % MenuItem(49)0š± 0ń±& % Find Next0ņ±&%g&&’%° ° ’%0ó±&% NSOwner0ō±& % NSApplication0õ±& % GormNSMenu33°½0ö±& % MenuItem(31)°«0÷±& % MenuItem99°“0ų±& % MenuItem331°Ž0ł±& % MenuItem2420ś± 0ū±& % New Untitled0ü±&&&’%° ° ’%0ż±& % MenuItem(114)°0ž±& % MenuItem(84)°Š0’±&%Menu(10)P±P±&%FindP±&P± P±& % Find Panel...P±&%f&&’%° ° ’%°šP± P±& % Find PreviousP±&%d&&’%° ° ’%P ± P ±&%Enter SelectionP ±&%e&&’%° ° ’%P ± P ±&%Jump To SelectionP±&%j&&’%° ° ’%P± P±&%Line Number...P±&%l&&’%° ° ’%P±& % MenuItem349°ČP±& % MenuItem325°ČP±& % MenuItem236P± P±&%ViewP±&&&’%° ° ²%P±ŠP±&P± P±&%SplitP±&%2&&’%° ° ’%P± P±&%MaximizeP±&%1&&’%° ° ’%P ± P!±&%Tear OffP"±&%T&&’%° ° ’%P#±& % MenuItem212°ÖP$±& % MenuItem45P%± P&±& % IndentationP'±&&&’%° ° ²%P(±Š&P)±&P*± P+±&%IndentP,±&%i&&’%° ° ’%P-± P.±& % Shift LeftP/±&%[&&’%° ° ’%P0± P1±& % Shift RightP2±&%]&&’%° ° ’%P3± P4±&%Compress WhitespaceP5±&%{&&’%° ° ’%P6± P7±&%Expand Message ExpressionP8±&%}&&’%° ° ’%P9±& % MenuItem123°±&%Menu(25)°%P?±& % MenuItem319°ŽP@±& % GormNSMenu40°_PA±& % MenuItem1°ŽPB±& % MenuItem206°ÅPC±& % MenuItem117°*PD±& % MenuItem15°?PE±& % MenuItem82°PF±& % MenuItem184°PG±& % MenuItem(96)°“PH±&%Menu(4)°PI±&%Menu(22)°ĖPJ±& % GormNSMenu2°BPK±& % MenuItem(58)°PL±& % MenuItem(40)°ŽPM±& % GormNSMenu34°ĖPN±&%NSServicesMenu°ŁPO±& % MenuItem332°·PP±& % MenuItem76°ŠPQ±& % MenuItem178°ŠPR±& % MenuItem(93)°«PS±& % MenuItem130°SPT±&%Menu(1)°PU±& % MenuItem(55)°PV±& % MenuItem326°ĶPW±& % MenuItem213°ŪPX±& % MenuItem124°?PY±& % MenuItem22°VPZ±& % MenuItem(90)° P[±& % MenuItem100°·P\±& % MenuItem(52)°dP]±& % MenuItem2°P^±& % MenuItem207°ČP_±& % MenuItem16°DP`±& % MenuItem118°-Pa±& % MenuItem83° Pb±& % MenuItem185° Pc±& % MenuItem(19)°SPd±& % MenuItem(67)°&&’%° ° ’%P³±& % MenuItem(115)°„P“±& % MenuItem(85)°Pµ±& % GormNSMenu37°P¶±& % MenuItem(47)P·± ŠPø±&&&’%° ° ’%ŠP¹±& % MenuItem335°ĀPŗ±& % MenuItem79P»± P¼±&%Loaded Projects...P½±&&&’%° ° ’%P¾±& % MenuItem311°ĀPæ±& % MenuItem222°-PĄ±& % MenuItem55PĮ± P±&%FormatPƱ&&&’%° ° ²%PıŠĀPű&Pʱ PDZ&%FontPȱ&&&’%° ° ²%PɱŠĒPʱ&  P˱ P̱& % Font Panel...Pͱ&%t&&’%° ° ’%Pα Pϱ&%BoldPб&%b&&’%° ° ’%Pѱ Pұ&%ItalicPÓ±&%i&&’%° ° ’%PŌ± PÕ±& % UnderlinePÖ±&&&’%° ° ’%P×± PŲ±& % SuperscriptPٱ&&&’%° ° ’%Pڱ PŪ±& % SubscriptPܱ&&&’%° ° ’%Pݱ Pޱ&%UnscriptPß±&&&’%° ° ’%Pą± Pį±& % Copy FontPā±&%3&&’%° ° ’%Pć± Pä±& % Paste FontPå±&%4&&’%° ° ’%ŠÄPę± Pē±&%TextPč±&&&’%° ° ²%P鱊ēPź±&Pė± Pģ±& % Align LeftPķ±&&&’%° ° ’%Pī± Pļ±&%CenterPš±&&&’%° ° ’%Pń± Pņ±& % Align RightPó±&&&’%° ° ’%Pō± Põ±& % Show RulerPö±&&&’%° ° ’%P÷± Pų±& % Copy RulerPł±&%1&&’%° ° ’%Pś± Pū±& % Paste RulerPü±&%2&&’%° ° ’%ŠÄPż± Pž±&%Make Rich TextP’±&%R&&’%° ° ’%P± P±&%Show All CharactersP±&&&’%° ° ’%P± P±&%Page Layout...P±&%P&&’%° ° ’%P±& % MenuItem(112)°sP±& % MenuItem31°gP±&%Menu(8)°ĖP ±&%Menu(26)°vP ±& % MenuItem329Š«P ±& % MenuItem(44)°xP ±& % NSWindowsMenu°ĖP ±& % MenuItem305°®P±& % GormNSMenu50°©P±& % MenuItem216°P±& % MenuItem127°JP±& % MenuItem103°ĀP±& % MenuItem(97)°·P±&%Menu(5)°˜P±&%Menu(23)°ŁP±& % MenuItem(59)°P±& % MenuItem(41)Š·P±& % GormNSMenu20°BP±& % MenuItem19°MP±& % MenuItem342°ŪP±& % MenuItem86P± P±&%Previous errorP±&%<&&’%° ° ’%P±& % MenuItem(94)°®P±& % MenuItem140°gP ±&%Menu(2)°BP!±&%Menu(20)°©P"±& % MenuItem(56)°P#±& % GormNSMenu38°BP$±& % GormNSMenu14°©P%±& % MenuItem336°ÅP&±& % MenuItem312°ÅP'±& % MenuItem223°0P(±& % MenuItem290°P)±& % MenuItem32°jP*±& % MenuItem110°ÖP+±& % MenuItem(91)°£P,±& % MenuItem(53)°aP-±& % MenuItem306°±P.±& % GormNSMenu51°½P/±& % MenuItem217°P0±& % MenuItem128°MP1±& % MenuItem284°ŠP2±& % MenuItem104°ÅP3±& % MenuItem(68)°?P4±& % MenuItem(50)°~P5±& % MenuItem6°P6±& % MenuItem343°ŽP7±& % MenuItem87P8± P9±& % Project FindP:±&&&’%° ° ²%P;±Š9P<±&P=± P>±& % Show Panel...P?±&%F&&’%° ° ’%P@± PA±&%Find ReferencesPB±&%0&&’%° ° ’%PC± PD±&%Find DefinitionsPE±&%9&&’%° ° ’%PF± PG±& % Find TextPH±&%8&&’%° ° ’%PI± PJ±&%Find Regular ExpPK±&%7&&’%° ° ’%PL± PM±& % Next matchPN±&%:&&’%° ° ’%PO± PP±&%Previous matchPQ±&&&’%° ° ’%PR±& % MenuItem230°GPS±& % MenuItem141°jPT±& % MenuItem(17)°MPU±&%NSFont°įPV±& % MenuItem(65)°6PW±& % MenuItem(9)°3PX±& % GormNSMenu15°½PY±& % MenuItem337°ČPZ±& % MenuItem313°ČP[±& % MenuItem224°3P\±& % MenuItem200°±P]±& % MenuItem33°mP^±& % MenuItem291° P_±& % MenuItem111°P`±& % MenuItem(14)°DPa±& % MenuItem(62)°-Pb±&%NSMenu°Pc±& % MenuItem(6)°*Pd±& % MenuItem307°“Pe±& % GormNSMenu52°ĖPf±&%MenuItem°ŪPg±& % MenuItem129°PPh±& % MenuItem285°Pi±& % MenuItem350°ĶPj±& % MenuItem105°ČPk±& % MenuItem(29)°£Pl±& % MenuItem(107)°PPm±& % MenuItem(11)°9Pn±& % MenuItem(77)°dPo±& % MenuItem(3)°Pp±& % GormNSMenu22°_Pq±& % MenuItem7°Pr±& % MenuItem(39)°ÖPs±& % MenuItem344°·Pt±& % MenuItem320°·Pu±& % MenuItem231°JPv±& % MenuItem(26)°šPw±& % GormNSMenu°Px±& % MenuItem(104)°(Py±& % MenuItem(74)°VPz±&%Menu(18)°P{±& % GormNSMenu16°ĖP|±& % MenuItem(0)°P}±& % MenuItem338°ĶP~±& % MenuItem(36)°ŗP±& % MenuItem314°ĶP€±& % MenuItem225°6P±& % MenuItem201°“P‚±& % MenuItem34°pPƒ±& % MenuItem292°£P„±& % MenuItem(23)°P…±& % MenuItem10°0P†±& % MenuItem(119)°‡P‡±& % MenuItem112°Pˆ±& % MenuItem(101)°ÖP‰±& % MenuItem(89)°Pб& % MenuItem(71)°MP‹±&%Menu(15)°BPŒ±& % GormNSMenu53°ŁP±& % MenuItem308°·Pޱ& % MenuItem219°P±& % MenuItem(33)°±P±& % MenuItem286°’P‘±& % MenuItem351°ŠP’±& % MenuItem28°YP“±& % MenuItem197°¦P”±& % MenuItem106°ĶP•±& % MenuItem95°¦P–±& % MenuItem(116)°‡P—±& % MenuItem(20)°VP˜±& % MenuItem(86)°’P™±&%Menu(12)°vPš±& % GormNSMenu47°P›±& % MenuItem8°*Pœ±& % MenuItem(30)°¦P±& % MenuItem345°ŗPž±& % MenuItem321°ŗPŸ±& % MenuItem232°MP ±& % MenuItem(113)°{P”±& % MenuItem41P¢± P£±&%UndoP¤±&&&’%° ° ²%P„±Š£P¦±&P§± Pر&%UndoP©±&%z&&’%° ° ’%PŖ± P«±&%RedoP¬±&%Z&&’%° ° ’%P­± P®±& % Undo RegionPƱ&&&’%° ° ’%P°±& % MenuItem(83)°‡P±±&%Menu(9)°ŁP²±& % GormNSMenu17°ŁP³±& % MenuItem339°ŠP“±& % MenuItem(45)°{Pµ±& % MenuItem315°ŠP¶±& % MenuItem226°9P·±& % MenuItem137°YPø±& % MenuItem202°·P¹±& % MenuItem11°3Pŗ±& % MenuItem113°P»±& % MenuItem(110)°PP¼±& % MenuItem(98)°ŗP½±& % MenuItem180°’P¾±& % MenuItem(80)°„Pæ±&%Menu(6)°©PĄ±&%Menu(24)°%PĮ±& % MenuItem309°ŗP±& % MenuItem(42)°sPƱ& % GormNSMenu30°˜Pı& % MenuItem352°Pű& % MenuItem107°ŠPʱ& % MenuItem96°«PDZ& % MenuItem198°«Pȱ& % MenuItem(95)°±Pɱ&%Menu(3)°_Pʱ&%Menu(21)°½P˱& % MenuItem(57)°P̱& % GormNSMenu48°˜Pͱ& % MenuItem9°-Pα& % MenuItem346°æPϱ& % MenuItem322°æPб& % MenuItem233°PPѱ& % MenuItem(92)°¦Pұ& % MenuItem120°3PÓ±&%Menu(0)°PŌ±& % MenuItem(54)°dPÕ±& % GormNSMenu18°PÖ±& % MenuItem316°ÓP×±& % MenuItem227°±ŠŸŠ‹P?±ŠŠ‹P@±ŠģŠ‹PA±Š Š‹PB±ŠŠ‹PC±ŠöŠbPD±ŠöŠbPE±&%submenuAction:PF±ŠŠöPG±ŠŠPH±ŠŠ PI±&%cut:PJ±ŠSАPK±ŠSŠ PL±&%copy:PM±Š]АPN±Š]Š PO±&%paste:PP±ŠüАPQ±ŠüŠ PR±& % selectAll:PS±ŠUАPT±Š1ŠbPU±Š1ŠbPV±&%submenuAction:PW±ŠšŠ1PX±Š„ŠšPY±ŠŠšPZ±ŠłŠšP[±ŠłŠšP\±&%submenuAction:P]±ŠŠłP^±ŠŠP_±ŠŠP`±Š^АPa±ŠƒŠPb±ŠŃŠšPc±ŠŃŠšPd±&%submenuAction:Pe±ŠŠѐPf±ŠĒАPg±ŠįАPh±ŠŠPi±ŠŠPj±ŠøŠPk±ŠŲŠšPl±ŠŲŠšPm±&%submenuAction:Pn±ŠŹŠؐPo±Š ŠʐPp±ŠŠʐPq±Š ŠʐPr±ŠjŠbPs±ŠjŠbPt±&%submenuAction:Pu±Š{ŠjPv±Š”Š{Pw±Š”Š Px±&%arrangeInFront:Py±ŠÅŠ{Pz±ŠÅŠ P{±&%performMiniaturize:P|±ŠķŠ{P}±ŠķŠ P~±& % performClose:P±ŠŠbP€±ŠŠbP±&%submenuAction:P‚±Š²ŠPƒ±°ŠP„±°äАP…1NSNibOutletConnectorаP†±&%delegateP‡±Š °äPˆ±&%showInfoPanel:P‰±Š˰äPб&%showPrefWindow:P‹±Š°äPŒ±& % projectOpen:P±Š›°äPޱ& % projectNew:P±Šņ°äP±& % projectSave:P‘±Šš°äP’±&%projectAddFiles:P“±ŠҰäP”±&%projectSaveFiles:P•±Šī°äP–±&%projectRemoveFiles:P—±Š°äP˜±&%subprojectNew:P™±Š°äPš±&%subprojectAdd:P›±Š°äPœ±& % fileOpen:P±Šļ°äPž±&%fileNew:PŸ±Šu°äP ±& % fileSave:P”±ŠŸ°äP¢±& % fileSaveAs:P£±Š°äP¤±& % fileSaveTo:P„±Šģ°äP¦±&%fileRevertToSaved:P§±Š °äPر& % fileClose:P©±Š°äPŖ±& % fileRename:P«±Š°äP¬±&%showInspector:P­±Š°äP®±&%showBuildPanel:PƱаäP°±& % runTarget:P±±°°äP²±&%menuControllerP³±Š°äP“±& % executeBuild:Pµ±Š^°äP¶±& % stopBuild:P·±Šƒ°äPø±& % startClean:P¹±Š °äPŗ±&%showLaunchPanel:P»±Š °äP¼±& % debugTarget:P½±Š„°äP¾±&%toggleToolbar:P汊ǰäPĄ±&%showLoadedFilesPanel:PĮ±Šį°äP±&%loadedFilesSortByTime:PƱаäPı&%loadedFilesSortByName:PűаäPʱ&%loadedFilesNextFile:PDZŠø°äPȱ&%loadedFilesPreviousFile:PɱŠÄŠՐPʱŠİäP˱& % showLogPanel:P̱ŠߊPͱŠŌАPαŠߊ Pϱ &%undo:PбŠŌŠ Pѱ &%redo:PұŠ˜ŠńPÓ±ŠŠ˜PŌ±ŠŠPÕ±Š˜ŠńPÖ±&%submenuAction:P×±ŠŠ PŲ±&%clearRecentDocuments:PٱŠĀАPڱЙАP۱РЙPܱŠ Š Pݱ&%performFindPanelAction:PޱГЙP߱ГРPą±&%performFindPanelAction:Pį±Š4Š™Pā±Š4Š Pć±&%performFindPanelAction:P䱊żŠ™P届żŠ Pę±&%performFindPanelAction:Pē±Š¾Š™P豊¾Š Pé±&%centerSelectionInVisibleArea:Pź±ŠĀŠPė±&%submenuAction:Pģ±Š°Š™Pķ±Š°Š Pī±&%performGoToLinePanelAction:Pļ± &apps-projectcenter-master/Framework/000077500000000000000000000000001347226342500201245ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/000077500000000000000000000000001347226342500226425ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/BuildAttributes.gorm/000077500000000000000000000000001347226342500267135ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/BuildAttributes.gorm/data.classes000066400000000000000000000015321347226342500312040ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "searchOrderPopupDidChange:", "setSearchOrder:", "removeSearchOrder:", "addSearchOrder:", "changeCommonProjectEntry:" ); Super = NSObject; }; PCProjectInspector = { Actions = ( "searchOrderPopupDidChange:", "setSearchOrder:", "removeSearchOrder:", "addSearchOrder:", "changeCommonProjectEntry:" ); Outlets = ( buildAttributesView, projectNameLabel, searchOrderPopup, searchOrderList, searchOrderTF, searchOrderSet, searchOrderRemove, searchOrderAdd, cppOptField, objcOptField, cOptField, ldOptField, searchOrderScroll, searchOrderColumn, installDomainPopup ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/BuildAttributes.gorm/data.info000066400000000000000000000002701347226342500305000ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/BuildAttributes.gorm/objects.gorm000066400000000000000000000310421347226342500312320ustar00rootroot00000000000000GNUstep archive000f4240:0000002b:00000140:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01 NSMenuItem01NSString&%Item0±&&&’%01NSImage01NSMutableString&%GSMenuSelected0±0 ±& % GSMenuMixed’%0 1 GSWindowTemplate1 GSClassSwapper0 ±&% NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A CĀ€ CĖ& % Cå€ D6@0 1NSView% ?€ A CĀ€ CĖ  CĀ€ CĖ&0 1NSMutableArray1NSArray&01NSBox%  C€ CĄ  C€ CĄ&0±&0±% @ @ C›€ C¾  C›€ C¾&0±&  01 NSTextField1 NSControl% @  C° C‘ AØ  C‘ AØ&0±&%01NSTextFieldCell1 NSActionCell1NSCell0±&%Title01NSFont%0±& % Helvetica A@A@&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% Ą C C€ CC  C€ CC&0±&0 ±% @ą @ą C–€ C5  C–€ C5&0!±&0"1 NSPopUpButton1NSButton% C  C‘ AØ  C‘ AØ&0#±&%0$1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell°0%±%&&&&&&&&0&1NSMenu°0'±&0(±0)±&%Header Directories Search Order°&&’%0*±0+±& %  common_Nibble’%0,±0-±& % Library Directories Search Order°&&’%’%0.±0/±& % Build Targets°&&’%’%&&&&&&%’°°&&& &&°(°&%%%%%00±% Aš C‘ AØ  C‘ AØ&01±&%02±°°%&&&&&&&& &&&&&&%’°°’03±%  B¼ AĄ  B¼ AĄ&04±&%05±06±&%Set...°%&&&&&&&&&&&&&&%’°°&&& &&07±% BĘ  B¼ AĄ  B¼ AĄ&08±&%09±0:±&%Remove°%&&&&&&&&&&&&&&%’°°&&& &&0;±% CF  B¼ AĄ  B¼ AĄ&0<±&%0=±0>±&%Add°%&&&&&&&&&&&&&&%’°°&&& &&0?1 NSScrollView% B` C‘€ BĘ  C‘€ BĘ&0@±&0A1 NSClipView% AØ AĄ C† B’  C† B’&0B1! NSTableView%  C†€ C!  C†€ C!&°A0C±&%0D±°°%&&&&&&&&&&&&&&0E±&0F1" NSTableColumn0G±&%SO List C†€ A  GĆP0H1#NSTableHeaderCell0I±&% 0J±% &&&&&&&& &&&&&&%’0K±°0L±&% System0M±&% controlShadowColor0N±°°L0O±&% windowFrameTextColor0P±0Q±&%four°%°Q&&&&&&&& &&&&&&%’°°0R±°°L0S±& %  gridColor0T±°°L0U±&% controlBackgroundColor0V1$NSTableHeaderView%  C†€ A°  C†€ A°&0W± % AØ @ C† A°  C† A°&°V0X±&°V0Y±°°L0Z±& %  controlColor0[±&0\1%GSTableCornerView% @ @ A˜ A°  A˜ A°&0]±&%% A€’ @ @@0^±&0_±&°B°T0`1& NSScroller% @ AĄ A B’  A B’&0a±&%0b±°°%&&&&&&&&&&&&&&&’°W°\°A% A A A A °`°W0c±0d±&%Box°%&&&&&&&&&&&&&& @  @ %%0e±% ?€ Bą Bų AØ  Bų AØ&0f±&%0g±0h±&%Preprocessor Flags:°&&&&&&&& &&&&&&%’°°’0i±% C Bä C& AØ  C& AØ&0j±&%0k±°°%°&&&&&&&& &&&&&&%’°°’0l±% ?€ B® Bų AØ  Bų AØ&0m±&%0n±0o±&%ObjC Compiler Flags:°°o&&&&&&&& &&&&&&%’°°’0p±% C B° C& AØ  C& AØ&0q±&%0r±°°%°&&&&&&&& &&&&&&%’°°’0s±% ?€ Bx Bų AØ  Bų AØ&0t±&%0u±0v±&%C Compiler Flags:°&&&&&&&& &&&&&&%’°°’0w±% C B€ C& AØ  C& AØ&0x±&%0y±°°%&&&&&&&& &&&&&&%’°°’0z±% ?€ B Bų AØ  Bų AØ&0{±&%0|±0}±& % Linker Flags:°&&&&&&&& &&&&&&%’°°’0~±% C B  C& AØ  C& AØ&0±&%0€±°°%&&&&&&&& &&&&&&%’°°’0±% ?€ AP Bų AØ  Bų AØ&0‚±&%0ƒ±0„±&%Install Domain:°°„&&&&&&&& &&&&&&%’°°’0…±% C AP C& A°  C& A°&0†±&%0‡±°°%&&&&&&&&0ˆ±°0‰±&0б°°&&’%°*’%0‹±0Œ±&%Local°&&’%’%0±0ޱ&%System°&&’%’%0±0±&%Network°&&’%’%0‘±0’±&%User°&&’%’%&&&&&&%’°°&&& >ĢĢĶ =™™š&&°Š°ˆ°Š%%%%%0“±0”±&%buildAttributes°%&&&&&&&&&&&&&& %%0•±°°L0–±&% windowBackgroundColor0—±&%Window0˜±&%Panel°˜ æ€  F8 FĄ%0™±0š±&% NSApplicationIcon&   DČ DW0›±&0œ±&01'NSMutableDictionary1( NSDictionary&*0ž±&% NSOwner0Ÿ±&%PCProjectInspector0 ±& % TextField9°~0”±&%Button°30¢±&%MenuItem°(0£±& % ScrollView°?0¤±& % MenuItem(1)°0„±&%GormNSTableView°B0¦±& % TextField8°z0§±& % TextField7°w0ر&%Button2°;0©±& % TableColumn3°F0Ŗ±& % MenuItem(5)°Š0«±&%Button1°70¬±& % TextField6°s0­±& % TableColumn20®±"0Ʊ&%column1 BP A  GĆP0°±#0±±&% °J&&&&&&&& &&&&&&%’°Y°N0²±0³±&%quatre°%°³&&&&&&&& &&&&&&%’°°0“±& % TextField5°p0µ±&%Box°0¶±& % TableColumn10·±"0ø±&%column2 Cd A  GĆP0¹±#0ŗ±&% °J&&&&&&&& &&&&&&%’°Y°N0»±0¼±&%four°%°¼&&&&&&&& &&&&&&%’°°0½±& % TextField4°l0¾±& % MenuItem(0)°‹0æ±& % TextField3°i0Ą±& % MenuItem(4)°0Į±& % TextField2°e0±& % TextField1°00Ʊ& % TableColumn0ı"0ű&%column1 C†€ A  GĆP0ʱ#0DZ&% °J&&&&&&&& &&&&&&%’°K°N0ȱ0ɱ&%quatre°%°É&&&&&&&& &&&&&&%’°°0ʱ&%PopUpButton(0)°…0˱&%View(1)° 0̱&%Box1°0ͱ& % MenuItem(3)°‘0α& % TextField10°0ϱ&%BuildAttributes° 0б&%TableCornerView(0)°\0ѱ& % ClipView(1)°W0ұ&%GormNSPopUpButton°"0Ó±& % MenuItem2°.0Ō±& % MenuItem1°,0Õ±& % MenuItem(2)°0Ö±& % TextField°0×±&%View(0)°0Ų±& % Scroller(0)°`0ٱ&%TableHeaderView(0)°V0ڱ& % ClipView(0)°A0Ū±&JJ0Ü1)NSNibConnector°Ļ0ݱ&% NSOwner0ޱ)°µ0ß±)°Ö°×0ą±)°Ģ°×0į±)°Ņ°Ė0ā±)°¢°Ņ0ć±)°Ō°Ņ0ä±)°Ó°Ņ0å±)°Ć0ę±)°¶0ē±)°Ā°Ė0č±)°”°Ė0é±)°«°Ė0ź±)°Ø°Ė0ė±)°Į°×0ģ±)°æ°×0ķ±)°½°×0ī±)°“°×0ļ±)°¬°×0š±)°§°×0ń±)°¦°×0ņ±)° °×0ó±)°Ī°×0ō1*NSNibOutletConnector°Ż° 0õ±& % ldOptField0ö±*°Ż°§0÷±& % cOptField0ų±*°Ż°“0ł±& % objcOptField0ś±*°Ż°æ0ū±& % cppOptField0ü±*°Ż°Ø0ż±&%searchOrderAdd0ž±*°Ż°«0’±&%searchOrderRemoveP±*°Ż°”P±&%searchOrderSetP±*°Ż°ŅP±&%searchOrderPopupP±*°Ż°ÖP±&%projectNameLabelP±*°Ż°µP±&%buildAttributesViewP1+NSNibControlConnector°Ņ°ŻP ±&%searchOrderPopupDidChange:P ±+°”°ŻP ±&%setSearchOrder:P ±+°«°ŻP ±&%removeSearchOrder:P±+°Ø°ŻP±&%addSearchOrder:P±*°Ż°ĀP±& % searchOrderTFP±+°æ°ŻP±&%changeCommonProjectEntry:P±+°“°ŻŠP±+°§°ŻŠP±+° °ŻŠP±*°æ°ŻP±&%delegateP±*°“°ŻŠP±*°§°ŻŠP±*° °ŻŠP±*°æ°“P±& % nextKeyViewP±*°“°§ŠP±*°§° ŠP ±)°£°ĖP!±)°„°ŚP"±)°­P#±)°©°„P$±*°Ż°„P%±&%searchOrderListP&±*°Ż°©P'±&%searchOrderColumnP(±*°„°ŻP)±&%delegateP*±*°„°ŻP+±& % dataSourceP,±)°×°µP-±)°Ė°ĢP.±)°Ś°£P/±)°Ų°£P0±+°Ų°£P1±& % _doScroll:P2±)°Ń°£P3±)°Ł°ŃP4±)°Š°£P5±)°Ź°×P6±)°¾P7±)°¤P8±)°ÕP9±)°ĶP:±*°Ż°ŹP;±&%installDomainPopupP<±)°Ą°ŻP=±)°ŖP>±+°Ź°ŻP?±&%changeCommonProjectEntry:P@±'&apps-projectcenter-master/Framework/English.lproj/Builder.gorm/000077500000000000000000000000001347226342500251735ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/Builder.gorm/data.classes000066400000000000000000000014301347226342500274610ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "showOptionsPanel:", "showFindView:", "showProjectBuild:", "showProjectInspector:", "showProjectLaunch:", "showProjectLoadedFiles:", "startBuild:", "startClean:" ); Super = NSObject; }; PCButton = { Actions = ( ); Outlets = ( ); Super = NSButton; }; PCProjectBuilder = { Actions = ( "startBuild:", "startClean:", "showOptionsPanel:" ); Outlets = ( buildButton, cleanButton, componentView, split, optionsButton, statusField, targetField, errorsCountField ); Super = NSObject; }; PCSplitView = { Actions = ( ); Outlets = ( ); Super = NSSplitView; }; }apps-projectcenter-master/Framework/English.lproj/Builder.gorm/data.info000066400000000000000000000002701347226342500267600ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/Builder.gorm/objects.gorm000066400000000000000000000430701347226342500275160ustar00rootroot00000000000000GNUstep archive00002e7c:00000024:000000a1:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder% ?€ A D Cą&% BÖ D/@01 NSView% ?€ A D Cą  D Cą&01 NSMutableArray1 NSArray&01NSBox% Ač B\ Cč C¬€  Cč C¬€&0± &0 ± %  Cč C¬€  Cč C¬€&0 ± &  0 1GSControlTemplate0 ±&%PCButton1NSButton1 NSControl% C“€ B0 B,  B0 B,& 0 ± &%01 NSButtonCell1 NSActionCell1NSCell0±&%Build01NSImage B B 01NSColor0±&%NSCalibratedWhiteColorSpace 0± &01NSBitmapImageRep1 NSImageRep0±&%NSDeviceRGBColorSpace B B %%(%(01NSData&ššII*)c²mć]É9'¬|ŒĄöįī’Ü ’z’pš*X o| ōŁč’ā°’ī0!’·’’w’Gš/Ė’¤öü÷ū’Ū†–’ē?2’ņ/’Ä’{’uü]É>6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~/tQćw’—’ר»’žżž’Öoy’ē?2’’’§’g’@ź}$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’’’ć>u¢Ōbö’Ķ2&’Ł@8’‰’_’”’f’aü.~$Q}¤Ļ^÷„’Ž’R’ѲȒ·t’W’’¬&/Oušŗhņzż‰’ÜĮÕ’§'’5~’qmr’]JŅ7)Eg‹²Ū###źÉ0ž’L`;’Ÿ”“’££¶ó/#p'>Y}„Å ž’żužžŸ³’››¬Ų+h "3Pv›Š:ōź ī ž|€“’¢„±Ē%&U .BTc~›¾ķUeo÷›ŖĒ24Æī~’ó™›ŖĻ/†, ‘ īgr‡’ĒČŲ’7UMĻT –öJki’²²Å’em}ē,x ök’¦¤»’Ž„ų7“#/«öbž··Ź’²±ČžZ6Ķ R"+% KŖß[ųšš­’Ŗ«Į’XguėEY^ĪM_gāf7ß \ ZÉö~‚—’Ń×ę’ĄÄ×’ĄĆ×’‘’ØżZŃ&!bāHie’ąéń’ČĶß’ČĶŻ’ĘŹŻ’sz’»-d ą`p’ćķō’ĪÓć’ČĶß’ĖŃą’ĒĢŽ’Pju’ JŠm<ü¹ŗŠ’ąéń’Śāķ’Ņ×ē’ŌŻė’ÄČŻ’F_iéh 1xŠłˆ‰’īżū’äīõ’Łąī’׎ģ’Iejó’<r·ę},üƮŒ¼¾Ó’IhośŖ-7c–ĒėJó®T ,Ux”‹W.:QF'  ž’((’R01NSFont%°&&&&&&&&&&&&&&%’0±&0±&&&& &&0±0±&%PCButton±% B0 C“€ B0 B,  B0 B,& 0± &%0±0±&%Clean°°&&&&&&&&&&&&&&%’0±&0 ±&0!± 0"±° 0#± &0$±° B B%%%%%0%±&žžII*l€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’€€€’ŖŖŖ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’TTT’ €€€’ŖŖŖ’’’’’+9’}’~’€’’‚’ƒ’„’…’†’+9’’’’’€€€’UUU’ €€€’ŖŖŖ’’’’’+9’}’~’€’’‚’ƒ’„’…’†’ˆ’‰’+9’’’’’€€€’UUU’ €€€’ŖŖŖ’’’’’+9’}’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’+9’’’’’€€€’UUU’ €€€’ŖŖŖ’’’’’+9’}’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’Œ’’+9’’’’’€€€’UUU’ €€€’ŖŖŖ’’’’’+9’~’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’Œ’’Ž’’+9’’’’’€€€’UUU’ €€€’ŖŖŖ’’’’’+9’~’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’Œ’’Ž’’’‘’+9’’’’’€€€’UUU’ €€€’’’’’+9’~’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’Œ’’Ž’’’‘’’’“’+9’’’’’+++’, €€€’’’’’~’’€’’‚’ƒ’„’…’†’ˆ’‰’Š’‹’Œ’’Ž’’’‘’’’“’•’–’’’’’+++’8&€€€’’’’’’€’”@N’ąæÄ’’’’’’’’’¤@O’’’’’’’’’’’’’’’’’‹’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’–’—’’’’’+++’>-€€€’’’’’€’’ąæÄ’’’’’„’įæÄ’įæÄ’ˆ’āæÅ’āæÅ’‹’ćæÅ’ćæÅ’Ž’ćæÅ’äæÅ’‘’äæÅ’åæÅ’•’åæÅ’åæÅ’˜’’’’’+++’@0€€€’’’’’’‚’ąæÄ’’’’’¤@O’†’ˆ’‰’āæÅ’āæÅ’Œ’ćæÅ’ćæÅ’’äæÅ’äæÅ’“’åæÅ’åæÅ’–’åæÅ’ęæÅ’™’’’’’+++’@0€€€’’’’’‚’ƒ’£@O’įæÄ’’’’’āæÄ’§@O’Š’āæÅ’ćæÅ’’ćæÅ’ćæÅ’’äæÅ’äæÅ’”’åæÅ’åæÅ’—’ęæÅ’ęæÅ’›’’’’’+++’@0€€€’’’’’ƒ’„’…’†’¦@O’’’’’āæÅ’‹’ćæÅ’ćæÅ’Ž’ćæÅ’äæÅ’’’äæÅ’åæÅ’•’’’’’’’’’’’’’’’’’›’œ’’’’’+++’@0€€€’’’’’„’…’įæÄ’āæÄ’‰’’’’’āæÅ’Œ’ćæÅ’ćæÅ’’äæÅ’äæÅ’“’åæÅ’åæÅ’–’åæÅ’ęæÅ’š’›’œ’’’’’’+++’@0€€€’’’’’…’†’¦@O’’’’’’’’’āæÅ’©@O’’ćæÅ’ćæÅ’‘’’’’’’’’’’’’’’’–’—’ęæÅ’ęæÅ’›’œ’’ž’’’’’+++’@0€€€’’’’’†’ˆ’‰’Š’‹’Œ’’Ž’’‘’’’“’”’•’–’˜’™’š’›’œ’’ž’Ÿ’’’’’+++’@0€€€’’’’’+9’‰’Š’‹’Œ’’Ž’’‘’’’“’”’•’–’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’+++’@0€€€’€€€’’’’’+9’‹’Œ’’’’‘’’’“’”’•’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’@0UUU’€€€’’’’’+9’Ž’’’‘’’’“’”’•’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’G>-UUU’€€€’’’’’+9’’‘’’’“’”’•’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’GD8& UUU’€€€’’’’’+9’’’“’”’•’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’GD;,  UUU’€€€’’’’’+9’”’•’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’GD;,  UUU’€€€’’’’’+9’—’˜’™’š’›’œ’’ž’Ÿ’+9’’’’’€€€’+++’GD;,  UUU’€€€’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’€€€’+++’GD;,  UUU’+++’+++’+++’+++’+++’+++’+++’+++’+++’+++’+++’+++’GD;,  ,8>@@@@@@@@@>8,  &-000000000-&    ž’%%ödR&&& &&0&±0'±&%PCButton±% B° C“€ B0 B,  B0 B,& 0(± &%0)±0*±&%Options0+±0,±&"%"common_ToolbarCustomizeToolbarItem°°*&&&&&&&&&&&&&&%’0-±&0.±&&&& &&0/1 GSCustomView1 GSNibItem00±& % NSSplitView Ą Cč CŒ€&011 NSTextField% C4 C  B€ A  B€ A& 02± &%031NSTextFieldCell04±&%Target:05±% A@°4&&&&&&&&&&&&&&%’06±07±&%NSNamedColorSpace08±&%System09±&%textBackgroundColor0:±°7°80;±& % textColor’0<±% C5 C“€ B| A  B| A& 0=± &%0>±0?±&%Status:°5°?&&&&&&&&&&&&&&%’0@±°70A±&%System0B±&%textBackgroundColor0C±°7°A0D±& % textColor’0E±% Cy C  CW A  CW A& 0F± &%0G±0H±&%Default with args ' '°5°H&&&&&&&&&&&&&&%’0I±°70J±&%System0K±&%textBackgroundColor0L±°7°J0M±& % textColor’0N±% Cy C“€ CW A  CW A& 0O± &%0P±0Q±& % Waiting...°5°Q&&&&&&&&&&&&&&%’0R±°70S±&%System0T±&%textBackgroundColor0U±°7°S0V±& % textColor’0W±% C‹€ C0 A€  C0 A€& 0X± &%0Y±0Z±&%Warnings and errors0[±% A0°Z&&&&&&&&&&&&&&%’0\±°70]±&%System0^±&%windowBackgroundColor0_±°70`±&%System0a±& % textColor’0b±0c±&%Box°&&&&&&&&&&&&&& %%0d±°70e±&%System0f±&%windowBackgroundColor0g±&%Window0h±& % Project Build°h ?€ ?€ F@ F@%&   D€ D@0i± &0j± &0k1NSMutableDictionary1 NSDictionary& 0l±&%NSOwner0m±&%PCProjectBuilder0n±&%Box(0)°0o±& % TextField(1)°<0p±& % TextField(3)°N0q±& % Button(5)°0r±&%Window°0s±& % Button(7)°&0t±&%View(0)° 0u±& % CustomView(0)°/0v±& % TextField(0)°10w±& % TextField(2)°E0x±& % Button(4)° 0y±& % TextField(4)°W0z± &0{1!NSNibConnector°n0|±!°t°n0}±!°x°t0~±!°q°t0±!°s°t0€±!°u°t01"NSNibOutletConnector0‚±&%NSOwner°x0ƒ±& % buildButton0„±"°‚°q0…±& % cleanButton0†±"°‚°s0‡±& % optionsButton0ˆ±"°‚°n0‰±& % componentView0б"°‚°u0‹±&%split0Œ1#NSNibControlConnector°x°‚0±& % startBuild:0ޱ#°q°‚0±& % startClean:0±!°v°t0‘±!°o°t0’±!°w°t0“±!°p°t0”±"°‚°w0•±& % targetField0–±!°y°t0—±"°‚°y0˜1$NSMutableString&%errorsCountField0™±#°s°‚0š±&%showOptionsPanel:0›±"°‚°p0œ±& % statusField0±&°q°°x° °s°'apps-projectcenter-master/Framework/English.lproj/BuilderOptions.gorm/000077500000000000000000000000001347226342500265475ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/BuilderOptions.gorm/data.classes000066400000000000000000000007361347226342500310450ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "optionsButtonClicked:", "optionsPopupChanged:" ); Super = NSObject; }; PCProjectBuilderOptions = { Actions = ( "optionsPopupChanged:", "optionsButtonClicked:" ); Outlets = ( buildArgsField, debugButton, verboseButton, optionsPanel, stripButton, sharedLibsButton, targetPopup ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/BuilderOptions.gorm/data.info000066400000000000000000000002701347226342500303340ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/BuilderOptions.gorm/objects.gorm000066400000000000000000000114551347226342500310740ustar00rootroot00000000000000GNUstep archive00002e7c:00000023:00000081:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C• C)&% Cy DĄ01 NSView% ?€ A C• C)  C• C)&01 NSMutableArray1NSArray&01 NSTextField1 NSControl% BŽ Bˆ AØ  Bˆ AØ&0± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±& % Arguments0 1NSFont% A@° &&&&&&&& &&&&&&%’0 1NSColor0 ±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±° °0±& % textColor’0±% C  Bˆ AØ  Bˆ AØ&0± &%0±0±&%Target° °&&&&&&&& &&&&&&%’0±° 0±&%System0±&%textBackgroundColor0±° °0±& % textColor’01 NSPopUpButton1NSButton% B’ C  CP A°  CP A°& 0± &%01NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell0±&0±%&&&&&&&&0 1NSMenu0!±&0"± &0#1 NSMenuItem0$±&°&&’%’%&&&&&&%’0%±&°%&&& &&° %%%%%0&±% B’ B` CP A€  CP A€& 0'± &%0(±0)±&%Generate debugging information0*1NSImage0+1NSMutableString&%common_SwitchOff°°)&&&&&&&&&&&&&&%’0,±&0-±&0.±0/±&%common_SwitchOn&&& &&00±% B’ Bš CP A€  CP A€& 01± &%02±03±&%Verbose output°*°°3&&&&&&&&&&&&&&%’04±&05±&°.&&& &&06±% B’ A` CP A€  CP A€& 07± &%08±09±&%Use shared libraries°*°°9&&&&&&&&&&&&&&%’0:±&0;±&°.&&& &&0<±% B’ B  CP A€  CP A€& 0=± &%0>±0?±&%Strip executables and objects°*°°?&&&&&&&&&&&&&&%’0@±&0A±&°.&&& &&0B±% B’ BŽ CP AØ  CP AØ&0C± &%0D±0E±&°°E&&&&&&&& &&&&&&%’0F±° 0G±&%System0H±&%textBackgroundColor0I±° °G0J±& % textColor’0K±° 0L±&%System0M±&%windowBackgroundColor0N±&%Window0O±& % Build Options°O @@ B F@ F@%&   D€ D@0P± &0Q± &0R1NSMutableDictionary1 NSDictionary& 0S±& % Button(3)°<0T±& % Button(0)°&0U±& % TextField(0)°0V±&%NSOwner0W±&%PCProjectBuilderOptions0X±&%Panel(0)°0Y±& % TextField(2)°0Z±& % Button(2)°60[±&%PopUpButton(0)°0\±& % TextField(1)°B0]±& % Button(1)°00^±&%View(0)°0_± &0`1!NSNibConnector°^°X0a±!°U°^0b±!°Y°^0c±!°[°^0d±!°T°^0e±!°]°^0f±!°Z°^0g±!°S°^0h1"NSNibOutletConnector0i±&%NSOwner°X0j±& % optionsPanel0k±"°i°[0l±& % targetPopup0m±"°i°]0n±& % verboseButton0o±"°i°T0p±& % debugButton0q±"°i°S0r±& % stripButton0s±"°i°Z0t±&%sharedLibsButton0u1#NSNibControlConnector°[°i0v±&%optionsPopupChanged:0w±#°]°i0x±&%optionsButtonClicked:0y±#°T°i°x0z±#°S°i°x0{±#°Z°i°x0|±!°\°^0}±"°i°\0~±&%buildArgsField0±"°\°i0€±&%delegate0±&apps-projectcenter-master/Framework/English.lproj/BuilderPanel.gorm/000077500000000000000000000000001347226342500261535ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/BuilderPanel.gorm/data.classes000066400000000000000000000010731347226342500304440ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "showProjectInspector:", "showFindView:", "showProjectBuild:", "showProjectLaunch:", "showProjectLoadedFiles:" ); Super = NSObject; }; PCAuxiliaryWindow = { Actions = ( ); Outlets = ( ); Super = NSWindow; }; PCProjectBuilderPanel = { Actions = ( ); Outlets = ( contentBox, emptyBox, panel ); Super = NSPanel; }; PCSplitView = { Actions = ( ); Outlets = ( ); Super = NSSplitView; }; }apps-projectcenter-master/Framework/English.lproj/BuilderPanel.gorm/data.info000066400000000000000000000002701347226342500277400ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/BuilderPanel.gorm/objects.gorm000066400000000000000000000040001347226342500304640ustar00rootroot00000000000000GNUstep archive000f4240:00000015:00000032:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%PCAuxiliaryWindow1NSWindow1 NSResponder% ?€ A Cļ C‘& % D3@01 NSView% ?€ A Cļ C‘  Cļ C‘&01 NSMutableArray1 NSArray&01 NSBox%  Cļ C‘  Cļ C‘&0± &0 ± % A  Cē C‘  Cē C‘&0 ± &0 ± %  Cē C‘  Cē C‘&0 ± &0 ± % @ą @ą Cą CŠ  Cą CŠ&0± &01NSCell0±&%Box01NSFont%&&&&&&&&&&&&&& @  @ %%0±0±&%Box°&&&&&&&&&&&&&& A %%01NSColor0±&% NSNamedColorSpace0±&% System0±&% windowBackgroundColor0±&%Window0±& % Project Build° CÜ Cp F@ F@%&   D  D€0± &0± &01NSMutableDictionary1 NSDictionary&0±&%View(1)° 0±&%View(0)° 0±&% NSOwner0 ±&%PCProjectBuilderPanel0!±&%Box(1)° 0"±&%Box(0)°0#±&%Panel°0$± &0%1NSNibConnector°"0&±°°"0'±°!°0(±°°!0)1NSNibOutletConnector0*±&% NSOwner°"0+±& % contentBox0,±°*°!0-±&%emptyBox0.±°*°#0/±&%panel00±°#°*011NSMutableString&%delegate02±&°#°apps-projectcenter-master/Framework/English.lproj/FileAttributes.gorm/000077500000000000000000000000001347226342500265335ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/FileAttributes.gorm/data.classes000066400000000000000000000012071347226342500310230ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "fileNameDidChange:", "setLocalizableResource:" ); Super = NSObject; }; PCFileNameField = { Actions = ( ); Outlets = ( ); Super = NSTextField; }; PCFileNameIcon = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PCProjectInspector = { Actions = ( "fileNameDidChange:", "setPublicHeader:", "setLocalizableResource:" ); Outlets = ( fileIconView, fileNameField, fileAttributesView, localizableButton, publicHeaderButton ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/FileAttributes.gorm/data.info000066400000000000000000000002701347226342500303200ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/FileAttributes.gorm/objects.gorm000066400000000000000000000077311347226342500310620ustar00rootroot00000000000000GNUstep archive00002e7c:00000022:00000063:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C“€ CŁ€& % DĄ DT@01 NSView% ?€ A C“€ CŁ€  C“€ CŁ€&01 NSMutableArray1NSArray&01NSBox%  C€ CĄ  C€ CĄ&0± &0 ± % @ @ C›€ C¾  C›€ C¾&0 ± &0 1GSControlTemplate0 ±&%PCFileNameIcon1 NSImageView1 NSControl% A C” B@ B@  B@ B@&0 ± &%01 NSImageCell1NSCell01NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’0±0±&%PCFileNameField1 NSTextField% B| C” Cf B@  Cf B@&0± &%01NSTextFieldCell1 NSActionCell0±&%No files selected0±%0±& % Helvetica AA&&&&&&&& &&&&&&%’01NSColor0±&%NSCalibratedWhiteColorSpace ?*Ŗ« ?€0±0±&%NSNamedColorSpace0±&%System0±& % textColor’0±% C€ C›€ @  C›€ @&0± &0± % @ @ C™€   C™€ &0 ± &0!±0"±&%Box°&&&&&&&&&&&&&& %%0#1NSButton% B| C‰€ C AØ  C AØ&0$± &%0%1 NSButtonCell0&±&%Localizable Resource0'1NSImage0(1NSMutableString&%common_SwitchOff°&&&&&&&&&&&&&&%’0)±&0*±&0+±0,±&%common_SwitchOn&&& &&0-±% B| C~ C AØ  C AØ&0.± &%0/±00±& % Public Header°'°&&&&&&&&&&&&&&%’01±&02±&°+&&& &&03±04±&%FileAttributes°&&&&&&&&&&&&&& %%05±°06±&%System07±&%windowBackgroundColor08±&%Window09±&%Panel°9 ?€ B F@ F@%0:±0;±&%NSApplicationIcon&   D  D€0<± &0=± &0>1NSMutableDictionary1 NSDictionary&0?±&%NSOwner0@±&%PCProjectInspector0A±& % ImageView° 0B±&%Button1°-0C±& % GormNSPanel°0D±&%Box°0E±&%Box1°0F±& % TextField°0G±&%Button°#0H± &0I1 NSNibConnector°C0J±&%NSOwner0K± °D0L± °A0M± °F0N± °E0O± °G0P1!NSNibOutletConnector°J°D0Q±&%fileAttributesView0R±!°J°F0S±& % fileNameField0T±!°J°A0U±& % fileIconView0V± °B°J0W1"NSNibControlConnector°F°J0X±&%fileNameDidChange:0Y±!°J°G0Z±&%localizableButton0[±!°J°B0\±&%publicHeaderButton0]±"°B°J0^±&%setPublicHeader:0_±!°F°J0`±&%delegate0a±"°G°J0b±&%setLocalizableResource:0c±&°A° °F°apps-projectcenter-master/Framework/English.lproj/LogPanel.gorm/000077500000000000000000000000001347226342500253065ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/LogPanel.gorm/data.classes000066400000000000000000000002621347226342500275760ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; PCLogController = { Actions = ( ); Outlets = ( panel, textView ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/LogPanel.gorm/data.info000066400000000000000000000003221347226342500270710ustar00rootroot00000000000000GNUstep archive00002af9:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&% Latest Version0±& %  Typed Streamapps-projectcenter-master/Framework/English.lproj/LogPanel.gorm/objects.gorm000066400000000000000000000042621347226342500276310ustar00rootroot00000000000000GNUstep archive00002af9:0000001c:00000031:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±&% PCLogController0±&% GSCustomClassMap0±&0±&% TextView01 NSTextView1NSText1NSView1 NSResponder% A˜  Cņ€ Ce  Cņ€ Ce&0 1 NSMutableArray1 NSArray&0 1 NSColor0 ±&%NSNamedColorSpace0 ±&% System0 ±&% textBackgroundColor  K–€ K–€0± ° ° 0±& %  textColor Cņ€ K–€0±& %  ScrollView01 NSScrollView%  Cü Ce  Cü Ce&0± &01 NSClipView% A˜  Cņ€ Ce A˜  Cņ€ Ce&0± &°° 01 NSScroller1 NSControl%  A Ce  A Ce&0± &%01NSCell0±&01NSFont%&&&&&&&&&°2 _doScroll:v12@0:4@8°% A A A A °0±&% Panel01GSWindowTemplate1GSClassSwapper0±&%NSPanel1NSPanel1NSWindow%  Cü Ce& % C˜€ Df@0±%  Cü Ce  Cü Ce&0± &°0± ° 0 ±&% System0!±&% windowBackgroundColor0"±&% Window0#±&% Log°# ?€ B F@ F@%0$1NSImage0%±&%NSApplicationIcon&   D  D€0&± &0'1NSNibConnector°0(±&%NSOwner0)±°0*±°0+1NSNibOutletConnector°(°0,±&% panel0-±°(°0.±&% textView0/±°°(00±&% delegate011 GSMutableSet1 NSMutableSet1NSSet&°apps-projectcenter-master/Framework/English.lproj/NewFile.gorm/000077500000000000000000000000001347226342500251365ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/NewFile.gorm/data.classes000066400000000000000000000010071347226342500274240ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "closeNewFilePanel:", "createFile:", "newFilePopupChanged:" ); Super = NSObject; }; PCFileCreator = { Actions = ( "closeNewFilePanel:", "createFile:", "newFilePopupChanged:" ); Outlets = ( newFilePanel, nfImage, nfTypePB, nfDescriptionTV, nfNameField, nfCancelButton, nfCreateButton, nfAddHeaderButton ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/NewFile.gorm/data.info000066400000000000000000000002701347226342500267230ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/NewFile.gorm/objects.gorm000066400000000000000000000173671347226342500274730ustar00rootroot00000000000000GNUstep archive00002e7c:0000002b:000000d3:00000001:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C¢ C&% C—€ Dc€01 NSView% ?€ A C¢ C  C¢ C&01 NSMutableArray1NSArray&  01 NSImageView1 NSControl% A C` B@ B@  B@ B@&0± &%0 1 NSImageCell1NSCell0 1NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’0 1 NSTextField% Bˆ Cb Cx B8  Cx B8&0 ± &%0 1NSTextFieldCell1 NSActionCell0±&%New File in Project0±%0±& % Helvetica AA&&&&&&&&&&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’01NSBox% CW C¢ @  C¢ @&0± &0± % @ą @ą C›   C› &0± &0±0±&%Box° &&&&&&&&&&&&&&%’0±°0±&%System0±&%windowBackgroundColor0 ±°0!±&%System0"±& % textColor @  @ %%0#1NSButton% C% A B’ AĄ  B’ AĄ&!0$± &%0%1 NSButtonCell0&±&%Cancel° &&&&&&&&&&&&&&%’0'±&%0(±&&&& &&0)±% Cs A B’ AĄ  B’ AĄ&!0*± &%0+±0,±&%Create0-1NSImage0.±& % common_ret° °,&&&&&&&&&&&&&&%’0/±&% 00±&01±02±& % common_retH&&& &&03±% BŽ B” Cu C  Cu C&04± &05± % @ @ Cq C  Cq C&06± &071 NSScrollView% æ€  Cr BŽ  Cr BŽ&08± &091 NSClipView% A˜  C_ BŽ A˜  C_ BŽ&0:± &0;1 NSTextView1NSText% A˜  C_   C_ &0<± &0=±0>±&%NSCalibratedWhiteColorSpace ?*Ŗ« ?€  K–€ K–€0?±°0@±&%System0A±& % textColor C_ K–€°=0B1 NSScroller%  A BŽ  A BŽ&0C± &%0D±0E±&° &&&&&&&&&&&&&&&°72 _doScroll:v12@0:4@8°9% A A A A °B0F1! NSPopUpButton% BŽ Cq AØ  Cq AØ&0G± &%0H1"NSPopUpButtonCell1#NSMenuItemCell0I±&° &&&&&&&&0J1$NSMenu0K±&0L± &0M1% NSMenuItem0N±&%Item 10O±&&&’%0P±0Q±& % common_Nibble’%0R±%0S±&%Item 2°O&&’%’%0T±%0U±&%Item 3°O&&’%’%&&&&&&%’0V±&0W±&&&& &&°M°J%%%%%0X±0Y±& % File Type° &&&&&&&&&&&&&& %%0Z±% A C= B` AØ  B` AØ&0[± &%0\±0]±& % File Type:° &&&&&&&&&&&&&&%’0^±°0_±&%System0`±&%textBackgroundColor0a±°°_0b±& % textColor’0c±% @Ą B@ Bp AØ  Bp AØ&0d± &%0e±0f±& % File Name:° &&&&&&&&&&&&&&%’0g±°0h±&%System0i±&%textBackgroundColor0j±°°h0k±& % textColor’0l±% BŽ B@ Cu AØ  Cu AØ&0m± &%0n±0o±&° °o&&&&&&&&&&&&&&%’0p±°0q±&%System0r±&%textBackgroundColor0s±°°q0t±& % textColor’0u±% B$ C¢ @  C¢ @&0v± &0w± % @ą @ą C›   C› &0x± &0y±0z±&%Box° &&&&&&&&&&&&&&%’0{±°0|±&%System0}±&%windowBackgroundColor0~±°0±&%System0€±& % textColor @  @ %%0±% @Ą A C AĄ  C AĄ&$0‚± &%0ƒ±0„±&%Add Header File0…±0†1&NSMutableString&%common_SwitchOff° °„&&&&&&&&&&&&&&%’0‡±&0ˆ±&0‰±0б&&%common_SwitchOn&&& &&0‹±°0Œ±&%System0±&%windowBackgroundColor0ޱ&%Window0±&° ?€ B F@ F@%0±0‘±&%NSApplicationIcon&   D  D€0’± &0“± &0”1'NSMutableDictionary1( NSDictionary&0•±&%Box1°30–±&%NSOwner0—±& % PCFileCreator0˜±&%Box2°u0™±& % TextField1°Z0š±& % ScrollView°70›±& % TextField2°c0œ±& % TextField° 0±&%View°0ž±& % TextField3°l0Ÿ±&%TextView°;0 ±&%View1°w0”±& % ImageView°0¢±&%Button°#0£±&%GormNSPopUpButton1°F0¤±& % GormNSPanel°0„±&%Box°0¦±& % Button(0)°0§±&%Button1°)0ر &0©1)NSNibConnector°¤0Ŗ±&%NSOwner0«±)°”°Ŗ0¬±)°œ°Ŗ0­±)°„°Ŗ0®±)°¢°Ŗ0Ʊ)°§°Ŗ0°±)°°Ŗ0±±)°•0²±)°š0³±)°Ÿ0“±)°™0µ±)°›°Ŗ0¶±)°ž0·±)°£0ø±)°˜°Ŗ0¹±)° °Ŗ0ŗ1*NSNibOutletConnector°Ŗ°¤0»±& % newFilePanel0¼±*°Ŗ°”0½±&%nfImage0¾±*°Ŗ°£0æ±&%nfTypePB0Ą±*°Ŗ°Ÿ0Į±&%nfDescriptionTV0±*°Ŗ°ž0Ʊ& % nfNameField0ı*°Ŗ°¢0ű&%nfCancelButton0ʱ*°Ŗ°§0DZ&%nfCreateButton0Č1+NSNibControlConnector°¢°Ŗ0ɱ&%closeNewFilePanel:0ʱ+°§°Ŗ0˱& % createFile:0̱+°£°Ŗ0ͱ&%newFilePopupChanged:0α*°ž°Ŗ0ϱ&%delegate0б)°¦0ѱ*°Ŗ°¦0ұ&%nfAddHeaderButton0Ó±'&apps-projectcenter-master/Framework/English.lproj/NewSubproject.gorm/000077500000000000000000000000001347226342500263775ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/NewSubproject.gorm/data.classes000066400000000000000000000007671347226342500307010ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "closeNewSubprojectPanel:", "createSubproject:" ); Super = NSObject; }; PCProjectManager = { Actions = ( "closeNewSubprojectPanel:", "createSubproject:" ); Outlets = ( nsPanel, nsImage, nsTitle, nsNameField, nsTypePB, nsCancelButton, nsCreateButton, projectNameField ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/NewSubproject.gorm/data.info000066400000000000000000000002701347226342500301640ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/NewSubproject.gorm/objects.gorm000066400000000000000000000151601347226342500307210ustar00rootroot00000000000000GNUstep archive00002e7c:00000025:000000b5:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C¢ CG&% CĶ DS€01 NSView% ?€ A C¢ CG  C¢ CG&01 NSMutableArray1NSArray&  01 NSImageView1 NSControl% A C  B@ B@  B@ B@&0± &%0 1 NSImageCell1NSCell0 1NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’0 1NSBox% C C¢ @  C¢ @&0 ± &0 ± % @ą @ą C›   C› &0± &01NSTextFieldCell1 NSActionCell0±&%Box° &&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%windowBackgroundColor0±°0±&%System0±& % textColor @  @ %%01 NSTextField% B„ C Cx B   Cx B &0± &%0±0±&%New Subproject0±%0±&%Helvetica-Bold A€A€&&&&&&&& &&&&&&%’0±°0±&%System0 ±&%textBackgroundColor0!±°°0"±& % textColor’0#±% B„ B‚ Cx AØ  Cx AØ&0$± &%0%±0&±&° &&&&&&&& &&&&&&%’0'±°0(±&%System0)±&%textBackgroundColor0*±°°(0+±& % textColor’0,±% @  B‚ B` AØ  B` AØ&0-± &%0.±0/±&%Name:00±%01±& % Helvetica A@A@&&&&&&&& &&&&&&%’02±°03±&%System04±&%textBackgroundColor05±°°306±& % textColor’07±% AP B¶ B@ AØ  B@ AØ&08± &%09±0:±&%Type:°0&&&&&&&& &&&&&&%’0;±°0<±&%System0=±&%textBackgroundColor0>±°°<0?±& % textColor’0@1 NSPopUpButton1NSButton% B„ B¶ Cx AØ  Cx AØ&0A± &%0B1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell0C±&° &&&&&&&&0D1NSMenu0E±&0F± &0G1 NSMenuItem0H±&%Item 30I±&&&’%’%&&&&&&%’0J±&0K±&&&& &&°D%%%%%0L±% Cq A B’ AĄ  B’ AĄ&0M± &%0N±0O±&%Create0P1 NSImage0Q±& % common_ret° °O&&&&&&&&&&&&&&%’0R±&% 0S±&0T± 0U±& % common_retH&&& &&0V±% C# A B’ AĄ  B’ AĄ&0W± &%0X±0Y±&%Cancel° &&&&&&&&&&&&&&%’0Z±&%0[±&&&& &&0\±% B0 C¢ @  C¢ @&0]± &0^± % @ą @ą C›   C› &0_± &0`±0a±&%Box° &&&&&&&& &&&&&&%’0b±°0c±&%System0d±&%windowBackgroundColor0e±°0f±&%System0g±& % textColor @  @ %%0h±% B„ C  BT A€  BT A€&0i± &%0j±0k±& % In project:°0°k&&&&&&&& &&&&&&%’0l±°0m±&%System0n±&%textBackgroundColor0o±°°m0p±& % textColor’0q±% Bų C  C> A€  C> A€&0r± &%0s±0t±& % Project name0u±%0v±&%Helvetica-Oblique A@A@&&&&&&&& &&&&&&%’0w±°0x±&%System0y±&%textBackgroundColor0z±°°x0{±& % textColor’°0|±&%Window0}±&°} ?€ B F@ F@%0~± 0±&%NSApplicationIcon&   D  D€0€± &0± &0‚1!NSMutableDictionary1" NSDictionary&0ƒ±&%Box1°\0„±&%NSOwner0…±&%PCProjectManager0†±& % TextField1°#0‡±& % TextField2°,0ˆ±& % TextField°0‰±& % TextField3°70б&%View°^0‹±& % NewSubproject°0Œ±& % TextField4°h0±& % TextField5°q0ޱ& % ImageView°0±&%GormNSPopUpButton°@0±&%Button°L0‘±&%Box° 0’±&%Button1°V0“± &0”1#NSNibConnector°Ž0•±#°‘0–±#°ˆ0—±#°†0˜±#°‡0™±#°0š±#°0›±#°ƒ0œ±&%NSOwner01$NSNibOutletConnector°œ°‹0ž±&%nsPanel0Ÿ±$°œ°Ž0 ±&%nsImage0”±$°œ°ˆ0¢±&%nsTitle0£±$°œ°†0¤±& % nsNameField0„±$°œ°0¦±&%nsTypePB0§±$°œ°’0ر&%nsCancelButton0©±$°œ°0Ŗ±&%nsCreateButton0«1%NSNibControlConnector°’°œ0¬±&%closeNewSubprojectPanel:0­±%°°œ0®±&%createSubproject:0Ʊ$°†°œ0°±&%delegate0±±#°Œ0²±#°°œ0³±$°œ°0“±&%projectNameField0µ±!&apps-projectcenter-master/Framework/English.lproj/ProjectAttributes.gorm/000077500000000000000000000000001347226342500272625ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/ProjectAttributes.gorm/data.classes000066400000000000000000000005641347226342500315570ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setCurrentLanguage:" ); Super = NSObject; }; PCProjectInspector = { Actions = ( "setCurrentLanguage:" ); Outlets = ( projectTypeField, projectAttributesView, projectLanguagePB, projectNameField ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/ProjectAttributes.gorm/data.info000066400000000000000000000002701347226342500310470ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/ProjectAttributes.gorm/objects.gorm000066400000000000000000000103421347226342500316010ustar00rootroot00000000000000GNUstep archive000f4240:00000022:00000062:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C« CĢ& % Ce DW01 NSView% ?€ A C« CĢ  C« CĢ&01 NSMutableArray1 NSArray&01NSBox% ĄĄ ĄĄ C€ CĄ  C€ CĄ&0± &0 ± % @ @ C›€ C¾  C›€ C¾&0 ± &0 1 NSTextField1 NSControl% A C® BŠ AØ  BŠ AØ&0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0±& % Project Type:01NSFont% A@&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% Bš C®€ C. AØ  C. AØ&0± &%0±0±&%__________________________0±%0±&%Helvetica-Bold A@A@°&&&&&&&& &&&&&&%’0±0±&% NSCalibratedWhiteColorSpace ?*Ŗ« ?€°’0±% A C” BŠ AØ  BŠ AØ&0± &%0 ±0!±& % Project Name:°&&&&&&&& &&&&&&%’°°’0"±% Bš C£ C. AØ  C. AØ&0#± &%0$±0%±&0&±%&&&&&&&& &&&&&&%’°°’0'±% A C• BŠ AØ  BŠ AØ&0(± &%0)±0*±& % Language:°&&&&&&&& &&&&&&%’°°’0+1 NSPopUpButton1NSButton% Bš C–€ C. AØ  C. AØ&0,± &%0-1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell°%°&&&&&&&&&0.1NSMenu°%0/± &001 NSMenuItem01±&%Item 1°%&&’%021NSImage03±& %  common_Nibble’%04±05±&%Item 2°%&&’%’%06±07±&%Item 3°%&&’%’%&&&&&&%’°%°%&&& &&°0°.%%%%%08±09±&%projectAttributesView°&&&&&&&&&&&&&&& %%0:±°0;±&% System0<±&% windowBackgroundColor0=±&%Window0>±&%Panel°> æ€ Įų F8 FĄ%&   DČ DW0?± &0@± &0A1NSMutableDictionary1 NSDictionary& 0B±&%Box°0C±& % TextField3°"0D±&%GormNSPopUpButton°+0E±& % TextField° 0F±& % TextField2°0G±&% NSOwner0H±&%PCProjectInspector0I±& % Inspector°0J±& % TextField1°0K±& % TextField4°'0L±&%View° 0M± &0N1 NSNibConnector°I0O±&% NSOwner0P± °B°O0Q± °L°O0R± °E°O0S± °J°O0T± °F°O0U± °C°O0V± °K°O0W± °D°O0X1!NSNibOutletConnector°O°J0Y±&%projectTypeField0Z±!°O°C0[±&%projectNameField0\±!°O°D0]±&%projectLanguagePB0^±!°O°B0_±&%projectAttributesView0`1"NSNibControlConnector°D°O0a±&%setCurrentLanguage:0b±&apps-projectcenter-master/Framework/English.lproj/ProjectDescription.gorm/000077500000000000000000000000001347226342500274175ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/ProjectDescription.gorm/data.classes000066400000000000000000000012631347226342500317110ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "addAuthor:", "removeAuthor:", "upAuthor:", "downAuthor:", "changeCommonProjectEntry:" ); Super = NSObject; }; PCProjectInspector = { Actions = ( "addAuthor:", "removeAuthor:", "upAuthor:", "downAuthor:", "changeCommonProjectEntry:" ); Outlets = ( descriptionField, releaseField, licenseField, licDescriptionField, urlField, authorsScroll, authorAdd, authorRemove, authorUp, authorDown, projectDescriptionView ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/ProjectDescription.gorm/data.info000066400000000000000000000002701347226342500312040ustar00rootroot00000000000000GNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/ProjectDescription.gorm/objects.gorm000066400000000000000000000162571347226342500317510ustar00rootroot00000000000000GNUstep archive00002f45:00000020:000000c4:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C«€ CÜ& % Cö€ D@01 NSView% ?€ A C«€ CÜ  C«€ CÜ&01 NSMutableArray1 NSArray&01NSBox%  C€ CĄ  C€ CĄ&0± &0 ± % @ @ C›€ C¾  C›€ C¾&0 ± &  0 1 NSTextField1 NSControl% @€ C°€ Bä AØ  Bä AØ&0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0±& % Description:01NSFont%0±& % Helvetica A@A@&&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% Bī C°€ C1 AØ  C1 AØ&0± &%0±0±&0±%°&&&&&&&& &&&&&&%’°°’0±% @€ C£€ Bä AØ  Bä AØ&0± &%0±0±&%Release:°&&&&&&&& &&&&&&%’°°’0 ±% Bī C£€ C1 AØ  C1 AØ&0!± &%0"±0#±&°°#&&&&&&&& &&&&&&%’°°’0$±% @€ C–€ Bä AØ  Bä AØ&0%± &%0&±0'±&%License:°&&&&&&&& &&&&&&%’°°’0(±% Bī C–€ C1 AØ  C1 AØ&0)± &%0*±0+±&°°+&&&&&&&& &&&&&&%’°°’0,±% @€ C‰€ Bä AØ  Bä AØ&0-± &%0.±0/±&%License Desc.:°°/&&&&&&&& &&&&&&%’°°’00±% Bī C‰€ C1 AØ  C1 AØ&01± &%02±03±&°&&&&&&&& &&&&&&%’°°’04±% @€ Cy Bä AØ  Bä AØ&05± &%06±07±&%URL:°&&&&&&&& &&&&&&%’°°’08±% Bī Cy C1 AØ  C1 AØ&09± &%0:±0;±&°°;&&&&&&&& &&&&&&%’°°’0<±% @Ą BŌ C‘ C   C‘ C &0=± &0>± % @ @ C Bź  C Bź&0?± &0@1NSButton% C\ Bŗ Bp AĄ  Bp AĄ&0A± &%0B1 NSButtonCell0C±&%Add°&&&&&&&&&&&&&&%’0D±&0E±&&&& &&0F±% C\ B€ Bp AĄ  Bp AĄ&0G± &%0H±0I±&%Remove°&&&&&&&&&&&&&&%’0J±&0K±&&&& &&0L±% C\ B  Bp AĄ  Bp AĄ&0M± &%0N±0O±&%Button°&&&&&&&&&&&&&&%’0P±&0Q±&&&& &&0R±% C\ @Ą Bp AĄ  Bp AĄ&0S± &%0T±0U±&%Button°&&&&&&&&&&&&&&%’0V±&0W±&&&& &&0X1 GSCustomView1 GSNibItem0Y±& % NSScrollView @Ą @Ą CQ BŽ&0Z±0[±&%Authors°&&&&&&&&&&&&&& %%0\±0]±&%projectDescription°&&&&&&&&&&&&&& %%0^±°0_±&%System0`±&%windowBackgroundColor0a±&%Window0b±&%Panel°b ?€ B F@ F@%0c1NSImage0d±&%NSApplicationIcon&   Dš D‡0e± &0f± &0g1NSMutableDictionary1 NSDictionary&0h±& % TextField7°00i±&%NSOwner0j±&%PCProjectInspector0k±& % TextField8°40l±& % TextField° 0m±& % TextField9°80n±&%View(1)°>0o±&%Button°@0p±&%GormCustomView°X0q±& % Description°0r±&%View(0)° 0s±&%Box°0t±& % TextField1°0u±& % TextField2°0v±&%Button1°F0w±& % TextField3° 0x±& % TextField4°$0y±&%Button2°L0z±&%Button3°R0{±&%Box1°<0|±& % TextField5°(0}±& % TextField6°,0~± &2201NSNibConnector°q0€±&%NSOwner0±°s0‚±°l°r0ƒ±°t°r0„±°u°r0…±°w°r0†±°x°r0‡±°|°r0ˆ±°}°r0‰±°h°r0б°k°r0‹±°m°r0Œ±°{°r0±°o°n0ޱ°v°n0±°y°n0±°z°n0‘±°p°n0’1NSNibOutletConnector°€°t0“±&%descriptionField0”±°€°w0•±& % releaseField0–±°€°|0—±& % licenseField0˜±°€°h0™±&%licDescriptionField0š±°€°m0›±&%urlField0œ±°€°p0±& % authorsScroll0ž±°€°o0Ÿ±& % authorAdd0 ±°€°v0”±& % authorRemove0¢±°€°y0£±&%authorUp0¤±°€°z0„±& % authorDown0¦1NSNibControlConnector°o°€0§±& % addAuthor:0ر°v°€0©±& % removeAuthor:0Ŗ±°y°€0«±& % upAuthor:0¬±°z°€0­±& % downAuthor:0®±°t°€0Ʊ&%changeCommonProjectEntry:0°±°w°€°Æ0±±°|°€°Æ0²±°h°€°Æ0³±°m°€°Æ0“±°€°s0µ±&%projectDescriptionView0¶±°t°w0·1 NSMutableString& % nextKeyView0ø±°w°|°·0¹±°|°h°·0ŗ±°h°m°·0»±°m°t°·0¼±°t°€0½± &%delegate0¾±°w°€°½0æ±°|°€°½0Ą±°h°€°½0Į±°m°€°½0±°r°s0Ʊ°n°{0ı&apps-projectcenter-master/Framework/English.lproj/ProjectInspector.gorm/000077500000000000000000000000001347226342500271025ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/ProjectInspector.gorm/data.classes000066400000000000000000000006111347226342500313700ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "inspectorPopupDidChange:" ); Super = NSObject; }; PCProjectInspector = { Actions = ( "inspectorPopupDidChange:" ); Outlets = ( inspectorPanel, inspectorPopup, inspectorView, contentView ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/ProjectInspector.gorm/data.info000066400000000000000000000002701347226342500306670ustar00rootroot00000000000000GNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/ProjectInspector.gorm/objects.gorm000066400000000000000000000064031347226342500314240ustar00rootroot00000000000000GNUstep archive00002f45:00000020:00000059:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% @  @  C– CĻ€&% C’€ D9€01 NSView% @  @  C– CĻ€  C– CĻ€&01 NSMutableArray1 NSArray&01NSBox%  C– CĶ  C– CĶ&0± &0 ± %  C– CĶ  C– CĶ&0 ± &0 1 NSPopUpButton1NSButton1 NSControl% B¢ CĮ C A   C A &0 ± &%0 1NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell1 NSActionCell1NSCell0±&01NSFont%&&&&&&&&01NSMenu0±&0± &01 NSMenuItem0±&%Build Attributes0±&&&’%’%0±0±&%Project Attributes°&&’%’%0±0±&%Project Description°&&’%’%0±0±&%Project Languages0±&&&’%’%0±0±&%File Attributes0±&&&’%’%&&&&&&%’0 ±&0!±&&&& &&°%%%%%0"±% Ą Ą C˜ C¾  C˜ C¾&0#± &0$± %  C˜ C¾  C˜ C¾&0%± &0&±0'±& % inspectorView°&&&&&&&&&&&&&& %%0(±0)±& % contentView°&&&&&&&&&&&&&& %%0*1NSColor0+±&%NSNamedColorSpace0,±&%System0-±&%windowBackgroundColor0.±&%Window0/±&%Project Inspector°/ C– CĻ€ F@ F@%001NSImage01±&%NSApplicationIcon&   D€ D@02± &03± &041NSMutableDictionary1 NSDictionary& 05±& % MenuItem3°06±&%NSOwner07±&%PCProjectInspector08±&%Box°09±&%Box1°"0:±& % MenuItem(0)°0;±&%View(1)°$0<±&%MenuItem°0=±& % MenuItem1°0>±&%GormNSPopUpButton° 0?±& % MenuItem2°0@±&%View(0)° 0A±& % Inspector°0B± &0C1NSNibConnector°A0D±&%NSOwner0E±°80F±°>°@0G±°9°@0H1NSNibOutletConnector°D°A0I±&%inspectorPanel0J±°D°80K±& % contentView0L±°D°>0M±&%inspectorPopup0N±°D°90O±& % inspectorView0P1 NSNibControlConnector°>°D0Q±&%inspectorPopupDidChange:0R±°<0S±°=0T±°?0U±°50V±°@°80W±°;°90X±°:0Y±&apps-projectcenter-master/Framework/English.lproj/ProjectLanguages.gorm/000077500000000000000000000000001347226342500270425ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/ProjectLanguages.gorm/data.classes000066400000000000000000000005651347226342500313400ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "addLanguage:", "removeLanguage:" ); Super = NSObject; }; PCProjectInspector = { Actions = ( "addLanguage:", "removeLanguage:" ); Outlets = ( projectLanguagesView, languagesList, newLanguage ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/ProjectLanguages.gorm/data.info000066400000000000000000000002701347226342500306270ustar00rootroot00000000000000GNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/ProjectLanguages.gorm/objects.gorm000066400000000000000000000126171347226342500313700ustar00rootroot00000000000000GNUstep archive00002f45:00000025:0000007f:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% @  @  C« CĢ& % Ce D9€01 NSView% @  @  C« CĢ  C« CĢ&01 NSMutableArray1 NSArray&01NSBox% A A` C€ CĄ  C€ CĄ&0± &0 ± % @ą @ą C–€ C¹  C–€ C¹&0 ± &0 1 NSScrollView% C C‘€ Cr  C‘€ Cr&0 ± &0 1 NSClipView% AØ AĄ C† CX  C† CX&0± &01 NSTableView1 NSControl%  C† C!  C† C!&0± &%01NSCell0±&01NSFont%&&&&&&&&&&&&&&0± &01 NSTableColumn0±&%column1 C† A  GĆP01NSTableHeaderCell1NSTextFieldCell1 NSActionCell0±& % Languages0±% °&&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%controlShadowColor0±°°0±&%windowFrameTextColor0 ±0!±&°&&&&&&&& &&&&&&%’0"±°0#±&%System0$±&%textBackgroundColor0%±°°#0&±& % textColor0'±°°0(±& % gridColor0)±°°0*±&%controlBackgroundColor0+1NSTableHeaderView%  C† A°  C† A°&0,± &0-1GSTableCornerView% @ @ A˜ A°  A˜ A°&0.± &%% A€’ @  @°)0/1 NSScroller% @ AĄ A CX  A CX&00± &%01±°°&&&&&&&&&&&&&&&° 2 _doScroll:02±% AØ @ C† A°  C† A°&03± &°+°)°-° % A A A A °/°2041NSButton% B’ B¬ AĄ  B¬ AĄ&05± &%061 NSButtonCell07±&%Add°&&&&&&&&&&&&&&%’08±&09±&&&& &&0:±% B¶ B’ B¬ AĄ  B¬ AĄ&0;± &%0<±0=±&%Remove°&&&&&&&&&&&&&&%’0>±&0?±&&&& &&0@1 NSTextField% BĢ C‘€ AØ  C‘€ AØ&0A± &%0B±0C±&°°C&&&&&&&& &&&&&&%’°"°%’0D±0E±&%Title°&&&&&&&&&&&&&& @  @ %%0F±°°0G±&%windowBackgroundColor0H±&%Window0I±&%Panel°I ?€ ?€ F@ F@%&   D€ D@0J± &0K± &0L1 NSMutableDictionary1! NSDictionary& 0M±& % Inspector°0N±&%TableColumn(2)°0O±& % ScrollView(0)° 0P±&%NSOwner0Q±&%PCProjectInspector0R±& % TableView(0)°0S±&%Box(0)°0T±& % Button(1)°:0U±& % TextField(1)°@0V±&%View0W± % @ @ C›€ C¾  C›€ C¾&0X± &0Y±&%TableColumn(1)0Z±0[±&%column2 BT A  GĆP0\±0]±&% °°]&&&&&&&& &&&&&&%’°°0^±°°&&&&&&&& &&&&&&%’°"°%0_±&%View(0)° 0`±& % Button(0)°40a±&%TableColumn(0)0b±0c±&%column1 BL A  GĆP0d±0e±& %  Languages°°e&&&&&&&& &&&&&&%’°°0f±°°&&&&&&&& &&&&&&%’°"°%0g± &0h1"NSNibConnector°M0i±&%NSOwner0j±"°V°i0k±"°O°S0l±"°R°O0m±"°a°R0n±"°Y°R0o±"°`°S0p±"°T°S0q±"°U°S0r1#NSNibOutletConnector°i°R0s±& % languagesList0t±"°N°R0u±"°S0v±"°_°S0w±#°i°S0x1$NSMutableString&%projectLanguagesView0y±#°i°U0z±& % newLanguage0{1%NSNibControlConnector°`°i0|±& % addLanguage:0}±%°T°i0~±&%removeLanguage:0± &apps-projectcenter-master/Framework/English.lproj/ProjectWindow.gorm/000077500000000000000000000000001347226342500264035ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/ProjectWindow.gorm/data.classes000066400000000000000000000020021347226342500306650ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "showProjectInspector:", "showFindView:", "showProjectBuild:", "showProjectLaunch:", "showProjectLoadedFiles:" ); Super = NSObject; }; PCButton = { Actions = ( ); Outlets = ( ); Super = NSButton; }; PCFileNameField = { Actions = ( ); Outlets = ( ); Super = NSTextField; }; PCFileNameIcon = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PCProjectWindow = { Actions = ( "showProjectInspector:", "showFindView:", "showProjectBuild:", "showProjectLaunch:", "showProjectLoadedFiles:" ); Outlets = ( buildButton, fileIcon, fileIconTitle, findButton, h_split, inspectorButton, launchButton, loadedFilesButton, projectWindow, statusLine, toolbarView ); Super = NSObject; }; PCSplitView = { Actions = ( ); Outlets = ( ); Super = NSSplitView; }; }apps-projectcenter-master/Framework/English.lproj/ProjectWindow.gorm/data.info000066400000000000000000000002701347226342500301700ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/ProjectWindow.gorm/objects.gorm000066400000000000000000001142721347226342500307310ustar00rootroot00000000000000GNUstep archive00002e7c:00000026:000000c2:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder% ?€ A D Cź&% CD D@01 NSView% ?€ A D Cź  D Cź&01 NSMutableArray1 NSArray&01NSBox% A CĻ€ D Bd  D Bd& 0± &0 ± %  D Bd  D Bd&0 ± &0 1GSControlTemplate0 ±&%PCFileNameIcon1 NSImageView1 NSControl% Cō€  BH BH  BH BH&0 ± &%01 NSImageCell1NSCell01NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’01 NSTextField% C`  C‚ Aˆ  C‚ Aˆ&0± &%01NSTextFieldCell1 NSActionCell0±&%Project°°&&&&&&&&&&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%windowBackgroundColor0±°0±&%System0±& % textColor’0±0±&%PCButton1NSButton% B0 ?€ B0 B,  B0 B,&0± &%01 NSButtonCell0±&%Button0 1NSImage B B0!±0"±&%NSCalibratedWhiteColorSpace 0#± &0$1NSBitmapImageRep1 NSImageRep0%±&%NSDeviceWhiteColorSpace B B%%%%%0&1NSData&††II*ģ ž’%%v~Rzrr0'±0(±&%NSDeviceRGBColorSpace B B%%%%%0)±&žžII*lUUUU’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŁŁŁėŖŖŖ’’’’’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’ćģģ’įźź’Üåå’Ūćć’ÖŽŽ’ŌÜÜ’Š××’ĖŅŅ’ÉŠŠ’ÄĖĖ’‹Œ˜’µ’’’’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’čńń’ęļļ’įźź’ąčč’Ūćć’Ųąą’ŌÜÜ’ŃŁŁ’ĪÕÖ’ÉŠŠ’ĘĶĶ’ĆÉÉ’‰Š–’#!-’’’’’čńń’čńń’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’¾ÄÄ’‡‡”’ *’’’’’čńń’čńń’’MGg’MGg’MGg’NGg’OHi’PIi’PIj’PIj’PIj’PIi’OHi’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’’’’’»ĄĮ’†‡“’(’’’’’čńń’čńń’’KEe’XQn’[Uq’]Xt’_Yw’_Yw’aZz’b\{’aZz’_Yx’_Yw’^Xw’]Xu’]Ws’[Uq’[Uq’[Uq’[Uq’XQn’KEe’’’’’·½½’„„‘’%’’’’’čńń’čńń’’OHh’]Xt’c]y’ga€’kd†’ke†’mf‰’mg‰’le‡’’’’’’’’’_Zt’[Uq’MGg’’’’’³øø’‚Ž’"’’’’’čńń’čńń’’PIi’_Yw’e_}’’’’’’’’’’’’’’’_Zt’[Uq’MGg’’’’’Æ“µ’’!’’’’’čńń’čńń’’PIj’_Yx’f`’’’’’’’’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’’_Zt’[Uq’MGg’’’’’¬±±’~~‹’’’’’’čńń’čńń’’QJj’`Zy’ga€’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’’_Zt’[Uq’MGg’’’’’©­®’}~Š’’’’’’čńń’čńń’’QJj’`Zx’ga’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’’_Zt’[Uq’MGg’’’’’¦Ŗ«’{{‡’’’’’’čńń’čńń’’PIi’_Yw’e_|’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’’_Zt’[Uq’MGg’’’’’”„„’yx…’’’’’’čńń’čńń’’OHh’]Ws’b\x’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’’_Zt’[Uq’MGg’’’’’œŸ ’wwƒ’’’’’’čńń’čńń’’MGg’\Vr’a[v’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’_Zt’[Uq’MGg’’’’’šžž’uu‚’’’’’’čńń’ęļļ’’MGg’[Uq’_Zt’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’e_|’c]{’a[v’aZu’_Zt’[Uq’MGg’’’’’–™™’sr’ ’’’’’čńń’ćģģ’’MGg’[Uq’_Zt’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’c\x’a\w’_Zt’_Zt’_Zt’[Uq’MGg’’’’’’•–’rq~’ ’’’’’ćģģ’ąčč’’MGg’[Uq’_Zt’’’’’’’’’’’a\w’aZu’_Zt’_Zt’_Zt’[Uq’MGg’’’’’’’’po|’  ’’’’’ąčč’Ūćć’ ’MGg’\Vr’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’[Uq’\Vr’MGg’’’’’ŠŒ’nmy’’’’’’Üåå’Ųąą’ ’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’MGg’’’’’‡‰Š’mlx’’’’’’Ųąą’ŌÜÜ’ŖŖŖ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’„…†’kiv’’’’’’ÖŽŽ’ŃŁŁ’Š××’ĖŅŅ’ÉŠŠ’ÄĖĖ’æĘĘ’¾ÄÄ’¹ææ’·½½’³øø’®³³’¬±±’§¬¬’¦Ŗ«’”„„’ž”¢’šžž’—š›’’•–’‘“”’QMe’QMe’†‡ˆ’‚ƒ’jhu’’’’’’”–¢’’” ’‘“Ÿ’œ’Ž›’‹™’‰Š–’ˆ‰–’†‡“’…†’’ƒƒ’’€€Œ’}~Š’}}‰’zz†’yx…’wwƒ’uu‚’sr’rq~’QMe’’ ’·½½’kiv’jhu’’uqŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŖŖŖ’’’’’ŖŖŖ’ijk’ijk’VV^’ސ𒱶¼’ސš’ECU’20?’’(%2’ECU’ijk’qst’(%2’U’’’’œ””’¢¢’¢¢’¢¢’ƒ††’{~€’ijk’ZZc’>=L’(%2’ECU’ijk’{~€’§¬¬’§¬¬’§¬¬’(%2’U’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U’’’’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’ŖŖŖ’’ˆ3`\v’’’’’’’’’’’’’’’’’’’(%2’ˆU33UUUUUUUUUUUUUUUUUUUU3 ž’%%ödR°&&&&&&&&&&&&&&%’0*±&0+±&&&& &&0,±0-±&%PCButton±% B° ?€ B, B,  B, B,&0.± &%0/±00±&%Button01± B B02±°" 03± &04±°% B B%%%%%05±&††II*ģ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ž’%%v~Rzrr06±°( B B%%%%%07±&žžII*lMMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’MMM’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’’BMMM’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’’BMMM’ččč’ččč’’Uq’Uq’øœø’Uq’øœø’Uq’Uq’’Uq’’øœø’Uq’ččč’ččč’’B;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’;;;’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’Uq’Uq’’øœø’’ččč’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’ččč’ččč’ččč’ččč’ččč’ččč’ččč’ččč’’B;;;’’’’’’’’’’\{’’\{’ÉŖÉ’\{’\{’’\{’’ÉŖÉ’\{’’’’’’’’’’’’’’zhz’Uq’’Uq’øœø’Uq’’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’ÕÕÕ’ččč’ččč’ččč’ččč’ččč’ččč’ččč’’B;;;’’’’’’’’’\{’\{’ÉŖÉ’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’&&&’ččč’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ššš’ččč’ččč’’B;;;’’’’’’’’’\{’’\{’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’fˆ’’fˆ’ݻݒfˆ’fˆ’’fˆ’’ݻݒfˆ’’’’’’’’’’’’’’ššš’ččč’ččč’’B;;;’’’’’’’’’’\{’ÉŖÉ’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’fˆ’fˆ’ݻݒfˆ’’ݻݒfˆ’’fˆ’ݻݒfˆ’’fˆ’’’’’’’’’’ššš’ččč’ččč’’B;;;’’’’’’’’’’\{’\{’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’zhz’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’’fˆ’ݻݒ’fˆ’ݻݒfˆ’fˆ’ݻݒ’’’’’’’’’’’’’’’’’’ššš’ččč’ččč’’B;;;’’’’’’’’’\{’’\{’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ššš’ččč’ččč’’B;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’fˆ’ݻݒfˆ’’ݻݒfˆ’’fˆ’fˆ’ݻݒfˆ’’’’’’’’’’’’’’’B;;;’’’’’’’’’’\{’\{’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’UBBBB;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’fˆ’fˆ’ݻݒ’fˆ’ݻݒfˆ’’ݻݒfˆ’’’’’’’’’’’’’’’U*;;;’’’’’’’’’’’’’’’’’’’’’&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U*;;;’’’’’’&&&’’’’’’’’’fˆ’’fˆ’ݻݒfˆ’’ݻݒfˆ’fˆ’’fˆ’fˆ’’’’’’’’’’’’’’U*UUUUU&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U*****&&&’’’’’’’’’’fˆ’fˆ’fˆ’ݻݒfˆ’fˆ’’fˆ’ݻݒfˆ’’fˆ’’’’’’’’’’U*&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U*&&&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U*&&&’’’’’’’’’’’’’’’’’’’U*UUUUUUUUUUUUUUUUUUU******************** ž’%%ödR°&&&&&&&&&&&&&&%’08±&09±&&&& &&0:±0;±&%PCButton±% C ?€ B, B,  B, B,&0<± &%0=±0>±&%Button0?± B B°20@± &0A±°% B B%%%%%0B±&††II*ģ ž’%%v~Rzrr0C±°( B B%%%%%0D±&žžII*l%%&,ww}¤æ°°øÕĀĀŹėĀĀŹėĀĀŹźŖŖ±Ķ{{•%%&,…šŸŸ¦ĆƒƒŠĆ99<ÄÕėėźŅ;;<̚ Ü…š““™“¢¢©Å668Ģģ ßĆ114Į==DĻ005ĖĢ ąė..0ʘ˜žŗ““™“——œÉ !Ōō''*øSS^ŻTT^Ö[[b»``e„ddj–``e„cckĘ))/ÉōĶ„„‹“…šØØ°Ķ !ŌōSSZĄPP]ㄾxxx~mmmtmmmymmm{lll€lll€ttt…ppxĶōĻttzš%%&,¤¤ŖĒ88:ŠōSSZĄOO]ä„„¦³ąąąęßßßēŠŠŠßŸŸŸĒeee¬eee®dddÆeee®lll¬””©ćōĘ88;Fww}››”Żė''*ŗOO]ättuŽŪŪŪćŽŽŽźŻŻŻģĀĀĀąkkkĒ```Ē```É___Ģ```É```荑×IIJ×ķ--4±£Ą>>AŹ ąSS^Ž\\dµ³³³ÅŻŻŻģŪŪŪšĻĻĻšgggÕ]]]Ś\\\Ż\\\ą\\\ą\\\ą]]]Ū]]]ÖÆÆµš åĶF°°øÖÖĒSS^Śiii‘ÉÉÉįŚŚŚņŁŁŁö«««š[[[ć[[[å[[[å[[[å[[[å[[[ä[[[ć[[[☘š//0ā Ś''0ĀĀŹģķ004ĢXX`ĪaaaŗŁŁŁōŲŲŲ÷ŲŲŲ÷‚‚‚ė[[[å\\\Ż]]]Õ]]]Š```Ź```Ē___Ģ]]]э‘ēXXZčļ77CČĮĮŹķī::CÜXX]Ń]]]ÓŲŲŲ÷ŲŲŲ÷ŲŲŲ÷¦¦¦ź]]]ŌaaaĀccc·eee®eee©eee¦eee«dddƐ’Öyy|åļBBPė ĀĀŹģļ..2ßZZ^Ś\\\ąĶĶĶöŲŲŲ÷ŁŁŁōĖĖĖėaaaŗfff”iii”iiijjj‰jjj‡iiiŒiiiŽ  ¤Ī\\^×ļBBPģ©©ÆŅŪąTTZę[[[åŗŗŗóŁŁŁ÷ŚŚŚńŻŻŻķ”””Åjjj‡lll€mmmwmmmtmmmtmmmwmmmy®®³Š..2Š ŚBBPķyy} >>@Ō é[[cń[[[匌ŒźÜÜÜļŻŻŻźąąąęįįį惃ƒˆnnnpnnnnnnnnnnnnnnnn™™¬¹¹æŚ ćÉ66BŠ##&B——ćļ'',ēcccć]]]Ō½½½ŚąąąēŲŲŲܗ——šnnnpnnnnnnnnnnnnnnnnuuuwÆÆ“ĢNNQĢī**2×&&.¦{{€®,,.ÕõiipļhhhĘsss›­­­øxxx}nnnpnnnnnnnnnnnnnnnnuuuw¹¹¾Ł±±·Žō ĮBBPīo1””šÉÕō””Øē––™·mmmtnnnpnnnnnnnnnnnnnnnn™™¬®®²Ė±±·Žō’HHX’**3³9 $RˆÄŌōJJKÉøø¾Ł§§­Ćœœ Æšš®„„©¾ÆÆ“Ģ®®“ĖQQTĢō’ É``o’UUf’/4Brrw¬Éģ ą//0ÅWWXĆssvĮWWYĀ445Źąė ¹GGW’’¼¼Č’ˆˆ—’UUf’  :?##$N44;·Ķ Öėėė Ńŗ00=ŌBBPė**3±GGW’’ÄÄĻ’UUf’wE1’":?4 H''/”77CĒBBPźBBPźBBPź77CŹ''.Ÿ dO]’UUf’\7(’’’’’wE1’":B?81,/6?IMV]b’\7(’ĖvT’’’’’wE1’4AFFHIIIHD?P\b’\7(’ĖvT’’’’’wE1’ $1:?A>9/$"+L[b’\7(’ĖvT’’’’’wE1’  &L[b’\7(’ĖvT’’’’’wE1’&L[b’\7(’ĖvT’’’’’wE1’&L[b’\7(’ĖvT’ĖvT’ ’&L[b’\7(’ ’6"’&L[b’6"’˜&L[bV?%JVT>$?># ž’%%ödR°&&&&&&&&&&&&&&%’0E±&0F±&&&& &&0G±0H±&%PCButton±% C0 ?€ B, B,  B, B,&0I± &%0J±0K±&%Button0L± B B°20M± &0N±°% B B%%%%%0O±&††II*ģ ž’%%v~Rzrr0P±°( B B%%%%%0Q±&žžII*l J !u.«.«.«!u J-«0ņ,’>’%J’&.\’&.\’'/\’ &K’$Bļ.«-«.ł2’%,\’4?’:FŒ’;GŒ’;GŒ’I’?J’9D€’,4]ō4Ŗ2Ō,’$,[’6A…’9EŒ’:FŒ’V`š’Ö׎’źźź’ŲŁß’Ycœ’?J’?K’@KŽ’ALŽ’>I‡’9>[Ź2é2’+5m’9DŒ’9EŒ’:FŒ’;GŒ’Ö׎’įįį’ÅÅÅ’ĆĆĆ’ŠŽ”’6Az’@KŽ’ALŽ’AMŽ’BNŽ’COŽ’>EkŪ "1Č2’0;y’9DŒ’9EŒ’:FŒ’;GŒ’;GŒ’źźź’ĘĘĘ’ĆĆĆ’ÅÅÅ’ČČČ’!?’ALŽ’AMŽ’BNŽ’COŽ’CO’DP’SWtŗ &‰,’)2g’9DŒ’9EŒ’:FŒ’;GŒ’;GŒ’’9EŒ’:FŒ’;GŒ’;GŒ’I’?J’6Az’!?’-’"?’9C{’COŽ’CO’DP’EP’FQ’GR’GR’HS’oq 2Ō &P’9EŒ’:FŒ’;GŒ’;GŒ’I’?J’9D€’@KŽ’ļļļ’ŠŠŠ’ÓÓÓ’ÕÕÕ’ŲŲŲ’-’EP’FQ’GR’GR’HS’IT’IU’JV’KV‘’š›œŸ `2’;GŒ’;GŒ’I’?J’?K’@KŽ’ALŽ’ššš’ÓÓÓ’ÕÕÕ’ŲŲŲ’ŚŚŚ’-’FQ’GR’GR’HS’IT’IU’JV’KV‘’KW‘’‹Œ“” `"D’;GŒ’I’?J’?K’@KŽ’ALŽ’AMŽ’ńńń’ÕÕÕ’ŲŲŲ’ŚŚŚ’ŻŻŻ’-’GR’GR’HS’IT’IU’JV’KV‘’KW‘’LW‘’‹Œ“”,,,,3"D’I’?J’?K’@KŽ’ALŽ’AMŽ’BNŽ’ńńń’ŲŲŲ’ŚŚŚ’ŻŻŻ’ąąą’-’GR’HS’IT’IU’JV’KV‘’KW‘’LW‘’MX‘’›œŸ¤,,,,8’=I’>I’?J’?K’@KŽ’ALŽ’AMŽ’BNŽ’COŽ’ņņņ’ŚŚŚ’ŻŻŻ’ąąą’āāā’-’HS’IT’IU’JV’KV‘’KW‘’LW‘’MX‘’NY‘’®®®®2é>I’?J’?K’@KŽ’ALŽ’AMŽ’BNŽ’COŽ’CO’óóó’ŻŻŻ’ąąą’āāā’ååå’-’IT’IU’JV’KV‘’KW‘’LW‘’MX‘’NY‘’X`‡Õ®®®®*›6@z’?K’@KŽ’ALŽ’AMŽ’BNŽ’COŽ’CO’DP’ōōō’ąąą’āāā’ååå’ēēē’-’IU’JV’KV‘’KW‘’LW‘’MX‘’NY‘’OZ’’vz‰¦3&.V’@KŽ’ALŽ’AMŽ’BNŽ’COŽ’CO’DP’EP’õõõ’āāā’ååå’ēēē’źźź’-’JV’KV‘’KW‘’LW‘’MX‘’NY‘’OZ’’OZ’’œœŸ¤MMMM$;øALŽ’AMŽ’BNŽ’COŽ’CO’DP’EP’FQ’ööö’ęęę’ēēē’źźź’ģģģ’-’KV‘’KW‘’LW‘’MX‘’NY‘’OZ’’OZ’’kp…°®®®®/8bóBNŽ’COŽ’CO’DP’EP’FQ’GR’÷÷÷’ččč’ėėė’ķķķ’ļļļ’.’KW‘’LW‘’MX‘’NY‘’OZ’’OZ’’Q\ļ¤¤¦ØbbbbOCN„šCO’DP’EP’FQ’ööö’÷÷÷’÷÷÷’ėėė’ķķķ’ššš’ņņņ’õõõ’üüü’MX‘’NY‘’OZ’’OZ’’Q\ļ“”™¢££££ %'6}DN…šEP’FQ’GR’GR’-’-’-’-’.’.’.’.’.’OZ’’OZ’’Q\ļ„…”££££!!!!47?eJR‚āGR’GR’HS’IT’IU’JV’KV‘’KW‘’LW‘’MX‘’NY‘’OZ’’OZ’’U^Šį“”™¢££££7777!!!!hk|„KT‹ļIT’IU’JV’KV‘’KW‘’LW‘’MX‘’NY‘’OZ’’Q[ļwz‰¦®®®®˜˜˜˜!!!!MMMM|~ˆždiƒ·Z`…ŹU]†ÕLW‘’V^†Õ[b…Źfk…·ƒ…”®®®®££££MMMM7777mmmm‚‚‚‚®®®®‚‚‚‚mmmm7777 ž’%%ödR°&&&&&&&&&&&&&&%’0R±&0S±&&&& &&0T±0U±&%PCButton±% ?€ B0 B,  B0 B,&0V± &%0W±0X±&%Button0Y± B B°20Z± &0[±°% B B%%%%%0\±&††II*ģ ž’%%v~Rzrr0]±°( B B%%%%%0^±&žžII*l$$$$OOOOjjjjjjjjaaaaRRRR----AAAAƒƒƒƒ§§§§’’’’’’’’’’’’’’’’’’’’’’’’’’’’ĘĘĘĘ££££®®®®’’’’’’’’īńņ’ĻÕÖō“”¤śhvy÷8?@źŪźźĘz’’’’’’’’ģšń’¶ÅÉ’”¶ŗ’…–™ž8?@ģģ Č£‚1$’’’’’’’’Ø­’Ø­’Ø­’Ø­’'..óć˜ p<:4* iqr’’’’’Ø­’—­²’Ø­’Ø­’mƒ’š¹LHB<4) UUU’Š™œ’Ø­’Ø­’Ø­’Ø­’mƒ’%+-ä{?3*"  UUU’yˆ‹’Ø­’Ø­’Ø­’Ø­’‡ž£’Zim’Zim’+ UUU’Ø­’īņņ’mƒ’Œ£Ø’¤©’Ø­’‡ž£’Tbe’112üUUU’UUU’Ø­’īņņ’mƒ’Q^b’KXZ’KXZ’mƒ’Veh’ śØ­’UUU’’īņņ’ļļļ’īņņ’mƒ’>IL’’'-/’'-/’ ś śvŠŽ’’’’’Ø­’UUU’ ’€ƒ„’īņņ’„¹¼’Q^b’’‘Tf°’%,-’vŠŽ’’’’’Ø­’UUU’ ƒ’[fi’…› ’EQT’’TSRSy’%,-’vŠŽ’’’’’Ø­’UUU’.„’+24’’ŃD<=FNS’%,-’vŠŽ’’’’’Ø­’UUU’---† 2V¦’ÓD1 !,=Kd’%,-’vŠŽ’’’’’Ø­’@@’V ‘ $?NTP7"9JS’%,-’Xgj’Ŗqt’Ģ**’”’V ‘(?JC( 8JS’’”’ö<<’Į&&’”’bŁ$/( 8Jp’’‚’ö<<’Į&&’”’^ī 7J“’J ’ ’ö<<’å55’”’S ’ 9Kæ’o’Å((’ūŖŖ’Ō..’”’S ’ ">NäP’įVV’j’ö<<’Ō..’”’S ’(BPšJ ’ ’Ō..’ūŖŖ’Ō..’”’S ’-ER’’įVV’j’ö<<’Ō..’”’S ’1GS’J ’’Ō..’ūŖŖ’Ō..’”’S ’5HT’’įVV’j’ö<<’Ō..’”’S ’6IT’J ’%’Ō..’ūŖŖ’Ō..’¢’S ’ 7IT’’įVV’j’ö<<’Ō..’”’S ’ 7IT’J ’’o’ö<<’ę55’”’S ’ 7IT’’’ ’­’’£ 7IT’’8’’Ą 7IT’’ ÓE* 7ITTOB' 7IOC- .4(  ž’%%ödR°&&&&&&&&&&&&&&%’0_±&0`±&&&& &&0a±0b±&%Box°&&&&&&&&&&&&&& %%0c1 GSCustomView1 GSNibItem0d±& % NSSplitView A Ą D CĒ€&0e±% A CČ C° A@  C° A@& 0f± &%0g±0h±& % Status line0i±% A0°h&&&&&&&&&&&&&&%’°0j±°" >ŖŖ« ?€’0k±°0l±&%System0m±&%windowBackgroundColor0n±&%Window0o±&%Project Window°o Cś C× F@ F@%&   D€ D@0p± &0q± &0r1!NSMutableDictionary1" NSDictionary& 0s±&%Button2°,0t±&%Button3°:0u±&%Button4°G0v±&%NSOwner0w±&%PCProjectWindow0x±& % TextField1°e0y±& % TextField°0z±&%Window°0{±&%Button°T0|±& % ImageView° 0}±&%View(0)° 0~±&%GormCustomView°c0±&%Box°0€±&%Button1°0± &0‚1#NSNibConnector°z0ƒ±&%NSOwner0„±#°0…±#°|°}0†±#°y°}0‡1$NSNibOutletConnector°z°ƒ0ˆ1%NSMutableString&%delegate0‰±#°~0б$°ƒ°~0‹±&%h_split0Œ±$°ƒ°y0±& % fileIconTitle0ޱ$°ƒ°|0±&%fileIcon0±$°ƒ°z0‘±& % projectWindow0’±#°x0“±$°ƒ°x0”±& % statusLine0•±#°€°}0–±#°s°}0—±#°t°}0˜±#°u°}0™±#°{°}0š±$°ƒ°{0›±%& % buildButton0œ±$°ƒ°€0±%& % launchButton0ž±$°ƒ°s0Ÿ±%&%loadedFilesButton0 ±$°ƒ°t0”±%& % findButton0¢±$°ƒ°u0£±%&%inspectorButton0¤1&NSNibControlConnector°{°ƒ0„±%&%showProjectBuild:0¦±&°€°ƒ0§±%&%showProjectLaunch:0ر&°s°ƒ0©±%&%showProjectLoadedFiles:0Ŗ±&°t°ƒ0«±%& % showFindView:0¬±&°u°ƒ0­±%&%showProjectInspector:0®±$°ƒ°0Ʊ& % toolbarView0°±#°}°0±±!&0²±& % ImageView° °€°°s°-0³±&%Button°U°t°;°u°Happs-projectcenter-master/Framework/English.lproj/SaveModified.gorm/000077500000000000000000000000001347226342500261445ustar00rootroot00000000000000apps-projectcenter-master/Framework/English.lproj/SaveModified.gorm/ProjectCenter.tiff000066400000000000000000000115661347226342500315760ustar00rootroot00000000000000II*TxœåYy|”åµ~fÉLfO2ūd_HB !bPYEl½T- ¢^ŖčéÆ^ŚŪ«^l«õŖhÆ—z½V¬mÆ+ąElD–Ø€@’@Č>™Éģū¾ō¼“ „¬ŌV’øļļ÷Ī7ßĢ·<ēœē<ē¼ßüæāz„ņž’l˜¹Śģ1īhw8[N¹œĒ씐łŪ÷׆€Ė­ŗfŚBž!‰ ‘J!ĶČ@$‘š4[mūšMŸ“9-§œĪćd%ľmĢcØ]©R '“g2 >­TƒLŽ’œL¢) “ńDĀ7ą÷ŸnµŪZZl¶ĆūL¦Fææ'žLĘæMü<`Ź]ZŻ‘( “G£ˆ‘ ŃDœf\.‰¹dN&Cž\ŁGs²;L^_+·¤X|²½½yēūļo“Ćß0žņUZ] ‘BäKŒø2‘d3‰8’ˆŃN4™@$Īžć@ĄēAÄĻ@aN6²óņ0õī»į„×d‚Ž`pśōÓƒ'Oī=érķ`œ ‡’”öpņ’ Ā/ŽN.aLī8³¶Éäˆ=qŚ‹§ķŠŃļįh <āšnr%|F#“ō=G«…žb4ƒb%ĻĢD8w×öļ7›ŪŽ£].W›ƒģł{rŽšžvĀ/!xČąpR)OĻŪ²²ļńŌotd’EF"HĻR6ē˜M<>*1qN.CQV*”*ŚS,Ył:ZmöcĒģ¶ĆĘ”ķĆĮĄĄ×±‡šį—2ģBĀOūŸ¼Ÿö}:iüģŸ(m;‚A …#©ć<>ņ…Či&;F8GgŠ5Ťg,‡ō2i*rYQœ2ł|æ)čjsŲ[Zķöć‡M¦ę“Ļ'#Žłāg"+‚'ķŹŌ jīŅéŗÆ\DŲÅ)ü8ė÷äŲ8¤ķįŅIG|>özĻ»>‹ĒtĀZ&W š>žŁ;šCQ²‡łB@6 )F,6Lßņ ä“Mżf³÷öĻT‡‰¾³žå‚×P%øvaƒšĘ†)‚y¼āY}Ø=ś§1·ĶY„Õv'ĮQČ(öR7Ķ}rBš7£qHžķ]» &āĪYģäē»WÆF‚ģ~’ORžĒŅ×H$q^N1›Ų¤ü`œ‡ĖĆ4āZ?Ć’@_oݧ¬_ø]öß÷Ž »G„ą „+ā^ó“ėę£Ńéæ’¬Ńž!ī(³Č'̆Q¾Œś>‰sö°ļŒ;oY­0G#Č#  …8sę vļŽłóēć'7Ż„”·CHœŸGg·claŗQ'‘2.÷ߞ·lÖ˜€’̆'×Č·Ü~äZ©ˆ‹ƒķw<ęüŽÓ“¾)[Ż%ņ •t\6;“jV‚x”HŽā?—Q\öA1ŠEq¼ ? Īܹråy÷śõŗuh}īyȈÓēr’œĻG¹8ŖÅ|ʜ”ĻļX-Æ}āńü`<öŃ”Sr _}Pöޜ:qm<ÉĆėł÷žxƒė¶…BÕöB!¦”–@=­ŃĆv;¦<‹°{P|Gżu‚¶ƒ4«>äUVąźõėqéģŁ©ÜećäéÓXæäh¬rZĘły”ŽkŌŪ³Ō‹m™ś¾@ …BAoĆåó»fĮ”ēV r¦ė#w”q›ĒõC6’jhłQČe™ˆ·¶Ą’ģ“H ō‚“)JéK€ōā1³üāR(ś{°<;'ÕWx©wbŗŖ ŗÅ”<©iģ£z@łī–(ē  šXÉ^ŹÓ=.7ų`oO-iV×xü‹—-[öļėׯæ&S(Š]1kĮįšśE„ŗóKšŠŹĀĖęE¾Nu¶:I²å"Äūŗį’5Å”£ |²łšIÓÅåūń#•2ŋ åC$=™&ĘÜ{ԊÅM5µe3šI Ė3CP47"B6d‘½“öčyŹ8XMūĒ㯫«[{ߌµĻģol|ńųöŪ¦kŌośŖ«³u¹EŠitØVķG_(ŠŻŽe0ōŠ*åŠK…Č– ‡® O pŖ "ņÕ+Ō«õēBb³ą'Y ˆ˜^qø)̬F±ŚŠÅČÖƎčc‚ꓸ¬“^ī¤/½ł.™V‹’?æ†Ä‰&äo>÷z÷¾e·]‰ “§°“tك÷ß’¦(##į>x0au¹ų(-EÕ>”( Ja?žŪzfą’l+ Ļ/^­ ~9z„ ‡·oŖ—ŸÅ“¢b“4ī…]Ÿ q(ˆµŌ£åö§xN¶q(9i^§tl’Ę&‹J‘ū³Ē!ŌēĆé'ŻźDˆjVŽe‰ĒīC¶XŠMĆꍟł¼«&ŹŁiłłK\wŻ»†²2HH§\¢”:‹Å†ļ\½·^ņʲ:ńē3ÕŲb]±n*r5 é5Ųõ‡ēšæ/<…¹óÆÄ :'!Ȅ„p/GQIŗ- °ÉŠżŁA1A$nåTd®^ ޾ofoV·¶~7} µBŒ×ĶA˜;[Žėj;xżxģßĶĖūž-Ć+;£1E€ōnެYŠėtčļļĒī]»ŠŌŌ„ÅK–caóņßEŽ4‰Ż½%ų]’J(ņkQTØGß”]ųķŗ{Q:©>õ<|!r Š0µ·ylĶ@ŲT»ŁŗSB“Ł’$Īp¦Ō@üću@–vĀmņE0l·ĆÜÕ…Ź®&L5¢9 ń«’łlīų}-k›wmŻ0Š}mż%^¦T>ōį±šXl©>ĘT*,ŗį†”F˜††Šqņ$rI#Afźwć²ŅźAćŲՙ‹×ļ@vi=”¢$žų«ą²š %ŪEŅ,Ņü9Śé°ńtĶęw2ČļŅD Ā®üéĻ©čäĮIŲĢļv̽=Øš™QX=ī, õŚ™8zŖķ§:%vģ|ö§3"įPŖ1|Ŗ¼ņ+KK–:(Ö=:)fnŅš(ńVU\L÷˜Mķ›mxčśÓō'H“>£¼ b{³Æ¬@öōp4oĒŽOSMĶ¢œ”śŅ™šŲ‡ĖY= óG“.ę÷AR9S}ZCŹļĆ4Ķ †h3Y%CiQ>zmN<÷ņk˜µ`xÄGĆQŒŪ’km]ČOāJć•jķærŸŠõłŌ«zÉēFĀ?@č¦c#›8T÷ ‹KY[ AiĀį$Źmø²xõģŲ›-ę›i•Ü€#æ_ūĄ„"1L›Ń›™tА‡Š±#ąP‹SN+jėQq’/ 4Ąā ĮDœ·RŽ1ģez%ŖJó%Įķā‰—ß NNäµõÓÆŻūøĒfīåĻ,™bŃse„#½2Õ–]d ‡ÖZ&ü§(ž!ņ{0F|śtä.¼Šśt!4Ā\SžT¢Al~SˆķŽ[q*āEćź7E(R…¹‹–ąŅ†¹hģ!X÷ģ@vĆ,TżāI𳕰ø »'ˆaņ»qüžÆÅ“ņˆ¤«€;ĘE3ń†Õ {ū‘­ożź%ćs7O(,}»¢ņ8i“ų¼?XĻMń )Ć/ĆJÜķ$m7Q.™;Ā,-q+t;I—NbļÖLl9ZŽĻ¬=‹…PiUøćĮǔͯ Šć„ł£ œyÄw«7‚!Ān¦Zm¤k֕ęczEaJ[=“°±¤£A8<^=nŻś»}žĮ¦ēĒ槞>ó͊Źfź-&O¤«#E=™Š‹€x§~ŃEß{Ø.DŖ*ŃŒćw6į¶yN¬ł^½+Ā!ī"ø£>DIæ/_ü}ˆ“U0H8‰ˆ„£°āÄ÷ŒC&Ų-Ćh ÜU%¹Ē3-wl¤’vÆƤ”į¶>ųcó«ķ-—%‰ČD–_šŹ•źĪ ń·…Öwź›] ®Ä õžüövvŗń¹ŻŅÉVÜžOQ—A\{/zJxÜVH 5˜¬“§N·†“Ūó°üxµÅz䩕p…ć°©’ó‡ˆW8©vg7ż¾Š4l|ń—{Ķ…`ݤRżšü‚/Äę‚6PķOžp NĪ*6oF6­]¤õm}pÄø¬¾IŻ]čęÖĄ›Œ¢xņ%ą“ö©ÆvбN;4b>jŠōąR’lÅa Ĉ+¾”ĻżŻø¼m?ų‡÷ ćm§cõ>Æ÷„ AŗT*½ź„Iå;/?gÅ ÕOG”¾÷vv²ēRȖJįÜüʇŗĄ­ŅĆZŲ€`Ż,Äj˜ˆĻ&« ܰ“42ØädXčw;ńÜEŲ“ŽL;ˆkśŽŪwÖ`ˆõÉߘ†t…B{.IŸ‘Q“irU«˜Ē“|UXmė^|-|¤mmmع¤“ŖkŠŗaŖ¶ļ¤¼ƒ«!Nė/ļ”:×MB„z×BŅGö\Į`y%Ÿūa!ܖ!#¤ū>Äg?$“nė!½Ė zŽ'|ėś{«h4p!8G“erÕ1Ņ¢I>T78¬¦z7DėĀĢ’"Ųü.¦SƤ%]ķüxŖhĖ%ŒI¦a¤É|²5”T"VR†Š”Z˜ +Ń-VQ½ ĀF5FÄM@yd/Ź~ }V6NSĶO¦ź4'|¾S/ ›æK·5Ńd\&„ųĖ‚¢wnT«–2͌ŒėĻæ€?Aš²™č¹n1|Ō«$i=X¶ķ}( s”ģāSÆTmaöPīsµ:x KѤ.„I‹śł³!mm÷ÕѣחźK™Ž²5ćŪVKćn·{C’M&ģŁĆyĻćHó§ˆÅ®Önœ­PHŌ£„’‰³k¤ó°Šŗ/PW‡!ڐvĖIKu¬G¢>˜›źõ9øąHŪBŻõź%‚Z÷¤ÖÜtŹžó=38ųFg(ø5ŁFӞŽz.p‡iłĮ­Ė5ŚeKÕźÜ,ĀIõ鉑ĄŃõÄyżĘ;B=łÜ·p!§N!×é$’ņ¾$rŁcü#w»×~ŚvöÉz½_öõ>m‰Å>”]ÖÆ¹ÓÓõ%ųGG>aæ~–\~Ż-ķu2Y&»f˜=’W“žŽˆl6Øąš= vźw ĢĆ©ē²_%‡Ę>Ķ3ŌKwļFń³ķp$ā{b ‘¾ #üa60r²:żŠ—ēŃēÖI$«Vh“WĶĶŹRĖ™ńĝįā"ź-$©õa°ł(tdėĮ/?ós­ļ„ŸĒÖh`ļ¬hj2}Žä÷æ@»½4{hZ/÷DƒÅdé¢ģœ•wétÕĀķ£žČ CAņ7ųžaeēœšūĮŽķ0ü™”{ū½Ėļ-Ƭ¦žĄWēŁ{ʝ ūˆ‹r!‡³ˆøµź>ƒan¹HBnē Hė¬ųEĄš3h¦ī§cšé‹Å’ėŽvÅć¬/vąļŻi[|Ą—JäWBŹÖ9“D¢ėnTŖÆ]¬RäP B¬>¤ŸK}üLŲsvv{6’ڰłų~Æ÷UśĖˆ»Ę`gĻN'ücGqė6źo¾Y„®.ČĢä¦ņżÆŌ¦”>ŅÓ£äʝĪ` šĀŠŠFj-§ń:pNo¼iüį _ńkÅdՒ•÷č ‹Ø–HäS“/ŌŒä®“xßFłĖŽgov GSļ˜Ī;qŽ?Žō¤.šyæĢÜ__ Ü~‹FsӍjö µHłÜBėÕ3Ō«½eµōģõøßĄˆÖ0ģ®ōփs¼§ü¢eāėŽ"¾dŽBqż2µ¦”N&2• oXŸ`%’ļ°ŪƆŒ›¢#¼aøclåćż×՞Æ32((ó§I$+oQkęĶĻĪÖ³žé$qgĶé®ęžpxcĮ9ތśŸag¾’Gäķß:ņ<Ž÷ē(osG#śm.×vś­#¼g6ŒĶ[†ū›āżÅŽźł*’ÉdśķŃŽ’qœÕY†wäõąœ’ ōS ‘ž002²€ +:@Kfn(=R/home/diablos/pm_files/ProjectManager.tiffHHapps-projectcenter-master/Framework/English.lproj/SaveModified.gorm/data.classes000066400000000000000000000006751347226342500304440ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "buttonClicked:" ); Super = NSObject; }; PCAuxiliaryWindow = { Actions = ( ); Outlets = ( ); Super = NSWindow; }; SaveModifiedFilesDelegate = { Actions = ( "buttonClicked:" ); Outlets = ( alternateButton, defaultButton, panel, otherButton, filesList ); Super = NSObject; }; }apps-projectcenter-master/Framework/English.lproj/SaveModified.gorm/data.info000066400000000000000000000002701347226342500277310ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Framework/English.lproj/SaveModified.gorm/objects.gorm000066400000000000000000000373771347226342500305040ustar00rootroot00000000000000GNUstep archive000f4240:0000002a:000000a9:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%PCAuxiliaryWindow1NSWindow1 NSResponder% ?€ A Cø Co& % CŪ D^€01 NSView% ?€ A Cø Co  Cø Co&01 NSMutableArray1 NSArray&01 NSImageView1 NSControl% A C5 B@ B@  B@ B@& 0± &%0 1 NSImageCell1NSCell0 1NSImage B@ B@0 1NSColor0 ±&% NSCalibratedWhiteColorSpace 0 ± &01NSBitmapImageRep1 NSImageRep0±&% NSDeviceRGBColorSpace B@ B@%%0%001NSData&$š$šII*$ 3r·JKŪ¦EF¾e**w;G3“02ś©?@’µHI’ĖTU’×YZ’ŃWXńŸBD¶h*+x=H/dł]’L’P’g!!’./’£@A’ČRS’ÕYZžŅWXņµLMΉ99žY%%i $+hųc’P’L’G’B ’D’O’e ’€-.’˜:;’“HI’ĪTT’ÉZ[õ˜llĪ_`¢¬XWWz &göc’W’W’U’S’P’L’G’A ’A ’G’P’o''’€CC’¬©©’›’Žtt’§ŽŽļQQ¶c((v:E"gõc’]’_’]’Z’X’W’U’R’O’M’I’B ’E’]88’Q’h ’z77’“DD’ČQR’ÖYZ’ĻVWļŸBCµe**v:Egōc’b’g’e’c’a’_’]’Z’X’U’S’S’T’K ’J’H’E ’H’K’_’z,,’š<<’ĮOP’ÕYZ’ŃWXó“LL̈89Y%%h góc’h’o’l’i’h’f’c’b’`’]’]’X’1 ’’’% ’B’P’I’D’> ’> ’H’^’w**’’78’­EF’ĒRS’ĻVWō¶LMĻ‹::Ÿ_''q*? fńc’l’v’s’q’o’n’l’j’h’f’h’5 ’’’’’’3’W’R’P’M’I’D’? ’< ’B’I’i#$’Ž56’«DE’ČRS’Ŗ:;ņ9,P~c £µŽć6*Ldšc’p’|’y’w’v’s’r’p’n’n’k’’’’’’gjj’e^^’N’Z’V’U’S’Q’N’L’I’F’? ’; ’< ’l’Š ōx^ —ā°’öæ’ƚš1'G_ģd’t’’~’}’|’z’y’w’v’u’p’’’’###’’¾¾¾’’’’’rUU’X ’_’]’[’Y’W’U’S’Q’O’L’F’w’yŽ cā°’öæ’»’ä"/ ]ęd’v’„ ’‚’’€’’~’}’{’z’’6 ’’YYY’ööö’¼¼¼’źźź’’’’’š‰‰’X ’g’e’c’a’_’]’[’Y’W’T’S’‰ !’X¾n²ė·’÷Ą’°‰ÕWąc’v’‡’‡’… ’ƒ ’‚ ’’’’ƒ’ƒ’i’;66’œŸŸ’’’’’’’’’’’’’’’’’Žzz’b ’o’l’k’i’g’e’c’a’_’[’_’”#$’>Ÿ¶ŒŠō½’ń¼’–væM Ōl’Ž36’£ci’ž.0’—’"#’Š!"’† ’„ ’‚’U’9’f’‚::’ČĀĀ’ž’’’’’’’’’’’ÖŪŪ’^,-’t’t’r’q’n’m’l’i’g’f’b’j’™$%’* €*%<½–åśĄ’ņ½’hĖ{ę˜6<’Ŗ“Ä’øŪź’² «’¦01’£ ’”&'’œ%&’—$%’…’’".1’:’ˆ’v’Š\\’š……’vv’m01’w’}’z’y’x’v’t’t’s’o’n’j’v’˜$%’T 7:@…€}kžæ¤O’ń½!’šŗ’±l’ƒ…’Ęć’§ŹŽ’µ×ę’²«¶’§B’c ’’ ’Ž#$’š()’„-.’«01’Ŗ'(’«RV’µÄŃ’µŌä’¢ĒŻ’‰»×’rØÄ’ZƒŸ’‚^k’®š£’·Ųč’BqŠ’.b€’2CPpq34ƒŖFG’a’d’eGG’a[[’¬­­’­²²’”˜˜’moo’ˆ‰Š’‚€~’ŗ™<’ó¼’ś¾’·˜-’W|’hŸĀ’{ØĮ’"%’ ’%%$’.14’dnr’r13’~’{’y’{’€ ’Œ’¢GJ’µ¼Č’µŌä’¤ĒŻ’‰ŗÖ’t§Ä’\‡£’ƒ{‹’¢Ø·’“øĶ’–¼Õ’e”³’;lŒ’Kv“Ų Š&(ŖĢIJ’ŗPQ’™BC’s%%’d’_''’sHH’‰ss’”žž’¤¦¦’Œ’”’~‚’®˜U’ļŗ’ų½’°‹&’Un’f Ä’Tn|’ ’’!""’NXZ’@’z’}’|’|’x’ƒ:=’Æ½Ź’“Ōä’”ĒŻ’ŠŗÖ’r¤Ą’X‰„’²’¤½Ļ’„©¾’C^’R†©’UŒ±’Gz’Pä ZqĪ./’Ō67’ŲFG’ĖKL’°EF’“99’q ’]’^’}>?’…mn’‹’’„‰‘’ؘf’ź¹%’ö½’Æ} ’\ew’\®’)16’’’>CF’*+-’ƒEI’{’|’y’ˆCG’ÆŗĘ’¶Ōä’ ĘÜ’‡¹Ō’r£Ą’Xˆ„’|”ø’¦ÄŌ’¶ĻŻ’§ÄŌ’.^z’QƒŸ’T‚Ÿū(EX &< KĪ12’Ī12’Ī./’Š./’Õ67’ÖCC’ŠVW’¬HI’„11’|’s’pIJ’‹ŽŽ’†‹•’œ’x’åø.’łĮ’„h’][u’5Uh’’’AHH’€“™’¶ŹŲ’ŒOT’w ’ˆEI’²ÄŅ’¶Õå’ ĘŻ’‡øŌ’p¢¾’U†£’~£ŗ’®ÉŲ’·ĻŻ’²ĶŻ’£Éß’q”½’kŸ»’XuˆÆ#Å./õĪ12’Ī12’Ī12’Ī12’Ī/0’Ļ/0’Õ89’ŌCC’ÉLM’“MN’Ž12’u??’€~~’‡Ž•’‹€’Ä£;’č³’Øc’U2@’’''&’;>:’·Ą’“Ōē’“ÉÖ’œƒŒ’Æ»Ē’µÓć’ ĘŻ’†øŌ’n ¼’S„ ’„§½’¶ĪÜ’·ĻŻ’©ŹŻ’•ĮŪ’„¶Ņ’rØÅ’iš¶’8JUm¬()ÖĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī/0’Š/0’Ö:;’ÓHI’ĆHI’¢Z[’œ„ƒ’v{€’%+’ye’ä±’ž_’hai’Y\]’T^`’ެ“’—ĆŽ’±Īß’ŗ×å’“Šą’ŸĘŻ’ˆ¹Õ’mŸ¼’Z‰„’‘°Ä’»Ņß’“ĪŻ’£ČŻ’½Ų’|°Ķ’e”æ’^v’d,2Ķ}œĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī-/’Ō01’Äss’Øvw’¬LM’w;>’?(/’bQ’Ą›’„m9’Ɯ£’Ž«¶’€œ”’‹¶Ļ’“ĪŻ’³ĶŻ’žÅŻ’…¶Ņ’mŸ¼’qœ“’ ½Ķ’¼Ņą’¬ĖŻ’™ĀÜ’‡·Ō’qØĘ’`”°’qbt’Š'*’V•VlĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī,-’͘˜’ ¬¬’ÆXX’ĄLL’°jl’…KV’†U9’戒¾ |’œ¢Ŗ’”„’°ŹŁ’“ĪŻ’ÅŻ’³Ń’q¢¾’‡¬Ā’µĢŪ’·Šą’¤ČŻ’¾Ł’~°Ķ’g”æ’]ƒ’—Xc’›#"’’’; h6 DĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī,-’χˆ’µŗŗ’°¶¶’’©ŖŖ’ŗ¶¶’©bg’ĻHB’Ńr[’¼‘’’³ĀĪ’°Ńć’—Čį’~³Ń’€¬Ę’„ĀÓ’¹ŠŽ’ÆĢŽ’™ĆÜ’†øÓ’vŖĒ’[•²’Yf{’¢GL’¤((’ ’!"ž%A Ä./ōĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ļ56’­ƒƒ’”ØØ’z}}’ر°’ĶŽŽ’”nn’Ė&)’Ń/3’Ó>@’Š\^’Ƈ’•Ÿ“’·Ķ’®Šą’µŌä’§Źß’’ĄŚ’€²Ļ’jŗ’TƒŸ’`HV’£78’®33’ !’’"#’‹!ó ³*+ŚĻ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ/0’Ė67’±Ÿ ’¹ĮĄ’€mn’²ef’ÉŖŖ’£fg’Ķ,-’Ļ01’Ī./’Ļ+,’Ó01’ŃCD’Ķeh’՗’­Ææ’‹¹Ó’p¬Ź’\“±’e•Æ’xbo’œ++’µ;<’‘!"’"#’•#$’hׂ ŖÕ34’Ö34’Š12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ*,’Ęcd’„²²’™ŸŸ’˜{{’¼-.’Ļ12’Ź89’Ī12’Ī12’Ī12’Ī12’Ī01’Ī-.’Š+,’Ń..’ÓEF’Ådi’‘yˆ’xŽ£’«Ļą’·£¬’¹AB’“"#’!"’‘"#’™$%’BĄP7 -  –#$óÓ23’Ł35’Ń23’Ī12’Ī12’Ī12’Ī12’Ī01’Ī67’Ägh’Ŗmn’QR’›cd’³:;’Ī-.’Š01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī-.’Ń--’Ō32’ŅIK’Ģqv’Ćcf’—$%’ !’‘"#’‘"#’˜$%’& „UK7$0ŒväĖ12’Ū45’Õ34’Ļ12’Ī12’Ī-.’ĢRS’¼QR’æ’Ą"#’“gh’²?@’Ķ./’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī01’Ī--’Ō..’·..’!"’‘"#’‘"#’’"#’”#$’ŒNA2#mL¼¦'(÷×45’Ų45’Ń/0’ĶDE’“^_’½JK’Ń-.’Įjj’®EE’Ģ-.’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ņ12’Æ()’!"’‘"#’‘"#’•#$’~ón:! B2 ¦!"źĢ12’Ś12’Ģ78’µXX’“cc’½ff’“45’Ģ/0’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Š23’©()’Ž!"’‘"#’’"#’˜$$’4 Ē[;r[ŅĄ,-’Ś/0’Ī89’¾22’Ä-.’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ12’Ī12’”&'’Ž!"’‘"#’™#%’_é|OA-YC½²))üŲ24’Ś45’Ń22’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ12’Ģ01’š$%’"#’”#$’ˆ ž§[I:+E( ”{įÉ01’Ū45’Ó23’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ12’É01’”#$’"#’š$%’: ŃoTD4% yaŠø+,żÖ34’×34’Š12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Š12’Ä./’“"#’–#$’põ’]O=- I. ©–#$ōÓ23’Ł45’Ń23’Ī12’Ī12’Ī12’Ī12’Ī12’Š23’æ-.’”#$’!"’ølYH6' 4’xčĖ12’Ū45’Õ34’Ļ12’Ī12’Ī12’Ń23’»,-’˜#%’@Ž„cRB1#  qNĮ¦'(ų×44’Ų45’Š12’Ń23’¼-.’uų£n^L;+F1 ¦‹ !ęĢ12’ß56’¶+,’!ĶiXF6% i]ĘNߗp]G5% 90   ž’00’$$R01NSFont%&&&&&&&&&&&&&&%%% B@ B@’01 NSTextField% B| C5 C) B@  C) B@& 0± &%01NSTextFieldCell1 NSActionCell0±& % Save Modified0±% A°&&&&&&&& &&&&&&%’0±0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’01NSBox% æ€ C. Cŗ @  Cŗ @& 0± &0± % @ @ Cø   Cø &0 ± &0!±0"±&%Box°&&&&&&&&&&&&&& %%0#1NSButton% @  @@ Bč AĄ  Bč AĄ&!0$± &%0%1 NSButtonCell0&±&%Other°°&&&&&&&&&&&&&&&%’0'±&0(±&&&& &&0)±% Bü @@ Bč AĄ  Bč AĄ&!0*± &%0+±0,±& % Alternate°°,&&&&&&&&&&&&&&%’0-±&0.±&&&& &&0/±% Cw @@ Bč AĄ  Bč AĄ&!00± &%01±02±&%Default03±04±& %  common_ret°°2&&&&&&&&&&&&&&%’05±&% 06±&07±08±& %  common_retH&&& &&091 NSScrollView% @  B C³ C   C³ C &0:± &0;1 NSClipView% AØ AĄ C§€ BŽ  C§€ BŽ&0<1 NSTableView%  BP C!  BP C!&°;0=± &%0>±0?±&°&&&&&&&&&&&&&&0@± &0A1 NSTableColumn0B±&%FileName BP A  GĆP0C1!NSTableHeaderCell0D±&% 0E±% °D&&&&&&&& &&&&&&%’0F±°0G±&% System0H±&% controlShadowColor0I±°°G0J±&% windowFrameTextColor0K±0L±&%six°°L&&&&&&&& &&&&&&%’°°0M±°°G0N±& %  gridColor0O±°°G0P±&% controlBackgroundColor0Q1"NSTableHeaderView%  BP A°  BP A°&0R±% AØ @ C§€ A°  C§€ A°&°Q0S± &°Q°O0T± &0U1#GSTableCornerView% @ @ A˜ A°  A˜ A°&0V± &%% A€’ @  @0W± &0X± &°<°O0Y1$ NSScroller% @ AĄ A BŽ  A BŽ&0Z± &%0[±°?°&&&&&&&&&&&&&&&’°R°U°;% A A A A °Y°R0\±°°G0]±&% windowBackgroundColor0^±&%Window0_±&°_ C¹ C‡€ F@ F@%&  D  D€0`± &0a± &0b1%NSMutableDictionary1& NSDictionary&0c±& % Button(0)°#0d±& % TableView(0)°<0e±& % TextField(0)°0f±&%View(0)°0g±& % Scroller(0)°Y0h±& % ClipView(0)°;0i±& % Button(1)°)0j±& % ImageView(0)°0k±&% NSOwner0l±&%SaveModifiedFilesDelegate0m±&%TableColumn(0)°A0n±&%View(1)°0o±&%TableHeaderView(0)°Q0p±&%TableCornerView(0)°U0q±& % Button(2)°/0r±& % ClipView(1)°R0s±& % ScrollView(0)°90t±&%TableColumn(1)0u± 0v±&%column2 BT A  GĆP0w±!°D°E°D&&&&&&&& &&&&&&%’0x±°0y±&%System0z±&%controlHighlightColor0{±°°G0|±&% controlTextColor0}±0~±&%six°°~&&&&&&&& &&&&&&%’°°0±&%Box(0)°0€±&%Panel°0± &0‚1'NSNibConnector°€0ƒ±&% NSOwner0„±'°f°€0…±'°j°f0†±'°e°f0‡±'°°f0ˆ±'°n°0‰±'°c°f0б'°i°f0‹±'°q°f0Œ1(NSNibOutletConnector°ƒ°q0±& % defaultButton0ޱ(°ƒ°i0±&%alternateButton0±(°ƒ°c0‘±& % otherButton0’±(°ƒ°€0“±&%panel0”±'°s°f0•±'°d°h0–±'°m°d0—±'°t°d0˜±(°ƒ°d0™±& % filesList0š±(°€°ƒ0›1)NSMutableString&%delegate0œ1*NSNibControlConnector°q°ƒ0±&%buttonClicked:0ž±*°i°ƒ°0Ÿ±*°c°ƒ°0 ±'°h°s0”±'°g°s0¢±*°g°s0£±& % _doScroll:0¤±'°r°s0„±'°o°r0¦±'°p°s0§±%&°€°apps-projectcenter-master/Framework/GNUmakefile000066400000000000000000000051241347226342500222000ustar00rootroot00000000000000# # GNUmakefile - Generated by ProjectCenter # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Framework # VERSION = 0.6.2 FRAMEWORK_NAME = ProjectCenter ProjectCenter_CURRENT_VERSION_NAME = 0.6.2 ProjectCenter_DEPLOY_WITH_CURRENT_VERSION = yes ProjectCenter_HEADER_FILES_DIR = ../Headers/ProjectCenter ProjectCenter_LIBRARIES_DEPEND_UPON += $(OBJC_LIBS) $(FND_LIBS) $(GUI_LIBS) # # Subprojects # #SUBPROJECTS = Resources # # Header files # ProjectCenter_HEADER_FILES = \ PCDefines.h \ ProjectCenter.h \ \ PCBundleManager.h \ PCEditorManager.h \ PCFileManager.h \ PCAddFilesPanel.h \ PCFileCreator.h \ PCMakefileFactory.h \ PCSaveModified.h \ \ PCProjectManager.h \ PCProject.h \ PCProjectWindow.h \ PCProjectInspector.h \ PCProjectBuilder.h \ PCProjectBuilderOptions.h \ PCProjectBuilderPanel.h \ PCProjectLauncher.h \ PCProjectLauncherPanel.h \ PCProjectEditor.h \ \ PCProjectBrowser.h \ PCProjectLoadedFiles.h \ PCProjectLoadedFilesPanel.h \ \ PCFileNameField.h \ PCFileNameIcon.h \ \ PCLogController.h \ \ PCAuxiliaryWindow.h # # Class files # ProjectCenter_OBJC_FILES = \ PCBundleManager.m \ PCEditorManager.m \ PCMakefileFactory.m \ PCFileManager.m \ PCAddFilesPanel.m \ PCFileCreator.m \ PCSaveModified.m \ \ PCProjectManager.m \ PCProject.m \ PCProjectWindow.m \ PCProjectInspector.m \ PCProjectBuilder.m \ PCProjectBuilderOptions.m \ PCProjectBuilderPanel.m \ PCProjectLauncher.m \ PCProjectLauncherPanel.m \ PCProjectEditor.m \ \ PCProjectBrowser.m \ PCProjectLoadedFiles.m \ PCProjectLoadedFilesPanel.m \ \ PCButton.m \ PCFileNameField.m \ PCFileNameIcon.m \ \ PCLogController.m \ \ PCAuxiliaryWindow.m # # Resources # ProjectCenter_RESOURCE_FILES = \ Resources/cfile.template \ Resources/cheader.template \ Resources/class.template \ Resources/gsmarkup.template \ Resources/header.template \ Resources/postamble.template \ Resources/protocol.template \ Resources/ocppclass.template \ # # Localization # ProjectCenter_LOCALIZED_RESOURCE_FILES = \ ProjectWindow.gorm \ BuilderPanel.gorm \ Builder.gorm \ BuilderOptions.gorm \ NewSubproject.gorm \ NewFile.gorm \ ProjectInspector.gorm \ BuildAttributes.gorm \ ProjectAttributes.gorm \ ProjectDescription.gorm \ ProjectLanguages.gorm \ FileAttributes.gorm \ LogPanel.gorm \ SaveModified.gorm ProjectCenter_LANGUAGES = \ English -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/framework.make include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUmakefile.postamble apps-projectcenter-master/Framework/GNUmakefile.postamble000066400000000000000000000023231347226342500241630ustar00rootroot00000000000000# # GNUmakefile.postamble # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Philippe C.D. Robert # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #before-all:: # cd ..;rm -f ProjectCenter;$(LN_S) Library ProjectCenter #after-clean:: # rm -f ../ProjectCenter #after-uninstall:: # rm -rf $(GNUSTEP_LIBRARIES)/libProjectCenter* #after-install:: # cp -r Protocols $(GNUSTEP_HEADERS)/ProjectCenter # cp -r Widgets $(GNUSTEP_HEADERS)/ProjectCenter apps-projectcenter-master/Framework/GNUmakefile.preamble000066400000000000000000000044131347226342500237660ustar00rootroot00000000000000# GNUmakefile.preamble # # Copyright (C) 2001 Free Software Foundation, Inc. # # Author: Philippe C.D. Robert # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Makefile.preamble # # Project specific makefile variables, and additional # # Do not put any Makefile rules in this file, instead they should # be put into Makefile.postamble. # # FIXME: Why are we hardcoding the full path to 'make' or 'gdb' in # here ? Can't we discover them at runtime ? GMAKE := $(shell which ${MAKE}) GDB := $(shell which gdb) # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += -DDEVELOPMENT\ -DPCDefaultBuildTool=@"\"$(GMAKE)\"" \ -DPCDefaultDebugger=@"\"$(GDB)\"" # Additional flags to pass to the C compiler ADDITIONAL_CFLAGS += # Additional include directories the compiler should search ADDITIONAL_INCLUDE_DIRS += -I../ -I../Headers # Additional LDFLAGS to pass to the linker ADDITIONAL_LDFLAGS += # Additional library directories the linker should search ADDITIONAL_LIB_DIRS += -L../ProjectCenter/$(GNUSTEP_OBJ_DIR) ADDITIONAL_TOOL_LIBS += # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation ADDITIONAL_INSTALL_DIRS += # # Local configuration # apps-projectcenter-master/Framework/PCAddFilesPanel.m000066400000000000000000000057201347226342500231640ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2014 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import static PCAddFilesPanel *addFilesPanel = nil; @implementation PCAddFilesPanel + (PCAddFilesPanel *)addFilesPanel { if (addFilesPanel == nil) { addFilesPanel = [[self alloc] init]; } return addFilesPanel; } // --- "Add Files..." panel - (id)init { NSRect fr; self = [super init]; fr = NSMakeRect(20,30,160,21); // File type popup fileTypePopup = [[NSPopUpButton alloc] initWithFrame:fr pullsDown:NO]; [fileTypePopup setRefusesFirstResponder:YES]; [fileTypePopup setAutoenablesItems:NO]; [fileTypePopup setTarget:self]; [fileTypePopup setAction:@selector(filesForAddPopupClicked:)]; [fileTypePopup selectItemAtIndex:0]; fileTypeAccessaryView = [[NSBox alloc] init]; [fileTypeAccessaryView setTitle:@"File Types"]; [fileTypeAccessaryView setTitlePosition:NSAtTop]; [fileTypeAccessaryView setBorderType:NSGrooveBorder]; [fileTypeAccessaryView addSubview:fileTypePopup]; [fileTypeAccessaryView sizeToFit]; [fileTypeAccessaryView setAutoresizingMask:NSViewMinXMargin | NSViewMaxXMargin]; // Panel [self setAllowsMultipleSelection:YES]; return self; } - (void)setCategories:(NSArray *)categories { [fileTypePopup removeAllItems]; [fileTypePopup addItemsWithTitles:categories]; } - (void)selectCategory:(NSString *)category { [self setAccessoryView:fileTypeAccessaryView]; [fileTypePopup selectItemWithTitle:category]; [self filesForAddPopupClicked:self]; } - (NSString *)selectedCategory { return [fileTypePopup titleOfSelectedItem]; } - (void)setFileTypes:(NSArray *)fileTypes { NSString *path = nil; [super setAllowedFileTypes: fileTypes]; path = [_browser path]; [self validateVisibleColumns]; [_browser setPath:path]; [self display]; } - (void)filesForAddPopupClicked:(id)sender { NSString *category = [fileTypePopup titleOfSelectedItem]; if ([[self delegate] respondsToSelector:@selector(categoryChangedTo:)]) { [[self delegate] categoryChangedTo:category]; } } @end apps-projectcenter-master/Framework/PCAuxiliaryWindow.m000066400000000000000000000017711347226342500236720ustar00rootroot00000000000000/* PCAuxiliaryWindow.m Author: German A. Arias Date: September 2013 This file is part of ProjectCenter. ProjectCenter 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 3 of the License, or (at your option) any later version. This application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import @implementation PCAuxiliaryWindow - (BOOL) canBecomeMainWindow { return NO; } @end apps-projectcenter-master/Framework/PCBundleManager.m000066400000000000000000000252461347226342500232420ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ // TODO: Finish support for third party bundles. // It involves support for user defined bundle directories // through preferences. Now supported are: // - PC application resource dir // (GNUSTEP_SYSTEM_APPS/ProjectCenter.app/Resources) // - GNUSTEP_SYSTEM_LIBRARY/Bundles/ProjectCenter // (NSApplicationSupportDirectory) #import #import #import @implementation PCBundleManager //---------------------------------------------------------------------------- // Init and free methods //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { loadedBundles = [[NSMutableDictionary alloc] init]; bundlesInfo = [[NSMutableDictionary alloc] init]; } return self; } - (void)dealloc { RELEASE(loadedBundles); RELEASE(bundlesInfo); [super dealloc]; } // - (NSString *)resourcePath { NSString *path = [[NSBundle mainBundle] resourcePath]; if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { [NSException raise:@"PCBundleManagerPathException" format:@"ProjectCenter installed incorrectly"]; return nil; } return path; } // --- Handling of bundles' Info.table dictionaries without actual // --- bundles loading // bundlesInfo is a dictionary. key/value pair is the following: // (NSString *) (NSDictionary *) // "full path of a bundle" = "Info.table contents" - (NSDictionary *)infoForBundlesType:(NSString *)extension { NSArray *bundles; NSEnumerator *enumerator; NSString *bundlePath; NSString *infoTablePath; NSDictionary *infoTable; NSMutableDictionary *reqBundlesInfo; reqBundlesInfo = [NSMutableDictionary dictionary]; bundles = [NSBundle pathsForResourcesOfType:extension inDirectory:[self resourcePath]]; enumerator = [bundles objectEnumerator]; while ((bundlePath = [enumerator nextObject])) { infoTablePath = [NSString stringWithFormat:@"%@/Resources/Info.table", bundlePath]; // TODO: fill 'reqBundlesInfo' with element from 'bundlesInfo' if // exists infoTable = [NSDictionary dictionaryWithContentsOfFile:infoTablePath]; [reqBundlesInfo setObject:infoTable forKey:bundlePath]; [bundlesInfo setObject:infoTable forKey:bundlePath]; } return reqBundlesInfo; } // Key value can be checked against NSString and NSArray values only. - (NSDictionary *)infoForBundleType:(NSString *)extension keyName:(NSString *)key keyContains:(NSString *)value { NSDictionary *reqBundlesInfo; NSEnumerator *enumerator; NSString *bundlePath; id keyValue; NSDictionary *infoTable; if (extension == nil) { return nil; } reqBundlesInfo = [self infoForBundlesType:extension]; enumerator = [[reqBundlesInfo allKeys] objectEnumerator]; infoTable = nil; while ((bundlePath = [enumerator nextObject])) { infoTable = [reqBundlesInfo objectForKey:bundlePath]; if (key == nil || value == nil) { break; } keyValue = [infoTable objectForKey:key]; if ([keyValue isKindOfClass:[NSString class]] && [keyValue isEqualToString:value]) { break; } else if ([keyValue isKindOfClass:[NSArray class]] && [keyValue containsObject:value]) { break; } else { infoTable = nil; } } return infoTable; } - (NSDictionary *)infoForBundleName:(NSString *)name type:(NSString *)type { NSDictionary *reqBundlesInfo = [self infoForBundlesType:type]; NSEnumerator *enumerator = [[reqBundlesInfo allKeys] objectEnumerator]; NSString *bundlePath; NSDictionary *infoTable; infoTable = nil; while ((bundlePath = [enumerator nextObject])) { infoTable = [reqBundlesInfo objectForKey:bundlePath]; if ([[infoTable objectForKey:@"Name"] isEqualToString:name]) { break; } else { infoTable = nil; } } return infoTable; } - (NSString *)classNameForBundleType:(NSString*)type fileName:(NSString *)fileName { NSString *fileExtension = [fileName pathExtension]; NSDictionary *infoTable = nil; NSString *className = nil; infoTable = [self infoForBundleType:type keyName:@"FileTypes" keyContains:fileExtension]; className = [infoTable objectForKey:@"PrincipalClassName"]; return className; } - (NSString *)bundlePathWithName:(NSString *)bundleName { NSArray *bundlePaths = nil; NSString *bundleFullPath = nil; NSEnumerator *enumerator = nil; // Search for bundle full path in bundlesInfo dictionary bundlePaths = [bundlesInfo allKeys]; enumerator = [bundlePaths objectEnumerator]; // NSLog(@"Bundle fullpath method #1: %@", // [[self resourcePath] stringByAppendingPathComponent:bundleName]); while ((bundleFullPath = [enumerator nextObject])) { if ([[bundleFullPath lastPathComponent] isEqualToString:bundleName]) { break; } } // NSLog(@"Bundle fullpath method #2: %@", bundleFullPath); return bundleFullPath; } // --- Invokes loading of bundle - (id)objectForClassName:(NSString *)className bundleType:(NSString *)bundleExtension protocol:(Protocol *)proto { Class objectClass; if (!className) { NSLog(@"Bundle for class called with empty className"); return nil; } if ([self bundleOfType:bundleExtension withClassName:className] == nil) { NSLog(@"Bundle for class %@ NOT FOUND!", className); return nil; } objectClass = NSClassFromString(className); if (proto != nil && ![objectClass conformsToProtocol:proto]) { [NSException raise:NOT_A_PROJECT_TYPE_EXCEPTION format:@"%@ does not conform to protocol!", className]; return nil; } return [[objectClass alloc] init]; } - (id)objectForBundleWithName:(NSString *)name type:(NSString *)extension protocol:(Protocol *)proto { NSDictionary *infoTable; NSString *className; infoTable = [self infoForBundleName:name type:extension]; className = [infoTable objectForKey:@"PrincipalClassName"]; return [self objectForClassName:className bundleType:extension protocol:proto]; } - (id)objectForBundleType:(NSString *)extension protocol:(Protocol *)proto fileName:(NSString *)fileName { NSString *className; className = [self classNameForBundleType:extension fileName:fileName]; return [self objectForClassName:className bundleType:extension protocol:proto]; } // --- Bundle loading - (NSBundle *)bundleOfType:(NSString *)type withClassName:(NSString *)className { NSArray *bundlePaths = nil; NSString *bundleFullPath = nil; NSDictionary *infoTable = nil; NSEnumerator *enumerator = nil; NSString *bundleName = nil; NSString *principalClass; // Search for bundle full path in bundlesInfo dictionary bundlePaths = [bundlesInfo allKeys]; enumerator = [bundlePaths objectEnumerator]; while ((bundleFullPath = [enumerator nextObject])) { if ([[bundleFullPath pathExtension] isEqualToString:type]) { infoTable = [bundlesInfo objectForKey:bundleFullPath]; principalClass = [infoTable objectForKey:@"PrincipalClassName"]; if ([className isEqualToString:principalClass]) { break; } } } // NSLog(@"bundleForClassName: %@ path %@", className, bundleFullPath); // Extract from full bundle path it's name and extension bundleName = [bundleFullPath lastPathComponent]; if (![self loadBundleIfNeededWithName:bundleName]) { return nil; } return [loadedBundles objectForKey:bundleFullPath]; } - (BOOL)loadBundleIfNeededWithName:(NSString *)bundleName { NSString *bundleFullPath = [self bundlePathWithName:bundleName]; // Check if bundle allready loaded if ([[loadedBundles allKeys] containsObject:bundleFullPath] == NO) { return [self loadBundleWithFullPath:bundleFullPath]; } return YES; } - (void)loadBundlesWithExtension:(NSString *)extension { NSEnumerator *enumerator; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isDir; NSString *path = [self resourcePath]; if (path) { [self loadBundlesAtPath:path withExtension:extension]; } // Load third party bundles enumerator = [NSSearchPathForDirectoriesInDomains (NSApplicationSupportDirectory, NSAllDomainsMask, YES) objectEnumerator]; while ((path = [enumerator nextObject]) != nil) { path = [path stringByAppendingPathComponent:@"ProjectCenter"]; if ([fileManager fileExistsAtPath:path isDirectory:&isDir] && isDir) { PCLogInfo(self, @"Loading bundles at %@", path); [self loadBundlesAtPath:path withExtension:extension]; } } } - (void)loadBundlesAtPath:(NSString *)path withExtension:(NSString *)extension { NSEnumerator *enumerator; NSString *bundleName; NSArray *dir; dir = [[NSFileManager defaultManager] directoryContentsAtPath:path]; enumerator = [dir objectEnumerator]; while ((bundleName = [enumerator nextObject])) { if ([[bundleName pathExtension] isEqualToString:extension]) { NSString *fullPath = nil; fullPath = [NSString stringWithFormat:@"%@/%@", path, bundleName]; [self loadBundleWithFullPath:fullPath]; } } } - (BOOL)loadBundleWithFullPath:(NSString *)path { NSBundle *bundle = nil; if ((bundle = [NSBundle bundleWithPath:path]) && [bundle load]) { [loadedBundles setObject:bundle forKey:path]; PCLogInfo(self, @"Bundle %@ successfully loaded!", path); } else { NSRunAlertPanel(@"Load Bundle", @"Could not load bundle %@!", @"OK", nil, nil, path); return NO; } return YES; } - (NSDictionary *)loadedBundles { return loadedBundles; } @end apps-projectcenter-master/Framework/PCButton.m000066400000000000000000000032151347226342500220010ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2019 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of ProjectCenter. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import @implementation PCButton // ============================================================================ // ==== Main // ============================================================================ - (id)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { [_cell setGradientType:NSGradientConcaveWeak]; [_cell setImageDimsWhenDisabled:YES]; [self setImagePosition:NSImageOnly]; [self setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]]; [self setRefusesFirstResponder:YES]; } return self; } - (void)dealloc { [super dealloc]; } @end apps-projectcenter-master/Framework/PCEditorManager.m000066400000000000000000000324561347226342500232600ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2015 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" NSString *PCEditorDidChangeFileNameNotification = @"PCEditorDidChangeFileNameNotification"; NSString *PCEditorWillOpenNotification = @"PCEditorWillOpenNotification"; NSString *PCEditorDidOpenNotification = @"PCEditorDidOpenNotification"; NSString *PCEditorWillCloseNotification = @"PCEditorWillCloseNotification"; NSString *PCEditorDidCloseNotification = @"PCEditorDidCloseNotification"; NSString *PCEditorWillChangeNotification = @"PCEditorWillChangeNotification"; NSString *PCEditorDidChangeNotification = @"PCEditorDidChangeNotification"; NSString *PCEditorWillSaveNotification = @"PCEditorWillSaveNotification"; NSString *PCEditorDidSaveNotification = @"PCEditorDidSaveNotification"; NSString *PCEditorWillRevertNotification = @"PCEditorWillRevertNotification"; NSString *PCEditorDidRevertNotification = @"PCEditorDidRevertNotification"; NSString *PCEditorDidBecomeActiveNotification = @"PCEditorDidBecomeActiveNotification"; NSString *PCEditorDidResignActiveNotification = @"PCEditorDidResignActiveNotification"; @implementation PCEditorManager // =========================================================================== // ==== Initialisation // =========================================================================== - (id)init { if ((self = [super init])) { PCLogStatus(self, @"[init]"); _editorsDict = [[NSMutableDictionary alloc] init]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidOpen:) name:PCEditorDidOpenNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidClose:) name:PCEditorDidCloseNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidBecomeActive:) name:PCEditorDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidResignActive:) name:PCEditorDidResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidChangeFileName:) name:PCEditorDidChangeFileNameNotification object:nil]; // Debugger [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(debuggerDidHitBreakpoint:) name:PCProjectBreakpointNotification object:nil]; // Preferences } return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCEditorManager: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(editorName); RELEASE(_editorsDict); [super dealloc]; } - (PCProjectManager *)projectManager { return _projectManager; } - (void)setProjectManager:(PCProjectManager *)aProjectManager { _projectManager = aProjectManager; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadPreferences:) name:PCPreferencesDidChangeNotification object:nil]; [self loadPreferences:nil]; } - (void)loadPreferences:(NSNotification *)aNotification { id prefs = [_projectManager prefController]; ASSIGN(editorName, [prefs stringForKey:Editor]); } // =========================================================================== // ==== Editor handling // =========================================================================== - (id)editorForFile:(NSString *)filePath { return [_editorsDict objectForKey:filePath]; } - (id)openEditorForFile:(NSString *)filePath editable:(BOOL)editable windowed:(BOOL)windowed { NSFileManager *fm = [NSFileManager defaultManager]; BOOL isDir; PCBundleManager *bundleManager = [_projectManager bundleManager]; NSString *fileName = [filePath lastPathComponent]; id editor; id parser; BOOL exists = [fm fileExistsAtPath:filePath isDirectory:&isDir]; // Determine if file not exist or file is directory if (!exists) { NSRunAlertPanel(@"Open Editor", @"Couldn't open editor for file '%@'.\n" @"File doesn't exist.", @"Close", nil, nil, filePath); return nil; } // Determine if file is text file if(isDir == NO) { if (![[PCFileManager defaultManager] isTextFile:filePath] && !isDir) { // TODO: Do not open alert panel for now. Internal editor // for non text files must not be opened. Review PCProjectBrowser. /* NSRunAlertPanel(@"Open Editor", @"Couldn't open editor for file '%@'.\n" @"File is not plain text.", @"Close", nil, nil, filePath);*/ PCLogInfo(self, @"Not a text file %@", filePath); return nil; } } else { NSString *app; /* Check for bundles and if possible let them be opened by Workspace */ app = [[NSWorkspace sharedWorkspace] getBestAppInRole:@"Editor" forExtension:[fileName pathExtension]]; if (app) { if ([[NSWorkspace sharedWorkspace] openFile: filePath]) return nil; } } // NSLog(@"EditorManager 1: %@", _editorsDict); editor = [_editorsDict objectForKey: filePath]; if (editor == nil) { // Editor editor = [bundleManager objectForBundleWithName:editorName type:@"editor" protocol:@protocol(CodeEditor)]; if (editor == nil) { editor = [bundleManager objectForBundleWithName:@"ProjectCenter" type:@"editor" protocol:@protocol(CodeEditor)]; } /* if we have a valid editor, we try to set a parser */ if (editor) { // Parser parser = [bundleManager objectForBundleType:@"parser" protocol:@protocol(CodeParser) fileName:fileName]; if(parser != nil) { [editor setParser:parser]; } [editor openFileAtPath:filePath editorManager:self editable:editable]; [_editorsDict setObject:editor forKey:filePath]; RELEASE(editor); } else { // // If we don't have an editor, we fall back to opening the // file with the editor designated by the system. // [[NSWorkspace sharedWorkspace] openFile: filePath]; } } if(editor != nil) { [editor setWindowed:windowed]; } return editor; } - (void)orderFrontEditorForFile:(NSString *)path { id editor = [_editorsDict objectForKey:path]; if (!editor) { return; } [editor show]; } - (id)activeEditor { return _activeEditor; } - (void)setActiveEditor:(id)anEditor { if (anEditor != _activeEditor) { _activeEditor = anEditor; } } - (NSArray *)allEditors { return [_editorsDict allValues]; } - (void)closeActiveEditor:(id)sender { if (!_activeEditor) { return; } [_activeEditor close:sender]; } - (void)closeEditorForFile:(NSString *)file { id editor; if ([_editorsDict count] > 0 && (editor = [_editorsDict objectForKey:file])) { [editor close:self]; } } - (NSArray *)modifiedFiles { NSEnumerator *enumerator = [_editorsDict keyEnumerator]; NSString *key = nil; id editor; NSMutableArray *modifiedFiles = [[NSMutableArray alloc] init]; while ((key = [enumerator nextObject])) { editor = [_editorsDict objectForKey:key]; if ([editor isEdited]) { [modifiedFiles addObject:key]; } } return AUTORELEASE((NSArray *)modifiedFiles); } - (BOOL)hasModifiedFiles { if ([[self modifiedFiles] count]) { return YES; } return NO; } - (BOOL)reviewUnsaved:(NSArray *)modifiedFiles { NSEnumerator *enumerator = [modifiedFiles objectEnumerator]; NSString *filePath; id editor; while ((filePath = [enumerator nextObject])) { editor = [_editorsDict objectForKey:filePath]; [self orderFrontEditorForFile:filePath]; if ([editor close:self] == NO) { // Operation should be aborted return NO; } } return YES; } - (BOOL)closeAllEditors { NSArray *modifiedFiles = [self modifiedFiles]; if ([modifiedFiles count]) { if (!PCRunSaveModifiedFilesPanel(self, @"Save and Close", @"Close Anyway", @"Cancel")) { return NO; } } [_editorsDict removeAllObjects]; return YES; } // =========================================================================== // ==== File handling // =========================================================================== - (BOOL)saveAllFiles { NSEnumerator *enumerator = [_editorsDict keyEnumerator]; id editor; NSString *key; BOOL ret = YES; while ((key = [enumerator nextObject])) { editor = [_editorsDict objectForKey:key]; if ([editor saveFileIfNeeded] == NO) { ret = NSRunAlertPanel(@"Save Files", @"Couldn't save file '%@'.\n" @"Operation stopped.", @"Ok",nil,nil); return NO; } } return ret; } - (BOOL)saveFile { id editor = [self activeEditor]; if (editor != nil) { return [editor saveFileIfNeeded]; } return NO; } - (BOOL)saveFileAs:(NSString *)file { id editor = [self activeEditor]; if (editor != nil) { BOOL res; BOOL iw = [editor isWindowed]; res = [editor saveFileTo:file]; [editor closeFile:self save:NO]; [self openEditorForFile:file editable:YES windowed:iw]; return res; } return NO; } - (BOOL)saveFileTo:(NSString *)file { id editor = [self activeEditor]; if (editor != nil) { return [editor saveFileTo:file]; } return NO; } - (BOOL)revertFileToSaved { id editor = [self activeEditor]; if (editor != nil) { return [editor revertFileToSaved]; } return NO; } // =========================================================================== // ==== Notifications // =========================================================================== - (void)editorDidOpen:(NSNotification *)aNotif { id editor = [aNotif object]; [self setActiveEditor:editor]; } - (void)editorDidClose:(NSNotification *)aNotif { id editor = [aNotif object]; // It is not our editor if (![[_editorsDict allValues] containsObject:editor]) { return; } [_editorsDict removeObjectForKey:[editor path]]; if (![_editorsDict count]) { [self setActiveEditor:nil]; } } - (void)editorDidBecomeActive:(NSNotification *)aNotif { id editor = [aNotif object]; if (![[_editorsDict allValues] containsObject:editor]) { return; } [self setActiveEditor:editor]; } - (void)editorDidResignActive:(NSNotification *)aNotif { // Clearing activeEditor blocks the ability to get some information from // loaded and visible but not active editor /* PCEditor *editor = [aNotif object]; if ([editor projectEditor] != self) { return; } [self setActiveEditor:nil];*/ } - (void)editorDidChangeFileName:(NSNotification *)aNotif { NSDictionary *_editorDict = [aNotif object]; id _editor = [_editorDict objectForKey:@"Editor"]; NSString *_oldFileName = nil; NSString *_newFileName = nil; if (![[_editorsDict allValues] containsObject:_editor]) { return; } _oldFileName = [_editorDict objectForKey:@"OldFile"]; _newFileName = [_editorDict objectForKey:@"NewFile"]; [_editorsDict removeObjectForKey:_oldFileName]; [_editorsDict setObject:_editor forKey:_newFileName]; } - (void)debuggerDidHitBreakpoint:(NSNotification *)aNotif { id object = [aNotif object]; NSString *filePath = [object objectForKey: @"file"]; NSString *line = [object objectForKey: @"line"]; id editor = [self openEditorForFile: filePath editable: YES windowed: NO]; [self orderFrontEditorForFile:filePath]; [editor scrollToLineNumber: [line integerValue]]; } @end apps-projectcenter-master/Framework/PCFileCreator.m000066400000000000000000000356721347226342500227410ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2015 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import static PCFileCreator *_creator = nil; static NSDictionary *dict = nil; @implementation PCFileCreator + (id)sharedCreator { if (_creator == nil) { NSDictionary *classDict; NSDictionary *headerDict; NSDictionary *ccDict; NSDictionary *chDict; NSDictionary *classPpDict; NSDictionary *protocolDict; NSDictionary *gsmarkupDict; NSString *descr; NSString *template; NSBundle *bundle; _creator = [[[self class] alloc] init]; bundle = [NSBundle bundleForClass:[self class]]; // Setting up the dictionary needed for registration! // Objective C Class descr = @"Generic Objective-C class.\n\n" @"This is a plain subclass of NSObject which includes" @" only Foundation.h."; template = [bundle pathForResource:@"class" ofType:@"template"]; classDict = [NSDictionary dictionaryWithObjectsAndKeys: PCClasses, @"ProjectKey", descr, @"TypeDescription", template,@"TemplateFile", nil]; // Objective C Header descr = @"Generic Objective-C header.\n\n" @"This is a plain interface subclassing NSObject." @" The file includes Foundation.h"; template = [bundle pathForResource:@"header" ofType:@"template"]; headerDict =[NSDictionary dictionaryWithObjectsAndKeys: PCHeaders,@"ProjectKey", descr,@"TypeDescription", template,@"TemplateFile", nil]; // C File descr = @"Generic ANSI-C implementation file.\n\n" @"This file contains no Objective-C dependency in any form."; template = [bundle pathForResource:@"cfile" ofType:@"template"]; ccDict = [NSDictionary dictionaryWithObjectsAndKeys: PCOtherSources,@"ProjectKey", descr,@"TypeDescription", template,@"TemplateFile", nil]; // C Header descr = @"Generic ANSI-C header.\n\n" @"This file contains no Objective-C dependency in any form."; template = [bundle pathForResource:@"cheader" ofType:@"template"]; chDict = [NSDictionary dictionaryWithObjectsAndKeys: PCHeaders,@"ProjectKey", descr,@"TypeDescription", template,@"TemplateFile", nil]; // Objective C Protocol descr = @"Generic Objective-C protocol.\n\n" @"This is common Objective-C protocol, comparable" @" i.e. to a Java interface."; template = [bundle pathForResource:@"protocol" ofType:@"template"]; protocolDict = [NSDictionary dictionaryWithObjectsAndKeys: PCHeaders,@"ProjectKey", descr,@"TypeDescription", template,@"TemplateFile", nil]; // Objective C++ Class descr = @"Generic Objective-C++ class.\n\n" @"This is a plain subclass of NSObject which includes" @" only Foundation.h. Extend it with c++"; template = [bundle pathForResource:@"ocppclass" ofType:@"template"]; classPpDict = [NSDictionary dictionaryWithObjectsAndKeys: PCClasses, @"ProjectKey", descr, @"TypeDescription", template,@"TemplateFile", nil]; // GSMarkup descr = @"Generic GSMarkup File.\n\n" @"This is the interface description of GNUstep Renaissance."; template = [bundle pathForResource:@"gsmarkup" ofType:@"template"]; gsmarkupDict =[NSDictionary dictionaryWithObjectsAndKeys: PCGSMarkupFiles,@"ProjectKey", descr,@"TypeDescription", template, @"TemplateFile", nil]; dict = [[NSDictionary alloc] initWithObjectsAndKeys: ccDict, CFile, chDict, CHeader, protocolDict, ProtocolFile, headerDict, ObjCHeader, classDict, ObjCClass, classPpDict, ObjCppClass, gsmarkupDict, GSMarkupFile, nil]; } return _creator; } - (id)init { self = [super init]; activeProject = nil; return self; } - (void)dealloc { RELEASE(newFilePanel); RELEASE(dict); [super dealloc]; } - (NSDictionary *)creatorDictionary { return dict; } - (void)newFileInProject:(PCProject *)aProject { // Set to nil after panel closing activeProject = aProject; [self showNewFilePanel]; } - (void)createFileOfType:(NSString *)fileType path:(NSString *)path project:(PCProject *)project { NSDictionary *newFiles; newFiles = [self filesToCreateForFileOfType:fileType path:path withComplementary:YES]; [self createFiles:newFiles inProject:project]; } - (NSDictionary *)filesToCreateForFileOfType:(NSString *)type path:(NSString *)path withComplementary:(BOOL)complementary { NSMutableDictionary *files = nil; NSString *newFile = nil; // A class and possibly a header files = [NSMutableDictionary dictionaryWithCapacity:2]; // Remove file extension from "path" if (![[path pathExtension] isEqualToString: @""]) { path = [path stringByDeletingPathExtension]; } // Objective-C Class if ([type isEqualToString:ObjCClass]) { newFile = [path stringByAppendingPathExtension:@"m"]; [files setObject:[dict objectForKey:ObjCClass] forKey:newFile]; } // Objective-C++ Class else if ([type isEqualToString:ObjCppClass]) { newFile = [path stringByAppendingPathExtension:@"mm"]; [files setObject:[dict objectForKey:ObjCppClass] forKey:newFile]; } // C File else if ([type isEqualToString:CFile]) { newFile = [path stringByAppendingPathExtension:@"c"]; [files setObject:[dict objectForKey:CFile] forKey:newFile]; } // C Header // When creating C file also create C Header file if ([type isEqualToString:CHeader] || ([type isEqualToString:CFile] && complementary)) { newFile = [path stringByAppendingPathExtension:@"h"]; [files setObject:[dict objectForKey:CHeader] forKey:newFile]; } // Objective-C Header // When creating Objective C Class file also create Objective C Header file else if ([type isEqualToString:ObjCHeader] || ([type isEqualToString:ObjCClass] && complementary)) { newFile = [path stringByAppendingPathExtension:@"h"]; [files setObject:[dict objectForKey:ObjCHeader] forKey:newFile]; } // GSMarkup else if ([type isEqualToString:GSMarkupFile]) { newFile = [path stringByAppendingPathExtension:@"gsmarkup"]; [files setObject:[dict objectForKey:GSMarkupFile] forKey:newFile]; } // Objective-C Protocol else if ([type isEqualToString:ProtocolFile]) { newFile = [path stringByAppendingPathExtension:@"h"]; [files setObject:[dict objectForKey:ProtocolFile] forKey:newFile]; } return files; } - (BOOL)createFiles:(NSDictionary *)fileList inProject:(PCProject *)aProject { PCFileManager *pcfm = [PCFileManager defaultManager]; NSEnumerator *enumerator = [[fileList allKeys] objectEnumerator]; NSString *template = nil; NSString *newFile = nil; NSDictionary *fileType = nil; NSString *key = nil; while ((newFile = [enumerator nextObject])) { fileType = [fileList objectForKey:newFile]; key = [fileType objectForKey:@"ProjectKey"]; template = [fileType objectForKey:@"TemplateFile"]; if ([pcfm copyFile:template toFile:newFile]) { [self replaceTagsInFileAtPath:newFile withProject:aProject]; [aProject addFiles:[NSArray arrayWithObject:newFile] forKey:key notify:YES]; } } // Notify the browser! [[NSNotificationCenter defaultCenter] postNotificationName:@"ProjectDictDidChangeNotification" object:self]; return YES; } - (void)replaceTagsInFileAtPath:(NSString *)newFile withProject:(PCProject *)aProject { NSString *projectName = [aProject projectName]; NSString *date = [[NSCalendarDate calendarDate] description]; int year = [[NSCalendarDate calendarDate] yearOfCommonEra]; NSString *aFile = [newFile lastPathComponent]; NSString *UCfn = [[aFile stringByDeletingPathExtension] uppercaseString]; NSString *fn = [aFile stringByDeletingPathExtension]; NSRange subRange; #ifdef WIN32 file = [[NSMutableString stringWithContentsOfFile: newFile encoding: NSUTF8StringEncoding error: NULL] retain]; #else file = [[NSMutableString stringWithContentsOfFile:newFile] retain]; #endif while ((subRange = [file rangeOfString:@"$FULLFILENAME$"]).length) { [file replaceCharactersInRange:subRange withString:aFile]; } while ((subRange = [file rangeOfString:@"$FILENAME$"]).length) { [file replaceCharactersInRange:subRange withString:fn]; } while ((subRange = [file rangeOfString:@"$UCFILENAME$"]).length) { [file replaceCharactersInRange:subRange withString:UCfn]; } while ((subRange = [file rangeOfString:@"$USERNAME$"]).length) { [file replaceCharactersInRange:subRange withString:NSUserName()]; } while ((subRange = [file rangeOfString:@"$FULLUSERNAME$"]).length) { [file replaceCharactersInRange:subRange withString:NSFullUserName()]; } while ((subRange = [file rangeOfString:@"$PROJECTNAME$"]).length) { [file replaceCharactersInRange:subRange withString:projectName]; } while ((subRange = [file rangeOfString:@"$DATE$"]).length) { [file replaceCharactersInRange:subRange withString:date]; } while ((subRange = [file rangeOfString:@"$YEAR$"]).length) { [file replaceCharactersInRange:subRange withString:[[NSNumber numberWithInt:year] stringValue]]; } #ifdef WIN32 [file writeToFile: newFile atomically: YES encoding: NSUTF8StringEncoding error: NULL]; #else [file writeToFile:newFile atomically:YES]; #endif [file release]; } @end @implementation PCFileCreator (UInterface) // ============================================================================ // ==== "New File in Project" Panel // ============================================================================ - (void)showNewFilePanel { if (!newFilePanel) { if ([NSBundle loadNibNamed:@"NewFile" owner:self] == NO) { PCLogError(self, @"error loading NewFile NIB!"); return; } [newFilePanel setFrameAutosaveName:@"NewFile"]; if (![newFilePanel setFrameUsingName: @"NewFile"]) { [newFilePanel center]; } [nfImage setImage:[NSApp applicationIconImage]]; [nfTypePB setRefusesFirstResponder:YES]; [nfTypePB removeAllItems]; [nfTypePB addItemsWithTitles: [[dict allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; [nfTypePB selectItemAtIndex:0]; [nfCancelButton setRefusesFirstResponder:YES]; [nfCreateButton setRefusesFirstResponder:YES]; [nfAddHeaderButton setRefusesFirstResponder:YES]; [newFilePanel setDefaultButtonCell:[nfCreateButton cell]]; } [self newFilePopupChanged:nfTypePB]; [newFilePanel makeKeyAndOrderFront:self]; [nfNameField setStringValue:@""]; [newFilePanel makeFirstResponder:nfNameField]; [newFilePanel setLevel:NSModalPanelWindowLevel]; [NSApp runModalForWindow:newFilePanel]; } - (void)closeNewFilePanel:(id)sender { [newFilePanel orderOut:self]; [NSApp stopModal]; activeProject = nil; } - (void)createFile:(id)sender { if ([self createFile]) { [self closeNewFilePanel:self]; } else { [newFilePanel makeKeyAndOrderFront:self]; } } - (void)newFilePopupChanged:(id)sender { NSString *typeTitle = [sender titleOfSelectedItem]; NSDictionary *fileType = [dict objectForKey:typeTitle]; if (!fileType) { return; } [nfDescriptionTV setString:[fileType objectForKey:@"TypeDescription"]]; [nfAddHeaderButton setState:NSOffState]; if ([typeTitle isEqualToString:ObjCClass] || [typeTitle isEqualToString:CFile]) { [nfAddHeaderButton setEnabled:YES]; } else { [nfAddHeaderButton setEnabled:NO]; } } - (void)controlTextDidChange:(NSNotification *)aNotif { if ([aNotif object] != nfNameField) { return; } // TODO: Add check for valid file names if ([[nfNameField stringValue] length] > 0) { [nfCreateButton setEnabled:YES]; } else { [nfCreateButton setEnabled:NO]; } } - (BOOL)createFile { NSString *fileName = [nfNameField stringValue]; NSString *fileType = [nfTypePB titleOfSelectedItem]; NSString *path = nil; NSString *key = nil; NSDictionary *newFiles = nil; NSEnumerator *enumerator = nil; NSString *filePath = nil; NSFileManager *fm = [NSFileManager defaultManager]; BOOL complementary; path = [[activeProject projectPath] stringByAppendingPathComponent:fileName]; // Create file if (path) { // Get file list for creation complementary = [nfAddHeaderButton state]==NSOnState ? YES : NO; newFiles = [self filesToCreateForFileOfType:fileType path:path withComplementary:complementary]; // Check if project already has files with such names enumerator = [[newFiles allKeys] objectEnumerator]; while ((filePath = [enumerator nextObject])) { key = [[newFiles objectForKey:filePath] objectForKey:@"ProjectKey"]; fileName = [filePath lastPathComponent]; if (![activeProject doesAcceptFile:fileName forKey:key]) { NSRunAlertPanel(@"New File in Project", @"Project %@ already has file %@ in %@", @"OK", nil, nil, [activeProject projectName], fileName, key); return NO; } if ([fm fileExistsAtPath:filePath]) { int ret; ret = NSRunAlertPanel (@"New File in Project", @"Project directory %@ already has file %@.\n" @"Do you want to overwrite it?", @"Stop", @"Overwrite", nil, [filePath stringByDeletingLastPathComponent], fileName); if (ret == NSAlertDefaultReturn) // Stop { return NO; } else // Overwrite. Remove destination of copy operation { [fm removeFileAtPath:filePath handler:nil]; } } } // Create files return [self createFiles:newFiles inProject:activeProject]; } return NO; } @end apps-projectcenter-master/Framework/PCFileManager.m000066400000000000000000000426011347226342500227020ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2011 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import @implementation PCFileManager // =========================================================================== // ==== Class methods // =========================================================================== static PCFileManager *_mgr = nil; + (PCFileManager *)defaultManager { if (_mgr == nil) { _mgr = [[self alloc] init]; } return _mgr; } // =========================================================================== // ==== Init and free // =========================================================================== - (id)initWithProjectManager:(PCProjectManager *)aProjectManager { if ((self = [super init])) { projectManager = aProjectManager; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCFileManager: dealloc"); #endif if (addFilesPanel) { RELEASE(addFilesPanel); } [super dealloc]; } // =========================================================================== // ==== NSFileManager delegate methods // =========================================================================== - (BOOL) fileManager:(NSFileManager *)manager shouldProceedAfterError:(NSDictionary *)errorDict { NSLog(@"FM error is: %@", [errorDict objectForKey:@"Error"]); return YES; } // =========================================================================== // ==== File handling // =========================================================================== - (BOOL)createDirectoriesIfNeededAtPath:(NSString *)path { NSString *_path = [NSString stringWithString:path]; NSString *_oldPath = nil; NSMutableArray *pathArray = [NSMutableArray array]; NSFileManager *fm = [NSFileManager defaultManager]; BOOL isDir; int i; /* We stop when we find a file, or when we can't remove any path * component any more. Else, you may end up in an infinite loop if * _path = @"". */ isDir = NO; while (_path != nil && ![_path isEqualToString: _oldPath] && ![fm fileExistsAtPath:_path isDirectory:&isDir]) { [pathArray addObject:[_path lastPathComponent]]; _oldPath = _path; _path = [_path stringByDeletingLastPathComponent]; } if (!isDir) { return NO; } if ([_path length] != [path length]) { for (i = [pathArray count]-1; i >= 0; i--) { _path = [_path stringByAppendingPathComponent:[pathArray objectAtIndex:i]]; if ([fm createDirectoryAtPath:_path attributes:nil] == NO) { return NO; } } } return YES; } - (BOOL)copyFile:(NSString *)file toFile:(NSString *)toFile { NSFileManager *fm = [NSFileManager defaultManager]; NSString *directoryPath = nil; if (!file) { return NO; } if (![fm fileExistsAtPath:toFile]) { directoryPath = [toFile stringByDeletingLastPathComponent]; if ([self createDirectoriesIfNeededAtPath:directoryPath] == NO) { NSRunAlertPanel(@"Copy File", @"Couldn't create directories at path %@", @"Ok",nil,nil, directoryPath); return NO; } if ([fm copyPath:file toPath:toFile handler:self] == NO) { NSRunAlertPanel(@"Copy File", @"Couldn't copy file %@ to %@", @"Ok",nil,nil, file, toFile); return NO; } } return YES; } - (BOOL)copyFile:(NSString *)file intoDirectory:(NSString *)directory { NSString *path = nil; if (!file) { return NO; } path = [directory stringByAppendingPathComponent:[file lastPathComponent]]; if (![self copyFile:file toFile:path]) { // No need to open aler panel here return NO; } return YES; } - (BOOL)copyFile:(NSString *)file fromDirectory:(NSString *)fromDir intoDirectory:(NSString *)toDir { NSString *path = nil; if (!file || !fromDir || !toDir) { return NO; } path = [fromDir stringByAppendingPathComponent:[file lastPathComponent]]; if (![self copyFile:path intoDirectory:toDir]) { return NO; } return YES; } - (BOOL)copyFiles:(NSArray *)files intoDirectory:(NSString *)directory { NSEnumerator *enumerator = nil; NSString *file = nil; if (!files) { return NO; } enumerator = [files objectEnumerator]; while ((file = [enumerator nextObject])) { if ([self copyFile:file intoDirectory:directory] == NO) { return NO; } } return YES; } - (BOOL)removeDirectoriesIfEmptyAtPath:(NSString *)path { NSFileManager *fm = [NSFileManager defaultManager]; while ([[fm directoryContentsAtPath:path] count] == 0) { if ([fm removeFileAtPath:path handler:nil] == NO) { NSRunAlertPanel(@"Remove Directory", @"Couldn't remove empty directory at path %@", @"Ok",nil,nil, path); return NO; } path = [path stringByDeletingLastPathComponent]; } return YES; } - (BOOL)removeFile:(NSString *)file fromDirectory:(NSString *)directory removeDirsIfEmpty:(BOOL)removeDirs { NSString *path = nil; NSFileManager *fm = [NSFileManager defaultManager]; if (!file) { return NO; } path = [directory stringByAppendingPathComponent:file]; if (![fm removeFileAtPath:path handler:nil]) { NSRunAlertPanel(@"Remove File", @"Couldn't remove file at path %@", @"Ok",nil,nil, path); return NO; } if (removeDirs) { [self removeDirectoriesIfEmptyAtPath:directory]; } return YES; } - (BOOL)removeFileAtPath:(NSString *)file removeDirsIfEmpty:(BOOL)removeDirs { return [self removeFile:[file lastPathComponent] fromDirectory:[file stringByDeletingLastPathComponent] removeDirsIfEmpty:removeDirs]; } - (BOOL)removeFiles:(NSArray *)files fromDirectory:(NSString *)directory removeDirsIfEmpty:(BOOL)removeDirs { NSEnumerator *filesEnum = nil; NSString *file = nil; if (!files) { return NO; } filesEnum = [files objectEnumerator]; while ((file = [filesEnum nextObject])) { if ([self removeFile:file fromDirectory:directory removeDirsIfEmpty:removeDirs] == NO) { return NO; } } return YES; } - (BOOL)moveFile:(NSString *)file intoDirectory:(NSString *)directory { if ([self copyFile:file intoDirectory:directory] == YES) { [self removeFileAtPath:file removeDirsIfEmpty:YES]; } else { NSRunAlertPanel(@"Move File", @"Couldn't move file %@ to %@", @"Ok",nil,nil, file, directory); return NO; } return YES; } // =========================================================================== // ==== Find Executable // Tries to find the first matching executable tool fromt he given, nil-terminated // list. Returns the full path for it. // =========================================================================== - (NSString*) findExecutableToolFrom: (NSArray*)candidates { NSFileManager *manager; NSEnumerator *pathEnumerator; NSString *directory; manager = [NSFileManager defaultManager]; pathEnumerator = [NSSearchPathForDirectoriesInDomains(NSDeveloperDirectory, NSAllDomainsMask, YES) objectEnumerator]; while (nil != (directory = [pathEnumerator nextObject])) { NSEnumerator *candidateEnumerator = [candidates objectEnumerator]; NSString *candidate; while (nil != (candidate = [candidateEnumerator nextObject])) { NSString *path = [directory stringByAppendingPathComponent: candidate]; NSLog(@"final candidate path is: %@", path); if ([manager isExecutableFileAtPath: path]) { return path; } } } return nil; } @end @implementation PCFileManager (UInterface) // =========================================================================== // ==== Panels // =========================================================================== - (id)_panelForOperation:(int)op title:(NSString *)title accView:(NSView *)accessoryView { id prefs = [projectManager prefController]; NSString *lastOpenDir; id panel; operation = op; switch (op) { case PCOpenFileOperation: panel = [NSOpenPanel openPanel]; [panel setCanChooseFiles:YES]; [panel setCanChooseDirectories:NO]; lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"]; break; case PCSaveFileOperation: panel = [NSSavePanel savePanel]; lastOpenDir = [prefs stringForKey:@"FileSaveLastDirectory"]; break; case PCOpenProjectOperation: panel = [NSOpenPanel openPanel]; [panel setAllowsMultipleSelection:NO]; [panel setCanChooseFiles:YES]; [panel setCanChooseDirectories:YES]; lastOpenDir = [prefs stringForKey:@"ProjectOpenLastDirectory"]; break; case PCOpenDirectoryOperation: panel = [NSOpenPanel openPanel]; [panel setCanChooseFiles:NO]; [panel setCanChooseDirectories:YES]; lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"]; break; case PCAddFileOperation: if (addFilesPanel == nil) { addFilesPanel = [PCAddFilesPanel addFilesPanel]; [addFilesPanel setTreatsFilePackagesAsDirectories: YES]; } panel = addFilesPanel; lastOpenDir = [prefs stringForKey:@"FileAddLastDirectory"]; break; default: return nil; break; } if (!lastOpenDir) { lastOpenDir = NSHomeDirectory(); } [panel setDirectory:lastOpenDir]; [panel setDelegate:self]; if (title != nil) { [panel setTitle:title]; } if (accessoryView != nil) { [panel setAccessoryView:accessoryView]; } return panel; } - (void)_saveLastDirectoryForPanel:(id)panel { id prefs = [projectManager prefController]; NSString *key = nil; switch (operation) { case PCOpenFileOperation: key = @"FileOpenLastDirectory"; break; case PCSaveFileOperation: key = @"FileSaveLastDirectory"; break; case PCOpenProjectOperation: key = @"ProjectOpenLastDirectory"; break; case PCAddFileOperation: key = @"FileAddLastDirectory"; break; default: break; } if (key != nil) { [prefs setString:[panel directory] forKey:key notify:NO]; } } - (NSMutableArray *)filesOfTypes:(NSArray *)types operation:(int)op multiple:(BOOL)yn title:(NSString *)title accView:(NSView *)accessoryView { id panel; NSMutableArray *fileList = [[NSMutableArray alloc] init]; int result = -10; panel = [self _panelForOperation:op title:title accView:accessoryView]; if (types != nil) { [panel setAllowedFileTypes:types]; } if ((op == PCOpenFileOperation) || (op == PCOpenProjectOperation) || (op == PCOpenDirectoryOperation)) { if ((result = [panel runModalForTypes:types]) == NSOKButton) { [fileList addObjectsFromArray:[panel filenames]]; } } else if (op == PCSaveFileOperation) { if ((result = [panel runModal]) == NSOKButton) { [fileList addObject:[panel filename]]; } } else if (op == PCAddFileOperation) { PCProject *project = [projectManager activeProject]; NSString *selectedCategory = nil; [panel setCategories:[project rootCategories]]; selectedCategory = [[project projectBrowser] nameOfSelectedCategory]; [panel selectCategory:selectedCategory]; if ((result = [panel runModalForTypes:types]) == NSOKButton) { [fileList addObjectsFromArray:[panel filenames]]; } } if (result == NSOKButton) { [self _saveLastDirectoryForPanel:panel]; return [fileList autorelease]; } return nil; } // ============================================================================ // ==== PCAddFilesPanel delegate // ============================================================================ - (void)categoryChangedTo:(NSString *)category { PCProject *project = [projectManager activeProject]; NSArray *fileTypes = nil; PCProjectBrowser *browser = [project projectBrowser]; NSString *path = [browser path]; [addFilesPanel setTitle:[NSString stringWithFormat:@"Add %@",category]]; fileTypes = [project fileTypesForCategoryKey:[project keyForCategory:category]]; [addFilesPanel setFileTypes:fileTypes]; // Set project browser path path = [path stringByDeletingLastPathComponent]; path = [path stringByAppendingPathComponent:category]; [browser setPath:path]; } // ============================================================================ // ==== NSOpenPanel and NSSavePanel delegate // ============================================================================ // If file name already in project -- don't show it! - (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename { NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isDir; PCProject *project = nil; NSArray *fileTypes = nil; NSString *category = nil; NSString *categoryKey = nil; [fileManager fileExistsAtPath:filename isDirectory:&isDir]; if ([[filename pathExtension] isEqualToString:@"gorm"]) { isDir = NO; } if (sender == addFilesPanel && !isDir) { project = [projectManager activeProject]; category = [addFilesPanel selectedCategory]; categoryKey = [project keyForCategory:category]; fileTypes = [project fileTypesForCategoryKey:categoryKey]; // Wrong file extension if (fileTypes && ![fileTypes containsObject:[filename pathExtension]]) { return NO; } // File is already in project if (![project doesAcceptFile:filename forKey:categoryKey]) { return NO; } } return YES; } // Test if we should accept file name selected or entered - (BOOL)panel:(id)sender isValidFilename:(NSString *)filename { NSFileManager *fm = [NSFileManager defaultManager]; BOOL isDir; NSEnumerator *e = nil; NSArray *tempList = nil; NSString *tempExtension = nil; if (operation == PCOpenProjectOperation) { if ([fm fileExistsAtPath:filename isDirectory:&isDir] && isDir) { e = [[sender allowedFileTypes] objectEnumerator]; while ((tempExtension = [e nextObject]) != nil) { tempList = [self filesWithExtension:tempExtension atPath:filename includeDirs:YES]; if ([tempList count] > 0) { return YES; } } return NO; } } return YES; } @end @implementation PCFileManager (Misc) /** * Returns YES if the file identified by `filename' is a text file, * otherwise returns NO. * * The test is one by reading the first 512 bytes of the file * and checking whether at least 90% of the data are printable * ASCII characters. * * Author Saso Kiselkov */ - (BOOL)isTextFile:(NSString *)filename { NSFileHandle *fh; NSData *data; NSUInteger i, printable = 0; NSString *content; NSCharacterSet *alpha = [NSCharacterSet alphanumericCharacterSet]; NSCharacterSet *spaces = [NSCharacterSet whitespaceAndNewlineCharacterSet]; NSCharacterSet *marks = [NSCharacterSet punctuationCharacterSet]; fh = [NSFileHandle fileHandleForReadingAtPath:filename]; if (fh == nil) { return NO; } data = [fh readDataOfLength:512]; if ([data length] == 0) { return YES; } content = [NSString stringWithContentsOfFile: filename]; for (i = 0; i < [content length]; i++) { if ([alpha characterIsMember: [content characterAtIndex: i]] || [spaces characterIsMember: [content characterAtIndex: i]] || [marks characterIsMember: [content characterAtIndex: i]]) { printable++; } } return (((double) printable / i) > 0.9); } - (NSArray *)filesWithExtension:(NSString *)extension atPath:(NSString *)dirPath includeDirs:(BOOL)incDirs { NSFileManager *fm = [NSFileManager defaultManager]; NSMutableArray *filesList = [[NSMutableArray alloc] init]; NSEnumerator *e = nil; NSString *temp = nil; BOOL isDir; e = [[fm directoryContentsAtPath:dirPath] objectEnumerator]; while ((temp = [e nextObject]) != nil) { if ([fm fileExistsAtPath:temp isDirectory:&isDir] && isDir && !incDirs) { continue; } if ([[temp pathExtension] isEqual:extension]) { [filesList addObject:[dirPath stringByAppendingPathComponent:temp]]; } } return [filesList autorelease]; } @end apps-projectcenter-master/Framework/PCFileNameField.m000066400000000000000000000063141347226342500231550ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import NSString *PCFileNameFieldNoFiles = @"No files selected"; @implementation PCFileNameField - (void)setFont:(NSFont *)fontObject { NSLog(@"PCFNF: setFont"); } - (void)setEditableField:(BOOL)yn { NSRect frame = [self frame]; NSRect fontFrame = [[self font] boundingRectForFont]; // NSLog (@"TF height: %f font height: %f", // frame.size.height, fontFrame.size.height); if ([self textShouldSetEditable:[self stringValue]] == NO) { return; } // Correct self size wrt font bounding rect if (frame.size.height > fontFrame.size.height+3) { frame.origin.y += (frame.size.height - (fontFrame.size.height+3))/2; frame.size.height = fontFrame.size.height+3; } if (yn == YES) { frame.size.width += 4; if ([self alignment] != NSRightTextAlignment) { frame.origin.x -= 4; } [self setFrame:frame]; [self setBordered:YES]; [self setBackgroundColor:[NSColor whiteColor]]; [self setEditable:YES]; [self setNeedsDisplay:YES]; [[self superview] setNeedsDisplay:YES]; } else { frame.size.width -= 4; if ([self alignment] != NSRightTextAlignment) { frame.origin.x += 4; } [self setFrame:frame]; [self setBackgroundColor:[NSColor lightGrayColor]]; [self setBordered:NO]; [self setEditable:NO]; [self setNeedsDisplay:YES]; [[self superview] setNeedsDisplay:YES]; } } - (void)mouseDown:(NSEvent *)theEvent { [self setEditableField:YES]; [super mouseDown:theEvent]; } - (void)setStringValue:(NSString *)aString { id delegate = [self delegate]; SEL action = @selector(controlStringValueDidChange:); [super setStringValue:aString]; if ([delegate respondsToSelector:action]) { [delegate performSelector:action withObject:aString]; } } - (BOOL)textShouldSetEditable:(NSString *)text { id delegate = [self delegate]; if ([text isEqualToString:PCFileNameFieldNoFiles]) { return NO; } if ([delegate respondsToSelector:@selector(textShouldSetEditable:)]) { return [delegate textShouldSetEditable:text]; } return YES; } - (void)textDidEndEditing:(NSNotification *)aNotification { [self setEditableField:NO]; [super textDidEndEditing:aNotification]; } @end apps-projectcenter-master/Framework/PCFileNameIcon.m000066400000000000000000000124721347226342500230240ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2005 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import @implementation PCFileNameIcon - (void)awakeFromNib { filePath = nil; [self setRefusesFirstResponder:YES]; // [self setEditable:NO]; // prevents dragging // [self setImage:[NSImage imageNamed:@"ProjectCenter"]]; [self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]]; } - (id)initWithFrame:(NSRect)frameRect { self = [super initWithFrame:frameRect]; filePath = nil; [self setRefusesFirstResponder:YES]; // [self setEditable:NO]; // prevents dragging // [self setImage:[NSImage imageNamed:@"ProjectCenter"]]; return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCFileNameIcon: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(fileNameField); RELEASE(delegate); RELEASE(filePath); [super dealloc]; } - (void)setFileNameField:(NSTextField *)field { fileNameField = RETAIN(field); } - (void)setDelegate:(id)object { ASSIGN(delegate, object); } - (void)updateIcon { if (delegate) { if ([delegate respondsToSelector:@selector(fileNameIconImage)]) { [self setImage:[delegate fileNameIconImage]]; } if ((fileNameField != nil) && [delegate respondsToSelector:@selector(fileNameIconTitle)]) { [fileNameField setStringValue:[delegate fileNameIconTitle]]; } if ([delegate respondsToSelector:@selector(fileNameIconPath)]) { ASSIGN(filePath, [delegate fileNameIconPath]); } } } // --- Drag and drop - (void)mouseDown:(NSEvent *)theEvent { NSArray *fileList = [NSArray arrayWithObjects:filePath, nil]; NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard]; NSPoint dragPosition; [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil]; [pboard setPropertyList:fileList forType:NSFilenamesPboardType]; // Start the drag operation dragPosition = [self convertPoint:[theEvent locationInWindow] fromView:nil]; dragPosition.x -= 16; dragPosition.y -= 16; [self dragImage:[self image] at:dragPosition offset:NSZeroSize event:theEvent pasteboard:pboard source:self slideBack:YES]; } // --- NSDraggingDestination protocol methods // -- Before the image is released - (NSDragOperation)draggingEntered:(id )sender { NSPasteboard *pb = [sender draggingPasteboard]; NSArray *paths = [pb propertyListForType:NSFilenamesPboardType]; NSDragOperation draggingOp = NSDragOperationNone; // NSLog(@"Dragging entered: %@", paths); if (![paths isKindOfClass:[NSArray class]] || [paths count] == 0) { return draggingOp; } if (delegate && [delegate respondsToSelector:@selector(canPerformDraggingOf:)] && [delegate canPerformDraggingOf:paths] == YES) { draggingOp = NSDragOperationCopy; } if (draggingOp == NSDragOperationCopy) { // TODO: Change icon to icon that shows open state of destination } return draggingOp; } - (void)draggingExited:(id )sender { NSLog(@"Dragging exited"); } // -- After the image is released - (BOOL)prepareForDragOperation:(id )sender { NSPasteboard *pb = [sender draggingPasteboard]; NSArray *paths = [pb propertyListForType:NSFilenamesPboardType]; NSLog(@"Prepare for drag operation"); if (delegate && [delegate respondsToSelector:@selector(prepareForDraggingOf:)]) { return [delegate prepareForDraggingOf:paths]; } return YES; } - (BOOL)performDragOperation:(id )sender { NSPasteboard *pb = [sender draggingPasteboard]; NSArray *paths = [pb propertyListForType:NSFilenamesPboardType]; NSLog(@"performDragOperation: %@", paths); if (delegate && [delegate respondsToSelector:@selector(performDraggingOf:)]) { return [delegate performDraggingOf:paths]; } return YES; } - (void)concludeDragOperation:(id )sender { NSPasteboard *pb = [sender draggingPasteboard]; NSArray *paths = [pb propertyListForType:NSFilenamesPboardType]; NSLog(@"Conclude drag operation"); if (delegate && [delegate respondsToSelector:@selector(concludeDraggingOf:)]) { [delegate concludeDraggingOf:paths]; } } // --- NSDraggingSource protocol methods - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal { return NSDragOperationCopy; } @end apps-projectcenter-master/Framework/PCLogController.m000066400000000000000000000105571347226342500233220ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import void PCLog(id sender, int tag, NSString* format, va_list args) { [[PCLogController sharedLogController] logMessage:[NSString stringWithFormat:format arguments: args] withTag:tag sender:sender]; } void PCLogInfo(id sender, NSString* format, ...) { va_list ap; va_start(ap, format); PCLog(sender, INFO, format, ap); va_end(ap); } void PCLogStatus(id sender, NSString* format, ...) { va_list ap; va_start(ap, format); PCLog(sender, STATUS, format, ap); va_end(ap); } void PCLogWarning(id sender, NSString* format, ...) { va_list ap; va_start(ap, format); PCLog(sender, WARNING, format, ap); va_end(ap); } void PCLogError(id sender, NSString* format, ...) { va_list ap; va_start(ap, format); PCLog(sender, ERROR, format, ap); va_end(ap); } @implementation PCLogController // =========================================================================== // ==== Class methods // =========================================================================== static PCLogController *_logCtrllr = nil; + (PCLogController *)sharedLogController { if (!_logCtrllr) { _logCtrllr = [[PCLogController alloc] init]; } return _logCtrllr; } // =========================================================================== // ==== Init and free // =========================================================================== - (id)init { NSFont *font = nil; if (!(self = [super init])) { return nil; } if ([NSBundle loadNibNamed:@"LogPanel" owner:self] == NO) { NSLog(@"PCLogController[init]: error loading NIB file!"); return nil; } [panel setFrameAutosaveName:@"LogPanel"]; if (![panel setFrameUsingName: @"LogPanel"]) { [panel center]; } font = [NSFont userFixedPitchFontOfSize:[NSFont systemFontSize]]; textAttributes = [NSMutableDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; [textAttributes retain]; return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCLogController: dealloc"); #endif RELEASE(textAttributes); [super dealloc]; } - (void)showPanel { [panel makeKeyAndOrderFront:self]; } - (void)logMessage:(NSString *)text withTag:(int)tag sender:(id)sender; { NSString *messageText = nil; NSAttributedString *message = nil; messageText = [NSString stringWithFormat:@" %@: %@\n",[sender className],text]; switch (tag) { case INFO: [textAttributes setObject:[NSColor colorWithDeviceRed:.0 green:.0 blue:.0 alpha:1.0] forKey:NSForegroundColorAttributeName]; break; case STATUS: [textAttributes setObject:[NSColor colorWithDeviceRed:.0 green:.35 blue:.0 alpha:1.0] forKey:NSForegroundColorAttributeName]; break; case WARNING: [textAttributes setObject:[NSColor colorWithDeviceRed:.56 green:.45 blue:.0 alpha:1.0] forKey:NSForegroundColorAttributeName]; break; case ERROR: [textAttributes setObject:[NSColor colorWithDeviceRed:.63 green:.0 blue:.0 alpha:1.0] forKey:NSForegroundColorAttributeName]; break; default: break; } message = [[NSAttributedString alloc] initWithString:messageText attributes:textAttributes]; [self putMessageOnScreen:message]; } - (void)putMessageOnScreen:(NSAttributedString *)message { [[textView textStorage] appendAttributedString:message]; [textView scrollRangeToVisible:NSMakeRange([[textView string] length], 0)]; } @end apps-projectcenter-master/Framework/PCMakefileFactory.m000066400000000000000000000413111347226342500235720ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import "../Modules/Preferences/Build/PCBuildPrefs.h" #define COMMENT_HEADERS @"\n\n#\n# Header files\n#\n" #define COMMENT_RESOURCES @"\n\n#\n# Resource files\n#\n" #define COMMENT_CLASSES @"\n\n#\n# Objective-C Class files\n#\n" #define COMMENT_OCPPCLASSES @"\n\n#\n# Objective-C++ Class files\n#\n" #define COMMENT_CFILES @"\n\n#\n# Other sources\n#\n" #define COMMENT_SUBPROJECTS @"\n\n#\n# Subprojects\n#\n" #define COMMENT_APP @"\n\n#\n# Main application\n#\n" #define COMMENT_LIBRARIES @"\n\n#\n# Additional libraries\n#\n" #define COMMENT_BUNDLE @"\n\n#\n# Bundle\n#\n" #define COMMENT_LIBRARY @"\n\n#\n# Library\n#\n" #define COMMENT_TOOL @"\n\n#\n# Tool\n#\n" #define COMMENT_LOCALIZATION @"\n\n#\n# Localization\n#\n" @implementation PCMakefileFactory static PCMakefileFactory *_factory = nil; + (PCMakefileFactory *)sharedFactory { static BOOL isInitialised = NO; if (isInitialised == NO) { _factory = [[PCMakefileFactory alloc] init]; isInitialised = YES; } return _factory; } - (void) createMakefileForProject: (PCProject *)project { id prefs = [[project projectManager] prefController]; NSString *buildDir = [prefs stringForKey:RootBuildDirectory]; NSString *prName = [project projectName]; NSString *buildName = [prName stringByAppendingPathExtension: @"build"]; NSString *instDomain = [[project projectDict] objectForKey:PCInstallDomain]; NSAssert(prName, @"No project name given!"); AUTORELEASE(mfile); mfile = [[NSMutableString alloc] init]; AUTORELEASE(pnme); pnme = [prName copy]; [mfile appendString: @"#\n"]; [mfile appendString: @"# GNUmakefile - Generated by ProjectCenter\n"]; [mfile appendString: @"#\n"]; [mfile appendString: @"ifeq ($(GNUSTEP_MAKEFILES),)\n"]; [mfile appendString: @" GNUSTEP_MAKEFILES := $(shell gnustep-config "]; [mfile appendString: @"--variable=GNUSTEP_MAKEFILES 2>/dev/null)\n"]; [mfile appendString: @" ifeq ($(GNUSTEP_MAKEFILES),)\n"]; [mfile appendString: @" $(warning )\n"]; [mfile appendString: @" $(warning Unable to obtain GNUSTEP_MAKEFILES"]; [mfile appendString: @" setting from gnustep-config!)\n"]; [mfile appendString: @" $(warning Perhaps gnustep-make is not properly"]; [mfile appendString: @" installed,)\n"]; [mfile appendString: @" $(warning so gnustep-config is not in your"]; [mfile appendString: @" PATH.)\n"]; [mfile appendString: @" $(warning )\n"]; [mfile appendString: @" $(warning Your PATH is currently $(PATH))\n"]; [mfile appendString: @" $(warning )\n"]; [mfile appendString: @" endif\n"]; [mfile appendString: @"endif\n"]; [mfile appendString: @"ifeq ($(GNUSTEP_MAKEFILES),)\n"]; [mfile appendString: @" $(error You need to set GNUSTEP_MAKEFILES"]; [mfile appendString: @" before compiling!)\n"]; [mfile appendString: @"endif\n"]; if ([instDomain isEqualToString: @"LOCAL"] || [instDomain isEqualToString: @"SYSTEM"] || [instDomain isEqualToString: @"USER"] || [instDomain isEqualToString: @"NETWORK"]) { [mfile appendString: [NSString stringWithFormat: @"\nGNUSTEP_INSTALLATION_DOMAIN = %@\n", instDomain]]; } /* If GNUSTEP_INSTALLATION_DOMAIN was not set explicitly by the * user, it should not be specified; gnustep-make will use the * default - normally, but not necessarily, LOCAL. */ [mfile appendString: @"\ninclude $(GNUSTEP_MAKEFILES)/common.make\n"]; if (![buildDir isEqualToString: @""] && buildDir != nil) { [mfile appendString: [NSString stringWithFormat: @"\nGNUSTEP_BUILD_DIR = %@\n", [buildDir stringByAppendingPathComponent:buildName]]]; } } - (BOOL)createPreambleForProject:(PCProject *)project { NSMutableString *mfp = [[NSMutableString alloc] init]; NSString *mfl = nil; NSArray *array = nil; NSDictionary *projectDict = [project projectDict]; NSString *projectPath = [project projectPath]; NSString *projectType = [project projectTypeName]; // Create the new file [mfp appendString: @"#\n"]; [mfp appendString: @"# GNUmakefile.preamble - Generated by ProjectCenter\n"]; [mfp appendString: @"#\n\n"]; // Preprocessor flags [mfp appendString: @"# Additional flags to pass to the preprocessor\n"]; [mfp appendString: [NSString stringWithFormat: @"ADDITIONAL_CPPFLAGS += %@\n\n", [projectDict objectForKey:PCPreprocessorOptions]]]; // Objective C compiler flags [mfp appendString: @"# Additional flags to pass to Objective C compiler\n"]; [mfp appendString: [NSString stringWithFormat: @"ADDITIONAL_OBJCFLAGS += %@\n\n", [projectDict objectForKey:PCObjCCompilerOptions]]]; // C compiler flags [mfp appendString: @"# Additional flags to pass to C compiler\n"]; [mfp appendString: [NSString stringWithFormat: @"ADDITIONAL_CFLAGS += %@\n\n", [projectDict objectForKey:PCCompilerOptions]]]; // Linker flags [mfp appendString: @"# Additional flags to pass to the linker\n"]; [mfp appendString: [NSString stringWithFormat: @"ADDITIONAL_LDFLAGS += %@ ", [projectDict objectForKey:PCLinkerOptions]]]; [mfp appendString: @"\n\n"]; // Directories where to search headers [mfp appendString: @"# Additional include directories the compiler should search\n"]; [mfp appendString: @"ADDITIONAL_INCLUDE_DIRS += "]; array = [projectDict objectForKey:PCSearchHeaders]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { [mfp appendString: [NSString stringWithFormat: @"-I%@ ",tmp]]; } } [mfp appendString: @"\n\n"]; // Directories where to search libraries [mfp appendString: @"# Additional library directories the linker should search\n"]; [mfp appendString: @"ADDITIONAL_LIB_DIRS += "]; array = [projectDict objectForKey:PCSearchLibs]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { [mfp appendString: [NSString stringWithFormat: @"-L%@ ",tmp]]; } } [mfp appendString: @"\n\n"]; // [mfp appendString: [projectDict objectForKey:PCLibraries]]; if ([projectType isEqualToString: @"Tool"]) { // Additional TOOL libraries [mfp appendString: @"# Additional TOOL libraries to link\n"]; [mfp appendString: @"ADDITIONAL_TOOL_LIBS += "]; array = [projectDict objectForKey:PCLibraries]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { if (![tmp isEqualToString: @"gnustep-base"]) { [mfp appendString: [NSString stringWithFormat: @"-l%@ ",tmp]]; } } } } else { // Additional GUI libraries // TODO: Let the user select objc, base, gui libraries/frameworks // on the gui - the following works well for GUI stuff only. [mfp appendString: @"# Additional GUI libraries to link\n"]; [mfp appendString: @"ADDITIONAL_GUI_LIBS += "]; array = [projectDict objectForKey:PCLibraries]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { if (![tmp isEqualToString: @"gnustep-base"] && ![tmp isEqualToString: @"gnustep-gui"]) { [mfp appendString: [NSString stringWithFormat: @"-l%@ ",tmp]]; } } } } [mfp appendString: @"\n\n"]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent: @"GNUmakefile.preamble"]; if (![mfp writeToFile:mfl atomically:YES]) { NSRunAlertPanel(@"Create Makefile", @"Couldn't create %@", @"Ok",nil,nil, mfl); return NO; } return YES; } - (BOOL)createPostambleForProject:(PCProject *)project { NSBundle *bundle = nil; NSString *template = nil; NSString *postamble = nil; NSFileManager *fm = [NSFileManager defaultManager]; bundle = [NSBundle bundleForClass: [self class]]; template = [bundle pathForResource: @"postamble" ofType: @"template"]; postamble = [[project projectPath] stringByAppendingPathComponent: @"GNUmakefile.postamble"]; if (![fm copyPath:template toPath:postamble handler:nil]) { NSRunAlertPanel(@"Create Makefile", @"Couldn't create %@", @"Ok",nil,nil, postamble); return NO; } return YES; } - (void)appendString:(NSString *)aString { NSAssert(mfile, @"No valid makefile available!"); NSAssert(aString, @"No valid string!"); [mfile appendString:aString]; } - (void)appendLibraries:(NSArray *)array { NSMutableArray *libs = [NSMutableArray arrayWithArray:array]; NSString *lib = nil; NSEnumerator *enumerator = nil; [libs removeObject: @"gnustep-base"]; [libs removeObject: @"gnustep-gui"]; if (libs == nil || [libs count] == 0) { return; } [self appendString: @"\n\n#\n# Libraries\n#\n"]; [self appendString: [NSString stringWithFormat: @"%@_LIBRARIES_DEPEND_UPON += ",pnme]]; enumerator = [libs objectEnumerator]; while ((lib = [enumerator nextObject])) { [self appendString: [NSString stringWithFormat: @"-l%@ ",lib]]; } } - (void)appendHeaders:(NSArray *)array { if (array == nil || [array count] == 0) return; [self appendHeaders:array forTarget:pnme]; } - (void)appendHeaders:(NSArray *)array forTarget:(NSString *)target { if (array == nil || [array count] == 0) return; [self appendString:COMMENT_HEADERS]; [self appendString: [NSString stringWithFormat: @"%@_HEADER_FILES = \\\n", target]]; [self appendString: [array componentsJoinedByString: @" \\\n"]]; } - (void)appendClasses:(NSArray *)array { if (array == nil || [array count] == 0) { return; } [self appendClasses:array forTarget:pnme]; } - (void)appendClasses:(NSArray *)array forTarget:(NSString *)target { NSEnumerator *oenum; NSMutableArray *marray = nil; NSMutableArray *mmarray = nil; NSString *file; if (array == nil || [array count] == 0) { return; } oenum = [array objectEnumerator]; while ((file = [oenum nextObject])) { if ([file hasSuffix: @".m"]) { if (marray == nil) { marray = [NSMutableArray array]; } [marray addObject: file]; } else if ([file hasSuffix: @".mm"]) { if (mmarray == nil) { mmarray = [NSMutableArray array]; } [mmarray addObject: file]; } } if (marray) { [self appendString:COMMENT_CLASSES]; [self appendString: [NSString stringWithFormat: @"%@_OBJC_FILES = \\\n",target]]; [self appendString: [marray componentsJoinedByString: @" \\\n"]]; } if (mmarray) { [self appendString:COMMENT_OCPPCLASSES]; [self appendString: [NSString stringWithFormat: @"%@_OBJCC_FILES = \\\n",target]]; [self appendString: [mmarray componentsJoinedByString: @" \\\n"]]; } } - (void)appendOtherSources:(NSArray *)array { if (array == nil || [array count] == 0) { return; } [self appendOtherSources: array forTarget: pnme]; } - (void)appendOtherSources:(NSArray *)array forTarget: (NSString *)target { NSMutableArray *marray = nil; NSMutableArray *mmarray = nil; NSMutableArray *oarray = nil; NSEnumerator *oenum; NSString *file; if (array == nil || [array count] == 0) { return; } // Other Sources can have both .m files and non .m files oenum = [array objectEnumerator]; while ((file = [oenum nextObject])) { if ([file hasSuffix: @".m"]) { if (marray == nil) { marray = [NSMutableArray array]; } [marray addObject: file]; } else if ([file hasSuffix: @".mm"]) { if (mmarray == nil) { mmarray = [NSMutableArray array]; } [mmarray addObject: file]; } else // non .m file { if (oarray == nil) { oarray = [NSMutableArray array]; } [oarray addObject: file]; } } [self appendString:COMMENT_CFILES]; // Add other sources if any if (oarray && [oarray count] != 0) { oenum = [oarray objectEnumerator]; [self appendString: [NSString stringWithFormat: @"%@_C_FILES = ", target]]; while ((file = [oenum nextObject])) { [self appendString: [NSString stringWithFormat: @"\\\n%@ ",file]]; } [self appendString: @"\n\n"]; } // Add .m files if any if (marray && [marray count] != 0) { oenum = [marray objectEnumerator]; [self appendString: [NSString stringWithFormat: @"%@_OBJC_FILES += ",pnme]]; while ((file = [oenum nextObject])) { [self appendString: [NSString stringWithFormat: @"\\\n%@ ", file]]; } } // Add .mm files if any if (mmarray && [marray count] != 0) { oenum = [mmarray objectEnumerator]; [self appendString: [NSString stringWithFormat: @"%@_OBJCC_FILES += ",pnme]]; while ((file = [oenum nextObject])) { [self appendString: [NSString stringWithFormat: @"\\\n%@ ", file]]; } } } - (void)appendResources:(NSArray *)array inDir:(NSString *)dir { int i = 0; int count = [array count]; NSString *string = nil; NSString *item = nil; NSString *eol = @"\\\n"; if (array == nil || count <= 0) { return; } // Header [self appendString:COMMENT_RESOURCES]; [self appendString: [NSString stringWithFormat: @"%@_RESOURCE_FILES = \\\n",pnme]]; // Items for (i = 0; i < count; i++) { item = [array objectAtIndex:i]; string = [NSString stringWithFormat: @"%@/%@ %@", dir, item, eol]; [self appendString:string]; if (i == (count-2)) { eol = @"\n"; } } } - (void)appendResourceItems:(NSArray *)array { if (array == nil || [array count] <= 0) { return; } [self appendString: @"\\\n"]; [self appendString: [array componentsJoinedByString: @" \\\n"]]; } - (void)appendLocalizedResources:(NSArray *)resources forLanguages:(NSArray *)languages { NSString *langs = [languages componentsJoinedByString: @" "]; NSString *string = nil; NSString *item = nil; NSString *eol = @"\\\n"; int i = 0; int count = [resources count]; if (resources == nil || count <= 0) { return; } // Header [self appendString:COMMENT_LOCALIZATION]; // Languages string = [NSString stringWithFormat: @"%@_LANGUAGES = %@\n", pnme, langs]; [self appendString:string]; // Items [self appendString: [NSString stringWithFormat: @"%@_LOCALIZED_RESOURCE_FILES = \\\n",pnme]]; for (i = 0; i < count; i++) { if (i == (count-1)) { eol = @"\n"; } item = [resources objectAtIndex:i]; string = [NSString stringWithFormat: @"%@ %@", item, eol]; [self appendString:string]; } } - (void)appendSubprojects:(NSArray*)array { NSString *tmp = nil; NSEnumerator *enumerator = nil; if (array == nil || [array count] == 0) { return; } [self appendString:COMMENT_SUBPROJECTS]; [self appendString: @"SUBPROJECTS = "]; enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { tmp = [tmp stringByAppendingPathExtension: @"subproj"]; [self appendString: [NSString stringWithFormat: @"\\\n%@ ",tmp]]; } } - (NSData *)encodedMakefile { NSAssert(mfile, @"No valid makefile available!"); return [mfile dataUsingEncoding: [NSString defaultCStringEncoding]]; } @end apps-projectcenter-master/Framework/PCProject.m000066400000000000000000001347541347226342500221510ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ // TODO: Split into several files with categories // TODO: Take care of Libraries(gnustep-gui, gnustep-base) // and Non Project Files #import #import #import #import #import #import #import #import #import #import #import #import #import #import "Modules/Preferences/Saving/PCSavingPrefs.h" #import "Modules/Preferences/Misc/PCMiscPrefs.h" // #import // #import NSString *PCProjectDictDidChangeNotification = @"PCProjectDictDidChangeNotification"; NSString *PCProjectDictDidSaveNotification = @"PCProjectDictDidSaveNotification"; NSString *PCProjectBreakpointNotification = @"PCProjectBreakpointNotification"; @implementation PCProject // ============================================================================ // ==== Init and free // ============================================================================ - (id)init { if ((self = [super init])) { projectDict = [[NSMutableDictionary alloc] init]; projectPath = [[NSString alloc] init]; projectName = [[NSString alloc] init]; buildOptions = [[NSMutableDictionary alloc] init]; loadedSubprojects = [[NSMutableArray alloc] init]; projectBuilder = nil; projectLauncher = nil; isSubproject = NO; activeSubproject = nil; } return self; } - (PCProject *)openWithWrapperAt:(NSString *)aPath { BOOL isDir = NO; BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: aPath isDirectory: &isDir]; if(isDir && exists) { projectFileWrapper = [[NSFileWrapper alloc] initWithPath: aPath]; if(projectFileWrapper != nil) { NSDictionary *wrappers = [projectFileWrapper fileWrappers]; NSData *data = [[wrappers objectForKey: @"PC.project"] regularFileContents]; NSData *userData = [[wrappers objectForKey: [NSUserName() stringByAppendingPathExtension: @"project"]] regularFileContents]; NSMutableDictionary *dict = [[[[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding] propertyList] mutableCopy]; NSDictionary *udict = [[[NSString alloc] initWithData: userData encoding: NSASCIIStringEncoding] propertyList]; if (udict != nil) [dict addEntriesFromDictionary: udict]; [udict release]; [self assignProjectDict:dict atPath: aPath]; } } else { NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile: aPath]; projectFileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers: [NSMutableDictionary dictionaryWithCapacity: 3]]; [projectFileWrapper addRegularFileWithContents: [NSData dataWithBytes: [[dict description] cString] length: [[dict description] length]] preferredFilename: @"PC.project"]; [self assignProjectDict: dict atPath: aPath]; } return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCProject %@: dealloc", projectName); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(projectDict); RELEASE(projectName); RELEASE(projectPath); RELEASE(buildOptions); RELEASE(loadedSubprojects); // Initialized in -setProjectManager: of project and // in setSuperProject: of subproject RELEASE(projectWindow); RELEASE(projectBrowser); RELEASE(projectLoadedFiles); RELEASE(projectEditor); TEST_RELEASE(projectBuilder); TEST_RELEASE(projectLauncher); if (isSubproject == YES) { RELEASE(rootProject); RELEASE(superProject); } [super dealloc]; } - (void)loadPreferences:(NSNotification *)aNotification { id prefs = [projectManager prefController]; rememberWindows = [prefs boolForKey:RememberWindows]; keepBackup = [prefs boolForKey:KeepBackup]; } // ============================================================================ // ==== Project handling // ============================================================================ // --- Dictionary - (BOOL)assignProjectDict:(NSDictionary *)pDict atPath:(NSString *)pPath { NSString *tempPath = nil; NSAssert(pDict,@"No valid project dictionary!"); PCLogStatus(self, @"assignProjectDict at %@", pPath); if (projectDict) { [projectDict release]; } projectDict = [[NSMutableDictionary alloc] initWithDictionary:pDict]; // Project path if ([[pPath lastPathComponent] isEqualToString:@"PC.project"] || [[[pPath lastPathComponent] pathExtension] isEqualToString:@"pcproj"]) { tempPath = [pPath stringByDeletingLastPathComponent]; if ([[tempPath pathExtension] isEqualToString:@"pcproj"]) { tempPath = [tempPath stringByDeletingLastPathComponent]; } [self setProjectPath:tempPath]; } else { [self setProjectPath:pPath]; } [self setProjectName:[projectDict objectForKey:PCProjectName]]; [self writeMakefile]; [self save]; return YES; } - (BOOL)isValidDictionary:(NSDictionary *)aDict { NSString *_file; NSString *key; Class projClass = [self builderClass]; NSDictionary *origin; NSArray *keys; NSEnumerator *enumerator; _file = [[NSBundle bundleForClass:projClass] pathForResource:@"PC" ofType:@"project"]; origin = [NSMutableDictionary dictionaryWithContentsOfFile:_file]; keys = [origin allKeys]; enumerator = [keys objectEnumerator]; while ((key = [enumerator nextObject])) { if ([aDict objectForKey:key] == nil) { PCLogInfo(self, @"invalid dict entry for key %@", key); return NO; } } return YES; } - (void)validateProjectDict { if ([self isValidDictionary:projectDict] == NO) { [self updateProjectDict]; NSRunAlertPanel(@"Open Project!", @"The project file was converted from previous version!\n" @"Please make sure that every project attribute contain" @" valid values!", @"OK",nil,nil); } } - (void)setProjectDictObject:(id)object forKey:(NSString *)key notify:(BOOL)yn { id currentObject = [projectDict objectForKey:key]; NSMutableDictionary *notifObject = [NSMutableDictionary dictionary]; if ([object isKindOfClass:[NSString class]] && [currentObject isEqualToString:object]) { return; } [projectDict setObject:object forKey:key]; // Send in notification project itself and project dictionary object key // that was changed [notifObject setObject:self forKey:@"Project"]; [notifObject setObject:key forKey:@"Attribute"]; if (yn == YES) { [[NSNotificationCenter defaultCenter] postNotificationName:PCProjectDictDidChangeNotification object:notifObject]; } } - (void)updateProjectDict { Class projClass = [self builderClass]; NSString *_file = nil; NSString *key = nil; NSDictionary *origin = nil; NSArray *keys = nil; NSEnumerator *enumerator = nil; _file = [[NSBundle bundleForClass:projClass] pathForResource:@"PC" ofType:@"project"]; origin = [NSMutableDictionary dictionaryWithContentsOfFile:_file]; keys = [origin allKeys]; enumerator = [keys objectEnumerator]; while ((key = [enumerator nextObject])) { if ([projectDict objectForKey:key] == nil) { // Doesn't call setProjectDictObject:forKey for opimization [projectDict setObject:[origin objectForKey:key] forKey:key]; } } [self save]; } - (NSDictionary *)projectDict { return (NSDictionary *)projectDict; } // --- Name and path - (NSString *)projectName { return projectName; } - (void)setProjectName:(NSString *)aName { if (projectName) { [projectName autorelease]; } projectName = [aName copy]; // [projectWindow setFileIconTitle:projectName]; } - (NSString *)projectPath { return projectPath; } - (void)setProjectPath:(NSString *)aPath { if (projectPath) { [projectPath autorelease]; } projectPath = [aPath copy]; } // --- Saving - (BOOL)isProjectChanged { return [projectWindow isDocumentEdited]; } // Saves backup file - (BOOL)writeMakefile { NSString *mf = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; NSString *bu = [projectPath stringByAppendingPathComponent:@"GNUmakefile~"]; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm isReadableFileAtPath:mf]) { if ([fm isWritableFileAtPath:bu]) { [fm removeFileAtPath:bu handler:nil]; } if (![fm copyPath:mf toPath:bu handler:nil]) { NSRunAlertPanel(@"Attention!", @"Could not keep a backup of the GNUMakefile!", @"OK",nil,nil); return NO; } } return YES; } - (BOOL)saveProjectWindowsAndPanels { NSMutableDictionary *windows = [NSMutableDictionary dictionary]; NSString *projectFile = nil; NSMutableDictionary *projectFileDict = nil; projectFile = [NSUserName() stringByAppendingPathExtension:@"project"]; projectFileDict = [[NSMutableDictionary alloc] initWithCapacity:4]; // Project Window [windows setObject:[projectWindow stringWithSavedFrame] forKey:@"ProjectWindow"]; if ([projectWindow isToolbarVisible] == YES) { [windows setObject:@"YES" forKey:@"ShowToolbar"]; } else { [windows setObject:@"NO" forKey:@"ShowToolbar"]; } // ProjectBrowser [windows setObject:NSStringFromRect([[projectBrowser view] frame]) forKey:@"ProjectBrowser"]; // Write to file and exit if preferences wasn't set to save panels if (!rememberWindows) { [projectFileDict setObject:windows forKey:PCWindows]; [projectFileDict writeToFile:projectFile atomically:YES]; [projectFileDict release]; return YES; } // Project Build if (projectBuilder && [[projectManager buildPanel] isVisible]) { [windows setObject:[[projectManager buildPanel] stringWithSavedFrame] forKey:@"ProjectBuild"]; } else { [windows removeObjectForKey:@"ProjectBuild"]; } // Project Launch if (projectLauncher && [[projectManager launchPanel] isVisible]) { [windows setObject:[[projectManager launchPanel] stringWithSavedFrame] forKey:@"ProjectLaunch"]; } else { [windows removeObjectForKey:@"ProjectLaunch"]; } // Loaded Files if (projectLoadedFiles && [[projectManager loadedFilesPanel] isVisible]) { [windows setObject:[[projectManager loadedFilesPanel] stringWithSavedFrame] forKey:@"LoadedFiles"]; } else { [windows removeObjectForKey:@"LoadedFiles"]; } // Set to project dict for case if project changed // Don't notify about projectDict changes [projectDict setObject:windows forKey:PCWindows]; // Now save it directly to username.project file [projectFileDict setObject:windows forKey:PCWindows]; [projectFileDict setObject: [[NSCalendarDate date] description] forKey: PCLastEditing]; // add the file and write the wrapper. [projectFileWrapper addRegularFileWithContents: [NSData dataWithBytes: [[projectFileDict description] cString] length: [[projectFileDict description] length]] preferredFilename: projectFile]; [projectFileWrapper writeToFile: wrapperPath atomically: YES updateFilenames: YES]; // release [projectFileDict release]; return YES; } - (BOOL)save { NSFileManager *fm = [NSFileManager defaultManager]; NSUInteger spCount = [loadedSubprojects count]; int i; NSString *wrapperFile; NSString *file = @"PC.project"; NSString *backup; NSMutableDictionary *dict = [projectDict mutableCopy]; NSData *dictData = nil; // remove key.. [dict removeObjectForKey: PCWindows]; [dict removeObjectForKey: PCLastEditing]; // initialize the wrappers.. wrapperFile = [projectName stringByAppendingPathExtension: @"pcproj"]; projectFileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers: [NSMutableDictionary dictionaryWithCapacity: 3]]; wrapperPath = [projectPath stringByAppendingPathComponent: wrapperFile]; backup = [wrapperPath stringByAppendingPathExtension:@"backup"]; // load subprojects... for (i = 0; i < spCount; i++) { [[loadedSubprojects objectAtIndex:i] save]; } // Remove backup file if exists if ([fm fileExistsAtPath:backup] && ![fm removeFileAtPath:backup handler:nil]) { NSRunAlertPanel(@"Save Project", @"Couldn't remove the old project backup file", @"OK",nil,nil); [dict release]; return NO; } // Save backup if ((keepBackup == YES) && [fm isReadableFileAtPath: wrapperPath]) { if ([fm copyPath: wrapperPath toPath: backup handler:nil] == NO) { NSRunAlertPanel(@"Save Project", @"Couldn't save project backup file", @"OK",nil,nil); return NO; } } // Save project file dictData = [NSPropertyListSerialization dataFromPropertyList: dict format: NSPropertyListOpenStepFormat errorDescription: NULL]; [projectFileWrapper addRegularFileWithContents: dictData preferredFilename: file]; if ([projectFileWrapper writeToFile:wrapperPath atomically:YES updateFilenames: YES] == NO) { NSRunAlertPanel(@"Save Project", @"Couldn't save project file", @"OK",nil,nil,projectName); return NO; } [[NSNotificationCenter defaultCenter] postNotificationName:PCProjectDictDidSaveNotification object:self]; // Save GNUmakefile if ([self writeMakefile] == NO) { NSRunAlertPanel(@"Save Project", @"Couldn't write GNUmakefile", @"OK",nil,nil); return NO; } return YES; } - (BOOL)close:(id)sender { PCLogInfo(self, @"Closing %@ project", projectName); // Save visible windows and panels positions to project dictionary if (isSubproject == NO) { [self saveProjectWindowsAndPanels]; [projectBrowser setPath:@"/"]; [projectManager setActiveProject:self]; } // Project files (GNUmakefile, PC.project etc.) if (isSubproject == NO && [self isProjectChanged] == YES) { int ret; ret = NSRunAlertPanel(@"Close Project", @"Project or subprojects are modified", @"Save and Close",@"Don't save",@"Stop"); switch (ret) { case NSAlertDefaultReturn: if ([self save] == NO) { return NO; } break; case NSAlertAlternateReturn: break; case NSAlertOtherReturn: return NO; break; } } // Close subprojects while ([loadedSubprojects count]) { [(PCProject *)[loadedSubprojects objectAtIndex:0] close:self]; // We should release subproject here, because it retains us // and we never reach -dealloc in other case. [loadedSubprojects removeObjectAtIndex:0]; } if (isSubproject == YES) { [projectManager closeProject:self]; return YES; } // Editors // "Cancel" button on "Save Edited Files" panel selected if ([projectEditor closeAllEditors] == NO) { return NO; } // Project window if (sender != projectWindow) { [projectWindow close]; } // Remove self from loaded projects [projectManager closeProject:self]; return YES; } // ============================================================================ // ==== Accessory methods // ============================================================================ - (PCProjectManager *)projectManager { return projectManager; } - (void)setProjectManager:(PCProjectManager *)aManager { projectManager = aManager; if (isSubproject) { return; } if (!projectBrowser) { projectBrowser = [[PCProjectBrowser alloc] initWithProject:self]; } if (!projectLoadedFiles) { projectLoadedFiles = [[PCProjectLoadedFiles alloc] initWithProject:self]; } if (!projectEditor) { projectEditor = [[PCProjectEditor alloc] init]; [projectEditor setProject:self]; [projectEditor setProjectManager:aManager]; } if (!projectWindow) { projectWindow = [[PCProjectWindow alloc] initWithProject:self]; } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadPreferences:) name:PCPreferencesDidChangeNotification object:nil]; [self loadPreferences:nil]; } - (PCProjectWindow *)projectWindow { return projectWindow; } - (PCProjectBrowser *)projectBrowser { return projectBrowser; } - (PCProjectLoadedFiles *)projectLoadedFiles { if (!projectLoadedFiles && !isSubproject) { projectLoadedFiles = [[PCProjectLoadedFiles alloc] initWithProject:self]; } return projectLoadedFiles; } - (PCProjectBuilder *)projectBuilder { if (!projectBuilder && !isSubproject) { projectBuilder = [[PCProjectBuilder alloc] initWithProject:self]; } return projectBuilder; } - (PCProjectLauncher *)projectLauncher { if (!projectLauncher && !isSubproject) { projectLauncher = [[PCProjectLauncher alloc] initWithProject:self]; } return projectLauncher; } - (PCProjectEditor *)projectEditor { return projectEditor; } // ============================================================================ // ==== Bundle methods // ============================================================================ //--- Project Inspector's "Project Attributes" - (NSView *)projectAttributesView { return nil; } //--- Properties from Info.table - (NSDictionary *)projectBundleInfoTable { NSString *_file; Class class = [self builderClass]; _file = [[NSBundle bundleForClass:class] pathForResource:@"Info" ofType:@"table"]; return [NSMutableDictionary dictionaryWithContentsOfFile:_file]; } - (NSString *)projectTypeName { return [[self projectBundleInfoTable] objectForKey:@"Name"]; } - (Class)builderClass { return [[self projectBundleInfoTable] objectForKey:@"BuilderClassName"]; } - (NSString *)projectDescription { return [[self projectBundleInfoTable] objectForKey:@"Description"]; } - (BOOL)isExecutable { if ([[[self projectBundleInfoTable] objectForKey:@"Executable"] isEqualToString:@"YES"]) { return YES; } return NO; } - (NSArray *)buildTargets { NSArray *buildTargets = [projectDict objectForKey:PCBuilderTargets]; if (!buildTargets) { buildTargets = [[self projectBundleInfoTable] objectForKey:@"BuildTargets"]; [self setProjectDictObject:buildTargets forKey:PCBuilderTargets notify:NO]; } return buildTargets; } - (NSArray *)sourceFileKeys { return [[self projectBundleInfoTable] objectForKey:@"SourceFileKeys"]; } - (NSArray *)resourceFileKeys { return [[self projectBundleInfoTable] objectForKey:@"ResourceFileKeys"]; } - (NSArray *)otherKeys { return [[self projectBundleInfoTable] objectForKey:@"OtherFileKeys"]; } - (NSArray *)allowableSubprojectTypes { return [[self projectBundleInfoTable] objectForKey:@"AllowableSubprojectTypes"]; } - (NSArray *)localizableKeys { return [[self projectBundleInfoTable] objectForKey:@"LocalizableCategories"]; } //--- Public headers (for Library, Framework) - (BOOL)canHavePublicHeaders { if ([[[self projectBundleInfoTable] objectForKey:@"CanHavePublicHeaders"] isEqualToString:@"YES"]) { return YES; } return NO; } - (NSArray *)publicHeaders { if ([self canHavePublicHeaders] == YES) { return [projectDict objectForKey:PCPublicHeaders]; } return nil; } - (void)setHeaderFile:(NSString *)file public:(BOOL)yn { NSMutableArray *publicHeaders = nil; if ((yn == YES && [[self publicHeaders] containsObject:file]) || [self canHavePublicHeaders] == NO) { return; } publicHeaders = [[projectDict objectForKey:PCPublicHeaders] copy]; if (yn) { [publicHeaders addObject:file]; } else if ([publicHeaders count] > 0 && [publicHeaders containsObject:file]) { [publicHeaders removeObject:file]; } [self setProjectDictObject:publicHeaders forKey:PCPublicHeaders notify:YES]; [publicHeaders release]; } //--- Localization - (NSArray *)localizedResources { return [projectDict objectForKey:PCLocalizedResources]; } - (NSString *)resourceDirForLanguage:(NSString *)language { NSString *dir = nil; dir = [projectPath stringByAppendingPathComponent:language]; dir = [dir stringByAppendingPathExtension:@"lproj"]; return dir; } - (void)setResourceFile:(NSString *)file localizable:(BOOL)yn { PCFileManager *fileManager = [projectManager fileManager]; NSArray *userLanguages = nil; NSEnumerator *enumerator = nil; NSString *currentLanguage = nil; NSString *resPath = nil; NSString *resFilePath = nil; NSString *langPath = nil; NSMutableArray *localizedResources = nil; if (yn == YES && [[self localizedResources] containsObject:file]) { return; } resPath = [projectPath stringByAppendingPathComponent:@"Resources"]; resFilePath = [resPath stringByAppendingPathComponent:file]; localizedResources = [[self localizedResources] mutableCopy]; userLanguages = [projectDict objectForKey:PCUserLanguages]; enumerator = [userLanguages objectEnumerator]; while ((currentLanguage = [enumerator nextObject])) { langPath = [self resourceDirForLanguage:currentLanguage]; if (yn == YES) { [fileManager copyFile:resFilePath intoDirectory:langPath]; } else { if ([currentLanguage isEqualToString:@"English"]) { [fileManager copyFile:file fromDirectory:langPath intoDirectory:resPath]; } [fileManager removeFile:file fromDirectory:langPath removeDirsIfEmpty:YES]; } } if (yn == YES) { [fileManager removeFileAtPath:resFilePath removeDirsIfEmpty:YES]; [localizedResources addObject:file]; [self setProjectDictObject:localizedResources forKey:PCLocalizedResources notify:YES]; } else if ([localizedResources count] > 0 && [localizedResources containsObject:file]) { [localizedResources removeObject:file]; [self setProjectDictObject:localizedResources forKey:PCLocalizedResources notify:YES]; } [localizedResources release]; } //--- // May files will be added to category? - (BOOL)isEditableCategory:(NSString *)category { NSString *key = [self keyForCategory:category]; if ([key isEqualToString:PCSupportingFiles]) { return NO; } return YES; } // May file will be edited in PC editor? - (BOOL)isEditableFile:(NSString *)filePath { NSString *key = [self keyForCategory:[projectBrowser nameOfSelectedCategory]]; NSString *fileName = [filePath lastPathComponent]; NSString *extension = [filePath pathExtension]; if ([key isEqualToString:PCSupportingFiles]) { if ([fileName isEqualToString:@"GNUmakefile"] || [extension isEqualToString:@"plist"]) { return NO; } } return YES; } - (NSArray *)fileTypesForCategoryKey:(NSString *)key { if ([key isEqualToString:PCClasses]) { return [NSArray arrayWithObjects:@"m",@"mm",nil]; } else if ([key isEqualToString:PCHeaders]) { return [NSArray arrayWithObjects:@"h",nil]; } else if ([key isEqualToString:PCOtherSources]) { return [NSArray arrayWithObjects:@"c",@"C",@"m",nil]; } else if ([key isEqualToString:PCInterfaces]) { return [NSArray arrayWithObjects:@"gmodel",@"gorm", @"gsmarkup", @"nib", nil]; } else if ([key isEqualToString:PCImages]) { return [NSImage imageFileTypes]; } else if ([key isEqualToString:PCSubprojects]) { return [NSArray arrayWithObjects:@"subproj",nil]; } else if ([key isEqualToString:PCLibraries]) { return [NSArray arrayWithObjects:@"so",@"a",@"lib",@"dylib",nil]; } return nil; } - (NSString *)categoryKeyForFileType:(NSString *)type { NSEnumerator *keysEnum = [rootKeys objectEnumerator]; NSString *key = nil; while ((key = [keysEnum nextObject])) { if ([[self fileTypesForCategoryKey:key] containsObject:type]) { return key; } } return nil; } - (NSString *)dirForCategoryKey:(NSString *)key { if ([[self resourceFileKeys] containsObject:key]) { return [projectPath stringByAppendingPathComponent:@"Resources"]; } return projectPath; } - (NSString *)localizedDirForCategoryKey:(NSString *)key { NSString *language = nil; if ([[self resourceFileKeys] containsObject:key]) { language = [projectDict objectForKey:PCLanguage]; language = [language stringByAppendingPathExtension:@"lproj"]; return [projectPath stringByAppendingPathComponent:language]; } return projectPath; } - (NSString *)complementaryTypeForType:(NSString *)type { if ([type isEqualToString:@"m"] || [type isEqualToString:@"c"]) { return @"h"; } else if ([type isEqualToString:@"h"]) { return @"m"; } return nil; } // ============================================================================ // ==== File Handling // ============================================================================ - (NSString *)pathForFile:(NSString *)file forKey:(NSString *)key { NSString *resPath = nil; if ([[self resourceFileKeys] containsObject:key]) { if ([[projectDict objectForKey:PCLocalizedResources] containsObject:file]) { resPath = [self localizedDirForCategoryKey:key]; return [resPath stringByAppendingPathComponent:file]; } else { resPath = [self dirForCategoryKey:key]; return [resPath stringByAppendingPathComponent:file]; } } return [projectPath stringByAppendingPathComponent:file]; } - (NSString *)projectFileFromFile:(NSString *)file forKey:(NSString *)type { NSString *projectFile = nil; NSString *_path = nil; NSMutableArray *_pathComponents = nil; NSString *_file = nil; NSArray *subprojects = [projectDict objectForKey:PCSubprojects]; NSRange pathRange; NSString *spDir = nil; _path = [file stringByDeletingLastPathComponent]; _pathComponents = [[_path pathComponents] mutableCopy]; _file = [file lastPathComponent]; // Remove "lib" prefix from library name if ([type isEqualToString:PCLibraries]) { _file = [_file stringByDeletingPathExtension]; _file = [_file substringFromIndex:3]; } pathRange = [_path rangeOfString:projectPath]; // File is located in project's directory tree if (pathRange.length && ![type isEqualToString:PCLibraries]) { unsigned i; for (i = 0; i < [subprojects count]; i++) { spDir = [[subprojects objectAtIndex:i] stringByAppendingPathExtension:@"subproj"]; if ([_pathComponents containsObject:spDir]) { break; } spDir = nil; } } if (spDir != nil) { while (![[_pathComponents objectAtIndex:0] isEqualToString:spDir]) { [_pathComponents removeObjectAtIndex:0]; } } else { [_pathComponents removeAllObjects]; } // Construct project file name if ([_pathComponents count]) { projectFile = [NSString pathWithComponents:_pathComponents]; projectFile = [projectFile stringByAppendingPathComponent:_file]; } else { projectFile = [NSString stringWithString:_file]; } RELEASE(_pathComponents); return projectFile; } - (BOOL)doesAcceptFile:(NSString *)file forKey:(NSString *)type { NSString *pFile = [self projectFileFromFile:file forKey:type]; NSArray *sourceKeys = [self sourceFileKeys]; NSArray *resourceKeys = [self resourceFileKeys]; NSEnumerator *keyEnum = nil; NSString *key = nil; NSArray *projectFiles = nil; if ([sourceKeys containsObject:type]) { keyEnum = [sourceKeys objectEnumerator]; } else if ([resourceKeys containsObject:type]) { keyEnum = [resourceKeys objectEnumerator]; } else { return YES; } while ((key = [keyEnum nextObject])) { projectFiles = [projectDict objectForKey:key]; if ([projectFiles containsObject:pFile]) { return NO; } } return YES; } - (BOOL)addAndCopyFiles:(NSArray *)files forKey:(NSString *)key { NSEnumerator *fileEnum = [files objectEnumerator]; NSString *file = nil; NSMutableArray *fileList = [[files mutableCopy] autorelease]; NSString *complementaryType = nil; NSString *complementaryKey = nil; NSString *complementaryDir = nil; NSMutableArray *complementaryFiles = [NSMutableArray array]; PCFileManager *fileManager = [projectManager fileManager]; NSString *directory = [self dirForCategoryKey:key]; complementaryType = [self complementaryTypeForType:[[files objectAtIndex:0] pathExtension]]; if (complementaryType) { complementaryKey = [self categoryKeyForFileType:complementaryType]; complementaryDir = [self dirForCategoryKey:complementaryKey]; } // PCLogInfo(self, @"{%@} {addAndCopyFiles} %@", projectName, fileList); // Validate files while ((file = [fileEnum nextObject])) { if (![self doesAcceptFile:file forKey:key]) { [fileList removeObject:file]; } else if (complementaryType != nil) { NSString *compFile = nil; compFile = [[file stringByDeletingPathExtension] stringByAppendingPathExtension:complementaryType]; if ([[NSFileManager defaultManager] fileExistsAtPath:compFile] && [self doesAcceptFile:compFile forKey:complementaryKey]) { [complementaryFiles addObject:compFile]; } } } // PCLogInfo(self, @"{addAndCopyFiles} %@", fileList); // Copy files if (![key isEqualToString:PCLibraries]) // Don't copy libraries { if (![fileManager copyFiles:fileList intoDirectory:directory]) { NSRunAlertPanel(@"Add File(s)", @"Error adding files %@ to project %@!", @"OK", nil, nil, fileList, projectName); return NO; } // PCLogInfo(self, @"Complementary files: %@", complementaryFiles); // Complementaries if (![fileManager copyFiles:complementaryFiles intoDirectory:complementaryDir]) { NSRunAlertPanel(@"Add File(s)", @"Error adding files %@ to project %@!", @"OK", nil, nil, complementaryFiles, projectName); return NO; } } if ([complementaryFiles count] > 0) { [self addFiles:complementaryFiles forKey:complementaryKey notify:NO]; } // Add files to project [self addFiles:fileList forKey:key notify:YES]; return YES; } - (void)addFiles:(NSArray *)files forKey:(NSString *)type notify:(BOOL)yn { NSEnumerator *enumerator = nil; NSString *file = nil; NSString *pFile = nil; NSArray *types = [projectDict objectForKey:type]; NSMutableArray *projectFiles = [NSMutableArray arrayWithArray:types]; if ([type isEqualToString:PCLibraries]) { NSMutableArray *searchLibs = [NSMutableArray arrayWithCapacity:1]; NSString *path = nil; path = [[files objectAtIndex:0] stringByDeletingLastPathComponent]; [searchLibs setArray:[projectDict objectForKey:PCSearchLibs]]; [searchLibs addObject:path]; [self setProjectDictObject:searchLibs forKey:PCSearchLibs notify:yn]; } enumerator = [files objectEnumerator]; while ((file = [enumerator nextObject])) { pFile = [self projectFileFromFile:file forKey:type]; [projectFiles addObject:pFile]; } [self setProjectDictObject:projectFiles forKey:type notify:yn]; } - (BOOL)removeFiles:(NSArray *)files forKey:(NSString *)key notify:(BOOL)yn { NSEnumerator *enumerator = nil; NSString *filePath = nil; NSString *file = nil; NSMutableArray *projectFiles = [[NSMutableArray alloc] initWithCapacity:1]; NSArray *localizedFiles = nil; // Check if file localizable. If yes, make it not localizable so file moved // to Resources dir. localizedFiles = [[self localizedResources] copy]; enumerator = [files objectEnumerator]; while ((file = [enumerator nextObject])) { if ([localizedFiles containsObject:file]) { [self setResourceFile:file localizable:NO]; } } [localizedFiles release]; // Remove files from project // projectFiles = [NSMutableArray arrayWithArray:[projectDict objectForKey:key]]; [projectFiles setArray:[projectDict objectForKey:key]]; NSLog(@"--- projectFiles: %@ forKey: %@", projectFiles, key); enumerator = [files objectEnumerator]; while ((file = [enumerator nextObject])) { if ([key isEqualToString:PCSubprojects]) { NSLog(@"Removing subproject %@", file); [self removeSubprojectWithName:file]; } NSLog(@"Project %@ remove file %@", projectName, file); [projectFiles removeObject:file]; // Close editor filePath = [projectPath stringByAppendingPathComponent:file]; [projectEditor closeEditorForFile:filePath]; } NSLog(@"projectFiles: %@", projectFiles); [self setProjectDictObject:projectFiles forKey:key notify:yn]; [projectFiles release]; return YES; } - (BOOL)renameFile:(NSString *)fromFile toFile:(NSString *)toFile { NSFileManager *fm = [NSFileManager defaultManager]; NSString *selectedCategory = nil; NSString *selectedCategoryKey = nil; NSString *fromPath = nil; NSString *toPath = nil; NSMutableDictionary *_pDict = nil; NSString *_file = nil; NSMutableArray *_array = nil; BOOL saveToFile = NO; int index = 0; id _editor; NSString *_editorPath = nil; NSMutableString *_editorCategory = nil; selectedCategory = [projectBrowser nameOfSelectedCategory]; selectedCategoryKey = [self keyForCategory:selectedCategory]; fromPath = [[self dirForCategoryKey:selectedCategoryKey] stringByAppendingPathComponent:fromFile]; toPath = [[self dirForCategoryKey:selectedCategoryKey] stringByAppendingPathComponent:toFile]; if ([fm fileExistsAtPath:toPath]) { switch (NSRunAlertPanel(@"Rename file", @"File \"%@\" already exist", @"Overwrite file",@"Stop",nil, toFile)) { case NSAlertDefaultReturn: // Overwrite if ([fm removeFileAtPath:toPath handler:nil] == NO) { return NO; } break; case NSAlertAlternateReturn: // Stop rename return NO; break; } } /* PCLogInfo(self, @"{%@} move %@ to %@ category: %@", projectName, fromPath, toPath, selectedCategory);*/ if ([[self localizedResources] containsObject:fromFile]) {// Rename file in language dirs NSArray *userLanguages; NSEnumerator *enumerator; NSString *lang; NSString *langPath; NSMutableArray *localizedResources; localizedResources = [NSMutableArray arrayWithArray:[self localizedResources]]; userLanguages = [projectDict objectForKey:PCUserLanguages]; enumerator = [userLanguages objectEnumerator]; while ((lang = [enumerator nextObject])) { langPath = [self resourceDirForLanguage:lang]; fromPath = [langPath stringByAppendingPathComponent:fromFile]; toPath = [langPath stringByAppendingPathComponent:toFile]; if ([fm movePath:fromPath toPath:toPath handler:nil] == NO) { return NO; } } index = [localizedResources indexOfObject:fromFile]; [localizedResources replaceObjectAtIndex:index withObject:toFile]; [projectDict setObject:localizedResources forKey:PCLocalizedResources]; } else if ([fm movePath:fromPath toPath:toPath handler:nil] == NO) { return NO; } // TODO: Rewrite this when file operations history will be implemented if ([self isProjectChanged]) { // Project already has changes saveToFile = YES; } // Make changes to projectDict _array = [projectDict objectForKey:selectedCategoryKey]; index = [_array indexOfObject:fromFile]; [_array replaceObjectAtIndex:index withObject:toFile]; // Put only this change to project file, leaving // other changes in memory(projectDict) if (saveToFile) { _file = [projectPath stringByAppendingPathComponent:@"PC.project"]; _pDict = [NSMutableDictionary dictionaryWithContentsOfFile:_file]; _array = [_pDict objectForKey:selectedCategoryKey]; [_array removeObject:fromFile]; [_array addObject:toFile]; [_pDict setObject:_array forKey:selectedCategoryKey]; [_pDict writeToFile:_file atomically:YES]; } else { [self save]; } // Handle editor(if any) information _editor = [projectEditor activeEditor]; if (_editor) { NSRange range; _editorPath = [_editor path]; _editorPath = [_editorPath stringByDeletingLastPathComponent]; _editorPath = [_editorPath stringByAppendingPathComponent:toFile]; [_editor setPath:_editorPath]; _editorCategory = [[_editor categoryPath] mutableCopy]; range = [_editorCategory rangeOfString:fromFile]; [_editorCategory replaceCharactersInRange:range withString:toFile]; [_editor setCategoryPath:_editorCategory]; [projectBrowser setPath:_editorCategory]; RELEASE(_editorCategory); } else { // Set browser path to new file name [projectBrowser reloadLastColumnAndSelectFile:toFile]; } return YES; } // ============================================================================ // ==== Subprojects // ============================================================================ - (NSArray *)loadedSubprojects { return loadedSubprojects; } - (PCProject *)activeSubproject { return activeSubproject; } - (BOOL)isSubproject { return isSubproject; } - (void)setIsSubproject:(BOOL)yn { isSubproject = yn; } - (PCProject *)superProject { return superProject; } - (void)setSuperProject:(PCProject *)project { if (superProject != nil) { return; } ASSIGN(superProject, project); // Assigning releases left part ASSIGN(projectBrowser,[project projectBrowser]); ASSIGN(projectLoadedFiles,[project projectLoadedFiles]); ASSIGN(projectEditor,[project projectEditor]); ASSIGN(projectWindow,[project projectWindow]); } - (PCProject *)subprojectWithName:(NSString *)name { int count = [loadedSubprojects count]; int i; PCProject *sp = nil; NSString *spName = nil; NSString *spPath = nil; // Subproject in project but not loaded if ([[projectDict objectForKey:PCSubprojects] containsObject:name]) { /* PCLogInfo(self, @"{%@}Searching for loaded subproject: %@", projectName, name);*/ // Search for subproject with name among loaded subprojects for (i = 0; i < count; i++) { sp = [loadedSubprojects objectAtIndex:i]; spName = [sp projectName]; if ([spName isEqualToString:name]) { break; } sp = nil; } // Subproject not found in array, load it if (sp == nil) { spPath = [projectPath stringByAppendingPathComponent:name]; spPath = [spPath stringByAppendingPathExtension:@"subproj"]; sp = [projectManager openProjectAt:spPath makeActive:NO]; if (sp) { [sp setIsSubproject:YES]; [sp setSuperProject:self]; [sp setProjectManager:projectManager]; [loadedSubprojects addObject:sp]; } } } return sp; } - (void)addSubproject:(PCProject *)aSubproject { NSMutableArray *_subprojects; if (!aSubproject) { return; } _subprojects = [NSMutableArray arrayWithArray:[projectDict objectForKey:PCSubprojects]]; [_subprojects addObject:[aSubproject projectName]]; [loadedSubprojects addObject:aSubproject]; [self setProjectDictObject:_subprojects forKey:PCSubprojects notify:YES]; } - (void)addSubprojectWithName:(NSString *)name { NSMutableArray *_subprojects = nil; if (!name) { return; } _subprojects = [NSMutableArray arrayWithArray:[projectDict objectForKey:PCSubprojects]]; [_subprojects addObject:name]; [self setProjectDictObject:_subprojects forKey:PCSubprojects notify:YES]; } - (BOOL)removeSubprojectWithName:(NSString *)subprojectName { NSString *extension = [subprojectName pathExtension]; NSString *sName = subprojectName; if (extension && [extension isEqualToString:@"subproj"]) { sName = [subprojectName stringByDeletingPathExtension]; } return [self removeSubproject:[self subprojectWithName:sName]]; } - (BOOL)removeSubproject:(PCProject *)aSubproject { if ([loadedSubprojects containsObject:aSubproject]) { [aSubproject close:self]; [loadedSubprojects removeObject:aSubproject]; } return YES; } @end @implementation PCProject (ProjectBrowser) // e.g. CLASS_FILES - (NSArray *)rootKeys { if (activeSubproject) { return [activeSubproject rootKeys]; } return rootKeys; } // e.g. Classes - (NSArray *)rootCategories { if (activeSubproject) { return [activeSubproject rootCategories]; } return rootCategories; } - (NSDictionary *)rootEntries { if (activeSubproject) { return [activeSubproject rootEntries]; } return rootEntries; } // Category - the name we see in project browser, e.g. "Classes" // Key - the uppercase names located in PC.roject, e.g. "CLASS_FILES" - (NSString *)keyForCategory:(NSString *)category { int index = -1; if (activeSubproject) { return [activeSubproject keyForCategory:category]; } if (![rootCategories containsObject:category]) { return nil; } index = [rootCategories indexOfObject:category]; return [rootKeys objectAtIndex:index]; } - (NSString *)categoryForKey:(NSString *)key { if (activeSubproject) { return [activeSubproject categoryForKey:key]; } return [rootEntries objectForKey:key]; } - (NSString *)rootCategoryForCategoryPath:(NSString *)categoryPath { NSArray *pathComponents = nil; if ([categoryPath isEqualToString:@"/"] || [categoryPath isEqualToString:@""]) { return nil; } pathComponents = [categoryPath componentsSeparatedByString:@"/"]; return [pathComponents objectAtIndex:1]; } - (NSString *)keyForRootCategoryInCategoryPath:(NSString *)categoryPath { NSString *category = nil; NSString *key = nil; int index = -1; if (categoryPath == nil || [categoryPath isEqualToString:@""] || [categoryPath isEqualToString:@"/"]) { return nil; } category = [self rootCategoryForCategoryPath:categoryPath]; // Since keyForCategory subproject sensitive implement // key searching here // TODO: revise all code in PCProject against subproject // sensitiveness // key = [self keyForCategory:category]; if (![rootCategories containsObject:category]) { return nil; } index = [rootCategories indexOfObject:category]; key = [rootKeys objectAtIndex:index]; /* PCLogInfo(self, @"{%@}(keyForRootCategoryInCategoryPath): %@ key:%@", projectName, categoryPath, key);*/ return key; } // --- Requested by Project Browser - (NSArray *)contentAtCategoryPath:(NSString *)categoryPath { NSString *key = [self keyForRootCategoryInCategoryPath:categoryPath]; NSArray *pathArray = nil; NSString *listEntry = nil; pathArray = [categoryPath componentsSeparatedByString:@"/"]; listEntry = [pathArray lastObject]; /* PCLogInfo(self, @"{%@}{contentAtCategoryPath:} %@", projectName, categoryPath);*/ if ([categoryPath isEqualToString:@""] || [categoryPath isEqualToString:@"/"]) { if ([projectManager activeProject] != self) { [projectManager setActiveProject:self]; } return rootCategories; } else if ([pathArray count] == 2) { // Click on /Category. [pathArray count] == 2 even in subprojects // because category path stripped from leading path components before // going into subproject's code // NSLog(@"Click on Category"); if ([projectManager activeProject] != self) { [projectManager setActiveProject:self]; } activeSubproject = nil; return [projectDict objectForKey:key]; } else if ([key isEqualToString:PCSubprojects] && [pathArray count] > 2) { // Click on "/Subprojects/Name+" PCProject *_subproject = nil; NSString *spCategoryPath = nil; NSMutableArray *mCategoryPath = [NSMutableArray arrayWithArray:pathArray]; _subproject = [self subprojectWithName:[pathArray objectAtIndex:2]]; activeSubproject = _subproject; [mCategoryPath removeObjectAtIndex:1]; [mCategoryPath removeObjectAtIndex:1]; spCategoryPath = [mCategoryPath componentsJoinedByString:@"/"]; return [_subproject contentAtCategoryPath:spCategoryPath]; } else { // The file is selected, ask editor for browser items return [[projectEditor activeEditor] browserItemsForItem:listEntry]; } } - (BOOL)hasChildrenAtCategoryPath:(NSString *)categoryPath { NSString *listEntry = nil; PCProject *activeProject = [projectManager activeProject]; NSString *category = [projectBrowser nameOfSelectedCategory]; NSString *categoryKey = [self keyForCategory:category]; if (self != activeProject) { return [activeProject hasChildrenAtCategoryPath:categoryPath]; } listEntry = [[categoryPath componentsSeparatedByString:@"/"] lastObject]; // Categories if ([rootCategories containsObject:listEntry]) { return YES; } // Subprojects if ([[projectDict objectForKey:PCSubprojects] containsObject:listEntry] && [category isEqualToString:@"Subprojects"]) { return YES; } // Files. listEntry is file in category or contents of file if ([[projectDict objectForKey:categoryKey] containsObject:listEntry] || [projectBrowser nameOfSelectedFile]) { // TODO: Libraries if ([category isEqualToString:@"Libraries"]) { return NO; } if ([projectEditor editorProvidesBrowserItemsForItem:listEntry] == YES) { return YES; } } return NO; } @end apps-projectcenter-master/Framework/PCProjectBrowser.m000066400000000000000000000516171347226342500235110ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" NSString *PCBrowserDidSetPathNotification = @"PCBrowserDidSetPathNotification"; @implementation PCProjectBrowser // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)initWithProject:(PCProject *)aProject { if ((self = [super init])) { project = aProject; browser = [[NSBrowser alloc] initWithFrame:NSMakeRect(-10,-10,256,128)]; [browser setRefusesFirstResponder:YES]; // [browser setAutoresizingMask: NSViewWidthSizable | NSViewMinYMargin]; [browser setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [browser setTitled:NO]; [browser setMaxVisibleColumns:4]; [browser setSeparatesColumns:NO]; [browser setAllowsMultipleSelection:YES]; [browser setDelegate:self]; [browser setTarget:self]; [browser setAction:@selector(click:)]; [browser setDoubleAction:@selector(doubleClick:)]; [browser setRefusesFirstResponder:YES]; [browser loadColumnZero]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(projectDictDidChange:) name:PCProjectDictDidChangeNotification object:nil]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCProjectBrowser: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(browser); [super dealloc]; } // ============================================================================ // ==== Accessory methods // ============================================================================ - (NSView *)view { return browser; } // Returns nil if multiple files or category selected - (NSString *)nameOfSelectedFile { NSString *name = [[browser path] lastPathComponent]; NSString *category = [self nameOfSelectedCategory]; NSMutableArray *pathArray; NSEnumerator *enumerator; NSString *pathItem; // NSLog(@"---> Selected: %@: category: %@", name, category); if ([[browser selectedCells] count] != 1 || !category || [name isEqualToString:category]) { return nil; } pathArray = [[[browser path] pathComponents] mutableCopy]; enumerator = [pathArray objectEnumerator]; while ((pathItem = [enumerator nextObject])) { if ([pathItem isEqualToString:category]) { name = [enumerator nextObject]; break; } } RELEASE(pathArray); return name; } // Returns nil if multiple files selected - (NSString *)pathToSelectedFile { NSString *name = [self nameOfSelectedFile]; NSString *path = [browser path]; if (!name) { path = nil; } return path; } // Returns 'nil' if selected: // - root project (browser path is @"/") // - multiple categories // - name of subproject // Should not call any of the nameOf... or pathTo... methods to prevent // cyclic recursion. - (NSString *)nameOfSelectedCategory { NSArray *pathArray = [[browser path] componentsSeparatedByString:@"/"]; NSString *lastPathElement = [[browser path] lastPathComponent]; PCProject *activeProject = [[project projectManager] activeProject]; NSArray *rootCategories = [activeProject rootCategories]; NSString *name = nil; int i; // Name of subproject selected: Change active project to superproject // to check category against superproject's catgory list. // But: path '/Subproject/Foo' and '/Subprojects/Foo/Subprojects' will // return the same category 'Subprojects' and active project will be 'Foo' // in both cases // ![[self nameOfSelectedFile] isEqualToString:lastPathElement]) /* if ([lastPathElement isEqualToString:[activeProject projectName]]) { activeProject = [activeProject superProject]; rootCategories = [activeProject rootCategories]; }*/ // Multiple categories selected if (([rootCategories containsObject:lastPathElement] && [[browser selectedCells] count] > 1)) { return nil; } for (i = [pathArray count] - 1; i >= 0; i--) { if ([rootCategories containsObject:[pathArray objectAtIndex:i]]) { name = [pathArray objectAtIndex:i]; break; } } // Subproject's name selected if ([name isEqualToString:@"Subprojects"] && [lastPathElement isEqualToString:[activeProject projectName]]) { return nil; } return name; } // Returns nil of multiple categories selected - (NSString *)pathToSelectedCategory { NSString *path = nil; NSString *selectedCategory = [self nameOfSelectedCategory]; NSMutableArray *bPathArray = nil; int i; if (selectedCategory) { bPathArray = [NSMutableArray arrayWithArray:[[browser path] componentsSeparatedByString:@"/"]]; i = [bPathArray count] - 1; while (![[bPathArray objectAtIndex:i] isEqualToString:selectedCategory]) { [bPathArray removeObjectAtIndex:i]; i = [bPathArray count] - 1; } path = [bPathArray componentsJoinedByString:@"/"]; } return path; } // Returns nil of multiple categories selected - (NSString *)pathFromSelectedCategory { NSString *selectedCategory = [self nameOfSelectedCategory]; NSMutableArray *bPathArray; NSString *path = nil; if (selectedCategory) { bPathArray = [[[browser path] componentsSeparatedByString:@"/"] mutableCopy]; while (![[bPathArray objectAtIndex:1] isEqualToString:selectedCategory]) { [bPathArray removeObjectAtIndex:1]; } path = [bPathArray componentsJoinedByString:@"/"]; RELEASE(bPathArray); } return path; } - (NSString *)nameOfSelectedRootCategory { NSString *categoryPath = [self pathToSelectedCategory]; NSArray *pathComponents; if ([categoryPath isEqualToString:@"/"] || [categoryPath isEqualToString:@""]) { return nil; } pathComponents = [categoryPath componentsSeparatedByString:@"/"]; return [pathComponents objectAtIndex:1]; } - (NSArray *)selectedFiles { NSArray *cells = [browser selectedCells]; NSMutableArray *files = [[NSMutableArray alloc] initWithCapacity: 1]; int i; int count = [cells count]; PCProject *activeProject = [[project projectManager] activeProject]; // Return nil if categories selected if ([cells count] == 0 || [[activeProject rootCategories] containsObject:[[cells objectAtIndex:0] stringValue]]) { return nil; } for (i = 0; i < count; i++) { [files addObject: [[cells objectAtIndex: i] stringValue]]; } return AUTORELEASE((NSArray *)files); } - (NSString *)path { return [browser path]; } - (BOOL)setPath:(NSString *)path { BOOL res; if ([[browser path] isEqualToString: path]) { return YES; } // PCLogInfo(self, @"[setPath]: %@", path); res = [browser setPath:path]; [[NSNotificationCenter defaultCenter] postNotificationName:PCBrowserDidSetPathNotification object:self]; return res; } - (void)reloadLastColumnAndNotify:(BOOL)yn { NSInteger column = [browser lastColumn]; NSString *category = [self nameOfSelectedCategory]; NSInteger selectedColumn = [browser selectedColumn]; NSMatrix *colMatrix = [browser matrixInColumn:selectedColumn]; NSInteger rowCount = 0, colCount = 0, spCount = 0; PCProject *activeProject = [[project projectManager] activeProject]; NSString *selCellTitle = [[browser selectedCell] stringValue]; if ([category isEqualToString:@"Subprojects"] && ![selCellTitle isEqualToString:@"Subprojects"]) { // /Subprojects/Name selected if ([selCellTitle isEqualToString:[activeProject projectName]]) { activeProject = [activeProject superProject]; } [colMatrix getNumberOfRows:&rowCount columns:&colCount]; spCount = [[[activeProject projectDict] objectForKey:PCSubprojects] count]; } if ([category isEqualToString:@"Subprojects"] && rowCount != spCount && ![[[browser selectedCell] stringValue] isEqualToString:@"Subprojects"]) { column = selectedColumn; } [browser reloadColumn:column]; if (yn) { [[NSNotificationCenter defaultCenter] postNotificationName:PCBrowserDidSetPathNotification object:self]; } } - (void)reloadLastColumnAndSelectFile:(NSString *)file { PCProject *p = [[project projectManager] activeProject]; NSString *catKey = [p keyForCategory:[self nameOfSelectedCategory]]; NSArray *array = [[p projectDict] objectForKey:catKey]; NSString *path = [self path]; NSString *tmp; // Determine last column with files (removing classes and methods from path) tmp = [[path lastPathComponent] substringWithRange:NSMakeRange(0,1)]; while ([tmp isEqualToString:@"@"] // classes || [tmp isEqualToString:@"+"] // factory methods || [tmp isEqualToString:@"-"]) // instance methods { path = [path stringByDeletingLastPathComponent]; tmp = [[path lastPathComponent] substringWithRange:NSMakeRange(0,1)]; } NSLog(@"PCBrowser set path: %@", path); [self setPath:[path stringByDeletingLastPathComponent]]; [self reloadLastColumnAndNotify:NO]; [browser selectRow:[array indexOfObject:file] inColumn:[browser lastColumn]]; // Notify [[NSNotificationCenter defaultCenter] postNotificationName:PCBrowserDidSetPathNotification object:self]; } // ============================================================================ // ==== Actions // ============================================================================ - (void)click:(id)sender { NSString *category; PCProject *activeProject; NSString *browserPath; NSString *filePath; NSString *fileName; if (sender != browser) { return; } category = [self nameOfSelectedCategory]; activeProject = [[project projectManager] activeProject]; browserPath = [self path]; filePath = [self pathToSelectedFile]; fileName = [self nameOfSelectedFile]; NSLog(@"[click] category: %@ forProject: %@ fileName: %@", category, [activeProject projectName], fileName); // ![fileName isEqualToString:[activeProject projectName]] && if (filePath && [filePath isEqualToString:browserPath] && category && ![category isEqualToString:@"Libraries"] ) { NSLog(@"[click] category: %@ filePath: %@", category, filePath); [[activeProject projectEditor] openEditorForCategoryPath:browserPath windowed:NO]; } [[NSNotificationCenter defaultCenter] postNotificationName:PCBrowserDidSetPathNotification object:self]; } - (void)doubleClick:(id)sender { NSString *category = [self nameOfSelectedCategory]; id selectedCell; NSString *fileName; PCProject *activeProject; NSString *key; NSString *filePath; id prefs = [[project projectManager] prefController]; NSWorkspace *workspace; NSString *appName, *type; if ((sender != browser) || [category isEqualToString:@"Libraries"]) { return; } selectedCell = [sender selectedCell]; fileName = [[sender selectedCell] stringValue]; activeProject = [[project projectManager] activeProject]; key = [activeProject keyForCategory:category]; filePath = [activeProject pathForFile:fileName forKey:key]; if ([self nameOfSelectedFile] != nil) { BOOL foundApp = NO; // PCLogInfo(self, @"{doubleClick} filePath: %@", filePath);*/ workspace = [NSWorkspace sharedWorkspace]; foundApp = [workspace getInfoForFile:filePath application:&appName type:&type]; // NSLog (@"Open file: %@ with app: %@", filePath, appName); // If 'Editor' role was set in .GNUstepExtPrefs application // name will be returned according that setting. Otherwise // 'ProjectCenter.app' will be returned accoring to NSTypes // from Info-gnustep.plist file of PC. if(foundApp == NO || [appName isEqualToString:@"ProjectCenter.app"]) { appName = [prefs stringForKey:Editor]; if (![appName isEqualToString:@"ProjectCenter"]) { [workspace openFile:filePath withApplication:appName]; } else { [[activeProject projectEditor] openEditorForCategoryPath:[self path] windowed:YES]; } } else { [workspace openFile:filePath]; } } else { if ([[selectedCell title] isEqualToString:@"Subprojects"]) { [[project projectManager] addSubproject]; } else { [[project projectManager] addProjectFiles]; } } } // ============================================================================ // ==== Notifications // ============================================================================ - (void)projectDictDidChange:(NSNotification *)aNotif { NSDictionary *notifObject = [aNotif object]; PCProject *changedProject = [notifObject objectForKey:@"Project"]; NSString *changedAttribute = [notifObject objectForKey:@"Attribute"]; if (!browser) { return; } if (changedProject != project && changedProject != [project activeSubproject] && [changedProject superProject] != [project activeSubproject]) { return; } // NSLog(@"PCPB: projectDictDidChange in %@ (%@)", // [changedProject projectName], [project projectName]); // If project dictionary changed after files adding/removal, // refresh file list if ([[changedProject rootKeys] containsObject:changedAttribute]) { [self reloadLastColumnAndNotify:YES]; } } @end @implementation PCProjectBrowser (ProjectBrowserDelegate) - (void) browser:(NSBrowser *)sender createRowsForColumn:(NSInteger)column inMatrix:(NSMatrix *)matrix { NSString *pathToCol; NSArray *files; NSUInteger i = 0; NSUInteger count = 0; if (sender != browser || !matrix || ![matrix isKindOfClass:[NSMatrix class]]) { return; } pathToCol = [sender pathToColumn:column]; files = [project contentAtCategoryPath:pathToCol]; if (files) { count = [files count]; } for (i = 0; i < count; ++i) { NSMutableString *categoryPath = nil; id cell; categoryPath = [NSMutableString stringWithString:pathToCol]; [matrix insertRow:i]; cell = [matrix cellAtRow:i column:0]; [cell setStringValue:[files objectAtIndex:i]]; if (![categoryPath isEqualToString:@"/"]) { [categoryPath appendString:@"/"]; } [categoryPath appendString:[files objectAtIndex:i]]; [cell setLeaf:![project hasChildrenAtCategoryPath:categoryPath]]; [cell setRefusesFirstResponder:YES]; } } @end @implementation PCProjectBrowser (FileNameIconDelegate) // If file was opened in editor: // 1. Determine editor // 2. Ask editor for icon - (NSImage *)_editorIconImageForFile:(NSString *)fileName { PCProjectEditor *projectEditor = [project projectEditor]; id editor = nil; NSString *categoryName = [self nameOfSelectedCategory]; NSString *categoryKey = [project keyForCategory:categoryName]; NSString *filePath; filePath = [project pathForFile:fileName forKey:categoryKey]; editor = [projectEditor editorForFile:filePath]; if (editor != nil) { return [editor fileIcon]; } return nil; } - (NSImage *)fileNameIconImage { NSString *categoryName = nil; NSString *fileName = nil; NSString *fileExtension = nil; NSString *iconName = nil; NSImage *icon = nil; PCProject *activeProject = [[project projectManager] activeProject]; fileName = [self nameOfSelectedFile]; if (fileName) { if ((icon = [self _editorIconImageForFile:fileName])) { return icon; } fileExtension = [fileName pathExtension]; } else { categoryName = [self nameOfSelectedCategory]; } /* PCLogError(self,@"{setFileIcon} file %@ category %@", fileName, categoryName);*/ if ([[self selectedFiles] count] > 1) { iconName = [[NSString alloc] initWithString:@"MultiFiles"]; } // Nothing or subproject name selected else if ((!categoryName && !fileName) || [fileName isEqualToString:[activeProject projectName]]) { iconName = [[NSString alloc] initWithString:@"FileProject"]; } else if ([categoryName isEqualToString: @"Classes"]) { iconName = [[NSString alloc] initWithString:@"classSuitcase"]; } else if ([categoryName isEqualToString: @"Headers"]) { iconName = [[NSString alloc] initWithString:@"headerSuitcase"]; } else if ([categoryName isEqualToString: @"Other Sources"]) { iconName = [[NSString alloc] initWithString:@"genericSuitcase"]; } else if ([categoryName isEqualToString: @"Interfaces"]) { iconName = [[NSString alloc] initWithString:@"nibSuitcase"]; } else if ([categoryName isEqualToString: @"Images"]) { iconName = [[NSString alloc] initWithString:@"iconSuitcase"]; } else if ([categoryName isEqualToString: @"Other Resources"]) { iconName = [[NSString alloc] initWithString:@"otherSuitcase"]; } else if ([categoryName isEqualToString: @"Subprojects"]) { iconName = [[NSString alloc] initWithString:@"subprojectSuitcase"]; } else if ([categoryName isEqualToString: @"Documentation"]) { iconName = [[NSString alloc] initWithString:@"helpSuitcase"]; } else if ([categoryName isEqualToString: @"Supporting Files"]) { iconName = [[NSString alloc] initWithString:@"genericSuitcase"]; } else if ([categoryName isEqualToString: @"Libraries"]) { iconName = [[NSString alloc] initWithString:@"librarySuitcase"]; } else if ([categoryName isEqualToString: @"Non Project Files"]) { iconName = [[NSString alloc] initWithString:@"projectSuitcase"]; } if (iconName != nil) { icon = IMAGE(iconName); RELEASE(iconName); } else { icon = [[NSWorkspace sharedWorkspace] iconForFile:fileName]; } return icon; } - (NSString *)fileNameIconTitle { NSString *categoryName = [self nameOfSelectedCategory]; NSString *fileName = [self nameOfSelectedFile]; int filesCount = [[self selectedFiles] count]; if (filesCount > 1) { return [NSString stringWithFormat:@"%i files", filesCount]; } else if (fileName) { return fileName; } else if (categoryName) { return categoryName; } return PCFileNameFieldNoFiles; } - (NSString *)fileNameIconPath { NSString *fileName = [self nameOfSelectedFile]; NSString *category = [self nameOfSelectedCategory]; return [project pathForFile:fileName forKey:[project keyForCategory:category]]; } - (BOOL)canPerformDraggingOf:(NSArray *)paths { NSString *category = [self nameOfSelectedCategory]; NSString *categoryKey = [project keyForCategory:category]; NSArray *fileTypes = [project fileTypesForCategoryKey:categoryKey]; NSEnumerator *e = [paths objectEnumerator]; NSString *s; NSLog(@"PCBrowser: canPerformDraggingOf -> %@", category); if (!category || ([self nameOfSelectedFile] != nil)) { return NO; } if (![project isEditableCategory:category]) { return NO; } // Check if we can accept files of such types while ((s = [e nextObject])) { if (![fileTypes containsObject:[s pathExtension]]) { return NO; } } return YES; } - (BOOL)prepareForDraggingOf:(NSArray *)paths { return YES; } - (BOOL)performDraggingOf:(NSArray *)paths { NSString *category = [self nameOfSelectedCategory]; NSString *categoryKey = [project keyForCategory:category]; NSEnumerator *pathsEnum = [paths objectEnumerator]; NSString *file = nil; while ((file = [[pathsEnum nextObject] lastPathComponent])) { if (![project doesAcceptFile:file forKey:categoryKey]) { return NO; } } return [project addAndCopyFiles:paths forKey:categoryKey]; } @end apps-projectcenter-master/Framework/PCProjectBuilder.m000066400000000000000000001072341347226342500234510ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "../Modules/Preferences/Build/PCBuildPrefs.h" #ifndef IMAGE #define IMAGE(X) [NSImage imageNamed: X] #endif #ifndef NOTIFICATION_CENTER #define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter] #endif @implementation PCProjectBuilder - (id)initWithProject:(PCProject *)aProject { #ifdef DEBUG NSLog (@"PCProjectBuilder: initWithProject"); #endif NSAssert(aProject, @"No project specified!"); if ((self = [super init])) { project = aProject; buildStatusTarget = [[NSMutableString alloc] initWithString:@"all"]; buildTarget = [[NSMutableString alloc] initWithString:@"all"]; buildArgs = [[NSMutableArray array] retain]; buildOptions = [[PCProjectBuilderOptions alloc] initWithProject:project delegate:self]; postProcess = NULL; makeTask = nil; _isBuilding = NO; _isCleaning = NO; _isCVLoaded = NO; if ([NSBundle loadNibNamed:@"Builder" owner:self] == NO) { PCLogError(self, @"error loading Builder NIB file!"); return nil; } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadPreferences:) name:PCPreferencesDidChangeNotification object:nil]; [self loadPreferences:nil]; } return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCProjectBuilder: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; if ([componentView superview]) { [componentView removeFromSuperview]; } RELEASE(buildStatusTarget); RELEASE(buildTarget); RELEASE(buildArgs); RELEASE(buildOptions); RELEASE(successSound); RELEASE(failureSound); RELEASE(rootBuildDir); RELEASE(buildTool); // NSLog(@"Project Builder--> componentView RC: %i", // [componentView retainCount]); RELEASE(componentView); RELEASE(errorArray); RELEASE(errorString); // NSLog(@"Project Builder--> RC: %i", [self retainCount]); [super dealloc]; } - (void)awakeFromNib { NSScrollView *errorScroll; NSScrollView *logScroll; if (_isCVLoaded) { return; } // NSLog(@"ProjectBuilder awakeFromNib"); [componentView retain]; [componentView removeFromSuperview]; // NSLog(@"ProjectBuilder awakeFromNib: componentView RC:%i", // [componentView retainCount]); /* * 4 build Buttons */ [buildButton setToolTip:@"Build"]; [buildButton setImage:IMAGE(@"Build")]; [cleanButton setToolTip:@"Clean"]; [cleanButton setImage:IMAGE(@"Clean")]; [optionsButton setToolTip:@"Build Options"]; [optionsButton setImage:IMAGE(@"Options")]; [errorsCountField setStringValue:@""]; [self updateTargetField]; /* * Error output */ errorArray = [[NSMutableArray alloc] initWithCapacity:0]; errorString = [[NSMutableString alloc] initWithString:@""]; errorImageColumn = [[NSTableColumn alloc] initWithIdentifier:@"ErrorImage"]; [errorImageColumn setEditable:NO]; [errorImageColumn setWidth:20.0]; errorColumn = [[NSTableColumn alloc] initWithIdentifier:@"Error"]; [errorColumn setEditable:NO]; errorOutput = [[NSTableView alloc] initWithFrame:NSMakeRect(0,0,209,111)]; [errorOutput setAllowsMultipleSelection:NO]; [errorOutput setAllowsColumnReordering:NO]; [errorOutput setAllowsColumnResizing:NO]; [errorOutput setAllowsEmptySelection:YES]; [errorOutput setAllowsColumnSelection:NO]; [errorOutput setRowHeight:19.0]; [errorOutput setCornerView:nil]; [errorOutput setHeaderView:nil]; [errorOutput addTableColumn:errorImageColumn]; [errorOutput addTableColumn:errorColumn]; [errorOutput setDataSource:self]; [errorOutput setBackgroundColor:[NSColor colorWithDeviceRed:0.88 green:0.76 blue:0.60 alpha:1.0]]; [errorOutput setDrawsGrid:NO]; [errorOutput setTarget:self]; [errorOutput setAction:@selector(errorItemClick:)]; errorScroll = [[NSScrollView alloc] initWithFrame:NSMakeRect(0,0,464,120)]; [errorScroll setHasHorizontalScroller:NO]; [errorScroll setHasVerticalScroller:YES]; [errorScroll setBorderType:NSBezelBorder]; [errorScroll setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; [errorScroll setDocumentView:errorOutput]; RELEASE(errorOutput); /* * Log output */ logScroll = [[NSScrollView alloc] initWithFrame:NSMakeRect(0,0,480,133)]; [logScroll setHasHorizontalScroller:NO]; [logScroll setHasVerticalScroller:YES]; [logScroll setBorderType:NSBezelBorder]; [logScroll setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; logOutput = [[NSTextView alloc] initWithFrame:[[logScroll contentView] frame]]; [logOutput setRichText:NO]; [logOutput setEditable:NO]; [logOutput setSelectable:YES]; [logOutput setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [logOutput setBackgroundColor:[NSColor lightGrayColor]]; [[logOutput textContainer] setWidthTracksTextView:YES]; [[logOutput textContainer] setHeightTracksTextView:YES]; [logOutput setHorizontallyResizable:NO]; [logOutput setVerticallyResizable:YES]; [logOutput setMinSize:NSMakeSize(0, 0)]; [logOutput setMaxSize:NSMakeSize(1E7, 1E7)]; [[logOutput textContainer] setContainerSize: NSMakeSize ([logOutput frame].size.width, 1e7)]; [[logOutput textContainer] setWidthTracksTextView:YES]; [logScroll setDocumentView:logOutput]; RELEASE(logOutput); /* * Split view */ [split addSubview:errorScroll]; RELEASE(errorScroll); [split addSubview:logScroll]; RELEASE(logScroll); // [split adjustSubviews]; // [componentView addSubview:split]; // RELEASE (split); _isCVLoaded = YES; } - (NSView *)componentView { return componentView; } - (void)loadPreferences:(NSNotification *)aNotification { id prefs = [[project projectManager] prefController]; ASSIGN(successSound, [prefs stringForKey:SuccessSound]); ASSIGN(failureSound, [prefs stringForKey:FailureSound]); ASSIGN(rootBuildDir, [prefs stringForKey:RootBuildDirectory]); ASSIGN(buildTool, [prefs stringForKey:BuildTool]); promptOnClean = [prefs boolForKey:PromptOnClean]; } - (void)updateTargetField { NSString *s; NSString *args; args = [[[project projectDict] objectForKey:PCBuilderArguments] componentsJoinedByString:@" "]; if (!args) args = @" "; s = [NSString stringWithFormat:@"%@ with args '%@'", buildTarget, args]; [targetField setStringValue:s]; } // --- Accessory - (BOOL)isBuilding { return _isBuilding; } - (BOOL)isCleaning { return _isCleaning; } - (void)performStartBuild { if (!_isBuilding && !_isCleaning) { [buildButton performClick:self]; } } - (void)performStartClean { if (!_isCleaning && !_isBuilding) { [cleanButton performClick:self]; } } - (void)performStopBuild { if (_isBuilding) { [buildButton performClick:self]; } else if (_isCleaning) { [cleanButton performClick:self]; } } - (NSArray *)buildArguments { NSDictionary *projectDict = [project projectDict]; NSMutableArray *args = [NSMutableArray new]; [args addObjectsFromArray:[projectDict objectForKey:PCBuilderArguments]]; // --- Get arguments from options if ([[projectDict objectForKey:PCBuilderDebug] isEqualToString:@"YES"]) { // there is no clear default; the default configuration of GNUstep-make // uses debug=no (since release 2.2.1, it had debug=yes before), but // that default can easily be changed at configuration time with the // --enable-debug-by-default configure option. [args addObject:@"debug=yes"]; } else { // default is 'debug=yes' [args addObject:@"debug=no"]; } if ([[projectDict objectForKey:PCBuilderStrip] isEqualToString:@"YES"]) { // default is 'strip=no' [args addObject:@"strip=yes"]; } if ([[projectDict objectForKey:PCBuilderSharedLibs] isEqualToString:@"NO"]) { // default is 'shared=yes' [args addObject:@"shared=no"]; } // Always add 'messages=yes' argument. Build output parsing assumes this. [args addObject:@"messages=yes"]; // "Verbose ouput" option (Build Options panel) just toogle if build shows // as with argument 'messages=yes' or not. if ([[projectDict objectForKey:PCBuilderVerbose] isEqualToString:@"YES"]) { verboseBuilding = YES; } else { verboseBuilding = NO; } return args; } // --- GUI Actions - (void)startBuild:(id)sender { if ([self stopMake:self] == YES) {// We've just stopped build process return; } // Set build arguments [buildArgs addObject:buildTarget]; [buildArgs addObjectsFromArray:[self buildArguments]]; // NSLog(@"ProjectBuilder arguments: %@", buildArgs); currentEL = ELNone; lastEL = ELNone; nextEL = ELNone; lastIndentString = @""; buildStatus = @"Building..."; [buildStatusTarget setString:@"Build"]; [cleanButton setEnabled:NO]; _isBuilding = YES; [self build:self]; } - (void)startClean:(id)sender { if ([self stopMake:self] == YES) {// We've just stopped build process return; } if (promptOnClean) { if (NSRunAlertPanel(@"Project Clean", @"Do you really want to clean project '%@'?", @"Clean", @"Stop", nil, [project projectName]) == NSAlertAlternateReturn) { [cleanButton setState:NSOffState]; return; } } // Set build arguments [buildArgs addObject:@"clean"]; [buildArgs addObjectsFromArray:[self buildArguments]]; buildStatus = @"Cleaning..."; [buildStatusTarget setString:@"Clean"]; [buildButton setEnabled:NO]; _isCleaning = YES; [self build:self]; } - (BOOL)stopMake:(id)sender { if (makeTask && [makeTask isRunning]) { PCLogStatus(self, @"task will terminate"); NS_DURING { [makeTask terminate]; } NS_HANDLER { return NO; } NS_ENDHANDLER return YES; } return NO; } - (void)showOptionsPanel:(id)sender { [buildOptions show:[[componentView window] frame]]; } - (void)cleanupAfterMake:(NSString *)statusString { // NSString *statusString; if (_isBuilding || _isCleaning) { // statusString =[NSString stringWithFormat: // @"%@ - %@ terminated", [project projectName], buildStatusTarget]; [statusField setStringValue:statusString]; [[project projectWindow] updateStatusLineWithText:statusString]; } // Restore buttons state if (_isBuilding) { [buildButton setState:NSOffState]; [cleanButton setEnabled:YES]; _isBuilding = NO; } else if (_isCleaning) { [cleanButton setState:NSOffState]; [buildButton setEnabled:YES]; _isCleaning = NO; } [buildArgs removeAllObjects]; [buildStatusTarget setString:@"Default"]; // Initiated in [self build:] [currentBuildPath release]; [currentBuildFile release]; } // --- Actions - (BOOL)prebuildCheck { PCFileManager *pcfm = [PCFileManager defaultManager]; NSFileManager *fm = [NSFileManager defaultManager]; NSString *buildDir; PCProjectEditor *projectEditor; int ret; // Checking for project 'edited' state if ([project isProjectChanged]) { ret = NSRunAlertPanel(@"Project Build", @"Project was changed and not saved.\n" @"Do you want to save project before building it?", @"Stop Build", @"Save and Build", nil); switch (ret) { case NSAlertDefaultReturn: // Stop Build return NO; break; case NSAlertAlternateReturn: // Save Project [project save]; break; } } else { // Synchronize PC.project and generate files [project save]; } // Checking if edited files exist projectEditor = [project projectEditor]; if ([projectEditor hasModifiedFiles]) { if (!PCRunSaveModifiedFilesPanel(projectEditor, @"Save and Build", @"Build Anyway", @"Cancel")) { return NO; } } // Check build tool path if (!buildTool || !([fm fileExistsAtPath:buildTool] || [fm fileExistsAtPath:[buildTool stringByAppendingPathExtension: @"exe"]])) { NSRunAlertPanel(@"Project Build", @"Build tool '%@' not found. Check preferences.\n" @"Build will be terminated.", @"Close", nil, nil, buildTool); return NO; } // Create root build directory if not exist if (rootBuildDir && ![rootBuildDir isEqualToString:@""]) { buildDir = [NSString stringWithFormat:@"%@.build", [project projectName]]; buildDir = [rootBuildDir stringByAppendingPathComponent:buildDir]; if (![fm fileExistsAtPath:rootBuildDir] || ![fm fileExistsAtPath:buildDir]) { [pcfm createDirectoriesIfNeededAtPath:buildDir]; } } return YES; } - (void)build:(id)sender { // Make runtime vars // Released in [self cleanupAfterMake] currentBuildPath = [[NSMutableString alloc] initWithString:[project projectPath]]; currentBuildFile = [[NSMutableString alloc] initWithString:@""]; // Checking build conditions if ([self prebuildCheck] == NO) { [self cleanupAfterMake:[NSString stringWithFormat: @"%@ - %@ terminated", [project projectName], buildStatusTarget]]; return; } // Prepearing to building stdOutPipe = [[NSPipe alloc] init]; stdOutHandle = [stdOutPipe fileHandleForReading]; stdErrorPipe = [[NSPipe alloc] init]; stdErrorHandle = [stdErrorPipe fileHandleForReading]; [errorsCountField setStringValue:@""]; errorsCount = 0; warningsCount = 0; [statusField setStringValue:buildStatus]; [[project projectWindow] updateStatusLineWithText:buildStatus]; // Run make task [logOutput setString:@""]; [errorArray removeAllObjects]; [errorOutput reloadData]; [NOTIFICATION_CENTER addObserver:self selector:@selector(buildDidTerminate:) name:NSTaskDidTerminateNotification object:nil]; makeTask = [[NSTask alloc] init]; [makeTask setArguments:buildArgs]; [makeTask setCurrentDirectoryPath:[project projectPath]]; [makeTask setLaunchPath:buildTool]; [makeTask setStandardOutput:stdOutPipe]; [makeTask setStandardError:stdErrorPipe]; [self logBuildString: [NSString stringWithFormat:@"=== %@ started ===", buildStatusTarget] newLine:YES]; NS_DURING { [makeTask launch]; // now that we know that the task is running start logging [stdOutHandle waitForDataInBackgroundAndNotify]; [NOTIFICATION_CENTER addObserver:self selector:@selector(logStdOut:) name:NSFileHandleDataAvailableNotification object:stdOutHandle]; _isLogging = YES; [stdErrorHandle waitForDataInBackgroundAndNotify]; [NOTIFICATION_CENTER addObserver:self selector:@selector(logErrOut:) name:NSFileHandleDataAvailableNotification object:stdErrorHandle]; _isErrorLogging = YES; } NS_HANDLER { NSRunAlertPanel(@"Problem Launching Build Tool", [localException reason], @"OK", nil, nil, nil); //Clean up after task is terminated [NOTIFICATION_CENTER postNotificationName:NSTaskDidTerminateNotification object:makeTask]; } NS_ENDHANDLER } - (void)buildDidTerminate:(NSNotification *)aNotif { int status; NSString *logString; NSString *statusString; if ([aNotif object] != makeTask) { return; } // NSLog(@"task did terminate"); [NOTIFICATION_CENTER removeObserver:self name:NSTaskDidTerminateNotification object:nil]; // If task was not launched catch exception NS_DURING { status = [makeTask terminationStatus]; } NS_HANDLER { status = 1; } NS_ENDHANDLER // Finish task // TODO: Strange behaviour of pipe and file handlers alloc/release. Also // they have big retain count here (2 or 3). Why? Notification retains it? RELEASE(makeTask); makeTask = nil; // Wait while logging ends while (_isLogging || _isErrorLogging) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } RELEASE(stdOutPipe); RELEASE(stdErrorPipe); [self updateErrorsCountField]; if (status == 0) { logString = [NSString stringWithFormat:@"=== %@ succeeded! ===", buildStatusTarget]; statusString = [NSString stringWithFormat:@"%@ - %@ succeeded", [project projectName], buildStatusTarget]; } else { logString = [NSString stringWithFormat:@"=== %@ terminated! ===", buildStatusTarget]; if (errorsCount > 0) { statusString = [NSString stringWithFormat: @"%@ - %@ failed (%i errors)", [project projectName], buildStatusTarget, errorsCount]; } else { statusString = [NSString stringWithFormat:@"%@ - %@ failed", [project projectName], buildStatusTarget]; } } [statusField setStringValue:statusString]; [[project projectWindow] updateStatusLineWithText:statusString]; [self logBuildString:logString newLine:YES]; // Run post process if configured /* if (status && postProcess) { [self performSelector:postProcess]; postProcess = NULL; }*/ [self cleanupAfterMake:statusString]; } // --- BuilderOptions delegate - (void)targetDidSet:(NSString *)target { [buildTarget setString:target]; [self updateTargetField]; } @end @implementation PCProjectBuilder (Logging) - (void)updateErrorsCountField { NSString *string; NSString *errorsString = @""; NSString *warningsString = @""; if (errorsCount > 0) { if (errorsCount > 1) { errorsString = [NSString stringWithFormat:@"%i errors", errorsCount]; } else { errorsString = @"1 error"; } } if (warningsCount > 0) { if (warningsCount > 1) { warningsString = [NSString stringWithFormat:@"%i warnings", warningsCount]; } else { warningsString = @"1 warning"; } } string = [NSString stringWithFormat:@"%@ %@", errorsString, warningsString]; [errorsCountField setStringValue:string]; } // --- Data notifications // Both methods make call to dipatcher logData:error: - (void)logStdOut:(NSNotification *)aNotif { NSData *data; if ((data = [stdOutHandle availableData]) && [data length] > 0) { [self logData:data error:NO]; [stdOutHandle waitForDataInBackgroundAndNotify]; } else { // stop logging after the task has closed the pipe [NOTIFICATION_CENTER removeObserver:self name:NSFileHandleDataAvailableNotification object:stdOutHandle]; _isLogging = NO; } } - (void)logErrOut:(NSNotification *)aNotif { NSData *data; if ((data = [stdErrorHandle availableData]) && [data length] > 0) { [self logData:data error:YES]; [stdErrorHandle waitForDataInBackgroundAndNotify]; } else { // stop logging after the task has closed the pipe [NOTIFICATION_CENTER removeObserver:self name:NSFileHandleDataAvailableNotification object:stdErrorHandle]; _isErrorLogging = NO; } } // --- Dispatching - (void)logData:(NSData *)data error:(BOOL)isError { NSString *dataString; NSRange newLineRange; NSRange lineRange; NSString *lineString; dataString = [[NSString alloc] initWithData:data encoding:[NSString defaultCStringEncoding]]; // Process new data lineRange.location = 0; newLineRange.location = 0; // 'errorString' collects data across logData:error: calls until // new line character is appeared. [errorString appendString:dataString]; while (newLineRange.location != NSNotFound) { newLineRange = [errorString rangeOfString:@"\n"]; /* NSLog(@"Line(%i) new line range: %i,%i for string\n<--|%@|-->", [errorString length], newLineRange.location, newLineRange.length, errorString);*/ if (newLineRange.location < [errorString length]) { // NSLog(@"<------%@------>", errorString); lineRange.length = newLineRange.location+1; lineString = [errorString substringWithRange:lineRange]; [errorString deleteCharactersInRange:lineRange]; // Send it to error view // Do not process make errors in other mode but building. Maybe // some day... if (_isBuilding && isError) { [self logErrorString:lineString]; } // Cleaning or building standard out string if (!isError || verboseBuilding) { [self logBuildString:lineString newLine:NO]; } } else { newLineRange.location = NSNotFound; continue; } } RELEASE(dataString); } @end @implementation PCProjectBuilder (BuildLogging) // --- Parsing utilities - (BOOL)line:(NSString *)lineString startsWithString:(NSString *)substring { NSInteger position = 0; NSRange range = NSMakeRange(position,1); while ([[lineString substringWithRange:range] isEqualToString:@" "]) { range.location = ++position; } /* NSLog(@"Line '%@' position: %i substring '%@'", lineString, position, substring);*/ range = [lineString rangeOfString:substring]; if ((range.location == NSNotFound) || (range.location != position)) { return NO; } return YES; } // Clean leading spaces and return cleaned array of components - (NSArray *)componentsOfLine:(NSString *)lineString { NSArray *lineComponents; NSMutableArray *tempComponents; lineComponents = [lineString componentsSeparatedByString:@" "]; tempComponents = [NSMutableArray arrayWithArray:lineComponents]; while ([[tempComponents objectAtIndex:0] isEqualToString:@""]) { [tempComponents removeObjectAtIndex:0]; } return tempComponents; } // Line starts with 'gmake' or 'make'. // Changes 'currentBuildPath' if line starts with // "Entering directory" or "Leaving directory". // For example: // gmake[1]: Entering directory '/Users/me/Project/Subproject.subproj' - (void)parseMakeLine:(NSString *)lineString { NSMutableArray *makeLineComponents; NSString *makeLine; NSString *pathComponent; NSString *path; // NSLog(@"parseMakeLine: %@", lineString); makeLineComponents = [NSMutableArray arrayWithArray:[lineString componentsSeparatedByString:@" "]]; // Don't check for item at index 0 contents (it's 'gmake[1]:' or 'make[1]:') // just remove it. [makeLineComponents removeObjectAtIndex:0]; makeLine = [makeLineComponents componentsJoinedByString:@" "]; if ([self line:makeLine startsWithString:@"Entering directory"]) { pathComponent = [makeLineComponents objectAtIndex:2]; path = [pathComponent substringWithRange:NSMakeRange(1,[pathComponent length]-3)]; // NSLog(@"Go down to %@", path); [currentBuildPath setString:path]; } else if ([self line:makeLine startsWithString:@"Leaving directory"]) { // NSLog(@"Go up from %@", [makeLineComponents objectAtIndex:2]); [currentBuildPath setString:[currentBuildPath stringByDeletingLastPathComponent]]; } // NSLog(@"Current build path: %@", currentBuildPath); } // Should return: // 'Compiling ...' // 'Linking ...' // Also updates currentBuildFile - (NSString *)parseCompilerLine:(NSString *)lineString { NSArray *lineComponents = [self componentsOfLine:lineString]; NSString *outputString = nil; if ([lineComponents containsObject:@"-c"]) { [currentBuildFile setString:[lineComponents objectAtIndex:1]]; outputString = [NSString stringWithFormat:@" Compiling %@...\n", currentBuildFile]; } else if ([lineComponents containsObject:@"-rdynamic"]) { outputString = [NSString stringWithFormat:@" Linking %@...\n", [lineComponents objectAtIndex:[lineComponents indexOfObject:@"-o"]+1]]; } return outputString; } // --- Parsing utilities end // Log output - (void)logBuildString:(NSString *)string newLine:(BOOL)newLine { NSString *logString = [self parseBuildLine:string]; if (!logString) { return; } [logOutput replaceCharactersInRange: NSMakeRange([[logOutput string] length],0) withString:logString]; if (newLine) { [logOutput replaceCharactersInRange: NSMakeRange([[logOutput string] length], 0) withString:@"\n"]; } [logOutput scrollRangeToVisible:NSMakeRange([[logOutput string] length], 0)]; [logOutput setNeedsDisplay:YES]; } // Standard out is parsed for detection of directory, file, etc. // Gets complete line (ended with '\n') as argument - (NSString *)parseBuildLine:(NSString *)string { NSArray *components = [self componentsOfLine:string]; NSString *parsedString = nil; if (!components) { return nil; } if ([self line:string startsWithString:@"gmake"] || [self line:string startsWithString:@"make"]) {// Do current path detection [self parseMakeLine:string]; } else if ([self line:string startsWithString:@"gcc"] || [self line:string startsWithString:@"egcc"] || [self line:string startsWithString:@"clang"]) {// Parse compiler output parsedString = [self parseCompilerLine:string]; } else if ([self line:string startsWithString:@"Making"] || [self line:string startsWithString:@"==="]) {// It's a gnustep-make and self output parsedString = string; } if (parsedString && ![self line:parsedString startsWithString:@"==="]) { [statusField setStringValue:parsedString]; [[project projectWindow] updateStatusLineWithText:parsedString]; } if (verboseBuilding) { return string; } else { return parsedString; } } @end @implementation PCProjectBuilder (ErrorLogging) // Entry point for error logging - (void)logErrorString:(NSString *)string { NSArray *items; items = [self parseErrorLine:string]; if (items) { [errorArray addObjectsFromArray:items]; [errorOutput reloadData]; [errorOutput scrollRowToVisible:[errorArray count]-1]; } } // Used for warning or error message retrieval - (NSString *)lineTail:(NSString*)line afterString:(NSString*)string { NSRange substrRange; substrRange = [line rangeOfString:string]; /* NSLog(@"In function ':%i:%i", substrRange.location, substrRange.length);*/ substrRange.location += substrRange.length; substrRange.length = [line length] - (substrRange.location); /* NSLog(@"In function ':%i:%i", substrRange.location, substrRange.length);*/ return [line substringWithRange:substrRange]; } - (NSArray *)parseErrorLine:(NSString *)string { NSArray *components = [string componentsSeparatedByString:@":"]; NSString *file = @""; NSString *includedFile = @""; NSString *position = @"{x=0; y=0}"; NSString *type = @""; NSString *message = @""; NSMutableArray *items = [NSMutableArray arrayWithCapacity:1]; NSMutableDictionary *errorItem; NSString *indentString = @"\t"; NSString *lastFile = @""; NSString *lastIncludedFile = @""; NSAttributedString *attributedString; NSMutableDictionary *attributes = [NSMutableDictionary new]; NSFont *font = [NSFont boldSystemFontOfSize:12.0]; [attributes setObject:font forKey:NSFontAttributeName]; [attributes setObject:[NSNumber numberWithInt:NSSingleUnderlineStyle] forKey:NSUnderlineStyleAttributeName]; lastEL = currentEL; // NSLog(@"error string: %@", string); /* if (lastEL == ELFile) NSLog(@"+++ELFile"); if (lastEL == ELFunction) NSLog(@"+++ELFunction"); if (lastEL == ELIncluded) NSLog(@"+++ELIncluded"); if (lastEL == ELError) NSLog(@"+++ELError"); if (lastEL == ELNone) NSLog(@"+++ELNone");*/ //NSLog(@"components: %lu, %@", (unsigned long)[components count], components); if ([errorArray count] > 0) { lastFile = [[errorArray lastObject] objectForKey:@"File"]; lastIncludedFile = [[errorArray lastObject] objectForKey:@"IncludedFile"]; } if ([string rangeOfString:@"In file included from "].location != NSNotFound) { currentEL = ELIncluded; return nil; } else if ([string rangeOfString:@"In function '"].location != NSNotFound) { currentEL = ELFunction; return nil; } else if ([string rangeOfString:@" At top level:"].location != NSNotFound) { currentEL = ELFile; return nil; } else if ([components count] > 3) { NSUInteger typeIndex; NSString *substr; // file and includedFile file = [currentBuildPath stringByAppendingPathComponent:currentBuildFile]; if (lastEL == ELIncluded || [[components objectAtIndex:0] isEqualToString:lastIncludedFile]) {// first message after "In file included from" // NSLog(@"Inlcuded File: %@", file); includedFile = [components objectAtIndex:0]; file = [currentBuildPath stringByAppendingPathComponent:includedFile]; currentEL = ELIncludedError; } else { currentEL = ELError; } // type typeIndex = NSNotFound; if ((typeIndex = [components indexOfObject:@" warning"]) != NSNotFound) { type = [components objectAtIndex:typeIndex]; warningsCount++; } else if ((typeIndex = [components indexOfObject:@" note"]) != NSNotFound) // generated by clang { type = [components objectAtIndex:typeIndex]; } else if ((typeIndex = [components indexOfObject:@" error"]) != NSNotFound) { type = [components objectAtIndex:typeIndex]; errorsCount++; } else if ((typeIndex = [components indexOfObject:@" fatal error"]) != NSNotFound) { type = [components objectAtIndex:typeIndex]; errorsCount++; } // NSLog(@"typeIndex: %u", (unsigned int)typeIndex); // position if (typeIndex == 2) // :line: { int lInt = atoi([[components objectAtIndex:1] cString]); NSNumber *lNumber = [NSNumber numberWithInt:lInt]; // NSLog(@"type 2, parsed l: %i", lInt); position = [NSString stringWithFormat:@"{x=%i; y=0}", [lNumber intValue]]; } else if (typeIndex == 3) // :line:column: { int lInt = atoi([[components objectAtIndex:1] cString]); int cInt = atoi([[components objectAtIndex:2] cString]); NSNumber *lNumber = [NSNumber numberWithInt:lInt]; NSNumber *cNumber = [NSNumber numberWithInt:cInt]; // NSLog(@"type 3, parsed l,c: %i, %i", lInt, cInt); position = [NSString stringWithFormat:@"{x=%i; y=%i}", [lNumber intValue], [cNumber intValue]]; } // message substr = [NSString stringWithFormat:@"%@:", type]; message = [self lineTail:string afterString:substr]; } else { return nil; } // Insert indentation if (currentEL == ELError) { if (lastEL == ELFunction) { indentString = @"\t\t"; } else if (lastEL == ELError) { indentString = [NSString stringWithString:lastIndentString]; } } else if (currentEL == ELIncluded) { indentString = @""; } /* else if (currentEL == ELIncludedError) { indentString = @"\t\t"; }*/ message = [NSString stringWithFormat:@"%@%@", indentString, message]; lastIndentString = [indentString copy]; // Create array items if ((lastEL == ELNone || ![file isEqualToString:lastFile]) && [includedFile isEqualToString:@""]) { // NSLog(@"lastEL == ELNone (%@)", includedFile); // NSLog(@"File: %@ != %@", file, lastFile); errorItem = [NSMutableDictionary dictionaryWithCapacity:1]; [errorItem setObject:@"" forKey:@"ErrorImage"]; [errorItem setObject:[file copy] forKey:@"File"]; [errorItem setObject:[includedFile copy] forKey:@"IncludedFile"]; [errorItem setObject:@"" forKey:@"Position"]; [errorItem setObject:@"" forKey:@"Type"]; attributedString = [[NSAttributedString alloc] initWithString:[file lastPathComponent] attributes:attributes]; [errorItem setObject:[attributedString copy] forKey:@"Error"]; [attributedString release]; [items addObject:errorItem]; } if ((lastEL == ELIncluded || currentEL == ELIncludedError) && ![includedFile isEqualToString:lastIncludedFile]) { NSString *incMessage = [NSString stringWithFormat:@"%@", includedFile]; // NSLog(@"Included: %@ != %@", includedFile, lastIncludedFile); errorItem = [NSMutableDictionary dictionaryWithCapacity:1]; [errorItem setObject:@"" forKey:@"ErrorImage"]; [errorItem setObject:[file copy] forKey:@"File"]; [errorItem setObject:[includedFile copy] forKey:@"IncludedFile"]; [errorItem setObject:@"" forKey:@"Position"]; [errorItem setObject:@"" forKey:@"Type"]; attributedString = [[NSAttributedString alloc] initWithString:incMessage attributes:attributes]; [errorItem setObject:[attributedString copy] forKey:@"Error"]; [attributedString release]; [items addObject:errorItem]; } errorItem = [NSMutableDictionary dictionaryWithCapacity:1]; [errorItem setObject:@"" forKey:@"ErrorImage"]; [errorItem setObject:[file copy] forKey:@"File"]; [errorItem setObject:[includedFile copy] forKey:@"IncludedFile"]; [errorItem setObject:[position copy] forKey:@"Position"]; [errorItem setObject:[type copy] forKey:@"Type"]; [errorItem setObject:[message copy] forKey:@"Error"]; // NSLog(@"Parsed message:%@ (%@)", message, includedFile); [items addObject:errorItem]; return items; } // --- Error output table delegate methods - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView { if (errorArray != nil && aTableView == errorOutput) { return [errorArray count]; } return 0; } - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { NSDictionary *errorItem; if (errorArray != nil && aTableView == errorOutput) { errorItem = [errorArray objectAtIndex:rowIndex]; return [errorItem objectForKey:[aTableColumn identifier]]; } return nil; } - (void)errorItemClick:(id)sender { NSInteger rowIndex = [errorOutput selectedRow]; NSDictionary *error = [errorArray objectAtIndex:rowIndex]; NSPoint position; PCProjectEditor *projectEditor = [project projectEditor]; id editor; editor = [projectEditor openEditorForFile:[error objectForKey:@"File"] editable:YES windowed:NO]; if (editor) { // TODO / FIXME using a NSPoint here is weak since it is Float vs. integer line numbers position = NSPointFromString([error objectForKey:@"Position"]); [projectEditor orderFrontEditorForFile:[error objectForKey:@"File"]]; [editor scrollToLineNumber:(NSUInteger)position.x]; /* NSLog(@"%i: %@(%@): %@", position.x, [error objectForKey:@"File"], [error objectForKey:@"IncludedFile"], [error objectForKey:@"Error"]);*/ } } @end apps-projectcenter-master/Framework/PCProjectBuilderOptions.m000066400000000000000000000114461347226342500250240ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2007 Free Software Foundation Authors: Philippe C.D. Robert Sergii Stoian This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import @implementation PCProjectBuilderOptions - (void)_setStateForButton:(id)button key:(NSString *)key defaultState:(int)dState { NSString *value = [[project projectDict] objectForKey:key]; int state; if (value == nil) { state = dState; } else { if ([value isEqualToString:@"YES"]) state = NSOnState; else state = NSOffState; } [button setState:state]; } - (id)initWithProject:(PCProject *)aProject delegate:(id)aDelegate { if ((self = [super init])) { project = aProject; delegate = aDelegate; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadProjectProperties:) name:PCProjectDictDidChangeNotification object:nil]; } return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCProjectBuilderOptions: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } - (void)awakeFromNib { [verboseButton setRefusesFirstResponder:YES]; [debugButton setRefusesFirstResponder:YES]; [stripButton setRefusesFirstResponder:YES]; [sharedLibsButton setRefusesFirstResponder:YES]; [self loadProjectProperties:nil]; } - (void)show:(NSRect)builderRect { NSRect opRect; if (!optionsPanel) { if ([NSBundle loadNibNamed:@"BuilderOptions" owner:self] == NO) { PCLogError(self, @"error loading BuilderOptions NIB file!"); return; } } opRect = [optionsPanel frame]; opRect.origin.x = builderRect.origin.x + (builderRect.size.width - opRect.size.width)/2; opRect.origin.y = builderRect.origin.y + (builderRect.size.height - opRect.size.height)/2; [optionsPanel setFrame:opRect display:NO]; [optionsPanel makeKeyAndOrderFront:nil]; [optionsPanel makeFirstResponder:buildArgsField]; } - (NSString *)buildTarget { if (targetPopup) { return [targetPopup titleOfSelectedItem]; } return nil; } - (void)optionsPopupChanged:(id)sender { [delegate targetDidSet:[targetPopup titleOfSelectedItem]]; } - (void)controlTextDidEndEditing:(NSNotification *)aNotif { id object = [aNotif object]; NSMutableArray *args; if (object != buildArgsField) return; args = [[[buildArgsField stringValue] componentsSeparatedByString:@" "] mutableCopy]; [args removeObject:@""]; [args removeObject:@" "]; [project setProjectDictObject:args forKey:PCBuilderArguments notify:NO]; [delegate targetDidSet:[targetPopup titleOfSelectedItem]]; } - (void)optionsButtonClicked:(id)sender { NSString *value = [sender state] == NSOnState ? @"YES" : @"NO"; NSString *key; if (sender == verboseButton) key = PCBuilderVerbose; if (sender == debugButton) key = PCBuilderDebug; if (sender == stripButton) key = PCBuilderStrip; if (sender == sharedLibsButton) key = PCBuilderSharedLibs; [project setProjectDictObject:value forKey:key notify:NO]; } - (void)loadProjectProperties:(NSNotification *)aNotif { NSArray *args; // Setup target popup [targetPopup removeAllItems]; [targetPopup addItemsWithTitles:[project buildTargets]]; [targetPopup selectItemAtIndex:0]; // Setup build arguments field args = [[project projectDict] objectForKey:PCBuilderArguments]; [buildArgsField setStringValue:[args componentsJoinedByString:@" "]]; // Setup option buttons [self _setStateForButton:verboseButton key:PCBuilderVerbose defaultState:NSOffState]; [self _setStateForButton:debugButton key:PCBuilderDebug defaultState:NSOnState]; [self _setStateForButton:stripButton key:PCBuilderStrip defaultState:NSOffState]; [self _setStateForButton:sharedLibsButton key:PCBuilderSharedLibs defaultState:NSOnState]; } @end apps-projectcenter-master/Framework/PCProjectBuilderPanel.m000066400000000000000000000074451347226342500244340ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" @implementation PCProjectBuilderPanel - (void)awakeFromNib { PCProject *activeProject = [projectManager rootActiveProject]; [panel setFrameAutosaveName:@"ProjectBuilder"]; [panel setTitle:[NSString stringWithFormat: @"%@ - Project Build", [activeProject projectName]]]; // Panel's content view [panel setContentView:contentBox]; // Empty content view of contentBox RETAIN(emptyBox); // Track project switching [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(activeProjectDidChange:) name:PCActiveProjectDidChangeNotification object:nil]; if (![panel setFrameUsingName:@"ProjectBuilder"]) { [panel center]; } } - (id)initWithProjectManager:(PCProjectManager *)aManager { projectManager = aManager; if ([NSBundle loadNibNamed:@"BuilderPanel" owner:self] == NO) { PCLogError(self, @"error loading BuilderPanel NIB file!"); return nil; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCBuildPanel: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(emptyBox); [super dealloc]; } - (void)orderFront:(id)sender { PCProject *activeProject = [projectManager rootActiveProject]; NSView *builderView = [[activeProject projectBuilder] componentView]; if (!([contentBox contentView] == builderView)) { [contentBox setContentView:builderView]; } /* NSLog(self, @"orderFront: %@ -> %@", builderView, [builderView superview]);*/ [panel orderFront:self]; } - (void)close { // PCLogInfo(self, @"close: %@", [contentBox contentView]); [contentBox setContentView:emptyBox]; // PCLogInfo(self, @"close: %@", [contentBox contentView]); [panel close]; } - (void)activeProjectDidChange:(NSNotification *)aNotif { PCProject *rootProject; id prefs = [projectManager prefController]; if (![prefs boolForKey:UseTearOffWindows]) { return; } rootProject = [projectManager rootActiveProject]; if (rootProject == currentProject) { return; } currentProject = rootProject; // NSLog(@"Buider Panel: activeProjectDidChange to: %@", // [rootProject projectName]); if (!rootProject) { [contentBox setContentView:emptyBox]; } else { [panel setTitle:[NSString stringWithFormat: @"%@ - Project Build", [rootProject projectName]]]; [contentBox setContentView:[[rootProject projectBuilder] componentView]]; } } - (BOOL)isVisible { return [panel isVisible]; } // --- Panel delgate - (BOOL)windowShouldClose:(id)sender { [contentBox setContentView:emptyBox]; return YES; } @end apps-projectcenter-master/Framework/PCProjectEditor.m000066400000000000000000000243101347226342500233020ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2015 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import @interface PCProjectEditor (CreateUI) - (void) _createComponentView; @end @implementation PCProjectEditor (CreateUI) - (void) _createComponentView { NSRect frame; NSTextView *textView; frame = NSMakeRect(0,0,562,248); _componentView = [[NSBox alloc] initWithFrame:frame]; [_componentView setTitlePosition:NSNoTitle]; [_componentView setBorderType:NSNoBorder]; [_componentView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; [_componentView setContentViewMargins:NSMakeSize(0.0,0.0)]; frame = NSMakeRect (0, 0, 562, 40); _scrollView = [[NSScrollView alloc] initWithFrame:frame]; [_scrollView setHasHorizontalScroller:NO]; [_scrollView setHasVerticalScroller:YES]; [_scrollView setBorderType:NSBezelBorder]; [_scrollView setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)]; // This is a placeholder! frame = [[_scrollView contentView] frame]; textView = [[NSTextView alloc] initWithFrame:frame]; [textView setMinSize:NSMakeSize (0, 0)]; [textView setMaxSize:NSMakeSize(1e7, 1e7)]; [textView setRichText:NO]; [textView setEditable:NO]; [textView setSelectable:YES]; [textView setVerticallyResizable:YES]; [textView setHorizontallyResizable:NO]; [textView setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)]; [[textView textContainer] setWidthTracksTextView:YES]; [_scrollView setDocumentView:textView]; RELEASE(textView); frame.size = NSMakeSize([_scrollView contentSize].width,1e7); [[textView textContainer] setContainerSize:frame.size]; [_componentView setContentView:_scrollView]; // RELEASE(_scrollView); [_componentView sizeToFit]; } @end @implementation PCProjectEditor // =========================================================================== // ==== Initialisation // =========================================================================== - (id)init { if ((self = [super init])) { PCLogStatus(self, @"[init]"); _componentView = nil; } return self; } - (void)dealloc { #ifdef DEVELOPMENT #endif NSLog (@"PCProjectEditor: dealloc"); // [[NSNotificationCenter defaultCenter] removeObserver:self]; if (_componentView) { RELEASE(_scrollView); RELEASE(_componentView); } // RELEASE(_editorsDict); [super dealloc]; } - (NSView *)componentView { if (_componentView == nil) { [self _createComponentView]; } return _componentView; } - (PCProject *)project { return _project; } - (void)setProject:(PCProject *)aProject { _project = aProject; } // =========================================================================== // ==== Project and Editor handling // =========================================================================== // TODO: Should it be editor or parser? - (BOOL)editorProvidesBrowserItemsForItem:(NSString *)item { NSString *file = [[_project projectBrowser] nameOfSelectedFile]; PCBundleManager *bundleManager = [[_project projectManager] bundleManager]; NSDictionary *infoTable = nil; // File selected and editor should already be loaded if (file != nil) { if ([[item substringToIndex:1] isEqualToString:@"@"]) { return YES; } } // Category selected infoTable = [bundleManager infoForBundleType:@"editor" keyName:@"FileTypes" keyContains:[item pathExtension]]; if ([[infoTable objectForKey:@"ProvidesBrowserItems"] isEqualToString:@"YES"]) { return YES; } return NO; } // Called by PCProjectBrowser // categoryPath: // 1. "/Classes/Class.m/- init" // 2. "/Subprojects/Project/Classes/Class.m/- init" // 3. "/Library/gnustep-gui" - (id)openEditorForCategoryPath:(NSString *)categoryPath windowed:(BOOL)windowed { NSArray *pathArray = [categoryPath pathComponents]; NSString *pathLastObject = [pathArray lastObject]; PCProject *activeProject = [[_project projectManager] activeProject]; NSString *category = [[_project projectBrowser] nameOfSelectedCategory]; NSString *categoryKey = [activeProject keyForCategory:category]; NSString *fileName = nil; NSString *filePath = nil; BOOL editable = YES; id editor; fileName = [[[[_project projectBrowser] pathFromSelectedCategory] pathComponents] objectAtIndex:2]; filePath = [activeProject pathForFile:fileName forKey:categoryKey]; /* NSLog(@"PCPE: fileName: %@ filePath: %@ project: %@", fileName, filePath, [activeProject projectName]);*/ // Determine if file should be opened for read only if (![_project isEditableFile:fileName]) { editable = NO; } // NSLog(@"fileName: %@ > %@", fileName, listEntry); // Set the 'editor' var either by requesting already opened // editor or by creating the new one. editor = [self openEditorForFile:filePath editable:editable windowed:windowed]; if (!editor) { NSLog(@"We don't have editor for file: %@", fileName); return nil; } // Category path was changed by user's clicking inside browser. // That's why new category path must be transfered to editor. [editor setCategoryPath:categoryPath]; [self orderFrontEditorForFile:filePath]; pathLastObject = [pathArray lastObject]; /* NSLog(@"pathArray: c: %i %@", [pathArray count], pathArray); NSLog(@"pathArray: lastObject %@", [pathArray lastObject]); NSLog(@"lastObject[1]: %@", [pathLastObject substringWithRange:NSMakeRange(0,1)]);*/ if ([pathLastObject isEqualToString:@"/"]) { pathLastObject = [pathArray objectAtIndex:[pathArray count]-2]; if ([pathLastObject isEqualToString:fileName]) // file selected { // Reload last column because editor has just been loaded [[_project projectBrowser] reloadLastColumnAndNotify:NO]; } else { [editor fileStructureItemSelected:pathLastObject]; } } else // TODO: rethink { [editor fileStructureItemSelected:pathLastObject]; } return editor; } - (void)orderFrontEditorForFile:(NSString *)path { id editor = [_editorsDict objectForKey:path]; if (!editor) { return; } if ([editor isWindowed]) { [editor show]; } else { [_componentView setContentView:[editor componentView]]; [[_project projectWindow] setCustomContentView:_componentView]; [[_project projectWindow] makeFirstResponder:[editor editorView]]; [[_project projectWindow] makeKeyAndOrderFront:self]; NSLog(@"PCPE: categoryPath - %@", [editor categoryPath]); [[_project projectBrowser] setPath:[editor categoryPath]]; } } // =========================================================================== // ==== File handling // =========================================================================== - (BOOL)saveFileAs:(NSString *)file { id editor = [self activeEditor]; NSString *categoryPath = nil; BOOL res; if (editor != nil) { categoryPath = [editor categoryPath]; res = [super saveFileAs:file]; [editor setCategoryPath:categoryPath]; return res; } return NO; } // =========================================================================== // ==== Notifications // =========================================================================== - (void)editorDidOpen:(NSNotification *)aNotif { /* PCEditor *editor = [aNotif object]; PCProjectBrowser *browser = [_project projectBrowser]; NSString *path = [browser path]; // Active editor is set after PCEditorDidBecomeActiveNotification will be // sent, but we should do it here for loading list of classes into browser. [self setActiveEditor:editor]; [browser reloadLastColumnAndNotify:NO]; [browser setPath:path];*/ NSLog(@"PCProjectEditor editorDidOpen!"); } - (void)editorDidClose:(NSNotification *)aNotif { id editor = [aNotif object]; // It is not our editor if (![[_editorsDict allValues] containsObject:editor]) { return; } [_editorsDict removeObjectForKey:[editor path]]; if ([_editorsDict count]) { NSString *lastEditorKey = [[_editorsDict allKeys] lastObject]; id lastEditor = [_editorsDict objectForKey:lastEditorKey]; [_componentView setContentView:[lastEditor componentView]]; [[_project projectWindow] makeFirstResponder:[lastEditor editorView]]; } else { PCProjectBrowser *browser = [_project projectBrowser]; [_componentView setContentView:_scrollView]; [[_project projectWindow] makeFirstResponder:_scrollView]; [browser setPath:[browser pathToSelectedCategory]]; [self setActiveEditor:nil]; } } - (void)editorDidBecomeActive:(NSNotification *)aNotif { id editor = [aNotif object]; NSString *categoryPath = [editor categoryPath]; if (![[_editorsDict allValues] containsObject:editor]) { return; } [self setActiveEditor:editor]; if (categoryPath) { [[_project projectBrowser] setPath:categoryPath]; } } @end apps-projectcenter-master/Framework/PCProjectInspector.m000066400000000000000000000741611347226342500240330ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2010 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola German Arias This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import @implementation PCProjectInspector // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)initWithProjectManager:(PCProjectManager *)manager { projectManager = manager; [self loadPanel]; // Track project switching [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(activeProjectDidChange:) name:PCActiveProjectDidChangeNotification object:nil]; // Track project dictionary changing [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateValues:) name:PCProjectDictDidChangeNotification object:nil]; // Track Browser selection changes [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (browserDidSetPath:) name:PCBrowserDidSetPathNotification object:nil]; [self inspectorPopupDidChange:inspectorPopup]; return self; } - (void)close { [inspectorPanel performClose:self]; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCProjectInspector: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(buildAttributesView); RELEASE(projectAttributesSubview); RELEASE(projectAttributesView); RELEASE(projectDescriptionView); RELEASE(projectLanguagesView); RELEASE(fileAttributesView); RELEASE(inspectorPanel); RELEASE(fileName); [super dealloc]; } // ============================================================================ // ==== Panel & contents // ============================================================================ - (BOOL)loadPanel { if ([NSBundle loadNibNamed:@"ProjectInspector" owner:self] == NO) { PCLogError(self, @"error loading NIB file!"); return NO; } // Panel [inspectorPanel setFrameAutosaveName:@"ProjectInspector"]; [inspectorPanel setFrameUsingName:@"ProjectInspector"]; project = [projectManager activeProject]; projectDict = [project projectDict]; // PopUp [inspectorPopup selectItemAtIndex:0]; // Build Attributes [self createBuildAttributes]; // Project Attributes [self createProjectAttributes]; // Project Description [self createProjectDescription]; // Project Languages [self createProjectLanguages]; // File Attributes [self createFileAttributes]; [self activeProjectDidChange:nil]; return YES; } - (NSPanel *)panel { if (!inspectorPanel && ([self loadPanel] == NO)) { return nil; } return inspectorPanel; } - (NSView *)contentView { if (!contentView && ([self loadPanel] == NO)) { return nil; } return contentView; } // ============================================================================ // ==== Actions // ============================================================================ - (void)inspectorPopupDidChange:(id)sender { switch([sender indexOfSelectedItem]) { case 0: [inspectorView setContentView:buildAttributesView]; break; case 1: [inspectorView setContentView:projectAttributesView]; break; case 2: [inspectorView setContentView:projectDescriptionView]; break; case 3: [inspectorView setContentView:projectLanguagesView]; break; case 4: [inspectorView setContentView:fileAttributesView]; break; } [inspectorView display]; } - (void)changeCommonProjectEntry:(id)sender { NSString *newEntry = [sender stringValue]; // Build Atributes if (sender == installDomainPopup) { [project setProjectDictObject:newEntry forKey:PCInstallDomain notify:YES]; } else if (sender == cppOptField) { [project setProjectDictObject:newEntry forKey:PCPreprocessorOptions notify:YES]; } else if (sender == objcOptField) { [project setProjectDictObject:newEntry forKey:PCObjCCompilerOptions notify:YES]; } else if (sender == cOptField) { [project setProjectDictObject:newEntry forKey:PCCompilerOptions notify:YES]; } else if (sender == ldOptField) { [project setProjectDictObject:newEntry forKey:PCLinkerOptions notify:YES]; } // Project Description else if (sender == descriptionField) { [project setProjectDictObject:newEntry forKey:PCDescription notify:YES]; } else if (sender == releaseField) { [project setProjectDictObject:newEntry forKey:PCRelease notify:YES]; } else if (sender == licenseField) { [project setProjectDictObject:newEntry forKey:PCCopyright notify:YES]; } else if (sender == licDescriptionField) { [project setProjectDictObject:newEntry forKey:PCCopyrightDescription notify:YES]; } else if (sender == urlField) { [project setProjectDictObject:newEntry forKey:PCURL notify:YES]; } } - (void)selectSectionWithTitle:(NSString *)sectionTitle { [inspectorPopup selectItemWithTitle:sectionTitle]; [self inspectorPopupDidChange:inspectorPopup]; } // When user ends editing of text field with Tab or changing focus, entered // changes should be accepted. The exception is PCFileName fields. I'm not sure // if this is correct implementation. Action is performed twice if user ends // editing with Enter key. - (void)controlTextDidEndEditing:(NSNotification *)aNotif { NSControl *anObject = [aNotif object]; id target = [anObject target]; SEL action = [anObject action]; if ([anObject isKindOfClass:[PCFileNameField class]]) { return; } if ([target respondsToSelector:action]) { [target performSelector:action withObject:anObject]; } } // ============================================================================ // ==== Notifications // ============================================================================ - (void)activeProjectDidChange:(NSNotification *)aNotif { PCProject *rootProject = [projectManager rootActiveProject]; NSView *newProjAttrSubview = nil; if (rootProject != project) { [inspectorPanel setTitle: [NSString stringWithFormat: @"%@ - Project Inspector", [rootProject projectName]]]; } project = [projectManager activeProject]; projectDict = [project projectDict]; PCLogStatus(self, @"Active projectChanged to %@", [[project projectDict] objectForKey:PCProjectName]); // 1. Get custom project attributes view newProjAttrSubview = [project projectAttributesView]; if (projectAttributesSubview == nil) { [projectAttributesView addSubview:newProjAttrSubview]; } else { [projectAttributesView replaceSubview:projectAttributesSubview with:newProjAttrSubview]; } projectAttributesSubview = newProjAttrSubview; // 2. Update values in UI elements [self updateValues:nil]; // 3. Display current view [self inspectorPopupDidChange:inspectorPopup]; } - (void)updateValues:(NSNotification *)aNotif { // Build Attributes view searchHeaders = [projectDict objectForKey:PCSearchHeaders]; searchLibs = [projectDict objectForKey:PCSearchLibs]; [self searchOrderPopupDidChange:searchOrderPopup]; [projectNameLabel setStringValue:[project projectName]]; [cppOptField setStringValue: [projectDict objectForKey:PCPreprocessorOptions]]; [objcOptField setStringValue: [projectDict objectForKey:PCObjCCompilerOptions]]; [cOptField setStringValue: [projectDict objectForKey:PCCompilerOptions]]; [ldOptField setStringValue: [projectDict objectForKey:PCLinkerOptions]]; [installDomainPopup selectItemWithTitle: [projectDict objectForKey:PCInstallDomain]]; // Project Attributes [projectTypeField setStringValue:[projectDict objectForKey:PCProjectType]]; [projectNameField setStringValue:[projectDict objectForKey:PCProjectName]]; [projectLanguagePB removeAllItems]; [projectLanguagePB addItemsWithTitles: [projectDict objectForKey:PCUserLanguages]]; [projectLanguagePB selectItemWithTitle: [projectDict objectForKey:PCLanguage]]; // Project Description view [descriptionField setStringValue: [projectDict objectForKey:PCDescription]]; [releaseField setStringValue: [projectDict objectForKey:PCRelease]]; [licenseField setStringValue: [projectDict objectForKey:PCCopyright]]; [licDescriptionField setStringValue: [projectDict objectForKey:PCCopyrightDescription]]; [urlField setStringValue: [projectDict objectForKey:PCURL]]; authorsItems = [projectDict objectForKey:PCAuthors]; [authorsList reloadData]; //Project Languages languagesItems = [projectDict objectForKey:PCUserLanguages]; [languagesList reloadData]; // File Attributes [fileIconView setDelegate:[project projectBrowser]]; [fileIconView updateIcon]; [self updateFileAttributes]; } - (void)browserDidSetPath:(NSNotification *)aNotif { [fileIconView updateIcon]; [self updateFileAttributes]; } // ============================================================================ // ==== Build Attributes // ============================================================================ - (void)createBuildAttributes { if (buildAttributesView) { return; } if ([NSBundle loadNibNamed:@"BuildAttributes" owner:self] == NO) { PCLogError(self, @"error loading BuildAttributes NIB file!"); return; } // Search Order // Popup [searchOrderPopup selectItemAtIndex:0]; // Table [searchOrderList setCornerView:nil]; [searchOrderList setHeaderView:nil]; [searchOrderList setTarget:self]; [searchOrderList setAction:@selector(searchOrderClick:)]; // [searchOrderColumn setEditable:NO]; // Buttons [self setSearchOrderButtonsState]; // Retain view [buildAttributesView retain]; } // --- Search Order - (void)searchOrderPopupDidChange:(id)sender { NSString *selectedTitle = [sender titleOfSelectedItem]; if ([selectedTitle isEqualToString:@"Header Directories Search Order"]) { ASSIGN(searchItems, [NSMutableArray arrayWithArray:searchHeaders]); } else if ([selectedTitle isEqualToString:@"Library Directories Search Order"]) { ASSIGN(searchItems, [NSMutableArray arrayWithArray:searchLibs]); } else if ([selectedTitle isEqualToString:@"Build Targets"]) { ASSIGN(searchItems,[NSMutableArray arrayWithArray:[project buildTargets]]); } else { ASSIGN(searchItems,nil); } [searchOrderList reloadData]; [searchOrderList deselectAll:self]; [searchOrderTF setStringValue:@""]; // Enable/disable buttons according to selected/not selected item [self setSearchOrderButtonsState]; } - (void)searchOrderDoubleClick:(id)sender { } - (void)searchOrderClick:(id)sender { int row = [searchOrderList selectedRow]; [searchOrderTF setStringValue:[searchItems objectAtIndex:row]]; [searchOrderTF selectText:self]; [self setSearchOrderButtonsState]; } - (void)setSearchOrderButtonsState { // "Set..." button is always off until functionality will be implemented [searchOrderSet setEnabled:NO]; // After loadable inspectors implementation make it work by // detection of text field becoming first responder. /* if ([inspectorPanel firstResponder] == searchOrderTF) { [searchOrderAdd setEnabled:YES]; } else { [searchOrderAdd setEnabled:NO]; }*/ if ([searchOrderList selectedRow] == -1) { [searchOrderRemove setEnabled:NO]; } else { [searchOrderRemove setEnabled:YES]; } } - (void)setSearchOrder:(id)sender { } - (void)removeSearchOrder:(id)sender { int row = [searchOrderList selectedRow]; if (row != -1) { [searchItems removeObjectAtIndex:row]; [self syncSearchOrder]; [searchOrderList reloadData]; } } - (void)addSearchOrder:(id)sender { NSString *value = [searchOrderTF stringValue]; if ([value isEqualToString:@""]) { return; } [searchItems addObject:value]; [searchOrderTF setStringValue:@""]; [self syncSearchOrder]; [searchOrderList reloadData]; } - (void)syncSearchOrder { int pIndex; pIndex = [searchOrderPopup indexOfSelectedItem]; switch (pIndex) { case 0: // Headers [project setProjectDictObject:searchItems forKey:PCSearchHeaders notify:YES]; break; case 1: // Libraries [project setProjectDictObject:searchItems forKey:PCSearchLibs notify:YES]; break; case 2: // Targets [project setProjectDictObject:searchItems forKey:PCBuilderTargets notify:YES]; return; } } // ============================================================================ // ==== Project Attributes // ============================================================================ - (void)createProjectAttributes { if (projectAttributesView) { return; } if ([NSBundle loadNibNamed:@"ProjectAttributes" owner:self] == NO) { PCLogError(self, @"error loading ProjectAttributes NIB file!"); return; } // Languages [projectLanguagePB removeAllItems]; [projectLanguagePB addItemsWithTitles: [projectDict objectForKey:PCUserLanguages]]; // Retain view [projectAttributesView retain]; } - (void)setCurrentLanguage:(id)sender { NSLog(@"set current language to %@", [sender titleOfSelectedItem]); [project setProjectDictObject:[sender titleOfSelectedItem] forKey:PCLanguage notify:NO]; [[project projectWindow] setTitle]; } // ============================================================================ // ==== Project Description // ============================================================================ - (void)createProjectDescription { if (projectDescriptionView) { return; } if ([NSBundle loadNibNamed:@"ProjectDescription" owner:self] == NO) { PCLogError(self, @"error loading ProjectDescription NIB file!"); return; } // Authors table authorsColumn = [(NSTableColumn *)[NSTableColumn alloc] initWithIdentifier: @"Authors List"]; [authorsColumn setEditable:YES]; authorsList = [[NSTableView alloc] initWithFrame:NSMakeRect(6,6,209,111)]; [authorsList setAllowsMultipleSelection:NO]; [authorsList setAllowsColumnReordering:NO]; [authorsList setAllowsColumnResizing:NO]; [authorsList setAllowsEmptySelection:YES]; [authorsList setAllowsColumnSelection:NO]; [authorsList setRowHeight:17.0]; [authorsList setCornerView:nil]; [authorsList setHeaderView:nil]; [authorsList addTableColumn:authorsColumn]; [authorsList setDataSource:self]; [authorsList setDelegate:self]; // [authorsScroll setDocumentView:authorsList]; [authorsScroll setHasHorizontalScroller:NO]; [authorsScroll setHasVerticalScroller:YES]; [authorsScroll setBorderType:NSBezelBorder]; // Authors' buttons [authorAdd setRefusesFirstResponder:YES]; [authorRemove setRefusesFirstResponder:YES]; [authorUp setRefusesFirstResponder:YES]; [authorUp setImage: [NSImage imageNamed:@"common_ArrowUp"]]; [authorDown setRefusesFirstResponder:YES]; [authorDown setImage: [NSImage imageNamed:@"common_ArrowDown"]]; // Link textfields [descriptionField setNextText:releaseField]; [releaseField setNextText:licenseField]; [licenseField setNextText:licDescriptionField]; [licDescriptionField setNextText:urlField]; [urlField setNextText:descriptionField]; [projectDescriptionView retain]; } // --- Actions - (void)addAuthor:(id)sender { int row; [authorsItems addObject:[NSMutableString stringWithString:@""]]; [authorsList reloadData]; row = [authorsItems count] - 1; [authorsList selectRow:row byExtendingSelection:NO]; [authorsList editColumn:0 row:row withEvent:nil select:YES]; [project setProjectDictObject:authorsItems forKey:PCAuthors notify:YES]; } - (void)removeAuthor:(id)sender { int selectedRow = [authorsList selectedRow]; if (selectedRow >= 0) { [authorsList selectRow:selectedRow byExtendingSelection:NO]; [authorsItems removeObjectAtIndex:selectedRow]; [authorsList reloadData]; } if ([authorsList selectedRow] < 0 && [authorsItems count] > 0) { [authorsList selectRow:[authorsItems count]-1 byExtendingSelection:NO]; } [project setProjectDictObject:authorsItems forKey:PCAuthors notify:YES]; } - (void)upAuthor:(id)sender { int selectedRow = [authorsList selectedRow]; id previousRow; id currentRow; if (selectedRow > 0) { previousRow = [[authorsItems objectAtIndex: selectedRow-1] copy]; currentRow = [authorsItems objectAtIndex: selectedRow]; [authorsItems replaceObjectAtIndex: selectedRow-1 withObject: currentRow]; [authorsItems replaceObjectAtIndex: selectedRow withObject: previousRow]; [authorsList selectRow: selectedRow-1 byExtendingSelection: NO]; [authorsList reloadData]; [project setProjectDictObject:authorsItems forKey:PCAuthors notify:YES]; } } - (void)downAuthor:(id)sender { unsigned selectedRow = [authorsList selectedRow]; id nextRow; id currentRow; if (selectedRow < [authorsItems count]-1) { nextRow = [[authorsItems objectAtIndex: selectedRow+1] copy]; currentRow = [authorsItems objectAtIndex: selectedRow]; [authorsItems replaceObjectAtIndex: selectedRow+1 withObject: currentRow]; [authorsItems replaceObjectAtIndex: selectedRow withObject: nextRow]; [authorsList selectRow: selectedRow+1 byExtendingSelection: NO]; [authorsList reloadData]; [project setProjectDictObject:authorsItems forKey:PCAuthors notify:YES]; } } // ============================================================================ // ==== Project Languages // ============================================================================ - (void)createProjectLanguages { if (projectLanguagesView) { return; } if ([NSBundle loadNibNamed:@"ProjectLanguages" owner:self] == NO) { PCLogError(self, @"error loading ProjectLanguages NIB file!"); return; } [projectLanguagesView retain]; [languagesList setDataSource:self]; } - (void)addLanguage:(id)sender { NSString *language = [newLanguage stringValue]; [newLanguage setStringValue: @""]; //If there is a language and is new, add this if (([language length] > 0) && (![languagesItems containsObject: language])) { //Add the language to the projectDict [languagesItems addObject: language]; [project setProjectDictObject:languagesItems forKey:PCUserLanguages notify:YES]; /* If there are localizable resources, copy these into the new language directory */ if ([[projectDict objectForKey:PCLocalizedResources] count] > 0) { NSString *file, *englishPath, *languagePath; NSEnumerator *resources = [[projectDict objectForKey:PCLocalizedResources] objectEnumerator]; englishPath = [project resourceDirForLanguage:@"English"]; languagePath = [project resourceDirForLanguage:language]; while ((file = [resources nextObject])) { if ([[projectManager fileManager] copyFile:file fromDirectory:englishPath intoDirectory:languagePath]) { NSLog(@"file copied: %@", file); } } } } } - (void)removeLanguage:(id)sender { /* We don't remove the English language sice is needed if the app isn't available at the end user language */ if (![[languagesItems objectAtIndex: [languagesList selectedRow]] isEqualToString:@"English"]) { NSString *language = [languagesItems objectAtIndex:[languagesList selectedRow]]; NSString *languagePath = [project resourceDirForLanguage:language]; NSArray *resources = [projectDict objectForKey:PCLocalizedResources]; /* If there are localizable resources, remove these at the language directory and the directory itsel */ if ([resources count] > 0) { if ([[projectManager fileManager] removeFiles:resources fromDirectory:languagePath removeDirsIfEmpty:YES]) { NSLog(@"removed resources for language %@",language); } } //Update the languages list [languagesItems removeObject:language]; //If the removed language is the actual PCLanguage, set English if ([[projectDict objectForKey: PCLanguage] isEqualToString:language]) { NSLog(@"set current language to English"); [project setProjectDictObject:@"English" forKey:PCLanguage notify:NO]; } //Update the projectDict [project setProjectDictObject:languagesItems forKey:PCUserLanguages notify:YES]; } else { NSRunAlertPanel(@"Remove Language", @"You shouldn't remove language English", @"Ok",nil,nil); } } // ============================================================================ // ==== File Attributes // ============================================================================ - (void)createFileAttributes { if (fileAttributesView) { return; } if ([NSBundle loadNibNamed:@"FileAttributes" owner:self] == NO) { PCLogError(self, @"error loading FileAttributes NIB file!"); return; } [fileAttributesView retain]; [localizableButton setRefusesFirstResponder:YES]; [publicHeaderButton setRefusesFirstResponder:YES]; [fileIconView setFileNameField:fileNameField]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(panelDidResignKey:) name: NSWindowDidResignKeyNotification object:inspectorPanel]; } - (void)updateFileAttributes { PCProjectBrowser *browser = [project projectBrowser]; NSString *category = [browser nameOfSelectedCategory]; NSString *categoryKey = [project keyForCategory:category]; NSArray *files = [browser selectedFiles]; NSString *file = nil; int array_count = [files count]; int present_count = 0; NSArray *publicHeaders = nil; NSArray *localizedResources = nil; NSEnumerator *enumerator = nil; // Initial default buttons state [localizableButton setEnabled:NO]; [localizableButton setState:NSOffState]; [publicHeaderButton setEnabled:NO]; [publicHeaderButton setState:NSOffState]; if (files == nil) { return; } // --- Enable buttons // If selection is not category AND category is allow localization // enable localizableButton checkbox if ([[project localizableKeys] containsObject:categoryKey]) { [localizableButton setEnabled:YES]; } // If selection is not category // AND project accepts public headers // AND file extension is .h or .H enable publicHeaders checkbox. if ([project canHavePublicHeaders] == YES ) { BOOL enable = YES; enumerator = [files objectEnumerator]; while ((file = [enumerator nextObject])) { if (![[file pathExtension] isEqualToString:@"h"] && ![[file pathExtension] isEqualToString:@"H"]) { enable = NO; } } if (enable) { [publicHeaderButton setEnabled:YES]; } } // --- Set state of buttons // There are 3 sutiuations: // - all files present in group (state: ON) // - part of file present in group (state: OFF) // - no files present in group (state: OFF) // Set state of Public Headers button if ([publicHeaderButton isEnabled]) { publicHeaders = [project publicHeaders]; enumerator = [files objectEnumerator]; present_count = 0; while ((file = [enumerator nextObject])) { if ([publicHeaders containsObject:file]) { present_count++; } } if (array_count == present_count) { [publicHeaderButton setState:NSOnState]; } } // Set state of Localized Resource button if ([localizableButton isEnabled]) { localizedResources = [project localizedResources]; enumerator = [files objectEnumerator]; present_count = 0; while ((file = [enumerator nextObject])) { if ([localizedResources containsObject:file]) { present_count++; } } if (array_count == present_count) { [localizableButton setState:NSOnState]; } } } - (void)beginFileRename { [fileNameField setEditableField:YES]; [inspectorPanel makeFirstResponder:fileNameField]; } // Delegate method of PCFileNameField class - (void)controlStringValueDidChange:(NSString *)aString { if (fileName != nil) { [fileName release]; } fileName = [aString copy]; } // Delegate method of PCFileNameField class - (BOOL)textShouldSetEditable:(NSString *)text { if ([[project rootCategories] containsObject:text]) { return NO; } return YES; } - (void)fileNameDidChange:(id)sender { if ([fileName isEqualToString:[fileNameField stringValue]]) { return; } /* PCLogInfo(self, @"{%@} file name changed from: %@ to: %@", [project projectName], fileName, [fileNameField stringValue]);*/ if ([project renameFile:fileName toFile:[fileNameField stringValue]] == NO) { [fileNameField setStringValue:fileName]; } } - (void)setPublicHeader:(id)sender { PCProjectBrowser *browser = [project projectBrowser]; NSArray *files = [browser selectedFiles]; NSEnumerator *enumerator = [files objectEnumerator]; NSString *file = nil; while ((file = [enumerator nextObject])) { if ([sender state] == NSOffState) { [project setHeaderFile:fileName public:NO]; } else { [project setHeaderFile:fileName public:YES]; } } } - (void)setLocalizableResource:(id)sender { PCProjectBrowser *browser = [project projectBrowser]; NSArray *files = [browser selectedFiles]; NSEnumerator *enumerator = [files objectEnumerator]; NSString *file = nil; while ((file = [enumerator nextObject])) { if ([sender state] == NSOffState) { [project setResourceFile:file localizable:NO]; } else { [project setResourceFile:file localizable:YES]; } } } - (void)panelDidResignKey:(NSNotification *)aNotif { if ([fileNameField isEditable] == YES) { [inspectorPanel makeFirstResponder:fileIconView]; [fileNameField setStringValue:fileName]; } } // ============================================================================ // ==== NSTableViews // ============================================================================ - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView { if (searchOrderList != nil && aTableView == searchOrderList) { return [searchItems count]; } else if (authorsList != nil && aTableView == authorsList) { return [authorsItems count]; } else if (languagesList != nil && aTableView == languagesList) { return [languagesItems count]; } return 0; } - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { if (searchOrderList != nil && aTableView == searchOrderList) { return [searchItems objectAtIndex:rowIndex]; } else if (authorsList != nil && aTableView == authorsList) { return [authorsItems objectAtIndex:rowIndex]; } else if (languagesList != nil && aTableView == languagesList) { return [languagesItems objectAtIndex:rowIndex]; } return nil; } - (void) tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { if (authorsList != nil && aTableView == authorsList) { if([authorsItems count] == 0) { return; } [authorsItems removeObjectAtIndex:rowIndex]; [authorsItems insertObject:anObject atIndex:rowIndex]; [project setProjectDictObject:authorsItems forKey:PCAuthors notify:YES]; } } - (void) tableView: (NSTableView*)aTableView willDisplayCell: (id)aCell forTableColumn: (NSTableColumn*)aTableColumn row: (NSInteger)rowIndex { [(NSTextFieldCell *)aCell setScrollable:YES]; } @end apps-projectcenter-master/Framework/PCProjectLauncher.m000066400000000000000000000337131347226342500236240ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2016 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" #ifndef NOTIFICATION_CENTER #define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter] #endif #ifndef IMAGE #define IMAGE(X) [NSImage imageNamed: X] #endif enum { DEBUG_DEFAULT_TARGET = 1, DEBUG_DEBUG_TARGET = 2 }; @protocol Terminal - (BOOL)terminalRunProgram:(NSString *)path withArguments:(NSArray *)args inDirectory:(NSString *)directory properties:(NSDictionary *)properties; @end @implementation PCProjectLauncher (UserInterface) - (void)_createComponentView { NSScrollView *scrollView; NSString *string; NSAttributedString *attributedString; componentView = [[NSBox alloc] initWithFrame:NSMakeRect(8,-1,464,322)]; [componentView setTitlePosition:NSNoTitle]; [componentView setBorderType:NSNoBorder]; [componentView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [componentView setContentViewMargins: NSMakeSize(0.0,0.0)]; /* * Top buttons */ runButton = [[PCButton alloc] initWithFrame: NSMakeRect(0,271,43,43)]; [runButton setTitle: @"Run"]; [runButton setImage: IMAGE(@"Run")]; [runButton setAlternateImage: IMAGE(@"Stop")]; [runButton setTarget: self]; [runButton setAction: @selector(run:)]; [runButton setAutoresizingMask: (NSViewMaxXMargin | NSViewMinYMargin)]; [runButton setButtonType: NSToggleButton]; [componentView addSubview: runButton]; RELEASE (runButton); debugButton = [[PCButton alloc] initWithFrame: NSMakeRect(44,271,43,43)]; [debugButton setTitle: @"Debug"]; [debugButton setImage: IMAGE(@"Debug")]; [debugButton setAlternateImage: IMAGE(@"Stop")]; [debugButton setTarget: self]; [debugButton setAction: @selector(debug:)]; [debugButton setAutoresizingMask: (NSViewMaxXMargin | NSViewMinYMargin)]; [debugButton setButtonType: NSToggleButton]; [componentView addSubview: debugButton]; RELEASE (debugButton); /* * */ scrollView = [[NSScrollView alloc] initWithFrame:NSMakeRect (0,0,464,255)]; [scrollView setHasHorizontalScroller:NO]; [scrollView setHasVerticalScroller:YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; stdOut=[[NSTextView alloc] initWithFrame:[[scrollView contentView] frame]]; [stdOut setMinSize: NSMakeSize(0, 0)]; [stdOut setMaxSize: NSMakeSize(1e7, 1e7)]; [stdOut setRichText:YES]; [stdOut setEditable:NO]; [stdOut setSelectable:YES]; [stdOut setVerticallyResizable: YES]; [stdOut setHorizontallyResizable: NO]; [stdOut setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; [[stdOut textContainer] setWidthTracksTextView:YES]; [[stdOut textContainer] setContainerSize: NSMakeSize([stdOut frame].size.width, 1e7)]; // Font string = @"=== Launcher ready ==="; attributedString = [[NSAttributedString alloc] initWithString:string attributes:textAttributes]; [[stdOut textStorage] setAttributedString:attributedString]; [scrollView setDocumentView:stdOut]; RELEASE (stdOut); [componentView addSubview: scrollView]; RELEASE(scrollView); } @end @implementation PCProjectLauncher - (id)initWithProject:(PCProject *)aProject { NSAssert (aProject, @"No project specified!"); if ((self = [super init])) { NSFont *font = [NSFont userFixedPitchFontOfSize: 10.0]; project = aProject; textAttributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; [textAttributes retain]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCProjectLauncher: dealloc"); #endif RELEASE (componentView); RELEASE (textAttributes); RELEASE (debugger); [super dealloc]; } - (NSView *)componentView; { if (!componentView) { [self _createComponentView]; } return componentView; } - (BOOL)isRunning { return _isRunning; } - (BOOL)isDebugging { return _isDebugging; } - (void)performRun { if (!_isRunning && !_isDebugging) { [runButton performClick:self]; } } - (void)performDebug { if (!_isRunning && !_isDebugging) { [debugButton performClick:self]; } } - (void)debug:(id)sender { NSString *executablePath; NSString *gdbPath = nil; NSFileManager *fm = [NSFileManager defaultManager]; PCBundleManager *bundleManager = [[project projectManager] bundleManager]; executablePath = [project projectPath]; if ([project isExecutable]) { NSString *prjType; prjType = [project projectTypeName]; if ([prjType isEqualToString: @"Application"]) { /* MyApplication.app/MyApplication */ executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; executablePath = [executablePath stringByAppendingString:@".app"]; executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; } else if ([prjType isEqualToString: @"Tool"]) { /* obj/MyTool */ executablePath = [executablePath stringByAppendingPathComponent:@"obj"]; executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; } } else { NSRunAlertPanel(@"Debug", @"The project is not executable", @"Close", nil, nil, nil); [debugButton setState:NSOffState]; return; } #ifdef __MINGW__ /* On windows we need to check the .exe file */ if ([[executablePath pathExtension] length] == 0) { executablePath = [executablePath stringByAppendingPathExtension: @"exe"]; } #endif NSLog(@"debug executable launch path: %@", executablePath); if ([fm isExecutableFileAtPath:executablePath] == NO) { NSRunAlertPanel(@"Debug", @"No executable! Please build the project first.", @"Close",nil,nil); [debugButton setState:NSOffState]; return; } // Debugger gdbPath = [[[project projectManager] prefController] stringForKey:Debugger]; if (gdbPath == nil) { gdbPath = @"/usr/bin/gdb"; } if ([fm isExecutableFileAtPath:gdbPath] == NO) { NSRunAlertPanel(@"Debug", @"Specified debugger `%@` cannot be executed!", @"Close",nil,nil,gdbPath); [debugButton setState:NSOffState]; return; } // Debugger debugger = [bundleManager objectForBundleType: @"debugger" protocol: @protocol(CodeDebugger) fileName: [executablePath stringByDeletingLastPathComponent]]; [debugger debugExecutableAtPath: executablePath withDebugger: gdbPath]; if (!debugger) NSLog(@"No debugger module found"); // turn debug button off... // [debugButton setState:NSOffState]; } - (void)run:(id)sender { NSMutableArray *args = [[NSMutableArray alloc] init]; NSPipe *logPipe; NSPipe *errorPipe; NSString *executablePath; NSFileManager *fm; executablePath = [project projectPath]; // Check if project type is executable if ([project isExecutable]) { NSString *prjType; prjType = [project projectTypeName]; if ([prjType isEqualToString: @"Application"]) { /* MyApplication.app/MyApplication */ executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; executablePath = [executablePath stringByAppendingString:@".app"]; executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; } else if ([prjType isEqualToString: @"Tool"]) { /* obj/MyTool */ executablePath = [executablePath stringByAppendingPathComponent:@"obj"]; executablePath = [executablePath stringByAppendingPathComponent:[project projectName]]; } else { NSLog(@"Unknown project type to execute: %@", prjType); } } else { NSRunAlertPanel(@"Run", @"The project is not executable", @"Close", nil, nil, nil); [runButton setState:NSOffState]; return; } #ifdef __MINGW__ /* On windows we need to check the .exe file */ if ([[executablePath pathExtension] length] == 0) { executablePath = [executablePath stringByAppendingPathExtension: @"exe"]; } #endif NSLog(@"executable launch path: %@", executablePath); /* now check if the executable does exist. Perhaps make failed */ fm = [NSFileManager defaultManager]; if (![fm isExecutableFileAtPath:executablePath]) { NSRunAlertPanel(@"Run", @"The project does not have an executable", @"Close", nil, nil, nil); [runButton setState:NSOffState]; return; } // [makeTask isRunning] doesn't work here. // "waitpid 7045, result -1, error No child processes" is printed. if (launchTask) { PCLogStatus(self, @"task will terminate"); [launchTask terminate]; return; } // Setting I/O logPipe = [NSPipe pipe]; RELEASE(readHandle); readHandle = [[logPipe fileHandleForReading] retain]; [stdOut setString:@""]; [readHandle waitForDataInBackgroundAndNotify]; [NOTIFICATION_CENTER addObserver:self selector:@selector(logStdOut:) name:NSFileHandleDataAvailableNotification object:readHandle]; errorPipe = [NSPipe pipe]; RELEASE(errorReadHandle); errorReadHandle = [[errorPipe fileHandleForReading] retain]; [stdOut setString:@""]; [errorReadHandle waitForDataInBackgroundAndNotify]; [NOTIFICATION_CENTER addObserver:self selector:@selector(logErrOut:) name:NSFileHandleDataAvailableNotification object:errorReadHandle]; // Launch task RELEASE(launchTask); launchTask = [[NSTask alloc] init]; [NOTIFICATION_CENTER addObserver:self selector:@selector(runDidTerminate:) name:NSTaskDidTerminateNotification object:launchTask]; [launchTask setArguments:args]; [launchTask setCurrentDirectoryPath:[project projectPath]]; [launchTask setLaunchPath:executablePath]; [launchTask setStandardOutput:logPipe]; [launchTask setStandardError:errorPipe]; [launchTask launch]; [debugButton setEnabled:NO]; _isRunning = YES; _isErrorRunning = YES; RELEASE(args); } - (void)runDidTerminate:(NSNotification *)aNotif { if ([aNotif object] != launchTask) { return; } [NOTIFICATION_CENTER removeObserver: self name: NSTaskDidTerminateNotification object: launchTask]; // Wait if there are data available. if (_isRunning || _isErrorRunning) { [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; } [runButton setState:NSOffState]; [debugButton setState:NSOffState]; [runButton setEnabled:YES]; [debugButton setEnabled:YES]; [componentView display]; RELEASE(launchTask); launchTask = nil; _isDebugging = NO; } - (void)logStdOut:(NSNotification *)aNotif { NSData *data; if ((data = [readHandle availableData]) && [data length] > 0) { [self logData:data error:NO]; [readHandle waitForDataInBackgroundAndNotifyForModes:nil]; } else { [NOTIFICATION_CENTER removeObserver: self name: NSFileHandleDataAvailableNotification object: readHandle]; _isRunning = NO; } } - (void)logErrOut:(NSNotification *)aNotif { NSData *data; if ((data = [errorReadHandle availableData]) && [data length] > 0) { [self logData:data error:YES]; [errorReadHandle waitForDataInBackgroundAndNotifyForModes:nil]; } else { [NOTIFICATION_CENTER removeObserver: self name: NSFileHandleDataAvailableNotification object: errorReadHandle]; _isErrorRunning = NO; } } @end @implementation PCProjectLauncher (BuildLogging) - (void)logString:(NSString *)str newLine:(BOOL)newLine { [stdOut replaceCharactersInRange:NSMakeRange([[stdOut string] length],0) withString:str]; if (newLine) { [stdOut replaceCharactersInRange:NSMakeRange([[stdOut string] length], 0) withString:@"\n"]; } else { [stdOut replaceCharactersInRange:NSMakeRange([[stdOut string] length], 0) withString:@" "]; } [stdOut scrollRangeToVisible:NSMakeRange([[stdOut string] length], 0)]; } - (void)logData:(NSData *)data error:(BOOL)yn { NSString *s = nil; NSAttributedString *as = nil; // [self logString:s newLine:NO]; s = [[NSString alloc] initWithData:data encoding:[NSString defaultCStringEncoding]]; as = [[NSAttributedString alloc] initWithString:s attributes:textAttributes]; [[stdOut textStorage] appendAttributedString: as]; [stdOut scrollRangeToVisible:NSMakeRange([[stdOut string] length], 0)]; [s release]; [as release]; } @end apps-projectcenter-master/Framework/PCProjectLauncherPanel.m000066400000000000000000000104211347226342500245730ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" @implementation PCProjectLauncherPanel - (id)initWithProjectManager:(PCProjectManager *)aManager { PCProjectLauncher *projectLauncher = nil; PCProject *activeProject = nil; projectManager = aManager; activeProject = [projectManager rootActiveProject]; projectLauncher = [activeProject projectLauncher]; projectLauncher = [[aManager activeProject] projectLauncher]; self = [super initWithContentRect: NSMakeRect (0, 300, 480, 322) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) backing: NSBackingStoreRetained defer: YES]; [self setMinSize: NSMakeSize(440, 222)]; [self setFrameAutosaveName: @"ProjectLauncher"]; [self setReleasedWhenClosed: NO]; [self setHidesOnDeactivate: NO]; [self setTitle: [NSString stringWithFormat: @"%@ - Launch", [activeProject projectName]]]; contentBox = [[NSBox alloc] init]; [contentBox setContentViewMargins:NSMakeSize(8.0, 0.0)]; [contentBox setTitlePosition:NSNoTitle]; [contentBox setBorderType:NSNoBorder]; [super setContentView:contentBox]; // Empty content view of contentBox emptyBox = [[NSBox alloc] init]; [emptyBox setContentViewMargins:NSMakeSize(0.0, 0.0)]; [emptyBox setTitlePosition:NSNoTitle]; [emptyBox setBorderType:NSLineBorder]; [contentBox setContentView:emptyBox]; // Track project switching [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(activeProjectDidChange:) name:PCActiveProjectDidChangeNotification object:nil]; if (![self setFrameUsingName: @"ProjectLauncher"]) { [self center]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCLaunchPanel: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } - (void)orderFront:(id)sender { PCProject *activeProject = [projectManager rootActiveProject]; NSView *launcherView = [[activeProject projectLauncher] componentView]; if (!([contentBox contentView] == launcherView)) { [contentBox setContentView:launcherView]; [contentBox display]; } /* PCLogInfo(self, @"orderFront: %@ -> %@", launcherView, [launcherView superview]);*/ [super orderFront:self]; } - (void)close { // PCLogInfo(self, @"close: %@", [contentBox contentView]); [contentBox setContentView:emptyBox]; // PCLogInfo(self, @"close: %@", [contentBox contentView]); [super close]; } - (void)activeProjectDidChange:(NSNotification *)aNotif { PCProject *rootProject; id prefs = [projectManager prefController]; if (![prefs boolForKey:UseTearOffWindows]) { return; } rootProject = [projectManager rootActiveProject]; if (rootProject == currentProject) { return; } currentProject = rootProject; if (!rootProject) { [contentBox setContentView:emptyBox]; } else { [self setTitle: [NSString stringWithFormat: @"%@ - Launch", [rootProject projectName]]]; [contentBox setContentView:[[rootProject projectLauncher] componentView]]; } } @end apps-projectcenter-master/Framework/PCProjectLoadedFiles.m000066400000000000000000000227621347226342500242400ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" @implementation PCProjectLoadedFiles - (id)initWithProject:(PCProject *)aProj { id prefs; NSAssert(aProj, @"Project is mandatory!"); prefs = [[aProj projectManager] prefController]; PCLogStatus(self, @"init"); if ((self = [super init])) { project = aProj; editedFiles = [[NSMutableArray alloc] init]; // Column filesColumn = [(NSTableColumn *)[NSTableColumn alloc] initWithIdentifier:@"Files List"]; [filesColumn setEditable:NO]; // Table filesList = [[NSTableView alloc] initWithFrame:NSMakeRect(0,0,160,128)]; [filesList setAllowsMultipleSelection:NO]; [filesList setAllowsColumnReordering:NO]; [filesList setAllowsColumnResizing:NO]; [filesList setAllowsEmptySelection:YES]; [filesList setAllowsColumnSelection:NO]; [filesList setCornerView:nil]; [filesList setHeaderView:nil]; [filesList addTableColumn:filesColumn]; [filesList setDataSource:self]; [filesList setDrawsGrid:NO]; [filesList setTarget:self]; [filesList setDoubleAction:@selector(doubleClick:)]; [filesList setAction:@selector(click:)]; // Scrollview filesScroll = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 80, 128)]; [filesScroll setDocumentView:filesList]; [filesScroll setHasHorizontalScroller:NO]; [filesScroll setHasVerticalScroller:YES]; if (![prefs boolForKey:UseTearOffWindows]) { [filesScroll setBorderType:NSBezelBorder]; } sortType = PHSortByTime; [filesList reloadData]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fileDidOpen:) name:PCEditorDidOpenNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fileDidClose:) name:PCEditorDidCloseNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidBecomeActive:) name:PCEditorDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidChangeFileName:) name:PCEditorDidChangeFileNameNotification object:nil]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog (@"PCProjectLoadedFiles: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(filesColumn); RELEASE(filesList); RELEASE(filesScroll); RELEASE(editedFiles); [super dealloc]; } - (NSView *)componentView { return filesScroll; } - (NSArray *)editedFilesRep { if (sortType == PHSortByName) { NSArray *sortedArray = nil; sortedArray = [editedFiles sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; return sortedArray; } return editedFiles; } - (void)setSortType:(PHSortType)type { int row; NSString *filePath = nil; if ([editedFiles count] > 0) { row = [filesList selectedRow]; filePath = [[self editedFilesRep] objectAtIndex:row]; } sortType = type; [filesList reloadData]; if ([editedFiles count] > 0) { row = [[self editedFilesRep] indexOfObject:filePath]; [filesList selectRow:row byExtendingSelection:NO]; } } - (void)setSortByTime { [self setSortType:PHSortByTime]; } - (void)setSortByName { [self setSortType:PHSortByName]; } - (void)selectNextFile { int row = [filesList selectedRow]; if (row == ([filesList numberOfRows]-1)) { [filesList selectRow:0 byExtendingSelection:NO]; } else { [filesList selectRow:row+1 byExtendingSelection:NO]; } [self click:self]; } - (void)selectPreviousFile { int row = [filesList selectedRow]; if (row == 0) { [filesList selectRow:[filesList numberOfRows]-1 byExtendingSelection:NO]; } else { [filesList selectRow:row-1 byExtendingSelection:NO]; } [self click:self]; } - (void)click:(id)sender { int row = [filesList selectedRow]; NSString *path = [[self editedFilesRep] objectAtIndex:row]; [[project projectEditor] orderFrontEditorForFile:path]; } - (void)doubleClick:(id)sender { // TODO: Open separate editor window for file // PCLogInfo(self, @"ProjectLoadedFiles doubleClick received"); } // =========================================================================== // ==== Notifications // =========================================================================== - (void)fileDidOpen:(NSNotification *)aNotif { id editor = [aNotif object]; NSString *filePath = nil; int row; if ([editor editorManager] != [project projectEditor]) { PCLogWarning(self, @"File opened from other project"); return; } // PCLogInfo(self, @"File did open in project %@", [project projectName]); filePath = [editor path]; if ([editedFiles containsObject:filePath] == YES) { [editedFiles removeObject:filePath]; } [editedFiles insertObject:filePath atIndex:0]; [filesList reloadData]; row = [[self editedFilesRep] indexOfObject:filePath]; [filesList selectRow:row byExtendingSelection:NO]; // PCLogInfo(self, @"fileDidOpen.END"); } - (void)fileDidClose:(NSNotification *)aNotif { id editor = [aNotif object]; NSString *filePath = [editor path]; if ([editor editorManager] != [project projectEditor]) { PCLogWarning(self, @"File from other project closed"); return; } if ([editedFiles containsObject:filePath] == YES) { [editedFiles removeObject:filePath]; [filesList reloadData]; if ([editedFiles count] > 0) { unsigned row; filePath = [editedFiles objectAtIndex:0]; row = [[self editedFilesRep] indexOfObject:filePath]; [filesList selectRow:row byExtendingSelection:NO]; } } } - (void)editorDidBecomeActive:(NSNotification *)aNotif { id editor = [aNotif object]; NSString *filePath = nil; unsigned index; unsigned filesCount; if ([editor editorManager] != [project projectEditor]) { return; } if ((filesCount = [editedFiles count]) > 0) { filePath = [editor path]; index = [[self editedFilesRep] indexOfObject:filePath]; if (index < filesCount) { [filesList selectRow:index byExtendingSelection:NO]; } } } - (void)editorDidChangeFileName:(NSNotification *)aNotif { NSDictionary *_editorDict = [aNotif object]; id _editor = [_editorDict objectForKey:@"Editor"]; NSString *_oldFileName = nil; NSString *_newFileName = nil; unsigned index; if ([_editor editorManager] != [project projectEditor]) { return; } _oldFileName = [_editorDict objectForKey:@"OldFile"]; _newFileName = [_editorDict objectForKey:@"NewFile"]; if ([editedFiles count] > 0) { index = [editedFiles indexOfObject:_oldFileName]; [editedFiles replaceObjectAtIndex:index withObject:_newFileName]; [filesList reloadData]; [filesList selectRow:index byExtendingSelection:NO]; } } @end @implementation PCProjectLoadedFiles (LoadedFilesTableDelegate) - (NSInteger)numberOfRowsInTableView: (NSTableView *)aTableView { if (aTableView != filesList) { return 0; } return [editedFiles count]; } - (id) tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (NSInteger)rowIndex { if (aTableView != filesList) { return nil; } if (sortType == PHSortByName) { NSArray *sortedArray = nil; sortedArray = [editedFiles sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; return [[sortedArray objectAtIndex:rowIndex] lastPathComponent]; } return [[editedFiles objectAtIndex:rowIndex] lastPathComponent]; } - (void) tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { /* NSString *path = nil; NSParameterAssert (rowIndex >= 0 && rowIndex < [editedFiles count]); [editedFiles removeObjectAtIndex:rowIndex]; [editedFiles insertObject:anObject atIndex:rowIndex]; path = [filesPath removeObjectAtIndex:rowIndex]; [filesPath insertObject:[editor path] atIndex:rowIndex];*/ } @end apps-projectcenter-master/Framework/PCProjectLoadedFilesPanel.m000066400000000000000000000102731347226342500252120ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" @implementation PCProjectLoadedFilesPanel - (id)initWithProjectManager:(PCProjectManager *)aManager { PCProjectLoadedFiles *projectLoadedFiles = nil; PCProject *activeProject = nil; projectManager = aManager; activeProject = [projectManager rootActiveProject]; currentProject = activeProject; projectLoadedFiles = [activeProject projectLoadedFiles]; PCLogStatus(self, @"[init]"); self = [super initWithContentRect: NSMakeRect (0, 300, 220, 322) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) backing: NSBackingStoreRetained defer: YES]; // [self setFloatingPanel:YES]; [self setMinSize: NSMakeSize(120, 23)]; [self setFrameAutosaveName: @"LoadedFiles"]; [self setReleasedWhenClosed: NO]; [self setHidesOnDeactivate: YES]; [self setTitle: [NSString stringWithFormat: @"%@ - Loaded Files", [activeProject projectName]]]; // Panel's content view contentBox = [[NSBox alloc] init]; [contentBox setContentViewMargins:NSMakeSize(0.0, 0.0)]; [contentBox setTitlePosition:NSNoTitle]; [contentBox setBorderType:NSNoBorder]; [self setContentView:contentBox]; // Empty content view of contentBox emptyBox = [[NSBox alloc] init]; [emptyBox setContentViewMargins:NSMakeSize(0.0, 0.0)]; [emptyBox setTitlePosition:NSNoTitle]; [emptyBox setBorderType:NSLineBorder]; [contentBox setContentView:emptyBox]; // Track project switching [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(activeProjectDidChange:) name:PCActiveProjectDidChangeNotification object:nil]; if (![self setFrameUsingName: @"LoadedFiles"]) { [self center]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCLoadedFilesPanel: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(contentBox); RELEASE(emptyBox); [super dealloc]; } - (void)orderFront:(id)sender { PCProject *activeProject = [projectManager rootActiveProject]; NSView *filesView = [[activeProject projectLoadedFiles] componentView]; if (!([contentBox contentView] == filesView)) { [contentBox setContentView:filesView]; [contentBox display]; } [super orderFront:self]; } - (void)close { [contentBox setContentView:emptyBox]; [super close]; } - (void)activeProjectDidChange:(NSNotification *)aNotif { PCProject *rootProject; id prefs = [projectManager prefController]; if (![prefs boolForKey:UseTearOffWindows]) { return; } rootProject = [projectManager rootActiveProject]; if (rootProject == currentProject) { return; } currentProject = rootProject; if (!rootProject) { [contentBox setContentView:emptyBox]; } else { [self setTitle: [NSString stringWithFormat: @"%@ - Loaded Files", [rootProject projectName]]]; [contentBox setContentView:[[rootProject projectLoadedFiles] componentView]]; } } @end apps-projectcenter-master/Framework/PCProjectManager.m000066400000000000000000001126551347226342500234400ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "Protocols/ProjectType.h" #import "Protocols/CodeEditor.h" #import "Modules/Preferences/Saving/PCSavingPrefs.h" #import "Modules/Preferences/Misc/PCMiscPrefs.h" NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; @implementation PCProjectManager // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)init { if ((self = [super init])) { buildPanel = nil; launchPanel = nil; loadedFilesPanel = nil; findPanel = nil; // Prepare bundles bundleManager = [[PCBundleManager alloc] init]; projectTypes = [self loadProjectTypesInfo]; loadedProjects = [[NSMutableDictionary alloc] init]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetSaveTimer:) name:PCSavePeriodDidChangeNotification object:nil]; fileManager = [[PCFileManager alloc] initWithProjectManager:self]; } return self; } - (BOOL)close { if ([self closeAllProjects] == NO) { return NO; } if ((editorManager != nil) && ([editorManager closeAllEditors] == NO)) { return NO; } return YES; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCProjectManager: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; if ([saveTimer isValid]) { [saveTimer invalidate]; } RELEASE(loadedProjects); RELEASE(fileManager); RELEASE(bundleManager); RELEASE(projectTypes); RELEASE(projectTypeAccessaryView); RELEASE(fileTypeAccessaryView); TEST_RELEASE(editorManager); TEST_RELEASE(projectInspector); TEST_RELEASE(loadedFilesPanel); TEST_RELEASE(buildPanel); TEST_RELEASE(launchPanel); [super dealloc]; } - (void)setDelegate:(id)aDelegate { delegate = aDelegate; } - (id)delegate { return delegate; } - (void)setPrefController:(id)aController { prefController = aController; } - (id )prefController { return prefController; } - (void)createProjectTypeAccessaryView { NSRect fr = NSMakeRect(20,30,160,20); if (projectTypeAccessaryView != nil) { return; } // For "Open Project" and "New Project" panels projectTypePopup = [[NSPopUpButton alloc] initWithFrame:fr pullsDown:NO]; [projectTypePopup setRefusesFirstResponder:YES]; [projectTypePopup setAutoenablesItems:NO]; [projectTypePopup addItemsWithTitles: [[projectTypes allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; [projectTypePopup sizeToFit]; [projectTypeAccessaryView sizeToFit]; [projectTypePopup selectItemAtIndex:0]; projectTypeAccessaryView = [[NSBox alloc] init]; [projectTypeAccessaryView setTitle:@"Project Types"]; [projectTypeAccessaryView setTitlePosition:NSAtTop]; [projectTypeAccessaryView setBorderType:NSGrooveBorder]; [projectTypeAccessaryView addSubview:projectTypePopup]; [projectTypeAccessaryView sizeToFit]; [projectTypeAccessaryView setAutoresizingMask:NSViewMinXMargin | NSViewMaxXMargin]; RELEASE(projectTypePopup); } - (NSMutableDictionary *)loadProjectTypesInfo { NSDictionary *bundlesInfo; NSEnumerator *enumerator; NSArray *bundlePaths; NSString *key; NSDictionary *infoTable; if (projectTypes == nil) { projectTypes = [[NSMutableDictionary alloc] init]; bundlesInfo = [bundleManager infoForBundlesType:@"project"]; bundlePaths = [bundlesInfo allKeys]; enumerator = [bundlePaths objectEnumerator]; while ((key = [enumerator nextObject])) { infoTable = [bundlesInfo objectForKey:key]; [projectTypes setObject:[infoTable objectForKey:@"PrincipalClassName"] forKey:[infoTable objectForKey:@"Name"]]; } } return projectTypes; } // ============================================================================ // ==== Timer handling // ============================================================================ - (BOOL)startSaveTimer { NSTimeInterval interval; interval = [[prefController stringForKey:AutoSavePeriod] intValue]; if (interval > 0 && saveTimer == nil) { saveTimer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(saveAllProjects) userInfo:nil repeats:YES]; return YES; } return NO; } - (BOOL)resetSaveTimer:(NSNotification *)notif { [self stopSaveTimer]; return [self startSaveTimer]; } - (BOOL)stopSaveTimer { if (saveTimer && [saveTimer isValid]) { [saveTimer invalidate]; saveTimer = nil; return YES; } return NO; } // ============================================================================ // ==== Accessory methods // ============================================================================ - (PCBundleManager *)bundleManager { return bundleManager; } - (PCFileManager *)fileManager { return fileManager; } - (PCEditorManager *)editorManager { if (!editorManager) { // For non project editors editorManager = [[PCEditorManager alloc] init]; [editorManager setProjectManager:self]; } return editorManager; } - (PCProjectInspector *)projectInspector { if (!projectInspector) { projectInspector = [[PCProjectInspector alloc] initWithProjectManager:self]; } return projectInspector; } - (NSPanel *)inspectorPanel { return [[self projectInspector] panel]; } - (void)showProjectInspector:(id)sender { [[[self projectInspector] panel] makeKeyAndOrderFront:self]; } - (NSPanel *)loadedFilesPanel { if (!loadedFilesPanel && [prefController boolForKey:UseTearOffWindows]) { loadedFilesPanel = [[PCProjectLoadedFilesPanel alloc] initWithProjectManager:self]; } return loadedFilesPanel; } - (void)showProjectLoadedFiles:(id)sender { if ([prefController boolForKey:UseTearOffWindows]) { [[self loadedFilesPanel] orderFront:nil]; } } - (NSPanel *)buildPanel { if (!buildPanel && [prefController boolForKey:UseTearOffWindows]) { buildPanel = [[PCProjectBuilderPanel alloc] initWithProjectManager:self]; } return buildPanel; } - (NSPanel *)launchPanel { if (!launchPanel && [prefController boolForKey:UseTearOffWindows]) { launchPanel = [[PCProjectLauncherPanel alloc] initWithProjectManager:self]; } return launchPanel; } - (NSPanel *)projectFinderPanel { return findPanel; } // ============================================================================ // ==== Project management // ============================================================================ - (NSMutableDictionary *)loadedProjects { return loadedProjects; } - (PCProject *)activeProject { return activeProject; } - (PCProject *)rootActiveProject { PCProject *rootProject = nil; if (!activeProject) { return nil; } rootProject = activeProject; while ([rootProject isSubproject] == YES) { rootProject = [rootProject superProject]; } return rootProject; } - (void)setActiveProject:(PCProject *)aProject { if (aProject != activeProject) { activeProject = aProject; [[NSNotificationCenter defaultCenter] postNotificationName:PCActiveProjectDidChangeNotification object:activeProject]; } } - (void)saveAllProjectsIfNeeded { // PCLogInfo(self, @"saveAllProjectsIfNeeded"); // If this method was called not by NSTimer, check if we should save projects if ([prefController boolForKey:SaveOnQuit]) { [self saveAllProjects]; } } - (BOOL)saveAllProjects { NSEnumerator *enumerator = [loadedProjects keyEnumerator]; NSString *key; PCProject *project; while ((key = [enumerator nextObject])) { project = [loadedProjects objectForKey:key]; if ([project save] == NO) { return NO; } } return YES; } // ============================================================================ // ==== Project actions // ============================================================================ - (PCProject *)convertLegacyProject:(NSMutableDictionary *)pDict atPath:(NSString *)aPath { NSString *pPath = nil; NSString *projectClassName = nil; NSString *projectTypeName = nil; NSString *_projectPath = nil; NSFileManager *fm = [NSFileManager defaultManager]; NSString *_resPath = nil; NSArray *_fromDirArray = nil; NSString *_fromDirPath = nil; NSString *_file = nil; NSString *_2file = nil; NSString *_resFile = nil; unsigned i = 0; PCProject *project = nil; NSMutableArray *otherResArray = nil; NSString *plistFile = nil; projectClassName = [pDict objectForKey:PCProjectBuilderClass]; if (projectClassName == nil) { // Project created by 0.4 release or later return nil; } PCLogInfo(self, @"Converting legacy project"); // Gorm project type doesn't exists anymore if ([projectClassName isEqualToString:@"PCGormProj"] || [projectClassName isEqualToString:@"PCAppProj"]) { projectTypeName = @"Application"; projectClassName = [projectTypes objectForKey:projectTypeName]; } // Handling directory layout _projectPath = [aPath stringByDeletingLastPathComponent]; _resPath = [_projectPath stringByAppendingPathComponent:@"Resources"]; [fm createDirectoryAtPath:_resPath attributes:nil]; // Documents _fromDirPath = [_projectPath stringByAppendingPathComponent:@"Documentation"]; _fromDirArray = [pDict objectForKey:PCDocuFiles]; for (i = 0; i < [_fromDirArray count]; i++) { _resFile = [_fromDirArray objectAtIndex:i]; _file = [_fromDirPath stringByAppendingPathComponent:_resFile]; _2file = [_resPath stringByAppendingPathComponent:_resFile]; [fm movePath:_file toPath:_2file handler:nil]; } [fm removeFileAtPath:_fromDirPath handler:nil]; // Images _fromDirPath = [_projectPath stringByAppendingPathComponent:@"Images"]; _fromDirArray = [pDict objectForKey:PCImages]; for (i = 0; i < [_fromDirArray count]; i++) { _resFile = [_fromDirArray objectAtIndex:i]; _file = [_fromDirPath stringByAppendingPathComponent:_resFile]; _2file = [_resPath stringByAppendingPathComponent:_resFile]; [fm movePath:_file toPath:_2file handler:nil]; } [fm removeFileAtPath:_fromDirPath handler:nil]; // Interfaces _fromDirArray = [pDict objectForKey:PCInterfaces]; for (i = 0; i < [_fromDirArray count]; i++) { _resFile = [_fromDirArray objectAtIndex:i]; _file = [_projectPath stringByAppendingPathComponent:_resFile]; _2file = [_resPath stringByAppendingPathComponent:_resFile]; [fm movePath:_file toPath:_2file handler:nil]; } // Other resources otherResArray = [NSMutableArray arrayWithArray:[pDict objectForKey:PCOtherResources]]; plistFile = [NSString stringWithFormat:@"%@Info.plist", [pDict objectForKey:PCProjectName]]; for (i = 0; i < [otherResArray count]; i++) { _resFile = [otherResArray objectAtIndex:i]; _file = [_projectPath stringByAppendingPathComponent:_resFile]; if ([_resFile isEqualToString:plistFile]) { _2file = [_resPath stringByAppendingPathComponent:@"Info-gnustep.plist"]; [otherResArray replaceObjectAtIndex:i withObject:@"Info-gnustep.plist"]; [pDict setObject:otherResArray forKey:PCOtherResources]; } else { _2file = [_resPath stringByAppendingPathComponent:_resFile]; } [fm movePath:_file toPath:_2file handler:nil]; } /* remove non meaningful keys */ [pDict removeObjectForKey: PCWindows]; [pDict removeObjectForKey: PCLastEditing]; // GNUmakefiles will be generated in [PCProject initWithProjectDictionary:] // Remove obsolete records from project dictionary and write to PC.project pPath = [[aPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"PC.project"]; project = [bundleManager objectForClassName:projectClassName bundleType:@"project" protocol:@protocol(ProjectType)]; projectTypeName = [project projectTypeName]; [pDict setObject:projectTypeName forKey:PCProjectType]; [pDict removeObjectForKey:PCProjectBuilderClass]; [pDict removeObjectForKey:PCPrincipalClass]; if ([pDict writeToFile:pPath atomically:YES] == YES) { // [[NSFileManager defaultManager] removeFileAtPath:aPath handler:nil]; } return project; } // aPath is path to a project file PC.project or project bundle *.pcproj. // Also it can be project directory where one of the above resides. - (PCProject *)openProjectAt:(NSString *)aPath makeActive: (BOOL)flag { NSString *projectPath = nil; NSString *projectFileType = nil; PCProject *project = nil; NSDictionary *wap = nil; NSString *projectPathToSave; // Check project path for invalid characters if ([aPath rangeOfString: @" "].location != NSNotFound || [aPath rangeOfString: @"\t"].location != NSNotFound || [aPath rangeOfString: @"\r"].location != NSNotFound || [aPath rangeOfString: @"\n"].location != NSNotFound) { if (NSRunAlertPanel (@"Open Project", @"Project path contains whitespaces.\n" @"GNUstep's build environment currently " @"can't handle that reliably.\n" @"Do you want to open a project anyway?\n", @"Open", @"Don't open", nil) != NSAlertDefaultReturn) { return nil; } } projectFileType = [[aPath lastPathComponent] pathExtension]; if ([projectFileType isEqualToString:@"pcproj"] || [projectFileType isEqualToString:@"project"]) { projectPath = [aPath stringByDeletingLastPathComponent]; } else { projectPath = aPath; } if ((project = [loadedProjects objectForKey:projectPath])== nil) { NSMutableDictionary *projectFile = nil; NSString *projectTypeName = nil; NSString *projectClassName = nil; BOOL isDir = NO; BOOL exists = NO; NSArray *tempList; exists = [[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir]; if (!exists) { return nil; } projectPathToSave = projectPath; if (isDir) { if ([projectFileType isEqualToString:@"pcproj"] == NO) { tempList = [fileManager filesWithExtension:@"pcproj" atPath:aPath includeDirs:YES]; if ([tempList count] > 0) { aPath = [tempList objectAtIndex:0]; } } else { projectPathToSave = aPath; } aPath = [aPath stringByAppendingPathComponent:@"PC.project"]; projectFile = [NSMutableDictionary dictionaryWithContentsOfFile:aPath]; } else if ([projectFileType isEqualToString:@"project"]) { projectFile = [NSMutableDictionary dictionaryWithContentsOfFile:aPath]; } else { //TODO: Remove support of 0.3.x projects projectFile = [NSMutableDictionary dictionaryWithContentsOfFile:aPath]; if (projectFile != nil) { // For compatibility with 0.3.x projects project = [self convertLegacyProject:projectFile atPath:aPath]; } } if (projectFile == nil) return nil; if (project) {// Project was converted and created PC*Project with alloc&init aPath = [[aPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"PC.project"]; } else {// No conversion were taken projectTypeName = [projectFile objectForKey:PCProjectType]; projectClassName = [projectTypes objectForKey:projectTypeName]; if (projectClassName == nil) { NSRunAlertPanel(@"Open Project", @"Project type '%@' is not supported!\n" @"Report the bug, please!", @"OK", nil, nil, projectTypeName); return nil; } } project = [bundleManager objectForClassName:projectClassName bundleType:@"project" protocol:@protocol(ProjectType)]; if (!project || ![project openWithWrapperAt:aPath]) { NSRunAlertPanel(@"Open Project", @"Unable to open project '%@'.\nReport bug, please!", @"OK",nil,nil,aPath); return nil; } PCLogStatus(self, @"Project %@ loaded as %@", [project projectName], [project projectTypeName]); // Started only if there's not save timer yet [self startSaveTimer]; [project validateProjectDict]; if (!project) { return nil; } [loadedProjects setObject:project forKey:[project projectPath]]; if (flag) { [project setProjectManager:self]; // Windows and panels wap = [projectFile objectForKey:PCWindows]; if ([[wap allKeys] containsObject:@"ProjectBuild"]) { [[project projectWindow] showProjectBuild:self]; } if ([[wap allKeys] containsObject:@"ProjectLaunch"]) { [[project projectWindow] showProjectLaunch:self]; } if ([[wap allKeys] containsObject:@"LoadedFiles"]) { [[project projectWindow] showProjectLoadedFiles:self]; } [[project projectWindow] makeKeyAndOrderFront:self]; [self setActiveProject: project]; } PCLogStatus(self, @"Saved opened Document as %@", projectPathToSave); [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL: [NSURL fileURLWithPath:projectPathToSave]]; } return project; } - (void)openProject { NSArray *fileTypes = nil; NSArray *files = nil; NSString *filePath = nil; NSFileManager *fm = [NSFileManager defaultManager]; BOOL isDir; NSArray *tempList = nil; fileTypes = [NSArray arrayWithObjects:@"pcproj",@"project",nil]; files = [fileManager filesOfTypes:fileTypes operation:PCOpenProjectOperation multiple:NO title:@"Open Project" accView:nil]; filePath = [files objectAtIndex:0]; [fm fileExistsAtPath:filePath isDirectory:&isDir]; if (isDir) { if (![[filePath pathExtension] isEqualToString:@"pcproj"]) { tempList = [fileManager filesWithExtension:@"pcproj" atPath:filePath includeDirs:YES]; if ([tempList count] > 0) { filePath = [tempList objectAtIndex:0]; } } filePath = [filePath stringByAppendingPathComponent:@"PC.project"]; } NSLog(@"PCPM: openProject: %@", filePath); if (filePath != nil) { [self openProjectAt:filePath makeActive:YES]; } } - (PCProject *)createProjectOfType:(NSString *)projectType path:(NSString *)aPath { NSString *className = [projectTypes objectForKey:projectType]; PCProject *projectCreator; PCProject *project = nil; NSString *subType = nil; if ((project = [loadedProjects objectForKey: [aPath stringByDeletingLastPathComponent]]) != nil) { [[project projectWindow] makeKeyAndOrderFront:self]; return project; } if ([projectType isEqualToString:@"Application"]) subType = PCProjectInterfaceGorm; projectCreator = [bundleManager objectForClassName:className bundleType:@"project" protocol:@protocol(ProjectType)]; // NSLog(@"%@ CLASS: %@", className, projectCreator); if (!projectCreator) { NSRunAlertPanel(@"New Project", @"Could not create project directory %@.\n" @"No project creator. Report the bug, please!", @"OK", nil, nil, aPath); return nil; } // Create project directory if (![[PCFileManager defaultManager] createDirectoriesIfNeededAtPath:aPath]) { NSRunAlertPanel(@"New Project", @"Could not create project directory %@.\n" @"Check permissions of the directory where you" @" want to create a project", @"OK", nil, nil, aPath); return nil; } // Create project if (!(project = [projectCreator createProjectAt:aPath withOption:subType])) { NSRunAlertPanel(@"New Project", @"Project %@ could not be created.\nReport bug, please!", @"OK",nil,nil,[project projectName]); return nil; } [project setProjectManager:self]; [self startSaveTimer]; return project; } - (void)newProject: (id)sender { NSArray *files, *types = nil; NSString *filePath; NSString *projectType; PCProject *project; [self createProjectTypeAccessaryView]; files = [fileManager filesOfTypes:types operation:PCSaveFileOperation multiple:NO title:@"New Project" accView:projectTypeAccessaryView]; filePath = [files objectAtIndex:0]; #ifdef WIN32 filePath = [filePath stringByDeletingPathExtension]; #endif if (filePath != nil) { if ([filePath rangeOfString: @" "].location != NSNotFound || [filePath rangeOfString: @"\t"].location != NSNotFound || [filePath rangeOfString: @"\r"].location != NSNotFound || [filePath rangeOfString: @"\n"].location != NSNotFound) { if (NSRunAlertPanel (@"New Project", @"Are you sure you want to create a project with whitespace in it's path?\n" @"GNUstep's build environment currently can't handle that reliably.", @"OK", @"Cancel", nil) != NSAlertDefaultReturn) { return; } } projectType = [projectTypePopup titleOfSelectedItem]; if (!(project = [self createProjectOfType:projectType path:filePath])) { // No need to open alert panel. Alert panel was already opened // in createProjectOfType:path: method. return; } [loadedProjects setObject:project forKey: [project projectPath]]; [self setActiveProject:project]; [[project projectWindow] orderFront:self]; } } - (BOOL)saveProject { PCProject *rootProject = [self rootActiveProject]; if (!rootProject) { return NO; } // PCLogInfo(self, @"save root project: %@", [rootProject projectName]); // Save PC.project and the makefiles! if ([rootProject save] == NO) { NSRunAlertPanel(@"Save Project", @"Couldn't save project %@!", @"OK", nil, nil, [rootProject projectName]); return NO; } return YES; } - (BOOL)addProjectFiles { PCProject *project = [self rootActiveProject]; NSString *category = [[project projectBrowser] nameOfSelectedCategory]; NSString *categoryKey = [activeProject keyForCategory:category]; NSMutableArray *files = nil; NSString *file = nil; NSString *projectFile = nil; NSArray *fileTypes = [project fileTypesForCategoryKey:categoryKey]; files = [fileManager filesOfTypes:fileTypes operation:PCAddFileOperation multiple:NO title:nil accView:nil]; /* PCLogInfo(self, @"[addProjectFiles] %@ to category: %@ of project %@", files, categoryKey, [activeProject projectName]);*/ // Category may be changed category = [[project projectBrowser] nameOfSelectedCategory]; categoryKey = [activeProject keyForCategory:category]; // No files was selected if (!files) { return NO; } file = [[files objectAtIndex:0] lastPathComponent]; projectFile = [activeProject projectFileFromFile:[files objectAtIndex:0] forKey:categoryKey]; if (![projectFile isEqualToString:file]) { [activeProject addFiles:files forKey:categoryKey notify:YES]; } else { // Copy and add files [activeProject addAndCopyFiles:files forKey:categoryKey]; } return YES; } - (BOOL)saveProjectFiles { return [[activeProject projectEditor] saveAllFiles]; } - (BOOL)removeProjectFiles { PCProject *project = [self rootActiveProject]; NSArray *files = [[project projectBrowser] selectedFiles]; NSString *category = [[project projectBrowser] nameOfSelectedCategory]; NSString *categoryKey = [project keyForCategory:category]; NSString *directory = [activeProject dirForCategoryKey:categoryKey]; NSString *removeString = nil; NSMutableArray *subprojs = [NSMutableArray array]; unsigned i; NSLog(@"Root active project '%@' category '%@'", [project projectName], category); // Determining target project if ([categoryKey isEqualToString:PCSubprojects]) { if ([activeProject isSubproject]) { project = [activeProject superProject]; [self setActiveProject:project]; } removeString = @"Remove subprojects..."; directory = [project dirForCategoryKey:categoryKey]; } else { removeString = @"Remove files..."; project = activeProject; } /* PCLogInfo(self, @"%@: %@ from %@", removeString, files, directory); PCLogInfo(self, @"[removeProjectFiles]:%@ KEY:%@", [activeProject projectName], categoryKey);*/ if (files) { int ret; if ([categoryKey isEqualToString:PCLibraries]) { ret = NSRunAlertPanel(@"Remove File", @"Remove libraries from Project?", @"Remove", @"Cancel", nil); } else { ret = NSRunAlertPanel(@"Remove File", removeString, @"...from Project and Disk", @"...from Project only", @"Cancel"); } if (ret == NSAlertDefaultReturn || ret == NSAlertAlternateReturn) { BOOL flag = (ret == NSAlertDefaultReturn) ? YES : NO; // Remove from projectDict // If files localizable make them not localizable ret = [project removeFiles:files forKey:categoryKey notify:YES]; // Remove files from disk if (flag && ret && ![categoryKey isEqualToString:PCLibraries]) { if ([categoryKey isEqualToString:PCSubprojects]) { for (i = 0; i < [files count]; i++) { [subprojs addObject: [[files objectAtIndex:i] stringByAppendingPathExtension:@"subproj"]]; } files = subprojs; } ret = [fileManager removeFiles:files fromDirectory:directory removeDirsIfEmpty:YES]; } if (!ret) { NSRunAlertPanel(@"Remove File", @"Error removing files from project %@!", @"OK", nil, nil, [activeProject projectName]); return NO; } else if (flag) { // Save project because we've removed file(s) from disk // TODO: Maybe fix it later? (add pending removal of files) [activeProject save]; } } else { return NO; } } // files return YES; } - (void)closeProject:(PCProject *)aProject { PCProject *currentProject = nil; currentProject = [loadedProjects objectForKey: [aProject projectPath]]; if (!currentProject) { return; } // Remove it from the loaded projects! [loadedProjects removeObjectForKey: [aProject projectPath]]; if ([loadedProjects count] == 0) { if (projectInspector) { [projectInspector close]; } if (loadedFilesPanel && [loadedFilesPanel isVisible]) { [loadedFilesPanel close]; } if (buildPanel && [buildPanel isVisible]) { [buildPanel close]; } if (launchPanel && [launchPanel isVisible]) { [launchPanel close]; } [self setActiveProject:nil]; [self stopSaveTimer]; } else if (currentProject == [self activeProject]) { [self setActiveProject:[[loadedProjects allValues] lastObject]]; } RELEASE(currentProject); } - (void)closeProject { if ([prefController boolForKey:SaveOnQuit]) { [activeProject save]; } [activeProject close:self]; } - (BOOL)closeAllProjects { PCProject *project = nil; NSEnumerator *enumerator = [[loadedProjects allValues] objectEnumerator]; // PCLogInfo(self, @"loaded %i projects", [loadedProjects count]); while ((project = [enumerator nextObject]) != nil) { if ([prefController boolForKey:SaveOnQuit]) { [project save]; } if ([project close:self] == NO) { return NO; } } return YES; } // ============================================================================ // ==== File actions // ============================================================================ - (void)openFileAtPath:(NSString *)filePath { editorManager = [self editorManager]; if (filePath != nil) { [editorManager openEditorForFile:filePath editable:YES windowed:YES]; [editorManager orderFrontEditorForFile:filePath]; } } - (void)openFile { NSArray *files = nil; NSString *filePath = nil; files = [fileManager filesOfTypes:nil operation:PCOpenFileOperation multiple:NO title:@"Open File" accView:nil]; filePath = [files objectAtIndex:0]; if (filePath) { [self openFileAtPath:filePath]; } } - (void)newFile { [[PCFileCreator sharedCreator] newFileInProject:activeProject]; } - (BOOL)saveFile { if (activeProject) { return [[[activeProject projectEditor] activeEditor] saveFile]; } else if (editorManager) { return [[editorManager activeEditor] saveFile]; } return NO; } - (BOOL)saveFileAs { NSArray *files = nil; NSString *filePath = nil; files = [fileManager filesOfTypes:nil operation:PCSaveFileOperation multiple:NO title:@"Save File As..." accView:nil]; filePath = [files objectAtIndex:0]; if (filePath != nil && ![[activeProject projectEditor] saveFileAs:filePath]) { NSRunAlertPanel(@"Save File As", @"Unable to save file as\n%@!", @"OK", nil, nil, filePath); return NO; } else { // TODO: implement 'Save File As' functionality wrt project and // non-project files /* PCProject *project = [projectManager activeProject]; NSString *categoryPath = nil; categoryPath = [NSString stringWithString:@"/"]; categoryPath = [categoryPath stringByAppendingPathComponent: [[project rootEntries] objectForKey:PCNonProject]]; [projectManager closeFile]; [project addFiles:[NSArray arrayWithObject:newFilePath] forKey:PCNonProject notify:YES]; [[activeProject projectEditor] openEditorForFile:newFilePath categoryPath:categoryPath editable:YES windowed:NO];*/ } return YES; } - (BOOL)saveFileTo { NSArray *files = nil; NSString *filePath = nil; files = [fileManager filesOfTypes:nil operation:PCSaveFileOperation multiple:NO title:@"Save File To..." accView:nil]; filePath = [files objectAtIndex:0]; if (filePath != nil && ![[activeProject projectEditor] saveFileTo:filePath]) { NSRunAlertPanel(@"Save File To", @"Unable to save file to\n%@!", @"OK", nil, nil, filePath); return NO; } return YES; } - (BOOL)revertFileToSaved { return [[activeProject projectEditor] revertFileToSaved]; } - (BOOL)renameFile { [self showProjectInspector:self]; [projectInspector selectSectionWithTitle:@"File Attributes"]; [projectInspector beginFileRename]; return YES; } - (void)closeFile { return [[activeProject projectEditor] closeActiveEditor:self]; } @end @implementation PCProjectManager (Subprojects) - (BOOL)openNewSubprojectPanel { // PCLogInfo(self, @"newSubproject"); if (!nsPanel) { if ([NSBundle loadNibNamed:@"NewSubproject" owner:self] == NO) { NSRunAlertPanel(@"New Subproject", @"Internal error!" @" Install ProjectCenter again, please.", @"OK", nil, nil); return NO; } [nsPanel setFrameAutosaveName:@"NewSubproject"]; if (![nsPanel setFrameUsingName: @"NewSubproject"]) { [nsPanel center]; } [nsImage setImage:[NSApp applicationIconImage]]; [nsTypePB removeAllItems]; [nsTypePB addItemsWithTitles: [[activeProject allowableSubprojectTypes] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; [nsTypePB setRefusesFirstResponder:YES]; [nsTypePB selectItemAtIndex:0]; [nsCancelButton setRefusesFirstResponder:YES]; [nsCreateButton setRefusesFirstResponder:YES]; } [projectNameField setStringValue:[activeProject projectName]]; [nsPanel makeKeyAndOrderFront:nil]; [nsNameField setStringValue:@""]; [nsPanel makeFirstResponder:nsNameField]; [nsPanel setLevel:NSModalPanelWindowLevel]; [NSApp runModalForWindow:nsPanel]; return YES; } - (void)closeNewSubprojectPanel:(id)sender { [nsPanel orderOut:self]; [NSApp stopModal]; } - (void)createSubproject:(id)sender { PCProject *subproject = nil; NSString *spName = [nsNameField stringValue]; NSString *spPath = nil; NSString *spType = [nsTypePB titleOfSelectedItem]; // Check if subproject with entered name already exists. if (![activeProject doesAcceptFile:spName forKey:PCSubprojects]) { NSRunAlertPanel(@"New Subproject", @"Subproject with name %@ already exists in project %@", @"OK", nil, nil, spName, [activeProject projectName]); return; } [self closeNewSubprojectPanel:self]; if (![[spName pathExtension] isEqualToString:@"subproj"]) { spName = [[nsNameField stringValue] stringByAppendingPathExtension:@"subproj"]; } spPath = [[activeProject projectPath] stringByAppendingPathComponent:spName]; PCLogStatus(self, @"creating subproject with type %@ at path %@", spType, spPath); // Create subproject subproject = [self createSubprojectOfType:spType path:spPath]; return; } - (PCProject *)createSubprojectOfType:(NSString *)projectType path:(NSString *)aPath { NSString *className = [projectTypes objectForKey:projectType]; PCProject *projectCreator; PCProject *subproject = nil; NSString *subType = nil; if ([projectType isEqualToString:@"Application"]) subType = PCProjectInterfaceGorm; projectCreator = [bundleManager objectForClassName:className bundleType:@"project" protocol:@protocol(ProjectType)]; if (!(subproject = [projectCreator createProjectAt:aPath withOption:subType])) { NSRunAlertPanel(@"New Subproject", @"Internal error!" @" Install ProjectCenter again, please.", @"OK", nil, nil); return nil; } [subproject setIsSubproject:YES]; [subproject setSuperProject:activeProject]; [subproject setProjectManager:self]; // PCLogInfo(self, @"{createSubproject} add to %@", [activeProject projectName]); [activeProject addSubproject:subproject]; return subproject; } - (void)controlTextDidChange:(NSNotification *)aNotif { NSString *tfString = nil; NSArray *subprojectList = nil; if ([aNotif object] != nsNameField) { return; } // Check for valid subproject names tfString = [nsNameField stringValue]; subprojectList = [[activeProject projectDict] objectForKey:PCSubprojects]; if (![subprojectList containsObject:tfString]) { [nsCreateButton setEnabled:YES]; } else { [nsCreateButton setEnabled:NO]; } } - (BOOL)addSubproject { NSFileManager *fm = [NSFileManager defaultManager]; NSMutableArray *files = nil; NSString *pcProject = nil; NSString *spDir = nil; NSDictionary *spDict = nil; NSString *spName = nil; unsigned i; files = [fileManager filesOfTypes:[NSArray arrayWithObjects:@"subproj",nil] operation:PCAddFileOperation multiple:NO title:@"Add Subproject" accView:nil]; // Validate if it real projects for (i = 0; i < [files count]; i++) { spDir = [files objectAtIndex:i]; pcProject = [spDir stringByAppendingPathComponent:@"PC.project"]; if (![[spDir pathExtension] isEqualToString:@"subproj"] || ![fm fileExistsAtPath:pcProject]) { [files removeObjectAtIndex:i]; } } // PCLogInfo(self, @"{addSubproject} %@", files); if (![fileManager copyFiles:files intoDirectory:[activeProject projectPath]]) { return NO; } for (i = 0; i < [files count]; i++) { spDir = [files objectAtIndex:i]; pcProject = [spDir stringByAppendingPathComponent:@"PC.project"]; spDict = [NSDictionary dictionaryWithContentsOfFile:pcProject]; spName = [spDict objectForKey:PCProjectName]; // PCLogInfo(self, @"{addSubproject} dir: %@ file: %@", spDir, pcProject); [activeProject addSubprojectWithName:spName]; } return YES; } @end apps-projectcenter-master/Framework/PCProjectWindow.m000066400000000000000000000554341347226342500233360ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "Modules/Preferences/Misc/PCMiscPrefs.h" #import @implementation PCProjectWindow // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (void)_createCustomView { customView = [[NSBox alloc] initWithFrame:NSMakeRect(-1,-1,562,252)]; [customView setTitlePosition:NSNoTitle]; [customView setBorderType:NSNoBorder]; [customView setContentViewMargins:NSMakeSize(0.0,0.0)]; [customView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; // Editor in the Box [customView setContentView:[[project projectEditor] componentView]]; [h_split addSubview:customView]; RELEASE(customView); [h_split adjustSubviews]; } - (void)awakeFromNib { id prefs = [[project projectManager] prefController]; NSRect rect; [buildButton setToolTip:@"Project Builder"]; [buildButton setImage:IMAGE(@"Build")]; [launchButton setToolTip:@"Project Launcher"]; [launchButton setImage:IMAGE(@"Run")]; if (![project isExecutable]) { [launchButton setEnabled:NO]; } [loadedFilesButton setToolTip:@"Loaded Files"]; [loadedFilesButton setImage:IMAGE(@"Files")]; if (![prefs boolForKey:UseTearOffWindows]) { [loadedFilesButton setEnabled:NO]; } [findButton setToolTip:@"Project Finder"]; [findButton setImage:IMAGE(@"Find")]; [inspectorButton setToolTip:@"Project Inspector"]; [inspectorButton setImage:IMAGE(@"Inspector")]; [fileIcon setFileNameField:fileIconTitle]; [fileIcon setDelegate:[project projectBrowser]]; [fileIcon updateIcon]; [statusLine setStringValue:@""]; /* * Horizontal split view */ rect = [[projectWindow contentView] frame]; rect.size.height -= 62; rect.size.width -= 16; rect.origin.x += 8; rect.origin.y = -2; [h_split setDelegate:self]; /* * Vertical split view */ rect = [[projectWindow contentView] frame]; if (h_split) { rect.size.height = 185; } v_split = [[NSSplitView alloc] initWithFrame:rect]; [v_split setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; [v_split setVertical:YES]; [v_split setDelegate:self]; /* * File Browser */ browserView = [[project projectBrowser] view]; [v_split addSubview:browserView]; /* * LoadedFiles */ if (![prefs boolForKey:UseTearOffWindows]) { [self showProjectLoadedFiles:self]; } [h_split addSubview:v_split]; RELEASE(v_split); /* * Custom view * View where non-separated Builder, Launcher, Editor goes. */ [self _createCustomView]; } - (id)initWithProject:(PCProject *)owner { if ((self = [super init])) { NSDictionary *pcWindows; NSString *windowFrame; project = owner; _isToolbarVisible = YES; _splitViewsRestored = NO; if (projectWindow == nil) { if ([NSBundle loadNibNamed:@"ProjectWindow" owner:self] == NO) { PCLogError(self, @"error loading ProjectWindow NIB file!"); return nil; } } [self setTitle]; // Window [projectWindow setFrameAutosaveName:@"ProjectWindow"]; pcWindows = [[project projectDict] objectForKey:PCWindows]; windowFrame = [pcWindows objectForKey:@"ProjectWindow"]; // PCLogInfo(self, @"window frame %@", windowFrame); if (windowFrame != nil) { PCLogStatus(self, @"PCProjectWindow: set frame from project"); [projectWindow setFrameFromString:windowFrame]; } else if (![projectWindow setFrameUsingName: @"ProjectWindow"]) { [projectWindow center]; } // Toolbar if ([[pcWindows objectForKey:@"ShowToolbar"] isEqualToString:@"NO"]) { [self toggleToolbar]; } // Project dictionary [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(projectDictDidChange:) name:PCProjectDictDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(projectDictDidSave:) name:PCProjectDictDidSaveNotification object:nil]; // Active project changing [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(activeProjectDidChange:) name:PCActiveProjectDidChangeNotification object:nil]; // ProjectCenter preferences [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(preferencesDidChange:) name:PCPreferencesDidChangeNotification object:nil]; // Track Browser selection changes for file icon updates [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (browserDidSetPath:) name:PCBrowserDidSetPathNotification object:[project projectBrowser]]; // Editor changes [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (editorDidChange:) name:PCEditorDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (editorDidSave:) name:PCEditorDidSaveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (editorDidRevert:) name:PCEditorDidRevertNotification object:nil]; } return self; } - (void)setTitle { NSString *name = [project projectName]; NSString *path = [[project projectPath] stringByAbbreviatingWithTildeInPath]; NSString *language = [[project projectDict] objectForKey:PCLanguage]; [projectWindow setTitle:[NSString stringWithFormat:@"%@ - %@ [%@]",name,path,language]]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [projectWindow close]; [super dealloc]; } // ============================================================================ // ==== Accessory methods // ============================================================================ // TODO: Should be removed when two modes will be implemented: // Build, Launch and Loaded Files are tear-off and tear-on. // Custom view is always shown because editor always opened on // one click in Browser. External editor will be opened only on // double click. - (NSView *)customContentView { return [customView contentView]; } - (void)setCustomContentView:(NSView *)subview { if (!customView) { return; } [customView setContentView:subview]; [customView display]; } - (void)updateStatusLineWithText:(NSString *)text { [statusLine setStringValue:text]; } // ============================================================================ // ==== Actions // ============================================================================ - (void)showProjectBuild:(id)sender { id prefs = [[project projectManager] prefController]; NSView *view = [[project projectBuilder] componentView]; NSPanel *buildPanel = [[project projectManager] buildPanel]; PCProject *rootActiveProject; rootActiveProject = [[project projectManager] rootActiveProject]; // NSLog(@"ProjectWindow showProjectBuild: componentView RC:%i", // [view retainCount]); if ([prefs boolForKey:UseTearOffWindows]) { if ([customView contentView] == view) { [self showProjectEditor:self]; } if (rootActiveProject == project) { [buildPanel orderFront:nil]; } } else { if ((rootActiveProject == project) && [buildPanel isVisible]) { [buildPanel close]; } [self setCustomContentView:view]; } } - (void)showProjectLaunch:(id)sender { id prefs = [[project projectManager] prefController]; NSView *view = nil; NSPanel *launchPanel = nil; view = [[project projectLauncher] componentView]; launchPanel = [[project projectManager] launchPanel]; if ([prefs boolForKey:UseTearOffWindows]) { if ([customView contentView] == view) { [self showProjectEditor:self]; } [launchPanel orderFront:nil]; } else { if ([launchPanel isVisible]) { [launchPanel close]; } [self setCustomContentView:view]; } } - (void)showProjectLoadedFiles:(id)sender { id prefs = [[project projectManager] prefController]; NSPanel *panel = [[project projectManager] loadedFilesPanel]; PCProject *rootActiveProject; NSScrollView *componentView; rootActiveProject = [[project projectManager] rootActiveProject]; componentView = (NSScrollView *)[[project projectLoadedFiles] componentView]; // PCLogInfo(self, @"showProjectLoadedFiles"); if ([prefs boolForKey:UseTearOffWindows]) { [componentView setBorderType:NSNoBorder]; [componentView removeFromSuperview]; if (rootActiveProject == project) { [panel orderFront:nil]; } [v_split adjustSubviews]; } else { if ((rootActiveProject == project) && panel && [panel isVisible]) { [panel close]; } [componentView setBorderType:NSBezelBorder]; // Preserve width of view in panel // [componentView setFrame:NSMakeRect(0,0,128,130)]; [v_split addSubview:componentView]; [v_split adjustSubviews]; } } - (void)showProjectInspector:(id)sender { [[project projectManager] showProjectInspector:sender]; } - (void)showProjectEditor:(id)sender { [self setCustomContentView:[[project projectEditor] componentView]]; [self makeFirstResponder:firstResponder]; } - (BOOL)isToolbarVisible { return _isToolbarVisible; } - (void)toggleToolbar { NSRect rect; NSView *cView = [projectWindow contentView]; if (_isToolbarVisible) { RETAIN(toolbarView); [toolbarView removeFromSuperview]; if (h_split) { rect = [h_split frame]; rect.size.height += 48; // Hack. NSBrowser resizes incorrectly without removing/adding // from/to superview RETAIN(h_split); [h_split removeFromSuperview]; rect = [cView centerScanRect: rect]; [h_split setFrame:rect]; [cView addSubview:h_split]; RELEASE(h_split); } else if (v_split) { rect = [v_split frame]; rect.size.height += 48; // Hack. See above RETAIN(v_split); [v_split removeFromSuperview]; [v_split setFrame:rect]; rect = [cView centerScanRect: rect]; [cView addSubview:v_split]; RELEASE(v_split); } _isToolbarVisible = NO; } else { rect = [cView frame]; rect.origin.x = 8; rect.origin.y = rect.size.height - 57; rect.size.width -= 16; rect.size.height = 48; [toolbarView setFrame:rect]; [cView addSubview:toolbarView]; RELEASE(toolbarView); if (h_split) { rect = [h_split frame]; rect.size.height -= 48; // Hack. See above RETAIN(h_split); [h_split removeFromSuperview]; rect = [cView centerScanRect: rect]; [h_split setFrame:rect]; [cView addSubview:h_split]; RELEASE(h_split); } else if (v_split) { rect = [v_split frame]; rect.size.height -= 48; // Hack. See above RETAIN(v_split); [v_split removeFromSuperview]; [v_split setFrame:rect]; [cView addSubview:v_split]; RELEASE(v_split); } _isToolbarVisible = YES; } } // ============================================================================ // ==== Notifications // ============================================================================ - (void)projectDictDidChange:(NSNotification *)aNotif { NSDictionary *notifObject = [aNotif object]; PCProject *changedProject = [notifObject objectForKey:@"Project"]; if (changedProject != project && changedProject != [project activeSubproject]) { return; } [self setTitle]; // TODO: if window isn't visible and "edited" attribute set, after ordering // front window doesn't show broken close button. Fix it in GNUstep. // Workaround is in windowDidBecomeKey. [projectWindow setDocumentEdited:YES]; } - (void)projectDictDidSave:(NSNotification *)aNotif { PCProject *savedProject = [aNotif object]; if (savedProject != project && savedProject != [project activeSubproject] && [savedProject superProject] != [project activeSubproject]) { return; } [projectWindow setDocumentEdited:NO]; } - (void)activeProjectDidChange:(NSNotification *)aNotif { /* PCProject *activeProject = [aNotif object]; if (activeProject != project && activeProject != [project activeSubproject] && [activeProject superProject] != [project activeSubproject]) { return; } [self makeKeyWindow];*/ } // TODO: Review determining of tear-off panels. Current implementation // loads Build, Launch and Loaded Files to check visibility status. // It is incorrect behaviour; Build. Launch and LoadedFiles initialized // even if not in use. - (void)preferencesDidChange:(NSNotification *)aNotif { id prefs = [aNotif object]; NSLog(@"ProjectWindow: Preferences did change"); /* if ([[project projectManager] rootActiveProject] != project) { return; }*/ if ([prefs boolForKey:UseTearOffWindows]) { // Project Build if ([[[project projectBuilder] componentView] window] == projectWindow) { [self showProjectBuild:self]; } // Project Launch if ([[[project projectLauncher] componentView] window] == projectWindow) { [self showProjectLaunch:self]; } // Loaded Files if ([[v_split subviews] count] == 2) { [self showProjectLoadedFiles:self]; } [loadedFilesButton setEnabled:YES]; } else { NSPanel *buildPanel = [[project projectManager] buildPanel]; NSPanel *launchPanel = [[project projectManager] launchPanel]; // Project Build if ([buildPanel isVisible] == YES) { [self showProjectBuild:self]; } // Project Launch if ([launchPanel isVisible] == YES) { [self showProjectLaunch:self]; } // Loaded Files if ([[v_split subviews] count] == 1) { [self showProjectLoadedFiles:self]; } [loadedFilesButton setEnabled:NO]; } } - (void)browserDidSetPath:(NSNotification *)aNotif { PCProjectBrowser *browser = [aNotif object]; if (browser != [project projectBrowser]) { return; } [fileIcon updateIcon]; } - (void)editorDidChange:(NSNotification *)aNotif { id editor = [aNotif object]; if ([editor editorManager] != [project projectEditor]) { return; } [fileIcon updateIcon]; } - (void)editorDidSave:(NSNotification *)aNotif { id editor = [aNotif object]; if ([editor editorManager] != [project projectEditor]) { return; } [fileIcon updateIcon]; } - (void)editorDidRevert:(NSNotification *)aNotif { id editor = [aNotif object]; if ([editor editorManager] != [project projectEditor]) { return; } [fileIcon updateIcon]; } // ============================================================================ // ==== Window delegate // ============================================================================ - (NSString *)stringWithSavedFrame { return [projectWindow stringWithSavedFrame]; } - (void)makeKeyAndOrderFront:(id)sender { // PCLogInfo(self, @"makeKeyAndOrderFront sender: %@", [sender className]); [projectWindow makeKeyAndOrderFront:nil]; } - (void)makeKeyWindow { [projectWindow makeKeyWindow]; } - (void)orderFront:(id)sender { if (projectWindow) { [projectWindow orderFront:sender]; } } - (void)center { [projectWindow center]; } // [NSWindow close] doesn't send windowShouldClose - (void)close { [projectWindow close]; } - (void)performClose:(id)sender { [projectWindow performClose:sender]; } - (BOOL)isDocumentEdited { return [projectWindow isDocumentEdited]; } - (BOOL)isKeyWindow { return [projectWindow isKeyWindow]; } - (BOOL)makeFirstResponder:(NSResponder *)aResponder { firstResponder = aResponder; [projectWindow makeFirstResponder:firstResponder]; return YES; } - (void)windowDidBecomeKey:(NSNotification *)aNotification { [projectWindow makeMainWindow]; // [projectWindow makeFirstResponder:(NSResponder *)firstResponder]; /* PCLogInfo(self, @"windowDidBecomeKey: activeSubproject %@", [[project activeSubproject] projectName]);*/ if ([[project projectManager] rootActiveProject] != project) { if ([project activeSubproject] != nil) { [[project projectManager] setActiveProject:[project activeSubproject]]; } else { [[project projectManager] setActiveProject:project]; } } // Workaround if ([projectWindow isDocumentEdited]) { [projectWindow setDocumentEdited:NO]; [projectWindow setDocumentEdited:YES]; } } - (void)windowDidResignKey:(NSNotification *)aNotification { // [projectWindow makeFirstResponder:nil]; } - (void)windowDidBecomeMain:(NSNotification *)aNotification { } - (BOOL)windowShouldClose:(id)sender { return [project close:self]; } - (void)windowWillClose:(NSNotification *)aNotification { } - (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window { id responder; responder = [window firstResponder]; if ([responder conformsToProtocol: @protocol(CodeEditorView)]) { return [[responder editor] windowWillReturnUndoManager: window]; } return nil; } // ============================================================================ // ==== SplitView delegate // ============================================================================ // Subviews: browser and loaded files - (void)resizeVerticalSubiewsWithOldSize:(NSSize)oldSize { NSSize splitSize = [v_split frame].size; NSDictionary *projectDict = nil; NSDictionary *windowsDict = nil; NSString *browserString = nil; NSRect browserRect = NSMakeRect(0,0,0,0); NSRect boxRect; // NSLog(@"resizeVerticalSubiewsWithOldSize entered split view width: %f, height %f", splitSize.width, splitSize.height); boxRect = [v_split frame]; [v_split setFrame:boxRect]; if (splitSize.width == oldSize.width && splitSize.height == oldSize.height) { return; } // NSLog(@"resize vertical split view"); // NSLog(@"v_split %@", NSStringFromRect([v_split frame])); if (!_splitViewsRestored) { projectDict = [project projectDict]; windowsDict = [projectDict objectForKey:PCWindows]; if (windowsDict != nil) { browserString = [windowsDict objectForKey:@"ProjectBrowser"]; if (browserString != nil && ![browserString isEqualToString:@""]) { browserRect = NSRectFromString(browserString); } } // Unable to restore browser frame if (browserRect.size.width == 0 && browserRect.size.height == 0) { browserRect = NSMakeRect(0, 0, splitSize.width, splitSize.height); } [browserView setFrame:browserRect]; } // Use saved frame of ProjectBrowser only first time. Every time window is // resized use new size of subviews. /* if (_splitViewsRestored) { browserRect = [[[project projectBrowser] view] frame]; browserRect.size.height = splitSize.height; if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) { browserRect.size.width = splitSize.width; } } // Browser NSLog(@"%@ browser %@", [project projectName], NSStringFromRect(browserRect)); [browserView setFrame:browserRect];*/ // Loaded Files /* if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) { boxRect.origin.x = browserRect.size.width + [v_split dividerThickness]; boxRect.origin.y = 0; boxRect.size.width = [v_split frame].size.width - boxRect.origin.x; boxRect.size.height = [v_split frame].size.height; if (boxRect.size.width < 60) { boxRect.size.width = 60; boxRect.origin.x = [v_split frame].size.width - boxRect.size.width; } NSLog(@"%@ loadedFiles %@", [project projectName], NSStringFromRect(boxRect)); [[[project projectLoadedFiles] componentView] setFrame:boxRect]; }*/ [v_split adjustSubviews]; _splitViewsRestored = YES; } // Subviews: vertical split view and custom view - (void)resizeHorizontalSubiewsWithOldSize:(NSSize)oldSize { NSSize splitSize = [h_split frame].size; NSSize hSplitSize; NSRect vSplitRect; NSRect boxRect; // NSLog(@"resizeHorizontalSubiewsWithOldSize entered split view width: %f, height %f", splitSize.width, splitSize.height); if (splitSize.width == oldSize.width && splitSize.height == oldSize.height) { return; } // NSLog(@"resize horizontal split view"); hSplitSize = [h_split frame].size; // Vertical Split View vSplitRect = [browserView frame]; vSplitRect.origin.x = 0; vSplitRect.origin.y = 0; /* if (![self hasCustomView]) { vSplitRect.size = hSplitSize; } else {*/ vSplitRect.size.width = hSplitSize.width; /* }*/ vSplitRect = [browserView centerScanRect: vSplitRect]; [v_split setFrame:vSplitRect]; // Custom view (Editor|Builder|Launcher) /* if ([self hasCustomView]) {*/ boxRect.origin.x = 0; boxRect.origin.y = vSplitRect.size.height + [h_split dividerThickness]; boxRect.size.width = hSplitSize.width; boxRect.size.height = hSplitSize.height - boxRect.origin.y; boxRect = [customView centerScanRect: boxRect]; [customView setFrame:boxRect]; // } } - (void) splitView:(NSSplitView *)sender resizeSubviewsWithOldSize:(NSSize)oldSize { if (sender == v_split) { [self resizeVerticalSubiewsWithOldSize:oldSize]; } else { [self resizeHorizontalSubiewsWithOldSize:oldSize]; } return; } @end apps-projectcenter-master/Framework/PCSaveModified.m000066400000000000000000000077551347226342500231020ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import BOOL PCRunSaveModifiedFilesPanel(PCEditorManager *manager, NSString *defaultText, NSString *alternateText, NSString *otherText) { PCSaveModified *saveModifiedPanel; BOOL result; if (!(saveModifiedPanel = [[PCSaveModified alloc] init])) { return NO; } result = [saveModifiedPanel saveFilesWithEditorManager:manager defaultButtonText:defaultText alternateButtonText:alternateText otherButtonText:otherText]; RELEASE(saveModifiedPanel); return result; } @implementation PCSaveModified - (BOOL)saveFilesWithEditorManager:(PCEditorManager *)manager defaultButtonText:(NSString *)defaultText alternateButtonText:(NSString *)alternateText otherButtonText:(NSString *)otherText { if ([NSBundle loadNibNamed:@"SaveModified" owner:self] == NO) { NSLog(@"Error loading SaveModified NIB file!"); return NO; } editorManager = manager; // Table [filesList setCornerView:nil]; [filesList setHeaderView:nil]; [filesList setDataSource:self]; [filesList setTarget:self]; [filesList selectAll:self]; [filesList reloadData]; // Buttons [defaultButton setTitle:defaultText]; [alternateButton setTitle:alternateText]; [otherButton setTitle:otherText]; [panel makeKeyAndOrderFront:self]; [NSApp runModalForWindow:panel]; if (clickedButton == defaultButton) { [self saveSelectedFiles]; return YES; } else if (clickedButton == alternateButton) { return YES; } else if (clickedButton == otherButton) { return NO; } return YES; } - (void)dealloc { #ifdef DEBUG NSLog(@"PCSaveModified: dealloc"); #endif RELEASE(panel); [super dealloc]; } - (BOOL)saveSelectedFiles { NSArray *modifiedFiles = [editorManager modifiedFiles]; NSIndexSet *selectedRows = [filesList selectedRowIndexes]; NSArray *filesToSave = [modifiedFiles objectsAtIndexes:selectedRows]; NSEnumerator *enumerator = [filesToSave objectEnumerator]; NSString *filePath = nil; NSLog(@"SaveModified|filesToSave: %@", filesToSave); while ((filePath = [enumerator nextObject])) { [[editorManager editorForFile:filePath] saveFileIfNeeded]; } return YES; } - (void)buttonClicked:(id)sender { clickedButton = sender; [NSApp stopModal]; [panel close]; } // ============================================================================ // ==== TableView delegate // ============================================================================ - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView { if (aTableView != filesList) { return 0; } return [[editorManager modifiedFiles] count]; } - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { if (aTableView != filesList) { return nil; } return [[[editorManager modifiedFiles] objectAtIndex:rowIndex] lastPathComponent]; } @end apps-projectcenter-master/Framework/Resources/000077500000000000000000000000001347226342500220765ustar00rootroot00000000000000apps-projectcenter-master/Framework/Resources/cfile.template000066400000000000000000000015671347226342500247260ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import "$FILENAME$.h" apps-projectcenter-master/Framework/Resources/cheader.template000066400000000000000000000016571347226342500252370ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _$UCFILENAME$_H_ #define _$UCFILENAME$_H_ #endif // _$UCFILENAME$_H_ apps-projectcenter-master/Framework/Resources/class.template000066400000000000000000000016311347226342500247410ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import "$FILENAME$.h" @implementation $FILENAME$ @end apps-projectcenter-master/Framework/Resources/gsmarkup.template000066400000000000000000000001521347226342500254620ustar00rootroot00000000000000 apps-projectcenter-master/Framework/Resources/header.template000066400000000000000000000017771347226342500250770ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _$UCFILENAME$_H_ #define _$UCFILENAME$_H_ #import @interface $FILENAME$ : NSObject { } @end #endif // _$UCFILENAME$_H_ apps-projectcenter-master/Framework/Resources/ocppclass.template000066400000000000000000000020431347226342500256210ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import "$FILENAME$.h" // This is an Obj-C++ file... add what you need to mighty Objective-C // if you need, add your C++ classes @implementation $FILENAME$ @end // add your C++ methods hereapps-projectcenter-master/Framework/Resources/postamble.template000066400000000000000000000012441347226342500256220ustar00rootroot00000000000000# # GNUmakefile.postamble - Generated by ProjectCenter # # Things to do before compiling # before-all:: # Things to do after compiling # after-all:: # Things to do before installing # before-install:: # Things to do after installing # after-install:: # Things to do before uninstalling # before-uninstall:: # Things to do after uninstalling # after-uninstall:: # Things to do before cleaning # before-clean:: # Things to do after cleaning # after-clean:: # Things to do before distcleaning # before-distclean:: # Things to do after distcleaning # after-distclean:: # Things to do before checking # before-check:: # Things to do after checking # after-check:: apps-projectcenter-master/Framework/Resources/protocol.template000066400000000000000000000016061347226342500254770ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Copyright (C) $YEAR$ Free Software Foundation Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ @protocol $FILENAME$ @end apps-projectcenter-master/GNUmakefile000066400000000000000000000062561347226342500202520ustar00rootroot00000000000000# # GNUmakefile # ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) endif ifeq ($(GNUSTEP_MAKEFILES),) $(error You need to set GNUSTEP_MAKEFILES before compiling!) endif PACKAGE_NAME = ProjectCenter export PACKAGE_NAME include $(GNUSTEP_MAKEFILES)/common.make # # Main application # VERSION = 0.6.2 APP_NAME = ProjectCenter ProjectCenter_APPLICATION_ICON = Images/ProjectCenter.tiff # # SVN information for releases # CVS_MODULE_NAME = projectcenter SVN_MODULE_NAME = projectcenter SVN_BASE_URL = svn+ssh://svn.gna.org/svn/gnustep/apps # # Subprojects # SUBPROJECTS = \ Framework \ Modules # # Resource files # ProjectCenter_RESOURCE_FILES = \ Resources/Info-gnustep.plist \ Images/ProjectCenter.tiff \ Images/FileProject.tiff \ Images/Build.tiff \ Images/Clean.tiff \ Images/Debug.tiff \ Images/Files.tiff \ Images/Find.tiff \ Images/Inspector.tiff \ Images/Install.tiff \ Images/MultiFiles.tiff \ Images/Options.tiff \ Images/Run.tiff \ Images/Stop.tiff \ Images/ProjectCenter_add.tiff \ Images/ProjectCenter_cvs.tiff \ Images/ProjectCenter_dist.tiff \ Images/ProjectCenter_documentation.tiff \ Images/ProjectCenter_profile.tiff \ Images/ProjectCenter_rpm.tiff \ Images/ProjectCenter_uml.tiff \ Images/classSuitcase.tiff \ Images/classSuitcaseH.tiff \ Images/genericSuitcase.tiff \ Images/genericSuitcaseH.tiff \ Images/headerSuitcase.tiff \ Images/headerSuitcaseH.tiff \ Images/helpSuitcase.tiff \ Images/helpSuitcaseH.tiff \ Images/iconSuitcase.tiff \ Images/iconSuitcaseH.tiff \ Images/librarySuitcase.tiff \ Images/librarySuitcaseH.tiff \ Images/nibSuitcase.tiff \ Images/nibSuitcaseH.tiff \ Images/otherSuitcase.tiff \ Images/otherSuitcaseH.tiff \ Images/projectSuitcase.tiff \ Images/projectSuitcaseH.tiff \ Images/soundSuitcase.tiff \ Images/soundSuitcaseH.tiff \ Images/subprojectSuitcase.tiff \ Images/subprojectSuitcaseH.tiff \ Modules/Projects/Aggregate/Aggregate.project \ Modules/Projects/Application/Application.project \ Modules/Projects/Bundle/Bundle.project \ Modules/Projects/Framework/Framework.project \ Modules/Projects/Library/Library.project \ Modules/Projects/ResourceSet/ResourceSet.project \ Modules/Projects/Tool/Tool.project \ Modules/Editors/ProjectCenter/ProjectCenter.editor \ Modules/Parsers/ProjectCenter/ProjectCenter.parser \ Modules/Debuggers/ProjectCenter/ProjectCenter.debugger \ Modules/Preferences/Build/Build.preferences \ Modules/Preferences/Saving/Saving.preferences \ Modules/Preferences/Misc/Misc.preferences \ Modules/Preferences/EditorFSC/EditorFSC.preferences # # Localization # ProjectCenter_LOCALIZED_RESOURCE_FILES = \ ProjectCenter.gorm \ Info.gorm \ Preferences.gorm ProjectCenter_LANGUAGES = \ English # # Header files # ProjectCenter_HEADERS = \ Headers/PCAppController.h \ Headers/PCInfoController.h \ Headers/PCMenuController.h \ Headers/PCPrefController.h # # Class files # ProjectCenter_OBJC_FILES = \ PCAppController.m \ PCInfoController.m \ PCMenuController.m \ PCPrefController.m \ ProjectCenter_main.m -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble include $(GNUSTEP_MAKEFILES)/Master/nsis.make apps-projectcenter-master/GNUmakefile.postamble000066400000000000000000000021051347226342500222240ustar00rootroot00000000000000# # GNUmakefile.postamble # # Copyright (C) 2001-2005 Free Software Foundation, Inc. # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. before-all:: before-install:: mkdir -p Framework/ProjectCenter.framework/Headers/Protocols cp -r Headers/Protocols/*.h Framework/ProjectCenter.framework/Headers/Protocols after-clean:: after-uninstall:: apps-projectcenter-master/GNUmakefile.preamble000066400000000000000000000034441347226342500220340ustar00rootroot00000000000000# GNUmakefile.preamble # # Copyright (C) 2001-2005 Free Software Foundation, Inc. # # This file is part of GNUstep # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # If you are interested in a warranty or support for this source code, # contact Scott Christley at scottc@net-community.com # # You should have received a copy of the GNU Library General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Flags dealing with compiling and linking # # Additional flags to pass to the preprocessor ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += -DDEVELOPMENT # Additional flags to pass to the C compiler ADDITIONAL_CFLAGS += # Additional include directories the compiler should search ADDITIONAL_INCLUDE_DIRS += -I./ -I./Headers # Additional LDFLAGS to pass to the linker ADDITIONAL_LDFLAGS += # Additional library directories the linker should search ADDITIONAL_LIB_DIRS += -L./Framework/ProjectCenter.framework/$(GNUSTEP_TARGET_LDIR) # Additional LDFLAGS to pass to the linker ADDITIONAL_GUI_LIBS += -lProjectCenter # # Flags dealing with installing and uninstalling # # Additional directories to be created during installation ADDITIONAL_INSTALL_DIRS += apps-projectcenter-master/Headers/000077500000000000000000000000001347226342500175425ustar00rootroot00000000000000apps-projectcenter-master/Headers/PCAppController.h000066400000000000000000000047731347226342500227350ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2012 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCAPPCONTROLLER_H #define _PCAPPCONTROLLER_H #import @class PCProjectManager; @class PCFileManager; @class PCMenuController; @class PCInfoController; @class PCPrefController; @class PCLogController; @interface PCAppController : NSObject { PCProjectManager *projectManager; PCMenuController *menuController; PCInfoController *infoController; PCPrefController *prefController; PCLogController *logController; NSConnection *doConnection; } //============================================================================ //==== Intialization & deallocation //============================================================================ + (void)initialize; - (id)init; - (void)dealloc; //============================================================================ //==== Accessory methods //============================================================================ - (PCProjectManager *)projectManager; - (PCMenuController *)menuController; - (PCInfoController *)infoController; - (PCPrefController *)prefController; - (PCLogController *)logController; //============================================================================ //==== Application //============================================================================ - (BOOL)application:(NSApplication *)application openFile:(NSString *)fileName; - (void)applicationWillFinishLaunching:(NSNotification *)notification; - (void)applicationDidFinishLaunching:(NSNotification *)notification; - (NSApplicationTerminateReply)applicationShouldTerminate:(id)sender; - (void)applicationWillTerminate:(NSNotification *)notification; @end #endif apps-projectcenter-master/Headers/PCInfoController.h000066400000000000000000000022061347226342500230750ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCINFOCONTROLLER_H #define _PCINFOCONTROLLER_H #import @interface PCInfoController : NSObject { id infoWindow; id versionField; NSDictionary *infoDict; } - (id)init; - (void)dealloc; - (void)showInfoWindow:(id)sender; @end #endif apps-projectcenter-master/Headers/PCMenuController.h000066400000000000000000000064371347226342500231200ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCMENUCONTROLLER_H #define _PCMENUCONTROLLER_H #import @class PCProjectManager; @class PCFileManager; @class PCAppController; @interface PCMenuController : NSObject { PCProjectManager *projectManager; PCAppController *appController; BOOL editorIsActive; } //============================================================================ //==== Init and free //============================================================================ - (id)init; - (void)dealloc; - (void)setAppController:(id)anObject; - (void)setProjectManager:(id)anObject; //============================================================================ //==== Menu stuff //============================================================================ // Info - (void)showInfoPanel:(id)sender; - (void)showPrefWindow:(id)sender; - (void)showLogPanel:(id)sender; // Project - (void)projectOpen:(id)sender; - (void)projectNew:(id)sender; - (void)projectSave:(id)sender; - (void)projectAddFiles:(id)sender; - (void)projectSaveFiles:(id)sender; - (void)projectRemoveFiles:(id)sender; - (void)projectClose:(id)sender; // Subproject - (void)subprojectNew:(id)sender; - (void)subprojectAdd:(id)sender; // File - (void)fileNew:(id)sender; - (void)fileOpen:(id)sender; - (void)fileSave:(id)sender; - (void)fileSaveAs:(id)sender; - (void)fileSaveTo:(id)sender; - (void)fileRevertToSaved:(id)sender; - (void)fileClose:(id)sender; - (void)fileOpenQuickly:(id)sender; - (void)fileRename:(id)sender; - (void)fileNewUntitled:(id)sender; // Tools - (void)showInspector:(id)sender; - (void)showEditorPanel:(id)sender; // Project Build - (void)showBuildPanel:(id)sender; - (void)executeBuild:(id)sender; - (void)stopBuild:(id)sender; - (void)startClean:(id)sender; // Loaded Files - (void)showLoadedFilesPanel:(id)sender; - (void)loadedFilesSortByTime:(id)sender; - (void)loadedFilesSortByName:(id)sender; - (void)loadedFilesNextFile:(id)sender; - (void)loadedFilesPreviousFile:(id)sender; // Launcher - (void)showLaunchPanel:(id)sender; - (void)runTarget:(id)sender; - (void)debugTarget:(id)sender; //============================================================================ //==== Delegate stuff //============================================================================ - (BOOL)validateMenuItem:(id )menuItem; - (void)editorDidBecomeActive:(NSNotification *)aNotif; - (void)editorDidResignActive:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Headers/PCPrefController.h000066400000000000000000000027211347226342500231000ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2008 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCPREFCONTROLLER_H #define _PCPREFCONTROLLER_H #import #import @interface PCPrefController : NSObject { NSMutableDictionary *sectionsDict; IBOutlet NSPanel *panel; IBOutlet NSPopUpButton *popupButton; IBOutlet NSBox *sectionsView; IBOutlet NSBox *bundlesView; IBOutlet NSTextField *bundlePathField; } + (PCPrefController *)sharedPCPreferences; - (id)init; - (void)dealloc; - (void)loadPrefsSections; - (void)showPanel:(id)sender; - (void)popupChanged:(id)sender; @end #endif apps-projectcenter-master/Headers/ProjectCenter/000077500000000000000000000000001347226342500223115ustar00rootroot00000000000000apps-projectcenter-master/Headers/ProjectCenter/PCAddFilesPanel.h000066400000000000000000000027531347226342500253470ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCAddFilesPanel_h_ #define _PCAddFilesPanel_h_ //#import #import @interface PCAddFilesPanel : NSOpenPanel { NSBox *fileTypeAccessaryView; NSPopUpButton *fileTypePopup; } + (PCAddFilesPanel *)addFilesPanel; - (void)setCategories:(NSArray *)categories; - (void)selectCategory:(NSString *)category; - (NSString *)selectedCategory; - (void)setFileTypes:(NSArray *)fileTypes; - (void)filesForAddPopupClicked:(id)sender; @end @interface NSObject (PCAddFilesPanelDelegate) - (void)categoryChangedTo:(NSString *)category; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCAuxiliaryWindow.h000066400000000000000000000017011347226342500260430ustar00rootroot00000000000000/* PCAuxiliaryWindow.h Author: German A. Arias Date: September 2013 This file is part of ProjectCenter. ProjectCenter 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 3 of the License, or (at your option) any later version. This application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import @interface PCAuxiliaryWindow : NSWindow { } @end apps-projectcenter-master/Headers/ProjectCenter/PCBundleManager.h000066400000000000000000000056411347226342500254170ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Author: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCBundleManager_h_ #define _PCBundleManager_h_ #include @interface PCBundleManager : NSObject { NSMutableDictionary *loadedBundles; NSMutableDictionary *bundlesInfo; } //---------------------------------------------------------------------------- // Init and free methods //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (NSString *)resourcePath; // --- Handling of bundles' Info.table dictionaries without actual // --- bundles loading - (NSDictionary *)infoForBundlesType:(NSString *)extension; // Key value can be checked against NSString and NSArray values only. - (NSDictionary *)infoForBundleType:(NSString *)extension keyName:(NSString *)key keyContains:(NSString *)value; - (NSDictionary *)infoForBundleName:(NSString *)name type:(NSString *)type; - (NSString *)classNameForBundleType:(NSString*)type fileName:(NSString *)fileName; - (NSString *)bundlePathWithName:(NSString *)bundleName; // --- Invokes loading of bundle - (id)objectForClassName:(NSString *)className bundleType:(NSString *)bundleExtension protocol:(Protocol *)proto; - (id)objectForBundleWithName:(NSString *)name type:(NSString *)extension protocol:(Protocol *)proto; - (id)objectForBundleType:(NSString *)extension protocol:(Protocol *)proto fileName:(NSString *)fileName; - (NSBundle *)bundleOfType:(NSString *)type withClassName:(NSString *)className; // --- Bundle loading - (BOOL)loadBundleIfNeededWithName:(NSString *)bundleName; // Load all bundles found in the BundlePaths - (void)loadBundlesWithExtension:(NSString *)extension; - (void)loadBundlesAtPath:(NSString *)path withExtension:(NSString *)extension; - (BOOL)loadBundleWithFullPath:(NSString *)path; // Returns all loaded ProjectCenter bundles. - (NSDictionary *)loadedBundles; @end @interface NSObject (BundleManagerDelegates) - (void)bundleLoader:(id)sender didLoadBundle:(NSBundle *)aBundle; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCButton.h000066400000000000000000000020741347226342500241630ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2019 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of ProjectCenter. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCButton_h_ #define _PCButton_h_ #import /* * Button */ @interface PCButton : NSButton { } @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCDefines.h000066400000000000000000000177301347226342500242720ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2010 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCDefines_h_ #define _PCDefines_h_ #define PC_EXTERN extern #define PRIVATE_EXTERN __private_extern__ #define Compiler @"Compiler" #define BundlePaths @"BundlePaths" #define PCAppDidInitNotification @"PCAppDidInit" #define PCAppWillTerminateNotification @"PCAppWillTerminate" #define NIB_NOT_FOUND_EXCEPTION @"NibNotFoundException" #define UNKNOWN_PROJECT_TYPE_EXCEPTION @"UnknownProjectTypeException" #define NOT_A_PROJECT_TYPE_EXCEPTION @"NoProjectTypeCreatorException" #define PROJECT_CREATION_EXCEPTION @"ProjectCreationException" #define PROJECT_OPEN_FAILED_EXCEPTION @"ProjectOpenFailedException" #define PROJECT_SAVE_FAILED_EXCEPTION @"ProjectSaveFailedException" #define BUNDLE_MANAGER_EXCEPTION @"BundleManagerException" //============================================================================= // ==== MacOS X portability defines //============================================================================= #ifndef GNUSTEP #define RETAIN(object) [object retain] #define RELEASE(object) [object release] #define AUTORELEASE(object) [object autorelease] #define TEST_RELEASE(object) ({ if (object) [object release]; }) #define ASSIGN(object,value) ({\ id __value = (id)(value); \ id __object = (id)(object); \ if (__value != __object) \ { \ if (__value != nil) \ { \ [__value retain]; \ } \ object = __value; \ if (__object != nil) \ { \ [__object release]; \ } \ } \ }) #define DESTROY(object) ({ \ if (object) \ { \ id __o = object; \ object = nil; \ [__o release]; \ } \ }) #define NSLocalizedString(key, comment) \ [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] #define _(X) NSLocalizedString (X, @"") #endif // GNUSTEP_BASE_VERSION // // ==== From PCProject.h // #ifndef IMAGE #define IMAGE(X) [NSImage imageNamed:(X)] #endif //============================================================================= // ==== Not used yet //============================================================================= #define TOUCHED_NOTHING (0) #define TOUCHED_EVERYTHING (1 << 0) #define TOUCHED_PROJECT_NAME (1 << 1) #define TOUCHED_LANGUAGE (1 << 2) #define TOUCHED_PROJECT_TYPE (1 << 3) #define TOUCHED_INSTALL_DIR (1 << 4) #define TOUCHED_ICON_NAMES (1 << 5) #define TOUCHED_FILES (1 << 6) #define TOUCHED_MAINNIB (1 << 7) #define TOUCHED_PRINCIPALCLASS (1 << 8) #define TOUCHED_TARGETS (1 << 9) #define TOUCHED_PB_PROJECT (1 << 10) #define TOUCHED_SYST_EXT (1 << 11) #define TOUCHED_EXTENSION (1 << 12) #define TOUCHED_PATHS (1 << 13) typedef int PCProjInfoBits; //============================================================================= // ==== Project keys //============================================================================= #import static NSString * const PCLastEditing = @"LAST_EDITING"; static NSString * const PCWindows = @"PC_WINDOWS"; static NSString * const PCClasses = @"CLASS_FILES"; static NSString * const PCHeaders = @"HEADER_FILES"; static NSString * const PCOtherSources = @"OTHER_SOURCES"; static NSString * const PCInterfaces = @"INTERFACES"; static NSString * const PCImages = @"IMAGES"; static NSString * const PCOtherResources = @"OTHER_RESOURCES"; static NSString * const PCSubprojects = @"SUBPROJECTS"; static NSString * const PCDocuFiles = @"DOCU_FILES"; static NSString * const PCSupportingFiles = @"SUPPORTING_FILES"; static NSString * const PCLibraries = @"LIBRARIES"; static NSString * const PCNonProject = @"NON_PROJECT_FILES"; static NSString * const PCGSMarkupFiles = @"INTERFACES"; static NSString * const PCLanguage = @"LANGUAGE"; static NSString * const PCUserLanguages = @"USER_LANGUAGES"; static NSString * const PCLocalizedResources = @"LOCALIZED_RESOURCES"; static NSString * const PCBuildTool = @"BUILDTOOL"; static NSString * const PCCompilerOptions = @"COMPILEROPTIONS"; static NSString * const PCPreprocessorOptions = @"CPPOPTIONS"; static NSString * const PCCreationDate = @"CREATION_DATE"; static NSString * const PCInstallDomain = @"INSTALLDOMAIN"; static NSString * const PCLinkerOptions = @"LINKEROPTIONS"; static NSString * const PCObjCCompilerOptions = @"OBJC_COMPILEROPTIONS"; static NSString * const PCPrincipalClass = @"PRINCIPAL_CLASS"; static NSString * const PCAuthors = @"PROJECT_AUTHORS"; static NSString * const PCBundleIdentifier = @"BUNDLE_IDENTIFIER"; static NSString * const PCCopyright = @"PROJECT_COPYRIGHT"; static NSString * const PCCopyrightDescription = @"PROJECT_COPYRIGHT_DESC"; static NSString * const PCProjectCreator = @"PROJECT_CREATOR"; static NSString * const PCDescription = @"PROJECT_DESCRIPTION"; static NSString * const PCDocumentExtensions = @"PROJECT_DOCUMENTEXTENSIONS"; static NSString * const PCDocumentTypes = @"PROJECT_DOCUMENTTYPES"; static NSString * const PCGroup = @"PROJECT_GROUP"; static NSString * const PCProjectMaintainer = @"PROJECT_MAINTAINER"; static NSString * const PCProjectName = @"PROJECT_NAME"; static NSString * const PCRelease = @"PROJECT_RELEASE"; static NSString * const PCSummary = @"PROJECT_SUMMARY"; static NSString * const PCProjectType = @"PROJECT_TYPE"; static NSString * const PCURL = @"PROJECT_URL"; static NSString * const PCSearchHeaders = @"SEARCH_HEADER_DIRS"; static NSString * const PCSearchLibs = @"SEARCH_LIB_DIRS"; // Project Builder options static NSString * const PCBuilderTargets = @"BUILDER_TARGETS"; static NSString * const PCBuilderArguments = @"BUILDER_ARGS"; static NSString * const PCBuilderDebug = @"BUILDER_DEBUG"; static NSString * const PCBuilderStrip = @"BUILDER_STRIP"; static NSString * const PCBuilderVerbose = @"BUILDER_VERBOSE"; static NSString * const PCBuilderSharedLibs = @"BUILDER_SHARED_LIBS"; // Application specific static NSString * const PCAppIcon = @"APPLICATIONICON"; static NSString * const PCMainInterfaceFile = @"MAININTERFACE"; static NSString * const PCHelpFile = @"HELP_FILE"; static NSString * const PCDocumentBasedApp = @"APP_DOCUMENT_BASED"; static NSString * const PCAppType = @"APP_TYPE"; // Library specific static NSString * const PCPublicHeaders = @"PUBLIC_HEADERS"; static NSString * const PCHeadersInstallDir = @"HEADERS_INSTALL_DIR"; // Bundle specific static NSString * const PCBundleExtension = @"BUNDLE_EXTENSION"; // Tool specific static NSString * const PCToolIcon = @"TOOLICON"; static NSString * const PCPackageName = @"PACKAGE_NAME"; static NSString * const PCLibraryVar = @"LIBRARY_VAR"; // Will be removed (compatibility) static NSString * const PCProjectBuilderClass = @"PROJECT_BUILDER"; #endif // _PCDEFINES_H_ apps-projectcenter-master/Headers/ProjectCenter/PCEditorManager.h000066400000000000000000000076211347226342500254340ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCEditorManager_h_ #define _PCEditorManager_h_ #import #import #import @class PCProjectManager; @interface PCEditorManager : NSObject { PCProjectManager *_projectManager; NSMutableDictionary *_editorsDict; id _activeEditor; NSString *editorName; } // =========================================================================== // ==== Initialisation // =========================================================================== - (id)init; - (void)dealloc; - (PCProjectManager *)projectManager; - (void)setProjectManager:(PCProjectManager *)aProjectManager; - (void)loadPreferences:(NSNotification *)aNotification; // =========================================================================== // ==== Project and Editor handling // =========================================================================== // Returns nil if editor is not opened - (id)editorForFile:(NSString *)filePath; - (id)openEditorForFile:(NSString *)path editable:(BOOL)editable windowed:(BOOL)windowed; - (void)orderFrontEditorForFile:(NSString *)path; - (id)activeEditor; - (void)setActiveEditor:(id)anEditor; - (NSArray *)allEditors; - (void)closeActiveEditor:(id)sender; - (void)closeEditorForFile:(NSString *)file; - (NSArray *)modifiedFiles; - (BOOL)hasModifiedFiles; - (BOOL)reviewUnsaved:(NSArray *)modifiedFiles; - (BOOL)closeAllEditors; // =========================================================================== // ==== File handling // =========================================================================== - (BOOL)saveAllFiles; - (BOOL)saveFile; - (BOOL)saveFileAs:(NSString *)file; - (BOOL)saveFileTo:(NSString *)file; - (BOOL)revertFileToSaved; // =========================================================================== // ==== Delegate // =========================================================================== - (void)editorDidOpen:(NSNotification *)aNotif; - (void)editorDidClose:(NSNotification *)aNotif; - (void)editorDidBecomeActive:(NSNotification *)aNotif; - (void)editorDidResignActive:(NSNotification *)aNotif; - (void)editorDidChangeFileName:(NSNotification *)aNotif; @end extern NSString *PCEditorDidChangeFileNameNotification; extern NSString *PCEditorWillOpenNotification; extern NSString *PCEditorDidOpenNotification; extern NSString *PCEditorWillCloseNotification; extern NSString *PCEditorDidCloseNotification; extern NSString *PCEditorWillChangeNotification; extern NSString *PCEditorDidChangeNotification; extern NSString *PCEditorWillSaveNotification; extern NSString *PCEditorDidSaveNotification; extern NSString *PCEditorWillRevertNotification; extern NSString *PCEditorDidRevertNotification; extern NSString *PCEditorDidBecomeActiveNotification; extern NSString *PCEditorDidResignActiveNotification; /* extern NSString *PCEditorSaveDidFailNotification; */ #endif apps-projectcenter-master/Headers/ProjectCenter/PCFileCreator.h000066400000000000000000000051201347226342500251020ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2015 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCFileCreator_h_ #define _PCFileCreator_h_ #import #define ProtocolFile @"Objective-C Protocol" #define ObjCClass @"Objective-C Class" #define ObjCHeader @"Objective-C Header" #define CFile @"C File" #define CHeader @"C Header" #define ObjCppClass @"Objective-C++ Class" #define GSMarkupFile @"GNUstep Markup" @class PCProject; @interface PCFileCreator : NSObject { PCProject *activeProject; NSMutableString *file; // New File in Project panel IBOutlet NSPanel *newFilePanel; IBOutlet NSImageView *nfImage; IBOutlet NSPopUpButton *nfTypePB; IBOutlet NSTextView *nfDescriptionTV; IBOutlet NSTextField *nfNameField; IBOutlet NSButton *nfCancelButton; IBOutlet NSButton *nfCreateButton; IBOutlet NSButton *nfAddHeaderButton; } + (id)sharedCreator; - (NSDictionary *)creatorDictionary; - (void)newFileInProject:(PCProject *)aProject; - (void)createFileOfType:(NSString *)fileType path:(NSString *)path project:(PCProject *)project; // Return list of file paths for creation - (NSDictionary *)filesToCreateForFileOfType:(NSString *)type path:(NSString *)path withComplementary:(BOOL)complementary; - (BOOL)createFiles:(NSDictionary *)fileList inProject:(PCProject *)aProject; - (void)replaceTagsInFileAtPath:(NSString *)newFile withProject:(PCProject *)aProject; @end @interface PCFileCreator (UInterface) - (void)showNewFilePanel; - (void)closeNewFilePanel:(id)sender; - (void)createFile:(id)sender; - (void)newFilePopupChanged:(id)sender; - (void)controlTextDidChange:(NSNotification *)aNotif; - (BOOL)createFile; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCFileManager.h000066400000000000000000000105401347226342500250570ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCFileManager_h_ #define _PCFileManager_h_ //#import #import @class PCProject; @class PCProjectManager; @class PCAddFilesPanel; enum { PCOpenFileOperation, PCSaveFileOperation, PCAddFileOperation, PCOpenProjectOperation, PCOpenDirectoryOperation }; @interface PCFileManager : NSObject { PCProjectManager *projectManager; id delegate; // PCProjectManager // New File in Project panel IBOutlet NSPanel *newFilePanel; IBOutlet NSImageView *nfImage; IBOutlet NSPopUpButton *nfTypePB; IBOutlet NSTextView *nfDescriptionTV; IBOutlet NSTextField *nfNameField; IBOutlet NSButton *nfCancleButton; IBOutlet NSButton *nfCreateButton; PCAddFilesPanel *addFilesPanel; int operation; } //============================================================================== // ==== Class methods //============================================================================== + (PCFileManager *)defaultManager; //============================================================================== // ==== Init and free //============================================================================== - (id)initWithProjectManager:(PCProjectManager *)aProjectManager; - (void)dealloc; // =========================================================================== // ==== File stuff // =========================================================================== // Checks if directories in path exists and creates if not. - (BOOL)createDirectoriesIfNeededAtPath:(NSString *)path; // Create directories in toFile path if needed - (BOOL)copyFile:(NSString *)file toFile:(NSString *)toFile; // Calls copyFile:toFile: - (BOOL)copyFile:(NSString *)file intoDirectory:(NSString *)directory; // Calls copyFile:intoDirectory in cycle - (BOOL)copyFiles:(NSArray *)files intoDirectory:(NSString *)directory; // Calls copyFile:intoDirectory: - (BOOL)copyFile:(NSString *)file fromDirectory:(NSString *)fromDir intoDirectory:(NSString *)toDir; // If directory is empty remove it recursively - (BOOL)removeDirectoriesIfEmptyAtPath:(NSString *)path; // Remove 'file' located in 'directory' - (BOOL)removeFile:(NSString *)file fromDirectory:(NSString *)directory removeDirsIfEmpty:(BOOL)removeDirs; // Remove file with full path 'file' - (BOOL)removeFileAtPath:(NSString *)file removeDirsIfEmpty:(BOOL)removeDirs; // Remove array of files from directory - (BOOL)removeFiles:(NSArray *)files fromDirectory:(NSString *)directory removeDirsIfEmpty:(BOOL)removeDirs; - (BOOL)moveFile:(NSString *)file intoDirectory:(NSString *)directory; // find an executable from list and return full path - (NSString*) findExecutableToolFrom: (NSArray*)candidates; @end @interface PCFileManager (UInterface) // Shows panel and return selected files if any - (NSMutableArray *)filesOfTypes:(NSArray *)types operation:(int)op multiple:(BOOL)yn title:(NSString *)title accView:(NSView *)accessoryView; @end @interface PCFileManager (Misc) - (BOOL)isTextFile:(NSString *)filename; // Return list of files and directories absolute paths that has // specified 'extension' at directory 'dirPath'. If 'incDirs' // has value YES also include directories in this list. - (NSArray *)filesWithExtension:(NSString *)extension atPath:(NSString *)dirPath includeDirs:(BOOL)incDirs; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCFileNameField.h000066400000000000000000000022351347226342500253330ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCFileNameField_h_ #define _PCFileNameField_h_ @class NSTextField; extern NSString *PCFileNameFieldNoFiles; @interface PCFileNameField : NSTextField { } - (void)setEditableField:(BOOL)yn; - (BOOL)textShouldSetEditable:(NSString *)text; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCFileNameIcon.h000066400000000000000000000032751347226342500252050ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2005 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCFileNameIcon_h_ #define _PCFileNameIcon_h_ @class NSImageView; @interface PCFileNameIcon : NSImageView { NSString *filePath; NSTextField *fileNameField; id delegate; } - (void)setFileNameField:(NSTextField *)field; - (void)setDelegate:(id)object; - (void)updateIcon; @end @interface PCFileNameIcon (FileNameIconDelegate) // --- NSDraggingDestination protocol methods - (NSImage *)fileNameIconImage; - (NSString *)fileNameIconTitle; - (NSString *)fileNameIconPath; - (BOOL)canPerformDraggingOf:(NSArray *)paths; - (BOOL)prepareForDraggingOf:(NSArray *)paths; - (BOOL)performDraggingOf:(NSArray *)paths; - (BOOL)concludeDraggingOf:(NSArray *)paths; // --- NSDraggingSource protocol methods - (void)draggedImage:(NSImage *)anImage beganAt:(NSPoint)aPoint; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCLogController.h000066400000000000000000000032221347226342500254710ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCLOGCONTROLLER_H #define _PCLOGCONTROLLER_H #import #define INFO 0 #define STATUS 1 #define WARNING 2 #define ERROR 3 // --- Functions void PCLog(id sender, int tag, NSString* format, va_list args); void PCLogInfo(id sender, NSString* format, ...); void PCLogStatus(id sender, NSString* format, ...); void PCLogWarning(id sender, NSString* format, ...); void PCLogError(id sender, NSString* format, ...); @interface PCLogController : NSObject { IBOutlet NSPanel *panel; IBOutlet NSTextView *textView; NSMutableDictionary *textAttributes; } + (PCLogController *)sharedLogController; - (void)showPanel; - (void)logMessage:(NSString *)message withTag:(int)tag sender:(id)sender; - (void)putMessageOnScreen:(NSAttributedString *)message; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCMakefileFactory.h000066400000000000000000000037671347226342500257670ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCMakefileFactory_h_ #define _PCMakefileFactory_h_ #import @class PCProject; @interface PCMakefileFactory : NSObject { NSMutableString *mfile; NSString *pnme; } + (PCMakefileFactory *)sharedFactory; - (void)createMakefileForProject:(PCProject *)project; - (BOOL)createPreambleForProject:(PCProject *)project; - (BOOL)createPostambleForProject:(PCProject *)project; - (void)appendString:(NSString *)aString; - (void)appendLibraries:(NSArray *)array; - (void)appendHeaders:(NSArray *)array; - (void)appendHeaders:(NSArray *)array forTarget:(NSString *)target; - (void)appendClasses:(NSArray *)array; - (void)appendClasses:(NSArray *)array forTarget:(NSString *)target; - (void)appendOtherSources:(NSArray *)array; - (void)appendOtherSources:(NSArray *)array forTarget:(NSString *)target; - (void)appendResources:(NSArray *)array inDir:(NSString *)dir; - (void)appendLocalizedResources:(NSArray *)resources forLanguages:(NSArray *)languages; - (void)appendSubprojects:(NSArray*)array; - (NSData *)encodedMakefile; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProject.h000066400000000000000000000170111347226342500243130ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProject_h_ #define _PCProject_h_ #import @class PCProjectManager; @class PCProjectWindow; @class PCProjectBrowser; @class PCProjectLoadedFiles; @class PCProjectInspector; @class PCProjectBuilder; @class PCProjectLauncher; @class PCProjectEditor; extern NSString *PCProjectDictDidChangeNotification; extern NSString *PCProjectDictDidSaveNotification; extern NSString *PCProjectBreakpointNotification; @interface PCProject : NSObject { PCProjectManager *projectManager; PCProjectWindow *projectWindow; PCProjectBrowser *projectBrowser; PCProjectLoadedFiles *projectLoadedFiles; PCProjectEditor *projectEditor; PCProjectBuilder *projectBuilder; PCProjectLauncher *projectLauncher; // Preferences BOOL rememberWindows; BOOL keepBackup; NSMutableDictionary *projectDict; NSString *projectName; NSString *projectPath; NSArray *rootKeys; // e.g. CLASS_FILES NSArray *rootCategories; // e.g. Classes NSDictionary *rootEntries; // Initialised by subclasses NSMutableDictionary *buildOptions; PCProject *activeSubproject; // Subproject NSMutableArray *loadedSubprojects; BOOL isSubproject; PCProject *rootProject; PCProject *superProject; NSFileWrapper *projectFileWrapper; NSString *wrapperPath; } // ============================================================================ // ==== Init and free // ============================================================================ - (id)init; - (PCProject *)openWithWrapperAt:(NSString *)path; - (void)dealloc; - (void)loadPreferences:(NSNotification *)aNotification; // ============================================================================ // ==== Project handling // ============================================================================ - (BOOL)assignProjectDict:(NSDictionary *)pDict atPath:(NSString *)pPath; //- (BOOL)assignProjectDict:(NSDictionary *)aDict; - (BOOL)isValidDictionary:(NSDictionary *)aDict; // Validates the project dictionary and inserts missing keys if needed. // It calls isValidDictionary to validate. - (void)validateProjectDict; - (void)setProjectDictObject:(id)object forKey:(NSString *)key notify:(BOOL)yn; - (void)updateProjectDict; - (NSDictionary *)projectDict; - (NSString *)projectName; - (void)setProjectName:(NSString *)aName; - (NSString *)projectPath; - (void)setProjectPath:(NSString *)aPath; - (BOOL)isProjectChanged; // Subclasses need to call this before their customised implementation! - (BOOL)writeMakefile; - (BOOL)saveProjectWindowsAndPanels; - (BOOL)save; - (BOOL)close:(id)sender; // ============================================================================ // ==== Accessory methods // ============================================================================ - (PCProjectManager *)projectManager; - (void)setProjectManager:(PCProjectManager *)aManager; - (PCProjectWindow *)projectWindow; - (PCProjectBrowser *)projectBrowser; - (PCProjectLoadedFiles *)projectLoadedFiles; - (PCProjectBuilder *)projectBuilder; - (PCProjectLauncher *)projectLauncher; - (PCProjectEditor *)projectEditor; // =========================================================================== // ==== Can be overriden // =========================================================================== // Project Attributes Inspector - (NSView *)projectAttributesView; //--- Properties from Info.table - (NSDictionary *)projectBundleInfoTable; - (NSString *)projectTypeName; - (Class)builderClass; - (NSString *)projectDescription; - (BOOL)isExecutable; - (BOOL)canHavePublicHeaders; - (NSArray *)publicHeaders; - (void)setHeaderFile:(NSString *)file public:(BOOL)yn; - (NSArray *)localizedResources; - (NSString *)resourceDirForLanguage:(NSString *)language; - (void)setResourceFile:(NSString *)file localizable:(BOOL)yn; - (NSArray *)buildTargets; // Files placed into / - (NSArray *)sourceFileKeys; // Files placed into /Resources or /Language.lproj - (NSArray *)resourceFileKeys; - (NSArray *)otherKeys; - (NSArray *)allowableSubprojectTypes; - (NSArray *)localizableKeys; - (BOOL)isEditableCategory:(NSString *)category; - (BOOL)isEditableFile:(NSString *)filePath; - (NSArray *)fileTypesForCategoryKey:(NSString *)key; - (NSString *)categoryKeyForFileType:(NSString *)type; - (NSString *)dirForCategoryKey:(NSString *)key; - (NSString *)complementaryTypeForType:(NSString *)type; // ============================================================================ // ==== File Handling // ============================================================================ // Returns file path taking into account localizable resources - (NSString *)pathForFile:(NSString *)file forKey:(NSString *)key; // Remove path from "file" and handle special cases like libraries - (NSString *)projectFileFromFile:(NSString *)file forKey:(NSString *)type; // Returns YES if type is a valid key and file is not contained in the // project already - (BOOL)doesAcceptFile:(NSString *)file forKey:(NSString *)key; - (BOOL)addAndCopyFiles:(NSArray *)files forKey:(NSString *)key; - (void)addFiles:(NSArray *)files forKey:(NSString *)key notify:(BOOL)yn; - (BOOL)removeFiles:(NSArray *)files forKey:(NSString *)key notify:(BOOL)yn; - (BOOL)renameFile:(NSString *)fromFile toFile:(NSString *)toFile; // ============================================================================ // ==== Subprojects // ============================================================================ - (NSArray *)loadedSubprojects; - (PCProject *)activeSubproject; - (BOOL)isSubproject; - (void)setIsSubproject:(BOOL)yn; - (PCProject *)superProject; - (void)setSuperProject:(PCProject *)project; - (PCProject *)subprojectWithName:(NSString *)name; - (void)addSubproject:(PCProject *)aSubproject; - (void)addSubprojectWithName:(NSString *)name; - (BOOL)removeSubproject:(PCProject *)aSubproject; - (BOOL)removeSubprojectWithName:(NSString *)subprojectName; @end @interface PCProject (ProjectBrowser) - (NSArray *)rootKeys; - (NSArray *)rootCategories; - (NSDictionary *)rootEntries; - (NSString *)keyForCategory:(NSString *)category; - (NSString *)categoryForKey:(NSString *)key; - (NSArray *)contentAtCategoryPath:(NSString *)categoryPath; - (BOOL)hasChildrenAtCategoryPath:(NSString *)keyPath; - (NSString *)rootCategoryForCategoryPath:(NSString *)categoryPath; //- (NSString *)categoryForCategoryPath:(NSString *)categoryPath; - (NSString *)keyForRootCategoryInCategoryPath:(NSString *)categoryPath; //- (NSString *)keyForCategoryPath:(NSString *)categoryPath; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectBrowser.h000066400000000000000000000055331347226342500256650ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectBrowser_h_ #define _PCProjectBrowser_h_ #import extern NSString *PCBrowserDidSetPathNotification; @class PCProject; @interface PCProjectBrowser : NSObject { PCProject *project; NSBrowser *browser; } // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)initWithProject:(PCProject *)aProject; - (void)dealloc; // ============================================================================ // ==== Accessory methods // ============================================================================ - (NSView *)view; // Returns nil if multiple files selected - (NSString *)nameOfSelectedFile; - (NSString *)pathToSelectedFile; // Returns nil if multiple categories selected - (NSString *)nameOfSelectedCategory; - (NSString *)pathToSelectedCategory; - (NSString *)pathFromSelectedCategory; - (NSString *)nameOfSelectedRootCategory; // Returns nil if multiple category selected - (NSArray *)selectedFiles; - (NSString *)path; - (BOOL)setPath:(NSString *)path; - (void)reloadLastColumnAndNotify:(BOOL)yn; - (void)reloadLastColumnAndSelectFile:(NSString *)file; // ============================================================================ // ==== Actions // ============================================================================ - (void)click:(id)sender; - (void)doubleClick:(id)sender; // ============================================================================ // ==== Notifications // ============================================================================ - (void)projectDictDidChange:(NSNotification *)aNotif; @end @interface PCProjectBrowser (ProjectBrowserDelegate) - (void)browser:(NSBrowser *)sender createRowsForColumn:(NSInteger)column inMatrix:(NSMatrix *)matrix; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectBuilder.h000066400000000000000000000103461347226342500256260ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectBuilder_h_ #define _PCProjectBuilder_h_ #import @class PCProject; @class PCButton; @class PCProjectBuilderOptions; typedef enum _ErrorLevel { ELFile, ELFunction, ELIncluded, ELIncludedError, ELError, ELNone } ErrorLevel; @interface PCProjectBuilder : NSObject { PCProject *project; PCProjectBuilderOptions *buildOptions; // Preferences NSString *successSound; NSString *failureSound; NSString *buildTool; NSString *rootBuildDir; BOOL promptOnClean; // Options panel BOOL verboseBuilding; NSString *buildStatus; NSMutableString *buildStatusTarget; NSMutableString *buildTarget; NSMutableArray *buildArgs; SEL postProcess; NSTask *makeTask; NSPipe *stdOutPipe; NSPipe *stdErrorPipe; NSFileHandle *stdOutHandle; NSFileHandle *stdErrorHandle; BOOL _isBuilding; BOOL _isCleaning; BOOL _isLogging; BOOL _isErrorLogging; // Component view BOOL _isCVLoaded; NSBox *componentView; PCButton *buildButton; PCButton *cleanButton; PCButton *optionsButton; NSTextField *errorsCountField; NSSplitView *split; NSTextField *statusField; NSTextField *targetField; // Error logging NSTableView *errorOutput; NSTableColumn *errorImageColumn; NSTableColumn *errorColumn; NSMutableArray *errorArray; NSMutableString *errorString; ErrorLevel currentEL; ErrorLevel lastEL; ErrorLevel nextEL; NSString *lastIndentString; int errorsCount; int warningsCount; // Output logging NSTextView *logOutput; NSMutableString *currentBuildFile; NSMutableString *currentBuildPath; } - (id)initWithProject:(PCProject *)aProject; - (void)dealloc; - (NSView *)componentView; - (void)loadPreferences:(NSNotification *)aNotification; - (void)updateTargetField; // --- Accessory - (BOOL)isBuilding; - (BOOL)isCleaning; - (void)performStartBuild; - (void)performStartClean; - (void)performStopBuild; - (NSArray *)buildArguments; // --- Actions - (void)startBuild:(id)sender; - (void)startClean:(id)sender; - (BOOL)stopMake:(id)sender; - (void)showOptionsPanel:(id)sender; - (void)cleanupAfterMake:(NSString *)statusString; - (BOOL)prebuildCheck; - (void)build:(id)sender; //- (void)buildDidTerminate; @end @interface PCProjectBuilder (Logging) - (void)updateErrorsCountField; - (void)logStdOut:(NSNotification *)aNotif; - (void)logErrOut:(NSNotification *)aNotif; - (void)logData:(NSData *)data error:(BOOL)isError; @end @interface PCProjectBuilder (BuildLogging) // --- Parsing utilities - (BOOL)line:(NSString *)lineString startsWithString:(NSString *)substring; - (NSArray *)componentsOfLine:(NSString *)lineString; - (void)parseMakeLine:(NSString *)lineString; - (NSString *)parseCompilerLine:(NSString *)lineString; - (void)logBuildString:(NSString *)string newLine:(BOOL)newLine; - (NSString *)parseBuildLine:(NSString *)string; @end @interface PCProjectBuilder (ErrorLogging) - (void)logErrorString:(NSString *)string; - (NSString *)lineTail:(NSString*)line afterString:(NSString*)string; - (NSArray *)parseErrorLine:(NSString *)string; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectBuilderOptions.h000066400000000000000000000032731347226342500272030ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2007 Free Software Foundation Authors: Philippe C.D. Robert Sergii Stoian This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import @class PCProject; @interface PCProjectBuilderOptions : NSObject { PCProject *project; id delegate; // Usually PCProjectBuilder NSPanel *optionsPanel; NSPopUpButton *targetPopup; NSTextField *buildArgsField; NSButton *verboseButton; // messages=yes NSButton *debugButton; // debug=no NSButton *stripButton; // strip=yes NSButton *sharedLibsButton; // shared=no } - (id)initWithProject:(PCProject *)aProject delegate:(id)aDelegate; - (void)show:(NSRect)builderRect; - (NSString *)buildTarget; - (void)loadProjectProperties:(NSNotification *)aNotif; @end @interface PCProjectBuilderOptions (Delegate) - (void)targetDidSet:(NSString *)aTarget; @end apps-projectcenter-master/Headers/ProjectCenter/PCProjectBuilderPanel.h000066400000000000000000000024461347226342500266100ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectBuilderPanel_h_ #define _PCProjectBuilderPanel_h_ #import @class PCProjectManager; @interface PCProjectBuilderPanel : NSPanel { PCProjectManager *projectManager; PCProject *currentProject; NSWindow *panel; NSBox *contentBox; NSBox *emptyBox; } - (id)initWithProjectManager:(PCProjectManager *)aManager; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectEditor.h000066400000000000000000000053651347226342500254730ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectEditor_h_ #define _PCProjectEditor_h_ #import #import #import #import @class PCProject; @class NSBox; @class NSView; @class NSScrollView; @interface PCProjectEditor : PCEditorManager { PCProject *_project; NSBox *_componentView; NSScrollView *_scrollView; /* NSDictionary *_editorBundlesInfo; NSDictionary *_parserBundlesInfo; NSMutableDictionary *_editorsDict; id _activeEditor;*/ } // =========================================================================== // ==== Initialisation // =========================================================================== - (id)init; - (void)dealloc; - (NSView *)componentView; - (PCProject *)project; - (void)setProject:(PCProject *)aProject; // =========================================================================== // ==== Project and Editor handling // =========================================================================== - (BOOL)editorProvidesBrowserItemsForItem:(NSString *)item; - (id)openEditorForCategoryPath:(NSString *)categoryPath windowed:(BOOL)windowed; - (void)orderFrontEditorForFile:(NSString *)path; // =========================================================================== // ==== File handling // =========================================================================== - (BOOL)saveFileAs:(NSString *)file; // =========================================================================== // ==== Delegate // =========================================================================== - (void)editorDidClose:(NSNotification *)aNotif; - (void)editorDidBecomeActive:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectInspector.h000066400000000000000000000150721347226342500262070ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2010 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola German Arias This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectInspector_h_ #define _PCProjectInspector_h_ #import #import @class PCProjectManager; @class PCProjectBrowser; @interface PCProjectInspector : NSObject { PCProjectManager *projectManager; PCProject *project; NSDictionary *projectDict; IBOutlet NSPanel *inspectorPanel; IBOutlet NSBox *contentView; IBOutlet NSPopUpButton *inspectorPopup; IBOutlet NSBox *inspectorView; // Build Attributes IBOutlet NSBox *buildAttributesView; IBOutlet NSTextField *projectNameLabel; IBOutlet NSPopUpButton *searchOrderPopup; NSTableView *searchOrderList; NSTableColumn *searchOrderColumn; NSMutableArray *searchItems; NSArray *searchHeaders; NSArray *searchLibs; IBOutlet NSTextField *searchOrderTF; IBOutlet NSButton *searchOrderSet; IBOutlet NSButton *searchOrderRemove; IBOutlet NSButton *searchOrderAdd; IBOutlet NSTextField *cppOptField; IBOutlet NSTextField *objcOptField; IBOutlet NSTextField *cOptField; IBOutlet NSTextField *ldOptField; IBOutlet NSPopUpButton *installDomainPopup; IBOutlet NSTextField *toolField; // Project Attributes // Suplied by concrete project IBOutlet NSView *projectAttributesView; NSView *projectAttributesSubview; IBOutlet NSTextField *projectTypeField; IBOutlet NSTextField *projectNameField; IBOutlet NSPopUpButton *projectLanguagePB; // Project Description IBOutlet NSBox *projectDescriptionView; IBOutlet NSTextField *descriptionField; IBOutlet NSTextField *releaseField; IBOutlet NSTextField *licenseField; IBOutlet NSTextField *licDescriptionField; IBOutlet NSTextField *urlField; NSTableView *authorsList; NSTableColumn *authorsColumn; IBOutlet NSScrollView *authorsScroll; NSMutableArray *authorsItems; IBOutlet NSButton *authorAdd; IBOutlet NSButton *authorRemove; IBOutlet NSButton *authorUp; IBOutlet NSButton *authorDown; // Project Languages IBOutlet NSBox *projectLanguagesView; IBOutlet NSTableView *languagesList; IBOutlet NSTextField *newLanguage; NSMutableArray *languagesItems; // File Attributes IBOutlet NSBox *fileAttributesView; IBOutlet PCFileNameIcon *fileIconView; IBOutlet PCFileNameField *fileNameField; NSString *fileName; IBOutlet NSButton *localizableButton; IBOutlet NSButton *publicHeaderButton; IBOutlet NSButton *projectHeaderButton; } // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)initWithProjectManager:(PCProjectManager *)manager; - (void)close; - (void)dealloc; // ============================================================================ // ==== Panel and contents // ============================================================================ - (BOOL)loadPanel; - (NSPanel *)panel; - (NSView *)contentView; // ============================================================================ // ==== Actions // ============================================================================ - (void)inspectorPopupDidChange:(id)sender; - (void)changeCommonProjectEntry:(id)sender; - (void)selectSectionWithTitle:(NSString *)sectionTitle; // ============================================================================ // ==== Notifications // ============================================================================ - (void)activeProjectDidChange:(NSNotification *)aNotif; - (void)updateValues:(NSNotification *)aNotif; // ============================================================================ // ==== Build Attributes // ============================================================================ - (void)createBuildAttributes; // ---------------------------------------------------------------------------- // --- Search Order // ---------------------------------------------------------------------------- - (void)searchOrderPopupDidChange:(id)sender; - (void)searchOrderDoubleClick:(id)sender; - (void)searchOrderClick:(id)sender; - (void)setSearchOrderButtonsState; - (void)setSearchOrder:(id)sender; - (void)removeSearchOrder:(id)sender; - (void)addSearchOrder:(id)sender; - (void)syncSearchOrder; // ============================================================================ // ==== Project Attributes // ============================================================================ - (void)createProjectAttributes; - (void)setCurrentLanguage:(id)sender; // ============================================================================ // ==== Project Description // ============================================================================ - (void)createProjectDescription; // ============================================================================ // ==== Project Languages // ============================================================================ - (void)createProjectLanguages; - (void)addLanguage:(id)sender; - (void)removeLanguage:(id)sender; // ============================================================================ // ==== File Attributes // ============================================================================ - (void)createFileAttributes; - (void)updateFileAttributes; - (void)beginFileRename; - (void)fileNameDidChange:(id)sender; - (void)setPublicHeader:(id)sender; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectLauncher.h000066400000000000000000000043071347226342500260010ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectDebugger_h_ #define _PCProjectDebugger_h_ #import #import @class PCProject; @class PCButton; @interface PCProjectLauncher : NSObject { PCProject *project; // Not retained! NSDictionary *currentOptions; // Not retained! NSBox *componentView; PCButton *runButton; PCButton *debugButton; NSTextView *stdOut; NSDictionary *textAttributes; NSFileHandle *readHandle; NSFileHandle *errorReadHandle; NSTask *launchTask; id debugger; BOOL _isRunning; BOOL _isErrorRunning; BOOL _isDebugging; } - (id)initWithProject:(PCProject *)aProject; - (void)dealloc; - (NSView *) componentView; - (BOOL)isRunning; - (BOOL)isDebugging; - (void)performRun; - (void)performDebug; - (void)debug:(id)sender; - (void)run:(id)sender; - (void)runDidTerminate:(NSNotification *)aNotif; - (void)logStdOut:(NSNotification *)aNotif; - (void)logErrOut:(NSNotification *)aNotif; @end @interface PCProjectLauncher (BuildLogging) - (void)logString:(NSString *)string newLine:(BOOL)newLine; - (void)logData:(NSData *)data error:(BOOL)yn; @end @interface PCProjectLauncher (UserInterface) - (void)_createComponentView; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectLauncherPanel.h000066400000000000000000000024011347226342500267520ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCLaunchPanel_h_ #define _PCLaunchPanel_h_ #import @class PCProjectManager; @interface PCProjectLauncherPanel : NSPanel { PCProjectManager *projectManager; PCProject *currentProject; NSBox *contentBox; NSBox *emptyBox; } - (id)initWithProjectManager:(PCProjectManager *)aManager; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectLoadedFiles.h000066400000000000000000000041321347226342500264070ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectLoadedFiles_h_ #define _PCProjectLoadedFiles_h_ #import @class PCProject; typedef enum _PHSortType { PHSortByTime, PHSortByName } PHSortType; @interface PCProjectLoadedFiles : NSObject { PCProject *project; NSTableView *filesList; NSTableColumn *filesColumn; NSScrollView *filesScroll; NSMutableArray *editedFiles; PHSortType sortType; } - (id)initWithProject:(PCProject *)aProj; - (void)dealloc; - (NSView *)componentView; - (NSArray *)editedFilesRep; - (void)setSortType:(PHSortType)type; - (void)setSortByTime; - (void)setSortByName; - (void)selectNextFile; - (void)selectPreviousFile; - (void)click:(id)sender; - (void)doubleClick:(id)sender; @end @interface PCProjectLoadedFiles (HistoryTableDelegate) - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView; - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex; - (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectLoadedFilesPanel.h000066400000000000000000000024161347226342500273720ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2003-2004 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCLoadedFilesPanel_h_ #define _PCLoadedFilesPanel_h_ #import @class PCProjectManager; @interface PCProjectLoadedFilesPanel : NSPanel { PCProjectManager *projectManager; PCProject *currentProject; NSBox *contentBox; NSBox *emptyBox; } - (id)initWithProjectManager:(PCProjectManager *)aManager; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectManager.h000066400000000000000000000143231347226342500256110ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectManager_h_ #define _PCProjectManager_h_ #import #import @class PCBundleManager; @class PCFileManager; @class PCEditorManager; @class PCProject; @class PCProjectInspector; @class PCProjectBuilder; @class PCProjectLauncher; @class PCProjectLoadedFiles; @class PCProjectFinder; @class NewSubprojectController; extern NSString *PCActiveProjectDidChangeNotification; @interface PCProjectManager : NSObject { id delegate; id prefController; PCBundleManager *bundleManager; NSMutableDictionary *projectTypes; PCFileManager *fileManager; PCEditorManager *editorManager; PCProjectInspector *projectInspector; NSPanel *buildPanel; NSPanel *launchPanel; NSPanel *loadedFilesPanel; NSPanel *findPanel; NSMutableDictionary *loadedProjects; PCProject *activeProject; NSTimer *saveTimer; NSBox *projectTypeAccessaryView; id projectTypePopup; NSBox *fileTypeAccessaryView; id fileTypePopup; IBOutlet NSPanel *nsPanel; IBOutlet NSImageView *nsImage; IBOutlet NSTextField *nsTitle; IBOutlet NSTextField *projectNameField; IBOutlet NSTextField *nsNameField; IBOutlet NSPopUpButton *nsTypePB; IBOutlet NSButton *nsCancelButton; IBOutlet NSButton *nsCreateButton; @private BOOL _needsReleasing; } // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)init; - (BOOL)close; - (void)dealloc; - (void)setDelegate:(id)aDelegate; - (id)delegate; - (void)setPrefController:(id)aController; - (id )prefController; - (void)createProjectTypeAccessaryView; - (NSMutableDictionary *)loadProjectTypesInfo; // ============================================================================ // ==== Timer handling // ============================================================================ - (BOOL)startSaveTimer; - (BOOL)resetSaveTimer:(NSNotification *)notif; - (BOOL)stopSaveTimer; // ============================================================================ // ==== Accessory methods // ============================================================================ - (PCBundleManager *)bundleManager; - (PCFileManager *)fileManager; - (PCEditorManager *)editorManager; - (PCProjectInspector *)projectInspector; - (NSPanel *)inspectorPanel; - (void)showProjectInspector:(id)sender; - (NSPanel *)loadedFilesPanel; - (void)showProjectLoadedFiles:(id)sender; - (NSPanel *)buildPanel; - (NSPanel *)launchPanel; - (NSPanel *)projectFinderPanel; // ============================================================================ // ==== Project management // ============================================================================ // Returns all currently loaded projects. They are stored with their absolute // paths as keys. - (NSMutableDictionary *)loadedProjects; - (PCProject *)activeProject; - (PCProject *)rootActiveProject; - (void)setActiveProject:(PCProject *)aProject; // ============================================================================ // ==== Project actions // ============================================================================ - (PCProject *)convertLegacyProject:(NSMutableDictionary *)pDict atPath:(NSString *)aPath; - (PCProject *)openProjectAt:(NSString *)aPath makeActive: (BOOL)flag; - (void)openProject; - (PCProject *)createProjectOfType:(NSString *)projectType path:(NSString *)aPath; - (void)newProject: (id)sender; - (BOOL)saveProject; // Calls saveAllProjects if the preferences are setup accordingly. - (void)saveAllProjectsIfNeeded; // Saves all projects if needed. - (BOOL)saveAllProjects; - (BOOL)addProjectFiles; - (BOOL)saveProjectFiles; - (BOOL)removeProjectFiles; - (void)closeProject:(PCProject *)aProject; - (void)closeProject; - (BOOL)closeAllProjects; // ============================================================================ // ==== File actions // ============================================================================ // Also called by PCAppController - (void)openFileAtPath:(NSString *)filePath; - (void)openFile; - (void)newFile; - (BOOL)saveFile; - (BOOL)saveFileAs; - (BOOL)saveFileTo; - (BOOL)revertFileToSaved; - (BOOL)renameFile; - (void)closeFile; @end @interface NSObject (PCProjectManagerDelegates) - (void)projectManager:(id)sender willCloseProject:(PCProject *)aProject; - (void)projectManager:(id)sender didCloseProject:(PCProject *)aProject; - (void)projectManager:(id)sender didOpenProject:(PCProject *)aProject; - (BOOL)projectManager:(id)sender shouldOpenProject:(PCProject *)aProject; @end @interface NewSubprojectController : NSWindowController { id image; id nameTextField; id typePopup; id createButton; id cancelButton; } @end @interface PCProjectManager (Subprojects) - (BOOL)openNewSubprojectPanel; - (void)closeNewSubprojectPanel:(id)sender; - (void)createSubproject:(id)sender; - (PCProject *)createSubprojectOfType:(NSString *)projectType path:(NSString *)aPath; - (BOOL)addSubproject; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCProjectWindow.h000066400000000000000000000073671347226342500255200ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCProjectWindow_h_ #define _PCProjectWindow_h_ #import #import #import @class PCProject; @class PCProjectBrowser; @class PCProjectLoadedFiles; @class PCButton; @interface PCProjectWindow : NSObject { PCProject *project; NSWindow *projectWindow; NSBox *toolbarView; PCButton *buildButton; PCButton *launchButton; PCButton *loadedFilesButton; PCButton *findButton; PCButton *inspectorButton; NSTextField *statusLine; PCFileNameIcon *fileIcon; PCFileNameField *fileIconTitle; NSView *browserView; NSSplitView *h_split; NSSplitView *v_split; NSBox *customView; NSResponder *firstResponder; BOOL _isToolbarVisible; BOOL _hasCustomView; BOOL _hasLoadedFilesView; BOOL _splitViewsRestored; } // ============================================================================ // ==== Intialization & deallocation // ============================================================================ - (id)initWithProject:(PCProject *)owner; - (void)setTitle; // ============================================================================ // ==== Accessory methods // ============================================================================ - (NSView *)customContentView; - (void)setCustomContentView:(NSView *)subview; - (void)updateStatusLineWithText:(NSString *)text; // ============================================================================ // ==== Actions // ============================================================================ - (void)showProjectLoadedFiles:(id)sender; - (void)showProjectBuild:(id)sender; - (void)showProjectLaunch:(id)sender; - (void)showProjectEditor:(id)sender; - (BOOL)isToolbarVisible; - (void)toggleToolbar; // ============================================================================ // ==== Notifications // ============================================================================ - (void)projectDictDidChange:(NSNotification *)aNotif; - (void)projectDictDidSave:(NSNotification *)aNotif; // ============================================================================ // ==== Window delegate // ============================================================================ - (NSString *)stringWithSavedFrame; - (void)makeKeyAndOrderFront:(id)sender; - (void)makeKeyWindow; - (void)orderFront:(id)sender; - (void)center; - (void)close; - (void)performClose:(id)sender; - (BOOL)isDocumentEdited; - (BOOL)isKeyWindow; - (BOOL)makeFirstResponder:(NSResponder *)aResponder; - (void)windowDidBecomeKey:(NSNotification *)aNotification; - (void)windowDidResignKey:(NSNotification *)aNotification; - (void)windowDidBecomeMain:(NSNotification *)aNotification; - (void)windowWillClose:(NSNotification *)aNotification; @end #endif apps-projectcenter-master/Headers/ProjectCenter/PCSaveModified.h000066400000000000000000000036541347226342500252540ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCSaveModified_h_ #define _PCSaveModified_h_ #import BOOL PCRunSaveModifiedFilesPanel(PCEditorManager *manager, NSString *defaultText, NSString *alternateText, NSString *otherText); @interface PCSaveModified : NSObject { PCEditorManager *editorManager; NSWindow *panel; NSTableView *filesList; NSButton *defaultButton; NSButton *alternateButton; NSButton *otherButton; NSButton *clickedButton; } - (BOOL)saveFilesWithEditorManager:(PCEditorManager *)manager defaultButtonText:(NSString *)defaultText alternateButtonText:(NSString *)alternateText otherButtonText:(NSString *)otherText; - (void)dealloc; - (BOOL)saveSelectedFiles; // TableView delegate - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView; - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex; @end #endif apps-projectcenter-master/Headers/ProjectCenter/ProjectCenter.h000066400000000000000000000030251347226342500252310ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2002 Free Software Foundation Author: Philippe C.D. Robert This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _ProjectCenter_h_ #define _ProjectCenter_h_ #import #import #import #import #import #import #import #import #import #import #import #import #import #endif apps-projectcenter-master/Headers/Protocols/000077500000000000000000000000001347226342500215265ustar00rootroot00000000000000apps-projectcenter-master/Headers/Protocols/CodeDebugger.h000066400000000000000000000036731347226342500242270ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2008-2016 Free Software Foundation Authors: Gregory Casamento This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _CodeDebugger_h_ #define _CodeDebugger_h_ #import #import @protocol CodeDebugger // =========================================================================== // ==== Initialization // =========================================================================== - (void)debugExecutableAtPath:(NSString *)filePath withDebugger: (NSString *)debuggerPath; - (void)show; // =========================================================================== // ==== Accessor methods // =========================================================================== - (NSWindow *)debuggerWindow; - (void)setDebuggerWindow: (NSWindow *)window; - (NSView *)debuggerView; - (void)setDebuggerView: (id)view; - (NSString *)executablePath; - (void)setExecutablePath:(NSString *)path; // =========================================================================== // ==== Accessor methods // =========================================================================== - (void) startDebugger; @end #endif apps-projectcenter-master/Headers/Protocols/CodeEditor.h000066400000000000000000000052741347226342500237300ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2005-2014 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _CodeEditor_h_ #define _CodeEditor_h_ #import #import @protocol CodeEditor // =========================================================================== // ==== Initialization // =========================================================================== - (void)setParser:(id)parser; // Usually delegate is PCEditorManager or PCEditorManager - (id)openFileAtPath:(NSString *)filePath editorManager:(id)editorManager editable:(BOOL)editable; - (void)show; - (void)setWindowed:(BOOL)yn; - (BOOL)isWindowed; // =========================================================================== // ==== Accessor methods // =========================================================================== - (id)editorManager; - (NSWindow *)editorWindow; - (NSView *)editorView; - (NSView *)componentView; - (NSString *)path; - (void)setPath:(NSString *)path; - (NSString *)categoryPath; - (void)setCategoryPath:(NSString *)path; - (BOOL)isEdited; - (void)setIsEdited:(BOOL)yn; - (NSImage *)fileIcon; // Returns class or method names - (NSArray *)browserItemsForItem:(NSString *)item; // =========================================================================== // ==== Object managment // =========================================================================== - (BOOL)saveFileIfNeeded; - (BOOL)saveFile; - (BOOL)saveFileTo:(NSString *)path; - (BOOL)revertFileToSaved; - (BOOL)closeFile:(id)sender save:(BOOL)save; - (BOOL)close:(id)sender; // =========================================================================== // ==== Parser and scrolling // =========================================================================== - (void)fileStructureItemSelected:(NSString *)item; - (void)scrollToLineNumber:(NSUInteger)lineNumber; @end #endif apps-projectcenter-master/Headers/Protocols/CodeEditorView.h000066400000000000000000000022031347226342500245500ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2010-2014 Free Software Foundation Authors: Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import @protocol CodeEditorView - (NSObject *)editor; - (void)performGoToLinePanelAction:(id)sender; - (void)goToLineNumber:(NSUInteger)lineNumber; @end apps-projectcenter-master/Headers/Protocols/CodeParser.h000066400000000000000000000022101347226342500237210ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2005 Free Software Foundation Authors: Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _CodeParserProtocol_h_ #define _CodeParserProtocol_h_ #import @class PCEditor; @protocol CodeParser - (id)setString:(NSString *)text; - (NSArray *)classNames; - (NSArray *)methodNames; @end #endif apps-projectcenter-master/Headers/Protocols/Preferences.h000066400000000000000000000044501347226342500241430ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2005-2015 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCPreferencesProtocols_h_ #define _PCPreferencesProtocols_h_ #import #define PCSavePeriodDidChangeNotification @"PCSavePeriodDidChangeNotification" #define PCPreferencesDidChangeNotification @"PCPreferencesDidChangeNotification" @protocol PCPreferences - (NSColor *)colorFromString:(NSString *)colorString; - (NSString *)stringFromColor:(NSColor *)color; - (NSString *)stringForKey:(NSString *)key; - (NSString *)stringForKey:(NSString *)key defaultValue:(NSString *)defaultValue; - (BOOL)boolForKey:(NSString *)key; - (BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)defaultValue; - (float)floatForKey:(NSString *)key; - (float)floatForKey:(NSString *)key defaultValue:(float)defaultValue; - (NSColor *)colorForKey:(NSString *)key; - (NSColor *)colorForKey:(NSString *)key defaultValue:(NSColor *)defaultValue; - (void)setString:(NSString *)stringValue forKey:(NSString *)aKey notify:(BOOL)notify; - (void)setBool:(BOOL)boolValue forKey:(NSString *)aKey notify:(BOOL)notify; - (void)setFloat:(float)floatValue forKey:(NSString *)aKey notify:(BOOL)notify; - (void)setColor:(NSColor *)color forKey:(NSString *)aKey notify:(BOOL)notify; @end @protocol PCPrefsSection - (id)initWithPrefController:(id )aPrefs; - (void)readPreferences; - (NSView *)view; @end #endif apps-projectcenter-master/Headers/Protocols/ProjectType.h000066400000000000000000000031361347226342500241520ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2000-2017 Free Software Foundation Author: Philippe C.D. Robert Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PROJECTTYPE_H #define _PROJECTTYPE_H /* Description: A ProjectType is used to create a project of a certain type. With this approach this procedure can be implemented as a bundle and therefore PC remains open for future extensions! Options are used to further customize types. */ #import @class PCProject; static NSString* const PCProjectInterfaceGorm = @"GormInterface"; static NSString* const PCProjectInterfaceRenaissance = @"RenaissanceInterface"; @protocol ProjectType - (PCProject *)createProjectAt:(NSString *)path withOption:(NSString *)option; @end #endif apps-projectcenter-master/Images/000077500000000000000000000000001347226342500173745ustar00rootroot00000000000000apps-projectcenter-master/Images/Build.tiff000066400000000000000000000151441347226342500213120ustar00rootroot00000000000000II*)c²mć]É9'¬|ŒĄöįī’Ü ’z’pš*X o| ōŁč’ā°’ī0!’·’’w’Gš/Ė’¤öü÷ū’Ū†–’ē?2’ņ/’Ä’{’uü]É>6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~/tQćw’—’ר»’žżž’Öoy’ē?2’’’§’g’@ź}$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’’’ć>u¢Ōbö’Ķ2&’Ł@8’‰’_’”’f’aü.~$Q}¤Ļ^÷„’Ž’R’ѲȒ·t’W’’¬&/Oušŗhņzż‰’ÜĮÕ’§'’5~’qmr’]JŅ7)Eg‹²Ū###źÉ0ž’L`;’Ÿ”“’££¶ó/#p'>Y}„Å ž’żužžŸ³’››¬Ų+h "3Pv›Š:ōź ī ž|€“’¢„±Ē%&U .BTc~›¾ķUeo÷›ŖĒ24Æī~’ó™›ŖĻ/†, ‘ īgr‡’ĒČŲ’7UMĻT –öJki’²²Å’em}ē,x ök’¦¤»’Ž„ų7“#/«öbž··Ź’²±ČžZ6Ķ R"+% KŖß[ųšš­’Ŗ«Į’XguėEY^ĪM_gāf7ß \ ZÉö~‚—’Ń×ę’ĄÄ×’ĄĆ×’‘’ØżZŃ&!bāHie’ąéń’ČĶß’ČĶŻ’ĘŹŻ’sz’»-d ą`p’ćķō’ĪÓć’ČĶß’ĖŃą’ĒĢŽ’Pju’ JŠm<ü¹ŗŠ’ąéń’Śāķ’Ņ×ē’ŌŻė’ÄČŻ’F_iéh 1xŠłˆ‰’īżū’äīõ’Łąī’׎ģ’Iejó’<r·ę},üƮŒ¼¾Ó’IhośŖ-7c–ĒėJó®T ,Ux”‹W.:QF' ž((ę Pī>@T\(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCenter_make.tiffCreated with The GIMPHHapps-projectcenter-master/Images/Clean.tiff000066400000000000000000000151461347226342500212770ustar00rootroot00000000000000II*)c²mć]É9'¬|ŒĄöįī’Ü ’z’pš*X o| ōŁč’ā°’ī0!’·’’w’Gš/Ė’¤öü÷ū’Ū†–’ē?2’ņ/’Ä’{’uü]É>6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y  ‚$‹ćNDž„ ž3ž„PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~ –%›ń<1žĘ ž9ž²/tQćw’—’ר»’žżž’Öoy’ē?2’’’§’g’@ź} y!»5-õ’õ,ł©$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’’’ć4+*]_QPĮ=00¤ Ćƒ>u¢Ōbö’Ķ2&’Ł@8’‰’_’”’f’aü.~bbbbÅÅÅÅ    [[[[CCCw¾p$Q}¤Ļ^÷„’Ž’R’ѲȒ·t’W’’¬&5555””””ÄÄÄIJ²²²wwwwXXXXTTTZAAA} ¦“1/Oušŗhņzż‰’ÜĮÕ’§'’5~’qmr’]JŅ7 qqqr“““·ĮĮĮĆØØØØxxxx[[[[WWWWWWWWUUUXNNNf777‘²~)Eg‹²Ū###źÉ0ž’L`;’Ÿ”“’££¶ó/#päääåČČČŹ™™™™mmmm[[[[YYYYWWWWWWWWWWWWWWWWUUUW===‚©'>Y}„Å ž’żužžŸ³’››¬Ų+h ¼¼¼¼™™™™””””„„„„§§§§ŠŠŠŠ\\\\VVVVWWWWWWWWWWWWQQQ_'''"3Pv›Š:ōź ī ž|€“’¢„±Ē%&U xxxx````\\\\^^^^eeeeddddZZZZWWWWWWWWWWWWWWWWMMMf.BTc~›¾ķUeo÷›ŖĒ24Æī~’󚛫ŠGjGØjjj„VVVZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW+++£r ‘ īlw‹’ŻŽē’‰›–ć\\\ŽVVV]WWWWWWWWWWWWWWWWWWWWWWWWWWWW000›p–ö‡›«’‡–Ń’o‚Åüczµļcu¶įdu¶ądu¶ądu¶ądu¶ądu¶ądu¶ąCS‰ē'— ¤Y`zūe‚»’r…Ź’nĒžYtÆōZo®ßZmÆŚZmÆŚZmÆŚZmÆŚZl®ŁDV•å5§6=0._21mB?1Ž—µļfy¼žLq£’l€Č’kČ’Lm«õJ^¢ŽI\”ÕI]”ÖI\¢ÕH[ Ļž¶æąžt…Įžgw©’eu§’`o„’_r“’p„Ė’n‚Ź’n‚Ź’eyĀ’Im”öBS•Ś)MĘKJFXMMG_qpf“ƱIäŽĘ7’ŁĮ.žŠ¹,žĒ±*ž¾Ø(žµ”&ž¬™$ž¬=ž“½Üžp¹žeuØždt¦žcs¦’]n¦’kÄ’o„Ģ’o„Ģ’oƒĢ’_t½’FY›ó *OĘlkasµ®…ĀĢŗQŲąÉEīŽČDńąĖJüćŹ2žÜĆ/žŌ¼-žŹ³+žĮ«)ž·¢&ž®š%ž„“"žÆ„dž””Ģžl}¶ždt§žcs¦žbs¦’`p„’Re§’q…Ķ’o„Ģ’p…Ģ’o„Ģ’Sj°’%0Vć ‡]ŒõßXžōŲ4žó×4žšÕ4’ėŠ2žåĖ1žßÅ0ž×¾.žĪ·,žÅÆ*ž»¦(ž±%žØ•#žŸ!žŖ”hžˆ–Čžk|¶žcs¦žbr¦žaq¦’Zl¤’L_¢’t‰Ļ’sˆĻ’q†Ķ’r‡Ī’k~Ē’3Cvżh ©§˜®óŁGžńÖ4žšŌ3žķŅ3žéĻ2žåĖ1žßĘ/žŲĄ.žŠø,žČ±*ž¾Ø(ž³Ÿ&žŖ—$ž”Ž!ž˜‡ ž¬¤qž‘Ēžiz“ž_p¦ž\m¤žWh£žNa¢’J]¢’cwæ’wŃ’uŠŠ’s‡Ļ’p„Ė’4Ewž’ńģŌõļÓ3žķŅ3žėŠ2žčĶ1žäŹ1žßĘ/žŁĮ.žŅŗ,žÉ²+žĄ«)ž·¢'ž­š$ž¤‘"ž›Š žrf’ˆ…lžrƒĄ’^p°’Re¤’Ob¢’Na¢’M`¢’J]¢’I]”śHt©žk~Ē’mŹ’Tm³ž.;mö-ūųęžńį‚žēĶ1žåĖ1žįČ0žŻÄ/žŲĄ.žŃŗ,žĖ“+žĆ¬)žŗ¤'ž°œ%ž§•#žž!žŽ~ž.) ž‹”’gyŗ’Xk­’M`¢’M`¢’M`¢’L_¢’I[”óH\”ėI\”ōM`„ūIk żG[ š.=pģśńŗžōß_žķÜpžäĻTžÜĒKžÖæ:žŠŗ6žĖ“,žÄ®*ž¹¤(žŖ—'žš‰#ž‡xžl`ž82 ž’†ŒŸ’gy»’Uh«’M_¢’L_”’J]”žH[ŸöGZžąHZžąH[ ęG\ ėI\ éGZžß5E€åśń¹ž÷Ż8žóÜMžź×ežŁĢžĘø]ž“¦Nž¬œ:žŸ0žƒv'žZQžA;ž&" žžž’sz‘’`s¶’K]”’GZ’EXœöDV›ģCV›ŻCV›ŲCV›ÜCU›įCV›äCWįCVšŪ4D~į¶ØMĻöÜ6žņŲ4žčĻ2ž×Į8ž¾Ŗ1žŸ(ž€s!žbXžG?ž.) ž žžžž ’mv“żQcØīH\”ćGZŸŲG[ŸÓH[ ŃH[ŸĻI[ ĻG[ ŠG[ ÓGZŸÕFYžÕBT—Ö/>vå—‡æäĖ2śßĒ0žŃŗ.ž·£'ž™ˆ!žxkžZPžA9 ž.( ž žžż ńt6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~/tQćw’—’ר»’žżž’Öoy’ē?2’’’§’g’@ź}$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’’’ć>u¢Ōbö’Ķ2&’Ł@8’‰’_’”’f’aü.~$Q}¤Ļ^÷„’Ž’R’ѲȒ·t’W’’¬&/Oušŗhņzż‰’ÜĮÕ’§'’5~’qmr’]JŅ7 )Eg‹²Ū###źÉ0ž’L`;’Ÿ”“’££¶ó/#p#'>Y}„Å ž’żužžŸ³’››¬Ų+h ™R "3Pv›Š:ōź ī ž|€“’¢„±Ē%&U ‚OXQ-pj5¶ i.BTc~›¾ķUeo÷›ŖĒ24Æīmn~õ„†yūĄÅŖżæĮØżø¹žüÆ“ü”Øü‰’kü^iLü)2!ś’;"‡= –npbųŹĶ·’ĶŠ½’ĖĻŗžĆDZżØŖ“ü‡Œoüœ”wü„‹büdlJö ŽgŖlG3RWH‚ĆȰżĻѽ’ŲŁČ’×ŁĒ’ĮŰ’FJAż”yü §}ü‡füu{UūOV:ģķÅF W$$$ĢĶ/0&ϳ·™łĮÅ®üĪŠ»žÕ×Ä’×ŚÅ’ad[’HMF’š”žž„|ü…ŽeūuzUū\bBł Ó©b]–UT‹mą°µ‘ū¼½¦üĆĘÆżĒʵžqtg’:?7’[bX’ž¤€’—tž‰ażmtPüX^@ł Ī“4 £s/25$|’˜nł£Ø€üÆ“üø¼ü˜š†ż-/+žW\T’TYO’–št’Œ“k’y€Z’dnKžT\@ž+öŖ4  a+qvQ_żŽ•kżž£züŸ¤ü02+üDH?żY^SžEH>ž„‰c’}‚[’luP’\dF’MU=’68<ž0ęW  ?+79/ČbjGüntQüyXü…ŒcüGJ9ü&($üV[OüQWLżCG9żtxT’iqO’^fH’OW=’CG5’347’=AM’ Ģ'!!!œ,/#ųQW<üY`DübkJüaiIü#$ üBF?ü[`VüJNGżAG6ż_iG’V]A’MT;’EI5’=@3’/13’((*’4EM’ – G Ÿ#%ĆBG0üHO6üNT<ü$%ü()&üQSKüNQHü9<5ü>E1žKR8žEL5’@E0’9>/’;>9’BDI’>@C’ABI’?U_ėi #·^©59)ü;>,ü37)üü;=8üQSMüCE@ü-/,ü;?-ż<@,ż7:)ž27(’/3)’EJH’fkn’ehn’358’9OSõ—) ŹO q-0'ū/3(ü üü>@:üCE?ü240ü"$ ü59+ü.3'ü+/&ż)-%žż*ž_^k’KLS’&7:ü»3C&(Č$' ļģü13.ü351ü#$!ü!ü,-'ü(*&ū'($ż "śõėņ8ö·W(> š‘ Łńõī÷''#ü&&!śįÄįŹ­X.0Uv’¤· šä ¹‹“©¢kH' 8Ngƒƒtg wĒq8  #143. ˜hB&  Kž((ę Qī@@V^(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCenter_debug.tiffCreated with The GIMPHHapps-projectcenter-master/Images/FileProject.tiff000066400000000000000000000224701347226342500224610ustar00rootroot00000000000000II*$PPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPššššššššššššš 0š 0ššššš 0š 0š 0š 0ššššššššš 0š 0š 0š 0š 0ššššš 0š 0š 0š 0š 0ššššš 0š 0š 0š 0š 0ššššš 0š 0š 0š 0šššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPššššššššššššš 0š 0š 0š 0š 0š 0š 0ščēēšk)7łøNUüé±²öF9ó'1ń 0š 0š 0š 0š 0š 0š 0š 0šššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššÕĻĻņ~()ž€,,’”9:’µKK’Ņhiżßˆ‰śē¤¤ųėÄÄõīßßņļķķšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPššššššššššššš 0š 0š 0š 0š 0ššššš 0š"*ņbžO’E’K’U’m$%’†02’¤@A’ÄTUžĖŠ‹ü×ĘĘłÕŌŌųźŽŽóļźźńšššš 0š 0š 0š 0š 0š 0š 0š 0š 0š 0š 0š 0šššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššÜ××ņn!"ž]’Z’V’Q’J’E’F’L’[%&’gg’uJJ’Žee’½nnżćśé®®÷ģĶĶōīęęńššššššššššššššššššššššššššššššššššššššššššššš PPPPššššššššššššššššššššššššš 0š 0š 0š 0š!,ńbžc’g’d’`’^’[’W’S’M’H ’I ’I ’S’l$%’‹34’ŖDE’Ķabž£DNū‡9Hų꾿õķÜŻņ"0šššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššļļļšļīķšššššššššąŽŽńp'(ži’r’o’l’h’g’d’`’^’Z’V’S’O’G’A ’D’L’a’z+-’™;<’»QQžŲpqüŅ„¦öššššššššššššššššššššš PPPPššššššššššššš 0š 0š>)*óyūˆg ł"/š 0š-ń\žn’|’y’v’t’r’o’l’i’f’c’`’^’[’W’S’N’H’B ’@ ’B’q ’X$ś 0šššššššššššššššššš PPPPšššššššššššššššššššššģēŁņįø>üķø’ŪĀvųššššåååńl+,żr’ƒ’€’~’|’z’y’w’t’q’n’k’i’g’c’`’]’Z’X’T’K’v’؃ƒųššššššššššššššššššššš PPPPššššššššššššš 0š 0šššššE.(óŚØžīŗ’ßÓ«õ /šWżq’ˆ’…’‚ ’’€’’}’|’y’v’s’r’o’l’j’f’d’a’^’Y’ ’“››öššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššćÓ£õō½’čŗ%žŌĮžö‚05ż“QV’Ŗw’$%’• ’Ž"#’!"’]’:"’v’’~’|’{’x’u’s’p’o’m’h’f’… !’Ͷōššššššššššššššššššššš PPPPššššššššššššš 0š 0š 0š 0š2&>ó“„Sžź»,’ė°’ž_A’”µÕ’³Üķ’²’›’§)*’„!"’Ŗ'(’V’"%’l’Š !’ƒ ’’’’~’|’z’m!’m#’t’s’„ ž#+ņ 0šššššššššššššššššš PPPPšššššššššššššššššššššßßßņ¼ĄĄśćŽŽós_gż„s’ÉŖP’„¤c’eŸÄ’¾Ū’°×é’²”Ŗ’©58’³()’o’ ’s ’§**’—&'’$%’Š"#’… ’‚’€’’DF’k’’0Tm’z;B’€’•<<żéēēńššššššššššššššššššššš PPPPššššššššššššš 0š 0šįąąņŒ‘“ž›x|żyMOžy}€’„‰œ’ƧU’© N’b—¹’лڒ±Ų뒚š¤’\55’T$$’’i ’“-.’Ŗ./’Ø./’„./’Ÿ,-’•’“@C’²½Ź’©Ńę’h¤Ā’wˆŸ’‡!’–[]ūššššššššššššššššššššššššš PPPPšššššššššššššššššššššåĒĒōyccžˆ’’’˜œœ’aba’()0’‘…d’ł¾’­ŸF’b”±’ŒĮā’x“ ’’)))’’P ’™%&’Ÿ)*’§-.’¬12’¬))’­MQ’¶ĄĢ’ØŃę’…øÕ’j—²’Œv„’€zˆ’To‚üęčźńššššššššššššššššššššš PPPPššššššššššššš 0šr5G÷“34ž`##’aTT’¢””’“––’]cc’ƒ‡’·™E’üæ ’Æš;’_Ž«’{°Ī’&-2’’7AD’gCF’|’}’‚ !’‹’¢HK’·ĄĶ’ØŃꒁ³Ļ’aŽ«’€„–’™¤“’‡¶Š’@v—’DRrų 0š 0š 0šššššššššš PPPPšššššššššššššššššŪ}~łČBC’Æ?@’Œ77’j--’qDD’‹ll’ƒ’…‹‘’¶žV’ł¾’؉2’\„¦’Jl€’ ’*/0’E:;’r’|’x’ƒ:=’Æ½Ź’ØŃꒁ²Ī’a’®’Ч¼’¬ÅÕ’Er‹’H}ž’N€”’µČÕöššššššššššššššššššššš PPPPššššššššššššš@`šMöĻ/0’Ō45’×BC’ĮKL’Œ./’l’s!!’zeg’…™’¼„[’õŗ’•g/’Pj‰’!&’ ’Yfk’‘pw’z’&(’­±¼’ÆÖé’‡·Ó’^­’€¤ŗ’¶ĪŻ’ŗŌć’u ŗ’_“°’·ĒÓöššššššššššššššššššššššššš PPPPšššššššššššššššššēĀĆóĪ34’Ī12’Ī./’Ó23’Ō<<’ĶDE’·>?’—78’ƒce’†Œ“’”•Z’Õ£’¤m*’2,9’%('’{”’¶Ö蒟Š”’«©“’ÆÓꒈøÓ’a”±’‚¦»’¶ĻÜ’­ĢŽ’•ĀŪ’u­Ź’ŠØ¼üēéėńššššššššššššššššššššššššš PPPPšššššššššššššššššģßßńŠ?@žĪ12’Ī12’Ī12’Ī01’Ļ/0’Ō34’Ō78’ĆLL’„wx’sKT’H6 ’£{’žt7’€}…’v”Ÿ’œĆŲ’»Łē’­Ńå’…µŃ’k›·’‘±Ć’·Ńß’ ĒŻ’·Ō’iŸ¼’q[l’Ą‘’÷ššššššššššššššššššššššššššššš PPPPšššššššššššššššššļķķšÕ\]üĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ*+’ŃXX’²Ø©’²bb’›gm’‚XV’øu+’¼ž€’“س’«Ļß’¢ÉŽ’³Ļ’«Ć’©ĆÓ’²Ļį’“ĄŪ’m©Ē’h‚›’MV’”’Õ°°õššššššššššššššššššššššššššššš PPPPššššššššššššš0@š@PšŪ}}łĪ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī./’Ń=>’ŗ––’“ŸŸ’¦±±’ĆÄĘ’»AD’ŅOH’ȁ†’°°æ’‰øŅ’•Ā×’°Ņā’¤Źą’‚µŠ’`’®’k\m’©;=’›!!’˜)*žDHņ0@š@@šššššššššššššššššššššš PPPPšššššššššššššššššššššē””öŲ45’Ń12’Ī12’Ī12’Ī12’Ī12’Ī01’Ļ,-’ø‹‹’™  ’Ŗcd’ʑ‘’½<=’Ń),’Ń,,’Ī8:’É\_’ȉŽ’ŖŖ»’w©Ę’c¢æ’~p}’Ø/.’˜$$’’!"’Œ67żŠĻĻņźźźšīīīšššššššššššššššššššššš PPPPššššššššššššš 0š0@šŽŅŅņ¢EFüĶ12’Ū45’Ņ34’Ī12’Ī12’Ļ-.’ĶIJ’Ŗ‹Œ’•uu’­34’Ķ*+’Ļ23’Ī12’Ī12’Ļ/0’Š+,’Ń++’Š88’¼OT’³ˆ“’Ą~ƒ’œ&&’Ž !’˜$%’@AüžžžõæææóŪŪŪńššššššššššššššššššššš PPPPšššššššššššššššššššššššššāāāń§œœõb!ūĮ-/’Ü46’Ó23’Š/0’ÄWX’¾33’¾<=’¬DD’Ź,-’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī/0’Ņ--’×//’“,,’Œ !’‘"#’›$%’TTś°°°ōĄĄĄóÖÖÖņššššššššššššššššššššš PPPPššššššššššššš š 0šššššššššššššģģģš¢™™ö•NOüæ12’Ū12’ĖKL’ŗRS’ČNO’­CD’Č,-’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ņ12’­()’!"’’"#’•#$’~mmłĒĒĒņćććńźźźšššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššķķķš¾»»ó”kkł­34žĪ:;’ÉJL’Ą23’Ģ01’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Š23’Ø()’!"’›$%’t55ż“““öŗŗŗóŚŚŚńģģģšššššššššššššššššššššš PPPPššššššššššššššššššššššššššššššššššššš š šš šŌÓÓņ-÷yżÉ00’Ł45’Ö34’Ļ12’Ī12’Ī12’Ī12’Ī12’Ī12’Ī12’Ļ23’¢&'’”#$’xžų ōó ņńššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššäääń±ŖŖō“hhł­45žÕ34’Ł45’Ń23’Ī12’Ī12’Ī12’Ļ12’Ķ12’Ÿ%&’Œ!"’dVWś˜˜˜õÆÆÆōĒĒĒóŚŚŚńéééšššššššššššššššššššššš PPPPššššššššššššššššššššššššššššššš ņ%÷}żĖ12’Ū45’Ō34’Ļ12’Ļ12’Ģ01’ &'’> ü‰‰‰ö õ ó ņńšššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššāāāń¦œœõ’RRū²01žÕ34’Ū45’Š23’}$%žkjių———öØØØōĮĮĮóÖÖÖņēēēńššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššķķķšĖŹŹņš‚‚÷¦EFż½-.’X?@ū†††÷õ³³³ōĖĖĖņŽŽŽńģģģšššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššćććń®ŖŖõ¬¬¬ōČČČóÕÕÕņŽŽŽńēēēšģģģšššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššššš PPPPšššššššššššššššššššššššššššššššššššššššššš P                                          PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPž00Ś$ Eā$@$(%0%(R/Users/me/Source/GNUstep/ProjectCenter/trunk/Images/FileProject.tiffHHapps-projectcenter-master/Images/Files.tiff000066400000000000000000000147021347226342500213140ustar00rootroot00000000000000II*???æVVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’+*+’VUV’Ō) Ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’čo Ž’’’’ōōō’ŹŹŹ’ddd’ŸŸŸ’zzz’ooo’āāā’ŃŃŃ’¦¦¦’ĶĶĶ’æææ’•••’uuu’………’jjj’æææ’ßßß’ĶĶĶ’ŌŌŌ’ŃŃŃ’000’øøø’±±±’ttt’ĆĆĆ’¼¼¼’ßßß’’’’’’’’’čy/?"!"ęÕŌÕ’ÄÄÄ’­«­’|{|’•••’•“•’„ƒ„’¹¹¹’Æ­Æ’wvw’§Ÿ§’‘iŽ’‚L}’”kœ’ŽYŠ’|Ix’ŠY…’Øz¤’™—’“““’Æ­Æ’„ƒ„’¹¹¹’§„§’œ›œ’ŖŖŖ’—•—’¼»¼’ßßß’’’’’čyīVVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’%%%’ÖÖÖ’čy Ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’éy Ž’’’’ōōō’ŹŹŹ’ddd’ŸŸŸ’zzz’ooo’āāā’ŃŃŃ’¦¦¦’ĶĶĶ’æææ’•••’uuu’………’jjj’æææ’ßßß’ĶĶĶ’ŌŌŌ’ŃŃŃ’000’øøø’±±±’ttt’ĆĆĆ’¼¼¼’ßßß’’’’’’’’’ ’ooo’īšM??/ Ž’’’’ééé’ŹŹŹ’ŠŠŠ’ŖŖŖ’ŖŖŖ’”””’ŪŪŪ’ĶĶĶ’ƒƒƒ’ļÒØ¤’“NŒ’ŗs“’¢]œ’ŠG„’œ[–’ĒŽĮ’µ³’ŌŌŌ’ĶĶĶ’”””’ŪŪŪ’ĆĆĆ’“““’ĘĘĘ’­­­’ßßß’’’’’’’’’’’PMP’VUV’VVV’VTV’VUV’Ō) Ž’’’’’’’’łłł’ļļļ’’’’’’’’’ééé’’’’’’’’’۟ՒįnÖ’ŁMĢ’Ņ1Ć’Ļ+Ą’Ė*¼’Ē)ø’Ā(“’¼/Æ’¹N®’Ątø’äĒį’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’DDD’ģģģ’’’’’’’’’’’’’’’’’čo Žżżż’ŖŖŖ’ÖÖÖ’’’’’’’’’’’’’žųż’öĶņ’ćb×’Ū3Ė’Ł'Č’×$Å’Ō#Ć’Š"æ’Ķ"½’É!¹’Ę ¶’Ā ³’½­’³"„’£'—’²j«’ģŽė’żüż’’’’’’’’’’’’’’’’’’’’’’’’’’’[[[’¼¼¼’ßßß’’’’’’’’’čy Žūūū’øøø’ßßß’’’’’’’’’’’’’ō“ī’äSÖ’Ż.Ķ’Ū$É’Ų$Ē’Ö#Ä’Ņ"Į’Ļ"¾’Ė!»’Ē ·’Ä “’Ą°’¼¬’ø©’³¤’ž"’’”Rš’ƳĒ’’’’’’’’’’’’’’’’’’’’’’’’’///’]]]’­­­’ßßß’’’’’’’’’čy Ž’’’’ššš’÷÷÷’’’’’’’’’÷Ęņ’åMÖ’ß*Ķ’Ü%Ė’Ł$Č’×#Ę’Ō#Ć’Š"æ’Č ø’æ°’½®’æÆ’¾®’¹Ŗ’¶§’²£’«ž’›’{4t’ķäģ’’’’’’’’’’’’’’’’’’’’’ ’DDD’xxx’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’’’’’·¢¶’±TØ’ą4Š’Ž%Ģ’Ü$Ź’Ų#Ę’Ķ"½’Æ3Ø’tO}’hx€’f•ˆ’f„‚’n_~’„A†’©!’±¢’Æ ’Ÿ’’„z’ˆ6€’™V“’ńėń’’’’’’’’’’’’’’’’’ ’DDD’xxx’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’żöü’鍱’“)§’²>§’Ū3Ź’Ū$É’Ć&¶’’P˜’h‡’[±ˆ’U„~’Qx’RŸz’U¦’Yž’ub„’š/”’œ’{r’“5‰’Ÿ"“’‚%y’¾ »’’’’’’’’’’’’’’’’’’DDD’xxx’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’łŁö’äMÖ’ß(Ķ’°#¢’¤:›’Ņ-Ā’„VŽ’`¦‰’RŸz’P›w’P›w’P›w’P›w’P›w’P›w’S›z’jt€’~*y’ŸA–’¦$™’ž’’‚’ŒQ†’éįč’’’’’’’’’’’’’’;7;’xxx’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’ļ”ē’ß1Ī’Ż$Ė’Ū$É’¦™’ŒNŒ’_±‹’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’{jŠ’„ ˜’Ÿ’’œ’”ˆ’ul’«—Ŗ’æææ’’’’’’’’’’'%’oko’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’āYÕ’Ż*Ė’Ū$É’Ł#Č’ŗ«’p…‹’Qžy’P›w’P›w’Jo’:qW’:qW’?{_’E†g’:qW’P›w’P›w’Or’š4”’‘’™Œ’”ˆ’yp’qKm’æææ’’’’’’’’’’!’UES’’’’’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’Ü>Ķ’Ū&É’Ł$Č’Ö#Å’¦6”’eœ‰’P›w’P›w’P›w’>y]’ ’  ’ ’’  ’/]G’P›w’O™u’|N‚’ž’’—Š’“‡’v’i0c’’’’’’’’’’’’’’%"’;8’ā×į’’’’’’’’’’’’’čy Ž’’’’’’’’’’’’Ł:Ź’Ł%Č’×#Ę’Ń"Ą’•L™’Yš~’P›w’P›w’P›w’>=’???’±±±’¾¾¾’®®®’~~~’†††’³³³’ĄĄĄ’æææ’–––’{{{’ŸŸž’½½¼’½½¼’½½¼’¼¼¼’ʲC’ĆØ;’Œ…^’’’OOO’‘‘‘’‘ŠB’ąÖc’ŁŠ}’ĆĆĆ’kkk’III’yyx’Œ’……„’……„’£££’ÄÄÄ’“““’‰‰‰’’‡‡‡’¾¾¾’ĀĀĀ’ĀĀĀ’ĀĀĀ’Åæ„’ĆØ;’¹Ÿ:’ĀĀĮ’’’²²²’‹Šv’æ“Q’×ÉV’Ŗ¢q’†††’§§§’sss’„„ƒ’’¤¤£’ææ¾’ĘĘĘ’³³³’ŒŒŒ’ŽŽŽ’±±°’ÅÅÅ’ĒĒĒ’ĒĒĒ’ĘĘÅ’ĆØ;’¼ž4’¶Æ•’ÄÄÄ’žžž’’’ĒĒĒ’¬¬¬’|xF’æ“Q’ąÖc’—Œ_’ČČČ’“““’»»»’ĢĢĢ’ĶĶĶ’ĶĶĶ’ĢĢĖ’ÅÅÄ’ĮĮĄ’ŹŹÉ’ŹŹÉ’ČČČ’ĒĒĒ’ĢĢĖ’Į«P’¼4’Ŗ˜N’ÉÉČ’ĘĘĘ’ÄÄÄ’***’’ÉÉÉ’ššš’ŹŹŹ’ˆG’æ“Q’ąÖc’½§Y’ÉĀŖ’ŅŅŅ’ŅŅŅ’ŃŃŃ’ŃŃŃ’ŃŃŃ’ŃŃŃ’ŠŠŠ’ŠŠŠ’ŠŠŠ’ĪĪĶ’ĪǦ’ĆØ;’¼4’ŖŽ+’×ĘS’ĖĖĖ’ÉÉČ’ĒĒĘ’®®­’’’{{{’ōōō’ńńń’źźź’½²i’±–2’±–2’Ŗ+’ŗ¦[’Ėæ“’Óι’ÖÕĻ’ÖÖÖ’ÖÕĻ’ŌŃ»’ŌĖ›’ŅĆo’ʲC’ĆØ;’¾”7’ŪÉX’×ÅR’Ŗ+’×ĘS’ĖĖĖ’ÉÉÉ’ĒĒĒ’  Ÿ’’’łłł’ööö’óóó’ńńš’ćį×’¦‘7’ƕ/’ŗŸ8’Ä©@’̲G’ҼM’×ĘS’×ĘS’ŌĮN’мJ’ʲC’Ć©;’Ć«F’ŠŠĘ’¶7’īįj’×ÅR’Ŗ+’‘cb’ĖĖĖ’ÄÄÄ’’’’ŪŪŪ’śśś’÷÷÷’õõõ’óóó’ńńń’ąŽŅ’ƛL’ŗ”>’ɳF’ÕĆQ’×ĘS’ÓĄM’ĪŗI’ʳF’dzW’×ÕĘ’ÜÜÜ’ŚŚŚ’ŲŲŲ’¶7’īįj’×ÅR’Ŗyu’€QQ’’’’ŗŗŗ’üüü’ūūū’łłł’÷÷÷’õõõ’óóó’ņņņ’ššš’ļļī’ķķķ’ėėė’ééé’ēēē’ååå’ććć’įįį’ßßß’ŻŻÜ’ŪŪŚ’¶ŸŸ’LL’¤yv’ߙ’Ŗyu’],-’888’žžž’żżż’żżż’śśś’ųųų’ööö’õõõ’óóó’ņņņ’ššš’īīī’ģģė’ééé’ēēē’ååå’ććć’įįį’ßßß’ŻŻŻ’°°Æ’b//’…SS’¤yv’ߙ’Ŗyu’X((’’’’’’’’’’žžž’žžž’üüü’ūūś’ųųų’ööö’ōōō’ņņņ’ššš’īīī’ģģģ’źźź’ččē’ęęå’ÕÕÕ’£££’’’’l/1’…SS’¤yv’ߙ’Ŗyu’U$$Ģ’¾¾¾’’’’’’’’’’’’’’’’’żżż’ūūū’łłł’÷÷ö’ōōō’ņņņ’ššš’īīī’ģģģ’ĘĘĘ’–––’’’’’’# ’m45’…SS’¤yv’ߙ’Ŗyu’R Ģ’}}}’’’’’’’’’’’’’’’’’’’’’żżż’ūūū’łłł’÷÷÷’õõõ’óóņ’   ’444’’’’’’’’’L’p:<’…SS’¤yv’ߙ’Ŗyu’NĢ’’’’’’’’’’’’’’’’’’’’’’’’’żżż’ūūū’ĻĻĻ’’’’’’’’’’’’’’Zūp:<’…SS’¤yv’ߙ’Ŗyu’NĢ’¾¾¾’’’’’’’’’’’’’’’’’āāā’§§§’777’’’’’’’’’’’]Zžp:<’…SS’¤yv’ߙ’Ŗyu’NĢ888’’’’’āāā’»»»’}}}’’’’’’’’’’AĢ\!$’p:<’…SS’¤yv’ߙ’Ŗyu’’’’’’’’’’’K ū\!$’p:<’…SS’¤yv’ecō’’’’]K ž\!$’p:<’…VUōAĢTžL''Ÿž((ę Pī>@T\(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCentre_find.tiffCreated with The GIMPHHapps-projectcenter-master/Images/Inspector.tiff000066400000000000000000000151501347226342500222160ustar00rootroot00000000000000II*’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’™™™’’’’’’’’hhh’’’’’’’’’’’’’’’’’’’’fff’ėėė’ķķķ’īīī’’’’’’’ÆÆÆ’ÆÆÆ’hhh’’’’’’’’’’’’’’’’’’’***’%%%’!!!’LLL’™™™’’’’’’’ÆÆÆ’ÆÆÆ’hhh’’’’!’2’&’’’’’’’’’’’sss’źźź’²²²’\\\’EEE’###’RRR’’’’’’hhh’hhh’hhh’hhh’\hT’\hT’}dV’ę°°’„,,’s’j%’]cP’\hT’\hT’\hT’\hT’\hT’\hT’WcP’bbb’õõõ’···’’,,,’’)))’BBB’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’ęĀ’ߘ˜’Ę??’Ÿ’r’y’©˜˜’²²²’²²²’²²²’²²²’ÆÆÆ’000’ÕÕÕ’ÄÄÄ’000’+++’;;;’[[[’ttt’’’’’’’²²²’²²²’²²²’²²²’²²²’؜œ’¶ii’ģÉÉ’Ņjj’Ę??’©’s’v ’™kk’²²²’²²²’²²²’­­­’’ģģģ’øøø’’777’nnn’“““’¢¢¢’ŖŖŖ’’’’’’²²²’²²²’²²²’²²²’²²²’Ŗ££’r ’š00’ęÅÅ’Ų~~’Ē@@’· ’{’r’OO’®¦¦’²²²’©©©’’ÕÕÕ’¼¼¼’OOO’’rrr’’’’’‡‡‡’€€€’’’’’’²²²’²²²’²²²’²²²’²²²’®®®’…oo’l’t’Ż··’ć  ’Ē@@’Ā--’…’r’x’®§§’ØØØ’’¢¢¢’ĻĻĻ’øøø’UUU’’’’’ ’" ’’’’²²²’²²²’²²²’²²²’²²²’­­­’‡‡‡’UGG’^ ’z’ʃƒ’źĮĮ’ŹMM’¢’K’(’fNN’¦’~~~’;;;’ŁŁŁ’ØØØ’¢¢¢’‚‚‚’†††’VVV’"""’’•••’ŗŗŗ’ÅÅÅ’ÅÅÅ’ÅÅÅ’ÅÅÅ’ÅÅÅ’ÅÅÅ’ÅÅÅ’ÅÅÅ’vvv’’’’’²²²’²²²’²²²’²²²’²²²’²²²’œœœ’jjj’A@@’S’v’§SS’¶>>’b’a’^’d’j ’††’$$$’jjj’ŽŽŽ’www’000’’"""’888’’nnn’„„„’‰‰‰’‰‰‰’‰‰‰’‰‰‰’PPP’’øøø’’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’ØØØ’‰‰‰’bbb’>>>’H’{’l’…TT’“||’D ’’+ ’|rr’777’īīī’YYY’@@@’ ’///’III’ggg’’’‡‡‡’‰‰‰’‰‰‰’‡‡‡’‰‰‰’PPP’øøø’’‡‡‡’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’ÆÆÆ’   ’‹‹‹’lll’KJJ’B$$’5’ŽMM’= ’xsn’‘މ’MHG’.--’€€€’………’„„„’'''’:::’ddd’ŠŠŠ’’’‡‡‡’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’PPP’’‡‡‡’’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’®®®’£££’’www’WWW’644’P’(’0’zzw’­¬Ø’'(&’···’ššš’ddd’’???’„„„’§§§’ÆÆÆ’’GP@’GP@’PPP’PPP’PPP’PPP’PPP’PPP’PPP’PPP’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’°°°’¤¤¤’–––’€€€’^^^’F;;’?’,’’POM’ææ»’nom’vwv’\\\’’NNN’’’’’­­­’²²²’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’°°°’©©©’›››’‰‰‰’rrr’OOO’===’333’’ ’ĘÄĄ’aa`’###’$$$’^^^’›››’ÆÆÆ’²²²’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’±±±’¬¬¬’”””’–––’ˆˆˆ’|||’eee’’...’’}{’ŽŠ’!"!’jjj’¢¢¢’°°°’²²²’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’ÆÆÆ’«««’§§§’„„„’ttt’;;;’{{{’+++’ ’ihg’š™–’HHG’   ’±±±’²²²’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’°°°’ÆÆÆ’WWW’ĀĀĀ’¦¦¦’,,,’999’’FDC’ø·³’NNN’¤¤¤’²²²’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’­­­’ZZZ’ßßß’„„„’˜˜˜’’’’))'’ŹĒÄ’kkj’†††’’’‡‡‡’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’’’’’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’²²²’ŸŸŸ’nnn’ÉÉÉ’ÓÓÓ’ZZZ’’$$$’'''’"""’+**’¢”ž’ƒƒ€’aa_’kki’EEE’ˆˆˆ’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’™™™’’’’’’’’’’’’’’’’ ’’£££’£££’yyy’’’’’’’×ÕŃ’ĄĮ¾’æĄ½’kkj’aaa’‡‡‡’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’†††’777’yyy’ ’’QQQ’’222’\\\’ccc’MMM’##"’ÜŚÖ’ĮĀæ’Į¾’æĄ½’333’ooo’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’„„„’&&&’ƒƒƒ’˜˜˜’%%%’‡‡‡’’<<<’mmm’{{{’___’!! ’™˜•’×ÖŅ’ĪĶĖ’ĢĢĖ’ĀĀĀ’LLL’{{{’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’ƒƒƒ’’ØØØ’’ŗŗŗ’CCC’???’LLL’www’„„„’rrr’DDD’’SSR’½¼¹’ÕÕÓ’¢¢”’DDD’ppp’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’ƒƒƒ’^^^’’ttt’%%%’999’,,,’___’’ˆˆˆ’………’ooo’QQQ’***’’FFE’’ddd’’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’………’sss’NNN’///’(((’///’MMM’ttt’………’‰‰‰’‰‰‰’†††’www’ZZZ’BBB’===’\\\’www’………’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’ˆˆˆ’‚‚‚’rrr’```’XXX’```’rrr’‚‚‚’ˆˆˆ’‰‰‰’‰‰‰’‰‰‰’‡‡‡’~~~’nnn’kkk’{{{’†††’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’‰‰‰’ˆˆˆ’………’’’’………’ˆˆˆ’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’ˆˆˆ’†††’………’ˆˆˆ’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’ÅÅÅ’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’‰‰‰’’™™™’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ž((ę TīB@X`(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCentre_settings.tiffCreated with The GIMPHHapps-projectcenter-master/Images/Install.tiff000066400000000000000000000151501347226342500216560ustar00rootroot00000000000000II*)c²mć]É9'¬|ŒĄöįī’Ü ’z’pš*X o| ōŁč’ā°’ī0!’·’’w’Gš/#””¤ŪHHMœĖ’¤öü÷ū’Ū†–’ē?2’ņ/’Ä’{’uü]É>***1NNOhrquĢ[\_÷''*¼Z6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d...5zz{qpxéBAIł)’$[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y 556Iqps¦xw’<5<’2’R&’<’ &!!!2PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~ WWXi|{‚Ź^\e’?6:’A"’V&’c+’c*’M ’444}}ž—–žšJEQ’/$&’J"’_)’d+’b)ž`(ža*žD"ž--.=™—™ąysx’&!'õ2$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’??F’qp‚’Œ‰¢ł”žŗ’<;FÅ UUUbkkr €~‡ōSHN’J.,’P$’`)’`(ž_'ž]&ž]&ž}THžun’d[^žm_`’c91’b,’2 ­>u¢Ōbö’Ķ2&’Ł@8’“"’Ɲ¹’§”¾’ŠˆŸ’ges’kjy’xv‹’ttzųpmż5+1’B!’b+’d+’`(ž]&ž^(’[%ž[%žØ˜•ž{y‚’6-3’I& ’‚8#’|5!’j-’2 ­$Q}¤Ļ^÷„’Ž’~gz’—”Æ’yw‰’po’“Ŗ’~|’’YWg’) ’H#’^(’b*’_(ž\&ž[%žm>0’‚c\žŠzz’ypv’U?>’_-!’u3!’6!’y4 ’v2’f*ž \/Oušŗhņzżn’ƒ€—’–’rq…’ON[’0*/’C#’P#’W%’]'ž[%žY%žm@3ž•zrž‹„‰žSPZ’T3.’w6%’w3 ’{4 ’x3’t2’l-žj,ž_'ž\)Eg‹''(æ\[_émmsł=ž›‰ˆž’‹‘’J:?’Q,%’‚8"’}5 ’y3’x3’q/žk,žj+žh+žg*žO š @'ZZZ{zƒÅ‘ńpn|’O;>’C%’A ’S$’V$’V$’W$’i>4žšx’–Š‘’jho’cED’c1$’x4 ’}5 ’z4 ’t0žq.žn-žk,ži+žh*žg+’e*žAē.ŹÉŅ’‘ū87Aķ$ŪR%’R#’R#’S#’U#’Y(’_1$’šƒ~’¹¶æ’[T`žB#’{6"’|5 ’|5 ’{4 ’v1žp.žn-žm-žk,ži+žf*že)žc(ža(ž<å*+*2h % zU#žQ!žR!žY*žŒpj’šˆ‹’‹‚Š’kVY’j;2’r2 ’~6 ’|5 ’w3’t1’q/žo-žm-žk,žj+ži+žg*žd)žb(ža(ž_'ž Š/ fZ$žR#’‚cZ’Ą¼Ä’tq‚ž?)'’u6%’{5 ’|5 ’|5 ’z4’t1’p.žq0’n-žl,žk,žj+žg+žf*žf+’a(ž_'ž^'ž]&ž ŃRA<{†kfž–Ž•žwnwžH//žx5"’7!’{4’v1žt0žs/’p.’p/’o.’m.’k,žj+žh+žf*že*žc)žb(ž_'ž^'’\%žR!žŖŽš¶zx„ķN<<žQ*"žDžY%’ƒ8"’u1žs0žq/žp.žo-žm-’m,’k-’k,’h,’g*žg+’d)žb(ža(ža(’^(’[%žY$ž>žh-1œR!žHžI’{3žm-žq/žp.žo.žn-žm-žk,žj,’i+’g+’g+’f+’b)ža(ža)’^&ž^'’Z%žZ%’V#ž8 ž]) \N žFžG’}5 ’n-žo-žn-žl,žk,žj+žh+žg*žf)’d)’c)’b)’a(’^'’]%ž[%žY$žW#žW$’T#ž" ž' \JžCžBž…8"’m-žm-žk,žj,ži+žj,’f*žf+’d*’b(’`'’^(’^'’\&’Z%’X$žY%’T"žR!žQ!ž ž$ \Gž@žIžz3žk,žj,žj,’g+žh+’f+’c)ža(ž`(ž`'ž]&’\%’Z%’Y%’Y$’W$’U#’X%’Q"’IžÓ!\Cž=ža'žg+ži+žh*žg*že)že*’d*’b)’^'ž_(’]'’Z%žZ&’W#’V#’V$’Y$’T#’D’M ’B’ ° \@ž; žb)’d)žg*že*žd)žb(ža'ž_'ž^'ž\&ž[%žZ$žX#žV#žX$žT"’R"’L ’K’C’.’ ’ ā \< ž8 žg,’c)žf+’b(ža(ž_'ž^'ž]%ž[%ž[&’Z%’X%’W#žV#žGžK’M’D’# ’3++’LKP’rt’=QZ’ ’ ]8 ž8 žf+’c)ža(ž`'ž^&ž]&ž\&žZ%žY$žZ&’W$žW%’P"’HžLž<ž( ’*$&’hko’‚‡Ž’£§“’ĄÉÕ’¾ĀÖ’E^iéh \5 ž>žc)’a(ž_'ž_(’]&ž[%žY$žW#ž[&’N!’N!’LžLž1 ’ š Ūźūrrƒ’Üźč’Žčļ’Ųßķ’׎ģ’Iejó’\2 ž;ž\&ž^&ž^(’[%žZ%žX$žZ%žT#’DžP žJž3 żņ ƒsƒŗę},üƮŒ¼¾Ó’IhośŖ-\0 žB’b)ž[%žZ%ž\&žT"žP žLžQ!ž=ž+ ōŃ¢`59c–ĒėJó®T\. žHž`(’^'’V$’EžP žS"’Dž ’¼Š\. ,Ux”‹W. ]#žK ’Y%’L ’S"’Iž9 ś ę ĒP':QF' ] ’O!’S"žQ"’- ’Ö°|N'  > éGś% õ ć•c?  p™|T+ž((ę SīB@X`(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCenter_install.tiffCreated with The GIMPHHapps-projectcenter-master/Images/MultiFiles.tiff000066400000000000000000000223021347226342500223220ustar00rootroot00000000000000II*$«« Ō Ōé«« Ō Ō)'#žywkž–“„ž±®›ž.,(é«««Ō Ō ŌZXOžywkž–“„ž±®›ž±®›ž±®›ž±®›žrpcž[ZQžŌ ?|pCA:Ō\ZQéurf’LJC’972’B?9’ywkžƒ€sž±®›ž±®›žrpcžrpcžrpcž ’ ’0/*ž’#!’KJAž?>7žPMEžPMEž10,?>7žQOFž±­›ž°¬›žšźÓžļźÓžļéŅžīéŃžķ芞ģēŠž10,????~~æ¾¼æ’żł’’üö’ŃŠÉ’ Ÿ˜’ūöäž''#’''#’B?9’dbXžƒ€sž|znž$$!’ ’CB;’HF?’{ym’“°žž³Æžž²ÆžžōļמōļÖžóīÖžņķÕžńģŌžńģÓžšėÓžļźÓžļźŅžīéŃžķčŃ’ģēŠžģēŠžŌvvqæ’žž’’žž’’žž’ø·³’ūųėžĶ˽žØ¤”ž¬Ø—ž¤ žB?9’{xmžYWN’Ž‹}žŽ‹}žŒ~’¶² ž¶² ž¶²Ÿ’ĢdzžA@:žńģŌž÷ńŁžöńŁžöšŲžõļמõļ×’ōīÖžņķÖžńģÕžńģŌ’šėÓžļźÓžļźŅžīéŃ’ķčŃžģēŠžģēŠžėęĻž 鋉{’Їz’÷ņŁž¦£‘ž¦£‘ž­©˜ždaX’daX’daX’Ž‹}ž][S’rocž|pžüöŻžūöŻžūöŻžūõÜžśõÜžłōÜžłōŪžED<’źåĪž÷ńŁžöńŁžõšŲžōļמōļÖžóķÖžņģÕžńģŌžšėÓžļźÓžļźŅžīéŃžķčŃžģēŠžģēŠžėęĻžėęĻžA@8žjh]’‰{’Їz’¦£‘ž÷ņŁž÷ņŁž©§žž ’ČĆÆžžūļž444’><6žmk_žźåĪžüöŻžūöŻžūöÜžūõÜžśōÜžłōŪžłóŪžED<žäßÉž÷ńŁ’öšŲžõļמōļÖžóīÖžņķÕžńģŌžńėÓžšźÓžļźŅžīéŅžķčŃžģēŠžģēŠžėęĻžźęĻžźåĪžB?9’jh]’‰{’Їz’ŠĢ¶ž˜•†žĶĢĘžOON’CA:žžūļž   ’KJAž œŒžčćĢžūöŻžüöŻ’ūöÜžūõÜžśōÜžśõÜ’łōŪžųóŚžED<’ŽŁĆžöńŲžõš×žōļÖžōīÖžņķÖ’ńģÕžńģŌžšėÓžļźÓžīéŅžķčŃžģēŠžģēŠžėęĻžźåĻžėåĪ’źäĶž@?8ž/-)’‰{’‚rž][RžØ¤“žccbž;:4žćą×’’’’’PPO’¤ žÖŃ»žųóŚžūöŻžūöÜžūõÜžśõÜžśōÜžłōŪžłóŚžųņŁž\ZQž@?8žõšŲžōļמōļÖžóķÖžņģÕžńģŌžšėÓžļźÓžļéŅžīčŃžģēŠžģēŠžėęĻžźåĻžźäĪžéäĶžéäĢžWTLžŌ22,’‰{’fdY’÷ņŁž¹¶¬žUSKžŚÕæž’’’’’’’’]\Yž¹µ¢’ķ芞ūöŻžūöŻžūõÜžūõÜžśōÜžłōŪžłóŚžųņŚž÷ńŁžöńŁž64/’õļמōļÖžóīÖžņķÕžńģŌžšėÓžļźÓžļźŅžīéŃžģēŠžģēŠžėęĻžźåĪžźäĪžéäĶžčäĢžčćĢžčćĢ’Ō22,’‰{’a_V’ūųģžŲÖĪ’ŠĖ¶žžūīžPPO’[ZXžUTOž¾¹¦žńģŌžūöÜžūõÜžūõÜžśõÜ’łōŪžłóŪžųóŚž÷ņŁžöńŁžöšŲž64/žōļÖžóīÖžņķÕžńģŌžńėŌ’ļźÓžļźŅžīéŃžķēŠžģēŠžėęĻžźåĪžźåĪ’éäĶžčćĢžēćĢžēāĢžēāĖžŌ22,’‰{’ca^’ūųģžŲÖĪ’üöŽž;;6žusgž¢žŽž³°žžæŗØžļéŅžūõÜžśõÜžśōÜžłōŪžłōŪžųóŚž÷ņŁžöńŁžöńŲžõš×ž’ōīÖžņķÕžńģŌžńģÓžšźÓžļźŅžīéŃžķ芞ģēŠžėęĻ’źåĪžźäĶžéäĶžčćĢžēāĢžēāĖžēāĖžęįŹžŌ22,’‰{’ca^’ūųģžÖÓÄžūöŻž//,ž›˜ˆžČưžēāŹžīéŃžųņŁžśōÜžśōÜžłōŪžłōŪžųóŚž÷ņŚ’öńŁžöńŁžõšŲžōļמDC;žig\žńģŌžńģÓžšźÓžļźŅžīéŃ’ķ芞ģēŠžėęĻžźåĪžźäĶžéäĢžčćĢžēāĢžēāĖžęįĖžåįŹžåąÉžé22,’‰{’lkj’ūųģžŌŠŗžūõÜž><8žĘĀ®žóķÖžūõÜžśõÜžśōÜžłōÜžłōŪžłóŪžųóŚž÷ņŁžöńŁžöńŁžõšŲžōļמōļÖž•’ƒž\ZQžńģŌžšėÓžļźŅžīéŃžķ芞ģēŠžėęĻžźåĪžźäĶžéäĢžčćĢžčćĢ’ēāĖžęįŹžåąŹžäąÉžWTK’Ō22,’‰{’432’ūųģžŌŠŗžÜŲÄž~}yžŽŁĆžśõÜžśōÜžśōÜžłōŪžłōŪžłóŚžųņŚž÷ņŁžöńŁžöńŲžõšŲžōļמōļÖžóķÖž•‘ƒžRPHžšėÓžļźŅžīéŃžķ芞ģēŠžėęĻžźåĪžźåĪ’čäĢžēāĢžēāĖžUTKž@?9’'&#’32,ž;;4ž][RžŌ22,’‰{’FFE’¼¹®žÖÓÄž¼¹«’š˜ŽžņģÕžśōÜžłōŪžłōŪžłóŪ’łóŚžųņŚž÷ńŁžöńŁžöńŲžõšŲžōļמōļÖžóķÖžņģÕžÅĮ®ž;:4žļźŅžīéŃ’ķ芞ģēŠžėęĻžki^žki]’@?8ž@?8ž’-,'ž…‚vžĪʵ’ŽŁĆžäßÉžćŽČž¹µ£’Ō22,’‰{’;93’¼¹®žŲÖĪ’ŗøŖžĄ»©žłōŪžłōŪžłóŪžłóŚ’ųņŚž÷ņŁž÷ńŁžöńŁžöšŲžõš×žōļמōļ×’óķÖžņģÕžńģŌžšėÓžžmk_žmj_žXWMžA@:žA@8žED<žki^’—“…žŹĘ²žŚÖĄžåąÉžäßÉžäßÉžćßČžāŽČžāŻĒž‹‡zžæ22,’‰{’;93’ø³¢žŅ͹ž¶³¤žÖѼžłóŚžłóŚžųóŚžųņŁž÷ńŁžöńŁžöńŁžöšŲžõļמōļÖžōīÖžóķÖ’ņģÕžńģŌžšėÓžĆæ¬ž43-žZXO’spdžspdžĄ»©žĘĀ®žÖѽžįÜĘžēāĖžåįŹžäąÉžäßÉžćßČžćŽČžāŻĒžāŻĒžāÜĘžŠˆz’«22,’‰{’;93’ø³¢žŅ͹ž²®žźäĶžųņŚžųņŁž÷ņŁž÷ńŁžöńŁžöńŲžõšŲžõļמōļÖžōīÖžóķÕžńģÕžńģŌžšėÓžļźŅž’žKIAžÆ«šžÓιžŽŁĆ’éäĶžčćĢžčćĖ’ęāŹžåąŹžåąŹ’äßÉžćŽČ’ćŽĒ’āŻĒžāÜĘžįÜĘžįÜĘž‰‡yž«22,’‰{’oma’ø³¢žŅ͹ž²®œž÷ņŁž÷ńŁž÷ńŁžöńŁžöńŁžöšŲžõļמōļמōļÖžóīÖžņķÕžńģŌžnl`žYXOžCA:ž872žž~{ožėęĻžźåĪžéäĶžčćĢžēāĖžęįŹžåąÉžäßÉžäßÉžćŽČžāŻĒžāÜĘžįÜĘžįÜĘžąÜĘžąŪĘž‰‡xž«’’20*’ø³¢žŅ͹ž¤ ‘’öńŁžöńŁžöńŁžöšŲžõšŲ’õļמōļÖžōīÖžomažZXPžCA;ž<;4ž872ž¶² žÜÖĀžķ芞‰†xžĘĀ®žźäĪžéäĢžčćĢžēāĖžęįŹžåąÉžäßÉžćßČžāŽČžāŻĒžįÜĘžįÜĘžąÜĘžßŪĘžßŪÅžßŚÅž&$!ž« ^\R’’))$ž¢žž–’„žöńŲžöšŲžõšŲžõļמpnbž[YPžDC;’<;6ž972’±­›žŽŁĆžļźÓžļźŅžīéŃžķčŃ’ģēŠž‘’Ŗ§–žéäĢžčćĢžēāĖžęįŹžåąÉžäßÉžćßČžāŻĒžāÜĒžįÜĘžąÜĘžąŪĘžßŪÅžßŚÅžßŚÄžŽŁÄžŌ }{n’YWN’/-)’##ž’DC<žDC<žDC;’@?8ž<;6žQPF’ąŪÅžėęĻžńģŌžšėÓžļźÓžļźŅžīéŃžģēŠžģēŠžėęĻžźäĪž:83žēćĢžēāĖžęįŹžäąÉžäßÉžćŽČžāŻĒžāÜĘžįÜĘžąŪĘžßŪÅžßŚÅžßŁÄžŽŚÄ’ŽŁĆžÅĮ®žŌ ‰{’oma’‘’­©˜žwui’ōļמōļÖžōļÖžóīÖžóķÖžņģÕžńģŌžńģÓžšėÓžļźÓžļźŅžīčŃžģēŠžģēŠžėęĻžźäĪžéäĢž873žēāĖžęįŹžäąÉžäßÉžćŽČ’ćŻĒ’įÜĘžąÜĘžąŪĘžßŚÅžßŚÄžŽŁÄžŽŚĆ’ŻŁĆžŁÕĄžØ¤”žŌŌ‰{’22,’oma’Ņ͹ž‘€žōļÖžóīÖžóķÖžņķÕžņķÕ’ńģŌžńėÓžšźÓžļźÓžļéŅ’ķčŃžģēŠžģēŠžėęĻžźåĪ’éäĢžēćĢž872žęįŹžäąÉžäßÉžćŽČžāŻĒžįÜĘžąÜĘžßŪÅžßŚÅžßŁÄžŽŁÄžŻŁĆžŻŁĆžÜŲĀžŠĢ·ž“žŌŌ‰{’22,’hf\’Ņ͹žžóīÖžņķÕžņģÕžńģŌžńģŌžšėÓžļźÓžļźŅžīéŃžķčŃ’ģēŠžģēŠžėęĻžźäĶžéäĢžēćĢžēāĖž'&#žäąÉžäßÉžćŽČžāŻĒžįÜĘžąÜĘžßŪÅžßŚÅžŽŁÄžŽŁĆžŻŁĆžÜŲĀžÜ×ĀžÖҽž²®ž‡ƒwžŌŌ‰{’22,’a_V’Ņ͹žŒ~žņģÕžņķŌ’ńģŌžńėÓžšėÓžļźÓžļźŅžīéŃžķ芞ģēŠžģēĻžźåĪžźäĶžéäĢžčćĢžēāĖžęįŹž@>7ž×Ó¾žćŽČžāŻĒžįÜĘžąÜĘžßŪÅžßŚÄžŽŁÄžŻŁĆžŻŁĆžÜŲĀžÜ×ĀžŁÕĄžÄæ­ž’žHG?æ«Ō‰{’22,’a_V’³®žž@?9’ņģŌ’ńģŌžšėÓžšźÓžļźÓžļźŅžīéŃžķ芞ģēŠžģēĻžźåĪžźäĶžéäĢžčćĢžēāĖžęįŹžåąÉž?>7žÖҽžāŻĒžįÜĘžąÜĘžßŪÅžßŚÄžŽŚÄ’ŻŁĆžŻŲĀžÜŲĀžÜ×Āž×Ó¾žĒĀÆž¢žžRQIž44/’?Ō‰{’22,’a_V’’Ž€’@?9’ńėÓžšėÓžļźÓžļźŅžļéŅžīčŃžķ芞ģēŠžģęĻžźåĪžźäĶžéäĢžčćĢžēāĖžęįŹžåąÉžäßÉž?>7žÖѽžāÜĘžąÜĘžßŪÅžßŚÄžŽŁÄžŻŁĆžŻŲĀžÜŲĀžÜ×ĀžÕŠ¼žĀ¾«ž¦£’ž_]T’ŸœŒž;:3žō Ō‰{’22,’><6’pnc’?>8žšźÓžļźÓžļźŅžīéŅžķčŃžģēŠžģēŠžėęĻžźåĪžźäĪžéäĶžčćĢžēāĖžęįŹžåąÉžäßÉžćßČž?>7žÕмžįÜĘžßŪÅžßŚÅžŽŁÄžŻŁĆžŻŲĀžŻ×Ā’Ü×ĀžŁŌæžĀ¾«ž¦¢‘ž¤ ž‚rž’Žv)Ō‰{’22,’22,’pnc’?>7žšźÓ’ļźŅžīéŃžķčŃžģēŠžģēŠžėęĻžźåĪžźäĪžéäĶžčćĢžēāĢžęāĖžåąŹžäßÉžäßÉžāŽČž?>7žÕŠ»žąŪĘžßŚÅžßŁÄžŽŁĆžŻŲĆ’ÜŲĀžÜÖĀž×Ҿ’ø“¢žJH@ž,*&’,*&žō}}|>Ō‰{’660’22,’pnc’?>7žļéŅžīéŃžķčŃžģēŠžģēŠžėęĻžźåĪžźäĪžéäĶžčćĢžēāĢžēāĖžåįŹžäßÉžäßÉžćŽČžāŻĒž?>7’ŌŠŗžßŪÅžßŚÄžŽŁĆžŻŁĆžÜŲĀždbXž<;6ž<;6žō¾}}}|k%Ō‰{’;93’22,’pnc’?>7žīčŃžķ芞ģēŠžģēŠžėęĻžźåĪžźäĪžéäĶžčćĢžēāĢžēāĖžęįŹžäąÉžäßÉžćŽČ’āŻĒžāÜĘž?>7žÓĻŗžßŚÅ’fcYž><6’><6žō¾}}}}}|yd,Ō{ym’;93’22,’pnc’?>7žķ芞ģēŠžģēŠ’ėęĻžźåĻžźäĪžéäĶžčćĢžēāĢžēāĖžęįŹžåąÉžäßÉžćßČžāŽČžāŻĒžgdZž&$!ž><6žō¾}}}}}}ykaD7«’64/’22,’pnc’?>7’ģēŠžģēŠžėęĻžźåĻžźäĪžéäĶžčäĢžēćĢžēāĖžęįĖžåąŹžäßÉžhf[ž?>7ž?>7žō¾}}}}}|rhaD7«é22,’~’?>7žģēŠžėęĻžźåĻžźåĪžźäĶžéäĢžčćĶ’ēāĢžjg\ž@?9’@>7’ō¾}}}}}|rhS>)÷é?>7žėęĻžźåĻžėåĪ’źäĶžkh]ž@?8ž@?8žō¾}}}||ykhS>) æéki^žA@8žA?8žō¾}}}}|ykaD7 ?·”}}}}}rhS>7>ahhS>)  00Ŗ$$²$ŗ$(R€ü '€ü 'apps-projectcenter-master/Images/Options.tiff000066400000000000000000000023561347226342500217070ustar00rootroot00000000000000II*€ P8$ „BaPøSž‡?Ń×ėł4)@1…(HdR9$–ˆC‘ ōūl»oĒńĄœp&œBаķ9 PeB8ōĖ>Ēó"¹)ź6Īi³}TA¬@ēÓŁåf½ ”Źęv2ZegŒ©ĪӒræo­O+rV| ’v¼@®÷«Č÷~¾æĄŲ8’!’'Ps8Ī1KŽ@UMé†U1pøVīrHŽw=ŸŠht/·Óńž—A“1ĻńŠUN’ü–S-˜ÜW'ł¹s|’poõ‰CŃäūG› KÖ=”JļŽŻ7ś§­ĆÜę3UŲ?üļ'V*v[ż pdćŠn/h&/\éŒdQµ!~sŻžĻn~„;Å28O¹ĢqŠ‘=®Cął>ˆą@ڲ£ƒ.½3Æćr’!.ńr‚…9¤ŪVŽé:|žēپlj8g‰a Ń«ĪŪ ĻŚ2G†ØŃŸńųŃ Č‰!ČŅL‹%Éx2ØD0‘Ą(‰”aa£!°¢NS˜ēć`Ō9ģ‘(9́RĮ  ņ0’9˜’:Ī““ń;ĻSģó?Ļ“¤).NāFŽbɃ.¢„ĄDƒŠN9Ēxˆ“¤"G¤±Ņ 9PŻE?P5-GPŠh<¦ĪcłŸFń–%ŹRd3Œ#¹Q5MƒœÜĪNüRTõ5‰cÕŻŠŠApU›ōa^‚EīqĀn%‚‚Ō5Cd[× T Õ]l'uś”¢Ćœsėa'l+Ōõ¹aŪ÷ĶÅpTW" sAĮīÓVŃr2t¦Cø=–×¢į{ ’yć%Iø¬‹ā˜Ä˜āV[tö3¶® ĒÅųssˆBŹö³ČįU£‚†LÜeJ±•¤j21#‡ 8mĀ%(å”…Æęk›(Ā?ƚk§/ś‹©ź éßmé½ ’Ó­½Æģ C¬«śRŗź»NŸµź[VŪ¶ {FČ·ģÓ~Å»ļņū¹åZŽ@ˆļ‘7Ąé;ö»ĮšˆFÄ¤Ŗ¬q‹·!Čń¼5Ärœ—1Ģņ¶f¹Cņ|Ž'ĒŲŽ3ÓōŻL‡ŅcĶäŠńš=»bö—åł œrÅń=•ń}ß]ƃÜ.<öž‡s’’CŁöŽ›;ųˆuÅvļ—ßų^µ~ŁUW-Šs|Ļ}!łžĻĶ=z8’]–z¼'Gb}V5‹u¤ųu¶oŁšņē’¹^ūÆމöæ÷sI Ln ¹Ŗ@øŪĖūW€p™Éģū¾ō¼“ „¬ŌV’øļļ÷Ī7ßĢ·<ēœē<ē¼ßüæāz„ņž’l˜¹Śģ1īhw8[N¹œĒ씐łŪ÷׆€Ė­ŗfŚBž!‰ ‘J!ĶČ@$‘š4[mūšMŸ“9-§œĪćd%ľmĢcØ]©R '“g2 >­TƒLŽ’œL¢) “ńDĀ7ą÷ŸnµŪZZl¶ĆūL¦Fææ'žLĘæMü<`Ź]ZŻ‘( “G£ˆ‘ ŃDœf\.‰¹dN&Cž\ŁGs²;L^_+·¤X|²½½yēūļo“Ćß0žņUZ] ‘BäKŒø2‘d3‰8’ˆŃN4™@$Īžć@ĄēAÄĻ@aN6²óņ0õī»į„×d‚Ž`pśōÓƒ'Oī=érķ`œ ‡’”öpņ’ Ā/ŽN.aLī8³¶Éäˆ=qŚ‹§ķŠŃļįh <āšnr%|F#“ō=G«…žb4ƒb%ĻĢD8w×öļ7›ŪŽ£].W›ƒģł{rŽšžvĀ/!xČąpR)OĻŪ²²ļńŌotd’EF"HĻR6ē˜M<>*1qN.CQV*”*ŚS,Ył:ZmöcĒģ¶ĆĘ”ķĆĮĄĄ×±‡šį—2ģBĀOūŸ¼Ÿö}:iüģŸ(m;‚A …#©ć<>ņ…Či&;F8GgŠ5Ťg,‡ō2i*rYQœ2ł|æ)čjsŲ[Zķöć‡M¦ę“Ļ'#Žłāg"+‚'ķŹŌ jīŅéŗÆ\DŲÅ)ü8ė÷äŲ8¤ķįŅIG|>özĻ»>‹ĒtĀZ&W š>žŁ;šCQ²‡łB@6 )F,6Lßņ ä“Mżf³÷öĻT‡‰¾³žå‚×P%øvaƒšĘ†)‚y¼āY}Ø=ś§1·ĶY„Õv'ĮQČ(öR7Ķ}rBš7£qHžķ]» &āĪYģäē»WÆF‚ģ~’ORžĒŅ×H$q^N1›Ų¤ü`œ‡ĖĆ4āZ?Ć’@_oݧ¬_ø]öß÷Ž »G„ą „+ā^ó“ėę£Ńéæ’¬Ńž!ī(³Č'̆Q¾Œś>‰sö°ļŒ;oY­0G#Č#  …8sę vļŽłóēć'7Ż„”·CHœŸGg·claŗQ'‘2.÷ߞ·lÖ˜€’̆'×Č·Ü~äZ©ˆ‹ƒķw<ęüŽÓ“¾)[Ż%ņ •t\6;“jV‚x”HŽā?—Q\öA1ŠEq¼ ? Īܹråy÷śõŗuh}īyȈÓēr’œĻG¹8ŖÅ|ʜ”ĻļX-Æ}āńü`<öŃ”Sr _}Pöޜ:qm<ÉĆėł÷žxƒė¶…BÕöB!¦”–@=­ŃĆv;¦<‹°{P|Gżu‚¶ƒ4«>äUVąźõėqéģŁ©ÜećäéÓXæäh¬rZĘły”ŽkŌŪ³Ō‹m™ś¾@ …BAoĆåó»fĮ”ēV r¦ė#w”q›ĒõC6’jhłQČe™ˆ·¶Ą’ģ“H ō‚“)JéK€ōā1³üāR(ś{°<;'ÕWx©wbŗŖ ŗÅ”<©iģ£z@łī–(ē  šXÉ^ŹÓ=.7ų`oO-iV×xü‹—-[öļėׯæ&S(Š]1kĮįšśE„ŗóKšŠŹĀĖęE¾Nu¶:I²å"Äūŗį’5Å”£ |²łšIÓÅåūń#•2ŋ åC$=™&ĘÜ{ԊÅM5µe3šI Ė3CP47"B6d‘½“öčyŹ8XMūĒ㯫«[{ߌµĻģol|ńųöŪ¦kŌośŖ«³u¹EŠitØVķG_(ŠŻŽe0ōŠ*åŠK…Č– ‡® O pŖ "ņÕ+Ō«õēBb³ą'Y ˆ˜^qø)̬F±ŚŠÅČÖƎčc‚ꓸ¬“^ī¤/½ł.™V‹’?æ†Ä‰&äo>÷z÷¾e·]‰ “§°“tك÷ß’¦(##į>x0au¹ų(-EÕ>”( Ja?žŪzfą’l+ Ļ/^­ ~9z„ ‡·oŖ—ŸÅ“¢b“4ī…]Ÿ q(ˆµŌ£åö§xN¶q(9i^§tl’Ę&‹J‘ū³Ē!ŌēĆé'ŻźDˆjVŽe‰ĒīC¶XŠMĆꍟł¼«&ŹŁiłłK\wŻ»†²2HH§\¢”:‹Å†ļ\½·^ņʲ:ńē3ÕŲb]±n*r5 é5Ųõ‡ēšæ/<…¹óÆÄ :'!Ȅ„p/GQIŗ- °ÉŠżŁA1A$nåTd®^ ޾ofoV·¶~7} µBŒ×ĶA˜;[Žėj;xżxģßĶĖūž-Ć+;£1E€ōnެYŠėtčļļĒī]»ŠŌŌ„ÅK–caóņßEŽ4‰Ż½%ų]’J(ņkQTØGß”]ųķŗ{Q:©>õ<|!r Š0µ·ylĶ@ŲT»ŁŗSB“Ł’$Īp¦Ō@üću@–vĀmņE0l·ĆÜÕ…Ź®&L5¢9 ń«’łlīų}-k›wmŻ0Š}mż%^¦T>ōį±šXl©>ĘT*,ŗį†”F˜††Šqņ$rI#Afźwć²ŅźAćŲՙ‹×ļ@vi=”¢$žų«ą²š %ŪEŅ,Ņü9Śé°ńtĶęw2ČļŅD Ā®üéĻ©čäĮIŲĢļv̽=Øš™QX=ī, õŚ™8zŖķ§:%vģ|ö§3"įPŖ1|Ŗ¼ņ+KK–:(Ö=:)fnŅš(ńVU\L÷˜Mķ›mxčśÓō'H“>£¼ b{³Æ¬@öōp4oĒŽOSMĶ¢œ”śŅ™šŲ‡ĖY= óG“.ę÷AR9S}ZCŹļĆ4Ķ †h3Y%CiQ>zmN<÷ņk˜µ`xÄGĆQŒŪ’km]ČOāJć•jķærŸŠõłŌ«zÉēFĀ?@č¦c#›8T÷ ‹KY[ AiĀį$Źmø²xõģŲ›-ę›i•Ü€#æ_ūĄ„"1L›Ń›™tА‡Š±#ąP‹SN+jėQq’/ 4Ąā ĮDœ·RŽ1ģez%ŖJó%Įķā‰—ß NNäµõÓÆŻūøĒfīåĻ,™bŃse„#½2Õ–]d ‡ÖZ&ü§(ž!ņ{0F|śtä.¼Šśt!4Ā\SžT¢Al~SˆķŽ[q*āEćź7E(R…¹‹–ąŅ†¹hģ!X÷ģ@vĆ,TżāI𳕰ø »'ˆaņ»qüžÆÅ“ņˆ¤«€;ĘE3ń†Õ {ū‘­ożź%ćs7O(,}»¢ņ8i“ų¼?XĻMń )Ć/ĆJÜķ$m7Q.™;Ā,-q+t;I—NbļÖLl9ZŽĻ¬=‹…PiUøćĮǔͯ Šć„ł£ œyÄw«7‚!Ān¦Zm¤k֕ęczEaJ[=“°±¤£A8<^=nŻś»}žĮ¦ēĒ槞>ó͊Źfź-&O¤«#E=™Š‹€x§~ŃEß{Ø.DŖ*ŃŒćw6į¶yN¬ł^½+Ā!ī"ø£>DIæ/_ü}ˆ“U0H8‰ˆ„£°āÄ÷ŒC&Ų-Ćh ÜU%¹Ē3-wl¤’vÆƤ”į¶>ųcó«ķ-—%‰ČD–_šŹ•źĪ ń·…Öwź›] ®Ä õžüövvŗń¹ŻŅÉVÜžOQ—A\{/zJxÜVH 5˜¬“§N·†“Ūó°üxµÅz䩕p…ć°©’ó‡ˆW8©vg7ż¾Š4l|ń—{Ķ…`ݤRżšü‚/Äę‚6PķOžp NĪ*6oF6­]¤õm}pÄø¬¾IŻ]čęÖĄ›Œ¢xņ%ą“ö©ÆvбN;4b>jŠōąR’lÅa Ĉ+¾”ĻżŻø¼m?ų‡÷ ćm§cõ>Æ÷„ AŗT*½ź„Iå;/?gÅ ÕOG”¾÷vv²ēRȖJįÜüʇŗĄ­ŅĆZŲ€`Ż,Äj˜ˆĻ&« ܰ“42ØädXčw;ńÜEŲ“ŽL;ˆkśŽŪwÖ`ˆõÉߘ†t…B{.IŸ‘Q“irU«˜Ē“|UXmė^|-|¤mmmع¤“ŖkŠŗaŖ¶ļ¤¼ƒ«!Nė/ļ”:×MB„z×BŅGö\Į`y%Ÿūa!ܖ!#¤ū>Äg?$“nė!½Ė zŽ'|ėś{«h4p!8G“erÕ1Ņ¢I>T78¬¦z7DėĀĢ’"Ųü.¦SƤ%]ķüxŖhĖ%ŒI¦a¤É|²5”T"VR†Š”Z˜ +Ń-VQ½ ĀF5FÄM@yd/Ź~ }V6NSĶO¦ź4'|¾S/ ›æK·5Ńd\&„ųĖ‚¢wnT«–2͌ŒėĻæ€?Aš²™č¹n1|Ō«$i=X¶ķ}( s”ģāSÆTmaöPīsµ:x KѤ.„I‹śł³!mm÷ÕѣחźK™Ž²5ćŪVKćn·{C’M&ģŁĆyĻćHó§ˆÅ®Önœ­PHŌ£„’‰³k¤ó°Šŗ/PW‡!ڐvĖIKu¬G¢>˜›źõ9øąHŪBŻõź%‚Z÷¤ÖÜtŹžó=38ųFg(ø5ŁFӞŽz.p‡iłĮ­Ė5ŚeKÕźÜ,ĀIõ鉑ĄŃõÄyżĘ;B=łÜ·p!§N!×é$’ņ¾$rŁcü#w»×~ŚvöÉz½_öõ>m‰Å>”]ÖÆ¹ÓÓõ%ųGG>aæ~–\~Ż-ķu2Y&»f˜=’W“žŽˆl6Øąš= vźw ĢĆ©ē²_%‡Ę>Ķ3ŌKwļFń³ķp$ā{b ‘¾ #üa60r²:żŠ—ēŃēÖI$«Vh“WĶĶŹRĖ™ńĝįā"ź-$©õa°ł(tdėĮ/?ós­ļ„ŸĒÖh`ļ¬hj2}Žä÷æ@»½4{hZ/÷DƒÅdé¢ģœ•wétÕĀķ£žČ CAņ7ųžaeēœšūĮŽķ0ü™”{ū½Ėļ-Ƭ¦žĄWēŁ{ʝ ūˆ‹r!‡³ˆøµź>ƒan¹HBnē Hė¬ųEĄš3h¦ī§cšé‹Å’ėŽvÅć¬/vąļŻi[|Ą—JäWBŹÖ9“D¢ėnTŖÆ]¬RäP B¬>¤ŸK}üLŲsvv{6’ڰłų~Æ÷UśĖˆ»Ę`gĻN'ücGqė6źo¾Y„®.ČĢä¦ņżÆŌ¦”>ŅÓ£äʝĪ` šĀŠŠFj-§ń:pNo¼iüį _ńkÅdՒ•÷č ‹Ø–HäS“/ŌŒä®“xßFłĖŽgov GSļ˜Ī;qŽ?Žō¤.šyæĢÜ__ Ü~‹FsӍjö µHłÜBėÕ3Ō«½eµōģõøßĄˆÖ0ģ®ōփs¼§ü¢eāėŽ"¾dŽBqż2µ¦”N&2• oXŸ`%’ļ°ŪƆŒ›¢#¼aøclåćż×՞Æ32((ó§I$+oQkęĶĻĪÖ³žé$qgĶé®ęžpxcĮ9ތśŸag¾’Gäķß:ņ<Ž÷ē(osG#śm.×vś­#¼g6ŒĶ[†ū›āżÅŽźł*’ÉdśķŃŽ’qœÕY†wäõąœ’ ōS ‘ž002²€ +:@Kfn(=R/home/diablos/pm_files/ProjectManager.tiffHHapps-projectcenter-master/Images/ProjectCenter_add.tiff000066400000000000000000000147021347226342500236310ustar00rootroot00000000000000II*??’’’’’’’’„?æ’~\’¾Š’ü·’ū·’ś¶’ł¶’ŗ‡’{Z’’ČN?’?.’ż¹’żø’üø’ū·’ś·’ł¶’ųµ’÷“’ö“’õ³’=,’’X ’\’ž¹’żø’żø’ü·’ū·’ś¶’łµ’ųµ’ö“’õ³’ō²’ó²’yY’’-/æ?.’ž¹’żø’żø’üø’ū·’ū¶’ł¶’÷µ’÷“’õ³’õ³’ō²’ņ±’ń±’<,’Õ0īVVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’VTV’VUV’VVV’@?@’’¾Š’żø’żø’üø’ü·’ś·’Ļ—’’)’ö³’õ³’ō²’ņ±’ń°’š°’“ƒ’’) Ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’€€€’’żø’üø’üø’ū·’ū·’ś¶’Ļ—’’(’õ³’ó²’ņ±’ń°’š°’’µG Ž’’’’ōōō’ŹŹŹ’ddd’ŸŸŸ’zzz’ooo’āāā’ŃŃŃ’¦¦¦’ĶĶĶ’æææ’•••’uuu’………’jjj’’~\’üø’ū·’ū·’ū·’ł¶’łµ’Ī–’’(’ó²’ņ±’ń°’š°’īÆ’ī®’ķ®’vW’’\0 Ž’’’’ééé’ŹŹŹ’ŠŠŠ’ŖŖŖ’ŖŖŖ’”””’ŪŪŪ’ĶĶĶ’ƒƒƒ’ļÒØ¤’“NŒ’ŗs“’¢]œ’ŠG„’’}[’ū·’ū·’ś¶’¦y’|[’|Z’gK’’’yY’xX’xX’ʒ’ķ®’ķ®’ģ­’uV’’mB Ž’’’’’’’’łłł’ļļļ’’’’’’’’’ééé’’’’’’’’’۟ՒįnÖ’ŁMĢ’Ņ1Ć’Ļ+Ą’Ė*¼’Ē)ø’’}[’ś¶’ś¶’ł¶’R<’’’’’’’’’žt’ģ­’ģ­’ė­’uV’’wN" Žżżż’ŖŖŖ’ÖÖÖ’’’’’’’’’’’’’žųż’öĶņ’ćb×’Ū3Ė’Ł'Č’×$Å’Ō#Ć’Š"æ’Ķ"½’É!¹’’}[’ł¶’łµ’ųµ’¤x’zZ’zY’eJ’’’xW’vW’vW’Đ’ꭒꬒꬒuV’’~U) Žūūū’øøø’ßßß’’’’’’’’’’’’’ō“ī’äSÖ’Ż.Ķ’Ū$É’Ų$Ē’Ö#Ä’Ņ"Į’Ļ"¾’Ė!»’Ē ·’’|Z’ųµ’÷µ’÷“’ö³’õ³’ó²’Ź”’’'’īÆ’ķ®’ģ­’ė¬’ź¬’é¬’č«’tU’’~U) Ž’’’’ššš’÷÷÷’’’’’’’’’÷Ęņ’åMÖ’ß*Ķ’Ü%Ė’Ł$Č’×#Ę’Ō#Ć’Š"æ’Č ø’æ°’½®’_W’’÷“’ö“’õ³’ō³’ō²’ņ±’ȓ’’'’ķ®’ģ­’ė¬’ź¬’é«’č«’č«’’¾~U) Ž’’’’’’’’’’’’’’’’·¢¶’±TØ’ą4Š’Ž%Ģ’Ü$Ź’Ų#Ę’Ķ"½’Æ3Ø’tO}’hx€’f•ˆ’f„‚’RG^’’ø‡’ö³’ō³’ō²’ņ±’ń°’Ȓ’’'’쭒묒ꬒ髒諒諒­€’’wN" Ž’’’’’’’’’’’’żöü’鍱’“)§’²>§’Ū3Ź’Ū$É’Ć&¶’’P˜’h‡’[±ˆ’U„~’Qx’RŸz’U¦’$’=,’ō²’ō²’ņ±’ń°’ļ°’īÆ’ķ®’ģ­’ė­’ź¬’é«’č«’ē«’ēŖ’:*’Ž~mB Ž’’’’’’’’’’’’łŁö’äMÖ’ß(Ķ’°#¢’¤:›’Ņ-Ā’„VŽ’`¦‰’RŸz’P›w’P›w’P›w’P›w’P›w’L”r’’yY’ņ±’ń±’š°’﯒쮒뭒ꬒ鬒諒諒窒sU’’~{\0 Ž’’’’’’’’’’’’ļ”ē’ß1Ī’Ż$Ė’Ū$É’¦™’ŒNŒ’_±‹’P›w’P›w’P›w’@{^’!Ķ’Ū&É’Ł$Č’Ö#Å’¦6”’eœ‰’P›w’P›w’P›w’GŠj’8kR’P›w’8kR’ ’P›w’P›w’Jo’@|^’(*’’’’’’’’’’š{qY0 Ž’’’’’’’’’’’’Ł:Ź’Ł%Č’×#Ę’Ń"Ą’•L™’Yš~’P›w’P›w’P›w’P›w’P›w’8kR’ ’)L;’P›w’P›w’O™u’IŽm’WJa’sj’C =’&#’ ’ ’AAA’bbb’’’•fM- Ž’’’’’’’’’’’’Ö9Ē’×#Ę’Õ#Ä’Ī"¾’•P›’X˜}’P›w’Jm’P›w’P›w’P›w’’!Ą’ą>¾’ą@Ē’Õ.Å’” ˆ’•<…’×JĀ’×$Ę’ž‘’m›’Y­„’P›w’P›w’P›w’P›w’P›w’T£}’i„„’ƒ y’m"c’æK­’ø2¬’ ”’›Ž’QKĘdddžZZZžXXXžYYYžlllžccc’qqq’kkk’iii’jjjžttt’ggg’ĒK³’ą>¾’Ż=¼’Ü=½’į@Ļ’ß(Ķ’Ś$Č’¶!Ø’†5x’ĆB°’l«”’T¤~’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Qx’Q—v’·H©’«& ’¢”’ “’œ’tk’8aaažTTT’SSSžUUUžkkkžccc’ooo’ggg’eee’fffžrrr’_~’Ż>¾’Ū=ŗ’Ų;ø’Ł?æ’ą8Š’Ž%Ģ’Ż%Ė’Ł#Č’»#¬’g\u’Y­„’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’h}’œ’””’ž‘’›Ž’‚w’:6ŖZZZžPPPžNNNžMMMžeeežbbb’lll’ccc’aaa’bbbžooo’[‰’×<·’Õ;µ’Ņ:³’Ö=½’Ž.Ģ’Ü$Ė’Ū$Ź’Ł#Č’Ä “’p»œ’P›w’P›w’P›w’P›w’>x\’5gO’G‰i’P›w’P›w’P›w’P›w’N˜t’—/’Ÿ’’œ’š’ƒ’D@Ę@@@ĘKKKžIIIžGGGžWWWžddd’hhh’^^^’\\\’]]]’mmmž„P™’Ń:²’Ļ9°’Ģ8®’×<Ć’Ü)Ė’Ū$Ź’Ś$Č’Ņ#Į’oCu’T£}’P›w’P›w’P›w’3'’"’3'’  ’5gO’P›w’P›w’P›w’N˜u’ŠN’Ÿ’’˜Š’•‰’‘…’_X’000GGGžEEEžCCCžPPPžggg’ddd’ZZZ’XXX’YYY’lllžĒB±’Ė8¬’Č7Ŗ’Ē8«’Ł;Č’Ū%Ź’Ś$Č’Ų$Ē’Ę!¶’h†…’P›w’P›w’P›w’>x\’"’P›w’P›w’G‰i’’P›w’P›w’P›w’P›w’ffx’  “’”ˆ’‘…’ƒ’of’8GGGžAAAž???žFFFžcccžaaa’TTT’SSS’UUU’kkk’Ī<µ’Ć6¦’Ą5£’Į6¦’×:Ę’Ś%Č’Ų$Ē’Ö#Å’·Ø’_˜ƒ’P›w’P›w’P›w’G‰i’>x\’P›w’P›w’5gO’  ’P›w’P›w’P›w’P›w’ml’¬* ’”ˆ’‘…’Žƒ’of’???Ę===ž<<<ž:::žRRRžZZZ’PPP’NNN’MMM’eee’Ē:°’»4Ÿ’ø3’¹4Ÿ’Ó7Ā’Ų$Ē’×$Å’Õ#Ć’Æ¢’eŖ’P›w’P›w’P›w’P›w’P›w’5gO’’’,VB’P›w’P›w’P›w’P›w’=vZ’µ1©’”ˆ’‘…’ƒ’me’8>>>ž888ž666ž>>>žTTTžKKK’III’GGG’WWW’Į8Ŗ’³1˜’°0–’±1˜’Š5Ą’×#Ę’Õ#Ä’Ó#Ā’Æ”’a±’P›w’P›w’P›w’P›w’P›w’P›w’P›w’>x\’  ’>x\’P›w’P›w’P›w’Mpežŗ3­’“‡’ƒ’’kc’???ā555ž444ž555žTTTžGGG’EEE’CCC’PPP’ŗ6„’Ŗ/‘’§.Ž’©/’’Ī5¾’Õ#Ä’Ó#Ā’Ń"Ą’µ¦’^Ž~’P›w’P›w’P›w’,VB’>x\’P›w’P›w’P›w’3'’5gO’P›w’P›w’P›w’pj’·1Ŗ’Ž‚’Œ€’‹€’ia’U777ž111ž111žCCCžGGGžAAA’???’FFF’³4ž’”,‰’ž+†’ -Š’Ź6»’Ō#Ć’Ņ#Į’Ļ"¾’Ą °’^dq’P›w’P›w’P›w’5gO’"’G‰i’P›w’>x\’  ’G‰i’P›w’P›w’P›w’{Z„’­* ’’‹€’Š~’g_’(((///ž///ž...žLLLž===ž<<<’:::’©0“’˜*’•)~’”(~’¾4®’Ń$Ą’Š"æ’Ķ"¼’Ę!¶’{.x’S”{’P›w’P›w’P›w’#E5’  ’’"’>x\’P›w’P›w’P›w’IŽm’¢C’›Ž’Œ€’Š’ˆ}’YR’+++©---ž---ž:::ž>>>ž888ž666’‡.u’'z’Œ&w’‰%t’£.’’Ī)¾’Ī"½’Ė!»’Č!ø’²¤’\‹{’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’dSožµ0Ø’’‹’ˆ}’w’KEā ///Ę+++ž+++žDDDž555ž444žq1f’‡%s’„$p’"m’–+„’Č0¹’Ģ"»’É!¹’Ę!¶’Ā ²’0}’Pœw’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Fˆh’Ą@µžŸ!’’‹€’‰}’‡|’qh’$ !Ŗq,,,ā777ž777ž111žQ3Nž†%tž|"j’y g’„%s’ŗ3¬’É#¹’Ē!·’Ä “’Į ±’­  ’nVx’M•r’P›w’P›w’P›w’P›w’P›w’P›w’P›w’A~a’qBtž³,¦’Ž‚’Š~’‡|’†{’WP’+ (666Ų///ž///ž~,ržuc’ra’p`’š+Œ’Ä&µ’Å µ’Ā ²’æÆ’»¬’Ø"›’{G’E‡g’M–s’P›w’P›w’P›w’K’p’8mS’›D˜ž¾3±’•‰’‹€’‰}’†{’‚w’QK’+++©---žL0Ižv!fžl\žiYžw h’±+¤’Į!²’Ą°’½­’¹Ŗ’µ§’­ Ÿ’™5’’lSv’S_e’9nT’RWa’tIy’ĄC¶’µ-Ø’–Š’’Š’ˆ|’†{’c[’* ' ///Ę+++žy&lžfWždUžfXž•+‰’·'Ŗ’½®’»«’·Ø’“„’°”’«ž’«%ž’Æ,¢’˜:‰’Į6“’°*¤’£"—’•‰’’†’Œ€’‰~’‡|’~s’6 2’8qN,Jėi[ž_Qž^Pžk^ž*‘žµ"§’ø©’µ¦’±£’®Ÿ’Ŗœ’¦˜’Ÿ’’4€’«#ž’˜‹’”ˆ’“†’„’‹€’‰}’ƒx’RK’%"qV"OĢ\NžZMžYLžr!fž)’’° ”’²¤’Æ”’¬ž’Øš’¤—’’Ž4’„!™’–Š’“‡’„’’‹’„y’^V’LFāPH©WJžVIžWJžq fž–'‹žŖœ’¬ž’©œ’¦™’¢•’›Ž’Ž4’  ”’•‰’’†’ƒ’Œ’‡|’[T’+ (ĘWMĘTGžSGžUIžk_žˆ#~žšŽ’¢•’¤—’ “’™’4’›’“‡’„’Œ’t’TN’; 6Ę51qSIāRFžSGž\Pžmdž xž‹€’˜‹’ƒ’‰3{’…’‹€’xn’ZS’RL’5 1q  2,:3©NDžTIž`Užh^’od’d]’j)`’[U’TN’:6Ę7 3q ((Ŗ²ŗ(R€ü '€ü 'apps-projectcenter-master/Images/ProjectCenter_dist.tiff000066400000000000000000000151601347226342500240430ustar00rootroot00000000000000II*C2wveDĢ©vTī™wD’ŖwU’‡vCīC2!wT22w‡eC»»wf’ŖˆU’ŖwU’ŖwD’ŖwU’™wD’ŖfD’™wD’˜eCīC2!wˆvT̈ˆTĢfD3’Ŗ™f’»ˆf’ŖˆU’ŖˆU’ŖˆU’ŖwU’™ˆD’ŖwU’™wD’™fD’ˆwD’™fD’ve2ī˜veĢŗ˜eīĢ™w’»™f’̈w’»Ŗw’fDD’ˆfD’»ˆf’ŖˆU’»wU’ŖwD’ŖwU’™wD’ŖfD’™wD’™fD’ˆf3’™fD’ˆf3’ˆeTĢĢŖˆ’˜vvĢĢŖˆ’ĢŖˆ’»Ŗw’Ģ™ˆ’»Ŗw’»™w’»™f’»ˆw’»™f’™wf’UD3’Ŗwf’ŖˆU’ŖwU’™wD’ŖwU’™wD’™fD’ˆwD’ŖwU’Ŗˆf’fD3’UD3’ˆUD’TD!̈fU’ĢŖˆ’ĢŖˆ’ĢŖw’Ģ™ˆ’»™w’Ģ™w’»™f’̈w’»ˆf’»ˆf’ŖˆU’̈w’fUD’U33’ŖwD’ŖwU’™wD’»ˆf’wfD’fD3’fD3’fD3’ˆf3’ˆUD’wU3’wU3’wU3’T2!Ģ""’wUD’»Ŗw’ĢŖˆ’»Ŗw’Ģ™w’»™w’»™w’»™f’»ˆf’Ŗ™f’»ˆf’ŖˆU’ŖˆU’»™f’fDD’ˆfD’fUD’DD"’wU3’ˆwD’™fD’ˆfD’ˆfD’wf3’ˆUD’wf3’wUD’fU3’wU3’DD!Ģ3"’UD"’f3"’Ŗˆf’Ģ™ˆ’»Ŗw’Ģ™w’»™f’»ˆw’»™f’»ˆf’»ˆU’»wU’»™f’wD3’fD"’™wU’UD"’ŖfD’™wD’™fD’ˆf3’™UD’ˆf3’ˆUD’wf3’ˆU3’wU3’wD3’fU"’wD3’fD"’T2!Ģ""’U33’UD"’UD3’ˆwU’Ģ™ˆ’»™w’»™w’»™f’»ˆw’»Ŗw’fD3’fU3’UD3’ŖˆU’ŖwU’™wD’»ˆw’fU3’wU3’ˆwD’™fD’ˆfD’ˆfD’wf3’wUD’wf3’wU3’fU3’fD3’fU3’fD3’UD"’fD3’w3’UD"’U33’UD"’f33’wU3’Ģ™w’»Ŗw’™wf’fD3’fD3’ŖˆU’»wU’ŖˆU’ŖwU’ŖwD’ŖfD’™wD’ŖwU’ˆwU’fD3’ˆf3’ˆUD’ˆf3’ˆUD’wU3’wU3’wU3’wD3’fU3’fD3’ˆf3’U3"’3"’Ģ""’UD3’UD"’fD3’UU"’fD3’wfU’fDD’fU3’»ˆf’Ŗ™f’»ˆf’ŖˆU’ŖwU’ŖˆD’ŖwU’™wD’ŖwU’™wD’™fD’™ˆU’fD3’fU3’ˆUD’wf3’ˆUD’wU3’wUD’wf3’fD3’fU3’’’’Ģ3"’UD"’fD3’fD"’fD3’fU"’D"’fU"’Ŗwf’»™f’»ˆf’ŖˆU’»wU’ŖˆD’»wU’ŖwD’ŖwU’™wD’ŖfD’™fD’™fD’ˆf3’ŖfU’fD"’fD3’™wD’fD3’D3"’"’’"’’’’Ģ""’fD3’UU3’fD3’fU3’fD3’33’wU3’fU3’ˆfD’Ŗ™f’»ˆf’ŖˆU’ŖwU’ŖˆU’ŖwU’™wD’™fU’™wD’™fD’ˆfD’ˆfD’™wD’™fD’33"’""’""’"’"’"’’’’’Ģ3"’fD"’fD3’fD"’wD3’fU3’D""’fU3’wD3’wU3’ˆUD’™wD’»wU’ŖwU’ŖwU’ŖwD’ŖfD’™wD’™fD’™wD’»wU’wf3’f33’3"’"’""’3’""’"’"’"’’"’’Ģ33’fD3’fU3’fD3’fU3’wU3’33’wUD’wU3’wUD’wf3’ˆfD’™ˆU’ŖwU’ŖˆD’ŖwU’™wD’»ˆU’ˆfD’fD3’33"’3""’33’3""’’3"’""’""’""’"’"’’’’Ģ3""’fU"’wD3’fU3’wD3’wU3’D""’wU3’wU3’wU3’ˆU3’ˆf3’ˆUD’ŖˆD’̈U’ŖwD’™fD’D3’D""’D3’D""’33’D""’3"’"’3"’3’""’"’""’"’"’"’’Ģ33’fD3’fU3’wU3’fU3’wUD’33"’wUD’wf3’ˆUD’wf3’ˆfD’ˆf3’ˆfD’ˆwU’U33’DD"’D3"’D3"’D3"’33"’D""’33"’3""’’3""’""’3""’""’"’""’"’’"’ĢD""’fU3’wD3’wU3’wU3’wU3’D""’wU3’ˆUD’ˆf3’ˆUD’ˆf3’™UD’ˆf3’™wU’UD"’U3"’D3"’U3"’D3"’D""’D3"’D""’33’"’3"’3""’3"’3’""’"’""’"’"’Ģ’UD3’fU3’wUD’wf3’wUD’33"’ˆUD’wf3’ˆfD’ˆf3’ˆfD’ˆfD’™fD’ˆwU’UD3’DD"’U3"’DD"’D3"’D3"’D3"’33"’D""’’3""’33’3""’""’3"’""’"’""’"’Ģīf3"’wU3’ˆU3’wf3’D""’ˆf3’ˆUD’ˆf3’™UD’ˆf3’™fD’ˆf3’™wU’UD"’U3"’UD"’U3"’D3"’U3"’D3’D""’D3’"’33’D""’3"’3"’""’3’""’"’""’!ĢīfD3’wf3’ˆUD’D3"’ˆfD’ˆfD’ˆfD’ˆfD’™fD’ˆfD’™fD’™wU’fD3’UD"’U33’DD"’U3"’D3"’D3"’D3"’D3"’’D""’33"’3""’3"’3""’""’3"’""’"’ĢīfD3’ˆf3’D3"’ˆf3’™UD’ˆf3’™fD’ˆfD’™fD’™wD’™wf’UD"’f33’UD"’U3"’UD"’U3"’D3"’U3"’D3’"’D3’D""’33’D""’3"’3""’""’3’""’!ĢĢfD3’D3"’ˆfD’ˆwD’™fD’ˆwD’™fD’™wD’™wD’™ˆU’fD3’UD"’UD3’UD"’U33’DD"’U3"’DD"’D3"’’D3"’33"’D""’33’3""’""’3""’""’!īw»U3"’ˆf3’™fD’™wD’™fD’™wD’ŖfD’™wD’ŖwU’fD"’fD3’UD"’f3"’UD"’U3"’UD"’U3"’D3"’"’D3’D""’D3’D""’33’3’īwīwU3’ˆwD’™fU’™wD’™wU’™wD’ŖwU’™ˆU’fD3’UD3’fD3’UD"’UD3’UD"’U33’DD"’U3"’’D3"’D3"’D3"’""’’333’īwD3’™wD’ŖfD’™wD’ŖfD’ŖwD’Ŗwf’fU"’fD3’fD"’fD3’UD"’f33’UD"’U3"’DD"’"’D3"’3""’īwUUU’’wU3’™wD’ŖwU’™wD’ŖwU’™ˆU’fD3’fU3’fD3’UD"’fD3’UD"’UD3’UD"’U33’""’!īwwīˆU3’ŖwD’ŖwU’ŖwD’Ŗwf’fU3’wD3’fU"’fD3’fD"’fD3’UD"’f3"’!īwẅUD’ŖwD’ŖwU’™ˆf’wD3’fU3’fD3’fU3’fD3’D3"’D""’Ģw»ˆUD’ŖwD’Ŗwf’fU"’wD3’fU3’U3"’!!īww’ˆUD’™ˆU’fD3’DD"’!īwwīˆfU’!!īwwwž((ę \īJ@`h(R/usr/local/src/GNUstep/gnustep/dev-apps/ProjectCenter/ProjectCenter/ProjectCenter_dist.tiffCreated with The GIMPHHapps-projectcenter-master/Images/ProjectCenter_documentation.tiff000066400000000000000000000147021347226342500257520ustar00rootroot00000000000000II*IIITžžžŌččč’üüüžęęę馦¦©{{{)))*TTT›NNNü===ü‹‹‹’žžž’żżż’üüü’śśś’÷÷÷’ōōō’ÖÖÖāžžž©WWWbHHHU...8"""* QQQ·444łż+++’żżż’żżż’üüü’ūūū’ūūū’ūūū’ųųų’ōōō’ļļļ’čččžććć’©©©Ę©[[[qAAAT///?*#*\\\Ō---łPPPł°°°’üüü’üüü’ūūū’ūūū’śśś’ūūū’łłł’łłł’ųųų’÷÷÷’ööö’ļļļ’īīī’ēēē’āāāžČČČ鬬¬Ō¢¢¢Ķ±uuuŖ999T///FRRRāKKKüžČČČ’ūūū’ūūū’śśś’śśś’łłł’łłł’ųųų’÷÷÷’÷÷÷’ööö’õõõ’ōōō’ōōō’ņņņ’ńńń’ķķķ’ęęę’ććć’ŪŪŪ’ŲŲŲ’¤¤¤Ō›››Ķ‚‚‚ø888q ????ggg’FFF’ŸŸŸ’ęęę’ūūū’śśś’śśś’łłł’ųųų’ųųų’ööö’ööö’õõõ’ņņņ’ńńń’ņņņ’ņņņ’ššš’ļļļ’ļļļ’īīī’ķķķ’ėėė’ėėė’ééé’ččč’ēēē’LLLŌ?///UAAAqœœœ©©©©©©©©©ØØØ©ØØØ©§§§©§§§©¶¶¶ŌDDDłū)))’ąąą’łłł’ųųų’ųųų’ųųų’÷÷÷’ōōō’óŽš’šÄč’ģ¦ā’ē‘Ū’ā—Ü’ąØŪ’į¹Ż’éßč’ķģķ’ģģģ’źźź’źźź’ččč’ēēē’ęęę’äää’ĆĆĆ’BBBž T```ggg÷LLLš¼¼¼’÷÷÷’żżż’üüü’ūūū’ūūū’ūūū’ŽŽŽ’SSS’lll’ŌŌŌ’óóó’łłł’ųųų’÷÷÷’÷÷÷’õõõ’čįē’ģŸŽ’ģzŲ’ęmÖ’įeÓ’Ł_Ķ’Ļ[Ä’Ģf’գВāŌį’ėėė’ééé’ččč’ęęę’ååå’ććć’āāā’»»»’žTOOO???÷ śmmm’÷÷÷’üüü’ūūū’ūūū’śśś’śśś’’KKK’’555’ņņņ’ųųų’÷÷÷’ööö’õõõ’ņģń’įŃ’ŌqĮ’ĪjĄ’Ž`Ņ’Ų\Ģ’¼f·’Ę`½’ÉY¾’ĀZø’Ą€ŗ’ßßß’ęęę’ååå’äää’āāā’ąąą’ßßß’ØØØžžTsss”DDD’TTT’°°°’ššš’üüü’ūūū’śśś’łłł’óóó’{{{’BBB’bbb’ÜÜÜ’ööö’ööö’õõõ’óóó’óóó’īČč’ārĖ’ŪkĖ’ĻcĆ’Ēkæ’«‡³’’”„’™–Ø’©w¬’¹VÆ’­_¤’ͻ˒ęęę’ååå’āāā’ąąą’ßßß’ŻŻŻ’§§§ž öFnnnæ,,,éņkkk’ūūū’ūūū’śśś’śśś’łłł’ųųų’\\\’’’»»»’õõõ’õõõ’óóó’óóó’ņåš’ā•Ó’ŁoÅ’įbÕ’ÓdŹ’’ž¤’}³™’}³™’{±—’ƒ£™’¦m¢’·_­’«y¦’ēēē’äää’ßßß’ßßß’ÜÜÜ’»»»’jjj’ę*```PPP÷LLLšŗŗŗ’ōōō’śśś’łłł’ųųų’÷÷÷’ŲŲŲ’WWW’YYY’¤¤¤’ļļļ’ōōō’ņņņ’ńńń’ņņņ’ęæß’Ļ{¾’ÕkĘ’×^Ģ’“w¶’€Æ›’|²˜’{±—’vؐ’t¢’‘v—’¦VŸ’”gš’ććį’ŻŻÜ’ŪŪŪ’ŚŚŚ’ŁŁŁ’¹¹¹’žėTyyyæ---šöWWW’īīī’łłł’ųųų’÷÷÷’÷÷÷’½½½’999’ ’rrr’ēēē’ņņņ’ńńń’ššš’ņņņ’ÜÆÓ’Äs³’ÓgĒ’Š_Ę’©„Æ’~µ›’{±—’{±—’pœ‡’l’€’ˆuŽ’šW”’•c’ČČĆ’ÕÕŌ’ŁŁŁ’ŲŲŲ’×××’­­­’žŖ\sss”DDD’TTT’®®®’ķķķ’ųųų’÷÷÷’ööö’ééé’’’’’DDD’VVV’®®®’ššš’ļļļ’ļļļ’īīī’ķķķ’ƚ¾’®e ’Ėbæ’Ė\Ą’¦}«’{«”’uŸ‹’q‰’s”‹’v ‹’”ˆ£’¦]ž’]Š’ĄĄæ’ŅŅŅ’ÖÖÖ’ÕÕÕ’ŌŌŌ’žžžž ž « q|||æ111šö]]]’ņņņ’÷÷÷’ööö’źźź’www’III’’’£££’ļļļ’īīī’ķķķ’ģģģ’ččč’ß¼’¤e˜’Ā`·’Ī[Ć’Æx±’|Ŗ•’qœ‡’q Š’o›†’t–„’‰Œ’œf”’™o•’ÖÖÖ’ÕÕÕ’ŌŌŌ’ŅŅŅ’ŅŅŅ’ž śš k????lll’ooo’ŃŃŃ’ööö’ööö’ōōō’ĮĮĮ’ZZZ’jjj’“““’}}}’īīī’ķķķ’ģģģ’ėėė’ééé’ęęę’ŌĀŃ’”s™’ØZ’ŹWæ’»a“’†—˜’t£’r¤Œ’|ؕ’ƒ—’Y–’’PŠ’¾Æ¼’ÕÕÕ’ŅŅŅ’ŃŃŃ’ĻĻĻ’ĻĻĻ’jjj’ų‰Yyyyæ---šöVVV’ééé’ōōō’óóó’«««’HHH’>>>’ ’###’ÕÕÕ’źźź’ééé’ččč’äää’ąąą’ŪÓŚ’©‡¢’ŒU‚’½Y²’ĄUµ’²]«’šx’‹{”’g’¤Tœ’˜K‘’–c‘’ÕÕÕ’ŌŌŌ’ŠŠŠ’ĪĪĪ’ĶĶĶ’ĢĢĢ’ž öxELLLiKKK’|||’ŠŠŠ’ļļļ’óóó’ėė뒟ŸŸ’<<<’JJJ’MMM’»»»’źźź’ččč’ēēē’ååå’āāā’ßßß’ććć’ČøÅ’‹aƒ’”V˜’¶T¬’·T­’³]©’±U©’”KŒ’˜L‘’ŽS‰’°˜­’ŃŃŃ’ŅŅŅ’ĪĪĪ’ĢĢĢ’ĖĖĖ’ŹŹŹ’žŃc:|||æ111šö[[[’ģģģ’ńńń’éé钞žž’777’777’’žžž’ēēē’ååå’äää’ććć’āāā’įįį’ßßß’ÜÜÜ’Ā“Ą’›v•’˜[’„T’¦Yž’¢Nš’•N’˜d’’“¤²’ČÅĒ’ĶĶĶ’ĖĖĖ’ŹŹŹ’ÉÉÉ’ČČČ’ĒĒĒ’ ü Ā[+NNNiVVV÷gggšĖĖĖ’ššš’ļļļ’īīī’¶¶¶’\\\’nnn’UUU’æææ’ååå’ććć’ŚŚŚ’ŌŌŌ’ßßß’ŽŽŽ’ÜÜÜ’ąąą’įßą’ƽǾ®¼’¼ž¹’±‘®’žo˜’Ə«’øØ¶’ĖŹĖ’ĪĪĪ’ĶĶĶ’ÉÉÉ’ČČČ’ĒĒĒ’ĘĘĘ’’ łŖR£££’éņAAA’ŽŽŽ’ķķķ’ėėė’ÕÕÕ’KKK’ ’ ’ĀĀĀ’ŪŪŪ’’sss’’ŠŠŠ’ŪŪŪ’ŚŚŚ’ŲŲŲ’ÖÖÖ’ÕÕÕ’ÓÓÓ’ŅŅŅ’ŠŠŠ’ĻĻĻ’ĪĪĪ’ĪĪĪ’ĪĪĪ’ĪĪĪ’ĪĪĪ’ĘĘĘ’ĘĘĘ’ÅÅÅ’ÄÄÄ’rrr’ų”FLLLiKKK’zzz’ĖĖĖ’ēēē’ėėė’ččč’ŌŌŌ’ooo’LLL’’ÕÕÕ’ŲŲŲ’‰‰‰’­­­’YYY’’mmm’§§§’¢¢¢’¦¦¦’µµµ’°°°’æææ’¢¢¢’›››’ÅÅÅ’ĮĮĮ’ČČČ’ĒĒĒ’ĘĘĘ’ÅÅÅ’ÄÄÄ’ĀĀĀ’ĀĀĀ’’ó6 ‹‹‹æ777÷śMMM’ąąą’ééé’ååå’ĮĮĮ’FFF’’CCC’ÉÉÉ’ÜÜÜ’———’’ccc’mmm’iii’ƒƒƒ’SSS’WWW’vvv’vvv’˜˜˜’bbb’jjj’ŸŸŸ’’ĄĄĄ’ĮĮĮ’ĆĆĆ’ĆĆĆ’ĀĀĀ’ĮĮĮ’ĄĄĄ’ žŃm/ NNNiVVV÷fffšÅÅÅ’ééé’ēēē’ęęę’ÄÄÄ’jjj’XXX’„„„’ŪŪŪ’ŁŁŁ’ÅÅÅ’µµµ’ÉÉÉ’jjj’£££’¢¢¢’ttt’’```’‡‡‡’yyy’}}}’===’{{{’WWW’aaa’sss’‰‰‰’ˆˆˆ’­­­’æææ’­­­’ž“h$æ555š öKKK’ÜÜÜ’ååå’ŪŪŪ’”””’<<<’ ’………’ŁŁŁ’×××’ÖÖÖ’ÕÕÕ’ÓÓÓ’²²²’ŃŃŃ’ČČČ’¶¶¶’ÄÄÄ’„„„’«««’‘‘‘’~~~’AAA’ƒƒƒ’XXX’@@@’ZZZ’```’uuu’›››’¾¾¾’’’’’ž£`%%%?QQQ’ŸŸŸ’ęęę’äää’āāā’ććć’ĄĄĄ’^^^’­­­’×××’ÕÕÕ’ŌŌŌ’ŅŅŅ’ŃŃŃ’ŠŠŠ’ĪĪĪ’ĶĶĶ’ĢĢĢ’ŹŹŹ’ÉÉÉ’ČČČ’ĒĒĒ’ĘĘĘ’ÅÅÅ’ÄÄÄ’···’ŸŸŸ’zzz’ŠŠŠ’///’III’ššš’¼¼¼’'''’ž”W‹‹‹æ777÷śJJJ’×××’ąąą’ÄÄÄ’uuu’;;;’’···’ÓÓÓ’ŃŃŃ’ŠŠŠ’ĻĻĻ’ĶĶĶ’ĢĢĢ’ĖĖĖ’ÉÉÉ’¦¦¦’vvv’ŗŗŗ’¢¢¢’ššš’±±±’¼¼¼’ĄĄĄ’æææ’¾¾¾’”””’~~~’¼¼¼’¼¼¼’ŗŗŗ’’"""žoI ^^^”AAAš^^^ā½½½’ąąą’ŽŽŽ’ŗŗŗ’lll’QQQ’jjj’ŅŅŅ’ŠŠŠ’ĻĻĻ’ĪĪĪ’ĶĶĶ’ĖĖĖ’ŹŹŹ’ÉÉÉ’æææ’www’’”””’lll’\\\’‚‚‚’•••’¾¾¾’½½½’½½½’¼¼¼’»»»’»»»’ŗŗŗ’¹¹¹’žól@æ555š öHHH’ÓÓÓ’ŪŪŪ’«««’RRR’ ’JJJ’ĪĪĪ’ĪĪĪ’ĶĶĶ’ĢĢĢ’ĖĖĖ’ÉÉÉ’ĒĒĒ’ĘĘĘ’………’aaa’"""’ƒƒƒ’DDD’rrr’[[[’žžž’½½½’¼¼¼’»»»’ŗŗŗ’ŗŗŗ’ŗŗŗ’¹¹¹’———’žĒc1OOO???÷iiiš»»»’ÖÖÖ’ŁŁŁ’ddd’’MMM’‹‹‹’ĢĢĢ’ĖĖĖ’ŹŹŹ’ÉÉÉ’ÉÉÉ’ĒĒĒ’ĘĘĘ’ÅÅÅ’ØØØ’¤¤¤’ooo’ƒƒƒ’eee’¢¢¢’bbb’¼¼¼’¼¼¼’»»»’ŗŗŗ’¹¹¹’¹¹¹’øøø’¹¹¹’………’ž¼]*šššæ===’ ’===’ŹŹŹ’×××’………’’’ĖĖĖ’ŹŹŹ’ČČČ’ČČČ’ĒĒĒ’ĘĘĘ’ÅÅÅ’ĆĆĆ’ĀĀĀ’ĮĮĮ’ĮĮĮ’ĄĄĄ’æææ’¾¾¾’¼¼¼’œœœ’»»»’»»»’ŗŗŗ’¹¹¹’¹¹¹’øøø’øøø’···’&&&’ž›S^^^”AAAš]]]ā“““’ÖÖÖ’ŌŌŌ’ĘĘĘ’‹‹‹’MMM’’’ ’!!!’)))’˜˜˜’ššš’§§§’ÆÆÆ’æææ’æææ’½½½’½½½’¼¼¼’»»»’ŗŗŗ’ŗŗŗ’¹¹¹’¹¹¹’øøø’øøø’···’···’···’žžxF```PPP÷śQQQ’ĻĻĻ’ŅŅŅ’ŠŠŠ’®®®’ZZZ’MMM’NNN’UUU’OOO’’’’’!!!’***’•••’¢¢¢’¦¦¦’³³³’»»»’ŗŗŗ’¹¹¹’øøø’øøø’···’···’···’¶¶¶’²²²’žļu;OOO???÷gggš³³³’ĢĢĢ’ĻĻĻ’ĪĪĪ’æææ’uuu’III’@@@’GGG’AAA’999’---’???’;;;’???’’’’’’’www’†††’¦¦¦’···’···’···’···’¶¶¶’”””’žŅr/ sss”DDD’’JJJ’ÅÅÅ’ĶĶĶ’ĢĢĢ’ČČČ’©©©’’]]]’TTT’NNN’CCC’<<<’DDD’???’666’666’,,,’444’333’999’’’’’žž|||’………’¶¶¶’’žŅk(nnnæéŌ™™™’ĢĢĢ’ĖĖĖ’ÉÉÉ’ČČČ’ĀĀĀ’°°°’ŠŠŠ’ttt’jjj’^^^’XXX’RRR’PPP’NNN’NNN’NNN’MMM’=99’ ’’ ’’"""’000žžžž ž ž###ž ¦^›888āŖŖŖ’ØØØ’§§§’¦¦¦’„„„’¤¤¤’”””’–––’‹‹‹’ƒƒƒ’www’nnn’ccc’YYY’RRR’LLL’GGG’IDD’;’.’+’-’;!!’.’łčųöć'''ččœS„óōōōōōōōōōōōō ō ō õ õ ö ÷ ų łłłśųńłäž„„ƒG Yu}}}|zyyyyyyyz{|€ˆŽ–œ £šq_ad^3 '9DC E IML K J J J J J J J KM I IEA Tcg^UC35 > D , ((Ŗ²ŗ(R€ü '€ü 'apps-projectcenter-master/Images/ProjectCenter_prefs.tiff000066400000000000000000000151461347226342500242230ustar00rootroot00000000000000II* _///¶;;;ÉaaaŁrrrįqqqįVVVÖ000Ę***¶|"""žiiiĢ™™™ē···łæææžĒĒĒžÉÉÉžÅÅÅž½½½ž®®®ž£££łåKKKĪ dnnnÜØØØžįįįžäääžŪŪŪžÓÓÓžĪĪĪ’ŹŹŹ’ĒĒĒ’ĒĒĒžĒĒĒžÅÅÅžĆĆĆž«««ž|||ųFFFČJƒœœœšāāāžźźźžŪŪŪžĪĪĪžĒĒĒ’ĆĆĆ’ĄĄĄ’¾¾¾’½½½’¼»»’»»»’¹¹¹’øøø’¶¶¶ž°°°ž™™™žZZZåxKKK³„„„ėēēēžćććžŌŌŌ’ČČČ’ĆĆĆ’ĄĄĄ’æææ’¾¾¾’¼¼¼’ŗŗŗ’ø··’···’µµµ’³³³’ÆÆÆž¬¬¬ž¤¤¤ž’’’žcccģŸdŸŸŸēčččžįįįžĶĶĶžÅÅÅ’ĮĮĮ’ĮĮĮ’æææ’¾¾¾’½½½’ŗŗŗ’¹¹¹’¶¶¶’µµµ’³³³’°°°’­­­’ŖŖŖ’£££ž™™™žŠŠŠ’CCCį6dœœœšźźźžęęęžÉÉÉ’ĀĀĀ’ĮĮĮ’ĮĮĮ’ĄĄĄ’¾¾¾’¼¼¼’ŗŗŗ’¹¹¹’···’“““’²²²’ÆÆÆ’­­­’ŖŖŖ’ØØØ’¤¤¤’›››’†††žvvvžFFFāWWWĮÖÖÖžēēēžŃŃŃžĀĀĀ’ĮĮĮ’ĮĮĮ’ĄĄĄ’¾¾¾’¼¼¼’ŗŗŗ’øøø’¶¶¶’“““’²²²’ÆÆÆ’­­­’ŖŖŖ’§§§’¤¤¤’”””’œœœ’žsssžVVVų·h‹‹‹ļęęęžÖÖÖžÅÅÅ’°¤£’µ­­’¾¾¾’¾¾¾’¼¼¼’ŗŗŗ’¹¹¹’···’µµµ’²²²’ÆÆÆ’­­­’«««’ØØØ’„„„’¢¢¢’žžž’›››’’’’’xxxž^^^ž...ć ;;;“æææžįįįžČČČž±¤¤’|,*’›ZY’Ä«Ŗ’¼¼¼’ŗŗŗ’øøø’···’“““’²²²’ÆÆÆ’¬¬¬’ŖŖŖ’§§§’¤¤¤’”””’žžž’œœœ’™™™’”””’ždddž@@@ū›jjjŠįįįžŲŲŲžÄÄÄ’‹bb’“’·("’Ų„’ŗŗŗ’øøø’¶¶¶’“““’²²²’ÆÆÆ’­­­’ŖŖŖ’§§§’¤¤¤’¢¢¢’ŸŸŸ’œœœ’˜˜˜’–––’“““’„„„’fffžFFFžČ A‹‹‹įåååžŠŠŠžĄĄĄ’”Љ’Č<5’ĶXS’ɚ—’øøø’¶¶¶’“““’²²²’ÆÆÆ’¬¬¬’ŖŖŖ’¦¦¦’¤¤¤’”””’žžž’›››’˜˜˜’•••’“““’’………’iiižGGGž"""ņ ŽėąąąžŹŹŹžæææ’½¼¼’ʟœ’ĆØ§’øøø’···’“““’²²²’ÆÆÆ’¬¬¬’ŖŖŖ’§§§’£££’”””’žžž’›››’˜˜˜’•••’“““’‘‘‘’ŽŽŽ’†††’lllžFFFž$$$žD///»¶¶¶śŚŚŚžĘĘĘ’½½½’¼¼¼’ŗŗŗ’øøø’¶¶¶’“““’±±±’ÆÆÆ’¬¬¬’©©©’§§§’¤¤¤’”””’žžž’›››’˜˜˜’•••’“““’’’‹‹‹’†††’ooo’EEEž)))ž ™333Ī»»»žÕÕÕžĀĀĀ’¼¼¼’ŗŗŗ’øøø’¶¶¶’“““’²²²’ÆÆÆ’¬¬¬’ŖŖŖ’§§§’¤¤¤’”””’žžž’œœœ’™™™’–––’“““’‘‘‘’’ŒŒŒ’‰‰‰’………’qqq’DDDž(((ž ­222Ę···žÓÓÓžĮĮĮ’ŗŗŗ’øøø’¶¶¶’“““’±±±’®®®’¬¬¬’©©©’§§§’¤¤¤’”””’žžž’›››’˜˜˜’•••’“““’’ŽŽŽ’‹‹‹’ŠŠŠ’ˆˆˆ’‚‚‚’kkk’>>>ž%%%ž  '''©¢¢¢ōŅŅŅžĮĮĮ’¹¹¹’¶¶¶’“““’±±±’®®®’¬¬¬’©©©’¦¦¦’£££’   ’žžž’›››’˜˜˜’•••’“““’’ŽŽŽ’ŒŒŒ’ŠŠŠ’ˆˆˆ’†††’’dddž777žž{tƒƒƒäĪĪĪžĮĮĮ’···’“““’±±±’®®®’¬¬¬’ŖŖŖ’§§§’¤¤¤’”””’žžž’œœœ’˜˜˜’•••’“““’‘‘‘’ŽŽŽ’‹‹‹’ŠŠŠ’ˆˆˆ’‡‡‡’………’{{{’ZZZž000žśoooŚĖĖĖž¾¾¾žµµµ’²²²’®®®’¬¬¬’ŖŖŖ’¦¦¦’£££’”””’žžž’›››’™™™’•••’“““’‘‘‘’ŽŽŽ’ŒŒŒ’ŠŠŠ’ˆˆˆ’†††’………’ƒƒƒ’ttt’NNNž'''žāIII¼²²²ž¼¼¼ž²²²žÆÆÆ’¬¬¬’©©©’§§§’£££’”””’žžž’›››’˜˜˜’•••’“““’’ŽŽŽ’ŒŒŒ’ŠŠŠ’ˆˆˆ’†††’………’ƒƒƒ’’eeež???žž ²€€€ł¶¶¶žÆÆÆžŖŖŖž©©©’¦¦¦’£££’”””’žžž’›››’˜˜˜’•••’“““’’ŽŽŽ’‹‹‹’ŠŠŠ’ˆˆˆ’†††’„„„’ƒƒƒ’’vvvžHHHž***žö_;UUUŪ„„„ž©©©ž¦¦¦ž¦¦¦’£££’”””’’›››’———’”””’’’’’‘‘‘’ŽŽŽ’ŒŒŒ’ŠŠŠ’‡‡‡’†††’„„„’ƒƒƒ’‚‚‚’}}}’^^^ž...žü Ņ(((—~~~÷žžžžž   ’ŸŸŸ’’›››’———’”””’’’’’’ŽŽŽ’‹‹‹’‰‰‰’ˆˆˆ’†††’„„„’ƒƒƒ’‚‚‚’~~~’kkkž999ž!!!žģ_:::Ƃ‚‚ų“““ž’’’ž———ž™™™’˜˜˜’•••’’’’’’ŽŽŽ’ŒŒŒ’‰‰‰’ˆˆˆ’†††’„„„’ƒƒƒ’’~~~’lllžMMMž%%%žś ·JJJŁ„„„žžƒƒƒž’“““’’’’’’’‹‹‹’‰‰‰’ˆˆˆ’†††’………’ƒƒƒ’‚‚‚’xxxžaaaž:::ž$$$žžÅU(((Ęgggünnnžooožwwwž€€€ž†††’‡‡‡’†††’†††’„„„’€€€’}}}’vvv’hhhžLLLž///ž!!!žśÅ,,,ĆOOOóWWWž]]]žcccžiiižmmmžooožrrržrrr’fffž]]]žPPPž???ž***žüģ ·œ"""×<<<ųDDDžFFFžFFFžEEEžGGGžDDDž888ž111ž(((ž žń Ļ_Č!!!ņ"""ž'''ž(((ž%%%žžžņ Ć\ 6‰ Ÿ  {& ž((ę Qī@@V^(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCentre_prefs.tiffCreated with The GIMPHHapps-projectcenter-master/Images/ProjectCenter_profile.tiff000066400000000000000000000151501347226342500245370ustar00rootroot00000000000000II*)c²mć]É9'¬|ŒĄöįī’Ü ’z’pš*X o| ōŁč’ā°’ī0!’·’’w’Gš/Ė’¤öü÷ū’Ū†–’ē?2’ņ/’Ä’{’uü]É>6—’ќ°’üśż’椷’ŽKC’ź9+’Ō’~’w’nģ/d[ӄ’æRT’ķÕå’ķ¾Ó’Ņ_b’ź9+’ä’”’z’w’9y PTŅużĘ ’ܱʒņÓć’Óbd’ź9+’ļ’”’w’qó:~/tQćw’—’ר»’žżž’Öoy’ē?2’’’§’g’@ź}$`š8Ūhś–’Ī•©’ōēņ’܍ ’Ü’o’’’ć>u¢Ōbö’Ķ2&’Ł@8’‰’_’”’f’aü.~$Q}¤Ļ^÷„’Ž’R’ѲȒ·t’W’’¬&/Oušŗhņzż‰’ÜĮÕ’§'’5~’qmr’]JŅ7)Eg‹²Ū###źÉ0ž’L`;’Ÿ”“’££¶ó/#p'>Y}„Å ž’żužžŸ³’››¬Ų+h "3Pv›Š:ōź ī ž|€“’¢„±Ē%&U .BTc~›¾ķTdm÷—™„É35>>’[S;’\M’ U9/“y)ʆYžwrYžfffżfffž```ž^^^’ZZZ’ZZZ’YYY’XXX’WWW’VVV’UUU’TTT’SSS’RRR’RRR’OOO’KKK’EEE’AAA’DB=’ga@’šQ’¬+’@9.’9/`ŌĮN’bW'—”‚>ž‰C’hhhžeeežaaaž^^^’VVV’VVV’TTT’TTT’SSS’RRR’QQQ’PPP’III’FFF’BBB’AA@’g]:’œˆ=’®§w’ŹĒ­’¬+’ £ ŌĮN’A7d±–1’7ÓĄN’Š…]žeeeždddžccc’\\\’RRR’QQQ’PPP’OOO’HHH’EEE’EEE’AAA’ED?’‡€e’³¤c’Ƨ>’¶³•’ŌÓ¶’ÄČŻ’F_iéh +$ @vd ½7ˆz/²”šH²ķąi’½­W’yqP’___’___’TTT’III’EEE’CCC’CCC’YWD’‰…Q’֐7żŠ\’Ą±k’Ūåģ’ÓŚč’׎ģ’Iejó’&-(s”šH«OJ#‚ѽO’Ŗ-’”>’‡{K’QQQ’[XC’AAA’FD=’zn>’„@Ż»²Tćwˆy.éčs(üƮŒ¼¾Ó’IhośŖ-”šI«0ѽO’?7g®’-’ȰA’äÖ_’šål’leA’B:U¾¦>’‘…9Ą”šHÄ7c–ĒėJó®T*$ e*$ J®’-’GAXäÖ_’ ˜HŖB:kB:U~n)Ŗ( ,Ux”‹W.:0UGAVäÖ_’#:QF' ž((ę SīB@X`(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCenter_profile.tiffCreated with The GIMPHHapps-projectcenter-master/Images/ProjectCenter_rpm.tiff000066400000000000000000000151601347226342500236760ustar00rootroot00000000000000II*,'SBBBŃ;;;ś003ż ž’žę222½???&&&3000dØ&&&ķ]]]’———’ĪĪĪ’ļļļ’śśś’żżż’ūūū’óóó’ÜÜÜ’¦¦¦’tssžu&#ź…%#·U"!p=>>>ųž:::žįįį’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’žżż’Ņxv’“# ž¬&"šO*(c  $$$Ŗ󾄄„’łłł’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’žž’źĀĮ’¶)%žÆś“"Ķ$  ©žžTTTžżżż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’䯭’±ž±ž-+×!)˜žž žūūū’’’’’’’’’’’’’’’’’’’’’’’’’’’’’čč蒁’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ėc`’±ž±žš$ ×  ńžžDDD’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ĆĆĆ’’KKK’ŠŠŠ’”””’½½½’ŃŃŃ’ęęę’’’’’’’’’’’’’ܗ•’±ž±ž°üU*)l;;;’’’JJJ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ęęę’”””’ppp’ZZZ’VVV’ooo’’µvt’Æ’³’±ž§.+ę"""ńž&&&’–––’ŠŠŠ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ńńń’ßßß’ÓÓÓ’ĪĮĮ’Ō°Æ’½Œ‹’œQO’‰’",LKG`f,KKKKK  + ŽK(ż‚ƒ’’ž¤Ŗ’“ŗĆ’„’w|„’np|’,’vŽ’’’’’’’’ńØź’Ł&Ē’¹*«’{˜’Sœz’P›w’P›w’P›w’Pœx’jx’¢%–’ž‘’'…’’’’’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’AAA’vŽ’’’’’’’’ß?Ļ’Ś$É’ŗ8³’V—{’P›w’P›w’P›w’P›w’P›w’P˜v’ˆD‰’™Œ’ˆ}’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’A?@’vŽ’’’’’’’’Ł-É’Ö#Å’¦A¤’R™x’P›w’P›w’P›w’P›w’P›w’P›w’\_l’—‹’†{’$$$’$$$’$$$’$$$’$$$’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’AAA’v##"ś’’’’’’’’Õ-Å’Ņ"Į’Ŗ9§’S—x’P›w’P›w’P›w’P›w’P›w’O™v’vJ{’“‡’w’’’’’’’’’’’’’’’’’’’’’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’<9<’v##ś’’’’’’’’ŁcĶ’Ķ"½’»&®’a‚}’P›w’P›w’P›w’P›w’P›w’\~w’Ø+’‹€’|r’’’’’’’’’’’’’’’’’’’’’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’<9;’v""!ó’’’’’’’’ųė÷’Ē$·’Ā ³’„'š’er{’O”t’P˜v’O“s’Yzs’’:Ž’Œ€’†{’†<’’’’’’’’’’’’’’’’’’’’’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’=;=’vį’’’’’’’’’’’’ĘQŗ’¾®’·©’­ Ÿ’œ1•’z?z’ ?š’ $•’„’‰}’mc’ģęģ’’’’’’’’’’’’’’’’’’’’’$$$’’’’’’’’’$$$’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’A@@’vŽ’’’’’’’’’’’’öģõ’ŗM°’Æ”’«’¤—’‡!}’ž$’’‘…’Š~’rj’ʬĒ’’’’’’’’’’’’’’’’’’’’’’’’$$$’’’’’$$$’’’’’$$$’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’??’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’öĪń’ąFŃ’Ų*Ē’Ó$Ā’Ķ"½’Ę!¶’½"®’µ-§’µY¤’żłū’’’’’’’’’’’’’’’’’’’’’’’’’’’’’AAA’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ó»ķ’ą0Ļ’Ū$Ź’Ō#Ć’ŗ&­’°;«’Æ,„’·Ø’µ¦’©›’šV“’żżż’’’’’’’’’’’’’’’’’’’’’’’’’<9<’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’»DÆ’Ł*Č’Ó$Ć’ŽX—’a½‘’S {’XŖƒ’pj‚’¤$™’‚y’š$Ž’µ}Ŗ’’’’’’’’’’’’’’’’’’’’’’’’’<9;’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ńØź’Ł&Ē’¹*«’{˜’Sœz’P›w’P›w’P›w’Pœx’jx’¢%–’ž‘’'…’’’’’’’’’’’’’’’’’’’’’’’’’=;=’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ß?Ļ’Ś$É’ŗ8³’V—{’P›w’P›w’P›w’P›w’P›w’P˜v’ˆD‰’™Œ’ˆ}’’’’’’’’’’’’’’’’’’’’’’’’’A@@’vŽ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ł-É’Ö#Å’¦A¤’R™x’P›w’P›w’P›w’P›w’P›w’P›w’\_l’—‹’†{’’’’’’’’’’’’’’’’’’’’’’’’’?@T\(R/home/phr/Developer/GNUstep/ProjectCenter/ProjectCenter/ProjectCentre_uml.tiffCreated with The GIMPHHapps-projectcenter-master/Images/Run.tiff000066400000000000000000000147021347226342500210160ustar00rootroot00000000000000II*HHHŗŗŗąµ¶·ą]]]æ$$$?lllææĄĀžĮĀÄž„Šžmqxžbekž%%%&&&?~€ƒ’µ·ŗžY]ežpsxžcgožX\džQT\žæ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’żżż’źźź’ÜÜÜ’ŅŅŅ’ŹŹŹ’¼¼¼’­­­’„„„’žžž’“““’‰‰‰’„„„’’}}}’~~~’¼¼¾’²“·’RU\’QU\’SV^’RV^’SW^ž8:>žžžžžžžžžžžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžžžžžžüüüžųųųžōōōžļļļžźźźžčččžåååžāāāžßßßžŻŻŻžĆĆĆž‚ƒ’cgmžZ^džMQXžLOVžKOVžKOVžMQW’CFLž./1ž ?’’’’žžžžžžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžžžžžžüüüžųųųžōōōžļļļžźźźžčččžåååžāāāžßßßž°°°ž???’CCC’QSXžNRYžIMSžFJPžEHNžEHNžCEL’148ž’’’’’ÄÄÄžÄÄÄžĀĀĀž¼¼¼ž¶¶¶ž®®®’¤¤¤žœœœž———ž“““ž”””’žžŽŽŽžžŠŠŠ’†††’žž~~~ž}}}ž|||ž}}}’xxxž———žŠŠŠ’’’’’’’’’ŹŹŹ’BDI’DGMž>AFž;>Dž;>Cž027’ž?’’’’•Ŗ•’ŸŸŸ’ŸŸŸ’’’’’’’’’’’’’’’’’’’’’???’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’79>’58=’027’),0’#%)’ ž?’’’’ŸŸŸ’ŸŸŸ’ŸŸŸ’$’//H’//J’11J’22L’33M’44Q’77R’88V’;;Y’<<[’==\’>>_’@@`’@@`’@@`’>>_’==^’==[’l1C’’’’Ćæ’’ĻĢ’’’’’’’’’’’’’’’’’ŹŹŹ’ #’!$’’’###ž’’’’ŸŸŸ’ŸŸŸ’ŸŸŸ’$’//H’//J’11K’22L’33O’66Q’77T’99W’;;Z’==\’>>_’@@a’AAc’AAc’AAc’@@a’>>_’m2F’’’’’’K?’’“Œ’’bY’’ņņ’’’’’’’’’’’’’’’’’•••’’’’...’’’’ŸŸŸ’ŸŸŸ’ŸŸŸ’$’//J’11J’11K’33M’44P’77R’88U’;;Y’<<[’>>_’@@a’BBd’BBe’CCe’BBe’BBd’ooˆ’’’’Ćæ’’‡’’’’’’VL’’‡’’K?’’’’’’’’’ŹŹŹ’uuu’’BBB’)’...’’’’ŸŸŸ’ŸŸŸ’ŸŸŸ’%’11L’22L’33M’44P’77R’88V’;;Y’==^’@@`’BBd’CCf’FFi’GGj’GGk’GGj’ssŽ’’’’’’’’’’ĻĢ’’…’’“Œ’’K?’’K?’’Ćæ’Մ’ŹŹŹ’uuu’555’@@@’„„Œ’%%%’,,,’’’’Ŗ•Ŗ’ŸŸŸ’ŸŸŸ’'’33M’44P’44Q’77T’88V’;;Z’==\’@@`’BBd’EEh’FFj’JJn’JJo’KKp’ww’’’’’’’’’’’’’’’’’’’ņņ’’Ćæ’’Ćæ’’K?’Մ’ŖZU’uuu’555’JJJ’„„Œ’„„Œ’%%%’***’’’’•Ŗ•’ŸŸŸ’ŸŸŸ’(’33O’66Q’66R’77U’99W’<<[’>>^’AAc’CCe’FFj’HHm’KKr’LLs’xx•’’’’’’’’’’’’’’’’’’’’’’’’’’K?’’Ćæ’ꆒɬŖ’tWU’5+*’*,*’ffkū††ū··¼’""'’)))|||’’’’Ŗ•Ŗ’ŸŸŸ’ŸŸŸ’(’44Q’66R’77T’99W’;;Z’==^’@@`’CCe’EEh’HHn’KKp’MMu’zz˜’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Մ’ ' ’r% ’3’ ’NIV’wv|ū„„Ŗū··¼’$$$’'''vvv’’’’ŸŸŸ’ŸŸŸ’ŸŸŸ’)’66R’77T’88U’;;Y’<<[’>>_’AAa’CCf’FFj’JJo’LLs’{{™’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’2’’'';’QQYž˜—ūææĆż’’’’###’$$$mmm’’’’Ŗ•Ŗ’ŸŸŸ’ŸŸŸ’*’77T’88V’99W’;;Z’==\’@@a’BBd’FFi’HHm’NNj’RR\’’UUU’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’5+*’’))>’,,>žieož®®³żīīīż’’’’###’"""gggžžž’•Ŗ•’ŸŸŸ’ŸŸŸ’*’77T’88V’99W’<<[’==^’AAa’  ±’©©±’­­­’­­­’­­­’UUU’ŸŸŸ’’’’’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’555’"’**@’((<ž00Cžjopžßßįžūūūž’’’’"""’ ]]]ōōō’ŸŸŸ’ŸŸŸ’ŸŸŸ’*’77T’88V’99W’<<[’==^’ĻĻ×’’UUU’UUU’UUU’UUU’ŸŸŸ’ßßß’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’555’#’--D’**@ž++Až=>Wž‡ˆŠžļššžžžžž’’’’’XXXļļļ’•Ŗ•’ŸŸŸ’ŸŸŸ’*’77T’88V’99W’DDb’¬¬¶’………’UUU’UUU’UUU’UUU’ŸŸŸ’ßßß’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’555’$’++?’--Dž55Qž88Vž??Yž€Š€’’’’’’’’’’’’’’OOOęęę’Ŗ•Ŗ’ŸŸŸ’ŸŸŸ’)’66R’88U’DD_’––¢’{{~’TTT’TTT’UUU’UUU’ŸŸŸ’ßßß’’’’’’’’’’’’’’’’’’’’’ŹŹŹ’uuu’555’""+’++?’--G’55Sž77Vž88Vž88V’ЀВ’’’’’’’’’’’’’JJJįįį’•Ŗ•’ŸŸŸ’ŸŸŸ’)’<>_’<>_’==\’;;Z’88V’66T’44Q’22L’11K’11J’ЀВ’’’’’’’’’’’’’333ŹŹŹ’ŸŸŸ’ŸŸŸ’ŸŸŸ’JJS’UU_’bbl’ijp’sss’mmp’ffo’oqp’zƒ’|’y†’RXc’ ’’’’’#’.’.’,’*’)’(’%’%’$’………’’’’’’’’’’’’’’222ČČČ’ŸŸŸ’ŸŸŸ’ŸŸŸ’’ššš’–––’”””’ŒŒŒ’‡‡‡’€€€’zzz’sss’ooo’jjj’hhh’ddd’ccc’ccc’ccc’eee’iii’kkk’ooo’uuu’}}}’‚‚‚’‡‡‡’‘‘‘’–––’ššš’įÜį’’’’’’’’’’’’’’222ČČČ’žžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžžžžžž’’’’žžž’ųųų’ššš’ķķķ’ćććžßßßžŻŻŻžŽŽŽ’ŽŽŽ’ŽŽŽ’ßßß’įįį’äääžźźźžļļļžōōōžżżżž’’’’žžžžžžžžžžžžžžžžųķų’’222ČČČ’žžžžžžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžž’’’’žžž’ųųųžōōōžļļļžźźźžčččžččč’āāāžßßßžŻŻŻžŪŪŪžŚŚŚžŁŁŁžŪŪŪ’ŁŁŁžŁŁŁžŁŁŁžŁŁŁž’#((¹¾¾’žžžžžžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžž’’’’žžžžžžžžžžžžžžžžžžžžüüüžųųųžōōōžļļļžźźźžčččžåååžāāāžßßßžŻŻŻžŪŪŪžŚŚŚžŁŁŁžŁŁŁžŁŁŁžŁŁŁžŁŁŁžŁŁŁž’Ą!""’///ž///ž///ž///ž///ž///’...ž...ž---ž---ž---’žžžž’’žžžžž’žžžžžž’žžžž’?111111111¹·¹ŽĀÅĀ’žŽŽŽž’‹‹‹ž‰‰‰ž‡‡‡’ƒƒƒž}}}žyyyžsss’mmm’___’QQQžJJJžBBBž;;;’000ž+++ž&&&ž!!!žžžžžž’’æ?īīīī÷÷÷’īīīžŽŽŽžßßß’ŻŻŻžŗŗŗžøøø’³³³’ØØØž¢¢¢ž•••ž‹‹‹žyyy’eeežYYYž(((’žžžž ’ žžžžž’’666’A,A’,A,’666’666’,A,’A,A’,’’’ ’’’ ’ ’’ ’’’,A,’AAA’666’666’AAA’,A,’,’’ ’ ’’ ’ ’ ’’’’’###?^^^^^^]]]]]]\\\YYYWWWTTTŒ‡‡’ojj’_j_’e[e’FFF’C>>’>99’444’###’’’’’050æ     ?###?•••æńńń’ńńń’äää’äää’ććć’āāā’ąąą’ßßß’¼¼¼’¹¹¹’³³³’ÆÆÆ’„„„’žžž’™™™’”””’ŒŒŒ’†††’‚‚‚’’zzz’www’eje’did’rrr’rrr’rrr’y~y’GSGæ$$$’6A6’6A6’A,A’,A,’6A6’666’,A,’AAA’666’666’AAA’,A,’,A,’6A6’666’666’AAA’666’666’6A6’,A,’666’6A6’6A6’666’AAA’,A,’666’6A6’ ((Ŗ²ŗ(R€ü '€ü 'apps-projectcenter-master/Images/classSuitcase.tiff000066400000000000000000000122701347226342500230560ustar00rootroot00000000000000II*˜xœåYyx[Օ’éiß,[¶āŻ!¶gqVp 4I ”²M–†6„²”“Pŗ~”¶aX¦|>ŹP  僖–¤ ¤Ģ@€fƒ,ąÄYœĶ»eK²­ÅŚ„'½mĪ}z’•¦ÓvfśĒ\7WĖĖ{æsīļüĪ9WĄ’›aūśĀ…wÜҹx½ÕdĻĖŅ6ATgńČG¶l™ü[ƒūS£Åf;÷;óģ«q9«³8ŒF˜ōś„ÜEw Št8ÉŻŗukp# ž­1—°ōŚĻūYE1E½µ;œhu»1—¦ÓlV,—Ņėõƒ’$d¹[Å·#ŗ-[¤æ%ž*`ŃŗŚŗƒ9Ąˆdƒ K4ep»É„Yv;ɞ:§Mh ūōV[&4æ£Ļ^é>Ę/œoć3™žĘmŪ6-y≩’Kü5Ą¼jė~kJ.øRVŲT AHoEF^bßé`2ča51Ū]…Ŗ¦&tŽ~;¢>’hok‹)żżūŚżž:Ž;$¦ÓG—üį’«öø€ÖĻ×ÖõņĒyĀÉF™pKĢZ„`Dļ$Ķ.‘>Ļ "ˆOØ[0)æµōŚ][‹zŚ£.Ś« ‹&Ž‹tÜŽ¼,īełP6“9¾ĀlžśŸäń§åsuõ'xE±<u:£ œ¶²²×’ś]©°Ż²ł<ā™j3qŽŁ¤7Pc#ĪU8qNe%:Ŗkč½Ł“¢żėéˆ ¹;–ŽXf’Ē’{Ŗ†uuõ}æ†ŻLX$Ķ’ä}Ķ÷Ś>hųŁ7­}Ł,¹¼zKo@³Ł„ ZsdGsō?čž6Ņ3CõN‡G,†hŸŖĢę“Å` Ūó‚pōŲčhĻŚżūwėTļ|püü^T޼ ͕갳nŖÆąe„ĀJŲm*~”ü®”ļƒfG8˜J”;™<ķžl?VÖö ķzfo1†²‡łĀD6šiŲŽ0}kv¹ŠL6…B”äz.Ž‹y‹÷ܼzūXõ§*+tכŒŗ#Āś«¾{­ģ±ī/×Õ ēȅNŚ{‡žÓøONŠxSÜÕhķ³ßE˜ ī”°“Ÿo_æ2Ł5õ‡×ą 8µ{Č N‹)f›9ŅŠ č8=–׌¦ōĘё…Q`¬Ü/ļ?ēłIŪxGK‡AŸš>sķ7£Ū“Æ]·×Ö ¶źJņ ³”ȗ¢ļĢŲĆ^3īü:¤GiŁlĘŠŠ¶oߎ‹.ŗßøį^fāü™qTZĖlaŗ±Üī@µĮ0ņmļh']’)Ēą9ó¬§k*õ_¬qqš ž‰hžŖĖ7ĎŠ×Ī/ÕÖõ‘OėŻ“÷„æˆł“©=[qšÆĒ¢xŸų³nŻ:lŚ“ {÷īŒ%KąńxšÓžŪ7n„‹xtVüÅżŌ4šŻs„ƉH^Ųńƀļœ…’ĢÉPóŪÖć§VfCžÄ‘ŌeoĢN-«® į™M±Œ*ö?)gÉÄ#Y)āWJwäŲ?“ēQĄŃ–ÜLœ¹å¦›N{Öc÷܃cOüNāōLģĻų¼ČÅ¢(rŗ(ž%Ļo o>{qģł™evƒĖśŖĒm^*)zœōęwŽ÷Lč 5}uoTÅE­³[įYv.„ī}ČÅ£ČQœåŁ3h‹žź„ÕGsq&…¦łųäĆcåźÕjģ²qrp_{f…‚å¹ÓāHŪWI³ŁÅšSm‚„¤OoF¦7ž6¹ļĆš³±uÓŗUēŲöæ<æ>ÕĄKzģŚ£;püi®±²iN½ū£¢cņ{v!õųƒˆ#²É¬ņĶiŠ×g3YčQ7:„«I §‰o5kV£rĮ¤ćq æłl”‹M“‡R‹Ü,©ļEŠwu%CtVŖ19±öŻTź7gb¾÷Ž{ ĶĶĖ­·ŽzMrżß} ¶"~÷Ē:|ŗ„Ī1“nōæ½Ęų0eō„S¤{JōlV ‰ČĖyønbZģ¾®īj×¢˜ Žé Č1ā{Žü"0= JAa:-©ÆEZs†<’ƲśÄbŸcy/6ŌT«¼ČR<äµÉōP.{vŃ ‘ö­¦s vµwa÷ČÖYxøzv!O6T’½dąČŻŽŃÅtqśLü6løkÅyēżØĀl~jŃKĘl:a’ZE®F/' 3/izVĄ\XĖ_3;ŲJ{”';’†Žä{°XßOz‡¬ćTĢ,G±ÜĖ‹lßX [ŠG™ņ“­}Ü÷0†3žžÕ«8oŁR“žūó{Ąm±ĀŸĖķ|d"p1Ī¢=ėn»ķ³ėźśÕÜŃF„å G§Ÿ6@NˆDEEEZąęéųeEŅj¶ā*Ŗ+ćTŽĖcĀBR@~?LˆC!PĶ©ę15F™®“ YŅXåœ64~’A˜ė›M“n ūĄSĪrĒ!?p'Ŗl‰Å6= Żz¶˜żÉ7^[+]ž»“‹”„e•+EĢźß™¾W1—ł_ć’TĘ«œ.ˆ!†a®Uʉ+7óPŚäypó;aYtõ-˜Nņ˜LęŠ'ÜoĆć²į—“Yš‘ÉW»wæzĶ™Ųū×®żt08’…&|ڊˆ†¾œ‰Ÿł6!§Ō•]£'U4P¶:ĶĢŲĮ®›2R! Źp.cöBļ …8£[“„šė{€ŹjD÷D*©H“˜?p«Ī‡uĶ„x䙎gpÉŹ•w=vĒ•±ÜrŪż^×÷ŖuW¢9Y\$£Õ23Ųsrc¢GŪĘńd‘šä`īpCń0ōó؎Ųį7”%[G–s!:ņ¤OaqĘjH|q$ŗÉä6˜uI8d³{õ·~Ō5!JŲżĢļ‘iLŽŽ #5‰Ł‹;ƜEµ¶‡N ćÄ©>4ĻžÓ×,G»łĪ­jaxč‚U›M–»×į"tˆs Mó%ü:ļĘŚÕļS4' C€śœ5N“ÓŒŃpO<ūˆqk jĄ™²`06ˆw;ś0öU«šwr‰Ģ™Ō;mŲ­Ō¼+aŽ;°č-˜c›@`‚˜WójLGŃŌDē÷~sC ‚ ÄłP0¬boÆÆĘ¶&TŚ­ˆ§³x裗Š6w.ØGƒS”_¶Ō{|ń»’ŲĻžēæģx(Ę·)!ė%«fdä,¼š#éä167Ŗ4"ĮIČĀ£ż”ÜÄQM<ē+÷7‚÷%€bĆxØä1¬óĀu];V¬_‹`œ°'²˜"æū}ä÷ęZ,›×«ÉHŗ ÄE=Ä–3ŚŻ†x"6“OhŽ*ćšÖFńşßOńbD„ź“pF$®¤TŸgʆqįń½0tļ@–āNÖaż×¼Ž§ĻÄß’ńnS²Nä’ęĒå~vŁNd/u!;ų~ę’Ęó櫟½rŪæŖė5?żŽŗ²ļŁuģ{v]åž<®:“ ”‰I­’T•}6§°öŁFx!žĒ»ŸśMłČ{øĀ{œw”,Ļź E'K—Üéõī8’©5ļĖŗ įgšG„~łÕ^Dźy™Ü_…ß؛•ļ/Fz4V–Ē æ4Žį_óŲ}äó4冂?{^Ē%Ń1Ų©o”‰ö{æ…0õ1VNFõĮhļmŌWVa0Pk=vÖąłSų}—Óķ'h²#—RķŁ»jĢ1ü¢Rŗ?ӇGMĻQļż¤¼ØĘ'³į/ĮļŽšĀ5£b84¢õ‡…}G‘« `éucĀӈs/Z DZąž{ ż^ÆZ—2e=ćöčō®—#‘Ē5üš1ΤëwĒōaK)ĘÆV?>Ÿχ ٦Sń[«œŠöz÷C/Ŗø×ÜżÕĘc›·—tiŽēć˧®„i\A >QŅfGæ4ŒJÓnnČAžU<ÕYŠńc»vØ}§ÕØģœļ…Éɗö¦’Æh˜Ć4#ښ8øzĒ\Tw—Åi5}7‚WģEx)PuN½Ŗ›ÓCžļ˜žb|[Ż*fę6X¾sĘ øĒ†CHęRZ|jņƒāQ¬© aUO^a"_3rŸH¦ØN(tłģ_Ž^?éōT.·›Ž²z-®M¶‰}{ój.£ŪlŠčĶ%}f½ åłć¤ŃļÜU²NI‡?säO„qSļEȍ$L… ¼Ńz‰“œAæŅƒ›jŌ™³źõšCTKēr%ül Bź”1ļ=Ō,ŠųĆl`¢Āņ˜šĪš×—S»·Ł2¶Cķćfz”’Ę[G”‘ĖDbåĪō,#‰cĮv;>źB’Ä@”–Öņ:Ćļążø­–ų”/ąg~ī£žžśCčYFŸ™ØŁ īߞHžŚG^~PĻė¾nK˜ĶŖĪi6ś(f‡ˆ¼I@ŽI=Œ+ŽikJ9Ī a®n6š3“‹Ķ:GĪ‚į©aÄs õlHÖŗżbŽeyń˜xŸóŠéœ©K~v~ĒĪŁŁļjģlž7”ąŃ7ćńēč+æęļXvvv’)Ē’ū®Ūóf[ʼĀĢ› Z¤”Ŗ^ÕõņŒB4˜õš >\X³cÓć¤y<ņŌ£diŃ™¾9£dћ?‰[ŸõpŌŪĢP˜EVJ’pˆüĻø3Ģg3Oųż›hwŗ5¼Ó~ö:©įŸ) “±ł¼MM‚(½aɚŁxK)ߔŸ3”ģ uDG—{9|Q_©_Ÿéó jĻ®Ė*<Ž }°rø“Ś +q»xĻź® 38NńĖ~Ļ$ŽlóęóŒ7Lē£eüIj“żY_~nł“ēĖ’ü3[ֲȑ³jgĀ3<’ŹĪ{„œ[µŒźÅ©ą/žE¤(†¤Qā/ėŒź+M1o ՜Udƒ‹&óy0Ÿ'żäńj$<ņz,ś ZÕüÕ|_ä=łķˆė|“‰æhĪ/pęģfƒ¬WÆ.žĻQśÄA,uu"–ŠĪK:ĆųĀ#,E0$ŠA1rčżäĮßŗ8nń2‡cłG+\s»*œFŃ‡v–"’æ‰ä ų·ä ¼‰i~/ŚPäć}žĆ°Ē£’āQ$y-ÕEw%C“C°Į(Į”¹Č§“ł~tŗ!CŗW<ūISļWā—)7Ė|,%¦·äūß “³,Īļ²Ū?śYϬåkŖŖj«iNw¾14Ųs’ē·Ņ5Į2ŽżŸŌ|ZÜž©ń­Ö .ŚļĻp w‹"ĖMVŃŅĄģ %Rć·ŻŽŠT6„ęėˆ„œ—”r>4Hś·{2½ūĘZ{ž¤ķ; \ö™¦½Żlž»ėk<_Ėfź5=ż}ևļƒ8=nīåżŸŗæŪā7L6Q<¬”ełŹCꓘį̜IĒK9E=r2ß#‰ŅqŅ”ąÓļ°\SĪQQĆÅkÆł²ļܧ³C’¤¬ÉkĖ¢­¢f»‚³pž?Ųsj¾ž00v²€ )~@Ø°(=R/home/heron/Desktop/ClassesSuitcase.tiffHHapps-projectcenter-master/Images/classSuitcaseH.tiff000066400000000000000000000113641347226342500231710ustar00rootroot00000000000000II*¬xœåYiåy~śœ{fwvwöŌ.:$„2—TĒFŲITĘ©lƒm0±c’ŖTQÉR©š/.W%e\å(•J‚Ća'˜rŘX²č ,BZķ®öšŻ9{ś¾ņ~=ݳ³‹(; ?ņuõ~}m÷ó¾ļó^ß’oFrgOĻC×zaŹõ½ž‡“6¼S?ū¤Į}ŌČIҶ[ŗz'ć²$‹R² Yą!p|ąĮ÷^%™Nڶ}zll¬xp>iĢķ#\·>™zӁ/ė>ĄóŅ$CFŽ”3‘@žö˜(ų"Ē58Ž’Ą'Y\ßĖó¼— Ąų㣣ī'‰?lؘN#1ĶõąĮ‡ēū Œą8Žl! %IČÄb$W Yš3²^’4µ»{LŽ'Žvzŗ“ŽmĻ|šĮ¾'™’æÄŸ®ŚNŸ$ü ‹0³Į&ŸÉAĒL–H6ž‡H{Ł%žĶ¢°mŒz¦¢ ŸĻWQ*Ī×ėIųqīɱ±’UyāĄšĶéō"u2Š9mö±ßœ™]ŚårČV×ŗ»aöŁ*‘N“md b¢H>ÄUypæ$’y…tp‚l4Ś/Šó’“œ#ž oJgŽ!ž§N!ÄĻŽż{»<‘ Ńp\>Ē…÷šœćÉ>I‰|(&£#Gw2Iē“§Aös]ļ½ć-Ūö÷÷ žŌÆ#ńg`c:3FųÓ¤+Ÿ6u½oū9;b,Ł6†ŸŽć¬( F3³#»źzt‡$ž|ˆ|†Ł†łQӇbˆ‹‚J\·õ<óņxžč¦åCdßr±x “¦©ŹįłłMć†1½sļ^r-yw<†ßn—Ŗ¹?õ¢ńÓ¶Ļę·§Óēé{9™t'§/‡;ōī`~WÓŻ·°“PŪnø>ÉÕx’}zßT’æōÆĶ–QLšB…ōž‡‰Iīhń(7Ļvō'næ 1ĀäNNĄzć5ų†_Cų~Œb&—É"]-ćjŅÆN2&G†ļéMœŖœ;©” …ąZŗ¼'$g”OŲ3,ftRķxŗ”ģ“¬­Ä¼k×.1›ķK¼šĀÓŹö›nżėTĢ|슮:׫Įk$P:ߎXĮf¾K›¾C»Ū9Ē·ńJż"ųŽ<āµ 6Rģc1žjSXÄ'fƒ鑣śÕkcp ;ÉoČäĢĻL•ŽNĻqĶÜē9ż—•ŹuÜĻ^’ž®®®?«×럮,Ģõ)ŗ÷Ö5é«s#Y‘ž‰ļT‚=ˆ >¼0‹±Łį]X¼›70cĢā¢\ƒ«±#™hÖa,Œāa»óEĒT !YčÅD~EńŁ øÄ8Ļ"‚?žójuØ+ńļŲ±ćŃžļPMņ½Ā^·LłŪ1')ų–Ē>ąmbm?öB½E˜Čéä`²Ģ¹³čåKoĶ–ÆG28³›ÄŁą ¶)߅ī]w”BŃėč™1 ōõ¢óģIųó3Hw×9xHQīĄ%bϦmŪīų×®jÖĻĶ&9N'æ2 Ÿ‡udc/Խ߆Ż[&;wHކ Į䤳‹„Č@™H–›#’d2Ų”Ļ@q!sŪ39čÅ­J=ˆ µ’µżHēę cß M}šR>ūŁĶ›?ŸņÖż[ƒ:-ä‰ļ£}»¤īWšhI6’¼Z'>©|•jĻ"ā$O¾5čŲuĄu nß .Ͱ;h˜TŹZ­†Ī™óHĘ%œi8p“ĘO¦'ŽūÜJģßܰį÷TµūŸ²ø6ŃÄīµź’•0ݚ¾bnĘzź$—$ņ—Xł¹JøæJ¹s†rŸõžšŠS=½vŽFJŸ&½7ŲNuGƒblwi…į!H#kpčŲ)h†5ƒƒžéSߍ°ėśmUŖĘž"É]‰¬™«Ū-½F›ė»Øy ęó5hIfŹ…Ų•€Æ9ąKš„D]@ĪN“$|K’Œš§ƒOJČƳ˜Ó'aYēč2ŻK‘Æ&?u;ĪœQ˜ŽujŻV¹Bf<Ž1·XĮĀā"²c9_ß~脆’”UĆĻ ā­{‹ŖŠ8é Ė넯;-üÅʋü<*›}Ø=¤O‘Õˆ4Ū )&s”8ˇdpȟ²ZÄą«TĘvg W€Ŗ)(łeX˜…hĶC&ĪīųMš©L€q¦Aźsz’2:;rØj:Ž;‰įÕW§cźÉÄ“čø[O¼üÜBĄ‘O?+śWģõ5j-5QEOŗ²Eõ–QĘdW µEŲÄGĒ“/å:­!‹2’“ŗ&c”/EtH„‡ņ‡×¬’ ŚJ(#›WQøķvä«*ĆMœWUāXśĖL=YÄ©0-Æ;ƒ|W«UUŸŹ„SOœzłßßgßūÓuōyžqĄW„ĶAŒ¤Ķ&}×Ho¦Ls—‰2•-šŚ 8tÉvįCƒŁ¤s.†Į‹8u³Õ[<¤­BV‰]“G’ö P ę«vS;—B_WåeWMJ\³Äo©7{žąsū>ßž­G×}c·ļx?ņ/Š_Ł`±oNZÄÄ]6“ĘĒĒŽ’œ:7+”ļżDĄ¶,øÆdMōŽ“jBDƒŽÆPoß—Ļ”Ÿ°³Į¤’ŃHŸ:é_7-²»L2ž­’|fßß.Ćæöį'|ĆĢ7¼VŻšÖ«cj«†Å.ŽõßsęrƒW=¬?‡ĒrH[Lbž4+, sć5°Sq²­Š!ĀĶ8搞 †|K#»°ź琻šīńRGzēččØÕžoÆyhŅWżU¾½Tł±ķŻģŹŪ9’]®ė”Ėg޾[71xĆśą¼|n‰ĪLpĪĘ4Żg×ókQŲ°žćbč|ó1Ŗ‹–Ē“æsMR«ūŃKļČRaat›ķä † jÓÄģ$ŅSg!YĘ÷ž£®<²RG¼śė¾ß’ą²uŗoõĶ,Ķh=Ėš×gĢ c„™'ņŁ`Žäbųóką0<“‡AöoĒ_õ먄ul½ēŽ ~1®h¤Cʦs›ź¾UÅ)š3ć°6ļÆVææ’7Æų%Ÿc¹6Ҿį›8¾öœµń@ß+ń3}gŗƒkļ½šz0ÆßsK0+tŸÉ”„ūō\ü¢‹«fū 2jĖ' 暵°įī߀ʰSü1»B:÷禱®6ŽjoĶq˜3@’ΟU«æX‰’F¾źq æõ „ß3pśĘy菞¶ūkįę-\9]€U5Śr8ČæjPrFvļ"Ļ ·Jq_ž<‹5F åūł Pņ§ʵ3Ž3µ’##^æ‰Sk'PėlĘ{ʋ_Y’l\³ø Õzež*Ŗ łŪ?Ä7‰ó‘˜¹€üōydāq”I¶Ź'|ÅqŽ{µ^’-ś·YŚm“՞ß~Ąć4†-~R•„ĆĀ ź½ĻuĆĮdųUš'Ę,¬Æ®BE­÷£*¶Bų¤‚¾kVCIf1°zrq܉·PŖÖ‚ēøplÜŠ_y[Ó¾āŸa⣹öą>4ņå*Æq¹öž„m'Ż·qR{¾Ä8¤øü”ųĀŽ'^;ą¹õŗ@Ęāčx+.u]9„ķ‹WBؑ\¦Ņ²/‹Ń%æBµh[2lE’j®īž Ę/\ś.¬QšO5?œ²ĢēCĢ‹“—¹žõ‘/ķētģę,«éK\ļuOA룲°ƒņ(ł1Ć ¦vī„ž-&bf¦6|Ā ²ščCżĢxó‰kޱ{ĮZ [š[ >€ĒR}ĶÄx³^’›EĒy•™—öZø3Ō¼ā¾=œĶ=+h\¬U߇õf‘ĜܔūvĢo/Ų?Öp4l™ænՄjiMŽ„Ų-źKD…-)i±™yŚ+÷+Ō Dų© īz×kÕ?'鏆üa20„1…Ų_łƒ­ōņgE•_‡Öŗw³”ē ó~u­Ē1}ÜaSĪč—±V@I)·Žń§Nuø#”°-Å~'hāg\gė¼õ6üĢwGUõqÓü;:½@ū83š>Ü_žāwxƒ”­+4ū“„H”Qµ²˜SP!;Š÷8Iø¬ é/ZØubHķAY„ZٳŚüŠ>LŗŸ%ī\Gļź’õ{3 ©NŃØNÖ·g-«x“”°zē šōbädæsTCżć‡ļ¢3%Bs É_b’K³M[=©£Ü„a”›‚-õN¼(pÕ·¬FptƒtnRݟĄęĘp:éX«Ćö>ܱH§Ļߜ£ž‘s[ųYyČÖŖmz–ńĘņ<’zż™†ē±5ä2–x_ ei m}ü÷‡ö>Į;ųÉcķߋśr&‡+ŠN^¢Ę č’å/ē‘£ž+…¼—ådWD„Q”:Ęl³”®”QmąS|ń°)É£Ó[vcųYśŸ¶Ģ@¶6’ަž>g’@·¦C}WŪ°³µ­’½ƒæ³–¾ł¬d ׋Žboėy£æ\“¼Č£ęÖ±*9ˆš^£˜G¹šloÓ¼²cfś°ÉĄóīr’†Iāļ.Ćoš9Ņ?‹7ĒюŌėū艷B¼å?;VBüĖT ±wąž!ź ÷ž ’#¶żŽµ|!źŃ+TĆ &śP7źĖÖ%"ö!“ˇE·‰ ¼6Y£Ī’­EńĮ6«ŲfģEņ_¦3ā́Ŗė2ް8_ićīĢx—ü}łžžß¾‰j‰æ'üdG ®µūōŅśŽ2堁xõOź‡ü>ŚtŖ„Ź~•:næ¬ qĮrS’š'ųĄ_U×E™jµ1M?kč?D3ÖTB½WBŻG¼7p™ßŽŲųLa÷”łgŃåwŹ®ć}+c+“¢ä•Ń/Ą°ŒeksģIփj¾Ę°;Ŗ§Ÿ˜6g~ēøM}²¼uU,~å`L–’Ō#Ź”žUŅ’yM7ßPźĻ9MŽTC½G2DÜa¼·.‡=» wō¦½č1Žć‡dO‚ąó[£^j‘8Qˆ÷Ą¦øŁ…å&“¶šÆ°>«JńóĄ‚S:¢øRČY—“±~@–oޘLmIÄ{™-ˆ;/–ĖĒē4—ß#ŽDśWBŻ/óŪ7wīȑ½æ@ų$ϐ䉼ĻÖwÜ ĒĢK°+Č×™•šŚÉf?Ÿµ‹‡ÉĒÕš{nhw–{Ųµ‹“§ņ¢ųŁk“Éūj¶ŻF×÷Óµ14y_Äræeø/ĖūܝŁ[‡ė|cˆT|#ɱ“pĘ(¾ó”8‡Š?ĘaŅ÷qņQŠCÅóÖĖ5ķuB\Fxl“ŻĖ‹±ŲÕT3é®mGµe$«Źīćœ’/ku“Æž00в€ R’@¤äģ(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/classSuitcaseH.tiffHHapps-projectcenter-master/Images/genericSuitcase.tiff000066400000000000000000000122701347226342500233650ustar00rootroot00000000000000II*˜xœåYyx[Օ’éiß,[¶āŻ!¶gqVp 4I ”²M–†6„²”“Pŗ~”¶aX¦|>ŹP  僖–¤ ¤Ģ@€fƒ,ąÄYœĶ»eK²­ÅŚ„'½mĪ}z’•¦ÓvfśĒ\7WĖĖ{æsīļüĪ9WĄ’›aūśĀ…wÜҹx½ÕdĻĖŅ6ATgńČG¶l™ü[ƒūS£Åf;÷;óģ«q9«³8ŒF˜ōś„ÜEw Št8ÉŻŗukp# ž­1—°ōŚĻūYE1E½µ;œhu»1—¦ÓlV,—Ņėõƒ’$d¹[Å·#ŗ-[¤æ%ž*`ŃŗŚŗƒ9Ąˆdƒ K4ep»É„Yv;ɞ:§Mh ūōV[&4æ£Ļ^é>Ę/œoć3™žĘmŪ6-y≩’Kü5Ą¼jė~kJ.øRVŲT AHoEF^bßé`2ča51Ū]…Ŗ¦&tŽ~;¢>’hok‹)żżūŚżž:Ž;$¦ÓG—üį’«öø€ÖĻ×ÖõņĒyĀÉF™pKĢZ„`Dļ$Ķ.‘>Ļ "ˆOØ[0)æµōŚ][‹zŚ£.Ś« ‹&Ž‹tÜŽ¼,īełP6“9¾ĀlžśŸäń§åsuõ'xE±<u:£ œ¶²²×’ś]©°Ż²ł<ā™j3qŽŁ¤7Pc#ĪU8qNe%:Ŗkč½Ł“¢żėéˆ ¹;–ŽXf’Ē’{Ŗ†uuõ}æ†ŻLX$Ķ’ä}Ķ÷Ś>hųŁ7­}Ł,¹¼zKo@³Ł„ ZsdGsō?čž6Ņ3CõN‡G,†hŸŖĢę“Å` Ūó‚pōŲčhĻŚżūwėTļ|püü^T޼ ͕갳nŖÆąe„ĀJŲm*~”ü®”ļƒfG8˜J”;™<ķžl?VÖö ķzfo1†²‡łĀD6šiŲŽ0}kv¹ŠL6…B”äz.Ž‹y‹÷ܼzūXõ§*+tכŒŗ#Āś«¾{­ģ±ī/×Õ ēȅNŚ{‡žÓøONŠxSÜÕhķ³ßE˜ ī”°“Ÿo_æ2Ł5õ‡×ą 8µ{Č N‹)f›9ŅŠ č8=–׌¦ōĘё…Q`¬Ü/ļ?ēłIŪxGK‡AŸš>sķ7£Ū“Æ]·×Ö ¶źJņ ³”ȗ¢ļĢŲĆ^3īü:¤GiŁlĘŠŠ¶oߎ‹.ŗßøį^fāü™qTZĖlaŗ±Üī@µĮ0ņmļh']’)Ēą9ó¬§k*õ_¬qqš ž‰hžŖĖ7ĎŠ×Ī/ÕÖõ‘OėŻ“÷„æˆł“©=[qšÆĒ¢xŸų³nŻ:lŚ“ {÷īŒ%KąńxšÓžŪ7n„‹xtVüÅżŌ4šŻs„ƉH^Ųńƀļœ…’ĢÉPóŪÖć§VfCžÄ‘ŌeoĢN-«® į™M±Œ*ö?)gÉÄ#Y)āWJwäŲ?“ēQĄŃ–ÜLœ¹å¦›N{Öc÷܃cOüNāōLģĻų¼ČÅ¢(rŗ(ž%Ļo o>{qģł™evƒĖśŖĒm^*)zœōęwŽ÷Lč 5}uoTÅE­³[įYv.„ī}ČÅ£ČQœåŁ3h‹žź„ÕGsq&…¦łųäĆcåźÕjģ²qrp_{f…‚å¹ÓāHŪWI³ŁÅšSm‚„¤OoF¦7ž6¹ļĆš³±uÓŗUēŲöæ<æ>ÕĄKzģŚ£;püi®±²iN½ū£¢cņ{v!õųƒˆ#²É¬ņĶiŠ×g3YčQ7:„«I §‰o5kV£rĮ¤ćq æłl”‹M“‡R‹Ü,©ļEŠwu%CtVŖ19±öŻTź7gb¾÷Ž{ ĶĶĖ­·ŽzMrżß} ¶"~÷Ē:|ŗ„Ī1“nōæ½Ęų0eō„S¤{JōlV ‰ČĖyønbZģ¾®īj×¢˜ Žé Č1ā{Žü"0= JAa:-©ÆEZs†<’ƲśÄbŸcy/6ŌT«¼ČR<äµÉōP.{vŃ ‘ö­¦s vµwa÷ČÖYxøzv!O6T’½dąČŻŽŃÅtqśLü6løkÅyēżØĀl~jŃKĘl:a’ZE®F/' 3/izVĄ\XĖ_3;ŲJ{”';’†Žä{°XßOz‡¬ćTĢ,G±ÜĖ‹lßX [ŠG™ņ“­}Ü÷0†3žžÕ«8oŁR“žūó{Ąm±ĀŸĖķ|d"p1Ī¢=ėn»ķ³ėźśÕÜŃF„å G§Ÿ6@NˆDEEEZąęéųeEŅj¶ā*Ŗ+ćTŽĖcĀBR@~?LˆC!PĶ©ę15F™®“ YŅXåœ64~’A˜ė›M“n ūĄSĪrĒ!?p'Ŗl‰Å6= Żz¶˜żÉ7^[+]ž»“‹”„e•+EĢźß™¾W1—ł_ć’TĘ«œ.ˆ!†a®Uʉ+7óPŚäypó;aYtõ-˜Nņ˜LęŠ'ÜoĆć²į—“Yš‘ÉW»wæzĶ™Ųū×®żt08’…&|ڊˆ†¾œ‰Ÿł6!§Ō•]£'U4P¶:ĶĢŲĮ®›2R! Źp.cöBļ …8£[“„šė{€ŹjD÷D*©H“˜?p«Ī‡uĶ„x䙎gpÉŹ•w=vĒ•±ÜrŪż^×÷ŖuW¢9Y\$£Õ23Ųsrc¢GŪĘńd‘šä`īpCń0ōó؎Ųį7”%[G–s!:ņ¤OaqĘjH|q$ŗÉä6˜uI8d³{õ·~Ō5!JŲżĢļ‘iLŽŽ #5‰Ł‹;ƜEµ¶‡N ćÄ©>4ĻžÓ×,G»łĪ­jaxč‚U›M–»×į"tˆs Mó%ü:ļĘŚÕļS4' C€śœ5N“ÓŒŃpO<ūˆqk jĄ™²`06ˆw;ś0öU«šwr‰Ģ™Ō;mŲ­Ō¼+aŽ;°č-˜c›@`‚˜WójLGŃŌDē÷~sC ‚ ÄłP0¬boÆÆĘ¶&TŚ­ˆ§³x裗Š6w.ØGƒS”_¶Ō{|ń»’ŲĻžēæģx(Ę·)!ė%«fdä,¼š#éä167Ŗ4"ĮIČĀ£ż”ÜÄQM<ē+÷7‚÷%€bĆxØä1¬óĀu];V¬_‹`œ°'²˜"æū}ä÷ęZ,›×«ÉHŗ ÄE=Ä–3ŚŻ†x"6“OhŽ*ćšÖFńşßOńbD„ź“pF$®¤TŸgʆqįń½0tļ@–āNÖaż×¼Ž§ĻÄß’ńnS²Nä’ęĒå~vŁNd/u!;ų~ę’Ęó櫟½rŪæŖė5?żŽŗ²ļŁuģ{v]åž<®:“ ”‰I­’T•}6§°öŁFx!žĒ»ŸśMłČ{øĀ{œw”,Ļź E'K—Üéõī8’©5ļĖŗ įgšG„~łÕ^Dźy™Ü_…ß؛•ļ/Fz4V–Ē æ4Žį_óŲ}äó4冂?{^Ē%Ń1Ų©o”‰ö{æ…0õ1VNFõĮhļmŌWVa0Pk=vÖąłSų}—Óķ'h²#—RķŁ»jĢ1ü¢Rŗ?ӇGMĻQļż¤¼ØĘ'³į/ĮļŽšĀ5£b84¢õ‡…}G‘« `éucĀӈs/Z DZąž{ ż^ÆZ—2e=ćöčō®—#‘Ē5üš1ΤëwĒōaK)ĘÆV?>Ÿχ ٦Sń[«œŠöz÷C/Ŗø×ÜżÕĘc›·—tiŽēć˧®„i\A >QŅfGæ4ŒJÓnnČAžU<ÕYŠńc»vØ}§ÕØģœļ…Éɗö¦’Æh˜Ć4#ښ8øzĒ\Tw—Åi5}7‚WģEx)PuN½Ŗ›ÓCžļ˜žb|[Ż*fę6X¾sĘ øĒ†CHęRZ|jņƒāQ¬© aUO^a"_3rŸH¦ØN(tłģ_Ž^?éōT.·›Ž²z-®M¶‰}{ój.£ŪlŠčĶ%}f½ åłć¤ŃļÜU²NI‡?säO„qSļEȍ$L… ¼Ńz‰“œAæŅƒ›jŌ™³źõšCTKēr%ül Bź”1ļ=Ō,ŠųĆl`¢Āņ˜šĪš×—S»·Ł2¶Cķćfz”’Ę[G”‘ĖDbåĪō,#‰cĮv;>źB’Ä@”–Öņ:Ćļążø­–ų”/ąg~ī£žžśCčYFŸ™ØŁ īߞHžŚG^~PĻė¾nK˜ĶŖĪi6ś(f‡ˆ¼I@ŽI=Œ+ŽikJ9Ī a®n6š3“‹Ķ:GĪ‚į©aÄs õlHÖŗżbŽeyń˜xŸóŠéœ©K~v~ĒĪŁŁļjģlž7”ąŃ7ćńēč+æęļXvvv’)Ē’ū®Ūóf[ʼĀĢ› Z¤”Ŗ^ÕõņŒB4˜õš >\X³cÓć¤y<ņŌ£diŃ™¾9£dћ?‰[ŸõpŌŪĢP˜EVJ’pˆüĻø3Ģg3Oųż›hwŗ5¼Ó~ö:©įŸ) “±ł¼MM‚(½aɚŁxK)ߔŸ3”ģ uDG—{9|Q_©_Ÿéó jĻ®Ė*<Ž }°rø“Ś +q»xĻź® 38NńĖ~Ļ$ŽlóęóŒ7Lē£eüIj“żY_~nł“ēĖ’ü3[ֲȑ³jgĀ3<’ŹĪ{„œ[µŒźÅ©ą/žE¤(†¤Qā/ėŒź+M1o ՜Udƒ‹&óy0Ÿ'żäńj$<ņz,ś ZÕüÕ|_ä=łķˆė|“‰æhĪ/pęģfƒ¬WÆ.žĻQśÄA,uu"–ŠĪK:ĆųĀ#,E0$ŠA1rčżäĮßŗ8nń2‡cłG+\s»*œFŃ‡v–"’æ‰ä ų·ä ¼‰i~/ŚPäć}žĆ°Ē£’āQ$y-ÕEw%C“C°Į(Į”¹Č§“ł~tŗ!CŗW<ūISļWā—)7Ė|,%¦·äūß “³,Īļ²Ū?śYϬåkŖŖj«iNw¾14Ųs’ē·Ņ5Į2ŽżŸŌ|ZÜž©ń­Ö .ŚļĻp w‹"ĖMVŃŅĄģ %Rć·ŻŽŠT6„ęėˆ„œ—”r>4Hś·{2½ūĘZ{ž¤ķ; \ö™¦½Żlž»ėk<_Ėfź5=ż}ևļƒ8=nīåżŸŗæŪā7L6Q<¬”ełŹCꓘį̜IĒK9E=r2ß#‰ŅqŅ”ąÓļ°\SĪQQĆÅkÆł²ļܧ³C’¤¬ÉkĖ¢­¢f»‚³pž?Ųsj¾ž00v²€ )~@Ø°(=R/home/heron/Desktop/ClassesSuitcase.tiffHHapps-projectcenter-master/Images/genericSuitcaseH.tiff000066400000000000000000000113661347226342500235020ustar00rootroot00000000000000II*¬xœåYiåy~śœ{fwvwöŌ.:$„2—TĒFŲITĘ©lƒm0±c’ŖTQÉR©š/.W%e\å(•J‚Ća'˜rŘX²č ,BZķ®öšŻ9{ś¾ņ~=ݳ³‹(; ?ņuõ~}m÷ó¾ļó^ß’oFrgOĻC×zaŹõ½ž‡“6¼S?ū¤Į}ŌČIҶ[ŗz'ć²$‹R² Yą!p|ąĮ÷^%™Nڶ}zll¬xp>iĢķ#\·>™zӁ/ė>ĄóŅ$CFŽ”3‘@žö˜(ų"Ē58Ž’Ą'Y\ßĖó¼— Ąų㣣ī'‰?lؘN#1ĶõąĮ‡ēū Œą8Žl! %IČÄb$W Yš3²^’4µ»{LŽ'Žvzŗ“ŽmĻ|šĮ¾'™’æÄŸ®ŚNŸ$ü ‹0³Į&ŸÉAĒL–H6ž‡H{Ł%žĶ¢°mŒz¦¢ ŸĻWQ*Ī×ėIųqīɱ±’UyāĄšĶéō"u2Š9mö±ßœ™]ŚårČV×ŗ»aöŁ*‘N“md b¢H>ÄUypæ$’y…tp‚l4Ś/Šó’“œ#ž oJgŽ!ž§N!ÄĻŽż{»<‘ Ńp\>Ē…÷šœćÉ>I‰|(&£#Gw2Iē“§Aös]ļ½ć-Ūö÷÷ žŌÆ#ńg`c:3FųÓ¤+Ÿ6u½oū9;b,Ł6†ŸŽć¬( F3³#»źzt‡$ž|ˆ|†Ł†łQӇbˆ‹‚J\·õ<óņxžč¦åCdßr±x “¦©ŹįłłMć†1½sļ^r-yw<†ßn—Ŗ¹?õ¢ńÓ¶Ļę·§Óēé{9™t'§/‡;ōī`~WÓŻ·°“PŪnø>ÉÕx’}zßT’æōÆĶ–QLšB…ōž‡‰Iīhń(7Ļvō'næ 1ĀäNNĄzć5ų†_Cų~Œb&—É"]-ćjŅÆN2&G†ļéMœŖœ;©” …ąZŗ¼'$g”OŲ3,ftRķxŗ”ģ“¬­Ä¼k×.1›ķK¼šĀÓŹö›nżėTĢ|슮:׫Įk$P:ߎXĮf¾K›¾C»Ū9Ē·ńJż"ųŽ<āµ 6Rģc1žjSXÄ'fƒ鑣śÕkcp ;ÉoČäĢĻL•ŽNĻqĶÜē9ż—•ŹuÜĻ^’ž®®®?«×럮,Ģõ)ŗ÷Ö5é«s#Y‘ž‰ļT‚=ˆ >¼0‹±Łį]X¼›70cĢā¢\ƒ«±#™hÖa,Œāa»óEĒT !YčÅD~EńŁ øÄ8Ļ"‚?žójuØ+ńļŲ±ćŃžļPMņ½Ā^·LłŪ1')ų–Ē>ąmbm?öB½E˜Čéä`²Ģ¹³čåKoĶ–ÆG28³›ÄŁą ¶)߅ī]w”BŃėč™1 ōõ¢óģIųó3Hw×9xHQīĄ%bϦmŪīų×®jÖĻĶ&9N'æ2 Ÿ‡udc/Խ߆Ż[&;wHކ Į䤳‹„Č@™H–›#’d2Ų”Ļ@q!sŪ39čÅ­J=ˆ µ’µżHēę cß M}šR>ūŁĶ›?ŸņÖż[ƒ:-ä‰ļ£}»¤īWšhI6’¼Z'>©|•jĻ"ā$O¾5čŲuĄu nß .Ͱ;h˜TŹZ­†Ī™óHĘ%œi8p“ĘO¦'ŽūÜJģßܰį÷TµūŸ²ø6ŃÄīµź’•0ݚ¾bnĘzź$—$ņ—Xł¹JøæJ¹s†rŸõžšŠS=½vŽFJŸ&½7ŲNuGƒblwi…į!H#kpčŲ)h†5ƒƒžéSߍ°ėśmUŖĘž"É]‰¬™«Ū-½F›ė»Øy ęó5hIfŹ…Ų•€Æ9ąKš„D]@ĪN“$|K’Œš§ƒOJČƳ˜Ó'aYēč2ŻK‘Æ&?u;ĪœQ˜ŽujŻV¹Bf<Ž1·XĮĀā"²c9_ß~脆’”UĆĻ ā­{‹ŖŠ8é Ė넯;-üÅʋü<*›}Ø=¤O‘Õˆ4Ū )&s”8ˇdpȟ²ZÄą«TĘvg W€Ŗ)(łeX˜…hĶC&ĪīųMš©L€q¦Aźsz’2:;rØj:Ž;‰įÕW§cźÉÄ“čø[O¼üÜBĄ‘O?+śWģõ5j-5QEOŗ²Eõ–QĘdW µEŲÄGĒ“/å:­!‹2’“ŗ&c”/EtH„‡ņ‡×¬’ ŚJ(#›WQøķvä«*ĆMœWUāXśĖL=YÄ©0-Æ;ƒ|W«UUŸŹ„SOœzłßßgßūÓuōyžqĄW„ĶAŒ¤Ķ&}×Ho¦Ls—‰2•-šŚ 8tÉvįCƒŁ¤s.†Į‹8u³Õ[<¤­BV‰]“G’ö P ę«vS;—B_WåeWMJ\³Äo©7{žąsū>ßž­G×}c·ļx?ņ/Š_Ł`±oNZÄÄ]6“ĘĒĒŽ’œ:7+”ļżDĄ¶,øÆdMōŽ“jBDƒŽÆPoß—Ļ”Ÿ°³Į¤’ŃHŸ:é_7-²»L2ž­’|fßß.Ćæöį'|ĆĢ7¼VŻšÖ«cj«†Å.ŽõßsęrƒW=¬?‡ĒrH[Lbž4+, sć5°Sq²­Š!ĀĶ8搞 †|K#»°ź琻šīńRGzēččØÕžoÆyhŅWżU¾½Tł±ķŻģŹŪ9’]®ė”Ėg޾[71xĆśą¼|n‰ĪLpĪĘ4Żg×ókQŲ°žćbč|ó1Ŗ‹–Ē“æsMR«ūŃKļČRaat›ķä † jÓÄģ$ŅSg!YĘ÷ž£®<²RG¼śė¾ß’ą²uŗoõĶ,Ķh=Ėš×gĢ c„™'ņŁ`Žäbųóką0<“‡AöoĒ_õ먄ul½ēŽ ~1®h¤Cʦs›ź¾UÅ)š3ć°6ļÆVææ’7Æų%Ÿc¹6Ҿį›8¾öœµń@ß+ń3}gŗƒkļ½šz0ÆßsK0+tŸÉ”„ūō\ü¢‹«fū 2jĖ' 暵°įī߀ʰSü1»B:÷禱®6ŽjoĶq˜3@’ΟU«æX‰’F¾źq æõ „ß3pśĘy菞¶ūkįę-\9]€U5Śr8ČæjPrFvļ"Ļ ·Jq_ž<‹5F åūł Pņ§ʵ3Ž3µ’##^æ‰Sk'PėlĘ{ʋ_Y’l\³ø Õzež*Ŗ łŪ?Ä7‰ó‘˜¹€üōydāq”I¶Ź'|ÅqŽ{µ^’-ś·YŚm“՞ß~Ąć4†-~R•„ĆĀ ź½ĻuĆĮdųUš'Ę,¬Æ®BE­÷£*¶Bų¤‚¾kVCIf1°zrq܉·PŖÖ‚ēøplÜŠ_y[Ó¾āŸa⣹öą>4ņå*Æq¹öž„m'Ż·qR{¾Ä8¤øü”ųĀŽ'^;ą¹õŗ@Ęāčx+.u]9„ķ‹WBؑ\¦Ņ²/‹Ń%æBµh[2lE’j®īž Ę/\ś.¬QšO5?œ²ĢēCĢ‹“—¹žõ‘/ķētģę,«éK\ļuOA룲°ƒņ(ł1Ć ¦vī„ž-&bf¦6|Ā ²ščCżĢxó‰kޱ{ĮZ [š[ >€ĒR}ĶÄx³^’›EĒy•™—öZø3Ō¼ā¾=œĶ=+h\¬U߇õf‘ĜܔūvĢo/Ų?Öp4l™ænՄjiMŽ„Ų-źKD…-)i±™yŚ+÷+Ō Dų© īz×kÕ?'鏆üa20„1…Ų_łƒ­ōņgE•_‡Öŗw³”ē ó~u­Ē1}ÜaSĪč—±V@I)·Žń§Nuø#”°-Å~'hāg\gė¼õ6üĢwGUõqÓü;:½@ū83š>Ü_žāwxƒ”­+4ū“„H”Qµ²˜SP!;Š÷8Iø¬ é/ZØubHķAY„ZٳŚüŠ>LŗŸ%ī\Gļź’õ{3 ©NŃØNÖ·g-«x“”°zē šōbädæsTCżć‡ļ¢3%Bs É_b’K³M[=©£Ü„a”›‚-õN¼(pÕ·¬FptƒtnRݟĄęĘp:éX«Ćö>ܱH§Ļߜ£ž‘s[ųYyČÖŖmz–ńĘņ<’zż™†ē±5ä2–x_ ei m}ü÷‡ö>Į;ųÉcķߋśr&‡+ŠN^¢Ę č’å/ē‘£ž+…¼—ådWD„Q”:Ęl³”®”QmąS|ń°)É£Ó[vcųYśŸ¶Ģ@¶6’ަž>g’@·¦C}WŪ°³µ­’½ƒæ³–¾ł¬d ׋Žboėy£æ\“¼Č£ęÖ±*9ˆš^£˜G¹šloÓ¼²cfś°ÉĄóīr’†Iāļ.Ćoš9Ņ?‹7ĒюŌėū艷B¼å?;VBüĖT ±wąž!ź ÷ž ’#¶żŽµ|!źŃ+TĆ &śP7źĖÖ%"ö!“ˇE·‰ ¼6Y£Ī’­EńĮ6«ŲfģEņ_¦3ā́Ŗė2ް8_ićīĢx—ü}łžžß¾‰j‰æ'üdG ®µūōŅśŽ2堁xõOź‡ü>ŚtŖ„Ź~•:næ¬ qĮrS’š'ųĄ_U×E™jµ1M?kč?D3ÖTB½WBŻG¼7p™ßŽŲųLa÷”łgŃåwŹ®ć}+c+“¢ä•Ń/Ą°ŒeksģIփj¾Ę°;Ŗ§Ÿ˜6g~ēøM}²¼uU,~å`L–’Ō#Ź”žUŅ’yM7ßPźĻ9MŽTC½G2DÜa¼·.‡=» wō¦½č1Žć‡dO‚ąó[£^j‘8Qˆ÷Ą¦øŁ…å&“¶šÆ°>«JńóĄ‚S:¢øRČY—“±~@–oޘLmIÄ{™-ˆ;/–ĖĒē4—ß#ŽDśWBŻ/óŪ7wīȑ½æ@ų$ϐ䉼ĻÖwÜ ĒĢK°+Č×™•šŚÉf?Ÿµ‹‡ÉĒÕš{nhw–{Ųµ‹“§ņ¢ųŁk“Éūj¶ŻF×÷Óµ14y_Äræeø/ĖūܝŁ[‡ė|cˆT|#ɱ“pĘ(¾ó”8‡Š?ĘaŅ÷qņQŠCÅóÖĖ5ķuB\Fxl“ŻĖ‹±ŲÕT3é®mGµe$«Źīćœ’/ku“Æž00в€ T’@¤ęī(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/genericSuitcaseH.tiffHHapps-projectcenter-master/Images/headerSuitcase.tiff000066400000000000000000000122241347226342500232000ustar00rootroot00000000000000II*vxœåYyt[å•’iß-[¶āŻ!±gqVp 4I ”„0eXŚ”vŹR2ķ„ŅõPŚBʰL9eZ`å@K‡¤ ¤Ģ@€fƒ,ÄYœĶ»eK²­ÅŚõžō¶¹ßӓ,›00§3Ó?ęé|žō¤ē÷~÷~æū»÷~žßöo-ZtĒ-K6ŲĢęѼ,mDåhV}bėÖńæ6ø:Zģösæ?įž·Ė䓣0Ėé„Ód‚Ł`Hź ß«HāA‘Žf²ŁćŪ¶m mÄæ6ęņĆ ,»¶Ęū>§(昢Ąh0 Öé@ƒ«s=Ģ£į²X«^Ÿ6 ż’$dł (Šo-†t[·JMüUĄāõµu‡s€%*ÉA–hČŠėõp˜Ķ˜åp ‘ģ©s¹ŠTQ²Ļ`³gĆ Ś{•žü¢v>›ķjܾ}óŅ'ž˜ųæÄ_Ģæ”¶ī(į·„å‚+e… ˆt"(2ņūN³Ń›Ń„Łž*T55”ćöŪóū‘C[kk\éķŻßģŅéõGÄLęųŅ?żéÕ70÷˵uŻ<Åqžpź £Lø%f͊R°G¢3I³K¤Ļs‚āź.@:@-½÷ŌÖ¢žÖØ“ÖŖĀj…YƏuś}yYÜ-Źņ.›=¹Ņb™ųŸäń§åKuõ§xEq<˜t:£ L›ŁŁ{IżŒ®TŲj\>…x¦ŚLœc6ŒFŌŲ‰s.œSY‰öź:·3{Ņ“~=‚ “!Ģd¤7–›åŃæÄžj a}]}ÅÆ“a·Ió?y_ó½¶~ö@sĒ!˜Ė«×¹ F4[ĢØ 9Gv8G’A÷““ž±Ŗw9Õ8jd1DėTe±d¬FcŁ~”„ć'†‡»Ö8°G§zēƒĒÆīEåĶ›Ō\©`ÖMõõ}¼¬TŲ»]ŏ’ß•ņuŠģŃÓ§Ó8˜JM»?[•„µ­Ā A»žŁ[Œ!ģa¾0“Z#¶6LߚŻn4“Mįp8õ³īćKvĘć¾ā=·lĮ1Rż¹Ź Żõf“īӔذįŖļÄ_+{¬ēźźsäB­½Ó ×øONŠxS\Õhķ³?D##ī”°“Ÿoß°2Ł5ń§×ą¤8µ{Č ¦Å³‰iÅtz–׌Lę̦į”E1`¤Ü/ļ?ēżeĒtG[‡~搘¾pķwbŪµÆŻ·×Ö ¶źJņ ³”ȗ¢ļLŁĆŽ3īü[8Œq!&Ņ ‹Å‚ģŲ±]t¾}Ć ¾ž,Äł™qTšĖlaŗ±ĀįDµŃ8ō=ßp]’-Ēči˜ō–YOÕT¾ZćÖ£Ļ/Ębł«®Ų?F_»¾V[×C>­÷ŠŚWž"ęiC{¶ć4^Ēš>ńgżśõŲ¼y3öķŪ‡„K—Āėõā_śSģŲ“ nāŃYń×SÓhvĻUN¢yaēOƒžKpž3$cĶļē6˜>ē“1ņ§Žõ„/|7±¼ŗ¶„g6Å2ŖŲRĪ’‰G²RÄÆ”īØgh̓¢€ć--ø™8sĖM7M{Öc÷܃Oü.āōTģOł¼ČÅ¢)r:)ž¤’Ļo…nž‰½xģ}Ö:»Įm{Õė±,“Nūņ»ī{:ü•šžŗ7*Māā¹³ēĀ»ü\÷#—ˆ!Gq–gĻ õ-ś«›f?%Ł4š“㲇ĘŖ5kŌŲeĒéž~<|ķu˜”ē¦Å‘¶®’f³‹į§ŚĖHŸŽŒNnś},z߇įgǶĶėWŸc?šņ‚śt/°{ÆīŠÉ§ō•Msź=?~ķó‘ß»éĒ„D‘Ķ•ļlLR¼>“å`hhDŻš®&-œ$¾Õ¬]ƒŹ… ‘I$0ųę[°S.6ÓJe<,r²¤ž‹ļźL†8és©vüõųŲŗwÓéßĶÄ|ļ½÷››WŲn½õšŌ†;š@mEāīOµūuĖ\#Ę=č}{%L‰Ļœ5N‘ī)ѳY-$"/óČ)QpüvpR÷ū߃qN+Ü#CX_åQėŠl6‹ÕNLWŻ”·tG…<”a/źÅ{Āį†d4Ɲ “ Õ7įÆ2øG†—€¾³ąæzžüłßóūżŸ<}“nlRZšB>oCTƎ_fāg¾MŹiuf×H”­¦Ł€);Ųu&Ŗ#ä!TĆmŹĄQč=”gt‹—Rs}PY(įKē1b¼Æ ś”cõł°­½<ż"‰,.Yµź®Ēīøņń"ö¾[n»æĻēžaµīJ4§ź‘‹fµZf {NĪcD ąxė¢^Io–vä0c/źØžQ3Zø:²ÄH˜ ё'}Šˆ“0UŪAā‹c±½H„¶Ć¢KĮ)‹˜EŲ«æūc ® 1Ā`~Nb|xķéqĢ^ҁDå,Ŗµ­8rf§Īō yöœžf9ÖłČ÷oU Ć#¬Žb¶Ž½īd(7ł ]œi’/įēIß3vcąF”Ť›BF±'r9čXo2BŸ–`Šś¼‚ęh ģŠUå˜O@{Ób؄ …ĒŠ#÷‘p5sŽ‹Ńq’£0Õ6Ø~Ÿ 1N‚Ōē,¬q”õœf Gbxā™ē±ś’«`0[‘œŒĄSć X9aÅÆī¹!¬rgĶ[¬ņ§×IćłFm!,¬]Wڊžx?ŽmļĮČ7ljŽÉ%³3©7ķp؜ØyWĀüw*`5X1Ē>Įą(1ÆęÕø.ō£©-„Žž–†„’<ʈóįPDÅŽV_E­MØtؐČpx虗Š:oØGCįß“Ō{|ńßĖžøüd(&¶+aŪR…S3²2H¹xŒĢK¢*hh²0Õž|śUu®šŪ€¶K;Ėā‘Ā“jā9G\Xu ¼? {ĘC%AīėŚ°rĆ:„„=Éa‚üš“ß›k±|~ lfé*õč"ްœįu8^¹ļ† Æ-÷×Č'.—9ńwrPt²sĘö¬œ^Ąūi¼ó‡Č8a§·nCgTĻ[€ĪÆżķÖAGI¶„ˆåÆy tŅ4+F:lJbÉ]_FŲcĆ8Ż?@½żŠÖf¬lŸ­jk’›ł3FžŸL¦Ą%hØ®Üų£ė/üyłs|—PŽKw˱B…Ŗhų‡…Qģ»%‚ÓóCČ„>șĀĻCXĵ/΃˜Øē-č‹i^Éį°ł¾~²³*im'š ½hn#r"a¦X‰žGSL†ęNEĖ®?võĢ®½`ėÖ­łņg }ęčˆ’š•¬TZc¦łlރ¾ :Ē“gÅ6?;÷“6ĀVå*]#ņyœ’ē:Ģ>^ŽĖjž/čš)„©ĻœļÅēbٜz4y«'ĶŽrT’exāU±HU]ļ¢~ļĄ–Žżāc_Ÿ‰cą¢.Ež nä傎«¹SĀÆWģ@ąĖ¤Ć±’?ĆĖp«ų)ÖŽż•Ņ5 ÕĶļčńɃ­H$ćSł„ʰ2 _m _żÕż/&D©>‰dEāJZõyvdžÜćĮą(īd6|Óē{j&ŽŽO”1!ėdA.i~BNāŁĖw»Ō n2ł±ż6>UČćŖ#Ėל(IÕ”aŁPsėžł BÄó(ńßĪ™8ά}_օæ8…?&Åń›ot#ZĻCČęž"ü¦ī4®| 2Ćń²Ę¦—Q}xŚŽ{õ•UčÕZķ5yžĢ’t»1lĖ„T{vÆŽ+ė~Q)ݟéĆÆWīDä š‰žÉĮ Ž:XĀöqń{¶„qĶš… iżaaÅaäj‚XvŻÅó6ā܋֡yāōĻż½>ŸZ—2e=ćŽŲäī—£ŃĒ5üAqö¤£köÄ [)ĘÆV?¾ęك›€“µ WÆÜöĻźüaxφ?12›÷­†yTA01VŅfGÆ4ˆJónnČAžU<ÕÅų‰Ż;Õ¾@ÆÕØlŸļ…ńń—ö„SÆh˜#4¢Śœ<¼fēś˜īr=‡i5}~ļ^@h‘ źČ‰-;ŠOžgśĀtfĻC/ŖkĀō§óŽkpāå?O;Æl™”+„ou_ĮąR¹“_…šü°xk«ĀX]Į“E˜É׌ܧRiŖ ]>ū«§÷OśG=“Ėķ”SVÆ%“ĮÖ ¹’So^­Ļ궘£KIŸY/Hyž$iō;wĘĪ%· >ö‘?ĮMŻ!7”D(.šFė%2r½JnŖPgįŌė4ؖĢåJųŁ„ōC#¾{ˆÅ‡4ž0˜Ø0bļ¬}}µ{[¬aSŌ>nŖ÷H+¼ÕqLŗ\Ō)6żŁžåČFXøĆĖĀčė+ŌŅZ^gųżb¼©·Õ? üĢĻ=ŌßSėŃč33Õ [B”;’É'ét˜Ę Vs åĻŪ¹zŪĻLqć]¦¬”Ä’b_ŃÅp¦9€kifŃsģ¦] źić‰:}sq~hśĀżČ™RŽeų™ļ»„nüŻ«ŻYČķģ†LPŗ3°ßv~+õe]™tčéń1VļtÓ`‰ˆqžżĪ×üÆoÆ~„‰DgŌ7³M£‡Ų,Š+«ć௉¢o~§ŚCŠĮb ÅiWkn2l$‰ęHnœø†I£‘QŹ›\É…—¢ö@1Ŗnæ×L=£>_ĀĻō¦+&ūdU3Ó¢Ø<šæ<.Šl™š(Ģ–4ŹöĒ_ūÄĖxŻ·ģI‹EÕ9͆BÅģ‘7 Č»Ø‡q'0iK+'õ˜§›ę¬mb³Ī™³bpb‰\RŻ’µnæ˜wY^„į’@a°å¼ĶM‚(½aåĢ‹ķ¼µ”oŹ÷JvŠ<$¢Ó³ž˜æŌÆOõłµg×q “BģĘ.­öĮFÜ.īĮ³ś@_Šœ¤ųeægo¶ūņyʦó±2ž¤“Į‚ž¬æ/?·āÉóeI~ÖĪY;s6mOxŠGRŁ~Oæ4„s«–S½8ńüÅWTŠa@&ŽšŅ¹®˜”ŅWńÖPĶYE6øi0Ÿ‡ņyŅOÆF#CÆĒc/” 51Ķļ1Ķ÷EŽóųßŽŲń/6ā-yÓ®œĆb” źÕÅ}Āā>JŲeīÄӉĀ~bIg_xD¤(äa1$F¼Ÿ:ü{·^æd¹Ó¹ā“īy.“×d†SŪĖ “’ߎFs[sŽÄ5æm(r‡ń>’aŲ‹Ē£’äU$yÕEw›$c“S°Ć$›Ą”¹Č§Ół^tø#KŗWÜūÉPļœP•ƒąd>ž3ŪOó½ļ…ńØĘY– t:Ÿü¢w֊µUUµÕ“§‰;ßčļ:ĶóŪčšPoŠžOi¾Ÿ·u|wīF7­÷ōŠžE–›l¢µŁAJ¤Ęo›c.Ņ\ZĶ×Q%F9/Kå|6d” owe»÷ Œö|Ę@!ŁBBZQĒI®8r4gc DEѵīīŃX"ł¶ŪӝrēDöƒž|āčѹ’Kü)ąšM™Ģ)Ÿ“ 3|b\ŗę²Dņš!‰"d:;Č.‰\½;vĄ¬×a©* …B„Ņ‘B½~ˆ„?éēžż_•'¬ŻšÉœ%R§Óa³ęĢķŅ.—K¶ øÖŻ ›°§ÉVÉL†lĆ Ł(.ĖäCBU„š+ņŸWH'ÉFēdyī’sğį-™ģ;Ä’4Ē)…ųł5 ±·ĖÉ ×óĄ!ü®É9‘ģ“Rȇā1t$čN„č^įņ4Č~£žēŸ¦w¼å8ģ@æÄ&’;ņ7g²£„?CŗłiS×Ėš¶ßó+¾`Éq rütDäd qš¹ł§žO߀"’‘ĻpŪp?jśP Y҈‹ēé©S¤‡3ÅjõĦ˗_} m j_؃Žēāb Ī`ĀŽmŁģy—±Ē®Dŗ\¦’öĻčĢŲ6¦,kÉūéc æŸ×zžūy|ŸŗiłنǷ|<Ȥėšzdnn˘iŽGļÜæR¬–ŗ+ĒoK’°GÓ½‡žzŃüYŪ²…™ĢEZ/#ŻÅˆÓWĀzw0æ«ėī[ŲIØ7ŽFr5ŽŸŽ#6•Äßį·Ł2Š ~ؐ~Ā_%ķ•jå:˜h×Ė×ļN?‘IЦŹuÆVių_zśEć`ųu~G&sŽŅ• 5¹żż҈/‹ņšįŃō¶®”AųsƒdņÕr¹Œūī»kÖ¬ĮĮēžƒzžČÄł%zh×K[\ąr ·’¢8öRµŗ™>ÖŪńć.¢…”ža*!~-”aJ5¼ĻżóĻĶÓōuöĘLf”t5$žĘCżG˜ēE=Jtž7Ķ€?[¶lĮ¾}ū099‰¾¾>¤Ói?|c‡!A¼ø"žš>ŅÕłƒīyæ<¬Öļh[z‰ LLż¤3+Ż“”źŽ;se{ļ‡œ¹žTęib•jĻ"$O¾5čŚs!t÷B޹B†cwѰ\h”7ōZ Ó‘J(8ŪpįźŸNæ÷…åŲæ½iÓļhZ÷?ęp]²‰ŻoÕ%Ė%ąŗµ˜bnĘzź$%b‹¬Šü\#Ü*«RÜēD½'˜KqŖ§ŹīϐƒŅҤ÷?©īhPŒķ.M£wx”‘µ8|ü4tÓĮŚ””GŽüģ©ļGŲæsƎæ(Uć–®FĪŹĀ3œ–^£Ćcj¾Š¹B zʁ•ö w%ĮtbÉERW¬KČ;’DléŸsC÷ ˆ)¹D³Ęlū=c!Fß„ÉWSŸŗ ČäĪØ\FµŠn»|o/¬D‚(cv”‚ł…ä::GóĢŲyų„TŽ’ĮÕĆĻJņ­ū‹š†é Ėļ3Ü~—bćeq•­ ZéSę5"ĶÅBŠÉåĮfPL…S@NOAü¶Jelw®ä Št%V†ČöbęŽŪb:`ēœi•śœžT yTuGŸĀššk Rޱ ÉTrJv½ķ'_~n>ąĪČgŸ•ŁUū™īS­„”&kčÉt#fS½e–1ŃUBķ&ńѵœ•\§5br © ]qŹ—2:”ĀCłĆoÖ’&%”‘+hčżĢmČW5Ž›8Æiı:õ—Ł$z:sHP/`Ł^;~…®.^?øš¦=•Ϥ?żņæ½Ļ×ūćõ÷ū¾yiŹÖ FŅᐾk¤7+Fs—…2•-ŗÖ 8“²¦½̉Ī, ė†–ČĄmŅ9ĒŠå,ÜŗÕź-ŅQ!«Ä70°s4“ūŖÓŌ;aļΧŃߕ‡By™ĒU‹× ń†Ē[źĶž?ōܓ_l_ė‘õߌĖ\’ĒLõ3ż•ūf•Œßé@o,Å·:½€)’!7ŲĮ7|Č<ÄägōæŸ øÓ–%`÷՜…¾›·BKŹhŠūUźķū y vŽ#Xōōiž Ė&»›Č¦ßłgžüė%ų×=ō83Ł£Ģō[uGĄ[æŽÉķ:ŗ4øö‡9óQųł5ĪąóŅ“ø?ĶHóČŽ“N:A¶Õ°ŠpsĪø¤'“c'ßŅÉ.<†ŗÅYä/½{¢Ō‘Ł}īÜ9»}ļ®}p‚il5s+?~¼›Gy§@²+b[ŽŸß'‰Kr2ŽzĘw=¬ŗ˜AĒ\œź¢„1mž•`­ķ@zĶśčw9Ŗ1L"Œįš“|Į“`Pmšœ™@fņ<ŪüĮæ×Շ—ćųĆ5ßd¬$Į%9źL’ź[%Ųŗł_āW/Ē]ńÜzżāC„57.`xŗ“ģßŽæŹźØe læūö ~q®č¤CĪ®s‡ź¾ÕÅIˆÓcp86ØVøĒ·Æś%&š\ißdN¬»w]Ža-’Éõ柗=\3ӍūP[>įųµœMwż4ŽāIŲUŅ9›ĀśŚ,Ŗ½u×åĪDŁ?ÆV¹ĒŒ|Ż8~?źæoāĢMs0²”ż•·\>.~iĪĘÕS½°«f[łW jŽĘČŽ=¤sā9įÖ(īĒ&Īc­YƒBł…Ē~1(”XćtC½nŚu'—ćxx䁚[8½Žz“µ±+Ęū­’K6.¬Fµ^Y†æŠjÖFį¶OńM’Ó—P˜ŗˆl"2ÉĀwł$‚Æŗī{ÆÖėæA?›”ÓA[ķł­įū}AēųŃā'UI83p ś&„…ß Z¼raŖ…ķćāOŽŚŲP]ŠV ī£*¶BųŻ”Šžk ¦r\3ŒXqĀÉ·PŖÖ‚ē„pŸlĢ4^y[׿āŸę⣹÷ą=8ņÕŖØ łöž„ļ'ǃ¼eĖMž¼÷ĀėĮ|%¼+į·j l›†T#y-µe_ī×%V”Z“‚mY¾#I5WwO拗.}ÖØͧMŚÖó!ę:Kį\’ęČWö .–Ōō%”‚‰ *Õ;^³?7†2éŸĒgĘ_;Ų„ĒŽ·ųöÅ%÷ Ź£žŒ†ŻsQQ+”ģ&śP?ÓžF:†ć|a?Ųkį~óŌˆX¬Æ¹oÖėµąŗÆr³ÓY OnƒśWŻ»Op„g%]ˆ·źū°Ž,’˜» ęÄY{Įž±†7ÆcŪÜUšŖ4[oņ&ÄnS\"*lKūČČM~ŠtV(īW؈šSĆóÆ×ŖJŅ łĆeąA‘+ÄłŚČļm§—?+kāz“ö½›=u€øŠ;ĒŖė|)_‡rFĻX ėōA”Ōrė}źT‡»R ;Ņü’Müœė|Ÿ·Ž†Ÿūī9M{c̲ž†n/Ń9ĘM„¦·ĘW†æü=Ńįū Ķžd1RčT­,äUGČ“ž HWÄ'ż‰EƒµN¬ŅzPÖØVöķ6梅I÷3ĝėé]]1#ÄŽ (EŖStŖS£żķŪ.kؼŽ9‹&½8ēł’9Ŗ”žƒńūĆ÷¬¢3©˜Rs‰-2ɣٔ£ž2PīŅ1ßMĮ–z'Q–‰ź[^#ø†I:·ØīObkc-ƒt¬×įųīƒxdŠņ·ä©g¼~^ņ½j‡žå¼±}Ÿ½QÆ?Óš}¾‡\Ę"ļk”, “ķ’īŖż‹.žH±äxūzQ_Īåš$:ÉK“ø C±Ł<łxyź¹Ņ(ų9!ęÉØ4*TĒXm6ōĆ=4Ŗ Å[R"zć‹uĒĻÓ’”mrš½łwtķĢÓü{śj*Ōwµ ;ß;ŃŪńß3ō[ėhĶg[ŗAv„{[Ļżš<e5Ǝթ!ԌÅ<ŹÕd{‡ęå3ׇCžóę‘WtlN?Do ~›€Ļ’žy¼©ø®~“^’žx+Ä[ńók5Ä’”Āf’ąŻ«Ø/<@ų7)®Üö¬„ū Q^”f(ŁŗY_²/±”żx>,z%(dąu©u–|/J ö°y}Ą“d/’’roV=ó†ĒłJŌšäĘ[ń’ĖwüęĶTKüįßs•ą³vŸ^Üßa(SLōS’¤}Čļ£Ć ZŖĢŖ„Šõb†”Ģ 7„2A üUó<”©VÕõ±ó¦ń#4cM%Ō{%Ō}Ä{WųßŸėŻ»ŠŠü“쉻c^,.2Ėc+—¢ä—Ń—č…i›Köęų“¼ՙỚoœœ²¦’„-ż±ŲöÕńÄÕCń˜’¢1ź_#ż_Ō ė µžœŪäM5Ō{$CÄĪ{ūJŲ£±·÷öĀ“Ÿ=*śāŖ˜Æ@bbĄÖؗZ Nō&ząP܋ģĀs“EG©¼ĻŖRü<8ļ–ŽŖ^£rÖ#mlŒÅnٜJoI&śø-ę‰;/–Ė'ę]÷4·ß#ŽDśWCŻ/ńŪ·tīŹ“½æDųż$Ļ*ŗEĘ÷w¼ Ē,(°];Č×:™•š]:Éfæ˜qŠGČǵp=/“;Ļ=ü³Ėt¦ ²üłėR©{kŽ3pÖ0Šg£hņ¾ˆ„~Ėq_‘÷1„;r·×ÅĘ*RńM$Ēn§ų.R\*ž8‡Iß'ČwĪQ*^“Ēy®iēØā2ĆėöĘ® Ēć×2ß7<ljjĖHV7”aĪ’'6GŒÆž00j²€ Sr@ƒĘĪ(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/headerSuitcaseH.tiffHHapps-projectcenter-master/Images/helpSuitcase.tiff000066400000000000000000000105521347226342500227020ustar00rootroot00000000000000II*$xœåYkpTēy~ö¢]I»Ņ®“+iWWw Rj2”LR׎›PjZ:Icź”˜fš4MZOC›éŲ!ö¤fH&µŻāx’Ę©M’œćxø9€m !ÄUŗkµ7­vµŚūī9§ļ{t>q¤@ā›śGæ™Oēč\Ÿ÷yŸ÷ņžßŒŅæ_ŗōᇖÆŲ]b±ŒędéX¾ t§”ĀÅ ‡>hpæk4––®}dń’snGY‘½¤Õv;ģEE°˜LqŒg©p:ÆHŻÉTŖēȑ#”½@įƒĘ¬UĄŖ­īŖ·ÓŠb‰* Ģ&jģ6Ō–•£¹²‹h–Y­J±Ń˜0™L7$©Š—åŽB”š«eĄ įŠ!éƒÄ_,ŪQć9Ÿ¬‘|²!/K4eFŲ,TŪlØ#{‘ éFųA5Z;ö³Čü¤YģÄ󮯻!“]ĮW~;ÅyA{†¬`NL±M<³”(.`0š°š“ÖZdIī\Fō¼¼ż|Õæy*‹v; ø1–Ÿźę’lėW£Ē“ӎ]5ž~Āęr'lƒŠ‹ą^ĮM{xŸµó_į0łź)Y­Vō÷÷ćųńćŲ¼y3¾²};ʏ¾ +i~~Ķnu¶pŽøĖf‡ĖlüĒį”åtIJæóY­ÕĻø¦ær;ŒčĖūüŃÜ}÷|1v‘N—}¾ĘÓKœz+É÷å„_`ž3µw«1Nóh,Š·I?;vģĄĮƒqöģY¬\¹UUUų÷'ŸÄń½{į Żæš§–£ł™ėķeˆäņ'žŪ‚[čŸmĢīŸ6ׯo/arW/ö%žp’Žtpµ«¦OÅ2*ųNŖY2éHV~eö‰FžC>/äŃÓ؈¤™‡|pĪ»žŽ³—|e¤é›±“s”E‘‹Ķ9ė(ž/LĒ_8 ķœ]Œ3’QÜTė(9\Ui]%)&\Ī|ģŁšgܽžWE…eĶMĶØZ½łŽsČNE‘„8Ėń;Čæ‚ÆK“£¹"•@}{>¾oÖoڤĘ.k7n`ßÖ?Au8P›Gš_%Ͷ‹ńSo‚U”Ÿ^‹Līżi4ņŲķšó8rpĒŻ Jß|©Ż›ØĶH&œ:cč¼ņŒ±ĪYæŠ[ł}(o[ŒÜ™SHģiD¶XU½óœ¤x}.•†©¶ž”~ü1åĀIŅ›ū#›ą\²É©) ¼ö+”R-¶%…v Kź’ŠwuK†ŲéĶŌ;žgĄ’ĄÆ‰Ÿšeżż}ŠÓQńŪLyσށćü9R©¦©wā¼ź ŗe 8š©v‘(ާlHf ń0Ł`Rķpž “)żŌąĄ*ŠĒ÷~„ŗĘsGńŸļģ@ϧ’iЇœ69Źŗk„ņ›{łJœj]‡Óƒ~ģ(ĪĄŃu 9²ĮIö’ƒ’4<“‚.NźńĒb1ųɟ\×yäH .„ōö~ąļ’ģNȣЙk׎L”@¶p;“eŖÓ„­‹±ä±}P¬xęLJń”Õ«Šü?/@¾Ō‰Źāų²Ł“OłĒ’@˜,šŽŽā7Ž@ õV•TėJ)'·µµ½gģ’ąĪ‡ftN: žS­cjŒr^'Ņ”c•-Øūś°zMRŽC†jVehņć_BE©c±ƒĻGŸĻų՘gøĪf²„šÅūŸõCk5uŅ‚įęIņ rŪ—£x÷—aš6br:ƒĄtį©8&FG°°óuT9Jń£@™HąpĒéߚ’NĘ’ŹÖmLT»yŻi›Y{B!Ķ–­¤ÅõĄéB„pū9#śśŠŽ×‰åw%łžzö˜˜JaĖśõ_~śį{÷ĻĒĻ1 QÆĮ~0j‰}޲?ŌM׈}ĀOģ;qOõ[|ŽńłäVHZĶ6’‹ˆw»\@5awżĆ7O=¢„ŻĒ¼G&D["€¦Ė1嬦^»®ąźõ^44-ģm£ėžzäsÓ„ģ½zõ*²Ł¬Šć–óĄUıÆa3‡<ųZŽgŒ²¶Ž¤õ.***ŌžĄėõŖ÷1žŸŻū ˜h­" ~!™€­}–’Ė·QTS«ņ¤…0Nėœ%ī2“,hĄŠDž{wo¹&K1ⓨtWśŠÓł»¾æg{Xąē÷^æ~yŹĻŒ)“ÉØ[¶EąX… ¼Ļ±Āvņ5lŗ.aS]jnnF ÕĘōk"sń< Tē¤LŽUkŃöČ£°Ö6"ĻĄOš‡&Tģ­^–¶ŌĆi+ĮT2o>÷"Z-­Ń ”`ųGŽŖ'~ųµĻ¾£×O0Ä ŖéiŅ#æ“ń3Ę)8eÜӔ'ųćcģ³^Kl o7lŲ ŽĻųCJ9®>žĻŸ8†Š wcé£ß‚¹Ā…Ša§$Ž}cÄ{C V/nD‰„ˆņ*0U0¢‹tĆ5£ŹfūłcŪ7nÕĒ–ĄĒÕü/“!F1ł¼®®NÅ'ņ’Ų˜õĒõCgü’Ŗ8Q^ū%\ž}XHļįéĘ {  ģcø«„kښŌūā“°™HĖ”GӘŒO#ŸB­ĖłÅÆoŪų[įgżŸ;wNÕkĘn·«ūŪÅ¼ŹŚŚUpĻśęs"ļ²žŲW.— ķķķŖżŒæ#ćF­Ķ@¾µ —Ķ#œ’HļųĘżˆ„‚Ų@ø—6×![ ̓ܙ ü™N"H94{„'’»«·©ę÷:”»~ĆĆĆjŻe<ŒCä ĘĘāõ>Ī×ŪXslėŹØÕ&ŽņšEč’DøK<åjĪž©$ĮĢR«zQ_åB,+!’¦ž/™!]ŝ”¢ėךžł%JŃļż­Ļ’…y©y?kGä~g2™œåYäBö Ū— µŸcĢĀ^¶O蟏³­7nœÕ’˜āP÷ƒiź«'ˆE#Ø.5cå/ŒŌ?G2&RŅJBå<52€WĪĀÜqé¼D½v’Żšš3·Ć?E=ķiPč_hœūˆŚŚŚY-3NĮưMÆ{Q+ōyVÅońĀOzö‡c0f“XT]w9åh2;DĒ#¤óa÷ŃzS¾ųžhų"ŒĆ7NgøßP ²“åKĆĆ'n‡Ÿ}ßÕÕ„ź†yfž˜[I’fc‘ńš–m`œ¢Ž‰ü#Īń½ģĆ%Ōė ż§_?ƒĻ"ä<^4Q~äļ ńĒAž8O"DøCć>ŲĻŖčl“n¤:VÄ|ČJ⇁ń„™Ģčķšs¬²†„†ć¼ó1QDīųłoŁ^į3ž¬9”ė_2Åt”¹™e«hjĒ@©›źmōŽ£ ׳“h}ėuxø1>®özü­i<“¹žøoģ‚į§ÉŸ\”łų9’ōōōĢźŸó)ó(ųūŒ“ć•q±Ī…ī»ŠŪWFėŌµk×Ŗ÷1~#į×BĪS“f6rĪnjAgUüUuX»yģ—;a|ž{x‡ņˆ¤ł“×ŒĒ£“§^ŠDökųĒiĘ0óķAų9÷ööĪé}/ēĀźźjUü<®_śü#ģ›ß#qĪā^\šoÜõšM§³ĢŃh¢:%W{‘£^"įņ©źŗ@`ąļ|?^<›˜ž¹†y‚fDŪĘ~ĪŻŻŻź=ünŃ󰮘CĘļ2~ę–} ×>Ū!ņnKK‹Z?øī±Ž~æ~ض&‰÷Õéõ 3šåæÜė}wlōŪ׳ŁÓō/țŅfLŸĒŠŠŠl>Ō÷üwįg¬ü„KäGžm‡ńÓś +™=šsæs‰µ‚Ķ5ķäōų'''U豈>Zō ßAzr‡†wRĆĻūÓž¬^?Ģ?f<"wŠ”ćłvżƒ¾ˆsģæłżCŁī/ #˳ßŪ걟É3øB±Åæg’nŽ ēr¬ĪóQ~¦µI]ąĢļĖ?ė…ū֏Ąśnś}ōŪś‡£Ūž4xĖ]ćäėŌo>ņlĄœ‡čŽ~źÕG&Ę¢/b&×D5Ž£÷B÷ŌĻż~Åżēµk×fń±?Džż&Ÿc>ÅŚXß?°Ż=ī;”ŃMLć]Ų “ĆŗŸ]ĆčłgmsnWæ kßQxŸuÄ|2Ēl§ČM¬3qŠ?_/bšæ? ž æųt^d6ßćt>ųI—ū£kŹĖ½.ŗęiē+ż7ŗ®e2G蚐N7‚’i{5nēćæ“c~żhhµZ?±Ķ]õ™‘tŹūćÉÉWéX/ftĀÜøeܳŗ£³ć-Eż†wG(Ą½÷Ż+übT—•µ‘’ŅłTJō–¬q®³ŒwęēĮ[ü^ōæTĮ ž00²€ P @Zb(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/helpSuitcase.tiffHHapps-projectcenter-master/Images/helpSuitcaseH.tiff000066400000000000000000000075641347226342500230230ustar00rootroot00000000000000II*,xœåYYŒÕ=U½UWWOĻ“{6o#;"lcEN8€’H ”(ˆl P$P$ņ•ņ“æHH‰9ŹGģ`L‚!lˆa°1¶ńn3†ńŲ{Ƴ{¦{ŗ»Ŗ—Śrou½žē–b‡¼Q©^×ņźÜ{Ļ=ļ¾7Ą’MÓ7tv>q{W÷“ŃHdŌõ½]ž‡ć6¼/ L~Łą>Æeb±uw.źÜÆkńX<C*G<¢"¢ØE@ŁßŪC6·mūäąąąt?ą|٘å–nūŖžśŲÆų€Ŗ*0Ȇt<ŽdY:шU”²¢Øg}²ÅõżCžē½Ū ?;0ą~™ų“ĄŖÕ†q„@$,׃žļƒ0BQŠE©X éD‚ģJ Īéx j,f™¹Ü`\K~ātętǶ¦ĻžŻüüĮƒS’Kü:pó*Ć8Nų“uĀĢO>ŪA}¶EŲĆ-¢ŖˆŅŃNqŃŚŚŠµnŖÅ"j„²Łl³³ū³Åb?Ģ#Ī=?8xCķр•_3ŒSDj=š9ż ģbæqęøČv9«€k¹ź„=E±JÅ&ŽÅ£D4J9¤T(Qž|@>8F1čF§®'ēˆ?Ė×éÓÄ’挄ų¹ļ‡Ųe{„ ¢9® _QĀ{ Ī©=F9”ˆ£]ӐÓuśc{ŹæA×õNЇlŪߣńG’{ˆ?‹WéAĀoÆ@yŚšu ^ł7÷ųƒ³¶ć§¾¦Øh‹F 3Ē‘ÆŗŻQ€˜J9D9Ʊįü0"ńyż~-F"ŹFÓrŸÜņNõMé³Łõ†qž¾—‰“ļāÄékį³;8jYļ›ŲÉØuwÜŸģ*Ÿ9C㨠'ł cxR,…&x”CzV˜ņ·V€Ł/=zŽHŖO蚂¹¢;Ÿ/{?złŹ®švfaœ£QiōMŽæ×D*ų²`7—NŸX&Ź„æ4(J¹:77‡G}+V¬Ą®ķŪQ:‹(qž ?Č~‘tķč%n%UuųŻBa5]¶düßO“ˆ¤^Š5õg” c„Šūżæ¾]=A·ÓwĘ łŖ7Ių1ĉÖX¶r’ļ³n,&­š¬ÕžrŌ4ڊ]“ŸoŠö„µŲėz2r›ļ«˜™wūū›č³ĘNMõVu“w Õ³īŲ(ÜZkI8‹ļMÓ¹Hē.»Ž¶Ü"|å¾ū°¤ÆÆaµāч/oCŠųEBڜC¼–ŹüaŻč!½=W©üötÅzöZų¹żų5w¶Ē.mĖõÅŽÆąāˆrxś°²DkkļMŽ}„ɹˆś½š«ų‘hhP!¾!ĶTŅm0 sø…ü[!õ¾åŠ:;a§ņēĪ#V.Q#Į;Mߋģ É)ę~†5£ƒjĒ“åŅĆ#õś«|’駟ņ™7²Ķåē0üŹ« ŚuāĒ A~TØ~õ$7±“żÕ8åēYĶ$č9„1whŖRł(ŸæÄ}ˆżõ3Ļų)šĻodĆŌ?^ƒj”ŠC9łDŸj!č]Żø˜]‚‹łVGhįw4•ĮžW”°†:¦ŒæJ1-Q}ĀszĆ.ŚŪŪ'½ŗųóÆ½ŽĢuaƒC Ŗy |o;ˆe!·ń>äI½ŸÄāžnt ‡?5Ž$q§ä:żūJ„{„É’üüØī(“ĘęfĒѵ|)b}+±ļČ XU+—,łÕž7·<׊Ÿs€Ö{ Ƅ>µ®|Ÿį؈X‰8µĘē%¾Ēų’¶ōDiÖu<ʼn7)ŹUż›wF[Ą™ū½RA¹P@®^F¦« 5-Ebņr3—/£­½c0ćWÖļ{÷’Ąo‘½333AŽ2>Ī[Ö;Gę’č;Žō…-læ«Q½ČydŠø¬ļŒ’Ó-[”RżÓŌā{œ8ÓuĻw ¦ŅvęLŁ4éŌćčhĻ `UpšČq,_q3Tšcj I=9uÜÆŪ½}Fąēļ^&Ū?ćŲd\ü[Ä@ōł`;ł,Žį>ćīččt€ńŸŻŻgrœjŽhĄ™Ķß¹oŻåŖÉø‰ó¦Iµj‘Ö—é$:;Ś ŃZ V·±÷Č)d-ā˜9¦inÉ©ßŲżŚ™?år9Ø ׉²o…O¹Õ(§ųć“1Ė\v-]ŗ“ÉÓO`fļ{°†ĻA[ŗ4‡«If•sÕnų°ē2)ō,Ź Fć³®Öh⚠ްŽŅŚlG’öĶɹ%š3.Y’Ec[øö•ó@ōfłŗÜÄuĘ_Žf›x}n:įßĶóŻ|W¢µ}O6ƒ^ĀĪļŃ-XŽO¼²Q©ÕįP•Öµ§ŽŪ¶łWĆĻüætéRĄ…VžĖ~Ų…ļ9²’E¬tZĖņüĮö3žqGG:FėĪłÕqaŁ~Ąö™E¾_Jø™3UĘnÓ3dkØ3=‰Ģ…OĪ¶źWĆĻ­@9/ųĻ8dæņoĘ*ü*ljķä{l¬U7Į’ f9#Ü3 \­œQ=Żi“éIĀMž¶ł \ØÖP”Ś491ct±zõOoKæDKųŁBŲg"'…Ļ٧l߯“vˆÜķqāƒĒX¶lY“’E_ śŒ½X©£J:’Š©čnO“6ŖW,Ū øĀ>·ēóX6= u|6ŁE%š“; …®…ŸµæHlå?ū/N_”żĀærȜoü‘4ŹäŪ’U%©cQ*=A&›;q©JŲKäsr 7ĶOB”ŚŪ¢˜Ņ ¾āū÷¾](¼-üū‰‰‰ĄŸü}ęƒč·ę€ąV«¦ ūŲ÷|tR­/ųļœŔ‘…k¤‘1’Į¾BĄ›Äó óœp›ÄųČVVē£qXūÕ PņĖ'Ź„[ĒgōZų™/Ģ!ĮįÖž–ó unpĆ}ŽĢ9ĮŸčoĀ'Ž{Y8=(·ēé(v‹ō'¦ųHŽ_@vģ<ŅōŽaį]¾}¾ä8Ÿķ)æGCOpŗAZ®Źś355Õä?ė)Ÿ_DŸń°­|ÖNį}9V|k‡ŽŽŽ¦’ĀŖ”_¬Ł™,ĘS”ō6,^±ńéq(Ēa¶0ŌŖJøO6\­|š‰e=ā§I4ö\yžāłWųZpki®7Ī]Ę+Ļ¢Ī×¹~žWž)m%…3ÆŖ¬Į|ŖÜ\g ńÓ.ė!BēåņÖŃzmGˆ™AĪ†ē¢ĄĻŚ999Łä…Č”ĀÆö­ˆAkMĒg®xžõó ür mį/š†ß kņ‰‡’øXüżeĒŁC?KṫGAĘĻMÖ’Öŗ@ĪUY’¹/ō”ß÷[õ’šųĆĘ£åI÷ó“ųy©Pq½ņ‡ó…ßФu8äŪĄ’<Ł²ž3ŲÆüMYćŜʶšu“«Ł)×o}}}WēĻUs÷y‹~ĪŻÓ<0\«ż‘~^ c˜C„FM^?²~Ź5'ŸEżŒ'ńI®#šTąum~†ē ęŃēįēŲśiŖu,Ļ…ŲߞØ×§—K\ļœBƒ^Ģyž?G!ō…Ö ƒV½5ŽhB߯–=Yž-ģu³\æ}~ŽGį½j›5€.Ō=Ļ?P,n+{æ8‡ŽĻ‡¶”ł5¹žd’ ¼¢~ųd›D.Č{¢¶×Łļ¬Ÿ_„’<:׏cõZ`ļ͟¶Ģ“ēŖÕ?Ó­±Šß ;ļX2~Zü—ż+4ž±šĮæÅSš\ÄAšNŲÄĻpżłEųĻųė|2ŠfŹcDZ‹›iäC!޹?÷K!žąŸ ²’yoøµ~`Œ‚ 26¹–n]§ń»­õCāĶ·‚ż+žUš+Øļ§¹v§gˆ7» ®Ė³Īē%ž”Ā£‚š’Ė?ė Ļa7Ŗ~8»ķ•©›t½[ ÷z]i’óÕ¤wēčۃ–5{żÖ­]?7øZ¹zżäUÅcާćUé *Ō …SłQ1>#µÆ÷ÜöķŪ­kšĻyčJ*īHM;åEµ]”T(`2Ä!3>ÉÉM;^£µr¹[”P\‰Dµ!AØ ‡ĆūĘM²­[#?'ž$`ģRSĘé ±…B“ !!B[€\.GœZōø8d‘=ńńČNH@&٧Šé½=„%õq‰Éēże„zæ×[“µgϦń7v’_āOŠ—˜2j æĪ- øRy‹ˆ@D˜Ž„DĮŸ“A­T@§T!/9 IŁŁ(šAŲŪŪįźģDQa”C¼|łx‘ÅrH&—Ÿ {<ēĘõÕ’Ŗ=F ąļLu~Źć į”FpGŲ:Šā€=z‰Ś¦Ļ”0ˆOČS ·Å½N6™`¦M”X%hµPĖå„L~,(„+ƂpĘēõ^˜¤Ńt’OrŽų“ū7ęoż¢Gš ’É$ŒpĶ‘oČÆ#ŅgōM‘£ų‚AˆÄ3ÉfāŪ¤P*‘Ŗ'Ī%Ä#?1%)©ō^Ļöø)~õ”P䬔Źć‰ģž Śž;ö¤™K3Ģõ”æĘ®!,‘Ø’ÉūQßGćÅĻgBt¬÷łŠJß3*”ČŃØ‘@ĒŁ1Ą9ś]SOzĘ9dŽ7Hy”Å9DqJŅhqā°LņĪ^XƒÄū×Āu„“ā€ōūĢęæ &č»^ĀAæ‹CćµGN78ķv£ŹåŗęśI„µ(ĮˆPōūlo,‡BdūBM6j(FÖ·£9dSOOėåŗsć:-±knŁE\kŹ­‰ ²;Õ*Ł«-“rŃŽCn›üˌŒ«ra<ÅŽ G¹ONˆņ&ÉččgŸŪzŃIÜÄN~~påJdW÷W;` <GÆ!ˆø&§Ų&ŽŅŹ Čä L ®©ŌžµĶMev uØ_NmN{=#Yµ"Õ(ƕöPcwčÆļx¾'zŚų )£‘°„$’OŲ†_b¾ń=üš¹óqOŗBAd“i4466āĄ˜;w._²»vCCœžGƒĒ!¶°nLŒ3 E©lśē–ęrśŠw(žź7”’kŅßHMTü}ŖQކö„Ó\“šaĒY:’)£ž|jN¦Ų'žękvōŽRŽÓŽå°ćńgé҄ؓiŽ;†ńćĒ#-- oæō¬] #ńhDü±xF5šÆ9Õ[0tš„Žö›0’نˆ2õ³‚LÕ­Ūüölƒū/^Yėėžbj įÉ£\F’’j–@<Ä~qšŠržC1ļ‡p.7÷g–Żwß5÷ŚšŌS8æńUħæĖżļ|ćbL‹•”9S(ŸĻøœļl²ZļŽ=¶Žž^›—iŌmKKÖTDD.¶=ófĻŻ©õ»Uį±yH›0”ŖćōŪ < ņ=(¾1Õѱö8ÆŁ„%X°n¦Īœ)å.ƋW®`Ż…ō+@uīš<ŠĘ5µķbüŌ› ‚ōiÆ­oķgvŪ3߇Ÿ×öMKgäėO|Rjvgś# T•U_xCž•˜=ʜüō:$”#x“īWžG„8"Ø5ßy÷Q¾¾åõA‘™…ŒęFÜFZŲG|K5‰cĘĄÓߏ«{÷AOµXM1Œ įaŒ;"Ņū0å»t$C tźßļź\|Äķžt8ę5kÖ(sr&ź–/æŻµņ‘'Ÿ3%ōƞ]Ņ.›d>1ā@åvĪ™ŸAüÜ0)CHˆ×"r¾žB[3dZ¤/^ҋ纺 Uck–&%K}…×ė…‹z'ÖU#Õ-åŃ@ˆbéå{œ„FgŁ ģ0ž$…Ā·¾éj…hąßét:1%%>Ŗ1ÅÅŒNü”ÕN=!!K~č› $Ų‡/vvĄ;Ŗń–V<œš"ńĀGłŒnÖCaČubV„)n©åćQY4‡›:±T뇱¦A²!‘ģ%›V·4£/{ų„Wœ>}ŗ„ć±ĒCaa”dĒéÓ§1{öløI§;)Ī.ҐI“& ŽÆ””f³»vķĀCæüääęAׯ‰°Ė o"xuz(«UPH<`’@nŠ˜Iŗ“Eµ8$ č£@æŃcĢ3ėpUŌą¶įŗ (Ųł„ŗj$“o,Ą”õób&ĒäČÄSŽÆX±ēϟG€ī$>Ÿ8qóēχę›Ķ†üü|\¾|Yś|ū¶]’ŗ=NønI—¦Ķ¾YÓ`Ģ 9;Z6—2é(ąĀ‰}°½ūīĖŹ¦xDą#’ˆł…ČśĶóИs`÷n]m‡ŸjV²µ Ās IoĄY‡cÓf[Ļņ˜æ’¼yó$üœ_ĢÆŲkŽG^^žōYee„d[å±F¤™ņ yąµ» :ąvv єqs”|śĶēF˜ųMx˜9īEļ;ĻayNōC^ZķŹĒ 3ē¢ĻåG—+€ž~'zŪZ1Ŗz?Ҍz|ŠåƒßÖµ­źš¶Ūæ?åęĢ™ƒ·ß~[:Ļ8G-łœćeæ3·˜CmmmŲ“ł]ddä"dJ†ŪįG8@ü”Ü ŠÓ0}Ńb¤V )Ż$)łł#;ѹ‰š§¦B6v< ×O‰)°īNwŻtæ.ŗ~iC5ŹgLƒnÖ|¬ó=ōö{qÓŌ©mXń—ÆŒ„ńāÅ?)·n݊gŸžäd™h£>/bä”ü “ž‰rØ~ ¢ ]Ró²0zņ<$ę\Ŗ?ķCĆĘÕX9c6Ržéi #vĀnaæŪśŠÕ܄wņʕ£?1zm-Ī\ŗŠo/Õ#'oT}Ž`Ÿ²~Õr×pü/^”x²`Į)yń{ö?ĒĀįpHüā¼ą~ęóĻ?ĒÆZ-é?k§’ś1VNßŃBÆÓ’VŹ”PSÆÆŅæŒ- …F„„GŽŽĆ‡šä‡Ū 2eJ~ļ¦Żeµ¢ƒęœ1©ń(ĢĻAsÆßz3nZD×ŃĀŁ×‹äŌd‹Öšų‡§–ō ĒϽć,//ō1s†õ‡Fźa?kēĮĒŒ½_ļÄ?ŠBRє“ꉤ“¢œb!棅śn½łęTō8\Č.šˆ‡×½ «ÓNā|µWĀ^dNAYa6ćtč÷ųšĀ[¢8L3ZŲŚŻóA®9ķł?>yļeĘVQQ!Ž{ィ­­Å-·Ü"Łq×]wI¼`Ÿ”zŁŅŅ‚dźæYk8233„<įõŽ{ļ”žb-LÄk}|"5€9¦¹Ńėī§ŌōIŚ“¢Af®}VŗŚ½”£^Lž»KYƒN§ŻäwK;ł=Ē„ ŹБęRøŠ–£†xĆ5#-.īĖg–ÜpĒPž’ĪˆĻ>ū¬äwę Ł#™GģožóX{jjj0mŚ4)6¬ūzźyyqžŸØ:„<ņ©JC:O\óų<ˆ#u;ū” “žR䍆+FuUåµ“Īł\<óZ.ŖÕņŪÄĀL*ɓāč¤Į¦×'ŽśŠētĮG׏LI|ų7wŽšźPüÄ‘ysüųq~3fHų˜/ģG¶ß777ę/ęĪqśōŠȃ44µ ¬āFŒ="~'źœŻgŃqåfN-!;Ž€gjÆb’Ž“0ęĶĄ”;€ĶŚė wYAå;a¦q§—ōßęņ ›44p”¹‡¾Ø©Ļ3M§ū’+üģ÷x@zĻY'™ļ¼øv±M¼8o™g\/¾:\G³‘]õ­(*‡¼ņi¤›.j+upŚ,hŖś f•¢ŃÖåG:qdĻ”“øŌnÄüæ}£ĢČN#mD`óQ’ēńĆJøķ½V$Ձłč׊¹ķÆżŚŅł«įśĒų-Z$qńļŽ½÷ÜsÄkžlÕŖUļ¹?bóüÄ6ķŲ±C²«ŖŖ ¦ā 0$ÅćJķ¤ed¢ ¬2!īz½½h<³·Ī»­/NæÆ”«éeÓšōó’ 9õĻ6½Ž0qÅ-łÜŪz7\8eÕAųB2¬|“„卑š3’ćg|¬‹ŒcĄĆśÉ}/ĘĖBķųÅģėąKĀÖ÷æ@gc;œ¾fÜ|+–­ś-¬ÄsńÜAŲ-4o gOāę–³·\AĻO±•‹2!rÓ#--GĀ?”?NżZ½śYddŽ’śI~.ŖPČH£“ąó3~š²e½ø}ÖdŲ©žżĖ"B½“ŸzäÉ oĆmæ^C>÷ĄJø­ŽīĀMöVÄQĪ7QSQQŃżĒ®Ž²jææķ‡šóµ™÷œĢ÷į+ÖwĘĪ1žu/¾ŒtŖŸ齋zµšę{cÜĄÜēsB„v Ą¤Ę©s­h©ļ‘~Ēu¹tīĶøž¾'ŠK÷ÓQ“—rśŠNī‡91 W::ØfȤēd~’„ē,ķ ég“ł‘ĖąÜ;“’żõ×qöģYÉÖL®a¬ó̧ŗłÅš4yņdɎõė×ćOG«aŹČAˆżź AIõ6ź•,(Ā^ŖK°¶YąõD¢węž"„ŌsϹżnt¦eQ-˜ ĆłjČ7æ†ĖTo"RÆ*“fĘö¾ŹOl¶W¢ų;h;0šģ!2¼ž2~ī“9?÷gćʍ“ō“ó ''GŹ >æ|łr<žųći’ Õą÷6QÆ£OLĄŲŠ©šxlP…œØ>z––.*Éaš äŠńBų'ɔxzT>„t3‚„cIć8_y~ŖüL›?ē{Æ«ėĆcnחQ̽“mŃ£s8~>ņb¬ģ_ÖĖįż'×2Ö ęŁ7ß|ƒOW*8::)Vjd—”aĢ„ÉĶ>Ņ’‹ØÜł:›»ˆOa˜“ŌŖ©Yo|Č4x2;‡¼†š|ĶäžÖå¦>a`Īįærzż»ö¶»¦·,żŃķ ’Ÿ“æģ:Ly«DĒå4K•LšŽ’ Ӊ©~ōZj°’‹Š×Ņ‹°<€Ü8-RÉĘ Õ‡$æ OęäJ×QŅn$_„¾0†ŸöPČżBkĖS4,VGłĆ6°8s ä®KÜO0Ox1"‘GæÜ q JKKūĻ/œƒ†āuéTµÄŪ1®Ć„é³H7ää’KŲūé;ä’V„ÉĻ™\ 䤯ć5śAüģēzšļi>”fM¶@Mƒž«õħówō¶™vķžhKk¤ł‹¹Į:ĻyĄ‹ėWAAÄ%ž]8¹/b»X·.ZŠźćPwųõšaŒ”ž}ā 3 WėŠ×рKĒwĀfļĕ -0©”ŠŅ€l£9d¼F'į—E„Īć’o‡ńk)łk2.ĪOī×øO«««äՆ ¤>•ó™ß”HF|‚gŒjVnńXÜøą趜€ĘՉ†«­H+ÉĀכw _§ą’堛|‘QāēøÕŠgź3Y3Żį°ųŠ„ż“®p˜Ÿ!÷ į}Ōnd„įų¹’dN¼öŚkR³~2_bĻUŲ’¼˜;¼ų™ŽBo„J%‡½»b$M\O­¶vóü””ōņŃEāĪćWj.śżŪé¼ßń&ęWŌ÷RŽĘ.ĘüåļŠśәĀĻĻ?}ōQÖēÆi_żųc‹}ųm‘F3łĪŌ“»[}^óG}}»é³śØ/¬ø6o½Āū!ė4ķųŸpߑÖyŚüĄ®ź'ž.Ö $kććKØĘūB^o¬·dއ¢xž=8Ā’‹žˆ(Ŗ ž00R²€ PZ@lŖ²(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/iconSuitcase.tiffHHapps-projectcenter-master/Images/iconSuitcaseH.tiff000066400000000000000000000113521347226342500230110ustar00rootroot00000000000000II*¢xœåYYlWv=U½ļM²¹Š"©ŻŠ2R“ÄöŲ+¶‘†ģ B’ĆȊ1Čgē#ł 0@‚x€ƒ|ÄNąx$y˲dIÖJ-”(Фøļģ„zļŖ®œūŗŠjrlOä …źUēŽ{ī¹ē•€’7+üt{ū÷wt¾įõx¦,»~¢^Ēõźƒ?¹}{žŪ÷U+įóx¶­ż|8č÷ł½>Dü~ų=:<šž“s°ėgÓõZ­vcxxxń4`~ۘ›WŲūD8ņ… Ū_²]×e 1-”Zy¼Ū«iyMÓļیŲķKõzżć`üĶŪ·­oŲµ;½B¢UG6ź¶ b„¦i¬…Ÿ±@€qē9ę÷A÷łŠ…TjŲ Ż2ŪSa³V»»’ķ·.^\ųæÄ¶ļŠFÆØJ̲ädK|-±øńČņč:¼<’¬K0Gǁ(ērØZ[[3XY9ßšĖfš×źäÜ[ĆĆ’«ńĶ߉Fo’Ōa•sžs±+Ävć,uiŽĖd­×R)T‰=ĀZ…¢QÖʏÖ(ąõ²‡“ŒķsöϧĢĮ5Öčv·×»š?É9ņ§oO46DžG§ĒĮ/Æm{sa{(ąG2D*ę{ŸÄ“gż†-«>Čk\ŖÕģć]{źæłÓ³;&ž(söi#×ėš6æ—WrƕZ †ąēė ¦#īõ Ą³ŌQ>µźüF|:{ˆ=#µ‘>jōPAƧ@.ŽšWי‡‹™ĢÕ]ÓÓgŽDS‚šÖ÷#łĮiPU:Õņūb±Ӷ悯ēęr]ž›?ćO0W­b¦RyäśüŻģ÷Vā³Ö~/żO½n«Ü¬õk#ś–ULÅbĮ8æ°°g¼\žpÆyō(<žlųH0€x<ŚįBŃz杓å›nŪz(ćż~ęĪONn§»ÕłN±Ør憝A8x6ćŹß»Ēėč$ŁÆQoŖ„« u'!]ÄßŖ{ ŸfŅ;KĄds^žųÕČ[ѐžĆpPĆjĪŹ¦óõßy÷dé„óuā@4:Ź«“yO©} ©Ė—‡ńȲxŗU, Oüqj—½ŗŗŗŠ×_›6m‰÷߇1r^rž‘<4ē„I$Žnr+¤ėćg2»łq±’Ÿ!-<‘‡ƒś81Ģ%ėåžyy_ĒF£ĆĢUwˆ< 8łw1?9gä^lŗõ#1Ųzų_[bž#~Ɔ•œ5“°Zż §k ]įčtōS‹DŠóPSÜ 8/4‡FŻĀB"}‡a’¾}Üėü©SX¼ųäÄśZ®ē¤|/ŗŃC­šÆTžéj”šūė±»ė_ńöĒ‚¾Ÿ…Cž½¶­c)k>}¹šZx%z<Ø×wµ$[韁53«R†)ZāĢc÷~‹<ēxīØUOµaĖK/aC#.®%ņčģ»ļ!B~QH×fH}] ›ł#ŗŃE½-•žjØT|óĖšĖś½W÷<›ōM旊V{L[ĆĤvyń²¶!Ov‡ž b²&'P½šģr ¶ĒėĔČ÷+ŌL-G4³ŠĢo‰1†ūūloGœJŽĮ—7XBś›µÜ»ŻćÓ'ņьzĒyćčdµś/ė1>|Ųw…Ž{×8ōŌs Tžb -§uĒh/˘öc!vž-ˆźėīE}qµ “Ÿ¹ Ų j.×ģ:Īä󩓭fÓŲMķ§7E•|’˜GžµŽÄą5쌿ģgOHŸU ŒæÓ³#Øk„ĻÓé½÷ł©Ļē³C¼¾išhkkS:ńMVŽžĘa’ŽĒ\ėŒARw–¹­%Ū0²x2jx G ]=ln>÷5½Ā˜hŻ€‰“Ż^Į¹ XäNPE°Ē‘Éģį‹‚üžxķ7*O=õ”x+Ēģģ,P„Nō-rīīī^»ßŹŹ b±FFFšįæ„x" _Į@Z#łĶ0žk­[Ģ‹Ēćš^{$Ļ}2cłåök9hmCźšKHS½.ßFOW'ZF®Ć^˜Eˆ×3,óō9ĆxĮ y=žÉÉI„9cU],Öszz[¶lŸś[äLJ&“*ł|xų>"ō.ÕZ•rUéRo’Ä»zˆµB³čkg‹Ó£( žÅ>ö}jĢØ ±ļ½o,R•ŗ•Ī)m²°?;Ž97_.æ}­Xų#7_†_ꋱ—ž~¹Æ„‚]>›˜˜P±=˜Z„ž'Éń*j„*źVՊ }fēĄ6tōnS½”H¤5|ßŅŌ(Š×?Ćžx‚|7”„:ą=ō4“Ø`7‘Ƙ(°–Ål-³c}ø™7aó?›™øūż/ĆĻ~P¼¹råŠś>̼ §J„­e©¼÷S e–fyżk×å}-! ”Z6C µJ‘Ÿ™š"čŻ¾‘–.9·(˜Xœqķ öóśZ{'|O B‘yĻĖĮēyżŌŹ,:śzįėߌsWQ,×°yƆ??’į;?zž]»v}£ž½}ū6Ī|ņ $āQå×|©‘x0•l˜–%ļ…óR‹2µ[z@ź Ÿß¹s}ų!¼ŌYā齜Ū~j«OōT|¾GS÷ ķH±(#FQƒ1ńĻżąw”Gb »p&_((½hūђL S,įā•ėčŪ“×ń¢R*"ĶxMėW®zi=žńńq…³ƒq»K°VČE9éežśž /øuėFщĘHģ‡Ó“ȾR«;¼§ļöŃGĆ(”+ˆ·vćɗ~‹<'nr¾P WĶq ”½%Ž ÷•j Ÿ]¹‰V꒾Į, ļ$¢‘æ<õo÷[WW—½wļ^ĢĻĻcūöķ*ŽŻ»wchhH弝ó2ĆZJæŠÖHMD7ÅKŹÄŹņ<ū7 gŽGkōøš§V-³5Qab‰ J…2ņ¹J•ŗ7mĆ®'3ļµFމ=•ˆ «-Ÿ£«®9ņFf÷fœ~’ķßnę/uĘ~į…TŽćQē„„%•oįƒhĻÜÜz{{U‚_ś\–ōłōģ•Sū*]4ŠžGjTeĶ<Ō$63Ōõ*cš]`_Wų‰PŪ6xVÕŅ`ŽŗZč&v©c…[†¢i“Wk&}V,ü³’xļķækĘOīŲĀÉ­ąėėėSų„/’G‰AŽK Ü~%•Ļ„‡ĢC³Ŗ(š7ķ}Hvn€mVč9źØäēa¬N”oC žx 5«ÄZ§16:ƒ@¢vīG‘¹ļ%nįŒÉ) öš…"ė"jŅ£$ܹŗ’Œ>ĶūU’+üŅæū÷ļWļ£h©äR–ŹiµńēŅ·Ā3™÷&č65r`%‹VĪždG/ć®°väo)‡ĢĢ]léOaµT 9"‰(ī?˜Ęr.ˆ-{ ³%†8=F™„)Õä0U”čMCs“ˆNĄW-’ĆG9ćO×ėŸąß¶m›ŅwĮ’ž}H?Æå³gžyFÅ"s8Źy”N§•ößćŽOęÜĢĢ ¢m]š‡X_D8CK{g®šžłg­ĪbǦdém¦§–8ƒŹ0Ų«‘ö^<’āÆS›tŕb­®ø"9ÆŃ÷m\œ‚>;Κ‰ąć™Ģ‡_ų/xæą]l²W’Y+ļ[ZZŌļÅ *Īž\ś~5G,œłUęK§NFbņĒ¢_㼬Š’ČaĒ@L_C7īĀ /Ø0Ē}Ūv`’3憂`ēļŹÄnšöü ¶fÉIśĮ¢ōæ¦ŁšmæųóLę“ĒįoęĻ/3æN:ƒh¬E©¦®‰ÖkŌč Ŗ™ō“"žčļF‰žńźł›ģ ›<·Š½uvüźóJ‹ Ä] _żœĖ›ĖYųŲ;¢żŗŅd;?˜7vΚęŌWį—ēĀū¬ń¾y¹¾ÓżNšŸ=wĪOŁį‰wšŠ×ūéWŌ¾}ģń”Ńń`f!‹Ģв½œeu¤¶bþļ¢HżńŃä…Øc­3cˆqʬƒĢ Ž>¦y÷L.÷›ü³954mW›ż’Ė/挅…‡h¦Ģ0ŃIįÄ$sM<hROOź‡Ļ?’œ{³Y¾Ž+6©:ń ’$uZ½F}I£@}¬UīōėĢ=÷Ą߁Ž£gSü‹³Š®]ĀJ&«ö‹šóœl¼\śōV±ų#’,n–Ō³kżüü›7oVż+ųås9‹~J2såļE§NžæŪÆŅŸ¢C¢?¢E;wīT±\øpAłTégYņū²¢ß÷a~\§’#mķčŪņ}ę4¼U+é,"mqŒ\»‡¤O“gńōĖUDźž5üņEžU×Č?į ½ž}!—{/_ÆĖ3äÕ&ŽgXņņgėń‹’N\ŗtIńC|²å<•%ł—åśgy¦£łšš¦%zńš€Ū©$땇ĪØÉsjR>ŪŠyń@1ī¢MųÅ+ĻT+*y6?T,Ü-—’‘_Ķ8łĪ4a—!"ZT§¦ŪāÄė‹}ū±cĒpōčŃ5ĶŻÜ,ūŗėĉŹsHģĀ;yę"ž¦ŪįæąÆų<ó/z“6ĶāÅ\īmŚŠKŽUæ¼6üŹĄšŗ¶šAüą¾œ={ƾśŖĀ/sM<Žč„ÜߍGę™`’^ł:ų„g„{āĻeVsōč.’5”Y·EÖRžk‘7'2–%¼‘b§›ųc8‡ˆ¹ŚÉžĖæĀYrŸ#GŽ(­‘9"½,ł­¼ĀéeŁK:tčkį—^’Iäśłō Č;Į/żZ GW‰aøX)—~І֤¼§Ü»¼§©jxˆõžĮÅ’ŚkÆ©ü7öć^Å/ńœ7nÜPsmėÖ­*§²æü:ųŻž m0YƒĶüūƒō ’’ó?V,U.¹÷Ķo2NŽŻ\īļ×ö0®’Nŗóėüłó겤?½Īs„Ē-yĮ8 N­K_Lć \8éń¬ŒĘŗ7‡Caęh‰÷9¹ŗzuÉ4”ńųŻå›Ćɽź[÷bĀį±ųƒęłėźĢWį—ø?.śü±Æß]’Ć”VÆ÷ĄĪpų5īmŗo–JĒłŁ°“‹E<Ś·E4ń¾iɃ¶Ų7øļćÖ-?A£īßd¹^ Õģą~¹dÕj®·Ž×¼k’M¹ž’ O&$ ž00€²€ Qˆ@™Śā(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/iconSuitcaseH.tiffHHapps-projectcenter-master/Images/librarySuitcase.tiff000066400000000000000000000127121347226342500234160ustar00rootroot00000000000000II*€xœåYi”TÕµžźÖ\uk®źŖźy¢é¹”E”iIP J…ØŃDE1ėaLņ’•YY£+‘˜Ä( Ęg5"$‘Ae0‚ MĶŲ4=OÕU]]ó\uėķS]-Ķ $oŹwz¾5Üŗ÷Ūū|ūŪ{Ÿ üæŖoVW?ś`mŻ*„LÖR»Éō±p:y|ʦMŽ5økB•jŹw+Ŗ>6ė4R^©Dσ—J!‹ż"pҩ䇉tźX(nپ}»süWc?,@ĆR³åP$–yŅiHÄbXy5r5Z”˜@S#—§‹ÅēS©ä±„ N&“ļ՝¢M›R’Jü f…Õv$ČŻ‰’dCBHŃĄqŌ2rŌjä‘=6łZ-rÉ>±RvUNlUė'£Õ•Ŗh8ܜ·k×Ęś^śæÄo*ī²ŚŽ~ePu„f3ŅHŅ›DZ@<žA&C)‘¢Čh€!?µ+WĀÓׇĄą ŹĖʼésē>.ļļß'āø£ÉPØ„ž/ł_µG”ŽkµˆRĒ 'GĀb6Š1µ'EļRY»’ōy,‘ń ¶ŖJūūa„×F«vZ£i“VZ…2ŽóJDÜĮøÜŸ„£‘pųT£\>ō?É9āOį—möÓŃtZMš ‰2ą¢#»!{Ź|Fg¦Łj‘xiāYĘfā³I,‘Ą¬"Īi5(Öė1Ńd¦÷*fOÖÆ5‘H …R;'ɄޒŽ=& w…ĶŽJńĖ3ģrĀ’ŹśŸ¼Ÿõ}v²ųŁ7 :¶F"ˆÅ3ēéÄČeŠŅ1FvŒrŽ~A×T‘ž±²kųLå±¢u2Čå!…DŅF¶‹&-'»ŗš—}ņɇ¢Œw.æ_ żW×ĮŸuef؁œģö¶ØÖ* »*ƒŸł==~²öptƒ#Į ]Ÿ­G#a-ןČžĻģ‹”ŁĆ|!#å“Flm˜¾čt( ›\.Wąē'Zźöz½Żc×|ė-ˆÕ=¦/źµ¢;dRŃ\§;±jń·½w[ćc6[GŒ\Ø”µēÅ\–ūä„,oĘÖ!ctö³-īa w>ĆN~^¹j²kč/OqžĢ^CH㢘b6±#M ø€ˆcq­\* ­ėź¬ö=ćżrčĖolFé£fēū¾ö”ÄŻKæķŁ•żZ·Ņjk'l&=ł„Ł0ʗ1ß§qĮöšqēM— ŽDł¤Ar¹ķķķŲ³gęĶ›‡oŻuvģ„œ8i}vg ӍÉj&‰¤ó;Ż]µtJx<ž¦—!åä9/™õ⯙uŚśżƒžųāE«½ĒékĶ#V[+łŌn¤µ×ž1ĢĶģ½31Ns‡×ƒCğ+V`ćʍ8xš źėėa±XšŪgŸÅžuė #]’Ųzf5š]s:Ɓ;žŲūģ@ß\’̆”ļ¹4WśE^ÉlˆŸ>ŽüĀśu‘”I&k OÅ2 ģ—”³⑐ßžģŠūGk>L „°_%Ī<ųĄŻėł5kpņ…_BCœ¾ū|>ĘÅ1-–PäL£x>šæŗŃéüź„ŲĒʁß)ŠruŹm£¼!•ćLw|ߓ/»ī3·Śvź„ɚҢRX&MAāšĒˆł<ˆQœÅŁ=h}Ēüu‚Ž}4ėĀAäWNÄĀgžĮōnČÄ.gΟĒ3Kæ„— ¦ļ>µ)‰ :æ‹lgģŠ~ƒXy®³£”h»ž%ßéė뻹ćĢ1ŪąHņpuC£®ŅŅ…y„M芼±Įń Ųģ°xŲŌR“J¤ŗ;zžÖ”õ$dóįO.©€¦æ«Ķ¦ /"ńģdz(Œ»÷˜IZ7sm=ö—OƇƒX”ˆB×¼q²AOö’ßėīŖ£“C—ā_½zõS§ž\+—昷ć½ķož<ö†»ŗŚ`Ė+†-dž:óAtGŲXŽÜ\;¬&-ģ¼qĮ»ž'Ÿ=%łźwT«õäA=ģÄ·ō:(™^‰ø f–£Xī&“d «aGõQ <­*Æ@Õ“Ļ #-ĒKolĆŌI (żŪ«N4ĮH¾éÅö=780WŠž?¼|Ī“ioØd2Į’é§ĀĒ#AYō”ūäJ=Lņ,)ś5¶wNĆ;Ć÷Ą^P »EGõ²v“‡wnÅę æĄ¤āŪæn{TŃž ĶHڟį9ŁF5g†g™eŗN6DHcÓÅeČūįÓŪ ą ‘nuō!J9Ėčģ…šŌć0Øx÷z7¾āv=t„˜żĶ=÷,=o0lÉ-/‡štŹ;2‚D4ŠC‡ĮéĘ.Ą½Sw£\kÆĆf×=PŁj‘—£C±=¼öžų«g1gŽ|œ ß2Ō„{Y*JŅmźÕ2“† 7„5A< ®²ŠUO@d/ÄH G —ĻįŽ”4½‹N…?9"ˆŗŪøķöK±Ÿ[¶ģĪ–¾¾ßm‹ĘtaŅ»¹³gĆn³”§§{>ųMMMX²tnŖ`nĮł4öt•ā÷=@WŠ€ā";ŗ}€ß®y e* RĶ#‘#ưµ]Čg=a×Qīf}§z“÷Dš8#Ŗ©§ęz  7ĮMøƒq ¹Żp“µ”²­ µ³gByćMxīå×0ģ cĮōéO<’č-ėǰ·=ųšööü`ēń°ŖŖPh›•Ģ€¢ĀRHH߆ŒnŒ‚„ ńH3ķ{p]Y+Õ )|p.Æö} †²)0)ÓųĆ÷‚×5+Ł®äõ¤ł7Bū÷żą‡Hes6Gܑ’ßy!‰Ānś÷¶|x{?ó»{Ž®NL :PTW Ÿ>‡jmŽžķĄé³­((*i-<ӞūīC™Ā°yęģMn…żĪžįÉŠEóaLé g"RHå”_Økæe­ņ^ų<#˜d?AšōÅe;›sš§Ž{`h\€‘ęŲµńg”Sõ3JŌMŸ ’Ē0‹åŠƒ± K†‚PWÖ öĒ?ƒŌš›ńūM‡Ó‰źsŖĢ” k؃6¼ŠŁ CL|ō Ćh6ö+"‰Éæ_s—‹]kkĶmæpÄ*V›ā•T'« I$)-J”ńŠ‹µŌÆKÓpøö\õrÄØ-םĀü’½TC:±kŸ›wS—<Gžćø{Ū'1iŚ ;Hsó=~"Źs)Ši]ĆLüīZČs įōG1HœwQŒ1ģåvŖĖņ”W+į Eš“ Æ''€z“¤sČõ§B»åé?|’žs ū2ćbY-_v¶LY[ĀÄ-¦Mįčüax&Pž“‰Ą»„˜»³5ƒHq¤{R¶Z^…yįlŖÓåČ”õø¹ā]˜•}xū 9vīÅŁx=ū7S½©DYM5ę,^Šé3ęąōS?€kļ.fĢFõڟBb0Įé#ģž†Čļż}ä÷+&UB)“’®¾$‡fā ˵zė“wĶZ:>nWZļ_XĄŁwä‰ģ\qūPVåĀWnI æ„Ŗ†ĒŠ©3ĮļsA[*›6Sßø¢Ą /ǐ’T %vä[LšĘRpGØž E‰W~x(wš?‚żĄ»P=/ž[’ą×/ŵŲpÓėsd×­PrJō-JįģL’żÆŠÉšąĻa™ę)‡Rõ!QH)ą”¾ yō<¼EE8Õķ„HՋė¦t m{\=éJŖ¦BBŚ?”ŗz$ÆĒ•õÅvpT?»£) ‡“Ä•`ĘēįžĢ:u’Ć{I¤ØöĄŖotwæt)®[õ7­Ÿ*ü8ĻQ=XĻććE$µÜeųKŽšX¶k*”œžņ„_”Õ%ŅŖJź='Ÿ„¢š‡ēįy{*ŚĄUŪį*šČäŁHé,$>ŗ¼ąb!LČŃĄ¬Uƒ ĆIŸ»‰ē^ĀŽOż¦püSÜÜ}\÷yø"QVo¤EBjĮ毯{/Åuæału Nö÷bq”˜Wšp7¤pźz/¢ZåQ\@į)³?*E~ˆ’€B„m+ĪĀ£“.•dt)IyĢcõĆż(iźä:œ\æÕ;߃L©§Ó EżW f2Zl§Śµˆō‘ķ+ųĆ,äóœ„Ū9ŠžĄ,šō@M}['å1)Õi!üƒc ŗ)ķ½’Zž›’viĻžIŽ FεBd± >[nĪ›Wā QVæČ0PāĒ–e§)—¦”Oh0’ŻbŅ„"ØØ6ģjų+ų%Õ8÷žئ>—#Œi¶o@µ?Ė%‚É„di9¢5 pU¢Ce¦|Į0õ1JŅfӑ}(’ō}ŲõœČŌzlÆi =ūTß"‚;H“m¹ŒÆ=ĶyRŪ“”uO–×åė9]&ļź:ųā~EźŪä™=ZGqŸ.tĄ“s!ĘĒėRP’!%Öב šM‹]ģ(ødĒģ”ž™³Śą/*C“„ƒ–‹€¦£{¬­(¢h¼Ļ ÖWĪRM[X*+“äIr”—i©W Ā(6 !MĀ]Ē™/0%qį=^—āęa‰ŌH§T¹,†.µ…Ŗ7Ŗ h]rģˆS-ń{qr’ŽL_ĄekT¶Ļ÷šĆńśĮ``kó0MwöČöŲš\šv…H®mTÖdŗ[x±j¾]j7i)F#³”h›Ox$—Ēõx]‚†ƒ8B¾Uł”ģ%-ß\Ōe}ž-IČČ׌ܧAŖFÄž³ZļW}½?;‹Ńā‚Õk¾ģōfń_q,Ö/|lštŅÆ’]Š«P‡•SœˆŌ“ØŽ¤:éąµm !”ŁNµtńn ?;z‰ąOzŗ×\7a”?ĢFNFāÄē]ļ~ĆŻÅJ‘āX‘¤@÷čRJĘ;ĖĻĄŚ®Ā¼#”Ɇ(–6AZƉŸł¹•ś{ź©~e|/£<ō–ÓłÉæ’Wō¶‹f'M×ÕpµXɝ׏l,”ä}…b€Õ%)éRār]¢üs¶~»onĻģ‹Ļl*ĘõūŠ`Iė‘ä?D8õśUļŰ2A9 =ŪaųŌ4‡‚Ī—ƒ¬Ž9Q®0γēެ’Æ6T…Ҽ'«ź×ŌÉŖ®']]Q—HK:k½hš;„nō‘Sąö-5hč)t„o^?ӛę`!Ņ'¦™Įd2½¾æļĻŽd’ķ!ąļ}Y[‚ø:1õ“Š3ĶcŁõźéĖ‹¤¹b›j¼.EÕI8Ŗch»!ˆˆöĀ£Öó̧zunKÄ1ŻhÕ5ń³ż;¶ĻĪž«±½ł·]Ī–Ż>ß+ōU?Fżķ‡ķ„ƁŸ -› ʤS”õ«Ņ¾Ü&±¬Ōpj9o1ąų—CHš$éiRŒł[‹pżłJpT+%¹o\õFL‚¤§GÉ’Œ;ŃHų…žžDĆY¼#ø 7,žŲē_ńʃ4iŚIÉ[yb{±QoÄ{Ė{Ķ_vža@†[ß©DIĄŽØŹ)h¤Ļq2ņiT>Ūo»’ØĪąÅ/{žI¼ŁÕ3Ž0÷ąŁÉ’Ė?ż|™4IO'~[+«¼SĘzć -Ž_7Śļp2Zj˜4ŌÆĶŽ‘jŖ‹dY²Uܱń—½ßŽßf6ßµČd¶ź)¾ć™=į³"€łÜ“~F±Ķ=ܹĆėaߙÅīĶżøĄ{ŖĄÆüģčjƒ4ItZļøÕ&ĪŁBk QIUZ”š–Q/¢ōĀģēaķē‘7l‚RD}®2}2©Lß»Øłöü ø\&[ŗĄ`ø}Į8£ŽWĖ™JF‰7¬Np‘’ßw»cĻōoŠņʛõū˜ cÜa¼æ–ö|Ž`$ š7>Y%Ÿš„BI¾Z&’B#įÅ”HKi]dœ4” 1uā¾€DŲ÷ȑGĘūJJŒ›·HÆą6“yn£Vk7Qw†øó­öóĶg¢ŃķtŽx3ę’@Ö÷’HÜ~ŽPЬÓp|u²jNƒ¢ę6«Ųb°HM¢p: iŖ@ZJ’Ž9Öp¾wם^wµu.(—Ėo½Ćl¹Æ'¶æ12²“>cÉĪµa|Ü2Ü’%Ž_Į=MU“BWŹ—T%†&"z©ÖC¾?čK$lÜšĻÜĒØŠh&¦R©H"«-ĒY¼£ÆĄł’›“‘ž00^²€ Sf@xŗĀ(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/librarySuitcase.tiffHHapps-projectcenter-master/Images/librarySuitcaseH.tiff000066400000000000000000000117301347226342500235250ustar00rootroot00000000000000II*ŽxœåYiåy~śœīžžkwfwöŽE²„%-Č*¬ų@ʹ0¶;ĘU!v.Ē$»ü'U)ē©Tņ/)RIlW9J凉ccbx I€.„ŽeµZIĖŽĒÜ=Wy¾Ži“H`ēņ|[]=GO÷ó¾ļó>ļū~ üæYÖžLęs{zzReÖ ü§}'›šO}ķĢ™ÅŸ5øwZ MŪūžīĢaĖŠ5]ÕÕučŠ E’‹€t’sĘūYā7»lūADχ~€!Ic” ŖiˆE"“+‚8Ļ1]ƒ¬iN%žŌ óu7“¶ÜfóxģĀ…ƒ_9zté’ælŪiŪ'‰ßl³Xā;ųZŲҶG,E–”ņH2.F<Žž½{Q+Q/•ŠÕÕ•ĒŚŚį®bq‚ĘŸšÉ¹ÆLNžÆŚc·ÜfŪ§Ij+ō9’ŚŲCÄĮĘYÄ„Ó.—± ¹–N£AģQĘŹ“mĘFG?cQUꐔ—!½Äüł1}p‚1:Ó§ŖK’“œ#†ĒķŲYņ?*p*-üāuŠĀŽiOŪ†ör=$µ¾ŪąœĢųXs(¢#iH[ßkĀž2ć7éyž)Žć•f3x*«³’{ȟž]vl’ųmś ĢÓ _oĀŪł^¼\k6QųłŚdÄUžEŧžĻo$@“™CĢ‘G9”*rqŠW¤^[Īēļ|óĶēF‡ƒ:ÖG ł PCw†KzvĒbSnÄv­ķĖMžļüŒ—`”ŃĄ\½~Żżł1ś˜ļ]Äē]½^äB{|?}s5‡”o‰ˆŚä8•Ņį„„ń™ZķrūžŸų½`}؈ą×E:Pq¼‡¾ńLķɎĒvķ³ķ‹|^B§ļtrśfø[ŁžĻ9Nčū«ŲiŌŽ;ī@@»Źo¼ĮūČN ®ŻĆļˆe[ü–C²Äß%+•ēs;ŖĄ•NæüŽG¢_±Młs–!a½čre’“>S}ŗõubÆmOó.ŻŸ)āļ_EŚęĖ5{ÄņxzŻ© LüqjŹ\]__ǧ?żiŒįéĒGiźTrž:?tś„C„}ä–)Ė3?Ģēwńc§’g?LZ(ŃÆZ†üŪ-ęJUļW¾žƒŚ)~»Ć¶'é«>“<“üßĘ|ķ|Ķ ©Z-äĻųų8īæ’~ĢĪĪ¢··ŃhĒĀĢÄ ņā¦ų[ļŪ¾`>8ž÷£C„ā=¾Ī†@¶ž5S>¬«ÖŠŽŁ„õĘ/™h.e-{ 2FØEBP¹¦)ķ“^H-N”|K‰vļŪ‡=»w_÷¬ĆĻ>‹å£/#BNlŽåfNŠļ…nōS«ėõ:^©üÖfģķõ;÷«#1Cū®e*·Œ•‚71ńjåAkĶ~ʐż©d Ńl?¼¹Yxõ\”%­zÜ~Ž2ĻEž{š ÄÓŻŲrļ½ٰ‹k…–¶żn įņéÕåW„#žģ3ļŗbņ®\FćČ jUŠŚ²ؒļĒØ™R,;æŽķōo•6Z#Ć024É©ÜōEhåCØ„æ¹źūvö“ČŁ®'ā”)öŽÆ•KŸøŅhüĖfĢPćń¬łÄ–ö½÷Ō’d“»(õŖŲ^ÖpyRĒRģōŃ-°eqWį//¢y„ķg1&hX—›ēĖeČÉ.…vQū„Ƴ7Eƒ|1ˆŠūWæƒĮW±ÓžšĪœyVÆŠ^'mŌC–Ŗ/år·Sܧn€’žīīī?.‹æ”[YĢ–Ŗž+™l_"må1–šGŽ5p¬ü^ÄY’£¦[S˜{*blfÖV ÓįŗéŪf²‘RwZęF/ŃҶv&_ū5{!X=½øÜ5€Ė¹v©.Œ…ĖšČCŠĢüG>?Ī•Ķųļ¼óĪ/öõ÷’5{’/ǧ¦Ÿx}yń[N&“²ćIŲQ½Ö,mš1S߅X̆m‰^S…©ó¾U5r©¹ŗBžĒŁ«ų;üŽĻ¢¢Ńwķ\oŪąrbĻźlčū¦ ­«é÷"Gõzõō$ś³½HMD°4“Ü)yīÄ”RénÜ@{Ę÷ī}`¤æ’[š¢ųõ¹9æR­Ŗla0žŠjĄR Ųžx“łÖ„qÄā)Śe„6Ä,sĪćܱ£Č&“X¼t łÆ¹MģgLLędžĘHaµ¹ŸĀ†&ėØ ±Ž5–@µAŻŹCm0+/<“œ[¬Õžp*æ{£œ½ļ¶Ū>¶nߎ³Ęœ«U«š]sssØTlŁ2†Ūś§Ńe¬aj½giƒf÷ N’vOÅk/Ā(kÓ#rZĢ;ˆ/ĶŗĆY=Įžk‹Æ=Rŗź¾żlŻE¹ī¢Āŗį HĶ_„eh8]vį:åļĪ]>’ŃĶŲ’hēĪ/‹’0éŗ‰&{ŻŃįaŲäyæŸ¹xóóóŲžīqlé­c4~ŽœįP•OįDa7ŒD/’‰ņsqü¹GŠh’ÆńD=łāĀŃÄ‘EgOŒ”é…¶’ƒLPż^ūŽ256½6žįAh#·ąŠ±SpjMÜ20šÅĆO~ć‘6öĻļŁūē …ĀŸ^XZbNf°G”)ģ—)BPP1Ģ6ē`%¢šØēƒ± „Öų|ęĀZ'‹ļŃÕG~§ž}5§Ś®RC†G”ĪźŌ£ U³…ūE-Ņ—(sÕś¹»;r¦$üĪø—óy¤e$zzP7¢d‹«9¬¬®"žLM&‚ź¾C?|¢$š’žąšćU5öń¢“…įĘa³G' ŗŒÆTś‰ ōś»*XS ØQļ³ö25é ūĆ&.,DqŗpŒ¾1T.`śÄačģ DæÓ30ˆś›³¢®„ŚŌÖĘG'gzīžäh,Ä.8S®TPāœ“a>„’ ä*Ž;‰į±mō„Š:uĀ“Ģ9ÕõŽsāŁĒWĽč¹õoŹn÷ē-/ ²Ø§²Ī†§Sw#|­Ą‹Ō1׳§Wį<†4"løD>T0}ÉĄŁ2[ŖĢN½HŽęĀŁ+;0‡¾g.»‹óģ9Ԑ3Öļōūī‚Ā\­Üä¼Č±R‘óeĢD&‡ĮY Žhā…c§ŃÕŻ-bęV*•o$ģč_žzöߎŲwšŪō=u>„õŒ ēx‘ cŌĀ.Ŗ…ĀWeŒ^ ‡K ÖźžRĆyė$¬-ĆŌ QĘć]ŻSœ›Š8{ZŅĘmXõź(\:Gؔ/ÖŪ‘mļĘĄĄV^xĪĢ4ŒĮadXĆeÓB„&rµ¹įwbO“£Łīł«„ŗZgįZ o„Žr6ūĪÄć?֙·{ķŻJHöbˆÉ^œ×nuą$ÜėÄÕōuŒ¾‘BßZ‚y§aA?…7ÕEęŌTƆT0`_¤.­ąŅyēŗqÅɳĘ*°¢Žó{§&y=M[‰_!ß+uĮwbg|J¬Ł®śˆ]Ģü ސWMTė øģ³b–ńłē;ų·ųwD·yHxH—4GعcÕMś¶±ģZ{_¤~čb+ØØg}A&5Ö“ÓgĪāöŃ*ömó1}NŜ“aŻھƒ:›ALćÜI›<’Ļi!gל~øg\65½Ékh›ŠP—=JāҹćkI{’™3gøŽmm{tXü¤Ęü^ŗµŽRöĘ#²&©ŲóRb^Ycż_@³OB9!­.cž=Ł›N©L·æĖGi‰5¤wrŌÄźėEŚŽ„÷Ŗø@¹Ö9#ū.zS1ÄŁcŌH˜jSĢ…Z%½sį ģŁ)hŚ—æ_,żįf\ŪĢ-ßQ?„ ’oõ±:Xæ”’5WĮžĆ}ˆJģüu~/äŗä¦T”³PÜuŌŲēÆŲ–0†śrœō÷ 'õņRÉtØ{±Ś`mtÕdō&cŌF9äŠÓōC®Ÿ7™’C˳ēgФ]lz*Ÿ’ź[š[éW²_Š%öƒ½:f·–įGފ?5ÆcĒt‡¦ĪzYGK—Ų’ŚsŁeØjėlķģ$ŗKk¬K1T’p³Ćš©įeś¶äŌØ" tG#°"™6;¹T#ö},Īaka{o‡õŸž ¤ øēłü6ćŚmīŚÆJŹ I)”čŖ'`eˆ3 uHµž¶'–u _I!Žd`s6¹kU½Ł”Kō›ĶxßAMĶö`łČd.\„¹Vā¼ä3.ž>,Ł]šģė£ī+Ō ¾BžWω»Ā\ŠÆLį–Z{;”żrŲ(åSåŅŽy×ŻŒ’€¾_]W Ļ%äųLɀFü¤‚ŗĶü‘jĢ[ö69¦+ś„Tēv¬Ą—ֆ±©$u)Éß©Č÷¾}{kgįœ+xīU~X?ŃG§ŗąf²('ÓČiŠÄ.źƒFm6ē/”‹=HĢ0°N[Ä.%%×=’|±ų‹„»Ą£‰ė{Ļt\±?“U{æU{ Ś ź®”²£Ž›ä;ćjZ9ŁĄÜ–2ŖŃk9Ž©K ć2 ėiÖ²·iūµwŲT"æ¬ĖŚŻ¶ėŽČøC*ÖĘܼܰ6ė’ģŅZ6ĻĒ n0fÜŠ„f…}‘Üį aĘĖÅā_­ŗīó|+śµBėČ·~rĆE]śźŅß’4ŗäi“¦¶Į7Շ«½ĪhömĀXäØū9ņ®_ø«źłå ł/Q®_Å„ bCRŌ±›™ŗ4ŖB=™”ć‰ŸD— 8·kvNĆč<ū@öFM„ĢųŸeƾ#~Įu±Ļ[ģĄ/r÷L„rd¦^’;¾½ÄCtåķp·×ģ•׍źAźŅoš²!oč5ĻößŖKŌ–Õ^Ó[×CĶœObųRūp_æŒfpś°oDh™½Žć{hļo/4ĖÆ–K¢ß7\Ž’ēČ·ü’vĖJ(ńöi½_źQŅļ£.I7Ó„|O ó£źĻĘī“īŖøõ\ŁB’"ŪD=xśm$š‹}±Wݤ>‰š6|?8R,>Vö}±‡¼Žk¼/“l)£cü+ɘ¾×’Ķ-CśĄäў˜l[ŗäj>Źė#|näĒÅ\8Ę~ut)Ķś%ÓQO¾Ķc6š‹^y®Qķ{ógŹkÓµŚ?ņ«9lų;߁]ģ8ļ€_¬ø8čw³_ėĶDÕŲ¶l}6"é3ūāx¾)_§§!~öģcē“Z'~ĪɾōŌŪf°ųyƒĄé”79×uŽ‹)š®ćšŽ”Zųė7æć5i_—œśēølšģ+§wąĘå·\g–l;—F²a3F?"æ$ ūWž ,¹[#ļ—™æb_‹¼y:ļy"hBēsøĘŸRė`“’Ó’™š”ōļk̇‹^BīŽ`ipcŽuH_w _ˆ#SŠ‹¼v×äÜĮ£…g·ZÖÆoµ¬^£µ×ėu쿉|­xÖŁ«M:ĪĢT­śMlhĄžo‹øĘū~QŽ“ØIҊQ¾Ļ–£ßŽI1Ž"Kå¬ÉYD­ĮŖė°K:bŽÉ)Z…ÆÆū*~ćė ‰’Œv)ŹĒn1ĶŽę½ŗžwEO!šÓ’jżH©ųø»Į›|ĖļmŚÜ¼'ķ¹Ł¢Źcč}äį“Śż«ŌÖ(£ö>®äĮ"į¾ó7š•`ŽÕżr0ń½łļuśŠ]?~~«a|f»eč‹Dś,jī ¹óĢśśń×}ŪļmŽ“ż_jłž'ÉŪ›-ƒĒ8ówG–¹+«f>•¢©ØbJĶĄ 5•ŗČĮs4摒T’žÄŹÄŪÅyØKUļŪaYšĶ¾ÓÕźSül¼_Ęõy+p’—x(ģ°z”īDJOķ`}»]ˆˆ!GrĢ‹—˜‹‡Ž•Žż4ĻéR#‘ķļW½f³Ż[ Ž7[xÆž›ró’ƒc ‘ž00l²€ Tt@…ČŠ(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/librarySuitcaseH.tiffHHapps-projectcenter-master/Images/nibSuitcase.tiff000066400000000000000000000133301347226342500225170ustar00rootroot00000000000000II*’xœåYyxœuµ~gĻģ{23É$i’f_ŗ³ŚZKBµh«Qø,Ņ뵈Ø<‚J«‚ ˆŠĄ„ ”½ “ P–tJŪ¤mŗ¦Ł·™,³ļė73÷ü¾Ģ”“ō>÷½×?ī÷<æ|™™o¾ļ=ē¼ē=ēüųs(¾×ŲxŪMĶ-äRéX*›Ł™ęr]±wō‚mŪ&’Õąž§£\”˜WmĆ'&­Z¢’ĖQ¬RA%‘@*…~œĖp{Ó¹LW4;¶cĒ×f€ūWcžy˜¶5&óĮx.'õēr‹D(Q)aSkPe0`6-µL–+ #"‘Ø?“įŗŅŁlĒqļ5C‚mŪ2’Jüz i}‰åPyÓipdC:›”•…P(„R*E±R‰R²Ē¢V£L£ģÉ1w}]Rg8‘h¬W$b±Ć„;wni}챩’Kü& v]‰„‹šĖ#ŁiWfslåA½Hē²HeŲgHÅ"ČÅTōŠ—•”łÖ[įw8ž˜@Muu ×ŪūIÓ¹[ į¢Ńc­o¾łæjØśz‰åx‚ņ8E8…„1Kø3Ģ:ērÓödčU&oGļ'ÓˆO°4Ō#āt¢„ž7””ĄJ1ZH±ŅA*Äį¾T–ŪĆe³Gā±ŲÉy2ŁŌ?“sğņÆY¬§¹œ’ąA"š³ĄYgö@ö†®Ģ±hńT 9āo3qŽŁ$‹aRē4jTźtØ3ščµ‚Ł”ųõ¤Ó™£Yd;¢ŃĢ;s¤Ł±Ä#`[o±öPžŖvaÉäżOŽĻū>‡<~öIšĪ=ń8ʓ)ž:­H »L “dĒ4ēčtOéĖ!«ZÅēQ)Ė!Š“^&‹‰Å}d{W">vbxųšŚżū÷ xļ|öxö^čn܌PŽ•ü”Šo°ZūٜFNŲ<~œń{nfņöé‡"t„ĆgݟÅca­Ńh‘Ī_Ļģ-äPšģa¾’2Š‹ Ó7»V ;Łäv»Ć?Ö²+)ÜóÕW!RŽÆŃi_’JK]Žō†Uß¼5汆·X“äB5Å^%ę¹ONČó¦Žčü{ńz0AÜ9ƒü|ė† Č’]So¾å9—æG6‡³rŠŁÄV’4ņ”sˆk5itóšP£é—ƒĻ˜’h1Hn3ičw¤ƒS鯬ł¾gžcķ­%–ĀfŌ‘O˜ ¾|ŸĆ§ö°’w^v»1™N”Œ4H&“a``ķķķX¶lī\·ćoæqžÜ<:sža Ӎ¹JŒbńŠG†›é’ŲLüOB"”?a҉žĶ¤¢Ļ‘vNųS«®Ų8J«æUbé!ŸZ { į/`>kåŸĶē8­·~$ž¬_æ[¶lĮ¾}ūŠŚŚ ³ŁŒ’üկоy3“Ä£óā/Ä3ÆŃģž‹TjxSé]æw,ĒyųĻlȈMÆWŁ$רä̆ԩ£}‘•nŽOĶ1–ō‘šTP.CϾI5+K<Źę ųsgī(d(ęć\ĒŹĖq#qę¦n8ėYÜsN<ö;Ø‰ÓŸęž§>/p± Åbʜ…”ĻGĀ”?mq¹n<{įųųé¢ ›V¾Żlµer"t¤vozŅ}½©ĒņŽNĀ5UUTĮŅŸ ō#Iy–bĻ ųüuœĪZ-±Źźėpł`Ń„—ņ¹ĖŽīž~<°ęZ»]Õ¹³ņ(×LŽfĆO½ ŚHŸŽõś6æī÷nśļš³cĒ–õ‹+ū_©·Fl‰Œ{>tž|BXŖ+›e5üōhźj‘śx"Ž q$+•ń|gĖGłśT,‘­–į¬&-ōßL—] ]C¢Į ß} ŖÅRŠaf ÜA6Ćæę(ßł3¢¢{TQļųüäÄŚ"‘×ĪÅ|ļ½÷Šķö¹ņ›ožbxĆķwßW¢ žhIC0Ļz ¹L{vØpĢŗ źe—£Dœ†F]„̉.Dū ²cĆÉy}‰‘^Ü79 ń¬jhG‡°^oąūŠX,†0õNLWµT·”GÓu"½ ”ļA„±ڐ›lńvh æ^$Š?44ŲęśĪƒummķĒ•ƒŻ]– ×ŃŲ6O[oƲŖN 'txjņ»°[¬0ėU°(%ŠkäȌ "śÅ”ē$ÄdóįƒćˆĶŖ…Ś9Š&#Ļ‹8åC*æ˜fg<»`Gq35·bOĶBģšĄś¢“‡÷ E6čČ^2pčG#Ć-tqō\ü7n¼cŽ‚kd²ĒKß~oĒĖ'ŗ^ņ66ź-„•°[Šbڇ‘DķįÆĀf³¢Ä؁U%ƒ^-|nż%b§OBN¾zšzµŃ² (=.Ü©ÓBĪōJ ä1³Åjo‚ćČÖĆNėc–ź“¢¦ ›Ą`N†'^ŚŽsŚPõ·?!{¼ņ3™ÜżŠÄųēpķYĖ-_]²pįK ©4:p ;å÷‹Q] Õ>™\£l«+ž€C ńWĻu°Ś«`5k©_.‚ÕØFĒ;oąõ§~‹9•³Šµg7¼ÖR(qÜA=š“Ÿē9ŁF='Ļ3>G™®“ qŅŲ\e5Jr?dV;üQŅ­AT³ ®1dļ»z… G-ĻxŻ7Ÿ/g’xŻukśõśæŲjj $ ų|H'8xš \.V^¾__š.jt½ųŪ@ ^w_…„„ÅZTZ‹ńžŸ‹/?‡Å+V!#SS>(pbūV¬Ķ¤PKŗM}؏!q~śPŠ R ė›Q“į¬åš…˜ 'į†ąŬĪ÷aÖ*šĀd ļäö޽ۿx.ö޵kæ|ŌįxzG"©‘Ž-]¼V‹£££h’ątvvbõšõXŃĘRū_`PåŠ>\…gGo€ŗ“%&Ŗ+£äĒŹŹ+QD¾ EcŲ’ĘV”¹=P­:śPéēēNåōģ‰qFŠŌJĆõ=€Ī/įžˆ¤0åõb²Æõ}h^|!䗭ĄCO>O0†å‹ŻńČmW=ZĄŽwÓ-??<:ņćw{{!H%! śČ™LXuķµ¼FLŒ£§»„¤‡©x -»PWīC€³`g¦$‹ §ŽJ*"Ķe¢ÅĪTŚ0źp!KBB÷IģŪ ŪĮō¾Ź Ŗ,‡bĀnüĮOKü„ŻÉüīõarxu‘IT“4#Ø+¦^»GNāŌéŲ+fõŲ³ž…Żu3ß¹hń«œV½ÖG&öRĢ‚¤įiā­iÖ,zF,“ ‘b$@4'…ެ‚BmD$#C*ŗHĀė"ĆI¦‰§ų:$ŹeąwA.+B¼» „;·BDÜē¢(ė›Šüóß@Rbćż>EkŅåĀ8Ķ9 ĻźJ;†=~<öԟ°xł*ˆ¤Eł<0˜ Ī¢xzī³÷¬s3ü--wˆ‡Åō 1õŖQ©§HBśÄJDŠ”P·-€±uŠ f›OrʓČ1$œEŅf%åh&ĒćfsW$‘¤9_@ńsCĄ‘Ƽ(~į!H1hŪę£ī®{!³•ĆJ`‚8ļ¦cŲk¬F4V—A§”#ć—O½ˆźŁ³A3ēšræPn5ßæõīoöųs iŽÕq„ģĶ€B‹ AµN V.݊k,R!Ćę ņs:3ĶŽzt¾Īó=b‹N įeń‘mĮXbŚ×¤“”)/ÅGåc?„½m.ļ}b½® aÅ1E~w:ČļöĢ©-‡œ|˜&± rB&ްšaV*ßŲ“īā53óöņŪ6—”čĶVźt+Y Ņ(”ÕŖi"­ ,Ī@e&-*ĢzŲ)¦…Œ×=4§/Œž ¦čęoU‘:…n§y‹įe³"‹Ēåeb »s–/ć5ŅNaœ®¤Zķ¤z1·ŚŽyu¼¶†h°ńijōœ8|”0ā” lFŻĘŸ|éāßĶÄė#/­,RØ’PbŅW+E|ŸQČæD2‰zāł¢:;Œj%¤ńtasÅ!HyŁKų#TÓŗ†§ųļYuÄ·DŠĒĶņĮIPS.@‚t&K1©²ŃÜ8ŽDŽųN>Ÿ€×5… wcU)’a¦qĒCśļ G1Eš<Ł…ņŻ=ÜSQrѶmŪR3ńūńæŽ^WUž`$ÉÉ¢IīLYcsŪ¢Ŗ“Ł Óü ŸHHļł¹żļG‡Šķš A~×Č„h“p’^3>)dbž_ŒSĢĢN–ßŃ@z¹ 5 ä[“S.ˆ3 “Ͳ¢ĢlD ™7NżÅÖEøżT»õ‡?‚õćæCń?žēÄ·ĻÕż[~įāźŖY/¦²‚Šń–ąQ+@C©+šĖ©Žˆxn$Rižlߍ]“æö8¦ļdÉ×ÅT_ŹØ':A60{XürŌ'ÄH‹~%}ŠņY@ÆĶ••ŪŠb“VZ!¤žŁ›ČĄćˆ+Žē±ŃA\|rÄ»gĻ`ĆwGFž8’ŅõßVĻ_¹zK¹„x­+ĶūYˆ›–4Q(ĖļėžŸÓł½)fćՑ·Ž ĀŽńų™ß«Ø3¼,Y3ų"qāĒūAH¤Ø÷M°YDµL“8tšłG€āŠŁš8†Ø• D½£8…±¢†tWĘēo =‹&TłIćēĢÅ ĀDõ6Ķ1raĘC»Qsą}Ņ=ś©ę³^ķ5'§ļs:® ÆOŠJć³½§ųOæł‰Åf[ĄžsyKZģ&Ž÷żŌƒüāg›PAuxļīŻhæŻcĢW4-¹¾ü$š—\…āŹZxć9S"½cܟ·ģ*čŖZxbŲ“?1łS3p×ŸŲ‹ų¬Łč4W`Ā\ŠłĖ.…źD'„Ļ<ŽŽ‘^ē—ŁĢŲī÷ķyÅė}4œVÓ{göć¾qß3Ļ›Ūŗ!HZø¼ÉNųĶøL†ß—ā(Æ3č;žE³wb™Łb+RŌKÄéū'öģāēa¾Geū|ĻMN¾ø/~#ŁCĖ›?‡ ųׯż»ļÖ·“üZ­V‰I{.©µńų;;:°é'÷Pė#%ŻØĆéž¾ŃŪ* ”žX©3 é²+qpĒó0•UĮÕŪūœÅ8ņžv,ūņ7a²Łyž0 R.f3ÓśZzģ ®<Ņ9å)łš‘ūT8B}Āō”Ļž2Ķū½cģ7§“ɽō’õkĮü ĢÄæź;^]^[»µ±®RLj’µ‹źł÷÷ŅrčP'N?†/_÷MōqZDIcŅä#†ėÜ£„ęIO(F}K‚ļ}“¤„aŅĘKęĘ%¶·.ö{°āĆØ ø¦ Lk€jÜ ÕĢ~vö§Ó‘_ŽŽÜCĆbgž?̆$­T>¦ńßžėE³ł•¶¹M•LļÆžS›^‰>ź©O: s‰u x’”S~{6÷ŁķÓJ£ 'Ē<ü’š«4T·d ϶WHbį57j*Ū.ŁZS]ŗŚh6ńżYõkĖÉvæÕ”AwzŅžPŒ×ōĀA]L: üŌėxh±½}%ŁĻzėt,‚ܤaQ¤Ō ia“kŚ÷–8ŗĻųšéĶįHQśÓĢĒåu:^™ä8¶‡ģ›Įū`Ž–pÖ†pĶ]?d/³|ĻVfA0ĮŃ=©gUĖŃRfāė¬Óā{VćD[ʝ\Āóč4i*«ÆRš!ŲÜ#~§ƒT O·éœP q4µgš°„© œń?Ūæcūģģw5¶7’šŪuģŻ`šśČ™÷w`v¶w;?®łŽ#ß*-+}B„×ĀØ×ĄK¾d9'%@Ŕ—*Ņ 6#2ßĒØŠRŸé„śĆzŖ’HwÓ±šØzĻßr Éh¹I"4øœü^Ég3}†ć˜3)/ސ’Y<ńŲcNē"HGÆŸźM8?yī}VܲłB{uķ>„Z.°•ZųŽ…åŪōŒ’åqó‹žgŚĄb@ø¹H8<5įżhäčžģn—*īääŲ%—hµ7|Å\¼źFÉöŁģ™ż¶³šOė NRž²ß3‰7;GR)ʦóžü ēWēł}łāõK«›õŹ$BEiU9ßwÅØ§Ī°ē¦ūõ6É— ćC}Æł§ļuļ}{`b4XÖxg²YÜXuäƒmĢgó(ßų‚É“n„ŃT¢§ÜHń{>Ł3Mó¹‹śŖŖŪ½ž”·ž1­5ž¼ßżyßxĻķ3Ž0Ō,’^ś…Ææ’NÅ„u- -*ÖĪų>­ŁBŽßńhŌćöxNŽu}ždūövÆsxō|¾h]¶VN€ųXūküBkj°%#W-×jW/×.hQ)eŒł‰L†ļÜä’÷½Žä#ćĪmÉiŽņ~/ŲPąć}źÜēåAćekŹ|£½é«æs÷åwR/b~§žĘēžūhbØ’ÅÉĮīĪÓ¾ĆŹåłz)ž(»p­@(‰HÕ2%ėd²éH\Ų·’-ö\š&±ģ ī†/MKēi4V#ĶJŻÄ;św';č× ŽüĪūž3y{¾ćkæxęRS±łéX4ōŒ;vyļõFŗö÷ć<ū¦’ĄaƑɮž’É|żhŻ==ŻÓÓ󞣣‡“­mE–ÖV¼²e%q"Ē&±#'•U!¼ņpQ UTQš#UJ!N1•Ų‰p€Ä¤ˆcgķX‘dK–%K²V+ķjµŚ÷ī¼ßżā;wzV£õ~Č®Üīžéé¾ß9ē;ß9÷.Ń’›aČd>wGOöр¢Ģ9žūœėҹ§’īܹ„Ÿ5ø’nÄTuü=©ĢQCŖĮ€Jį`‚ŠLŠ$—ˆ¤#ä¹/Ʀ7,Ė:399¹2Ad’¬1w0Ńķļ0ĀÆŚäė‘,Kd†HP£D(DIZ@ń’T‘$ł’[Ļ{ĶuŻē{ˆf¾pīœó³Ä"ڽĒ4O„Vs\rÉ#×óI’$ÄB”°ŖRDÓ`—FQœ#A•dU­UÓéÉ :kg҆mYÆG.]zāńćĒ—’/ńD·ģ6Ķ7€?Ōf|ņŲ\³-{x(²LqÄEF©g|œ„5ĖeJ&“Z_?š,•&`ü)œ{|rņ՝hĒm¦ł&HmŸć_»@ģµĻ—n»lÄJp-¦°‡«i"6AźGŒ“@9$d’~Œüy >8…ė –’'9ž Ž™‘óą˜q*>~¾ö|ģŻötlč Ūqȓ$’^›s2ācØČ!-Hq]§“aą³ŹöTæIĒqOćÆY–÷lÆāĶż4ö€?ż{ĢČ$š›š!O۾ބ·ū3_ń„ė–Eeʏk]’)PHƙćČß:.īHDŖŒBĪpl8Ś9¤‘PŖąā~õüpf„Px}÷µk/ŗŌ5>rāߙ č¢p§A¢ž½‘Č”ķyQĘ®v|¹É’Żßį'“ŲjŃ|³yĆūń5õ!ߓĄēlüžó‡„=®ė ßläbĆśÓtaS­V-]^›i4f;ļ|äR‚EćĆŗFSé`µę<śäßėš6y§iNc¾X¾ ‚Ó? ·ŸŻāüV­&|æFļŪGģŖ\¼ˆ÷Čm'y×ßįvŲ£ ®ļ^ąOŹJõ„BžÖ:ŃÕnæ|śįšćfHžœ”K”+9Å|ÅżÅoż žœ;6nš—ń–”Ž99žīŅ_®ŪĆĆĮél­JąBƒČÕ\.GŸśŌ§hdd„ž{śi*O]¢8ƒŗżŅ„ lGø’å™ē …=ųŗÖ’3-”šW ]žu߆łrŻyšßoœĘķČ>Ӝ„ÆśBą©ęūæƒłśłŗS†ąĻŲŲ:tˆęęę(›ĶR8¦“GŽŠĢÄéąÅOÄļīųjłPsœ)—īėšś<ŁųēDDłp0 ŃzÉ9æœk=plĀZī5Ģ)’iZÄz€ŹuMé¼Ąæ|N”]‡–c1Ś{ētĒŽ½7Ģuō…håų«¤›c¹™“|Ÿu£ZµŌlžĆėÕźÆmĘŽæq(0ŃÕļ!åvĻ“iµčLLœØ~ŅX7ŸÕeww"ž po?9ósä4d³–ųõø3ß Ī%œ{¬EÓ)½’~jŪ…± ½ņ­Ćæ ¤5ÄŻĆnž°nōBo/×ėr¾^ūĀOĀĻć—{O\½v8m¶śmO¢Ł«Ņ‰•Ņ€÷…Žw?iĄä\„Ö±‘×ؓ§|ˆźąūIh¦‰’YČŃNų·”AŅ3²Ą©üåiR+e„PĻlų¾“=>9;õ„ڑ@ļx¦R~äj«õķ͘<ˆF{CĻ<ó­ņwßóga­ł‡Ć©’ŌYF{Ł ŁÉ -GRpx”LŁAÜä®,‘u ķg©@HPQ—-Ļ„—+’ćIŅ‹yŚķcGoJ-š‰c ĮśW·‹ĮŲa#ˆœą€¢¢Āw\ļŲ`c„žG謚½e“šLQśąż”‡zxs’ś{³”˜zƒ¼å ;eĒž8R.æŸ¶Šž±ńńO õ÷SU·9?ļVėõšEŅ% “(ŅĪŲ«4Y@]£H4»taCÄŅü„ ōÖÉćŌÓŅ•+T’UŪ¢ˆIłŃÖIŌ!®Ķüd,Ō3‚.DŽ{"1Ŗ· [ł’ІPµHŽž„8·ŌhųO®¦=RG_[h¶Ps‹Ō€.xk€Ėa¼Ć„ns½-4lč#t'$5hP ×P Č/coŁŽ8H“Å.UĖURĮkm‰¢—Īˆß¹ą{œéy’HGvęL„ZžŹ ž‰xŒ µ:?ł ŽÜØ ”ł€ķ¼óŌ OÆ2žĻd³!£¾ČŚ'£Wµą«UĢŻD]Z—UjĖZ¶ŸB8!žkÆ«–ć÷žąµ‚KÅg¬=„ L÷r¹FĒļ Ÿ9B 8£”~§ßż>R«UĘ ĪsŽ•KX_FB”IDń>•š-‹~tņMJ¦R3»Z­>3Ć~ś…½Ųįϧ{ś²ŌĄæ5T*Z˜ąB}†éZ¤#ąw„ż,ōĪm÷čŌµV”p6‘c¼VdģM`oB9S™KĶj]\?OŃŽ>Ź †ĖšEµĮ¹jµżģéX˜zS1ÄKŗŚDįZoXo±6ūĪÄÓO|“;oG÷Ż›5CĘ?Ŗŗž÷AMEM‚^+’Šńņ% ‡C8£wUā9ֈr½Ik•:0X"AšOGM«ÅyÄkLĢĄ»jĄĻÅ6Ś(PļȰŠČj“łģØÕeŌ‹ŽdŒś€×øE5ŪĆ<ÕĮiŗ1ōĻæxų‰æéĘ?žĮ?­ų[ӍŖĄ&Ö ~žŁša<HE‘ŸA±źō䜧Mšgų™'K…ŖųĪԃā³Xćśv ¾A‡¹>%"õd’T·Ip†¹^ƒļ·7sĘĘÜ ĘŽw³XCmō(±+o½¾7œ;w®Õ’®?ń;©Dģ/ZŽ«YöĘn‚Ą:0©7X8éXæłĢŸ§– “VŖ ækšyœ]Įg6NE.»~cÓĘpkˆM }Ē/™IŸ+8#»6eÄ6Üš·År”ŃDIÆRhń*™sS¤¶_ł÷Rł·6ėžų{W"Źń¤!®ē’_S2Ńķč‰!/Ū|fœ _–dQr®åŹ4»V8Łž0xEQ`+Ē‚}Į>aüā=¬IąUšĘń«2eć”Ń̶‰¹Ā>·PK¶ÆĢ‘¼0.b‰}¶PųźfüĆcwEśGw>œ~¤Šg;~~ēp\lä'ĻŻŁ›b9ē..ęQo¬v|š_"¬a.WŲĖyĢ63ŲĘϼf®DŃ;õėldŖ2vŽę/ĆēŽŅ<ŻT\" ½w vāAOņ¼ū¾_(üp3~h»“ėŽ÷~}ēćĢ[ę,¤Ńžķ)qc-äzļ㐿¦(!ĻĻēŚų©½'Ź<Ź•ėČYŌÖ¾-ū-CzޟŽS*Gž 6€ēuę9pW‘ Į«S“£Q$s±öĖ¢Qņ*§+å[l{n3~ƒ»nļæilü-YQ¢ģæ”t”¶%Ķ6vüo 5/ŸĻ‰ż¦D*MK‹‹¤P‰tZœæ&bFÆ_Ć nuÄiQßyR[:ZŠˆR¢Q¢$44ÆTöōG…‡®Pr~š"ØA9Ų 颲m_x¹Tś ĒÄdŃŪ{ĻĄ»żņQ3ŁĒ>ķ‰S6fü¹Ü:½üŅÅŠĪ¢§Ģö÷ÓZ±_•(3|]={’z†nž”čuĀč1šĢCLŃ7|3鉞vMš “ü ݶ2K6žYĒØlD©d‚+ $zÖ EŃ«Jž>ŁL£žŅŁZķK>žX,‰½‡™Ūļ{ų+}½ŁG›Č·‘ž(e£aĮ›‹&ięŹ4ģ„SgΊ>hųö»haź<uyaŃŠŲ>Z»6#z7õMB ¬äV(³mˆ™^Į;Īs±nĮµ‡cĒä)ź©•±ŽAĶF’ą¤3BćWą#”#¾Ńœ‹§+•§ęZĶļų˜×p¬ūēR’ī{>ō»élĻ_iĮ Āڳ=QZX˜§‰_]įćµ\^ō :ź‚žXEĻČžŸŸwY‹ø>Ķ®E/׮뀨«Š’ł\„ķ;`åĪgę{5‰ q࿟ Ī^ ¾FEÄCh,ŽŌ’ŽÕŁß^lµVNTŹÜļ¼és…9æģsē†>b`ē;£ńģöÆ'“ŃC!¬]Ųg1ų’mą\jąŻłj“V±©6­|Ļ+[kt®U\‡³ æóx½C•5”£¼×Ćė~63w‘†į’~¦"ļU[øÉ¼i!PĒJ„Ć×å=ä]ē}Ń·…åv™ ļzσšæ‰šÄ:äś}AOŌœę~“ķrÅ’ąƒĪś¬©‚Ū¼†ĄŁæf…õvŒ$äVƒ4hŽÖŖSıÄd?‡s¾ÕvšŽüłZõĢåFćļqkŽ÷w” ;'Mm~ŚyąƒŸD#_ †tįOö%G–5Œķ`N)r»³üõI]ōŹ®ųkŒč1¬ęUmvŹKŪ­ACQ¤Lµ$ö}¶üCƒ? Ą—ą¶'oŪµć„Ņ÷×|¼9ŗ®7esó{FĒļ½;šHż8Ø$Žßa>øČĮĀĻYĻ1ĒøķV³µ\._)._{!ķŹ‹ŠŖ®Ś•ā»użWwį·iZ˜}Ąvø[XĀoi€÷+Č_Ž-xó\Įq˜7¼|ŹžÅÄŪ’¾¼}l’@23pnƒ”ĒDŻįžqcŽē Æm Q^³ŁX,ēsßnTKĻÆĪNk”‹Åhf»mDL,}dsqśūl¼_Uå†ń £†‘ ł{½NWL8_«č«rČķÉZmfŖQŠŚZ“÷żž÷}ßį}ƒ¶Ųæ %‚Cļøķ°ćŲXZ§Ē‚š¾ł¾”Łø°Z­µZ­v®ø¶üÕ™ /¢ē¹ŗ•/²#»Ao/°“C×č”żŁ «Ä1q…’«š’t­Ž:» īü —{}Õ¶Ÿ”öö{‡7’—}ßæ-o·cļų#žšeµŠĄ=±tłü“…„k—h‹}ӟblOŻjŸ,ZVߛõś³ųn’ڼ_”ó–qoÉū­Ęč¾{Ⲭ,ēV.­ĻM_AoĘø’+łiF2 i;QēźŽeuzKęøåćŻų3åę’£ ž006²€ P>@OŽ–(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/nibSuitcaseH.tiffHHapps-projectcenter-master/Images/otherSuitcase.tiff000066400000000000000000000115661347226342500231010ustar00rootroot00000000000000II*TxœåYy|”åµ~fÉLfO2ūd_HB !bPYEl½T- ¢^ŖčéÆ^ŚŪ«^l«õŖhÆ—z½V¬mÆ+ąElD–Ø€@’@Č>™Éģū¾ō¼“ „¬ŌV’øļļ÷Ī7ßĢ·<ēœē<ē¼ßüæāz„ņž’l˜¹Śģ1īhw8[N¹œĒ씐łŪ÷׆€Ė­ŗfŚBž!‰ ‘J!ĶČ@$‘š4[mūšMŸ“9-§œĪćd%ľmĢcØ]©R '“g2 >­TƒLŽ’œL¢) “ńDĀ7ą÷ŸnµŪZZl¶ĆūL¦Fææ'žLĘæMü<`Ź]ZŻ‘( “G£ˆ‘ ŃDœf\.‰¹dN&Cž\ŁGs²;L^_+·¤X|²½½yēūļo“Ćß0žņUZ] ‘BäKŒø2‘d3‰8’ˆŃN4™@$Īžć@ĄēAÄĻ@aN6²óņ0õī»į„×d‚Ž`pśōÓƒ'Oī=érķ`œ ‡’”öpņ’ Ā/ŽN.aLī8³¶Éäˆ=qŚ‹§ķŠŃļįh <āšnr%|F#“ō=G«…žb4ƒb%ĻĢD8w×öļ7›ŪŽ£].W›ƒģł{rŽšžvĀ/!xČąpR)OĻŪ²²ļńŌotd’EF"HĻR6ē˜M<>*1qN.CQV*”*ŚS,Ył:ZmöcĒģ¶ĆĘ”ķĆĮĄĄ×±‡šį—2ģBĀOūŸ¼Ÿö}:iüģŸ(m;‚A …#©ć<>ņ…Či&;F8GgŠ5Ťg,‡ō2i*rYQœ2ł|æ)čjsŲ[Zķöć‡M¦ę“Ļ'#Žłāg"+‚'ķŹŌ jīŅéŗÆ\DŲÅ)ü8ė÷äŲ8¤ķįŅIG|>özĻ»>‹ĒtĀZ&W š>žŁ;šCQ²‡łB@6 )F,6Lßņ ä“Mżf³÷öĻT‡‰¾³žå‚×P%øvaƒšĘ†)‚y¼āY}Ø=ś§1·ĶY„Õv'ĮQČ(öR7Ķ}rBš7£qHžķ]» &āĪYģäē»WÆF‚ģ~’ORžĒŅ×H$q^N1›Ų¤ü`œ‡ĖĆ4āZ?Ć’@_oݧ¬_ø]öß÷Ž »G„ą „+ā^ó“ėę£Ńéæ’¬Ńž!ī(³Č'̆Q¾Œś>‰sö°ļŒ;oY­0G#Č#  …8sę vļŽłóēć'7Ż„”·CHœŸGg·claŗQ'‘2.÷ߞ·lÖ˜€’̆'×Č·Ü~äZ©ˆ‹ƒķw<ęüŽÓ“¾)[Ż%ņ •t\6;“jV‚x”HŽā?—Q\öA1ŠEq¼ ? Īܹråy÷śõŗuh}īyȈÓēr’œĻG¹8ŖÅ|ʜ”ĻļX-Æ}āńü`<öŃ”Sr _}Pöޜ:qm<ÉĆėł÷žxƒė¶…BÕöB!¦”–@=­ŃĆv;¦<‹°{P|Gżu‚¶ƒ4«>äUVąźõėqéģŁ©ÜećäéÓXæäh¬rZĘły”ŽkŌŪ³Ō‹m™ś¾@ …BAoĆåó»fĮ”ēV r¦ė#w”q›ĒõC6’jhłQČe™ˆ·¶Ą’ģ“H ō‚“)JéK€ōā1³üāR(ś{°<;'ÕWx©wbŗŖ ŗÅ”<©iģ£z@łī–(ē  šXÉ^ŹÓ=.7ų`oO-iV×xü‹—-[öļėׯæ&S(Š]1kĮįšśE„ŗóKšŠŹĀĖęE¾Nu¶:I²å"Äūŗį’5Å”£ |²łšIÓÅåūń#•2ŋ åC$=™&ĘÜ{ԊÅM5µe3šI Ė3CP47"B6d‘½“öčyŹ8XMūĒ㯫«[{ߌµĻģol|ńųöŪ¦kŌośŖ«³u¹EŠitØVķG_(ŠŻŽe0ōŠ*åŠK…Č– ‡® O pŖ "ņÕ+Ō«õēBb³ą'Y ˆ˜^qø)̬F±ŚŠÅČÖƎčc‚ꓸ¬“^ī¤/½ł.™V‹’?æ†Ä‰&äo>÷z÷¾e·]‰ “§°“tك÷ß’¦(##į>x0au¹ų(-EÕ>”( Ja?žŪzfą’l+ Ļ/^­ ~9z„ ‡·oŖ—ŸÅ“¢b“4ī…]Ÿ q(ˆµŌ£åö§xN¶q(9i^§tl’Ę&‹J‘ū³Ē!ŌēĆé'ŻźDˆjVŽe‰ĒīC¶XŠMĆꍟł¼«&ŹŁiłłK\wŻ»†²2HH§\¢”:‹Å†ļ\½·^ņʲ:ńē3ÕŲb]±n*r5 é5Ųõ‡ēšæ/<…¹óÆÄ :'!Ȅ„p/GQIŗ- °ÉŠżŁA1A$nåTd®^ ޾ofoV·¶~7} µBŒ×ĶA˜;[Žėj;xżxģßĶĖūž-Ć+;£1E€ōnެYŠėtčļļĒī]»ŠŌŌ„ÅK–caóņßEŽ4‰Ż½%ų]’J(ņkQTØGß”]ųķŗ{Q:©>õ<|!r Š0µ·ylĶ@ŲT»ŁŗSB“Ł’$Īp¦Ō@üću@–vĀmņE0l·ĆÜÕ…Ź®&L5¢9 ń«’łlīų}-k›wmŻ0Š}mż%^¦T>ōį±šXl©>ĘT*,ŗį†”F˜††Šqņ$rI#Afźwć²ŅźAćŲՙ‹×ļ@vi=”¢$žų«ą²š %ŪEŅ,Ņü9Śé°ńtĶęw2ČļŅD Ā®üéĻ©čäĮIŲĢļv̽=Øš™QX=ī, õŚ™8zŖķ§:%vģ|ö§3"įPŖ1|Ŗ¼ņ+KK–:(Ö=:)fnŅš(ńVU\L÷˜Mķ›mxčśÓō'H“>£¼ b{³Æ¬@öōp4oĒŽOSMĶ¢œ”śŅ™šŲ‡ĖY= óG“.ę÷AR9S}ZCŹļĆ4Ķ †h3Y%CiQ>zmN<÷ņk˜µ`xÄGĆQŒŪ’km]ČOāJć•jķærŸŠõłŌ«zÉēFĀ?@č¦c#›8T÷ ‹KY[ AiĀį$Źmø²xõģŲ›-ę›i•Ü€#æ_ūĄ„"1L›Ń›™tА‡Š±#ąP‹SN+jėQq’/ 4Ąā ĮDœ·RŽ1ģez%ŖJó%Įķā‰—ß NNäµõÓÆŻūøĒfīåĻ,™bŃse„#½2Õ–]d ‡ÖZ&ü§(ž!ņ{0F|śtä.¼Šśt!4Ā\SžT¢Al~SˆķŽ[q*āEćź7E(R…¹‹–ąŅ†¹hģ!X÷ģ@vĆ,TżāI𳕰ø »'ˆaņ»qüžÆÅ“ņˆ¤«€;ĘE3ń†Õ {ū‘­ożź%ćs7O(,}»¢ņ8i“ų¼?XĻMń )Ć/ĆJÜķ$m7Q.™;Ā,-q+t;I—NbļÖLl9ZŽĻ¬=‹…PiUøćĮǔͯ Šć„ł£ œyÄw«7‚!Ān¦Zm¤k֕ęczEaJ[=“°±¤£A8<^=nŻś»}žĮ¦ēĒ槞>ó͊Źfź-&O¤«#E=™Š‹€x§~ŃEß{Ø.DŖ*ŃŒćw6į¶yN¬ł^½+Ā!ī"ø£>DIæ/_ü}ˆ“U0H8‰ˆ„£°āÄ÷ŒC&Ų-Ćh ÜU%¹Ē3-wl¤’vÆƤ”į¶>ųcó«ķ-—%‰ČD–_šŹ•źĪ ń·…Öwź›] ®Ä õžüövvŗń¹ŻŅÉVÜžOQ—A\{/zJxÜVH 5˜¬“§N·†“Ūó°üxµÅz䩕p…ć°©’ó‡ˆW8©vg7ż¾Š4l|ń—{Ķ…`ݤRżšü‚/Äę‚6PķOžp NĪ*6oF6­]¤õm}pÄø¬¾IŻ]čęÖĄ›Œ¢xņ%ą“ö©ÆvбN;4b>jŠōąR’lÅa Ĉ+¾”ĻżŻø¼m?ų‡÷ ćm§cõ>Æ÷„ AŗT*½ź„Iå;/?gÅ ÕOG”¾÷vv²ēRȖJįÜüʇŗĄ­ŅĆZŲ€`Ż,Äj˜ˆĻ&« ܰ“42ØädXčw;ńÜEŲ“ŽL;ˆkśŽŪwÖ`ˆõÉߘ†t…B{.IŸ‘Q“irU«˜Ē“|UXmė^|-|¤mmmع¤“ŖkŠŗaŖ¶ļ¤¼ƒ«!Nė/ļ”:×MB„z×BŅGö\Į`y%Ÿūa!ܖ!#¤ū>Äg?$“nė!½Ė zŽ'|ėś{«h4p!8G“erÕ1Ņ¢I>T78¬¦z7DėĀĢ’"Ųü.¦SƤ%]ķüxŖhĖ%ŒI¦a¤É|²5”T"VR†Š”Z˜ +Ń-VQ½ ĀF5FÄM@yd/Ź~ }V6NSĶO¦ź4'|¾S/ ›æK·5Ńd\&„ųĖ‚¢wnT«–2͌ŒėĻæ€?Aš²™č¹n1|Ō«$i=X¶ķ}( s”ģāSÆTmaöPīsµ:x KѤ.„I‹śł³!mm÷ÕѣחźK™Ž²5ćŪVKćn·{C’M&ģŁĆyĻćHó§ˆÅ®Önœ­PHŌ£„’‰³k¤ó°Šŗ/PW‡!ڐvĖIKu¬G¢>˜›źõ9øąHŪBŻõź%‚Z÷¤ÖÜtŹžó=38ųFg(ø5ŁFӞŽz.p‡iłĮ­Ė5ŚeKÕźÜ,ĀIõ鉑ĄŃõÄyżĘ;B=łÜ·p!§N!×é$’ņ¾$rŁcü#w»×~ŚvöÉz½_öõ>m‰Å>”]ÖÆ¹ÓÓõ%ųGG>aæ~–\~Ż-ķu2Y&»f˜=’W“žŽˆl6Øąš= vźw ĢĆ©ē²_%‡Ę>Ķ3ŌKwļFń³ķp$ā{b ‘¾ #üa60r²:żŠ—ēŃēÖI$«Vh“WĶĶŹRĖ™ńĝįā"ź-$©õa°ł(tdėĮ/?ós­ļ„ŸĒÖh`ļ¬hj2}Žä÷æ@»½4{hZ/÷DƒÅdé¢ģœ•wétÕĀķ£žČ CAņ7ųžaeēœšūĮŽķ0ü™”{ū½Ėļ-Ƭ¦žĄWēŁ{ʝ ūˆ‹r!‡³ˆøµź>ƒan¹HBnē Hė¬ųEĄš3h¦ī§cšé‹Å’ėŽvÅć¬/vąļŻi[|Ą—JäWBŹÖ9“D¢ėnTŖÆ]¬RäP B¬>¤ŸK}üLŲsvv{6’ڰłų~Æ÷UśĖˆ»Ę`gĻN'ücGqė6źo¾Y„®.ČĢä¦ņżÆŌ¦”>ŅÓ£äʝĪ` šĀŠŠFj-§ń:pNo¼iüį _ńkÅdՒ•÷č ‹Ø–HäS“/ŌŒä®“xßFłĖŽgov GSļ˜Ī;qŽ?Žō¤.šyæĢÜ__ Ü~‹FsӍjö µHłÜBėÕ3Ō«½eµōģõøßĄˆÖ0ģ®ōփs¼§ü¢eāėŽ"¾dŽBqż2µ¦”N&2• oXŸ`%’ļ°ŪƆŒ›¢#¼aøclåćż×՞Æ32((ó§I$+oQkęĶĻĪÖ³žé$qgĶé®ęžpxcĮ9ތśŸag¾’Gäķß:ņ<Ž÷ē(osG#śm.×vś­#¼g6ŒĶ[†ū›āżÅŽźł*’ÉdśķŃŽ’qœÕY†wäõąœ’ ōS ‘ž002²€ +:@Kfn(=R/home/diablos/pm_files/ProjectManager.tiffHHapps-projectcenter-master/Images/otherSuitcaseH.tiff000066400000000000000000000107541347226342500232070ustar00rootroot00000000000000II*¤xœåYkl×užfgvwvföĮå.—KФDŁ–õ ,[V5‰­ĘBpüBŖ&źŚMĮFŪžS høŚ “ˆ4.ś#NģøGH?jG~(’l½(Y”iФ$šo‘ūž}ĢģLæ;»+®h1±āÄžŃK föuļwĪłĪwνžß mw2łŲm]©ĒYžŖ»ĪKŽƒSœį9{vīÓ÷ĖFŌļßł¹ĪäaM ųŠz €€ģƒ,łņ€t®óm:eYÖéŃŃхƒ€żicn:pĖ͚ž¶ 7PvŸO‚A :B!ÄyŁU$©(I¾ó.m©»ī;Žć¼ŅL>yölżÓĶn3Œć4ėøp\ÄI’ ŗßp0H»‚ˆšųįóūĶR"1PCļŚÉ„f[։šłóO?uōčü'‰_nŚj§ˆ?T#f1ÄĶvšYŲҲG ŁēƒĀ+ĘøØ‘ŗvīD%ŸGµP@<Ļbiép<Ÿ?HćO:äÜS££æQ{T`p»aœ!©5Ļēüka÷»»ˆK»]6cåq-‘@ŲuĘ*dŒM=ŒQPQ˜CRÖéē̟×郓ŒŃŁ“¢Ģ’:9Gžōįņ_8å&~ńģ6±·ŪÓ²”5ģz®$5?kpĪĒųh~ęP0€˜Ŗ"”i|ķöæŃzŻęļX–ūb·ģN}{ȟžmFx”ų ś ĢӆÆWįm-žÄ‚K–…‚ĄĻgUņ!¢Čņ.ā(Ž­;üDü>ęsFÄFäQ#‡‚P¹D.Žń[§č‡Ó Łģ‰­|šĘ“hsPŪx`b/uŃs§7@׎pxĢv݈Ąīołr•’ŪßćW0[«aŗZ½j~¾4ó=N|õ+ßłĻĒq=ß\É!ĘFč[4Øz6™f©px~~h²R¹Ųšsß>ȁœvÆėdYŚS2ė?órå'mĖĘwĘ׋č»9½īfv{÷s¦éłž vµóöŪįŅ®āūļs_ĆIīŹN[,[šą4ŅMüqŸ\z=›ŁR.µūåė÷ėO!ßcš*a9_ĻeŠĪ—Ÿ}¹üRóćčNĆē,*×ńw® mńeÅ1ź¼½k–P$ž5Ha®.//ćį‡ʆ šŅóĻ£0v 9•ŚżŅ¦ ĀŽ4¹ņł&_Éf·ńm³’ž{I Y’®¦ś¾Ś“aŗP®ßóżŸV†łqųvĆ„ÆŅ!ņ4Ųō óŹ}ŏ2ƱJÅćĻŠŠī»ļ>LMM!•JA×u?t“B%/ÖÄß|ŻņU/óĮ¬×vؐæ»mé«lp}Śt„å{Š„„|}d~¹ö{GZóݚ1ØEBP^єÖͩɉ‚SĒ|4Š»vį¶;®Zėš«ÆbįčŪ’«c¹š“ās”=ŌŖ¹jõßN”J¶{k|ķ>e ¬ś¬…ä[\ׇÅ\żąĮc„‡“%ćEÕēlķˆu@ļīA}z õj¶Š’f=n­·Ą{ž÷.«†H¢÷īEļĄ@Ć.ŽEņč­gŸƒN~QHÆŌgU Ūł#t£›z;^.’ŻHŁ|r-übüńżCŸ‹ł?x.aŌzlWĀÅKұ…cRƉ„CwķE˜ź—.¢väMø•2\YiŚ”É÷ćŌL)‘]Ę&ś·Lµ~ØÉ$,r*3>±ĄŹŽo®ų¾•=Mr¶ź‰ųŽŠŒöާ‹…}—jµ_yĻž=J$Ņ:pąŁĀ®Ļ|žļõ`õÆ×wę„txžķeG˜ļA`żF¾:殥Y˜ƒu„ķg> &ØW—-×ĮÅ"|±8Ō\ŪØ}B棛¢F>‰éG‰ż«ÓĘą+Ųi%ĄœyV-Ń~OjŌÕ'•žÉÜBq»žū:;;’*ŸĻ’Afq®»PvŽIv§£ -‹ 3ČŚ*Ž?ƒėæ ĄšĖĢ=.1Ö3K‹šŃįŗ·č[+։`!‡;“P£—hjaKŪ“ÆõĢ^ZW ć½ø˜)`›bC½ˆ:¹£ś„"ø“’›Ķń”“’wÜńDŗ§ē[ģI¾?šīĀÜĶd²ĆˆÄ`čRŚmp0Y݆pŲ€”‰^SA(ĄyĖ&*ä’uy‘<N°WĖńwņ{7‹ŠŸ¾kåzĖ› ö<žĪz¾·lųćHģŁ‹ ÕėŲ™Qōt§Š1v īü BäN”nwē¦qC޵ˆ½·ÉśĻ„p%×½ū§ŁģĻւōh"±Ž§ųß%-ōjƒč3›6”Ę~ć29”źI£“õhįČ$ĻO0WüØa÷_µ®4ę8źFQ#ä+T ¾Dž—ω»Ä\\Ć`%æš õĪē5JnqøXŲ2cŪSkĮى„ŗ>LX7^óPeՐDL-/ģŗJG S#ē¦Æ źźŅÄ$’Üē ^xgU®8ƒć^SōŃ¢v$»QŒ%ńkČ»Ø~ÉEhęāģA¬AĖ“E(†LųŪ~ļ|ž÷¹ģ,/ kœū|5Õż£ģŪ'žė«śóᧆX}ėžg=vŁ«ÄGG”svłź«ŽĻ½¼w<»½…żE5njEA‹ gC? 3N¾ƒ„lĪėU„ę9Łd„üś»¦łķ&~Ap³ä=\uĒ=y_ÆŖ~s«¦©74„Ęˆ=‡³ŚļpA†•īFwīw¤–‹ģ‘jUā½ž/0¾i‹ ŗģꉤ§ń ģ»Å¾@jöØĆp±ųƒ©Zõ…&ę˼–š÷ü+ģčńū’äf]’Ź ”PÆŚÜŸ_‰ ēwŁcVęĄĢ¬·’®m„+z«rÅė3?ņhŚ"7Į,RĒ|Xł½0ćķ|ž/Ūö|)śµ\óŹžü­Ńש(lPÕūÕŠg»l(9źÜĆ:šŽõĘĻ>Wżūm“ŠŠ}oė<į:†ˆE†ŗŸ!ļZų…Źu§ųV.ū7,ZĒŠą°AHŠ:f}ÄéeÜuƒŖ>ŗIÓ÷¦ƒ¤ØDUr§ÄžŌ„fŠóPkvmó5÷‰×3×Å9o¾ æČݳ„Ņ‘ÉjõŸłņÆI^‹×ūZ£/.Ėūn ilÖ“”0Tc_Tįŗ2yų|/Њß,°×1…żĶ¼­ÕŽ ¢¦žAƒ+‚óā’‚;×ģ#®cD4Iŗgc(ō萮ßgc#yłī¬Z_~qŽ"ĪŖ-꘹MĶqÜ#łüsEĒ}ń2VxŸkŚR®{©k V(ܹŽ9rƒŗw@UūCŒAK·>R-Ać¬wšŚ%ģ\1K§Ē+•åGÓhų;Ū†]œ˜æ&üķc]‡,?“E׿<ØŖCEń”ČžeµĀß.ęč”7Ū6ęóOSÜßiā]ƊŽšų«kĻų±GČģéWÕGXKīY źkÖ4r·BŽ/0ŹyóR¶^¼:ŸĮ  Ķ«ŒOę’˵;YKžōfMū£4-õ”Z‚Ę^¾Äżź2ūQӜ«”€†ÖģŁę=Ž‹ķĒõŹÄĒė©[†B¬'”;RP˜'ņ]ųæD’O˜åź‘Bžy»Į{¹Ķ†wļ?®ö|œĮ®æĆZņČ&MŪ“Ó¢gZ$w^^^>±hŪŠ8~oń¦å]ųž7‘·æźč‹+Ź·hŚC9ĖJŸ)—_ä{£hš^ŲŠž·÷'Åūėq%Üä:N¹nY­ŽRp\ŌY÷Źæ)W’š’ U‚ž00‚²€ RŠ@›Üä(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/otherSuitcaseH.tiffHHapps-projectcenter-master/Images/projectSuitcase.tiff000066400000000000000000000115661347226342500234260ustar00rootroot00000000000000II*TxœåYy|”åµ~fÉLfO2ūd_HB !bPYEl½T- ¢^ŖčéÆ^ŚŪ«^l«õŖhÆ—z½V¬mÆ+ąElD–Ø€@’@Č>™Éģū¾ō¼“ „¬ŌV’øļļ÷Ī7ßĢ·<ēœē<ē¼ßüæāz„ņž’l˜¹Śģ1īhw8[N¹œĒ씐łŪ÷׆€Ė­ŗfŚBž!‰ ‘J!ĶČ@$‘š4[mūšMŸ“9-§œĪćd%ľmĢcØ]©R '“g2 >­TƒLŽ’œL¢) “ńDĀ7ą÷ŸnµŪZZl¶ĆūL¦Fææ'žLĘæMü<`Ź]ZŻ‘( “G£ˆ‘ ŃDœf\.‰¹dN&Cž\ŁGs²;L^_+·¤X|²½½yēūļo“Ćß0žņUZ] ‘BäKŒø2‘d3‰8’ˆŃN4™@$Īžć@ĄēAÄĻ@aN6²óņ0õī»į„×d‚Ž`pśōÓƒ'Oī=érķ`œ ‡’”öpņ’ Ā/ŽN.aLī8³¶Éäˆ=qŚ‹§ķŠŃļįh <āšnr%|F#“ō=G«…žb4ƒb%ĻĢD8w×öļ7›ŪŽ£].W›ƒģł{rŽšžvĀ/!xČąpR)OĻŪ²²ļńŌotd’EF"HĻR6ē˜M<>*1qN.CQV*”*ŚS,Ył:ZmöcĒģ¶ĆĘ”ķĆĮĄĄ×±‡šį—2ģBĀOūŸ¼Ÿö}:iüģŸ(m;‚A …#©ć<>ņ…Či&;F8GgŠ5Ťg,‡ō2i*rYQœ2ł|æ)čjsŲ[Zķöć‡M¦ę“Ļ'#Žłāg"+‚'ķŹŌ jīŅéŗÆ\DŲÅ)ü8ė÷äŲ8¤ķįŅIG|>özĻ»>‹ĒtĀZ&W š>žŁ;šCQ²‡łB@6 )F,6Lßņ ä“Mżf³÷öĻT‡‰¾³žå‚×P%øvaƒšĘ†)‚y¼āY}Ø=ś§1·ĶY„Õv'ĮQČ(öR7Ķ}rBš7£qHžķ]» &āĪYģäē»WÆF‚ģ~’ORžĒŅ×H$q^N1›Ų¤ü`œ‡ĖĆ4āZ?Ć’@_oݧ¬_ø]öß÷Ž »G„ą „+ā^ó“ėę£Ńéæ’¬Ńž!ī(³Č'̆Q¾Œś>‰sö°ļŒ;oY­0G#Č#  …8sę vļŽłóēć'7Ż„”·CHœŸGg·claŗQ'‘2.÷ߞ·lÖ˜€’̆'×Č·Ü~äZ©ˆ‹ƒķw<ęüŽÓ“¾)[Ż%ņ •t\6;“jV‚x”HŽā?—Q\öA1ŠEq¼ ? Īܹråy÷śõŗuh}īyȈÓēr’œĻG¹8ŖÅ|ʜ”ĻļX-Æ}āńü`<öŃ”Sr _}Pöޜ:qm<ÉĆėł÷žxƒė¶…BÕöB!¦”–@=­ŃĆv;¦<‹°{P|Gżu‚¶ƒ4«>äUVąźõėqéģŁ©ÜećäéÓXæäh¬rZĘły”ŽkŌŪ³Ō‹m™ś¾@ …BAoĆåó»fĮ”ēV r¦ė#w”q›ĒõC6’jhłQČe™ˆ·¶Ą’ģ“H ō‚“)JéK€ōā1³üāR(ś{°<;'ÕWx©wbŗŖ ŗÅ”<©iģ£z@łī–(ē  šXÉ^ŹÓ=.7ų`oO-iV×xü‹—-[öļėׯæ&S(Š]1kĮįšśE„ŗóKšŠŹĀĖęE¾Nu¶:I²å"Äūŗį’5Å”£ |²łšIÓÅåūń#•2ŋ åC$=™&ĘÜ{ԊÅM5µe3šI Ė3CP47"B6d‘½“öčyŹ8XMūĒ㯫«[{ߌµĻģol|ńųöŪ¦kŌośŖ«³u¹EŠitØVķG_(ŠŻŽe0ōŠ*åŠK…Č– ‡® O pŖ "ņÕ+Ō«õēBb³ą'Y ˆ˜^qø)̬F±ŚŠÅČÖƎčc‚ꓸ¬“^ī¤/½ł.™V‹’?æ†Ä‰&äo>÷z÷¾e·]‰ “§°“tك÷ß’¦(##į>x0au¹ų(-EÕ>”( Ja?žŪzfą’l+ Ļ/^­ ~9z„ ‡·oŖ—ŸÅ“¢b“4ī…]Ÿ q(ˆµŌ£åö§xN¶q(9i^§tl’Ę&‹J‘ū³Ē!ŌēĆé'ŻźDˆjVŽe‰ĒīC¶XŠMĆꍟł¼«&ŹŁiłłK\wŻ»†²2HH§\¢”:‹Å†ļ\½·^ņʲ:ńē3ÕŲb]±n*r5 é5Ųõ‡ēšæ/<…¹óÆÄ :'!Ȅ„p/GQIŗ- °ÉŠżŁA1A$nåTd®^ ޾ofoV·¶~7} µBŒ×ĶA˜;[Žėj;xżxģßĶĖūž-Ć+;£1E€ōnެYŠėtčļļĒī]»ŠŌŌ„ÅK–caóņßEŽ4‰Ż½%ų]’J(ņkQTØGß”]ųķŗ{Q:©>õ<|!r Š0µ·ylĶ@ŲT»ŁŗSB“Ł’$Īp¦Ō@üću@–vĀmņE0l·ĆÜÕ…Ź®&L5¢9 ń«’łlīų}-k›wmŻ0Š}mż%^¦T>ōį±šXl©>ĘT*,ŗį†”F˜††Šqņ$rI#Afźwć²ŅźAćŲՙ‹×ļ@vi=”¢$žų«ą²š %ŪEŅ,Ņü9Śé°ńtĶęw2ČļŅD Ā®üéĻ©čäĮIŲĢļv̽=Øš™QX=ī, õŚ™8zŖķ§:%vģ|ö§3"įPŖ1|Ŗ¼ņ+KK–:(Ö=:)fnŅš(ńVU\L÷˜Mķ›mxčśÓō'H“>£¼ b{³Æ¬@öōp4oĒŽOSMĶ¢œ”śŅ™šŲ‡ĖY= óG“.ę÷AR9S}ZCŹļĆ4Ķ †h3Y%CiQ>zmN<÷ņk˜µ`xÄGĆQŒŪ’km]ČOāJć•jķærŸŠõłŌ«zÉēFĀ?@č¦c#›8T÷ ‹KY[ AiĀį$Źmø²xõģŲ›-ę›i•Ü€#æ_ūĄ„"1L›Ń›™tА‡Š±#ąP‹SN+jėQq’/ 4Ąā ĮDœ·RŽ1ģez%ŖJó%Įķā‰—ß NNäµõÓÆŻūøĒfīåĻ,™bŃse„#½2Õ–]d ‡ÖZ&ü§(ž!ņ{0F|śtä.¼Šśt!4Ā\SžT¢Al~SˆķŽ[q*āEćź7E(R…¹‹–ąŅ†¹hģ!X÷ģ@vĆ,TżāI𳕰ø »'ˆaņ»qüžÆÅ“ņˆ¤«€;ĘE3ń†Õ {ū‘­ożź%ćs7O(,}»¢ņ8i“ų¼?XĻMń )Ć/ĆJÜķ$m7Q.™;Ā,-q+t;I—NbļÖLl9ZŽĻ¬=‹…PiUøćĮǔͯ Šć„ł£ œyÄw«7‚!Ān¦Zm¤k֕ęczEaJ[=“°±¤£A8<^=nŻś»}žĮ¦ēĒ槞>ó͊Źfź-&O¤«#E=™Š‹€x§~ŃEß{Ø.DŖ*ŃŒćw6į¶yN¬ł^½+Ā!ī"ø£>DIæ/_ü}ˆ“U0H8‰ˆ„£°āÄ÷ŒC&Ų-Ćh ÜU%¹Ē3-wl¤’vÆƤ”į¶>ųcó«ķ-—%‰ČD–_šŹ•źĪ ń·…Öwź›] ®Ä õžüövvŗń¹ŻŅÉVÜžOQ—A\{/zJxÜVH 5˜¬“§N·†“Ūó°üxµÅz䩕p…ć°©’ó‡ˆW8©vg7ż¾Š4l|ń—{Ķ…`ݤRżšü‚/Äę‚6PķOžp NĪ*6oF6­]¤õm}pÄø¬¾IŻ]čęÖĄ›Œ¢xņ%ą“ö©ÆvбN;4b>jŠōąR’lÅa Ĉ+¾”ĻżŻø¼m?ų‡÷ ćm§cõ>Æ÷„ AŗT*½ź„Iå;/?gÅ ÕOG”¾÷vv²ēRȖJįÜüʇŗĄ­ŅĆZŲ€`Ż,Äj˜ˆĻ&« ܰ“42ØädXčw;ńÜEŲ“ŽL;ˆkśŽŪwÖ`ˆõÉߘ†t…B{.IŸ‘Q“irU«˜Ē“|UXmė^|-|¤mmmع¤“ŖkŠŗaŖ¶ļ¤¼ƒ«!Nė/ļ”:×MB„z×BŅGö\Į`y%Ÿūa!ܖ!#¤ū>Äg?$“nė!½Ė zŽ'|ėś{«h4p!8G“erÕ1Ņ¢I>T78¬¦z7DėĀĢ’"Ųü.¦SƤ%]ķüxŖhĖ%ŒI¦a¤É|²5”T"VR†Š”Z˜ +Ń-VQ½ ĀF5FÄM@yd/Ź~ }V6NSĶO¦ź4'|¾S/ ›æK·5Ńd\&„ųĖ‚¢wnT«–2͌ŒėĻæ€?Aš²™č¹n1|Ō«$i=X¶ķ}( s”ģāSÆTmaöPīsµ:x KѤ.„I‹śł³!mm÷ÕѣחźK™Ž²5ćŪVKćn·{C’M&ģŁĆyĻćHó§ˆÅ®Önœ­PHŌ£„’‰³k¤ó°Šŗ/PW‡!ڐvĖIKu¬G¢>˜›źõ9øąHŪBŻõź%‚Z÷¤ÖÜtŹžó=38ųFg(ø5ŁFӞŽz.p‡iłĮ­Ė5ŚeKÕźÜ,ĀIõ鉑ĄŃõÄyżĘ;B=łÜ·p!§N!×é$’ņ¾$rŁcü#w»×~ŚvöÉz½_öõ>m‰Å>”]ÖÆ¹ÓÓõ%ųGG>aæ~–\~Ż-ķu2Y&»f˜=’W“žŽˆl6Øąš= vźw ĢĆ©ē²_%‡Ę>Ķ3ŌKwļFń³ķp$ā{b ‘¾ #üa60r²:żŠ—ēŃēÖI$«Vh“WĶĶŹRĖ™ńĝįā"ź-$©õa°ł(tdėĮ/?ós­ļ„ŸĒÖh`ļ¬hj2}Žä÷æ@»½4{hZ/÷DƒÅdé¢ģœ•wétÕĀķ£žČ CAņ7ųžaeēœšūĮŽķ0ü™”{ū½Ėļ-Ƭ¦žĄWēŁ{ʝ ūˆ‹r!‡³ˆøµź>ƒan¹HBnē Hė¬ųEĄš3h¦ī§cšé‹Å’ėŽvÅć¬/vąļŻi[|Ą—JäWBŹÖ9“D¢ėnTŖÆ]¬RäP B¬>¤ŸK}üLŲsvv{6’ڰłų~Æ÷UśĖˆ»Ę`gĻN'ücGqė6źo¾Y„®.ČĢä¦ņżÆŌ¦”>ŅÓ£äʝĪ` šĀŠŠFj-§ń:pNo¼iüį _ńkÅdՒ•÷č ‹Ø–HäS“/ŌŒä®“xßFłĖŽgov GSļ˜Ī;qŽ?Žō¤.šyæĢÜ__ Ü~‹FsӍjö µHłÜBėÕ3Ō«½eµōģõøßĄˆÖ0ģ®ōփs¼§ü¢eāėŽ"¾dŽBqż2µ¦”N&2• oXŸ`%’ļ°ŪƆŒ›¢#¼aøclåćż×՞Æ32((ó§I$+oQkęĶĻĪÖ³žé$qgĶé®ęžpxcĮ9ތśŸag¾’Gäķß:ņ<Ž÷ē(osG#śm.×vś­#¼g6ŒĶ[†ū›āżÅŽźł*’ÉdśķŃŽ’qœÕY†wäõąœ’ ōS ‘ž002²€ +:@Kfn(=R/home/diablos/pm_files/ProjectManager.tiffHHapps-projectcenter-master/Images/projectSuitcaseH.tiff000066400000000000000000000115661347226342500235360ustar00rootroot00000000000000II*TxœåYy|”åµ~fÉLfO2ūd_HB !bPYEl½T- ¢^ŖčéÆ^ŚŪ«^l«õŖhÆ—z½V¬mÆ+ąElD–Ø€@’@Č>™Éģū¾ō¼“ „¬ŌV’øļļ÷Ī7ßĢ·<ēœē<ē¼ßüæāz„ņž’l˜¹Śģ1īhw8[N¹œĒ씐łŪ÷׆€Ė­ŗfŚBž!‰ ‘J!ĶČ@$‘š4[mūšMŸ“9-§œĪćd%ľmĢcØ]©R '“g2 >­TƒLŽ’œL¢) “ńDĀ7ą÷ŸnµŪZZl¶ĆūL¦Fææ'žLĘæMü<`Ź]ZŻ‘( “G£ˆ‘ ŃDœf\.‰¹dN&Cž\ŁGs²;L^_+·¤X|²½½yēūļo“Ćß0žņUZ] ‘BäKŒø2‘d3‰8’ˆŃN4™@$Īžć@ĄēAÄĻ@aN6²óņ0õī»į„×d‚Ž`pśōÓƒ'Oī=érķ`œ ‡’”öpņ’ Ā/ŽN.aLī8³¶Éäˆ=qŚ‹§ķŠŃļįh <āšnr%|F#“ō=G«…žb4ƒb%ĻĢD8w×öļ7›ŪŽ£].W›ƒģł{rŽšžvĀ/!xČąpR)OĻŪ²²ļńŌotd’EF"HĻR6ē˜M<>*1qN.CQV*”*ŚS,Ył:ZmöcĒģ¶ĆĘ”ķĆĮĄĄ×±‡šį—2ģBĀOūŸ¼Ÿö}:iüģŸ(m;‚A …#©ć<>ņ…Či&;F8GgŠ5Ťg,‡ō2i*rYQœ2ł|æ)čjsŲ[Zķöć‡M¦ę“Ļ'#Žłāg"+‚'ķŹŌ jīŅéŗÆ\DŲÅ)ü8ė÷äŲ8¤ķįŅIG|>özĻ»>‹ĒtĀZ&W š>žŁ;šCQ²‡łB@6 )F,6Lßņ ä“Mżf³÷öĻT‡‰¾³žå‚×P%øvaƒšĘ†)‚y¼āY}Ø=ś§1·ĶY„Õv'ĮQČ(öR7Ķ}rBš7£qHžķ]» &āĪYģäē»WÆF‚ģ~’ORžĒŅ×H$q^N1›Ų¤ü`œ‡ĖĆ4āZ?Ć’@_oݧ¬_ø]öß÷Ž »G„ą „+ā^ó“ėę£Ńéæ’¬Ńž!ī(³Č'̆Q¾Œś>‰sö°ļŒ;oY­0G#Č#  …8sę vļŽłóēć'7Ż„”·CHœŸGg·claŗQ'‘2.÷ߞ·lÖ˜€’̆'×Č·Ü~äZ©ˆ‹ƒķw<ęüŽÓ“¾)[Ż%ņ •t\6;“jV‚x”HŽā?—Q\öA1ŠEq¼ ? Īܹråy÷śõŗuh}īyȈÓēr’œĻG¹8ŖÅ|ʜ”ĻļX-Æ}āńü`<öŃ”Sr _}Pöޜ:qm<ÉĆėł÷žxƒė¶…BÕöB!¦”–@=­ŃĆv;¦<‹°{P|Gżu‚¶ƒ4«>äUVąźõėqéģŁ©ÜećäéÓXæäh¬rZĘły”ŽkŌŪ³Ō‹m™ś¾@ …BAoĆåó»fĮ”ēV r¦ė#w”q›ĒõC6’jhłQČe™ˆ·¶Ą’ģ“H ō‚“)JéK€ōā1³üāR(ś{°<;'ÕWx©wbŗŖ ŗÅ”<©iģ£z@łī–(ē  šXÉ^ŹÓ=.7ų`oO-iV×xü‹—-[öļėׯæ&S(Š]1kĮįšśE„ŗóKšŠŹĀĖęE¾Nu¶:I²å"Äūŗį’5Å”£ |²łšIÓÅåūń#•2ŋ åC$=™&ĘÜ{ԊÅM5µe3šI Ė3CP47"B6d‘½“öčyŹ8XMūĒ㯫«[{ߌµĻģol|ńųöŪ¦kŌośŖ«³u¹EŠitØVķG_(ŠŻŽe0ōŠ*åŠK…Č– ‡® O pŖ "ņÕ+Ō«õēBb³ą'Y ˆ˜^qø)̬F±ŚŠÅČÖƎčc‚ꓸ¬“^ī¤/½ł.™V‹’?æ†Ä‰&äo>÷z÷¾e·]‰ “§°“tك÷ß’¦(##į>x0au¹ų(-EÕ>”( Ja?žŪzfą’l+ Ļ/^­ ~9z„ ‡·oŖ—ŸÅ“¢b“4ī…]Ÿ q(ˆµŌ£åö§xN¶q(9i^§tl’Ę&‹J‘ū³Ē!ŌēĆé'ŻźDˆjVŽe‰ĒīC¶XŠMĆꍟł¼«&ŹŁiłłK\wŻ»†²2HH§\¢”:‹Å†ļ\½·^ņʲ:ńē3ÕŲb]±n*r5 é5Ųõ‡ēšæ/<…¹óÆÄ :'!Ȅ„p/GQIŗ- °ÉŠżŁA1A$nåTd®^ ޾ofoV·¶~7} µBŒ×ĶA˜;[Žėj;xżxģßĶĖūž-Ć+;£1E€ōnެYŠėtčļļĒī]»ŠŌŌ„ÅK–caóņßEŽ4‰Ż½%ų]’J(ņkQTØGß”]ųķŗ{Q:©>õ<|!r Š0µ·ylĶ@ŲT»ŁŗSB“Ł’$Īp¦Ō@üću@–vĀmņE0l·ĆÜÕ…Ź®&L5¢9 ń«’łlīų}-k›wmŻ0Š}mż%^¦T>ōį±šXl©>ĘT*,ŗį†”F˜††Šqņ$rI#Afźwć²ŅźAćŲՙ‹×ļ@vi=”¢$žų«ą²š %ŪEŅ,Ņü9Śé°ńtĶęw2ČļŅD Ā®üéĻ©čäĮIŲĢļv̽=Øš™QX=ī, õŚ™8zŖķ§:%vģ|ö§3"įPŖ1|Ŗ¼ņ+KK–:(Ö=:)fnŅš(ńVU\L÷˜Mķ›mxčśÓō'H“>£¼ b{³Æ¬@öōp4oĒŽOSMĶ¢œ”śŅ™šŲ‡ĖY= óG“.ę÷AR9S}ZCŹļĆ4Ķ †h3Y%CiQ>zmN<÷ņk˜µ`xÄGĆQŒŪ’km]ČOāJć•jķærŸŠõłŌ«zÉēFĀ?@č¦c#›8T÷ ‹KY[ AiĀį$Źmø²xõģŲ›-ę›i•Ü€#æ_ūĄ„"1L›Ń›™tА‡Š±#ąP‹SN+jėQq’/ 4Ąā ĮDœ·RŽ1ģez%ŖJó%Įķā‰—ß NNäµõÓÆŻūøĒfīåĻ,™bŃse„#½2Õ–]d ‡ÖZ&ü§(ž!ņ{0F|śtä.¼Šśt!4Ā\SžT¢Al~SˆķŽ[q*āEćź7E(R…¹‹–ąŅ†¹hģ!X÷ģ@vĆ,TżāI𳕰ø »'ˆaņ»qüžÆÅ“ņˆ¤«€;ĘE3ń†Õ {ū‘­ożź%ćs7O(,}»¢ņ8i“ų¼?XĻMń )Ć/ĆJÜķ$m7Q.™;Ā,-q+t;I—NbļÖLl9ZŽĻ¬=‹…PiUøćĮǔͯ Šć„ł£ œyÄw«7‚!Ān¦Zm¤k֕ęczEaJ[=“°±¤£A8<^=nŻś»}žĮ¦ēĒ槞>ó͊Źfź-&O¤«#E=™Š‹€x§~ŃEß{Ø.DŖ*ŃŒćw6į¶yN¬ł^½+Ā!ī"ø£>DIæ/_ü}ˆ“U0H8‰ˆ„£°āÄ÷ŒC&Ų-Ćh ÜU%¹Ē3-wl¤’vÆƤ”į¶>ųcó«ķ-—%‰ČD–_šŹ•źĪ ń·…Öwź›] ®Ä õžüövvŗń¹ŻŅÉVÜžOQ—A\{/zJxÜVH 5˜¬“§N·†“Ūó°üxµÅz䩕p…ć°©’ó‡ˆW8©vg7ż¾Š4l|ń—{Ķ…`ݤRżšü‚/Äę‚6PķOžp NĪ*6oF6­]¤õm}pÄø¬¾IŻ]čęÖĄ›Œ¢xņ%ą“ö©ÆvбN;4b>jŠōąR’lÅa Ĉ+¾”ĻżŻø¼m?ų‡÷ ćm§cõ>Æ÷„ AŗT*½ź„Iå;/?gÅ ÕOG”¾÷vv²ēRȖJįÜüʇŗĄ­ŅĆZŲ€`Ż,Äj˜ˆĻ&« ܰ“42ØädXčw;ńÜEŲ“ŽL;ˆkśŽŪwÖ`ˆõÉߘ†t…B{.IŸ‘Q“irU«˜Ē“|UXmė^|-|¤mmmع¤“ŖkŠŗaŖ¶ļ¤¼ƒ«!Nė/ļ”:×MB„z×BŅGö\Į`y%Ÿūa!ܖ!#¤ū>Äg?$“nė!½Ė zŽ'|ėś{«h4p!8G“erÕ1Ņ¢I>T78¬¦z7DėĀĢ’"Ųü.¦SƤ%]ķüxŖhĖ%ŒI¦a¤É|²5”T"VR†Š”Z˜ +Ń-VQ½ ĀF5FÄM@yd/Ź~ }V6NSĶO¦ź4'|¾S/ ›æK·5Ńd\&„ųĖ‚¢wnT«–2͌ŒėĻæ€?Aš²™č¹n1|Ō«$i=X¶ķ}( s”ģāSÆTmaöPīsµ:x KѤ.„I‹śł³!mm÷ÕѣחźK™Ž²5ćŪVKćn·{C’M&ģŁĆyĻćHó§ˆÅ®Önœ­PHŌ£„’‰³k¤ó°Šŗ/PW‡!ڐvĖIKu¬G¢>˜›źõ9øąHŪBŻõź%‚Z÷¤ÖÜtŹžó=38ųFg(ø5ŁFӞŽz.p‡iłĮ­Ė5ŚeKÕźÜ,ĀIõ鉑ĄŃõÄyżĘ;B=łÜ·p!§N!×é$’ņ¾$rŁcü#w»×~ŚvöÉz½_öõ>m‰Å>”]ÖÆ¹ÓÓõ%ųGG>aæ~–\~Ż-ķu2Y&»f˜=’W“žŽˆl6Øąš= vźw ĢĆ©ē²_%‡Ę>Ķ3ŌKwļFń³ķp$ā{b ‘¾ #üa60r²:żŠ—ēŃēÖI$«Vh“WĶĶŹRĖ™ńĝįā"ź-$©õa°ł(tdėĮ/?ós­ļ„ŸĒÖh`ļ¬hj2}Žä÷æ@»½4{hZ/÷DƒÅdé¢ģœ•wétÕĀķ£žČ CAņ7ųžaeēœšūĮŽķ0ü™”{ū½Ėļ-Ƭ¦žĄWēŁ{ʝ ūˆ‹r!‡³ˆøµź>ƒan¹HBnē Hė¬ųEĄš3h¦ī§cšé‹Å’ėŽvÅć¬/vąļŻi[|Ą—JäWBŹÖ9“D¢ėnTŖÆ]¬RäP B¬>¤ŸK}üLŲsvv{6’ڰłų~Æ÷UśĖˆ»Ę`gĻN'ücGqė6źo¾Y„®.ČĢä¦ņżÆŌ¦”>ŅÓ£äʝĪ` šĀŠŠFj-§ń:pNo¼iüį _ńkÅdՒ•÷č ‹Ø–HäS“/ŌŒä®“xßFłĖŽgov GSļ˜Ī;qŽ?Žō¤.šyæĢÜ__ Ü~‹FsӍjö µHłÜBėÕ3Ō«½eµōģõøßĄˆÖ0ģ®ōփs¼§ü¢eāėŽ"¾dŽBqż2µ¦”N&2• oXŸ`%’ļ°ŪƆŒ›¢#¼aøclåćż×՞Æ32((ó§I$+oQkęĶĻĪÖ³žé$qgĶé®ęžpxcĮ9ތśŸag¾’Gäķß:ņ<Ž÷ē(osG#śm.×vś­#¼g6ŒĶ[†ū›āżÅŽźł*’ÉdśķŃŽ’qœÕY†wäõąœ’ ōS ‘ž002²€ +:@Kfn(=R/home/diablos/pm_files/ProjectManager.tiffHHapps-projectcenter-master/Images/soundSuitcase.tiff000066400000000000000000000123141347226342500231000ustar00rootroot00000000000000II*„xœåYit[Õµžt%KÖ` –lIž§xJl'Ī`$¤Phh € y––įŚ—6iŃŠB JaR ”@J i”$Š’Č@IBg°3ŚŽgĖ–%ˬYŗŗoY"NjC»Ž{šćµŽÆtu‡oļżķoļs ü抒¬¬¼÷ĪiU+äRi_8ĘļˆD…ć~!Ś\·q£õ›÷U#O”˜łpiŃ&-E%—#S„‚*%R±Ų#·OࣟFžøĻļoٶm›m ż¦1@ĶRCĘ”€ H‚‰X £J‰¬45ŠŅÓ1…fšL&¤rœW,ŸćłčńH,v8īœ t‰6näæIü:`ź2£éH9"DɆHŒ§ĒqPJ„ČT*‘Mö˜ŅҐ£V#‹ģĖ~{yY«R›~2XY®śżG³wģXWżŅKC_'~PŚ`4'ürolĢ•1M<DéKDˆ!̳ßDJĐKRŸ®ƒ.'Óī¹Īž~Œ¢¤øŲ%“µ(±Xöˆ8īXŌēk©~’ż’S{4@ŃmFӉ åq˜pr„1FøyfaĢž¾ń »¢t>‰‚ųSE9¼ Œō9Żh„™b4›b„NM…”ć\·?‹īĘbĒ~’©Z™lč“sğ¼3™OAIš"Å1ʀ Žģ…ģ3?GW ,@ †@<‹ŪLœc6‰%Ä9u “Z”é ō]ĮģńRüZ#¾9†ŲaŸß>]ėūŸŲ£²–™Ģ­”æ*†]FXų„’Éū ß'āĄĻ~‰Š±5Ą@(æN#– W&…šŽ!²cŒst=SAzĘrȜ¦ŠēQ6Ė!Š“N&ó„J$ķdūń`$Ņr²»ūhżēŸ*Š{ēĒ[Aūƒ5š$\J ó³¹=ŌrĀ®ˆćĒ~ĘĒ!aG/8āõāšččĻgńØ%¬%j "‰ė™½ÉА=ĢR²QF1b±aś–«Ń —l²Ūķ£ĻŸh©Śķrõ$ŸŁŲ±²W’]­Zt“4E“Ąęˆ¬Xü€ėƒqÆMæĻdź ‘ Ó(ö*1—ą>9!Į›dāF'Īmq cøóvņó=+V Fv ½’T”ēŃÄ3b.Č)f›!ŅŹ ˆ81¦×JR¤¾5Ż]•N w¼_½™ń[Szʽēś#īŽ”Č-KpīHü¬¹Ēhź lz-ł„ِäKŅ÷ĪŪĆ>3īüÉn‡5FiL&CGGvķŚ…… āž† |ø2āüÅyōÅqœ-L7f(UŠK$]õtO£Küćń7½†N–łŖA+ž”AĆ”½?bt†_³ŅÕL?§ż»ŃŌJ>5§SģՄ?‰ł‚™xw<Ēi~črāńgٲeX·nöļߏźźjdddąwĻ<ƒ]kÖ@C<š2ž fϜ£Jƒ#ŁżĢ@’"LĄf/1l.ŹJł®JĪlŸnn÷~{ķšĄŠt½±„'Ÿr:v'Õ¬ń(&$ń _<‘c(ęŃZņņšāĢwÜqĮ»^X½'_ś5҈Óēs’¼Ļ“\Lj±„2g6åó±QĻśu6Ū.ʞūŽHĶĻŅČ·f¤ĖjxAŒ3=į=æfæŻŠjŚ®M‰N-Ź/BĘō™ˆ>€Ū‰åY˜½ƒā›ō× :öÓ¬ņ{‘S^†«Ÿ~s.æ<ž»lœ9wO/½™v@uī‚’s¹Ł›äÅŲ»OŌtźU.[›ShN’ÅÓP—•"¼o/¼kŸO‰Ieq¾³9Błśŗ?qV6LŻXBZ8B|3\q9“š¹Żčüh'T‹„C~“ÜAŒR¾ĒdˆŠžQD½ć­ƒõŸy½›.ĘüŲcIrsgČļŗė†Ń?łŁ“Fµū‘łeż¢Zs Ž…½ŪTh1?Ž“…WĆ(‰@– žäqų^üb}Ż„Źćśā'½xŅj…¤°šŽ.,Ó„Ēū æßQź˜®jØn‰(ĘźD{R(߯J x‰lĒķŠ~Xx¶«³Ę“O€IiiéCżżż×vž9n‰®¬©Õ”gtcaQŗƒZ¼nż)rMfdčT0)S SĖĮ÷tĀ÷Å”õ$dóįÆą/,Eš„+ ś8/”įÄdz÷ī¤QŠ›aZ5ö–Ģʧ]ƒX–„ęč^„É-ŁKv=ŅÓ]Eū.ĘæråŹUµ³f=ƖÉ^Éžpē¶?<¾ĮQY©3eĄ”iB•a?z‚ģ½YYfõj˜U2čŅdĄˆ®µæ„’ģ)ČÉWoPÆÖ›“å° ÷k53½qq̬F±ŚŒFÉÖƎécŒź“¢¤?NA†W7lŬé5(śėzÄN4!|c …ö<;8p%&Šžewß}ėüٳ7(¤Ņ˜ēąĮؐÓ)Aq1“Tūdr-ō²^,É’ ¶uĶĘ_†—Ćœ[s††śåT˜õi8¼ż=l~żEL/(Äń½{ą0gC `õh餿qž“mŌsĘyĻQ¦ėdC€4V((Föϟ‚Ģœ §t«³AŖYé¶>Ğü t š]®uo:ģwM”³æ]¾|é9nKVI ”¤S®‘D‚A:t6Ū0¾}õ"Ü6ė#”hŪš×Ž*l¶/‡Ā4 Ł™˜3ńÉŪ/į/?ƒł ÆÄ ŗ'&M…’p×ó”“nÓZ->iĮpž„„ƒąŹ§!uÅ*ˆĢy Ā:‚ŻķĮp_/ ›>F†Fw¬Ö­‡?ŻzĆÅŲŪźėonéļck0¤ń“Ž-˜7f“ ½½½ŲõÉ'hjjĀ’„ĖpUõ(änAŗJĄ®ī"¼Õ{4¹5(Č7£ēŠ'ųŻźūP<„^/õ<²ó 0­»9lĶ@Ų5T»ŁŗS9¶ö„@œM­¦Åõj@«‡ƒpzĆr8`moGy{¦Ķ»ņ+®Ā³Æ½a·‹ęĢYõ½ßY›ÄŽ~ēŻOėė}ōĆęć³ŲR}Œ X|ćq@ė™3Č&= ¼øÄ¼ s‹[©åńI[6Ö÷’ŗā™ŠĖüįgwĮe„‘l—«“¤łW@ż÷½P YĮ'j6GÜI!æ«bQdvżƒæL9pv ó»cÖī.”y­Čƚ·6“zķT;Ū‰Óg[‘›_ؚsĪ~öį»āį±¹óy­ŗ~„bŻåń bę& o ……ōŽ©0ŃÓwėš<ōüéę¤IŸQ^°żh&Žé[]ķ"ŒŻŽėž£šŖ„œ‘£jĪ%šŲ‡KY= ū“Iõy”,ŸŠiO<‡cVÜļC4­6hSaHCqA.ŗ‡xéõõ˜·h1ÄÄGĻČ0Ņ é–Ō@dĘ[«ģģY‡«ŖV‰EÜóRz¾„zÕQņ¹…š÷:©Ę “M"Ŗ{ł…EH­©“ø!jDK4§peįnź!mŲ±G‡ĶÖ[h•\‡#æ޾ĆQLŸ]‡a+é`V‚ĶG ¢:ĒSNkjf¢ģįĒ ĖŹƒĶÄ qŽN9ʰ—˜õØ,΁V)‡ŪĄ/_—89“F‹Ś†ģļä™3žśĆϾߖäOÓ“™‹¹a¬W¦:ò+…lŃ:"Lk¢s„’,Å?H~„Bąkk‘}Õ·ØO—!SևkK’ƒ¼›6Ȱ}ō6œ ¢wļfź7å(žZ‰ł‹—bNŻ|œ~ņQŲwn*ū$:=lnĀī `ˆüné'æē1½4ri é*ąŽr8J¼a5#C©|ļń†K—^œ»M3g‹¢| éšā‚XĻM)ń@P*ą“+`'ī¶‘¶R®œ?2­RŽŽ:ÓNŅ„3Ųó^*6+Ågö.Ø2Œüš‘§`Ģ-£Šć„õ£æAÉeßķ£a v+Õj =sFq.jĖņ挟”…Ķp F:ĄˆgYzķŹŸßtéÆ/Ę’V~~j•Vw”ćøŠ‰tu¬Ø ńøH‰G<õ‹.śÜEu!\Y޶w7āöNüčŗ>Ś"Ē!n1Ü/"¤ß—.¹rc%²”"ČåR„CŲż<ń=ĖĄ ¶!ŌīŹ¢l„¢„™–;Ƥ’ŽQ†HCC§Ž#oĻ_޶ęēnÜø1<ĦšopœčĪ ń_l ­ļ¤Ō7»]‰~ź=%§Oć°ÓĻnWŲń½ļD`i)¢ę>tiōšøķPfU£Ā¤Žßnƒn¬C6Hų j ĶČÉŠĆāįP’ē Æé#ŪWšųYDČē>Ų·mĄÕ¾±ČŁ %­ŪŗHļR؞ 1Įūė@eS0Ų7œĘœyYFf3I֔ńŻAŻR w[±XsŃ¢ų¹bI'D¬¦z7@ėĀŌ¢Ų“µŌ+IWŪ>ž•“Īå£Ą4Œ4YB¶ĘōzD‹JœZk~9:Ŗ· S‘s1čģAÉĮaÖźpŽj¾ÆÓ" ƒgŸ“ō_CƤɶ\&Ü÷ł{ÕōĘt©¤žif8џoÉZžćķX•ŁˆüĶńėźÅ›Š0#ė23ŗ®_/õ*­K¶½Ļö!»$T'.ŽW¼¶0{(÷9£ žüb4eäc0#3^ÕÉ&po¾‚¶žžx_Źt”­w9GöžŁįX›Ą?@“ÉŪ{ø`?NäĪŃhžhČȼiŽZ­’Rņ<ī„ßźŠćH³!~Ż3®[ńbš{ؽ„“…zšöę³ø¼f&Ö#QĢÅ{}& [Ø{£ž€ā’iF˜z‰€Ē…“{wĒ×\¢Geū|o[­ļī÷޾—Ąs]ń#ūD7§OµĮʍXę^‰Ģœ:<ź^ēżw£¼Z‘Ó‰ž–søm©±³g‘MßE¬GžgGܖ(¤d/#÷éQ/õ c¶³æ¬×{¹æļ¹³”Чō•õkīÄtM†Šöƒz:4ęÕ©Vx-ų­`9h{Šø^żØ÷‘Ōܒ:Üż ž¾•é‡Āąlؽ6y}o#Ļ:ߗ _2$4;ؗī$Ž%ń³£3ńž²·g5-›0Ęf#'«c‘ °Ļ„ĆæŖbĮŒ8÷ŁČŸ>göƒ”Ą„9#[°‡»ś‚ūZü'®M’·š;’eüĢĻ­“¾§õ!ÄlF礓Šo“Ł>ßåń¼L_»ivŃ“O‚{ę&fN3ĆĻ0+µi°w~q}Efóš‘¶bĆ iū 1h±©k*ˆ@ų17åB™+„é×dƒaeöžšłĄž·Ćš§RīõymÆYYM=1®0γ’s0ī\ŠGÜt«=‰~—·žį֘Ņ榙U‘`ąLĻܬņ|ų\c{ÉĘ2õ÷Ūöv’>Ÿ[ņśŅĢŹß»nć“&=²§‘k泀ų¹:ē_¾?ӛ£TĆ}¤OL3½ŃذÖŅ’gk4Źśāœē½;a‹@l¢ē‘-õ­Ÿ6Æ łƒs§h6V_S×0jw­"[PvEMùĻOõérTĖC|SEÄYżčåܛĆWqķ†)©~Y}HģK}Ոė5]ĖöŁŁ=lo~“ŻÖņ‘Ūż&żdIųŪ5;Ū;ńO†Ÿ ʧ”Téó¤cȎžv×u"§–ķēŅēŗ†kw[N”Tz{}fę-‹4ŚŖÜŌT¶Uß+™ōEŪ+õ’ž#’3ītž—,–uDĆ ¼#8Æ7£ ü”ɟ86f•ļ(ÜÖĘżĘęm üĢŽ‰ˆM\¦ŃÜqKFęā:µZ)%Ÿ²˜$÷Ū.Ą?¦38EłĖžŸI¼ŁŃ3Ž0wā<F“ŗĄÆž’r?ūLłŠŲtöŅ/)JvżĢY Å÷®7®ŃŒZŖ įųžOģ n1ŸŪh½ŚA½ŚVĒpׇ.ē»Ó†Ż•8zpž÷ԁ55 =į?Ą?—šoüń%RéŅE:Ż ‹téuU*„Œ©dxĆś;ł’c‡#ōĀ€echŒ7 ÷Č8’Üa¼Ÿp ó5ŖĪ ÆŃjļø^oXP«V›YĻt†øsǹ£g‚Įmt ēy“ō?ĆĪ|’„yū5Ü™ģŗ› ·÷üę ##Ūé\+ĘxĻlŸ· ÷?Åūo`¤§¦„•ń<ˆųżÉŽ’qœÕY†wģ߃pžæ( }‘ž00b²€ Qj@{¼Ä(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/soundSuitcase.tiffHHapps-projectcenter-master/Images/soundSuitcaseH.tiff000066400000000000000000000114001347226342500232030ustar00rootroot00000000000000II*øxœåYilēy~fĻŁŁŁ“Kī.I‘ŗ,Y%Ū²*3ql%v/8vl$RzĄu'‚¶ō£Šę‡‹ żQ n€q€FE ŌŽ-¹­#øŚ‘™’¬‹’H™¦xHo.÷ž=fv¦Ļ7ܕVŒčmķżˆĮĢīĪ|ó¼ļū¼Ļū~’7Cémm}āŽ¶ų“.§s¢f™Æš&Īź0ū’q``ęó÷q#ävļø»„µO‘=nĖ æĒÓ§äČŅQXęۓ鬮ė熆†ęŽĘē¹yųķ·*ž,OÉ *mx¼ˆų|ˆņšŗœ–K’ ’äødіše½ošęėmĄŲSµĻæŲ²UUO„W«™0aĮ“,#$Ib,œš»Żx½“Ė‹ Ļ·[+ĘbCŁwĮh)†®Ÿ\ŗtą™ćĒg?Kü °a‹Ŗž%~_•˜Å'KŲĮkaKĆ1œ\<Œ‹ ¢mĒ”s9TņyD£Ń R©¾h.w„ĘŸ1ɹg††žO푁µŪTõē_»ŲZ:‹ø4Ūe0V6×b1T‰ŻĻXłT•±ń 1ņŗ\Ģ!)ć€ōóē-śą c4t¹f’79Gžtõ؁Aņß/p:ėųŵUĒŽlOƆĘ0j5X’T’m‰sĘGq3‡¼„e1Eįg·°§Ąų Õjf?ēx_×­WNkābłÓ¾U æJ_yŗäėex›?‹+ńĀ”®#/šóZ–ŗœšņ,ā(¾­™üEÜęsFÄFäŃRy!»œErq˜w„ĪĶe2§·\½śöShrPÓxx7Ā/uŃv§=<@ŪmĄ°aYAŻŻšå2’7Ē[0]­b²R¹a~~$ó=J|µk÷‹ümiZ¶o®åc#ō-ä•m›4­˜ļ›ķ+—/7ęܳNOVyPöāėN§“»ØÕž|öµņĖMƍīTÕQ¾/ä”ļ<äōJøėŁmŸ/jšķūkŲiŌŽ;ļ„E» ~ČyKN²®Ļa6Ų” fŻ! ā:œÅ·2éĶ%ąJ³_¾ó5’3ŖĻń„"KXĢÕ²é‚łĶē_+½Z’9“CUG8K‹ĢwŠų›×6ųrŻ1j<]Њ(äb®...ā±ĒÚ5kšź”CČ_‚‹œæĮĶ~iŅaG’Üņ9cÆg2[łµÖŒ߃¤…Ó’cEv|«nĆd¾T{ą_~Qīēρ;Uuˆ¾JśČSoŻ’ Ģ×Ļ׿čä1\.ŪüéééĮC=„‰‰ Äćqųż~œ:zcGŽ@&/VÄ_’ÜšUóA«Õ~y4Ÿ»ÆéÕ7Ų`9”œz\R¹Śąģbõ7ŃgŠ: ŗ©EBŠy]SŌ/¤:'ņf ³”nŪ¹wÜvŪ ļź{ć Ģ?/9±<–Ė9)~ŗŃN­š©T~zŗXü£åŲćń‡\ŻŁżsÅēÜnYĢgkGŽœ,>Ŗ¤ŌWd‡¹%ŽĄŸhGmrµJ†Š’z=n¼oŽēĻmzĮX ÖŻ?:ŗ»—ģā˜'Ž}žųÉ/ éµb.‹a3„n$Ø·#„Ņ_–“§VĀ/Ęļ~­ēī°ūź 1µŚnX._‘NĪ”:ä`8é»÷~x‰©vå2ŖĒށU.Įrŗź6%ņż5S ”f±‘ž-ŃF„» rk+tr*=2 w!Ļ:ķg®ł¾‘=ur6ꉸGhF„½ć¹B~Ļ•jõÅå˜wļŽķ ¾Ć‡ŸĻļ¼ėKå÷Vž|uKNJfŁ^–qyČƒŁĄnxVƃźØ1ī.˜s3Š±żĢeĄµė²n™x»P€#…œMc+µOh<{STÉ'/ż(±5›| ;ķ/{˜"Ļ*EŚĄū¤„Ś!;¤Ņ{éōvŠūšMš?ŌŅŅņ½\.÷Ū鳙D¾d¾ßšH†bJk"SČ2NīBõßļó@u;™{.XÄXķcRópŠįŗwé[=Üo>‹]Šo©—ØkaC›“ÆqĶ^J[—£øœĪc«Ė€<}5rGvE°Ęž+“éįEq9ž]»vķO¶·?ĶžäGĮį‘Ćęf~¦µ¶FŌ`Ŗ_E\™  &Ę*[ØPŃkŗąópŽ’†2¹¤/Ģ“§ĄiöjY>ē!æ{YTÜō]#×6\±ē±uÖö½nĄmAl÷żHS½NžB{"ŽČšYX³Sš‘;łšqäh>’ÜD{zvģųīööŸ¹N³29iK%›EȌæÓ%Cqe±1tC™Ö„‚Ś%Ū6&/}€‹§Ž#cf|łļ6tō2&>ęĒ’ĘHvµ¹‘ŸĀõ Ō…Ą=÷Į”T„n„s¶6ųŠYXļ¼97S.8£æ}³œżź¶m,ŹņæˆŁĶœ+—J0 “““(5¬[·ŪŚG•S^Œc6øÕ6iCXõc“’8Ī8ŠÕ¬M³|Fä“Xl&¾ė×jģ –š_¼®bmpķģ…¤ ģ EÖ -›EdjŠģĘł‚C+ü|ņņ/Ēž§[¶|c6—ūɐa„töŗ«»ŗ ’ēY>?6:Š©©)lÜԃuń V/’3\Te"8“½ r(Žp(€Ģä(NæłˆUįOņ5 £-“FP8šŲ½Ń{8kOXŒŌ‡»÷&Øż^ūŽ56–šB[W'ÜŻkqōT?“²Žµūū^~ö‡ ģß½cǦ³Łļ_š±ū‰õŃd/{˦Mų¾<ūöŌĀ9@zŽĆŖHŠļg.¤‚8›»r4I~żoFYĖŪ¶»Ø!]ŻšRg=Ō#«^³…ūE-ņ0.~ęŖņ…{5hs&/üĪø2ÄŖ„ŚŚP‘żÄįĀĢBóÄ G†BViēŃ×ēž'Vu4eļžćaĢR¹,ŹŌ0“¼UČe?ēP©Ū?“*œ?”ĪQ“®°?ŌqiŚóŁm“kP𾄑3}š°'żN[G'*W'°ŠŗbkSCg9Óö•߀ư± ĪŠEŪ_­Ģ§H8„ ßwüŌYt­ŁĄpŗųn >Å7é2j·ŸyćŠ¼˜k_<¾Ÿ^ŚÉłģU«ŒmŽųs|Gšsi¢’%ĆĢ/õĄ‰r=†Ō+l'Š—1X`KÕŚéžwÉŪ“½öJtt@£ļ{˜ĖĘĢ{—Ķ/ėwģ‹÷ĀÉ\- Üä¼Č±|ŽėĖ€­‘ d®*Uļœ:hK‹ˆ™Q,Ÿ ©žæīćß?lšg_[ū’ÓZź•MĖ®/°רł,’B±ĄÜ)“3™DpķZź† ~g·“ sŻ”Ćąy.U·a”VAvü¢=G”qėŽ° ݘēMhc#;»ŠŹīąÜŲČU}ÉļÄ ł‘h hėj……kš¼z˵ŁKGxdyīīko_'™ę9S¹į«a ū[śBē¹Č/RŌöõÉĶ~Ę%«pZEtØ£Ō„yŒąĀÅé\Ń2¬±N(~·é>ųƒ1@'ÆGh+ń;É÷bEšŲŸ<ēLDCH»ČAžͰČ+„Jū¬€"÷Ķüżrü‡Ćr›,Ÿęs›n¦«ęʶ…l måuZō­1¤XÓĪ būźvn01rхIi1Tķŗ¹jćfźl+n®;iSäÓtĖꌱŗFßw·ąŒĮų—v÷Š6””{”ŠųÅÓ©°Ś;00P½Ä}‰äOųŖĒoй-Œ ×Ų(Æ]ƒ5Š1?)ödWµ "­ElæÅD~–5$¾ijb„¬Įˆ#¦zķ)ŠP(WmĪ8LńHAöe¦¤‹ƒ¹P®°¤᛾ubījłG’™Ė’ńJ°ö%B’’JlV“µæ¶³ŌYyp2s½L­ŸĻ²-a.¬J¦¹Ņæi)Ž*+o8Önļ7ģ¹ļ„ŽųŻÄĆ[£W4Ż“¹"|®3’WĶMĄ15v±~ņ•LęĒ+AśN<~?ēżÓą—¶õ Ļ\®ń:“JŁõA¦N•‡Š’O±.P wĄHtĮ¤†čŪ¼V¦ŠTŃā÷Bń2§Lb'—ŹÄž§Ļ­™I¬Ļ²±÷ÖX’™–dY÷ż"“łåJ¾‹­vøÜH ’'µAōæéQeæ±@ÅŪ“ha=š;v ­—F™+nHŌ0“ėÆj[³j55€ź³÷*_$ĻK‚ēÄ]d.x® cm9 ·š õĪa7JV”æß·óŽ“ķ¶{ö•PSžņJķkŗą™›‚tę}¤2Y»W•źūdcåŅ[4ķ‡uü,‚ąbÉŽ{øa?ŽkņU²üƒ-Š’ė^Æ*4¦·C/”müÆ{æaß÷ėåqÜŲŽd'µ…xS3 čN°ē™gT­Ÿčõ?š{Ā–8h±ØÅZmŸcß-ÖR½Gś …ē&Ŗ•—ź˜x¤źēÜͦx¾ügGņo6D?\¼‚ĶѶĀ4¾ ąÅņ.Ö”NÜSy}śÄā2¤R™ŁElŪ”ƒ%z+~}ę'u[œu0óŌ1®?/Ģ8‘Ėżķ‚a¼Ķ¢_Ė֏ĢJų[äß:źō/_Dr}”\?BbŻŪŲOųCÄ"MŻO“w üĀ „šYx7›ł ­“Xā°AlHŠ:¦ß{/O’žŲź¤Ķ}1B‰,ŒO³UŃQŗˆqiŻ Ļ¹etƽo[­‘O_p]ģóꚹ‹Ü(U*’Ąć<ĘxĢÆ€{?O½õ£³Yą˜Ż\Ćj™üµūcžŁ…éT$v«—5Faļ™n%fūéUĪģs;s¶~­Œ}‰Fsģu4³†Ęžötµ:w²5õ<–ø"8/žĻ!øsC±yė÷ų”—«{2Ä-S§…vZĆ}łłLo Fµ¼“—¬Ę¼„Ę3’’Ī^øµÅæłly›CVyö7z?ØĻ££|ń#ń‹}±W­SŸoŖ¦iĖå^(˜¦č‹q÷Łŗ-4ķ/³eĻĀå™ż5Żč­µ—ĒĮųśĪ½­¼Ÿ¶ ÖŲ»xunBz~æfMmŖ•āßļ–Ī,¬•c-.ŻŽ+iüąć†Ą/zåIj—°CģĶjÅs#åņ?ń§Éŗæ3MŲÅŽ‰¶~1Ÿ.ēÓŌ±>ŚńwŖüœ$ā4{éj/Æ÷ņńŻŽ¦Ē:#N磛żžo®•åž Ėe+‘a}“āž*ĻŠ’Bo҆”ĻåPÜ߯ć]Äu½É×ńWVžqi“Ƿ‰–½åBIp’ąLę§RݶƒuüĀŽ¾›<źs»»dłYKčōzżBĒ1łUüģeÉū9ęÆŲ×"o^ĶŌj‚7B<ҸΟ|ż(įü¹_\3N-ųĀ^‡ģhw»’ąVEŁ»^Qār}Æ·Ö‘ÆEźš"ū!M.—žĆ’Öģ™ś9‡ė¼Ė„&ńļ!ž¾:ž^ā?ō)ń7ÕQ§ó‘µ>ßĆkdß®øĒķ梧ųé’Q­T9–Ļ2–x#p/6ŁŠąŽążM×0ŸŃ`׏/Æ'·6*Źī¤×›=Ó<¹óŚāāéyĆ8Œ„ķ÷ožŲ…ļ?2o?ć±*źr}u³¢<šÕõäłRé~7„%Ž šóVąžD¼’FŌåõn“L³TÓõFo)8.ź¬Ą{ķߔĖüo6oö‚ž00–²€ Rž@°šų(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/soundSuitcaseH.tiffHHapps-projectcenter-master/Images/subprojectSuitcase.tiff000066400000000000000000000131341347226342500241310ustar00rootroot00000000000000II*xœåZyxUå™’Ż=wß·ģ$„°‡MP¤U(øÕ‹Ś–āH;nµĖ8V…Nµ¶ŽÕRkÕ¤U«‚µBu€Źƒ€%¢„²ļ7÷ęęīū=ēĢūÜ Būt¶ž1ßó|œ{r–ļ÷¾ļļŻ¾š’fh¾Y[{ļŚÉSÖ«•ŹŽ4ĻķÉd…¦ø=>wūvĻßÜ_„ĶĢļN˜ų‰ĶØWčŌj8t:č (e²°ŅC—=˜ø¦X<޼sēNļF ū÷Ę©źļß/‘Jec±ę©ųĆ’Ŗ(µóēćÕ'`śŚF„sŖ‡p¬q»[“¼`Pvˆēõ.ŒµCN)-p4őHä¢÷3{ŌÖ*ƒ™ÜżL޼eH¦ %ÉØ"1Ū°ųVb4¢„dņł|‘ŸœhžņQ0Ųē¶mi{¬7š ’Ū” ɵ^fżņoß³¬åė.WGŠTØ'ŪėdŅ÷I 9Žäķ ūŪ»ža wĪc'=ß³~=x’kčļCG~žĶ½ƒp‘O1™ŲLQL æ€D*ĆtāZ•BŪŲÕYzĘźå³-ö_ø,Š{mF Śś2”ö”Ģķ·~+°'wŁxÓÕNŲ¬&Ņ “!Ļ—¼ī\‡żfÜyĖēƒ'“F1Å •J…öövģŪ·‹/ĘĆ«Va`×n؈ó—śŃłćYXܘ”ÕĮ*—w~§»k2Ż‹æįe(¤*ĒK6“ģmF)Zū2żƒōņ„÷Óeż?9]-¤S·…lo üyĢĶÜŚ¢ÓÜ ą3āĻźÕ«±yófŌ××cźŌ©°Ūķų双}7ĀH<ŗ,ž¼=s1š½sŽN:óяś–ą2üg2prŪļ* 7źŌL†ōéć­Ńžß˜šnu¶Rą)#_†™=I9‹'ńBæpžRöŁ| ›Asi)¾FœY»fĶEk=÷č£8¹égЧ/ųžē¹˜ÅrņœŁäĻĒ"į­›½ŽÆ]Š=?żŖ ¬ŠØŽa·Ø¦q‚ gŗÓū7¼ģū²­ÅµŪ¤ČNŖ(«€}śLdŽ|‚T(€łYš­AöĶėėūhN‰GQ\SėŸ~s.}—3mmxśÖ/Āįó”ē.ņ£œ]¹œ L.†ŸjL£ųōG’ČĘßü®„Ÿ›W/(×~»Ę-Lr28$i8õ’“ČT<ĪmyüiŖ' }č¢Ļ?Ž8Ā+U"ߣ!}%ž€¬°®®vÜD±p„ųf[“¦‰ …ŠńĒ””\¬$rcx˜ēxN<Ļ’æ‹GDG蘒ŚńuĻąŹ?E£ļ\Šł‰'ž—”ĢPß}÷-‘õüė“NCč‘kŖū$uīf\vźŠģŽżāėį”g`Š€;Ł„ŲO¾· ’µ_ā/žōx W cO'V›-b]Ē”ډÅU#å- łŃhžČaĻĒņ÷ÖN®„1ģ#d¢FĀo–ÉĻtvLėZ/ƒ’¦ &|§ÆÆoYĒ™&׹HöHķ“:c½ ‹+Š•4įσ(q¹a7ėąŅ*`6ØĮuw öÜS@[ 4Äe)­óż¶VJ+ačÅż6«Č‹łC:7Y<äǬ—"Kv³MžŠU³q°s« ’06@šd0‘¼$`ē#Ż]SčęŲ„ųļæ’ž‡źfĶś‰A„z±hׇ;ß:Łō¦æ¶Öģ**‡ĖįĀ[=ŗ“ģ‹| ……n8H†2I ŽdŚ–“äüŸ ‹"FüŁŃr{4Ō#Œ ća“jÆ$R3ĖQ,÷&³Y’…Õ°£ń‘§<­©š€‰žF‡ ĀKoīĄ¬éÓPńĮVš'`!ūö§RūŸø—‰=«×­ūŅ5³gæ©Q*łš§ŸņC€••0QīÓØM°éG°ČšNW"ŲYK2ĮļA€0Ÿ”8? c8‡–l"lG,Vh‰ Qf”Ų/ņœ®QĶ)ņLōQ×I†ÅX”¼E=•»„ŽIq«£IŹYo/ų'€™ōq<ܼÅļ»ūr>ū‹;ļ¼µĶl~·°Ŗ ZŠSa¤%_ėļź‚¾Ø6šf>„ĮŻūŃÓ끟lN%‘ĪRÕÉj2¤ rkhĶńż0Yƶ’Ė †ā6õj⤆įĀ¢d¤“ÖLFĮś‡ q—b$’„'’‚/DśčķĮø†½°5xƓ@ŅļŁq䱎[ĘāV®”œÖ“y½›Ž‘›ėŠ QCųe Fü~“G#č!¾É†1ś­ øO5/„@FŃ^ʎ„Ÿł&i>zo£ŖÅå˜ÜՁbÖ3v#ånÖwjG{OÄɤ©Ō\? ˜¬šīĮhC“®§µ5­ ˜¼ą*Ø}ϼü ‡āX2gĪCĻŻū…ēö–;īX„P(æ1‰,ņ„ƦHnzgW €įx ńtFĢC!ŹC~ā„‚0—X,“^¹ˆ_"b—å°3’ōS]Ófsbī5×Āšńč†<ąr9›=ĒŽ£ć³pvė·\Åö~¦w’<]ØŽzP6e2B&ÕŚ8v¶§Ļ¶ ¤l\K ˜żĢwļŽl¹zŠJń»ž %“8ā€”Õą„M"b‹Q}ŅH<ņŒn3”—WO0¬ÄØūœ=Ćĝb÷IāĪŌ¹ójüĖIÄC*ă,ƒI%ŸŃÖLĀä{ g”Ø÷!šÆŌēL“éQY^‚®į6½² –,‡LY€0Å‹ĶŅ_ČĢxõŃU¾µN—ŠCøóx咼.G¹ % 7~ļ{8pü8ŽxżuP?9ŻæĘį<Yğ;²L4B=W'—Å”d W͟…ķøė:'¦Ńš{ŹWō¼qŚLT÷ Ø Kį '1Hœ÷y‡EģUn+j+‹aŅŖŠ%šĆW~‹Źńć_³Ž!ß„nūSÆżėWĻ1]=ZR*“%qąĀoźc)NŽ÷ŚkКĶPg×­[‡žżū±Œü‘ĻaÕčhĶĆz+/ÉŲJ6hÓØšķÆpŪ¼ŅSP’¶=ļ óÜØ}āG›­š†{8!Ņ{é½Ä‰éJ”V*(®‚x+E#ń†qҮվ·aÕü[ĒśīĖĒ ­Ä÷¼Ÿ„cšgI’7=ū,–Üt£x’Vśżé ?G0Ė£œŅęīSѵ’/$›·ŸCcšCŁ|9ž\›/Õą”õēTĆĆóį.XÆŗJā»/’Ęa÷/ū©·ŸQY‚ŗź21¶†Éķ†<ŌFĀ$Ā!ZM÷?vŪüŸÅ’ļć*ø¾TJ*Z^*'ŻSG>&“JD9$¬`ń{fUŪq¤Ž7ćÅ”FŠķ7Šł,Z¼_aw@s×ZpsÆÅŠ[ÆCŪó*ŻžA”·¢>|3ųń_…[K±•l’Neą‹sÄ÷$śį÷a.į®­(¢¼A˜©Ż¦ųļÄ0D14uŖ „ūßŲR朷}ūöōXüO— g³fN­Į1GĘSMąl„z‡üX’«„,ļŠyÅs=Õ[ū¢14Sń·'‘lqIūą#ąjg ‹×ÓŁ;’AeĘ®““’ŚP:ėó(T ŠX\š%ĮP ž!/ä\ÓƹQl·RģćąO’Ēī0Ć^˜’÷”’€:xń¾žĮo\š³+*9JźĀ·ß‹³ę"ܶp&„Cbpó‹b’Q  ”p3ģĢG™Ū ’YŠ…Ė T0;]ØżśĆČTLB?†Žī³˜­|J®m^ <§›QIF-åa=ŗUŸī…ŪdFŪĄ€Xė±½¦dņģ“ż}KiłAšlĖå|ķyĖćæŚ¤3ź×Ŗ„‚fł‚™··õQ?„Ay‘åFķFĒ‹ĻŠu}ęŗpø·Ķ ŸĮ\\k®æK Ū0æ.Ć‹pfh<2-§‘hj¢Z>† Ō»”PŒrĻXŽĖPĢbń@ęr!\V‰{ķE˜¹x!t' %{ŸėīėRGYĻø/0rąmæ’łžšAŒī=pß§~2Å©m:ƒab©Ż §FŠ­óń‰vH 4˜XQ·NŽį÷·CF¹@;’Z¼÷럔~ļ^š‹ńė˜63…£Ńr uų8}Ć(”śĪDÓ³ż\ņžøĒö؄܆ ńYŒÕ2ŹS¼Ć4Õ‰p'|$öŅ\Źöł~ćńü¶>y/‡y˜¦?w ƤŚsʹĪdž®Ų(ƛ’ā"øõ*²'åū¶DŠœvŒ³iÅÜÖ6čCoÓA(:P!9™Į‹wöZpĆü„pS<­jd‰c«³™^%łæ3yØÖPŅ9#÷éHT¬aÄG1šS_čė}öl*uNŁF^(7™ Ų!~ZR|3Æ3½—¬[€ī…+ąr¢Üf€A!`Ą7B}In‡Å†}$‡0>“¾Īƒhk+GY–jāņ2X©F±lŁ"īÓ^Š;?„/.ršķTtPlĖćgĒ@&żaO÷£Ō,6äųĆdHŃLē|ŠŠ*M UK\*ćŖ&įXõlčg]M˜m(7kČĪ<:üQ±ę­IC}ņ3É×zU(ī^‹Ö–ŗŻp57CżīļÅ:’JćJų™ž[Č7Ø?ėv‡’j€m^ļį}įš tŚE³“¦/;’ØI*µ=RRzŖ@&³™“ZDÕ:œśü*šå5(..D„‚ƒ½ż$„Ēam= )åjĖī ća¾ķ‹8z¬ •sēĄņö6hĻ»¢īƄŸ1®±ŗ„}Ūaų HW±Ø÷eĻ «wN`”+Œóģ;G0§6¦Ņ,¹ĻķžAµF;ÅI«Ń;õrźu,Ķ (öō@B5Šø_0F·żN“ƵO™‚Ä4Ź>/¬»÷\ŌJsUČÅsFu“Bžg2±ė,Ž4RŒŃś,fR®žļļ{ۓͲ=ä\ą}('K£ŪsóhZæbwüól½ž†üŽe]Y lߘb Ū»’Nć„ÕĖjó¶6h a¦N ŽöXģ鳍xĮöKT;±žńrųŁžŪggßÕŲŽü;>oóC”-t©?§ļąģlļ$žĆocśæFoX³Āj]G}ŒšõxµŌs±õ.ū`ĢŗQŠ“‰źjØ©Kźtp !‹ žLF!Ūo1½G6¶gæd°+QгĒH’Œ;ÉD|S’fŅŽ‘Ž\ˆ7‘žTīqĶ2ŅOŻJ›}}V7…ķSWR¬g}ā_ĀĻŪ/ŒéuŠ(éŽPŸH§ßŪFĶŌ8µśsw:œKē ZÖß%yžü~ŪEųGć N‘Ų÷LāĶžītšń†Åł.š'’› \ų¾\–³A”A*łĶ¢āoY ­“t6ždųKŗgė¦xž e²ž±Hż6Ÿļ­Ć±[7=ę¶™³4šÆÜl³­Zjµ9MĢgÄ=ž¼n˜Ī½ÄÕvŖÕvų‡;wæÅh¬ äōČé>Ļ{ŖĄĻ?ĪōĻ¶Ä Łļ/˜Ģė>g6_ķP(¤5Ä!éåb5ėĖC["į#ξNżĻĪþ¦ų؎®d²ņ*„ņÖ%fó-KĢ–¹StZóģ$ń†Å#éÆßŸzn {j”7ĮœŽó2ä¹£6L?/ĀM“Źé”Ūmö»®3™ĘWž|.‘åöĖHO®dņÄVĻą/)^ģNŽĘ“æe((‚-^j2­¹Łj»¶Ī`p[ÉGĪwnok<“LīdĖąoņśätŸ÷ŪüŠędpŅtŠ,+T(ęƤģĪY½ŒÕ ū¹x?X@ÓCü/ā,„Yx³Årē:—{\„ćšƒ^ņl„JŒ}ļūk.ż_–½¾šćøÕ§łŚ’q<“ĆĖįĀ'Ŗ‹ĘōyR ž00ī²€ Vö@LT(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/subprojectSuitcase.tiffHHapps-projectcenter-master/Images/subprojectSuitcaseH.tiff000066400000000000000000000131361347226342500242430ustar00rootroot00000000000000II*xœåZyxUå™’Ż=wß·ģ$„°‡MP¤U(øÕ‹Ś–āH;nµĖ8V…Nµ¶ŽÕRkÕ¤U«‚µBu€Źƒ€%¢„²ļ7÷ęęīū=ēĢūÜ Būt¶ž1ßó|œ{r–ļ÷¾ļļŻ¾š’fh¾Y[{ļŚÉSÖ«•ŹŽ4ĻķÉd…¦ø=>wūvĻßÜ_„ĶĢļN˜ų‰ĶØWčŌj8t:č (e²°ŅC—=˜ø¦X<޼sēNļF ū÷Ę©źļß/‘Jec±ę©ųĆ’Ŗ(µóēćÕ'`śŚF„sŖ‡p¬q»[“¼`Pvˆēõ.ŒµCN)-p4őHä¢÷3{ŌÖ*ƒ™ÜżL޼eH¦ %ÉØ"1Ū°ųVb4¢„dņł|‘ŸœhžņQ0Ųē¶mi{¬7š ’Ū” ɵ^fżņoß³¬åė.WGŠTØ'ŪėdŅ÷I 9Žäķ ūŪ»ža wĪc'=ß³~=x’kčļCG~žĶ½ƒp‘O1™ŲLQL æ€D*ĆtāZ•BŪŲÕYzĘźå³-ö_ø,Š{mF Śś2”ö”Ģķ·~+°'wŁxÓÕNŲ¬&Ņ “!Ļ—¼ī\‡żfÜyĖēƒ'“F1Å •J…öövģŪ·‹/ĘĆ«Va`×n؈ó—śŃłćYXܘ”ÕĮ*—w~§»k2Ż‹æįe(¤*ĒK6“ģmF)Zū2żƒōņ„÷Óeż?9]-¤S·…lo üyĢĶÜŚ¢ÓÜ ą3āĻźÕ«±yófŌ××cźŌ©°Ūķų双}7ĀH<ŗ,ž¼=s1š½sŽN:óяś–ą2üg2prŪļ* 7źŌL†ōéć­Ńžß˜šnu¶Rą)#_†™=I9‹'ńBæpžRöŁ| ›Asi)¾FœY»fĶEk=÷č£8¹égЧ/ųžē¹˜ÅrņœŁäĻĒ"į­›½ŽÆ]Š=?żŖ ¬ŠØŽa·Ø¦q‚ gŗÓū7¼ģū²­ÅµŪ¤ČNŖ(«€}śLdŽ|‚T(€łYš­AöĶėėūhN‰GQ\SėŸ~s.}—3mmxśÖ/Āįó”ē.ņ£œ]¹œ L.†ŸjL£ųōG’ČĘßü®„Ÿ›W/(×~»Ę-Lr28$i8õ’“ČT<ĪmyüiŖ' }č¢Ļ?Ž8Ā+U"ߣ!}%ž€¬°®®vÜD±p„ųf[“¦‰ …ŠńĒ””\¬$rcx˜ēxN<Ļ’æ‹GDG蘒ŚńuĻąŹ?E£ļ\Šł‰'ž—”ĢPß}÷-‘õüė“NCč‘kŖū$uīf\vźŠģŽżāėį”g`Š€;Ł„ŲO¾· ’µ_ā/žōx W cO'V›-b]Ē”ډÅU#å- łŃhžČaĻĒņ÷ÖN®„1ģ#d¢FĀo–ÉĻtvLėZ/ƒ’¦ &|§ÆÆoYĒ™&׹HöHķ“:c½ ‹+Š•4įσ(q¹a7ėąŅ*`6ØĮuw öÜS@[ 4Äe)­óż¶VJ+ačÅż6«Č‹łC:7Y<äǬ—"Kv³MžŠU³q°s« ’06@šd0‘¼$`ē#Ż]SčęŲ„ųļæ’ž‡źfĶś‰A„z±hׇ;ß:Łō¦æ¶Öģ**‡ĖįĀ[=ŗ“ģ‹| ……n8H†2I ŽdŚ–“äüŸ ‹"FüŁŃr{4Ō#Œ ća“jÆ$R3ĖQ,÷&³Y’…Õ°£ń‘§<­©š€‰žF‡ ĀKoīĄ¬éÓPńĮVš'`!ūö§RūŸø—‰=«×­ūŅ5³gæ©Q*łš§ŸņC€••0QīÓØM°éG°ČšNW"ŲYK2ĮļA€0Ÿ”8? c8‡–l"lG,Vh‰ Qf”Ų/ņœ®QĶ)ņLōQ×I†ÅX”¼E=•»„ŽIq«£IŹYo/ų'€™ōq<ܼÅļ»ūr>ū‹;ļ¼µĶl~·°Ŗ ZŠSa¤%_ėļź‚¾Ø6šf>„ĮŻūŃÓ끟lN%‘ĪRÕÉj2¤ rkhĶńż0Yƶ’Ė †ā6õj⤆įĀ¢d¤“ÖLFĮś‡ q—b$’„'’‚/DśčķĮø†½°5xƓ@ŅļŁq䱎[ĘāV®”œÖ“y½›Ž‘›ėŠ QCųe Fü~“G#č!¾É†1ś­ øO5/„@FŃ^ʎ„Ÿł&i>zo£ŖÅå˜ÜՁbÖ3v#ånÖwjG{OÄɤ©Ō\? ˜¬šīĮhC“®§µ5­ ˜¼ą*Ø}ϼü ‡āX2gĪCĻŻū…ēö–;īX„P(æ1‰,ņ„ƦHnzgW €įx ńtFĢC!ŹC~ā„‚0—X,“^¹ˆ_"b—å°3’ōS]Ófsbī5×Āšńč†<ąr9›=ĒŽ£ć³pvė·\Åö~¦w’<]ØŽzP6e2B&ÕŚ8v¶§Ļ¶ ¤l\K ˜żĢwļŽl¹zŠJń»ž %“8ā€”Õą„M"b‹Q}ŅH<ņŒn3”—WO0¬ÄØūœ=Ćĝb÷IāĪŌ¹ójüĖIÄC*ă,ƒI%ŸŃÖLĀä{ g”Ø÷!šÆŌēL“éQY^‚®į6½² –,‡LY€0Å‹ĶŅ_ČĢxõŃU¾µN—ŠCøóx咼.G¹ % 7~ļ{8pü8ŽxżuP?9ŻæĘį<Yğ;²L4B=W'—Å”d W͟…ķøė:'¦Ńš{ŹWō¼qŚLT÷ Ø Kį '1Hœ÷y‡EģUn+j+‹aŅŖŠ%šĆW~‹Źńć_³Ž!ß„nūSÆżėWĻ1]=ZR*“%qąĀoźc)NŽ÷ŚkКĶPg×­[‡žżū±Œü‘ĻaÕčhĶĆz+/ÉŲJ6hÓØšķÆpŪ¼ŅSP’¶=ļ óÜØ}āG›­š†{8!Ņ{é½Ä‰éJ”V*(®‚x+E#ń†qҮվ·aÕü[ĒśīĖĒ ­Ä÷¼Ÿ„cšgI’7=ū,–Üt£x’Vśżé ?G0Ė£œŅęīSѵ’/$›·ŸCcšCŁ|9ž\›/Õą”õēTĆĆóį.XÆŗJā»/’Ęa÷/ū©·ŸQY‚ŗź21¶†Éķ†<ŌFĀ$Ā!ZM÷?vŪüŸÅ’ļć*ø¾TJ*Z^*'ŻSG>&“JD9$¬`ń{fUŪq¤Ž7ćÅ”FŠķ7Šł,Z¼_aw@s×ZpsÆÅŠ[ÆCŪó*ŻžA”·¢>|3ųń_…[K±•l’Neą‹sÄ÷$śį÷a.į®­(¢¼A˜©Ż¦ųļÄ0D14uŖ „ūßŲR朷}ūöōXüO— g³fN­Į1GĘSMąl„z‡üX’«„,ļŠyÅs=Õ[ū¢14Sń·'‘lqIūą#ąjg ‹×ÓŁ;’AeĘ®““’ŚP:ėó(T ŠX\š%ĮP ž!/ä\ÓƹQl·RģćąO’Ēī0Ć^˜’÷”’€:xń¾žĮo\š³+*9JźĀ·ß‹³ę"ܶp&„Cbpó‹b’Q  ”p3ģĢG™Ū ’YŠ…Ė T0;]ØżśĆČTLB?†Žī³˜­|J®m^ <§›QIF-åa=ŗUŸī…ŪdFŪĄ€Xė±½¦dņģ“ż}KiłAšlĖå|ķyĖćæŚ¤3ź×Ŗ„‚fł‚™··õQ?„Ay‘åFķFĒ‹ĻŠu}ęŗpø·Ķ ŸĮ\\k®æK Ū0æ.Ć‹pfh<2-§‘hj¢Z>† Ō»”PŒrĻXŽĖPĢbń@ęr!\V‰{ķE˜¹x!t' %{ŸėīėRGYĻø/0rąmæ’łžšAŒī=pß§~2Å©m:ƒab©Ż §FŠ­óń‰vH 4˜XQ·NŽį÷·CF¹@;’Z¼÷럔~ļ^š‹ńė˜63…£Ńr uų8}Ć(”śĪDÓ³ż\ņžøĒö؄܆ ńYŒÕ2ŹS¼Ć4Õ‰p'|$öŅ\Źöł~ćńü¶>y/‡y˜¦?w ƤŚsʹĪdž®Ų(ƛ’ā"øõ*²'åū¶DŠœvŒ³iÅÜÖ6čCoÓA(:P!9™Į‹wöZpĆü„pS<­jd‰c«³™^%łæ3yØÖPŅ9#÷éHT¬aÄG1šS_čė}öl*uNŁF^(7™ Ų!~ZR|3Æ3½—¬[€ī…+ąr¢Üf€A!`Ą7B}In‡Å†}$‡0>“¾Īƒhk+GY–jāņ2X©F±lŁ"īÓ^Š;?„/.ršķTtPlĖćgĒ@&żaO÷£Ō,6äųĆdHŃLē|ŠŠ*M UK\*ćŖ&įXõlčg]M˜m(7kČĪ<:üQ±ę­IC}ņ3É×zU(ī^‹Ö–ŗŻp57CżīļÅ:’JćJų™ž[Č7Ø?ėv‡’j€m^ļį}įš tŚE³“¦/;’ØI*µ=RRzŖ@&³™“ZDÕ:œśü*šå5(..D„‚ƒ½ż$„Ēam= )åjĖī ća¾ķ‹8z¬ •sēĄņö6hĻ»¢īƄŸ1®±ŗ„}Ūaų HW±Ø÷eĻ «wN`”+Œóģ;G0§6¦Ņ,¹ĻķžAµF;ÅI«Ń;õrźu,Ķ (öō@B5Šø_0F·żN“ƵO™‚Ä4Ź>/¬»÷\ŌJsUČÅsFu“Bžg2±ė,Ž4RŒŃś,fR®žļļ{ۓͲ=ä\ą}('K£ŪsóhZæbwüól½ž†üŽe]Y lߘb Ū»’Nć„ÕĖjó¶6h a¦N ŽöXģ鳍xĮöKT;±žńrųŁžŪggßÕŲŽü;>oóC”-t©?§ļąģlļ$žĆocśæFoX³Āj]G}ŒšõxµŌs±õ.ū`ĢŗQŠ“‰źjØ©Kźtp !‹ žLF!Ūo1½G6¶gæd°+QгĒH’Œ;ÉD|S’fŅŽ‘Ž\ˆ7‘žTīqĶ2ŅOŻJ›}}V7…ķSWR¬g}ā_ĀĻŪ/ŒéuŠ(éŽPŸH§ßŪFĶŌ8µśsw:œKē ZÖß%yžü~ŪEųGć N‘Ų÷LāĶžītšń†Åł.š'’› \ų¾\–³A”A*łĶ¢āoY ­“t6ždųKŗgė¦xž e²ž±Hż6Ÿļ­Ć±[7=ę¶™³4šÆÜl³­Zjµ9MĢgÄ=ž¼n˜Ī½ÄÕvŖÕvų‡;wæÅh¬ äōČé>Ļ{ŖĄĻ?ĪōĻ¶Ä Łļ/˜Ģė>g6_ķP(¤5Ä!éåb5ėĖC["į#ξNżĻĪþ¦ų؎®d²ņ*„ņÖ%fó-KĢ–¹StZóģ$ń†Å#éÆßŸzn {j”7ĮœŽó2ä¹£6L?/ĀM“Źé”Ūmö»®3™ĘWž|.‘åöĖHO®dņÄVĻą/)^ģNŽĘ“æe((‚-^j2­¹Łj»¶Ī`p[ÉGĪwnok<“LīdĖąoņśätŸ÷ŪüŠędpŅtŠ,+T(ęƤģĪY½ŒÕ ū¹x?X@ÓCü/ā,„Yx³Årē:—{\„ćšƒ^ņl„JŒ}ļūk.ż_–½¾šćøÕ§łŚ’q<“ĆĖįĀ'Ŗ‹ĘōyR ž00ī²€ Wö@NV(=R/home/heron/Development/gnustep/dev-apps/projectcenter/Images/subprojectSuitcaseH.tiffHHapps-projectcenter-master/Modules/000077500000000000000000000000001347226342500175775ustar00rootroot00000000000000apps-projectcenter-master/Modules/Debuggers/000077500000000000000000000000001347226342500215065ustar00rootroot00000000000000apps-projectcenter-master/Modules/Debuggers/ProjectCenter/000077500000000000000000000000001347226342500242555ustar00rootroot00000000000000apps-projectcenter-master/Modules/Debuggers/ProjectCenter/GNUmakefile000066400000000000000000000020421347226342500263250ustar00rootroot00000000000000# # GNUmakefile - ProjectCenter.debugger # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = ProjectCenter BUNDLE_EXTENSION = .debugger ProjectCenter_PRINCIPAL_CLASS = PCDebugger # # Additional libraries # ProjectCenter_LIBRARIES_DEPEND_UPON += # # Resource files # ProjectCenter_RESOURCE_FILES= \ Resources/PCDebugger.gorm \ Resources/Info.table \ Resources/go_button.png \ Resources/continue_button.png \ Resources/pause_button.png \ Resources/restart_button.png \ Resources/next_button.png \ Resources/stepin_button.png \ Resources/stepout_button.png \ Resources/up_button.png \ Resources/down_button.png # # Header files # ProjectCenter_HEADERS= \ PCDebugger.h \ PCDebugggerView.h \ PCDebuggerViewDelegateProtocol.h \ PipeDelegate.h # # Class files # ProjectCenter_OBJC_FILES= \ PCDebugger.m \ PCDebuggerView.m \ PipeDelegate.m #ADDITIONAL_OBJC_LIBS= include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PCDebugger.h000066400000000000000000000034321347226342500263770ustar00rootroot00000000000000/* ** PCDebugger ** ** Copyright (c) 2008-2016 ** ** Author: Gregory Casamento ** ** 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 */ #import #import #import #import extern const NSString *PCBreakTypeKey; extern NSString *PCBreakTypeByLine; extern NSString *PCBreakTypeMethod; extern const NSString *PCBreakMethod; extern const NSString *PCBreakFilename; extern const NSString *PCBreakLineNumber; extern NSString *PCDBDebuggerStartedNotification; @interface PCDebugger : NSObject { id debuggerView; id debuggerWindow; id statusField; NSString *executablePath; NSString *debuggerPath; int subProcessId; float gdbVersion; NSMutableArray *breakpoints; } - (void) setStatus: (NSString *) status; - (NSString *) status; - (NSString *)executablePath; - (void)setExecutablePath:(NSString *)p; - (void) interrupt; - (int) subProcessId; - (void) setSubProcessId:(int)pid; - (float) gdbVersion; - (void) setGdbVersion:(float)ver; @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PCDebugger.m000066400000000000000000000317171347226342500264130ustar00rootroot00000000000000/* ** PCDebugger.m ** ** Copyright (c) 2008-2016 ** ** Author: Gregory Casamento ** Riccardo Mottola > ** ** 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 */ #ifdef __MINGW32__ #undef _WIN32_WINNT #define _WIN32_WINNT 0x0501 // Minimal target is Windows XP #include #endif #import #import "PCDebugger.h" #import "PCDebuggerView.h" #import "Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h" #import "PCDebuggerViewDelegateProtocol.h" #import "PipeDelegate.h" #ifndef NOTIFICATION_CENTER #define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter] #endif static NSImage *goImage = nil; static NSImage *pauseImage = nil; static NSImage *continueImage = nil; static NSImage *restartImage = nil; static NSImage *nextImage = nil; static NSImage *stepInImage = nil; static NSImage *stepOutImage = nil; static NSImage *upImage = nil; static NSImage *downImage = nil; const NSString *PCBreakTypeKey = @"BreakType"; NSString *PCBreakTypeByLine = @"BreakTypeLine"; NSString *PCBreakTypeMethod = @"BreakTypeMethod"; const NSString *PCBreakMethod = @"BreakMethod"; const NSString *PCBreakFilename = @"BreakFilename"; const NSString *PCBreakLineNumber = @"BreakLineNumber"; NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification"; @implementation PCDebugger + (void) initialize { if (self == [PCDebugger class]) { NSBundle *bundle; NSString *path; bundle = [NSBundle bundleForClass: self]; path = [bundle pathForImageResource: @"go_button"]; if (path != nil) { goImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"pause_button"]; if (path != nil) { pauseImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"continue_button"]; if (path != nil) { continueImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"restart_button"]; if (path != nil) { restartImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"next_button"]; if (path != nil) { nextImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"stepin_button"]; if (path != nil) { stepInImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"stepout_button"]; if (path != nil) { stepOutImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"up_button"]; if (path != nil) { upImage = [[NSImage alloc] initWithContentsOfFile: path]; } path = [bundle pathForImageResource: @"down_button"]; if (path != nil) { downImage = [[NSImage alloc] initWithContentsOfFile: path]; } } } + (NSFont *)defaultConsoleFont { NSUserDefaults *df = [NSUserDefaults standardUserDefaults]; NSString *fontName; float fontSize; NSFont *font = nil; fontName = [df objectForKey:ConsoleFixedFont]; fontSize = [df floatForKey:ConsoleFixedFontSize]; if (fontName != nil && fontSize > 0) { font = [NSFont fontWithName:fontName size:fontSize]; } if (font == nil) { font = [NSFont userFixedPitchFontOfSize:0]; } return font; } - (id) init { if((self = [super init]) != nil) { id viewDelegate; // initialization here... if([NSBundle loadNibNamed: @"PCDebugger" owner: self] == NO) { return nil; } [(PCDebuggerView *)debuggerView setDebugger:self]; viewDelegate = [[PipeDelegate alloc] init]; [debuggerView setDelegate:viewDelegate]; [viewDelegate setTextView:debuggerView]; [viewDelegate setDebugger:self]; [viewDelegate release]; subProcessId = 0; gdbVersion = 0.0; breakpoints = nil; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNotification:) name: PCDBDebuggerStartedNotification object: nil]; } return self; } -(void) debugExecutableAtPath: (NSString *)filePath withDebugger: (NSString *)debugger { ASSIGN(executablePath,filePath); ASSIGN(debuggerPath,debugger); [debuggerWindow setTitle: [NSString stringWithFormat: @"Debugger (%@)",filePath]]; [self show]; } - (void) show { [debuggerWindow makeKeyAndOrderFront: self]; [self startDebugger]; } - (void) startDebugger { [debuggerView runProgram: debuggerPath inCurrentDirectory: [executablePath stringByDeletingLastPathComponent] withArguments: [[NSArray alloc] initWithObjects: @"--interpreter=mi", @"-f", executablePath, nil] logStandardError: YES]; } - (void) initBreakpoints { id viewDelegate; breakpoints = [[NSMutableArray alloc] init]; NSDictionary *dP; NSLog(@"initing breakpoints"); /* CRUDE EXAMPLES * TODO FIXME * dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeMethod, PCBreakTypeKey, @"[NSException raise]", PCBreakMethod, nil]; // [breakpoints addObject:dP]; dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeByLine, PCBreakTypeKey, @"AppController.m", PCBreakFilename, [NSNumber numberWithInt:100], PCBreakLineNumber, nil]; [breakpoints addObject:dP]; */ viewDelegate = [debuggerView delegate]; [viewDelegate setBreakpoints:breakpoints]; } - (void) debuggerSetup { id viewDelegate; viewDelegate = [debuggerView delegate]; [viewDelegate debuggerSetup]; } - (void) handleNotification: (NSNotification *)notification { [self initBreakpoints]; [self debuggerSetup]; } - (void) awakeFromNib { NSToolbar *toolbar = [(NSToolbar *)[NSToolbar alloc] initWithIdentifier: @"PCDebuggerToolbar"]; [toolbar setAllowsUserCustomization: NO]; [toolbar setDelegate: self]; [debuggerWindow setToolbar: toolbar]; RELEASE(toolbar); [debuggerView setFont: [PCDebugger defaultConsoleFont]]; [debuggerWindow setFrameAutosaveName: @"PCDebuggerWindow"]; [self setStatus: @"Idle."]; } - (NSWindow *)debuggerWindow { return debuggerWindow; } - (void)setDebuggerWindow: (NSWindow *)window { debuggerWindow = window; } - (NSView *)debuggerView { return debuggerView; } - (void)setDebuggerView: (id)view { debuggerView = view; } - (NSString *)executablePath { return executablePath; } - (void)setExecutablePath:(NSString *)p { ASSIGN(executablePath,p); } - (int) subProcessId { return subProcessId; } - (void) setSubProcessId: (int)pid { subProcessId = pid; } - (float) gdbVersion { return gdbVersion; } - (void) setGdbVersion:(float)ver { gdbVersion = ver; } // kill process - (void) interrupt { if(subProcessId != 0) { #ifndef __MINGW32__ kill(subProcessId,SIGINT); #else HANDLE proc; proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, (DWORD)subProcessId); if (proc == NULL) { DWORD lastError = GetLastError(); NSLog(@"error opening process %lu", (unsigned long)lastError); return; } if (DebugBreakProcess(proc)) { DWORD lastError = GetLastError(); NSLog(@"error sending break %lu", (unsigned long)lastError); } else { NSLog(@"break sent successfully"); } CloseHandle(proc); #endif } } // action methods for toolbar... - (void) go: (id) sender { /* each run makes a new PID but we parse it only if non-zero */ [self setSubProcessId:0]; [debuggerView putString: @"run\n"]; } - (void) pause: (id) sender { [self setStatus: @"Stopped."]; [self interrupt]; } - (void) continue: (id) sender { // [self setStatus: @"Continue..."]; [debuggerView putString: @"continue\n"]; } - (void) restart: (id) sender { // [self setStatus: @"Restarting..."]; [self interrupt]; /* each run makes a new PID but we parse it only if non-zero */ [self setSubProcessId:0]; [debuggerView putString: @"run\n"]; // [self setStatus: @"Running..."]; } - (void) next: (id) sender { // [self setStatus: @"Going to next line."]; [debuggerView putString: @"next\n"]; } - (void) stepInto: (id) sender { // [self setStatus: @"Stepping into method."]; [debuggerView putString: @"step\n"]; } - (void) stepOut: (id) sender { // [self setStatus: @"Finishing method."]; [debuggerView putString: @"finish\n"]; } - (void) up: (id) sender { // [self setStatus: @"Up to calling method."]; [debuggerView putString: @"up\n"]; } - (void) down: (id) sender { // [self setStatus: @"Down to called method."]; [debuggerView putString: @"down\n"]; } // Status.. - (void) setStatus: (NSString *) status { [statusField setStringValue: status]; } - (NSString *) status { return [statusField stringValue]; } - (void) dealloc { [breakpoints release]; [super dealloc]; } @end @implementation PCDebugger (NSToolbarDelegate) - (NSToolbarItem*)toolbar: (NSToolbar*)toolbar itemForItemIdentifier: (NSString*)itemIdentifier willBeInsertedIntoToolbar: (BOOL)flag { NSToolbarItem *toolbarItem = AUTORELEASE([[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]); if([itemIdentifier isEqual: @"GoItem"]) { [toolbarItem setLabel: @"Go"]; [toolbarItem setImage: goImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(go:)]; [toolbarItem setTag: 0]; } else if([itemIdentifier isEqual: @"PauseItem"]) { [toolbarItem setLabel: @"Pause"]; [toolbarItem setImage: pauseImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(pause:)]; [toolbarItem setTag: 1]; } else if([itemIdentifier isEqual: @"ContinueItem"]) { [toolbarItem setLabel: @"Continue"]; [toolbarItem setImage: continueImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(continue:)]; [toolbarItem setTag: 1]; } else if([itemIdentifier isEqual: @"RestartItem"]) { [toolbarItem setLabel: @"Restart"]; [toolbarItem setImage: restartImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(restart:)]; [toolbarItem setTag: 2]; } else if([itemIdentifier isEqual: @"NextItem"]) { [toolbarItem setLabel: @"Next"]; [toolbarItem setImage: nextImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(next:)]; [toolbarItem setTag: 3]; } else if([itemIdentifier isEqual: @"StepIntoItem"]) { [toolbarItem setLabel: @"Step Into"]; [toolbarItem setImage: stepInImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(stepInto:)]; [toolbarItem setTag: 4]; } else if([itemIdentifier isEqual: @"StepOutItem"]) { [toolbarItem setLabel: @"Step Out"]; [toolbarItem setImage: stepOutImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(stepOut:)]; [toolbarItem setTag: 5]; } else if([itemIdentifier isEqual: @"UpItem"]) { [toolbarItem setLabel: @"Up"]; [toolbarItem setImage: upImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(up:)]; [toolbarItem setTag: 6]; } else if([itemIdentifier isEqual: @"DownItem"]) { [toolbarItem setLabel: @"Down"]; [toolbarItem setImage: downImage]; [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(down:)]; [toolbarItem setTag: 7]; } return toolbarItem; } - (NSArray*) toolbarAllowedItemIdentifiers: (NSToolbar*)toolbar { return [NSArray arrayWithObjects: @"GoItem", @"PauseItem", @"ContinueItem", @"RestartItem", @"NextItem", @"StepIntoItem", @"StepOutItem", @"UpItem", @"DownItem", nil]; } - (NSArray*) toolbarDefaultItemIdentifiers: (NSToolbar*)toolbar { return [NSArray arrayWithObjects: @"GoItem", @"PauseItem", @"ContinueItem", @"RestartItem", @"NextItem", @"StepIntoItem", @"StepOutItem", @"UpItem", @"DownItem", nil]; } - (NSArray*) toolbarSelectableItemIdentifiers: (NSToolbar*)toolbar { return [NSArray arrayWithObjects: @"GoItem", @"PauseItem", @"ContinueItem", @"RestartItem", @"NextItem", @"StepIntoItem", @"StepOutItem", @"UpItem", @"DownItem", nil]; } @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PCDebuggerView.h000066400000000000000000000030761347226342500272360ustar00rootroot00000000000000/* ** PCDebuggerView ** ** Copyright (c) 2008-2016 ** ** Author: Gregory Casamento ** Riccardo Mottola ** ** 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 */ #import #import #import "PCDebuggerViewDelegateProtocol.h" @class PCDebugger; @interface PCDebuggerView : NSTextView { PCDebugger *debugger; id viewDelegate; NSString *currentFile; } - (void) setDebugger:(PCDebugger *)theDebugger; - (id )delegate; - (void) setDelegate:(id ) vd; - (void) setCurrentFile: (NSString *)fileName; - (NSString *) currentFile; - (void) runProgram: (NSString *)path inCurrentDirectory: (NSString *)directory withArguments: (NSArray *)array logStandardError: (BOOL)logError; - (void) putString: (NSString *)string; @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PCDebuggerView.m000066400000000000000000000051431347226342500272400ustar00rootroot00000000000000/* ** PCDebuggerView ** ** Copyright (c) 2008-2016 ** ** Author: Gregory Casamento ** Riccardo Mottola ** ** 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 */ #import "PCDebuggerView.h" #import "PCDebugger.h" #import #import #import #import #ifndef NOTIFICATION_CENTER #define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter] #endif @implementation PCDebuggerView -(void)setDebugger:(PCDebugger *)theDebugger { debugger = theDebugger; } - (id )delegate { return viewDelegate; } - (void) setDelegate:(id ) vd { if (viewDelegate != vd) { [viewDelegate release]; viewDelegate = vd; [viewDelegate retain]; } } /** * Log string to the view. */ - (void) logString:(NSString *)str newLine:(BOOL)newLine { [viewDelegate logString: str newLine: newLine withColor:[viewDelegate debuggerColor]]; } - (void) setCurrentFile: (NSString *)fileName { ASSIGN(currentFile,fileName); } - (NSString *) currentFile { return currentFile; } - (void) terminate { [viewDelegate terminate]; } - (void) mouseDown: (NSEvent *)event { // do nothing... } /** * Start the program. */ - (void) runProgram: (NSString *)path inCurrentDirectory: (NSString *)directory withArguments: (NSArray *)array logStandardError: (BOOL)logError { [viewDelegate runProgram: path inCurrentDirectory: directory withArguments: array logStandardError: logError]; } - (void) putString: (NSString *)string { NSAttributedString* attr = [[NSAttributedString alloc] initWithString:string]; [[self textStorage] appendAttributedString:attr]; [self scrollRangeToVisible:NSMakeRange([[self string] length], 0)]; [viewDelegate putString:string]; } - (void) keyDown: (NSEvent*)theEvent { [viewDelegate keyDown:theEvent]; } @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h000066400000000000000000000032661347226342500324140ustar00rootroot00000000000000/* ** PCDebuggerViewDelegateProtocol.h ** ** Copyright (c) 2016 ** ** Author: Riccardo Mottola ** ** 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 */ #import @class NSColor; @class NSTextView; @class NSArray; @class NSString; @class PCDebugger; @protocol PCDebuggerViewDelegateProtocol - (NSColor *)userInputColor; - (NSColor *)debuggerColor; - (NSColor *)messageColor; - (NSColor *)errorColor; - (NSTextView *)textView; - (void)setTextView: (NSTextView *)tv; - (PCDebugger *)debugger; - (void)setDebugger:(PCDebugger *)dbg; - (void) runProgram: (NSString *)path inCurrentDirectory: (NSString *)directory withArguments: (NSArray *)array logStandardError: (BOOL)logError; - (void)logString:(NSString *)str newLine:(BOOL)newLine withColor:(NSColor *)color; - (void) setBreakpoints:(NSArray *)breakpoints; - (void) terminate; - (void) interrupt; - (void) putString: (NSString *)string; - (void) keyDown: (NSEvent*)theEvent; - (void) debuggerSetup; @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PipeDelegate.h000066400000000000000000000036601347226342500267630ustar00rootroot00000000000000/* ** PipeDelegate ** ** Copyright (c) 2008-2016 ** ** Author: Gregory Casamento ** Riccardo Mottola ** ** 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 */ #import #import #import "PCDebuggerViewDelegateProtocol.h" typedef enum PCDebuggerOutputType_enum { PCDBNotFoundRecord = 0, PCDBPromptRecord, PCDBResultRecord, PCDBConsoleStreamRecord, PCDBTargetStreamRecord, PCDBDebugStreamRecord, PCDBAsyncStatusRecord, PCDBAsyncInfoRecord, PCDBBreakpointRecord, PCDBFrameRecord, PCDBThreadRecord, PCDBAdaExceptionRecord, PCDBEmptyRecord } PCDebuggerOutputTypes; @interface PipeDelegate : NSObject { PCDebugger *debugger; NSTextView *tView; NSTask *task; NSFileHandle *stdinHandle; NSFileHandle *stdoutHandle; NSFileHandle *error_handle; NSColor *userInputColor; NSColor *debuggerColor; NSColor *messageColor; NSColor *errorColor; NSColor *promptColor; BOOL debuggerStarted; } - (void)logStdOut:(NSNotification *)aNotif; - (void)logErrOut:(NSNotification *)aNotif; - (void) taskDidTerminate: (NSNotification *)notif; - (NSString *) startMessage; - (NSString *) stopMessage; - (void) putChar:(unichar)ch; @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/PipeDelegate.m000066400000000000000000000415651347226342500267760ustar00rootroot00000000000000/* ** PipeDelegate.m ** ** Copyright (c) 2008-2016 Free Software Foundation ** ** Author: Gregory Casamento ** Riccardo Mottola ** ** 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 */ #include #include #include /* for stderr and perror*/ #include /* for int errno */ #include #include #include #include #include #import "PipeDelegate.h" #import "PCDebugger.h" #ifndef NOTIFICATION_CENTER #define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter] #endif @implementation PipeDelegate - (id)init { if ((self = [super init])) { userInputColor = [[NSColor blueColor] retain]; debuggerColor = [[NSColor blackColor] retain]; messageColor = [[NSColor brownColor] retain]; errorColor = [[NSColor redColor] retain]; promptColor = [[NSColor purpleColor] retain]; debuggerStarted = NO; } return self; } - (NSTextView *)textView { return tView; } - (void)setTextView: (NSTextView *)tv { if (tView != tv) { [tView release]; tView = tv; [tView retain]; } } - (PCDebugger *)debugger { return debugger; } - (void)setDebugger:(PCDebugger *)dbg { if (debugger != dbg) { [debugger release]; debugger = dbg; [debugger retain]; } } - (NSColor *)userInputColor { return userInputColor; } - (NSColor *)debuggerColor { return debuggerColor; } - (NSColor *)messageColor { return messageColor; } - (NSColor *)errorColor { return errorColor; } /** * Log string to the view. */ - (void) logString:(NSString *)str newLine:(BOOL)newLine withColor:(NSColor *)color { NSMutableDictionary *textAttributes; NSAttributedString *attrStr; if (newLine) { str = [str stringByAppendingString:@"\n"]; } textAttributes = [NSMutableDictionary dictionary]; [textAttributes setObject:[NSFont userFixedPitchFontOfSize:0] forKey:NSFontAttributeName]; if (color) { [textAttributes setObject:color forKey:NSForegroundColorAttributeName]; } attrStr = [[NSAttributedString alloc] initWithString: str attributes: textAttributes]; [[tView textStorage] appendAttributedString: attrStr]; [attrStr release]; [tView scrollRangeToVisible:NSMakeRange([[tView string] length], 0)]; [tView setNeedsDisplay:YES]; } - (PCDebuggerOutputTypes) parseStringLine: (NSString *)stringInput { BOOL found = NO; NSScanner *stringScanner; NSString *prefix = NULL; if ([stringInput length] == 0) return PCDBEmptyRecord; stringScanner = [NSScanner scannerWithString: stringInput]; //NSLog(@"parsing: |%@|", stringInput); [stringScanner scanString: @"(gdb)" intoString: &prefix]; if(prefix != nil) { if(debuggerStarted == NO) { [NOTIFICATION_CENTER postNotificationName:PCDBDebuggerStartedNotification object: nil]; debuggerStarted = YES; } return PCDBPromptRecord; } [stringScanner scanString: @"=" intoString: &prefix]; if(prefix != nil) { NSString *dictionaryName = NULL; found = YES; [stringScanner scanUpToString: @"," intoString: &dictionaryName]; if([dictionaryName isEqualToString: @"thread-group-started"]) { NSLog(@"%@",dictionaryName); } if(dictionaryName != nil) { NSString *key = NULL; NSString *value = NULL; while([stringScanner isAtEnd] == NO) { [stringScanner scanString: @"," intoString: NULL]; [stringScanner scanUpToString: @"=" intoString: &key]; [stringScanner scanString: @"=" intoString: NULL]; [stringScanner scanString: @"\"" intoString: NULL]; [stringScanner scanUpToString: @"\"" intoString: &value]; [stringScanner scanString: @"\"" intoString: NULL]; if([key isEqualToString:@"pid"] && [dictionaryName isEqualToString: @"thread-group-started"]) { [debugger setSubProcessId: [value intValue]]; } } } return PCDBAsyncInfoRecord; } [stringScanner scanString: @"*" intoString: &prefix]; if(prefix != nil) { return PCDBAsyncStatusRecord; } [stringScanner scanString: @"<-" intoString: &prefix]; if(prefix != nil) { return PCDBBreakpointRecord; } [stringScanner scanString: @"->" intoString: &prefix]; if(prefix != nil) { return PCDBBreakpointRecord; } [stringScanner scanString: @"~" intoString: &prefix]; if(prefix != nil) { if ([debugger gdbVersion] == 0.0) { NSString *str1 = nil; NSString *str2 = nil; [stringScanner scanString: @"\"GNU gdb" intoString: &str1]; if (str1 != nil) { [stringScanner scanString: @" (GDB)" intoString: &str2]; } if (str2 != nil || str1 != nil) { float v; if ([stringScanner scanFloat:&v]) { NSLog(@"GDB version string: %f", v); [debugger setGdbVersion:v]; } } } if (([debugger gdbVersion] < 7) && [debugger subProcessId] == 0) { NSString *str1; // we attempt to parse: [New thread 6800.0x18ec] [stringScanner scanString: @"\"[New thread" intoString: &str1]; if (str1 != nil) { int v; if([stringScanner scanInt:&v]) { NSLog(@"sub process id: %d", v); [debugger setSubProcessId:v]; } } } return PCDBConsoleStreamRecord; } [stringScanner scanString: @"@" intoString: &prefix]; if(prefix != nil) { return PCDBTargetStreamRecord; } [stringScanner scanString: @"&" intoString: &prefix]; if(prefix != nil) { return PCDBDebugStreamRecord; } [stringScanner scanString: @"^" intoString: &prefix]; if(prefix != nil) { NSString *result = nil; [stringScanner scanString: @"done" intoString: &result]; if(result != nil) { [debugger setStatus: @"Done"]; return PCDBResultRecord; } [stringScanner scanString: @"running" intoString: &result]; if(result != nil) { [debugger setStatus: @"Running"]; return PCDBResultRecord; } [stringScanner scanString: @"connected" intoString: &result]; if(result != nil) { [debugger setStatus: @"Connected"]; return PCDBResultRecord; } [stringScanner scanString: @"error" intoString: &result]; if(result != nil) { [debugger setStatus: @"Error"]; return PCDBResultRecord; } [stringScanner scanString: @"exit" intoString: &result]; if(result != nil) { [debugger setStatus: @"Exit"]; return PCDBResultRecord; } return PCDBResultRecord; } NSLog(@"No match found parse: |%@|", stringInput); return PCDBNotFoundRecord; } - (NSString *)unescapeOutputRecord: (NSString *)recordString { NSString *unescapedString = [recordString copy]; if ([unescapedString hasPrefix:@"~\""]) unescapedString = [unescapedString substringFromIndex:2]; if ([unescapedString hasSuffix:@"\""])\ unescapedString = [unescapedString substringToIndex: [unescapedString length] - 1]; unescapedString = [unescapedString stringByReplacingOccurrencesOfString: @"\\\"" withString: @"\""]; unescapedString = [unescapedString stringByReplacingOccurrencesOfString: @"\\n" withString: @"\n"]; unescapedString = [unescapedString stringByReplacingOccurrencesOfString: @"\\t" withString: @"\t"]; unescapedString = [unescapedString stringByReplacingOccurrencesOfString: @"\\032" withString: @" "]; return unescapedString; } - (void) parseString: (NSString *)inputString { NSArray *components; NSEnumerator *en; NSString *item = nil; #if defined(__MINGW32__) components = [inputString componentsSeparatedByString:@"\r\n"]; #else components = [inputString componentsSeparatedByString:@"\n"]; #endif en = [components objectEnumerator]; while((item = [en nextObject]) != nil) { PCDebuggerOutputTypes outtype = [self parseStringLine: item]; if(outtype == PCDBConsoleStreamRecord || outtype == PCDBTargetStreamRecord) { NSString *unescapedString = [self unescapeOutputRecord: item]; [self logString: unescapedString newLine: NO withColor:debuggerColor]; } else if(outtype == PCDBPromptRecord) { [self logString: item newLine: NO withColor:promptColor]; } /* else if(outtype == PCDBNotFoundRecord) { [self logString: item newLine: NO withColor:promptColor]; } */ } /* stringRange = [inputString rangeOfString: "(gdb)" options: NULL]; if(stringRange.location == NSNotFound) { [self logString: inputString newLine: NO withColor:debuggerColor]; } else { } */ } /** * Log standard out. */ - (void) logStdOut:(NSNotification *)aNotif { NSData *data; NSFileHandle *handle = stdoutHandle; if ((data = [handle availableData]) && [data length] > 0) { NSString *dataString; dataString = [[NSString alloc] initWithData:data encoding:[NSString defaultCStringEncoding]]; // if( ! [self parseString: dataString]; // ) // { // [self logString: dataString newLine: NO withColor:debuggerColor]; // } RELEASE(dataString); } if (task) { [handle waitForDataInBackgroundAndNotify]; } else { [NOTIFICATION_CENTER removeObserver: self name: NSFileHandleDataAvailableNotification object: handle]; } } /** * Log error out. */ - (void) logErrOut:(NSNotification *)aNotif { NSData *data; NSFileHandle *handle = error_handle; if ((data = [handle availableData]) && [data length] > 0) { NSString *dataString; dataString = [[NSString alloc] initWithData:data encoding:[NSString defaultCStringEncoding]]; // if(![self parseString: dataString]) { [self logString: dataString newLine: NO withColor:errorColor]; } RELEASE(dataString); } if (task) { [handle waitForDataInBackgroundAndNotify]; } else { [NOTIFICATION_CENTER removeObserver:self name: NSFileHandleDataAvailableNotification object: handle]; } } /** * Notified when the task is completed. */ - (void) taskDidTerminate: (NSNotification *)notif { NSLog(@"Task Terminated..."); [self logString: [self stopMessage] newLine:YES withColor:messageColor]; } /** * Message to print when the task starts */ - (NSString *) startMessage { return @"=== Task Started ==="; } /** * Message to print when the task stops */ - (NSString *) stopMessage { return @"\n=== Task Stopped ==="; } /** * Start the program. */ - (void) runProgram: (NSString *)path inCurrentDirectory: (NSString *)directory withArguments: (NSArray *)array logStandardError: (BOOL)logError { NSPipe *inPipe; NSPipe *outPipe; task = [[NSTask alloc] init]; [task setArguments: array]; [task setCurrentDirectoryPath: directory]; [task setLaunchPath: path]; inPipe = [NSPipe pipe]; outPipe = [NSPipe pipe]; stdinHandle = [[inPipe fileHandleForWriting] retain]; stdoutHandle = [[outPipe fileHandleForReading] retain]; [task setStandardOutput: outPipe]; [task setStandardInput: inPipe]; [stdoutHandle waitForDataInBackgroundAndNotify]; // Log standard error, if requested. if(logError) { [task setStandardError: [NSPipe pipe]]; error_handle = [[task standardError] fileHandleForReading]; [error_handle waitForDataInBackgroundAndNotify]; [NOTIFICATION_CENTER addObserver:self selector:@selector(logErrOut:) name:NSFileHandleDataAvailableNotification object:error_handle]; } // set up notifications to get data. [NOTIFICATION_CENTER addObserver:self selector:@selector(logStdOut:) name:NSFileHandleDataAvailableNotification object:stdoutHandle]; [NOTIFICATION_CENTER addObserver:self selector:@selector(taskDidTerminate:) name:NSTaskDidTerminateNotification object:task]; // run the task... NS_DURING { [self logString: [self startMessage] newLine:YES withColor:messageColor]; [task launch]; } NS_HANDLER { NSRunAlertPanel(@"Problem Launching Debugger", [localException reason], @"OK", nil, nil, nil); NSLog(@"Task Terminated Unexpectedly..."); [self logString: @"\n=== Task Terminated Unexpectedly ===\n" newLine:NO withColor:messageColor]; //Clean up after task is terminated [[NSNotificationCenter defaultCenter] postNotificationName: NSTaskDidTerminateNotification object: task]; } NS_ENDHANDLER } - (void) terminate { if(task) { [task terminate]; } } - (void) dealloc { [NOTIFICATION_CENTER removeObserver: self]; [self terminate]; [userInputColor release]; [debuggerColor release]; [messageColor release]; [errorColor release]; [tView release]; [super dealloc]; } - (void) putString: (NSString *)string; { unichar *str = (unichar *)[string cStringUsingEncoding: [NSString defaultCStringEncoding]]; int len = strlen((char *)str); NSData *data = [NSData dataWithBytes: str length: len]; [stdinHandle writeData: data]; [stdinHandle synchronizeFile]; } /* for input as typed from the user */ - (void) typeString: (NSString *)string { NSUInteger strLen; strLen = [string length]; [self putString:string]; // if we have a single backspace or delete character if (strLen == 1 && [string characterAtIndex:strLen-1] == '\177') { NSUInteger textLen; textLen = [[tView string] length]; [tView setSelectedRange:NSMakeRange(textLen-1, 1)]; [tView delete:nil]; return; } [self logString:string newLine:NO withColor:userInputColor]; } /** * Put a single character into the stream. */ - (void) putChar:(unichar)ch { NSData *data = [NSData dataWithBytes: &ch length: 1]; [stdinHandle writeData: data]; } - (void) interrupt { [task interrupt]; } /** * Respond to key events and pipe them down to the debugger */ - (void) keyDown: (NSEvent*)theEvent { NSString *chars; chars = [theEvent characters]; if ([chars length] == 0) { } else if ([chars length] == 1) { unichar c; c = [chars characterAtIndex: 0]; //NSLog(@"char: %d", c); if (c == 3) // ETX, Control-C { [self interrupt]; // send the interrupt signal to the subtask } else if (c == 13) // CR { [self typeString: @"\n"]; } else if (c == 127) // del (usually backspace) { NSString *tss = [[tView textStorage] string]; if (![tss hasSuffix:@"\n"] && ![tss hasSuffix:@"(gdb) "]) { [self typeString: chars]; } } else { [self typeString: chars]; } } else NSLog(@"characters: |%@|", chars); } - (void) setBreakpoints:(NSArray *)breakpoints { NSDictionary *bp; NSEnumerator *e; // TODO e = [breakpoints objectEnumerator]; while ((bp = [e nextObject])) { NSString *bpType; NSString *bpString; bpType = [bp objectForKey:PCBreakTypeKey]; bpString = nil; if ([bpType isEqualToString:PCBreakTypeByLine]) { NSString *fileName; NSNumber *lineNumber; fileName = [bp objectForKey:PCBreakFilename]; lineNumber = [bp objectForKey:PCBreakLineNumber]; bpString = [NSString stringWithFormat:@"-break-insert -f %@:%@\n", fileName, lineNumber]; } else if ([bpType isEqualToString:PCBreakTypeMethod]) { NSString *methodName; methodName = [bp objectForKey:PCBreakMethod]; bpString = [NSString stringWithFormat:@"-interpreter-exec console \"break %@\"\n", methodName]; } else { NSLog(@"Unknown breakpoint type: %@", bpType); } if (bpString) { NSString *command; /* TODO: split into a separate insert function */ command = bpString; NSLog(@"gdb mi command is: %@", command); [self putString: command]; } } } - (void) debuggerSetup { NSString *command = @"set confirm off\n"; [self putString: command]; } @end apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/000077500000000000000000000000001347226342500262275ustar00rootroot00000000000000apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/Info.table000066400000000000000000000003111347226342500301260ustar00rootroot00000000000000{ Type = "Debugger"; Name = "ProjectCenter"; Description = "Default ProjectCenter code debugger"; PrincipalClassName = "PCDebugger"; FileTypes = (app,debug,""); ProvidesBrowserItems = NO; }apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm/000077500000000000000000000000001347226342500311415ustar00rootroot00000000000000apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm/data.classes000066400000000000000000000005541347226342500334350ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; PCDebugger = { Actions = ( ); Outlets = ( debuggerView, debuggerWindow, statusField ); Super = NSObject; }; PCDebuggerView = { Actions = ( ); Outlets = ( ); Super = PTYView; }; PTYView = { Actions = ( ); Outlets = ( ); Super = NSTextView; }; }apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm/data.info000066400000000000000000000002701347226342500327260ustar00rootroot00000000000000GNUstep archive00002e7c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/PCDebugger.gorm/objects.gorm000066400000000000000000000061131347226342500334610ustar00rootroot00000000000000GNUstep archive00002e7c:0000001f:00000051:00000001:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder% ?€ A D@ CŅ€&% DĄ D@01 NSView% ?€ A D@ CŅ€  D@ CŅ€&01 NSMutableArray1 NSArray&01 NSScrollView%  D CČ  D CČ&0± &0 1 NSClipView% AØ @ D@ CĘ  D@ CĘ&0 ± &0 1GSTextViewTemplate0 ±&%PCDebuggerView1 NSTextView1NSText%  D@ CČ  D@ CČ&0 ± &01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor D@ CČ K–€ K–€0±°°0±& % textColor D@ K–€°01 NSScroller1 NSControl% @ @ A CĘ  A CĘ&0± &%01NSCell0±&01NSFont%&&&&&&&&&&&&&&&°2 _doScroll:v24@0:8@16° % A A A A °01 NSTextField% CČ BP A  BP A& 0± &%01NSTextFieldCell1 NSActionCell0±&%Status:0±% A0°&&&&&&&& &&&&&&%’0±°0±&%System0 ±&%textBackgroundColor0!±°°0"±& % textColor’0#±% BP CČ D A  D A& 0$± &%0%±0&±&0'±% A°&&&&&&&&& &&&&&&%’0(±°0)±&%System0*±&%textBackgroundColor0+±°°)0,±& % textColor’0-±°0.±&%System0/±&%windowBackgroundColor00±&%Window01±&%Debugger°1 DĄ C†F@ F@%&  Dš D–02± &°03± &041NSMutableDictionary1 NSDictionary&05±& % TextField(0)°06±&%NSOwner07±& % PCDebugger08±& % ScrollView(0)°09±& % My Window°0:±& % TextView(0)° 0;±& % TextField(1)°#0<±&%View(0)°0=± &  0>1NSNibConnector°90?±&%NSOwner0@±°<°90A±°8°<0B±°:°80C1NSNibOutletConnector°:°?0D1NSMutableString&%delegate0E±°9°?0F±&%delegate0G±°9°:0H±&%initialFirstResponder0I±°?°90J±&%debuggerWindow0K±°?°:0L±& % debuggerView0M±°5°<0N±°;°<0O±°?°;0P±& % statusField0Q±&°:° apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/continue_button.png000066400000000000000000000015561347226342500321630ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’’’ ½§“ pHYs  šœtIMEŲ  ©Œ‚tEXtCommentCreated with The GIMPļd%nŅIDATXĆķ—KHTQĒēĪĖGųĶ jJZd #¦ÄŲʈYT$Į- zjµ­ M›61C0®#‚”„¦…2ˆÄ mD¤†p#F˜ųHrœię¶č&3ć½Ž3jAŌ·ŗ—sĪ÷żĻ÷üų×Eä²Y {Om€ Øʵ„9 D€~į n+5ģ½tµ’z'€š„ŗ·@ {?p|“ŗ„'ō.gjŲ{xŲ¶ęąžP4Ķų‹mĪ·v=ĀĄķo·įęzžpg‡ĆŖ³ŃÆg¼wh‹U°«ĢAc]³ «T”8dŲ4ŻĶ†в=Ø+Ohķ;pć7Ļģ£źģÆŗ8¶æ4O\MÆ%k±Ó“l8,|ž_„„ė ·žŒóõŪwY6”¬&cZēŖ +ń$ŖöK¤š÷MQw)Ģ殏$“Ŗ™ŠZĶÖ:“™,̳PYjGX^ɼńō—w‚øÆ^6SÕ¦Ąevj5‘bq9A¾MaGžUwĻŲ‡Eź;†¾šBU ½įŅPm ™‚xB%O!6č”+ń×üćœ{0ĘÄŌ’Ž–j=åS°Ł©lėłÄ”Ž!^Ļd/•U™żµD”•ŹUeƽ"ĄœŒ}g‘Yū­Gœ LžÄÓģæüŅą<ēßJIEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/down_button.png000066400000000000000000000010611347226342500312750ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’’’ ½§“ pHYs  šœtIMEŲ Xž-tEXtCommentCreated with The GIMPļd%n•IDATXĆķ—1NĆ@EßFäœ ”VŠŠ¬ Hć’4>Ur–¤Źhp¹M R ”¤š|#™fƒ"gĢ®;‚)×㙿fg’Ā_7UǹHĀ[` Ą8·Ÿ2 6ĄJióŅ*€" €)péw ,”6Ė£Ix ́QC†×ĄLió^@‘„÷Ą#Š?²Ģ9)mbo6łSĖż6‘@Ø ŚßZŲ¹Äİ\Žžą8ļ 96ę¼¼Ųŗ}Ōį±ŁßvVr˜ŌH×}÷ׅ˃°CęłØ©ęąn7¬ö»‚ŗØacą@Šb—R š2 łģÖ*60z š²Qż=ŲūTŚōńIŲQˆĒ0.š&(—Āń_&H%u؁šJ6ҬK±§’FÅ«*±•xIųQCõ4µ­ŅęŖź6\œ`÷ —xķšF\+mn\z`fÅCŪ–ŪŲüĄ*–Ø‘$N{Ó/&-1‘WéĮJ{ †VZ7®¹Õńļ|˜œāiöo_„-™Ąńń,MIEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/go_button.png000066400000000000000000000013651347226342500307420ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’’’ ½§“ pHYs  šœtIMEŲ :ßŖgœtEXtCommentCreated with The GIMPļd%nYIDATXĆķ—KhSA†æI›t%ć ]„P-ŗk‘[7ÉJ BĮ¢’Øk×n$Eh×āʈļ¦B[AbqSjŌ ŁEjI} ±¹n©ķÜg¢ :Ė{ĻĢ’Ķ9ǵ}7ĘF1yH1 „䯠 ”q”é: `“ē€,qønš>Ś€QLīņĄ€GO9”éĻ\Åä ąąo3ĢM -4½ą@Šßķp¾„TĀÄķO:°s•'ā«ĆįSę­Äē^ürmLd¶›&\«e°ūL‰§/ź^!¤†©²V³ē¼«7Ģ=ęŅ­>}łī"«EĘŃ9_j¶ČÕˆž.róŽk–— 7©µĘ ·[™{æÄ•‘Yā&ØĪ}v35”ˆy ģō«ōgJŒ<Øa޼S„Ū9c_æµ8ŸŸįŲõifkķĢĆ*€Ż¬€ßg 26ł–=™÷'ŽX™…¬ź€é® 8²Ū²”‡m{…c%ĄB'ŹŻŠŽM<¼ē@_!LƚŸZŻ+>V­ķˆ_;ÕĖÕtƓPUUeÆ×®OĄčå~ĪŻåtJY‚q/āū£AŹ#ƒnÄŃ«ī‚ēvÕPh:›×Č_ģćų”ķtw¹ŹåŠŠōØŁ)¶½Ņŗ™#;yy[ć䊷āk4TżĄ¤U.”+ub‘ ×<š~Š®ČÉęA]C½‹7åŚXȎ%żžiUsź3I“²ņ„Ė§ĢšRŸE¶€øl­=Ē\ö…æóaņ'žf’Ēēi½«ń2¹'IEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/next_button.png000066400000000000000000000010411347226342500313020ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’¾NmƒĆ~ pHYs  šœtIMEŲ 1» 1tEXtCommentCreated with The GIMPļd%n…IDATXĆķ—1rĀ0EŸ<É (r Ś iƒOPą’V2+%=UÕōž|ogwÖßĀ_wMē¾LX!HS“@ .Ī£ōeś l€čĀy`ēāüõ&€¾Lļ-°śf†+ąÅÅłńj€¾LŸ€7`~ć6kēū‹Dü}äó–iĪ“öV®ebyŗwJĒ­OÜÅłōā6‰¹Ģż0ü8SNūj²_‰† „6ulT¹d"€H“Ī2ŽĄ‰°0Xh”!@؆Æ ĢcŠźv@kŠjµ!@­†Å€ŲØĘ@¼Z¶Ó*Ųģ¼?#ńpՄāÕ©OüqC2SLĒXO°śµfNgē³2”cå™Ļ”zÆb°¼ńLT’öżļ|˜X<Ķžć mńķ,fŁIEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/restart_button.png000066400000000000000000000020101347226342500320050ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’’’ ½§“ pHYs  šœtIMEŲ žFųtEXtCommentCreated with The GIMPļd%nlIDATXĆķ—OhgĘ_ŗ+sŁEŒÄŹĘKXC*&¦¶.b z HšŅń 6Š”j’\Ś‹‡B"htV!uLGI‰eŪ.źe±Fa·I'™]ĒĆN¶“É7ū'†RØļiŁļ÷y¾gŽļżž’{ˆj’ĶÉĪż@P& ÖZšžįčĦ0';æzę ėžŒˆpō‡"`NvŠN'E8:ķ–PSü(0å.ĀŃJ„€)«Vå¬ĘoIł*#įĘÜHŌøČ>źVm<1Ėg_欖ĄØU»¬ò'fŁŁ3Ƒož’L&„Jģģ™a<1[J‰į’Mhuū÷Ԏ4MC×u·~)QUUy8°ÕČWöÓįT WĒŃuÆ×K[[+”Ļׁx½^t]'Ó1°ąF Wś ¬!Óģ”]Ó4LÓÄēó1~¾é”.ģ`»Ėp€±³­ų|>LÓDÓ4·×Ńla­S āĢ~]ؽńģudXvš=£/’CˆĀ <k„*߯Y.LF!č‹äd)šŒ@ĢŁH@”ūgž%¹÷d®$h.’€›žäēgæÖ4¤ «Ęv”LXN¦WNŌ”( †apōb’{OŽHĮółwx>©aģĮō żŽaäP…+'ź¤nÉnٜ§`Ä©‚ŖŖ!Čf³æō g^q’éZ5&¦ß²§÷ŻßĪĶž…UUŻv?RŅ’™“q§ Z½ =lóoaQϱb$_ZĪc©Pī6Lˆpō‹r~ą$`Ų’x8°•ėż»Ł^’)oVČ,ęXZĪ“żūp!\ļßķnXµĖ›R›%“±Į˜‡T*E&“Įļ÷ é‹äÜ$_c"½Q±+¶HŒ–ó…„tĖĄKŽbėvĖZo4@»ų’Ćäßų4ūļĮ\UÉ1ąDIEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/stepin_button.png000066400000000000000000000010271347226342500316320ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’¾NmƒĆ~ pHYs  šœtIMEŲ 䘃9tEXtCommentCreated with The GIMPļd%n{IDATXĆķ—!rĀ@†æeŹ 8‚ŹŠ(jvj0‘Åp€Ŗp–`Ś`@®ĮtbZ…Ø,‚3pDjv:!¼,Y’ģ0Ó®Lvß’ķ?Ł·ąÆå39Ļā'`DĄŲW`lŅę½U€<‹_€Õ¬»J›·Fy?)0¾ŅįO`®“łņȳųX}q”6Ņiź˜)mÖŅĖžC|U%ī9śĄŹÖ¼ `m_všĮ/m틤-ķ\r"uŲÆ}Üį±[J’½'l“Y­3&;šDˆDĄ0 ĄÆÖ]įįĄŁ³…ĪēšSŃĻ“z7!]Ģ-Ś(\Sü ģ›īĪcē{ `ŪÄbŪ‹ZE€g:ŗVüDK•Š~č†;„ͽt Ąkķ>Ķžć”÷‰Į3ņIEND®B`‚apps-projectcenter-master/Modules/Debuggers/ProjectCenter/Resources/up_button.png000066400000000000000000000010461347226342500307550ustar00rootroot00000000000000‰PNG  IHDR szzōbKGD’’’ ½§“ pHYs  šœtIMEŲ #īų5tEXtCommentCreated with The GIMPļd%nŠIDATXĆķ—/RĆ@‡æķĄ "8AHD§¢˜5‘Ōō(z–Tq ‘k*`b@0H9CNPĢ–Iӗ’›Ģ0šäf³ļŪßī¾ż-üõPM:§‘ ́ 0<ū)b` l”6/NŅČæīóšć~k„ĶC'€4ņ/˜µTų X)m>¤‘ <§—y,•6am›üÉń~[HŖ@öw3—”˜ę—c$t zHŽ3Č7Ž„Ż>ėt®µ)ū<³9ä%H#’3Ō*$|±o¶=D•6G¶Č<»œy Ä;Xdē-$-KRsą`Ņ6A¤Ņ¦č’Ÿ\Y€q[öIj\YĻ”ÄUįI øąl  –š(Š6–¶RģI­TŠ7:±MķRÜC”āümø`öė*?šŚõF,³hJ›«*?°²ęĮuģģŲ”XDzģ`)™ÓQAõ …#%vE~° 1µÖŗõš[žĪ‡ÉO³’ųŽH“gDD”tIEND®B`‚apps-projectcenter-master/Modules/Editors/000077500000000000000000000000001347226342500212105ustar00rootroot00000000000000apps-projectcenter-master/Modules/Editors/ProjectCenter/000077500000000000000000000000001347226342500237575ustar00rootroot00000000000000apps-projectcenter-master/Modules/Editors/ProjectCenter/GNUmakefile000066400000000000000000000020621347226342500260310ustar00rootroot00000000000000# # GNUmakefile - ProjectCenter.editor # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = ProjectCenter BUNDLE_EXTENSION = .editor ProjectCenter_PRINCIPAL_CLASS = PCEditor # # Additional libraries # ProjectCenter_LIBRARIES_DEPEND_UPON += # # Resource files # ProjectCenter_RESOURCE_FILES= \ Resources/Info.table \ Resources/C.syntax \ Resources/ObjC.syntax \ Resources/Plist.syntax \ Resources/FileC.tiff \ Resources/FileCH.tiff \ Resources/FileH.tiff \ Resources/FileHH.tiff \ Resources/FileM.tiff \ Resources/FileMH.tiff \ Resources/FileMM.tiff \ Resources/LineJumper.gorm # # Header files # ProjectCenter_HEADERS= \ PCEditor.h \ PCEditorView.h \ SyntaxDefinition.h \ SyntaxHighlighter.h \ LineJumper.h # # Class files # ProjectCenter_OBJC_FILES= \ PCEditor.m \ PCEditorView.m \ TextPattern.m \ SyntaxDefinition.m \ SyntaxHighlighter.m \ LineJumper.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Editors/ProjectCenter/LineJumper.h000066400000000000000000000006741347226342500262110ustar00rootroot00000000000000#import #import @interface LineJumper : NSObject { IBOutlet NSTextField *lineField; IBOutlet NSButton *goToButton; } + (id)sharedInstance; - (NSPanel *)linePanel; /* Gets the first responder and returns it if it's an NSTextView */ - (NSTextView *)editorViewToUse; /* panel UI methods */ - (void)orderFrontLinePanel:(id)sender; - (IBAction)goToLine:(id)sender; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/LineJumper.m000066400000000000000000000032431347226342500262110ustar00rootroot00000000000000#import "LineJumper.h" static id sharedLineJumper = nil; @implementation LineJumper + (id)sharedInstance { if (!sharedLineJumper) { sharedLineJumper = [[self allocWithZone:[[NSApplication sharedApplication] zone]] init]; } return sharedLineJumper; } - (id) init { if (!(self = [super init])) return nil; // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidActivate:) name:NSApplicationDidBecomeActiveNotification object:[NSApplication sharedApplication]]; // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addWillDeactivate:) name:NSApplicationWillResignActiveNotification object:[NSApplication sharedApplication]]; return self; } - (void)loadUI { if (!lineField) { if (![NSBundle loadNibNamed:@"LineJumper" owner:self]) { NSLog(@"Failed to load LineJumper.nib"); NSBeep(); } if (self == sharedLineJumper) [[lineField window] setFrameAutosaveName:@"GoTo Line"]; } } - (NSTextView *)editorViewToUse { id tv = [[NSApp mainWindow] firstResponder]; if([tv conformsToProtocol:@protocol(CodeEditorView)]) return tv; return nil; } - (NSPanel *)linePanel { if (!lineField) [self loadUI]; return (NSPanel *)[lineField window]; } - (void)orderFrontLinePanel:(id)sender { NSPanel *panel = [self linePanel]; [lineField selectText:nil]; [panel makeKeyAndOrderFront:nil]; } - (IBAction)goToLine:(id)sender { NSUInteger line; NSTextView *cev; line = (NSUInteger)[lineField integerValue]; cev = [self editorViewToUse]; if (cev) { [cev goToLineNumber:line]; } } @end apps-projectcenter-master/Modules/Editors/ProjectCenter/PCEditor.h000066400000000000000000000114131347226342500256010ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2014 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import @class PCEditorView; @interface PCEditor : NSObject { id _editorManager; NSScrollView *_extScrollView; PCEditorView *_extEditorView; NSScrollView *_intScrollView; PCEditorView *_intEditorView; NSTextStorage *_storage; NSMutableString *_path; NSString *_categoryPath; NSWindow *_window; BOOL _isEdited; BOOL _isEditable; BOOL _isWindowed; BOOL _isExternal; // Search NSView *goToLineView; NSView *quickFindView; // Parser id aParser; NSArray *parserClasses; NSArray *parserMethods; // Syntax highlighter (used in PCEditorView) BOOL _highlightSyntax; // Default text attributes (not syntax) and open/close brackets // highlighting ([],{},()) NSFont *defaultFont; NSFont *highlightFont; NSColor *textColor; NSColor *highlightColor; NSColor *backgroundColor; NSColor *readOnlyColor; NSColor *textBackground; // location of the highlit delimiter character unsigned int highlitCharacterLocation; // is YES if we are currently highlighting a delimiter character // otherwise NO BOOL isCharacterHighlit; int highlited_chars[2]; // the stored color and font attributes of the highlit character, so // that they can be restored later on when the character is un-highlit NSColor *previousFGColor; NSColor *previousBGColor; NSColor *previousFont; // This is used to protect that -textViewDidChangeSelection: invocations // don't do anything when the text view changing, because this causes // further changes to the text view and infinite recursive invocations // of this method. BOOL editorTextViewIsPressingKey; // keep one undo manager for the editor NSUndoManager *undoManager; } - (BOOL)editorShouldClose; // =========================================================================== // ==== Window delegate // =========================================================================== - (BOOL)windowShouldClose:(id)sender; - (void)windowDidBecomeKey:(NSNotification *)aNotification; - (void)windowDidResignKey:(NSNotification *)aNotification; // =========================================================================== // ==== TextView (_intEditorView, _extEditorView) delegate // =========================================================================== - (void)textDidChange:(NSNotification *)aNotification; - (void)textViewDidChangeSelection:(NSNotification *)notification; - (void)editorTextViewWillPressKey:sender; - (void)editorTextViewDidPressKey:sender; - (BOOL)becomeFirstResponder:(PCEditorView *)view; - (BOOL)resignFirstResponder:(PCEditorView *)view; // =========================================================================== // ==== Parser and scrolling // =========================================================================== - (void)fileStructureItemSelected:(NSString *)item; // CodeEditor protocol - (void)scrollToClassName:(NSString *)className; - (void)scrollToMethodName:(NSString *)methodName; - (void)scrollToLineNumber:(NSUInteger)lineNumber; // CodeEditor protocol @end @interface PCEditor (UInterface) - (void)_createWindow; - (void)_createInternalView; - (PCEditorView *)_createEditorViewWithFrame:(NSRect)fr; @end @interface PCEditor (Menu) - (void)pipeOutputOfCommand:(NSString *)command; // Find - (void)findNext:sender; - (void)findPrevious:sender; - (void)jumpToSelection:sender; @end @interface PCEditor (Parenthesis) - (void)unhighlightCharacter: (NSTextView *)editorView; - (void)highlightCharacterAt:(NSUInteger)location inEditor: (NSTextView *)editorView; - (void)computeNewParenthesisNesting: (NSTextView *)editorView; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/PCEditor.m000066400000000000000000001045151347226342500256140ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2002-2015 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import "PCEditor.h" #import "PCEditorView.h" #import #import "Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h" #import @implementation PCEditor (UInterface) - (void)_createWindow { unsigned int style; NSRect rect; float windowWidth; // PCLogInfo(self, @"[_createWindow]"); style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; windowWidth = [[NSFont userFixedPitchFontOfSize:0.0] widthOfString:@"A"]; windowWidth *= 80; windowWidth += 35; rect = NSMakeRect(0,0,windowWidth,320); _window = [[NSWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:YES]; [_window setReleasedWhenClosed:NO]; [_window setMinSize:NSMakeSize(512,320)]; [_window setDelegate:self]; [_window center]; rect = [[_window contentView] frame]; // Scroll view _extScrollView = [[NSScrollView alloc] initWithFrame:rect]; [_extScrollView setHasHorizontalScroller:NO]; [_extScrollView setHasVerticalScroller:YES]; [_extScrollView setAutoresizingMask: (NSViewWidthSizable|NSViewHeightSizable)]; rect = [[_extScrollView contentView] frame]; // Text view _extEditorView = [self _createEditorViewWithFrame:rect]; // Include editor view [_extScrollView setDocumentView:_extEditorView]; [_extEditorView setNeedsDisplay:YES]; RELEASE(_extEditorView); // Include scroll view [_window setContentView:_extScrollView]; [_window makeFirstResponder:_extEditorView]; RELEASE(_extScrollView); // Honor "edited" state [_window setDocumentEdited:_isEdited]; } - (void)_createInternalView { NSRect rect = NSMakeRect(0,0,512,320); // Scroll view _intScrollView = [[NSScrollView alloc] initWithFrame:rect]; [_intScrollView setHasHorizontalScroller:NO]; [_intScrollView setHasVerticalScroller:YES]; [_intScrollView setBorderType:NSBezelBorder]; [_intScrollView setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)]; rect = [[_intScrollView contentView] frame]; // Text view _intEditorView = [self _createEditorViewWithFrame:rect]; /* * Setting up ext view / scroll view / window */ [_intScrollView setDocumentView:_intEditorView]; [_intEditorView setNeedsDisplay:YES]; RELEASE(_intEditorView); } - (PCEditorView *)_createEditorViewWithFrame:(NSRect)fr { PCEditorView *ev = nil; NSTextContainer *tc = nil; NSLayoutManager *lm = nil; /* * setting up the objects needed to manage the view but using the * shared textStorage. */ lm = [[NSLayoutManager alloc] init]; tc = [[NSTextContainer alloc] initWithContainerSize:fr.size]; [lm addTextContainer:tc]; RELEASE(tc); [_storage addLayoutManager:lm]; RELEASE(lm); ev = [[PCEditorView alloc] initWithFrame:fr textContainer:tc]; [ev setBackgroundColor:textBackground]; [ev setTextColor:textColor]; [ev setEditor:self]; if (_highlightSyntax) { [ev createSyntaxHighlighterForFileType:[_path pathExtension]]; } [ev setMinSize:NSMakeSize(0, 0)]; [ev setMaxSize:NSMakeSize(1e7, 1e7)]; [ev setRichText:YES]; [ev setUsesFindPanel: YES]; [ev setVerticallyResizable:YES]; [ev setHorizontallyResizable:NO]; [ev setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; [ev setTextContainerInset:NSMakeSize(5, 5)]; [[ev textContainer] setWidthTracksTextView:YES]; [[ev textContainer] setContainerSize:NSMakeSize(fr.size.width, 1e7)]; [ev setEditable:_isEditable]; // Activate undo [ev setAllowsUndo: YES]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:NSTextDidChangeNotification object:ev]; return ev; } @end @implementation PCEditor // =========================================================================== // ==== Initialization // =========================================================================== - (id)init { if ((self = [super init])) { _extScrollView = nil; _extEditorView = nil; _intScrollView = nil; _intEditorView = nil; _storage = nil; _categoryPath = nil; _window = nil; _isEdited = NO; _isWindowed = NO; _isExternal = YES; _highlightSyntax = YES; ASSIGN(defaultFont, [PCEditorView defaultEditorFont]); ASSIGN(highlightFont, [PCEditorView defaultEditorFont]); ASSIGN(highlightColor, [NSColor greenColor]); ASSIGN(textColor, [NSColor blackColor]); ASSIGN(backgroundColor, [NSColor whiteColor]); ASSIGN(readOnlyColor, [NSColor lightGrayColor]); previousFGColor = nil; previousBGColor = nil; previousFont = nil; isCharacterHighlit = NO; highlited_chars[0] = -1; highlited_chars[1] = -1; undoManager = [[NSUndoManager alloc] init]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCEditor: %@ dealloc", [_path lastPathComponent]); #endif [_extEditorView setEditor: nil]; [_window setDelegate: nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; [_window close]; // _window is setReleasedWhenClosed:YES RELEASE(_path); RELEASE(_categoryPath); RELEASE(_intScrollView); RELEASE(_storage); RELEASE(_window); // RELEASE(parserClasses); RELEASE(parserMethods); RELEASE(aParser); RELEASE(defaultFont); RELEASE(highlightFont); RELEASE(textColor); RELEASE(backgroundColor); RELEASE(readOnlyColor); RELEASE(undoManager); [super dealloc]; } // --- Protocol - (void)setParser:(id)parser { // NSLog(@"RC aParser:%i parser:%i", // [aParser retainCount], [parser retainCount]); ASSIGN(aParser, parser); // NSLog(@"RC aParser:%i parser:%i", // [aParser retainCount], [parser retainCount]); } - (id)openFileAtPath:(NSString *)filePath editorManager:(id)editorManager editable:(BOOL)editable { NSString *text; NSAttributedString *attributedString = [NSAttributedString alloc]; NSMutableDictionary *attributes = [NSMutableDictionary new]; NSFont *font; id prefs; // Inform about future file opening [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorWillOpenNotification object:self]; _editorManager = editorManager; _path = [filePath copy]; _isEditable = editable; prefs = [[_editorManager projectManager] prefController]; // Prepare font = [NSFont userFixedPitchFontOfSize:0.0]; if (editable) { NSColor *col; col = [prefs colorForKey:EditorBackgroundColor defaultValue:backgroundColor]; textBackground = col; } else { textBackground = readOnlyColor; } [attributes setObject:font forKey:NSFontAttributeName]; [attributes setObject:textBackground forKey:NSBackgroundColorAttributeName]; [attributes setObject:[prefs colorForKey:EditorForegroundColor defaultValue:textColor] forKey:NSForegroundColorAttributeName]; text = [NSString stringWithContentsOfFile:_path]; attributedString = [attributedString initWithString:text attributes:attributes]; _storage = [[NSTextStorage alloc] init]; [_storage setAttributedString:attributedString]; RELEASE(attributedString); // [self _createInternalView]; /* if (categoryPath) // category == nil if we're non project editor { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; if (![[ud objectForKey:SeparateEditor] isEqualToString:@"YES"]) { [self _createInternalView]; } }*/ // File open was finished [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidOpenNotification object:self]; return self; } - (id)openExternalEditor:(NSString *)editor withPath:(NSString *)file editorManager:(id)aDelegate { NSTask *editorTask = nil; NSArray *ea = nil; NSMutableArray *args = nil; NSString *app = nil; if (!(self = [super init])) { return nil; } _editorManager = aDelegate; _path = [file copy]; // Task ea = [editor componentsSeparatedByString:@" "]; args = [NSMutableArray arrayWithArray:ea]; app = [ea objectAtIndex:0]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (externalEditorDidClose:) name:NSTaskDidTerminateNotification object:nil]; editorTask = [[NSTask alloc] init]; [editorTask setLaunchPath:app]; [args removeObjectAtIndex:0]; [args addObject:file]; [editorTask setArguments:args]; [editorTask launch]; // AUTORELEASE(editorTask); // Inform about file opening [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidOpenNotification object:self]; return self; } // --- Protocol End - (void)externalEditorDidClose:(NSNotification *)aNotif { NSString *path = [[[aNotif object] arguments] lastObject]; if (![path isEqualToString:_path]) { NSLog(@"external editor task terminated"); return; } NSLog(@"Our Editor task terminated"); // Inform about closing [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidCloseNotification object:self]; } // =========================================================================== // ==== CodeEditor protocol // =========================================================================== // --- Accessor methods - (id)editorManager { return _editorManager; } - (NSWindow *)editorWindow { return _window; } - (NSView *)editorView { if (!_intScrollView) { [self _createInternalView]; } return _intEditorView; } - (NSView *)componentView { if (!_intScrollView) { [self _createInternalView]; } return _intScrollView; } - (NSString *)path { return _path; } - (void)setPath:(NSString *)path { NSMutableDictionary *notifDict = [[NSMutableDictionary dictionary] retain]; // Prepare notification object [notifDict setObject:self forKey:@"Editor"]; [notifDict setObject:_path forKey:@"OldFile"]; [notifDict setObject:path forKey:@"NewFile"]; // Set path [_path autorelease]; _path = [path copy]; // Post notification [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidChangeFileNameNotification object:notifDict]; [notifDict autorelease]; } - (NSString *)categoryPath { return _categoryPath; } - (void)setCategoryPath:(NSString *)path { [_categoryPath autorelease]; _categoryPath = [path copy]; } - (BOOL)isEdited { return _isEdited; } - (void)setIsEdited:(BOOL)yn { if (_window) { [_window setDocumentEdited:yn]; } _isEdited = yn; } - (NSImage *)fileIcon { NSString *fileExtension = [[_path lastPathComponent] uppercaseString]; NSString *imageName = nil; NSString *imagePath = nil; NSBundle *bundle = nil; NSImage *image = nil; fileExtension = [[[_path lastPathComponent] pathExtension] uppercaseString]; if (_isEdited) { imageName = [NSString stringWithFormat:@"File%@H", fileExtension]; } else { imageName = [NSString stringWithFormat:@"File%@", fileExtension]; } bundle = [NSBundle bundleForClass:NSClassFromString(@"PCEditor")]; imagePath = [bundle pathForResource:imageName ofType:@"tiff"]; if (imagePath) { image = [[NSImage alloc] initWithContentsOfFile:imagePath]; } else { NSLog(@"no image for %@", imageName); } return AUTORELEASE(image); } - (NSArray *)_methodsForClass:(NSString *)className { NSEnumerator *enumerator; NSDictionary *method; NSDictionary *class; NSMutableArray *items = [NSMutableArray array]; NSRange classRange; NSRange methodRange; ASSIGN(parserClasses, [aParser classNames]); ASSIGN(parserMethods, [aParser methodNames]); enumerator = [parserClasses objectEnumerator]; while ((class = [enumerator nextObject])) { if ([[class objectForKey:@"ClassName"] isEqualToString:className]) { classRange = NSRangeFromString([class objectForKey:@"ClassBodyRange"]); break; } } methodRange = NSMakeRange(0, 0); enumerator = [parserMethods objectEnumerator]; while ((method = [enumerator nextObject])) { // NSLog(@"Method> %@", method); methodRange = NSRangeFromString([method objectForKey:@"MethodBodyRange"]); if (NSIntersectionRange(classRange, methodRange).length != 0) { [items addObject:[method objectForKey:@"MethodName"]]; } } return items; } - (NSArray *)browserItemsForItem:(NSString *)item { NSEnumerator *enumerator; // NSDictionary *method; NSDictionary *class; NSMutableArray *items = [NSMutableArray array]; NSLog(@"PCEditor: asked for browser items for: %@", item); [aParser setString:[_storage string]]; // If item is .m or .h file show class list if ([[item pathExtension] isEqualToString:@"m"] || [[item pathExtension] isEqualToString:@"mm"] || [[item pathExtension] isEqualToString:@"h"]) { ASSIGN(parserClasses, [aParser classNames]); enumerator = [parserClasses objectEnumerator]; while ((class = [enumerator nextObject])) { NSLog(@"Class> %@", class); [items addObject:[class objectForKey:@"ClassName"]]; } } // If item starts with "@" show method list if ([[item substringToIndex:1] isEqualToString:@"@"]) { /* ASSIGN(parserMethods, [aParser methodNames]); enumerator = [parserMethods objectEnumerator]; while ((method = [enumerator nextObject])) { // NSLog(@"Method> %@", method); [items addObject:[method objectForKey:@"MethodName"]]; }*/ return [self _methodsForClass:item]; } return items; } - (void)show { if (_isWindowed) { [_window makeKeyAndOrderFront:nil]; } } - (void)setWindowed:(BOOL)yn { if ( (yn && _isWindowed) || (!yn && !_isWindowed) ) { return; } if (yn && !_isWindowed) { [self _createWindow]; [_window setTitle:[NSString stringWithFormat: @"%@", [_path stringByAbbreviatingWithTildeInPath]]]; } else if (!yn && _isWindowed) { [_window close]; } _isWindowed = yn; } - (BOOL)isWindowed { return _isWindowed; } // --- Object managment - (BOOL)saveFileIfNeeded { if ((_isEdited)) { return [self saveFile]; } return YES; } - (BOOL)saveFile { BOOL saved = NO; if (_isEdited == NO) { return YES; } [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorWillSaveNotification object:self]; // Send the notification to Gorm... if([[_path pathExtension] isEqual: @"h"]) { [[NSDistributedNotificationCenter defaultCenter] postNotificationName: @"GormParseClassNotification" object: _path]; } saved = [[_storage string] writeToFile:_path atomically:YES]; if (saved == YES) { [self setIsEdited:NO]; [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidSaveNotification object:self]; } else { NSRunAlertPanel(@"Save File", @"Couldn't save file '%@'!", @"OK", nil, nil, [_path lastPathComponent]); } return saved; } - (BOOL)saveFileTo:(NSString *)path { return [[_storage string] writeToFile:path atomically:YES]; } - (BOOL)revertFileToSaved { NSString *text = [NSString stringWithContentsOfFile:_path]; NSAttributedString *as = nil; NSDictionary *at = nil; NSFont *ft = nil; if (_isEdited == NO) { return YES; } if (NSAlertDefaultReturn != NSRunAlertPanel(@"Revert", @"%@ has been modified. " @"Are you sure you want to undo changes?", @"Revert", @"Cancel", nil, [_path lastPathComponent])) { return NO; } [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorWillRevertNotification object:self]; // This is temporary ft = [NSFont userFixedPitchFontOfSize:0.0]; at = [NSDictionary dictionaryWithObject:ft forKey:NSFontAttributeName]; as = [[NSAttributedString alloc] initWithString:text attributes:at]; [self setIsEdited:NO]; // Operate on the text storage! [_storage setAttributedString:as]; RELEASE(as); [_intEditorView setNeedsDisplay:YES]; [_extEditorView setNeedsDisplay:YES]; [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidRevertNotification object:self]; return YES; } // FIXME: Do we really need this method? - (BOOL)closeFile:(id)sender save:(BOOL)save { if (save == YES) { [self saveFileIfNeeded]; } // Close window first if visible if (_isWindowed && [_window isVisible] && (sender != _window)) { [_window close]; } // Inform about closing [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidCloseNotification object:self]; return YES; } - (BOOL)close:(id)sender { if ([self editorShouldClose] == YES) { // Close window first if visible if (_isWindowed && [_window isVisible] && (sender != _window)) { [_window close]; } // Inform about closing [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidCloseNotification object:self]; return YES; } return NO; } - (BOOL)editorShouldClose { if (_isEdited) { int ret; if (_isWindowed && [_window isVisible]) { [_window makeKeyAndOrderFront:self]; } ret = NSRunAlertPanel(@"Close File", @"File %@ has been modified. Save?", @"Save and Close", @"Don't save", @"Cancel", [_path lastPathComponent]); switch (ret) { case NSAlertDefaultReturn: // Save And Close if ([self saveFile] == NO) { return NO; } break; case NSAlertAlternateReturn: // Don't save break; case NSAlertOtherReturn: // Cancel return NO; break; } [self setIsEdited:NO]; } return YES; } // =========================================================================== // ==== Window delegate // =========================================================================== - (BOOL)windowShouldClose:(id)sender { if ([sender isEqual:_window]) { if (_intScrollView) { // Just close if this file also displayed in int view _isWindowed = NO; return YES; } else { return [self close:sender]; } } return NO; } - (void)windowDidBecomeKey:(NSNotification *)aNotification { /* if ([[aNotification object] isEqual:_window] && [_window isVisible]) { [_window makeFirstResponder:_extEditorView]; }*/ } - (void)windowDidResignKey:(NSNotification *)aNotification { /* if ([[aNotification object] isEqual:_window] && [_window isVisible]) { [_window makeFirstResponder:_extEditorView]; }*/ [self resignFirstResponder:_extEditorView]; } - (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window { return undoManager; } // =========================================================================== // ==== TextView (_intEditorView, _extEditorView) delegate // =========================================================================== - (void)textDidChange:(NSNotification *)aNotification { id object = [aNotification object]; if ([object isKindOfClass:[PCEditorView class]] && (object == _intEditorView || object == _extEditorView)) { if (_isEdited == NO) { [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorWillChangeNotification object:self]; [self setIsEdited:YES]; [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidChangeNotification object:self]; } } } - (void)textViewDidChangeSelection:(NSNotification *)notification { if (editorTextViewIsPressingKey == NO) { id object; object = [notification object]; if (object == _intEditorView || object == _extEditorView) [self computeNewParenthesisNesting: object]; } } - (void)editorTextViewWillPressKey:sender { editorTextViewIsPressingKey = YES; // NSLog(@"Will pressing key"); if (sender == _intEditorView || sender == _extEditorView) [self unhighlightCharacter: sender]; else NSLog(@"PCEditor: unexpected sender"); } - (void)editorTextViewDidPressKey:sender { // NSLog(@"Did pressing key"); if (sender == _intEditorView || sender == _extEditorView) [self computeNewParenthesisNesting: sender]; else NSLog(@"PCEditor: unexpected sender"); editorTextViewIsPressingKey = NO; } - (BOOL)becomeFirstResponder:(PCEditorView *)view { [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidBecomeActiveNotification object:self]; return YES; } - (BOOL)resignFirstResponder:(PCEditorView *)view { [[NSNotificationCenter defaultCenter] postNotificationName:PCEditorDidResignActiveNotification object:self]; return YES; } // =========================================================================== // ==== Parser and scrolling // =========================================================================== // === Scrolling - (void)fileStructureItemSelected:(NSString *)item { NSString *firstSymbol; NSLog(@"[PCEditor] selected file structure item: %@", item); firstSymbol = [item substringToIndex:1]; if ([firstSymbol isEqualToString:@"@"]) // class selected { [self scrollToClassName:item]; } else if ([firstSymbol isEqualToString:@"-"] // method selected || [firstSymbol isEqualToString:@"+"]) { [self scrollToMethodName:item]; } } - (void)scrollToClassName:(NSString *)className { NSEnumerator *enumerator = nil; NSDictionary *class = nil; NSRange classNameRange; NSLog(@"SCROLL to class: \"%@\"", className); classNameRange = NSMakeRange(0, 0); enumerator = [parserClasses objectEnumerator]; while ((class = [enumerator nextObject])) { if ([[class objectForKey:@"ClassName"] isEqualToString:className]) { classNameRange = NSRangeFromString([class objectForKey:@"ClassNameRange"]); break; } } NSLog(@"classNameRange: %@", NSStringFromRange(classNameRange)); if (classNameRange.length != 0) { [_intEditorView setSelectedRange:classNameRange]; [_intEditorView scrollRangeToVisible:classNameRange]; } } - (void)scrollToMethodName:(NSString *)methodName { NSEnumerator *enumerator = nil; NSDictionary *method = nil; NSRange methodNameRange; NSLog(@"SCROLL to method: \"%@\"", methodName); methodNameRange = NSMakeRange(0, 0); enumerator = [parserMethods objectEnumerator]; while ((method = [enumerator nextObject])) { if ([[method objectForKey:@"MethodName"] isEqualToString:methodName]) { methodNameRange = NSRangeFromString([method objectForKey:@"MethodNameRange"]); break; } } NSLog(@"methodNameRange: %@", NSStringFromRange(methodNameRange)); if (methodNameRange.length != 0) { [_intEditorView setSelectedRange:methodNameRange]; [_intEditorView scrollRangeToVisible:methodNameRange]; } } - (void)scrollToLineNumber:(NSUInteger)lineNumber { [_intEditorView goToLineNumber:lineNumber]; [_extEditorView goToLineNumber:lineNumber]; } @end // =========================================================================== // ==== Menu actions // =========================================================================== @implementation PCEditor (Menu) - (void)pipeOutputOfCommand:(NSString *)command { NSTask * task; NSPipe * inPipe, * outPipe; NSString * inString, * outString; NSFileHandle * inputHandle; inString = [[_intEditorView string] substringWithRange: [_intEditorView selectedRange]]; inPipe = [NSPipe pipe]; outPipe = [NSPipe pipe]; task = [[NSTask new] autorelease]; [task setLaunchPath: @"/bin/sh"]; [task setArguments: [NSArray arrayWithObjects: @"-c", command, nil]]; [task setStandardInput: inPipe]; [task setStandardOutput: outPipe]; [task setStandardError: outPipe]; inputHandle = [inPipe fileHandleForWriting]; [task launch]; [inputHandle writeData: [inString dataUsingEncoding: NSUTF8StringEncoding]]; [inputHandle closeFile]; [task waitUntilExit]; outString = [[[NSString alloc] initWithData: [[outPipe fileHandleForReading] availableData] encoding: NSUTF8StringEncoding] autorelease]; if ([task terminationStatus] != 0) { if (NSRunAlertPanel(_(@"Error running command"), _(@"The command returned with a non-zero exit status" @" -- aborting pipe.\n" @"Do you want to see the command's output?\n"), _(@"No"), _(@"Yes"), nil) == NSAlertAlternateReturn) { NSRunAlertPanel(_(@"The command's output"), outString, nil, nil, nil); } } else { [_intEditorView replaceCharactersInRange:[_intEditorView selectedRange] withString:outString]; [self textDidChange: nil]; } } - (void)findNext:sender { // [[TextFinder sharedInstance] findNext:self]; } - (void)findPrevious:sender { // [[TextFinder sharedInstance] findPrevious:self]; } - (void)jumpToSelection:sender { [_intEditorView scrollRangeToVisible:[_intEditorView selectedRange]]; } @end // =========================================================================== // ==== Parenthesis highlighting // =========================================================================== /** * Checks whether a character is a delimiter. * * This function checks whether `character' is a delimiter character, * (i.e. one of "(", ")", "[", "]", "{", "}") and returns YES if it * is and NO if it isn't. Additionaly, if `character' is a delimiter, * `oppositeDelimiter' is set to a string denoting it's opposite * delimiter and `searchBackwards' is set to YES if the opposite * delimiter is located before the checked delimiter character, or * to NO if it is located after the delimiter character. */ static inline BOOL CheckDelimiter(unichar character, unichar * oppositeDelimiter, BOOL * searchBackwards) { if (character == '(') { *oppositeDelimiter = ')'; *searchBackwards = NO; return YES; } else if (character == ')') { *oppositeDelimiter = '('; *searchBackwards = YES; return YES; } else if (character == '[') { *oppositeDelimiter = ']'; *searchBackwards = NO; return YES; } else if (character == ']') { *oppositeDelimiter = '['; *searchBackwards = YES; return YES; } else if (character == '{') { *oppositeDelimiter = '}'; *searchBackwards = NO; return YES; } else if (character == '}') { *oppositeDelimiter = '{'; *searchBackwards = YES; return YES; } else { return NO; } } /** * Attempts to find a delimiter in a certain string around a certain location. * * Attempts to locate `delimiter' in `string', starting at * location `startLocation' a searching forwards (backwards if * searchBackwards = YES) at most 1000 characters. The argument * `oppositeDelimiter' denotes what is considered to be the opposite * delimiter of the one being search for, so that nested delimiters * are ignored correctly. * * @return The location of the delimiter if it is found, or NSNotFound * if it isn't. */ NSUInteger FindDelimiterInString(NSString * string, unichar delimiter, unichar oppositeDelimiter, NSUInteger startLocation, BOOL searchBackwards) { NSUInteger i; NSUInteger length; unichar (*charAtIndex)(id, SEL, NSUInteger); SEL sel = @selector(characterAtIndex:); int nesting = 1; charAtIndex = (unichar (*)(id, SEL, NSUInteger)) [string methodForSelector: sel]; if (searchBackwards) { if (startLocation < 1000) length = startLocation; else length = 1000; for (i=1; i <= length; i++) { unichar c; c = charAtIndex(string, sel, startLocation - i); if (c == delimiter) nesting--; else if (c == oppositeDelimiter) nesting++; if (nesting == 0) break; } if (i > length) return NSNotFound; else return startLocation - i; } else { if ([string length] < startLocation + 1000) length = [string length] - startLocation; else length = 1000; for (i=1; i < length; i++) { unichar c; c = charAtIndex(string, sel, startLocation + i); if (c == delimiter) nesting--; else if (c == oppositeDelimiter) nesting++; if (nesting == 0) break; } if (i == length) return NSNotFound; else return startLocation + i; } } @implementation PCEditor (Parenthesis) - (void)unhighlightCharacter: (NSTextView *)editorView { int i; NSTextStorage *textStorage = [editorView textStorage]; [textStorage beginEditing]; // if (isCharacterHighlit) for (i = 0; i < 2 && highlited_chars[i] != -1; i++) { NSRange r = NSMakeRange(highlited_chars[i], 1); // NSRange r = NSMakeRange(highlitCharacterLocation, i); isCharacterHighlit = NO; // restore the character's color and font attributes if (previousFont != nil) { [textStorage addAttribute:NSFontAttributeName value:previousFont range:r]; } else { [textStorage removeAttribute:NSFontAttributeName range:r]; } if (previousFGColor != nil) { [textStorage addAttribute:NSForegroundColorAttributeName value:previousFGColor range:r]; } else { [textStorage removeAttribute:NSForegroundColorAttributeName range:r]; } if (previousBGColor != nil) { [textStorage addAttribute:NSBackgroundColorAttributeName value:previousBGColor range:r]; } else { [textStorage removeAttribute:NSBackgroundColorAttributeName range:r]; } highlited_chars[i] = -1; } [textStorage endEditing]; } - (void)highlightCharacterAt:(NSUInteger)location inEditor: (NSTextView *)editorView { int i; for (i = 0; i < 2 && highlited_chars[i] != -1; i++) {}; // if (isCharacterHighlit == NO) if (i < 2) { NSTextStorage *textStorage = [editorView textStorage]; NSRange r = NSMakeRange(location, 1); NSRange tmp; // NSLog(@"highlight"); // highlitCharacterLocation = location; highlited_chars[i] = location; isCharacterHighlit = YES; NSAssert(textStorage, @"textstorage can't be nil"); [textStorage beginEditing]; // store the previous character's attributes ASSIGN(previousFGColor, [textStorage attribute:NSForegroundColorAttributeName atIndex:location effectiveRange:&tmp]); ASSIGN(previousBGColor, [textStorage attribute:NSBackgroundColorAttributeName atIndex:location effectiveRange:&tmp]); ASSIGN(previousFont, [textStorage attribute:NSFontAttributeName atIndex:location effectiveRange:&tmp]); [textStorage addAttribute:NSFontAttributeName value:highlightFont range:r]; [textStorage addAttribute:NSBackgroundColorAttributeName value:highlightColor range:r]; /* [textStorage addAttribute:NSForegroundColorAttributeName value:highlightColor range:r]; [textStorage removeAttribute:NSBackgroundColorAttributeName range:r];*/ [textStorage endEditing]; } } - (void)computeNewParenthesisNesting: (NSTextView *)editorView { NSRange selectedRange; NSString *myString; if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DontTrackNesting"]) { return; } NSAssert(editorView, @"computeNewParenthesis: editorView is nil"); selectedRange = [editorView selectedRange]; // make sure we un-highlight a previously highlit delimiter [self unhighlightCharacter :editorView]; // if we have a character at the selected location, check // to see if it is a delimiter character myString = [editorView string]; if (selectedRange.length <= 1 && [myString length] > selectedRange.location) { unichar c; unichar oppositeDelimiter = 0; BOOL searchBackwards = NO; c = [myString characterAtIndex:selectedRange.location]; // if it is, search for the opposite delimiter in a range // of at most 1000 characters around it in either forward // or backward direction (depends on the kind of delimiter // we're searching for). if (CheckDelimiter(c, &oppositeDelimiter, &searchBackwards)) { NSUInteger result; result = FindDelimiterInString(myString, oppositeDelimiter, c, selectedRange.location, searchBackwards); // and in case a delimiter is found, highlight it if (result != NSNotFound) { [self highlightCharacterAt:selectedRange.location inEditor:editorView]; [self highlightCharacterAt:result inEditor:editorView]; } } } } @end apps-projectcenter-master/Modules/Editors/ProjectCenter/PCEditorView.h000066400000000000000000000031671347226342500264430ustar00rootroot00000000000000/* EditorTextView.h Interface declaration of the EditorTextView class for the ProjectManager application. Copyright (C) 2005-2016 Free Software Foundation Saso Kiselkov Riccardo Mottola 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import #import @class NSColor; @class PCEditor; @class SyntaxHighlighter; @interface PCEditorView : NSTextView { PCEditor *editor; SyntaxHighlighter *highlighter; } + (NSFont *)defaultEditorFont; + (NSFont *)defaultEditorBoldFont; + (NSFont *)defaultEditorItalicFont; + (NSFont *)defaultEditorBoldItalicFont; - (void)setEditor:(NSObject *)anEditor; - (void)createSyntaxHighlighterForFileType:(NSString *)fileType; - (void)insertText:text; - (NSRect)selectionRect; // ===== // CodeEditorView protocol // ===== - (void)performGoToLinePanelAction:(id)sender; - (void)goToLineNumber:(NSUInteger)lineNumber; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/PCEditorView.m000066400000000000000000000400141347226342500264400ustar00rootroot00000000000000/* PCEditorView.m Implementation of the PCEditorView class for the ProjectManager application. Copyright (C) 2005-2016 Free Software Foundation Saso Kiselkov Serg Stoyan Riccardo Mottola 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import "PCEditorView.h" #import #import #import #import #import #import #import #import #import #import #import #import "PCEditor.h" #import "SyntaxHighlighter.h" #import "LineJumper.h" #import "Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h" /** * Computes the indenting offset of the last line before the passed * start offset containg text in the passed string, e.g. * * ComputeIndentingOffset(@" Hello World", 12) = 2 * ComputeIndentingOffset(@" Try this one out\n" * @" ", 27) = 4 * * @argument string The string in which to do the computation. * @argument start The start offset from which to start looking backwards. * @return The ammount of spaces the last line containing text is offset * from it's start. */ static int ComputeIndentingOffset(NSString * string, unsigned int start) { SEL sel = @selector(characterAtIndex:); unichar (* charAtIndex)(NSString *, SEL, unsigned int) = (unichar (*)(NSString *, SEL, unsigned int)) [string methodForSelector: sel]; unichar c; int firstCharOffset = -1; int offset; int startOffsetFromLineStart = -1; for (offset = start - 1; offset >= 0; offset--) { c = charAtIndex(string, sel, offset); if (c == '\n') { if (startOffsetFromLineStart < 0) { startOffsetFromLineStart = start - offset - 1; } if (firstCharOffset >= 0) { firstCharOffset = firstCharOffset - offset - 1; break; } } else if (!isspace(c)) { firstCharOffset = offset; } } return firstCharOffset >= 0 ? firstCharOffset : 0; /* if (firstCharOffset >= 0) { // if the indenting of the current line is lower than the indenting // of the previous actual line, we return the lower indenting if (startOffsetFromLineStart >= 0 && startOffsetFromLineStart < firstCharOffset) { return startOffsetFromLineStart; } // otherwise we return the actual indenting, so that any excess // space is trimmed and the lines are aligned according the last // indenting level else { return firstCharOffset; } } else { return 0; }*/ } @interface PCEditorView (Private) - (void)insertSpaceFillAlignedAtTabsOfSize:(unsigned int)tabSize; - (void)performIndentation; @end @implementation PCEditorView (Private) /** * Makes the receiver insert as many spaces at the current insertion * location as are required to reach the nearest tab-character boundary. * * @argument tabSize Specifies how many spaces represent one tab. */ - (void)insertSpaceFillAlignedAtTabsOfSize:(unsigned int)tabSize { char buf[tabSize]; NSString * string = [self string]; unsigned int lineLength; SEL sel = @selector(characterAtIndex:); unichar (* charAtIndex)(NSString*, SEL, unsigned int) = (unichar (*)(NSString*, SEL, unsigned int)) [string methodForSelector: sel]; int i; int skip; // computes the length of the current line for (i = [self selectedRange].location - 1, lineLength = 0; i >= 0; i--, lineLength++) { if (charAtIndex(string, sel, i) == '\n') { break; } } skip = tabSize - (lineLength % tabSize); if (skip == 0) { skip = tabSize; } memset(buf, ' ', skip); [super insertText: [NSString stringWithCString: buf length: skip]]; } // Go backward to first '\n' char or start of file - (NSInteger)lineStartIndexForIndex:(NSInteger)index forString:(NSString *)string { NSInteger line_start; // Get line start index moving from index backwards for (line_start = index;line_start > 0;line_start--) { if ([string characterAtIndex:line_start] == '\n' && line_start != index) { line_start++; break; } } NSLog(@"index: %i start: %i", index, line_start); return line_start > index ? index : line_start; } - (NSInteger)lineEndIndexForIndex:(NSInteger)index forString:(NSString *)string { NSInteger line_end; NSInteger string_length = [string length]; // Get line start index moving from index backwards for (line_end = index;line_end < string_length;line_end++) { if ([string characterAtIndex:line_end] == '\n') { break; } } NSLog(@"index: %li end: %li", (long)index, (long)line_end); return line_end < string_length ? line_end : string_length; } - (NSInteger)previousLineStartIndexForIndex:(NSInteger)index forString:(NSString *)string { NSInteger cur_line_start; NSInteger prev_line_start; cur_line_start = [self lineStartIndexForIndex:index forString:string]; prev_line_start = [self lineStartIndexForIndex:cur_line_start-1 forString:string]; NSLog(@"index: %li prev_start: %li", (long)index, (long)prev_line_start); return prev_line_start; } - (NSInteger)nextLineStartIndexForIndex:(NSInteger)index forString:(NSString *)string { NSInteger cur_line_end; NSInteger next_line_start; NSInteger string_length = [string length]; cur_line_end = [self lineEndIndexForIndex:index forString:string]; next_line_start = cur_line_end + 1; if (next_line_start < string_length) { return next_line_start; } else { return string_length; } } - (unichar)firstCharOfLineForIndex:(NSInteger)index forString:(NSString *)string { NSInteger line_start = [self lineStartIndexForIndex:index forString:string]; NSInteger i; unichar c; c = 0; // Get leading whitespaces range for (i = line_start; i >= 0; i++) { c = [string characterAtIndex:i]; if (!isspace(c)) { break; } } fprintf(stderr, "First char: %c\n", c); return c; } - (unichar)firstCharOfPrevLineForIndex:(NSInteger)index forString:(NSString *)string { NSInteger line_start = [self previousLineStartIndexForIndex:index forString:string]; return [self firstCharOfLineForIndex:line_start forString:string]; } - (void)performIndentation { NSString *string = [self string]; NSInteger location; NSInteger line_start; NSInteger offset; unichar c, plfc, clfc; NSRange wsRange; NSMutableString *indentString; NSCharacterSet *wsCharSet = [NSCharacterSet whitespaceCharacterSet]; NSInteger i; // int point; location = [self selectedRange].location; // point = [self nextLineStartIndexForIndex:location forString:string]; // [self setSelectedRange:NSMakeRange(point, 0)]; clfc = [self firstCharOfLineForIndex:location forString:string]; plfc = [self firstCharOfPrevLineForIndex:location forString:string]; // Get leading whitespaces range line_start = [self lineStartIndexForIndex:location forString:string]; for (offset = line_start; offset >= 0; offset++) { c = [string characterAtIndex:offset]; if (![wsCharSet characterIsMember:c]) { wsRange = NSMakeRange(line_start, offset-line_start); break; } } // Get indent line_start = [self previousLineStartIndexForIndex:location forString:string]; for (offset = line_start; offset >= 0; offset++) { c = [string characterAtIndex:offset]; if (![wsCharSet characterIsMember:c]) { offset = offset - line_start; NSLog(@"offset: %i", offset); break; } } NSLog (@"clfc: %c plfc: %c", clfc, plfc); if (plfc == '{' || clfc == '{') { offset += 2; } else if (clfc == '}' && plfc != '{') { offset -= 2; } // Get offset from BOL of previous line // offset = ComputeIndentingOffset([self string], line_start-1); NSLog(@"Indent offset: %i", offset); // Replace current line whitespaces with new ones indentString = [[NSMutableString alloc] initWithString:@""]; for (i = offset; i > 0; i--) { [indentString appendString:@" "]; } if ([self shouldChangeTextInRange:wsRange replacementString:indentString]) [[self textStorage] replaceCharactersInRange:wsRange withString:indentString]; /* if (location > line_start + offset) { point = location - offset; } else { point = location; } [self setSelectedRange:NSMakeRange(point, 0)];*/ [indentString release]; } @end @implementation PCEditorView + (NSFont *)defaultEditorFont { NSUserDefaults *df = [NSUserDefaults standardUserDefaults]; NSString *fontName; float fontSize; NSFont *font = nil; fontName = [df objectForKey:EditorTextFont]; fontSize = [df floatForKey:EditorTextFontSize]; if (fontName != nil && fontSize > 0) { font = [NSFont fontWithName:fontName size:fontSize]; } if (font == nil) { font = [NSFont userFixedPitchFontOfSize:fontSize]; } return font; } + (NSFont *)defaultEditorBoldFont { NSFont *font = [self defaultEditorFont]; return [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSBoldFontMask]; } + (NSFont *)defaultEditorItalicFont { NSFont *font = [self defaultEditorFont]; return [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSItalicFontMask]; } + (NSFont *)defaultEditorBoldItalicFont { NSFont *font = [self defaultEditorFont]; return [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSBoldFontMask | NSItalicFontMask]; } // --- - (BOOL)becomeFirstResponder { return [editor becomeFirstResponder:self]; } - (BOOL)resignFirstResponder { return [editor resignFirstResponder:self]; } - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { return YES; } // --- - (void)dealloc { TEST_RELEASE(highlighter); [super dealloc]; } - (void)setEditor:(NSObject *)anEditor { editor = (PCEditor *)anEditor; } - (NSObject *)editor { return editor; } - (void)awakeFromNib { /* NSData * data; NSUserDefaults * df = [NSUserDefaults standardUserDefaults]; drawCrosshairs = [df boolForKey: @"DrawCrosshairs"]; if (drawCrosshairs) { if ((data = [df dataForKey: @"CrosshairColor"]) == nil || (crosshairColor = [NSUnarchiver unarchiveObjectWithData: data]) == nil) { crosshairColor = [NSColor lightGrayColor]; } [crosshairColor retain]; } guides = [NSMutableArray new];*/ } - (void)drawRect:(NSRect)r { NSRange drawnRange; if (highlighter) { drawnRange = [[self layoutManager] glyphRangeForBoundingRect:r inTextContainer:[self textContainer]]; [highlighter highlightRange:drawnRange]; } [super drawRect:r]; } - (void)createSyntaxHighlighterForFileType:(NSString *)fileType { ASSIGN(highlighter, [[[SyntaxHighlighter alloc] initWithFileType:fileType textStorage:[self textStorage]] autorelease]); } - (void)insertText:text { /* NOTE: On Windows we ensure to get a string in UTF-8 encoding. The problem * is the highlighter that don't use a consistent codification causing a * problem on Windows platform. Anyway, the plugin for Gemas editor works * better and don't show this problem. */ if ([text isKindOfClass:[NSString class]]) { NSString * string = text; if ([text characterAtIndex:0] == 27) { NSLog(@"ESC key pressed. Ignoring it"); return; } if ([string isEqualToString:@"\n"]) { /* if ([[NSUserDefaults standardUserDefaults] boolForKey:@"ReturnDoesAutoindent"]) {*/ int location = [self selectedRange].location; int offset = ComputeIndentingOffset([self string], location); char *buf; buf = (char *) malloc((offset + 2) * sizeof(unichar)); buf[0] = '\n'; memset(&buf[1], ' ', offset); buf[offset+1] = '\0'; #ifdef WIN32 [super insertText:[NSString stringWithCString: buf encoding: NSUTF8StringEncoding]]; #else [super insertText:[NSString stringWithCString:buf]]; #endif free(buf); /* } else { [super insertText:text]; }*/ } else if ([string isEqualToString:@"\t"]) { [self performIndentation]; /* switch ([[NSUserDefaults standardUserDefaults] integerForKey:@"TabConversion"]) { case 0: // no conversion [super insertText:text]; break; case 1: // 2 spaces [super insertText:@" "]; break; case 2: // 4 spaces [super insertText:@" "]; break; case 3: // 8 spaces [super insertText:@" "]; break; case 4: // aligned to tab boundaries of 2 spaces long tabs [self insertSpaceFillAlignedAtTabsOfSize:2]; break; case 5: // aligned to tab boundaries of 4 spaces long tabs [self insertSpaceFillAlignedAtTabsOfSize:4]; break; case 6: // aligned to tab boundaries of 8 spaces long tabs [self insertSpaceFillAlignedAtTabsOfSize:8]; break; }*/ } else { #ifdef WIN32 [super insertText: [NSString stringWithCString: [text UTF8String]]]; #else [super insertText: text]; #endif } } else { #ifdef WIN32 [super insertText: [NSString stringWithCString: [text UTF8String]]]; #else [super insertText: text]; #endif } } /* This extra change tracking is required in order to inform the document * that the text is changing _before_ it actually changes. This is required * so that the document can un-highlight any highlit characters before the * change occurs and after the change recompute any new highlighting. */ - (void)keyDown:(NSEvent *)ev { [editor editorTextViewWillPressKey:self]; [super keyDown:ev]; [editor editorTextViewDidPressKey:self]; } - (void)paste:sender { [editor editorTextViewWillPressKey:self]; [super paste:sender]; [editor editorTextViewDidPressKey:self]; } - (void)mouseDown:(NSEvent *)ev { [editor editorTextViewWillPressKey:self]; [super mouseDown:ev]; [editor editorTextViewDidPressKey:self]; } - (NSRect)selectionRect { return _insertionPointRect; } - (BOOL)usesFindPanel { return YES; } - (void)performGoToLinePanelAction:(id)sender { LineJumper *lj; lj = [LineJumper sharedInstance]; [lj orderFrontLinePanel:self]; } - (void)goToLineNumber:(NSUInteger)lineNumber { NSUInteger offset; NSUInteger i; NSString *line; NSEnumerator *e; NSArray *lines; NSRange range; lines = [[self string] componentsSeparatedByString: @"\n"]; e = [lines objectEnumerator]; for (offset = 0, i = 1; (line = [e nextObject]) != nil && i < lineNumber; i++, offset += [line length] + 1); if (line != nil) { range = NSMakeRange(offset, [line length]); } else { range = NSMakeRange([[self string] length], 0); } [self setSelectedRange:range]; [self scrollRangeToVisible:range]; } @end apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/000077500000000000000000000000001347226342500257315ustar00rootroot00000000000000apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/C.syntax000066400000000000000000000123701347226342500273660ustar00rootroot00000000000000{ FileTypes = ( "c" ); Contexts = ( { Keywords = ( { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = "<\\.\\.\\.>"; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; } ); }, /* string */ { Beginning = "\""; Ending = "\""; ContextSkips = ( "\\\\\\\\", "\\\\\"" ); ForegroundColor = "0 0.7 0"; Keywords = ( { Pattern = "\\\\\""; ForegroundColor = "0 1 0"; }, { Pattern = "\\\\\\\\"; ForegroundColor = "0 1 0"; } ); }, /* character constant */ { Beginning = "'"; Ending = "'"; ContextSkips = ( "\\\\\\\\", "\\\\'" ); ForegroundColor = "0.2 0.2 0.8"; BackgroundColor = "0.8 0.8 0"; }, /* preproc directive */ { Beginning = "^#"; Ending = "\n"; ContextSkips = ( "\\\\\n" ); ForegroundColor = "0.8 0 0"; Bold = YES; }, /* multi-line comment */ { Beginning = "/\\*"; Ending = "\\*/"; ForegroundColor = "0.4 0.4 0.4"; Italic = YES; }, /* inline comment */ { Beginning = "//"; Ending = "\n"; ForegroundColor = "0.4 0.4 0.4"; Italic = YES; } ); }apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileC.tiff000066400000000000000000000225341347226342500275730ustar00rootroot00000000000000II*$ÕCÅnŅAžĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬ž¶8©ī±8„¾ŁCĪnŁDʾÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”žØ5ī„4š¾ŽCĪnŪEĢīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žš0¾ćGŅnßGŠīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’,†¾įHҾąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’Œ*‚īˆ'nćGŌīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž'xnäGÕīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’}"snåIÖīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’„'}nęH×īäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’'xnņYź¾ėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’x"qnåGŁn|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’m!fīęH×īć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’c\nåGÕnäFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’`[īäHÖīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’\SnåGÕnćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’XRīāHÕ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’“¤nįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’QL¾ćGŅnßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’PKīįHҾŽ@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’L“q’.YE’,"’ ’’ ’6*’Aa’P›w’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’ID¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’4dM’ ’ ’1_I’L“q’:rW’’’ ’P›w’P›w’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’HA¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’%H8’’’=w[’P›w’P›w’L”r’&’’5fN’P›w’P›w’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’E@¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’3cL’’’ ?1’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’D@¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’ ’’’?z]’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’A=¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E…f’’’’M•r’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’@<¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ab’’’’M•r’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’=9¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’P›w’P›w’P›w’P›w’P›w’P›w’H‹k’(N<’.YD’Ošv’M–s’’’’;rX’P›w’P›w’P›w’L”r’4(’&K9’P›w’P›w’P›w’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’<8ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’P›w’P›w’P›w’P›w’P›w’P›w’ ’’’Cƒd’P›w’.ZE’’’’D„e’N—t’;rX’’-#’Jo’P›w’P›w’P›w’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’:6ĪAĮæĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClžP›w’P›w’P›w’P›w’P›w’'’’#D4’Ošv’P›w’P›w’7jR’$’’’  ’4(’9oU’P›w’P›w’P›w’P›w’P›w’P›w’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’vlĢ@¾Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’`YæÅ>¹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’tjĀ>¶Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’¶„?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’^Væ¼<°½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’¶„?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’¶„?°6„æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’ˆ}æ®4”?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’1 -Ä Ŗ4?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ”0•?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’_WxEB>$™0‘?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’X P‚TPUC3•,?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’1 .Ųc_YUNB4$,„æ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’ynŪphc\TMC6$‰(}?„(zæƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’WPŪN G“c_\WRPPM; u"nCx$pĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’\UŌZRVUQNLIDCD4)Ÿ‘HiaŠjbÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’c\Ķf]›mci=<<;;<>5*%"d^b\XRˆQLŒOIŽJEIDŽFBDAqh#########"ž00Ś$ jā$@$L%T%(R/home/heron/Development/gnustep/dev-apps/projectcenter/Modules/Editors/ProjectCenter/Resources/FileC.tiffHHapps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileCH.tiff000066400000000000000000000225361347226342500277050ustar00rootroot00000000000000II*$ÕCÅnŅAžĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬ž¶8©ī±8„¾ŁCĪnŁDʾÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”žØ5ī„4š¾ŽCĪnŪEĢīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žš0¾ćGŅnßGŠīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’,†¾įHҾąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’Œ*‚īˆ'nćGŌīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž'xnäGÕīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’}"snåIÖīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’„'}nęH×īäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’'xnņYź¾ėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’x"qnåGŁn|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’m!fīęH×īć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’c\nåGÕnäFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’`[īäHÖīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’\SnåGÕnćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’XRīāHÕ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’“¤nįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’QL¾ćGŅnßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’PKīįHҾŽ@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’L“q’.YE’,"’ ’’ ’6*’Aa’P›w’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’ID¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’4dM’ ’ ’1_I’L“q’:rW’’’ ’P›w’P›w’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’HA¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’%H8’’’=w[’P›w’P›w’L”r’&’’5fN’P›w’P›w’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’E@¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’3cL’’’ ?1’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’D@¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’ ’’’?z]’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’A=¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E…f’’’’M•r’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’@<¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ab’’’’M•r’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’=9¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’P›w’P›w’P›w’P›w’P›w’P›w’H‹k’(N<’.YD’Ošv’M–s’’’’;rX’P›w’P›w’P›w’L”r’4(’&K9’P›w’P›w’P›w’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’<8ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’P›w’P›w’P›w’P›w’P›w’P›w’ ’’’Cƒd’P›w’.ZE’’’’D„e’N—t’;rX’’-#’Jo’P›w’P›w’P›w’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’:6ĪAĮæĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClžP›w’P›w’P›w’P›w’P›w’'’’#D4’Ošv’P›w’P›w’7jR’$’’’  ’4(’9oU’P›w’P›w’P›w’P›w’P›w’P›w’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’vlĢ@¾Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’`YæÅ>¹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’tjĀ>¶Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’¶„?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’^Væ¼<°½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’¶„?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’¶„?°6„æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’ˆ}æ®4”?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’1 -Ä Ŗ4?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ”0•?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’_WxEB>$™0‘?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’X P‚TPUC3•,?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’1 .Ųc_YUNB4$,„æ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’ynŪphc\TMC6$‰(}?„(zæƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’WPŪN G“c_\WRPPM; u"nCx$pĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’\UŌZRVUQNLIDCD4)Ÿ‘HiaŠjbÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’c\Ķf]›mci=<<;;<>5*%"d^b\XRˆQLŒOIŽJEIDŽFBDAqh#########"ž00Ś$ kā$@$N%V%(R/home/heron/Development/gnustep/dev-apps/projectcenter/Modules/Editors/ProjectCenter/Resources/FileCH.tiffHHapps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileH.tiff000066400000000000000000000223021347226342500275710ustar00rootroot00000000000000II*$\Un1“¾ĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬žŖ5žī„*{¾^Yn¢3—¾ÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”ž2“ī{'s¾`YnĶAæīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žs$l¾b[nŃCĆīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’l!d¾Ø6¾ąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’ƒ(zī;8nŌCĘīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž84nÕCĒīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’62nÖEČīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’96n×DÉīäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’84nµCƾėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’41nc^n|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’f`ī×DÉīć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’+ (nc\näFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’ZUīÕDČīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’( $nc\nćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’SMī©6Ÿ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’N GnįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’=9¾b[nßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’KFīØ6¾Ž@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’’’P›w’P›w’P›w’P›w’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’73¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’’’’’’P›w’P›w’P›w’P›w’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’61¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’4 0¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’3 0¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’1 .¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’0 -¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’. +¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’fǘžP›w’P›w’P›w’P›w’P›w’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’\mqžY­„’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’›1‘æĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClž[±ˆžP›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’; 6f _Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’’’P›w’P›w’P›w’’’’’’P›w’’’’’’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’HCæ”/‹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’: 5a[Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’-)?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’GAæ^X½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’-)?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’-)?„)|æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’f^æ+ (?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’& #Ä * '?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ( %?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’-)xEB>$& $?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’-)‚TPUC3% #?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’* 'Ųc_YUNB4$j!cæ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’h_Ūphc\TMC6$" ?c\æƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’KEŪ-)“c_\WRPPM;  C\VĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’MGŌ-)VUQNLIDCD4)-)H95ŠRLÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’PJĶ> 9›-)i=<<;;<>5*%"2/1./,ˆ- *Œ, )Ž* ') &Ž' %& $? :#########" 00Ŗ$$²$ŗ$(R€ü '€ü 'apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileHH.tiff000066400000000000000000000223021347226342500277010ustar00rootroot00000000000000II*$\Un1“¾ĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬žŖ5žī„*{¾^Yn¢3—¾ÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”ž2“ī{'s¾`YnĶAæīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žs$l¾b[nŃCĆīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’l!d¾Ø6¾ąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’ƒ(zī;8nŌCĘīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž84nÕCĒīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’62nÖEČīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’96n×DÉīäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’84nµCƾėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’41nc^n|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’f`ī×DÉīć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’+ (nc\näFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’ZUīÕDČīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’( $nc\nćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’SMī©6Ÿ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’N GnįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’=9¾b[nßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’KFīØ6¾Ž@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’’’P›w’P›w’P›w’P›w’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’73¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’’’’’’P›w’P›w’P›w’P›w’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’61¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’4 0¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’3 0¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’1 .¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’0 -¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’. +¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’fǘžP›w’P›w’P›w’P›w’P›w’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’\mqžY­„’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’›1‘æĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClž[±ˆžP›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’; 6f _Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’’’P›w’P›w’P›w’’’’’’P›w’’’’’’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’HCæ”/‹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’: 5a[Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’-)?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’GAæ^X½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’-)?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’-)?„)|æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’f^æ+ (?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’& #Ä * '?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ( %?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’-)xEB>$& $?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’-)‚TPUC3% #?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’* 'Ųc_YUNB4$j!cæ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’h_Ūphc\TMC6$" ?c\æƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’KEŪ-)“c_\WRPPM;  C\VĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’MGŌ-)VUQNLIDCD4)-)H95ŠRLÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’PJĶ> 9›-)i=<<;;<>5*%"2/1./,ˆ- *Œ, )Ž* ') &Ž' %& $? :#########" 00Ŗ$$²$ŗ$(R€ü '€ü 'apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileM.tiff000066400000000000000000000223021347226342500275760ustar00rootroot00000000000000II*$\Un1“¾ĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬žŖ5žī„*{¾^Yn¢3—¾ÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”ž2“ī{'s¾`YnĶAæīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žs$l¾b[nŃCĆīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’l!d¾Ø6¾ąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’ƒ(zī;8nŌCĘīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž84nÕCĒīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’62nÖEČīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’96n×DÉīäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’84nµCƾėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’41nc^n|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’f`ī×DÉīć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’+ (nc\näFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’ZUīÕDČīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’( $nc\nćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’SMī©6Ÿ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’N GnįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’=9¾b[nßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’KFīØ6¾Ž@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’’’’’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’’’’P›w’’’’’’P›w’P›w’’’’’’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’73¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’61¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’4 0¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’3 0¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’1 .¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’0 -¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜ž’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’. +¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’›1‘æĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClž’’P›w’P›w’P›w’’’’’’P›w’P›w’’’’’’P›w’P›w’’’’’’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’; 6f _Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’HCæ”/‹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’: 5a[Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’-)?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’GAæ^X½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’-)?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’-)?„)|æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’f^æ+ (?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’& #Ä * '?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ( %?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’-)xEB>$& $?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’-)‚TPUC3% #?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’* 'Ųc_YUNB4$j!cæ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’h_Ūphc\TMC6$" ?c\æƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’KEŪ-)“c_\WRPPM;  C\VĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’MGŌ-)VUQNLIDCD4)-)H95ŠRLÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’PJĶ> 9›-)i=<<;;<>5*%"2/1./,ˆ- *Œ, )Ž* ') &Ž' %& $? :#########" 00Ŗ$$²$ŗ$(R€ü '€ü 'apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileMH.tiff000066400000000000000000000223021347226342500277060ustar00rootroot00000000000000II*$\Un1“¾ĻBĀ’ĶAĄžŹ@½žĒ?»žÄ>øžĮ=µ’¾<²’»;Æžø:¬žŖ5žī„*{¾^Yn¢3—¾ÕDČžÓAĘ’Ń=Ć’Š5Ā’Ļ1Ą’Ķ1¾’Ė0¼’Č/ŗ’Ę/·’Ć.µ’Į-³’æ-±’ø2«’±5„’¬6”ž2“ī{'s¾`YnĶAæīŁBĖ’×>É’Ö3Ē’Ö+Å’Õ'Ä’Ō#Ć’Ó"Ā’Ń#Ą’Š"æ’Ī"½’Ķ"¼’Ė"ŗ’É!¹’Ē ·’Ä"“’¾$°’µ*§’­/ ’¢2—’Ÿ2•žs$l¾b[nŃCĆīÜDĪžŪ;Ģ’Ś-É’Ł&Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Č!ø’Ę!¶’Ä “’Ā ³’Ą°’¼!­’µ#§’©(’œ-’’–.Œ’l!d¾Ø6¾ąGŃžŻ<Ī’Ü/Ģ’Ū&Ź’Ś$É’Ł$Ē’×$Ę’Ö#Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ė"ŗ’É!ø’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’ø©’± £’£&—’“+‰’ƒ(zī;8nŌCĘīįGŅ’Ž<Ļ’Ż)Ģ’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’×$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"¼’Ė"»’Ź!¹’Č!·’Ę!¶’Ä “’Ā ²’Ą ±’¾®’¼­’ŗ«’ø©’·Ø’³¤’¤"˜’Œ)ƒ’†)}ž84nÕCĒīāDŅ’ß4Ļ’Ž%Ģ’Ü$Ė’Ü$Ź’Ś$É’Ł$Č’Ų$Ę’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Š"æ’Ī"½’Ģ"¼’Ź!ŗ’Č!ø’Ē!¶’Å µ’Ć ³’Į ±’æ Æ’½­’»¬’¹Ŗ’¶Ø’µ¦’³¤’Æ”’¢ –’Š&’'y’62nÖEČīāDÓ’ą-Ļ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$Ź’Ś$Č’Ų$Ē’×$Ę’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’Ļ"¾’Ķ"½’Ė"»’É!¹’Ē!·’Å!µ’Ć ³’Į ²’Ą °’½®’»¬’¹Ŗ’·Ø’¶§’“„’²£’°”’­Ÿ’¦™’†$}’~'v’96n×DÉīäDÕ’į-Š’ß%Ķ’Ž%Ģ’Ż%Ė’Ü%Ź’Ū$É’Ł$Č’Ų$Ē’Ö$Å’Õ#Ä’Ó#Ā’Ń#Ą’Ļ"æ’Ź!¹’ŗ«’µ¦’“„’³„’³¤’ŗ«’Ą±’¾Æ’¼­’ŗ«’¹Ŗ’¶§’“„’²¤’°¢’® ’¬ž’Ŗœ’¢•’‹$’og’84nµCƾėQą’ā5Ń’ą%Ī’ß%Ķ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$É’Ł$Ē’×$Ę’Ö#Ä’Ō"Ć’Ę!¶’ž‘’ƒx’jb’WP’o|‡žp|‡žp{‡ž`Y’sj’‹’‘†’­Ÿ’¶Ø’·Ø’µ¦’²¤’±¢’® ’­ž’«’ “’|r’ƒ&}’ÕTŅ’ž7—’41nc^n|t’¬=Ø’÷Yń’Ž$Ģ’ß%Ķ’Ž%Ģ’Ü%Ė’Ū$É’Ś$Č’Ų$Ē’×$Å’Š"Ą’·Ø’jb’b~}žg²’žvē°žu殞a¾‘ža¼’`¼’nפžlŌ¢žg£Œžes{žtk’šŽ’²£’³¤’²£’Æ”’­Ÿ’«’•‰’kc’ÕTŅ’ĶBÅ’œ’t#l’f`ī×DÉīć>Ó’—Œ’ƒ&}’ÕTŅ’ę6Ų’Ż%Ģ’Ü%Ź’Ś$É’Ł$Č’×#Å’É!ø’–Š’_Hižyģ“ždĀ•žY®…’P›w’P›w’P›w’P›w’P›w’P›w’P›w’V§€ž[²ˆždƕžtHzžŒ ’©œ’°¢’®Ÿ’¬ž’ne’¬=Ø’ęVį’“.Ŗ’š’Ÿ’’Œ’f`’+ (nc\näFÕžį/Š’Ž$Ģ’Ü$Ź’{q’¬=Ø’öYš’ä6Ö’Ś$Č’Ō#Ā’¹©’ld’g¶“žoŲ„žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’\²ˆ’g’‡žˆ$~’Ÿ “’ƒx’ƒ&}’ÕTŅ’ø.®’ž‘’Ÿ’’’Ÿ’’™Œ’ld’ZUīÕDČīā=Ņ’ą%Ī’ß%Ķ’Ž%Ģ’Ü$Ė’ŗ¬’zp’ÕTŅ’ģGā’¹Ŗ’fIo’zī¶žZ°†žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’R {žY­„žsAwžÕTŅ’ŃCÉ’£•’ “’ž‘’¢”’ “’ž‘’œ’‡|’aZ’( $nc\nćEŌžą-Ļ’ß%Ķ’ß%Ķ’Ž%Ģ’Ż$Ė’Ś$É’Ł$Ē’™’ƒ&}’ƒ'}’yķµžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’T£}ž…Iˆ’œ ’””’””’¢•’ “’Ÿ’’’›Ž’”‰’jc’SMī©6Ÿ¾įAŅ’ß%Ķ’Ž%Ģ’Ž%Ģ’Ż%Ė’Ü$Ź’Ś$Č’Ł#Č’Å.·’™!Ž’nµ™žZƆžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’U„~’‚G„’ž’’””’””’Ÿ’’’œ’š’˜‹’{q’WQ’N GnįHÓ’ß2Ļ’Ž%Ģ’Ż%Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Č’Ų#Ē’zXƒžnÖ¤žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’Ošv’tc‚’ &”’””’ ’’ž‘’œ’›Ž’™Œ’—‹’‰~’\V’=9¾b[nßDŃžŽ-Ķ’Ż%Ģ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’Ė!ŗ’kc’w豞P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’F‰hžØ1’£!–’ž‘’’›Ž’™’˜‹’–Š’Žƒ’b[’KFīØ6¾Ž@Ļ’Ż'Ģ’Ż%Ė’Ü$Ź’Ū$É’Ś$Č’Ł$Ē’×#Ę’””’a{{’cĄ“žP›w’P›w’P›w’P›w’’’’’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’IŽmžy[ƒ’¬. ’œ’›Ž’™’˜‹’–Š’”ˆ’“‡’of’NH’ŽGŠžÜ7Ķ’Ü%Ė’Ū$Ź’Ś$É’Ś$Č’Ł$Ē’×$Ę’Ö#Å’…z’e®ŽžY­„’P›w’P›w’P›w’P›w’P›w’’’’P›w’’’’’’P›w’P›w’’’’’’P›w’P›w’L“q’[iož³5§’Ÿ“’š’˜Œ’—Š’•‰’“‡’’†’ˆ|’LG’73¾ŻGĻ’Ū5Ė’Ū$Ź’Ū$É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Š"Ą’vm’są«žP›w’P›w’P›w’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’’P›w’P›w’P›w’’’’P›w’P›w’;rWž¹7¬’ ”’˜‹’—Š’•‰’”ˆ’’†’‘…’…z’JE’61¾ŪFĶžŚ4Ź’Ū$É’Ł$Č’Ų$Ē’×$Ę’Ö#Å’Õ#Ć’Ą ±’UO’qŻ©žP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’8mSžĄ<“’«)Ÿ’—Š’•‰’”ˆ’’†’‘…’ƒ’ƒy’HC’4 0¾ŁEĖžŁ2É’Ś$Č’Ų$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’»¬’mx…’`ŗŽžP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’B€bž}R„žÆ,¢’•‰’”ˆ’“‡’‘…’„’ƒ’‚x’PJ’3 0¾×EŹžŲ/Č’Ł$Ē’×$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’»¬’mw„ž^øžP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’A~`ž~P„’°,£’”ˆ’“‡’‘…’„’Žƒ’‚’w’D?’1 .¾ÖDČž×/Ē’Ų$Ę’Ö$Å’Õ#Ä’Ō#Ć’Ņ#Į’Ń#Ą’ŗ«’dFlždĀ”žP›w’P›w’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’8mSž§H£ž²,„’“‡’‘…’„’Žƒ’’’€u’B=’0 -¾ŌCĘžÕ.Ę’×$Å’Ö#Ä’Ō#Ć’Ó#Ā’Ń#Į’Š"æ’½ ®’`Y’i͜ž’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’.YDžŠBĆ’Æ+£’‘…’„’ƒ’Ž‚’Œ’‹€’t’@;’. +¾ŅCÄžŌ0Ä’Õ#Ä’Ō#Ć’Ó#Ā’Ń#Ą’Š"æ’Ī"¾’É!¹’vm’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’+T@žĶ>Ą’ž ’’„’ƒ’Ž‚’Œ’‹€’Š’}s’>9’ŠBĆžŃ2Ā’Õ#Ä’Ó#Ā’Ņ#Į’Š#Ą’Ļ"¾’Ķ"½’Ė!»’…{’’’’’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’P›w’P›w’P›w’’’’P›w’=v[ž€KƒžĪ>Ą’›’ƒ’Ž‚’Œ’‹€’Š’‰~’|r’<8’›1‘æĻ7Ą’Ó#Ā’Ņ#Į’Š#Ą’Ļ"æ’Ī"½’Ģ"»’Ź!ŗ’£–’fClž’’P›w’P›w’P›w’’’’’’P›w’P›w’’’’’’P›w’P›w’’’’’’2aJžØD£žĀ6µ’ƒ’Ž‚’Œ’‹€’Š~’‰~’ˆ}’ne’:6’; 6f _Ė;½’Š'Ą’Ń#Ą’Ļ"æ’Ī"½’Ģ"¼’Ź!ŗ’É!ø’Ā ²’…{’^Ž~žR z’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E‡g’TJ^žĪ=Ą’¦%™’Ž‚’Œ’‹€’Š’‰}’ˆ}’…z’\T’95’Č?»’Ģ.½’Š"æ’Ī"¾’Ķ"¼’Ė"»’É!¹’Č!·’Ę!¶’³„’xp’WŖ‚žP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’&J8žÜFĪ’·/Ŗ’„’’‹€’Š’‰~’ˆ}’‡|’|r’B=’HCæ”/‹æĒ4¹’Ļ"¾’Ķ"½’Ģ"»’Ź!ŗ’Č!ø’Ę!¶’Å!µ’Į±’”•’jBožPxžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’/\GžÆF©žĘ8ø’˜Œ’’‹€’Š’‰~’ˆ}’‡|’†{’lc’62’: 5a[Ā9¶’Ė&»’Ģ"¼’Ė!ŗ’É!¹’Ē!·’Å!µ’Ä “’Ā ²’ŗ«’Š"’Z|tžM–s’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:pV’MAVžŃ>Ć’Ÿ!“’’Œ€’Š’‰~’ˆ}’‡|’†{’ƒx’UN’51’-)?Ą<³’Ä.¶’Ė"»’É!¹’Č!·’Ę!¶’Ä “’Ā ²’Į ±’¾Æ’±£’%„’h\vžIŽlžM•ržP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’E†gž/[Ež}C~žŅ>Ć’³,¦’Ž‚’Œ’‹’‰~’ˆ}’‡|’†{’…z’vl’<8’GAæ^X½7°’Ę%·’Č!ø’Ę!¶’Å µ’Ć ³’Į ±’æ °’½®’ŗ«’Æ”’š&’~BžVklžGŠjžP›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’P›w’:qWžRF[žÆF©žŅ?Ä’Æ)¢’“‡’‚’Œ€’Š’‰}’‡|’†{’…z’‚x’PJ’3 /’-)?¹:­’¾,°’Ę!¶’Å!µ’Ć ³’Į ²’Ą °’¾®’¼­’ŗ«’ø©’²¤’§#š’œ,’’nUx’;rWž>z]žBcžAažP›w’P›w’P›w’=w[žĮ’Æ)¢’˜‹’‘…’ƒ’‚’Œ€’Š’‰~’ˆ|’†{’…z’zp’MG’1 .’-)?„)|æÆ3¤’»%¬’Ą ±’¾Æ’½­’»¬’¹Ŗ’·Ø’µ¦’³¤’±£’Æ”’¬ž’«#ž’¬) ’Æ+¢’·4Ŗ’¼8°’†)}’ąFŃ’Ę<¹’æ4²’¶.©’³,¦’” ”’•‰’’†’„’Žƒ’Œ’‹€’Š~’ˆ}’‡|’†{’t’QK’2 /’f^æ+ (?Ŗ5Ÿ’®.¢’¼!­’½®’»¬’¹Ŗ’·Ø’¶§’³„’²£’Æ”’­Ÿ’«’©›’§š’„˜’¦™’¦ ™’xo’Ķ8æ’£–’š’˜‹’–Š’”ˆ’’†’‘…’ƒ’‚’Œ€’‹’‰~’ˆ}’‡|’„y’g^’8 4’& #Ä * '?„3š’Ŗ+ž’· Ø’¹Ŗ’ø©’¶§’“¦’²¤’°¢’® ’­ž’Ŗ’©›’¦™’¤—’¢•’ “’rj’Å3·’šŽ’™Œ’—Š’•‰’“‡’’†’„’Žƒ’’Œ€’Š’‰}’ˆ|’„y’ja’<8’SM’0" ( %?ž1”’¤*™’²!¤’¶§’µ¦’³„’±¢’Æ”’­Ÿ’«’©›’§™’„—’£–’””’Ÿ’’nf’¾1±’™’˜‹’–‰’”ˆ’’†’‘…’ƒ’Ž‚’Œ’‹’Š~’ˆ}’w’jb’?;’TN’-)xEB>$& $?˜/’›+’©"œ’³„’±£’°”’­Ÿ’¬ž’©›’Øš’¦˜’¤–’¢•’ “’ž‘’ja’·/Ŗ’™Œ’—Š’•‰’“‡’’…’„’Žƒ’’Œ€’‹’‰~’~s’TN’=8’UO’-)‚TPUC3% #?“-‰’“*Š’¤!˜’­Ÿ’® ’¬ž’«’Øš’§™’¤—’£•’””’Ÿ’’’e]’Æ,¢’˜‹’–Š’”ˆ’“†’‘…’ƒ’Ž‚’’‹€’ˆ|’{p’SM’;7’* 'Ųc_YUNB4$j!cæ)ƒ’“$ˆ’ž“’§™’Ŗœ’§™’„˜’£–’””’Ÿ’’’œ’aY’Ø*œ’–Š’•‰’“‡’’†’„’Žƒ’‚’Œ€’u’c[’FA’:6’h_Ūphc\TMC6$" ?c\æƒ&z’‡#~’’‡’›’ “’¢•’ “’ž‘’œ’›Ž’]V’¢(—’–‰’”ˆ’’†’‘…’’„z’uk’c[’LG’B>’KEŪ-)“c_\WRPPM;  C\VĆw$o’v"o’€v’‰~’”ˆ’”ˆ’„’Ž‚’VO’š'’‹’‰~’‡|’yo’d]’RM’GC’A=’MGŌ-)VUQNLIDCD4)-)H95ŠRLÅjc’jc’kd’c\’d]’KF’o g’]V’ZS’WQ’NH’HC’PJĶ> 9›-)i=<<;;<>5*%"2/1./,ˆ- *Œ, )Ž* ') &Ž' %& $? :#########" 00Ŗ$$²$ŗ$(R€ü '€ü 'apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/FileMM.tiff000066400000000000000000000116731347226342500277240ustar00rootroot00000000000000II*V€ P8$ „BaPøT†Å7?_Ąƒōż æŸń§ėżśŽÄ汳^= Jcļēóõąū?öAl… œNgS¹äö|Ł!³Ą š ü?ˆךüüæßšżł¬RcrŠĢ’·¬Äß WŠņ²¾čµj³ĀFŠ-³ ÓyõÖķw»7Ø1ł-„iń7ūÖ&|a•KeU’T¦į1ōœ¦3)XÉŲ$(ūčH{žų€+äõčåo÷ŪłöĄ34KĘ×m9q‘ŚFźEłū?Žō×ūŹ¢łĘFŖ¹|žZ³ĪÆņģ5¾w3ŸZæ3–`•č{`WØō²¾ŸĻ„łĮØzŚmžWW !¤¾ĒæČ׬Yžy°ŽŖå2 «Ė@« ĖĄŠK£«N¼ Ā).³=䀹žK1ž|źž@ČžI>qjܚ‡r°æŠ‰ŚØŖš[åŗØŌ:TvĒČN“¢ė£3§!¦2iāC§@u¼Ļ3X׳²DE‘slrę¬dßʋrŖxµj¢ĒšƒĢĮŒ”!³RBµ9Ī0¬č­„n”*¤#ē˜ņ4Ø{€'Āb}ŸCyo²ģ¼¢I¬w§ŁśĮ*B„&HnlB±ķI:ĻĢċUA¬¤)Uŗ•LõW+gĢ2pē#“Ą0ćį²AŅTš s ¼d«Ę‡J` I6ĪūŸ8HL™ö¬§żŪi„~€* _€õ}U²¬šI8Ū…X|-1Ņ€Č{œĄ$#|µ.Rg²uĒÉš{'¹Čx©34Ūiڵ”ŽĢ*‡“žѶ§éĪēéŌ§ńÜHn€($Ōx† €@ŽX‚÷H€ą €NŠ¢ jķb‘]®» š›‡Ńæ_‚@X)ĀØdœf(mfŠŽDÄ}Šŗœ¢9²7ę±6H†h `ą“’xų½Ōńåc6OĒĖ]’‡@YžÅÓ5gų  ƒŹ¬rvg\Ø ‚ˆŚ$f~N$UL„y`Čܹ‹->É`Ō~_&±ņmP†7±qęęїŽęāĢõä™¾MM­‘e§±ų–†ńr€V!¬k@‰Å_ē|;ZÉ9äxęišikay¾ƒE –f±ĀiĒc­ćµ›P KŽ`!¢€…¬°lpGšWćżu’īöఆРg ’0ės@“Ś]PŚmLߏĄŽ'G(¤lä-“PÜdĀżYÄ\z›Ó('Ē€§Äƒp€ąHønÆŃģ;‘ś[Œ€}²1f=EŪ¤`¼€€DõGĆfĖĄ.Ī€Xą1ą„I(€.?ˆä°L€łćO8sĒ4ĢY‰š@Iž4Ą ŲŠ>‘@9E+Õ'C$)qżLčSĖNįō’Ęö€-„Äøófqh+kĄPR„qž8ŠŲuc ° €pрДxሠ…²Š;ĶŅ0® Ą@w#¬ŽÖ¾Fó¤ƒä7ŠAŅ+bˆ”ø–ų’: RŸ Ø!w$ 0ØĘw@4x)ž=†08ć\W )Ÿ4&€ƒLĄėœ¶€rŹ#|3J˜Ķb`5€ ĄFC¼wЁŠ+„A jŸņFšä\T ŠDܚ‡` uCPyp5D  ć°}Nįģ;&u«D €„Ī E¾ƒ`>ä™H© Ž0æ^pąt0Ž(\X§Ōi‘·vUGšŅfH-‰¦¤(Ø¼ćŠ?8†(Ó¢õnʐ FH °a½PyLrvNI匱±¦Ē <Ėā¼t @„nMŚ&żN®R¦Å¬8ĻP1R`Ō Ćül‹1dģ„É ±|xšÄ*ØcĀ—š†d{1Œ A’&‡p’¼X”j©÷«D öJęÓ}…TęLe‘AĀū#A ńŚ6Ē%ȹX |1ģ?Į€ĶĄ0:‡  ”U© ź1ø?Ś›S@Y”q<8Š%…¹˜£+ Q³~*‚¼z‹P8³”ƒü{īń°9 ƒš|P5ˆŠX€ąŽĮҾGڌĀs©v•CĀxF žydŒ_ŠŽ3ČŲī)wŲlS|Q0ĆŠV’”‡ųŻc0Ž‘”󆘳$"0ĘĒs^ƒ>MÜ€­‚ Ąś's¦v £x\NA¼1FމĪć8N h¶8YDYݤ] ¢&° Ų/?°ą-!8ēš3”Šm<£)”ų/ĘŲF¤iL7±ąą,*¢"c¬~²±*<„óAak įdŀe$”—#ČņŽ1”58 MG ?GįH‚žr ^ €5 !8‚ķ¦A˜] ˆhs„Aę:YXčlqnAÜ8 ™–bņŽ8 Ļšv„H• nHÄOžh2‰æćd"Œ²&Ź[ŪU«QŽqų:pąY'ˆ!@‘ą8GNŠŚD( °īAGąė4bŠ="Ą4 AF£ A<‚‹0Ų#Éł,¼÷ŸMķĻ9ńćV Œ )'Ь…P}½yŁ”HBšd6€õo¬ŽĖ*jŒx„<,ĻŅNa~5Ā(Ź)£Ø¦ŁżŠ›éS©PY°?LjAhĆČqŽ®u½ČTčtDX *Š3„Ž›ÓśSė=[“łŸV@śß]ėąyķ;ķ`ą !2€}}Īv®Ā?“‡”aŁ~HEųÖƒ ¦Ž¶aįj¢ćESŀT Ę T$v šŻė=įõä  ō>ŠŠ}£ō¾ŸØŽ„śŗ©źäĶOb¼ģjöąP÷/v ”N Fą€!ĀŒ6BH>@¢@:Oœ)"4įØaŒś¢ˆLGIXT"&ī¦ ”‚ FŠętö Š’Ö&/8óĻąōOHōĀéĻźžļś’OZ P† O’/höĻp÷OŠ ” A†¾*äAŚĆnī:ƔÄ:!ų„o @†Ź ĘöxéXØēĄ6x¾`Ų’€h–‡ ā A&ēįü„<åśfX€HÜ ŽÜ~õģ, ¤PüŠö `¤ š) *ŹŠœaB@@~`Ąøj ašĮ€¢GčM¶ÄļGš1ö”C¢bš×ąā’p) `bjĮ4”D¼h Ą‰”}( `‰Ņą¢÷A®a„!.Źģćŗf!Ŗ,ę €I&Ą„Ą!x—ā£E| š1Ę!Ź Aä)œgąg@Fē*AļĮč'ÖOĖä²Įę±jp8/Įœ!‚ąĄą€Ų’pøÄå²*²§œ`JĮž@°¤ u&¢AŒÆ ģ`²4@$!š+ļ$ģ¾MK,ĮüpĮ˜"€Į€€Ąž5„N”Ų"оģT£(9ŹłØ^ ākAų)Å5&É ¬"į†įžAę @ŠęaŠN`I…ØGb$qś‡€”üįŽ!–²aįvąé&JŒń.6»FRuF¼ya¾`$Daā¬-ĆäĮ^ü!l,!¶'œ!Ņx 0lT†žŒg–Ą€Üą‚ ŠĮršH€Üh@Ʉ2Ā®) äWA’a“įĢ ms“L6”¾! DįŌ–ą.@!¤Ą”ō<£ˆ·ÖAr”pĮ”tØHpA,"@|Ąžt€¦€(§l»*Ö^"¦4Į a¬  R.`4fšsĀ'aŌ¦¦m"į Ś!œi”Įźef`Ųµ>³A÷BįĄĒ4 €€ AČ qÖ Į€g2Aä ;ņĄĀ“¦9d(xä:€ į¶ę4 d< å|` †“L”Ö×ōFž œV ”ö° Ē4aÖyÓ¢ć3ź²ĖšD!ŒIČ@Į€AÜSŠ!ax`ė„A ÅĪ3é"ɤóJ<#ćŹ"`ÓJXĮŌČōŖŠę čaņ`”Ōž&‚aōS/»&&Bœgčaś‚aąķH4‡H¢p t§I`źWŹŁNō :ÄŖ&ź<N%@R_”š§īj6Š4Ą@b&ą8Įb”ø„ˆ"aźJÖu@“ˆ“ !ü `aäJ¹64D:"IVO ć"†’+kšxįŠ.@` į€aÜu'”hUQ‚4Ce~”R„ā}•.T“`)ōB@!Ī* £f!t®@%¢V*(®Īv ”ü ĮžŽī#F!ÖįÓ/ĀĢ¢ŹU¾ī„F2Óraö©ĮČd@  õ™Hƒjl”~% €äŠK:–IDR³¤BĀ¢¤ąÉ&qŻZ o€WĮ”!š“ Ø†ģpĘ4ĮīCT%ض†Vš<„Ž:o¶U4j2Ɛ4Į¤Jœ*‚¬`œšd#lĄh -aü,ąĮęjĀRe²I„śHˆ=y«HB±†™éŸG.  :Śį¬źs£GJ%PT€Év"vāOXČ&4ryįņ”ž”¦¢4d¼@h ~[aś `”źŌQ7$ÅāOeŁz¤Bww!¤ʜ `6ōĮŖʜO}l„į(ϲIƒ#į̧ Aų©Ą.g"”Ž`b q²&QB“ –6”B*ćü ,wŽꬁś2NI$é[‡s|WįśÜ GöaŠyŲ1eę,bÆŸ¢ĢJ”ŅÄØ”öę`*€&€!BASrs l¶†b Cn ` ~Hf¦bĮī³@fŒNמ øVu,+!˜i”  4nįÄP&TjW’Ķ…>ø2£ ¬†>&Le€gŖĪ!ę迊ø fV J Eó–E& X ~)”łā,”…Ī’Ą*…Ž²×ž9˜0W& @1~Ņ²’3.5’ģ¾%‘!°”ŗŠĘNĮśį²įčAŽ,¹\ CL D; B–fP¹!āP ¤ŲĢf¬!ūL*Ģ%–V¢*–.äŽčNĮßFX¬NwV2„<”ČÅūXÅśĘcŹąøįŌA* xeAå„‚žxk޹` yjĄaūb@·$aūVĪhŚ o“$’š‘|d€2a„ ~ /8”č$Cƒ0(1c@»‹šbd””ŅŖi–8Gf_ĮøįöįpAč)•ž(< Xa„Ć( Ā> Yb_BdōBź@ÜwZ|* x+`Aś\ś‹ŒĮüŌJP)z+a7&€,!┺¬2†4xļ¬ekĀ”¹8<#Ō, 6U\5ĮśaLA\©Ä×ŲŽsb®ŗä°Ź/Ÿi¶Zö!@ą0/š¢’œ u®vœQEygęHKĒÓf$).ƒFŒBaVĄ2Ą)”œįüĮœaŽ­Į¶b °ŃŁWź xi®;q:o·äZ €< Ąž%‚&ĮüĄ§įō‚X &Ö#c5dv ąįŅ e|Ž‹ ¾Ćj ž00D oL@N4<(=RHH/home/multix/gnustep-cvs/devmodules/dev-apps/projectcenter/Modules/Editors/ProjectCenter/Resources/FileMM.tiffapps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/Info.table000066400000000000000000000003651347226342500276410ustar00rootroot00000000000000{ Type = "Editor"; Name = "ProjectCenter"; Description = "Default ProjectCenter code editor (C, ObjectiveC, ObjectiveC++, C++ files)"; PrincipalClassName = "PCEditor"; FileTypes = (C,c,m,M,h,H,cc,CC,mm); ProvidesBrowserItems = YES; }apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/000077500000000000000000000000001347226342500307465ustar00rootroot00000000000000apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.classes000066400000000000000000000004271347226342500332410ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "goToLine:" ); Super = NSObject; }; LineJumper = { Actions = ( "goToLine:" ); Outlets = ( lineField, goToButton ); Super = NSObject; }; }apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/data.info000066400000000000000000000002701347226342500325330ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/LineJumper.gorm/objects.gorm000066400000000000000000000051141347226342500332660ustar00rootroot00000000000000GNUstep archive000f4240:0000001c:00000043:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C= B¶& % C: Dd01 NSView% ?€ A C= B¶  C= B¶&01 NSMutableArray1 NSArray&01 NSTextField1 NSControl% A BT B¦ A  B¦ A&0± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±& % Line Number:0 1NSFont% A@° &&&&&&&& &&&&&&%’0 1NSColor0 ±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±° °0±& % textColor’0±% BÖ BX Bˆ AØ  Bˆ AØ&0± &%0±0±&0±%°&&&&&&&& &&&&&&%’° °’01NSButton% BĘ Ap B˜ AĄ  B˜ AĄ&0± &%01 NSButtonCell0±& % GoTo Line01NSImage0±& %  common_ret°&&&&&&&&&&&&&&%’0±&% 0±&0±0 ±& % common_retH&&& &&0!±° 0"±&% System0#±&% windowBackgroundColor0$±&%Window0%±& % GoTo Line°% ?€ ?€ F8 F¼%&   D  D€0&± &0'± &0(1NSMutableDictionary1 NSDictionary& 0)±&%View(0)°0*±& % Button(0)°0+±&%Panel(0)°0,±&%TextFieldCell(1)°0-±&%TextFieldCell(0)° 0.±& % TextField(1)°0/±& % TextField(0)°00±&% NSOwner01±& % LineJumper02±& % ButtonCell(0)°03± &  041NSNibConnector°+05±&% NSOwner06±°)°+07±°/°)08±°-°/09±°.°)0:±°,°.0;±°*°)0<±°2°*0=1NSNibOutletConnector°5°*0>±& % goToButton0?±°5°.0@±& % lineField0A1NSNibControlConnector°*°50B±& % goToLine:0C±&apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/ObjC.syntax000066400000000000000000000215531347226342500300240ustar00rootroot00000000000000{ FileTypes = ( "m", "mm", "h" ); Contexts = ( { Keywords = ( { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0."; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.0 0.0 0.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = "<\\.\\.\\.>"; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = "<[nN]il>"; ForegroundColor = "1.0 0.0 1.0"; Bold = NO; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = ""; ForegroundColor = "1.0 0.0 1.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "1.0 0.0 1.0"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.18 0.55 0.34"; Bold = YES; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; }, { Pattern = ""; ForegroundColor = "0.65 0.16 0.16"; }, { Pattern = "<@interface>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@implementation>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@end>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@class>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@selector>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@protocol>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@throw>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@try>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@catch>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@synchronized>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@defs>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@finally>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@private>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@protected>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@public>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@encode>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@property>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@synthesize>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@dynamic>"; ForegroundColor = "0.65 0.16 0.16"; Bold = YES; }, { Pattern = "<@\""; ForegroundColor = "0.8 0.0 0.0"; } ); }, /* string */ { Beginning = "\""; Ending = "\""; ContextSkips = ( "\\\\\\\\", "\\\\\"" ); ForegroundColor = "0.8 0.0 0.0"; Keywords = ( { Pattern = "\\\\\""; ForegroundColor = "0 1 0"; }, { Pattern = "\\\\\\\\"; ForegroundColor = "0 1 0"; } ); }, /* character constant */ { Beginning = "'"; Ending = "'"; ContextSkips = ( "\\\\\\\\", "\\\\'" ); ForegroundColor = "0.2 0.2 0.8"; BackgroundColor = "0.8 0.8 0"; }, /* preproc directive */ { Beginning = "^#"; Ending = "\n"; ContextSkips = ( "\\\\\n" ); ForegroundColor = "0.63 0.13 0.94"; Bold = NO; }, /* multi-line comment */ { Beginning = "/\\*"; Ending = "\\*/"; ForegroundColor = "0.0 0.0 1.0"; Italic = YES; }, /* inline comment */ { Beginning = "//"; Ending = "\n"; ForegroundColor = "0.0 0.0 1.0"; Italic = YES; } ); } apps-projectcenter-master/Modules/Editors/ProjectCenter/Resources/Plist.syntax000066400000000000000000000031261347226342500302760ustar00rootroot00000000000000{ FileTypes = ( "plist", "syntax" ); Contexts = ( { Keywords = ( { Pattern = "\\{"; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = "\\}"; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = "("; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ")"; ForegroundColor = "0.6 0.45 0.75"; Bold = YES; }, { Pattern = ","; ForegroundColor = "0.6 0.6 0.8"; Bold = YES; }, { Pattern = "="; ForegroundColor = "0.6 0.6 0.8"; Bold = YES; }, { Pattern = ";"; ForegroundColor = "0.8 0.8 0"; Bold = YES; } ); }, /* string */ { Beginning = "\""; Ending = "\""; ContextSkips = ( "\\\\\\\\", "\\\\\"" ); ForegroundColor = "0 0.7 0"; Keywords = ( { Pattern = "\\\\\""; ForegroundColor = "0 1 0"; }, { Pattern = "\\\\\\\\"; ForegroundColor = "0 1 0"; } ); }, /* preproc directive */ { Beginning = "^#"; Ending = "\n"; ContextSkips = ( "\\\\\n" ); ForegroundColor = "0.8 0 0"; Bold = YES; }, /* multi-line comment */ { Beginning = "/\\*"; Ending = "\\*/"; ForegroundColor = "0.4 0.4 0.4"; Italic = YES; }, ); }apps-projectcenter-master/Modules/Editors/ProjectCenter/SyntaxDefinition.h000066400000000000000000000057351347226342500274410ustar00rootroot00000000000000/* SyntaxDefinition.h Interface declaration of the SyntaxDefinition class for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import #import "TextPattern.h" @class NSTextStorage, NSColor, NSArray; @interface SyntaxDefinition : NSObject { NSTextStorage * textStorage; TextPattern ** contextBeginnings; char contextBeginningChars[128]; TextPattern *** contextSkips; char ** contextSkipChars; TextPattern ** contextEndings; NSArray * contextGraphics; // First indirection is context number, second is keyword // number, third is the keyword itself. Both lists are NULL pointer // terminated. TextPattern *** keywords; NSArray * keywordGraphics; } + syntaxDefinitionForFileType: (NSString *) fileType textStorage: (NSTextStorage *) textStorage; - initWithContextList: (NSArray *) contexts textStorage: (NSTextStorage *) aTextStorage; // Obtaining context starting, ending and skips - (TextPattern **) contextBeginnings; - (const char *) contextBeginningCharacters; - (unsigned int) numberOfContextBeginningCharacters; - (const char *) contextSkipCharactersForContext: (NSUInteger) ctxt; - (unsigned int) numberOfContextSkipCharactersForContext: (NSUInteger) ctxt; - (TextPattern **) contextSkipsForContext: (NSUInteger) ctxt; - (TextPattern *) contextEndingForContext: (NSUInteger) ctxt; // Inquiring about graphical attributes of contexts - (NSColor *) foregroundColorForContext: (NSUInteger) context; - (NSColor *) backgroundColorForContext: (NSUInteger) context; - (BOOL) isItalicFontForContext: (NSUInteger) context; - (BOOL) isBoldFontForContext: (NSUInteger) context; // Obtaining keyword patterns - (TextPattern **) keywordsInContext: (NSUInteger) context; // Inquiring about graphical attributes of keywords - (NSColor *) foregroundColorForKeyword: (NSUInteger) keyword inContext: (NSUInteger) context; - (NSColor *) backgroundColorForKeyword: (NSUInteger) keyword inContext: (NSUInteger) context; - (BOOL) isItalicFontForKeyword: (NSUInteger) keyword inContext: (NSUInteger) context; - (BOOL) isBoldFontForKeyword: (NSUInteger) keyword inContext: (NSUInteger) context; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/SyntaxDefinition.m000066400000000000000000000377451347226342500274540ustar00rootroot00000000000000/* SyntaxDefinition.h Implementation of the SyntaxDefinition class for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import "SyntaxDefinition.h" #import #import #import #import #import #import #import NSDictionary * ParseSyntaxGraphics(NSDictionary * specification) { NSMutableDictionary * dict = [NSMutableDictionary dictionary]; NSString * value; value = [specification objectForKey: @"ForegroundColor"]; if (value != nil) { float r, g, b, a; NSScanner * scanner = [NSScanner scannerWithString: value]; if ([scanner scanFloat: &r] && [scanner scanFloat: &g] && [scanner scanFloat: &b]) { if ([scanner scanFloat: &a] == NO) { a = 1.0; } [dict setObject: [NSColor colorWithCalibratedRed: r green: g blue: b alpha: a] forKey: @"ForegroundColor"]; } else { NSLog(_(@"Invalid ForegroundColor specification \"%@\" found: " @"the correct format is \"r g b [a]\" where each component" @"is a real number in the range of 0.0 thru 1.0 inclusive, " @"specifying the red, green, blue and alpha (optional) " @"components of the desired color."), value); } } value = [specification objectForKey: @"BackgroundColor"]; if (value != nil) { float r, g, b, a; NSScanner * scanner = [NSScanner scannerWithString: value]; if ([scanner scanFloat: &r] && [scanner scanFloat: &g] && [scanner scanFloat: &b]) { if ([scanner scanFloat: &a] == NO) { a = 1.0; } [dict setObject: [NSColor colorWithCalibratedRed: r green: g blue: b alpha: a] forKey: @"BackgroundColor"]; } else { NSLog(_(@"Invalid BackgroundColor specification \"%@\" found: " @"the correct format is \"r g b [a]\" where each component" @"is a real number in the range of 0.0 thru 1.0 inclusive, " @"specifying the red, green, blue and alpha (optional) " @"components of the desired color."), value); } } value = [specification objectForKey: @"Bold"]; if (value != nil) { [dict setObject: [NSNumber numberWithBool: [value boolValue]] forKey: @"Bold"]; } value = [specification objectForKey: @"Italic"]; if (value != nil) { [dict setObject: [NSNumber numberWithBool: [value boolValue]] forKey: @"Italic"]; } return [[dict copy] autorelease]; } void MarkTextPatternBeginningCharacters(TextPattern * pattern, char * buffer, unsigned int bufSize) { unichar * chars = PermissibleCharactersAtPatternBeginning(pattern); if (chars == (unichar *) -1) { memset(buffer, 1, 128); } else if (chars != NULL) { unsigned int i; unichar c; for (i = 0; (c = chars[i]) != 0; i++) { if (c < bufSize) { buffer[c] = 1; } } free(chars); } } static NSDictionary * syntaxes = nil; static NSMutableDictionary * syntaxDefinitions = nil; @interface SyntaxDefinition (Private) + (void)loadSyntaxDefinitions; @end @implementation SyntaxDefinition (Private) /** * Loads all syntax definition files and associates them in the * static global variable `syntaxes' with their respective * file types. The syntax definitions aren't compiled yet - they * are left in their pure format and are compiled on a per-use * basis. */ + (void)loadSyntaxDefinitions { NSMutableDictionary *dict; NSArray *filePaths; NSString *filePath; NSEnumerator *e; NSBundle *bundle; // FIXME: need better algorithm to locate syntax files. This is good // only for a quick'n'dirty implementation bundle = [NSBundle bundleForClass:NSClassFromString(@"PCEditor")]; filePaths = [bundle pathsForResourcesOfType:@"syntax" inDirectory:nil]; dict = [NSMutableDictionary dictionary]; e = [filePaths objectEnumerator]; while ((filePath = [e nextObject]) != nil) { NSDictionary * syntax; syntax = [NSDictionary dictionaryWithContentsOfFile: filePath]; if (syntax != nil) { NSEnumerator * ee = [[syntax objectForKey: @"FileTypes"] objectEnumerator]; NSString * fileType; while ((fileType = [ee nextObject]) != nil) { [dict setObject: [syntax objectForKey: @"Contexts"] forKey: fileType]; } } } ASSIGNCOPY(syntaxes, dict); } @end @implementation SyntaxDefinition + (void)initialize { if (syntaxes == nil) { [self loadSyntaxDefinitions]; syntaxDefinitions = [NSMutableDictionary new]; } } + syntaxDefinitionForFileType:(NSString *)fileType textStorage:(NSTextStorage *)aTextStorage { SyntaxDefinition * def; def = [syntaxDefinitions objectForKey: fileType]; if (def == nil) { NSArray * contexts = [syntaxes objectForKey: fileType]; if (contexts != nil) { def = [[[SyntaxDefinition alloc] initWithContextList: contexts textStorage: aTextStorage] autorelease]; if (def != nil) { [syntaxDefinitions setObject: def forKey: fileType]; } return def; } else { return nil; } } else { return def; } } - initWithContextList:(NSArray *)contexts textStorage:(NSTextStorage *)aTextStorage { if ([self init]) { NSUInteger i, n; NSMutableArray * contextGraphicsTmp = [NSMutableArray array], * keywordGraphicsTmp = [NSMutableArray array]; ASSIGN(textStorage, aTextStorage); // compile the syntax definition for (i = 0, n = [contexts count]; i < n; i++) { NSUInteger j, keywordCount, skipCount; NSDictionary * context = [contexts objectAtIndex: i]; NSArray * ctxtKeywords, * skips; NSMutableArray * contextKeywordsGraphicsTmp; // context beginning/ending missing? if (([context objectForKey: @"Beginning"] == nil || [context objectForKey: @"Ending"] == nil) && i > 0) { NSLog(@"Syntax compilation error: context %" PRIuPTR " missing " @"beginning or ending symbol.", i); [self release]; return nil; } // process context beginnings/endings if (i > 0) { contextBeginnings = realloc(contextBeginnings, i * sizeof(TextPattern *)); contextBeginnings[i - 1] = CompileTextPattern([context objectForKey: @"Beginning"]); MarkTextPatternBeginningCharacters(contextBeginnings[i - 1], contextBeginningChars, sizeof(contextBeginningChars)); contextEndings = realloc(contextEndings, i * sizeof(TextPattern *)); contextEndings[i - 1] = CompileTextPattern([context objectForKey: @"Ending"]); } // process context skips contextSkipChars = realloc(contextSkipChars, (i + 1) * sizeof(char *)); contextSkipChars[i] = calloc(128, sizeof(char)); contextSkips = realloc(contextSkips, sizeof(TextPattern **) * (i + 1)); contextSkips[i] = NULL; skips = [context objectForKey: @"ContextSkips"]; for (j = 0, skipCount = [skips count]; j < skipCount; j++) { NSString * skip = [skips objectAtIndex: j]; contextSkips[i] = realloc(contextSkips[i], (j + 1) * sizeof(TextPattern *)); contextSkips[i][j] = CompileTextPattern(skip); MarkTextPatternBeginningCharacters(contextSkips[i][j], contextSkipChars[i], 128); } contextSkips[i] = realloc(contextSkips[i], (j + 1) * sizeof(TextPattern *)); contextSkips[i][j] = NULL; // process context graphics [contextGraphicsTmp addObject: ParseSyntaxGraphics(context)]; keywords = realloc(keywords, (i + 1) * sizeof(TextPattern **)); keywords[i] = NULL; ctxtKeywords = [context objectForKey: @"Keywords"]; contextKeywordsGraphicsTmp = [NSMutableArray arrayWithCapacity: [ctxtKeywords count]]; // run through all keywords in the context for (j = 0, keywordCount = [ctxtKeywords count]; j < keywordCount; j++) { NSDictionary * keyword = [ctxtKeywords objectAtIndex: j]; NSString * keywordString = [keyword objectForKey: @"Pattern"]; TextPattern * pattern; if (keywordString == nil) { NSLog(_(@"Missing keyword pattern declaration " @"in context %i keyword %i. Ignoring all the " @"remaining of the keywords in this context."), i, j); break; } pattern = CompileTextPattern(keywordString); if (pattern == NULL) { break; } keywords[i] = realloc(keywords[i], (j + 1) * sizeof(TextPattern *)); keywords[i][j] = pattern; [contextKeywordsGraphicsTmp addObject: ParseSyntaxGraphics(keyword)]; } // append a trailing NULL to terminate the list keywords[i] = realloc(keywords[i], (j + 1) * sizeof(TextPattern *)); keywords[i][j] = NULL; [keywordGraphicsTmp addObject: [[contextKeywordsGraphicsTmp copy] autorelease]]; } // terminate the keywords array by appending a trailing NULL pointer keywords = realloc(keywords, (i + 1) * sizeof(TextPattern **)); keywords[i] = NULL; // begining and ending arrays don't include the default context! // Thus it is indexed by 'i' not 'i + 1' contextBeginnings = realloc(contextBeginnings, i * sizeof(TextPattern **)); contextBeginnings[i - 1] = NULL; contextEndings = realloc(contextEndings, i * sizeof(TextPattern **)); contextEndings[i - 1] = NULL; contextSkipChars = realloc(contextSkipChars, (i + 1) * sizeof(char *)); contextSkipChars[i] = NULL; ASSIGNCOPY(contextGraphics, contextGraphicsTmp); ASSIGNCOPY(keywordGraphics, keywordGraphicsTmp); return self; } else { return nil; } } - (void) dealloc { TextPattern * pattern; unsigned int i; TextPattern ** patternList; char * buf; // free context beginnings for (i = 0; (pattern = contextBeginnings[i]) != NULL; i++) { FreeTextPattern(pattern); } free(contextBeginnings); // free context endings for (i = 0; (pattern = contextEndings[i]) != NULL; i++) { FreeTextPattern(pattern); } free(contextEndings); // free context skip characters for (i = 0; (buf = contextSkipChars[i]) != NULL; i++) { free(buf); } free(contextSkipChars); // free context skips for (i = 0; (patternList = contextSkips[i]) != NULL; i++) { unsigned int j; for (j = 0; (pattern = patternList[j]) != NULL; j++) { FreeTextPattern(pattern); } free(patternList); } free(contextSkips); // free keywords for (i = 0; (patternList = keywords[i]) != NULL; i++) { unsigned int j; for (j = 0; (pattern = patternList[j]) != NULL; j++) { FreeTextPattern(pattern); } free(patternList); } free(keywords); TEST_RELEASE(textStorage); TEST_RELEASE(contextGraphics); TEST_RELEASE(keywordGraphics); [super dealloc]; } /** * Returns a NULL pointer terminated list of context beginning symbols. */ - (TextPattern **)contextBeginnings { return contextBeginnings; } - (const char *)contextBeginningCharacters { return contextBeginningChars; } - (unsigned int)numberOfContextBeginningCharacters { return sizeof(contextBeginningChars); } - (const char *)contextSkipCharactersForContext:(NSUInteger)ctxt { return contextSkipChars[ctxt]; } - (unsigned int)numberOfContextSkipCharactersForContext:(NSUInteger)ctxt { return 128; } /** * Returns the context ending symbol for the context identified by `ctxt'. */ - (TextPattern *)contextEndingForContext:(NSUInteger)ctxt { return contextEndings[ctxt]; } - (TextPattern **)contextSkipsForContext:(NSUInteger)ctxt { return contextSkips[ctxt]; } - (NSColor *)foregroundColorForContext:(NSUInteger)context { return [[contextGraphics objectAtIndex: context] objectForKey: @"ForegroundColor"]; } - (NSColor *)backgroundColorForContext:(NSUInteger)context { return [[contextGraphics objectAtIndex: context] objectForKey: @"BackgroundColor"]; } - (BOOL)isItalicFontForContext:(NSUInteger)context { return [[[contextGraphics objectAtIndex: context] objectForKey: @"Italic"] boolValue]; } - (BOOL)isBoldFontForContext:(NSUInteger)context { return [[[contextGraphics objectAtIndex: context] objectForKey: @"Bold"] boolValue]; } /** * Returns a NULL pointer terminated list of text patterns representing * keywords to be matched inside context `context'. */ - (TextPattern **)keywordsInContext:(NSUInteger)context { return keywords[context]; } /** * Returns the color with which the keyword identified by `keyword' * in `contextName' should be colored. The argument `keyword' is the * index of the keyword in the array returned by -keywordsInContext:. */ - (NSColor *)foregroundColorForKeyword:(NSUInteger)keyword inContext:(NSUInteger)context { return [[[keywordGraphics objectAtIndex:context] objectAtIndex:keyword] objectForKey:@"ForegroundColor"]; } - (NSColor *)backgroundColorForKeyword:(NSUInteger)keyword inContext:(NSUInteger)context { return [[[keywordGraphics objectAtIndex:context] objectAtIndex:keyword] objectForKey:@"BackgroundColor"]; } - (BOOL)isItalicFontForKeyword:(NSUInteger)keyword inContext:(NSUInteger)context { return [[[[keywordGraphics objectAtIndex:context] objectAtIndex:keyword] objectForKey:@"Italic"] boolValue]; } /** * Returns YES if the font with which the keyword identified by `keyword' * should be bold and NO if it should be normal weigth. */ - (BOOL)isBoldFontForKeyword:(NSUInteger)keyword inContext:(NSUInteger)context { return [[[[keywordGraphics objectAtIndex:context] objectAtIndex:keyword] objectForKey:@"Bold"] boolValue]; } @end apps-projectcenter-master/Modules/Editors/ProjectCenter/SyntaxHighlighter.h000066400000000000000000000031511347226342500275750ustar00rootroot00000000000000/* SyntaxHighlighter.h Interface declaration of the SyntaxHighlighter class for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import #import #import @class NSNotification, NSDictionary, NSMutableDictionary, NSString, NSTextStorage; @class NSFont; @class SyntaxDefinition; @interface SyntaxHighlighter : NSObject { NSTextStorage *textStorage; SyntaxDefinition *syntax; NSFont * normalFont, * boldFont, * italicFont, * boldItalicFont; NSUInteger lastProcessedContextIndex; NSRange delayedProcessedRange; BOOL didBeginEditing; } - initWithFileType:(NSString *)fileType textStorage:(NSTextStorage *)aStorage; - (void)highlightRange:(NSRange)r; - (void)textStorageWillProcessEditing:(NSNotification *)notif; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/SyntaxHighlighter.m000066400000000000000000000563751347226342500276220ustar00rootroot00000000000000/* SyntaxHighlighter.m Implementation of the SyntaxHighlighter class for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import "SyntaxHighlighter.h" #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import "PCEditorView.h" #import "SyntaxDefinition.h" static NSString * const KeywordsNotFixedAttributeName = @"KNF"; static NSString * const ContextAttributeName = @"C"; static inline BOOL my_isspace(unichar c) { if (c == ' ' || c == '\t' || c == '\f') { return YES; } else { return NO; } } /** * This function looks ahead and after `startRange' in `string' and * tries to return the range of a whitespace delimited word at the * specified range. E.g. string = @"abc def ghi" and startRange = {5, 1}, * then {4, 3} is returned, because the word "def" lies within the range. * Please note that even when the range points to a whitespace area * (e.g. string = @"abc def" and startRange = {3, 1}), the lookup * will occur and not return `not found' (e.g. in the above example it * would return {0, 7}). When the range is also surrounded by whitespace * (e.g. @" " and startRange = {1, 1}) the startRange itself is returned. */ static NSRange RangeOfWordInString(NSString * string, NSRange startRange) { SEL sel = @selector(characterAtIndex:); unichar (*characterAtIndex)(id, SEL, unsigned int) = (unichar (*)(id, SEL, unsigned int)) [string methodForSelector: sel]; NSInteger ahead, after; NSUInteger length = [string length]; for (ahead = 1; ahead <= (NSInteger) startRange.location; ahead++) { if (my_isspace(characterAtIndex(string, sel, startRange.location - ahead))) { break; } } ahead--; for (after = 0; (after + NSMaxRange(startRange)) < length; after++) { if (my_isspace(characterAtIndex(string, sel, (after + NSMaxRange(startRange))))) { break; } } { NSUInteger start = startRange.location - ahead; NSUInteger length = startRange.length + ahead + after; if (start > 0) { start--; length++; } if (length + 1 < length) { length++; } return NSMakeRange(start, length); } } static inline BOOL LocateString(NSString * str, unichar * buf, NSUInteger length, NSUInteger offset) { NSUInteger i, n; for (i = 0, n = [str length]; i < n; i++) { if (i >= length) { return NO; } if (buf[i + offset] != [str characterAtIndex: i]) { return NO; } } return YES; } @interface SyntaxHighlighter (Private) - (void) fixUpContextsInRange: (NSRange) r; - (void) fixUpKeywordsInRange: (NSRange) r; - (void) lazilyFixUpKeywordsInRange: (NSRange) r; - (void) assignGraphicalAttributesOfContext: (NSUInteger) context toRange: (NSRange) r; - (void) assignGraphicalAttributesOfKeyword: (unsigned int) keyword inContext: (NSUInteger) context toRange: (NSRange) r; - (NSUInteger) contextBeforeRange: (NSRange) r; - (NSUInteger) contextAfterRange: (NSRange) r; - (NSUInteger) contextAtEndOfRange: (NSRange) r; - (void) beginEditingIfNeeded; - (void) endEditingIfNeeded; @end @implementation SyntaxHighlighter (Private) /** * Fixes up the contexts inside the text storage in range `r'. A context * is recognized by the "Context" attribute which holds the number of * the context. This method also applies graphical attributes of the * corresponding contexts to the context ranges. */ - (void) fixUpContextsInRange: (NSRange) r { TextPattern ** beginnings = [syntax contextBeginnings]; const char * beginningChars = [syntax contextBeginningCharacters]; unsigned numBeginningChars = [syntax numberOfContextBeginningCharacters]; NSUInteger i; unichar * string; unsigned int context; string = (unichar *) malloc(r.length * sizeof(unichar)); [[textStorage string] getCharacters: string range: r]; i = 0; context = [self contextBeforeRange: r]; while (i < r.length) { // marks the beginning of the currently processed range unsigned int mark = i; // default context - look for beginning symbols if (context == 0) { unsigned int j = 0; TextPattern * pattern = NULL; NSRange ctxtRange; NSInteger l = 0; TextPattern ** skips = [syntax contextSkipsForContext: 0]; const char * skipChars = [syntax contextSkipCharactersForContext: 0]; unsigned int numSkipChars = [syntax numberOfContextSkipCharactersForContext: 0]; for (;i < r.length; i++) { unichar c = string[i]; // Optimize - look into the skip characters array if the // character could be the beginning of a skip sequence. // If not, don't perform skip sequence recognition at all. if (c < numSkipChars && skipChars[c]) { for (j = 0; (pattern = skips[j]) != NULL; j++) { l = CheckTextPatternPresenceInString(pattern, string, r.length, i); if (l > 0) { break; } } if (l > 0) { i += l - 1; continue; } } // optimize - skip unneeded characters if (c < numBeginningChars && !beginningChars[c]) { continue; } for (j = 0; (pattern = beginnings[j]) != NULL; j++) { l = CheckTextPatternPresenceInString(pattern, string, r.length, i); if (l > 0) { break; } } if (l > 0) { break; } } // non-default contexts begin with number 1, not zero j++; ctxtRange = NSMakeRange(r.location + mark, i - mark); if (ctxtRange.length > 0) { // add an attribute telling the context into the text storage [textStorage addAttribute: ContextAttributeName value: [NSNumber numberWithInt: 0] range: ctxtRange]; [self assignGraphicalAttributesOfContext: 0 toRange: ctxtRange]; } ctxtRange = NSMakeRange(r.location + i, l); if (ctxtRange.length > 0) { [textStorage addAttribute: ContextAttributeName value: [NSNumber numberWithInt: j] range: ctxtRange]; [self assignGraphicalAttributesOfContext: j toRange: ctxtRange]; } i += l; // switch to the found context again context = j; } // specific context - look for it's terminator, but skip it's // exceptions else { NSInteger l = 0; TextPattern * ending = [syntax contextEndingForContext: context - 1]; NSRange ctxtRange; TextPattern ** skips = [syntax contextSkipsForContext: context]; const char * skipChars = [syntax contextSkipCharactersForContext: context]; NSUInteger numSkipChars = [syntax numberOfContextSkipCharactersForContext: context]; for (;i < r.length; i++) { unichar c = string[i]; if (c < numSkipChars && skipChars[c]) { unsigned int j; TextPattern * pattern; for (j = 0; (pattern = skips[j]) != NULL; j++) { l = CheckTextPatternPresenceInString(pattern, string, r.length, i); if (l > 0) { break; } } if (l > 0) { i += l - 1; continue; } } l = CheckTextPatternPresenceInString(ending, string, r.length, i); if (l > 0) { break; } } ctxtRange = NSMakeRange(r.location + mark, i - mark); if (ctxtRange.length > 0) { // add an attribute telling the context into the // text storage [textStorage addAttribute: ContextAttributeName value: [NSNumber numberWithInteger: context] range: ctxtRange]; [self assignGraphicalAttributesOfContext: context toRange: ctxtRange]; } ctxtRange = NSMakeRange(r.location + i, l); if (ctxtRange.length > 0) { [textStorage addAttribute: ContextAttributeName value: [NSNumber numberWithInteger: 0] range: ctxtRange]; [self assignGraphicalAttributesOfContext: context toRange: ctxtRange]; } i += l; // switch to the default context again context = 0; } } free(string); } - (void) fixUpKeywordsInRange: (NSRange) r { unichar * string; NSUInteger i; string = malloc(r.length * sizeof(unichar)); [[textStorage string] getCharacters: string range: r]; for (i = 0; i < r.length;) { NSRange contextRange; TextPattern ** patterns; NSInteger context; context = [[textStorage attribute: ContextAttributeName atIndex: i + r.location effectiveRange: &contextRange] integerValue]; contextRange = NSIntersectionRange(r, contextRange); contextRange.location -= r.location; patterns = [syntax keywordsInContext: context]; while (i < NSMaxRange(contextRange)) { unichar c = string[i]; NSUInteger l = 0; NSUInteger j; TextPattern * pattern; // skip whitespace - it can't start a keyword if (my_isspace(c) || c == '\r' || c == '\n') { i++; continue; } for (j = 0; (pattern = patterns[j]) != NULL; j++) { l = CheckTextPatternPresenceInString(pattern, string, r.length, i); if (l > 0) { break; } } // found a pattern? if (pattern != NULL) { NSRange keywordRange = NSMakeRange(i + r.location, l); [self assignGraphicalAttributesOfKeyword: j inContext: context toRange: keywordRange]; i += l; } else { i++; } } } free(string); } - (void) lazilyFixUpKeywordsInRange: (NSRange) r { NSUInteger i; BOOL localDidBeginEditing = NO; for (i = r.location; i < NSMaxRange(r);) { NSRange effectiveRange; // locate non-fixed areas and fix them up if ([textStorage attribute: KeywordsNotFixedAttributeName atIndex: i longestEffectiveRange: &effectiveRange inRange: r] != nil) { if (localDidBeginEditing == NO) { localDidBeginEditing = YES; [textStorage beginEditing]; } effectiveRange = NSIntersectionRange(effectiveRange, r); [self fixUpKeywordsInRange: effectiveRange]; [textStorage removeAttribute: KeywordsNotFixedAttributeName range: effectiveRange]; i += effectiveRange.length; } // skip over fixed areas else { i += effectiveRange.length; } } if (localDidBeginEditing == YES) { [textStorage endEditing]; } } - (void) assignGraphicalAttributesOfContext: (NSUInteger) ctxt toRange: (NSRange) r { BOOL bold, italic; NSColor * color; color = [syntax foregroundColorForContext: ctxt]; if (color != nil) { [textStorage addAttribute: NSForegroundColorAttributeName value: color range: r]; } else { [textStorage removeAttribute: NSForegroundColorAttributeName range: r]; } color = [syntax backgroundColorForContext: ctxt]; if (color != nil) { [textStorage addAttribute: NSBackgroundColorAttributeName value: color range: r]; } else { [textStorage removeAttribute: NSBackgroundColorAttributeName range: r]; } bold = [syntax isBoldFontForContext: ctxt]; italic = [syntax isItalicFontForContext: ctxt]; if (bold && italic) { [textStorage addAttribute: NSFontAttributeName value: boldItalicFont range: r]; } else if (bold) { [textStorage addAttribute: NSFontAttributeName value: boldFont range: r]; } else if (italic) { [textStorage addAttribute: NSFontAttributeName value: italicFont range: r]; } else { [textStorage addAttribute: NSFontAttributeName value: normalFont range: r]; } } - (void) assignGraphicalAttributesOfKeyword: (NSUInteger) keyword inContext: (NSUInteger) context toRange: (NSRange) r { BOOL bold, italic; NSColor * color; color = [syntax foregroundColorForKeyword: keyword inContext: context]; if (color != nil) { [textStorage addAttribute: NSForegroundColorAttributeName value: color range: r]; } else { color = [syntax foregroundColorForContext: context]; if (color != nil) { [textStorage addAttribute: NSForegroundColorAttributeName value: color range: r]; } else { [textStorage removeAttribute: NSForegroundColorAttributeName range: r]; } } color = [syntax backgroundColorForKeyword: keyword inContext: context]; if (color != nil) { [textStorage addAttribute: NSBackgroundColorAttributeName value: color range: r]; } else { color = [syntax backgroundColorForContext: context]; if (color != nil) { [textStorage addAttribute: NSBackgroundColorAttributeName value: color range: r]; } else { [textStorage removeAttribute: NSBackgroundColorAttributeName range: r]; } } bold = [syntax isBoldFontForKeyword: keyword inContext: context]; italic = [syntax isItalicFontForKeyword: keyword inContext: context]; if (bold && italic) { [textStorage addAttribute: NSFontAttributeName value: boldItalicFont range: r]; } else if (bold) { [textStorage addAttribute: NSFontAttributeName value: boldFont range: r]; } else if (italic) { [textStorage addAttribute: NSFontAttributeName value: italicFont range: r]; } else { [textStorage addAttribute: NSFontAttributeName value: normalFont range: r]; } } - (NSUInteger) contextBeforeRange: (NSRange) r { NSRange tmp; if (r.location == 0) { return 0; } else { return [[textStorage attribute: ContextAttributeName atIndex: r.location - 1 effectiveRange: &tmp] intValue]; } } - (NSUInteger) contextAfterRange: (NSRange) r { NSRange tmp; NSUInteger i; NSUInteger length; i = NSMaxRange(r); length = [textStorage length]; if (length == 0) { return 0; } else if (i < length) { return [[textStorage attribute: ContextAttributeName atIndex: i effectiveRange: &tmp] intValue]; } else { return 0; } } - (NSUInteger) contextAtEndOfRange: (NSRange) r { NSRange tmp; NSInteger i = (int) NSMaxRange(r) - 1; if (i < 0) { return 0; } else { return [[textStorage attribute: ContextAttributeName atIndex: i effectiveRange: &tmp] integerValue]; } } - (void) beginEditingIfNeeded { if (didBeginEditing == NO) { didBeginEditing = YES; [textStorage beginEditing]; } } - (void) endEditingIfNeeded { if (didBeginEditing == YES) { didBeginEditing = NO; [textStorage endEditing]; } } @end @implementation SyntaxHighlighter - initWithFileType:(NSString *)fileType textStorage:(NSTextStorage *)aStorage { if ([self init]) { NSRange r; ASSIGN(textStorage, aStorage); ASSIGN(syntax, [SyntaxDefinition syntaxDefinitionForFileType:fileType textStorage:textStorage]); // no syntax definition - no highlighting possible if (syntax == nil) { [self release]; return nil; } // mark all of the text storage as requiring keyword fixing r = NSMakeRange(0, [textStorage length]); [textStorage addAttribute: KeywordsNotFixedAttributeName value: [NSNull null] range: r]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(textStorageWillProcessEditing:) name: NSTextStorageWillProcessEditingNotification object: textStorage]; ASSIGN(normalFont, [PCEditorView defaultEditorFont]); ASSIGN(boldFont, [PCEditorView defaultEditorBoldFont]); ASSIGN(italicFont, [PCEditorView defaultEditorItalicFont]); ASSIGN(boldItalicFont, [PCEditorView defaultEditorBoldItalicFont]); return self; } else { return nil; } } - (void) dealloc { NSDebugLLog(@"SyntaxHighlighter", @"SyntaxHighlighter: dealloc"); [[NSNotificationCenter defaultCenter] removeObserver: self]; TEST_RELEASE(textStorage); TEST_RELEASE(syntax); TEST_RELEASE(normalFont); TEST_RELEASE(boldFont); TEST_RELEASE(italicFont); TEST_RELEASE(boldItalicFont); [super dealloc]; } - (void) highlightRange: (NSRange) r { if (delayedProcessedRange.length > 0) { [self beginEditingIfNeeded]; [self fixUpContextsInRange: delayedProcessedRange]; [self fixUpKeywordsInRange: delayedProcessedRange]; if ([self contextAtEndOfRange: delayedProcessedRange] != [self contextAfterRange: delayedProcessedRange]) { NSRange invalidatedRange; lastProcessedContextIndex = NSMaxRange(delayedProcessedRange); invalidatedRange = NSMakeRange(NSMaxRange(delayedProcessedRange), [textStorage length] - NSMaxRange(delayedProcessedRange)); [textStorage addAttribute: KeywordsNotFixedAttributeName value: [NSNull null] range: invalidatedRange]; } } else { if (delayedProcessedRange.location > 0 && [self contextBeforeRange: delayedProcessedRange] != [self contextAfterRange: delayedProcessedRange]) { NSRange invalidatedRange; lastProcessedContextIndex = NSMaxRange(delayedProcessedRange); [self beginEditingIfNeeded]; invalidatedRange = NSMakeRange(NSMaxRange(delayedProcessedRange), [textStorage length] - NSMaxRange(delayedProcessedRange)); [textStorage addAttribute: KeywordsNotFixedAttributeName value: [NSNull null] range: invalidatedRange]; } } delayedProcessedRange = NSMakeRange(0, 0); r = RangeOfWordInString([textStorage string], r); // need to fixup contexts? if (NSMaxRange(r) > lastProcessedContextIndex) { NSRange fixupRange; fixupRange = NSMakeRange(lastProcessedContextIndex, NSMaxRange(r) - lastProcessedContextIndex); [self beginEditingIfNeeded]; [self fixUpContextsInRange: fixupRange]; lastProcessedContextIndex = NSMaxRange(r); } [self lazilyFixUpKeywordsInRange: r]; [self endEditingIfNeeded]; } - (void) textStorageWillProcessEditing: (NSNotification *) notif { if ([textStorage editedMask] & NSTextStorageEditedCharacters) { NSRange editedRange = [textStorage editedRange]; delayedProcessedRange = RangeOfWordInString([textStorage string], editedRange); if (lastProcessedContextIndex > editedRange.location) { lastProcessedContextIndex += [textStorage changeInLength]; } } } @end apps-projectcenter-master/Modules/Editors/ProjectCenter/TextFinder.h000066400000000000000000000031311347226342500262020ustar00rootroot00000000000000#import #define Forward YES #define Backward NO @interface TextFinder : NSObject { NSString *findString; id findTextField; id replaceTextField; id ignoreCaseButton; id findNextButton; id replaceAllScopeMatrix; id statusField; BOOL findStringChangedSinceLastPasteboardUpdate; BOOL lastFindWasSuccessful; /* A bit of a kludge */ } /* Common way to get a text finder. One instance of TextFinder per app is good enough. */ + (id)sharedInstance; /* Main method for external users; does a find in the first responder. Selects found range or beeps. */ - (BOOL)find:(BOOL)direction; /* Loads UI lazily */ - (NSPanel *)findPanel; /* Gets the first responder and returns it if it's an NSTextView */ - (NSTextView *)textObjectToSearchIn; /* Get/set the current find string. Will update UI if UI is loaded */ - (NSString *)findString; - (void)setFindString:(NSString *)string; /* Misc internal methods */ - (void)appDidActivate:(NSNotification *)notification; - (void)addWillDeactivate:(NSNotification *)notification; - (void)loadFindStringFromPasteboard; - (void)loadFindStringToPasteboard; /* Methods sent from the find panel UI */ - (void)findNext:(id)sender; - (void)findPrevious:(id)sender; - (void)findNextAndOrderFindPanelOut:(id)sender; - (void)replace:(id)sender; - (void)replaceAndFind:(id)sender; - (void)replaceAll:(id)sender; - (void)orderFrontFindPanel:(id)sender; @end @interface NSString (NSStringTextFinding) - (NSRange)findString:(NSString *)string selectedRange:(NSRange)selectedRange options:(unsigned)mask wrap:(BOOL)wrapFlag; @end apps-projectcenter-master/Modules/Editors/ProjectCenter/TextFinder.m000066400000000000000000000230261347226342500262140ustar00rootroot00000000000000/* TextFinder.m Copyright (c) 1995-1996, NeXT Software, Inc. All rights reserved. Author: Ali Ozer You may freely copy, distribute and reuse the code in this example. NeXT disclaims any warranty of any kind, expressed or implied, as to its fitness for any particular use. Find and replace functionality with a minimal panel... In addition to including this class and FindPanel.nib in your app, you probably need to hook up the following action methods in your document object (or whatever object is first responder) to call the appropriate methods in [TextFinder sharedInstance]: orderFrontFindPanel: findNext: findPrevious: enterSelection: (calls setFindString:) */ #import #import "TextFinder.h" @implementation TextFinder - (id)init { if (!(self = [super init])) return nil; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidActivate:) name:NSApplicationDidBecomeActiveNotification object:[NSApplication sharedApplication]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addWillDeactivate:) name:NSApplicationWillResignActiveNotification object:[NSApplication sharedApplication]]; [self setFindString:@""]; [self loadFindStringFromPasteboard]; return self; } - (void)appDidActivate:(NSNotification *)notification { [self loadFindStringFromPasteboard]; } - (void)addWillDeactivate:(NSNotification *)notification { [self loadFindStringToPasteboard]; } - (void)loadFindStringFromPasteboard { NSPasteboard *pasteboard = [NSPasteboard pasteboardWithName:NSFindPboard]; if ([[pasteboard types] containsObject:NSStringPboardType]) { NSString *string = [pasteboard stringForType:NSStringPboardType]; if (string && [string length]) { [self setFindString:string]; findStringChangedSinceLastPasteboardUpdate = NO; } } } - (void)loadFindStringToPasteboard { NSPasteboard *pasteboard = [NSPasteboard pasteboardWithName:NSFindPboard]; if (findStringChangedSinceLastPasteboardUpdate) { [pasteboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; [pasteboard setString:[self findString] forType:NSStringPboardType]; findStringChangedSinceLastPasteboardUpdate = NO; } } static id sharedFindObject = nil; + (id)sharedInstance { if (!sharedFindObject) { sharedFindObject = [[self allocWithZone:[[NSApplication sharedApplication] zone]] init]; } return sharedFindObject; } - (void)loadUI { if (!findTextField) { if (![NSBundle loadNibNamed:@"FindPanel" owner:self]) { NSLog(@"Failed to load FindPanel.nib"); NSBeep(); } if (self == sharedFindObject) [[findTextField window] setFrameAutosaveName:@"Find"]; } [findTextField setStringValue:[self findString]]; } - (void)dealloc { if (self != sharedFindObject) { [findString release]; [super dealloc]; } } - (NSString *)findString { return findString; } - (void)setFindString:(NSString *)string { if ([string isEqualToString:findString]) return; [findString autorelease]; findString = [string copyWithZone:[self zone]]; if (findTextField) { [findTextField setStringValue:string]; [findTextField selectText:nil]; } findStringChangedSinceLastPasteboardUpdate = YES; } - (NSTextView *)textObjectToSearchIn { id obj = [[NSApp mainWindow] firstResponder]; return (obj && [obj isKindOfClass:[NSTextView class]]) ? obj : nil; } - (NSPanel *)findPanel { if (!findTextField) [self loadUI]; return (NSPanel *)[findTextField window]; } /* The primitive for finding; this ends up setting the status field (and beeping if necessary)... */ - (BOOL)find:(BOOL)direction { NSTextView *text = [self textObjectToSearchIn]; lastFindWasSuccessful = NO; if (text) { NSString *textContents = [text string]; unsigned textLength; if (textContents && (textLength = [textContents length])) { NSRange range; unsigned options = 0; if (direction == Backward) options |= NSBackwardsSearch; if ([ignoreCaseButton state]) options |= NSCaseInsensitiveSearch; range = [textContents findString:[self findString] selectedRange:[text selectedRange] options:options wrap:YES]; if (range.length) { [text setSelectedRange:range]; [text scrollRangeToVisible:range]; lastFindWasSuccessful = YES; } } } if (!lastFindWasSuccessful) { NSBeep(); [statusField setStringValue:NSLocalizedStringFromTable(@"Not found", @"FindPanel", @"Status displayed in find panel when the find string is not found.")]; } else { [statusField setStringValue:@""]; } return lastFindWasSuccessful; } - (void)orderFrontFindPanel:(id)sender { NSPanel *panel = [self findPanel]; [findTextField selectText:nil]; [panel makeKeyAndOrderFront:nil]; } /**** Action methods for gadgets in the find panel; these should all end up setting or clearing the status field ****/ - (void)findNextAndOrderFindPanelOut:(id)sender { [findNextButton performClick:nil]; if (lastFindWasSuccessful) { [[self findPanel] orderOut:sender]; } else { [findTextField selectText:nil]; } } - (void)findNext:(id)sender { if (findTextField) [self setFindString:[findTextField stringValue]]; /* findTextField should be set */ (void)[self find:Forward]; } - (void)findPrevious:(id)sender { if (findTextField) [self setFindString:[findTextField stringValue]]; /* findTextField should be set */ (void)[self find:Backward]; } - (void)replace:(id)sender { NSTextView *text = [self textObjectToSearchIn]; if (!text) { NSBeep(); } else { [[text textStorage] replaceCharactersInRange:[text selectedRange] withString:[replaceTextField stringValue]]; [text didChangeText]; } [statusField setStringValue:@""]; } - (void)replaceAndFind:(id)sender { [self replace:sender]; [self findNext:sender]; } #define ReplaceAllScopeEntireFile 42 #define ReplaceAllScopeSelection 43 - (void)replaceAll:(id)sender { NSTextView *text = [self textObjectToSearchIn]; if (!text) { NSBeep(); } else { NSTextStorage *textStorage = [text textStorage]; NSString *textContents = [text string]; NSString *replaceString = [replaceTextField stringValue]; BOOL entireFile = replaceAllScopeMatrix ? ([replaceAllScopeMatrix selectedTag] == ReplaceAllScopeEntireFile) : YES; NSRange replaceRange = entireFile ? NSMakeRange(0, [textStorage length]) : [text selectedRange]; unsigned options = NSBackwardsSearch | ([ignoreCaseButton state] ? NSCaseInsensitiveSearch : 0); unsigned replaced = 0; if (findTextField) [self setFindString:[findTextField stringValue]]; while (1) { NSRange foundRange = [textContents rangeOfString:[self findString] options:options range:replaceRange]; if (foundRange.length == 0) break; if ([text shouldChangeTextInRange:foundRange replacementString:replaceString]) { if (replaced == 0) [textStorage beginEditing]; replaced++; [textStorage replaceCharactersInRange:foundRange withString:replaceString]; replaceRange.length = foundRange.location - replaceRange.location; } } if (replaced > 0) { /* There was at least one replacement */ [textStorage endEditing]; /* We need this to bracket the beginEditing */ [text didChangeText]; /* We need one of these to terminate the shouldChange... methods we sent */ [statusField setStringValue:[NSString localizedStringWithFormat:NSLocalizedStringFromTable(@"%d replaced", @"FindPanel", @"Status displayed in find panel when indicated number of matches are replaced."), replaced]]; } else { /* No replacements were done... */ NSBeep(); [statusField setStringValue:NSLocalizedStringFromTable(@"Not found", @"FindPanel", @"Status displayed in find panel when the find string is not found.")]; } } } @end @implementation NSString (NSStringTextFinding) - (NSRange)findString:(NSString *)string selectedRange:(NSRange)selectedRange options:(unsigned)options wrap:(BOOL)wrap { BOOL forwards = (options & NSBackwardsSearch) == 0; unsigned length = [self length]; NSRange searchRange, range; if (forwards) { searchRange.location = NSMaxRange(selectedRange); searchRange.length = length - searchRange.location; range = [self rangeOfString:string options:options range:searchRange]; if ((range.length == 0) && wrap) { /* If not found look at the first part of the string */ searchRange.location = 0; searchRange.length = selectedRange.location; range = [self rangeOfString:string options:options range:searchRange]; } } else { searchRange.location = 0; searchRange.length = selectedRange.location; range = [self rangeOfString:string options:options range:searchRange]; if ((range.length == 0) && wrap) { searchRange.location = NSMaxRange(selectedRange); searchRange.length = length - searchRange.location; range = [self rangeOfString:string options:options range:searchRange]; } } return range; } @end /* 2/21/95 aozer Created for Edit II. 2/24/95 aozer Find pasteboard support 8/16/95 aozer Replace functionality 10/4/95 aozer Status field update 11/12/96 aozer Correctly send shouldChange... to the textview while doing a replace */ apps-projectcenter-master/Modules/Editors/ProjectCenter/TextPattern.h000066400000000000000000000041021347226342500264070ustar00rootroot00000000000000/* TextPattern.h Declarations of data structures and functions for text pattern manipulation for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import #import typedef struct { enum { SingleCharacterTextPatternItem, MultipleCharactersTextPatternItem, AnyCharacterTextPatternItem, BeginningOfWordTextPatternItem, EndingOfWordTextPatternItem, BeginningOfLineTextPatternItem, EndingOfLineTextPatternItem } type; union { unichar singleChar; struct { unichar * characters; unsigned int nCharacters; } multiChar; } data; unsigned int minCount, maxCount; } TextPatternItem; typedef struct { NSString * string; TextPatternItem ** items; unsigned int nItems; } TextPattern; TextPattern * CompileTextPattern (NSString * string); void FreeTextPattern (TextPattern * pattern); static inline BOOL TextPatternsEqual(TextPattern * pattern1, TextPattern * pattern2) { return [pattern1->string isEqualToString: pattern2->string]; } unsigned int CheckTextPatternPresenceInString(TextPattern * pattern, unichar * string, unsigned int stringLength, unsigned int index); unichar * PermissibleCharactersAtPatternBeginning(TextPattern * pattern); apps-projectcenter-master/Modules/Editors/ProjectCenter/TextPattern.m000066400000000000000000000356001347226342500264230ustar00rootroot00000000000000/* TextPattern.m Implementation of operations on text patterns for the ProjectManager application. Copyright (C) 2005 Saso Kiselkov 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #import "TextPattern.h" #import #import #import static void FreeTextPatternItem (TextPatternItem *item) { if (item->type == MultipleCharactersTextPatternItem) { free (item->data.multiChar.characters); } free (item); } static TextPatternItem * ParseTextPatternItem (NSString *string, unsigned int *index) { unsigned int i = *index, n = [string length]; TextPatternItem * newItem; unichar c; newItem = (TextPatternItem *) calloc(1, sizeof (TextPatternItem)); c = [string characterAtIndex: i]; i++; switch (c) { case '[': { unichar * buf = NULL; unsigned int nChars = 0; for (; i < n; i++) { unichar c = [string characterAtIndex: i]; // handle escapes if (c == '\\') { if (i + 1 >= n) { NSLog(_(@"Text pattern item parse error in text " @"pattern \"%@\" at index %i: unexpected end of " @"pattern. Escape sequence expected."), string); free (buf); free (newItem); return NULL; } i++; c = [string characterAtIndex: i]; } else if (c == ']') { i++; break; } nChars++; buf = (unichar *) realloc(buf, sizeof (unichar) * nChars); buf[nChars - 1] = c; } if (i == n) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\" at index %i: unexpected end of character class."), string, i); free (buf); free (newItem); return NULL; } newItem->type = MultipleCharactersTextPatternItem; newItem->data.multiChar.nCharacters = nChars; newItem->data.multiChar.characters = buf; } break; case '.': newItem->type = AnyCharacterTextPatternItem; break; case '<': newItem->type = BeginningOfWordTextPatternItem; break; case '>': newItem->type = EndingOfWordTextPatternItem; break; case '^': newItem->type = BeginningOfLineTextPatternItem; break; case '$': newItem->type = EndingOfLineTextPatternItem; break; case '\\': if (i >= n) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\" at index %i: unexpected end of pattern. Escape " @"sequence expected."), string); free (newItem); return NULL; } c = [string characterAtIndex: i]; i++; default: newItem->type = SingleCharacterTextPatternItem; newItem->data.singleChar = c; break; } // is there trailing cardinality indication? if (i < n) { c = [string characterAtIndex: i]; i++; switch (c) { case '{': { NSScanner * scanner; int value; if (newItem->type != SingleCharacterTextPatternItem && newItem->type != MultipleCharactersTextPatternItem && newItem->type != AnyCharacterTextPatternItem) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\" at index %i: no cardinality indication in " @"'<', '>', '^' or '$' allowed."), string, i); FreeTextPatternItem(newItem); return NULL; } scanner = [NSScanner scannerWithString: string]; [scanner setScanLocation: i]; if (![scanner scanInt: &value]) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\" at index %i: integer expected."), string, [scanner scanLocation]); FreeTextPatternItem(newItem); return NULL; } newItem->minCount = newItem->maxCount = value; i = [scanner scanLocation]; if (i + 1 >= n) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\": unexpected end of pattern, '}' or ',' " @"expected."), string); FreeTextPatternItem(newItem); return NULL; } c = [string characterAtIndex: i]; if (c == ',') { [scanner setScanLocation: i + 1]; if (![scanner scanInt: &value]) { NSLog(_(@"Text pattern item parser error in text " @"pattern \"%@\" at index %i: integer expected."), string, [scanner scanLocation]); FreeTextPatternItem(newItem); return NULL; } newItem->maxCount = value; i = [scanner scanLocation]; } if (i >= n) { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\": unexpected end of pattern, '}' expected."), string); FreeTextPatternItem(newItem); return NULL; } c = [string characterAtIndex: i]; i++; if (c != '}') { NSLog(_(@"Text pattern item parse error in text pattern " @"\"%@\" at index %i: '}' expected."), string, i); FreeTextPatternItem(newItem); return NULL; } } break; // no cardinality indication - the next character is part of // the next text pattern case '*': newItem->minCount = 0; newItem->maxCount = 0x7fffffff; break; case '?': newItem->minCount = 0; newItem->maxCount = 1; break; default: i--; newItem->minCount = newItem->maxCount = 1; break; } } else { newItem->minCount = newItem->maxCount = 1; } *index = i; return newItem; } #if 0 // not used static void DescribeTextPatternItem(TextPatternItem *item) { switch (item->type) { case SingleCharacterTextPatternItem: NSLog(@" type: single char, value: '%c', min: %i, max: %i", item->data.singleChar, item->minCount, item->maxCount); break; case MultipleCharactersTextPatternItem: NSLog(@" type: multi char, value: '%@', min: %i, max: %i", [NSString stringWithCharacters: item->data.multiChar.characters length: item->data.multiChar.nCharacters], item->minCount, item->maxCount); break; case BeginningOfWordTextPatternItem: NSLog(@" type: beginning of word"); break; case EndingOfWordTextPatternItem: NSLog(@" type: ending of word"); break; case AnyCharacterTextPatternItem: NSLog(@" type: any character, min: %i, max: %i", item->minCount, item->maxCount); break; case BeginningOfLineTextPatternItem: NSLog(@" type: beginning of line"); break; case EndingOfLineTextPatternItem: NSLog(@" type: ending of line"); break; } } #endif TextPattern * CompileTextPattern (NSString *string) { TextPattern * pattern; unsigned int i, n; pattern = (TextPattern *) calloc(1, sizeof(TextPattern)); ASSIGN(pattern->string, string); for (i = 0, n = [string length]; i < n;) { TextPatternItem * item; item = ParseTextPatternItem(string, &i); if (item == NULL) { FreeTextPattern (pattern); return NULL; } // enlarge the pattern buffer pattern->nItems++; pattern->items = (TextPatternItem **) realloc(pattern->items, pattern->nItems * sizeof(TextPatternItem *)); pattern->items[pattern->nItems - 1] = item; } return pattern; } void FreeTextPattern (TextPattern *pattern) { unsigned int i; for (i = 0; i < pattern->nItems; i++) { FreeTextPatternItem(pattern->items[i]); } free(pattern->items); TEST_RELEASE(pattern->string); free(pattern); } static inline BOOL IsMemberOfCharacterClass(unichar c, unichar *charClass, unsigned int n) { unsigned int i; for (i = 0; i < n; i++) { if (charClass[i] == c) { return YES; } } return NO; } /** * Returns YES if the passed character argument is an alphanumeric * character, and NO if it isn't. */ static inline BOOL my_isalnum (unichar c) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) { return YES; } else { return NO; } } static inline BOOL CheckTextPatternItemPresence(TextPatternItem *item, unichar *string, unsigned int stringLength, unsigned int *offset) { switch (item->type) { case SingleCharacterTextPatternItem: { unsigned int i; unsigned int n; // read characters while they are equal to our letter for (n = 0, i = *offset; i < stringLength && n < item->maxCount; i++, n++) { if (string[i] != item->data.singleChar) { break; } } if (n >= item->minCount) { *offset = i; return YES; } else { return NO; } } break; case MultipleCharactersTextPatternItem: { unsigned int i; unsigned int n; for (n = 0, i = *offset; i < stringLength && n < item->maxCount; i++, n++) { if (!IsMemberOfCharacterClass(string[i], item->data.multiChar.characters, item->data.multiChar.nCharacters)) { break; } } if (n >= item->minCount) { *offset = i; return YES; } else { return NO; } } break; case AnyCharacterTextPatternItem: { unsigned int i, n; for (i = *offset, n = 0; n < item->minCount; i++, n++) { if (i >= stringLength) { return NO; } } *offset = i; return YES; } break; case BeginningOfWordTextPatternItem: { unsigned int i = *offset; if (i >= stringLength) { return NO; } if (i > 0) { if (my_isalnum(string[i - 1])) { return NO; } else { return YES; } } else { return YES; } } break; case EndingOfWordTextPatternItem: { unsigned int i = *offset; if (i >= stringLength) { return YES; } if (!my_isalnum(string[i])) { return YES; } else { return NO; } } break; case BeginningOfLineTextPatternItem: { unsigned int i = *offset; if (i > 0) { return (string[i - 1] == '\n' || string[i - 1] == '\r'); } else { return YES; } } break; case EndingOfLineTextPatternItem: { unsigned int i = *offset; if (i + 1 < stringLength) { return (string[i + 1] == '\n' || string[i + 1] == '\r'); } else { return YES; } } break; } /* [NSException raise: NSInternalInconsistencyException format: _(@"Unknown text pattern item type %i encountered."), item->type];*/ return NO; } unsigned int CheckTextPatternPresenceInString(TextPattern *pattern, unichar *string, unsigned int stringLength, unsigned int index) { unsigned int i, off; off = index; for (i = 0; i < pattern->nItems; i++) { if (!CheckTextPatternItemPresence(pattern->items[i], string, stringLength, &off)) { break; } } if (i == pattern->nItems) { return off - index; } else { return 0; } } unichar *PermissibleCharactersAtPatternBeginning(TextPattern *pattern) { unsigned int i; for (i = 0; i < pattern->nItems; i++) { switch(pattern->items[i]->type) { case SingleCharacterTextPatternItem: { unichar * buf; buf = malloc(2 * sizeof(unichar)); buf[0] = pattern->items[i]->data.singleChar; buf[1] = 0; return buf; } case MultipleCharactersTextPatternItem: { unichar * buf; unsigned int n = pattern->items[i]->data.multiChar.nCharacters + 1; buf = malloc(n * sizeof(unichar)); memcpy(buf, pattern->items[i]->data.multiChar.characters, n * sizeof(unichar)); buf[n - 1] = 0; return buf; } case AnyCharacterTextPatternItem: return (unichar *) -1; default: break; } } return NULL; } apps-projectcenter-master/Modules/GNUmakefile000066400000000000000000000015101347226342500216460ustar00rootroot00000000000000# # GNUmakefile # # Here are the several types of modules (bundles): # # Project types: # - Aggregate # - Application # - Bundle # - Framework # - Library # - ResourceSet # - Tool # Editors: # - ProjectCenter -- default PC editor # Parsers: # - ObjectiveC -- that's it! # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Subprojects # SUBPROJECTS = \ Projects/Aggregate \ Projects/Application \ Projects/Bundle \ Projects/Framework \ Projects/Library \ Projects/ResourceSet \ Projects/Tool \ \ Editors/ProjectCenter \ \ Parsers/ProjectCenter \ \ Preferences/Build \ Preferences/Saving \ Preferences/Misc \ Preferences/EditorFSC SUBPROJECTS += Debuggers/ProjectCenter include $(GNUSTEP_MAKEFILES)/aggregate.make apps-projectcenter-master/Modules/GNUmakefile.bundles000066400000000000000000000013531347226342500233060ustar00rootroot00000000000000# # Options common to bundles # ADDITIONAL_OBJCFLAGS += ADDITIONAL_CFLAGS += ADDITIONAL_CPPFLAGS += ADDITIONAL_INCLUDE_DIRS += -I../../../ -I../../../Headers ADDITIONAL_LIB_DIRS += -L../../../Framework/ProjectCenter.framework/$(GNUSTEP_TARGET_LDIR) BUNDLE_INSTALL_DIR = $(GNUSTEP_APPS)/ProjectCenter.app/Resources $(BUNDLE_NAME)_STANDARD_INSTALL = no DO_LIB_LINK=no ifeq ($(GNUSTEP_TARGET_OS), mingw32) DO_LIB_LINK=yes else ifeq ($(GNUSTEP_TARGET_OS), mingw64) DO_LIB_LINK=yes else ifeq ($(GNUSTEP_TARGET_OS), cygwin) DO_LIB_LINK=yes endif ifeq ($(DO_LIB_LINK), yes) $(GNUSTEP_INSTANCE)_LIB_DIRS += -L../../../Framework/ProjectCenter.framework/$(GNUSTEP_TARGET_LDIR) $(GNUSTEP_INSTANCE)_BUNDLE_LIBS += -lProjectCenter endif apps-projectcenter-master/Modules/Parsers/000077500000000000000000000000001347226342500212165ustar00rootroot00000000000000apps-projectcenter-master/Modules/Parsers/ProjectCenter/000077500000000000000000000000001347226342500237655ustar00rootroot00000000000000apps-projectcenter-master/Modules/Parsers/ProjectCenter/CodeHandler.h000066400000000000000000000024671347226342500263170ustar00rootroot00000000000000/* ** CodeHandler.h ** ** Copyright (c) 2003 ** ** Author: Yen-Ju ** ** 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 */ #ifndef _CodeHandler_H_ #define _CodeHandler_H_ #import #import typedef enum _CommentType { NoComment, MultipleLineComment, SingleLineComment } CommentType; @class NSString; @protocol CodeHandler /* Called by CodeParser */ - (void)string:(NSString *)element; - (void)number:(NSString *)element; - (void)spaceAndNewLine:(unichar)element; - (void)symbol:(unichar)element; - (void)invisible:(unichar)element; @end #endif /* _CodeHandler_H_ */ apps-projectcenter-master/Modules/Parsers/ProjectCenter/GNUmakefile000066400000000000000000000013461347226342500260430ustar00rootroot00000000000000# # GNUmakefile - ProjectCenter.parser # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = ProjectCenter BUNDLE_EXTENSION = .parser ProjectCenter_PRINCIPAL_CLASS = PCParser # # Additional libraries # ProjectCenter_LIBRARIES_DEPEND_UPON += # # Resource files # ProjectCenter_RESOURCE_FILES= \ Resources/Info.table # # Header files # ProjectCenter_HEADERS= \ PCParser.h \ CodeHandler.h \ ObjCCommentHandler.h \ ObjCClassHandler.h \ ObjCMethodHandler.h # # Class files # ProjectCenter_OBJC_FILES= \ PCParser.m \ ObjCCommentHandler.m \ ObjCClassHandler.m \ ObjCMethodHandler.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCClassHandler.h000066400000000000000000000043311347226342500272400ustar00rootroot00000000000000/* ** ObjCClassHandler.h ** ** Copyright (c) 2003-2013 ** ** Author: Yen-Ju ** ** 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 */ #ifndef _ObjCClassHandler_H_ #define _ObjCClassHandler_H_ #import "CodeHandler.h" #import "ObjCCommentHandler.h" /** * ClassStart ClassSymbol ClassName ClassSuper ClassProto | ClassCategory * @... CName : CSuper < Protocol > | ( Category ) * * ClassStart is after each ';' or new line * ClassSymbol is '@' with 'interface'/'implementation' after that * ClassName started after ClassSymbol and next first ' ' * ClassCategory is surround by '(' and ')'. Started after ClassName and ' ' * ClassNone is not method; */ typedef enum _CS { ClassStart, ClassSymbol, ClassName, ClassSuper, ClassProto, ClassCategory, ClassBody, ClassNone, } CS; @class NSMutableString; @class NSMutableArray; @interface ObjCClassHandler : ObjCCommentHandler { NSUInteger position; BOOL inSpace; NSMutableString *keyword; NSMutableString *class; NSMutableArray *classes; unichar _preSymbol; NSUInteger nameBeginPosition; NSUInteger nameEndPosition; NSUInteger bodyBeginPosition; NSInteger bodySymbolCount; CS step; CS prev_step; } // NSArray of NSDictionaries // ClassName = NSString; // ClassNameRange = NSString <- NSStringFromRange(NSRange) // ClassBodyRange = NSString <- NSStringFromRange(NSRange) - (NSArray *)classes; - (void)addClassToArray; @end #endif /* _ObjCClassHandler_H_ */ apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCClassHandler.m000066400000000000000000000145721347226342500272550ustar00rootroot00000000000000/* ** ObjCClassHandler.m ** ** Copyright (c) 2003-2016 The Free Software Foundation ** ** Author: Yen-Ju ** ** 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 */ #import #import "ObjCClassHandler.h" @implementation ObjCClassHandler - (id)init { self = [super init]; position = 0; nameBeginPosition = 0; nameEndPosition = 0; bodyBeginPosition = 0; bodySymbolCount = -1; inSpace = NO; keyword = [[NSMutableString alloc] init]; class = [[NSMutableString alloc] init]; classes = [[NSMutableArray alloc] init]; prev_step = ClassNone; step = ClassNone; _preSymbol = 0; return self; } - (void)dealloc { RELEASE(keyword); RELEASE(class); RELEASE(classes); [super dealloc]; } - (NSArray *)classes { return classes; } - (void)addClassToArray { NSLog(@"OCCH: class: %@", class); if ([class length]) { NSDictionary *dict; NSString *dClass; NSString *dNRange; NSString *dBRange; dClass = [class copy]; dNRange = NSStringFromRange(NSMakeRange(nameBeginPosition, nameEndPosition-nameBeginPosition)); dBRange = NSStringFromRange(NSMakeRange(bodyBeginPosition, position-bodyBeginPosition)); dict = [NSDictionary dictionaryWithObjectsAndKeys: dClass, @"ClassName", dNRange, @"ClassNameRange", dBRange, @"ClassBodyRange", nil]; [classes addObject:dict]; RELEASE(dClass); } [class setString:@""]; } #define NotClass {step = ClassNone; [class setString: @""];} - (void)string:(NSString *)element { NSUInteger len = [element length]; [super string:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else if (step != ClassNone) { inSpace = NO; if (step == ClassStart) { NotClass; } else if (step == ClassSymbol) { [keyword appendString:element]; } else if ((step == ClassName) || (step == ClassCategory)) { [class appendString:element]; if (prev_step == ClassNone) { prev_step = ClassName; } } } position += len; _preChar = 0; } - (void)number:(NSString *)element { [super number:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { inSpace = NO; if (step == ClassStart) { NotClass; } /* else if (step == ClassSymbol) { NotClass; } else if (step == ClassCategory) { NotClass; }*/ else if (step == ClassName) { [class appendString:element]; } } position += [element length]; _preChar = 0; } - (void)spaceAndNewLine:(unichar)element { BOOL newline = NO; [super spaceAndNewLine:element]; if ((element == 0x0A) || (element == 0x0D) || (element == 0x04)) { // NSLog(@"Newline"); // if(element == 0x04) // NSLog(@"and EOF"); newline = YES; } /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { if (step != ClassNone) { /* if ((!newline) && (!inSpace)) { [class appendString:[NSString stringWithFormat:@"%c",element]]; } else*/ if ((newline || element == ' ') && (step == ClassSymbol)) { if ([keyword isEqualToString:@"end"]) { [self addClassToArray]; step = ClassNone; } else if ([keyword isEqualToString:@"interface"] || [keyword isEqualToString:@"implementation"]) { [class appendString:@"@"]; step = ClassName; prev_step = ClassNone; nameBeginPosition = position+1; } [keyword setString:@""]; if (prev_step == ClassBody) { step = ClassBody; prev_step = ClassNone; } inSpace = YES; } else if (newline && (step == ClassName)) { // NSLog(@"Class body start: \"%@\"", class); step = ClassBody; nameEndPosition = position; bodyBeginPosition = position+1; } else if ((element == ' ') && (step == ClassName) && (prev_step != ClassName)) { nameBeginPosition++; } } // Class name should start from beginning of line // (some spaces may prepend "@" symbol) if (newline && (step == ClassNone)) { step = ClassStart; } } position++; _preChar = element; } - (void)symbol:(unichar)element { [super symbol:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { inSpace = NO; _preSymbol = element; if ((step == ClassStart) || (step == ClassBody)) { if (element == '@') { prev_step = step; step = ClassSymbol; } } else if (step == ClassName) { if (element == '(') { step = ClassCategory; [class appendString:[NSString stringWithFormat:@"%c",element]]; } else if (element == '<') { step = ClassProto; } else if (element == ':') { [class appendString:[NSString stringWithFormat:@"%c",element]]; } } else if (step == ClassCategory) { if (element == ')') { step = ClassName; } [class appendString:[NSString stringWithFormat:@"%c",element]]; } else if (step == ClassProto) { if (element == '>') { step = ClassName; } } } position++; _preChar = element; } - (void)invisible:(unichar)element { [super invisible:element]; position++; _preChar = element; } @end apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCCommentHandler.h000066400000000000000000000023631347226342500276000ustar00rootroot00000000000000/* ** ObjCCommentHandler.h ** ** Copyright (c) 2003 ** ** Author: Yen-Ju ** ** 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 */ #ifndef _ObjCCommentHandler_H_ #define _ObjCCommentHandler_H_ #define EQUAL(str) ([element isEqualToString: str]) #import #import @class NSString; /* Require subclass to assign _preChar to work */ @interface ObjCCommentHandler: NSObject { CommentType _commentType; BOOL _stringBegin; unichar _preChar; unichar _stringSymbol; } @end #endif /* _ObjCCommentHandler_H_ */ apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCCommentHandler.m000066400000000000000000000047571347226342500276160ustar00rootroot00000000000000/* ** ObjCCommentHandler.m ** ** Copyright (c) 2003-2016 ** ** Author: Yen-Ju ** Riccardo Mottola ** ** 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 */ #import #import "ObjCCommentHandler.h" @implementation ObjCCommentHandler - (void)string:(NSString *)element { } - (void)number:(NSString *)element { } - (void)spaceAndNewLine:(unichar)element { if (_commentType == SingleLineComment) { if ((element == 0x0A) || (element == 0x0D) || (element == 0x04)) { _commentType = NoComment; } } } - (void)symbol:(unichar)element { if (!_stringBegin) { if (_preChar == '/') { if (element == '*') _commentType = MultipleLineComment; else if (element == '/') _commentType = SingleLineComment; } else if ((element == '/') && (_preChar == '*')) { _commentType = NoComment; } } if (_commentType == NoComment) { if ((element == '\"') && (_preChar != '\\')) { if ((_stringBegin) && (_stringSymbol == '\"')) { _stringBegin = NO; _stringSymbol = 0; } else if (!_stringBegin) { _stringBegin = YES; _stringSymbol = element; } } else if ((element == '\'') && (_preChar != '\\')) { if ((_stringBegin) && (_stringSymbol == '\'')) { _stringBegin = NO; _stringSymbol = 0; } else if (!_stringBegin) { _stringBegin = YES; _stringSymbol = element; } } } } - (void)invisible:(unichar)element { } - (id)init { self = [super init]; _commentType = NoComment; _stringBegin = NO; _stringSymbol = 0; return self; } @end apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCMethodHandler.h000066400000000000000000000043121347226342500274120ustar00rootroot00000000000000/* ** ObjCMethodHandler.h ** ** Copyright (c) 2003-2013 ** ** Author: Yen-Ju ** ** 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 */ #ifndef _ObjCMethodHandler_H_ #define _ObjCMethodHandler_H_ #import "CodeHandler.h" #import "ObjCCommentHandler.h" /** * MethodStart MethodSymbol MethodReturnValue MethodName MethodEnd * +/- ( id ) simpleMethod:value ; * * MethodStart is after each ';' or new line * MethodSymbol is +/- for objective-C * MethodReturnValue is surround by '(' and ')', and can be ignore * MethodName contain method name and messages * MethodNone is not method; */ typedef enum _CheckStep { MethodStart, MethodBody, MethodSymbol, MethodReturnValue, MethodName, MethodParameterStart, MethodParameter, MethodNone } CheckStep; @class NSMutableString; @class NSMutableArray; @interface ObjCMethodHandler : ObjCCommentHandler { NSUInteger position; BOOL inSpace; NSMutableString *method; NSMutableArray *methods; unichar _preSymbol; NSUInteger nameBeginPosition; NSUInteger nameEndPosition; NSUInteger bodyBeginPosition; NSInteger bodySymbolCount; CheckStep step; CheckStep prev_step; } // NSArray of NSDictionaries // MethodName = NSString; // MethodNameRange = NSString <- NSStringFromRange(NSRange) // MethodBodyRange = NSString <- NSStringFromRange(NSRange) - (NSArray *)methods; - (void)addMethodToArray; @end #endif /* _ObjCMethodHandler_H_ */ apps-projectcenter-master/Modules/Parsers/ProjectCenter/ObjCMethodHandler.m000066400000000000000000000150461347226342500274250ustar00rootroot00000000000000/* ** ObjCMethodHandler.m ** ** Copyright (c) 2003-2013 ** ** Author: Yen-Ju ** ** 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 */ #import #import "ObjCMethodHandler.h" @implementation ObjCMethodHandler - (id)init { self = [super init]; position = 0; nameBeginPosition = 0; nameEndPosition = 0; bodyBeginPosition = 0; bodySymbolCount = -1; inSpace = NO; method = [[NSMutableString alloc] init]; methods = [[NSMutableArray alloc] init]; prev_step = step = MethodNone; _preSymbol = 0; return self; } - (void)dealloc { NSLog(@"MethodHandler: dealloc"); RELEASE(method); RELEASE(methods); [super dealloc]; } - (NSArray *)methods { return methods; } - (void)addMethodToArray { if ([method length]) { NSDictionary *dict; NSString *dMethod; NSString *dNRange; NSString *dBRange; dMethod = [method copy]; dNRange = NSStringFromRange(NSMakeRange(nameBeginPosition, nameEndPosition-nameBeginPosition)); dBRange = NSStringFromRange(NSMakeRange(bodyBeginPosition, position-bodyBeginPosition)); dict = [NSDictionary dictionaryWithObjectsAndKeys: dMethod, @"MethodName", dNRange, @"MethodNameRange", dBRange, @"MethodBodyRange", nil]; [methods addObject:dict]; RELEASE(dMethod); } [method setString:@""]; } #define NotMethod {step = MethodNone; [method setString: @""];} - (void)string:(NSString *)element { NSUInteger len = [element length]; [super string:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin/* != NoString*/) { } else { inSpace = NO; if (step == MethodStart) { NotMethod; } else if (step == MethodName) { [method appendString:element]; } else if (step == MethodParameterStart) { step = MethodParameter; } } position += len; _preChar = 0; } - (void)number:(NSString *)element { [super number:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { inSpace = NO; if (step == MethodStart) { NotMethod; } else if (step == MethodSymbol) { NotMethod; } else if (step == MethodReturnValue) { NotMethod; } else if (step == MethodName) { [method appendString:element]; } } position += [element length]; _preChar = 0; } - (void)spaceAndNewLine:(unichar)element { BOOL newline = NO; [super spaceAndNewLine: element]; if ((element == 0x0A) || (element == 0x0D)) { newline = YES; } /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { if (step != MethodNone) { /* if ((!newline) && (!inSpace)) { [method appendString:[NSString stringWithFormat:@"%c",element]]; }*/ if (element == ' ' || newline) { if (step == MethodParameter) { step = MethodName; prev_step = MethodNone; } inSpace = YES; } } // Method name should start from beginning of line // (some spaces may prepend "+" or "-" symbol) if (newline && (step == MethodNone)) { step = MethodStart; } } position++; _preChar = element; } - (void)symbol:(unichar)element { [super symbol:element]; /* Comments */ if (_commentType != NoComment) { } else if (_stringBegin) { } else { inSpace = NO; _preSymbol = element; if (step == MethodStart) { if ((element == '+') || (element == '-')) { step = MethodName; [method appendString:[NSString stringWithFormat: @"%c", element]]; nameBeginPosition = position; } } else if ((step == MethodName) || (step == MethodParameterStart)) { if (element == '(') { if (step == MethodParameterStart) { prev_step = step; } step = MethodReturnValue; } else if (element == ':') { step = MethodName; [method appendString:@":"]; } } else if (step == MethodReturnValue && element == ')') { if (prev_step == MethodParameterStart) { step = prev_step; } else { step = MethodName; } // [method appendString:[NSString stringWithFormat: @"%c", element]]; } else if ((step == MethodName) && (element != '{') && (element != ';')) { [method appendString:[NSString stringWithFormat: @"%c", element]]; } if (element == '{') { if ((step == MethodName) && (bodySymbolCount == -1)) { // Method body starts step = MethodBody; nameEndPosition = position - 1; bodyBeginPosition = position; bodySymbolCount += 2; // -1 + 2 = 1 // NSLog(@"methodBodyStart: %i", bodySymbolCount); } else if (step == MethodBody) { bodySymbolCount++; // NSLog(@"symbolCount++: %i", bodySymbolCount); } } if ((element == '}') && ((step == MethodBody) || (step == MethodBody))) { bodySymbolCount--; // NSLog(@"symbolCount--: %i", bodySymbolCount); } // Method definition (header files) if ((step == MethodName) && (element == ';')) { nameEndPosition = position; bodyBeginPosition = position - 1; [self addMethodToArray]; step = MethodNone; } // Method implemenation (class files) if ((step == MethodBody) && (bodySymbolCount == 0)) { [self addMethodToArray]; step = MethodNone; bodySymbolCount = -1; } } position++; _preChar = element; } - (void)invisible:(unichar)element { [super invisible: element]; position ++; _preChar = element; } @end apps-projectcenter-master/Modules/Parsers/ProjectCenter/PCParser.h000066400000000000000000000023341347226342500256170ustar00rootroot00000000000000/* ** CodeParser.h ** ** Copyright (c) 2003-2013 ** ** Author: Yen-Ju ** ** 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 */ #ifndef _CodeParser_H_ #define _CodeParser_H_ #import #import #import #import "CodeHandler.h" #import "ObjCMethodHandler.h" @interface PCParser : NSObject { id _handler; NSString *_string; NSUInteger _length; unichar *_uchar; } - (void)parse; @end #endif /* _CodeParser_H_ */ apps-projectcenter-master/Modules/Parsers/ProjectCenter/PCParser.m000066400000000000000000000143121347226342500256230ustar00rootroot00000000000000/* ** CodeParser.m ** ** Copyright (c) 2003-2016 ** ** Author: Yen-Ju ** Riccardo Mottola ** ** 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 */ #import #import "PCParser.h" #import "ObjCClassHandler.h" #import "ObjCMethodHandler.h" typedef enum _CodeType { StringCodeType, /* 41-5A, 61-7A, 5F */ NumberCodeType, /* 30-39 */ SpaceAndNewLineCodeType, /* 20, 0a, 0d */ SymbolCodeType, /* others */ InvisibleCodeType /* before (contain) 1F, except 0a, 0d */ } CodeType; @implementation PCParser // =========================================================================== // ==== Initialisation // =========================================================================== - (id)init { self = [super init]; _handler = nil; _uchar = NULL; _length = 0; return self; } - (void)dealloc { NSLog(@"PCParser: dealloc"); free(_uchar); RELEASE(_string); [super dealloc]; } - (id)setString:(NSString *)text { if (_uchar != NULL) { free(_uchar); } ASSIGN(_string, text); _length = [_string length]; _uchar = malloc(sizeof(unichar)*_length); [_string getCharacters:_uchar]; return self; } - (NSArray *)classNames { _handler = [[ObjCClassHandler alloc] init]; [self parse]; AUTORELEASE(_handler); return [(ObjCClassHandler *)_handler classes]; } - (NSArray *)methodNames { _handler = [[ObjCMethodHandler alloc] init]; [self parse]; AUTORELEASE(_handler); return [(ObjCMethodHandler *)_handler methods]; } // =========================================================================== // ==== Parsing // =========================================================================== /* Private function */ CodeType codeType(unichar *ch) { if ( ((*ch > 0x40) && (*ch < 0x5B)) || ((*ch > 0x60) && (*ch < 0x7B)) || (*ch == 0x5F) ) { return StringCodeType; } else if ((*ch == 0x20) || (*ch == 0x0a) || (*ch == 0x0d)) { return SpaceAndNewLineCodeType; } else if ((*ch > 0x2F) && (*ch < 0x3A)) { return NumberCodeType; } else if (*ch < 0x20) { return InvisibleCodeType; } else if ((*ch > 0x20) && (*ch < 0x7F)) { return SymbolCodeType; } else { return StringCodeType; } } - (void)parse { NSUInteger i, start, end; CodeType startType; NSString *out; SEL selString = @selector(string:); SEL selNumber = @selector(number:); SEL selSpaceAndNewLine = @selector(spaceAndNewLine:); SEL selInvisible = @selector(invisible:); SEL selSymbol = @selector(symbol:); void (*impString)(id, SEL, id); void (*impNumber)(id, SEL, id); void (*impSpaceAndNewLine)(id, SEL, unichar); void (*impInvisible)(id, SEL, unichar); void (*impSymbol)(id, SEL, unichar); impString = (void (*)(id, SEL, id)) [[_handler class] instanceMethodForSelector:selString]; impNumber = (void (*)(id, SEL, id)) [[_handler class] instanceMethodForSelector:selNumber]; impSpaceAndNewLine = (void (*)(id, SEL, unichar)) [[_handler class] instanceMethodForSelector:selSpaceAndNewLine]; impInvisible = (void (*)(id, SEL, unichar)) [[_handler class] instanceMethodForSelector:selInvisible]; impSymbol = (void (*)(id, SEL, unichar)) [[_handler class] instanceMethodForSelector:selSymbol]; start = end = 0; startType = codeType(_uchar+start); for (i = 1; i <= _length; i++) { end = i; /* check for end, but check for end char only if not at end */ if ((end == _length) || (startType != codeType(_uchar+end)) ) { /* Check period in number */ if ((startType == NumberCodeType) && (_uchar[end] == 0x2E)) continue; if (startType == StringCodeType) { out = [_string substringWithRange:NSMakeRange(start, end-start)]; (*impString)(_handler, selString, out); } else if (startType == NumberCodeType) { out = [_string substringWithRange: NSMakeRange(start, end-start)]; (*impNumber)(_handler, selNumber, out); } else if (startType == SpaceAndNewLineCodeType) { NSUInteger j, jlen = end-start/*[out length]*/; for (j = 0; j < jlen; j++) { (*impSpaceAndNewLine)(_handler, selSpaceAndNewLine, _uchar[start+j]); } } else if (startType == SymbolCodeType) { NSUInteger j, jlen = end-start/*[out length]*/; for (j = 0; j < jlen; j++) { (*impSymbol)(_handler, selSymbol, _uchar[start+j]); } } else if (startType == InvisibleCodeType) { NSUInteger j, jlen = end-start/*[out length]*/; for (j = 0; j < jlen; j++) { (*impInvisible)(_handler, selInvisible, _uchar[start+j]); } } /* if we are at the end, we can getting the last stat char anyway and in any case it would not be valid */ if (end != _length) { start = i; startType = codeType(_uchar+start); } } } /* send an extra new line if the file did not terminate with such. Forces the parser to close pending actions */ if (codeType(_uchar+(_length-1)) != SpaceAndNewLineCodeType) (*impSpaceAndNewLine)(_handler, selSpaceAndNewLine, 0X0A); } @end apps-projectcenter-master/Modules/Parsers/ProjectCenter/Resources/000077500000000000000000000000001347226342500257375ustar00rootroot00000000000000apps-projectcenter-master/Modules/Parsers/ProjectCenter/Resources/Info.table000066400000000000000000000003341347226342500276430ustar00rootroot00000000000000{ Type = "Parser"; Name = "ProjectCenter"; Description = "Parser for C and ObjectiveC/ObjectiveC++ language"; PrincipalClassName = "PCParser"; FileTypes = (C,c,m,M,h,H,cc,CC,mm); ProvidesBrowserItems = YES; }apps-projectcenter-master/Modules/Preferences/000077500000000000000000000000001347226342500220405ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Build/000077500000000000000000000000001347226342500230775ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Build/GNUmakefile000066400000000000000000000010451347226342500251510ustar00rootroot00000000000000# # GNUmakefile - Build preferences # PACKAGE_NAME = Build include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Build BUNDLE_EXTENSION = .preferences Build_PRINCIPAL_CLASS = PCBuildPrefs # # Additional libraries # Build_LIBRARIES_DEPEND_UPON += # # Resource files # Build_RESOURCE_FILES= \ Resources/BuildPrefs.gorm \ Resources/Info.table # # Header files # Build_HEADERS= \ PCBuildPrefs.h # # Class files # Build_OBJC_FILES= \ PCBuildPrefs.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Preferences/Build/PCBuildPrefs.h000066400000000000000000000036311347226342500255350ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2009 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import #ifndef PCDefaultBuildTool #define PCDefaultBuildTool @"/usr/bin/make" #endif #define SuccessSound @"SuccessSound" #define FailureSound @"FailureSound" #define RootBuildDirectory @"RootBuildDirectory" #define BuildTool @"BuildTool" #define DeleteCacheWhenQuitting @"DeleteBuildCacheWhenQuitting" #define PromptOnClean @"PromtOnClean" @interface PCBuildPrefs : NSObject { id prefs; IBOutlet NSBox *buildingView; IBOutlet NSTextField *successField; IBOutlet NSButton *setSuccessButton; IBOutlet NSTextField *failureField; IBOutlet NSButton *setFailureButton; IBOutlet NSTextField *rootBuildDirField; IBOutlet NSButton *setRootBuildDirButton; IBOutlet NSTextField *buildToolField; IBOutlet NSButton *setBuildToolButton; IBOutlet NSButton *deleteCache; IBOutlet NSButton *promptOnClean; } @end apps-projectcenter-master/Modules/Preferences/Build/PCBuildPrefs.m000066400000000000000000000150741347226342500255460ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2009 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import "PCBuildPrefs.h" @implementation PCBuildPrefs // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)initWithPrefController:(id )aPrefs { self = [super init]; if ([NSBundle loadNibNamed:@"BuildPrefs" owner:self] == NO) { NSLog(@"PCBuildPrefs: error loading NIB file!"); } prefs = aPrefs; RETAIN(buildingView); return self; } - (void)awakeFromNib { [setSuccessButton setRefusesFirstResponder:YES]; [setFailureButton setRefusesFirstResponder:YES]; [setRootBuildDirButton setRefusesFirstResponder:YES]; [setBuildToolButton setRefusesFirstResponder:YES]; [deleteCache setRefusesFirstResponder:YES]; [promptOnClean setRefusesFirstResponder:YES]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(buildingView); [super dealloc]; } // Protocol - (void)readPreferences { NSString *val; BOOL bVal; int state; NSString *buildToolDefault; PCFileManager *pcfm = [PCFileManager defaultManager]; /* some heuristic to find the best make default */ buildToolDefault = [pcfm findExecutableToolFrom: [NSArray arrayWithObjects: @"usr/local/bin/gmake", @"usr/bin/gmake", @"usr/local/bin/make", @"usr/bin/make", @"bin/make", nil]]; NSLog(@"Build tool found: %@", buildToolDefault); val = [prefs stringForKey:SuccessSound defaultValue:@""]; [successField setStringValue:val]; val = [prefs stringForKey:FailureSound defaultValue:@""]; [failureField setStringValue:val]; val = [prefs stringForKey:RootBuildDirectory defaultValue:@""]; [rootBuildDirField setStringValue:val]; val = [prefs stringForKey:BuildTool defaultValue:buildToolDefault]; if (val) [buildToolField setStringValue:val]; bVal = [prefs boolForKey:DeleteCacheWhenQuitting defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [deleteCache setState:state]; bVal = [prefs boolForKey:PromptOnClean defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [promptOnClean setState:state]; } - (NSView *)view { return buildingView; } // Actions - (void)setSuccessSound:(id)sender { NSArray *types = [NSArray arrayWithObjects:@"snd",@"au",@"wav",nil]; NSArray *files; NSString *path; if (sender == successField) { path = [successField stringValue]; } else { files = [[PCFileManager defaultManager] filesOfTypes:types operation:PCOpenFileOperation multiple:NO title:@"Choose Success Sound" accView:nil]; path = [files objectAtIndex:0]; } /* { NSSound *sound; sound = [[NSSound alloc] initWithContentsOfFile:path byReference:YES]; [sound play]; RELEASE(sound); }*/ if (path) { [successField setStringValue:path]; [prefs setString:path forKey:SuccessSound notify:YES]; } [[buildingView window] makeFirstResponder:successField]; } - (void)setFailureSound:(id)sender { NSArray *types = [NSArray arrayWithObjects:@"snd",@"au",@"wav",nil]; NSArray *files; NSString *path; if (sender == failureField) { path = [failureField stringValue]; } else { files = [[PCFileManager defaultManager] filesOfTypes:types operation:PCOpenFileOperation multiple:NO title:@"Choose Failure Sound" accView:nil]; path = [files objectAtIndex:0]; } if (path) { [failureField setStringValue:path]; [prefs setString:path forKey:FailureSound notify:YES]; } [[buildingView window] makeFirstResponder:failureField]; } - (void)setRootBuildDir:(id)sender { NSArray *files; NSString *path; if (sender == rootBuildDirField) { path = [rootBuildDirField stringValue]; } else { files = [[PCFileManager defaultManager] filesOfTypes:nil operation:PCOpenDirectoryOperation multiple:NO title:@"Choose Build Directory" accView:nil]; path = [files objectAtIndex:0]; } if (path) { [rootBuildDirField setStringValue:path]; [prefs setString:path forKey:RootBuildDirectory notify:YES]; } [[buildingView window] makeFirstResponder:rootBuildDirField]; } - (void)setBuildTool:(id)sender { NSArray *files; NSString *path; if (sender == buildToolField) { path = [buildToolField stringValue]; } else { files = [[PCFileManager defaultManager] filesOfTypes:nil operation:PCOpenFileOperation multiple:NO title:@"Choose Build Tool" accView:nil]; path = [files objectAtIndex:0]; } if (path) { [buildToolField setStringValue:path]; [prefs setString:path forKey:BuildTool notify:YES]; } [[buildingView window] makeFirstResponder:buildToolField]; } - (void)setDeleteCache:(id)sender { BOOL state; if (deleteCache == nil) {// HACK!!! need to be fixed in GNUstep deleteCache = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:DeleteCacheWhenQuitting notify:YES]; } - (void)setPromptOnClean:(id)sender { BOOL state; if (promptOnClean == nil) {// HACK!!! need to be fixed in GNUstep promptOnClean = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:PromptOnClean notify:YES]; } @end apps-projectcenter-master/Modules/Preferences/Build/Resources/000077500000000000000000000000001347226342500250515ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Build/Resources/BuildPrefs.gorm/000077500000000000000000000000001347226342500300535ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Build/Resources/BuildPrefs.gorm/data.classes000066400000000000000000000013511347226342500323430ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setDeleteCache:", "setBuildTool:", "setFailureSound:", "setPromptOnClean:", "setRootBuildDir:", "setSuccessSound:" ); Super = NSObject; }; PCBuildPrefs = { Actions = ( "setPromptOnClean:", "setFailureSound:", "setRootBuildDir:", "setSuccessSound:", "setBuildTool:", "setDeleteCache:" ); Outlets = ( buildingView, failureField, promptOnClean, rootBuildDirField, setRootBuildDirButton, setFailureButton, setSuccessButton, successField, buildToolField, setBuildToolButton, deleteCache ); Super = NSObject; }; }apps-projectcenter-master/Modules/Preferences/Build/Resources/BuildPrefs.gorm/data.info000066400000000000000000000002701347226342500316400ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Preferences/Build/Resources/BuildPrefs.gorm/objects.gorm000066400000000000000000000223211347226342500323720ustar00rootroot00000000000000GNUstep archive000f4240:0000001e:000000f0:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Cø C“€& % C€ D@€01 NSView% ?€ A Cø C“€  Cø C“€&01 NSMutableArray1 NSArray&01NSBox%  C§ Cƒ€  C§ Cƒ€&0± &0 ± % @ @ C„ C€  C„ C€&0 ± &0 ±% A C0 Cœ Bœ  Cœ Bœ&0 ± &0 ± % @ą @ą C• BT  C• BT&0± &01 NSTextField1 NSControl% Ač BL AØ  BL AØ&0± &%01NSTextFieldCell1 NSActionCell1NSCell0±&%Success:01NSFont% A@&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% @@ BL AØ  BL AØ&0± &%0±0±&%Failure:°&&&&&&&& &&&&&&%’°°’0±% B` Ač CC AØ  CC AØ&0± &%0 ±0!±&0"±%&&&&&&&& &&&&&&%’°°’0#1NSButton% C€ Ač B( AØ  B( AØ&0$± &%0%1 NSButtonCell0&±&%Set...°"&&&&&&&&&&&&&&%’0'±&0(±&&&& &&0)±% C€ @@ B( AØ  B( AØ&0*± &%0+±0,±&%Set...°"&&&&&&&&&&&&&&%’0-±&0.±&&&& &&0/±% B` @@ CC AØ  CC AØ&00± &%01±02±&°"&&&&&&&& &&&&&&%’°°’03±04±&%Sounds°"&&&&&&&&&&&&&& @  @ %%05±% A A  C• AØ  C• AØ&06± &%07±08±&%Prompt on clean091NSImage0:1NSMutableString&%GSSwitch°"&&&&&&&&&&&&&&%’0;±&0<±&0=±0>±&%GSSwitchSelected&&& &&0?±% A Bģ Cœ BP  Cœ BP&0@± &0A± % @ą @ą C• AŲ  C• AŲ&0B± &0C±% @@ C{ AØ  C{ AØ&0D± &%0E±0F±&%/tmp/ProjectCenterBuild°"&&&&&&&& &&&&&&%’°°’0G±% C€ @@ B( AØ  B( AØ&0H± &%0I±0J±&%Set...°"&&&&&&&&&&&&&&%’0K±&0L±&&&& &&0M±0N±&%Root Build Directory°"°N&&&&&&&&&&&&&& @  @ %%0O±% A Bt Cœ BP  Cœ BP&0P± &0Q± % @ą @ą C• AŲ  C• AŲ&0R± &0S±% @@ C{ AØ  C{ AØ&0T± &%0U±0V±&°"°V&&&&&&&& &&&&&&%’°°’0W±% C€ @@ B( AØ  B( AØ&0X± &%0Y±0Z±&%Set...°"&&&&&&&&&&&&&&%’0[±&0\±&&&& &&0]±0^±&%External Build Tool°"°^&&&&&&&&&&&&&& @  @ %%0_±% A B C• A€  C• A€&0`± &%0a±0b±&,%,Remove files in root build directory on quit°9°"0c±&,%,Remove files in root build directory on quit&&&&&&&&&&&&&&%’0d±&0e±&°=&&& &&0f±0g±&%Box°"&&&&&&&&&&&&&& %%0h±°0i±&% System0j±&% windowBackgroundColor0k±&%Window0l±&%Build°l @@ B F@ F@%&   DÆ Dƒ@0m± &0n± &0o1NSMutableDictionary1 NSDictionary&0p±&% NSOwner0q±& % PCBuildPrefs0r±&%Box(3)0s±% B€ BĀ C…€ B8  C…€ B8&0t± &0u± % @ą @ą C} AØ  C} AØ&0v± &0w±0x±&%Title°"&&&&&&&&&&&&&& @  @ %%0y±&%View(8)°Q0z±&%Box(7)°O0{±& % TextField(3)°/0|±& % Button(2)°50}±&%View(3)0~± % @ą @ą C• B  C• B&0± &0€±& % TextField(7)°S0±&%Box(2)0‚±% A B¦ Cœ Bt  Cœ Bt&0ƒ± &°~0„±0…±&%Root Build Directory°"&&&&&&&&&&&&&& @  @ %%0†±&%View(7)°A0‡±&%Box(6)°?0ˆ±& % TextField(2)°0‰±& % Button(1)°)0б&%View(2)° 0‹±& % Button(5)°_0Œ±&%Box(1)° 0±&%View(6)0ޱ % @ą @ą Cž AØ  Cž AØ&0± &0±&%Box(5)0‘±% @@ BĘ C„ B8  C„ B8&0’± &°Ž0“±°x°"&&&&&&&&&&&&&& @  @ %%0”±& % TextField(1)°0•±& % Button(0)°#0–±&%View(1)° 0—±& % Button(4)°W0˜±&%Box(0)°0™±&%View(5)0š± % @ą @ą C} AØ  C} AØ&0›± &0œ±& % Build Section°0±&%Box(4)0ž±% B€ BŽ C…€ B8  C…€ B8&0Ÿ± &°š0 ±°x°"&&&&&&&&&&&&&& @  @ %%0”±& % TextField(0)°0¢±&%View(0)°0£±& % Button(3)°G0¤±& % TextField(4)°C0„±&%View(4)°u0¦± &330§1NSNibConnector°œ0ر&% NSOwner0©±°¢°œ0Ŗ±°˜°¢0«±°–°˜0¬±°Œ°–0­±°Š°Œ0®±°”°Š0Ʊ°”°Š0°±°ˆ°Š0±±°•°Š0²±°‰°Š0³±°{°Š0“±°|°–0µ±°°–0¶±°}°0·±°¤°‡0ø±°£°‡0¹1NSNibOutletConnector°Ø°˜0ŗ±& % buildingView0»±°Ø°{0¼±& % failureField0½±°Ø°|0¾±& % promptOnClean0汰ذ¤0Ą±&%rootBuildDirField0Į±°Ø°ˆ0±& % successField0Ć1NSNibControlConnector°•°Ø0ı&%setSuccessSound:0ű°‰°Ø0ʱ&%setFailureSound:0DZ°£°Ø0ȱ&%setRootBuildDir:0ɱ°|°Ø0ʱ&%setPromptOnClean:0˱°€°z0̱°—°z0ͱ°Ø°€0α&%buildToolField0ϱ°Ø°‰0б&%setFailureButton0ѱ°Ø°•0ұ&%setSuccessButton0Ó±°Ø°—0Ō±&%setBuildToolButton0Õ±°Ø°£0Ö±&%setRootBuildDirButton0×±°ˆ°Ø0Ų±&%setSuccessSound:0ٱ°{°Ø0ڱ&%setFailureSound:0Ū±°¤°Ø0ܱ&%setRootBuildDir:0ݱ°€°Ø0ޱ& % setBuildTool:0ß±°r°–0ą±°„°r0į±°°–0ā±°™°0ć±°°–0ä±°°0å±°‡°–0ę±°†°‡0ē±°z°–0č±°y°z0é±°—°Ø0ź±& % setBuildTool:0ė±°‹°–0ģ±°‹°Ø0ķ±&%setDeleteCache:0ī±°Ø°‹0ļ±& % deleteCache0š±&apps-projectcenter-master/Modules/Preferences/Build/Resources/Info.table000066400000000000000000000002071347226342500267540ustar00rootroot00000000000000{ Type = "Preferences"; Name = "Build"; Description = "Preferences for Project Build."; PrincipalClassName = "PCBuildPrefs"; } apps-projectcenter-master/Modules/Preferences/EditorFSC/000077500000000000000000000000001347226342500236225ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/EditorFSC/GNUmakefile000066400000000000000000000011251347226342500256730ustar00rootroot00000000000000# # GNUmakefile - EditorFSC preferences # PACKAGE_NAME = EditorFSC include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = EditorFSC BUNDLE_EXTENSION = .preferences EditorFSC_PRINCIPAL_CLASS = PCEditorFSCPrefs # # Additional libraries # EditorFSC_LIBRARIES_DEPEND_UPON += # # Resource files # EditorFSC_RESOURCE_FILES= \ Resources/EditorFSCPrefs.gorm \ Resources/Info.table # # Header files # EditorFSC_HEADERS= \ PCEditorFSCPrefs.h # # Class files # EditorFSC_OBJC_FILES= \ PCEditorFSCPrefs.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h000066400000000000000000000046161347226342500270070ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2015 Free Software Foundation // // Authors: Sergii Stoian // Riccardo Mottola // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import #define EditorTextFont @"EditorTextFont" #define EditorTextFontSize @"EditorTextFontSize" #define ConsoleFixedFont @"ConsoleFixedFont" #define ConsoleFixedFontSize @"ConsoleFixedFontSize" #define EditorLines @"EditorLines" #define EditorColumns @"EditorColumns" #define EditorForegroundColor @"EditorForegroundColor" #define EditorBackgroundColor @"EditorBackgroundColor" #define EditorSelectionColor @"EditorSelectionColor" @interface PCEditorFSCPrefs : NSObject { id prefs; IBOutlet NSBox *editorFSCView; IBOutlet NSButton *editorFontButton; IBOutlet NSTextField *editorFontField; IBOutlet NSButton *consoleFixedFontButton; IBOutlet NSTextField *consoleFixedFontField; IBOutlet NSTextField *editorLinesField; IBOutlet NSTextField *editorColumnsField; IBOutlet NSColorWell *foregroundColorWell; IBOutlet NSColorWell *backgroundColorWell; IBOutlet NSColorWell *selectionColorWell; NSFont *currentEditorFont; NSFont *currentConsoleFixedFont; NSColor *currentBackgroundColor; NSColor *currentForegroundColor; NSColor *currentSelectionColor; } - (void)setEditorTextFont:(id)sender; - (void)setConsoleFixedFont:(id)sender; - (void)setEditorSize:(id)sender; - (void)setEditorColor:(id)sender; @end apps-projectcenter-master/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m000066400000000000000000000165711347226342500270170ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2015 Free Software Foundation // // Authors: Sergii Stoian // Riccardo Mottola // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import "PCEditorFSCPrefs.h" // ---------------------------------------------------------------------------- // --- PCEditorFSCPrefsFontButton created to forward changeFont: message // --- to PCEditorFSCPrefs class // ---------------------------------------------------------------------------- @interface PCEditorFSCPrefsFontButton : NSButton { } @end @implementation PCEditorFSCPrefsFontButton - (void)changeFont:(id)sender { [[_cell target] changeFont:sender]; } - (BOOL)resignFirstResponder { [[NSFontPanel sharedFontPanel] close]; return YES; } @end @implementation PCEditorFSCPrefs // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)initWithPrefController:(id )aPrefs { self = [super init]; if ([NSBundle loadNibNamed:@"EditorFSCPrefs" owner:self] == NO) { NSLog(@"PCEditorFSCPrefs: error loading NIB file!"); } prefs = aPrefs; currentEditorFont = nil; currentConsoleFixedFont = nil; RETAIN(editorFSCView); return self; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCEditorFSCPrefs: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(editorFSCView); [super dealloc]; } - (void)awakeFromNib { [editorFontButton setTarget:self]; [editorFontField setAllowsEditingTextAttributes:YES]; [consoleFixedFontButton setTarget:self]; [consoleFixedFontField setAllowsEditingTextAttributes:YES]; } // ---------------------------------------------------------------------------- // --- Utility methods // ---------------------------------------------------------------------------- - (void)pickFont:(NSFont *)pickedFont { NSFontManager *fontManager = [NSFontManager sharedFontManager]; [fontManager setSelectedFont:pickedFont isMultiple:NO]; [fontManager orderFrontFontPanel:self]; } - (void)changeFont:(id)sender { NSButton *button = (NSButton *)[[editorFSCView window] firstResponder]; int buttonTag; NSFont *font; NSString *fontString; if (![button isKindOfClass:[NSButton class]]) { return; } font = [sender convertFont:currentEditorFont]; fontString = [NSString stringWithFormat:@"%@ %0.1f", [font fontName], [font pointSize]]; buttonTag = [button tag]; if (buttonTag == 0) // Editor font button { [editorFontField setStringValue:fontString]; [editorFontField setFont:font]; [prefs setString:[font fontName] forKey:EditorTextFont notify:YES]; [prefs setFloat:[font pointSize] forKey:EditorTextFontSize notify:YES]; } else if (buttonTag == 1) // Console Fixed Font button { [consoleFixedFontField setStringValue:fontString]; [consoleFixedFontField setFont:font]; [prefs setString:[font fontName] forKey:ConsoleFixedFont notify:YES]; [prefs setFloat:[font pointSize] forKey:ConsoleFixedFontSize notify:YES]; } } // ---------------------------------------------------------------------------- // --- Protocol // ---------------------------------------------------------------------------- - (void)readPreferences { NSString *fontName; float fontSize; NSFont *editorFont = [NSFont userFixedPitchFontOfSize:0.0]; NSFont *consoleFixedFont = [NSFont userFixedPitchFontOfSize:0.0]; NSString *val; // Editor font fontName = [prefs stringForKey:EditorTextFont defaultValue:[editorFont fontName]]; fontSize = [prefs floatForKey:EditorTextFontSize defaultValue:[editorFont pointSize]]; currentEditorFont = [NSFont fontWithName:fontName size:fontSize]; [editorFontField setStringValue:[NSString stringWithFormat:@"%@ %0.1f", [currentEditorFont fontName], [currentEditorFont pointSize]]]; [editorFontField setFont:currentEditorFont]; // Console fixed font fontName = [prefs stringForKey:ConsoleFixedFont defaultValue:[consoleFixedFont fontName]]; fontSize = [prefs floatForKey:ConsoleFixedFontSize defaultValue:[consoleFixedFont pointSize]]; consoleFixedFont = [NSFont fontWithName:fontName size:fontSize]; [consoleFixedFontField setStringValue:[NSString stringWithFormat:@"%@ %0.1f", [currentConsoleFixedFont fontName], [currentConsoleFixedFont pointSize]]]; [consoleFixedFontField setFont:currentConsoleFixedFont]; // Editor window size val = [prefs stringForKey:EditorLines defaultValue:@"30"]; [editorLinesField setStringValue:val]; val = [prefs stringForKey:EditorColumns defaultValue:@"80"]; [editorColumnsField setStringValue:val]; // Colors currentForegroundColor = [prefs colorForKey:EditorForegroundColor defaultValue:[NSColor blackColor]]; [foregroundColorWell setColor:currentForegroundColor]; currentBackgroundColor = [prefs colorForKey:EditorBackgroundColor defaultValue:[NSColor colorWithCalibratedWhite:0.9 alpha:0]]; [backgroundColorWell setColor:currentBackgroundColor]; currentSelectionColor = [prefs colorForKey:EditorSelectionColor defaultValue:[NSColor darkGrayColor]]; [selectionColorWell setColor:currentSelectionColor]; } - (NSView *)view { return editorFSCView; } // ---------------------------------------------------------------------------- // --- Actions // ---------------------------------------------------------------------------- - (void)setEditorTextFont:(id)sender { [[editorFSCView window] makeFirstResponder:editorFontButton]; [self pickFont:currentEditorFont]; } - (void)setConsoleFixedFont:(id)sender { [[editorFSCView window] makeFirstResponder:consoleFixedFontButton]; [self pickFont:currentConsoleFixedFont]; } - (void)setEditorSize:(id)sender { NSString *val; NSString *key; if (sender == editorLinesField) { key = EditorLines; val = [editorLinesField stringValue]; } else // editorColumnsField { key = EditorColumns; val = [editorColumnsField stringValue]; } [prefs setString:val forKey:key notify:YES]; } - (void)setEditorColor:(id)sender { NSColor *color; NSString *key; if (sender == foregroundColorWell) { color = [foregroundColorWell color]; key = EditorForegroundColor; } else if (sender == backgroundColorWell) { color = [backgroundColorWell color]; key = EditorBackgroundColor; } else // selectionColorWell { color = [selectionColorWell color]; key = EditorSelectionColor; } [prefs setColor:color forKey:key notify:YES]; } @end apps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/000077500000000000000000000000001347226342500255745ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/000077500000000000000000000000001347226342500313215ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.classes000066400000000000000000000015361347226342500336160ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setConsoleFixedFont:", "setEditorColor:", "setEditorSize:", "setEditorTextFont:" ); Super = NSObject; }; PCEditorFSCPrefs = { Actions = ( "setEditorTextFont:", "setConsoleFixedFont:", "setEditorSize:", "setEditorColor:" ); Outlets = ( prefs, editorFSCView, editorFontButton, editorFontField, consoleFixedFontButton, consoleFixedFontField, editorLinesField, editorColumnsField, foregroundColorWell, backgroundColorWell, selectionColorWell ); Super = NSObject; }; PCEditorFSCPrefsFontButton = { Actions = ( ); Outlets = ( ); Super = NSButton; }; PCEditorFSCPrefsView = { Actions = ( ); Outlets = ( ); Super = NSBox; }; }apps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.info000066400000000000000000000002701347226342500331060ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/objects.gorm000066400000000000000000000202621347226342500336420ustar00rootroot00000000000000GNUstep archive000f4240:0000001f:000000cd:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Cø C“€& % C! D0Ą01 NSView% ?€ A Cø C“€  Cø C“€&01 NSMutableArray1 NSArray&01NSBox%  C§ Cƒ€  C§ Cƒ€&0± &0 ± % @ @ C„ C€  C„ C€&0 ± &0 ±% A A  C C  C C&0 ± &0 ± % @ą @ą C BŠ  C BŠ&0± &01 NSTextField1 NSControl% Bl Bl AØ  Bl AØ&0± &%01NSTextFieldCell1 NSActionCell1NSCell0±&%Lines:01NSFont% A@&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% B€ Bl B AØ  B AØ&0± &%0±0±&0±%&&&&&&&& &&&&&&%’°°’0±% B Bl AØ  Bl AØ&0 ± &%0!±0"±&%Columns:°&&&&&&&& &&&&&&%’°°’0#±% B€ B B AØ  B AØ&0$± &%0%±0&±&°&&&&&&&& &&&&&&%’°°’0'±0(±&%Tear-Off Window Size°°(&&&&&&&&&&&&&& @  @ %%0)±% C% A  C C  C C&0*± &0+± % @ą @ą C BŠ  C BŠ&0,± &0-±% B˜ B¦ Aø  B¦ Aø&0.± &%0/±00±& % Foreground°°0&&&&&&&& &&&&&&%’°°’011 NSColorWell% B° BŽ BT Aš  BT Aš&02± &%03±04±&°&&&&&&&&&&&&&&05±06±&% NSCalibratedWhiteColorSpace ?€’07±% B B¦ AĄ  B¦ AĄ&08± &%09±0:±& % Background°°:&&&&&&&& &&&&&&%’°°’0;±% B° B  BT Aš  BT Aš&0<± &%0=±0>±&°&&&&&&&&&&&&&&0?±°6 ?€ ?€’0@±% @Ą B¦ Aø  B¦ Aø&0A± &%0B±0C±& % Selection°°C&&&&&&&& &&&&&&%’°°’0D±% B° ?€ BT Aš  BT Aš&0E± &%0F±0G±&°&&&&&&&&&&&&&&0H±°6 ?*Ŗ« ?€’0I±0J±& % Text Colors°°J&&&&&&&&&&&&&& @  @ %%0K±% A C C› BT  C› BT&0L± &0M± % @ą @ą C” AŲ  C” AŲ&0N± &0O±% @@ Cv AØ  Cv AØ&0P± &%0Q±0R±&°°R&&&&&&&& &&&&&&%’°°’0S1GSControlTemplate0T±&%PCEditorFSCPrefsFontButton1NSButton% C{ @@ B4 AØ  B4 AØ&0U± &%0V1 NSButtonCell0W±&%Set...°°W&&&&&&&&&&&&&&%’0X±&0Y±&&&& &&0Z±0[±&%Console Fixed Font°°[&&&&&&&&&&&&&& @  @ %%0\±% A CG C› BT  C› BT&0]± &0^± % @ą @ą C” AŲ  C” AŲ&0_± &0`±% @@ Cv AØ  Cv AØ&0a± &%0b±0c±&°°c&&&&&&&& &&&&&&%’°°’0d±0e±&%PCEditorFSCPrefsFontButton±% C{ @@ B4 AØ  B4 AØ&0f± &%0g±0h±&%Set...°°h&&&&&&&&&&&&&&%’0i±&0j±&&&& &&0k±0l±& % Editor Font°°l&&&&&&&&&&&&&& @  @ %%0m±0n±&%Box°&&&&&&&&&&&&&& %%0o±°0p±&% System0q±&% windowBackgroundColor0r±&%Window0s±& % Interface°s ?€ ?€ F8 FĄ%&   D€ D@0t± &0u± &0v1NSMutableDictionary1 NSDictionary&0w±&%View(3)° 0x±&%Box(4)°\0y±& % Button(0)°S0z±& % TextField(7)°O0{±& % TextField(0)°0|±&%View(0)°0}±&%Box(1)°)0~±& % TextField(4)°-0±& % Button(1)°d0€±&%View(4)°M0±& % TextField(1)°0‚±&% NSOwner0ƒ±&%PCEditorFSCPrefs0„±& % TextField(8)°`0…±& % ColorWell(0)°10†±&%View(1)° 0‡±&%Box(2)° 0ˆ±& % Editor_FSC°0‰±& % TextField(5)°70б&%View(5)°^0‹±& % TextField(2)°0Œ±& % ColorWell(1)°;0±&%View(2)°+0ޱ&%Box(3)°K0±& % TextField(6)°@0±&%Box(0)°0‘±& % TextField(3)°#0’±& % ColorWell(2)°D0“± &**0”1NSNibConnector°|°ˆ0•±°°|0–±°†°0—±°‡°†0˜±°w°‡0™±°{°w0𱰁°w0›±°‹°w0œ±°‘°w0±°…°}0ž±°Œ°}0Ÿ±°’°}0 ±°~°}0”±°‰°}0¢±°°}0£±°}°†0¤±°°}0„±°z°Ž0¦±°y°Ž0§±°Ž°†0ر°€°Ž0©±°x°†0Ŗ±°Š°x0«±°„°Š0¬±°°Š0­1NSNibOutletConnector0®±&% NSOwner°0Æ1NSMutableString&%editorLinesField0°±°®°‘0±±&%editorColumnsField0²±°®°…0³±&%foregroundColorWell0“±°®°Œ0µ±&%backgroundColorWell0¶±°®°’0·±&%selectionColorWell0ø±°®°0¹±& % editorFSCView0ŗ1NSNibControlConnector°°®0»±&%setEditorSize:0¼±°‘°®°»0½±°…°®0¾±&%setEditorColor:0æ±°Œ°®°¾0Ą±°’°®°¾0Į±°®°„0±&%editorFontField0Ʊ°®°z0ı&%consoleFixedFontField0ű°°®0ʱ&%setEditorTextFont:0DZ°y°®0ȱ&%setConsoleFixedFont:0ɱ°®°y0ʱ&%consoleFixedFontButton0˱°®°0̱&%editorFontButton0ͱ&°y°T°°eapps-projectcenter-master/Modules/Preferences/EditorFSC/Resources/Info.table000066400000000000000000000002441347226342500275000ustar00rootroot00000000000000{ Type = "Preferences"; Name = "Editor: Fonts, Sizes & Colors"; Description = "Common editor's preferences."; PrincipalClassName = "PCEditorFSCPrefs"; } apps-projectcenter-master/Modules/Preferences/Misc/000077500000000000000000000000001347226342500227335ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Misc/GNUmakefile000066400000000000000000000010311347226342500250000ustar00rootroot00000000000000# # GNUmakefile - Misc preferences # PACKAGE_NAME = Misc include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Misc BUNDLE_EXTENSION = .preferences Misc_PRINCIPAL_CLASS = PCMiscPrefs # # Additional libraries # Misc_LIBRARIES_DEPEND_UPON += # # Resource files # Misc_RESOURCE_FILES= \ Resources/MiscPrefs.gorm \ Resources/Info.table # # Header files # Misc_HEADERS= \ PCMiscPrefs.h # # Class files # Misc_OBJC_FILES= \ PCMiscPrefs.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Preferences/Misc/PCMiscPrefs.h000066400000000000000000000035501347226342500252250ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2009 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import #ifndef PCDefaultDebugger #define PCDefaultDebugger @"/usr/bin/gdb" #endif #define PromptOnQuit @"PromtOnQuit" #define FullPathInFilePanels @"FullPathInFilePanels" #define RememberWindows @"RememberWindows" #define DisplayLog @"DisplayLog" #define UseTearOffWindows @"UseTearOffWindows" #define Debugger @"Debugger" #define Editor @"Editor" @interface PCMiscPrefs : NSObject { id prefs; IBOutlet NSBox *miscView; IBOutlet NSButton *promptWhenQuit; IBOutlet NSButton *fullPathInFilePanels; IBOutlet NSButton *rememberWindows; IBOutlet NSButton *displayLog; IBOutlet NSButton *useTearOffWindows; IBOutlet NSTextField *debuggerField; IBOutlet NSButton *debuggerButton; IBOutlet NSTextField *editorField; IBOutlet NSTextField *editorButton; } @end apps-projectcenter-master/Modules/Preferences/Misc/PCMiscPrefs.m000066400000000000000000000171661347226342500252420ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2011 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import "PCMiscPrefs.h" @implementation PCMiscPrefs // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)initWithPrefController:(id )aPrefs { self = [super init]; if ([NSBundle loadNibNamed:@"MiscPrefs" owner:self] == NO) { NSLog(@"PCMiscPrefs: error loading NIB file!"); } prefs = aPrefs; RETAIN(miscView); return self; } - (void)awakeFromNib { [promptWhenQuit setRefusesFirstResponder:YES]; [fullPathInFilePanels setRefusesFirstResponder:YES]; [rememberWindows setRefusesFirstResponder:YES]; [displayLog setRefusesFirstResponder:YES]; [useTearOffWindows setRefusesFirstResponder:YES]; [debuggerButton setRefusesFirstResponder:YES]; [editorButton setRefusesFirstResponder:YES]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(miscView); [super dealloc]; } // Protocol - (void)readPreferences { NSString *val; BOOL bVal; int state; NSString *debuggerToolDefault; PCFileManager *pcfm = [PCFileManager defaultManager]; /* some heuristic to find the best debugger default */ debuggerToolDefault = [pcfm findExecutableToolFrom: [NSArray arrayWithObjects: @"usr/local/bin/gdb", @"usr/bin/gdb", @"bin/gdb", nil]]; NSLog(@"Debugger tool found: %@", debuggerToolDefault); bVal = [prefs boolForKey:PromptOnQuit defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [promptWhenQuit setState:state]; bVal = [prefs boolForKey:FullPathInFilePanels defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [fullPathInFilePanels setState:state]; bVal = [prefs boolForKey:RememberWindows defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [rememberWindows setState:state]; bVal = [prefs boolForKey:DisplayLog defaultValue:NO]; state = bVal ? NSOnState : NSOffState; [displayLog setState:state]; bVal = [prefs boolForKey:UseTearOffWindows defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [useTearOffWindows setState:state]; val = [prefs stringForKey:Debugger defaultValue:debuggerToolDefault]; if (val) [debuggerField setStringValue:val]; val = [prefs stringForKey:Editor defaultValue:@"ProjectCenter"]; [editorField setStringValue:val]; } - (NSView *)view { return miscView; } // Actions - (void)setPromptWhenQuit:(id)sender { BOOL state; if (promptWhenQuit == nil) {// HACK!!! need to be fixed in GNUstep promptWhenQuit = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:PromptOnQuit notify:YES]; } - (void)setFullPathInFilePanels:(id)sender { BOOL state; if (fullPathInFilePanels == nil) {// HACK!!! need to be fixed in GNUstep fullPathInFilePanels = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:FullPathInFilePanels notify:YES]; } - (void)setRememberWindows:(id)sender { BOOL state; if (rememberWindows == nil) { rememberWindows = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:RememberWindows notify:YES]; } - (void)setDisplayLog:(id)sender { BOOL state; if (displayLog == nil) { displayLog = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:DisplayLog notify:YES]; } - (void)setUseTearOffWindows:(id)sender { BOOL state; if (useTearOffWindows == nil) { useTearOffWindows = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:UseTearOffWindows notify:YES]; } - (void)setDebugger:(id)sender { NSArray *files; NSString *path; NSFileManager *fm = [NSFileManager defaultManager]; // Choose if (sender == debuggerField) { path = [debuggerField stringValue]; } else { files = [[PCFileManager defaultManager] filesOfTypes:nil operation:PCOpenFileOperation multiple:NO title:@"Choose Debugger Tool" accView:nil]; path = [files objectAtIndex:0]; } [[miscView window] makeFirstResponder:debuggerField]; if (!path) { return; } // Check if (path && ![fm fileExistsAtPath:path]) { NSRunAlertPanel(@"Set Debugger Tool", @"File %@ doesn't exist!\n" @"Setting field to default value.", @"Close", nil, nil, path); path = @""; } else if (path && ![fm isExecutableFileAtPath:path]) { NSRunAlertPanel(@"Set Debugger Tool", @"File %@ exists but is not executable!\n" @"Setting field to default value.", @"Close", nil, nil, path); path = @""; } if ([path isEqualToString:@""]) { path = PCDefaultDebugger; } // Set [debuggerField setStringValue:path]; [prefs setString:path forKey:Debugger notify:YES]; } - (void)setEditor:(id)sender { NSArray *files; NSString *path; NSString *editorPath; NSFileManager *fm = [NSFileManager defaultManager]; NSWorkspace *ws = [NSWorkspace sharedWorkspace]; // Choose if (sender == debuggerField) { path = [debuggerField stringValue]; } else if ([path = [editorField stringValue] isEqualToString:@""]) { files = [[PCFileManager defaultManager] filesOfTypes:nil operation:PCOpenFileOperation multiple:NO title:@"Choose Editor" accView:nil]; path = [files objectAtIndex:0]; } [[miscView window] makeFirstResponder:editorField]; if (!path) { return; } // Check if (path && ![ws fullPathForApplication:path]) { editorPath = [[path componentsSeparatedByString:@" "] objectAtIndex:0]; if (![fm fileExistsAtPath:editorPath]) { [editorField selectText:self]; NSRunAlertPanel(@"Set Editor", @"Editor %@ doesn't exist!\n" @"Setting field to default value.", @"Close", nil, nil, path); path = @""; } else if (path && ![fm isExecutableFileAtPath:editorPath]) { [editorField selectText:self]; NSRunAlertPanel(@"Set Editor", @"File %@ exists but is not executable!\n" @"Setting field to default value.", @"Close", nil, nil, path); path = @""; } } if ([path isEqualToString:@""] || !path) { path = @"ProjectCenter"; } // Set [editorField setStringValue:path]; [prefs setString:path forKey:Editor notify:YES]; } @end apps-projectcenter-master/Modules/Preferences/Misc/Resources/000077500000000000000000000000001347226342500247055ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Misc/Resources/Info.table000066400000000000000000000002241347226342500266070ustar00rootroot00000000000000{ Type = "Preferences"; Name = "Miscellaneous"; Description = "Miscellaneous ProjectCenter options."; PrincipalClassName = "PCMiscPrefs"; } apps-projectcenter-master/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/000077500000000000000000000000001347226342500275435ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes000066400000000000000000000014111347226342500320300ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setUseTearOffWindows:", "setDebugger:", "setDisplayLog:", "setEditor:", "setFullPathInFilePanels:", "setPromptWhenQuit:", "setRememberWindows:" ); Super = NSObject; }; PCMiscPrefs = { Actions = ( "setEditor:", "setDebugger:", "setFullPathInFilePanels:", "setPromptWhenQuit:", "setDisplayLog:", "setRememberWindows:", "setUseTearOffWindows:" ); Outlets = ( debuggerButton, debuggerField, editorButton, editorField, fullPathInFilePanels, miscView, promptWhenQuit, displayLog, rememberWindows, useTearOffWindows ); Super = NSObject; }; }apps-projectcenter-master/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.info000066400000000000000000000002701347226342500313300ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm000066400000000000000000000151571347226342500320730ustar00rootroot00000000000000GNUstep archive000f4240:0000001e:000000ac:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Cø C“€& % CŻ€ Dr€01 NSView% ?€ A Cø C“€  Cø C“€&01 NSMutableArray1 NSArray&01NSBox%  C§ Cƒ€  C§ Cƒ€&0± &0 ± % @ @ C„ C€  C„ C€&0 ± &0 ±% A Ap C› B®  C› B®&0 ± &0 ± % @ą @ą C” Bl  C” Bl&0± &01 NSTextField1 NSControl% Aų Bl AØ  Bl AØ&0± &%01NSTextFieldCell1 NSActionCell1NSCell0±& % Debugger:01NSFont%0±& % Helvetica A@A@&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% @€ Bl AØ  Bl AØ&0± &%0±0±&%Editor:°&&&&&&&& &&&&&&%’°°’0±% B€ Aš C9 AØ  C9 AØ&0 ± &%0!±0"±&0#±%°"&&&&&&&& &&&&&&%’°°’0$±% B€ @€ C9 AØ  C9 AØ&0%± &%0&±0'±&°#&&&&&&&& &&&&&&%’°°’0(1NSButton% C~ @€ B( AØ  B( AØ&0)± &%0*1 NSButtonCell0+±&%Set...°#°+&&&&&&&&&&&&&&%’0,±&0-±&&&& &&0.±% C~ Aš B( AØ  B( AØ&0/± &%00±01±&%Set...°#°1&&&&&&&&&&&&&&%’02±&03±&&&& &&04±05±&%External Tools°#&&&&&&&&&&&&&& @  @ %%06±% A Ci C› A€  C› A€&07± &%08±09±&.%.Always prompt when quitting or closing project0:1NSImage0;1NSMutableString&%GSSwitch°#&&&&&&&&&&&&&&%’0<±&0=±&0>±0?±&%GSSwitchSelected&&& &&0@±% A CT C› A€  C› A€&0A± &%0B±0C±&&%&Select full path in Open Quickly panel°:°#&&&&&&&&&&&&&&%’0D±&0E±&°>&&& &&0F±% A C? C› A€  C› A€&0G± &%0H±0I±&-%-Remember windows and panels opened in project°:°#&&&&&&&&&&&&&&%’0J±&0K±&°>&&& &&0L±% A C* C› A€  C› A€&0M± &%0N±0O±&%Display Log Panel at startup°:°#&&&&&&&&&&&&&&%’0P±&0Q±&°>&&& &&0R±% A C Cœ A€  Cœ A€&0S± &%0T±0U±&(%(Use "tear off" windows for project tools°:°#°U&&&&&&&&&&&&&&%’0V±&0W±&°>&&& &&0X±0Y±&%Box°#&&&&&&&&&&&&&& %%0Z±°0[±&% System0\±&% windowBackgroundColor0]±&%Window0^±&%Misc°^ @@ B F@ F@%&   D  D€0_± &0`± &0a1NSMutableDictionary1 NSDictionary&0b±& % TextField(2)°0c±& % Misc Section°0d±& % Button(4)°@0e±&%View(1)° 0f±& % TextField(0)°0g±& % Button(7)°R0h±&%Box(0)°0i±& % Button(2)°60j±& % TextField(3)°$0k±& % Button(5)°F0l±&%View(2)° 0m±&% NSOwner0n±& % PCMiscPrefs0o±& % Button(0)°(0p±& % TextField(1)°0q±&%Box(1)° 0r±&%View(0)°0s±& % Button(6)°L0t±& % Button(1)°.0u± &$$0v1NSNibConnector°c0w±&% NSOwner0x±°r°c0y±°h°r0z±°e°h0{±°q°e0|±°l°q0}±°f°l0~±°p°l0±°b°l0€±°j°l0±°o°l0‚±°t°l0ƒ±°i°e0„±°d°e0…1NSNibOutletConnector°w°i0†±&%promptWhenQuit0‡±°w°d0ˆ±&%fullPathInFilePanels0‰±°w°b0б& % debuggerField0‹±°w°t0Œ±&%debuggerButton0±°w°j0ޱ& % editorField0±°w°o0±& % editorButton0‘1NSNibControlConnector°i°w0’±&%setPromptWhenQuit:0“±°d°w0”±&%setFullPathInFilePanels:0•±°b°w0–±& % setDebugger:0—±°t°w°–0˜±°j°w0™±& % setEditor:0š±°o°w°™0›±°w°h0œ±&%miscView0±°k°e0ž±°s°e0Ÿ±°g°e0 ±°w°k0”±&%rememberWindows0¢±°w°s0£±& % displayLog0¤±°k°w0„±&%setRememberWindows:0¦±°s°w0§±&%setDisplayLog:0ر°g°w0©±&%setUseTearOffWindows:0Ŗ±°w°g0«±&%useTearOffWindows0¬±&apps-projectcenter-master/Modules/Preferences/Saving/000077500000000000000000000000001347226342500232675ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Saving/GNUmakefile000066400000000000000000000010611347226342500253370ustar00rootroot00000000000000# # GNUmakefile - Saving preferences # PACKAGE_NAME = Saving include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Saving BUNDLE_EXTENSION = .preferences Saving_PRINCIPAL_CLASS = PCSavingPrefs # # Additional libraries # Saving_LIBRARIES_DEPEND_UPON += # # Resource files # Saving_RESOURCE_FILES= \ Resources/SavingPrefs.gorm \ Resources/Info.table # # Header files # Saving_HEADERS= \ PCSavingPrefs.h # # Class files # Saving_OBJC_FILES= \ PCSavingPrefs.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Preferences/Saving/PCSavingPrefs.h000066400000000000000000000026031347226342500261130ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2009 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import #import #define SaveOnQuit @"SaveOnQuit" #define KeepBackup @"KeepBackup" #define AutoSavePeriod @"AutoSavePeriod" @interface PCSavingPrefs : NSObject { id prefs; IBOutlet NSBox *savingView; IBOutlet NSButton *saveOnQuit; IBOutlet NSButton *keepBackup; IBOutlet NSSlider *autosaveSlider; IBOutlet NSTextField *autosaveField; } @end apps-projectcenter-master/Modules/Preferences/Saving/PCSavingPrefs.m000066400000000000000000000063551347226342500261300ustar00rootroot00000000000000// // GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html // // Copyright (C) 2001-2009 Free Software Foundation // // Authors: Sergii Stoian // // Description: // // This file is part of GNUstep. // // This application 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 application is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. #import "PCSavingPrefs.h" @implementation PCSavingPrefs // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)initWithPrefController:(id )aPrefs { self = [super init]; if ([NSBundle loadNibNamed:@"SavingPrefs" owner:self] == NO) { NSLog(@"PCSavingPrefs: error loading NIB file!"); } prefs = aPrefs; RETAIN(savingView); return self; } - (void)awakeFromNib { [saveOnQuit setRefusesFirstResponder:YES]; [keepBackup setRefusesFirstResponder:YES]; } - (void)dealloc { #ifdef DEBUG NSLog (@"PCSavingPrefs: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(savingView); [super dealloc]; } // Protocol - (void)readPreferences { NSString *val; BOOL bVal; int state; val = [prefs stringForKey:AutoSavePeriod defaultValue:@"120"]; [autosaveField setStringValue:val]; [autosaveSlider setFloatValue:[val floatValue]]; bVal = [prefs boolForKey:SaveOnQuit defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [saveOnQuit setState:state]; bVal = [prefs boolForKey:KeepBackup defaultValue:YES]; state = bVal ? NSOnState : NSOffState; [keepBackup setState:state]; } - (NSView *)view { return savingView; } // Actions - (void)setSaveOnQuit:(id)sender { BOOL state; if (saveOnQuit == nil) {// HACK!!! need to be fixed in GNUstep saveOnQuit = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:SaveOnQuit notify:YES]; } - (void)setKeepBackup:(id)sender { BOOL state; if (keepBackup == nil) {// HACK!!! need to be fixed in GNUstep keepBackup = sender; return; } state = ([sender state] == NSOffState) ? NO : YES; [prefs setBool:state forKey:KeepBackup notify:YES]; } - (void)setSavePeriod:(id)sender { NSString *periodString; if (sender == autosaveSlider) { [autosaveField setIntValue:[sender intValue]]; } periodString = [autosaveField stringValue]; [prefs setString:periodString forKey:AutoSavePeriod notify:YES]; [[NSNotificationCenter defaultCenter] postNotificationName:PCSavePeriodDidChangeNotification object:periodString]; } @end apps-projectcenter-master/Modules/Preferences/Saving/Resources/000077500000000000000000000000001347226342500252415ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Saving/Resources/Info.table000066400000000000000000000002021347226342500271370ustar00rootroot00000000000000{ Type = "Preferences"; Name = "Saving"; Description = "Project saving options."; PrincipalClassName = "PCSavingPrefs"; } apps-projectcenter-master/Modules/Preferences/Saving/Resources/SavingPrefs.gorm/000077500000000000000000000000001347226342500304335ustar00rootroot00000000000000apps-projectcenter-master/Modules/Preferences/Saving/Resources/SavingPrefs.gorm/data.classes000066400000000000000000000006721347226342500327300ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "setSavePeriod:", "setKeepBackup:", "setSaveOnQuit:" ); Super = NSObject; }; PCBuildPrefs = { Actions = ( "setSavePeriod:", "setKeepBackup:", "setSaveOnQuit:" ); Outlets = ( autosaveSlider, keepBackup, autosaveField, saveOnQuit, savingView ); Super = NSObject; }; }apps-projectcenter-master/Modules/Preferences/Saving/Resources/SavingPrefs.gorm/data.info000066400000000000000000000002701347226342500322200ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Preferences/Saving/Resources/SavingPrefs.gorm/objects.gorm000066400000000000000000000117711347226342500327610ustar00rootroot00000000000000GNUstep archive000f4240:00000022:0000007d:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Cø C“€& % Cµ Dk€01 NSView% ?€ A Cø C“€  Cø C“€&01 NSMutableArray1 NSArray&01NSBox%  C§ Cƒ€  C§ Cƒ€&0± &0 ± % @ @ C„ C€  C„ C€&0 ± &0 ±% A C C“ Bø  C“ Bø&0 ± &0 ± % @ą @ą CŒ B€  CŒ B€&0± &01NSButton1 NSControl% B< B C? A€  C? A€&0± &%01 NSButtonCell1 NSActionCell1NSCell0±&%Save Project Upon Quit01NSImage01NSMutableString&%GSSwitch01NSFont%&&&&&&&&&&&&&&%’0±&0±&0±0±&%GSSwitchSelected&&& &&0±% B< AP C? A€  C? A€&0± &%0±0±&%Keep Project Backup File°°&&&&&&&&&&&&&&%’0±&0±&°&&& &&0 ±0!±&%Project Save Options°&&&&&&&&&&&&&& @  @ %%0"±% A B| C“ B²  C“ B²&0#± &0$± % @ą @ą CŒ Bt  CŒ Bt&0%± &0&1 NSTextField% A @@ C‚ A  C‚ A&0'± &%0(1NSTextFieldCell0)±&%Frequency in Seconds0*±% A@&&&&&&&& &&&&&&%’0+1NSColor0,±&% NSNamedColorSpace0-±&%System0.±&%textBackgroundColor0/±°,°-00±& % textColor’01±% A B0 C‚ A  C‚ A&02± &%03±04±&%120°°4&&&&&&&& &&&&&&%’°+°/’051NSSlider% A AŠ C‚ A  C‚ A&06± &%071 NSSliderCell08±&%120°091NSNumber1NSValued @^&&&&&&&&&&&&&&%’ B𠿀%0:±0;±&°&&&&&&&& &&&&&&%’°+0<±°,0=±&% System0>±&% controlTextColor0?±0@±&0A±0B±&%common_SliderHoriz°&&&&&&&&&&&&&&%%0C±0D±&%Project Auto-Save Options°&&&&&&&&&&&&&& @  @ %%0E±0F±&%Box°&&&&&&&&&&&&&& %%0G±°,°=0H±&% windowBackgroundColor0I±&%Window0J±&%Build°J @@ B F@ F@%&   D  D€0K± &0L± &0M1NSMutableDictionary1 NSDictionary&0N±&%Box(2)°"0O±&%View(1)° 0P±& % TextField(0)°&0Q±&%Box(0)°0R±&% NSOwner0S±& % PCBuildPrefs0T±& % Slider(0)°50U±& % Button(0)°0V±&%View(2)° 0W±& % TextField(1)°10X±&%Box(1)° 0Y±&%View(0)°0Z±& % Build Section°0[±& % Button(1)°0\±&%View(3)°$0]± &0^1 NSNibConnector°Z0_±&% NSOwner0`± °Y°Z0a± °Q°Y0b± °O°Q0c± °X°O0d± °V°X0e± °U°V0f± °[°V0g± °N°O0h± °\°N0i± °P°\0j± °W°\0k± °T°\0l1!NSNibOutletConnector°_°Q0m±& % savingView0n±!°_°U0o±& % saveOnQuit0p±!°_°W0q±& % autosaveField0r±!°_°[0s±& % keepBackup0t±!°_°T0u±&%autosaveSlider0v1"NSNibControlConnector°U°_0w±&%setSaveOnQuit:0x±"°[°_0y±&%setKeepBackup:0z±"°T°_0{±&%setSavePeriod:0|±"°W°_°{0}±&apps-projectcenter-master/Modules/Projects/000077500000000000000000000000001347226342500213705ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Aggregate/000077500000000000000000000000001347226342500232565ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Aggregate/GNUmakefile000066400000000000000000000011651347226342500253330ustar00rootroot00000000000000# # GNUmakefile - Aggregate.project # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Aggregate BUNDLE_EXTENSION = .project Aggregate_PRINCIPAL_CLASS = PCAggregateProject # # Additional libraries # Aggregate_LIBRARIES_DEPEND_UPON += # # Resource files # Aggregate_RESOURCE_FILES= \ Resources/PC.project \ Resources/Inspector.gorm \ Resources/Info.table # # Header files # Aggregate_HEADERS= \ PCAggregateProject.h # # Class files # Aggregate_OBJC_FILES= \ PCAggregateProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Aggregate/PCAggregateProject.h000066400000000000000000000035221347226342500270710ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2017 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCAggregateProject_h #define _PCAggregateProject_h #import #import #import @class PCMakefileFactory; @interface PCAggregateProject : PCProject { IBOutlet NSBox *projectAttributesView; NSMutableDictionary *infoDict; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:projOption; @end @interface PCAggregateProject (GeneratedFiles) - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCAggregateProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Modules/Projects/Aggregate/PCAggregateProject.m000066400000000000000000000136021347226342500270760ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2017 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import "PCAggregateProject.h" @implementation PCAggregateProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { /* NSString *_file; Class class = [self builderClass]; _file = [[NSBundle bundleForClass:class] pathForResource:@"Info" ofType:@"table"]; infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:_file]; rootEntries = [infoDict objectForKey:@"BrowserRootEntries"]; rootKeys = [[rootEntries allKeys] retain]; rootCategories = [[rootEntries allValues] retain];*/ rootKeys = [[NSArray arrayWithObjects: PCSubprojects, PCSupportingFiles, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Subprojects", @"Supporting Files", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)dealloc { [rootCategories release]; [rootKeys release]; [rootEntries release]; if (projectAttributesView) [projectAttributesView release]; [super dealloc]; } //---------------------------------------------------------------------------- // --- PCProject overridings //---------------------------------------------------------------------------- - (Class)builderClass { return [PCAggregateProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:projOption { PCFileManager *pcfm = [PCFileManager defaultManager]; NSString *_file; NSBundle *projectBundle; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; [pcfm createDirectoriesIfNeededAtPath:path]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Save the project to disc [self writeMakefile]; [self save]; return self; } @end @implementation PCAggregateProject (GeneratedFiles) - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSString *mfl = nil; NSData *mfd = nil; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:NO]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { [mff appendString:@"\n#\n# Aggregate\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString:[NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end @implementation PCAggregateProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCLibraryProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { } @end apps-projectcenter-master/Modules/Projects/Aggregate/Resources/000077500000000000000000000000001347226342500252305ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Aggregate/Resources/Info.table000066400000000000000000000011421347226342500271320ustar00rootroot00000000000000{ Type = "Project"; Name = "Aggregate"; Description = "Project that contains subprojects."; PrincipalClassName = "PCAggregateProject"; CanHavePublicHeaders = NO; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); BrowserRootEntries = { SUBPROJECTS = "Subprojects"; SUPPORTING_FILES = "Supporting Files"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( ); OtherFileKeys = ( "SUPPORTING_FILES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Application", "Bundle", "Library", "Framework", "Tool" ); }apps-projectcenter-master/Modules/Projects/Aggregate/Resources/Inspector.gorm/000077500000000000000000000000001347226342500301415ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Aggregate/Resources/Inspector.gorm/data.classes000066400000000000000000000004171347226342500324330ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; PCToolProject = { Actions = ( ); Outlets = ( projectAttributesView ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Aggregate/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500317260ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Aggregate/Resources/Inspector.gorm/objects.gorm000066400000000000000000000034411347226342500324620ustar00rootroot00000000000000GNUstep archive000f4240:00000017:00000025:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @ @‹ 01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @sp @rŠ  @sp @rŠJ0± &0 ± %  @sp @rŠ  @sp @rŠJ0 ± &0 1NSCell0 ±&%Title0 1NSFont%&&&&&&JJ&&&&&& %%01NSColor0±&% NSNamedColorSpace0±&% System0±&% windowBackgroundColor0±&%Window0±&%Panel° æš  @Ƈ @ĆxI01NSImage0±&% NSApplicationIcon&   @ž @’Ą0± &0± &01NSMutableDictionary1 NSDictionary&0±&%Box°0±&% NSOwner0±& % PCToolProject0±& % Inspector°0±&%View° 0± &01NSNibConnector°0 ±&% NSOwner0!±°° 0"±°° 0#1NSNibOutletConnector° °0$1NSMutableString&%projectAttributesView0%±&apps-projectcenter-master/Modules/Projects/Aggregate/Resources/PC.project000066400000000000000000000014751347226342500271310ustar00rootroot00000000000000{ COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; LANGUAGE = "English"; MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep"; OBJC_COMPILEROPTIONS = ""; PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description avaliable!"; PROJECT_GROUP = "No group available!"; PROJECT_SUMMARY = "No summary available!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Aggregate"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Application/000077500000000000000000000000001347226342500236335ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Application/GNUmakefile000066400000000000000000000016161347226342500257110ustar00rootroot00000000000000# # GNUmakefile - ApplicationProject # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Application BUNDLE_EXTENSION = .project Application_PRINCIPAL_CLASS = PCAppProject # # Additional libraries # Application_LIBRARIES_DEPEND_UPON += # # Resource files # Application_RESOURCE_FILES= \ Resources/AppController.h \ Resources/AppController.m \ Resources/main.m \ Resources/PC.project \ Resources/Main.gorm \ Resources/Inspector.gorm \ Resources/Main.gsmarkup \ Resources/MainMenu-GNUstep.gsmarkup \ Resources/MainMenu-OSX.gsmarkup \ Resources/Info.table \ Resources/Info.gnustep # # Header files # Application_HEADERS= \ PCAppProject.h \ PCAppProject+Inspector.h # # Class files # Application_OBJC_FILES= \ PCAppProject.m \ PCAppProject+Inspector.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Application/PCAppProject+Inspector.h000066400000000000000000000054711347226342500302470ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2016 Free Software Foundation Author: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCAppProject_Inspector_h_ #define _PCAppProject_Inspector_h_ #import "PCAppProject.h" @interface PCAppProject (Inspector) // ---------------------------------------------------------------------------- // --- User Interface // ---------------------------------------------------------------------------- - (NSView *)projectAttributesView; // ---------------------------------------------------------------------------- // --- Actions // ---------------------------------------------------------------------------- - (IBAction)setAppType:(id)sender; - (IBAction)setAppClass:(id)sender; - (IBAction)setBundleIdentifier:(id)sender; - (void)clearAppIcon:(id)sender; - (BOOL)setAppIconWithFileAtPath:(NSString *)path; - (void)clearHelpFile:(id)sender; - (void)clearMainNib:(id)sender; - (BOOL)setMainNibWithFileAtPath:(NSString *)path; - (IBAction)setDocBasedApp:(id)sender; - (IBAction)addDocType: (id)sender; - (IBAction)removeDocType: (id)sender; - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView; - (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex; - (void) tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex; - (void)fillFieldsForRow:(NSInteger)rowIndex; // ---------------------------------------------------------------------------- // --- Notifications // ---------------------------------------------------------------------------- - (void)updateInspectorValues:(NSNotification *)aNotif; - (void)tfGetFocus:(NSNotification *)aNotif; @end @interface PCAppProject (FileNameIconDelegate) - (BOOL)canPerformDraggingOf:(NSArray *)paths; - (BOOL)prepareForDraggingOf:(NSArray *)paths; - (BOOL)performDraggingOf:(NSArray *)paths; @end #endif apps-projectcenter-master/Modules/Projects/Application/PCAppProject+Inspector.m000066400000000000000000000504041347226342500302500ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2016 Free Software Foundation Author: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import "PCAppProject+Inspector.h" // ---------------------------------------------------------------------------- // --- Customized text field // ---------------------------------------------------------------------------- NSString *PCITextFieldGetFocus = @"PCITextFieldGetFocusNotification"; static void setOrRemove(NSMutableDictionary *m, id v, NSString *k) { if ([v isKindOfClass: [NSString class]]) { v = [v stringByTrimmingSpaces]; if ([v length] == 0) v = nil; } else if ([v isKindOfClass: [NSArray class]]) { if ([v count] == 0) v = nil; } if (v == nil) [m removeObjectForKey: k]; else [m setObject: v forKey: k]; } static id cleanup(NSMutableDictionary *m, NSString *k) { id v; setOrRemove(m, [m objectForKey: k], k); v = [m objectForKey: k]; if (v == nil) v = @""; return v; } @implementation PCAppTextField - (BOOL)becomeFirstResponder { [[NSNotificationCenter defaultCenter] postNotificationName:PCITextFieldGetFocus object:self]; return [super becomeFirstResponder]; } @end @implementation PCAppProject (Inspector) - (void)awakeFromNib { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tfGetFocus:) name:PCITextFieldGetFocus object:nil]; // Icon view [iconView setImage:nil]; [iconView setDelegate:self]; // Help text view [helpText setDrawsBackground:NO]; [helpText setTextColor:[NSColor darkGrayColor]]; [helpText setFont:[NSFont systemFontOfSize:10.0]]; [helpText setText:@"Click on the field and drop file in the box above"]; // Document types buttons [addDocTypeButton setRefusesFirstResponder:YES]; [removeDocTypeButton setRefusesFirstResponder:YES]; [docBasedAppButton setRefusesFirstResponder:YES]; [docBasedAppButton setState: ([[projectDict objectForKey:PCDocumentBasedApp] isEqualToString:@"YES"]) ? NSOnState : NSOffState]; [self setDocBasedApp:docBasedAppButton]; [self updateInspectorValues:nil]; } // ---------------------------------------------------------------------------- // --- User Interface // ---------------------------------------------------------------------------- - (NSView *)projectAttributesView { if (!projectAttributesView) { if ([NSBundle loadNibNamed: @"Inspector" owner: self] == NO) { NSLog(@"PCAppProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; } return projectAttributesView; } // ---------------------------------------------------------------------------- // --- Actions // ---------------------------------------------------------------------------- - (IBAction)setAppType:(id)sender { NSString *appType = [appTypeField stringValue]; NSMutableArray *libs = [[projectDict objectForKey:PCLibraries] mutableCopy]; if ([appType isEqualToString:@"Renaissance"]) { [libs addObject:@"Renaissance"]; } else { [libs removeObject:@"Renaissance"]; } [self setProjectDictObject:libs forKey:PCLibraries notify:YES]; RELEASE(libs); [self setProjectDictObject:appType forKey:PCAppType notify:YES]; } - (IBAction)setAppClass:(id)sender { [self setProjectDictObject:[appClassField stringValue] forKey:PCPrincipalClass notify:YES]; } - (IBAction)setBundleIdentifier:(id)sender { [self setProjectDictObject:[bundleIdentifierField stringValue] forKey:PCBundleIdentifier notify:YES]; } // Application Icon - (void)clearAppIcon:(id)sender { [appImageField setStringValue:@""]; [infoDict setObject:@"" forKey:@"NSIcon"]; [infoDict setObject:@"" forKey:@"ApplicationIcon"]; [self setProjectDictObject:@"" forKey:PCAppIcon notify:YES]; } - (BOOL)setAppIconWithFileAtPath:(NSString *)path { NSImage *image = [[NSImage alloc] initWithContentsOfFile:path]; NSString *imageName = nil; NSFileManager *fm = [NSFileManager defaultManager]; NSArray *fileTypes = [self fileTypesForCategoryKey:PCImages]; NSLog(@"setAppIconWithFileAtPath -- %@", path); // TODO: GNUstep bug - NSImage should return nil if image cannot // be created, but it doesn't if (!path || !image || ![fm fileExistsAtPath:path] || ![fileTypes containsObject:[path pathExtension]]) { [iconView setImage:nil]; [self clearAppIcon:self]; return NO; } // TODO: Image nil here even if 'path' exists. Why? It results in // empty imageView on drag&drop operation. [iconView setImage:image]; imageName = [path lastPathComponent]; [appImageField setStringValue:imageName]; [self addAndCopyFiles:[NSArray arrayWithObject:path] forKey:PCImages]; [infoDict setObject:imageName forKey:@"NSIcon"]; [infoDict setObject:imageName forKey:@"ApplicationIcon"]; [self setProjectDictObject:imageName forKey:PCAppIcon notify:YES]; return YES; } // Help file - (void)clearHelpFile:(id)sender { [infoDict removeObjectForKey:@"GSHelpContentsFile"]; [self setProjectDictObject:@"" forKey:PCHelpFile notify:YES]; } // Main Interface File - (void)clearMainNib: (id)sender { [mainNIBField setStringValue:@""]; [infoDict setObject:@"" forKey:@"NSMainNibFile"]; [self setProjectDictObject:@"" forKey:PCMainInterfaceFile notify:YES]; } - (BOOL)setMainNibWithFileAtPath: (NSString *)path { NSString *nibName = [path lastPathComponent]; NSFileManager *fm = [NSFileManager defaultManager]; NSArray *fileTypes = [self fileTypesForCategoryKey:PCInterfaces]; // TODO: check if it's interface file and it exists if (![fm fileExistsAtPath:path] || ![fileTypes containsObject:[path pathExtension]]) { [iconView setImage:nil]; [self clearMainNib:self]; return NO; } [iconView setImage:[[NSWorkspace sharedWorkspace] iconForFile:path]]; [self addAndCopyFiles:[NSArray arrayWithObject: path] forKey:PCInterfaces]; [infoDict setObject:nibName forKey:@"NSMainNibFile"]; [self setProjectDictObject:nibName forKey:PCMainInterfaceFile notify:YES]; [mainNIBField setStringValue:nibName]; return YES; } // Document Types - (void)showDocTypesPanel: (id)sender { [docTypesPanel makeKeyAndOrderFront: nil]; } - (IBAction)setDocBasedApp: (id)sender { NSString *docBased = [projectDict objectForKey: PCDocumentBasedApp]; if ([docBasedAppButton state] == NSOnState) { [docTypeLabel setTextColor: [NSColor blackColor]]; [docTypeField setBackgroundColor: [NSColor whiteColor]]; [docTypeField setTextColor: [NSColor blackColor]]; [docTypeField setEditable: YES]; [docNameLabel setTextColor: [NSColor blackColor]]; [docNameField setBackgroundColor: [NSColor whiteColor]]; [docNameField setTextColor: [NSColor blackColor]]; [docNameField setEditable: YES]; [docRoleLabel setTextColor: [NSColor blackColor]]; [docRoleField setBackgroundColor: [NSColor whiteColor]]; [docRoleField setTextColor: [NSColor blackColor]]; [docRoleField setEditable: YES]; [docClassLabel setTextColor: [NSColor blackColor]]; [docClassField setBackgroundColor: [NSColor whiteColor]]; [docClassField setTextColor: [NSColor blackColor]]; [docClassField setEditable: YES]; [nameColumn setIdentifier: @"NSHumanReadableName"]; [[nameColumn headerCell] setStringValue: @"Name"]; [docTypesList addTableColumn: roleColumn]; [docTypesList addTableColumn: classColumn]; RELEASE(roleColumn); RELEASE(classColumn); if (![docBased isEqualToString: @"YES"]) { [self setProjectDictObject: @"YES" forKey: PCDocumentBasedApp notify: YES]; } } else { [docTypeLabel setTextColor: [NSColor darkGrayColor]]; [docTypeField setBackgroundColor: [NSColor lightGrayColor]]; [docTypeField setTextColor: [NSColor darkGrayColor]]; [docTypeField setEditable: NO]; [docNameLabel setTextColor: [NSColor darkGrayColor]]; [docNameField setBackgroundColor: [NSColor lightGrayColor]]; [docNameField setTextColor: [NSColor darkGrayColor]]; [docNameField setEditable: NO]; [docRoleLabel setTextColor: [NSColor darkGrayColor]]; [docRoleField setBackgroundColor: [NSColor lightGrayColor]]; [docRoleField setTextColor: [NSColor darkGrayColor]]; [docRoleField setEditable: NO]; [docClassLabel setTextColor: [NSColor darkGrayColor]]; [docClassField setBackgroundColor: [NSColor lightGrayColor]]; [docClassField setTextColor: [NSColor darkGrayColor]]; [docClassField setEditable: NO]; // Columns // [docTypesList removeTableColumn:nameColumn]; [nameColumn setIdentifier: @"NSIcon"]; [[nameColumn headerCell] setStringValue: @"Icon"]; RETAIN(roleColumn); RETAIN(classColumn); [docTypesList removeTableColumn: roleColumn]; [docTypesList removeTableColumn: classColumn]; if (![docBased isEqualToString: @"NO"]) { [self setProjectDictObject: @"NO" forKey: PCDocumentBasedApp notify: YES]; } } } - (IBAction)addDocType: (id)sender { NSInteger row; NSMutableDictionary *entry = [NSMutableDictionary dictionaryWithCapacity: 6]; NSInteger selectedRow = [docTypesList selectedRow]; setOrRemove(entry, [docTypeField stringValue], @"NSName"); setOrRemove(entry, [docNameField stringValue], @"NSHumanReadableName"); setOrRemove(entry, [[docExtensionsField stringValue] componentsSeparatedByString: @","], @"NSUnixExtensions"); setOrRemove(entry, [docIconField stringValue], @"NSIcon"); setOrRemove(entry, [docRoleField stringValue], @"NSRole"); setOrRemove(entry, [docClassField stringValue], @"NSDocumentClass"); if (selectedRow >= 0 && [docTypesItems count] > 0) { [docTypesItems insertObject: entry atIndex: selectedRow + 1]; row = selectedRow + 1; } else { [docTypesItems addObject: entry]; row = [docTypesItems count] - 1; } [docTypesList reloadData]; [docTypesList selectRow: row byExtendingSelection: NO]; [self fillFieldsForRow: row]; [self setProjectDictObject: docTypesItems forKey: PCDocumentTypes notify: YES]; } - (IBAction)removeDocType: (id)sender { int selectedRow = [docTypesList selectedRow]; if (selectedRow >= 0) { [docTypesItems removeObjectAtIndex: selectedRow]; [docTypesList reloadData]; } if (([docTypesList selectedRow] < 0) && ([docTypesItems count] > 0)) { [docTypesList selectRow: [docTypesItems count]-1 byExtendingSelection: NO]; [self fillFieldsForRow: [docTypesItems count]-1]; } [self setProjectDictObject: docTypesItems forKey: PCDocumentTypes notify: YES]; } - (void)docFieldSet: (id)sender { NSMutableDictionary *object = nil; NSLog(@"docFieldSet"); if (sender != docTypeField && sender != docNameField && sender != docIconField && sender != docExtensionsField && sender != docRoleField && sender != docClassField) { return; } if ([docTypesItems count] <= 0) { [self addDocType: addDocTypeButton]; } object = [[docTypesItems objectAtIndex: [docTypesList selectedRow]] mutableCopy]; if (sender == docTypeField) { setOrRemove(object, [sender stringValue], @"NSName"); } else if (sender == docNameField) { setOrRemove(object, [sender stringValue], @"NSHumanReadableName"); } else if (sender == docIconField) { setOrRemove(object, [sender stringValue], @"NSIcon"); } else if (sender == docExtensionsField) { setOrRemove(object, [[sender stringValue] componentsSeparatedByString: @","], @"NSUnixExtensions"); } else if (sender == docRoleField) { setOrRemove(object, [sender stringValue], @"NSRole"); } else if (sender == docClassField) { setOrRemove(object, [sender stringValue], @"NSDocumentClass"); } [docTypesItems replaceObjectAtIndex: [docTypesList selectedRow] withObject: object]; [docTypesList reloadData]; [object release]; } // ---------------------------------------------------------------------------- // --- Document Types browser // ---------------------------------------------------------------------------- - (NSInteger)numberOfRowsInTableView: (NSTableView *)aTableView { return [docTypesItems count]; } - (id) tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (NSInteger)rowIndex { NSDictionary *object = nil; if (docTypesItems != nil || [docTypesItems count] > 0) { object = [docTypesItems objectAtIndex: rowIndex]; if (aTableColumn == extensionsColumn) { return [[object objectForKey: @"NSUnixExtensions"] componentsJoinedByString: @","]; } else { return [object objectForKey: [aTableColumn identifier]]; } } return nil; } - (void)tableView: (NSTableView *)aTableView setObjectValue: anObject forTableColumn: (NSTableColumn *)aTableColumn row: (NSInteger)rowIndex { NSMutableDictionary *type = nil; if (docTypesItems == nil || [docTypesItems count] == 0) { return; } type = [docTypesItems objectAtIndex: rowIndex]; if ([[aTableColumn identifier] isEqualToString: @"NSUnixExtensions"]) { setOrRemove(type, anObject, @"Extension"); } else if ([[aTableColumn identifier] isEqualToString: @"NSIcon"]) { setOrRemove(type, anObject, @"Icon"); } [self setProjectDictObject: docTypesItems forKey: PCDocumentTypes notify: YES]; } - (BOOL)tableView: (NSTableView *)aTableView shouldSelectRow: (NSInteger)rowIndex { [self fillFieldsForRow: rowIndex]; return YES; } - (void)fillFieldsForRow: (NSInteger)rowIndex { NSMutableDictionary *type = nil; NSUInteger itemCount = [docTypesItems count]; if (itemCount == 0 || rowIndex > itemCount || rowIndex < 0) { [docTypeField setStringValue: @""]; [docNameField setStringValue: @""]; [docIconField setStringValue: @""]; [docExtensionsField setStringValue: @""]; [docRoleField setStringValue: @""]; [docClassField setStringValue: @""]; return; } type = [docTypesItems objectAtIndex: rowIndex]; [docTypeField setStringValue: cleanup(type, @"NSName")]; [docNameField setStringValue: cleanup(type, @"NSHumanReadableName")]; [docIconField setStringValue: cleanup(type, @"NSIcon")]; [docExtensionsField setStringValue: @""]; if ([[type objectForKey: @"NSUnixExtensions"] count] > 0) { [docExtensionsField setStringValue: [[type objectForKey: @"NSUnixExtensions"] componentsJoinedByString: @","]]; } [docRoleField setStringValue: cleanup(type, @"NSRole")]; [docClassField setStringValue: cleanup(type, @"NSDocumentClass")]; } // ---------------------------------------------------------------------------- // --- Notifications // ---------------------------------------------------------------------------- - (void)updateInspectorValues: (NSNotification *)aNotif { // NSLog (@"PCAppProject: updateInspectorValues"); // Project Attributes view [appTypeField selectItemWithTitle:[projectDict objectForKey:PCAppType]]; [appClassField setStringValue:[projectDict objectForKey: PCPrincipalClass]]; [bundleIdentifierField setStringValue:[projectDict objectForKey: PCBundleIdentifier]]; [appImageField setStringValue:[projectDict objectForKey:PCAppIcon]]; [helpFileField setStringValue:[projectDict objectForKey:PCHelpFile]]; [mainNIBField setStringValue: [projectDict objectForKey:PCMainInterfaceFile]]; docTypesItems = [projectDict objectForKey:PCDocumentTypes]; [docTypesList reloadData]; } // TextFields (PCITextField subclass) // // NSTextField become first responder when user clicks on it and immediately // lost first resonder status, so we can't catch when focus leaves textfield // with resignFirstResponder: method overriding. Here we're using // controlTextDidEndEditing (NSTextField's delegate method) to achieve this. - (void)tfGetFocus: (NSNotification *)aNotif { id anObject = [aNotif object]; NSString *file = nil; NSString *path = nil; NSImage *image = nil; if (anObject != appImageField && anObject != helpFileField && anObject != mainNIBField) { // NSLog(@"tfGetFocus: not that textfield"); return; } if (anObject == appImageField) { file = [appImageField stringValue]; if (![file isEqualToString: @""]) { path = [self dirForCategoryKey:PCImages]; path = [path stringByAppendingPathComponent:file]; image = [[NSImage alloc] initWithContentsOfFile:path]; } activeTextField = appImageField; } else if (anObject == helpFileField) { activeTextField = helpFileField; } else if (anObject == mainNIBField) { file = [mainNIBField stringValue]; if (![file isEqualToString:@""]) { path = [projectPath stringByAppendingPathComponent:file]; image = [[NSWorkspace sharedWorkspace] iconForFile:path]; } activeTextField = mainNIBField; } [iconView setImage:image]; } - (void)controlTextDidEndEditing:(NSNotification *)aNotification { NSControl *anObject = [aNotification object]; id target = [anObject target]; SEL action = [anObject action]; NSString *fileName; NSString *filePath; if (anObject != appImageField && anObject != helpFileField && anObject != mainNIBField) { if ([target respondsToSelector:action]) { [target performSelector:action withObject:anObject]; } return; } fileName = [anObject stringValue]; if (anObject == appImageField) { filePath = [self pathForFile:fileName forKey:PCImages]; [self setAppIconWithFileAtPath:filePath]; } else if (anObject == helpFileField) { } else if (anObject == mainNIBField) { filePath = [self pathForFile:fileName forKey:PCInterfaces]; [self setMainNibWithFileAtPath:filePath]; } } @end @implementation PCAppProject (FileNameIconDelegate) - (BOOL)canPerformDraggingOf:(NSArray *)paths { NSString *categoryKey; NSArray *fileTypes; NSEnumerator *e = [paths objectEnumerator]; NSString *s; if (activeTextField == appImageField) { categoryKey = PCImages; } else if (activeTextField == helpFileField) { return NO; } else if (activeTextField == mainNIBField) { categoryKey = PCInterfaces; } else { return NO; } NSLog(@"PCAppProject: canPerformDraggingOf -> %@", [self projectFileFromFile:[paths objectAtIndex:0] forKey:categoryKey]); fileTypes = [self fileTypesForCategoryKey:categoryKey]; // Check if we can accept files of such types while ((s = [e nextObject])) { if (![fileTypes containsObject:[s pathExtension]]) { return NO; } } return YES; } - (BOOL)prepareForDraggingOf:(NSArray *)paths { return YES; } - (BOOL)performDraggingOf:(NSArray *)paths { if (activeTextField == appImageField) { [self setAppIconWithFileAtPath:[paths objectAtIndex:0]]; } else if (activeTextField == helpFileField) { } else if (activeTextField == mainNIBField) { [self setMainNibWithFileAtPath:[paths objectAtIndex:0]]; } return YES; } @end apps-projectcenter-master/Modules/Projects/Application/PCAppProject.h000066400000000000000000000074531347226342500263070ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola Description: This is the project type 'Application' for GNUstep. You never should create it yourself but use PCAppProj for doing this. Otherwise needed files don't get copied to the right place. This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCAppProject_h_ #define _PCAppProject_h_ #import #import #import #import #import #import @interface PCAppTextField : NSTextField { } @end @interface PCAppProject : PCProject { IBOutlet NSBox *projectAttributesView; IBOutlet NSPopUpButton *appTypeField; IBOutlet NSTextField *appClassField; PCAppTextField *activeTextField; IBOutlet PCAppTextField *appImageField; IBOutlet PCAppTextField *helpFileField; IBOutlet PCAppTextField *mainNIBField; IBOutlet NSTextField *bundleIdentifierField; IBOutlet NSTextView *helpText; IBOutlet PCFileNameIcon *iconView; NSImage *icon; IBOutlet NSButton *docTypesButton; IBOutlet NSPanel *docTypesPanel; IBOutlet NSButton *addDocTypeButton; IBOutlet NSButton *removeDocTypeButton; IBOutlet NSButton *docBasedAppButton; IBOutlet NSScrollView *docTypesScroll; IBOutlet NSTableView *docTypesList; IBOutlet NSTableColumn *typeColumn; // NSName IBOutlet NSTableColumn *nameColumn; // NSHumanReadableName IBOutlet NSTableColumn *extensionsColumn; // NSUnixExtensions IBOutlet NSTableColumn *iconColumn; // NSIcon IBOutlet NSTableColumn *roleColumn; // NSRole IBOutlet NSTableColumn *classColumn; // NSDocumentClass NSMutableArray *docTypesItems; IBOutlet NSTextField *docTypeLabel; IBOutlet NSTextField *docTypeField; IBOutlet NSTextField *docNameLabel; IBOutlet NSTextField *docNameField; IBOutlet NSTextField *docIconLabel; IBOutlet NSTextField *docIconField; IBOutlet NSTextField *docExtensionsLabel; IBOutlet NSTextField *docExtensionsField; IBOutlet NSTextField *docRoleLabel; IBOutlet NSTextField *docRoleField; IBOutlet NSTextField *docClassLabel; IBOutlet NSTextField *docClassField; NSMutableDictionary *infoDict; } // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)init; - (void)loadInfoFile; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:(NSString *)projOption; @end @interface PCAppProject (GeneratedFiles) - (void)writeInfoEntry:(NSString *)name forKey:(NSString *)key; - (BOOL)writeInfoFile; - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end #endif apps-projectcenter-master/Modules/Projects/Application/PCAppProject.m000066400000000000000000000434511347226342500263120ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import "PCAppProject.h" #import "PCAppProject+Inspector.h" @implementation PCAppProject // ---------------------------------------------------------------------------- // --- Init and free // ---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCClasses, PCHeaders, PCOtherSources, PCInterfaces, PCImages, PCOtherResources, PCSubprojects, PCDocuFiles, PCSupportingFiles, PCLibraries, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Classes", @"Headers", @"Other Sources", @"Interfaces", @"Images", @"Other Resources", @"Subprojects", @"Documentation", // @"Context Help", @"Supporting Files", // @"Frameworks", @"Libraries", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)loadInfoFile { PCFileManager *pcfm = [PCFileManager defaultManager]; NSMutableArray *otherRes = nil; NSString *oldFile = @"Info-gnustep.plist"; NSString *oldFilePath = nil; NSString *infoFile = nil; NSString *infoFilePath = nil; infoFile = [NSString stringWithFormat:@"%@Info.plist",projectName]; infoFilePath = [projectPath stringByAppendingPathComponent:infoFile]; // Old project with info file Info-gnustep.plist located in Resources // directory. Move it to parent directory and replace it in PCOtherResources. otherRes = [[projectDict objectForKey:PCOtherResources] mutableCopy]; if ([otherRes containsObject:oldFile]) { oldFilePath = [self dirForCategoryKey:PCOtherResources]; oldFilePath = [oldFilePath stringByAppendingPathComponent:oldFile]; [pcfm copyFile:oldFilePath toFile:infoFilePath]; [pcfm removeFileAtPath:oldFilePath removeDirsIfEmpty:YES]; [otherRes removeObject:oldFile]; [otherRes addObject:infoFile]; [self setProjectDictObject:otherRes forKey:PCSupportingFiles notify:NO]; RELEASE(otherRes); } if ([[NSFileManager defaultManager] fileExistsAtPath:infoFilePath]) { infoDict = [[NSMutableDictionary alloc] initWithContentsOfFile:infoFilePath]; } else { infoDict = [[NSMutableDictionary alloc] init]; } } - (void)dealloc { // TODO: Never called. Should be fixed. #ifdef DEBUG NSLog (@"PCAppProject: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; RELEASE(infoDict); RELEASE(projectAttributesView); RELEASE(rootCategories); RELEASE(rootKeys); RELEASE(rootEntries); [super dealloc]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:(NSString *)projOption { PCFileManager *pcfm = [PCFileManager defaultManager]; PCFileCreator *pcfc = [PCFileCreator sharedCreator]; NSString *_file = nil; NSString *_2file = nil; NSString *_resourcePath = nil; NSBundle *projBundle = [NSBundle bundleForClass:[self class]]; NSString *mainNibFile = nil; NSMutableArray *_array = nil; NSAssert(path,@"No valid project path provided!"); // PC.project _file = [projBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName: [path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // Copy the project files to the provided path _file = [projBundle pathForResource:@"main" ofType:@"m"]; _2file = [path stringByAppendingPathComponent: [NSString stringWithFormat:@"%@_main.m", projectName]]; [pcfm copyFile:_file toFile:_2file]; [pcfc replaceTagsInFileAtPath:_2file withProject:self]; [projectDict setObject:[NSArray arrayWithObjects:[_2file lastPathComponent],nil] forKey:PCOtherSources]; _file = [projBundle pathForResource:@"AppController" ofType:@"m"]; _2file = [path stringByAppendingPathComponent:@"AppController.m"]; [pcfm copyFile:_file toFile:_2file]; [pcfc replaceTagsInFileAtPath:_2file withProject:self]; _file = [projBundle pathForResource:@"AppController" ofType:@"h"]; _2file = [path stringByAppendingPathComponent:@"AppController.h"]; [pcfm copyFile:_file toFile:_2file]; [pcfc replaceTagsInFileAtPath:_2file withProject:self]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Resources // By default resources located at Resources subdir. // If any resource marked as "Localizable" in Inspector it's moved // into English.lproj and copied into all available .lproj subdirs. _resourcePath = [path stringByAppendingPathComponent:@"Resources"]; if ([projOption isEqualToString: PCProjectInterfaceGorm]) { // Main NIB (Gorm) _file = [projBundle pathForResource:@"Main" ofType:@"gorm"]; mainNibFile = [NSString stringWithFormat:@"%@.gorm", projectName]; mainNibFile = [_resourcePath stringByAppendingPathComponent:mainNibFile]; [pcfm copyFile:_file toFile:mainNibFile]; [projectDict setObject:[mainNibFile lastPathComponent] forKey:PCMainInterfaceFile]; [projectDict setObject:[NSArray arrayWithObjects:[mainNibFile lastPathComponent], nil] forKey:PCInterfaces]; } else if ([projOption isEqualToString: PCProjectInterfaceRenaissance]) { // Renaissance _file = [projBundle pathForResource:@"Main" ofType:@"gsmarkup"]; _2file = [_resourcePath stringByAppendingPathComponent:@"Main.gsmarkup"]; [pcfm copyFile:_file toFile:_2file]; _file = [projBundle pathForResource:@"MainMenu-GNUstep" ofType:@"gsmarkup"]; _2file = [_resourcePath stringByAppendingPathComponent:@"MainMenu-GNUstep.gsmarkup"]; [pcfm copyFile:_file toFile:_2file]; _file = [projBundle pathForResource:@"MainMenu-OSX" ofType:@"gsmarkup"]; _2file = [_resourcePath stringByAppendingPathComponent:@"MainMenu-OSX.gsmarkup"]; [pcfm copyFile:_file toFile:_2file]; [projectDict setObject:[NSArray arrayWithObjects:@"Main.gsmarkup", @"MainMenu-GNUstep.gsmarkup", @"MainMenu-OSX.gsmarkup", nil] forKey:PCInterfaces]; } // Info-gnustep.plist _file = [projBundle pathForResource:@"Info" ofType:@"gnustep"]; infoDict = [[NSMutableDictionary alloc] initWithContentsOfFile:_file]; [infoDict setObject:projectName forKey:@"ApplicationName"]; [infoDict setObject:projectName forKey:@"NSExecutable"]; if (mainNibFile) [infoDict setObject:[mainNibFile lastPathComponent] forKey:@"NSMainNibFile"]; [infoDict setObject:[projectDict objectForKey:PCPrincipalClass] forKey:@"NSPrincipalClass"]; // most probably empty if ([projectDict objectForKey:PCBundleIdentifier]) [infoDict setObject:[projectDict objectForKey:PCBundleIdentifier] forKey:@"CFBundleIdentifier"]; // Write to ProjectNameInfo.plist _file = [NSString stringWithFormat:@"%@Info.plist",projectName]; _2file = [projectPath stringByAppendingPathComponent:_file]; [infoDict writeToFile:_2file atomically:YES]; // Add Info-gnustep.plist into SUPPORTING_FILES _array = [[projectDict objectForKey:PCSupportingFiles] mutableCopy]; [_array addObject:_file]; [projectDict setObject:_array forKey:PCSupportingFiles]; RELEASE(_array); // Save the project to disc [self writeMakefile]; [self save]; return self; } // ---------------------------------------------------------------------------- // --- PCProject overridings // ---------------------------------------------------------------------------- - (PCProject *)openWithWrapperAt:(NSString *)path { [super openWithWrapperAt: path]; [self loadInfoFile]; return self; } - (Class)builderClass { return [PCAppProject class]; } // ---------------------------------------------------------------------------- // --- File Handling // ---------------------------------------------------------------------------- - (BOOL)removeFiles:(NSArray *)files forKey:(NSString *)key notify:(BOOL)yn { NSMutableArray *filesToRemove = [[files mutableCopy] autorelease]; NSString *mainNibFile = [projectDict objectForKey:PCMainInterfaceFile]; NSString *appIcon = [projectDict objectForKey:PCAppIcon]; if (!files || !key) { return NO; } // Check for main NIB file if ([key isEqualToString:PCInterfaces] && [files containsObject:mainNibFile]) { int ret; ret = NSRunAlertPanel(@"Remove", @"You've selected to remove main interface file.\nDo you still want to remove it?", @"Remove", @"Leave", nil); if (ret == NSAlertAlternateReturn) // Leave { [filesToRemove removeObject:mainNibFile]; } else { [self clearMainNib:self]; } } // Check for application icon files else if ([key isEqualToString:PCImages] && [files containsObject:appIcon]) { int ret; ret = NSRunAlertPanel(@"Remove", @"You've selected to remove application icon file.\nDo you still want to remove it?", @"Remove", @"Leave", nil); if (ret == NSAlertAlternateReturn) // Leave { [filesToRemove removeObject:appIcon]; } else { [self clearAppIcon:self]; } } return [super removeFiles:filesToRemove forKey:key notify:yn]; } - (BOOL)renameFile:(NSString *)fromFile toFile:(NSString *)toFile { NSString *mainNibFile = [projectDict objectForKey:PCMainInterfaceFile]; NSString *appIcon = [projectDict objectForKey:PCAppIcon]; NSString *categoryKey = nil; NSString *ff = [fromFile copy]; NSString *tf = [toFile copy]; BOOL success = NO; categoryKey = [self keyForCategory:[projectBrowser nameOfSelectedRootCategory]]; // Check for main NIB file if ([categoryKey isEqualToString:PCInterfaces] && [fromFile isEqualToString:mainNibFile]) { [self clearMainNib:self]; if ([super renameFile:ff toFile:tf] == YES) { [self setMainNibWithFileAtPath: [[self dirForCategoryKey:categoryKey] stringByAppendingPathComponent:tf]]; success = YES; } } // Check for application icon files else if ([categoryKey isEqualToString:PCImages] && [fromFile isEqualToString:appIcon]) { [self clearAppIcon:self]; if ([super renameFile:ff toFile:tf] == YES) { [self setAppIconWithFileAtPath: [[self dirForCategoryKey:categoryKey] stringByAppendingPathComponent:tf]]; success = YES; } } else if ([super renameFile:ff toFile:tf] == YES) { success = YES; } [ff release]; [tf release]; return success; } @end @implementation PCAppProject (GeneratedFiles) - (void)writeInfoEntry:(NSString *)name forKey:(NSString *)key { id entry = [projectDict objectForKey:key]; if (entry == nil) { return; } if ([entry isKindOfClass:[NSString class]] && [entry isEqualToString:@""]) { [infoDict removeObjectForKey:name]; return; } if ([entry isKindOfClass:[NSArray class]] && [entry count] <= 0) { [infoDict removeObjectForKey:name]; return; } [infoDict setObject:entry forKey:name]; } - (BOOL)writeInfoFile { NSString *infoFile = nil; [self writeInfoEntry:@"ApplicationDescription" forKey:PCDescription]; [self writeInfoEntry:@"ApplicationIcon" forKey:PCAppIcon]; [self writeInfoEntry:@"ApplicationName" forKey:PCProjectName]; [self writeInfoEntry:@"ApplicationRelease" forKey:PCRelease]; [self writeInfoEntry:@"CFBundleIdentifier" forKey:PCBundleIdentifier]; [self writeInfoEntry:@"Authors" forKey:PCAuthors]; [self writeInfoEntry:@"Copyright" forKey:PCCopyright]; [self writeInfoEntry:@"CopyrightDescription" forKey:PCCopyrightDescription]; [self writeInfoEntry:@"FullVersionID" forKey:PCRelease]; [self writeInfoEntry:@"NSExecutable" forKey:PCProjectName]; [self writeInfoEntry:@"NSIcon" forKey:PCAppIcon]; if ([[projectDict objectForKey:PCAppType] isEqualToString:@"GORM"]) { [self writeInfoEntry:@"NSMainNibFile" forKey:PCMainInterfaceFile]; [infoDict removeObjectForKey:@"GSMainMarkupFile"]; } else { [self writeInfoEntry:@"GSMainMarkupFile" forKey:PCMainInterfaceFile]; [infoDict removeObjectForKey:@"NSMainNibFile"]; } [self writeInfoEntry:@"NSPrincipalClass" forKey:PCPrincipalClass]; [infoDict setObject:@"Application" forKey:@"NSRole"]; [self writeInfoEntry:@"NSTypes" forKey:PCDocumentTypes]; [self writeInfoEntry:@"URL" forKey:PCURL]; infoFile = [NSString stringWithFormat:@"%@Info.plist",projectName]; infoFile = [projectPath stringByAppendingPathComponent:infoFile]; return [infoDict writeToFile:infoFile atomically:YES]; } // Overriding - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; // Save Info-gnustep.plist [self writeInfoFile]; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head (Application) [self appendHead:mf]; // Libraries depend upon [mf appendLibraries:[projectDict objectForKey:PCLibraries]]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; // Gather all resource files into one array for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Sources [mf appendHeaders:[projectDict objectForKey:PCHeaders]]; [mf appendClasses:[projectDict objectForKey:PCClasses]]; [mf appendOtherSources:[projectDict objectForKey:PCOtherSources]]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { NSString *installDomain = [projectDict objectForKey:PCInstallDomain]; [mff appendString:@"\n#\n# Application\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString: [NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; [mff appendString: [NSString stringWithFormat:@"APP_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"%@_APPLICATION_ICON = %@\n", projectName, [projectDict objectForKey:PCAppIcon]]]; /* FIXME %@_COPY_INTO_DIR needs to be properly reinstantiated as well as %@_STANDARD_INSTALL = no */ /* set the domain if it was specified */ if (!(installDomain == nil) && ![installDomain isEqualToString:@""]) { [mff appendString: [NSString stringWithFormat:@"GNUSTEP_INSTALLATION_DOMAIN = %@\n", [installDomain uppercaseString]]]; } } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/application.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end apps-projectcenter-master/Modules/Projects/Application/Resources/000077500000000000000000000000001347226342500256055ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Application/Resources/AppController.h000066400000000000000000000013571347226342500305500ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ Application Controller */ #ifndef _PCAPPPROJ_APPCONTROLLER_H #define _PCAPPPROJ_APPCONTROLLER_H #import // Uncomment if your application is Renaissance-based //#import @interface AppController : NSObject { } + (void) initialize; - (id) init; - (void) dealloc; - (void) awakeFromNib; - (void) applicationDidFinishLaunching: (NSNotification *)aNotif; - (BOOL) applicationShouldTerminate: (id)sender; - (void) applicationWillTerminate: (NSNotification *)aNotif; - (BOOL) application: (NSApplication *)application openFile: (NSString *)fileName; - (void) showPrefPanel: (id)sender; @end #endif apps-projectcenter-master/Modules/Projects/Application/Resources/AppController.m000066400000000000000000000022241347226342500305470ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ Application Controller */ #import "AppController.h" @implementation AppController + (void) initialize { NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; /* * Register your app's defaults here by adding objects to the * dictionary, eg * * [defaults setObject:anObject forKey:keyForThatObject]; * */ [[NSUserDefaults standardUserDefaults] registerDefaults: defaults]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (id) init { if ((self = [super init])) { } return self; } - (void) dealloc { [super dealloc]; } - (void) awakeFromNib { } - (void) applicationDidFinishLaunching: (NSNotification *)aNotif { // Uncomment if your application is Renaissance-based // [NSBundle loadGSMarkupNamed: @"Main" owner: self]; } - (BOOL) applicationShouldTerminate: (id)sender { return YES; } - (void) applicationWillTerminate: (NSNotification *)aNotif { } - (BOOL) application: (NSApplication *)application openFile: (NSString *)fileName { return NO; } - (void) showPrefPanel: (id)sender { } @end apps-projectcenter-master/Modules/Projects/Application/Resources/Info.gnustep000066400000000000000000000006111347226342500301050ustar00rootroot00000000000000{ "!" = "Generated by ProjectCenter, do not edit"; ApplicationDescription = "No description avaliable!"; ApplicationName = ""; ApplicationRelease = 0.1; Copyright = "Copyright (C) 200x"; CopyrightDescription = "Released under ..."; FullVersionID = 0.1; NSExecutable = ""; NSMainNibFile = ""; NSPrincipalClass = NSApplication; NSRole = Application; }apps-projectcenter-master/Modules/Projects/Application/Resources/Info.table000066400000000000000000000022511347226342500275110ustar00rootroot00000000000000{ Type = "Project"; Name = "Application"; Description = "Project that handles GNUstep ObjC based applications."; PrincipalClassName = "PCAppProject"; Executable = YES; ExecToolName = "openapp"; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = NO; BrowserRootEntries = { CLASS_FILES = "Classes"; HEADER_FILES = "Headers"; OTHER_SOURCES = "Other Sources"; INTERFACES = "Interfaces"; IMAGES = "Images"; OTHER_RESOURCES = "Other Resources"; SUBPROJECTS = "Subprojects"; DOCU_FILES = "Documentation"; SUPPORTING_FILES = "Supporting Files"; LIBRARIES = "Libraries"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( "CLASS_FILES", "HEADER_FILES", "OTHER_SOURCES" ); ResourceFileKeys = ( "INTERFACES", "IMAGES", "DOCU_FILES", "OTHER_RESOURCES" ); OtherFileKeys = ( "LIBRARIES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Aggregate", "Application", "Bundle", "Library", "Framework", "Tool" ); LocalizableCategories = ( INTERFACES, IMAGES, OTHER_RESOURCES, DOCU_FILES ); }apps-projectcenter-master/Modules/Projects/Application/Resources/Inspector.gorm/000077500000000000000000000000001347226342500305165ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Application/Resources/Inspector.gorm/data.classes000066400000000000000000000032351347226342500330110ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "addDocType:", "clearAppIcon:", "clearFile:", "clearHelpFile:", "clearMainNib:", "docFieldSet:", "newAction:", "removeDocType:", "setAppClass:", "setAppType:", "setBundleIdentifier:", "setDocBasedApp:", "setDocIcon:", "setFile:", "showDocTypesPanel:" ); Super = NSObject; }; PCAppProject = { Actions = ( "clearAppIcon:", "clearHelpFile:", "clearMainNib:", "setAppClass:", "setAppType:", "setBundleIdentifier:", "setDocBasedApp:", "showDocTypesPanel:", "addDocType:", "removeDocType:" ); Outlets = ( projectAttributesView, appTypeField, appClassField, appImageField, helpFileField, mainNIBField, bundleIdentifierField, helpText, iconView, docTypesButton, docTypesPanel, addDocTypeButton, removeDocTypeButton, docBasedAppButton, docTypesScroll, docTypeLabel, docTypeField, docNameLabel, docNameField, docIconLabel, docIconField, docExtensionsLabel, docExtensionsField, docRoleLabel, docRoleField, docClassLabel, docClassField, classColumn, extensionsColumn, nameColumn, roleColumn, typeColumn, docTypesList ); Super = PCProject; }; PCAppTextField = { Actions = ( ); Outlets = ( ); Super = NSTextField; }; PCFileNameIcon = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PCProject = { Actions = ( ); Outlets = ( ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Application/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500323030ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Application/Resources/Inspector.gorm/objects.gorm000066400000000000000000000644441347226342500330510ustar00rootroot00000000000000GNUstep archive000f4240:00000033:000001af:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C« CĢ& % C7 DW01 NSView% ?€ A C« CĢ  C« CĢ&01 NSMutableArray1 NSArray&01NSBox%  Cœ€ C–€  Cœ€ C–€&0± &0 ± %  Cœ€ C–€  Cœ€ C–€&0 ± &0 1 NSTextField1 NSControl% @€ Cw BŽ AØ  BŽ AØ&0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0±&%Application Class:01NSFont% A@°&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% Bš Cy C. AØ  C. AØ&0± &%0±0±&0±%&&&&&&&& &&&&&&%’°°’0±% @Ą B C‘ C/  C‘ C/&0± &0± % @ @ C C+  C C+&0± &  0±% @€ C B¼ A  B¼ A&0 ± &%0!±0"±&%Application Icon:°&&&&&&&& &&&&&&%’°°’0#1GSControlTemplate0$±&%PCFileNameIcon1 NSImageView% Ca BÜ B` B`  B` B`&0%± &%0&1 NSImageCell°&&&&&&&&&&&&&&%%% ?€ ?€’0'±% @€ BŌ B¼ A€  B¼ A€&0(± &%0)±0*±& % Help File:°&&&&&&&& &&&&&&%’°°’0+±% @€ BŖ CX AØ  CX AØ&0,± &%0-±°°&&&&&&&& &&&&&&%’°°’0.±% @€ B€ BŲ A€  BŲ A€&0/± &%00±01±&%Main Interface File:°&&&&&&&& &&&&&&%’°°’02±% @€ B, CX AØ  CX AØ&03± &%04±05±&% °°5&&&&&&&& &&&&&&%’°°’06±% @€ Bž CX AØ  CX AØ&07± &%08±°°°&&&&&&&& &&&&&&%’°°’091NSButton% B“ A  C AĄ  C AĄ&0:± &%0;1 NSButtonCell0<±&%Document Types...°&&&&&&&&&&&&&&%’°°&&& &&0=1 GSCustomView1 GSNibItem0>±& % NSTextView Ca B B` B„&0?±0@±&%Box°&&&&&&&&&&&&&& %%0A±% @€ C‰ BŽ AØ  BŽ AØ&0B± &%0C±0D±&%Application Type:°&&&&&&&& &&&&&&%’°°’0E1 NSPopUpButton% Bš C‰€ C. AØ  C. AØ&0F± &%0G1NSPopUpButtonCell1NSMenuItemCell°°&&&&&&&&0H1 NSMenu°0I± &0J1! NSMenuItem0K±&%GORM°&&’%0L1"NSImage0M±& %  common_Nibble’%0N±!0O±& % Renaissance°&&’%’%&&&&&&%’°°&&& &&°J°H%%%%%0P±% Bš C_ C. AØ  C. AØ&0Q± &%0R±°°°&&&&&&&& &&&&&&%’°°’0S±% @€ C_ BŽ A  BŽ A&0T± &%0U±0V±&%Bundle Identifier:°°V&&&&&&&& &&&&&&%’°°’0W±0X±&%Title°&&&&&&&&&&&&&& %%0Y±°0Z±&% System0[±&% windowBackgroundColor0\±&%Window0]±&%Panel°] æ€  F FØ%0^±" B@ B@0_±0`±&% NSCalibratedWhiteColorSpace 0a± &0b1#NSBitmapImageRep1$ NSImageRep0c±&% NSDeviceRGBColorSpace B@ B@%%0%00d1%NSData&$š$šII*$§[=æT8žŠJ2žR-!k§[=æžU:ž‹K3žxB-’H'’R-!k§[=æšS7žˆJ2’xB-’H'’/’ ?§[=æšS7’†I2’xB-’H'’/’ ?§[=æ™S7’…H0žxB-’H'’/’ ?§[=æ™R7ž†I2’xB-’H'’/’ ?§[=æ™S7ž‡I0žxB-’H'’/’ ?§[=æ˜R7ž‡I2žxB-’H'’/’ ?§[=æ˜R7’…H0žxB-’H'’/’ ?Ø[>’X/!’j:)’H'’/’ ?D49’  ?hftæ{y‰’<;D’ ?hftæ€}’<;D’ ?™Æ’<;D’ ?™Æ’43:’""""™Æ’43:’zzzz°°°¶ÅÅÅĶÅÅÅĶįįįūäää’ššš’ķķķ’ŁŁŁęĘĘĘͱ±±¶""""EEEEEEEEEEEE™Æ’43:’ŸŸŸŸŸŸŸŸŸŸŸŸÖÖÖęēēē’ÜÜÜ’ŚŚŚ’ŚŚŚ’ŪŪŪ’ŪŪŪ’ŚŚŚ’ŚŚŚ’ŲŲŲ’ĖĖĖ’ĖĖĖ’–––’555»222t™Æ’43:’0?55hhhiiiŻŻŻ’ŚŚŚ’ÕÕÕ’ÓÓÓ’ŅŅŅ’ŅŅŅ’ŃŃŃ’ŃŃŃ’ŃŃŃ’ŃŃŃ’ĪĪĪ’ĻĻĻ’³³³’›››’‡‡‡’yyy’VVVŻ777?™Æ’43:’~=0æørd’¼¤Ÿ’ŌÓÓ’ŲŲŲ’ŠĻĻ’ŃŃŃ’ŃŃŃ’ŅŅŅ’ŌŌŌ’ŅŅŅ’ĻĻĻ’ĢĢĢ’ĻĻĻ’ŌŌŌ’×××’æææ’„„„’ŸŸŸ’“““’‰‰‰’‚‚‚’xxx’UUUŻ444?/17?Œ‰æµ²Ź’43:’5„?0ž„\MžĮ·µ’·°Æ’ĆĆĆ’ĪŹČ’ŃŃŃ’ŅŅŅ’ŌŌŌ’ŅŅŅ’ŠŠŠ’ŠŠŠ’ÕÕÕ’ŠŠŠ’ĘĘĘ’©©©’£££’ŸŸŸ’œœœ’———’ŽŽŽ’……†’zz{’]]]’QQQmmm_bnĄÄŻ’Æ²Č’””·’œ™Æ’:9@’5‚?0ž‡I>ž„’’’e]’·‚x’ŠĪĪ’×××’ŃŃŃ’ŃŃŃ’ÕÕÕ’ŠŠŠ’ĻĻĻ’ŠŠŠ’ĄĄĄ’„„„’„„„’£££’   ’žžž’’™š›’™™’˜™ž’   ’±³Ą’ĄÄŻ’Ÿ µžxw‡žvt„’sq’po}ž66<’5ƒ?2ž…A3žˆQF’…A4ž‹H:ž²Ÿœ’°‰’»øø’ŠŠŠ’ŪŪŪ’ŃŃŃ’ÖÖÖ’ĪĪĪ’®®®’ŸŸŸ’ŸŸŸ’”””’   ’£££’žžž’   ’¦ØÆ’ø»Ī’ĄÄŻ’”¢ø’|z‹žzy‰’wu…žtr‚žqpžbaož++0æ5„?2’†@2’‡@2ž‡A3ž‰B3’ŠC4žE6ž¤ƒ}žĒĘĘ’ŌŌŌ’ŠŠŠ’ŅŅŅ’²²²’¤¤¤’ŸŸŸ’ŸŸŸ’¢¢¢’ŸŸŸ’žžž’×××’ééģ’Žąē’²²æ’‘’}|’zxŠžxw‡’utƒžrq€žpn}žVT_’=,,ź ˆ5…@2ž†@3ž‡A3žˆA3žŠJ<ž‰NB’ŽD6žH:ž¹Ÿ›žĒÅÅ’ Žž•‰†’™’‘’Ÿ›š’œ™˜’ ž’£ Ÿ’ŲÓŅ’ņņņ’óóó’ééé’äää’ąąą’ÄÄÄ’‰‰‘’ƒ‚Žž}|ˆ’tržqo~žnm{’::B’f4)ža2'ž\/&žW*!æ55†@2ž‡A3žˆA3ž‰C4ž¤€yž‰c\žE6žE6ž­ˆ‚ž‘’Ą¤Ÿ’ŪĢÉžõõõ’óóó’ņņņ’óóó’ļļļ’ģģģ’ććć’ąąą’···’¼¼¼’±±±’¼¼¼’æææ’«««’„¤Ø’yx€žsr|ž`_mžF;?žf4)žd3)žo4)žz:-ž…@2žw:-žV* æ55‡@3ž‡A3žˆA3žŠC4ž¦‚zžf^žE6ž’F7ž”K<žŪŠĻžóóó’īīī’ččč’ßßß’ÖÖÖ’ĶĶĶ’ČČČ’ĖĖĖ’ĒĒĒ’ĘĘĘ’»»»’ĀĀĀ’øøø’ŗŗŗ’»»»’ŖŖŖ’øøø’ØØØ’ĒĒĒ’›››žtihžb/$ži3'žv8,ž~’dbqžihvžFEO’Q-)žY)!žW)ž`/$’k3'’q6*žn4)žl3'ži2'žf0&žc/$ž`-$žY*!ž)5ŠC4žŒC4žD4žE6ž’F7ž•H7žĘ¦”žėėė’ŲŲŲ’¼¼¼’ŌŌŌ’ĀĀĀ’···’©©©’±±±’ÅÅÅ’ĪĪĪ’ĀĀĀ’ŗŗŗ’øøø’’’’’’kkk’)))žLJRžkjxžihv’hguž::B’\/&ž[-$žY-$žc/&’l3'žo4)’l3'’j2'žg2&žd0$ža/$ž^-#žX*!ž)5„@2žD4žE6ž‘F7ž”H7ž—I8žŚÅĀžėėė’ŅŅŅ’øøø’¬¬¬’°°°’ÄÄÄ’­­­’øøø’ŗŗŗ’øøø’ĘĘĘ’²²²’ƒƒƒ’{{{’[[[’322žQPZž^]jžjhwžhgužQP[žK33’\-&žW)ž_/$žj3'žm3'žm4)žj3'’h2&žd0&žb/$ž_-#ž],#žX*!’)P'æ~>>žddd’“““’>>?’87?ž4$$žE)&ž_-#ž`0'ž_0&’]/&’^/&ž`/&’`/&žc0&žj2'žn3'žk3'žh2&’d0$’a/$’^-#ž\,!žZ,!žX*!žU)žT)’)ttt³³³’©©©’‰‰‰’ttt’zzz’ÆÆÆ’ÆÆÆ’¹¹¹’‡‡‡’;;;’rqyžjhwžPPZ’43:’ŖŖŖ’C@?’w9,’c2)žb2)ž^,#ž_0&žd2'žg2'žh2'’k3)žl3)žl3)žl3'’l3'ži2'žf0&’c/$’_-#ž],#žZ,!žX*!žW)žT)žS)ž)rrrŸŸŸ’€€€’```’FFFū000śŠŠŠ’ĒĒĒ’ÆÆÆ’mmm’\[a’<;C’A)'ž^3,ž‘I:ž°°°’:76žv8,ž_-$žb2'žg2'žl4)žr7*žs7*žs7*žw8,žt7,žq6*žn4)žk3'’g2&’d0$’`-$ž],#ž[,!’X*!žW)žU)žS'žS'’)ĮĮĮśYYYųņ777ļXWcūKJSž|||’ŹŹŹ’¦¦¦’SSS’\2,ž‚KDžD4ž‘I:ž“I;žÆÆÆ’A?>ž~>0žb2)žf2'žp6*žx:-žy:-ž{;-žx:-žv9,’s7*žo4)žl3'ži2&žf0&žc/$’_-#’\,#žY*!žW)žT)žS'žR'žS'’)TR^|z‡ō@?Gↄ–žŒŠž\Zgž<;CžŽŽŽ’ŠŠŠ’ÆÆÆ’JJJ’m4)žD4žE6ž˜J;ž˜UIž†PEžvI@’q:/’l4)žm4)žx:,ž};/ž{:-žy:-žw9,’t7*žq6*’m4)žj3'žh2&žc0&ža/$’]-#ž[,!’X*!žV)’T)žR'žR'žR'ž)0/5?Ŗ§¾žˆ‡™ž_^k’CBJ’43:’?ˆˆˆ’øøø’‚‚‚’QQQ’ ˆ^-#ž’I:ž”O>ž¬SB’£P?ž‘H7’€?2žp6*žs7*ž0ž|;/žy:-žp6*žf0&žd0&’c/&’`/$ž_-$ž]-#ž\,#žT)!’T)!’T)!’T)!’T)!’T)!’T)!’)))) ?h3'æz;/’T)!’T)!’T)!’`/$’`/$’))))) ? ž00’$$R&   DČ DW0e±°±% ?€ A C†C›&% C( DV€0f± % ?€ A C†C›  C†C›&0g± &0h±% A C  B| AØ  B| AØ&0i± &%0j±0k±&%Type:°&&&&&&&& &&&&&&%’°°’0l±% Bš C  Cø€ AØ  Cø€ AØ&0m± &%0n±°°°&&&&&&&& &&&&&&%’°°’0o±% A Bą B| AØ  B| AØ&0p± &%0q±0r±&%Name:°&&&&&&&& &&&&&&%’°°’0s±% A A B€ AØ  B€ AØ&0t± &%0u±0v±&%Class:°&&&&&&&& &&&&&&%’°°’0w±% A B B€ AØ  B€ AØ&0x± &%0y±0z±&%Role:°&&&&&&&& &&&&&&%’°°’0{±% A Bp B€ AØ  B€ AØ&0|± &%0}±0~±& % Extensions:°&&&&&&&& &&&&&&%’°°’0±% A B¬ B| AØ  B| AØ&0€± &%0±0‚±&%Icon:°&&&&&&&& &&&&&&%’°°’0ƒ±% Bš Bą Cø€ AØ  Cø€ AØ&0„± &%0…±°°&&&&&&&& &&&&&&%’°°’0†±% Bš B¬ Cø€ AØ  Cø€ AØ&0‡± &%0ˆ±°°&&&&&&&& &&&&&&%’°°’0‰±% Bš Bp Cø€ AØ  Cø€ AØ&0б &%0‹±°°&&&&&&&& &&&&&&%’°°’0Œ±% Bš B Cø€ AØ  Cø€ AØ&0± &%0ޱ°°&&&&&&&& &&&&&&%’°°’0±% Bš A Cø€ AØ  Cø€ AØ&0± &%0‘±°°&&&&&&&& &&&&&&%’°°’0’±% Bš C$ C8 Aˆ  C8 Aˆ&0“± &%0”±0•±&%Document-Based Application0–±"0—1&NSMutableString&%GSSwitch°&&&&&&&&&&&&&&%’°°0˜±"0™±&&%GSSwitchSelected&&& &&0š±% A C$ Aˆ Aˆ  Aˆ Aˆ&0›± &%0œ±0±&%+°&&&&&&&&&&&&&&%’°°&&& &&0ž±% Aų C$ Aˆ Aˆ  Aˆ Aˆ&0Ÿ± &%0 ±0”±&%-°&&&&&&&&&&&&&&%’°°&&& &&0¢1' NSScrollView% A C: CŪ Bč  CŪ Bč&0£± &0¤1( NSClipView% AØ AĄ CĻ€ B“  CĻ€ B“&0„1) NSTableView%  CĻ C!  CĻ C!&°„°¤0¦± &%0§±°°&&&&&&&&&&&&&&0ر &0©1* NSTableColumn0Ŗ±&%NSHumanRedableName BĪ A  GĆP0«1+NSTableHeaderCell0¬±&% Name0­±% &&&&&&&& &&&&&&%’0®±°°Z0Ʊ&% controlShadowColor0°±°°Z0±±&% windowFrameTextColor0²±0³±&%five°°³&&&&&&&& &&&&&&%’°°0“±*0µ±&%NSUnixExtensions Bī A  GĆP0¶±+0·±& %  Extensions°­&&&&&&&& &&&&&&%’°®°°0ø±°³°°³&&&&&&&& &&&&&&%’°°0¹±*0ŗ±&%NSRole B² A  GĆP0»±+0¼±&% Role°­&&&&&&&& &&&&&&%’°®°°0½±°³°°³&&&&&&&& &&&&&&%’°°0¾±*0æ±&%NSDocumentClass BĪ A  GĆP0Ą±+0Į±&% Class°­&&&&&&&& &&&&&&%’°®°°0±°³°°³&&&&&&&& &&&&&&%’°°0Ʊ°°Z0ı& %  gridColor0ű°` ?*Ŗ« ?€0Ę1,NSTableHeaderView%  CĻ A°  CĻ A°&°Ę0DZ(% AØ @ CĻ€ A°  CĻ€ A°&°Ę0ȱ &°Ę0ɱ°°Z0ʱ& %  controlColor0˱ &0Ģ1-GSTableCornerView% @ @ A˜ A°  A˜ A°&0ͱ &%% A€’ @ @@0α &0ϱ &°„0б°` ?*Ŗ« ?€0Ń1. NSScroller% @ AĄ A B“  A B“&0ұ &%0Ó±°°&&&&&&&&&&&&&&&°¢2 _doScroll:v12@0:4@8°Ē°Ģ°¤% A A A A °Ń°Ē°Y0Ō±&%Window0Õ±&%Document Types°Õ B B‚ F( FÜ%°^&   DČ DW0Ö± &0×± &0Ų1/NSMutableDictionary10 NSDictionary&00ٱ& % TextField13°20ڱ& % TableColumn2°¹0Ū±& % TextField24°Œ0ܱ& % TextField18°w0ݱ&%Box°0ޱ&%GormNSTableView°„0ß±& % ImageView°#0ą±& % TextField5°h0į±& % TextField(2)°S0ā±& % ScrollView°¢0ć±& % MenuItem20ä±!0å±&%Remove°&&’%’%0ę±& % TextField10°'0ē±& % TextField21°ƒ0č±& % TextField15°l0é±& % TextField°A0ź±&%Button3°š0ė±& % TextField7°0ģ±& % TableColumn°©0ķ±& % Inspector°0ī±& % MenuItem4°N0ļ±&%TextFieldCell(1)°R0š±& % TextField12°.0ń±& % TextField23°‰0ņ±& % TableColumn1°“0ó±& % TextField17°s0ō±&%GormNSPopUpButton°E0õ±&%Button5°ž0ö±& % TextField9°60÷±&%Box1°0ų±& % CustomView(0)°=0ł±& % MenuItem10ś±!0ū±&%Add°&&’%’%0ü±& % TextField20°0ż±& % TableColumn3°¾0ž±& % TextField19°{0’±& % TextField25°P±&%MenuItemP±!P±&%Edit...°&&’%P±"P±&% common_3DArrowDown’%P±&%Button2°’P±& % TextField6° P±&% NSOwnerP±& % PCAppProjectP ±& % TextField(1)°PP ±& % MenuItem3°JP ±& % TextField11°+P ±&%TextFieldCell(2)°UP ±& % TextField16°oP±& % TextField22°†P±&%DocTypes°eP±&%Button4°9P±& % TextField8°P± &kkP11NSNibConnector°ķP±&% NSOwnerP±1ŠŠP±1°ėАP±1°÷P±1АP±1°ßP±1°ęАP±1РАP±1°šŠP±1°ŁŠP12NSNibOutletConnectorаėP±& % appClassFieldP ±2аßP!±&%iconViewP"±2ŠŠ P#±& % helpFileFieldP$±2аŁP%±& % mainNIBFieldP&±2Š ŠP'±&%delegateP(±2°ŁŠŠ'P)±1°öАP*±2аöP+±& % appImageFieldP,±2°öŠ P-±&& % nextKeyViewP.±2Š °ŁŠ-P/±2°Ł°öŠ-P0±2°ėŠP1±&&%delegateP2±2°öŠŠ1P3±1АP4±1°łP5±1°ćP6±1ŠŠP7±1°ąP8±1°čP9±1РАP:±1°óАP;±1°ÜАP<±1°žŠP=±1°üАP>±1°ēАP?±1ŠŠP@±1°ńАPA±1°ŪАPB±1°’АPC±1ŠŠPD±1°źPE±1°õАPF±1АPG±2ŠŠPH±&%docTypesButtonPI±2ŠŠPJ±& % docTypesPanelPK±2аźPL±&%addDocTypeButtonPM±2аõPN±&%removeDocTypeButtonPO±2ŠŠPP±&%docBasedAppButtonPQ±2аąPR±& % docTypeLabelPS±2аčPT±& % docTypeFieldPU±2ŠŠ PV±& % docNameLabelPW±2аēPX±& % docNameFieldPY±2аüPZ±& % docIconLabelP[±2ŠŠP\±& % docIconFieldP]±2аžP^±&%docExtensionsLabelP_±2аńP`±&%docExtensionsFieldPa±2аÜPb±& % docRoleLabelPc±2аŪPd±& % docRoleFieldPe±2аóPf±& % docClassLabelPg±2а’Ph±& % docClassFieldPi±2°č°ēPj±&& % nextKeyViewPk±2°ēŠŠjPl±2аńŠjPm±2°ń°ŪŠjPn±2°Ū°’ŠjPo±2°’°čŠjPp±1°āPq±1°ŽPr±1°ģPs±1°ņPt±1°ŚŠPu±2°ŽŠPv±&&%delegatePw±2°ŽŠPx±&& % dataSourcePy±1°żŠPz±2°čŠP{±&&%delegateP|±2°ēŠŠ{P}±2ŠŠŠ{P~±2°ńŠŠ{P±2°ŪŠŠ{P€±2°’ŠŠ{P±1°éАP‚±1°ōPƒ±1Š P„±1°īP…±1°ŻP†±2аŻP‡±&&%projectAttributesViewPˆ±2аōP‰±& % appTypeFieldPб1°ųP‹±2аųPŒ±&%helpTextP±1Š Pޱ1°ļŠ P±1°įP±1Š °įP‘±2ŠŠ P’±&%bundleIdentifierFieldP“±2Š ŠP”±&%delegateP•13NSNibControlConnector°ėŠP–±& % setAppClass:P—±3°ōŠP˜±& % setAppType:P™±3Š ŠPš±&%setBundleIdentifier:P›±3ŠŠPœ±&%setDocBasedApp:P±2аģPž±& % nameColumnPŸ±2аņP ±&%extensionsColumnP”±2аŚP¢±& % roleColumnP£±2аżP¤±& % classColumnP„±2аŽP¦±& % docTypesListP§±3ŠŠPر&%showDocTypesPanel:P©±3°źŠPŖ±& % addDocType:P«±3°õŠP¬±&%removeDocType:P­±/&°ß°$apps-projectcenter-master/Modules/Projects/Application/Resources/Main.gorm/000077500000000000000000000000001347226342500274345ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Application/Resources/Main.gorm/data.classes000066400000000000000000000004411347226342500317230ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; AppController = { Actions = ( "showPrefPanel:" ); Outlets = ( ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "showPrefPanel:" ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Application/Resources/Main.gorm/data.info000066400000000000000000000002701347226342500312210ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Application/Resources/Main.gorm/objects.gorm000066400000000000000000000072011347226342500317530ustar00rootroot00000000000000GNUstep archive000f4240:00000011:00000084:00000001:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01 GSNibItem01NSString& % AppController  &01NSMenu0±& % Main Menu01NSMutableArray1 NSArray&01 NSMenuItem0 ±&%Info0 ±&JJ’I0 1 NSImage0 1 NSMutableString&%GSMenuSelected0 ± 0± & % GSMenuMixed2submenuAction:I0±° 0±&0± 0±& % Info Panel...0±&JJ’I° ° ’I0± 0±&%Preferences...0±&JJ’I° ° ’I0± 0±&%Help...0±&%?JJ’I° ° ’I°0± 0±&%Windows0±&JJ’I° ° ²I0±°0±&0± 0 ±&%Arrange In Front0!±&JJ’I° ° ’I0"± 0#±&%Miniaturize Window0$±&%mJJ’I° ° ’I0%± 0&±& % Close Window0'±&%wJJ’I° ° ’I°0(± 0)±&%Services0*±&JJ’I° ° ²I0+±°)0,±&°0-± 0.±&%Hide0/±&%hJJ’I° ° ’I00± 01±&%Quit02±&%qJJ’I° ° ’I03±&04±&051 NSMutableDictionary1 NSDictionary&$06±&% NSOwner07±& % NSApplication08±&%MenuItem°-09±& % GormNSMenu3°0:±& % GormNSMenu2°0;±& % GormNSMenu1°+0<±& % MenuItem26°0=±& % MenuItem19°-0>±& % MenuItem25°00?±& % MenuItem9°"0@±& % MenuItem18°%0A±& % MenuItem24°(0B±& % MenuItem8°0C±& % MenuItem17°"0D±& % MenuItem23°0E±& % MenuItem16°0F±& % MenuItem22°0G±& % MenuItem7°0H±& % GormNSMenu°0I±& % MenuItem6°(0J±& % MenuItem15°0K±& % MenuItem21°0L±& % MenuItem20°0M±& % MenuItem14°-0N±& % MenuItem5°0O±&%NSMenu°0P±& % MenuItem4°0Q±& % MenuItem13°0R±& % MenuItem3°0S±& % MenuItem12°-0T±& % NSWindowsMenu°0U±& % MenuItem2°0V±& % MenuItem11°0W±& % AppController°0X±& % MenuItem1°00Y±& % MenuItem10°%0Z±&%NSServicesMenu°+0[±&0\1NSNibConnector°O0]±&% NSOwner0^±°S°O0_±°X°O0`±°U°O0a±°H°U0b±°R°H0c±°P°H0d±°N°H0e±°I°O0f±°Z°I0g±°V°O0h±°T°V0i±°E°T0j±°C°T0k±°Y°T0l1NSNibControlConnector°U°O0m±&%submenuAction:0n±°V°O0o±&%submenuAction:0p±°I°O0q±&%submenuAction:0r±°S0s±&% NSFirst0t±&%hide:0u±°X°s0v±& % terminate:0w±°R°s0x±&%orderFrontStandardInfoPanel:0y±°E°s0z±&%arrangeInFront:0{±°C°s0|±&%performMiniaturize:0}±°Y°s0~±& % performClose:0±°W°]0€±°P°W0±&%showPrefPanel:0‚1NSNibOutletConnector°]°W0ƒ± &%delegate0„± &apps-projectcenter-master/Modules/Projects/Application/Resources/Main.gsmarkup000066400000000000000000000001521347226342500302420ustar00rootroot00000000000000 apps-projectcenter-master/Modules/Projects/Application/Resources/MainMenu-GNUstep.gsmarkup000066400000000000000000000016011347226342500324120ustar00rootroot00000000000000 apps-projectcenter-master/Modules/Projects/Application/Resources/MainMenu-OSX.gsmarkup000066400000000000000000000042251347226342500315430ustar00rootroot00000000000000 apps-projectcenter-master/Modules/Projects/Application/Resources/PC.project000066400000000000000000000025001347226342500274740ustar00rootroot00000000000000{ APPLICATIONICON = ""; APP_DOCUMENT_BASED = NO; APP_TYPE = GORM; CLASS_FILES = ("AppController.m"); COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = (); FRAMEWORKS = (); HEADER_FILES = ("AppController.h"); INTERFACES = (); IMAGES = (); LANGUAGE = "English"; USER_LANGUAGES = (); LIBRARIES = ("gnustep-base","gnustep-gui"); LOCALIZED_RESOURCES = (); MAININTERFACE = ""; MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep"; OBJC_COMPILEROPTIONS = ""; OTHER_RESOURCES = (); OTHER_SOURCES = (""); PRINCIPAL_CLASS = "NSApplication"; PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description avaliable!"; PROJECT_DOCUMENTTYPES = (); PROJECT_GROUP = "No group avaliable!"; PROJECT_SUMMARY = "No summary avaliable!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Application"; PROJECT_URL = ""; BUNDLE_IDENTIFIER = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Application/Resources/main.m000066400000000000000000000011321347226342500267040ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ */ #import int main(int argc, const char *argv[]) { // Uncomment if your application is Renaissance application /* CREATE_AUTORELEASE_POOL (pool); [NSApplication sharedApplication]; [NSApp setDelegate: [AppController new]]; #ifdef GNUSTEP [NSBundle loadGSMarkupNamed: @"MainMenu-GNUstep" owner: [NSApp delegate]]; #else [NSBundle loadGSMarkupNamed: @"MainMenu-OSX" owner: [NSApp delegate]]; #endif RELEASE (pool); */ return NSApplicationMain (argc, argv); } apps-projectcenter-master/Modules/Projects/Bundle/000077500000000000000000000000001347226342500226015ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Bundle/GNUmakefile000066400000000000000000000011161347226342500246520ustar00rootroot00000000000000# # GNUmakefile - BundleProject # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Bundle BUNDLE_EXTENSION = .project Bundle_PRINCIPAL_CLASS = PCBundleProject # # Additional libraries # Bundle_LIBRARIES_DEPEND_UPON += # # Resource files # Bundle_RESOURCE_FILES = \ Resources/PC.project \ Resources/Inspector.gorm \ Resources/Info.table # # Header files # Bundle_HEADERS = \ PCBundleProject.h # # Class files # Bundle_OBJC_FILES= \ PCBundleProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Bundle/PCBundleProject.h000066400000000000000000000043111347226342500257340ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola Description: This is the project type 'Bundle' for GNUstep. You never should create it yourself but use PCBundleProj for doing this. Otherwise needed files don't get copied to the right place. This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCBundleProject_h #define _PCBundleProject_h #import #import #import @class PCMakefileFactory; @interface PCBundleProject : PCProject { IBOutlet NSBox *projectAttributesView; IBOutlet NSTextField *principalClassField; IBOutlet NSTextField *bundleExtensionField; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:projOption; @end @interface PCBundleProject (GeneratedFiles) - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCBundleProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; - (void)setPrincipalClass:(id)sender; - (void)setBundleExtension:(id)sender; @end #endif apps-projectcenter-master/Modules/Projects/Bundle/PCBundleProject.m000066400000000000000000000220301347226342500257370ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import "PCBundleProject.h" @implementation PCBundleProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCClasses, PCHeaders, PCOtherSources, PCInterfaces, PCImages, PCOtherResources, PCSubprojects, PCDocuFiles, PCSupportingFiles, PCLibraries, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Classes", @"Headers", @"Other Sources", @"Interfaces", @"Images", @"Other Resources", @"Subprojects", @"Documentation", @"Supporting Files", @"Libraries", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCBundleProject: dealloc"); #endif [rootCategories release]; [rootKeys release]; [rootEntries release]; [projectAttributesView release]; [super dealloc]; } //---------------------------------------------------------------------------- // Project //---------------------------------------------------------------------------- - (Class)builderClass { return [PCBundleProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:projOption { NSBundle *projectBundle = nil; NSString *_file = nil; NSString *_2file = nil; PCFileCreator *pcfc = [PCFileCreator sharedCreator]; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:projectName forKey:PCPrincipalClass]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // Copy the project files to the provided path // $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@", projectName]; _2file = [NSString stringWithFormat:@"%@.m", projectName]; [pcfc createFileOfType:ObjCClass path:[path stringByAppendingPathComponent:_file] project:self]; [projectDict setObject:[NSArray arrayWithObjects:_2file,nil] forKey:PCClasses]; // $PROJECTNAME$.h already created by creating $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@.h", projectName]; [projectDict setObject:[NSArray arrayWithObjects:_file,nil] forKey:PCHeaders]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Save the project to disc [self writeMakefile]; [self save]; return self; } @end @implementation PCBundleProject (GeneratedFiles) - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Libraries depend upon [mf appendLibraries:[projectDict objectForKey:PCLibraries]]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; // Gather all resource files into one array for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Sources [mf appendHeaders:[projectDict objectForKey:PCHeaders]]; [mf appendClasses:[projectDict objectForKey:PCClasses]]; [mf appendOtherSources:[projectDict objectForKey:PCOtherSources]]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { NSString *installDomain = [projectDict objectForKey:PCInstallDomain]; [mff appendString:@"\n#\n# Bundle\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString:[NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"BUNDLE_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"%@_PRINCIPAL_CLASS = %@\n", projectName, [projectDict objectForKey:PCPrincipalClass]]]; [mff appendString:[NSString stringWithFormat:@"BUNDLE_EXTENSION = %@\n", [projectDict objectForKey:PCBundleExtension]]]; /* FIXME %@_COPY_INTO_DIR needs to be properly reinstantiated as well as %@_STANDARD_INSTALL = no */ /* set the domain if it was specified */ if (!(installDomain == nil) && ![installDomain isEqualToString:@""]) { [mff appendString: [NSString stringWithFormat:@"GNUSTEP_INSTALLATION_DOMAIN = %@\n", [installDomain uppercaseString]]]; } } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/bundle.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end @implementation PCBundleProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCBundleProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { [principalClassField setStringValue:[projectDict objectForKey:PCPrincipalClass]]; [bundleExtensionField setStringValue:[projectDict objectForKey:PCBundleExtension]]; } - (void)setPrincipalClass:(id)sender { [self setProjectDictObject:[principalClassField stringValue] forKey:PCPrincipalClass notify:YES]; } - (void)setBundleExtension:(id)sender { [self setProjectDictObject:[bundleExtensionField stringValue] forKey:PCBundleExtension notify:YES]; } @end apps-projectcenter-master/Modules/Projects/Bundle/Resources/000077500000000000000000000000001347226342500245535ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Bundle/Resources/Info.table000066400000000000000000000022251347226342500264600ustar00rootroot00000000000000{ Type = "Project"; Name = "Bundle"; Description = "Project that handles GNUstep bundles."; PrincipalClassName = "PCBundleProject"; ExecToolName = ""; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = NO; BrowserRootEntries = { CLASS_FILES = "Classes"; HEADER_FILES = "Headers"; OTHER_SOURCES = "Other Sources"; INTERFACES = "Interfaces"; IMAGES = "Images"; OTHER_RESOURCES = "Other Resources"; SUBPROJECTS = "Subprojects"; DOCU_FILES = "Documentation"; SUPPORTING_FILES = "Supporting Files"; LIBRARIES = "Libraries"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( "CLASS_FILES", "HEADER_FILES", "OTHER_SOURCES" ); ResourceFileKeys = ( "INTERFACES", "IMAGES", "OTHER_RESOURCES", "DOCU_FILES" ); OtherFileKeys = ( "SUBPROJECTS", "SUPPORTING_FILES", "LIBRARIES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Aggregate", "Bundle", "Library", "Framework", "Tool" ); LocalizableCategories = ( INTERFACES, IMAGES, OTHER_RESOURCES, DOCU_FILES ); } apps-projectcenter-master/Modules/Projects/Bundle/Resources/Inspector.gorm/000077500000000000000000000000001347226342500274645ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Bundle/Resources/Inspector.gorm/data.classes000066400000000000000000000006631347226342500317610ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "setPrincipalClass:", "setBundleExtension:" ); Super = NSObject; }; PCBundleProject = { Actions = ( "setPrincipalClass:", "setBundleExtension:" ); Outlets = ( projectAttributesView, principalClassField, bundleExtensionField ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Bundle/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500312510ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Bundle/Resources/Inspector.gorm/objects.gorm000066400000000000000000000071121347226342500320040ustar00rootroot00000000000000GNUstep archive000f4240:0000001c:0000004f:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @‚ @‡€01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @są @rŠ  @są @rŠJ0± &0 ± %  @są @rŠ  @są @rŠJ0 ± &0 1 NSTextField1 NSControl% @ @q0 @Z @5  @Z @5J0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0±&%Principal Class:01NSFont%0±& % Helvetica A@A@&&&&&&JJ &&&&&&I’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% @[Ą @q0 @g @5  @g @5J0± &%0±0±&0±%&&&&&&JJ &&&&&&I’°°’0±% @ @o@ @Z @5  @Z @5J0± &%0±0±&%Bundle Extension:°&&&&&&JJ &&&&&&I’°°’0 ±% @[Ą @o@ @g @5  @g @5J0!± &%0"±0#±&°&&&&&&JJ &&&&&&I’°°’0$±0%±&%Title°&&&&&&JJ&&&&&& %%0&±°0'±&% System0(±&% windowBackgroundColor0)±&%Window0*±&%Panel°* æš  @Ƈ @ĆxI0+1NSImage0,±&% NSApplicationIcon&   @ž @’Ą0-± &0.± &0/1NSMutableDictionary1 NSDictionary&00±&%Box°01±& % TextField9° 02±& % TextField6° 03±& % TextField8°04±&% NSOwner05±&%PCBundleProject06±& % Inspector°07±& % TextField7°08± &091NSNibConnector°60:±&% NSOwner0;±°2°:0<±°7°:0=1NSNibOutletConnector°:°70>±&%principalClassField0?1NSNibControlConnector°7°:0@±&%setPrincipalClass:0A±°3°:0B±°1°:0C±°:°10D±&%bundleExtensionField0E±°1°:0F±&%setBundleExtension:0G±°7°:0H1NSMutableString&%delegate0I±°1°:°H0J±°7°10K±& % nextKeyView0L±°00M±°:°00N±&%projectAttributesView0O±&apps-projectcenter-master/Modules/Projects/Bundle/Resources/PC.project000066400000000000000000000022171347226342500264470ustar00rootroot00000000000000{ BUNDLE_EXTENSION = ".bundle"; CLASS_FILES = (); COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = (); FRAMEWORKS = (); HEADER_FILES = (); INTERFACES = (); IMAGES = (); LANGUAGE = "English"; USER_LANGUAGES = (); LIBRARIES = ("gnustep-base","gnustep-gui"); LOCALIZED_RESOURCES = (); MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(GNUSTEP_BUNDLES)"; OBJC_COMPILEROPTIONS = ""; OTHER_RESOURCES = (); OTHER_SOURCES = (); PRINCIPAL_CLASS = ""; PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description available!"; PROJECT_GROUP = "No group available!"; PROJECT_SUMMARY = "No summary available!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Bundle"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Framework/000077500000000000000000000000001347226342500233255ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Framework/GNUmakefile000066400000000000000000000011531347226342500253770ustar00rootroot00000000000000# # GNUmakefile - FrameworkProject # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Framework BUNDLE_EXTENSION = .project Framework_PRINCIPAL_CLASS = PCFrameworkProject # # Additional libraries # Framework_LIBRARIES_DEPEND_UPON += # # Resource files # Framework_RESOURCE_FILES= \ Resources/PC.project \ Resources/Inspector.gorm \ Resources/Info.table # # Header files # Framework_HEADERS= \ PCFrameworkProject.h # # Class files # Framework_OBJC_FILES= \ PCFrameworkProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Framework/PCFrameworkProject.h000066400000000000000000000043311347226342500272060ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2018 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola Description: This is the project type 'Library' for GNUstep. You never should create it yourself but use PCFrameworkProj for doing this. Otherwise needed files don't get copied to the right place. This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCFrameworkProject_h #define _PCFrameworkProject_h #import #import #import @class PCMakefileFactory; @interface PCFrameworkProject : PCProject { IBOutlet NSBox *projectAttributesView; IBOutlet NSTextField *principalClassField; IBOutlet NSTextField *currentVersionNameField; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:projOption; @end @interface PCFrameworkProject (GeneratedFiles) - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendPublicHeaders:(PCMakefileFactory *)mff; - (void)appendGSDoc:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCFrameworkProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Modules/Projects/Framework/PCFrameworkProject.m000066400000000000000000000253421347226342500272200ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2005-2018 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import #import "PCFrameworkProject.h" @implementation PCFrameworkProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCClasses, PCHeaders, PCOtherSources, PCOtherResources, PCSubprojects, PCDocuFiles, PCSupportingFiles, PCLibraries, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Classes", @"Headers", @"Other Sources", @"Other Resources", @"Subprojects", @"Documentation", @"Supporting Files", @"Libraries", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)dealloc { [rootCategories release]; [rootKeys release]; [rootEntries release]; [super dealloc]; } //---------------------------------------------------------------------------- // --- PCProject overridings //---------------------------------------------------------------------------- - (Class)builderClass { return [PCFrameworkProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:projOption { // PCFileManager *pcfm = [PCFileManager defaultManager]; PCFileCreator *pcfc = [PCFileCreator sharedCreator]; NSBundle *projectBundle = nil; NSString *_file = nil; NSString *_2file = nil; // NSString *_resourcePath; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // Copy the project files to the provided path // $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@", projectName]; _2file = [NSString stringWithFormat:@"%@.m", projectName]; [pcfc createFileOfType:ObjCClass path:[path stringByAppendingPathComponent:_file] project:self]; [projectDict setObject:[NSArray arrayWithObjects:_2file,nil] forKey:PCClasses]; // $PROJECTNAME$.h already created by creating $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@.h", projectName]; [projectDict setObject:[NSArray arrayWithObjects:_file,nil] forKey:PCHeaders]; [projectDict setObject:[NSArray arrayWithObjects:_file,nil] forKey:PCPublicHeaders]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Resources // _resourcePath = [path stringByAppendingPathComponent:@"Resources"]; // Save the project to disc [self writeMakefile]; [self save]; return self; } // ---------------------------------------------------------------------------- // --- File Handling // ---------------------------------------------------------------------------- - (void)addFiles:(NSArray *)files forKey:(NSString *)type notify:(BOOL)yn { if ([type isEqualToString:PCHeaders]) { [super addFiles:files forKey:PCPublicHeaders notify:NO]; } [super addFiles:files forKey:type notify:YES]; } - (BOOL)renameFile:(NSString *)fromFile toFile:(NSString *)toFile { NSString *category = [projectBrowser nameOfSelectedCategory]; BOOL success = NO; BOOL isPublicHeader = YES; isPublicHeader = [[projectDict objectForKey:PCPublicHeaders] containsObject:fromFile]; success = [super renameFile:fromFile toFile:toFile]; if (success && [category isEqualToString:[super categoryForKey:PCHeaders]]) { if (isPublicHeader == NO) { [self setHeaderFile:toFile public:NO]; } } return success; } @end @implementation PCFrameworkProject (GeneratedFiles) - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Libraries depend upon [mf appendLibraries:[projectDict objectForKey:PCLibraries]]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; // Gather all resource files into one array for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Sources [self appendPublicHeaders:mf]; [mf appendClasses:[projectDict objectForKey:PCClasses]]; [mf appendOtherSources:[projectDict objectForKey:PCOtherSources]]; // AutoGSDoc [self appendGSDoc:mf]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { [mff appendString:@"\n#\n# Framework\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString: [NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"FRAMEWORK_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"%@_CURRENT_VERSION_NAME = %@\n", projectName, [projectDict objectForKey:PCRelease]]]; [mff appendString:[NSString stringWithFormat:@"%@_DEPLOY_WITH_CURRENT_VERSION = yes\n", projectName]]; } - (void)appendPublicHeaders:(PCMakefileFactory *)mff { NSArray *array = [projectDict objectForKey:PCPublicHeaders]; if (array == nil || [array count] == 0) { return; } [mff appendString:@"\n\n#\n# Public headers (will be installed)\n#\n"]; [mff appendString:[NSString stringWithFormat:@"%@_HEADER_FILES = ", projectName]]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { [mff appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; } } } - (void)appendGSDoc:(PCMakefileFactory *)mff { [mff appendString:@"\n#\n# AutoGSDoc\n#\n"]; [mff appendString: [NSString stringWithFormat:@"DOCUMENT_NAME = %@\n\n", projectName]]; [mff appendString: [NSString stringWithFormat:@"%@_AGSDOC_FILES = %@.gsdoc \\\n", projectName, projectName]]; [mff appendString: [NSString stringWithFormat:@"\t$(%@_HEADER_FILES) \\\n", projectName, projectName]]; [mff appendString: [NSString stringWithFormat:@"\t$(%@_OBJC_FILES) \\\n", projectName, projectName]]; [mff appendString: [NSString stringWithFormat:@"\n\n%@_AGSDOC_FLAGS += -MakeFrames YES\n", projectName]]; } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/framework.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; [mff appendString:@"\n\n#Only build documentation if doc=yes was passed on the command line\n#\n"]; [mff appendString:@"ifeq ($(doc),yes)\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/documentation.make\n"]; [mff appendString:@"endif\n"]; } @end @implementation PCFrameworkProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCFrameworkProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { [principalClassField setStringValue:[projectDict objectForKey:PCPrincipalClass]]; } - (void)setPrincipalClass:(id)sender { [self setProjectDictObject:[principalClassField stringValue] forKey:PCPrincipalClass notify:YES]; } @end apps-projectcenter-master/Modules/Projects/Framework/Resources/000077500000000000000000000000001347226342500252775ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Framework/Resources/Info.table000066400000000000000000000017741347226342500272140ustar00rootroot00000000000000{ Type = "Project"; Name = "Framework"; Description = "Project that handles GNUstep frameworks."; PrincipalClassName = "PCFrameworkProject"; ExecToolName = ""; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = YES; BrowserRootEntries = { CLASS_FILES = "Classes"; HEADER_FILES = "Headers"; OTHER_SOURCES = "Other Sources"; OTHER_RESOURCES = "Other Resources"; SUBPROJECTS = "Subprojects"; DOCU_FILES = "Documentation"; SUPPORTING_FILES = "Supporting Files"; LIBRARIES = "Libraries"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( "CLASS_FILES", "HEADER_FILES", "OTHER_SOURCES" ); ResourceFileKeys = ( "OTHER_RESOURCES", "DOCU_FILES" ); OtherFileKeys = ( "SUBPROJECTS", "SUPPORTING_FILES", "LIBRARIES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Bundle", "Tool" ); LocalizableCategories = ( OTHER_RESOURCES, DOCU_FILES ); } apps-projectcenter-master/Modules/Projects/Framework/Resources/Inspector.gorm/000077500000000000000000000000001347226342500302105ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Framework/Resources/Inspector.gorm/data.classes000066400000000000000000000005141347226342500325000ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; PCFrameworkProject = { Actions = ( ); Outlets = ( projectAttributesView, currentVersionNameField, principalClassField ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Framework/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500317750ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Framework/Resources/Inspector.gorm/objects.gorm000066400000000000000000000066411347226342500325360ustar00rootroot00000000000000GNUstep archive000f4240:0000001b:00000048:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @e  @ŒØ01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @są @rŠ  @są @rŠJ0± &0 ± %  @są @rŠ  @są @rŠJ0 ± &0 1 NSTextField1 NSControl% @ @q0 @Z @5  @Z @5J0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0±&%Principal Class:01NSFont%0±& % Helvetica A@A@&&&&&&JJ &&&&&&I’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% @[Ą @q0 @g @5  @g @5J0± &%0±0±&0±%&&&&&&JJ &&&&&&I’°°’0±% @[Ą @o@ @g @5  @g @5J0± &%0±0±&°&&&&&&JJ &&&&&&I’°°’0 ±% @ @o@ @Z @5  @Z @5J0!± &%0"±0#±& % Version Name:°&&&&&&JJ &&&&&&I’°°’0$±0%±&%Title°&&&&&&JJ&&&&&& %%0&±°0'±&% System0(±&% windowBackgroundColor0)±&%Window0*±&%Panel°* æš  @Ƈ @ĆxI0+1NSImage0,±&% NSApplicationIcon&   @ž @’Ą0-± &0.± &0/1NSMutableDictionary1 NSDictionary&00±&%Box°01±& % TextField5° 02±& % TextField° 03±&% NSOwner04±&%PCFrameworkProject05±& % Inspector°06±& % TextField1°07±& % TextField4°08±&%View° 09± &  0:1NSNibConnector°50;±&% NSOwner0<±°0°;0=±°8°;0>±°2°;0?±°6°;0@±°7°;0A±°1°;0B1NSNibOutletConnector°;°00C1NSMutableString&%projectAttributesView0D±°;°60E±&%principalClassField0F±°;°70G±&%currentVersionNameField0H±&apps-projectcenter-master/Modules/Projects/Framework/Resources/PC.project000066400000000000000000000021651347226342500271750ustar00rootroot00000000000000{ CLASS_FILES = (); COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = (); FRAMEWORKS = (); HEADER_FILES = (); HEADERS_INSTALL_DIR = ""; PUBLIC_HEADERS = (); INTERFACES = (); IMAGES = (); LANGUAGE = "English"; LIBRARIES = ("gnustep-base","gnustep-gui"); MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep/Library/Frameworks"; OBJC_COMPILEROPTIONS = ""; OTHER_RESOURCES = (); OTHER_SOURCES = (); PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description avaliable!"; PROJECT_GROUP = "No group avaliable!"; PROJECT_SUMMARY = "No summary avaliable!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Framework"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Library/000077500000000000000000000000001347226342500227745ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Library/GNUmakefile000066400000000000000000000011411347226342500250430ustar00rootroot00000000000000# # GNUmakefile - LibraryProject # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Library BUNDLE_EXTENSION = .project Library_PRINCIPAL_CLASS = PCLibProject # # Additional libraries # Library_LIBRARIES_DEPEND_UPON += # # Resource files # Library_RESOURCE_FILES= \ Resources/PC.project \ Resources/Version \ Resources/Inspector.gorm \ Resources/Info.table # # Header files # Library_HEADERS= \ PCLibProject.h # # Class files # Library_OBJC_FILES= \ PCLibProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Library/PCLibProject.h000066400000000000000000000035331347226342500254310ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2004 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCLibProject_h #define _PCLibProject_h #import #import #import #import @class PCMakefileFactory; @interface PCLibProject : PCProject { IBOutlet NSBox *projectAttributesView; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path; @end @interface PCLibProject (GeneratedFiles) - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendPublicHeaders:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCLibProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Modules/Projects/Library/PCLibProject.m000066400000000000000000000237551347226342500254460ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2013 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import #import "PCLibProject.h" @implementation PCLibProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCClasses, PCHeaders, PCOtherSources, PCOtherResources, PCSubprojects, PCDocuFiles, PCSupportingFiles, PCLibraries, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Classes", @"Headers", @"Other Sources", @"Other Resources", @"Subprojects", @"Documentation", @"Supporting Files", @"Libraries", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)dealloc { [rootCategories release]; [rootKeys release]; [rootEntries release]; [super dealloc]; } //---------------------------------------------------------------------------- // --- PCProject overridings //---------------------------------------------------------------------------- - (Class)builderClass { return [PCLibProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path { PCFileManager *pcfm = [PCFileManager defaultManager]; PCFileCreator *pcfc = [PCFileCreator sharedCreator]; NSBundle *projectBundle = nil; NSString *_file = nil; NSString *_2file = nil; NSString *_resourcePath = nil; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // Copy the project files to the provided path // $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@", projectName]; _2file = [NSString stringWithFormat:@"%@.m", projectName]; [pcfc createFileOfType:ObjCClass path:[path stringByAppendingPathComponent:_file] project:self]; [projectDict setObject:[NSArray arrayWithObjects:_2file,nil] forKey:PCClasses]; // $PROJECTNAME$.h already created by creating $PROJECTNAME$.m _file = [NSString stringWithFormat:@"%@.h", projectName]; [projectDict setObject:[NSArray arrayWithObjects:_file,nil] forKey:PCHeaders]; [projectDict setObject:[NSArray arrayWithObjects:_file,nil] forKey:PCPublicHeaders]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Resources _resourcePath = [path stringByAppendingPathComponent:@"Resources"]; _file = [projectBundle pathForResource:@"Version" ofType:@""]; _2file = [_resourcePath stringByAppendingPathComponent:@"Version"]; [pcfm copyFile:_file toFile:_2file]; // Save the project to disc [self writeMakefile]; [self save]; return self; } // ---------------------------------------------------------------------------- // --- File Handling // ---------------------------------------------------------------------------- - (void)addFiles:(NSArray *)files forKey:(NSString *)type notify:(BOOL)yn { if ([type isEqualToString:PCHeaders]) { [super addFiles:files forKey:PCPublicHeaders notify:NO]; } [super addFiles:files forKey:type notify:YES]; } - (BOOL)renameFile:(NSString *)fromFile toFile:(NSString *)toFile { NSString *category = [projectBrowser nameOfSelectedCategory]; BOOL success = NO; BOOL isPublicHeader = YES; isPublicHeader = [[projectDict objectForKey:PCPublicHeaders] containsObject:fromFile]; success = [super renameFile:fromFile toFile:toFile]; if (success && [category isEqualToString:[super categoryForKey:PCHeaders]]) { if (isPublicHeader == NO) { [self setHeaderFile:toFile public:NO]; } } return success; } @end @implementation PCLibProject (GeneratedFiles) - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Libraries depend upon [mf appendLibraries:[projectDict objectForKey:PCLibraries]]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; // Gather all resource files into one array for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Sources [self appendPublicHeaders:mf]; [mf appendClasses:[projectDict objectForKey:PCClasses] forTarget:[NSString stringWithFormat:@"%@",projectName]]; [mf appendOtherSources:[projectDict objectForKey:PCOtherSources] forTarget:[NSString stringWithFormat:@"%@",projectName]]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { [mff appendString:@"\n#\n# Library\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString:[NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"LIBRARY_VAR = %@\n", [projectName uppercaseString]]]; [mff appendString:[NSString stringWithFormat:@"LIBRARY_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"%@_HEADER_FILES_DIR = %@\n", projectName,@"."]]; [mff appendString:[NSString stringWithFormat: @"%@_HEADER_FILES_INSTALL_DIR = /%@\n", projectName, projectName]]; } - (void)appendPublicHeaders:(PCMakefileFactory *)mff { NSArray *array = [projectDict objectForKey:PCPublicHeaders]; if ([array count] == 0) { return; } [mff appendString:@"\n\n#\n# Public headers (will be installed)\n#\n"]; [mff appendString:[NSString stringWithFormat:@"%@_HEADER_FILES = ", projectName]]; if (array && [array count]) { NSString *tmp; NSEnumerator *enumerator = [array objectEnumerator]; while ((tmp = [enumerator nextObject])) { [mff appendString:[NSString stringWithFormat:@"\\\n%@ ",tmp]]; } } } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/library.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end @implementation PCLibProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCLibraryProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { } @end apps-projectcenter-master/Modules/Projects/Library/Resources/000077500000000000000000000000001347226342500247465ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Library/Resources/Info.table000066400000000000000000000017631347226342500266610ustar00rootroot00000000000000{ Type = "Project"; Name = "Library"; Description = "Project that handles GNUstep libraries."; PrincipalClassName = "PCLibProject"; ExecToolName = ""; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = YES; BrowserRootEntries = { CLASS_FILES = "Classes"; HEADER_FILES = "Headers"; OTHER_SOURCES = "Other Sources"; OTHER_RESOURCES = "Other Resources"; SUBPROJECTS = "Subprojects"; DOCU_FILES = "Documentation"; SUPPORTING_FILES = "Supporting Files"; LIBRARIES = "Libraries"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( "CLASS_FILES", "HEADER_FILES", "OTHER_SOURCES" ); ResourceFileKeys = ( "OTHER_RESOURCES", "DOCU_FILES" ); OtherFileKeys = ( "SUBPROJECTS", "SUPPORTING_FILES", "LIBRARIES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Bundle", "Tool" ); LocalizableCategories = ( OTHER_RESOURCES, DOCU_FILES ); } apps-projectcenter-master/Modules/Projects/Library/Resources/Inspector.gorm/000077500000000000000000000000001347226342500276575ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Library/Resources/Inspector.gorm/data.classes000066400000000000000000000004221347226342500321450ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; PCLibraryProject = { Actions = ( ); Outlets = ( projectAttributesView ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Library/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500314440ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Library/Resources/Inspector.gorm/objects.gorm000066400000000000000000000034441347226342500322030ustar00rootroot00000000000000GNUstep archive000f4240:00000017:00000025:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @s` @‹°01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @są @rŠ  @są @rŠJ0± &0 ± %  @są @rŠ  @są @rŠJ0 ± &0 1NSCell0 ±&%Title0 1NSFont%&&&&&&JJ&&&&&& %%01NSColor0±&% NSNamedColorSpace0±&% System0±&% windowBackgroundColor0±&%Window0±&%Panel° æš  @Ƈ @ĆxI01NSImage0±&% NSApplicationIcon&   @ž @’Ą0± &0± &01NSMutableDictionary1 NSDictionary&0±&%Box°0±&% NSOwner0±&%PCLibraryProject0±& % Inspector°0±&%View° 0± &01NSNibConnector°0 ±&% NSOwner0!±°° 0"±°° 0#1NSNibOutletConnector° °0$1NSMutableString&%projectAttributesView0%±&apps-projectcenter-master/Modules/Projects/Library/Resources/PC.project000066400000000000000000000021751347226342500266450ustar00rootroot00000000000000{ CLASS_FILES = (); COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = (); FRAMEWORKS = (); HEADER_FILES = (); HEADERS_INSTALL_DIR = ""; PUBLIC_HEADERS = (); LANGUAGE = "English"; USER_LANGUAGES = (); LIBRARIES = ("gnustep-base","gnustep-gui"); LOCALIZED_RESOURCES = (); MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep/Library/Libraries"; OBJC_COMPILEROPTIONS = ""; OTHER_RESOURCES = ("Version"); OTHER_SOURCES = (); PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description available!"; PROJECT_GROUP = "No group available!"; PROJECT_SUMMARY = "No summary available!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Library"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Library/Resources/Version000066400000000000000000000006111347226342500263140ustar00rootroot00000000000000# This file is included in various Makefile's to get version information. # Compatible with Bourne shell syntax, so it can included there too. # The gcc version required to compile the library. GCC_VERSION=2.95.3 # The version number of this release. MAJOR_VERSION=0 MINOR_VERSION=0 SUBMINOR_VERSION=1 LIB_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${SUBMINOR_VERSION} VERSION=${LIB_VERSION} apps-projectcenter-master/Modules/Projects/ResourceSet/000077500000000000000000000000001347226342500236335ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/ResourceSet/GNUmakefile000066400000000000000000000012071347226342500257050ustar00rootroot00000000000000# # GNUmakefile - Aggregate.project # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = ResourceSet BUNDLE_EXTENSION = .project ResourceSet_PRINCIPAL_CLASS = PCResourceSetProject # # Additional libraries # ResourceSet_LIBRARIES_DEPEND_UPON += # # Resource files # ResourceSet_RESOURCE_FILES= \ Resources/PC.project \ Resources/Inspector.gorm \ Resources/Info.table # # Header files # ResourceSet_HEADERS= \ PCResourceSetProject.h # # Class files # ResourceSet_OBJC_FILES= \ PCResourceSetProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/ResourceSet/PCResourceSetProject.h000066400000000000000000000036011347226342500300210ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2017 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCResourceSetProject_h #define _PCResourceSetProject_h #import #import #import #import @class PCMakefileFactory; @interface PCResourceSetProject : PCProject { IBOutlet NSBox *projectAttributesView; NSMutableDictionary *infoDict; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:projOption; @end @interface PCResourceSetProject (GeneratedFiles) - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCResourceSetProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Modules/Projects/ResourceSet/PCResourceSetProject.m000066400000000000000000000144431347226342500300340ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2004-2017 Free Software Foundation Authors: Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import "PCResourceSetProject.h" @implementation PCResourceSetProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCOtherResources, PCSupportingFiles, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Other Resources", @"Supporting Files", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)dealloc { [rootCategories release]; [rootKeys release]; [rootEntries release]; if (projectAttributesView) [projectAttributesView release]; [super dealloc]; } //---------------------------------------------------------------------------- // --- PCProject overridings //---------------------------------------------------------------------------- - (Class)builderClass { return [PCResourceSetProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:projOption { NSBundle *projectBundle = nil; NSString *_file = nil; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; // Save the project to disc [self writeMakefile]; [self save]; return self; } @end @implementation PCResourceSetProject (GeneratedFiles) - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; NSLog(@" write makefile!"); // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; // Gather all resource files into one array for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { [mff appendString:@"\n#\n# Resource Set\n#\n"]; [mff appendString:[NSString stringWithFormat:@"RESOURCE_SET_NAME = %@\n", projectName]]; // updated variable and path as suggested by makefile migration // TODO: perhaps paths hould be created with system path separator [mff appendString: [NSString stringWithFormat:@"%@_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/%@\n",projectName, projectName]]; } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/resource-set.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end @implementation PCResourceSetProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCLibraryProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { } @end apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/000077500000000000000000000000001347226342500256055ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/Info.table000066400000000000000000000013561347226342500275160ustar00rootroot00000000000000{ Type = "Project"; Name = "Resource Set"; Description = "Project that handles GNUstep resources."; PrincipalClassName = "PCResourceSetProject"; ExecToolName = ""; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = NO; BrowserRootEntries = { OTHER_RESOURCES = "Other Resources"; SUPPORTING_FILES = "Supporting Files"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = (); ResourceFileKeys = ( "OTHER_RESOURCES" ); OtherFileKeys = ( "SUPPORTING_FILES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Application", "Bundle", "Library", "Framework", "Tool" ); LocalizableCategories = ( OTHER_RESOURCES ); } apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/Inspector.gorm/000077500000000000000000000000001347226342500305165ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/Inspector.gorm/data.classes000066400000000000000000000004171347226342500330100ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; PCToolProject = { Actions = ( ); Outlets = ( projectAttributesView ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500323030ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/ResourceSet/Resources/Inspector.gorm/objects.gorm000066400000000000000000000034411347226342500330370ustar00rootroot00000000000000GNUstep archive000f4240:00000017:00000025:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @ @‹ 01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @są @rŠ  @są @rŠJ0± &0 ± %  @są @rŠ  @są @rŠJ0 ± &0 1NSCell0 ±&%Title0 1NSFont%&&&&&&JJ&&&&&& %%01NSColor0±&% NSNamedColorSpace0±&% System0±&% windowBackgroundColor0±&%Window0±&%Panel° æš  @Ƈ @ĆxI01NSImage0±&% NSApplicationIcon&   @ž @’Ą0± &0± &01NSMutableDictionary1 NSDictionary&0±&%Box°0±&% NSOwner0±& % PCToolProject0±& % Inspector°0±&%View° 0± &01NSNibConnector°0 ±&% NSOwner0!±°° 0"±°° 0#1NSNibOutletConnector° °0$1NSMutableString&%projectAttributesView0%±&apps-projectcenter-master/Modules/Projects/ResourceSet/Resources/PC.project000066400000000000000000000015001347226342500274730ustar00rootroot00000000000000{ COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; LANGUAGE = "English"; MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep"; OBJC_COMPILEROPTIONS = ""; PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description avaliable!"; PROJECT_GROUP = "No group available!"; PROJECT_SUMMARY = "No summary available!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Resource Set"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); } apps-projectcenter-master/Modules/Projects/Tool/000077500000000000000000000000001347226342500223055ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Tool/GNUmakefile000066400000000000000000000011501347226342500243540ustar00rootroot00000000000000# # GNUmakefile - ToolProject # PACKAGE_NAME = ProjectCenter include $(GNUSTEP_MAKEFILES)/common.make # # Bundle # BUNDLE_NAME = Tool BUNDLE_EXTENSION = .project Tool_PRINCIPAL_CLASS = PCToolProject # # Additional libraries # Tool_LIBRARIES_DEPEND_UPON += # # Resource files # Tool_RESOURCE_FILES= \ Resources/PC.project \ Resources/main.m \ Resources/Inspector.gorm \ Resources/Info.table \ Resources/Info.gnustep # # Header files # Tool_HEADERS= \ PCToolProject.h # # Class files # Tool_OBJC_FILES= \ PCToolProject.m include ../../GNUmakefile.bundles include $(GNUSTEP_MAKEFILES)/bundle.make apps-projectcenter-master/Modules/Projects/Tool/PCToolProject.h000066400000000000000000000044021347226342500251450ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola Description: This is the project type 'Tool' for GNUstep. You never should create it yourself but use PCToolProj for doing this. Otherwise needed files don't get copied to the right place. This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #ifndef _PCToolProject_h #define _PCToolProject_h #import #import #import #import @class PCMakefileFactory; @interface PCToolProject : PCProject { IBOutlet NSBox *projectAttributesView; NSMutableDictionary *infoDict; } //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init; - (void)assignInfoDict:(NSMutableDictionary *)dict; - (void)loadInfoFile; - (void)dealloc; - (PCProject *)createProjectAt:(NSString *)path withOption:(NSString *)option; @end @interface PCToolProject (GeneratedFiles) - (void)writeInfoEntry:(NSString *)name forKey:(NSString *)key; - (BOOL)writeInfoFile; - (BOOL)writeMakefile; - (void)appendHead:(PCMakefileFactory *)mff; - (void)appendTail:(PCMakefileFactory *)mff; @end @interface PCToolProject (Inspector) - (NSView *)projectAttributesView; - (void)updateInspectorValues:(NSNotification *)aNotif; @end #endif apps-projectcenter-master/Modules/Projects/Tool/PCToolProject.m000066400000000000000000000267761347226342500251740ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2017 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan Riccardo Mottola This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import "PCToolProject.h" @implementation PCToolProject //---------------------------------------------------------------------------- // Init and free //---------------------------------------------------------------------------- - (id)init { if ((self = [super init])) { rootKeys = [[NSArray arrayWithObjects: PCClasses, PCHeaders, PCOtherSources, PCImages, PCOtherResources, PCSubprojects, PCDocuFiles, PCSupportingFiles, PCLibraries, PCNonProject, nil] retain]; rootCategories = [[NSArray arrayWithObjects: @"Classes", @"Headers", @"Other Sources", @"Images", @"Other Resources", @"Subprojects", @"Documentation", @"Supporting Files", @"Libraries", @"Non Project Files", nil] retain]; rootEntries = [[NSDictionary dictionaryWithObjects:rootCategories forKeys:rootKeys] retain]; } return self; } - (void)assignInfoDict:(NSMutableDictionary *)dict { infoDict = [dict mutableCopy]; } - (void)loadInfoFile { PCFileManager *pcfm = [PCFileManager defaultManager]; NSMutableArray *otherRes = nil; NSString *oldFile = @"Info-gnustep.plist"; NSString *oldFilePath = nil; NSString *infoFile = nil; NSString *infoFilePath = nil; infoFile = [NSString stringWithFormat:@"%@Info.plist",projectName]; infoFilePath = [projectPath stringByAppendingPathComponent:infoFile]; // Old project with info file Info-gnustep.plist located in Resources // directory. Move it to parent directory and replace it in PCOtherResources. otherRes = [[projectDict objectForKey:PCOtherResources] mutableCopy]; if ([otherRes containsObject:oldFile]) { oldFilePath = [self dirForCategoryKey:PCOtherResources]; oldFilePath = [oldFilePath stringByAppendingPathComponent:oldFile]; [pcfm copyFile:oldFilePath toFile:infoFilePath]; [pcfm removeFileAtPath:oldFilePath removeDirsIfEmpty:YES]; [otherRes removeObject:oldFile]; [otherRes addObject:infoFile]; [self setProjectDictObject:otherRes forKey:PCSupportingFiles notify:NO]; RELEASE(otherRes); } if ([[NSFileManager defaultManager] fileExistsAtPath:infoFilePath]) { infoDict = [[NSMutableDictionary alloc] initWithContentsOfFile:infoFilePath]; } else { infoDict = [[NSMutableDictionary alloc] init]; } } - (void)dealloc { [rootCategories release]; [rootKeys release]; [rootEntries release]; [super dealloc]; } - (Class)builderClass { return [PCToolProject class]; } // ---------------------------------------------------------------------------- // --- ProjectType protocol // ---------------------------------------------------------------------------- - (PCProject *)createProjectAt:(NSString *)path withOption:(NSString *)option { PCFileManager *pcfm = [PCFileManager defaultManager]; PCFileCreator *pcfc = [PCFileCreator sharedCreator]; NSBundle *projectBundle = nil; NSString *_file = nil; NSString *_2file = nil; NSString *_resourcePath; NSMutableArray *_array = nil; NSAssert(path,@"No valid project path provided!"); projectBundle = [NSBundle bundleForClass:[self class]]; _file = [projectBundle pathForResource:@"PC" ofType:@"project"]; [projectDict initWithContentsOfFile:_file]; // Customise the project [self setProjectPath:path]; [self setProjectName:[path lastPathComponent]]; if ([[projectName pathExtension] isEqualToString:@"subproj"]) { projectName = [projectName stringByDeletingPathExtension]; } [projectDict setObject:projectName forKey:PCProjectName]; [projectDict setObject:[[NSCalendarDate date] description] forKey:PCCreationDate]; [projectDict setObject:NSFullUserName() forKey:PCProjectCreator]; [projectDict setObject:NSFullUserName() forKey:PCProjectMaintainer]; [projectDict setObject:[NSUserDefaults userLanguages] forKey:PCUserLanguages]; // Copy the project files to the provided path _file = [projectBundle pathForResource:@"main" ofType:@"m"]; _2file = [path stringByAppendingPathComponent:@"main.m"]; [pcfm copyFile:_file toFile:_2file]; [pcfc replaceTagsInFileAtPath:_2file withProject:self]; // GNUmakefile.postamble [[PCMakefileFactory sharedFactory] createPostambleForProject:self]; _resourcePath = [path stringByAppendingPathComponent:@"Resources"]; [pcfm createDirectoriesIfNeededAtPath:_resourcePath]; // Info-gnutstep.plist _file = [projectBundle pathForResource:@"Info" ofType:@"gnustep"]; infoDict = [[NSMutableDictionary alloc] initWithContentsOfFile:_file]; [infoDict setObject:projectName forKey:@"ToolName"]; // Write to ProjectNameInfo.plist _file = [NSString stringWithFormat:@"%@Info.plist",projectName]; _2file = [projectPath stringByAppendingPathComponent:_file]; [infoDict writeToFile:_2file atomically:YES]; // Add Info-gnustep.plist into SUPPORTING_FILES _array = [[projectDict objectForKey:PCSupportingFiles] mutableCopy]; [_array addObject:_file]; [projectDict setObject:_array forKey:PCSupportingFiles]; RELEASE(_array); // Save the project to disc [self writeMakefile]; [self save]; return self; } //---------------------------------------------------------------------------- // --- PCProject overridings //---------------------------------------------------------------------------- - (PCProject *)openWithWrapperAt:(NSString *)path { [super openWithWrapperAt: path]; [self loadInfoFile]; return self; } @end @implementation PCToolProject (GeneratedFiles) - (void)writeInfoEntry:(NSString *)name forKey:(NSString *)key { id entry = [projectDict objectForKey:key]; if (entry == nil) { return; } if ([entry isKindOfClass:[NSString class]] && [entry isEqualToString:@""]) { [infoDict removeObjectForKey:name]; return; } if ([entry isKindOfClass:[NSArray class]] && [entry count] <= 0) { [infoDict removeObjectForKey:name]; return; } [infoDict setObject:entry forKey:name]; } - (BOOL)writeInfoFile { NSString *infoFile = nil; [self writeInfoEntry:@"ToolName" forKey:PCProjectName]; [self writeInfoEntry:@"ToolDescription" forKey:PCDescription]; [self writeInfoEntry:@"ToolIcon" forKey:PCToolIcon]; [self writeInfoEntry:@"ToolRelease" forKey:PCRelease]; [self writeInfoEntry:@"FullVersionID" forKey:PCRelease]; [self writeInfoEntry:@"Authors" forKey:PCAuthors]; [self writeInfoEntry:@"URL" forKey:PCURL]; [self writeInfoEntry:@"Copyright" forKey:PCCopyright]; [self writeInfoEntry:@"CopyrightDescription" forKey:PCCopyrightDescription]; infoFile = [NSString stringWithFormat:@"%@Info.plist",projectName]; infoFile = [projectPath stringByAppendingPathComponent:infoFile]; return [infoDict writeToFile:infoFile atomically:YES]; } - (BOOL)writeMakefile { PCMakefileFactory *mf = [PCMakefileFactory sharedFactory]; NSUInteger i,count; NSString *mfl = nil; NSData *mfd = nil; NSString *key = nil; NSMutableArray *resources = nil; NSArray *localizedResources = nil; // Info-gnustep.plist [self writeInfoFile]; // Save the GNUmakefile backup [super writeMakefile]; // Save GNUmakefile.preamble [mf createPreambleForProject:self]; // Create the new file [mf createMakefileForProject:self]; // Head [self appendHead:mf]; // Libraries depend upon [mf appendLibraries:[projectDict objectForKey:PCLibraries]]; // Subprojects if ([[projectDict objectForKey:PCSubprojects] count] > 0) { [mf appendSubprojects:[projectDict objectForKey:PCSubprojects]]; } // Resources count = [[self resourceFileKeys] count]; resources = [[NSMutableArray alloc] initWithCapacity:1]; for (i = 0; i < count; i++) { key = [[self resourceFileKeys] objectAtIndex:i]; [resources addObjectsFromArray:[projectDict objectForKey:key]]; } // Remove localized resource files from gathered array localizedResources = [projectDict objectForKey:PCLocalizedResources]; for (i = [resources count]; i > 0; i--) { if ([localizedResources containsObject:[resources objectAtIndex:i-1]]) { [resources removeObjectAtIndex:i-1]; } } [mf appendResources:resources inDir:@"Resources"]; [resources release]; // Localization [mf appendLocalizedResources:localizedResources forLanguages:[projectDict objectForKey:PCUserLanguages]]; // Sources [mf appendHeaders:[projectDict objectForKey:PCHeaders]]; [mf appendClasses:[projectDict objectForKey:PCClasses]]; [mf appendOtherSources:[projectDict objectForKey:PCOtherSources]]; // Tail [self appendTail:mf]; // Write the new file to disc! mfl = [projectPath stringByAppendingPathComponent:@"GNUmakefile"]; if ((mfd = [mf encodedMakefile])) { if ([mfd writeToFile:mfl atomically:YES]) { return YES; } } return NO; } - (void)appendHead:(PCMakefileFactory *)mff { NSString *installDomain = [projectDict objectForKey:PCInstallDomain]; [mff appendString:@"\n#\n# Tool\n#\n"]; [mff appendString:[NSString stringWithFormat:@"VERSION = %@\n", [projectDict objectForKey:PCRelease]]]; [mff appendString:[NSString stringWithFormat:@"PACKAGE_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"TOOL_NAME = %@\n", projectName]]; [mff appendString:[NSString stringWithFormat:@"%@_TOOL_ICON = %@\n", projectName, [projectDict objectForKey:PCToolIcon]]]; /* FIXME %@_COPY_INTO_DIR needs to be properly reinstantiated as well as %@_STANDARD_INSTALL = no */ /* set the domain if it was specified */ if (!(installDomain == nil) && ![installDomain isEqualToString:@""]) { [mff appendString: [NSString stringWithFormat:@"GNUSTEP_INSTALLATION_DOMAIN = %@\n",[installDomain uppercaseString]]]; } } - (void)appendTail:(PCMakefileFactory *)mff { [mff appendString:@"\n\n#\n# Makefiles\n#\n"]; [mff appendString:@"-include GNUmakefile.preamble\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/aggregate.make\n"]; [mff appendString:@"include $(GNUSTEP_MAKEFILES)/tool.make\n"]; [mff appendString:@"-include GNUmakefile.postamble\n"]; } @end @implementation PCToolProject (Inspector) - (NSView *)projectAttributesView { if (projectAttributesView == nil) { if ([NSBundle loadNibNamed:@"Inspector" owner:self] == NO) { NSLog(@"PCLibraryProject: error loading Inspector NIB!"); return nil; } [projectAttributesView retain]; [self updateInspectorValues:nil]; } return projectAttributesView; } - (void)updateInspectorValues:(NSNotification *)aNotif { } @end apps-projectcenter-master/Modules/Projects/Tool/Resources/000077500000000000000000000000001347226342500242575ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Tool/Resources/Info.gnustep000066400000000000000000000004701347226342500265620ustar00rootroot00000000000000{ "!" = "Generated by ProjectCenter, do not edit"; ToolDescription = "No description avaliable!"; ToolName = ""; ToolIcon = ""; ToolRelease = 0.1; FullVersionID = 0.1; Authors = (); URL = ""; Copyright = "Copyright (C) 200x"; CopyrightDescription = "Released under ..."; }apps-projectcenter-master/Modules/Projects/Tool/Resources/Info.table000066400000000000000000000021161347226342500261630ustar00rootroot00000000000000{ Type = "Project"; Name = "Tool"; Description = "Project that handles GNUstep tools."; PrincipalClassName = "PCToolProject"; ExecToolName = "opentool"; Executable = YES; BuildTargets = ("all","install","uninstall","clean","distclean","dist"); CanHavePublicHeaders = NO; BrowserRootEntries = { CLASS_FILES = "Classes"; HEADER_FILES = "Headers"; OTHER_SOURCES = "Other Sources"; IMAGES = "Images"; OTHER_RESOURCES = "Other Resources"; SUBPROJECTS = "Subprojects"; DOCU_FILES = "Documentation"; SUPPORTING_FILES = "Supporting Files"; LIBRARIES = "Libraries"; NON_PROJECT_FILES = "Non Project Files"; }; SourceFileKeys = ( "CLASS_FILES", "HEADER_FILES", "OTHER_SOURCES", ); ResourceFileKeys = ( "IMAGES", "OTHER_RESOURCES", "DOCU_FILES" ); OtherFileKeys = ( "SUBPROJECTS", "SUPPORTING_FILES", "LIBRARIES", "NON_PROJECT_FILES" ); AllowableSubprojectTypes = ( "Bundle", "Library", "Framework" ); LocalizableCategories = ( IMAGES, OTHER_RESOURCES, DOCU_FILES ); } apps-projectcenter-master/Modules/Projects/Tool/Resources/Inspector.gorm/000077500000000000000000000000001347226342500271705ustar00rootroot00000000000000apps-projectcenter-master/Modules/Projects/Tool/Resources/Inspector.gorm/data.classes000066400000000000000000000004171347226342500314620ustar00rootroot00000000000000{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:" ); Super = NSObject; }; PCToolProject = { Actions = ( ); Outlets = ( projectAttributesView ); Super = NSObject; }; }apps-projectcenter-master/Modules/Projects/Tool/Resources/Inspector.gorm/data.info000066400000000000000000000002701347226342500307550ustar00rootroot00000000000000GNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed Streamapps-projectcenter-master/Modules/Projects/Tool/Resources/Inspector.gorm/objects.gorm000066400000000000000000000034411347226342500315110ustar00rootroot00000000000000GNUstep archive000f4240:00000017:00000025:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?š @" @są @~€J I @m  @‹€01 NSView% ?š @" @są @~€  @są @~€J01 NSMutableArray1 NSArray&01NSBox%  @są @rŠ  @są @rŠJ0± &0 ± %  @są @rŠ  @są @rŠJ0 ± &0 1NSCell0 ±&%Title0 1NSFont%&&&&&&JJ&&&&&& %%01NSColor0±&% NSNamedColorSpace0±&% System0±&% windowBackgroundColor0±&%Window0±&%Panel° æš  @Ƈ @ĆxI01NSImage0±&% NSApplicationIcon&   @ž @’Ą0± &0± &01NSMutableDictionary1 NSDictionary&0±&%Box°0±&% NSOwner0±& % PCToolProject0±& % Inspector°0±&%View° 0± &01NSNibConnector°0 ±&% NSOwner0!±°° 0"±°° 0#1NSNibOutletConnector° °0$1NSMutableString&%projectAttributesView0%±&apps-projectcenter-master/Modules/Projects/Tool/Resources/PC.project000066400000000000000000000021251347226342500261510ustar00rootroot00000000000000{ CLASS_FILES = (); COMPILEROPTIONS = ""; CPPOPTIONS = ""; LINKEROPTIONS = ""; CREATION_DATE = ""; DOCU_FILES = (); FRAMEWORKS = (); HEADER_FILES = (); IMAGES = (); LANGUAGE = "English"; USER_LANGUAGES = (); LIBRARIES = ("gnustep-base"); LOCALIZED_RESOURCES = (); MAKEFILEDIR = "$(GNUSTEP_MAKEFILES)"; INSTALLDIR = "$(HOME)/GNUstep/Tools"; OBJC_COMPILEROPTIONS = ""; OTHER_RESOURCES = ("Version"); OTHER_SOURCES = ("main.m"); PROJECT_AUTHORS = (); PROJECT_CREATOR = ""; PROJECT_DESCRIPTION = "No description available!"; PROJECT_GROUP = "No group available!"; PROJECT_SUMMARY = "No summary available!"; PROJECT_RELEASE = "0.1"; PROJECT_COPYRIGHT = "Copyright (C) 200x"; PROJECT_COPYRIGHT_DESC = "Released under ..."; PROJECT_MAINTAINER = ""; PROJECT_NAME = ""; PROJECT_TYPE = "Tool"; PROJECT_URL = ""; SEARCH_HEADER_DIRS = (); SEARCH_LIB_DIRS = (); SUBPROJECTS = (); SUPPORTING_FILES = ("GNUmakefile.preamble", "GNUmakefile", "GNUmakefile.postamble"); TOOLICON = ""; } apps-projectcenter-master/Modules/Projects/Tool/Resources/main.m000066400000000000000000000004431347226342500253620ustar00rootroot00000000000000/* Project: $PROJECTNAME$ Author: $FULLUSERNAME$ Created: $DATE$ by $USERNAME$ */ #import int main(int argc, const char *argv[]) { id pool = [[NSAutoreleasePool alloc] init]; // Your code here... // The end... [pool release]; return 0; } apps-projectcenter-master/PCAppController.m000066400000000000000000000165171347226342500213660ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2013 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import "PCAppController.h" #import "PCMenuController.h" #import "PCInfoController.h" #import "PCPrefController.h" #import "Modules/Preferences/Build/PCBuildPrefs.h" #import "Modules/Preferences/Saving/PCSavingPrefs.h" #import "Modules/Preferences/Misc/PCMiscPrefs.h" #import @implementation PCAppController //============================================================================ //==== Intialization & deallocation //============================================================================ + (void)initialize { } - (id)init { if ((self = [super init])) { infoController = [[PCInfoController alloc] init]; // Termporary workaround to initialize defaults values prefController = [PCPrefController sharedPCPreferences]; logController = [PCLogController sharedLogController]; // It's our entry point to Framework projectManager = [[PCProjectManager alloc] init]; [projectManager setDelegate:self]; [projectManager setPrefController:prefController]; } return self; } - (void)dealloc { [super dealloc]; } - (void)awakeFromNib { [menuController setAppController:self]; [menuController setProjectManager:projectManager]; } //============================================================================ //==== Accessory methods //============================================================================ - (PCProjectManager *)projectManager { return projectManager; } - (PCMenuController *)menuController { return menuController; } - (PCInfoController *)infoController { return infoController; } - (PCPrefController *)prefController { return prefController; } - (PCLogController *)logController { return logController; } //============================================================================ //==== Misc... //============================================================================ - (BOOL)application:(NSApplication *)application openFile:(NSString *)fileName { [NSApp activateIgnoringOtherApps:YES]; if (![fileName isAbsolutePath]) { NSString *cwd = [[NSFileManager defaultManager] currentDirectoryPath]; fileName = [cwd stringByAppendingPathComponent: fileName]; } if ([[fileName pathExtension] isEqualToString:@"pcproj"] == YES || [[fileName pathExtension] isEqualToString:@"project"] == YES) { [projectManager openProjectAt: fileName makeActive: YES]; [[[projectManager activeProject] projectWindow] makeKeyAndOrderFront:self]; } else { [projectManager openFileAtPath:fileName]; } return YES; } - (void)applicationWillFinishLaunching:(NSNotification *)notification { } - (void)applicationDidFinishLaunching:(NSNotification *)notification { // NSString *connectionName = [NSString stringWithFormat:@"ProjectCenter"]; if ([prefController boolForKey:DisplayLog]) { [logController showPanel]; } [logController logMessage:NSLocalizedString(@"Loading additional subsystems...", @"When loaded additional bundles") withTag:INFO sender:self]; [[NSNotificationCenter defaultCenter] postNotificationName:PCAppDidInitNotification object:nil]; if (NSInterfaceStyleForKey(@"NSMenuInterfaceStyle", nil) == NSWindows95InterfaceStyle) { NSFileManager *fm = [NSFileManager defaultManager]; NSString *path = [NSHomeDirectory() stringByAppendingPathComponent: @"PCExample"]; if ([fm fileExistsAtPath: path]) { [projectManager openProjectAt: path makeActive: YES]; } else { PCProject *project; project = [projectManager createProjectOfType: @"Application" path: [NSHomeDirectory() stringByAppendingPathComponent: @"PCExample"]]; [[projectManager loadedProjects] setObject: project forKey: [project projectPath]]; [projectManager setActiveProject:project]; [[project projectWindow] orderFront: self]; } } } - (NSApplicationTerminateReply)applicationShouldTerminate:(id)sender { NSApplicationTerminateReply quit = NSTerminateNow; if ([prefController boolForKey:PromptOnQuit] && NSInterfaceStyleForKey(@"NSMenuInterfaceStyle", nil) != NSWindows95InterfaceStyle) { if (NSRunAlertPanel(@"Quit", @"Do you really want to quit ProjectCenter?", @"Cancel", @"Quit", nil)) { return NSTerminateLater; } } // Save projects unconditionally if preferences tells that if ([prefController boolForKey:SaveOnQuit]) { if(![projectManager saveAllProjects]) quit = NSTerminateLater; } // Close ProjectManager (projects, editors, etc.) if ((quit == NO) || ([projectManager close] == NO)) { return NSTerminateLater; } [[NSNotificationCenter defaultCenter] postNotificationName:PCAppWillTerminateNotification object:nil]; return NSTerminateNow; } - (void)applicationWillTerminate:(NSNotification *)notification { NSFileManager *fm; PCFileManager *pcfm; NSString *rootBuildDir; NSArray *rootBuildDirList; NSEnumerator *enumerator; NSString *buildItem; #ifdef DEBUG NSLog(@"--- Application WILL terminate"); #endif if ([prefController boolForKey:DeleteCacheWhenQuitting]) { fm = [NSFileManager defaultManager]; pcfm = [PCFileManager defaultManager]; rootBuildDir = [prefController stringForKey:RootBuildDirectory]; rootBuildDirList = [fm directoryContentsAtPath:rootBuildDir]; enumerator = [rootBuildDirList objectEnumerator]; while ((buildItem = [enumerator nextObject])) { if([[buildItem pathExtension] isEqualToString:@"build"]) { NSLog(@"Remove build directory %@/%@", rootBuildDir, buildItem); [pcfm removeFile:buildItem fromDirectory:rootBuildDir removeDirsIfEmpty:YES]; } } } //--- Cleanup if (doConnection) { [doConnection invalidate]; RELEASE(doConnection); } if (NSInterfaceStyleForKey(@"NSMenuInterfaceStyle", nil) == NSWindows95InterfaceStyle) { NSFileManager *fm = [NSFileManager defaultManager]; NSString *path = [NSHomeDirectory() stringByAppendingPathComponent: @"PCExample"]; if ([fm fileExistsAtPath: path]) { [fm removeFileAtPath: path handler: nil]; } } RELEASE(infoController); RELEASE(prefController); RELEASE(logController); RELEASE(menuController); RELEASE(projectManager); #ifdef DEBUG NSLog (@"--- Application WILL terminate.END"); #endif } @end apps-projectcenter-master/PCFindController.m000066400000000000000000000017321347226342500215170ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org Copyright (C) 2001 Free Software Foundation Authors: Philippe C.D. Robert Serg Stoyan This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import "PCFindController.h" @implementation PCFindController @end apps-projectcenter-master/PCInfoController.m000066400000000000000000000040271347226342500215320ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import "PCInfoController.h" @implementation PCInfoController - (id)init { if ((self = [super init])) { NSString *file; file = [[NSBundle mainBundle] pathForResource:@"Info-gnustep" ofType:@"plist"]; infoDict = [NSDictionary dictionaryWithContentsOfFile:file]; RETAIN(infoDict); } return self; } - (void)dealloc { RELEASE(infoDict); if (infoWindow) { RELEASE(infoWindow); } [super dealloc]; } - (void)showInfoWindow:(id)sender { if ([NSBundle loadNibNamed:@"Info" owner:self] == NO) { // PCLogError(self, @"error loading Menu NIB file!"); return; } [infoWindow makeKeyAndOrderFront:self]; [versionField setStringValue:[NSString stringWithFormat:@"Version %@", [infoDict objectForKey:@"ApplicationRelease"]]]; /*#if defined(GNUSTEP) if (!infoWindow) { infoWindow = [[GSInfoPanel alloc] initWithDictionary:infoDict]; } [infoWindow setTitle:@"Info"]; [infoWindow center]; [infoWindow makeKeyAndOrderFront:self]; #else NSRunAlertPanel(@"Info", @"OPENSTEP has no support for GSInfoPanel", @"OK",nil,nil,nil); #endif*/ } @end apps-projectcenter-master/PCMenuController.m000066400000000000000000000333761347226342500215540ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import "PCAppController.h" #import "PCMenuController.h" #import "PCInfoController.h" #import "PCPrefController.h" @implementation PCMenuController - (id)init { if ((self = [super init])) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidBecomeActive:) name:PCEditorDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(editorDidResignActive:) name:PCEditorDidResignActiveNotification object:nil]; editorIsActive = NO; } return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCMenuController: dealloc"); #endif [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } - (void)setAppController:(id)anObject { appController = anObject; } - (void)setProjectManager:(id)anObject { projectManager = anObject; } //============================================================================ //==== Menu stuff //============================================================================ // Info - (void)showPrefWindow:(id)sender { [[appController prefController] showPanel:sender]; } - (void)showInfoPanel:(id)sender { [[appController infoController] showInfoWindow:sender]; } - (void)showEditorPanel:(id)sender { [[[projectManager rootActiveProject] projectWindow] showProjectEditor:self]; } - (void)showLogPanel:(id)sender { [[appController logController] showPanel]; } // Project - (void)projectOpen:(id)sender { [projectManager openProject]; } - (void)projectNew:(id)sender { [projectManager newProject: sender]; } - (void)projectSave:(id)sender { [projectManager saveProject]; } - (void)projectAddFiles:(id)sender { [projectManager addProjectFiles]; } - (void)projectSaveFiles:(id)sender { [projectManager saveProjectFiles]; } - (void)projectRemoveFiles:(id)sender { [projectManager removeProjectFiles]; } - (void)projectClose:(id)sender { [projectManager closeProject]; } // Subproject - (void)subprojectNew:(id)sender { [projectManager openNewSubprojectPanel]; } - (void)subprojectAdd:(id)sender { [projectManager addSubproject]; } // File - (void)fileOpen:(id)sender { [projectManager openFile]; } - (void)fileNew:(id)sender { [projectManager newFile]; } - (void)fileSave:(id)sender { [projectManager saveFile]; } - (void)fileSaveAs:(id)sender { [projectManager saveFileAs]; } - (void)fileSaveTo:(id)sender { [projectManager saveFileTo]; } - (void)fileRevertToSaved:(id)sender { [projectManager revertFileToSaved]; } - (void)fileClose:(id)sender { [projectManager closeFile]; } - (void)fileOpenQuickly:(id)sender { NSRunAlertPanel(@"PCMenuController: Sorry!", @"This feature is not finished yet", @"OK",nil,nil); } - (void)fileRename:(id)sender { // Show Inspector panel with "File Attributes" section [projectManager renameFile]; /* NSRunAlertPanel(@"PCMenuController: Sorry!", @"This feature is not finished yet", @"OK",nil,nil);*/ } - (void)fileNewUntitled:(id)sender { NSRunAlertPanel(@"PCMenuController: Sorry!", @"This feature is not finished yet", @"OK",nil,nil); } // Tools - (void)toggleToolbar:(id)sender { [[[projectManager rootActiveProject] projectWindow] toggleToolbar]; if ([[sender title] isEqualToString:@"Hide Tool Bar"]) { [sender setTitle:@"Show Tool Bar"]; } else { [sender setTitle:@"Hide Tool Bar"]; } } - (void)showInspector:(id)sender { [projectManager showProjectInspector:self]; } // Build Panel - (void)showBuildPanel:(id)sender { [[[projectManager rootActiveProject] projectWindow] showProjectBuild:self]; } - (void)executeBuild:(id)sender { [self showBuildPanel:self]; [[[projectManager rootActiveProject] projectBuilder] performStartBuild]; } - (void)stopBuild:(id)sender { [[[projectManager rootActiveProject] projectBuilder] performStopBuild]; } - (void)startClean:(id)sender { [self showBuildPanel:self]; [[[projectManager rootActiveProject] projectBuilder] performStartClean]; } // Loaded Files - (void)showLoadedFilesPanel:(id)sender { [projectManager showProjectLoadedFiles:self]; } - (void)loadedFilesSortByTime:(id)sender { [[[projectManager rootActiveProject] projectLoadedFiles] setSortByTime]; } - (void)loadedFilesSortByName:(id)sender { [[[projectManager rootActiveProject] projectLoadedFiles] setSortByName]; } - (void)loadedFilesNextFile:(id)sender { [[[projectManager rootActiveProject] projectLoadedFiles] selectNextFile]; } - (void)loadedFilesPreviousFile:(id)sender { [[[projectManager rootActiveProject] projectLoadedFiles] selectPreviousFile]; } // Launch Panel - (void)showLaunchPanel:(id)sender { [[[projectManager rootActiveProject] projectWindow] showProjectLaunch:self]; } - (void)runTarget:(id)sender { [self showLaunchPanel:self]; [[[projectManager rootActiveProject] projectLauncher] performRun]; } - (void)debugTarget:(id)sender { [self showLaunchPanel:self]; [[[projectManager rootActiveProject] projectLauncher] performDebug]; } //============================================================================ //==== Delegate stuff //============================================================================ - (BOOL)validateMenuItem:(id )menuItem { NSString *menuTitle = [[menuItem menu] title]; PCProject *aProject = [projectManager activeProject]; PCProjectEditor *projectEditor = [aProject projectEditor]; PCProjectBrowser *projectBrowser = [aProject projectBrowser]; if ([[projectManager loadedProjects] count] == 0) { // Project related menu items if ([menuTitle isEqualToString: @"Project"]) { if ([[menuItem title] isEqualToString:@"Save"]) return NO; if ([[menuItem title] isEqualToString:@"Add Files..."]) return NO; if ([[menuItem title] isEqualToString:@"Save Files..."]) return NO; if ([[menuItem title] isEqualToString:@"Remove Files..."]) return NO; if ([[menuItem title] isEqualToString:@"New Subproject..."]) return NO; if ([[menuItem title] isEqualToString:@"Add Subproject..."]) return NO; if ([[menuItem title] isEqualToString:@"Close"]) return NO; } // File related menu items if ([menuTitle isEqualToString: @"File"] && !editorIsActive) { if ([[menuItem title] isEqualToString:@"New in Project"]) return NO; if ([[menuItem title] isEqualToString:@"Save"]) return NO; if ([[menuItem title] isEqualToString:@"Save As..."]) return NO; if ([[menuItem title] isEqualToString:@"Save To..."]) return NO; if ([[menuItem title] isEqualToString:@"Revert to Saved"]) return NO; if ([[menuItem title] isEqualToString:@"Close"]) return NO; if ([[menuItem title] isEqualToString:@"Open Quickly..."]) return NO; if ([[menuItem title] isEqualToString:@"Rename"]) return NO; if ([[menuItem title] isEqualToString:@"New Untitled"]) return NO; } // Tools menu items if ([menuTitle isEqualToString: @"Tools"]) { if ([[menuItem title] isEqualToString:@"Inspector..."]) return NO; if ([[menuItem title] isEqualToString:@"Hide Tool Bar"]) return NO; if ([[menuItem title] isEqualToString:@"Show Tool Bar"]) return NO; } if ([menuTitle isEqualToString: @"Project Build"]) { if ([[menuItem title] isEqualToString:@"Show Panel..."]) return NO; if ([[menuItem title] isEqualToString:@"Build"]) return NO; if ([[menuItem title] isEqualToString:@"Stop Build"]) return NO; if ([[menuItem title] isEqualToString:@"Clean"]) return NO; if ([[menuItem title] isEqualToString:@"Next Error"]) return NO; if ([[menuItem title] isEqualToString:@"Previous Error"]) return NO; } if ([menuTitle isEqualToString: @"Project Find"]) { if ([[menuItem title] isEqualToString:@"Show Panel..."]) return NO; if ([[menuItem title] isEqualToString:@"Find Preferences"]) return NO; if ([[menuItem title] isEqualToString:@"Find Definitions"]) return NO; if ([[menuItem title] isEqualToString:@"Find Text"]) return NO; if ([[menuItem title] isEqualToString:@"Find Regular Expr"]) return NO; if ([[menuItem title] isEqualToString:@"Next match"]) return NO; if ([[menuItem title] isEqualToString:@"Previous match"]) return NO; } if ([menuTitle isEqualToString: @"Loaded Files"]) { if ([[menuItem title] isEqualToString:@"Show Panel..."]) return NO; if ([[menuItem title] isEqualToString:@"Sort by Time Viewed"]) return NO; if ([[menuItem title] isEqualToString:@"Sort by Name"]) return NO; if ([[menuItem title] isEqualToString:@"Next File"]) return NO; if ([[menuItem title] isEqualToString:@"Previous File"]) return NO; } if ([menuTitle isEqualToString: @"Launcher"]) { if ([[menuItem title] isEqualToString:@"Show Panel..."]) return NO; if ([[menuItem title] isEqualToString:@"Run"]) return NO; if ([[menuItem title] isEqualToString:@"Debug"]) return NO; } if ([menuTitle isEqualToString: @"Indexer"]) { if ([[menuItem title] isEqualToString:@"Show Panel..."]) return NO; if ([[menuItem title] isEqualToString:@"Purge Indices"]) return NO; if ([[menuItem title] isEqualToString:@"Index Subproject"]) return NO; if ([[menuItem title] isEqualToString:@"Index File"]) return NO; } return YES; } // Project related menu items if ([menuTitle isEqualToString: @"Project"] && [projectBrowser nameOfSelectedFile] == nil && [projectBrowser selectedFiles] == nil) { if ([[menuItem title] isEqualToString:@"Remove Files..."]) return NO; } if ([menuTitle isEqualToString: @"Project"] && [[projectEditor allEditors] count] == 0) { if ([[menuItem title] isEqualToString:@"Save Files..."]) return NO; } if ([menuTitle isEqualToString: @"Project"] && [projectBrowser nameOfSelectedCategory] == nil) { if ([[menuItem title] isEqualToString:@"Add Subproject..."]) return NO; if ([[menuItem title] isEqualToString:@"Add Files..."]) return NO; } if ([menuTitle isEqualToString: @"Project"] && [[projectBrowser nameOfSelectedCategory] isEqualToString:@"Subprojects"]) { if ([[menuItem title] isEqualToString:@"Add Files..."]) return NO; } if ([menuTitle isEqualToString: @"Project"] && ![[projectBrowser nameOfSelectedRootCategory] isEqualToString:@"Subprojects"]) { if ([[menuItem title] isEqualToString:@"Add Subproject..."]) return NO; } // File related menu items if (([menuTitle isEqualToString: @"File"])) { if (!editorIsActive) { if ([[menuItem title] isEqualToString:@"Save"]) return NO; if ([[menuItem title] isEqualToString:@"Save As..."]) return NO; if ([[menuItem title] isEqualToString:@"Save To..."]) return NO; if ([[menuItem title] isEqualToString:@"Revert to Saved"]) return NO; if ([[menuItem title] isEqualToString:@"Close"]) return NO; } } if ([projectBrowser nameOfSelectedFile] == nil) { if ([[menuItem title] isEqualToString:@"Rename"]) return NO; } // Toolbar if ([[menuItem title] isEqualToString:@"Hide Tool Bar"] && ![[[projectManager activeProject] projectWindow] isToolbarVisible]) { [menuItem setTitle:@"Show Tool Bar"]; } if ([[menuItem title] isEqualToString:@"Show Tool Bar"] && [[[projectManager activeProject] projectWindow] isToolbarVisible]) { [menuItem setTitle:@"Hide Tool Bar"]; } // Project Build related if (([menuTitle isEqualToString: @"Project Build"])) { if ([[[projectManager activeProject] projectBuilder] isBuilding] || [[[projectManager activeProject] projectBuilder] isCleaning]) { if ([[menuItem title] isEqualToString:@"Build"]) return NO; if ([[menuItem title] isEqualToString:@"Clean"]) return NO; if ([[menuItem title] isEqualToString:@"Next error"]) return NO; if ([[menuItem title] isEqualToString:@"Previous error"]) return NO; } else { if ([[menuItem title] isEqualToString:@"Stop Build"]) return NO; } } // Project Launcher related if (([menuTitle isEqualToString: @"Launcher"])) { if ([[[projectManager activeProject] projectLauncher] isRunning] || [[[projectManager activeProject] projectLauncher] isDebugging]) { if ([[menuItem title] isEqualToString:@"Run"]) return NO; if ([[menuItem title] isEqualToString:@"Debug"]) return NO; } } // Loaded Files related if (([menuTitle isEqualToString: @"Loaded Files"])) { if ([[[aProject projectLoadedFiles] editedFilesRep] count] <= 0) { if ([[menuItem title] isEqualToString:@"Sort by Time Viewed"]) return NO; if ([[menuItem title] isEqualToString:@"Sort by Name"]) return NO; if ([[menuItem title] isEqualToString:@"Next File"]) return NO; if ([[menuItem title] isEqualToString:@"Previous File"]) return NO; } } return YES; } - (void)editorDidResignActive:(NSNotification *)aNotif { editorIsActive = NO; } - (void)editorDidBecomeActive:(NSNotification *)aNotif { editorIsActive = YES; } @end apps-projectcenter-master/PCPrefController.m000066400000000000000000000213111347226342500215260ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001-2015 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import #import #import #import "PCPrefController.h" #import @implementation PCPrefController // =========================================================================== // ==== Class methods // =========================================================================== static PCPrefController *_prefCtrllr = nil; + (PCPrefController *)sharedPCPreferences { if (!_prefCtrllr) { _prefCtrllr = [[PCPrefController alloc] init]; } return _prefCtrllr; } // - (id)init { if (!(self = [super init])) { return nil; } [self loadPrefsSections]; return self; } - (void)dealloc { #ifdef DEVELOPMENT NSLog(@"PCPrefController: dealloc"); #endif RELEASE(panel); [super dealloc]; } - (void)awakeFromNib { } // ---------------------------------------------------------------------------- // --- color utility method // ---------------------------------------------------------------------------- - (NSColor *)colorFromString:(NSString *)colorString { NSArray *colorComponents; NSString *colorSpaceName; NSColor *color; colorComponents = [colorString componentsSeparatedByString:@" "]; colorSpaceName = [colorComponents objectAtIndex:0]; if ([colorSpaceName isEqualToString:@"White"]) // Treat as WhiteColorSpace { color = [NSColor colorWithCalibratedWhite:[[colorComponents objectAtIndex:1] floatValue] alpha:1.0]; } else // Treat as RGBColorSpace { color = [NSColor colorWithCalibratedRed:[[colorComponents objectAtIndex:1] floatValue] green:[[colorComponents objectAtIndex:2] floatValue] blue:[[colorComponents objectAtIndex:3] floatValue] alpha:1.0]; } return color; } - (NSString *)stringFromColor:(NSColor *)color { NSString *colorString; colorString = nil; if ([[color colorSpaceName] isEqualToString:NSCalibratedWhiteColorSpace]) { colorString = [NSString stringWithFormat:@"White %0.1f", [color whiteComponent]]; } else { if (![[color colorSpaceName] isEqualToString:NSCalibratedRGBColorSpace]) color = [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; colorString = [NSString stringWithFormat:@"RGB %0.1f %0.1f %0.1f", [color redComponent], [color greenComponent], [color blueComponent]]; } return colorString; } // ---------------------------------------------------------------------------- // --- Accessors // ---------------------------------------------------------------------------- - (NSString *)stringForKey:(NSString *)key { return [self stringForKey:key defaultValue:nil]; } - (NSString *)stringForKey:(NSString *)key defaultValue:(NSString *)defaultValue { NSString *stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:key]; if (stringValue) { return stringValue; } else if (defaultValue) { [self setString:defaultValue forKey:key notify:NO]; return defaultValue; } return defaultValue; // returns nil } - (BOOL)boolForKey:(NSString *)key { return [self boolForKey:key defaultValue:-1]; } - (BOOL)boolForKey:(NSString *)key defaultValue:(BOOL)defaultValue { NSString *stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:key]; if (stringValue) { return [stringValue boolValue]; } else if (defaultValue > 0) { [self setBool:defaultValue forKey:key notify:NO]; return defaultValue; } return defaultValue; // returns -1 } - (float)floatForKey:(NSString *)key { return [self floatForKey:key defaultValue:0.0]; } - (float)floatForKey:(NSString *)key defaultValue:(float)defaultValue { NSString *stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:key]; if (stringValue) { return [stringValue floatValue]; } else { [self setFloat:defaultValue forKey:key notify:NO]; return defaultValue; } } - (NSColor *)colorForKey:(NSString *)key { return [self colorForKey:key defaultValue:nil]; } - (NSColor *)colorForKey:(NSString *)key defaultValue:(NSColor *)defaultValue { NSString *stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:key]; if (stringValue) { NSColor *color; color = [self colorFromString:stringValue]; return color; } else if (defaultValue) { [self setColor:defaultValue forKey:key notify:NO]; return defaultValue; } return defaultValue; // returns nil } - (void)setString:(NSString *)stringValue forKey:(NSString *)aKey notify:(BOOL)notify { [[NSUserDefaults standardUserDefaults] setObject:stringValue forKey:aKey]; if (notify) { [[NSNotificationCenter defaultCenter] postNotificationName:PCPreferencesDidChangeNotification object:self]; } } - (void)setBool:(BOOL)boolValue forKey:(NSString *)aKey notify:(BOOL)notify { NSString *stringValue = boolValue ? @"YES" : @"NO"; [[NSUserDefaults standardUserDefaults] setObject:stringValue forKey:aKey]; if (notify) { [[NSNotificationCenter defaultCenter] postNotificationName:PCPreferencesDidChangeNotification object:self]; } } - (void)setFloat:(float)floatValue forKey:(NSString *)aKey notify:(BOOL)notify { NSString *stringValue = [NSString stringWithFormat:@"%0.1f", floatValue]; [[NSUserDefaults standardUserDefaults] setObject:stringValue forKey:aKey]; if (notify) { [[NSNotificationCenter defaultCenter] postNotificationName:PCPreferencesDidChangeNotification object:self]; } } - (void)setColor:(NSColor *)color forKey:(NSString *)aKey notify:(BOOL)notify { NSString *stringValue; stringValue = [self stringFromColor:color]; [[NSUserDefaults standardUserDefaults] setObject:stringValue forKey:aKey]; if (notify) { [[NSNotificationCenter defaultCenter] postNotificationName:PCPreferencesDidChangeNotification object:self]; } } - (void)loadPrefsSections { PCBundleManager *bundleManager = [[PCBundleManager alloc] init]; NSDictionary *bundlesInfo; NSEnumerator *enumerator; NSString *bundlePath; NSString *sectionName; id section; sectionsDict = [[NSMutableDictionary alloc] init]; bundlesInfo = [bundleManager infoForBundlesType:@"preferences"]; enumerator = [[bundlesInfo allKeys] objectEnumerator]; while ((bundlePath = [enumerator nextObject])) { sectionName = [[bundlesInfo objectForKey:bundlePath] objectForKey:@"Name"]; section = [bundleManager objectForBundleWithName:sectionName type:@"preferences" protocol:@protocol(PCPrefsSection)]; [section initWithPrefController:self]; [section readPreferences]; [sectionsDict setObject:section forKey:sectionName]; } } - (void)showPanel:(id)sender { if (panel == nil && [NSBundle loadNibNamed:@"Preferences" owner:self] == NO) { PCLogError(self, @"error loading NIB file!"); return; } [panel setFrameAutosaveName:@"Preferences"]; if (![panel setFrameUsingName: @"Preferences"]) { [panel center]; } [self loadPrefsSections]; // The popup and selected view [popupButton removeAllItems]; [popupButton addItemsWithTitles:[[sectionsDict allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]]; [popupButton selectItemAtIndex:0]; [self popupChanged:popupButton]; [panel makeKeyAndOrderFront:self]; } // Actions - (void)popupChanged:(id)sender { id section; NSView *view; section = [sectionsDict objectForKey:[sender titleOfSelectedItem]]; view = [section view]; [sectionsView setContentView:view]; } - (void)changeFont:(id)sender { NSLog(@"PCPrefController: changeFont"); } @end apps-projectcenter-master/ProjectCenter_main.m000066400000000000000000000017501347226342500221230ustar00rootroot00000000000000/* GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html Copyright (C) 2001 Free Software Foundation This file is part of GNUstep. This application 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 application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ #import int main(int argc, const char **argv) { return NSApplicationMain (argc, argv); } apps-projectcenter-master/Resources/000077500000000000000000000000001347226342500201415ustar00rootroot00000000000000apps-projectcenter-master/Resources/Info-gnustep.plist000066400000000000000000000045271347226342500236040ustar00rootroot00000000000000{ NOTE = "Automatically generated, do not edit!"; ApplicationName = "ProjectCenter"; ApplicationDescription = "GNUstep Integrated Development Environment"; ApplicationIcon = "ProjectCenter.tiff"; ApplicationRelease = "0.6.2"; FullVersionID = "HEAD"; Authors = ( "Philippe C.D. Robert", "Serg Stoyan", "David Ayers", "Richard Frith-Macdonald", "Nicola Pero", "Pierre-Yves Rivaille", "Adam Fedor", "Gregory John Casamento", "Riccardo Mottola"); NSIcon = "ProjectCenter.tiff"; NSExecutable = ProjectCenter; CFBundleIdentifier = org.gnustep.ProjectCenter; NSMainNibFile = ProjectCenter.gorm; NSPrincipalClass = NSApplication; NSRole = "Editor"; NSTypes = ( { NSDocumentClass = PCProjectDocument; NSHumanReadableName = "GNUstep project"; NSIcon = FileProject.tiff; NSName = GSPCProjectFileType; NSRole = Editor; NSUnixExtensions = ( project ); }, { NSDocumentClass = PCProjectDocument; NSHumanReadableName = "GNUstep project"; NSIcon = FileProject.tiff; NSName = GSPCProjectFileType; NSRole = Editor; NSUnixExtensions = ( pcproj ); }, { NSDocumentClass = PCClassDocument; NSHumanReadableName = "Objective C class file"; NSIcon = ProjectCenter.editor/Resources/FileM.tiff; NSName = GSClassType; NSRole = Editor; NSUnixExtensions = ( m ); }, { NSDocumentClass = PCClassDocument; NSHumanReadableName = "Objective C++ class file"; NSIcon = ProjectCenter.editor/Resources/FileMM.tiff; NSName = GSClassType; NSRole = Editor; NSUnixExtensions = ( mm ); }, { NSDocumentClass = PCHeaderDocument; NSHumanReadableName = "C or Objective C header file"; NSIcon = ProjectCenter.editor/Resources/FileH.tiff; NSName = GSPCHeaderType; NSRole = Editor; NSUnixExtensions = ( h ); }, { NSDocumentClass = PCCDocument; NSHumanReadableName = "C file"; NSIcon = ProjectCenter.editor/Resources/FileC.tiff; NSName = GSPCCType; NSRole = Editor; NSUnixExtensions = ( c, C, cp, cpp, c++ ); } ); URL = "See http://www.gnustep.org/"; Copyright = "Copyright (C) 1999 - 2015 Free Software Foundation"; CopyrightDescription = "Released under the GNU General Public License 3.0 or later"; }