XPostitPlus Revision History: Version 2.0 Initial version that was not made publicly available. Version 2.1 (released to tsx11.mit.edu, but not many other places): 1. Hidden notes Instead of having lots of notes scattered all over the screen you can hide notes and bring them up only when you need them. 2. Names for notes This is useful for identifying hidden notes as well as providing visible notes with a title. 3. Note Options menu instead of buttons This was necessary since the buttons got bigger than the width of the smaller notes. 4. The notes now set the sensitivy of the Save option when the note has been changed Version 2.2 (a much wider release) 1. Relative positioning of notes was added. This permits XPostitPlus to determine when the screen size has changed on consecutive invokations. If the screen size is smaller than the previous invokation, the location of a note is scaled to fit the new screen size. From Hal DeVore @ BMC Software, Houston (hdevore@erehwon.bmc.com). 2. Jim Spath (jspath@mail.bcpl.lib.md.us) suggested that the magic cookie be changed from %! to %%!! since the original cookie is the one used by Postscript. I added code to handle this and added the -c flag which will allow you to read in old notes. If you use this flag once, then use "Save All Notes" all your old notes will have the new cookie. Or you can just let the auto-save feature do that for you. The -c option will only allow you to read the old format, it will always write the new format. Note: if you add the following line to your magic file you wil now be able to recognize XPositPlus files using the "file" command: 0 string %%!! X-Post-It-Note text NOTE: compatibility in this version refers to compatibility with notes created with my previous release of xpostit 2.1, not with any of David's releases after 1.2! In other words, his 3.3.1 notes may not work with this versions compatibility flag. 3. "Unhide All Notes" option added - all notes that have been hidden can be brought up all at once now. 4. Auto Save feature implemented. I just needed to learn a little about timers, which with X is suprisingly simple (the code worked the first time!). This can be disabled with the -ns command line option. Feature suggested by Terry Brown. 5. Added -help and -? command line options which provide a usage statement. 6. Changed Name dialog popup to display current note name. 7. Changed Name dialog to resize to a reasonable size, allowing room to insert more text. This is a big hack, because the Athena widgets don't allow you to determine the width, in pixels, of the font being used. I had to add the -nw command line option (or .nameWidth resource) to allow the user to specify the number of pixels. It defaults to 10, which is pretty reasonable given the fonts being used. 8. Added Cascade feature. Each note can be "anchored". If one or more notes are anchored and the "Cascade" option is chosen from the plaid menu, then all the visible notes are cascaded onto the anchored notes. An attempt is made to distribute all visible notes evenly amongst all the anchored notes. Each note also has an "unanchor" option as well. Only one of "anchor" or "unanchor" is sensitive for any given note. Hidden notes are not affected by the cascade feature. The default offset for cascaded notes (from the anchor) is 15 pixels. This can be changed with the -ao option or the .anchorOffset resource. 9. Fixed the message about a null child being managed, I think. 10. Added a Print option. The command to use for printing is system dependent and can be specified with either the .printCmd resource or with the -printcmd command line option. By default, "lpr %s" is used. Note that the command uses the varargs format used by printf. "%s" is necessary because this will be the name of a temporary file for a given note. Notes with no text in them will not be printed (an error message will be popped up stating so). 11. Rearranged the Options menu a little, so it makes a little more sense. Added divider lines to the plaid menu as well. 12. Error dialog box wasn't being created even though it was possible for it to be requested to be popped up. This was fixed, and the Error dialog box was cleaned up for general use. 13. Alarms have been added. By selecting "Set Alarm" from a notes Options menu, the user can set an alarm for that note. When the alarm goes off a beep is heard (via XBell()) and a window pops up stating which notes alarm just went off. Only the title of the note is given, so you should make sure your notes have proper names (using the Name option). Alarms can be disabled completely with the -na option or .noAlarm resource. Since the timer for checking alarms runs once a minute, if a user has alot of notes or a slow machine it might be advantagous to turn off this feature (I guess). 14. Added the ability to insert the current calendar month into a note at the current cursor location. This is done via a notes "Insert Calendar" menu option. 15. If you "lose" a note and want to bring it up at the cursor, select "Find A Note" from the plaid menu. A pop up window of all notes will be presented. Select the note you want and if its not hidden it will pop up at the cursor. If it is hidden it will pop up in the appropriate spot. 16. Notes can now be emailed. The "Email" option from the notes menu will pop up a window prompting for an email address. The -emailcmd command line option or .emailCmd resource can be set to your systems mailer command. The mailer must accept the text of the mail via standard input (actually as a pipe from "cat tmpfile"). The Unix "mail" command is the default value for this. See the man page for details. 17. Added a rule for converting the XPostitPlus.ad into an include file so it could be used as fallback resources (via th ad2c script, which has been included in the source package). In this way the XPostitPlus.ad does not have to be installed into the app-defaults directory. 18. Changed the Hidden Notes pop up menu to be a pop up shell widget, so it can be moved around the screen. This is consistant with the new "Find A Note" pop up window, too. 19. Added better error handling, so if you try to do a function that can't be done XPostitPlus should tell you now. Version 2.2.1 (only released to beta testers) -------------- 1. Fixed the Imakefile rule for InstallAppDefaults. 2. Fixed a bug in timer.c that kept the alarm from going off and caused a SEGV on some systems (Solaris for example). 3. Changed the Dialog translations so that most regular emacs editting will work (such as CTRL-SHIFT-w to erase selected text). 4. Changed SaveNote() to only save notes if their status has changed. Also improved the program flow to reduce a chance of trashing a file when a crash occurs. This included changes to other routines to mark when a note has been changed. 5. Fixed AutoSave to not present dialog when there are no notes to save. 6. Changed SaveNote() to save to a temporary file, rename the old note file to another temporary name, rename the first temporary to the old notes name, and the unlink the old note (ie second temporary). This process should help reduce the problems seen when a note was being saved and a system crash occured. 7. fixed SaveNote() to update the note structures shellx and shelly values if the note has changed positions. 8. Fixed the popup routines for the error dialog so that more than one dialog can be up at a time. 9. Changed the error dialog to do a GrabNone on popup. This allows the closing of the dialogs in any order. Version 2.3 -------------- 1. Added Insert Date feature 2. Added compile time option for prompting to save notes on exiting if the Save On Exit option has not been set. 3. Added Export/Open features, including a File Selection Window. This window is kinda kludgy - its not a standalone widget, its made up of a set of other widgets just like all the other windows. See the man page for how to use the File Selection Window. 4. Changed notes menu to two menus: a File menu and a Notes menu. The latter contains most of what was there before, with a few of the old features along with the new Open/Export options under the File menu. 5. added a -version command line option 6. cleaned up help message - all available options should be listed now