Copyright (c) 1993 by Sanjay Ghemawat Bugs + Stuff to Fix =================== * Alarms are killed on flush: should be killed only if changed * Calendar that includes itself creates problems. See messages from Murray.Cameron * Select an item, do "Properties...", mark it as a todo item, click Okay. Pull down the Item menu, notice that "Todo" is not marked. * Tk 4.1 configuration does not pick up -lsocket -lnsl -lbsd etc... * Allow CFLAGS passing to sub-make invocations * Set the "wm client" and "wm command" properties. * Use -tearoffcommand to track menus that have to be updated * Do not change border widths to "1" on monochrome displays * Add menu entry for pasting text into an item * New alarms created by the ruler widget are not aligned properly * Add preferences to select WWW viewer * Fix focus list ordering for all toplevels * Fix documentation to reflect new menu items (if any) * Fix and re-enable insert-text/delete-text commands * Add control-u for editor bindings? * People keep complaining about overlap between scrollbar and NoteList Changes for Tcl 7.5/Tk 4.1 ========================== * How does Tk_CreateMainWindow get called now? * Use "package" stuff? * "foreach" is now better" * Use portable file IO? * "grid" geometry manager * Look for uses of "fd" and change to Tcl_File? * Switch to using the "clock" command? Various proposals ================= (PS. I am not sure if all of these are good ideas.) * Optionally use pair of dateeditors for item range setting * When indicating "late for appt", say how late. * Make "todo" items that are marked as "done" sort after normal items. * Israel weekends are Friday and Saturday. - fix dateeditor.tcl to hilite the appropriate columns - fix the "nth" working day stuff for monthly repetitions. Yikes! * Allow "ical -print" for generating postscript * Set up end range (for date range editing) by default to be a year away? * "Appointment range" changes do not affect window sizes if the window has already been resized. * Add a menu button to restart ical, which gets any new X resource settings. * Allow todo list items to also allow overflow, as with appointments. This lets todos take up only one line, but contain as much information as needed to describe the task. * Check for duplicate calendar inclusion? * Incremental searching * Keyboard shortcuts * Keyboard macros * TTY interface * Option to work with A4 paper (change /RealWidth to 8 inch?) * Alarms > 60 minutes * Ability to annotate items with long messages. * Different views (month, week, year) * Always leave a small box around today's date * Add more on-line editing of options * More control over queries (string dates/regexps/...) * De-iconify window on update to shared calendar * More hooks for various events -- ... * Allow reminder window to be completely overridden * Support for scheduling meetings? (look at ftp.cs.washington.edu: vsched). * Various converters (I will accept contributions...) * Viewing all the attributes of a bunch of appointments? * Use less screen space (as an option for people with smaller screens) * Quick way to jump to dates * Automatically delete blank entries * Start off with old settings when editing repetition info * Unhiding items somehow * Allow clicking in date editor past end of month to go to next month * Make the month heading in date editor a menu. * Distinguish between file/directory for permission denied. * Allow geometry spec/resizing for dayview * Different widths for appt/notice lists * Flag when some appts are not visible * Allow single click and drag to create and size appointment * Create option to control stay-up menus. * Item types (with icons)? (Merge Phillipe Defert's changes?) * Change owner field on each modification? * Clock * Working/lunch hours * Put month view in a small icon? Comments from "Steve Simmons..." * Turn the "Help" menu into a button * Merge "edit weekly" and "edit monthly" * Improve "edit range..." Hacks to compile with SGI compiler. Arghh!!!! * Does not like code after return statement in inline functions * Does not like inline functions with static variables * The <assert.h> file uses printf, but forgets to include <stdio.h> * Build loadable libraries: - ical - screen saver reset? Cleanup ======= * Share code between apptlist/notelist * Move widget configurations into resource files? Speedups ======== Editing code ApptList::layout (Time spent computing offsets?) Todo Items ========== * Assign priority and category to each items * Implement TodoList widget for displaying todo items based on categories. * NoteList displays only the high priority items * TodoList widget: - list of items sorted by priority and then increasing/decreasing date - can mark item as done (done items go to "Category/Done" list) - can delete item - can change priority - can change category Merging Calendars ================= C++ Calendar* merge(Calendar* a, Calendar* ); Tcl <cal> merge [fileA] <filenameB> requires fileA is one of the included calendars in <cal> (fileA defaults to main if ommited) modifies volatile copy of fileA effects Reads calendar contents of <filenameB> and merges them into volatile copy of fileA Merging calendars ================= if item in exactly one of a, b, use as is. if item in both a, b then merge item if hide entry in any one of a, b then use it if include entry in any one of a, b then use it if option in exactly one of a, b then use it if option in both and same, then use it if option in both and different, report error Merging items ============= compare item unparsing, if same then no problem report error Logging Modifications ===================== All logged items have a time stamp + unique id for modifier Logged items: set <id> <value> delete <id> <id> -> <option name> | <uid> <value> -> <option value> | {<note> <rep>} | {<appt> <rep>} Merging log L into a calendar log C: - create new merged log - foreach entry from L: if not obsoleted by later entry in merged log, then apply Trimming the log part 1: For any id X, only keep latest entry. For existing data items, we will store just the latest entry, but we might have a huge list of delete log entries. Getting rid of delete entries: Time based, or just forget about it? New rep: Place time stamps on all items and options. Generate timestamped delete entries when appropriate. To merge: foreach item/option/calendar/..., find newest entry in either calendar and use that. Implementation: 1. Items: just put a time stamp field and generate delete records 2. Options: Calendar maps from option names to time stamps. 3. Hide: Just create a union of the two sets 4. Includes: Calendar maps to time stamps and may have delete records =============================================================