home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: WPS_PM / WPS_PM.zip / xf084cz.zip / xfldr421.inf (.txt) < prev   
OS/2 Help File  |  1999-02-05  |  298KB  |  6,302 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. XFolder Online Reference ΓòÉΓòÉΓòÉ
  3.  
  4.      Notices 
  5.  
  6.      Introduction -- start here 
  7.  
  8.      Installation 
  9.  
  10.      Context menu features 
  11.  
  12.      Folder features 
  13.  
  14.      Folder status bars 
  15.  
  16.      Extended Shutdown 
  17.  
  18.      The new "System" objects 
  19.  
  20.      The Netscape DDE Interface 
  21.  
  22.      New XFolder system sounds 
  23.  
  24.      New default icons 
  25.  
  26.      Frequently Asked Questions (FAQ) 
  27.  
  28.      Related files 
  29.  
  30.      Version information 
  31.  
  32.      XFolder's internals 
  33.  
  34.      Appendices 
  35.  
  36.  
  37. ΓòÉΓòÉΓòÉ 2. Notices and Legalese ΓòÉΓòÉΓòÉ
  38.  
  39.      Licence (CHANGED!) 
  40.  
  41.      GNU Public Licence 
  42.  
  43.      Comments and suggestions 
  44.  
  45.      Thank you's: you know who you are... 
  46.  
  47.      Credits 
  48.  
  49.      Trademarks 
  50.  
  51.  
  52. ΓòÉΓòÉΓòÉ 2.1. Licence And Disclaimer ΓòÉΓòÉΓòÉ
  53.  
  54. February 1999 
  55.  
  56. With V0.80, the licence agreement of XFolder has changed. 
  57.  
  58. While previous versions were "plain" freeware, the XFolder package is now 
  59. placed under the GNU General Public Licence (GPL) Version 2. 
  60.  
  61. The GPL is a general licence agreement which was developed by the Free Software 
  62. Foundation to protect the rights of programmers who wish to publish the source 
  63. code of their software. The GPL is mostly used with software of the GNU project 
  64. and has become more widely known with the evolution of Linux, which is mostly 
  65. published under the GPL too. 
  66.  
  67. You can find the full text of the GPL in the plain-text file COPYING in the 
  68. XFolder installation directory. I have added a formatted version of this on the 
  69. next page of this document. 
  70.  
  71. By installing XFolder on your system, you declare your agreement to the terms 
  72. and conditions of the GNU General Public Licence, Version 2, as contained in 
  73. the file COPYING in the XFolder installation directory. 
  74.  
  75. The GPL means more Legalese, but also more rights for you as a user and, if 
  76. applicable, developer. The most obvious change is that XFolder's source code is 
  77. now also released. 
  78.  
  79. The following brief explanations are intended as an introduction to the terms 
  80. and conditions of the GPL only. They are not part of the licence agreement, for 
  81. which only the terms and conditions in the COPYING file shall prevail. 
  82.  
  83.      If you are an XFolder user, not much has changed. You may still use 
  84.       XFolder without any payment to Ulrich M╨ñller. The GPL does not restrict 
  85.       you on this matter. However, there is still no warranty whatsoever. If 
  86.       XFolder ruins your system and your work of the last 30 years is lost, 
  87.       sorry. (This is not very probable though). Refer to the bottom of the GPL 
  88.       for the detailed disclaimer. 
  89.  
  90.      If you're a distributor, you may still distribute the whole XFolder 
  91.       package. However, the GPL might require you to also distribute the 
  92.       XFolder source code, which is available in a separate package from the 
  93.       author's WWW homepage. 
  94.  
  95.      If you're a developer, you now have the source code. However, if you base 
  96.       your own software on XFolder's source code, the GPL might require you to 
  97.       place your work under the GPL also, especially make your software 
  98.       freeware and publish the source code. 
  99.  
  100.       Even though I'm publishing the source code, I retain the copyright to 
  101.       what I've written. 
  102.  
  103.       The GPL deals with these issues extensively. Before you use or modify any 
  104.       code parts of XFolder, make sure you read the GPL thoroughly. If you have 
  105.       any questions, feel free to contact me. 
  106.  
  107.       XFolder contains some code which has been placed into the public domain 
  108.       by its respective authors. These sections are marked in the source files 
  109.       and also listed on the "Credits" page. Naturally, the GPL does not apply 
  110.       to those sections, because I have not written them. 
  111.  
  112.  This licence does not necessarily cover future releases. Ulrich M╨ñller retains 
  113.  the right to modify the licence agreement for future versions. 
  114.  
  115.  I have chosen to publish the source code because XFolder has become a fairly 
  116.  complex application by now, and it becomes increasingly difficult to find 
  117.  bugs, because many of these simply do not show up with my system 
  118.  configuration, and I am not willing to buy new hardware to debug XFolder. I 
  119.  hope that now some users will be able to find bugs in the code themselves. 
  120.  
  121.  In addition, as I have stated several times, I think that the only chance for 
  122.  OS/2 to survive is that more free software is needed. By publishing the source 
  123.  code I hope that more developers will take the step to develop their own WPS 
  124.  classes, because WPS programming only seems to be completely wild in the 
  125.  beginning. After a while, it's really fun. 
  126.  
  127.  I chose the restrictive GPL in this respect because then other developers will 
  128.  also have to release their software as GPL freeware. 
  129.  
  130.  And now: have fun with XFolder! 
  131.  
  132.  (C) Copyright 1997-98 Ulrich M╨ñller. 
  133.  
  134.  
  135. ΓòÉΓòÉΓòÉ 2.2. GNU Public Licence ΓòÉΓòÉΓòÉ
  136.  
  137. GNU GENERAL PUBLIC LICENSE 
  138. Version 2, June 1991 
  139.  
  140. Copyright (C) 1989, 1991 Free Software Foundation, Inc. 
  141. 675 Mass Ave, Cambridge, MA 02139, USA 
  142.  
  143. Everyone is permitted to copy and distribute verbatim copies of this license 
  144. document, but changing it is not allowed. 
  145.  
  146. Preamble 
  147.  
  148. The licenses for most software are designed to take away your freedom to share 
  149. and change it.  By contrast, the GNU General Public License is intended to 
  150. guarantee your freedom to share and change free software--to make sure the 
  151. software is free for all its users.  This General Public License applies to 
  152. most of the Free Software Foundation's software and to any other program whose 
  153. authors commit to using it.  (Some other Free Software Foundation software is 
  154. covered by the GNU Library General Public License instead.)  You can apply it 
  155. to your programs, too. 
  156.  
  157. When we speak of free software, we are referring to freedom, not price.  Our 
  158. General Public Licenses are designed to make sure that you have the freedom to 
  159. distribute copies of free software (and charge for this service if you wish), 
  160. that you receive source code or can get it if you want it, that you can change 
  161. the software or use pieces of it in new free programs; and that you know you 
  162. can do these things. 
  163.  
  164. To protect your rights, we need to make restrictions that forbid anyone to deny 
  165. you these rights or to ask you to surrender the rights. These restrictions 
  166. translate to certain responsibilities for you if you distribute copies of the 
  167. software, or if you modify it. 
  168.  
  169. For example, if you distribute copies of such a program, whether gratis or for 
  170. a fee, you must give the recipients all the rights that you have.  You must 
  171. make sure that they, too, receive or can get the source code.  And you must 
  172. show them these terms so they know their rights. 
  173.  
  174. We protect your rights with two steps: (1) copyright the software, and (2) 
  175. offer you this license which gives you legal permission to copy, distribute 
  176. and/or modify the software. 
  177.  
  178. Also, for each author's protection and ours, we want to make certain that 
  179. everyone understands that there is no warranty for this free software.  If the 
  180. software is modified by someone else and passed on, we want its recipients to 
  181. know that what they have is not the original, so that any problems introduced 
  182. by others will not reflect on the original authors' reputations. 
  183.  
  184. Finally, any free program is threatened constantly by software patents.  We 
  185. wish to avoid the danger that redistributors of a free program will 
  186. individually obtain patent licenses, in effect making the program proprietary. 
  187. To prevent this, we have made it clear that any patent must be licensed for 
  188. everyone's free use or not licensed at all. 
  189.  
  190. The precise terms and conditions for copying, distribution and modification 
  191. follow. 
  192.  
  193. GNU GENERAL PUBLIC LICENSE 
  194. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
  195.  
  196. 0. This License applies to any program or other work which contains a notice 
  197. placed by the copyright holder saying it may be distributed under the terms of 
  198. this General Public License.  The "Program", below, refers to any such program 
  199. or work, and a "work based on the Program" means either the Program or any 
  200. derivative work under copyright law: that is to say, a work containing the 
  201. Program or a portion of it, either verbatim or with modifications and/or 
  202. translated into another language.  (Hereinafter, translation is included 
  203. without limitation in the term "modification".)  Each licensee is addressed as 
  204. "you". 
  205.  
  206. Activities other than copying, distribution and modification are not covered by 
  207. this License; they are outside its scope.  The act of running the Program is 
  208. not restricted, and the output from the Program is covered only if its contents 
  209. constitute a work based on the Program (independent of having been made by 
  210. running the Program). Whether that is true depends on what the Program does. 
  211.  
  212. 1. You may copy and distribute verbatim copies of the Program's source code as 
  213. you receive it, in any medium, provided that you conspicuously and 
  214. appropriately publish on each copy an appropriate copyright notice and 
  215. disclaimer of warranty; keep intact all the notices that refer to this License 
  216. and to the absence of any warranty; and give any other recipients of the 
  217. Program a copy of this License along with the Program. 
  218.  
  219. You may charge a fee for the physical act of transferring a copy, and you may 
  220. at your option offer warranty protection in exchange for a fee. 
  221.  
  222. 2. You may modify your copy or copies of the Program or any portion of it, thus 
  223. forming a work based on the Program, and copy and distribute such modifications 
  224. or work under the terms of Section 1 above, provided that you also meet all of 
  225. these conditions: 
  226.  
  227.      a) You must cause the modified files to carry prominent notices stating 
  228.       that you changed the files and the date of any change. 
  229.  
  230.      b) You must cause any work that you distribute or publish, that in whole 
  231.       or in part contains or is derived from the Program or any part thereof, 
  232.       to be licensed as a whole at no charge to all third parties under the 
  233.       terms of this License. 
  234.  
  235.      c) If the modified program normally reads commands interactively when 
  236.       run, you must cause it, when started running for such interactive use in 
  237.       the most ordinary way, to print or display an announcement including an 
  238.       appropriate copyright notice and a notice that there is no warranty (or 
  239.       else, saying that you provide a warranty) and that users may redistribute 
  240.       the program under these conditions, and telling the user how to view a 
  241.       copy of this License.  (Exception: if the Program itself is interactive 
  242.       but does not normally print such an announcement, your work based on the 
  243.       Program is not required to print an announcement.) 
  244.  
  245.  These requirements apply to the modified work as a whole.  If identifiable 
  246.  sections of that work are not derived from the Program, and can be reasonably 
  247.  considered independent and separate works in themselves, then this License, 
  248.  and its terms, do not apply to those sections when you distribute them as 
  249.  separate works.  But when you distribute the same sections as part of a whole 
  250.  which is a work based on the Program, the distribution of the whole must be on 
  251.  the terms of this License, whose permissions for other licensees extend to the 
  252.  entire whole, and thus to each and every part regardless of who wrote it. 
  253.  
  254.  Thus, it is not the intent of this section to claim rights or contest your 
  255.  rights to work written entirely by you; rather, the intent is to exercise the 
  256.  right to control the distribution of derivative or collective works based on 
  257.  the Program. 
  258.  
  259.  In addition, mere aggregation of another work not based on the Program with 
  260.  the Program (or with a work based on the Program) on a volume of a storage or 
  261.  distribution medium does not bring the other work under the scope of this 
  262.  License. 
  263.  
  264.  3. You may copy and distribute the Program (or a work based on it, under 
  265.  Section 2) in object code or executable form under the terms of Sections 1 and 
  266.  2 above provided that you also do one of the following: 
  267.  
  268.      a) Accompany it with the complete corresponding machine-readable source 
  269.       code, which must be distributed under the terms of Sections 1 and 2 above 
  270.       on a medium customarily used for software interchange; or, 
  271.  
  272.      b) Accompany it with a written offer, valid for at least three years, to 
  273.       give any third party, for a charge no more than your cost of physically 
  274.       performing source distribution, a complete machine-readable copy of the 
  275.       corresponding source code, to be distributed under the terms of Sections 
  276.       1 and 2 above on a medium customarily used for software interchange; or, 
  277.  
  278.      c) Accompany it with the information you received as to the offer to 
  279.       distribute corresponding source code.  (This alternative is allowed only 
  280.       for noncommercial distribution and only if you received the program in 
  281.       object code or executable form with such an offer, in accord with 
  282.       Subsection b above.) 
  283.  
  284.  The source code for a work means the preferred form of the work for making 
  285.  modifications to it.  For an executable work, complete source code means all 
  286.  the source code for all modules it contains, plus any associated interface 
  287.  definition files, plus the scripts used to control compilation and 
  288.  installation of the executable.  However, as a special exception, the source 
  289.  code distributed need not include anything that is normally distributed (in 
  290.  either source or binary form) with the major components (compiler, kernel, and 
  291.  so on) of the operating system on which the executable runs, unless that 
  292.  component itself accompanies the executable. 
  293.  
  294.  If distribution of executable or object code is made by offering access to 
  295.  copy from a designated place, then offering equivalent access to copy the 
  296.  source code from the same place counts as distribution of the source code, 
  297.  even though third parties are not compelled to copy the source along with the 
  298.  object code. 
  299.  
  300.  4. You may not copy, modify, sublicense, or distribute the Program except as 
  301.  expressly provided under this License.  Any attempt otherwise to copy, modify, 
  302.  sublicense or distribute the Program is void, and will automatically terminate 
  303.  your rights under this License. However, parties who have received copies, or 
  304.  rights, from you under this License will not have their licenses terminated so 
  305.  long as such parties remain in full compliance. 
  306.  
  307.  5. You are not required to accept this License, since you have not signed it. 
  308.  However, nothing else grants you permission to modify or distribute the 
  309.  Program or its derivative works.  These actions are prohibited by law if you 
  310.  do not accept this License.  Therefore, by modifying or distributing the 
  311.  Program (or any work based on the Program), you indicate your acceptance of 
  312.  this License to do so, and all its terms and conditions for copying, 
  313.  distributing or modifying the Program or works based on it. 
  314.  
  315.  6. Each time you redistribute the Program (or any work based on the Program), 
  316.  the recipient automatically receives a license from the original licensor to 
  317.  copy, distribute or modify the Program subject to these terms and conditions. 
  318.  You may not impose any further restrictions on the recipients' exercise of the 
  319.  rights granted herein. You are not responsible for enforcing compliance by 
  320.  third parties to this License. 
  321.  
  322.  7. If, as a consequence of a court judgment or allegation of patent 
  323.  infringement or for any other reason (not limited to patent issues), 
  324.  conditions are imposed on you (whether by court order, agreement or otherwise) 
  325.  that contradict the conditions of this License, they do not excuse you from 
  326.  the conditions of this License.  If you cannot distribute so as to satisfy 
  327.  simultaneously your obligations under this License and any other pertinent 
  328.  obligations, then as a consequence you may not distribute the Program at all. 
  329.  For example, if a patent license would not permit royalty-free redistribution 
  330.  of the Program by all those who receive copies directly or indirectly through 
  331.  you, then the only way you could satisfy both it and this License would be to 
  332.  refrain entirely from distribution of the Program. 
  333.  
  334.  If any portion of this section is held invalid or unenforceable under any 
  335.  particular circumstance, the balance of the section is intended to apply and 
  336.  the section as a whole is intended to apply in other circumstances. 
  337.  
  338.  It is not the purpose of this section to induce you to infringe any patents or 
  339.  other property right claims or to contest validity of any such claims; this 
  340.  section has the sole purpose of protecting the integrity of the free software 
  341.  distribution system, which is implemented by public license practices.  Many 
  342.  people have made generous contributions to the wide range of software 
  343.  distributed through that system in reliance on consistent application of that 
  344.  system; it is up to the author/donor to decide if he or she is willing to 
  345.  distribute software through any other system and a licensee cannot impose that 
  346.  choice. 
  347.  
  348.  This section is intended to make thoroughly clear what is believed to be a 
  349.  consequence of the rest of this License. 
  350.  
  351.  8. If the distribution and/or use of the Program is restricted in certain 
  352.  countries either by patents or by copyrighted interfaces, the original 
  353.  copyright holder who places the Program under this License may add an explicit 
  354.  geographical distribution limitation excluding those countries, so that 
  355.  distribution is permitted only in or among countries not thus excluded.  In 
  356.  such case, this License incorporates the limitation as if written in the body 
  357.  of this License. 
  358.  
  359.  9. The Free Software Foundation may publish revised and/or new versions of the 
  360.  General Public License from time to time.  Such new versions will be similar 
  361.  in spirit to the present version, but may differ in detail to address new 
  362.  problems or concerns. 
  363.  
  364.  Each version is given a distinguishing version number.  If the Program 
  365.  specifies a version number of this License which applies to it and "any later 
  366.  version", you have the option of following the terms and conditions either of 
  367.  that version or of any later version published by the Free Software 
  368.  Foundation.  If the Program does not specify a version number of this License, 
  369.  you may choose any version ever published by the Free Software Foundation. 
  370.  
  371.  10. If you wish to incorporate parts of the Program into other free programs 
  372.  whose distribution conditions are different, write to the author to ask for 
  373.  permission.  For software which is copyrighted by the Free Software 
  374.  Foundation, write to the Free Software Foundation; we sometimes make 
  375.  exceptions for this.  Our decision will be guided by the two goals of 
  376.  preserving the free status of all derivatives of our free software and of 
  377.  promoting the sharing and reuse of software generally. 
  378.  
  379.  NO WARRANTY 
  380.  
  381.  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR 
  382.  THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE 
  383.  STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE 
  384.  PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, 
  385.  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  386.  FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND 
  387.  PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, 
  388.  YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 
  389.  
  390.  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 
  391.  ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 
  392.  THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 
  393.  GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE 
  394.  OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR 
  395.  DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR 
  396.  A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH 
  397.  HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
  398.  
  399.  END OF TERMS AND CONDITIONS 
  400.  
  401.  Appendix: How to Apply These Terms to Your New Programs 
  402.  
  403.  If you develop a new program, and you want it to be of the greatest possible 
  404.  use to the public, the best way to achieve this is to make it free software 
  405.  which everyone can redistribute and change under these terms. 
  406.  
  407.  To do so, attach the following notices to the program.  It is safest to attach 
  408.  them to the start of each source file to most effectively convey the exclusion 
  409.  of warranty; and each file should have at least the "copyright" line and a 
  410.  pointer to where the full notice is found. 
  411.  
  412.  <one line to give the program's name and a brief idea of what it does.> 
  413.  
  414.  Copyright (C) 19yy  <name of author> 
  415.  
  416.  This program is free software; you can redistribute it and/or modify it under 
  417.  the terms of the GNU General Public License as published by the Free Software 
  418.  Foundation; either version 2 of the License, or at your option) any later 
  419.  version. 
  420.  
  421.  This program is distributed in the hope that it will be useful, but WITHOUT 
  422.  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
  423.  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
  424.  details. 
  425.  
  426.  You should have received a copy of the GNU General Public License along with 
  427.  this program; if not, write to the Free Software Foundation, Inc., 675 Mass 
  428.  Ave, Cambridge, MA 02139, USA. 
  429.  
  430.  Also add information on how to contact you by electronic and paper mail. 
  431.  
  432.  If the program is interactive, make it output a short notice like this when it 
  433.  starts in an interactive mode: 
  434.  
  435.  Gnomovision version 69, Copyright (C) 19yy name of author 
  436.  Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 
  437.  This is free software, and you are welcome to redistribute it under certain 
  438.  conditions; type `show c' for details. 
  439.  
  440.  The hypothetical commands `show w' and `show c' should show the appropriate 
  441.  parts of the General Public License.  Of course, the commands you use may be 
  442.  called something other than `show w' and `show c'; they could even be 
  443.  mouse-clicks or menu items--whatever suits your program. 
  444.  
  445.  You should also get your employer (if you work as a programmer) or your 
  446.  school, if any, to sign a "copyright disclaimer" for the program, if 
  447.  necessary.  Here is a sample; alter the names: 
  448.  
  449.  Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
  450.  `Gnomovision' (which makes passes at compilers) written by James Hacker. 
  451.  
  452.  <signature of Ty Coon>, 1 April 1989 
  453.  Ty Coon, President of Vice 
  454.  
  455.  This General Public License does not permit incorporating your program into 
  456.  proprietary programs.  If your program is a subroutine library, you may 
  457.  consider it more useful to permit linking proprietary applications with the 
  458.  library.  If this is what you want to do, use the GNU Library General Public 
  459.  License instead of this License. 
  460.  
  461.  
  462. ΓòÉΓòÉΓòÉ 2.3. Contact -- Comments and Suggestions ΓòÉΓòÉΓòÉ
  463.  
  464.      Ulrich M╨ñller
  465.      e-mail: ulrich.moeller@rz.hu-berlin.de
  466.      www:    http://www2.rz.hu-berlin.de/~h0444vnd/os2.htm
  467.  
  468. The above WWW address always carries both the newest release of XFolder and its 
  469. complete source code. You can also find other software there, including the 
  470. OS/2 CommandPak, which will enhance your command line environment. 
  471.  
  472. Please read through the "Frequently Asked Questions" section before contacting 
  473. me; maybe you will already find what you're looking for in there. 
  474.  
  475. I am also now maintaining a public bug list on the XFolder homepage. 
  476.  
  477. Important note: I will not respond to mails any more which address problems 
  478. which are already described at the above locations. XFolder is just becoming 
  479. too popular by now, and I keep spending half of the time which could go into 
  480. enhancing XFolder writing to people who are too lazy to read the documentation. 
  481. Sorry. 
  482.  
  483. Reporting bugs: 
  484.  
  485. If however you still wish to contact me, either because you think you have 
  486. found a new bug or you think you have found a solution (which is still very 
  487. welcome), please include the following information: 
  488.  
  489.      Please describe the situation in which the error occured and whether it 
  490.       is reproduceable. 
  491.  
  492.      Include the OS/2 version you are running (Warp 3 or 4, and possible 
  493.       fixpaks installed). 
  494.  
  495.      Include a list of other WPS enhancers you are running. 
  496.  
  497.      Look in the root directory of your boot drive for a file named 
  498.       "XFLDTRAP.LOG"; if it exists, please include it in your message. 
  499.  
  500.      If you are running into problems with the eXtended Shutdown / Restart WPS 
  501.       features, please switch on the automatic log function on the "XDesktop" 
  502.       page of the Desktop's settings notebook. This will create a file named 
  503.       "XSHUTDWN.LOG" in the same location during shutdown. Please include this 
  504.       file also. 
  505.  
  506.  If you're a programmer, you might want to take a look at the source code also. 
  507.  Maybe you can find a bug yourself. 
  508.  
  509.  
  510. ΓòÉΓòÉΓòÉ 2.4. Thank You's ΓòÉΓòÉΓòÉ
  511.  
  512. Thanks to the following people for paying me in naturals: 
  513.  
  514.      Glauco Ippolitoni, Italy, for sending me the Win95 keyboard 
  515.  
  516.      Mark Mellin, USA, for sending me VisualAge C++ 
  517.  
  518.  The following people deserve a special thank you for reporting me problems and 
  519.  incompatibilities and giving useful hints for future versions (in alphabetical 
  520.  order). Thanks also to everyone else who has contacted me; you are too many to 
  521.  be mentioned here separately. Please feel addressed with a global thank you! 
  522.  
  523.      ARAKAWA Atsushi, Japan, for filling in the APM power-off code and finding 
  524.       bugs 
  525.  
  526.      Carsten Arnold, Germany, for finding bugs in the source code 
  527.  
  528.      Harvey Braun, Australia, for first detecting an embarassingly obvious 
  529.       installation bug 
  530.  
  531.      John Buckley, UK, for the WPDrives suggestion and a better NEWOBJ.CMD 
  532.  
  533.      Duane A. Chamblee for supplying the BOOTMGR.CMD code 
  534.  
  535.      James "Lithium" Church for the templates idea, submitting Kris Kwilas' 
  536.       OS/2 wishlist, and testing for the hotkey bugs 
  537.  
  538.      Yuri Dario, Italy, for sending me all that Win95 keys information 
  539.  
  540.      Bjorn Fahler, Sweden, writer at EDM/2, for lots of technical tips and his 
  541.       very helpful programming columns 
  542.  
  543.      Christian Gaarden, Denmark (I believe), for useful suggestions 
  544.  
  545.      Diane Gardner, USA, for her very favorable reviews of XFolder in the Land 
  546.       of Beyond, useful suggestions and detailed bug reports 
  547.  
  548.      Reinhard Giesen, Germany, for useful suggestions 
  549.  
  550.      Marcus de Geus, Netherlands, for useful suggestions for the Netscape DDE 
  551.       Interface 
  552.  
  553.      Jens Glathe, Germany, for technical information and you-know-what 
  554.  
  555.      Torsten Balle Koefoed, Denmark, for detecting incompatibilities, bugs, 
  556.       and making useful suggestions 
  557.  
  558.      Gerhard Hahn, Austria, for the Clipboard suggestion 
  559.  
  560.      Tomas Hajny, Czech Republic, for finding lots of little mistakes in the 
  561.       sources 
  562.  
  563.      Jim Hruska, USA (I believe), for detecting incompatibilities 
  564.  
  565.      Henk Kelder, Netherlands, developer of a whole buch of valuable OS/2 
  566.       utilities and uncrowned guru of OS/2 Extended Attributes, for 
  567.       comprehensive support on .ICONPOS and other EAs; check his homepage for 
  568.       his software 
  569.  
  570.      Kris Kwilas for his very thoughtful OS/2 wishlist about what needs to be 
  571.       improved with OS/2 
  572.  
  573.      Martin Lafaix, France, for finding errors and detailed tips and 
  574.       suggestions about menus, notebooks, and other things 
  575.  
  576.      Hauke Laging, Germany, for detecting incompatibilities, making LOTS of 
  577.       suggestions, his OS/2 initiatives and bragging about his computer 
  578.  
  579.      Christian Langanke, Germany: developer of "Animated Mouse Pointers for 
  580.       OS/2", the famous WPS enhancer (check his homepage) for comprehensive 
  581.       suggestions, technical tips, and continuing support 
  582.  
  583.      Roger Lindmark, Sweden, for finding a lot of mistakes in the 
  584.       documentation and other useful hints 
  585.  
  586.      Macarlo, Brazil, benedictine monk and system analyst, for inspiring 
  587.       correspondence 
  588.  
  589.      Eric Norman, Montana, USA, for finding bugs in the subfolder handling and 
  590.       "Snap to grid" 
  591.  
  592.      Andrea Penna, Italy, for supplying the SmartSuite / NetscDDE trick. 
  593.  
  594.      Michael Reinsch, Germany, for lots of detailed bug reports 
  595.  
  596.      Larry Salomon, Jr., USA (I guess), writer at EDM/2, for lots of helpful 
  597.       articles about PM programming 
  598.  
  599.      Andrea Scagni, Italy, for detailed bug reports 
  600.  
  601.      Ralph Scharpf, Germany, for the video driver hints 
  602.  
  603.      Bernd Schemmer, Germany, for detecting incompatibilies and for his 
  604.       fabulous "Rexx Tips & Tricks" INF book 
  605.  
  606.      Trevor Smith, former editor-in-chief of OS/2 e-zine, for support and the 
  607.       configurable reboot idea (they now also have a review of XFolder in 
  608.       volume 3 issue 7) 
  609.  
  610.      Thomas Unverzagt, Germany, for the "full path in title" idea 
  611.  
  612.      Rich Walsh, USA, author of "Rwx" and "DragText", for help on some SOM 
  613.       internals 
  614.  
  615.      Steve Wendt, USA, for advertising for XFolder on his valuable "OS/2 
  616.       Wishlist" page and for useful suggestions 
  617.  
  618.      Stefan Zechmeister, Germany, for figuring out how to get Object Desktop 
  619.       2.0 to work 
  620.  
  621.  Super-duper thanks go out to the following people for their software: 
  622.  
  623.      Dennis Bareis, Australia, for his amazing PMPRINTF package. Couldn't have 
  624.       programmed XFolder without it. Check out 
  625.       http://www.ozemail.com.au/~dbareis/, where you'll also find tons of other 
  626.       developer's stuff. 
  627.  
  628.      Andrew Pavel Zabolotny for his very valuable HTML2IPF tool, with which I 
  629.       created this online documentation. (I hate IPF.) He is also the developer 
  630.       of lxLite. (No WWW address for this.) 
  631.  
  632.      The development team of GIMP for Linux the most impressive graphics 
  633.       package available, and to those capable people who have made the OS/2 
  634.       version. This is what I've created most graphics with. 
  635.  
  636.  
  637. ΓòÉΓòÉΓòÉ 2.5. Credits ΓòÉΓòÉΓòÉ
  638.  
  639. XFolder contains original or modified code developed by the following people 
  640. (in alphabetical order): 
  641.  
  642.      ARAKAWA Atsushi, Japan (arakaw@ibm.net): porting APM power-off code for 
  643.       XFolder 
  644.  
  645.      John Buckley, UK: better NEWOBJ.CMD for XFolder 
  646.  
  647.      Monte Copeland, IBM: exception handling (1993) 
  648.  
  649.      Chris Hanson, MIT, USA: Extended Attributes handling (1995) (EALIB.ZIP at 
  650.       Hobbes) 
  651.  
  652.      Henk Kelder, Netherlands: OS2.INI/OS2SYS.INI WPS entries and WPS EAs 
  653.       handling (1998) 
  654.  
  655.      Gilles Kohl: C string handling routines (1992) 
  656.  
  657.      Ekkehard Kraemer, Germany: hard drive detection found at 
  658.       http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt6364.HTML 
  659.  
  660.      Dan Libby: PM container helper function found at 
  661.       http://zebra.asta.fh-weingarten.de/os2/Snippets/Isdr8319.HTML (1996) 
  662.  
  663.      Kai Uwe Rommel, Germany: DosQProcStatus handling code (1992-94) (PROC.ZIP 
  664.       at Hobbes) 
  665.  
  666.      Roman Stangl, Austria: rebooting OS/2, taken from EDM/2 vol. 5, issue 9; 
  667.       his APM/2 code (from apm2v14.zip at Hobbes); exception handling code from 
  668.       Program Commander/2 
  669.  
  670.      Mark Stern, Belgium: C string handling routines (1993) 
  671.  
  672.      Uri J. Stern, USA (?): killing the tasklist window 
  673.       (http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt8881.HTML) 
  674.  
  675.  plus parts of the code samples from IBM's OS/2 Warp 3 Developer's Toolkit. If 
  676.  XFolder should contain any more bugs, they're probably from there. ;-) 
  677.  
  678.  If anybody thinks that I have forgotten him or her, this is not intentional. 
  679.  Drop me a note and I'll add you to this page. 
  680.  
  681.  The information about the CONFIG.SYS settings is mostly based on the OS/2 
  682.  command reference and on the descriptions in the CNFGINFO package available at 
  683.  Hobbes. 
  684.  
  685.  Most of the information about the WPS classes is also taken from the OS/2 Warp 
  686.  3 Developer's Toolkit, some of it I've found out myself. 
  687.  
  688.  
  689. ΓòÉΓòÉΓòÉ 2.6. Trademarks ΓòÉΓòÉΓòÉ
  690.  
  691. The following terms are trademarks of the IBM Corporation in the United States 
  692. or other countries or both: 
  693.  
  694. C-Set/2 
  695. IBM 
  696. Operating System/2 
  697. OS/2 
  698. OS/2 Warp 
  699. Presentation Manager 
  700. SOM 
  701. System Object Model 
  702. VisualAge 
  703. WarpCenter 
  704. Workplace Shell 
  705.  
  706. Netscape and Netscape Navigator are trademarks of Netscape Communications 
  707. Corporation. 
  708.  
  709. Other company, product, or service names may be trademarks or service marks of 
  710. others. They are not specifically marked. 
  711.  
  712. Any mention of a product in this publication does not constitute an endorsement 
  713. or affiliation. 
  714.  
  715.  
  716. ΓòÉΓòÉΓòÉ 3. Introduction -- Start Here ΓòÉΓòÉΓòÉ
  717.  
  718. Welcome! 
  719.  
  720. Overview 
  721.  
  722. Request for help 
  723.  
  724.  
  725. ΓòÉΓòÉΓòÉ 3.1. Welcome to XFolder! ΓòÉΓòÉΓòÉ
  726.  
  727. Welcome to XFolder! 
  728.  
  729. XFolder was written to give the OS/2 Workplace Shell (WPS) some features which 
  730. I have always missed. 
  731.  
  732. In my view, the WPS ist still the one feature which makes OS/2 stand out 
  733. compared to other operating systems. While other operating systems (especially 
  734. Linux) have by now reached a stability which is at least comparable, if not 
  735. greater than OS/2's, there is nothing that I know of which can compare to the 
  736. WPS in terms of productivity, flexibility and superior overall concept. 
  737.  
  738. However, IBM has -- even after the last update, OS/2 Warp 4 -- not fully 
  739. exhausted the WPS's potential, especially with respect to the following: 
  740.  
  741.      Even thouth the OS/2 "templates" concept is very powerful, it is not very 
  742.       comfortable to always have to drag objects from the Templates folder in 
  743.       order to create objects -- especially since this folder takes ages until 
  744.       all objects are displayed. On the other hand, although Windows 95 is a 
  745.       truly evil operating system, its folders there have a handy function: you 
  746.       can put links into the "\Windows\ShellNew" directory, and these can then 
  747.       be created from all folders. 
  748.  
  749.      The truly superior object-oriented concept falls short of its potential 
  750.       when it comes to context menus. There is just no function to modify 
  751.       context menus globally for all objects. 
  752.  
  753.      The same applies to folder sorting. 
  754.  
  755.      OS/2 traditionally does not like keyboard shortcuts. 
  756.  
  757.      The OS/2 Shutdown is a sensible feature, but it can neither be terminated 
  758.       nor configured in any way. 
  759.  
  760.      In many places the WPS is not as productive as it could be, because in 
  761.       certain situations, the user always has to perform the same actions 
  762.       sequentially, which could be abbreviated. For example, one almost always 
  763.       changes the title after creating an object, one almost always goes 
  764.       through 18 menu pages to change a certain folder setting, and after 
  765.       expanding a folder tree view, one needs to scroll down the folder 
  766.       contents manually. 
  767.  
  768.      Oh yes, and folder status bars would be handy too, without having to load 
  769.       extra software which slows down performance. 
  770.  
  771.  XFolder addresses these problems by introducing a number of WPS class 
  772.  replacements. Among others, XFolder replaces the WPS folder class ("WPFolder") 
  773.  to introduce the many features which are described in this online reference. 
  774.  
  775.  Previous versions of XFolder pretty much dealt with context menus "only"; by 
  776.  now, however, XFolder has come to a point where it's improving many aspects of 
  777.  the Workplace Shell at many different places. To implement this, XFolder by 
  778.  now not only replaces the WPFolder class, but many others too. These 
  779.  replacements should be totally transparent to you: they just introduce new 
  780.  features, and you don't have to deal with any WPS internals. 
  781.  
  782.  XFolder contains exactly those features I have missed working daily with OS/2; 
  783.  I hope that you consider XFolder just as useful as I do. 
  784.  
  785.  XFolder does not primarily intend to be a replacement for other popular WPS 
  786.  enhancers. It is intended to fill gaps, not to be competition for other 
  787.  freeware utilities. You might however find features in XFolder which are 
  788.  otherwise available only in shareware or commercial programs, because I 
  789.  strongly feel that OS/2 needs more freeware programs. After all, this is what 
  790.  makes Linux alive. 
  791.  
  792.  
  793. ΓòÉΓòÉΓòÉ 3.2. Overview ΓòÉΓòÉΓòÉ
  794.  
  795. Among others, XFolder extends your Workplace Shell by introducing the following 
  796. features: 
  797.  
  798.    1. New standard context menu items for folders and data files, such as quick 
  799.       folder settings, "Select by name", "Snap to grid", "Copy filename" etc. 
  800.  
  801.    2. Creating objects from context menus. 
  802.  
  803.    3. Folder context menu items are freely configurable by placing objects into 
  804.       a special configuration folder. 
  805.  
  806.    4. Display of folder contents in context menus for quicker access without 
  807.       having to open a folder. 
  808.  
  809.    5. Display of the full folder path in a folder's window title. 
  810.  
  811.    6. The prettiest and most flexible folder status bars on the planet. ;-) 
  812.  
  813.    7. Extended folder sort functions: additional sort criteria and system-wide 
  814.       sort settings. 
  815.  
  816.    8. Auto-scroll Tree views feature. 
  817.  
  818.    9. Preparing folders for QuickOpen at WPS startup. 
  819.  
  820.   10. Folder hotkeys for frequently used folder/file operations. 
  821.  
  822.   11. Replaceable system icons for the most common object types. 
  823.  
  824.   12. "Restart WPS" feature which doesn't ruin your WPS settings. 
  825.  
  826.   13. Extended Shutdown with a number of useful enhancements: automatic reboot 
  827.       options with BootManager support ("boot to Linux"), Shutdown can be 
  828.       cancelled, and hanging applications can be skipped. 
  829.  
  830.   14. New Startup / Shutdown folders. 
  831.  
  832.   15. User-friendly WPS class list for class manipulations. 
  833.  
  834.   16. "OS/2 Kernel" object for CONFIG.SYS settings. 
  835.  
  836.  Note: A few features are disabled per default to prevent problems already 
  837.  after XFolder has been installed, because these might cause problems on some 
  838.  systems. These features are: 
  839.  
  840.      the Extended Shutdown; this can be found in a new settings page of the 
  841.       Desktop's Settings notebook; 
  842.  
  843.      folder status bars; these can be enabled on the "Status bars" page in the 
  844.       new "Workplace Shell" object; 
  845.  
  846.      the extended sort functions; these can be enabled on the "Sort" page in 
  847.       the new "Workplace Shell" object; 
  848.  
  849.      display of icons in the new "folder content" functions; this can be 
  850.       enabled on the "Context menus" page in the new "Workplace Shell" object. 
  851.  
  852.  
  853. ΓòÉΓòÉΓòÉ 3.3. Request For Help ΓòÉΓòÉΓòÉ
  854.  
  855. If you like XFolder and would like to contribute to it, your support will be 
  856. very welcome. XFolder is slowly beginning to become too complex to be handled 
  857. by one person all alone. 
  858.  
  859. You don't have to be a programmer to help. I'd appreciate any support in the 
  860. following areas: 
  861.  
  862.      Translations. XFolder is designed to be translateable in a fairly easy 
  863.       way. All language-dependent parts have been separated from the actual 
  864.       "intelligence" of the program into separate files, which can be 
  865.       translated independently. 
  866.  
  867.       If you're interested in translating XFolder to your language, you can 
  868.       simply download the XFolder sources from my homepage, which contain 
  869.       everything neccessary for this. You don't have to be a programmer to do 
  870.       this, but it would be of great help if you knew HTML, since both 
  871.       XFolder's Online Reference and the help file were originally written in 
  872.       HTML and then simply converted to the IBM format, which I dislike very 
  873.       much. 
  874.  
  875.       In this case, please contact me, so I can add you to my mailing list to 
  876.       allow you to get news about changes in time. 
  877.  
  878.      Documentation. I am looking for someone to take over maintenance of the 
  879.       XFolder INF and HLP files. It just takes too much time away from 
  880.       programming to always have to add documentation while adding new 
  881.       features, and I tend to overlook stuff sometimes. This applies especially 
  882.       to the German documentation. So if you know German and/or English and 
  883.       HTML, please contact me. 
  884.  
  885.      If you're a programmer and have some experience in PM and/or WPS 
  886.       programming, please contact me also. I have great plans for XFolder's 
  887.       future and would like to turn it into more of an "XWPS" package to 
  888.       overcome the most obvious WPS limitations which exist today. Since 
  889.       there's little hope that IBM will do anything about this, I believe the 
  890.       OS/2 community needs to do it themselves. The following major things are 
  891.       on my to-do list (I am not listing the "little" features that I'll add 
  892.       myself soon): 
  893.  
  894.  
  895.         1. WPS file handling. This needs some serious reworking. I cannot 
  896.            believe that the WPS hangs every other time one copies more than a 
  897.            dozen files. File handling is the main task of an operating system's 
  898.            shell, and the current implementation needs at least the following 
  899.            enhancements: thread-safety, speed, proper progress bars when 
  900.            copying, a "Cancel" button that's not always disabled, more 
  901.            meaningful error messages etc.pp. This will require all of the WPS 
  902.            file-handling methods to be reworked (wpCopy, wpMove etc.). 
  903.  
  904.         2. Populating folders. One of the reasons that the WPS has become so 
  905.            much slower in Warp 4 is that the WPS now seems to create object 
  906.            handles for every single file while populating a folder, which 
  907.            wasn't the case with Warp 3. Object handles are a thoughtful 
  908.            mechanism which is neccessary for program objects and shadows, but 
  909.            they should only be created when neccessary. I suspect this 
  910.            misbehavior is situated in wpPopulate, which therefore needs some 
  911.            rework too. 
  912.  
  913.         3. Icon handling. Drag'n'drop in the WPS always causes icons to be 
  914.            arranged in a fairly random way. This should be improved. 
  915.  
  916.         4. WPProgram. I have never understood why there's an object for global 
  917.            DOS/Win-OS/2 settings if the program objects don't respect the 
  918.            settings there. We need support for global settings and also global 
  919.            and individual environment variables in program objects so that 
  920.            CONFIG.SYS does not always have to be modified. 
  921.  
  922.         5. WarpCenter. That thing is instable, slow, and does not conform very 
  923.            well with the rest of the WPS. This should be completely 
  924.            reprogrammed. Since XFolder already has code for those "folder 
  925.            content" menus, this shouldn't be too hard to to. 
  926.  
  927.         6. Multi-user support. The WPS is already designed to support multiple 
  928.            users thru the use of multiple OS2.INI files and Desktop 
  929.            hierarchies, so I cannot quite understand why IBM is not 
  930.            implementing this. XFolder could do this; I am thinking of replacing 
  931.            the PROTSHELL and/or RUNWORKPLACE statements in CONFIG.SYS with some 
  932.            XFolder executable, which will then start PMSHELL.EXE with a bunch 
  933.            of preset environment variables, most importantly OS2.INI settings 
  934.            and a UNIX-like HOME environment variable to support multiple 
  935.            configurations for applications in a "home" directory for each user. 
  936.            XFolder should then offer a context menu item to "logoff" or 
  937.            something. 
  938.  
  939.         7. OS/2 also needs to be able to restart Presentation Manager somehow 
  940.            without having to reboot, for example to change display resolutions. 
  941.            The current solution is a joke. If you have any ideas about this, 
  942.            especially how to terminate and restart PM without blocking the 
  943.            system, please contact me. 
  944.  
  945.       So if you're interested in adding any of these features to XFolder (or if 
  946.       you have other suggestions), you'd be very welcome to join the project! 
  947.       Any help is appreciated. 
  948.  
  949.  
  950. ΓòÉΓòÉΓòÉ 4. Installation ΓòÉΓòÉΓòÉ
  951.  
  952. Please select one of the following topics: 
  953.  
  954.    1. Requirements 
  955.  
  956.    2. Compatibility with other software 
  957.  
  958.    3. Installation 
  959.  
  960.    4. Deinstallation -- how to get rid of XFolder 
  961.  
  962.    5. Updating from a previous version of XFolder 
  963.  
  964.    6. Installing National Language Support 
  965.  
  966.  
  967. ΓòÉΓòÉΓòÉ 4.1. Requirements ΓòÉΓòÉΓòÉ
  968.  
  969. XFolder requires at least OS/2 Warp 3. It will NOT run on previous versions, 
  970. for it calls OS/2 API functions not present on OS/2 version 2.x and before. 
  971.  
  972. I have tested XFolder with the following configurations myself (all German 
  973. versions): 
  974.  
  975.      OS/2 Warp 3 no fixpaks installed 
  976.  
  977.      OS/2 Warp 3, fixpak 35 installed 
  978.  
  979.      OS/2 Warp 4, no fixpaks installed 
  980.  
  981.      OS/2 Warp 4, fixpaks 5 and 7 installed 
  982.  
  983.  
  984.  I strongly recommend installing newer fixpaks. See the FAQ section for 
  985.  details. 
  986.  
  987.  Note: I was reported that installation fails under Warp 3, fixpak 31. In this 
  988.  case, you should install a newer fixpak. 
  989.  
  990.  
  991. ΓòÉΓòÉΓòÉ 4.2. Installation ΓòÉΓòÉΓòÉ
  992.  
  993. Before installing XFolder, please read the "Compatibility with other software" 
  994. page in the appendices to this reference. 
  995.  
  996.    1. Unzip the package in a directory of your choice, where you wish XFolder's 
  997.       files to be permanently. 
  998.  
  999.       This directory does NOT have to be on the PATH or LIBPATH. Choose 
  1000.       whatever you like best. 
  1001.  
  1002.       Note: Do not use a directory with spaces in its path, e.g. "D:\WPS 
  1003.       enhancers\XFolder", or the installation will fail. 
  1004.  
  1005.    2. If you have downloaded a National Language Support package also, unzip 
  1006.       this package into the same directory. This should automatically place the 
  1007.       neccessary files into their subdirectories, e.g. zB. XFLDR049.DLL into 
  1008.       the /BIN directory. 
  1009.  
  1010.    3. Start INSTALL.CMD by double-clicking on it or typing "install" at the 
  1011.       command prompt. If you have installed NLS packages, you will also need to 
  1012.       enter the code for the language to install. This will only register the 
  1013.       XFolder WPS classes (residing in XFLDR.DLL) and NOT copy any files. 
  1014.  
  1015.    4. The install script offers you to restart the WPS. This saves you from 
  1016.       rebooting, since only the WPS process will be restarted. Alternatively, 
  1017.       you can shut down and reboot yourself. After doing one of the two, the 
  1018.       WPS will recognize the XFolder classes. 
  1019.  
  1020.       Please be aware of the fact that once the class is recognized by the WPS 
  1021.       (after the restart), you CANNOT move the XFolder directory to a different 
  1022.       place, since the WPS locks the XFLDR.DLL file. So, before running 
  1023.       INSTALL.CMD, move the XFolder files to the location where you want them 
  1024.       to remain permanently (step 1 above). 
  1025.  
  1026.  That's all! 
  1027.  
  1028.  After the restart, XFolder will automatically create a default configuration 
  1029.  folder. If you wish to recreate this default configuration, simply delete the 
  1030.  existing configuration folder; as soon as you press the right mouse button on 
  1031.  a folder, XFolder will complain and recreate the default configuration folder. 
  1032.  
  1033.  XFolder neither changes CONFIG.SYS settings nor does it copy any files into 
  1034.  OS/2 system directories. Everything XFolder needs is situated in its own 
  1035.  directory. The only things XFolder needs to work properly are a number of 
  1036.  settings in OS2.INI, which will be removed when you uninstall XFolder. 
  1037.  
  1038.  
  1039. ΓòÉΓòÉΓòÉ 4.3. De-installation ΓòÉΓòÉΓòÉ
  1040.  
  1041. Simply run INSTALL.CMD again. When prompted for whether you wish to register or 
  1042. unregister XFolder, select "unregister". 
  1043.  
  1044. Reboot, and everything will be as it was. You can then delete the XFolder 
  1045. directory, if you wish. 
  1046.  
  1047. If you wish to remove XFolder because you don't consider it to be of any use 
  1048. for you, that's fine. 
  1049.  
  1050. However, if you remove it because it does not seem to be working right or 
  1051. messes up your system, please contact me so I can improve it. 
  1052.  
  1053.  
  1054. ΓòÉΓòÉΓòÉ 4.4. Updating from a Previous Version of XFolder ΓòÉΓòÉΓòÉ
  1055.  
  1056. Basically, you only have to use INSTALL.CMD as described in the Installation 
  1057. section. 
  1058.  
  1059. However, there are a few extra rules you must follow when updating: 
  1060.  
  1061.    1. Since the WPS has locked the XFLDR.DLL file, DO NOT unzip the new version 
  1062.       in the same directory where you placed the old version; since XFLDR.DLL 
  1063.       is locked by the WPS, it cannot be overwritten. 
  1064.  
  1065.       Instead, unzip the new version in a DIFFERENT directory of your choice 
  1066.       (name it "NewXFolder", for example). 
  1067.  
  1068.       Alternatively, you can de-install the old XFolder version and restart the 
  1069.       WPS. This should unlock the XFolder files. Then copy the new files into 
  1070.       the old XFolder directory and then install the new version. 
  1071.  
  1072.    2. After you have done so, run INSTALL.CMD. This will automatically 
  1073.       de-register the old version of XFolder and register the new version. 
  1074.  
  1075.    3. After restarting the WPS, you can delete the old XFolder directory (the 
  1076.       one with XFolder's old files, not the configuration folder). 
  1077.  
  1078.  Important notes: A few things change with every XFolder version, sometimes 
  1079.  causing incompatibilities when updating XFolder. 
  1080.  
  1081.    1. Do not be surprised that since V0.60, the "Recreate default 
  1082.       configuration" item has been removed from the install program. XFolder 
  1083.       now handles this itself; if you wish to recreate the default 
  1084.       configuration folder, simply delete your existing one, and XFolder will 
  1085.       offer you to recreate it. 
  1086.  
  1087.    2. Starting with version 0.50, the XFolder Global Settings have been moved 
  1088.       into OS/2's System notebook. Please see Global Settings for details. The 
  1089.       "XFolder Global Settings" program (XFSETUP.EXE) which was provided with 
  1090.       XFolder 0.4x will have no effect on settings of this version. In other 
  1091.       words, you can start it, but whatever you configure in there will not 
  1092.       influence this version of XFolder in any way. 
  1093.  
  1094.    3. Unfortunately, since the internal settings format changes with every new 
  1095.       version, your existing settings will be lost when you're upgrading from a 
  1096.       previous version. 
  1097.  
  1098.    4. Starting with version 0.30, XFolder has changed the way program objects 
  1099.       are handled. The name of the folder whose context menu was used is now by 
  1100.       default sent as an additional parameter to the started application. 
  1101.  
  1102.       If you're updating from XFolder V0.21 and the applications defined in 
  1103.       your existing configuration folder start displaying error messages, you 
  1104.       may need to put an extra "%" sign into the parameters list of the 
  1105.       corresponding program object in the configuration folder. See "Program 
  1106.       Objects" for details on this. 
  1107.  
  1108.  If you experience anything unexpected with your new version of XFolder, please 
  1109.  look in the "Revision history" section to find out what has been added to 
  1110.  XFolder. 
  1111.  
  1112.  
  1113. ΓòÉΓòÉΓòÉ 4.5. Installing National Language Support ΓòÉΓòÉΓòÉ
  1114.  
  1115. Starting with V0.52, XFolder is capable of supporting other languages than just 
  1116. English. While XFolder versions before V0.82 containes NLS support for both 
  1117. English and German, German NLS support has now been placed into a separate 
  1118. package. 
  1119.  
  1120. For languages other than English however, you will need an XFolder National 
  1121. Language Support (NLS) package. Such a package will contain a number of files, 
  1122. among them a new Dynamic Link Library (DLL) for XFolder itself, a new help file 
  1123. (.HLP) and a new Online Reference (.INF). Each of these files carries a 
  1124. three-digit language code in its respective file name, as defined in the OS/2 
  1125. Online Reference. For example, the English files, which are already included 
  1126. with XFolder, all have a "001" code (for US English) in their names. 
  1127.  
  1128. Please check my homepage for available NLS packages. 
  1129.  
  1130. In order to install an NLS package after you have installed the main XFolder 
  1131. package, perform the following steps: 
  1132.  
  1133.      Unzip the NLS package and place the resulting files in the corresponding 
  1134.       subdirectories of the XFolder installation directory. 
  1135.  
  1136.      In the "Workplace Shell" object, select the "XFolder Internals" page 
  1137.       (which comes after the first "XFolder" page). 
  1138.  
  1139.      In the "Language" field you should now find the new language of the NLS 
  1140.       package. Select it, upon which the "Workplace Shell" object should be 
  1141.       closed and the language should change. 
  1142.  
  1143.  I don't have much influence on NLS DLLs, except for the German one. If you're 
  1144.  interested in translating XFolder to your language, you can simply download 
  1145.  the XFolder sources from my homepage, which contain everything neccessary for 
  1146.  this. You don't have to be a programmer to do this, but it would be of great 
  1147.  help if you knew HTML, since both XFolder's Online Reference and the help file 
  1148.  were originally written in HTML and then simply converted to the IBM format, 
  1149.  which I dislike very much. If you're interested in translating, please contact 
  1150.  me, so I can add you to my mailing list to allow you to get news about changes 
  1151.  in time. 
  1152.  
  1153.  
  1154. ΓòÉΓòÉΓòÉ 5. Context Menu Features ΓòÉΓòÉΓòÉ
  1155.  
  1156.      Default extensions to folders' context menus 
  1157.  
  1158.      Creating objects with XFolder 
  1159.  
  1160.      Configuring context menus 
  1161.  
  1162.      Extra features with program objects 
  1163.  
  1164.      The order of menu items 
  1165.  
  1166.      The "Folder content" functions 
  1167.  
  1168.      "Select by name" 
  1169.  
  1170.      "Snap to grid" 
  1171.  
  1172.      "Copy filename" 
  1173.  
  1174.  
  1175. ΓòÉΓòÉΓòÉ 5.1. Default Additions to the Context Menus ΓòÉΓòÉΓòÉ
  1176.  
  1177. The XFolder WPS class enables you to freely add new items to the context menu 
  1178. of all folders on your system. 
  1179.  
  1180. Here's a screenshot for the preset XFolder configuration (as defined by the 
  1181. install script): 
  1182.  
  1183. (Obviously, this screenshot was taken on a German OS/2 version, but this 
  1184. shouldn't make any difference.) 
  1185.  
  1186. You will see the same new popup items on all folders on your system. What 
  1187. happens now if you press one of the items in the submenu is that XFolder 
  1188. performs the selected action on just the folder that the context menu was 
  1189. opened for. 
  1190.  
  1191. The default options installed by installation script are: 
  1192.  
  1193.      The "Command lines" submenu contains four items for OS/2 and DOS command 
  1194.       lines, in a window and in fullscreen, respectively. If you select any of 
  1195.       these, a command session will be started with the directory of the folder 
  1196.       already changed to. This way you don't have to "cd" your way through a 
  1197.       whole directory tree in order to perform command line actions on a 
  1198.       certain folder. 
  1199.  
  1200.      The "Create another" submenu contains items for quickly creating certain 
  1201.       objects in the selected folder, without having to open the Templates 
  1202.       folder every time. Presently, you can create folders and (empty) program 
  1203.       objects this way. 
  1204.  
  1205.       See "Creating objects with XFolder" for more. 
  1206.  
  1207.      The "Quick Settings" submenu offers a few handy settings for folders with 
  1208.       a single mouse click, instead of having to go into the settings notebook 
  1209.       and click through several pages. Here you will find "Always sort this 
  1210.       folder" and items for changing the icon sizes and such. 
  1211.  
  1212.      The "XFolder" submenu contains items for opening this online help and 
  1213.       opening the XFolder Configuration Folder, which is described on a 
  1214.       separate page. 
  1215.  
  1216.      The "Netscape (DDE)" item will make Netscape display the directory of the 
  1217.       respective current folder. (This item was only installed if Netscape was 
  1218.       found on your PATH.) For this, XFolder uses its "Netscape DDE Interface" 
  1219.       (NETSCDDE.EXE), which is included with the XFolder package and will check 
  1220.       if Netscape is already running; if so, the running instance will be used 
  1221.       for displaying the folder instead of always starting a new copy of 
  1222.       Netscape. (See "Related files" for more.) 
  1223.  
  1224.      The "Treesize" item (which is new with XFolder V0.81) will display a new 
  1225.       window showing you the subdirectory tree of the current folder with the 
  1226.       disk usage for each subdirectory. For this, XFolder uses the TREESIZE.EXE 
  1227.       program, which is also included with the XFolder package. (See "Related 
  1228.       files" for more.) 
  1229.  
  1230.  XFolder lets you freely modify these context menu items. See "Configuring 
  1231.  context menus" for details. 
  1232.  
  1233.  
  1234. ΓòÉΓòÉΓòÉ 5.2. Creating Objects with XFolder ΓòÉΓòÉΓòÉ
  1235.  
  1236. In the default configuration, the "Create another" context submenu contains 
  1237. items for creating WPS objects. By selecting one of the items in this submenu, 
  1238. XFolder will create a new object in the folder whose context menu was used. 
  1239.  
  1240. Per default, if the folder is open, XFolder will make the title of the new 
  1241. object editable, just as if you had clicked on it with the Alt key pressed: 
  1242.  
  1243. However, if you hold down the Shift key while selecting the menu item, XFolder 
  1244. will automatically open the Settings notebook of the new object after creation. 
  1245.  
  1246. You can change this behavior on the "Context menus" pages in the new "Workplace 
  1247. Shell" object. 
  1248.  
  1249.  
  1250. ΓòÉΓòÉΓòÉ 5.3. Configuring Context Menus ΓòÉΓòÉΓòÉ
  1251.  
  1252. What makes XFolder different from other folder enhancements is that you can 
  1253. FREELY CONFIGURE popup menus without having to reboot. 
  1254.  
  1255. This is done with the use of a separate Configuration Folder, which looks just 
  1256. like any normal WPS folder. The installation script placed it on your desktop, 
  1257. but you may move it anywhere you like. 
  1258.  
  1259. Whatever you put into this configuration folder will immediately appear in the 
  1260. context menus of all the folders on your system. 
  1261.  
  1262. Let's clarify this by taking a look at the pre-set configuration again: 
  1263.  
  1264. The pre-set configuration folder looks like this: 
  1265.  
  1266. As you can see, the folders and program objects in the XFolder Configuration 
  1267. folder correspond to the items in the context menu. 
  1268.  
  1269. However, the action which XFolder performs upon selecting a context menu items 
  1270. depends on the type of object that corresponds to the menu item. You need to 
  1271. differentiate between the following types of objects: 
  1272.  
  1273.    1. Program objects will be started when the corresponding menu item is 
  1274.       selected. (Actually, not the program object will be started, but the 
  1275.       program defined in the program object's Settings notebook.) 
  1276.  
  1277.       The four "command line" objects are pretty much copies of the ones that 
  1278.       are also installed by OS/2 itself. The objects in the "Create a~nother" 
  1279.       folder all point to a little REXX script in the XFolder installation 
  1280.       directory, which can create folders and program objects. 
  1281.  
  1282.       XFolder can perform a number of useful tricks on program objects. Please 
  1283.       read through the "Extra features for program objects" page to learn more. 
  1284.  
  1285.    2. Putting another folder in the configuration folder will create a 
  1286.       cascading submenu in the context menus. In this "subfolder", you can 
  1287.       place more objects and folders. This way, you can create a whole popup 
  1288.       menu hierarchy (as can be seen in the default setup above). 
  1289.  
  1290.    3. A template or shadow of a template will result in the creation of a new 
  1291.       object from it when the respective menu item is selected. The new object 
  1292.       will be created in the folder whose context menu was used. 
  1293.  
  1294.       For example, if you have created a folder template with special settings 
  1295.       for fonts, colors, etc., you can put a shadow of it into a configuration 
  1296.       folder, and when you select its corresponding menu item from a folder's 
  1297.       context menu, a new folder will be created in this folder, just as if you 
  1298.       had dragged a folder from the template. 
  1299.  
  1300.       See "Creating objects with XFolder" for more. 
  1301.  
  1302.    4. All other objects will simply be opened when their corresponding menu 
  1303.       item was selected. This includes shadows of program objects, shadows of 
  1304.       folders, "real" files, shadows of them, and so on. 
  1305.  
  1306.       For example, you can put a shadow of your favorite data file (e.g. "To-do 
  1307.       list") into the context menus. Another example is the shadow of the OS/2 
  1308.       System notebook in the "XFolder" submenu, with which you can access the 
  1309.       XFolder Global Settings. 
  1310.  
  1311.    5. Starting with version 0.50, you can insert menu separators by putting a 
  1312.       program title with the exact title of "---" into a configuration folder. 
  1313.       See the next page for details. 
  1314.  
  1315.  Note that the "~" character within an object's title turns into an underlined 
  1316.  character in the context menu, allowing for keyboard shortcuts. 
  1317.  
  1318.  As simple it may seem, the combined folder/object approach of the XFolder 
  1319.  configuration folder is very powerful. You can add all your favorite programs, 
  1320.  templates, and data files here which make sense to be executed in any 
  1321.  directory. 
  1322.  
  1323.  If you know how to program REXX, you're even better off: you can write your 
  1324.  own scripts that manipulate the WPS, create program objects for them and put 
  1325.  these in the configuration folders. On the "Frequently Asked Questions" page, 
  1326.  you can find out more about this. 
  1327.  
  1328.  
  1329. ΓòÉΓòÉΓòÉ 5.4. Extra Features with Program Objects ΓòÉΓòÉΓòÉ
  1330.  
  1331. While you can put any object into the configuration folders, the use of program 
  1332. objects is recommended for starting programs from context menus. I mean "real" 
  1333. program objects, as opposed to shadows of your existing program objects. 
  1334.  
  1335. The reason for this is the following: Whenever XFolder starts a program object 
  1336. in the configuration folders (that is, when you select the respective menu item 
  1337. in a context menu), it can perform a few tricks on them. 
  1338.  
  1339. The tricks are the following: 
  1340.  
  1341.    1. If the startup directory of the program object is empty, XFolder will 
  1342.       temporarily insert the directory of the folder whose context menu was 
  1343.       used therein. This means that you can start the same program from all 
  1344.       folders' context menus, but with a variable startup directory, being the 
  1345.       directory of the folder whose context menu was used. 
  1346.  
  1347.       Take the default configuration again: the four command line objects have 
  1348.       empty startup directories. This is why you can start command lines "in" 
  1349.       the folder whose context menu was used. 
  1350.  
  1351.       If you wish to disable this behaviour, simply specify a startup directory 
  1352.       in a program object (e.g. "C:\"), and XFolder will leave it alone. 
  1353.       Instead, it will always use the startup directory which you have 
  1354.       specified. 
  1355.  
  1356.    2. If the parameter list of the program object does not contain a trailing 
  1357.       "%" sign, the directory of the folder you used will be passed as a 
  1358.       parameter to the program. 
  1359.  
  1360.       This is used by the "Netscape" menu entry of the default configuration: 
  1361.       this way, Netscape will display the contents of the folder which it was 
  1362.       called from. 
  1363.  
  1364.       You can disable this feature completely in the XFolder Global Settings. 
  1365.  
  1366.       If you wish to disable this behaviour for one menu item only (not all 
  1367.       programs can handle directories as parameters), add a "%" sign to the 
  1368.       "Parameters" list of the respective program object. XFolder will omit 
  1369.       passing the additional parameter. This is the case, for example, with the 
  1370.       four command line objects of the default configuration. 
  1371.  
  1372.       Examples: Putting only "%" in the parameters list will not pass any 
  1373.       parameters at all; putting "text.txt %" in the parameters list will 
  1374.       always pass "text.txt" without the folder name as a parameter. 
  1375.  
  1376.       I know this way of configuring XFolder's behaviour is not very intuitive, 
  1377.       but I implemented it for compatibility with the WPS's behaviour when 
  1378.       calling context menu items that were added with the "Menu" page in the 
  1379.       settings notebook. I then found out that it works with Netscape as well, 
  1380.       so even better. 
  1381.  
  1382.    3. You can append the contents of the clipboard to the parameter list of the 
  1383.       clipboard by putting a "%**C" symbol into the parameter list. This can 
  1384.       appear at any position of the parameters. This is case-sensitive; "%**c" 
  1385.       (in lower case) will NOT work. 
  1386.  
  1387.       Example: Path and filename = "e.exe"; parameters = "%**C" will start the 
  1388.       system editor, interpreting the contents of the clipboard as a file name. 
  1389.  
  1390.       Note that the contents of the clipboard will be truncated so that the 
  1391.       maximum length of the parameter list will not be exceeded. With OS/2, the 
  1392.       maximum path length is 260 characters. This limitation avoids passing 64 
  1393.       K to the program, in the worst case. 
  1394.  
  1395.    4. If the program title contains a "~" character (which you have probably 
  1396.       inserted to add a keyboard shortcut, as described on the previous page), 
  1397.       XFolder will remove it when starting the program. You can also switch off 
  1398.       this behavior in the XFolder Global Settings, where you will find 
  1399.       additional help on this. 
  1400.  
  1401.    5. You can now (V0.51) insert a separator into a menu by specifying "---" 
  1402.       (exactly, three dashes) in a program object's title. (A separator is a 
  1403.       horizontal line to optically separate groups of menu items.) In this 
  1404.       case, XFolder will ignore the program object's settings (such as the 
  1405.       executable, parameters etc.) and simply insert a separator into the menu. 
  1406.       This works for the main context menu as well as submenus. 
  1407.  
  1408.       Note: If you are using the (outstanding) WPTOOLS by Henk kelder, you 
  1409.       should enter a valid program executable even with these separator program 
  1410.       objects, or otherwise CHECKINI will keep complaining that the object is 
  1411.       not valid. Even though an executable exists, XFolder will then only 
  1412.       insert a menu separator. 
  1413.  
  1414.  XFolder implements the features 1.-4. by actually changing the program 
  1415.  object's settings for a tenth of a second: the settings are changed, the 
  1416.  program object is opened, and then the settings are reset to the original 
  1417.  values. 
  1418.  
  1419.  Please note that XFolder only performs these described actions on "real" 
  1420.  program objects in the configuration folders, NOT on shadows pointing to other 
  1421.  program objects. I am not planning to implement this behaviour on shadows too, 
  1422.  because I do not intend to modify objects which are situated elsewhere in your 
  1423.  desktop hierarchy, ouside the configuration folders. 
  1424.  
  1425.  As a consequence, you ought to put COPIES of your program objects into the 
  1426.  configuration folders, instead of creating shadows for them. Again: shadows of 
  1427.  program objects are opened too, but without changing any settings. 
  1428.  
  1429.  Please consult the "Frequently Asked Questions" section for a few more hints 
  1430.  on creating program objects. 
  1431.  
  1432.  
  1433. ΓòÉΓòÉΓòÉ 5.5. The Order of Menu Items ΓòÉΓòÉΓòÉ
  1434.  
  1435. Since V0.60 you may (finally) change the order of menu items within a context 
  1436. menu or one of its submenus. (Previously, this was really tiresome to 
  1437. accomplish.) 
  1438.  
  1439. Simply open the XFolder Configuration Folder or one of its subfolders 
  1440.  
  1441.      either in Details view 
  1442.  
  1443.      or in Icon view; for this, however, you will have to enable "Flowed" or 
  1444.       "Nonflowed" on the "Display" page in this folder's settings notebook. 
  1445.       (This is more quickly to accomplish with the XFolder "Small icons in icon 
  1446.       and tree views" menu items, by the way.) 
  1447.  
  1448.  If you now change the order of the objects in this folder with the mouse (drag 
  1449.  and drop) and then close this configuration folder, you will see that the 
  1450.  order of menu items has changed accordingly. 
  1451.  
  1452.  
  1453. ΓòÉΓòÉΓòÉ 5.6. The "Folder Content" Functions ΓòÉΓòÉΓòÉ
  1454.  
  1455. Starting with V0.70, XFolder offers you to view the contents of folders from 
  1456. the context menus without having to open them. This can be very handy if you 
  1457. need to open a single file from a folder, but you do not want to open a dozen 
  1458. folders in order to reach it. 
  1459.  
  1460. Here's an example (the XFolder development directory from the author's 
  1461. harddisk): 
  1462.  
  1463. As you can see, the content of the "XFolder" folder is displayed; the 
  1464. subfolders in this folders lead to subsequent submenus. 
  1465.  
  1466. The "Folder content" menus behave just like the WarpCenter's do: if you click 
  1467. on an item, its default view will be opened. If you click on a folder menu 
  1468. item, another submenu with the contents of this folder will be opened; if you 
  1469. click on it with mouse button 2, the WPS folder will be opened as a window 
  1470. instead. 
  1471.  
  1472. The "Folder content" functions are used in two different contexts: 
  1473.  
  1474.      For one, you can decide to always have the contents of the folder whose 
  1475.       context menu you have opened displayed in this very context menu. The 
  1476.       respective context menu item is then called "Folder contents" (how 
  1477.       surprising). As a result, the "Folder contents" menu is different for 
  1478.       each context menu. 
  1479.  
  1480.       In the above screenshot, this can be seen with the "Ordnerinhalt" menu 
  1481.       item (which is German for "Folder content"; sorry, I was just too lazy to 
  1482.       do a second screenshot). 
  1483.  
  1484.       The folder content menus can be switched on and off on the "Context 
  1485.       menus" page in the new "Workplace Shell" object. 
  1486.  
  1487.      Second, you can declare a certain folder to be one of your "favorite" 
  1488.       folders. This can be done on the "XFolder" page in every folder's 
  1489.       Settings notebook. All "favorite" folders will be displayed in all 
  1490.       context menus; you can, for example, switch this feature on for the 
  1491.       Desktop, and you will be able to reach the Desktop and everything that 
  1492.       resides on and below its folder hierarchy from all context menus. (This 
  1493.       works for the Drives folder also, by the way.) 
  1494.  
  1495.       In the above screenshot, the "frequent" menu item is a folder on my 
  1496.       Desktop in which I put things I access frequently. I have declared this 
  1497.       folder to be my only "favorite" folder, so everything I put in this 
  1498.       folder will appear in all context menus. 
  1499.  
  1500.  
  1501. ΓòÉΓòÉΓòÉ 5.7. "Select by name" ΓòÉΓòÉΓòÉ
  1502.  
  1503. XFolder now (V0.70) allows you to select only some objects in a folder 
  1504. according to a typical specification. 
  1505.  
  1506. This is done by using the "Select by name" menu item, which resides in the 
  1507. "Select" menu on Warp 3; on Warp 4, this menu item can be found in the "View" 
  1508. menu. 
  1509.  
  1510. You then get a dialog window where you may enter a file specification such as 
  1511. "*.txt" and select or deselect files according to this specification. 
  1512.  
  1513. Per default, XFolder also defines Ctrl+S as a folder hotkey for this function. 
  1514.  
  1515.  
  1516. ΓòÉΓòÉΓòÉ 5.8. The "Snap to Grid" Feature ΓòÉΓòÉΓòÉ
  1517.  
  1518. XFolder can add a "Snap to grid" menu item to all folder context menus. When 
  1519. selecting it, all objects in the folder will "jump" onto an invisible grid. 
  1520.  
  1521. The "Snap to grid" feature is a bit hard to explain. Just think of a folder 
  1522. whose objects are pretty messed up: how many times have you found yourself 
  1523. trying to align those objects below or next to each other? 
  1524.  
  1525. The "Arrange" menu item doesn't help here, since it reorders the objects 
  1526. completely. Now imagine a set of invisible equidistant lines spread over the 
  1527. folder window, which attract the objects therein when you select "Snap to 
  1528. grid". 
  1529.  
  1530. The "Snap to grid" menu item will only be visible when the following applies: 
  1531.  
  1532.    1. the folder must be open; 
  1533.  
  1534.    2. the folder must have the no-grid icon view (the default for most 
  1535.       folders); it will not be visible for folders in details or tree view or 
  1536.       if you have changed the icon view to "flowed" or "non-flowed" in the 
  1537.       folder's settings dialog; 
  1538.  
  1539.    3. the folder must not have the "Always maintain sort order" setting 
  1540.       enabled. 
  1541.  
  1542.  You can specify the grid's origin and spacing on the "Grid" page in the new 
  1543.  "Workplace Shell" object. 
  1544.  
  1545.  Note: With V0.81, the "Snap to grid" behavior has changed slightly. Per 
  1546.  default, XFolder will only let the currently selected objects snap on the 
  1547.  grid. However, if you hold down the Shift key while selecting that menu item, 
  1548.  all items will be snapped (like in previous versions). 
  1549.  
  1550.  
  1551. ΓòÉΓòÉΓòÉ 5.9. The "Copy Filename" Feature ΓòÉΓòÉΓòÉ
  1552.  
  1553. Since V0.60, XFolder can copy the filename of any file into the clipboard after 
  1554. you select "Copy filename" from the object's context menu. Note that this 
  1555. applies to all file-system objects, not just folders; however, this does not 
  1556. apply to abstract WPS objects (shadows, program objects etc.), because these 
  1557. just don't have a filename. 
  1558.  
  1559. If you select "Copy filename" without holding down the "Shift" key, XFolder 
  1560. will only copy the filename itself. 
  1561.  
  1562. If you hold down the "Shift" key while selecting "Copy filename", XFolder will 
  1563. copy the fully qualified filename, i.e. the drive letter, the path and the 
  1564. filename itself. 
  1565.  
  1566. Assuming that the folder in the above screenshot resides on the Desktop, "Copy 
  1567. filename" would copy "C:\Desktop\Folder" into the clipboard, if you hold down 
  1568. the "Shift" key, "Folder" otherwise. 
  1569.  
  1570. This now (V0.80) also works when you have more than one object selected in the 
  1571. folder. In this case, the filenames of the selected objects are all copied to 
  1572. the clipboard, separated by spaces. 
  1573.  
  1574. XFolder now also defines Ctrl+Insert as a default folder hotkey for copying the 
  1575. filename(s) of the currently selected object(s). 
  1576.  
  1577. You can disable the menu item and change the hotkey(s) in the Global Settings. 
  1578.  
  1579.  
  1580. ΓòÉΓòÉΓòÉ 6. Folder Features ΓòÉΓòÉΓòÉ
  1581.  
  1582.      Full path in window titles 
  1583.  
  1584.      Extended sort options 
  1585.  
  1586.      Auto-scroll Tree views 
  1587.  
  1588.      "Quick Open" folders 
  1589.  
  1590.      Folder hotkeys 
  1591.  
  1592.      Individual settings for the Desktop and folders 
  1593.  
  1594.  
  1595. ΓòÉΓòÉΓòÉ 6.1. Show Full Path in Folder Title ΓòÉΓòÉΓòÉ
  1596.  
  1597. XFolder can now (V0.40) display the full path of the folder in the title of an 
  1598. open folder window. 
  1599.  
  1600. Example: 
  1601.  
  1602. You can even tell XFolder not to exceed a certain number of characters when 
  1603. adding the folder path to the title. XFolder can then truncate the path display 
  1604. like this: 
  1605.  
  1606. You can configure this feature in the XFolder Global Settings dialog. 
  1607.  
  1608.  
  1609. ΓòÉΓòÉΓòÉ 6.2. Extended Sort Options ΓòÉΓòÉΓòÉ
  1610.  
  1611. XFolder now (V0.70) can also enhance the "Sort" functions of the Workplace 
  1612. Shell. 
  1613.  
  1614. Important note: In order to avoid confusion, the sort extensions are disabled 
  1615. by default. You can enable them on the new "Sort" page in the Global Settings. 
  1616. Warning: After you enable the new sort functions, your previous folder sort 
  1617. settings will get lost successively as the WPS activates folders. 
  1618. Unfortunately, this is inevitable, because IBM has barely documented at all how 
  1619. the WPS sort functions are working internally. As a result, you'll have to 
  1620. reconfigure the sort settings for certain folders (which will be explained 
  1621. below). 
  1622.  
  1623. The new XFolder sort features are: 
  1624.  
  1625.      Finally, there are global sort settings, which previously did not exist 
  1626.       in the WPS. While it was possible to set a number of folder settings 
  1627.       globally, until now sorting could only be influenced for each individual 
  1628.       folder, which was quite annoying. XFolder introduces a "Sort" page to the 
  1629.       "System" object for global sort settings, which can be overridden 
  1630.       individually for each folder. 
  1631.  
  1632.      XFolder also gets rid of some of the strange sort settings which nobody 
  1633.       used anyway, such as the "sort class". (This setting did not make much 
  1634.       sense, because WPFolder is the only class which introduces meaningful 
  1635.       sort criteria anyway.) 
  1636.  
  1637.      There is a new item in the "Sort" context submenu for enabling the 
  1638.       "Always maintain sort order" setting quickly. 
  1639.  
  1640.  
  1641.  
  1642.      You can quickly change the default sort criterion for a certain folder by 
  1643.       opening the "Sort" context submenu and holding down the "Shift" key while 
  1644.       selecting a sort criterion. 
  1645.  
  1646.      Most importantly, XFolder introduces three new options to the "Sort" menu 
  1647.       of every folder, which are "Sort by object class", "Sort by extension" 
  1648.       and "Sort folders first": 
  1649.  
  1650.         1. The "Sort by object class" feature sorts the folder content 
  1651.            according to the classes of the contained objects, as they are 
  1652.            visible in the third column of a folder's Details view. 
  1653.  
  1654.         2. The "Sort by extension" option sorts the folder contents by file 
  1655.            name extension, i.e. the characters after the last dot in the object 
  1656.            title. For example, ".BMP" files would be sorted before ".HTM", 
  1657.            ".HTML" and ".ICO" files, in this order. If two files have the same 
  1658.            extension, they are sorted alphabetically within their extension 
  1659.            group. Although file extensions make sense mostly for file-system 
  1660.            objects, abstract objects are sorted in this way too. 
  1661.  
  1662.         3. The "Sort folders first" sorts the folder alphabetically, but puts 
  1663.            all folder objects on top of the list. Shadows of folders are 
  1664.            treated just like regular folders. 
  1665.  
  1666.  
  1667.  Per default, XFolder defines "Ctrl+E" as a folder hotkey for the "Sort by 
  1668.  extension" function. You may also set up a hotkey for the "Sort folders first" 
  1669.  function in the Global Settings, if you wish. 
  1670.  
  1671.  
  1672. ΓòÉΓòÉΓòÉ 6.3. Auto-Scroll Tree Views ΓòÉΓòÉΓòÉ
  1673.  
  1674. XFolder can now (V0.60) monitor open Tree views of folders and automatically 
  1675. scroll down the folder window if neccessary. 
  1676.  
  1677. You have probably encountered this situation a zillion times: you wish to 
  1678. expand a tree of a folder Tree view which is visible at the bottom of the 
  1679. folder window. 
  1680.  
  1681. Normally, if you click on the "plus" sign next to the "dll" directory, the tree 
  1682. will expand, but you will not be able to see its contents. This default OS/2 
  1683. behavior is really tiresome, because almost every other time that a Tree view 
  1684. is expanded, you'll have to scroll down manually to actually see the contained 
  1685. objects. 
  1686.  
  1687. XFolder will now automatically scroll down the folder window if the newly 
  1688. appearing items begin to appear outside the currently visible window area: 
  1689.  
  1690. XFolder does this by internally monitoring the Tree view in the background 
  1691. after you click on the "plus" sign and then, as soon as the WPS is done 
  1692. populating the folder, automatically scrolls down. This "monitoring" does not 
  1693. cause an additional CPU load, because XFolder simply intercepts a single window 
  1694. notification message internally. (For this reason it is totally inconceivable 
  1695. that IBM has not implemented this behavior already.) 
  1696.  
  1697. XFolder will make the bottom-most item that was displayed visible, unless the 
  1698. tree below the folder you clicked on contains too many items to fit into the 
  1699. window. In this case, XFolder will scroll the item which you expanded to the 
  1700. very top of the visible window area. 
  1701.  
  1702. It is probably the best thing to try out this function yourself, in order to 
  1703. get used to it. The OS/2 directory is a good candidate for this. Although this 
  1704. behavior might seem confusing at first, I'm sure that after a while, you'll 
  1705. probably don't want to miss it. 
  1706.  
  1707. You can still disable this feature in the Global Settings. 
  1708.  
  1709.  
  1710. ΓòÉΓòÉΓòÉ 6.4. "Quick Open" Folders ΓòÉΓòÉΓòÉ
  1711.  
  1712. Starting with V0.80, you can tell XFolder to prepare certain folders to display 
  1713. their contents more quickly when you open them. After the WPS has booted, 
  1714. XFolder will go through all folders which have this feature enabled and read in 
  1715. their contents. If you then open one of these folders, its contents will be 
  1716. displayed almost immediately. 
  1717.  
  1718. In order to enable this feature, open the Settings notebook for the folder for 
  1719. which you wish to enable this feature. On the "XFolder" page therein, check the 
  1720. "QuickOpen" flag. 
  1721.  
  1722. After the next WPS startup, XFolder will then read in the contents of that 
  1723. folder and load all the icons. Note that XFolder only does this right after the 
  1724. WPS has booted, so changing the "QuickOpen" flag of a folder has no immediate 
  1725. effect. 
  1726.  
  1727. Depending on how many folders have the "QuickOpen" flag set, WPS bootup might 
  1728. take quite a while. Reading all the icons does not become faster by using this 
  1729. feature. The only difference is that the icons are read earlier. 
  1730.  
  1731.  
  1732. ΓòÉΓòÉΓòÉ 6.5. Folder Hotkeys ΓòÉΓòÉΓòÉ
  1733.  
  1734. XFolder can now (V0.50) add new keyboard accelerators (or hotkeys, or 
  1735. shortcuts, whatever terminology you prefer...) for use within folders. Note 
  1736. that these keys ONLY work when a folder has the focus. They do not work when 
  1737. any other window is currently active. 
  1738.  
  1739. All the following keys are just shortcuts to certain menu items. 
  1740.  
  1741. The default configuration adds the following keys for use within folders: 
  1742.  
  1743.      F5 will refresh the folder contents. 
  1744.  
  1745.      Ctrl+A will select all objects in the folder. 
  1746.  
  1747.      Ctrl+D will de-select all objects in the folder. 
  1748.  
  1749.      Ctrl+S will select objects by name. 
  1750.  
  1751.      Ctrl+N will sort the folder contents by name. 
  1752.  
  1753.      Ctrl+W will sort the folder contents by last write date. 
  1754.  
  1755.      Ctrl+Y will sort the folder contents by type. 
  1756.  
  1757.      Ctrl+Z will sort the folder contents by size. 
  1758.  
  1759.      Ctrl+E will sort the folder contents by file name extension. 
  1760.  
  1761.      Ctrl+Shift+D will open the Details view of the same folder. 
  1762.  
  1763.      Ctrl+Shift+I will open the Icon view of the same folder. 
  1764.  
  1765.      Backspace will open the parent folder (i.e. the folder in which the 
  1766.       currently open folder resides itself). 
  1767.  
  1768.      Shift+Backspace will open the parent folder and close the current folder 
  1769.       also. 
  1770.  
  1771.      Ctrl+Shift+S will open the settings of the current folder. 
  1772.  
  1773.      Ctrl+Insert will copy the filename(s) of the currently selected object(s) 
  1774.       in the folder to the clipboard. 
  1775.  
  1776.  The above keys are part of the XFolder default configuration. You can quite 
  1777.  freely re-assign hotkeys in the Global Settings, where you will find more than 
  1778.  30 configurable items, including many OS/2 Warp 4 menu items. Press the "Help" 
  1779.  button on the settings page for details. 
  1780.  
  1781.  
  1782. ΓòÉΓòÉΓòÉ 6.6. Individual Settings for the Desktop and Folders ΓòÉΓòÉΓòÉ
  1783.  
  1784. While the Global Settings affect all folders at once (hence the name), some 
  1785. settings may also be changed individually for each folder. 
  1786.  
  1787. To accomplish this, XFolder adds a new notebook page to every folder's settings 
  1788. notebook, in which you may override what is specified in the Global Settings. 
  1789. This means, if you configure a certain setting for a single folder, for this 
  1790. folder the Global Settings have no further effect. 
  1791.  
  1792. In addition, XFolder adds a new notebook page to the Desktop only. On this page 
  1793. you may configure the Desktop's menu items, the "Restart WPS" feature, and the 
  1794. eXtended Shutdown procedure. By pressing the "Action" button on this page, you 
  1795. may define your own user reboot actions for the eXtended Shutdown. 
  1796.  
  1797. All of these settings are throughly explained on several help panels which 
  1798. appear when you press the "Help" button on one of these pages. 
  1799.  
  1800.  
  1801. ΓòÉΓòÉΓòÉ 7. Folder Status Bars ΓòÉΓòÉΓòÉ
  1802.  
  1803.      Introduction 
  1804.  
  1805.      Not-so obvious features 
  1806.  
  1807.      Configuring status bars 
  1808.  
  1809.      Common codes for all modes 
  1810.  
  1811.      Common codes for one-object mode 
  1812.  
  1813.      Additional file-system object codes 
  1814.  
  1815.      Additional disk object codes 
  1816.  
  1817.      Additional program object codes 
  1818.  
  1819.      Additional URL object codes 
  1820.  
  1821.  
  1822. ΓòÉΓòÉΓòÉ 7.1. Folder Status Bars ΓòÉΓòÉΓòÉ
  1823.  
  1824. Since V0.70, XFolder offers you the prettiest and most flexible folder status 
  1825. bars (in my view, that is). These are highly configurable on the "Status bars" 
  1826. pages in the new "Workplace Shell" object and can also be switched on and off 
  1827. individually for each folder. 
  1828.  
  1829. Note: Folder status bars are disabled per default to prevent side-effects in 
  1830. case you already have software which adds folder status bars. Go to the 
  1831. "Workplace Shell" object to turn the XFolder status bars on, but make sure to 
  1832. disable this feature in other software first; otherwise results are 
  1833. unpredictable. 
  1834.  
  1835. Status bars operate in three modes, that is, they can display different 
  1836. information depending on how many objects are currently selected in the folder 
  1837. container: 
  1838.  
  1839.      "No-objects mode": this applies when no object is selected at all. Per 
  1840.       default, this displays the total number of objects in the folder and 
  1841.       their total size as well as the free space on the folder's drive. 
  1842.  
  1843.      "One-object mode": this applies when exactly one object is selected. 
  1844.       Depending on the class of the object, different information is displayed. 
  1845.       For example, folders and data files will display file system information 
  1846.       (real name, class, size, date, and time). 
  1847.  
  1848.      "Multiple-objects mode": this applies when more than one object is 
  1849.       selected. Per default, this displays the number of selected items, the 
  1850.       total number of objects in the folder and the added size of the selected 
  1851.       items (as in the above screenshot). 
  1852.  
  1853.  For each of these three modes you may configure freely what will be displayed 
  1854.  in the status bars. This is explained in detail on the "Configuring status 
  1855.  bars" page. 
  1856.  
  1857.  
  1858. ΓòÉΓòÉΓòÉ 7.2. Not-So Obvious Features ΓòÉΓòÉΓòÉ
  1859.  
  1860. The general appearance of status bars is determined by the first "Status bars" 
  1861. page in the in the "Workplace Shell" object. You may switch between four 
  1862. different status bar styles. Just try out which one you like best; if you 
  1863. change settings there, all currently visible status bars on your system will be 
  1864. immediately updated. 
  1865.  
  1866. You may also drop fonts and colors from the respective palettes in the OS/2 
  1867. System Setup folder. If you drop a font or a color on a status bar, all 
  1868. currently visible status bars on your system will be updated. The font and 
  1869. color settings will be saved. 
  1870.  
  1871. As usual, when dropping colors, holding down the "Ctrl" key will change the 
  1872. foreground (text) color; otherwise the background color will be changed. 
  1873.  
  1874. There are two handy mouse features with folder status bars: 
  1875.  
  1876.    1. If you double-click on a status bar, the folder's settings notebook will 
  1877.       be opened. (New with V0.84.) 
  1878.  
  1879.    2. If you click on a status bar with mouse button 2, the folder's context 
  1880.       menu will be opened. 
  1881.  
  1882.  
  1883. ΓòÉΓòÉΓòÉ 7.3. Configuring Status Bars ΓòÉΓòÉΓòÉ
  1884.  
  1885. Page 2 of the "Status bars" pages in the "Workplace Shell" object lets you 
  1886. determine in detail what information will be displayed in status bars. 
  1887.  
  1888. As explained in the Status bar introduction, status bars display different 
  1889. information depending on whether no object, exactly one object or several 
  1890. objects have been selected in a folder. 
  1891.  
  1892. For each of these modes you may define what exactly will be displayed. XFolder 
  1893. uses certain (not very intuitive, however flexible) codes to display folder 
  1894. information. 
  1895.  
  1896. It is recommended to have both the status bar settings page and a sample folder 
  1897. open while experimenting with these settings. 
  1898.  
  1899. All numeric output is formatted according to your settings in the "Country" 
  1900. object in your System Setup folder. That is, XFolder uses those settings to 
  1901. determine the thousands separator for values greater than 1000 and the display 
  1902. format for date and time output. 
  1903.  
  1904. The status bar codes are different depending on the mode in which a status bar 
  1905. currently operates: 
  1906.  
  1907.      Common codes for all three modes: see this page 
  1908.  
  1909.      Additionally, in "one-object mode", XFolder can now (V0.80) display 
  1910.       different information depending on the object class that the selected 
  1911.       object belongs to. Certain object classes have been extended to be able 
  1912.       to display status bar information and translate additional codes. 
  1913.  
  1914.       On the status bar settings page there is a button with which you may 
  1915.       select the object class for which you wish to set status bar information 
  1916.       in "one-object mode". 
  1917.  
  1918.       Currently, five classes support status bar information: WPObject, 
  1919.       WPFileSystem, WPDisk, WPProgram, and (on Warp 4) WPUrl. 
  1920.  
  1921.       Note that the following codes are all supported in addition to those for 
  1922.       all modes: 
  1923.  
  1924.  
  1925.         -  Common codes for all objects in one-object mode: see this page 
  1926.  
  1927.         -  Additional codes for file-system objects in one-object mode: see 
  1928.            this page 
  1929.  
  1930.         -  Additional codes for disk objects in one-object mode: see this page 
  1931.  
  1932.         -  Additional codes for program objects in one-object mode: see this 
  1933.            page 
  1934.  
  1935.         -  Additional codes for URL objects in one-object mode: see this page 
  1936.  
  1937.  
  1938. ΓòÉΓòÉΓòÉ 7.4. Common Codes for All Modes ΓòÉΓòÉΓòÉ
  1939.  
  1940. The following codes work in all three modes: 
  1941.  
  1942.  $c 
  1943.            number of currently selected objects 
  1944.  $C 
  1945.            total number of objects in folder 
  1946.  
  1947.  $sb 
  1948.            total size of selected objects in bytes 
  1949.  $sk 
  1950.            total size of selected objects in kBytes, i.e. bytes / 1000 
  1951.  $sK 
  1952.            total size of selected objects in KBytes, i.e. bytes / 1024 
  1953.  $sm 
  1954.            total size of selected objects in mBytes, i.e. bytes / 1000000 
  1955.  $sM 
  1956.            total size of selected objects in MBytes, i.e. bytes / 1048576 
  1957.  
  1958.  $Sb 
  1959.            total size of folder content in bytes 
  1960.  $Sk 
  1961.            total size of folder content in kBytes, i.e. bytes / 1000 
  1962.  $SK 
  1963.            total size of folder content in KBytes, i.e. bytes / 1024 
  1964.  $Sm 
  1965.            total size of folder content in mBytes, i.e. bytes / 1000000 
  1966.  $SM 
  1967.            total size of folder content in MBytes, i.e. bytes / 1048576 
  1968.  
  1969.  $fb 
  1970.            free space on drive in bytes 
  1971.  $fk 
  1972.            free space on drive in kBytes, i.e. bytes / 1000 
  1973.  $fK 
  1974.            free space on drive in KBytes, i.e. bytes / 1024 
  1975.  $fm 
  1976.            free space on drive in mBytes, i.e. bytes / 1000000 
  1977.  $fM 
  1978.            free space on drive in MBytes, i.e. bytes / 1048576 
  1979.  
  1980.  $x(xxx) 
  1981.            Left-oriented tabulator: print the following information at X 
  1982.            position "xxx" (relative to the left border of the status bar). 
  1983.            Example: $x(300)$sK will always print the total size of the selected 
  1984.            objects at X position 300. 
  1985.  $x(-xxx) 
  1986.            like before, but relative to the right border of the status bar. 
  1987.            Example: $x(-150)$sK will print the total size of the selected 
  1988.            objects at X position 100, if the status bar is currently 250 pixels 
  1989.            wide. 
  1990.  $x(xx%) 
  1991.            like before, but the X position will be calculated using "xx" as a 
  1992.            percentage relative to the current width of the status bar. 
  1993.            Example: $x(50%)$sK will always print the total size of the selected 
  1994.            objects in the center of the status bar. 
  1995.  
  1996.  
  1997. ΓòÉΓòÉΓòÉ 7.5. Common Codes for One-Object Mode ΓòÉΓòÉΓòÉ
  1998.  
  1999. All objects support the following codes in one-object mode (in addition to the 
  2000. codes for all modes): 
  2001.  
  2002.  $t 
  2003.            object title 
  2004.  $w 
  2005.            WPS class default title, i.e. the one which is visible in the third 
  2006.            column of folder Details views (e.g. "Data file") 
  2007.  $W 
  2008.            WPS internal class name (e.g. "XFldDataFile") 
  2009.  
  2010.  
  2011. ΓòÉΓòÉΓòÉ 7.6. Additional File-System Object Codes ΓòÉΓòÉΓòÉ
  2012.  
  2013. File-system objects (WPFileSystem class, i.e. folders and data files) support 
  2014. the following additional codes: 
  2015.  
  2016.  $r  1) 
  2017.            object's "real name" 
  2018.  $y  1) 
  2019.            object type (.TYPE Extended Attribute) 
  2020.  $a  1) 
  2021.            object filesystem attributes; this will insert four characters 
  2022.            ("ahrs") for the archived, hidden, read-only and system filesystem 
  2023.            attributes, with the ones capitalized which are set for a file (e.g. 
  2024.            "Ahrs") 
  2025.  $D  1) 
  2026.            object last write date 
  2027.  $T  1) 
  2028.            object last write time 
  2029.  $Eb 1,2) 
  2030.            Extended Attribute size in bytes 
  2031.  $Ek 1,2) 
  2032.            Extended Attribute size in kBytes, i.e. bytes / 1000 
  2033.  $EK 1,2) 
  2034.            Extended Attribute size in KBytes, i.e. bytes / 1024 
  2035.  
  2036.  Notes: 
  2037.  
  2038.  1) These codes will only display the data which is held in the internal WPS 
  2039.  buffers. This means when this data changes, e.g. because a file has been 
  2040.  altered by some other program, the status bar information will only change 
  2041.  when the WPS buffer data is refreshed, for example if you select "Refresh 
  2042.  now". 
  2043.  
  2044.  2) The WPS has always had a bug due to which an extended attribute size larger 
  2045.  than 32767 will always return 32767, although a size of 64 KB is technically 
  2046.  possible. As a result, XFolder will also display this wrong value. 
  2047.  
  2048.  
  2049. ΓòÉΓòÉΓòÉ 7.7. Additional Disk Object Codes ΓòÉΓòÉΓòÉ
  2050.  
  2051. Disk objects (WPDisk class, i.e. the objects in the "Drives" folder) support 
  2052. the following codes in addition to the codes for all objects: 
  2053.  
  2054.  $fb 
  2055.            free space on drive in bytes 
  2056.  $fk 
  2057.            free space on drive in kBytes, i.e. bytes / 1000 
  2058.  $fK 
  2059.            free space on drive in KBytes, i.e. bytes / 1024 
  2060.  $fm 
  2061.            free space on drive in mBytes, i.e. bytes / 1000000 
  2062.  $fM 
  2063.            free space on drive in MBytes, i.e. bytes / 1048576 
  2064.  
  2065.  $F 
  2066.            file-system type (FAT, HPFS, CDFS, ...) 
  2067.  
  2068.  Notes: If you are using these keys, you should make sure that you have OS/2's 
  2069.  hardware error messages disabled, because otherwise you'll get a "drive not 
  2070.  ready" message every time no disk is inserted. The new "OS/2 Kernel" object 
  2071.  lets you do this on the "Errors" page. 
  2072.  
  2073.  Note also that the $f codes are redefined for disk objects. Normally, they 
  2074.  display the free space on the drive on which the folder resides, which, for 
  2075.  the "Drives" folder, would of course always return the same value for the 
  2076.  drive on which your Desktop resides. Thus this code has been redefined for 
  2077.  drive objects. 
  2078.  
  2079.  
  2080. ΓòÉΓòÉΓòÉ 7.8. Additional Program Object Codes ΓòÉΓòÉΓòÉ
  2081.  
  2082. Program objects (WPProgram class) support the following codes in addition to 
  2083. the codes for all objects: 
  2084.  
  2085.  $p 
  2086.            executable program file (as specified in the Settings) 
  2087.  $P 
  2088.            parameter list (as specified in the Settings) 
  2089.  $d 
  2090.            working directory (as specified in the Settings) 
  2091.  
  2092.  
  2093. ΓòÉΓòÉΓòÉ 7.9. Additional URL Object Codes ΓòÉΓòÉΓòÉ
  2094.  
  2095. Starting with V0.84, URL objects (WPUrl class) support the following codes in 
  2096. addition to the codes for all objects and the codes for file-system objects: 
  2097.  
  2098.  $U 
  2099.            the URL which is stored in the URL object 
  2100.  
  2101.  
  2102. ΓòÉΓòÉΓòÉ 8. Extended Shutdown ΓòÉΓòÉΓòÉ
  2103.  
  2104.      Restart WPS 
  2105.  
  2106.      Extended Shutdown 
  2107.  
  2108.      Startup and Shutdown folders 
  2109.  
  2110.      Shutting down from the OS/2 command line 
  2111.  
  2112.  
  2113. ΓòÉΓòÉΓòÉ 8.1. Restart WPS ΓòÉΓòÉΓòÉ
  2114.  
  2115. XFolder can now (V0.60) add a "Restart WPS" item to the context menu of the 
  2116. Desktop. 
  2117.  
  2118. After selecting "Restart WPS", a dialog box similar to the one of the Extended 
  2119. Shutdown will appear. The difference is that after all windows have been 
  2120. closed, not the whole computer is restarted, but only the Workplace Shell 
  2121. Process (PMSHELL.EXE). 
  2122.  
  2123. To understand the difference it might be helpful to know that the OS/2 user 
  2124. interface is structured into three "layers", so-to-say, which sit on top of 
  2125. each other: 
  2126.  
  2127.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2128.    Γöé  Workplace Shell (WPS)      Γöé
  2129.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2130.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2131.    Γöé  Presentation Manager (PM)  Γöé
  2132.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2133.    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2134.    Γöé  OS/2 Kernel                Γöé
  2135.    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2136.  
  2137.  
  2138. The OS/2 Kernel provides the basic functionality of the operating system, such 
  2139. as device access and multitasking. Without it, nothing would work on your 
  2140. system. 
  2141.  
  2142. The Presentation Manager (PM) is responsible for the graphics on your system, 
  2143. such as windows, icons, menus, pictures, and a few more non-graphical things, 
  2144. such as INI files. OS/2 can run text-mode applications (e.g. the OS/2 command 
  2145. line, CMD.EXE) without PM, but all other applications require that PM be 
  2146. running. A typical PM application is Netscape, for example. 
  2147.  
  2148. The Workplace Shell (WPS) is just another, however very complex PM application. 
  2149. It is responsible for displaying folders, starting programs when you 
  2150. double-click on their icons, associating files to programs, in short: 
  2151. everything you see after your OS/2 has finished booting. This is the context in 
  2152. which XFolder is running. 
  2153.  
  2154. The "Restart WPS" menu item now terminates the topmost layer of the 
  2155. aforementioned three only, the Workplace Shell. This takes a lot less time than 
  2156. rebooting your whole computer, because PM and the Kernel need not be reloaded 
  2157. and initialized. 
  2158.  
  2159. Restarting the WPS can be helpful when your system has become really slow (for 
  2160. some reason, at least judging from my personal experience, the WPS eats up more 
  2161. and more memory when you work with files a lot) or if you have installed 
  2162. software which changes WPS classes. 
  2163.  
  2164. Important notes: 
  2165.  
  2166.      Please keep in mind that this is not the way of restarting the Workplace 
  2167.       Shell that IBM intended when developing it. "Restart WPS" forces the WPS 
  2168.       to restart by simply terminating it. Since XFolder is part of the WPS 
  2169.       process, it can simply exit. OS/2 will then restart this process 
  2170.       automatically. The result is almost the same as if the WPS had crashed 
  2171.       and was restarted, although the WPS data will be saved before restarting. 
  2172.  
  2173.      On my system, the icons of executables in folders get scrambled after a 
  2174.       WPS restart. This applies to all program objects and executable files 
  2175.       which are not assigned an individual icon to (via their Settings 
  2176.       notebooks). Either icons get completely lost or wrong icons are 
  2177.       displayed. This is a bug in the Presentation Manager, on which I have no 
  2178.       influence. After a complete reboot, the correct icons are restored. 
  2179.  
  2180.      Neither Presentation Manager nor CONFIG.SYS settings are re-read upon 
  2181.       restarting the WPS. If these settings have changed, a WPS restart will 
  2182.       not recognize these changes. Reboot instead. 
  2183.  
  2184.      As a general rule, the more WPS classes you have installed, the more 
  2185.       problems are likely to arise when restarting the WPS. This can be due to 
  2186.       many reasons, which I don't fully understand, but for one certain 
  2187.       third-party WPS classes do not seem to clean up allocated resources 
  2188.       properly when the WPS is terminated. Second, the SOM kernel does seem to 
  2189.       get confused sometimes with WPS class replacements, and some parts of the 
  2190.       WPS then crash about 20 seconds after the Desktop has been populated. 
  2191.  
  2192.       In these cases, you will be reported fairly random crashes in certain 
  2193.       DLLs, which are just symptoms of something going wrong internally. If 
  2194.       this happens, you will have to reboot. Candidates for these random DLL 
  2195.       crashes that I have unveiled are INSTALL.DLL (contains WPInstall), 
  2196.       WPPRINT.DLL (contains the printer and spooler classes), and also the 
  2197.       WorkFrame which comes with the various IBM compilers. (Amusingly, all 
  2198.       those DLLs have been programmed by IBM.) 
  2199.  
  2200.      Depending on your system, the number of WPS restarts you may successfully 
  2201.       execute will be limited. Some users have reported that this works only 
  2202.       once, on my system I've successfully restarted the WPS many times (about 
  2203.       30) before the system crashed. (This sounds like many times, but when 
  2204.       programming XFolder, this is neccessary, unfortunately.) 
  2205.  
  2206.  You can turn this feature off on a new settings page of the Desktop's Settings 
  2207.  notebook. 
  2208.  
  2209.  
  2210. ΓòÉΓòÉΓòÉ 8.2. Extended Shutdown ΓòÉΓòÉΓòÉ
  2211.  
  2212. Since V0.60 XFolder can also improve the shutdown procedure of OS/2. 
  2213.  
  2214. Important note: XShutdown is disabled per default in order to prevent 
  2215. confusion. You will need to enable XShutdown in the Settings notebook of your 
  2216. Desktop. 
  2217.  
  2218. After enabling XShutdown, selecting "Shutdown" from the Desktop's context menu 
  2219. will start XFolder's shutdown procedure instead of OS/2's shutdown. 
  2220.  
  2221. After selecting "Shutdown", a dialog box similar to the following will pop up: 
  2222.  
  2223. The main new features of XShutdown are: 
  2224.  
  2225.      You can choose to automatically reboot your computer after shutdown has 
  2226.       completed. 
  2227.  
  2228.       You may even create your own reboot options, e.g. reboot to a certain 
  2229.       Boot Manager partition directly. This is explained in detail when you 
  2230.       press the "Actions" button on page 1 of the "XDesktop" pages in the 
  2231.       Desktop's settings notebook. 
  2232.  
  2233.      XShutdown can be cancelled. 
  2234.  
  2235.      XShutdown will display the progress of the shutdown procedure, and if 
  2236.       some application "hangs", i.e. it cannot be closed, you can choose to 
  2237.       skip it and continue the shutdown sequence without waiting for this 
  2238.       application to close: 
  2239.  
  2240.  
  2241.  
  2242.  The automatic reboot requires that DOS.SYS be installed through CONFIG.SYS. On 
  2243.  Warp 4, this is done per default. On OS/2 Warp 3, you might need to add the 
  2244.  following line to CONFIG.SYS: 
  2245.  
  2246.  DEVICE=X:\OS2\BOOT\DOS.SYS 
  2247.  
  2248.  with X: being your OS/2 boot drive. 
  2249.  
  2250.  You can configure (and turn off) the eXtended Shutdown on a new settings page 
  2251.  of the Desktop's Settings notebook. 
  2252.  
  2253.  
  2254. ΓòÉΓòÉΓòÉ 8.3. Startup and Shutdown Folders ΓòÉΓòÉΓòÉ
  2255.  
  2256. XFolder can now (V0.70) handle separate startup and shutdown folders. 
  2257.  
  2258. Note: The startup and shutdown folders are not automatically created by the 
  2259. install program to avoid confusion. Please go to page 2 of the "XDesktop" 
  2260. settings page in the Desktop's settings notebook to create them manually. 
  2261.  
  2262. If XFolder finds the XFolder Startup Folder upon WPS startup, it will process 
  2263. its contents in a way much similar to what the WPS does with its own startup 
  2264. folder. The main differences are: 
  2265.  
  2266.      You may set a certain time which XFolder will wait in between starting 
  2267.       objects. The conventional startup folder sometimes leads to problems if 
  2268.       you have many objects in there, which are normally all started at the 
  2269.       same time, sometimes causing the WPS to hang at startup. The XFolder 
  2270.       Startup Folder's delay may also be set on "XDesktop" settings page 2. 
  2271.  
  2272.      You will be able to watch the progress of the startup process in a 
  2273.       separate window (which can also be turned off on "XDesktop" settings page 
  2274.       2, if you don't like it). 
  2275.  
  2276.      Startup can be cancelled while it is running. 
  2277.  
  2278.      Startup can completely be skipped by holding down the "Shift" key until 
  2279.       the WPS has displayed the Desktop completely. 
  2280.  
  2281.      The XFolder Startup Folder is also processed after a WPS restart, while 
  2282.       the regular WPS startup folder is not. This applies only if you had 
  2283.       selected the respective checkbox in the "Restart WPS" confirmation dialog 
  2284.       box. 
  2285.  
  2286.      The XFolder Startup Folder now (V0.80) has a "Start folder content" menu 
  2287.       item which allows you to have its contents started even after the WPS is 
  2288.       up. 
  2289.  
  2290.  On the other hand, the XFolder Shutdown Folder will be processed before the 
  2291.  eXtended Shutdown (and not before the regular shutdown). As apposed to with 
  2292.  the Startup Folder, you may not set a delay here, but XFolder waits before 
  2293.  starting the next object until the currently opened object has been closed 
  2294.  again. Only if all objects started from the Shutdown Folder have been closed, 
  2295.  the eXtended Shutdown actually begins. 
  2296.  
  2297.  The Shutdown folder can be useful if you need to have certain programs 
  2298.  executed before turning off your system. (I have no use for this, but 
  2299.  apparently many people have.) You could, for example, create some REXX script 
  2300.  which does some cleanup before shutting down, such as properly logging off 
  2301.  your network, deleting TEMP files, or whatever you can think of. 
  2302.  
  2303.  For both the XFolder Startup and Shutdown folders, you may define the order in 
  2304.  which objects are started. This works just the same way as described on the 
  2305.  respective page for the XFolder Configuration Folders. 
  2306.  
  2307.  
  2308. ΓòÉΓòÉΓòÉ 8.4. Shutting Down from the Command Line ΓòÉΓòÉΓòÉ
  2309.  
  2310. Starting with V0.80, XFolder contains a little program in the BIN subdirectory 
  2311. of the XFolder installation directory to initiate the eXtended Shutdown from 
  2312. the command line. This program is called XSHUTDWN.EXE. 
  2313.  
  2314. Please note that this program alone is not capable of shutting down your 
  2315. system. All it does is to tell XFolder that and how shutdown should be 
  2316. performed. As a result, it will only function if: 
  2317.  
  2318.      XFolder V0.80 or greater is installed; 
  2319.  
  2320.      the WPS is up and running 
  2321.  
  2322.      and no other errors occur. ;-) 
  2323.  
  2324.  On the other hand, you can put XSHUTDWN.EXE in any directory you like, for 
  2325.  example some directory along your PATH, to be able to access XShutdown from 
  2326.  any command line. XSHUTDWN.EXE does not require the XFolder DLLs or any other 
  2327.  XFolder resource, because it contacts XFolder via inter-process communication. 
  2328.  
  2329.  XSHUTDWN.EXE overrides most of the settings you have specified for XShutdown. 
  2330.  If you simply call it without parameters, certain default values will be used, 
  2331.  no matter what your WPS settings are for XShutdown. 
  2332.  
  2333.  However, you can specify something different on the command line (these 
  2334.  switches will not affect your WPS settings for XShutdown, but only one 
  2335.  execution of it): 
  2336.  
  2337.  -r 
  2338.            will cause XShutdown to reboot your computer, using the built-in 
  2339.            reboot function. The default is not to reboot. 
  2340.  -R <cmd> 
  2341.            will cause XShutdown to reboot your computer using the user-defined 
  2342.            reboot action <cmd>. 
  2343.  -v 
  2344.            will auto-close VIO windows. Default is not to close them. 
  2345.  -a 
  2346.            will show an animation when XShutdown is done. Default is not to 
  2347.            show the animation. 
  2348.  -f 
  2349.            will show no confirmation window. Default is to have XShutdown 
  2350.            confirmed. 
  2351.  -l  (new with V0.83) 
  2352.            will turn on shutdown logging in the XSHUTDWN.LOG file. 
  2353.  -w  (new with V0.84) 
  2354.            will do a WPS restart instead of a "real" shutdown. This can be used 
  2355.            in conjunction with -f. 
  2356.  -W  (new with V0.84) 
  2357.            will also do a WPS restart instead of a "real" shutdown, but also 
  2358.            close all open windows and reuse the startup folder after the WPS 
  2359.            restart. This can be used in conjunction with -f and -v. 
  2360.  
  2361.  
  2362. ΓòÉΓòÉΓòÉ 9. The New "System" Objects ΓòÉΓòÉΓòÉ
  2363.  
  2364.      Introduction 
  2365.  
  2366.      Global settings in the "Workplace Shell" object 
  2367.  
  2368.      The WPS class list 
  2369.  
  2370.      The OS/2 Scheduler 
  2371.  
  2372.      OS/2 memory management 
  2373.  
  2374.      File-system caches 
  2375.  
  2376.  
  2377. ΓòÉΓòÉΓòÉ 9.1. Introduction ΓòÉΓòÉΓòÉ
  2378.  
  2379. Starting with V0.80, XFolder separates the default OS/2 "System" object in the 
  2380. "System setup" folder into two objects: 
  2381.  
  2382.      The new "Workplace Shell" object  contains those pages from the old 
  2383.       "System" object which deal with the Workplace Shell only. I felt these 
  2384.       are not really "System" settings and deserve a separate object. 
  2385.  
  2386.       XFolder also adds most of its own settings pages here, because these 
  2387.       mostly affect the Workplace Shell. This is described in more detail on 
  2388.       the "Global Settings" page in this reference. 
  2389.  
  2390.       In this object you will also find the "WPS Classes" page with which you 
  2391.       may manipulate the WPS class list. You will find an introduction to WPS 
  2392.       classes on a separate page. 
  2393.  
  2394.      The new "OS/2 Kernel" object  contains those pages from the old "System" 
  2395.       object which deal with OS/2's internals, e.g. the "Screen" settings. 
  2396.  
  2397.       In this object you'll find several new settings pages to change a number 
  2398.       of settings in the CONFIG.SYS file in the root directory of your boot 
  2399.       drive. Since these settings are a bit hard to remember and since 
  2400.       erroneous settings in this file might even lead to OS/2 not booting any 
  2401.       more, XFolder tries to help you by setting this up automatically. 
  2402.  
  2403.       On each of these new settings pages, which will be explained in more 
  2404.       detail on the following pages, you will find a button called "Update 
  2405.       CONFIG.SYS" instead of the usual "Undo" and "Default" buttons. Pressing 
  2406.       this button will cause the CONFIG.SYS file to be rewritten according to 
  2407.       the settings you've changed. 
  2408.  
  2409.       The different settings are explained in detail when you press the "Help" 
  2410.       button on one of the settings pages. Please read the following pages to 
  2411.       obtain a general introduction of what these settings do with certain 
  2412.       parts of the OS/2 kernel: 
  2413.         -  The OS/2 Scheduler 
  2414.         -  OS/2 memory management 
  2415.         -  File-system caches 
  2416.  
  2417.  
  2418.  The old "System" object continues to work, in case other WPS enhancers try to 
  2419.  insert anything into this object. Such extensions will also appear in the new 
  2420.  "OS/2 Kernel" object, which inherits the "System" characteristics. 
  2421.  
  2422.  Please note that you should not open the old "System" object and one of the 
  2423.  new objects together to change settings. The settings pages are not prepared 
  2424.  for this, and this might mess up the WPS settings. 
  2425.  
  2426.  
  2427. ΓòÉΓòÉΓòÉ 9.2. XFolder Global Settings ΓòÉΓòÉΓòÉ
  2428.  
  2429. In the XFolder Global Settings, you can make XFolder behave differently. Here 
  2430. you will find settings which affect XFolder in general, such as its language 
  2431. support, as well as settings which will affect your computer as a whole. This 
  2432. is why they're called "global settings", as opposed to individual folder 
  2433. settings, which are explained on a separate page. 
  2434.  
  2435. With XFolder V0.50, the Global Settings were moved into OS/2's System object, 
  2436. which resides in the OS/2 System Setup folder. I believed this was a good place 
  2437. to set up XFolder also, because most of the System folder settings can also be 
  2438. found in this object. 
  2439. System object on Warp 3 
  2440. System object on Warp 4 
  2441.  
  2442. Now, with XFolder V0.80, because there were finally too many settings pages in 
  2443. the "System" object, I have decided to split the "System" object into two 
  2444. objects. Please see the respective pages in the "Introduction" section for 
  2445. more. 
  2446.  
  2447. XFolder adds the settings pages for its Global Settings to the new "Workplace 
  2448. Shell" object, which you will find in your "System setup" folder. 
  2449. New "Workplace Shell" object 
  2450.  
  2451. The different settings pages are not explained in detail here. You will find 
  2452. extensive help by pressing F1 or the "Help" button, which exists on every page. 
  2453.  
  2454.  
  2455. ΓòÉΓòÉΓòÉ 9.3. The WPS Class List ΓòÉΓòÉΓòÉ
  2456.  
  2457. In the "Workplace Shell" object, XFolder creates a page called "WPS Classes" 
  2458. with which you may influence the WPS class list. 
  2459.  
  2460. In order to use this page successfully, it might be helpful to have a general 
  2461. understanding of what WPS classes actually do. The following information is 
  2462. supposed to assist you in this. 
  2463.  
  2464. You have probably heard many times that the OS/2 Workplace Shell is 
  2465. "object-oriented". This term suggests that -- opposed to other user interfaces, 
  2466. such as that of Windows 3.1 -- everything the Workplace Shell deals with is 
  2467. supposed to be an "object": this applies, for example, to files, folders, 
  2468. printers, drives etc. All these objects have certain common characteristics, 
  2469. such as context menus and settings notebooks, but differ in certain others: 
  2470. e.g. what you see in a context menu is different depending on the selected 
  2471. object. 
  2472.  
  2473. In order to better be able to handle these common and different 
  2474. characteristics, the WPS uses "classes". This term has been taken from 
  2475. object-oriented programming; a class is, so-to-say, an abstract concept for an 
  2476. object. A class is therefore not visible on the Desktop, it thus does not 
  2477. "exist" in the same sense as objects do, but it contains all the information 
  2478. about properties and capabilities of an object. 
  2479.  
  2480. Now, every object on the Desktop is a so-called "instance" of a class. The 
  2481. names of most of the WPS classes start with "WP": for example, a printer is an 
  2482. instance of the "WPPrinter" class, a folder one of the class "WPFolder", a 
  2483. datafile of "WPDataFile" and so on. 
  2484.  
  2485. The reason for the power and flexibility of the class concept is that the 
  2486. different classes may descend from each other. A class which is descended from 
  2487. an other class inherits all of its properties and capabilities. It is thus 
  2488. possible to make certain features of the user-interface more abstract, 
  2489. according to the old principle: the best way to handle complexity is 
  2490. abstraction. 
  2491.  
  2492. One can also apply the concept of classes to things in the "real" world to 
  2493. clarify it: for example, think of several classes named "Animal", "Mammal", 
  2494. "Dog", and "Bird". The classes "Mammal" and "Bird" would then be descendants of 
  2495. the "Animal" class, while "Dog" would descend from "Mammal". Your own dog would 
  2496. then be an instance of the "Dog" class, so-to-say. Its behavior would be 
  2497. determined by the classes "Animal", "Mammal", and "Dog" altogether. 
  2498.  
  2499. The WPS now contains many classes, which make up a very thoughtful inheritance 
  2500. hierarchy. The following excerpt from the WPS class list may make the general 
  2501. structure more lucid (where the lines signify inheritance): 
  2502.  
  2503.    WPObject
  2504.      Γö£ΓöÇΓöÇ WPAbstract
  2505.      Γöé     Γö£ΓöÇΓöÇ WPPrinter
  2506.      Γöé     Γö£ΓöÇΓöÇ WPProgram
  2507.      Γöé     ΓööΓöÇΓöÇ WPShadow
  2508.      Γö£ΓöÇΓöÇ WPFileSystem
  2509.      Γöé     Γö£ΓöÇΓöÇ WPDataFile
  2510.      Γöé     Γöé      Γö£ΓöÇΓöÇ WPIcon
  2511.      Γöé     Γöé      ΓööΓöÇΓöÇ WPProgramFile
  2512.      Γöé     ΓööΓöÇΓöÇ WPFolder
  2513.      Γöé            Γö£ΓöÇΓöÇ WPDesktop
  2514.      Γöé            ΓööΓöÇΓöÇ WPStartup
  2515.      ΓööΓöÇΓöÇ WPTransient
  2516.  
  2517.  
  2518. You see that all classes are descendants of WPObject. This is the so-called 
  2519. "root class" of all WPS classes and contains all the features that are common 
  2520. to all WPS objects: as mentioned before, e.g. context menus and settings 
  2521. notebooks. However, the WPObject class is too abstract to have instances of it: 
  2522. this class was only implemented to have other descendant classes. Objects of 
  2523. this class will not function. 
  2524.  
  2525. WPObject has only three descendant classes. All these classes are -- like 
  2526. WPObject -- only meant to be abstract parent classes, of which no objects 
  2527. should exist directly. 
  2528.  
  2529.      WPAbstract is the common parent class for so-called "abstract" objects, 
  2530.       i.e. those objects which do not physically exist on disk, but only store 
  2531.       their data in OS2.INI and OS2SYS.INI. The most well-known examples for 
  2532.       this are the above-shown classes WPPrinter for printer objects, WPProgram 
  2533.       for program objects, and WPShadow for shadows. All these objects do 
  2534.       appear in folders, but are not visible if you enter DIR at the command 
  2535.       line, for example. 
  2536.  
  2537.      By contrast, WPFileSystem is the common superclass for objects which do 
  2538.       exist physically in a file system of a drive. There are two subtypes: 
  2539.       folders (WPFolder class) and data files (WPDataFile). In turn, there are 
  2540.       several subclasses of WPDataFile, like WPIcon for icon files (.ICO 
  2541.       extension) and WPProgramFile for program files (e.g. .EXE extension). All 
  2542.       data files for which no more specific subclass exists are instances of 
  2543.       WPDataFile. 
  2544.  
  2545.      Finally, WPTransient is used by the WPS for objects which need not save 
  2546.       their data at all, but only exist temporarily for representing something. 
  2547.       Examples of this are print jobs in a printer object and all the devices 
  2548.       in Warp 4's Hardware Manager. 
  2549.  
  2550.  The WPS also offers an exceptional mechanism called class replacements. This 
  2551.  feature is used extensively by XFolder to hook all of its features into the 
  2552.  WPS by replacing a number of WPS classes. For ecample, the XFolder class 
  2553.  itself replaces the WPFolder class to implement the new folder features. Such 
  2554.  a replacement class must always be a descendant of the class which it should 
  2555.  replace; "replacing" the class then means that the WPS will always use the 
  2556.  replacement class whenever the original class would normally be used. As a 
  2557.  result, if you have XFolder installed, all folders of your system are no 
  2558.  longer instances of WPFolder, but of XFolder. But since XFolder is a 
  2559.  descendant of WPFolder, only those folder characteristics change for which 
  2560.  XFolder provides additional functionality. 
  2561.  
  2562.  All WPS classes reside in dynamic link libraries (file extension .DLL). For 
  2563.  example, most of the default WPS classes reside in the large PMWP.DLL file in 
  2564.  the \OS2\DLL directory. All XFolder classes reside in XFLDR.DLL in the XFolder 
  2565.  installation directory. 
  2566.  
  2567.  Using this feature enables programmers to implement new features for a class 
  2568.  without having to know in detail how a certain class works internally. As was 
  2569.  said before, this is an outstanding and powerful concept, which still only 
  2570.  OS/2 offers. 
  2571.  
  2572.  Please note that if you attempt to deregister certain OS/2 system classes 
  2573.  (which you normally shouldn't do anyway), this will probably have no effect if 
  2574.  the DLL containing that class contains other WPS classes which are still 
  2575.  registered. This applies especially to the OS/2 Warp 4 Multimedia classes: all 
  2576.  those are contained in MMPARTS.DLL, and as long as one of these classes is 
  2577.  still registered, all the multimedia classes will still be loaded, even if 
  2578.  they don't appear in the WPS class list. 
  2579.  
  2580.  Again, this is only a short introduction to the WPS class list. If you open 
  2581.  the "WPS classes" page in the "Workplace Shell" object, all of the classes 
  2582.  installed on your system will be displayed. Regularily, these will be more 
  2583.  than 100 classes, which will appear in a tree structure. Using context menus, 
  2584.  you may register and replace classes here and also deregister classes and undo 
  2585.  class replacements. 
  2586.  
  2587.  Please note that you should be very careful when manipulating the WPS class 
  2588.  list. With the aid of this page you may render your OS/2 system unusable in 
  2589.  seconds! 
  2590.  
  2591.  Press the "Help" button on that page to receive more detailed information. 
  2592.  
  2593.  
  2594. ΓòÉΓòÉΓòÉ 9.4. The OS/2 Scheduler ΓòÉΓòÉΓòÉ
  2595.  
  2596. The Scheduler is a part of the OS/2 kernel and as such works on the lowest 
  2597. level of the system (for more on this, see the explanations on the Restart WPS 
  2598. page). 
  2599.  
  2600. The Scheduler is responsible for multitasking and multithreading in OS/2. Since 
  2601. you normally have only one processor, but expect several programs to run at the 
  2602. same time, the Scheduler switches between these programs several dozen times a 
  2603. second, so that these programs appear to run in parallel. 
  2604.  
  2605. To understand the different settings on the "Scheduler" page in the "OS/2 
  2606. Kernel" object, the following explanations about how OS/2 manages processes and 
  2607. threads might be helpful. On that settings page, you will receive more specific 
  2608. information on the different settings if you press the "Help" button there. 
  2609.  
  2610. A thread is the smallest unit for administrating program switches which OS/2 
  2611. provides. A program can contain several threads, but needs to have at least one 
  2612. thread. The term "thread" was chosen because within one thread program 
  2613. instructions are executed sequentially, while between threads you may never be 
  2614. sure which instruction of one thread will be executed before or after an 
  2615. instruction of another thread. 
  2616.  
  2617. Well-programmed OS/2 software uses several threads to ensure that the user gets 
  2618. a quick response to his input and mouse actions. For example, if you execute a 
  2619. command in a program which will take a long time, a program should start a 
  2620. secondary thread for this task. While this new thread is working in the 
  2621. background, the user interface (on the main thread of the program) is ready 
  2622. again for new input. 
  2623.  
  2624. Not-so-well-programmed OS/2 software uses only one thread for both the user 
  2625. interface and executing tasks. As a result, while executing a task, the user 
  2626. interface is blocked. A good example of this stems from IBM themselves: in 
  2627. VIEW.EXE, if you search the whole bookshelf, your computer is blocked 
  2628. completely until the search is completed. This task would have been perfect for 
  2629. multithreading. 
  2630.  
  2631. Now, threads can have different priorities. In general, a thread with a higher 
  2632. priority gets more processor time that one with lower priority. This is 
  2633. especially true if several threads actually have work to do, i.e. compete for 
  2634. processor time; this does not apply for threads that are "blocked" because they 
  2635. currently have nothing to do. A blocked thread needs no processor time and its 
  2636. priority thus doesn't matter. 
  2637.  
  2638. OS/2 is capable of controlling thread priorities in a very refined way. It 
  2639. differentiates between four priority classes: 
  2640.  
  2641.    1. "Idle time priority" is the lowest priority class. This means that a 
  2642.       thread only gets processor time if no threads of higher priority classes 
  2643.       require it. Such threads are helpful for offloading work that needs to be 
  2644.       done, but can be delayed until the computer has time for it. An example 
  2645.       of such a thread is the XFolder Worker thread which keeps track of the 
  2646.       awake WPS objects on your system. This is fairly time-consuming, but not 
  2647.       time-critical, so it's done with idle-time priority. 
  2648.  
  2649.    2. "Regular priority" is the priority class that most threads use. It is 
  2650.       also the default OS/2 priority class if nothing different is specified. 
  2651.       Between threads of this class, OS/2 dynamically varies priority levels 
  2652.       (more on this below) to make sure that no thread of this class "starves", 
  2653.       i.e. gets no processor time. 
  2654.  
  2655.    3. "Fixed-high priority" is the second-highest priority class for threads 
  2656.       that need to prepare data for "regular" class which needs to be done 
  2657.       quickly without being influenced by the dynamic priority variations for 
  2658.       "regular" threads. This is frequently done for message dispatchers. 
  2659.  
  2660.    4. "Time-critical priority" is the highest priority class for threads that 
  2661.       need to be executed immediately when there's work to do. Such a thread 
  2662.       will be given processor time immediately and will not be interrupted 
  2663.       until its work is done. This priority class is frequently used for 
  2664.       time-critical tasks, for example by network and other communications 
  2665.       software. 
  2666.  
  2667.  Within each priority class one can now set a priority level. This is a value 
  2668.  from -31 to +31 which determines the precedence of a thread within a priority 
  2669.  class. 
  2670.  
  2671.  A few examples: 
  2672.  
  2673.      A "regular" thread with priority level +31 supercedes a "regular" thread 
  2674.       with priority level 0. 
  2675.  
  2676.       Within the "regular priority" class however OS/2 ensures that no thread 
  2677.       "starves", i.e. never gets processor time, by dynamically raising each 
  2678.       thread's priorities after a certain time automatically. This period of 
  2679.       time is determined by the MAXWAIT CONFIG.SYS setting. Moreover, OS/2 
  2680.       raises a thread's priority if it is to receive keyboard input, if the 
  2681.       process of the thread runs in the foreground, or if the thread is 
  2682.       currently accessing devices. 
  2683.  
  2684.       These dynamic adjustments are only then performed if CONFIG.SYS does not 
  2685.       contain the command PRIORITY=ABSOLUTE, which is not recommended. (This is 
  2686.       why you will not find that setting in the "OS/2 Kernel" object.) 
  2687.  
  2688.      A "time-critical" thread with priority level -31 still supercedes a 
  2689.       "regular" thread with priority level +31 because it belongs to a higher 
  2690.       priority class. For this case, the dynamic priority adjustments will have 
  2691.       no effect, because they only affect the execution of "regular" threads. 
  2692.  
  2693.      The same applies, for example, to a "regular thread" with priority level 
  2694.       0 and an "idle-time" thread with priority level +31. 
  2695.  
  2696.      Two threads with exactly the same priority however run "against" each 
  2697.       other, i.e. they alternate with respect to processor usage. 
  2698.  
  2699.  On the other hand side, a process is the OS/2 term for an application which 
  2700.  has been loaded into memory. Each process must have at least one thread. Each 
  2701.  process contains common data as well as controls access to system resources. 
  2702.  Processes are protected against each other in that OS/2 prohibits access to 
  2703.  memory which does not belong to the process attempting to access it ("memory 
  2704.  protection"). By contrast, several threads within a process may all access the 
  2705.  process's memory, because memory is administered on a per-process basis. The 
  2706.  same applies to other system resources such as open files. 
  2707.  
  2708.  
  2709. ΓòÉΓòÉΓòÉ 9.5. OS/2 Memory Management ΓòÉΓòÉΓòÉ
  2710.  
  2711. Memory management is done by the OS/2 Kernel also. It takes care that processes 
  2712. may acquire memory, protects processes against each other's memory accesses, 
  2713. and most importantly manages "virtual memory". 
  2714.  
  2715. "Virtual memory" is the common term for memory which does not exist physically 
  2716. in a computer, which may however still be allocated by using a swap file on the 
  2717. hard disk. As a result, an application may use more memory than what is 
  2718. physically installed in the computer. 
  2719.  
  2720. If an OS/2 application allocates memory and not enough physical memory is 
  2721. available, OS/2 takes an area of the main memory (RAM) which is not currently 
  2722. used and stores it into the swap file on the hard disk. This part of memory is 
  2723. then available and given to the requesting application. 
  2724.  
  2725. By contrast, if another application, to which the swapped memory region 
  2726. belongs, needs the swapped memory again, OS/2 intercepts this memory access 
  2727. (because the "memory" now resides on the hard disk) and loads that region back 
  2728. into memory from the hard disk before the application actually accesses it. (If 
  2729. neccessary, OS/2 will have to swap another memory region to the swap file first 
  2730. to make room for the memory region which is to be loaded back into memory.) 
  2731.  
  2732. Naturally, a hard disk is much slower than physical RAM: an average hard disk 
  2733. might have a throughput of 2 to 7 MB per second, while RAM might have a 
  2734. throughput of 20 to several 100 MB per second, depending on your processor 
  2735. speed and on whether that portion of memory has already been loaded into the 
  2736. processor memory caches. 
  2737.  
  2738. This is why plenty of RAM is the most important prerequisite for an acceptably 
  2739. fast OS/2 installation. Even though you may install OS/2 with only 8 MB of RAM 
  2740. (OS/2 Warp 3 allegedly even with 4), you will then only hear the hard disk 
  2741. rattle because OS/2 has to permanently swap in and out. 
  2742.  
  2743. Even if you have a relatively large amount of RAM installed (for example, I 
  2744. have 32 MB), OS/2 will need to swap a lot, depending on how much memory your 
  2745. applications demand. For example, one complete build of XFolder using VisualAge 
  2746. C++ will make my swap file grow to more than 40 MB, meaning that OS/2 is 
  2747. actually using 32+40 = 72 MB of memory. 
  2748.  
  2749. OS/2's memory management, especially the swap file management, may be 
  2750. influenced by a number of CONFIG.SYS commands. Even though there several of 
  2751. these commands, I recommend that you only change the SWAPPPATH command, for 
  2752. which the "Memory" page in the "OS/2 Kernel" object offers you an interface. 
  2753.  
  2754. Press the "Help" button there to receive a more detailed description of the 
  2755. different settings. 
  2756.  
  2757.  
  2758. ΓòÉΓòÉΓòÉ 9.6. File-System Caches ΓòÉΓòÉΓòÉ
  2759.  
  2760. File-system caches are a mechanism used by most of today's operating systems to 
  2761. avoid redundant disk access. In order to accomplish this, a part of the 
  2762. computer's physical memory (RAM) is used to buffer data that is read from and 
  2763. written to disk. This memory region is then called a "cache". 
  2764.  
  2765. Now, if an application accesses disk data that is still residing in the 
  2766. file-system cache, the operating system does not have to read it from the disk, 
  2767. but can simply take it out of the cache, which is a lot faster. 
  2768.  
  2769. On the other hand side, if an application is writing data to disk, OS/2 can 
  2770. copy this data to the cache first and delay writing it to disk until the disk 
  2771. is ready for accepting it. This is called "lazy writing". 
  2772.  
  2773. Do not confuse the file-system caches, which we are dealing with here, with the 
  2774. other caches that exist on your system, such as the processor caches and maybe 
  2775. other caches that are built into your hard disks. These are part of the 
  2776. computer's hardware and not described here. 
  2777.  
  2778. OS/2 implements different caches for each file system that is installed. This 
  2779. means that all FAT drives will use one cache, and all HPFS drives a different 
  2780. one. These caches are separately configured with different CONFIG.SYS settings, 
  2781. which you may alter on the "HPFS" and "FAT" pages in the "OS/2 Kernel" object. 
  2782.  
  2783. Press the "Help" button there to receive a more detailed description of the 
  2784. different settings. 
  2785.  
  2786.  
  2787. ΓòÉΓòÉΓòÉ 10. New XFolder System Sounds ΓòÉΓòÉΓòÉ
  2788.  
  2789. If you have the OS/2 multimedia subsystem (MMPM/2) with any sound card 
  2790. installed, XFolder can introduce new system sounds to your Workplace Shell. 
  2791.  
  2792. Notes: These new system sounds are disabled per default, because if these 
  2793. malfunction, the whole Workplace Shell might run into trouble. In order to 
  2794. activate this new XFolder function, you will need to execute "SOUND001.CMD" in 
  2795. the INSTALL subdirectory of the XFolder directory. If, on your system, the new 
  2796. system sounds do not work correctly, you can execute "SOUNDOFF.CMD" in the same 
  2797. directory, which will disable sounds again. 
  2798.  
  2799. With V0.82, sound support has been moved to a separate DLL (SOUND.DLL) to allow 
  2800. XFolder to work on systems where MMPM/2 is not installed too. If you're running 
  2801. into problems with sound support, you can simply delete that DLL. 
  2802.  
  2803. Please note also that the XFolder system sounds will make your system slower, 
  2804. just as the regular system sounds do too. Even on my Pentium-133 with 32 MB 
  2805. RAM, this is noticeable, even though XFolder uses a separate thread to play its 
  2806. sounds. 
  2807.  
  2808. Anyway, if the new system sounds are enabled, you will be able to configure 
  2809. these in the "Sound" object, which per default resides both in the "Multimedia" 
  2810. and "System setup" folders. 
  2811.  
  2812.  "Sound" object 
  2813.  
  2814. Configuring these sounds is not too spectacular: XFolder just adds a few more 
  2815. items to the list box on the left. All the XFolder items start with "XFolder", 
  2816. so you'll be able to view them grouped together. By clicking on one of them, 
  2817. you will be able to select a sound from the list box on the right. XFolder 
  2818. comes with one little sound for the Shutdown and Restart WPS features to get 
  2819. you started. ;-) 
  2820.  
  2821.  
  2822. ΓòÉΓòÉΓòÉ 11. New Default Icons ΓòÉΓòÉΓòÉ
  2823.  
  2824. Starting with V0.84, XFolder allows you to freely replace a number of default 
  2825. WPS icons. This is an improvement over previous versions, where only the 
  2826. default folder icons could be replaced with new fixed XFolder icons; this can 
  2827. now be done more freely, and for more WPS default icons. 
  2828.  
  2829. The icon replacements are turned on per default. Icon replacements can be 
  2830. configured as follows: 
  2831.  
  2832.    1. If you don't want the icons to be replaced at all, uncheck the 
  2833.       corresponding setting in the "Workplace Shell" object, page 1. 
  2834.  
  2835.    2. If you'd like default icons different from the ones that XFolder 
  2836.       provides, you need to replace the icons in the /ICONS subdirectory of the 
  2837.       XFolder installation directory and rebuild the ICONS.DLL file. This is 
  2838.       explained below. 
  2839.  
  2840.  Note: All these changes require a WPS restart because it is impossible to 
  2841.  replace icons which are already in use by the WPS. 
  2842.  
  2843.  Now, replacing the default icons with your own favorites is fairly easy. Look 
  2844.  into the /ICONS subdirectory of the XFolder installation directory, and you 
  2845.  will find a number of icon files: 
  2846.  
  2847.  Replace any of these files with your own favorites and execute the ICONS.CMD 
  2848.  script in the same directory. This will create a file ICONS.DLL, which will be 
  2849.  copied by XFolder to its /BIN subdirectory at the next WPS restart. 
  2850.  
  2851.  Note that the script expects the icon file names to be exactly as they are 
  2852.  now. Also, you cannot replace ICONS.DLL in /BIN yourself, because once the WPS 
  2853.  has started, that DLL is locked. So always use ICONS.CMD. 
  2854.  
  2855.  The icons which can be replaced are the following: 
  2856.  
  2857.      Program files (WPProgramFile class). These are the files in the top row 
  2858.       in the above screenshot. They represent the following executable types: 
  2859.  
  2860.         -  default.ico will be used for program files whose executable type 
  2861.            cannot be determined by XFolder. This shouldn't happen very often. 
  2862.  
  2863.         -  dll.ico will be used for Dynamic Link Libraries (DLL's). Note that 
  2864.            not all .DLL files will be given this icon (especially not Windows 
  2865.            DLL files), and some files will be given this icon even though they 
  2866.            have a different extension. XFolder actually reads the file header 
  2867.            of a file to determine whether the file is actually a DLL. 
  2868.  
  2869.         -  dosfull.ico and doswin.ico will be used for DOS executables in 
  2870.            full-screen and windowed mode, respectively. 
  2871.  
  2872.         -  driver.ico will be used for virtual and physical device drivers. Not 
  2873.            all device drivers will be given this icon however, since many of 
  2874.            them are assembled as DLL files, and will therefore carry the DLL 
  2875.            icon. 
  2876.  
  2877.         -  os2full.ico and os2win.ico will be used for OS/2 text-mode (VIO) 
  2878.            programs in full-screen and windowed mode, respectively. 
  2879.  
  2880.      Data files (WPDataFile class). These is the xfdataf.ico file. Note that 
  2881.       this icon is only used for files which have no programs associated with 
  2882.       them; otherwise the program icon will be used. (That's just the default 
  2883.       WPS behavior.) 
  2884.  
  2885.      Desktop (WPDesktop class). These are the xfdesk1.ico and xfdesk2.ico 
  2886.       files, for closed and open desktops, respectively. (While the WPS uses 
  2887.       the same icon for both closed and open desktops, you can now use a 
  2888.       different one for an open desktop.) 
  2889.  
  2890.      Folders (WPFolder class). These are the xfldr1.ico and xfldr2.ico files, 
  2891.       for closed and open folders, respectively. 
  2892.  
  2893.  Known limitations. Some default icons presently cannot be changed. Most 
  2894.  notably, PM programs without a built-in icon will always be given some dull 
  2895.  default icon for PM programs. 
  2896.  
  2897.  Also, XFolder can only change the icons as they are displayed in folders. 
  2898.  Icons of running programs will not be affected, i.e. those in the title bar of 
  2899.  a program window or when a program is minimized to the Desktop. 
  2900.  
  2901.  This might improve in a future XFolder release. 
  2902.  
  2903.  
  2904. ΓòÉΓòÉΓòÉ 12. The Netscape DDE Interface ΓòÉΓòÉΓòÉ
  2905.  
  2906.      Introduction 
  2907.  
  2908.      Installation 
  2909.  
  2910.      Command Line Parameters 
  2911.  
  2912.      Tips & Tricks 
  2913.  
  2914.      How it works 
  2915.  
  2916.      Revision history 
  2917.  
  2918.  
  2919. ΓòÉΓòÉΓòÉ 12.1. Introduction ΓòÉΓòÉΓòÉ
  2920.  
  2921. Are you too annoyed too by the fact that double-clicking on a URL or HTML file 
  2922. on your hard disk will always start a new instance of NETSCAPE.EXE, although 
  2923. Netscape is already running? This is a waste of time, memory, and system 
  2924. resources. 
  2925.  
  2926. The Netscape DDE Interface is the solution. You can associate it with HTML and 
  2927. URL files, so that when you double-click on them, either Netscape will be 
  2928. started or, if it's already running, the HTML file or URL will simply be passed 
  2929. to the running instance. 
  2930.  
  2931. NetscDDE works with both Navigator 2.02 and Communicator 4.04 for OS/2. 
  2932.  
  2933.  
  2934. ΓòÉΓòÉΓòÉ 12.2. Installation ΓòÉΓòÉΓòÉ
  2935.  
  2936. There is no real installation for NetscDDE because XFolder comes preconfigured 
  2937. to let you use it. The default configuration adds a "Netscape DDE" item to all 
  2938. folder context menus which displays the contents of that folder in Netscape. 
  2939.  
  2940. However, there are a few extra things you can do with NetscDDE. 
  2941.  
  2942.    1. Create a program object for the NETSCDDE.EXE file in the /BIN 
  2943.       subdirectory of the XFolder installation directory. Associate this 
  2944.       program object with *.HTM and *.HTML files, and you can then double-click 
  2945.       on HTML files on your hard disk and have NetscDDE open them. 
  2946.  
  2947.    2. You can also specify NetscDDE as your default browser in the OS/2 Warp 4 
  2948.       URL objects. 
  2949.  
  2950.  
  2951. ΓòÉΓòÉΓòÉ 12.3. Command Line Parameters ΓòÉΓòÉΓòÉ
  2952.  
  2953. The Netscape DDE Interface is configured by using command line parameters. This 
  2954. is not very intuitive, but flexible. Besides, it means less work for me. ;-) 
  2955. The command line syntax is (simply double-click on NETSCDDE.EXE for a summary): 
  2956.  
  2957. netscdde [-[x|X]n]] [-p <exe>] [-P <params>] [-m[h]] <URL> 
  2958.  
  2959. As you can see, <URL> is the only required parameter. 
  2960.  
  2961. The parameters mean the following: 
  2962.  
  2963.  <URL> 
  2964.            a Uniform Resource Locator; you can even open files on the Internet 
  2965.            with NETSCDDE by specifying http:// or ftp:// and such. This is why 
  2966.            NETSCDDE also works with URL objects. For local HTML files, Netscape 
  2967.            tolerates the plain path and file name, so that a simple 
  2968.            C:\docs\text.html will open this file in Netscape. Example: 
  2969.  
  2970.            NETSCDDE C:\docs\text.html 
  2971.  
  2972.  Options: 
  2973.  
  2974.  -x 
  2975.            If Netscape is not running yet, do NOT open a new instance of it. 
  2976.            NETSCDDE will then simply exit. 
  2977.  -X 
  2978.            If Netscape is not running yet, DO open a new instance of it without 
  2979.            asking. 
  2980.  
  2981.            If neither -x nor -X is specified, NETSCDDE will prompt you for 
  2982.            whether you wish to open a new instance of Netscape. 
  2983.  -n 
  2984.            Request a new browser window for <URL> from Netscape, if it's 
  2985.            already running. (If Netscape is not yet running and a new instance 
  2986.            is opened, a new window will always be opened, of course.) Per 
  2987.            default, <URL> will be opened in the last active Netscape browser 
  2988.            window. 
  2989.  -p <exe> 
  2990.            Here you can specify the full path of NETSCAPE.EXE, if it's not on 
  2991.            your PATH. This is only evaluated if Netscape is not yet running and 
  2992.            needs to be started. Per default, NETSCDDE will search the PATH for 
  2993.            NETSCAPE.EXE. Example: 
  2994.  
  2995.            NETSCDDE -p "C:\NETSCAPE\NETSCAPE.EXE" <URL> 
  2996.  
  2997.            The use of quotes is only neccessary for paths which contain spaces, 
  2998.            but never hurts. 
  2999.  
  3000.            For an interesting side-effect of this option, check the "Tips & 
  3001.            Tricks" section. 
  3002.  -P <params> 
  3003.            Here you can specify command line parameters for a newly opened 
  3004.            instance of Netscape, such as "-3" for Netscape 3.0 identification 
  3005.            (see the Netscape documentation for details.) Example: 
  3006.  
  3007.            -P "-3" 
  3008.  
  3009.            Again, the use of quotes is only neccessary if the parameter list 
  3010.            contains spaces, but never hurts. 
  3011.  -m 
  3012.            start Netscape minimized. 
  3013.  -mh 
  3014.            start Netscape minimized and hidden (see the "Tips & Tricks" 
  3015.            section). 
  3016.  
  3017.  
  3018. ΓòÉΓòÉΓòÉ 12.4. Tips & Tricks ΓòÉΓòÉΓòÉ
  3019.  
  3020.    1. Here's an unintended, but maybe useful side-effect: Since OS/2 can share 
  3021.       its DDE environment with a Win-OS/2 session, NETSCDDE can even pass URLs 
  3022.       to a running Win-OS/2 copy of Netscape Navigator. This includes 
  3023.       Communicator (Netscape 4). The only thing you have to do is enable 
  3024.       WIN_DDE in the Win-OS/2 session settings of your Windows Netscape program 
  3025.       object. By specifying your Windows Netscape EXE file with -p <exe> (see 
  3026.       above), NETSCDDE.EXE even provides for proper WPS integration of Windows 
  3027.       Netscapes. 
  3028.  
  3029.    2. You can now (V1.1) also specify a .CMD file with -p and -P to have 
  3030.       certain commands executed before and after Netscape is actually started. 
  3031.       You should specify the -m or -mh options so that no ugly VIO window 
  3032.       appears. Here is an example NETSCAPE.CMD: 
  3033.  
  3034.             @echo off
  3035.             rem do some initialization here, e.g. change directory
  3036.             cd D:\WebStuff
  3037.             rem now call Netscape
  3038.             netscape.exe
  3039.             rem now the .cmd file is put to sleep until Netscape is
  3040.             rem terminated; subsequent calls to NETSCDDE will contact
  3041.             rem this running Netscape instance
  3042.             rem after Netscape is terminated, execute this:
  3043.             call cleanup.cmd
  3044.             rem or whatever you want
  3045.  
  3046.       Thanks, Marcus de Geus, for this suggestion. 
  3047.  
  3048.    3. Here's a trick from Chris Wenham, senior editor of OS/2 e-zine, found in 
  3049.       the SmartSuite Mailing List (smartsuite-os2@makelist.com): 
  3050.  
  3051.       "If you need to change the web browser that Smartsuite apps call when you 
  3052.       click one of their Internet buttons (like Organizer's button to go to the 
  3053.       Almanack page), or send the URL to the currently running copy of Netscape 
  3054.       instead of launching a new instance, you need to do this: 
  3055.  
  3056.       Launch REGEDIT2.EXE in the /OS2/SYSTEM directory. Expand the 
  3057.       HKEY_CLASSES_ROOT tree. Scroll down to "http" and expand it all the way 
  3058.       down (through "shell" and "open") until you come to "command". 
  3059.  
  3060.       Right click on the data in the "(Default)" key, pick "Modify", and change 
  3061.       the path to the new browser, making sure it's followed with a "%1" (which 
  3062.       represents the URL). Close RegEdit. 
  3063.  
  3064.       You shouldn't need to reboot, but you might need to restart any SS 
  3065.       components that are running. 
  3066.  
  3067.       Chris then states that you can enter NETSCDDE.EXE as your browser in this 
  3068.       section. 
  3069.  
  3070.  
  3071. ΓòÉΓòÉΓòÉ 12.5. How It Works ΓòÉΓòÉΓòÉ
  3072.  
  3073. This is done with the use of Dynamic Data Exchange (DDE), for the OS/2 version 
  3074. of Netscape 2.02 understands just the same DDE commands as the Windows versions 
  3075. do. These commands are (horribly) documented at 
  3076. http://developer.netscape.com/library/documentation/communicator/DDE 
  3077.  
  3078. These documents assume a detailed knowledge of how DDE works, and believe me, 
  3079. some things ARE different on OS/2. 
  3080.  
  3081.  
  3082. ΓòÉΓòÉΓòÉ 12.6. NetscDDE Revision History ΓòÉΓòÉΓòÉ
  3083.  
  3084. V1.2 (July 8, 1998) 
  3085.  
  3086. Finally created this INF file for documentation. NetscDDE is now exclusively 
  3087. distributed with XFolder and is published under the GNU General Public Licence. 
  3088.  
  3089. V1.1 (May 15, 1998) 
  3090.  
  3091. NETSCDDE can now start any program specified with -p, for example a batch file. 
  3092. New -m and -h parameters. 
  3093.  
  3094. V1.02 (May 1, 1998) 
  3095.  
  3096. NETSCDDE does not any longer block the PM while waiting for Netscape to answer. 
  3097.  
  3098. V1.01 (March 8, 1998) Bugfix for local files which contain spaces. 
  3099.  
  3100. V1.0 (March 5, 1998) 
  3101.  
  3102. Initial release. 
  3103.  
  3104.  
  3105. ΓòÉΓòÉΓòÉ 13. Frequently Asked Questions (FAQ) ΓòÉΓòÉΓòÉ
  3106.  
  3107. This section contains questions which have frequently been asked to XFolder's 
  3108. author. Please read these texts before notifying the author of potential 
  3109. problems or bugs. Maybe you'll find the answer here already. 
  3110.  
  3111.      General questions 
  3112.  
  3113.      Installation questions 
  3114.  
  3115.      Menu questions 
  3116.  
  3117.      XShutdown questions 
  3118.  
  3119.  
  3120. ΓòÉΓòÉΓòÉ 13.1. FAQ: General Questions ΓòÉΓòÉΓòÉ
  3121.  
  3122. First of all: look into the "Workplace Shell" object, where you will find a lot 
  3123. of useful levers to make XFolder behave. 
  3124.  
  3125. If you don't find the answer to your question here, please look at XFolder's 
  3126. web homepage also. XFolder's author is now maintaining a public bug list, which 
  3127. might answer your question too. 
  3128.  
  3129.    1. Does XFolder slow down the WPS? 
  3130.  
  3131.       I don't think this is true in general. I have not done any tests, but in 
  3132.       general, XFolder only slows down certain WPS features, but not the WPS in 
  3133.       general. 
  3134.  
  3135.       The most obvious slowdown is opening context menus. Although the 
  3136.       50-objects limit which existed in XFolder versions prior to 0.70 has been 
  3137.       lifted, you should still not put too many objects into the configuration 
  3138.       folders. Since these folders are re-read every time a context menu is 
  3139.       opened, XFolder might slow down the system too much. 
  3140.  
  3141.       With the other functions, I don't know. Naturally, painting the status 
  3142.       bars does take some time, but this is normally not noticeable. 
  3143.  
  3144.       Also, XFolder doesn't use that much memory. I have checked this on my 
  3145.       system, and in addition to the size of the XFolder DLLs, XFolder acquires 
  3146.       only some 100 to 400 KB, depending on how long the WPS has been running. 
  3147.  
  3148.    2. Why are the XFolder dialog windows so ugly on Warp 3? 
  3149.  
  3150.       XFolder now uses the WarpSans font for most of its dialogs, because it's 
  3151.       so much prettier than "System Proportional". This font only comes with 
  3152.       OS/2 Warp 4, so on Warp 3 it's not found, and the system uses the default 
  3153.       system font (System Proportional) instead. If you can get hold of some 
  3154.       Warp 4 \OS2\DLL\DSPRES.DLL file, simply copy it over the same file in 
  3155.       your Warp 3 \OS2\DLL directory. This file contains many system resources, 
  3156.       among others the WarpSans font. Warp 3 will work with the Warp 4 version 
  3157.       without problems. (This only works if you boot OS/2 to the command line, 
  3158.       using Alt-F1 at startup.) 
  3159.  
  3160.    3. Why are the new system sounds not playing? 
  3161.  
  3162.       You will need to install them first. See the corresponding page for more. 
  3163.  
  3164.    4. Why do I keep getting crashes in SOM.DLL? 
  3165.  
  3166.       If you're using VisualAge C++ or any other software which installs SOM 
  3167.       runtimes, make sure that SOM.DLL is loaded from \OS2\DLL. This DLL has 
  3168.       been updated with more recent Warp fixpaks. VAC++ puts additional 
  3169.       directories at the beginning of the LIBPATH statement in CONFIG.SYS, 
  3170.       which still causes the old DLL to be loaded. Put those directories behind 
  3171.       \OS2\DLL in the LIBPATH. 
  3172.  
  3173.    5. Why do XFolder's features only work with some folders and not with 
  3174.       others? 
  3175.  
  3176.       This is tricky. Some people have reported this in all variations, i.e. 
  3177.       hotkeys work for the Desktop only, or not in URL folders, or not in Group 
  3178.       Folders (an IBM EWS utility), etc.pp.. The same applies to status bars. 
  3179.  
  3180.       From what I can see, this is related to folder subclassing. XFolder needs 
  3181.       certain window messages to introduce these features, and if some other 
  3182.       WPS class intercepts these messages, XFolder's features behave funny or 
  3183.       cause crashes or do simply not work. 
  3184.  
  3185.       In general, the more WPS class replacements you have installed, the more 
  3186.       likely these errors are likely to appear. With a "clean" WPS, XFolder 
  3187.       usually works fine, but the people who have reported these errors 
  3188.       sometimes had four folder class replacements installed, and it's really 
  3189.       difficult for me to track down these errors then. Try to de-install some 
  3190.       WPS extensions which you don't absolutely need. 
  3191.  
  3192.       Also, the more messed up your INI files are, the more likely the WPS is 
  3193.       going to become unstable in general. I strongly recommend Henk Kelder's 
  3194.       WPTOOLS package, which you should run from time to time anyways, to clean 
  3195.       up the INI files. This is still continually updated and available at 
  3196.       Hobbes. 
  3197.  
  3198.       I have also found that installation order is important. Some WPS 
  3199.       extensions seem to simply "swallow" messages which they don't need, 
  3200.       assuming that they are the only WPS extension on the system. (This might 
  3201.       apply to XFolder also, but I have tried to avoid this.) Now, if XFolder 
  3202.       comes before this greedy WPS extension in the WPS class replacement list, 
  3203.       which is the case if XFolder was installed first, it does get the message 
  3204.       before the other WPS extension. 
  3205.  
  3206.    6. Does XFolder cooperate with Object Desktop? 
  3207.  
  3208.       In theory, yes. Practically, sometimes. For details about this (and for 
  3209.       other WPS utilities also), see the separate "Compatibility" page. 
  3210.  
  3211.    7. Why do I hear the disk drives running every time I open the "Drives" 
  3212.       folder? 
  3213.  
  3214.       The reason for this is that the XFolder status bars query the free space 
  3215.       on a drive. If the first object in your "Drives" folder represents a 
  3216.       floppy drive, it's this drive that's queried. 
  3217.  
  3218.       To avoid this, change the status bar information for WPDisk objects in 
  3219.       the "Workplace Shell" object, page 2 of "Status bars". Then this 
  3220.       information will not be queried. 
  3221.  
  3222.       Alternatively, you can disable status bars for the "Drives" folder only 
  3223.       on the "XFolder" page in the Drives folder's settings notebook. 
  3224.  
  3225.    8. Does XFolder run on Macintosh systems? 
  3226.  
  3227.       No. 
  3228.  
  3229.  Shameless self-advertisement: XFolder cooperates perfectly with the fantastic 
  3230.  CommandPak from the same author, available also at my homepage. This package 
  3231.  will improve the OS /2 command line dramatically, among others offering some 
  3232.  WPS support from the command line also. 
  3233.  
  3234.  
  3235. ΓòÉΓòÉΓòÉ 13.2. FAQ: Installation Questions ΓòÉΓòÉΓòÉ
  3236.  
  3237.    1. The WPS crashes/keeps rebooting after the WPS restart. What is this? 
  3238.  
  3239.       Difficult to say. If it keeps rebooting, this is a sure sign that the WPS 
  3240.       is trapping, i.e. exceptions occur when it's booting up. Same thing as on 
  3241.       the previous page, XFolder seems to be conflicting with other WPS 
  3242.       extensions. 
  3243.  
  3244.       Otherwise, it might simply be that restarting the WPS is not working on 
  3245.       your system. The WPS restart is only intended as a shortcut, but if it 
  3246.       doesn't work, try rebooting instead. 
  3247.  
  3248.       Some people have reported that removing XFolder INI keys seems to help. 
  3249.       Take some INI editor and look in OS2.INI for application names starting 
  3250.       with "XFolder". Delete them all. With V0.81, XFolder does not rely on INI 
  3251.       keys any more. This will delete all your settings and reset the language 
  3252.       to English, but maybe XFolder will run. 
  3253.  
  3254.       In addition, it is always recommended to have more recent OS/2 fixpaks 
  3255.       applied, that is, at least Fixpak 35 for Warp 3 and fixpak 5 for Warp 4. 
  3256.       XFolder will run without fixpaks, but this might lead to problems. IBM 
  3257.       has changed many things with the SOM kernel over time, which the WPS uses 
  3258.       for its class management. I have tried my best to enhance compatibility, 
  3259.       but I cannot test all possible configurations myself. I have found, for 
  3260.       example, that the standard Warp 3 SOM kernel is extremely buggy, so at 
  3261.       least for Warp 3 I strongly recommend applying fixpaks. (Although with 
  3262.       V0.82, XFolder now does install on Warp 3 even without fixpaks.) 
  3263.  
  3264.    2. The install program says that some of the classes could not be installed. 
  3265.       What can I do? 
  3266.  
  3267.       There were serious installation problems with the previous V0.8x 
  3268.       versions. Apperently, with V0.82, things have become much better since 
  3269.       I've removed SOM multiple inheritance, which the WPS apparently doesn't 
  3270.       like too much on some systems. 
  3271.  
  3272.       If installation still fails, even if only some of the classes could not 
  3273.       be installed, please deregister all the XFolder classes. Get rid of 
  3274.       XFolder altogether until these problems have been solved. The classes are 
  3275.       designed to interact, and your WPS is really likely to crash all the time 
  3276.       if only some of the classes are installed. 
  3277.  
  3278.    3. The install program does not create the "OS/2 Kernel" and "Workplace 
  3279.       Shell" objects. 
  3280.  
  3281.       With V0.80, the install script failed to create the new system objects if 
  3282.       the XFolder config folder already existed. This should be fixed now, but 
  3283.       if problems persist, simply delete your config folder, and all the 
  3284.       objects should be created. 
  3285.  
  3286.       Otherwise, you can still execute the INSTLxxx.CMD and CROBJxxx.CMD 
  3287.       scripts in the INSTALL subdirectory, with "xxx" being your three-digit 
  3288.       language code, as described on the "NLS" page. 
  3289.  
  3290.       However, this might also be due to the fact that the "XFldSystem" and 
  3291.       "XFldWPS" classes could not be properly registered. I have seen this 
  3292.       happen on a Warp 3 system without any fixpaks installed. 
  3293.  
  3294.  
  3295. ΓòÉΓòÉΓòÉ 13.3. FAQ: Menu Questions ΓòÉΓòÉΓòÉ
  3296.  
  3297.    1. My menus have become so crowded. What can I do? 
  3298.  
  3299.       If you consider your context menus too crowded, you can tell the WPS to 
  3300.       omit displaying those menu entries which are only "doubles" to mouse 
  3301.       operations ("Copy", "Move", etc.). 
  3302.  
  3303.           On Warp 3, putting a SET MENUSTYLE=SHORT into CONFIG.SYS will do the 
  3304.            job. 
  3305.  
  3306.           On Warp 4, there is a new setting in the "System" object in the 
  3307.            "System Setup" folder. You should find it on the "Menu" tab. This 
  3308.            setting is also found in every folder's own settings notebook; there 
  3309.            is also folder Setup String to set this for folders individually. 
  3310.            See "WPFolder Setup Strings" for more. 
  3311.  
  3312.       Moreover, you can remove many default menu items individually in the 
  3313.       "Workplace Shell" object on the "Context menu" pages. 
  3314.  
  3315.       The folder content functions are helpful, but can crowd your context 
  3316.       menus too much also if you declare many folders to be your favorites. On 
  3317.       my system, I have created a separate folder called "frequent", which I 
  3318.       have declared to be my only favorite folder. In this folder, I can put 
  3319.       all those folders which I frequently access, so I only have one context 
  3320.       menu entry, but a submenu with all my favorite folders. 
  3321.  
  3322.    2. When I select a context menu item, not the XFolder function, but some 
  3323.       other function gets executed. What is this? 
  3324.  
  3325.       Probably a menu ID conflict with some other WPS extension. This is a 
  3326.       known problem with Network logins. Go to the "Workplace Shell" object, 
  3327.       "XFolder page", then to page 2 ("XFolder Internals"), and raise the "Menu 
  3328.       item ID offset". Press "Help" there for details. 
  3329.  
  3330.    3. When I select a non-XFolder context menu item, XFolder still executes one 
  3331.       of its own functions. What is this? 
  3332.  
  3333.       Same thing as above. 
  3334.  
  3335.    4. When I open a context menu, my system crashes/hangs. What can I do? 
  3336.  
  3337.       Versions prior to V0.82 served as a test for video drivers in this 
  3338.       respect. ;-) I have found out that some video drivers do not support 
  3339.       transparent background mix for bitmaps, which XFolder used to use. While 
  3340.       some drivers silently ignored the transparency, other drivers crashed 
  3341.       badly and stopped the whole system (especially Matrox Millenium). With 
  3342.       V0.82, I have changed the icon painting for folder content menus to use 
  3343.       regular icons instead of bitmaps. Icon painting is still disabled per 
  3344.       default in case something should still go wrong. Turn on "Show icons" on 
  3345.       the "Context menus" pages in "Workplace Shell" to enable icon painting. 
  3346.  
  3347.       If you still have problems, Ralph Scharpf reported that one could install 
  3348.       the IBM GRADD drivers for MGA video cards instead, which appear to be 
  3349.       working. Unfortunately, those cards do not support 1024x768 with more 
  3350.       than 60 Hz, but if you can live with 800x600, this appears to be a 
  3351.       solution. 
  3352.  
  3353.    5. Why do folder content menus not work with folders on the Launchpad? 
  3354.  
  3355.       I don't know. They're always empty. I guess the Launchpad fails to call 
  3356.       XFolder's window procedure, but uses its own one instead. I have found no 
  3357.       way to figure out from where the context menus were opened yet, because 
  3358.       the Launchpad uses regular shadows for displaying objects. 
  3359.  
  3360.    6. I have added something to the config folder, but it doesn't appear in the 
  3361.       menus. Is this a compatibility conflict? 
  3362.  
  3363.       Probably no. Since V0.70, XFolder uses the .ICONPOS extended attributes 
  3364.       of the config folder and its subfolders to determine the order of objects 
  3365.       in a folder. Trouble is, these are only written by the WPS when the 
  3366.       folder is closed, and only if the folder was open in Icon or Details 
  3367.       view. So simply open the folder in Details view and close it again. That 
  3368.       should work. 
  3369.  
  3370.    7. How do I get the underlined characters in menu items for keyboard 
  3371.       shortcuts? 
  3372.  
  3373.       Put a tilde character ("~") in front of a certain character in the 
  3374.       program object's title. This will underline the following character in 
  3375.       the menu entry, allowing you to type this character as a keyboard 
  3376.       shortcut when the context menu is displayed. 
  3377.  
  3378.       (This is different from the folder hotkeys which XFolder adds to open 
  3379.       folders.) 
  3380.  
  3381.       Example: OS/2 ~command window will make "c" a keyboard shortcut in the 
  3382.       context menu. 
  3383.  
  3384.       For this, be sure to check "Suppress ''~'' in window title" in the 
  3385.       "Workplace Shell" object on the "Context menus" pages. 
  3386.  
  3387.    8. I have added a program object to the config folder, but when I select the 
  3388.       menu item, I get error messages from the program. What am I doing wrong? 
  3389.  
  3390.       You will probably need to put a "%" character into the "Parameters" field 
  3391.       of the program object to prevent XFolder from passing the folder as a 
  3392.       parameter. See "Extra features for program objects" for details. 
  3393.  
  3394.    9. I have added a shadow to the config folders, but opening it doesn't work 
  3395.       like with the other objects. What am I doing wrong? 
  3396.  
  3397.       XFolder does open shadows of program objects in the configuration 
  3398.       folders, but it does not change their directories or parameters. This is 
  3399.       not a bug, it's an intentional limitation for security. COPY your program 
  3400.       objects to the configuration folders instead of creating shadows. See the 
  3401.       bottom of the "Extra features for program objects" page for details. 
  3402.  
  3403.   10. How can I execute CMD.EXE commands? 
  3404.  
  3405.       For commands which are built into CMD.EXE (such as REN, COPY, DEL, CD), 
  3406.       put a program object into the XFolder Configuration Folder. Then specify 
  3407.       CMD.EXE in the program object with /C <commands> in the "Parameters" 
  3408.       field. 
  3409.  
  3410.       Example for deleting the folder's whole content: put CMD.EXE in the "Path 
  3411.       and filename" field and /C DEL * in the "Parameters" field. This is, of 
  3412.       course, just a stupid example and NOT recommended. 
  3413.  
  3414.   11. How can I use REXX for WPS manipulation? 
  3415.  
  3416.       I have included extra information in the appendices of this 
  3417.       documentation, which might be useful to you: 
  3418.  
  3419.           a complete list of all the WPFolder settings strings; 
  3420.  
  3421.           a collection of OS/2's default Object ID's. 
  3422.  
  3423.           a diagram of the WPS Class Hierarchy. 
  3424.  
  3425.       If you're not too familiar with REXX, you can copy and modify the 
  3426.       ALWSSORT.CMD file in the XFolder directory to test some of the folder 
  3427.       settings. Please see the "Related files" page for more. 
  3428.  
  3429.       In addition, I strongly recommend the INF book "Rexx Tips&Tricks" by 
  3430.       Bernd Schemmer, which is available as "rxtt28.zip" (or newer) on Hobbes. 
  3431.       ; 
  3432.  
  3433.   12. Why can't I open my new config folder object more than once? 
  3434.  
  3435.       If you create programs objects which need to be opened several times from 
  3436.       different directories (namely for command line objects), be sure to check 
  3437.       the "Create new window" flag on the "Window" tab in the object's 
  3438.       notebook. Otherwise OS/2 will not start a new window but simply resurface 
  3439.       the already opened one. 
  3440.  
  3441.   13. I have deleted the XFolder Configuration Folder. How do I get it back? 
  3442.  
  3443.       Don't worry: As soon as you try to open a context menu, XFolder will 
  3444.       notify you and automatically create a new, empty one on your desktop or 
  3445.       recreate the default configuration, which you may then choose. 
  3446.  
  3447.       Note that this behavior implies that you MUST have a Configuration Folder 
  3448.       somewhere on your system while XFolder is installed. It may be empty, but 
  3449.       it must exist. 
  3450.  
  3451.  
  3452. ΓòÉΓòÉΓòÉ 13.4. FAQ: XShutdown Questions ΓòÉΓòÉΓòÉ
  3453.  
  3454.    1. Why does automatic reboot not work on my system? 
  3455.  
  3456.       I don't know, on some systems it just doesn't, for example my Warp 3 with 
  3457.       FixPak 35, but it does on my Warp 4. I was unable to figure out what the 
  3458.       reason for this is, but a few users have also reported this, and the 
  3459.       problem also occurs with the WarpEnhancer reboot feature, so I guess it's 
  3460.       not XFolder's fault. (The reboot feature uses an undocumented trick 
  3461.       anyway, so there is probably no guarantee by IBM that it will always 
  3462.       work.) If you have the IBM BootManager installed, you can circumvent this 
  3463.       problem by specifying SETBOOT.EXE as a user reboot option (Desktop 
  3464.       settings notebook -> "XDesktop" page 1 -> "Actions"). 
  3465.  
  3466.    2. Is there anything which XShutdown does not properly save? 
  3467.  
  3468.       Yes. XShutdown does not save positions of folders which have changed just 
  3469.       before XShutdown was initiated, because the WPS delays saving folder 
  3470.       positions in some background thread to which I have found no access, and 
  3471.       the format of the folder position entries in OS/2.INI is not documented, 
  3472.       so I cannot do it myself. The same applies to folders which are closed by 
  3473.       XShutdown itself. If you want folder positions to be saved, close them 
  3474.       manually and wait a few (about 10-20) seconds before starting XShutdown. 
  3475.  
  3476.       (With "folder positions", I mean the position of an open folder window 
  3477.       itself, not the positions of the icons in a folder. These are properly 
  3478.       saved.) 
  3479.  
  3480.       Also, XShutdown cannot save changes to the Tasklist window (e.g. fonts or 
  3481.       colors being dropped on them). If you want these changes saved, you'll 
  3482.       have to use OS/2's regular shutdown just once. 
  3483.  
  3484.    3. Why do I keep getting errors while the INI files are being saved? 
  3485.  
  3486.       This is probably due to INI keys which do not contain any data, which 
  3487.       shouldn't happen. Try deleting the offending INI key, since it contains 
  3488.       no data anyway. 
  3489.  
  3490.    4. Why is APM power-off is not working on my system? 
  3491.  
  3492.       I don't know. My computer does not support APM power-off, so I cannot 
  3493.       test this myself. Please contact ARAKAWA Atsushi, arakaw@ibm.net, who has 
  3494.       written the APM code. 
  3495.  
  3496.       Some users have reported that using APM power-off causes a CHKDSK at the 
  3497.       next reboot of OS/2. Apparently, only newer OS/2 kernels have file system 
  3498.       functions which support this features. IBM has introduced a newer APM 
  3499.       support with Warp 4 Fixpak 6, so maybe installing that fixpak will solve 
  3500.       that problem. The "XShutdown" page in the Desktop's settings notebook 
  3501.       displays the version number of the installed APM driver, which should be 
  3502.       at least 1.2 to make APM power-off work. 
  3503.  
  3504.  
  3505.  
  3506.  
  3507. ΓòÉΓòÉΓòÉ 14. Related Files ΓòÉΓòÉΓòÉ
  3508.  
  3509. There are a number of files in the different subdirectory of the XFolder 
  3510. installation directory that might be useful to you: 
  3511.  
  3512.      BOOTMGR.CMD is new with V0.83. This script was supplied by Duane A. 
  3513.       Chamblee  and will automatically add all the current BootManager choices 
  3514.       to the XFolder user-reboot actions for XShutdown. This is done by 
  3515.       modifying the XFolder keys in OS2.INI directly. No guarantee that this 
  3516.       will actually work on your system! 
  3517.  
  3518.      CROBJxxx.CMD (with xxx being a three-digit language code, as described in 
  3519.       National Language Support) are used by XFolder to create the default 
  3520.       Configuration Folders. These are just plain REXX scripts which create a 
  3521.       number of objects on your desktop. 
  3522.  
  3523.       These scripts are called both after XFolder has been installed (after the 
  3524.       first WPS restart) and also whenever XFolder fails to locate its 
  3525.       Configuration Folder. 
  3526.  
  3527.       You may modify these scripts to have a different default configuration 
  3528.       created. However, you should be very careful in changing the various 
  3529.       object settings, especially the OBJECTID keywords, because XFolder might 
  3530.       rely on these. 
  3531.  
  3532.      NEWOBJ.CMD was used in previous versions of XFolder (before 0.52) to 
  3533.       create objects. This is now done with templates, but this script is still 
  3534.       included, for those who got used to it. 
  3535.  
  3536.       It needs the following parameters on the command line: 
  3537.  
  3538.             newobj <wpsclass> <name>
  3539.  
  3540.       It will create a new instance of <wpsclass> with the title <name> in the 
  3541.       current directory. Please see the "WPS Classes" page for a list of WPS 
  3542.       classes. Not all of these make sense when creating objects though. 
  3543.  
  3544.       Here's an example: 
  3545.  
  3546.             newobj WPFolder New_Folder
  3547.  
  3548.       will create a new folder called "New_Folder" in the current directory. 
  3549.  
  3550.       Note: Starting with V0.41, XFolder can also create objects from 
  3551.       templates. This has the advantage that you can create objects with 
  3552.       certain default settings (namely for folders). 
  3553.  
  3554.      NETSCDDE.EXE (The Netscape DDE Interface): see the separate chapter in 
  3555.       this documentation. 
  3556.  
  3557.      REPCLASS.EXE is used by the installation script to register the XFolder 
  3558.       class and replace WPFolder with it. It needs the following parameters on 
  3559.       the command line: 
  3560.  
  3561.             repclass <oldclass> <replacewithclass> [<dllname>]
  3562.  
  3563.       <oldclass> is the WPS class that you wish to replace. This is 
  3564.       case-sensitive. 
  3565.  
  3566.       <replacewithclass> is the new WPS class that you wish to register and at 
  3567.       the same time replace <oldclass> with. This is also case-sensitive. 
  3568.  
  3569.       <dllname> is the dynamic link library (DLL) that contains 
  3570.       <replacewithclass>. If the DLL is not on the LIBPATH (as with XFolder), 
  3571.       you will need to specify the full path. 
  3572.  
  3573.       If <dllname> is omitted, <replacewithclass> will be de-registered and 
  3574.       removed from the replacement list for <oldclass>. 
  3575.  
  3576.       Example for XFolder itself: the classes to be replaced are WPFolder, 
  3577.       WPDisk, and WPSystem, the new XFolder classes are XFolder, XFldDisk, and 
  3578.       XFldSystem , which all reside in the XFLDR.DLL file. 
  3579.  
  3580.       All action performed with this program will only have an effect after 
  3581.       rebooting or restarting the WPS with WPSRESET.EXE (see below). 
  3582.  
  3583.       Warning: Do not attempt to replace single XFolder classes or to undo a 
  3584.       certain XFolder replacement manually. The XFolder classes are designed to 
  3585.       work together and are depend on each other. If you register / deregister 
  3586.       not all of them, the WPS might hang itself up already at boot-up. For 
  3587.       registering or deregistering of the XFolder classes, always use the 
  3588.       install script. 
  3589.  
  3590.      SOUNDxxx.CMD (with xxx being a three-digit language code, as described in 
  3591.       National Language Support) must be started by you to activate the new 
  3592.       XFolder system sounds. These little scripts will write a few 
  3593.       language-dependent strings into the INI files of the OS/2 Multimedia 
  3594.       Subsystem (MMPM/2), which will then be visible in the OS/2 "Sound" 
  3595.       object. Only if XFolder finds these, it will play system sounds at all. 
  3596.  
  3597.      SOUNDOFF.CMD will turn sounds off again by deleting the respective 
  3598.       entries from the MMPM/2 INI files. XFolder will then stop playing system 
  3599.       sounds. 
  3600.  
  3601.       Note: The SOUND files assume that that your MMPM/2 directory is \MMOS2 on 
  3602.       your boot drive. If it is not, you must alter the files yourself. 
  3603.  
  3604.      TREESIZE.EXE is used by the new default menu item of the same name and 
  3605.       displays the disk usage of a folder and all its subfolders in a Tree 
  3606.       view. If Treesize is started with a directory name as a parameter, this 
  3607.       directory is displayed, or the current directory otherwise. 
  3608.  
  3609.       After Treesize is done with its calculations, you may drag and drop new 
  3610.       WPS folders onto the main window, whose size will be calculated then 
  3611.       also. 
  3612.  
  3613.       Treesize offers you some settings using context menus. 
  3614.  
  3615.       All settings are saved when Treesize is closed. 
  3616.  
  3617.      WPSRESET.EXE can restart your WPS without rebooting your computer 
  3618.       altogether (see the "Restart WPS" page for details). It is now (V0.71) 
  3619.       only used by the install script any more, while XFolder does its own WPS 
  3620.       restarting internally. In order to prevent accidental execution, 
  3621.       WPSRESET.EXE must be started with a "-D" parameter on the command line. 
  3622.       (I have forgotten what "-D" stands for, but I'm sure it used to have a 
  3623.       meaning.) 
  3624.  
  3625.      XHELP.CMD is a powerful REXX script which can display language-dependent 
  3626.       messages, both in HTML and simple ASCII format. It was taken out of the 
  3627.       "OS/2 CommandPak" by the same author, also available at my homepage. In 
  3628.       that package, you will find extensive documentation of xhelp. 
  3629.  
  3630.       In XFolder's context, xhelp is only used by the install program and has 
  3631.       no further function. 
  3632.  
  3633.      XSHUTDWN.EXE: see the respective separate page. 
  3634.  
  3635.      All the other .CMD files in the XFolder directory are REXX scripts used 
  3636.       by the default XFolder configuration to quickly set certain folder 
  3637.       settings (they can be found in the "Quick Settings" submenu). The scripts 
  3638.       are very similar, varying only in the settings that are applied to a 
  3639.       folder. ALWSSORT.CMD is commented, so you can look through it and see 
  3640.       what it is doing. Copy ALWSSORT.CMD to some other filename and change the 
  3641.       settings that are applied to the folder in order to apply customized 
  3642.       settings to folders. See the "WPFolder Setup Strings" page for a list of 
  3643.       applicable settings. 
  3644.  
  3645.  
  3646. ΓòÉΓòÉΓòÉ 15. Version Information ΓòÉΓòÉΓòÉ
  3647.  
  3648. This chapter offers you information which changes with every XFolder version: 
  3649.  
  3650.      Compatibility with other software 
  3651.  
  3652.      XFolder revision history: here you will find a compilation what exactly 
  3653.       has changed with each XFolder release 
  3654.  
  3655.  
  3656. ΓòÉΓòÉΓòÉ 15.1. Compatibility with Other Software ΓòÉΓòÉΓòÉ
  3657.  
  3658. As you might have experienced, sometimes several WPS enhancers don't seem to 
  3659. like each other too much. Or maybe they do like each other, but just don't get 
  3660. along. 
  3661.  
  3662. However, I have tested XFolder with several system utilities that I could reach 
  3663. at this time (on both Warp 3 and 4), and a number of users reported other 
  3664. utilities to me. The following programs seemed to be cooperative: 
  3665.  
  3666.      CandyBarZ 1.01 / 1.10 
  3667.      CommandFolder 1.50 
  3668.      Desktop Wizard 1.41 (mind the notes below) 
  3669.      DragText 2.5 
  3670.      Extended Desktop 1.4 
  3671.      FeelX (installs a WPS class) 
  3672.      Hot Scroll 0.80 / 1.00 
  3673.      NPS WPS 1.81 / 1.82 (mind the notes below) 
  3674.      Object Desktop Professional 1.5.2 (mind the notes below) 
  3675.      WatchCat 2.1 (installs a WPS class) 
  3676.      WPAnimatedMousePointer 1.01 
  3677.      WPS Trashcan 2.5.2 
  3678.      X.file 1.1 / 1.2 
  3679.      X.it 2.4 / 2.5 
  3680.  
  3681.  General note. As XFolder is providing more features with every released 
  3682.  version, chances are that it offers functions which other WPS enhancers also 
  3683.  provide for. Depending on which software was installed first (and thus appears 
  3684.  first in the WPS class replacement list), XFolder or the other product may not 
  3685.  get a chance to actually change the WPS's behavior. 
  3686.  
  3687.  Moreover, since XFolder offers a number of features which are also contained 
  3688.  in other WPS packages, you should make sure that these features are not 
  3689.  enabled in several packages at the same time. For example, you should not 
  3690.  enable folder status bars in both XFolder and Object Desktop, which can only 
  3691.  lead to problems. 
  3692.  
  3693.  Warnings. The following list of incompatibilities is based on reports by users 
  3694.  of XFolder. I have not verified these yet and include them only to save you 
  3695.  from trouble. 
  3696.  
  3697.      Object Desktop. OD manipulates the WPS just as intensively as XFolder 
  3698.       does (maybe even more), so it's just natural that most problems have 
  3699.       arised with this software. 
  3700.  
  3701.       Note: I do not have Object Desktop. The following is all I know. If you 
  3702.       find out something, you're welcome to tell me, and I'll add that to this 
  3703.       section. But please do not write me that OD does not cooperate well with 
  3704.       XFolder. I know, and there's little I can do about it. 
  3705.  
  3706.       For all versions, the following rule applies: If you have trouble, 
  3707.       XFolder probably conflicts with OD's folder replacement class, 
  3708.       TSEnhFolder. If nothing else works, you can always deregister that class 
  3709.       (using the "WPS Class list" in the "Workplace Shell" object), and you'll 
  3710.       probably get XFolder to work. 
  3711.  
  3712.       But before that, mind the following notes: 
  3713.  
  3714.       The install program now offers you to alter the order of XFolder and the 
  3715.       "TSEnhFolder" class in the WPS class list which is the WPS class 
  3716.       responsible for most of the Object Desktop folder functions. I believe 
  3717.       this should help, because then XFolder gets the chance to subclass the 
  3718.       folder windows before Object Desktop. 
  3719.  
  3720.       Object Desktop 1.x. 
  3721.  
  3722.       I was reported that XFolder does not cooperate with the "Browse mode" 
  3723.       feature of Object Desktop. You will have to switch this feature off, 
  3724.       sorry. 
  3725.  
  3726.       Also, you should make sure to have the "Folder status bars" disabled in 
  3727.       Object Desktop before enabling the respective XFolder function, or the 
  3728.       funniest things might happen. 
  3729.  
  3730.       Finally, I was reported that XFolder keeps adding status bars to Object 
  3731.       Desktop's "Launchpads" even where they don't belong. Apparently, these 
  3732.       things are derived from the WPFolder class also; they have an "XFolder" 
  3733.       page in their settings notebooks though, so you can turn off XFolder's 
  3734.       status bars for them. 
  3735.  
  3736.       Object Desktop 2.0. Stefan Zechmeister got OD 2.0 to work with XFolder 
  3737.       doing this: 
  3738.         1. Install OD 2.0. 
  3739.         2. Install OD fixkit #1. 
  3740.         3. Install XFolder. Reverse the order of TSEnhFolder class as proposed 
  3741.            by the install script. 
  3742.         4. Go to the "Workplace Shell" object, "XFolder" page 2 and raise the 
  3743.            "Menu item ID offset" to above 700. 
  3744.       If you then move XFolder's installation folder to another folder, make 
  3745.       sure the target folder has OD's extra features turned off. Otherwise 
  3746.       XFolder will complain that its Configuration Folder does not exist. 
  3747.  
  3748.      If you are using NPS WPS, you must make sure to have its "Select by name" 
  3749.       and "Sort by extension" features disabled, because XFolder offers these 
  3750.       features also and gets confused if these features are added by NPS WPS 
  3751.       also. 
  3752.  
  3753.       XFolder does not work with the automatic menu selection of NPS WPS, at 
  3754.       least not if you are using the "Folder content" functions. Sorry, you'll 
  3755.       have to turn that feature off. 
  3756.  
  3757.      I was reported that XFolder seems to have problems cooperating with 
  3758.       Program Commander/2. Apparently, this can be solved by switching off the 
  3759.       "SmartIcons" feature for title bars. 
  3760.  
  3761.      XFolder also seemed to have problems with DragText on some systems. There 
  3762.       must be a setting somewhere in that software to start DragText delayed, 
  3763.       which should solve this. 
  3764.  
  3765.      I was told by Hauke Laging that Extended Clipboard (EClip) by Hinnerk 
  3766.       Becker does not cooperate with XFolder. On Hauke's Warp 4 system, the WPS 
  3767.       hung at startup and did not respond to anything. Hauke then told me that 
  3768.       the problem can be resolved by removing EClip from the startup folder. (I 
  3769.       was unable to reproduce all this, but I'm reporting this to you anyway.) 
  3770.  
  3771.      Several users also reported that the "Snap to grid" function did not seem 
  3772.       to work. I have tested both Warp 3 and 4 and encountered no problems; 
  3773.       these users all had some version of Object Desktop installed, so I 
  3774.       suspect in respect to the "Snap to grid" feature, XFolder and Object 
  3775.       Desktop seem to be colliding somehow. 
  3776.  
  3777.      Bernd Schemmer reported that XFolder seems to be using the same menu ID's 
  3778.       as the LAN Server GUI. If you're using LAN Server (or other software that 
  3779.       might suffer from this), you can now change XFolder's menu IDs in the 
  3780.       "Workplace Shell" object. The default menu ID offset has now (V0.51) been 
  3781.       raised from 100 to 300 to avoid these conflicts. 
  3782.  
  3783.      Michael Holzapfel reported that installing GRADD drivers for the ELSA 
  3784.       Winner 2000FC video card crashed his system when XFolder V0.71 was 
  3785.       installed, causing a CHKDSK at the next reboot, which in turn damaged the 
  3786.       newly installed drivers, so the system wouldn't start at all. He told me 
  3787.       that de-installing XFolder helped. 
  3788.  
  3789.      Dirk Schulz reported that Desktop Wizard and XFolder don't like each 
  3790.       other too much. On his system, he was able to increase the WPS's 
  3791.       stability by de-installing Desktop Wizard. Glad he didn't de-install 
  3792.       XFolder. ;-) 
  3793.  
  3794.  
  3795. ΓòÉΓòÉΓòÉ 15.2. XFolder Revision History ΓòÉΓòÉΓòÉ
  3796.  
  3797. "A designer knows he has arrived at perfection not when there is no longer 
  3798. anything to add, but when there is no longer anything to take away." 
  3799.  
  3800. Antoine de Saint-Exupery 
  3801.  
  3802. Version 0.84 (February 4, 1999) 
  3803.  
  3804. First non-beta. Hope this works better. 
  3805.  
  3806. New features: 
  3807.  
  3808.      Implemented new drive checking when Disk objects ("root folders") are 
  3809.       opened to avoid the annoying system error messages of OS/2. You'll get a 
  3810.       slightly more comfortable message box now with the default OS/2 SYSxxx 
  3811.       error message. That's a bit better, I think. 
  3812.  
  3813.      Finally, a number of WPS default icons can be freely replaced. 
  3814.  
  3815.      Status bar support for WPUrl objects; they display the URL in the status 
  3816.       bar per default. 
  3817.  
  3818.      Double-click on status bar opens folder settings notebook. 
  3819.  
  3820.      XSHUTDWN.EXE can finally do a WPS restart too. 
  3821.  
  3822.  Miscellaneous changes: 
  3823.  
  3824.      Reworked thread and exception handling once more. Added exception 
  3825.       handling to status bars (fnwpSupplObject, xfldr.c). 
  3826.  
  3827.      Reworked the folder subclassing to speed up processing and added more 
  3828.       checks for error conditions (fnwpSubclassedFolderFrame, xfldr.c). 
  3829.  
  3830.  Bugfixes: 
  3831.  
  3832.      V0.83 reported a wrong version number of itself. Fixed. Well, we're at 
  3833.       V0.84 now anyways. 
  3834.  
  3835.      Removal of context menu items broke for abstract objects in V0.81. Fixed. 
  3836.  
  3837.      "File attributes" menu didn't work when several data files were selected. 
  3838.       Fixed. 
  3839.  
  3840.      Fixed a few keyboard focus problems with status bars. 
  3841.  
  3842.      Also changed the way status bars save whether the size of a folder window 
  3843.       has been increased already. This is now stored together with the other 
  3844.       folder pos data in OS2.INI, "PM_Workplace:FolderPos". The status bar keys 
  3845.       end in "@XFSB". This should fix the problem that folder windows were 
  3846.       frequently too small when folder positions were not properly saved. 
  3847.  
  3848.      When users tried to move the XFolder Configuration Folder, they got the 
  3849.       "Config folder does not exist" message all the time. Fixed. 
  3850.  
  3851.      Also, that message is only opened once now. 
  3852.  
  3853.      Fixed a few problems with the "File exists" dialog: 1) XFolder's "does 
  3854.       file exist" algorithm behaved differently from the default WPS behavior 
  3855.       when files were copied from HPFS to FAT or from FAT to FAT and the long 
  3856.       name was different from the real name; 2) on FAT drives, the proposed 
  3857.       name were in 8+3 format, which is not very useful; 3) the proposed names 
  3858.       used to be based on the existing real names, not file titles. 4) Also, 
  3859.       "rename" behaved funny on FAT drives sometimes. Ooouuuargh. Fixed. 
  3860.  
  3861.      Folder views behaved really strange with some CD-ROM directories, 
  3862.       especially with the new Joliet support of CDFS.IFS. I suspect this was 
  3863.       due to some of my DosDevIOCtl's, which I have removed now. 
  3864.  
  3865.      On some systems, opening folder content menus for removeable drives hung 
  3866.       the system when those drives were empty (e.g. because no floppy disk was 
  3867.       in the drive). Added drive checking for folder content menus. 
  3868.  
  3869.      In rare occasions, previous versions would mess up the CONFIG.SYS file by 
  3870.       not setting the correct file size after writing, which led to garbage 
  3871.       characters at the end of the file. Fixed, thanks to ARAKAWA, Atshushi. 
  3872.  
  3873.      The Worker thread was frequently given "regular" priority, which slowed 
  3874.       down the other WPS threads. Fixed; Worker thread priority is now properly 
  3875.       set to "idle". 
  3876.  
  3877.      SOUND.DLL was missing in the V0.83 distribution. Sorry, fixed. 
  3878.  
  3879.      Playing of system sounds was always interrupted when a new sound was to 
  3880.       be started, even if the new sound file did not exist. Fixed 
  3881.       (fntQuickThread, xthreads.c). 
  3882.  
  3883.      XFolder would sometimes fail to process its startup folders even though 
  3884.       it should have processed it. Fixed (fnwpWorkerObject, xfdesk.c). 
  3885.  
  3886.      In rare occasions, e.g. with ObjectREXX's WPS support, saving the WPS 
  3887.       objects during shutdown would crash. I've now added even more "quiet" 
  3888.       exception handling, maybe this helps. 
  3889.  
  3890.  
  3891.  
  3892.  Version 0.83 beta (December 14, 1998) 
  3893.  
  3894.  Well, the major rework of V0.82 broke a number of things, so there are more 
  3895.  bugfixes here. There are still a couple of known bugs which I haven't had time 
  3896.  to fix yet, but I wanted to get these bugfixes out before Christmas. See 
  3897.  "bugs.txt" on my homepage for up-to-date info. 
  3898.  
  3899.  New features: 
  3900.  
  3901.      XSHUTDWN.EXE now has an option for turning on the shutdown log. 
  3902.  
  3903.      BOOTMGR.CMD to automatically add user-reboot options. See Related Files 
  3904.       for more. 
  3905.  
  3906.  Miscellaneous changes: 
  3907.  
  3908.      Replacement "File conflict" dialog now automatically selects the filestem 
  3909.       in the rename proposals. 
  3910.  
  3911.      A few cosmetic changes to the XFolder dialogs. 
  3912.  
  3913.  Bugfixes: 
  3914.  
  3915.      Removal of default menu items broke for data-file objects in V0.81. Fixed 
  3916.       (new wpFilterPopupMenu in xfdataf.*). 
  3917.  
  3918.      Changing file attributes from shadow context menus led to crashes when 
  3919.       several shadows were selected. Fixed (mnuFileSystemSelectingMenuItem, 
  3920.       menus.c). 
  3921.  
  3922.      Copying file names didn't work right either if this was selected from a 
  3923.       context menu of several shadows. Fixed (same place). 
  3924.  
  3925.      Replacement "File conflict" dialog sometimes displayed outdated file 
  3926.       size/date/time information. Fixed (wpConfirmObjectTitle, xfobj.c). 
  3927.  
  3928.      With V0.82, XFolder forgot how to write CONFIG.SYS to disk. That rendered 
  3929.       the whole "OS/2 Kernel" object pretty useless. Fixed, sorry 
  3930.       (fncbConfigItemChanged, xfsys.c). 
  3931.  
  3932.      SUPPRESSPOPUPS wasn't properly read from CONFIG.SYS ("Errors" page). 
  3933.       Fixed. 
  3934.  
  3935.      The second "Screen" page which is inserted into the "System" object for 
  3936.       some video drivers did not appear in "OS/2 Kernel", but somewhere in 
  3937.       "Workplace Shell". Fixed (wpAddDMQSDisplayTypePage, xfsys.*). 
  3938.  
  3939.      XShutdown sometimes reported a data size of 0 when saving INI keys. This 
  3940.       is now silently ignored, so that those error messages shouldn't appear 
  3941.       any longer. 
  3942.  
  3943.      XShutdown got confused with programs which appeared with a PROG_DEFAULT 
  3944.       type in the tasklist. Fixed (xsdBuildShutList, xfdesk.c). 
  3945.  
  3946.      APM power-off entered a critical section after calling the APM interface, 
  3947.       which kept power-off from functioning. Fixed (apm.c). 
  3948.  
  3949.      Dialogs were resized very badly when video resolution was changed. Fixed; 
  3950.       I am now using my own routines for storing/restoring window positions in 
  3951.       winh.*. 
  3952.  
  3953.      Treesize reportedly had trouble on very large hard drives. I suspect this 
  3954.       was due to my use of unsigned int variables, which can only hold values 
  3955.       up to some 4 billion (= 4 GB). Fixed, I'm now always using double 
  3956.       variables. 
  3957.  
  3958.  
  3959.  
  3960.  Version 0.82 beta (November 19, 1998) 
  3961.  
  3962.  This is a major rework. It might not look too different from the previous 
  3963.  version, but I've cleaned up a lot of things. 
  3964.  
  3965.  New features: 
  3966.  
  3967.      More Treesize settings: size display format, low-priority search. 
  3968.  
  3969.      XFolder finally has Warp 4 notebook buttons. There's a new function 
  3970.       winhAssertWarp4Notebook in / helpers/winh.c which can do this with any 
  3971.       notebook page without having to change the dialog resources. Thanks, 
  3972.       Martin Lafaix, for the neccessary information. 
  3973.  
  3974.      Thanks to ARAKAWA Atsushi, APM power-off now works. (I hope. Again, I 
  3975.       cannot test this.) 
  3976.  
  3977.      Added a few more WPS class descriptions. 
  3978.  
  3979.  Miscellaneous changes: 
  3980.  
  3981.      Removed the XFldFileSystem class because it wasn't doing much anyway and 
  3982.       caused installation failures on Warp 3 without fixpaks. Its functionality 
  3983.       is now handled by the XFolder and XFldDataFile classes directly. 
  3984.  
  3985.      Removed the XFolder exit list because this seemed to have caused some 
  3986.       problems during WPS restarts (xfdesk.c). Also changed the algorithm which 
  3987.       determines whether the startup folder should be processed 
  3988.       (fnwpWorkerObject, xfdesk.c). 
  3989.  
  3990.      Completely reworked all the settings notebook page logic. Almost all 
  3991.       pages are now using much more lucid callbacks from the new notebook.* 
  3992.       files. This also ensures proper updating of pages when other pages are 
  3993.       currently open too. 
  3994.  
  3995.      Completely reworked the SOM logic for the "WPS Classes" page in 
  3996.       "Workplace Shell". Maybe this helps with the problems previous versions 
  3997.       had on some systems. Also, this now even displays classes which do not 
  3998.       appear in the "official" WPS class list, because some internal classes 
  3999.       are loaded independently of that. Finally, multiple class replacements 
  4000.       are now properly displayed. Found an interesting undocumented SOM method 
  4001.       (see clsWpsClasses2Cnr in classlist.c for details). 
  4002.  
  4003.      Also added source emphasis to the "WPS Classes" container when context 
  4004.       menus are opened. Previous versions had trouble keeping the selected 
  4005.       classes apart. 
  4006.  
  4007.      XFolder is now smart enough to write changes to CONFIG.SYS in lower case 
  4008.       if the keyword which is replaced contains lower-case characters too 
  4009.       (fnwpConfigCommon, xfsys.c, and str* helper functions in 
  4010.       /helpers/dosh.*). 
  4011.  
  4012.      Fixed a coupla things with NLS DLL loading to make V0.82 work with V0.81 
  4013.       NLS DLLs (cmnQueryNLSModuleHandle, common.c). 
  4014.  
  4015.      XFolder can now write SUPPRESSPOPUPS=0 on "Errors" page in "OS/2 Kernel". 
  4016.       This is a new setting since FP29 (fnwpConfigCommon, xfsys.c). 
  4017.  
  4018.      Sped up confirmation dialog display (XFldObject::wpConfirmObjectTitle, 
  4019.       xfobj.c). 
  4020.  
  4021.      Treesize is now much faster collecting extended attributes (up to 300%). 
  4022.       Also fixed some strange hangs/crashes on some directories. 
  4023.  
  4024.  Bugfixes: 
  4025.  
  4026.      "Templates" checkbox had disappeared from several object notebooks in 
  4027.       V0.80 (removed various wpclsQueryStyle method overrides). Fixed. 
  4028.  
  4029.      Previous versions tended to crash if folders were not running on thread 1 
  4030.       of the WPS. This was especially the case with folders created by various 
  4031.       install programs (StarOffice, IBM feature install). Sorry, XFolder status 
  4032.       bars apparently weren't thread-safe. XFolder now creates a new object 
  4033.       window for each folder which is opened (fnwpSupplObject, xfldr.c), so 
  4034.       that status bar manipulation always occurs on the thread in which the 
  4035.       folder is running. 
  4036.  
  4037.      First "Context menus" settings page had German buttons. This was just an 
  4038.       educational measure. ;-) Fixed. 
  4039.  
  4040.      "Status bars" page 2 had "XFldDataFile" as the default class selection, 
  4041.       even though that class doesn't support status bar codes. Fixed. 
  4042.  
  4043.      Added more error checking to the "QuickOpen" and "Favorite Folder" 
  4044.       functions. Maybe this helps with those strange exceptions on the first 
  4045.       settings page for folders. 
  4046.  
  4047.      XFolder now enforces minimum settings notebook sizes when these are 
  4048.       initially opened, because large pages were truncated previously (new 
  4049.       wpclsQuerySettingsPageSize method overrides in xfdesk.* / xfsys.*). 
  4050.  
  4051.      Reworked the "folder content" menu display so that it only uses regular 
  4052.       icons now. Maybe this solves the mysterious crashes with some video 
  4053.       drivers. 
  4054.  
  4055.      Reworked several parts in menu handling because items were inserted in 
  4056.       the wrong places (menus.c). I also forgot to add the "folder view" items 
  4057.       to Warp 4's menu bar too. And "Create another" was always disabled, no 
  4058.       matter if this was desired in the "Workplace Shell" object. Finally, 
  4059.       "Select by name" wouldn't show up on Warp 3. All fixed. 
  4060.  
  4061.      Also added more error checking when evaluating the config folder. This 
  4062.       should lead to less warning messages if objects are deleted from there 
  4063.       (menus.c). 
  4064.  
  4065.      Startup/QuickOpen status windows were not destroyed, but only hidden when 
  4066.       that action was finished. Fixed. 
  4067.  
  4068.      INI file maintenance broke somewhere in V0.8x; this is now done by the 
  4069.       Worker thread (xfdesk.c). Fixed. 
  4070.  
  4071.      Saving INIs: "Ignore" button should now work when errors occur 
  4072.       (/helpers/prfh.c). 
  4073.  
  4074.      Fixed a few repaint problems with progress bars (/helpers/progbars.c). 
  4075.  
  4076.      Fixed a lot of bugs with the new system sounds. For one, XFolder failed 
  4077.       to install on systems where MMPM/2 was not installed, because XFLDR.DLL 
  4078.       was linked against the MMPM/2 libraries, which then could not be 
  4079.       imported. So we have a new, second SOUND.DLL, which does all the sound 
  4080.       playing. If loading that DLL fails, XFolder simply won't play sounds. See 
  4081.       the sound.* files for details. -- Second, XFolder got really confused 
  4082.       playing sounds when other applications needed the audio device too. This 
  4083.       is now solved; XFolder checks for whether the device is available, and if 
  4084.       another application wants the device while XFolder is playing, playing is 
  4085.       stopped also. -- Third, System sounds in V0.81 worked only if they had 
  4086.       been disabled and enabled again in the "Sound" object 
  4087.       (cmnQuerySystemSound, common.c). Fixed. 
  4088.  
  4089.      Couple of broken links in the German HLP file. Fixed. 
  4090.  
  4091.      Install script crashed when invalid language code was entered. Fixed. 
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  Version 0.81 beta (October 18, 1998) 
  4097.  
  4098.  Starting with this version, the file and function of the error in the source 
  4099.  files is specified here too. For details about the source code changes, refer 
  4100.  to the "CHANGELOG.TXT" file in the source distribution. 
  4101.  
  4102.  New features: 
  4103.  
  4104.      Treesize external program. Part of the default context menu now. 
  4105.  
  4106.      Due to popular request, "Snap to grid" can now snap the selected icons 
  4107.       only. 
  4108.  
  4109.      The position of the startup folder status window is finally saved and 
  4110.       restored the next time. Sorry this has taken so long. 
  4111.  
  4112.  Miscellaneous changes: 
  4113.  
  4114.      Gave up using SOM multiple inheritance, which seems to have caused too 
  4115.       much trouble. In detail, the xfSelectingMenu and xf* methods for status 
  4116.       bars have been removed from XFldObject and subclasses. Status bar 
  4117.       single-object info is now handled in statbars.c (new file) with _somIsA() 
  4118.       calls instead. Not as elegant, but might be a bit faster than SOM method 
  4119.       resolution too. 
  4120.  
  4121.      XFldProgram class removed. Its only purpose was for status bars using SOM 
  4122.       multiple inheritance. Functionality is now handled by menus.c. 
  4123.  
  4124.      Removed extended Settings submenus. Caused too much trouble. Instead, you 
  4125.       may now set additional "Attributes" and "Folder view" menu items in 
  4126.       "Workplace Shell". 
  4127.  
  4128.      Improved animation code to avoid flickering. All the common code for this 
  4129.       is now in the new animate.* files. 
  4130.  
  4131.      Added exception handling to "XFolder" notebook page in folders. This 
  4132.       seems to have broken on some systems. 
  4133.  
  4134.      Made the file-system class replacements return the CLSSTYLE_NEVERTEMPLATE 
  4135.       from wpclsQueryStyle so that no additional templates are produced in the 
  4136.       Templates folder. 
  4137.  
  4138.      Reworked status bar code completely. Should be quite a bit faster now; 
  4139.       however, each code is only translated _once_ now. 
  4140.  
  4141.      Rearranged the pages in the "OS/2 Kernel" and "Workplace Shell" objects. 
  4142.       Also changed the replaced SOM methods (xfsys.*). "OS/2 Kernel" should now 
  4143.       contain all the settings which require a reboot to take effect. I guess 
  4144.       this is a more logical rule. 
  4145.  
  4146.      Removed those darn xfclsQueryModule methods which were used to query the 
  4147.       module handle of xfldr.dll. This might have caused installation failures 
  4148.       on some systems. There is a new DLL init function in module.c now which 
  4149.       is a lot faster and causes less problems. 
  4150.  
  4151.      As a nice side-effect to this, XFolder does not need any INI entries any 
  4152.       more to run properly. If you delete the whole "XFolder" INI thing, 
  4153.       XFolder will re-initialize itself. 
  4154.  
  4155.      Install script set up config folder to open in Tree view per default. 
  4156.       Unfortunately this caused .LONGNAME EAs not to be rewritten when the main 
  4157.       config folder was altered. Fixed, this now uses non-flowed icon view. 
  4158.  
  4159.  Bugfixes: 
  4160.  
  4161.      "HPFS" page wrote "LAZY:1" instead of "/LAZY:1" to CONFIG.SYS. Fixed 
  4162.       (xfsys.c, fnwpConfigCommon). 
  4163.  
  4164.      "HPFS" page could read a few IFS parameters in upper case only. Fixed. 
  4165.  
  4166.      "Memory" page wrote "HPFS" settings too. Forgot a "break" in 
  4167.       fnwpConfigCommon, xfsys.c. 
  4168.  
  4169.      "Errors" page wrote "REIPL=YES" instead of "REIPL=ON". Fixed. 
  4170.  
  4171.      "Object Internals" page displayed object handles only 25% of the time, 
  4172.       depending on how large your object repository was. Fixed. 
  4173.  
  4174.      Install script failed to create "Workplace Shell" and "OS/2 Kernel" 
  4175.       objects if the XFolder Configuration folder already existed. Fixed. 
  4176.  
  4177.      Creating objects from context menus caused non-reproduceable system hangs 
  4178.       from time to time (really bad ones where even C-A-D faild). Added more 
  4179.       error checking (cmnCreateFromTemplate, common.c; this used to be 
  4180.       XFldObject::xfCreateFromTemplate) and rewrote large parts of that routine 
  4181.       to use container messaging now instead of WPS methods. Seems to always 
  4182.       work now. 
  4183.  
  4184.      Reworked "Snap to grid" also so that it now properly uses container 
  4185.       messages (xfSnapToGrid, xfldr.c). 
  4186.  
  4187.      Status bars now check for removeable drives before querying disk 
  4188.       information. Those ugly "drive not ready" popups should now be gone. 
  4189.  
  4190.      Status bars reported garbage if a filename to be displayed contained a 
  4191.       '$' character also. Fixed. 
  4192.  
  4193.      "Folder hotkeys" page listed an "Insert" item, which should have been 
  4194.       called "Paste". Fixed. 
  4195.  
  4196.      Opening large folder content menus (which were repositioned on the 
  4197.       screen) would sometimes cause all menus not to react to mouse clicks any 
  4198.       more. Fixed. 
  4199.  
  4200.      Fixed a memory leak in bitmap handling. I was using IBM sample code 
  4201.       again... 
  4202.  
  4203.      XFolder would sometimes attempt to play system sounds even though no 
  4204.       system sounds were enabled. Fixed. 
  4205.  
  4206.      XFolder sometimes conflicted with the WPS container manipulation when 
  4207.       extended sorting was on. Icons could still be moved within a folder even 
  4208.       though "Always sort" was on. Fixed. 
  4209.  
  4210.      Install script failed to create the new "Workplace Shell" and "OS/2 
  4211.       Kernel" objects when the config folder already existed. Fixed. There are 
  4212.       now two additional scripts in \INSTALL. 
  4213.  
  4214.  
  4215.  
  4216.  Version 0.80 (September 29, 1998) 
  4217.  
  4218.  XFolder's licence agreement has changed. I am now releasing the source code 
  4219.  and have placed XFolder under the GNU Public Licence. See "Licence" for 
  4220.  details. 
  4221.  
  4222.  New features: 
  4223.  
  4224.      XFolder can now replace some WPS confirmation dialogs. 
  4225.  
  4226.      Under OS/2 Warp 4, XFolder finally manages to modify folder menu bars 
  4227.       also according to the context menu settings. 
  4228.  
  4229.      The XFolder Startup folder now has a new menu item in its context menu: 
  4230.       "Start folder content" allows you to start all the objects in it even 
  4231.       after the WPS is up. 
  4232.  
  4233.      "QuickOpen" feature for folders. 
  4234.  
  4235.      The "System" object is now split into two new "OS/2 Kernel" and 
  4236.       "Workplace Shell" objects. Refer to this page for more. 
  4237.  
  4238.      New settings pages therein to change those risky and obscure CONFIG.SYS 
  4239.       settings. Included plenty of information for this. 
  4240.  
  4241.      New "WPS classes" page for manipulating the WPS class list. 
  4242.  
  4243.      Every object now has an "Internals" page in its settings notebook. Here 
  4244.       you can look at lots of information which you can't see otherwise and 
  4245.       even change the object's ID. 
  4246.  
  4247.      "Copy filename" finally works properly with multiple selections in a 
  4248.       folder. Multiple filenames are then separated by spaces. Also introduced 
  4249.       new folder hotkeys for copying the filename (without path: Ctrl+Insert 
  4250.       per default). 
  4251.  
  4252.      Status bars now support different information in single-object mode 
  4253.       depending on the class to which the selected object belongs. To implement 
  4254.       this, I had to introduce even more WPS class replacements. 8-) Moreover, 
  4255.       the "$x" key for status bars now supports formatting text from the right 
  4256.       or as a percentage of the status bar width. Also introduced a few more 
  4257.       keys. See "Configuring status bars" for details. 
  4258.  
  4259.      Status bars now also work for tree views, if you enable this in the 
  4260.       Global Settings. 
  4261.  
  4262.      Status bars now display the folder's context menu when you right-click on 
  4263.       them. 
  4264.  
  4265.      Added a new status bar display style ("Warp 3 sunken"). 
  4266.  
  4267.      XShutdown can now display a little animation. 
  4268.  
  4269.      "Restart WPS" now has a setting for whether the startup folder should be 
  4270.       processed after the restart. 
  4271.  
  4272.      I have provided a source-code plug-in interface for people who are 
  4273.       willing and able to teach XShutdown how to do an APM V1.2 power-off. My 
  4274.       BIOS does not support this, so I cannot do this myself. Hopefully 
  4275.       somebody will succeed. 
  4276.  
  4277.      XShutdown command-line interface. 
  4278.  
  4279.  Miscellaneous changes: 
  4280.  
  4281.      Rearranged the "Context menu" settings pages more logically (I hope). 
  4282.  
  4283.      Finally included proper (and updated) NetscDDE documentation in a 
  4284.       separate INF file. NETSCDDE.TXT is gone. 
  4285.  
  4286.      Beautified XFolder message boxes a little. These now accept fonts from 
  4287.       the font palettes, and these are stored. So at least the XFolder message 
  4288.       boxes don't use that ugly "System Proportional" font any more. 
  4289.  
  4290.      When "Always maintain sort order" is enabled globally, XFolder now wants 
  4291.       a confirmation for whether the Desktop should also be sorted. This will 
  4292.       prevent you from accidentally sorting the Desktop. 
  4293.  
  4294.      "Show icons" for the "Folder content" functions is now disabled per 
  4295.       default. Some video drivers apparently had serious trouble with this (I 
  4296.       was told this for the Matrox Millenium; my ELSA card works fine though). 
  4297.  
  4298.      "Folder content" menus are now repositioned on the screen when they're 
  4299.       very large to avoid having them displayed outside the visible screen 
  4300.       area. 
  4301.  
  4302.      Completely reworked the config folder menu item handling. Previous 
  4303.       versions had problems when the .LONGNAME EAs contained different 
  4304.       information than the actual folder content in the INI files. These two 
  4305.       sources are now compared and balanced. As a side effect, processing these 
  4306.       menu items also now consumes less memory and is faster. 
  4307.  
  4308.      Also reworked the folder content menu item handling. Previous versions 
  4309.       sent far too many PM messages to the menu window, which cost a lot of 
  4310.       time, especially for folders on FAT drives, which are not sorted by 
  4311.       default. Sorting is now done in memory before inserting the menu items 
  4312.       using a QuickSort algorithm. Even on huge directories, this never takes 
  4313.       longer than half a second. I can't do much about the slow icon retrieval 
  4314.       though, that's WPS-internal. 
  4315.  
  4316.      Since I was given a VisualAge C++ compiler by Mark Mellin (thanks again), 
  4317.       this version is now using a better compiler. Since VisualAge C++ does 
  4318.       contain pretty good programming information, I've spent a couple of days 
  4319.       on compiler options and code optimizing, and I hope that this has 
  4320.       resulted in speedier code. 
  4321.  
  4322.      Better memory handling altogher. XFolder now returns unused memory to the 
  4323.       operating system from time to time. 
  4324.  
  4325.      Replaced my own string handling routines with those from an old 
  4326.       programmers CD-ROM which are way faster. 
  4327.  
  4328.      Converted a few SOM instance methods into regular C functions. This 
  4329.       should speed up XFolder a little bit. 
  4330.  
  4331.      XShutdown now always closes the Desktop and WarpCenter windows last. This 
  4332.       will prevent the situation that you'll be unable to use your system after 
  4333.       Shutdown has been cancelled because the Desktop has already been closed. 
  4334.  
  4335.  Yet more bugfixes in this version: 
  4336.  
  4337.      Moving Object Desktop's TSEnhFolder in the install script didn't work. 
  4338.       Fixed. 
  4339.  
  4340.      Win95 keys are finally working. This time I'm sure ;-) because Glauco 
  4341.       Ippolitoni, Italy, sent me a keyboard with those keys. Thanks again. 
  4342.  
  4343.      Previous versions crashed building the context menus if the config folder 
  4344.       contained a broken shadow. Fixed. 
  4345.  
  4346.      The same applied to folder content menus if broken shadows were found. 
  4347.       Fixed. 
  4348.  
  4349.      Included much more error checking for those folder content menus. Maybe 
  4350.       this solves some of the video driver problems mentioned above. 
  4351.  
  4352.      Setting extended sort options from context menus didn't work for open 
  4353.       drive (root folder) views. Fixed. But to do this, I had to introduce two 
  4354.       new WPS methods. :-( 
  4355.  
  4356.      Previous versions kept causing exceptions internally when objects were 
  4357.       being deleted. For some reason which I still don't understand, XFolder's 
  4358.       wpUnInitData method kept getting called twice by the WPS, which really 
  4359.       doesn't make sense. Although this error was handled by the internal WPS 
  4360.       exception handler, this slowed down the deleting process immensely. 
  4361.       Fixed. (But I'm still amazed.) 
  4362.  
  4363.      XFolder failed to release an instance mutex semaphore when a folder was 
  4364.       put back to sleep. Ooops. Fixed. 
  4365.  
  4366.      Found a memory leak in the code doing the "program object tricks" in the 
  4367.       config folder. This must have been in there since XFolder 0.3x. To my 
  4368.       excuse, I took exactly the example code from the wpQueryProgDetails 
  4369.       Toolkit docs, which also forgets to release the allocated memory. ;-) 
  4370.       Fixed. 
  4371.  
  4372.      The values for the "Snap to grid" feature were not dynamically updated 
  4373.       when changed in the Global Settings. This must have broken in V0.70. 
  4374.       Fixed. 
  4375.  
  4376.      "Select by name" appeared in the wrong places when the "Display" menu was 
  4377.       removed. Fixed. 
  4378.  
  4379.      Folder status bars messed up window painting when the window was resized 
  4380.       so that the status bar overlapped the title bar, especially when 
  4381.       "roll-up" features by, say, X.it were used. A simple WS_CLIPSIBLINGS 
  4382.       fixed this. 
  4383.  
  4384.      "Refresh now" did not refresh status bar data. Fixed. 
  4385.  
  4386.      Included more consistency checking for the Worker thread when it 
  4387.       remembers awake objects. Previous versions had a tendency to crash in the 
  4388.       Worker thread from time to time when the Worker thread tried to store an 
  4389.       awake object which wasn't really awake any more. (This occured mainly 
  4390.       when deleting many objects in subfolders. For all programmers: contrary 
  4391.       to what IBM says in the SOM documentation, somIsObj obviously is NOT 
  4392.       crash-safe.) Fixed. 
  4393.  
  4394.      Previous versions opened the objects in the startup / shutdown folders 
  4395.       from the (background) Worker thread, which led to sporadic, unpredictable 
  4396.       crashes. Besides the WarpCenter strongly disliked not being started from 
  4397.       the Workplace thread. These objects are now opened from the main WPS 
  4398.       (Workplace) thread. 
  4399.  
  4400.      XFolder Startup folder was not processed during first startup after 
  4401.       installation. (But only this one time.) Fixed. 
  4402.  
  4403.      The "XFolder Internals" settings page crashed when the filenames of the 
  4404.       NLS DLLs were in capital letters (esp. on FAT drives). Fixed. 
  4405.  
  4406.      XShutdown hung when it tried to close a PM program which was hung also. 
  4407.       (Especially with Netscape...) The "Skip" button wouldn't help anymore 
  4408.       then, because it just didn't react. Fixed: Messages are now posted, not 
  4409.       sent, to PM windows. 
  4410.  
  4411.      Contrary to what the "Auto-close non-PM sessions" window said, no Ctrl+C 
  4412.       signal was sent to a non-PM session, but Ctrl+Break instead. Fixed. 
  4413.  
  4414.      The XShutdown Update thread got lost sometimes when shutdown was 
  4415.       initialized. Fixed. 
  4416.  
  4417.      Completely reworked the XShutdown routines dealing with saving the INI 
  4418.       files. Included a lot more error checking, and the error messages are now 
  4419.       more meaningful. I hope that the errors many users have reported have now 
  4420.       disappeared, and if not, they won't take the whole system down or even 
  4421.       crash your WPS. 
  4422.  
  4423.      Fixed a bug which caused saving the INI files to crash when they were 
  4424.       specified in lower case in CONFIG.SYS. 
  4425.  
  4426.      "Paste" and "View" were still called "Insert" and "Display" in some 
  4427.       places. Fixed. 
  4428.  
  4429.      A few links in the INF files were messed up. Fixed. 
  4430.  
  4431.  
  4432.  
  4433.  Version 0.71 (July 2, 1998) 
  4434.  
  4435.  Only bugfixes in this version. 
  4436.  
  4437.  Bugfixes: 
  4438.  
  4439.      Status bars were not updated any more when objects were deleted from an 
  4440.       open folder. For some reason, the WPS considers a folder "not populated" 
  4441.       any more when it deletes an object from it, and XFolder therefore stopped 
  4442.       updating status bars. Fixed. 
  4443.  
  4444.      V0.70 removed the whole "Sort" menu and re-inserted items with different 
  4445.       menu ids even for default WPS sort menus, which caused other WPS 
  4446.       enhancers (X.it) to fail when they were trying to sort folders. XFolder 
  4447.       now only ADDS items and leaves the other items alone. 
  4448.  
  4449.      Use of $S keys in "single-object mode" caused other object information to 
  4450.       be always related to last object in folder (e.g. "$C objects, $SK KB 
  4451.       (selected: $t [$w] $D $T)"). Fixed. 
  4452.  
  4453.      Forgot to document a few status bar mnemonics in the online help. 
  4454.  
  4455.      Win95 keys were recognized as hotkeys in the Global Settings, but not 
  4456.       saved. Again, I don't have those keys, but I've fixed something. Let's 
  4457.       see if it works. 
  4458.  
  4459.      XFolder sometimes crashed at bootup when no config folder was present. 
  4460.       Fixed. 
  4461.  
  4462.      Since the WPS crashes big time when menu IDs > 0x8000 are used, XFolder 
  4463.       now checks for this (folder content menus) and aborts processing then. 
  4464.  
  4465.      The Warp 4 "Insert" menu item is actually called "Paste". Sorry, I have a 
  4466.       German OS/2. Fixed. 
  4467.  
  4468.      "Restart WPS" now saves and closes all open WPS windows, including the 
  4469.       Desktop, regardless of whether "Close all open windows" was checked. 
  4470.       Since all WPS windows will be closed anyway when the WPS terminates, I 
  4471.       might just as well do it myself. This has the advantage that icon 
  4472.       positions are finally saved for the Desktop too. 
  4473.  
  4474.      "Restart WPS" doesn't use WPSRESET.EXE any more. A simple 
  4475.       DosExit(EXIT_PROCESS, 0) does it too. If I had figured this out earlier, 
  4476.       this could have saved me a couple of days of trial and error. ;-) 
  4477.  
  4478.      Moved a lot of code from the subclassed frame window procedure to a new, 
  4479.       separate object window, which is also running in the PMSHELL Workplace 
  4480.       thread. This might increase compatibility with other WPS software which 
  4481.       also does subclassing. 
  4482.  
  4483.      Just a cosmetic correction: the "reboot" drop-down list box in the 
  4484.       XShutdown confirmation dialog was disabled illogically. Fixed. 
  4485.  
  4486.      Not really a bugfix, but XFolder now creates a shutdown log in the root 
  4487.       directory of your boot drive ("xshutdwn.log"). Some people still have 
  4488.       trouble getting XShutdown to work, and this might help tracking these 
  4489.       problems down. 
  4490.  
  4491.      Now that I had the shutdown log, I was able to track down the mysterious 
  4492.       problems WRT closing VIO sessions, and I found a major bug which caused 
  4493.       XShutdown to sometimes close a different session than the one that was 
  4494.       intended. Fixed. 
  4495.  
  4496.      I also rearranged the order of commands that were executed while saving 
  4497.       the INIs during shutdown. Maybe this helps those people who 
  4498.       (mysteriously) still can't get those functions to work... otherwise, 
  4499.       check the shutdown log. 
  4500.  
  4501.      Rearranged the order of classes in the install script. Some systems 
  4502.       seemed to have problems with the previous order. 
  4503.  
  4504.  
  4505.  
  4506.  Version 0.70 (beta) (June 26, 1998) 
  4507.  
  4508.  Hoo-yah, yet another mega-release. 
  4509.  
  4510.  New features: 
  4511.  
  4512.      "Folder content" functions. 
  4513.  
  4514.      "Select by name" function. 
  4515.  
  4516.      Sort extensions.. 
  4517.  
  4518.      Folder status bars. 
  4519.  
  4520.      Startup / Shutdown folders. 
  4521.  
  4522.      Sounds!! 
  4523.  
  4524.      Rearranged Global Settings more orderly. 
  4525.  
  4526.      Cleaned up internal menu handling routines big time in order to make the 
  4527.       new folder content features work. As a result, the 50-objects limit of 
  4528.       previous versions has been removed. 
  4529.  
  4530.      Default menu items are now removed if a respective checkbox is unchecked; 
  4531.       this seems more consistent to me. 
  4532.  
  4533.      "Help" submenu may now also be removed. 
  4534.  
  4535.      XFolder setup strings introduced for use with REXX. 
  4536.  
  4537.      In Icon views, objects are now created from templates at the mouse 
  4538.       position (from where the context menu was opened). 
  4539.  
  4540.      Support for Win95 keyboards (folder hotkeys). 
  4541.  
  4542.      Beautified dialogs a little. ;-) 
  4543.  
  4544.      XShutdown now checks for existing printer queues before shutting down. 
  4545.  
  4546.      "Restart WPS" now remembers whether to close windows between restarts 
  4547.       (checkbox in confirmation window). 
  4548.  
  4549.      User-configurable reboot actions. 
  4550.  
  4551.      "Shutdown" and "Restart WPS" items in Desktop context menu now contain 
  4552.       "..." only when confirmations are enabled. 
  4553.  
  4554.  Still more bugfixes: 
  4555.  
  4556.      Improved exception handling again. 
  4557.  
  4558.      XFolder refused to create objects altogether when "Open settings after 
  4559.       creating from templates" in the Global Settings was disabled. Fixed. 
  4560.  
  4561.      XFolder crashed when objects were added to the config folder while these 
  4562.       were closed. This resulted in folder context menus not appearing at all. 
  4563.       Fixed. 
  4564.  
  4565.      XFolder got confused on the "XFolder" page in folder settings notebooks 
  4566.       enabling the checkboxes properly. Fixed. 
  4567.  
  4568.      For mysterious reasons, XFolder would crash on some systems after 
  4569.       dropping something on the root folder of the boot drive. Fixed (I hope). 
  4570.  
  4571.      Disabling folder hotkeys would disable all folder subclassing, including 
  4572.       "Auto-scroll tree views". Fixed. 
  4573.  
  4574.      The Warp 4 "View" menu was dubbed "Display" in XFolder dialogs and help 
  4575.       files. Sorry, I don't have an English Warp 4. Fixed. 
  4576.  
  4577.      XShutdown failed to save INIs when the existing OS2*.INI files had the 
  4578.       HRS attributes on ("An error occured saving the INI files: 5"). This 
  4579.       should be fixed now. 
  4580.  
  4581.      XShutdown would sometimes hang after closing all windows, waiting forever 
  4582.       for the Update thread to terminate. Fixed. 
  4583.  
  4584.      XShutdown would sometimes fail to begin shutdown, although the status 
  4585.       window was already displayed, because it was resetting some event 
  4586.       semaphore which was already posted. Fixed. 
  4587.  
  4588.  
  4589.  
  4590.  Version 0.61 (beta) (May 10, 1998) 
  4591.  
  4592.  This is mainly a maintenance release to fix the bugs detected in the last 
  4593.  version. 
  4594.  
  4595.  Some new features anyway: 
  4596.  
  4597.      XFolder now populates the Config folders in the background after WPS 
  4598.       bootup, so you don't have to wait forever on the first right mouse-click. 
  4599.  
  4600.      New "Auto-close non-PM sessions" setting for XShutdown. By popular 
  4601.       demand. ;-) 
  4602.  
  4603.      New NETSCDDE included. See NETSCDDE.TXT for details. 
  4604.  
  4605.      Changed the default folder hotkey configuration for more default hotkeys. 
  4606.  
  4607.      Documented XShutdown internals. 
  4608.  
  4609.  Even more bugfixes: 
  4610.  
  4611.      XShutdown failed to save data of folders which were awake (i.e. stored 
  4612.       somewhere in the WPS process), although they were not visibly open. This 
  4613.       applied especially to the XFolder Config Folder. This is now fixed; all 
  4614.       awake folders are saved too. 
  4615.  
  4616.      XShutdown sometimes failed to save INI files properly. Error checking is 
  4617.       now implemented. 
  4618.  
  4619.      XShutdown sometimes failed to close non-PM sessions. At least 
  4620.       DOS/Win-OS/2 sessions had to be closed manually. This was due to a bug 
  4621.       (feature?!?) in WinQueryWindowProcess, which does not return the process 
  4622.       and session IDs of DOS machines, but those of the first PMSHELL instance. 
  4623.       I don't know what this should be good for... anyway, it's fixed. 
  4624.  
  4625.      XShutdown threads had wrong priority settings, so they would wait forever 
  4626.       when a session had higher priority settings than them. Fixed. 
  4627.  
  4628.      XShutdown also sometimes got confused with its thread management and 
  4629.       would start the same thread twice. Fixed. 
  4630.  
  4631.      Fixed some minor annoyments in the install script. 
  4632.  
  4633.      Somehow languages got messed up after installation; the dialogs were in 
  4634.       German, the help files in English. Fixed. 
  4635.  
  4636.      "Auto-scroll Tree views" did not always realize when the WPS was done 
  4637.       populating a folder. Fixed. 
  4638.  
  4639.      Exception management enhanced. Crashes in XFolder will now not always 
  4640.       take the whole WPS down. Changed location of trap log file to the OS/2 
  4641.       boot drive; if you hear funny sounds, look for "?:\XFLDTRAP.LOG" with "?" 
  4642.       being your boot drive. 
  4643.  
  4644.      Individual folder settings were sometimes set to "disabled" per default. 
  4645.       This does of course not make sense. Fixed. 
  4646.  
  4647.  
  4648.  
  4649.  Version 0.60 (beta) (May 4, 1998) 
  4650.  
  4651.  I know it's been a while since the last release, but to make up for it, this 
  4652.  is a mega-version... 
  4653.  
  4654.  New features / Changes: 
  4655.  
  4656.      XFolder is finally able to order context menu items according to the 
  4657.       order which is seen in Name or Details views of the corresponding config 
  4658.       folder. This was a real hassle... 
  4659.  
  4660.      "Auto-scroll tree views" feature. 
  4661.  
  4662.      XFolder is now fully multi-threaded ("XFolder Worker thread"). 
  4663.  
  4664.      Extended Shutdown and "Restart WPS" features and new settings page for 
  4665.       Desktop. 
  4666.  
  4667.      "Copy filename" feature. 
  4668.  
  4669.      Moved the recreation of the default Config folder into the XFolder code; 
  4670.       this is not any more done by the install script. This way, if the config 
  4671.       folder gets lost, you may recreate your default config folder 
  4672.       automatically. 
  4673.  
  4674.      XFolder is finally able to process hotkeys for the Desktop and drive 
  4675.       (disk) objects also. 
  4676.  
  4677.      There is a new setting on page 1 of the XFolder Global Settings which 
  4678.       tells XFolder what to do after creating an object from a template. 
  4679.  
  4680.      "XFolder" settings page in every folder. 
  4681.  
  4682.      XFolder now also replaces the WPObject class in order to be able to 
  4683.       suppress menu items for all WPS objects. Moreover, "Check disk" and 
  4684.       "Format disk" can be removed from WPDisk objects. Settings page 2 has 
  4685.       been redesigned for all this. 
  4686.  
  4687.      My "Netscape DDE Interface" is now included in this package. See "Related 
  4688.       files" for more. 
  4689.  
  4690.      Added "Close window" to the configurable hotkey items list. (Some people 
  4691.       seem to prefer "Alt+X" over "Alt+F4" to close windows.) 
  4692.  
  4693.      REPCLASS.EXE now explains itself when started without parameters. 
  4694.  
  4695.      WPSRESET.EXE rewritten. 
  4696.  
  4697.      Rearranged buttons in all messages boxes to conform with the OS/2 look 
  4698.       and feel. 
  4699.  
  4700.  Bugfixes: 
  4701.  
  4702.      "Full path in window title" is now ALWAYS properly updated, even when you 
  4703.       move parent folders of an open folder. Thanks to multithreading! 
  4704.  
  4705.      Several users have reported problems when Object Desktop was installed 
  4706.       and "unusual" folders (such as workarea folders and URL folders) were 
  4707.       opened. This would completely mess up the WPS, unless folder hotkeys were 
  4708.       disabled. This problem should be fixed now, because I've finally 
  4709.       implemented a proper way of remembering window procedures for each folder 
  4710.       window separately. The old code was just awful, sorry. 
  4711.  
  4712.      I know I've claimed before that this one was fixed, but when passing 
  4713.       directory names to programs as a parameter, XFolder still forgot to 
  4714.       enclose them in quotes when they contain spaces. Fixed. 
  4715.  
  4716.      XFolder was previously unable to differentiate between "Alt" and "Ctrl" 
  4717.       hotkeys. Fixed. 
  4718.  
  4719.      NEWOBJ.CMD can now handle titles with spaces also. Thanks, John Buckley. 
  4720.  
  4721.  
  4722.  
  4723.  Version 0.52 (March 1, 1998) 
  4724.  
  4725.  New features: 
  4726.  
  4727.      Many more configurable items for folder hotkeys, including sorting, NPS 
  4728.       WPS's "Sort by extension" and OS/2 Warp 4 items. 
  4729.  
  4730.      XFolder is now prepared for National Language Support. It shouldn't take 
  4731.       too long before more than just the English version is available. I am 
  4732.       planning to distribute National Language Support files in separate 
  4733.       packages. NLS support is now on page 5 of the Global Settings, to where I 
  4734.       also moved two settings which were formerly on page 1. Please contact me 
  4735.       if you're interested in translating XFolder to your language. You don't 
  4736.       have to be a programmer, but knowing HTML would help. 
  4737.  
  4738.      A few renovations on the settings pages: most importantly, settings which 
  4739.       don't apply are now grayed out. 
  4740.  
  4741.  Even more bugfixes: 
  4742.  
  4743.      Sometimes hotkeys got activated even though the Ctrl or Alt keys were not 
  4744.       pressed. Fixed. 
  4745.  
  4746.      When the folder name was passed to a started program as a parameter which 
  4747.       was started from a WPDisk object, only the drive letter was passed (e.g. 
  4748.       "C:" instead of "C:\"). Fixed. 
  4749.  
  4750.      Previous versions had problems replacing the default icon for closed 
  4751.       icons, but only on Warp 4. Apparently, on Warp 4, IBM has decided to have 
  4752.       wpclsQueryIconData call BEFORE wpclsInitData, which is really not the way 
  4753.       it should be and, even worse, contradictory to what IBM recommends in the 
  4754.       Toolkit Docs. Anyway, this is fixed now. 
  4755.  
  4756.      Not really a bugfix, but the hotkey list now uses less space in OS2.INI. 
  4757.  
  4758.      No bugfix either, but the annoying "No settings found" message box after 
  4759.       opening the settings notebook was removed. 
  4760.  
  4761.      I forgot to implement "Remove default menu items" and help for disk 
  4762.       objects also. Fixed. 
  4763.  
  4764.  
  4765.  
  4766.  Version 0.51 (Feb 20, 1998) 
  4767.  
  4768.  New features: 
  4769.  
  4770.      Insert separators into menus: simply set a program object's title to 
  4771.       "---". 
  4772.  
  4773.      "Refresh now" also updates the window title (if "Full path in window 
  4774.       titles" is enabled). 
  4775.  
  4776.      At last, XFolder enhances Drive objects also (i.e. the root drive views 
  4777.       that can be opened from the "Drives" folder). Hotkeys still DO NOT work 
  4778.       in here. 
  4779.  
  4780.      Added a few more items to the configurable hotkey list. 
  4781.  
  4782.      Two more REXX scripts for folder settings. 
  4783.  
  4784.  Bugfixes (this is a long list, but I believe nothing of this was really 
  4785.  serious): 
  4786.  
  4787.      Somehow in the last compile of V0.50 the help panels for the "System" 
  4788.       notebook pages got messed up. Fixed. 
  4789.  
  4790.      Cleaned up internal menu handling routines. Removed a few weirdos. 
  4791.  
  4792.      The hotkey entry field in the Settings now only works when a list box 
  4793.       entry has been selected. Anything else didn't make much sense. 
  4794.  
  4795.      When the settings were re-read from OS2.INI at startup, not all the 
  4796.       keyboard hotkeys were initialized, so some of the definitions got lost at 
  4797.       every reboot. Fixed. 
  4798.  
  4799.      For some reason, in the last beta, you could add up to 20 hotkeys, but 
  4800.       you could not get rid of them any more. I simply forgot to add a "Clear" 
  4801.       button, which is available now. 
  4802.  
  4803.      The "full path in folder title" was not updated when the folder was moved 
  4804.       or renamed. This now works half way. 
  4805.  
  4806.      Removed annoying "XFolder could not query its module handle" message, 
  4807.       which was titled a "fatal error", but caused no harm in any way. 
  4808.  
  4809.      Changed default "menu ID offset" setting to 300 to avoid conflicts with 
  4810.       LAN Server and ObjectDesktop from the start. 
  4811.  
  4812.      Install program now backs up the original XFolder Configuration Folder 
  4813.       before erasing it and building a new one from scratch. This avoids having 
  4814.       duplicate entries in the XFolder menus after several installs. 
  4815.  
  4816.      The missing "TREEFONT" setup string has been added to the "WPFolder Setup 
  4817.       Strings" page. 
  4818.  
  4819.      One more thing: somehow I got the terminology for "conditional cascade" 
  4820.       menus messed up. The description on the first settings page has been 
  4821.       corrected. 
  4822.  
  4823.  
  4824.  
  4825.  Version 0.50 beta (Feb 10, 1998) 
  4826.  
  4827.  New features: 
  4828.  
  4829.      "Snap to grid" feature. 
  4830.  
  4831.      Folder hotkeys. 
  4832.  
  4833.      Moved all the XFolder Global Settings onto four pages in the OS/2 
  4834.       "System" object in the System Setup folder. I thought that since there 
  4835.       are a number of settings for folders there, I might just as well add 
  4836.       XFolder's settings in that place also. 
  4837.  
  4838.  
  4839.  
  4840.  Version 0.41 (Feb 8, 1998) 
  4841.  
  4842.  New features: 
  4843.  
  4844.      Templates support! Make shadows of your favorite templates in the 
  4845.       configuration folders, and XFolder will create objects from them. 
  4846.  
  4847.      Clipboard support via "%**C" in program object parameters. 
  4848.  
  4849.      "Keep original title" setting when displaying full path in folder window 
  4850.       title. 
  4851.  
  4852.      XFolder menu ID's are now configurable in the Global Settings. 
  4853.  
  4854.      Added object id's and object setup strings to documentation. 
  4855.  
  4856.  
  4857.  
  4858.  Version 0.40 beta (Feb 6, 1998) 
  4859.  
  4860.  Gee, XFolder is finally getting somewhere. New features: 
  4861.  
  4862.      XFolder Global Settings dialog with zillions of settings. Take a look at 
  4863.       it, it's completely new. In this dialog, you can now configure certain 
  4864.       aspects of XFolder that some users found annoying. Most importantly, you 
  4865.       can now switch off XFolder's icon replacement. 
  4866.  
  4867.      XFolder can now display the full path of the folder in the folder window 
  4868.       title (e.g. "C:\OS2\APPS" instead of just "APPS"), which is a bit more 
  4869.       informative. 
  4870.  
  4871.      XFolder can now also remove OS/2 default menu entries. 
  4872.  
  4873.  
  4874.  
  4875.  Version 0.31 (Feb 1, 1998) 
  4876.  
  4877.  New features: 
  4878.  
  4879.      "Create another" objects in the default configuration now ask for a name 
  4880.       before creating. 
  4881.  
  4882.      More robust online help. Meaningful error messages if not found. 
  4883.  
  4884.      Added online help for pressing F1 over an XFolder variable menu item. 
  4885.  
  4886.  Bugfixes -- I told you, 0.30 was a beta only ;-) : 
  4887.  
  4888.      "%" in parameter lists of program objects is now also recognized when 
  4889.       other parameters need to be passed to the program. Example: "text1.txt %" 
  4890.       now works. The previous version only recognized "%" when it was the only 
  4891.       character in the parameters list. 
  4892.  
  4893.      If the folder name contains spaces, it is now enclosed in quotes ("folder 
  4894.       name") before being passed as a parameter. This allows Netscape to 
  4895.       display these folders also. 
  4896.  
  4897.      Removed faulty information displayed by the install script: the help file 
  4898.       was NEVER copied to \OS2\HELP, despite the announcement of the install 
  4899.       script. 
  4900.  
  4901.      The maximum number of objects in the config folder is still set to 50; 
  4902.       however, instead of crashing, XFolder will now give you a message, asking 
  4903.       you to remove objects. 
  4904.  
  4905.  
  4906.  
  4907.  Version 0.30 beta (Jan 31, 1998) 
  4908.  
  4909.  New features: 
  4910.  
  4911.      Now all object classes are recognized in the config folders, not only 
  4912.       WPPrograms and WPFolders. 
  4913.  
  4914.      Extra functionality for WPPrograms: The folder name is passed to the 
  4915.       program as a parameter, unless the parameter list in the program object 
  4916.       contains "%" (like WPS behaviour). This shall henceforth be known as 
  4917.       "Netscape support". ;-) See "Program objects" for details. 
  4918.  
  4919.      Added online help for XFolder's error messages. This cost me two years of 
  4920.       my life. 
  4921.  
  4922.      Install program improved: replaces previous XFolder versions; creates 
  4923.       more objects than previously, supporting the new features; can now also 
  4924.       recreate the default configuration folder only. 
  4925.  
  4926.  Bugfixes: 
  4927.  
  4928.      Reworked internal handling of submenus. The previous version displayed a 
  4929.       funny behaviour with "almost empty" subfolders, which was not severe 
  4930.       though. 
  4931.  
  4932.  Reworked large parts of this documentation. Window positioning implemented. 
  4933.  
  4934.  
  4935.  Version 0.21 (Jan 23, 1998) 
  4936.  
  4937.  New features: 
  4938.  
  4939.      Can now freely add submenus by recognizing folders in the config folder. 
  4940.  
  4941.      Install program creates an according default config folder. 
  4942.  
  4943.      Documentation extended. 
  4944.  
  4945.  Bugfixes: 
  4946.  
  4947.      XHELP.CMD was missing in the first release, making installation 
  4948.       impossible. 
  4949.  
  4950.  
  4951.  
  4952.  Version 0.11 (Jan 17, 1998) 
  4953.  
  4954.  Initial release with a fixed "XFolder" subfolder, into which single menu items 
  4955.  could be inserted. 
  4956.  
  4957.  
  4958. ΓòÉΓòÉΓòÉ 16. XFolder's Internals ΓòÉΓòÉΓòÉ
  4959.  
  4960. This chapter offers you further information on how XFolder is implemented. The 
  4961. following is not neccessary for every-day use, but simply provided for those 
  4962. who are a bit more familiar with OS/2 and wish to know more. 
  4963.  
  4964.      What are WPS classes? 
  4965.  
  4966.      How does XFolder work? 
  4967.  
  4968.      How does XShutdown work? 
  4969.  
  4970.      How was XFolder developed? 
  4971.  
  4972.      Personal Note 
  4973.  
  4974.  
  4975. ΓòÉΓòÉΓòÉ 16.1. What Are WPS Classes? ΓòÉΓòÉΓòÉ
  4976.  
  4977. First, please take a look at the "WPS classes" page in the "Introduction" 
  4978. section of this document, if you don't have a general understanding of WPS 
  4979. classes yet. 
  4980.  
  4981. In general, in object-oriented programming, a class is an abstract definition 
  4982. of both (1.) data types and (2.) actions that can be performed on that data. 
  4983. The latter are commonly known as object methods. 
  4984.  
  4985. While classes only describe an object type in an abstract way, the objects that 
  4986. really exist in a program are called instances of a certain class. 
  4987.  
  4988. Take a WPS program object, for example: every program object is an instance of 
  4989. the class WPProgram, defined by the WPS. The (1.) data of the program object 
  4990. would be, among others, the executable associated with it (e.g. "CMD.EXE"), 
  4991. while (2.) methods (that could be performed on this data) would be starting the 
  4992. executable (by double-clicking or choosing the "Open" menu item) or changing 
  4993. the executable in the settings notebook. While you cannot "see" methods from 
  4994. the user interface, methods are used all the time internally every time the WPS 
  4995. is doing something. If you're familiar with that term, methods can vaguely be 
  4996. described as an Application Programmer's Interface (API) to an object. If you 
  4997. know how to program REXX: every time you use one of those object setup strings 
  4998. to modify an object's data, you're actually calling a method upon an object. 
  4999.  
  5000. Since methods are defined for each class, the methods that you can call on an 
  5001. object depend on the class of the object. I have not counted them, but already 
  5002. WPObject, the most basic WPS class, defines more than 100 methods. 
  5003.  
  5004. What makes object-oriented programming so flexible (and popular) is that you 
  5005. can define relationships between classes. In order to understand this, the 
  5006. following two concepts are helpful: 
  5007.  
  5008.      Inheritance. This concept allows you to define an object class that takes 
  5009.       over all its data types and methods from another object class, without 
  5010.       requiring that the programmer know how the original class was actually 
  5011.       programmed. You can simple "take over" the features of an existing class 
  5012.       and rewrite only what you wish to implement. The original class is then 
  5013.       called the "ancestor" or "parent" of the "descendant" class. 
  5014.  
  5015.       For example, with the Workplace Shell, the Desktop class (called 
  5016.       "WPDesktop") is derived from the folder class (called "WPFolder"), making 
  5017.       the Desktop just a special type of folder. 
  5018.  
  5019.       So basically, the Desktop has all the capabilities of a regular folder: 
  5020.       you can put other objects into it, sort its contents, open a tree or 
  5021.       details view, and so on. But in addition, the Desktop class provides a 
  5022.       few more actions: its context menu contains more items (such as 
  5023.       "Shutdown" and "System configuration"), its notebook has more pages, and 
  5024.       so on. Obviously, the Desktop inherits folders' characteristics, but adds 
  5025.       a few more. On the other hand side, some folder characteristics are 
  5026.       suppressed: for example, you cannot close the active Desktop, and it does 
  5027.       not have a title bar. 
  5028.  
  5029.       The WPS implements a derivative structure such that all objects are 
  5030.       logically grouped and interdependent. On an even more abstract level, all 
  5031.       object classes of the WPS are descendants of a SINGLE CLASS named 
  5032.       "WPObject", which provides certain functions that all WPS objects need: 
  5033.       mainly the ability to display context menus and notebooks at all and 
  5034.       things like that. This is typical of object-oriented programming; such a 
  5035.       global ancestor class is commonly called the "root class" of a "class 
  5036.       hierarchy". 
  5037.  
  5038.       On WPObject, the WPS builds a complete tree of classes known as the WPS 
  5039.       class hierarchy. You can use the "WPS Classes" page in XFolder's 
  5040.       "Workplace Shell" object to take a look at this. 
  5041.  
  5042.       Such a class hierarchy has the advantage that one can change the 
  5043.       characteristics of this root class only, and all classes which are 
  5044.       derived from it will also change. (The disadvantage is -- from a 
  5045.       programmer's point of view -- that building such a class hierarchy 
  5046.       requires a whole lot of planning which data and which methods are common 
  5047.       to which classes, and many times it turns out that this planning wasn't 
  5048.       quite optimal. But once this hierarchy has been built in a thoughtful way 
  5049.       -- which, thanks to IBM, indeed is the case with the WPS -- the 
  5050.       advantages are just superb.) 
  5051.  
  5052.      Polymorphism. This concept means that, while using inheritance, you can 
  5053.       REPLACE certain characteristics of an ancestor class with new ones. You 
  5054.       can redefine ("override") the original object class's behavior. Now, if a 
  5055.       certain method is performed on the descendant, the newly defined method 
  5056.       is called instead of the one that was defined with the ancestor class. 
  5057.  
  5058.       Just one of the many examples of this can be seen with the "Help" menu 
  5059.       item which is available in every object's context menu. Selecting the 
  5060.       "Extended help" menu item will result in an object's wpDisplayHelp method 
  5061.       to be called. This method is introduced by the by the WPS root class, 
  5062.       WPObject, so that all WPS objects can display help: the OS/2 help manager 
  5063.       is initialized, the help window is displayed, etc. The actual help page 
  5064.       to be displayed however is overridden (following the concept of 
  5065.       polymorphism) by almost every single WPS class. This way, pressing "Help" 
  5066.       in a folder's context menu will show you something different than from, 
  5067.       say, in a program object's menu. 
  5068.  
  5069.  For details on what class replacements are, please refer to the "WPS classes" 
  5070.  page in the "Introduction" section also. 
  5071.  
  5072.  While inheritance and polymorphism are concepts common to every 
  5073.  object-oriented programming environment (and also to object-oriented 
  5074.  languages, such as C++), the Workplace Shell is even able to provide their 
  5075.  advantages across several applications. The WPS consists of many DLLs which 
  5076.  are in part independent of each other, and programmer's outside of IBM can 
  5077.  extend the WPS using these features without even having the WPS's source code, 
  5078.  which is not possible with "normal" object-oriented languages. 
  5079.  
  5080.  This only works because the WPS uses IBM's own System Object Model (SOM), a 
  5081.  complex system which provides object-oriented programming interfaces even 
  5082.  across several code modules, and even independent of the programming language. 
  5083.  SOM is so powerful because classes are instantiated and maintained at run-time 
  5084.  instead of compilation time. 
  5085.  
  5086.  This is, by the way, where the WPS class list comes in: when the WPS is 
  5087.  booting up, it creates all the classes (which, in SOM, are objects too, but 
  5088.  this is a complex issue), and establishes the relationships between them only 
  5089.  at this point. Only because of this is it possible to modify classes without 
  5090.  IBM, who created the originals, even knowing about it. 
  5091.  
  5092.  Just as a short personal opinion, this is still something that makes OS/2 
  5093.  unique in today's computer world. While most of its other advantages over 
  5094.  other operating systems, such as its reliable multitasking, are not that 
  5095.  unique any more (e.g. Linux is pretty good at that, too), the user interface 
  5096.  is still not reached by any operating system that I know. Especially not 
  5097.  Windows 95. 
  5098.  
  5099.  
  5100. ΓòÉΓòÉΓòÉ 16.2. How Does XFolder Work? ΓòÉΓòÉΓòÉ
  5101.  
  5102. XFolder registers and/or replaces a whole number of WPS classes. Take a look at 
  5103. the INSTALL.CMD script in the XFolder installation directory to find out more 
  5104. about this. 
  5105.  
  5106. The most important XFolder class replacements are: 
  5107.  
  5108.    1. XFolder for regular folders, which contains the main functionality of 
  5109.       XFolder, 
  5110.  
  5111.    2. XFldDisk for "disk" objects, which appear in the "Drives" folder, 
  5112.  
  5113.    3. XFldObject, the WPS root class, for being able to access a whole number 
  5114.       of WPS internals, and 
  5115.  
  5116.    4. XFldDesktop for the new Desktop features, especially the eXtended 
  5117.       Shutdown procedure. 
  5118.  
  5119.  All these classes replace the original WPS classes. 
  5120.  
  5121.  In the sense described on the previous page, the XFolder class is a descendant 
  5122.  of the WPFolder class. This way, it can do everything that a regular folder 
  5123.  can. As a new function, it adds new context menu items to all folders, allows 
  5124.  for folder hotkeys, changes the folder window titles, etc. 
  5125.  
  5126.  By using polymorphism, XFolder redefines certain WPFolder methods, as 
  5127.  described below. 
  5128.  
  5129.  However, XFolder is then registered with the WPS as a WPFolder replacement, 
  5130.  meaning that the WPS will use the XFolder class as its standard folder class, 
  5131.  instead of WPFolder. In doing so, the WPFolder class is not any more used 
  5132.  directly, but only through its replacement (and descendant) class, XFolder. 
  5133.  Refer to the "WPS classes" page in the "Introduction" section for more on 
  5134.  this. 
  5135.  
  5136.  Some of the WPFolder methods that the XFolder class overrides are (this will 
  5137.  probably only of interest for programmers): 
  5138.  
  5139.      wpModifyPopupMenu: This WPObject method is called by the WPS just before 
  5140.       an object's context menu is displayed. Each WPS class adds its own, 
  5141.       class-specific menu items here. 
  5142.  
  5143.       Since XFolder plays with menus a lot, this is one of the most important 
  5144.       methods which XFolder overrides. In this method, XFolder first calls the 
  5145.       parent class's (WPFolder's) wpModifyPopupMenu to have all the standard 
  5146.       menu items added to the object's context menu. 
  5147.  
  5148.       It then searches for the XFolder configuration folder (which must have 
  5149.       the object ID <XFOLDER_CONFIG>) and populates it invisibly. Now it goes 
  5150.       through all objects in here, adding submenus and menu items to the 
  5151.       context menu accordingly. If the configuration folder is not found, a 
  5152.       message box pops up and an empty folder with the aforementioned ID is 
  5153.       created on the desktop. 
  5154.  
  5155.       The same is done for the "Folder content" functions and "favorite" 
  5156.       folders. However, these submenus are only filled with objects after they 
  5157.       are opened by the user; this is done by intercepting the WM_INITMENU 
  5158.       message in the subclassed folder frame window procedure (see below). 
  5159.       XFolder also subclasses these submenu windows (and only these) to be able 
  5160.       to paint icons and to intercept mouse button 2 for opening a folder. 
  5161.  
  5162.       (Please note that "subclassing" here has nothing to do with WPS classes, 
  5163.       but is the Presentation Manager terminology for using a different message 
  5164.       procedure for an existing window in order to be able to intercept certain 
  5165.       PM messages for that window. This is done using the WinSubclassWindow 
  5166.       API.) 
  5167.  
  5168.       XFolder also modifies various other menus (such as the the "Sort" 
  5169.       submenu) in this method, if the Global Settings allow this, and adds 
  5170.       other menu items, if these have been enabled in the Global Settings. 
  5171.  
  5172.      wpMenuItemSelected: This is called by the WPS whenever a context menu 
  5173.       item is selected by the user. 
  5174.  
  5175.       XFolder checks if one of its own (variable) menu items was selected; if 
  5176.       so, it finds the corresponding object in the configuration folder and 
  5177.       opens it. If this object is of the WPProgram class, the previously 
  5178.       described tricks are performed. If the object is a template, no matter of 
  5179.       what WPS class, it is not opened, but XFolder creates a new object from 
  5180.       it in the current folder (via wpCreateFromTemplate). 
  5181.  
  5182.       If the selected item is one from the "folder content" submenus, the 
  5183.       corresponding object is simply opened. 
  5184.  
  5185.       If any of the other menu items that XFolder adds to context menus are 
  5186.       selected, XFolder itself will perform the respective action internally. 
  5187.  
  5188.       If none of the XFolder menu items was selected, the parent class's 
  5189.       (WPFolder's) wpMenuItemSelected method is called (in order not to prevent 
  5190.       the standard menu items from functioning). 
  5191.  
  5192.      wpMenuItemHelpSelected: This is called by the WPS whenever you press F1 
  5193.       over a context menu item. XFolder will display a proper help page, if 
  5194.       neccessary. 
  5195.  
  5196.      wpFilterPopupMenu: With this method, XFolder removes those  default menu 
  5197.       entries from the context menus that you have specified in the Global 
  5198.       Settings. (This method is called by the WPS even before 
  5199.       wpModifyPopupMenu, so first items are removed, then new items are 
  5200.       inserted.) 
  5201.  
  5202.      wpclsQueryTitle: The string XFolder (or whatever you have specified in 
  5203.       the Global Settings) is returned to give the XFolder class a unique name. 
  5204.  
  5205.      wpOpen: This routine is called by the WPS every time a folder (and any 
  5206.       other object also) is opened. XFolder needs to override this method to 
  5207.       implement a whole number of features. 
  5208.  
  5209.       First, the parent method is called to have the folder view opened: the 
  5210.       WPS will create a window with a container control in it and shows this 
  5211.       window. 
  5212.  
  5213.       XFolder then intercepts the frame window handle, with which it can then 
  5214.       modify the folder's window title and reset it to the folders complete 
  5215.       path (if enabled in the Global Settings). Basically, it's a simple 
  5216.       WinSetWindowText call, with just a few calculations to truncate the title 
  5217.       if neccessary. 
  5218.  
  5219.       In this method, XFolder also subclasses the folder frame window in order 
  5220.       to be able to handle WM_CHAR messages for folder hotkeys and lots of 
  5221.       other things. For subclassing, this method seemed the best place to me, 
  5222.       since all neccessary WPS initializiation stuff has been done by calling 
  5223.       the parent method, but the user cannot interact with the folder yet, 
  5224.       because it will only be filled with objects ("populated" in WPS 
  5225.       terminology) on a different thread afterwards. 
  5226.  
  5227.       In the new window procedure, XFolder intercepts all WM_CHAR messages 
  5228.       (which are only passed to the frame window procedure if they have not yet 
  5229.       been processed by the container already, such as cursor keys) and 
  5230.       evaluates them according to its internal hotkey list, which can be 
  5231.       changed in the Global Settings. 
  5232.  
  5233.       Subclassing is also needed to introduce folder status bars; the 
  5234.       WM_QUERYFRAMECTLCOUNT, WM_FORMATFRAME, and WM_CALCFRAMERECT messages are 
  5235.       intercepted to resize the folder frame and its container child window 
  5236.       according to the space needed for the folder status bar. 
  5237.  
  5238.       XFolder also intercepts a few container notification messages in order to 
  5239.       provide the "Auto-scroll Tree views" feature and update the status bar 
  5240.       text if object selections have been changed by the user. 
  5241.  
  5242.       In addition, XFolder intercepts various menu messages, such as 
  5243.       WM_INITMENU and WM_MENUSELECT, to be able to handle some menu functions 
  5244.       which are not accessible through regular WPS methods. 
  5245.  
  5246.       All messages which have no meaning to XFolder are passed on to the 
  5247.       original window procedure. 
  5248.  
  5249.       The wpOpen method is also needed for implementing the XFolder extended 
  5250.       sort functions; XFolder updates the container settings according to the 
  5251.       sort criteria which you have specified. 
  5252.  
  5253.      wpAddSettingsPages: This method is called by the WPS every time an 
  5254.       object's settings notebook is opened. XFolder overrides this method also 
  5255.       to add its own settings pages, after having called the parent method, so 
  5256.       that the original settings pages are still inserted. 
  5257.  
  5258.  The XFldDisk class, which replaces the WPDisk class, does not do much, aside 
  5259.  from routing its methods to the XFolder method counterparts, so that drive 
  5260.  views act just like normal (X)folders. IBM has, for some reason, chosen not to 
  5261.  make disk objects regular folders, but implemented a different class for them 
  5262.  (called WPRootFolder), so XFolder needs a separate class too. 
  5263.  
  5264.  XFldObject doesn't do much visibly either, except for suppressing OS/2 default 
  5265.  menu items and adding the "Copy filename" feature. It is however required by 
  5266.  other XFolder parts internally in order to be notified of some internal WPS 
  5267.  events, especially the XShutdown feature, which is described in detail on the 
  5268.  next page. 
  5269.  
  5270.  The XFldDesktop class is implemented to allow changing the Desktop menu items 
  5271.  and for XShutdown, which is described in detail on the next page. 
  5272.  
  5273.  While previous versions also replaced the WPSystem class so that the "System" 
  5274.  object in the "System setup" folder contained more notebook pages to access 
  5275.  XFolder's Global Settings, with V0.80 this behavior has changed. Instead, 
  5276.  XFolder registers two new classes derived from WPSystem without replacing it. 
  5277.  These two classes are XFldSystem and XFldWPS for the "OS/2 Kernel" and 
  5278.  "Workplace Shell" objects, respectively. The settings that you specify here 
  5279.  are (mostly) stored in OS2.INI and evaluated every time XFolder needs them 
  5280.  (e.g. when you open a context menu). In contrast, the "local" XFolder settings 
  5281.  for an individual folder are stored in its .CLASSINFO Extended Attributes, 
  5282.  where the WPS also stores the other folder settings. This is then done by the 
  5283.  XFolder class. 
  5284.  
  5285.  Please note that all the XFolder classes are designed to interact. Do not try 
  5286.  to remove only SOME of them, or XFolder might behave in a funny way (if you're 
  5287.  lucky). All of XFolder's features have been made fairly configurable, so you 
  5288.  should be able to get rid of what you don't like -- or to get rid of XFolder 
  5289.  altogether. 
  5290.  
  5291.  
  5292. ΓòÉΓòÉΓòÉ 16.3. How Does XShutdown Work? ΓòÉΓòÉΓòÉ
  5293.  
  5294. The XShutdown feature has cost me a lot of thought, because it is really not 
  5295. documented anywhere what happens during the normal shutdown process. 
  5296.  
  5297. OS/2 per default knows two different shutdown APIs: 
  5298.  
  5299.      DosShutdown only closes all open files, flushes all file-system buffers 
  5300.       und unmounts all file systems; this is what happens after pressing 
  5301.       Ctrl-Alt-Del. No applications are properly closed, and the WPS is not 
  5302.       saved. 
  5303.  
  5304.      WinShutdownSystem however is the Presentation Manager API which closes 
  5305.       all windows, saves the WPS and finally calls DosShutdown. Just the 
  5306.       regular shutdown procedure that you are used to: this is executed when 
  5307.       you select "Shutdown" from the Desktop's context menu or the respective 
  5308.       icons from the Launchpad or WarpCenter. 
  5309.  
  5310.  Trouble is, there is no function "in between" these two. If you call 
  5311.  DosShutdown the WPS data is not saved. And if you call WinShutdownSystem you 
  5312.  get the regular shutdown without any further chance to interfere. So 
  5313.  basically, I had to recode a complete new WinShutdownSystem, which will now be 
  5314.  explained. This was quite difficult, since IBM hardly explains anything about 
  5315.  what is really going on during WinShutdownSystem. 
  5316.  
  5317.  Note: In XFolder, the "eXtended Shutdown" and "Restart WPS" routines share the 
  5318.  same code; they only differ in what happens after all windows have been 
  5319.  closed. I will thus use the term "XShutdown" in the following explanations for 
  5320.  both features, unless otherwise stated. 
  5321.  
  5322.  XShutdown is integrated into the WPS and relies heavily on the XFolder class 
  5323.  replacements. I have intentionally not put the XShutdown code into a separate 
  5324.  .EXE file for two reasons: for one, XShutdown needs access to WPS internal 
  5325.  data, which is only available from the SOM context; second, I want to prevent 
  5326.  people from trying to use XShutdown separately, without having the XFolder 
  5327.  classes installed, because this could severely damage the Workplace Shell. In 
  5328.  more detail, XShutdown relies on the XFldObject replacement class and the 
  5329.  XFolder Worker thread, which cooperatively keep track of the WPS internal 
  5330.  data. 
  5331.  
  5332.  To understand what XShutdown is now doing, it is neccessary to understand how 
  5333.  the WPS handles its objects internally. Every single object which becomes 
  5334.  relevant to the WPS at some point, be it through populating a folder or 
  5335.  querying its settings or starting a program or whatever, is -- in WPS 
  5336.  terminology -- "awakened" by the system, which means that it exists as a SOM 
  5337.  object in memory. 
  5338.  
  5339.  The WPS only very rarely puts awake objects back to sleep though, which would 
  5340.  free the associated memory and store the object's data back to disk. This has 
  5341.  two consequences: 
  5342.  
  5343.    1. There are always many more awakened objects on your system than you would 
  5344.       actually think, because most of them aren't currently visible. Even after 
  5345.       you close an open folder, the objects therein remain awake; this speeds 
  5346.       up populating the folder when it's opened a second time. As a result 
  5347.       however, the WPS eats up more and more of your memory with each folder 
  5348.       you open. (If you have turned on the XShutdown log file, you can see how 
  5349.       many awake objects were saved by XShutdown; these are usually several 
  5350.       hundred objects, even though XShutdown doesn't save all awake objects, 
  5351.       but only descendants of WPFolder and WPAbstract. On the "Internals" page 
  5352.       in the Desktop's settings notebook you can take a look at how many 
  5353.       objects are currently awake.) 
  5354.  
  5355.    2. A change to the object's data sometimes has only an effect on the SOM 
  5356.       object in memory, but is not always saved to disk or the OS2.INI / 
  5357.       OS2SYS.INI files. This is why sometimes the WPS gets into trouble if you 
  5358.       make comprehensive changes, such as moving a folder containing many 
  5359.       abstract objects, and do not shutdown properly: the physical file data on 
  5360.       disk and the WPS records differ then. 
  5361.  
  5362.  This is what XShutdown needs the XFldObject class for, which replaces 
  5363.  WPObject. Every time an object is awakened, the WPS calls several methods 
  5364.  (among them wpInitData and wpObjectReady). XFldObject overrides these and 
  5365.  passes the object address in memory to the Worker thread, which will then 
  5366.  properly update an XFolder-internal list of all currently awake objects. As 
  5367.  far as I know, there is no other way to find out which objects are currently 
  5368.  awake; at least there is no documented API for enumerating them. 
  5369.  
  5370.  Now, when XShutdown is initiated and confirmed, it first starts two new 
  5371.  threads for the following shutdown procedure, which run parallel to the 
  5372.  regular WPS threads: the main "Shutdown thread" with the message queue for the 
  5373.  status window, and the "Update thread", which monitors the OS/2 Window List 
  5374.  and posts messages to the main shutdown thread, if the status window needs to 
  5375.  be updated. So closing all currently open windows is a fairly complex process 
  5376.  of interaction between these two threads: the Shutdown thread closes a window 
  5377.  and then goes to sleep until the Update thread has detected a change in the 
  5378.  Window List (which means that the window has successfully been closed) and 
  5379.  posts a message back to the Shutdown thread, which then in turn closes the 
  5380.  next window, until all windows are closed. 
  5381.  
  5382.  When all windows are closed, the Update thread exits. Now the Shutdown thread 
  5383.  goes through the list of currently awake objects (which was described above) 
  5384.  and forces saving their data to the INI files or to disk by calling each 
  5385.  object's wpSaveImmediate method. This is only done for WPAbstract and WPFolder 
  5386.  descendants, because from my experience, all other classes save their data 
  5387.  synchroneously. (I have tried saving all WPFileSystem descendants once, and 
  5388.  this caused a lot of extended attributes to be created for every single file 
  5389.  that was ever awakened by the WPS.) 
  5390.  
  5391.  Finally, depending on what action was desired, the Shutdown thread does one of 
  5392.  the following: 
  5393.  
  5394.      If you selected "Restart WPS", the Shutdown thread simply executes 
  5395.       DosExit(EXIT_PROCESS, 0). Since XFolder is part of the Workplace process, 
  5396.       and all parts of the WPS are running in this one process (the second 
  5397.       instance of PMSHELL.EXE), this will terminate the whole Workplace Shell. 
  5398.       The Shell process (the first instance of PMSHELL.EXE) will then restart 
  5399.       the WPS automatically. 
  5400.  
  5401.      If you selected "Shutdown" and "Reboot afterwards", XShutdown now also 
  5402.       saves the INI files to disk. This is neccessary, because DosShutdown, 
  5403.       which is called afterwards, does not save them either. (I guess it's 
  5404.       because the INI file API's belong to Presentation Manager.) Since the PM 
  5405.       INI file API's prohibit simply closing the user and system profiles 
  5406.       (which does write their data to disk for all other profiles), XFolder 
  5407.       copies them to two temporary profiles, deletes the originals, and then 
  5408.       renames the temporary profiles to the names of the originals. After 
  5409.       DosShutdown ("Releasing file systems..."), the system is rebooted via a 
  5410.       call to the DOS.SYS device driver. This feature is documented in EDM/2 
  5411.       volume 5, issue 9. 
  5412.  
  5413.      If you selected "Shutdown" and NOT "Reboot afterwards", after 
  5414.       DosShutdown, XShutdown disables the window list and then simply blocks 
  5415.       the system by calling DosEnterCritSec and staying in an infinite loop. 
  5416.       Since all file systems are closed, no further action should be possible, 
  5417.       except for turning off your computer or pressing Ctrl-Alt-Del. 
  5418.  
  5419.  
  5420. ΓòÉΓòÉΓòÉ 16.4. How Was XFolder Developed? ΓòÉΓòÉΓòÉ
  5421.  
  5422. XFolder is programmed in C, using the Warp 3 Developer's Toolkit. All XFolder 
  5423. versions until 0.72 were programmed using the IBM C-Set/2 compiler. Thanks to 
  5424. the generous support of Mark Mellin, who sent me VisualAge C++ 3.0, all 
  5425. versions from XFolder 0.80 will have been compiled using that compiler, which 
  5426. has a number of helpful improvements over the earlier IBM compilers. 
  5427.  
  5428. I'm just a university student in Germany and cannot afford to buy $500 
  5429. integrated developments, however powerful and convenient they may be. This is 
  5430. why I've been programming Borland Pascal 7 for DOS for years and went on to 
  5431. REXX during 1997, a result of which is my (in my view) very valuable CommandPak 
  5432. package for improving the OS/2 command shell. (It is also available from my 
  5433. homepage.) 
  5434.  
  5435. I got my C-Set/2 from the German OS/2 magazine "OS/2 Inside", which was said to 
  5436. be the best OS/2 printing in the world. They had a CD-ROM for just some US-$ 
  5437. 20, containing a full C-Set. 
  5438.  
  5439. I used to have the ordering address on this page, but "OS/2 Inside" has gone 
  5440. out of business, and their ordering shop has reportedly been closed down also. 
  5441. So sadly, I know no way to obtain a cheap IBM compiler for OS/2 any more. 
  5442.  
  5443. It is still possible to write WPS classes using the great free EMX/GCC 
  5444. compiler, which is available for download at LEO in Germany. The only 
  5445. requirement is a Warp 3 Developer's Toolkit, unfortunately. 
  5446.  
  5447. While IBM has stated that it will no longer support SOM altoghether, it is 
  5448. still a great technology, although it needs quite a bit of reading until you 
  5449. know what's going on. 
  5450.  
  5451. The Warp 3 Toolkit contains everything for developing powerful WPS classes. It 
  5452. is sufficiently documented to understand the basic WPS functionality, enabling 
  5453. me (who neither knew C nor the OS/2 API, but only OOP with Pascal and Windows 
  5454. 3.1) to build XFolder's basic functionality (version 0.11) in a triplet of 
  5455. days. (Things become more difficult with more sophisticated features, but 
  5456. that's another story.) 
  5457.  
  5458. Valuable reading, aside from the Toolkit docs, can also be found in the four 
  5459. IBM OS/2 V2.0 Redbooks, which I found on an old Hobbes CD-ROM and might still 
  5460. be available on the commonly known FTP sites. It is quite outdated (dealing 
  5461. only with OS/2 V2.0), but the system's basic concepts have pretty much remained 
  5462. the same. 
  5463.  
  5464. I also strongly recommend the Electronic Developer's Magazine for OS/2 on the 
  5465. WWW, which has published fabulous articles on all aspects of OS/2 programming. 
  5466. There are two series about WPS programming, one starting in volume 2 issue 8, 
  5467. the other one in volume 5 issue 10. 
  5468.  
  5469. If you have the above tools, you should be able to program the WPS in a jiffy. 
  5470. All you still need then is a good portion of patience, since the WPS runs in a 
  5471. single process (PMSHELL.EXE), and bugs in your project will make the whole 
  5472. thing crash repeatedly. Check the helpful "Debugging WPS applications" section 
  5473. in the Toolkit WPS Guide to compensate at least the most annoying problems. 
  5474.  
  5475.  
  5476. ΓòÉΓòÉΓòÉ 16.5. Personal Note ΓòÉΓòÉΓòÉ
  5477.  
  5478. Finally, another subjective thesis: 
  5479.  
  5480. If IBM had managed to push an affordable compiler into the market just three 
  5481. years earlier, OS/2 would be better positioned today. 
  5482.  
  5483. At least for me, not programming OS/2 was not due to a lack of interest, but a 
  5484. lack of money. Both the freeware/shareware and the commercial market could have 
  5485. been WAY more vital with a "Turbo Pascal for OS/2". But this problem just 
  5486. matches the general problems with OS/2: the best technology around, but no 
  5487. interest in the mass market. :-( 
  5488.  
  5489. BTW, some consolation for depressed OS/2 users can be found on the most 
  5490. excellent web page "OS/2 Headquarters" by Tom Nadeau at 
  5491. http://www.mindspring.com/~os2headquarters/ with the two excellent, witty 
  5492. series "Understanding Microsoft" and "Understanding IBM", plus more. 
  5493.  
  5494. "Then was the land filled with the sound of much wailing and gnashing of teeth, 
  5495. for millions of people used OS/2 and knew that it was good. Yet the Lizard did 
  5496. harden his heart against them, and said, Nay, there is no demand for it." 
  5497.  
  5498. Found at: http://www.gate.net/~shipbrk/mozilla.html 
  5499.  
  5500.  
  5501. ΓòÉΓòÉΓòÉ 17. Appendices ΓòÉΓòÉΓòÉ
  5502.  
  5503. This chapter offers you various reference information on XFolder and also some 
  5504. on the WPS which is otherwise hard to get: 
  5505.  
  5506.      WPS class hierarchy: a diagram of the most important WPS classes 
  5507.  
  5508.      WPS object IDs: a collection of object IDs which should be valid on most 
  5509.       systems 
  5510.  
  5511.      WPFolder setup strings: all the setup strings that are valid on folder 
  5512.       objects 
  5513.  
  5514.      New XFolder setup strings: new setup strings for folders introduced by 
  5515.       the XFolder class 
  5516.  
  5517.      WPS menu ID's: a collection of menu ID's that can be used with the 
  5518.       MENUITEMSELECTED setup string 
  5519.  
  5520.  
  5521. ΓòÉΓòÉΓòÉ 17.1. WPS Class Hierarchy ΓòÉΓòÉΓòÉ
  5522.  
  5523. The following information has been taken out of IBM's Warp 3 Toolkit 
  5524. documentation. The XFolder class has been omitted here. OS/2 Warp 4 adds a few 
  5525. more classes, which are in part shown here; depending on other WPS-aware 
  5526. software installed on your system, even more classes might be available for 
  5527. certain document types. 
  5528.  
  5529. Classes that make sense to create objects with using the provided NEWOBJ.CMD 
  5530. are highlighted. Be careful with other classes, results may be unpredictable. 
  5531.  
  5532.        WPObject
  5533.          Γö£ΓöÇΓöÇ WPAbstract
  5534.          Γöé     Γö£ΓöÇΓöÇ WPClock
  5535.          Γöé     Γö£ΓöÇΓöÇ WPCountry
  5536.          Γöé     Γö£ΓöÇΓöÇ WPDisk
  5537.          Γöé     Γö£ΓöÇΓöÇ WPKeyboard
  5538.          Γöé     Γö£ΓöÇΓöÇ WPLaunchPad
  5539.          Γöé     Γö£ΓöÇΓöÇ WPMouse
  5540.          Γöé     Γö£ΓöÇΓöÇ WPPalette
  5541.          Γöé     Γöé     Γö£ΓöÇΓöÇ WPColorPalette
  5542.          Γöé     Γöé     Γö£ΓöÇΓöÇ WPFontPalette
  5543.          Γöé     Γöé     ΓööΓöÇΓöÇ WPSchemePalette
  5544.          Γöé     Γö£ΓöÇΓöÇ WPPower
  5545.          Γöé     Γö£ΓöÇΓöÇ WPPrinter
  5546.          Γöé     Γöé      ΓööΓöÇΓöÇ WPRPrinter
  5547.          Γöé     Γö£ΓöÇΓöÇ WPProgram
  5548.          Γöé     Γö£ΓöÇΓöÇ WPShadow
  5549.          Γöé     Γöé      ΓööΓöÇΓöÇ WPNetLink
  5550.          Γöé     Γö£ΓöÇΓöÇ WPShredder
  5551.          Γöé     Γö£ΓöÇΓöÇ WPSound
  5552.          Γöé     Γö£ΓöÇΓöÇ WPSpecialNeeds
  5553.          Γöé     Γö£ΓöÇΓöÇ WPSpool
  5554.          Γöé     Γö£ΓöÇΓöÇ WPSystem
  5555.          Γöé     ΓööΓöÇΓöÇ WPWinConfig
  5556.          Γö£ΓöÇΓöÇ WPFileSystem
  5557.          Γöé     Γö£ΓöÇΓöÇ WPDataFile
  5558.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPBitmap             3)
  5559.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPHtml               2)
  5560.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPIcon
  5561.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPMet
  5562.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPPif
  5563.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPPointer
  5564.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPProgramFile
  5565.          Γöé     Γöé      Γöé      ΓööΓöÇΓöÇ WPCommandFile
  5566.          Γöé     Γöé      Γö£ΓöÇΓöÇ WPUrl                2)
  5567.          Γöé     Γöé      ΓööΓöÇΓöÇ WebExplorer_Url      1)
  5568.          Γöé     ΓööΓöÇΓöÇ WPFolder
  5569.          Γöé            Γö£ΓöÇΓöÇ WPDesktop
  5570.          Γöé            Γö£ΓöÇΓöÇ WPDrives
  5571.          Γöé            Γö£ΓöÇΓöÇ WPHost               2)
  5572.          Γöé            Γö£ΓöÇΓöÇ WPHvManager          2)
  5573.          Γöé            Γö£ΓöÇΓöÇ WPMinWinViewer
  5574.          Γöé            Γö£ΓöÇΓöÇ WPNetgrp
  5575.          Γöé            Γö£ΓöÇΓöÇ WPNetwork
  5576.          Γöé            Γö£ΓöÇΓöÇ WPRootFolder
  5577.          Γöé            Γö£ΓöÇΓöÇ WPServer
  5578.          Γöé            Γö£ΓöÇΓöÇ WPSharedDir
  5579.          Γöé            Γö£ΓöÇΓöÇ WPStartup
  5580.          Γöé            Γö£ΓöÇΓöÇ WPUrlFolder          2)
  5581.          Γöé            ΓööΓöÇΓöÇ WPTemplates
  5582.          ΓööΓöÇΓöÇ WPTransient
  5583.                Γö£ΓöÇΓöÇ WPDevice                    2)
  5584.                Γöé     Γö£ΓöÇΓöÇ WPDevAudio            2)
  5585.                Γöé     Γö£ΓöÇΓöÇ WPDevBus              2)
  5586.                Γöé     Γö£ΓöÇΓöÇ WPDevCDRom            2)
  5587.                Γöé     Γö£ΓöÇΓöÇ WPDevCPU              2)
  5588.                Γöé     Γö£ΓöÇΓöÇ WPDevDiskette         2)
  5589.                Γöé     Γö£ΓöÇΓöÇ WPDevDisplay          2)
  5590.                Γöé     Γö£ΓöÇΓöÇ WPDevHarddrive        2)
  5591.                Γöé     Γö£ΓöÇΓöÇ WPDevKeyboard         2)
  5592.                Γöé     Γö£ΓöÇΓöÇ WPDevMemory           2)
  5593.                Γöé     Γö£ΓöÇΓöÇ WPDevMouse            2)
  5594.                Γöé     Γö£ΓöÇΓöÇ WPDevParallel         2)
  5595.                Γöé     Γö£ΓöÇΓöÇ WPDevPeriph           2)
  5596.                Γöé     Γö£ΓöÇΓöÇ WPDevSerial           2)
  5597.                Γöé     Γö£ΓöÇΓöÇ WPDevTape             2)
  5598.                Γöé     ΓööΓöÇΓöÇ WPDevTimer            2)
  5599.                Γö£ΓöÇΓöÇ WPJob
  5600.                Γö£ΓöÇΓöÇ WPPdr
  5601.                Γö£ΓöÇΓöÇ WPPort
  5602.                ΓööΓöÇΓöÇ WPQdr
  5603.  
  5604. Notices: 
  5605.  
  5606. 1) This is not a standard WPS class and might not be present on every Warp 3 
  5607. system. 
  5608.  
  5609. 2) This class is available only on OS/2 Warp 4. 
  5610.  
  5611. 3) In Warp 4, WPBitmap is a subclass of WPImageFile, which is in turn a 
  5612. subclass of WPDataFile. 
  5613.  
  5614.  
  5615. ΓòÉΓòÉΓòÉ 17.2. WPS Object IDs ΓòÉΓòÉΓòÉ
  5616.  
  5617. The following Object IDs are predefined when installing OS/2 and should thus be 
  5618. accessible on every system (unless the corresponding object has been deleted by 
  5619. the user). 
  5620.  
  5621.      System folders: 
  5622.  
  5623.       <WP_NOWHERE>: Hidden folder (where the launchpad resides, "?:\Nowhere") 
  5624.       <WP_DESKTOP>: the currently active desktop 
  5625.       <WP_OS2SYS>: OS/2 System folder 
  5626.       <WP_TEMPS>: Templates folder 
  5627.       <WP_CONFIG>: System Setup folder 
  5628.       <WP_START>: Startup folder 
  5629.       <WP_INFO>: Information folder 
  5630.       <WP_DRIVES>: Drives folder 
  5631.       <WP_PROMPTS>: Command Prompts folder 
  5632.       <WP_TOOLS>: Productivity folder 
  5633.       <WP_GAMES>: Games folder 
  5634.  
  5635.      Other system objects: 
  5636.  
  5637.       <WP_VIEWINF>: VIEW.EXE program 
  5638.       <WP_SYSED>: OS/2 System Editor 
  5639.       <WP_ICON>: Icon Editor 
  5640.       <WP_PULSE>: Pulse 
  5641.       <WP_CLIPV>: Clipboard Viewer 
  5642.  
  5643.       <WP_OS2FS>: OS/2 Full Screen session 
  5644.       <WP_OS2WIN>: OS/2 Window session 
  5645.       <WP_DOSFS>: DOS Full Screen session 
  5646.       <WP_DOSWIN>: DOS Window session 
  5647.       <WP_WINFS>: Win-OS/2 Full Screen session 
  5648.       <WP_WIN2WIN>: Win-OS/2 Window session 
  5649.  
  5650.       <WP_KEYB>: Keyboard settings 
  5651.       <WP_MOUSE>: Mouse settings 
  5652.       <WP_SYSTEM>: System settings 
  5653.       <WP_CNTRY>: Country settings 
  5654.       <WP_SOUND>: Sound settings 
  5655.       <WP_SPOOL>: Spooler 
  5656.  
  5657.       <WP_FONTPAL>: Font Palette 
  5658.       <WP_HIRESCLRPAL>: Color Palette 1 
  5659.       <WP_LORESCLRPAL>: Color Palette 2 
  5660.       <WP_SCHPAL>: Scheme Palette 
  5661.  
  5662.       <WP_VIEWER>: Minimized Windows Viewer 
  5663.       <WP_SHRED>: Shredder 
  5664.       <WP_CLOCK>: System Clock 
  5665.  
  5666.  In addition, XFolder introduces the following object IDs: 
  5667.  
  5668.  <XFOLDER_CONFIG>: the (main) XFolder Configuration folder 
  5669.  <XFOLDER_STARTUP>: the XFolder Startup folder 
  5670.  <XFOLDER_SHUTDOWN>: the XFolder Shutdown folder 
  5671.  <XFOLDER_WPS>: the "OS/2 Kernel" object 
  5672.  <XFOLDER_WPS>: the "Workplace Shell" object 
  5673.  <XFOLDER_REF>: the "XFolder Online Reference" program object 
  5674.  
  5675.  
  5676. ΓòÉΓòÉΓòÉ 17.3. WPFolder Setup Strings ΓòÉΓòÉΓòÉ
  5677.  
  5678. In order to change a certain object's setting with REXX, use the following 
  5679. RexxUtil function: 
  5680.  
  5681. rc = SysSetObjectData(<name>, <setup>)
  5682.  
  5683. with: 
  5684.  
  5685. <name> being the object you wish to change (referenced either by a full path 
  5686. specification or an object ID, such as <WP_DESKTOP>); 
  5687.  
  5688. <setup> being one of the WPS setup strings, which always have a 
  5689. <keyword>=<data> syntax. You can combine several settings by separating them 
  5690. with semicola (";"). 
  5691.  
  5692. Example: 
  5693.  
  5694.   if SysSetObjectData(directory(),"NOMOVE=YES;DEFAULTVIEW=ICON") then
  5695.     Say "Settings changed!"
  5696.  
  5697. This will change the folder settings for the current directory, which is useful 
  5698. for scripts called by XFolder, which have the intended directory already 
  5699. changed to. 
  5700.  
  5701. See the OS/2 REXX Reference for details. 
  5702.  
  5703. The list below describes all the setup strings for the WPObject class, plus 
  5704. additional strings supported by the WPFolder class. (In short, you may use any 
  5705. of the following strings on folders.) The list is sorted alphabetically. 
  5706.  
  5707. ALWAYSSORT={YES|NO} 
  5708. Set whether folder sort order is always maintained. Opening and adding an 
  5709. object to a folder may take longer if the sort order is being maintained. 
  5710.  
  5711. Note: XFolder overrides this setting string if you have the extended sort 
  5712. functions enabled. See "XFolder setup strings" for the changes with respect to 
  5713. this setting. 
  5714.  
  5715. BACKGROUND=<name>,<mode>,<factor>,<bgtype>,<bgcol> 
  5716. This sets the folder background, where: 
  5717.  
  5718. <name> = Image file name. This name must be the fully qualified path of the 
  5719. image file. "?:\" is permitted to indicate the boot drive. 
  5720.  
  5721. <mode> = Image mode. This mode can be one of the following: 
  5722. N = Normal image 
  5723. T = Tiled image 
  5724. S = Scaled image 
  5725.  
  5726. <factor> = Scaling factor. 
  5727.  
  5728. <bgtype> = Background type. This can be one of the following: 
  5729. I = Image 
  5730. C = Color only 
  5731.  
  5732. <bgcol> = Background color. This color can be 3 numbers representing RGB values 
  5733. or the default, in the following format: {R-value G-value B-value} 
  5734.  
  5735. Example: BACKGROUND=C:\OS2\BITMAP\OS2LOGO.BMP,S,3,I or BACKGROUND=(none),,,C,0 
  5736. 128 128 
  5737.  
  5738. CCVIEW=DEFAULT 
  5739. Uses the default value of the concurrent view setting of the system, when the 
  5740. user selects open. This is the default value. 
  5741.  
  5742. CCVIEW=YES 
  5743. Creates new views of the object every time the user selects open. 
  5744.  
  5745. CCVIEW=NO 
  5746. Resurfaces open views of object, when the user selects open. 
  5747.  
  5748. DEFAULTVIEW=DEFAULT 
  5749. Sets the default open view to what was specified in the OS/2 System object. 
  5750. This is the default value. 
  5751.  
  5752. DEFAULTVIEW={SETTINGS|ICON|TREE|DETAILS} 
  5753. Sets the default open view to the specified folder view. 
  5754.  
  5755. DETAILSCLASS=<classname> 
  5756. This sets the object class for which the details are displayed in details view. 
  5757. The default object class is WPFileSystem. You better not mess with this one. 
  5758.  
  5759. DETAILSFONT=<size>.<facename> 
  5760. Change the font used for a details view. For example: 9.WarpSans Bold. The 
  5761. default value is 8.Helv (on Warp 3) 
  5762.  
  5763. DETAILSSHADOWCOLOR=<color> (Warp 4 only) 
  5764. Text color for a shadow object in the Details View. <color> may be standard 
  5765. color name or an r g b set of numbers. 
  5766.  
  5767. DETAILSTEXTCOLOR=<color> (Warp 4 only) 
  5768. Text color for normal objects in the Details View. <color> may may be standard 
  5769. color name or an r g b set of numbers. 
  5770.  
  5771. DETAILSVIEW=<style> 
  5772. This set details view to the specified style. Possible values are: 
  5773. MINI small icon; this is the default. 
  5774. NORMAL normal-size icon. 
  5775.  
  5776. HELPLIBRARY=<filename> 
  5777. Sets the help library. 
  5778.  
  5779. HELPPANEL=<id> 
  5780. Sets the object's default help panel within the help library. You better not 
  5781. mess with these settings, for you have to know the WPS internal help resource 
  5782. IDs. 
  5783.  
  5784. HIDEBUTTON={YES|NO} 
  5785. Determine whether views of this object have a hide button as opposed to a 
  5786. minimize button. The default is the current system Button appearance for 
  5787. windows setting. This cannot be specified here. 
  5788.  
  5789. ICONFILE=<filename> 
  5790. Sets the folder's closed icon. <filename> must be a ".ICO" file. 
  5791.  
  5792. ICONFONT=<size>.<facename> 
  5793. Setup string used to change the font used for an icon view. For example: 
  5794. 10.Helv 
  5795.  
  5796. ICONNFILE=<index>,<filename> 
  5797. This sets the file name of the animation (open folder) icon. The <index> value 
  5798. must be set to 1. The specified file (".ICO") contains the folder's open folder 
  5799. icon. 
  5800.  
  5801. ICONNRESOURCE=<index>,<id>,<modname> 
  5802. Sets the animation (open folder) icon to data residing in a resource file. The 
  5803. <index> value must be set to 1. The <id> is the identity of an icon resource in 
  5804. the <module> dynamic link library (DLL). The specified resource is the folder's 
  5805. open folder icon. 
  5806.  
  5807. ICONPOS=<x>,<y> 
  5808. Sets the folder's initial icon position in the parent folder. The x and y 
  5809. values represent the position in the folder in percentage coordinates. 
  5810.  
  5811. ICONRESOURCE=<id>,<modname> 
  5812. Sets the object's icon to data residing in a resource file. The <id> is the 
  5813. icon resource ID in the dynamic link library (DLL) <module>. 
  5814.  
  5815. ICONSHADOWCOLOR=<color> (Warp 4 only) 
  5816. Text color for shadow icons in the Icons View. <color> may be a standard color 
  5817. name or an r g b set of numbers. 
  5818.  
  5819. ICONTEXTBACKGROUNDCOLOR=<color> (Warp 4 only) 
  5820. Background color for normal text in the Icons, Tree and Details View. <color> 
  5821. may be a standard color name or an r g b set of numbers. 
  5822.  
  5823. ICONTEXTCOLOR=<color> (Warp 4 only) 
  5824. Text color for normal icons in the Icons View. <color> may be a standard color 
  5825. name or an r g b set of numbers. 
  5826.  
  5827. ICONTEXTVISIBLE={YES|NO} 
  5828. The names of objects contained in a folder are displayed or not displayed in 
  5829. the Icon View. 
  5830.  
  5831. ICONVIEW=<style1>[,<style2>...] 
  5832. This sets icon view to the specified styles. Possible values are: FLOWED NOGRID 
  5833. INVISIBLE NONFLOWED MINI NORMAL 
  5834. The default value is NOGRID,NORMAL 
  5835. These settings correspond to the "Icon view" page in a folder's settings 
  5836. notebook. 
  5837.  
  5838. ICONVIEWPOS=<x>,<y>,<cx>,<cy> 
  5839. This sets the initial icon view position and size of the folder on the screen. 
  5840. These values are percentages (0-100) of the screen size. 
  5841.  
  5842. LOCKEDINPLACE={YES|NO} (Warp 4 only) 
  5843. This object is fixed or not fixed in position. 
  5844.  
  5845. MENUBAR={YES|NO} (Warp 4 only) 
  5846. The menubar of the folder is displayed or not displayed. 
  5847.  
  5848. MENUITEMSELECTED <menu-item-id> (Warp 4 only) 
  5849. Simulates selecting the specified menu item from the object's popup menu. 
  5850. <menu-item-id> must be a numeric value. 
  5851. You may obtain the <menu-item-id> with the XRAY tool which is available on the 
  5852. Internet. Or look on the respective "WPS Menu IDs" page (Hey, this setting 
  5853. works for XFolder menu items also, BTW.) 
  5854. This is not really a "setting", but rather a command to be performed on the 
  5855. folder. 
  5856.  
  5857. MENUS={SHORT|LONG} (Warp 4 only) 
  5858. Determine whether this objects has a short popup menu (without menu entries 
  5859. that duplicate drag 'n' drop functions) or the full one. 
  5860.  
  5861. MINWIN={HIDE|VIEWER|DESKTOP} 
  5862. Determine whether the minimized folder will be hidden, placed into the 
  5863. Minimized Windows View, or minimized to the desktop. 
  5864. The default is the current Minimize button setting. This cannot be specified 
  5865. here. 
  5866.  
  5867. NOCOPY={YES|NO} 
  5868. The folder cannot be copied. 
  5869.  
  5870. NODELETE={YES|NO} 
  5871. The folder cannot be deleted. Be careful with this one. 
  5872.  
  5873. NODRAG={YES|NO} 
  5874. The folder cannot be dragged with the mouse. 
  5875.  
  5876. NODROP={YES|NO} 
  5877. The folder will not accept any objects dropped upon it. 
  5878.  
  5879. NOLINK={YES|NO} 
  5880. No shadows can be created of this folder. 
  5881.  
  5882. NOMOVE={YES|NO} 
  5883. The folder cannot be moved. 
  5884.  
  5885. NOPRINT={YES|NO} 
  5886. The folder cannot be printed. This is default value. Why would you want to 
  5887. print a folder? 
  5888.  
  5889. NORENAME={YES|NO} 
  5890. The folder cannot be renamed. 
  5891.  
  5892. NOSETTINGS={YES|NO} 
  5893. The folder's settings notebook cannot be opened. 
  5894.  
  5895. NOSHADOW={YES|NO} 
  5896. same as NOLINK. 
  5897.  
  5898. NOTVISIBLE={YES|NO} 
  5899. The folder is not visible. Be careful with this style, since you might not be 
  5900. able to get the folder back. 
  5901.  
  5902. OBJECTID=<<name>> 
  5903. Sets a persistent ID for the object. An Object ID is any unique string preceded 
  5904. with a < and terminated with a >. 
  5905. Object IDs are useful for identifying objects without knowing their exact 
  5906. location on the user's desktop. For example, the desktop always has the ID 
  5907. <WP_DESKTOP> on every system; the XFolder Configuration folder is assigned an 
  5908. ID of <XFOLDER_CONFIG>, so that XFolder finds it even though you might have 
  5909. moved it to a different location. See the "WPS Object IDs" page for a listing 
  5910. of system IDs. 
  5911.  
  5912. Object IDs are even neccessary to be able to locate abstract WPS objects (e.g. 
  5913. shadows or program objects) from REXX, since these objects do not appear in the 
  5914. file system. So if you create an abstract object from REXX and wish to be able 
  5915. to open it from REXX also, you must assign it an Object ID. 
  5916.  
  5917. The default is to not have an ID. 
  5918.  
  5919. OPEN={SETTINGS|DEFAULT|ICON|TREE|DETAILS} 
  5920. Open a view now. This is the clever trick used by a zillion REXX scripts on the 
  5921. Internet to open a folder from the OS/2 command line. 
  5922. OPEN=DEFAULT will open the default view of the folder (as if you had 
  5923. double-clicked on it). 
  5924. This is not really a "setting", but rather a command to be performed on the 
  5925. folder. It will open immediately. 
  5926.  
  5927. REMOVEFONTS={YES|NO} 
  5928. This can remove all instance fonts from the folder, i.e. the ones that apply to 
  5929. this folder only (specified by the respective object settings strings or in the 
  5930. folder Settings notebook). Default is NO. 
  5931. This is not really a "setting", but rather a command to be performed on the 
  5932. folder. 
  5933.  
  5934. SHOWALLINTREEVIEW={YES|NO} (Warp 4 only) 
  5935. Show all objects in an open Tree View or only folders. 
  5936.  
  5937. SORTCLASS=<classname> 
  5938. This sets the class object to sort by. The default class object is 
  5939. WPFileSystem. 
  5940.  
  5941. TEMPLATE={YES|NO} 
  5942. Determines whether this folder is a template or not. Default is NO (of course). 
  5943.  
  5944. TITLE=<title> 
  5945. Sets the object's title to something new. This will also change the "real" 
  5946. filename, just as if you had changed the title from the WPS. 
  5947.  
  5948. TREEFONT=<size>.<facename> 
  5949. Setup string used to change the font used for an Tree view. For example: 
  5950. 10.Helv 
  5951.  
  5952. TREESHADOWCOLOR=<color> (Warp 4 only) 
  5953. Text color for shadow icons in the Tree View. <color> may be a standard color 
  5954. name or an r g b set of numbers. 
  5955.  
  5956. TREETEXTCOLOR=<color> (Warp 4 only) 
  5957. Text color for normal icons in the Tree View. <color> may be a standard color 
  5958. name or an r g b set of numbers. 
  5959.  
  5960. TREETEXTVISIBLE={YES|NO} (Warp 4 only) 
  5961. The names of the objects contained in a folder are displayed or not dispalyed 
  5962. in Tree View. 
  5963.  
  5964. TREEVIEW=<style1>[,<style2>...] 
  5965. This sets the tree view to the specified styles. Possible values are: INVISIBLE 
  5966. LINES MINI NOLINES NORMAL 
  5967. The default value is LINES, NORMAL 
  5968. These settings correspond to the "Tree view" page in a folder's settings 
  5969. notebook. 
  5970.  
  5971. WORKAREA={YES|NO} 
  5972. This sets the folder so it is a workarea. Default is NO. 
  5973.  
  5974.  
  5975. ΓòÉΓòÉΓòÉ 17.4. New XFolder Setup Strings ΓòÉΓòÉΓòÉ
  5976.  
  5977. The following setup strings can be used the same way as the regular folder 
  5978. setup strings described on the previous page; however, they work only when 
  5979. XFolder is properly installed. These setup strings have been introduced with 
  5980. XFolder V0.70. 
  5981.  
  5982. ACCELERATORS={YES|NO|DEFAULT} 
  5983. Sets for an individual folder whether it will respond to folder hotkeys. This 
  5984. setting corresponds to the one on the "XFolder" notebook settings page. YES or 
  5985. NO will set this setting for this folder no matter what was specified in the 
  5986. XFolder Global Settings, while DEFAULT will set this setting to the Global 
  5987. Settings value. See "Folder hotkeys" for details. 
  5988.  
  5989. ALWAYSSORT={YES|NO|DEFAULT} 
  5990. Sets for an individual folder whether it will always maintain its sort order. 
  5991. As opposed to the standard WPS folder setup string, XFolder's new 
  5992. interpretation also accepts "DEFAULT" as a parameter, which will reset the 
  5993. setting to what you specified on the "Sort" page in the "System" object. 
  5994.  
  5995. DEFAULTSORT=<crit> 
  5996. This will set the default sort criterion for an individual folder to something 
  5997. different from the global sort criterion. <crit> may be one of the following: 
  5998.  0   sort by name 
  5999.  1   sort by type 
  6000.  2   sort by object class 
  6001.  3   sort by real name 
  6002.  4   sort by size 
  6003.  5   sort by last write date 
  6004.  6   sort by last access date 
  6005.  7   sort by creation date 
  6006.  8   sort by file name extension 
  6007.  9   sort folders first 
  6008.  255  reset to global default sort criterion 
  6009.  
  6010. FAVORITEFOLDER={YES|NO} 
  6011. Sets for an individual folder whether its contents can be viewed from all 
  6012. context menus on your system. Default is NO. There is no global value for this 
  6013. setting. See "Folder content functions" for details. 
  6014.  
  6015. FULLPATH={YES|NO|DEFAULT} 
  6016. Sets for an individual folder whether its full path will be displayed in its 
  6017. window title. This setting corresponds to the one on the "XFolder" notebook 
  6018. settings page. YES or NO will set this setting for this folder no matter what 
  6019. was specified in the XFolder Global Settings, while DEFAULT will set this 
  6020. setting to the Global Settings value. See "Full path in window titles" for 
  6021. details. 
  6022.  
  6023. SNAPTOGRID={YES|NO|DEFAULT|EXEC} 
  6024. Sets for an individual folder whether the "Snap to grid" item will appear in 
  6025. the folder's context menu. This setting corresponds to the one on the "XFolder" 
  6026. notebook settings page. YES or NO will set this setting for this folder no 
  6027. matter what was specified in the XFolder Global Settings, while DEFAULT will 
  6028. set this setting to the Global Settings value. EXEC will execute the "Snap to 
  6029. grid" function on the folder, just as if you had selected it from the context 
  6030. menu. EXEC is thus no setting, but a command to be performed on a folder. See 
  6031. "Snap to grid" for details. 
  6032.  
  6033. SORTNOW=<crit> 
  6034. This will sort all currently open views of an individual folder without 
  6035. changing a folder's setting (as opposed to DEFAULTSORT). This is not really a 
  6036. "setting", but rather a command to be performed on a folder. 
  6037. <crit> may be one of the following: 
  6038.  0   sort by name 
  6039.  1   sort by type 
  6040.  2   sort by object class 
  6041.  3   sort by real name 
  6042.  4   sort by size 
  6043.  5   sort by last write date 
  6044.  6   sort by last access date 
  6045.  7   sort by creation date 
  6046.  8   sort by file name extension 
  6047.  9   sort folders first 
  6048.  255  use default sort criterion 
  6049.  
  6050. STATUSBAR={YES|NO|DEFAULT} 
  6051. Sets the visibility state for an individual folder status bar. This setting 
  6052. corresponds to the one on the "XFolder" notebook settings page. YES or NO will 
  6053. set this setting for this folder no matter what was specified in the XFolder 
  6054. Global Settings, while DEFAULT will set this setting to the Global Settings 
  6055. value. See "Folder status bars" for details. 
  6056.  
  6057.  
  6058. ΓòÉΓòÉΓòÉ 17.5. WPS Menu IDs ΓòÉΓòÉΓòÉ
  6059.  
  6060. When using the WPObject setup string MENUITEMSELECTED, the following menu IDs 
  6061. might be useful to you. Please keep in mind that not all of these are intended 
  6062. for all kinds of objects; for example, "Format disk" does not make sense on 
  6063. folders, and I don't know what will happen if you try this out. If you're 
  6064. lucky, nothing happens. 
  6065.  
  6066. Note that the new menu items introduced by XFolder have no fixed menu IDs, so 
  6067. they're not listed here. The XFolder menu items have variable menu IDs, whose 
  6068. base is specified with the "XFolder menu item ID offset" global setting. This 
  6069. base is added to WPMENUID_USER, which is 0x6500 (25856 decimal), and the 
  6070. XFolder menu ID's are then added to that base to allow compatibility with other 
  6071. WPS enhancers. So if you wish to use an XFolder menu item with 
  6072. MENUITEMSELECTED, you need some utility such as XRAY to figure out the "real" 
  6073. menu id. The ID will of course change again if you change the offset setting. 
  6074.  
  6075. The following WPS menu IDs are taken from the Warp 3 Toolkit docs (I have 
  6076. excluded those which make no sense when called from REXX): 
  6077.  
  6078.  WPMENUID_OPEN             1 
  6079.  WPMENUID_HELP             2 
  6080.  WPMENUID_PRINT            3 
  6081.  WPMENUID_SELECT            4 
  6082.  WPMENUID_SORT             5 
  6083.  WPMENUID_FIND             8 
  6084.  WPMENUID_CREATEANOTHER       101 
  6085.  WPMENUID_MOVE            107 
  6086.  WPMENUID_COPY            108 
  6087.  WPMENUID_CREATESHADOW        316 
  6088.  WPMENUID_DELETE           109 
  6089.  WPMENUID_PROPERTIES         112 
  6090.  WPMENUID_PALETTE          317 ("Open" -> "Palette") 
  6091.  WPMENUID_REFRESH          503 
  6092.  WPMENUID_HELP_FOR_HELP       601 
  6093.  WPMENUID_HOWTOGETHELP        601 
  6094.  WPMENUID_EXTENDEDHELP        602 
  6095.  WPMENUID_HELPKEYS          603 
  6096.  WPMENUID_HELPINDEX         604 
  6097.  
  6098.  The following menu items are for the "Pickup" ("lazy drag") function: 
  6099.  WPMENUID_PICKUP           188 
  6100.  WPMENUID_PUTDOWN          189 
  6101.  WPMENUID_PUTDOWN_COPY        190 
  6102.  WPMENUID_PUTDOWN_MOVE        191 
  6103.  WPMENUID_PUTDOWN_LINK        192 
  6104.  WPMENUID_PUTDOWN_CANCEL       193 
  6105.  WPMENUID_PUTDOWN_CREATE       194 
  6106.  
  6107.  WPFolder items: 
  6108.  WPMENUID_SELALL           114 
  6109.            (select all folder items) 
  6110.  WPMENUID_DESELALL          115 
  6111.            (deselect all folder items) 
  6112.  WPMENUID_CLOSE           120 
  6113.  WPMENUID_TREE            123 
  6114.            ("Open" -> "Tree view") 
  6115.  WPMENUID_ICON            303 
  6116.            ("Open" -> "Icon view") 
  6117.  WPMENUID_DETAILS          304 
  6118.            ("Open" -> "Details view") 
  6119.  WPMENUID_ARRANGE          309 
  6120.            (on Warp 4, this is the "Default" Arrange item) 
  6121.  
  6122.  WPDesktop items: 
  6123.  WPMENUID_SHUTDOWN          704 (WPDesktop items) 
  6124.  WPMENUID_LOCKUP           705 
  6125.  WPMENUID_LOGIN           708 
  6126.  WPMENUID_LOGOUT           709 
  6127.  WPMENUID_ASSIGN           710 
  6128.  WPMENUID_UNASSIGN          711 
  6129.  WPMENUID_ACCESSNEW         712 
  6130.  WPMENUID_SYSTEMSETUP        713 
  6131.  
  6132.  WPMENUID_FORMAT           124 (WPDisk items) 
  6133.  WPMENUID_CHKDSK           128 
  6134.  WPMENUID_FIXDSK           129 
  6135.  WPMENUID_PROGRAM          132 
  6136.  WPMENUID_COPYDSK          182 
  6137.  WPMENUID_LOCKDISK          184 
  6138.  WPMENUID_EJECTDISK         185 
  6139.  WPMENUID_UNLOCKDISK         186 
  6140.  
  6141.  
  6142.  The following IDs are not officially documented by IBM, thus their symbols are 
  6143.  not official (but invented by me). Most of them are available on OS/2 Warp 4 
  6144.  only. The menu IDs are now in hexadecimal (use the REXX function X2D to 
  6145.  convert them to decimal): 
  6146.  
  6147.  WPMENUID_PASTE          0x2CB 
  6148.  WPMENUID_VIEW_ICON        0x2CC 
  6149.            ("View" -> "Icon view", as opposed to "Open"; Warp 4 only) 
  6150.  WPMENUID_VIEW_TREE        0x2CD 
  6151.            ("View" -> "Tree view", as opposed to "Open"; Warp 4 only) 
  6152.  WPMENUID_VIEW_DETAILS       0x2CE 
  6153.            ("View" -> "Details view", as opposed to "Open"; Warp 4 only) 
  6154.  
  6155.  WPMENUID_SORTBYNAME       0x1770 
  6156.  WPMENUID_SORTBYTYPE       0x1771 
  6157.  WPMENUID_SORTBYREALNAME     0x1777 
  6158.  WPMENUID_SORTBYSIZE       0x1778 
  6159.  WPMENUID_SORTBYWRITEDATE     0x1779 
  6160.  WPMENUID_SORTBYACCESSDATE    0x177B 
  6161.  WPMENUID_SORTBYCREATIONDATE   0x177D 
  6162.  
  6163.  WPMENUID_ARRANGEFROMTOP      0x2DE 
  6164.  WPMENUID_ARRANGEFROMLEFT     0x2DF 
  6165.  WPMENUID_ARRANGEFROMRIGHT     0x2E0 
  6166.  WPMENUID_ARRANGEFROMBOTTOM    0x2E1 
  6167.  WPMENUID_ARRANGEPERIMETER     0x2E3 
  6168.  WPMENUID_ARRANGEHORIZONTALLY   0x2E4 
  6169.  WPMENUID_ARRANGEVERTICALLY    0x2E5 
  6170.  
  6171.  WPMENUID_LOCKINPLACE       0x2DA 
  6172.  WPMENUID_VIEW           0x68 
  6173.  
  6174.  WPMENUID_REFRESH         0x1F7 
  6175.  
  6176.  
  6177. ΓòÉΓòÉΓòÉ 18. Resources on the Internet ΓòÉΓòÉΓòÉ
  6178.  
  6179. This chapter contains all external links referenced in this book.  Each link 
  6180. contained herein is an Unified Resource Locator (URL) to a certain location  on 
  6181. the Internet. Simply double-click on one of them to launch Netscape  with the 
  6182. respective URL. 
  6183.  
  6184.  
  6185. ΓòÉΓòÉΓòÉ 18.1. http://developer.netscape.com/library/documentation/communicator/DDE ΓòÉΓòÉΓòÉ
  6186.  
  6187.                   Click below to launch Netscape with this URL:
  6188.  
  6189.       http://developer.netscape.com/library/documentation/communicator/DDE
  6190.  
  6191.  
  6192. ΓòÉΓòÉΓòÉ 18.2. http://www.edm2.com/ ΓòÉΓòÉΓòÉ
  6193.  
  6194.                   Click below to launch Netscape with this URL:
  6195.  
  6196.                               http://www.edm2.com/
  6197.  
  6198.  
  6199. ΓòÉΓòÉΓòÉ 18.3. http://www.gate.net/~shipbrk/mozilla.html ΓòÉΓòÉΓòÉ
  6200.  
  6201.                   Click below to launch Netscape with this URL:
  6202.  
  6203.                     http://www.gate.net/~shipbrk/mozilla.html
  6204.  
  6205.  
  6206. ΓòÉΓòÉΓòÉ 18.4. http://www.leo.org/pub/comp/os/os2/ ΓòÉΓòÉΓòÉ
  6207.  
  6208.                   Click below to launch Netscape with this URL:
  6209.  
  6210.                        http://www.leo.org/pub/comp/os/os2/
  6211.  
  6212.  
  6213. ΓòÉΓòÉΓòÉ 18.5. http://www.mindspring.com/~os2headquarters/ ΓòÉΓòÉΓòÉ
  6214.  
  6215.                   Click below to launch Netscape with this URL:
  6216.  
  6217.                    http://www.mindspring.com/~os2headquarters/
  6218.  
  6219.  
  6220. ΓòÉΓòÉΓòÉ 18.6. http://www.netlabs.org ΓòÉΓòÉΓòÉ
  6221.  
  6222.                   Click below to launch Netscape with this URL:
  6223.  
  6224.                              http://www.netlabs.org
  6225.  
  6226.  
  6227. ΓòÉΓòÉΓòÉ 18.7. http://www.online-club.de/m1/clanganke/ ΓòÉΓòÉΓòÉ
  6228.  
  6229.                   Click below to launch Netscape with this URL:
  6230.  
  6231.                      http://www.online-club.de/m1/clanganke/
  6232.  
  6233.  
  6234. ΓòÉΓòÉΓòÉ 18.8. http://www.os2bbs.com/os2news/OS2Wishlist.html ΓòÉΓòÉΓòÉ
  6235.  
  6236.                   Click below to launch Netscape with this URL:
  6237.  
  6238.                  http://www.os2bbs.com/os2news/OS2Wishlist.html
  6239.  
  6240.  
  6241. ΓòÉΓòÉΓòÉ 18.9. http://www.os2ezine.com ΓòÉΓòÉΓòÉ
  6242.  
  6243.                   Click below to launch Netscape with this URL:
  6244.  
  6245.                              http://www.os2ezine.com
  6246.  
  6247.  
  6248. ΓòÉΓòÉΓòÉ 18.10. http://www.os2ss.com/information/kelder/index.html ΓòÉΓòÉΓòÉ
  6249.  
  6250.                   Click below to launch Netscape with this URL:
  6251.  
  6252.                http://www.os2ss.com/information/kelder/index.html
  6253.  
  6254.  
  6255. ΓòÉΓòÉΓòÉ 18.11. http://www.ozemail.com.au/~dbareis/ ΓòÉΓòÉΓòÉ
  6256.  
  6257.                   Click below to launch Netscape with this URL:
  6258.  
  6259.                        http://www.ozemail.com.au/~dbareis/
  6260.  
  6261.  
  6262. ΓòÉΓòÉΓòÉ 18.12. http://www2.crosswinds.net/hartford/~os2/index.html ΓòÉΓòÉΓòÉ
  6263.  
  6264.                   Click below to launch Netscape with this URL:
  6265.  
  6266.                http://www2.crosswinds.net/hartford/~os2/index.html
  6267.  
  6268.  
  6269. ΓòÉΓòÉΓòÉ 18.13. http://www2.rz.hu-berlin.de/~h0444vnd/os2.htm ΓòÉΓòÉΓòÉ
  6270.  
  6271.                   Click below to launch Netscape with this URL:
  6272.  
  6273.                   http://www2.rz.hu-berlin.de/~h0444vnd/os2.htm
  6274.  
  6275.  
  6276. ΓòÉΓòÉΓòÉ 18.14. http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt6364.HTML ΓòÉΓòÉΓòÉ
  6277.  
  6278.                   Click below to launch Netscape with this URL:
  6279.  
  6280.           http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt6364.HTML
  6281.  
  6282.  
  6283. ΓòÉΓòÉΓòÉ 18.15. http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt8881.HTML ΓòÉΓòÉΓòÉ
  6284.  
  6285.                   Click below to launch Netscape with this URL:
  6286.  
  6287.           http://zebra.asta.fh-weingarten.de/os2/Snippets/Howt8881.HTML
  6288.  
  6289.  
  6290. ΓòÉΓòÉΓòÉ 18.16. http://zebra.asta.fh-weingarten.de/os2/Snippets/Isdr8319.HTML ΓòÉΓòÉΓòÉ
  6291.  
  6292.                   Click below to launch Netscape with this URL:
  6293.  
  6294.           http://zebra.asta.fh-weingarten.de/os2/Snippets/Isdr8319.HTML
  6295.  
  6296.  
  6297. ΓòÉΓòÉΓòÉ 18.17. mailto:e9425324@student.tuwien.ac.at ΓòÉΓòÉΓòÉ
  6298.  
  6299.                   Click below to launch Netscape with this URL:
  6300.  
  6301.                       mailto:e9425324@student.tuwien.ac.at
  6302.