 |
AutoHotkey Community Let's help each other out
|
| View previous topic :: View next topic |
| Author |
Message |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Wed Aug 27, 2008 6:53 pm Post subject: QuickReminder v0.4 (Preview) |
|
|
Introduction
There are a lot of time management programs out there. Personally, I use Microsoft Outlook to manage my general calendar and for general-purpose task management. I also use freeware program called Personal Reminder for general-purpose daily, weekly, and monthly reoccurring reminders.
What is missing from my time-management arsenal is a tool to quickly set up same-day, one-use-only, reminders. For my 5-year-old computer, Microsoft Outlook is a resource behemoth and I shut it down every chance I get. Personal Reminder is OK but it has several idiosyncrasies that make it difficult to tolerate as a short-term reminder program. I created QuickReminder to fill the gap.
QuickReminder
Key features:
- Quick Add. New reminders can be quickly added by using a global hotkey (default hotkey is Ctrl+Alt+R) or by double-clicking on the tray icon. Although the mouse can be used, the dialog was designed for quick keyboard entry and navigation. Reminder time can be entered as a countdown (hours, minutes, seconds) or as a date/time.
- Friendly alarms. Yes, the alarms do take up screen real estate and they do make a noise but the alarm windows are relatively small and they don't steal focus when displayed. If desired, the alarm text will be spoken to you when the alarm goes off.
- Snooze. Reminder alarms can be snoozed to a future time. You can select from a list of snooze times or enter your own custom snooze time.
- Reminder List. To help manage pending reminders, a Reminder List window is provided. From this window you can hold, edit, restart, and delete individual reminders.
Screenshots
The Code
The pertinent files are as follows:Project: QuickReminder.zip (Includes source, icons, and sounds)
Documentation: Future
Requirements
To use the Text-To-Speech (TTS) feature, Microsoft Speech SDK 5.1 must be installed if using any Windows version earlier than Windows XP.
http://tinyurl.com/yptaoo
Note: The Microsoft Speech SDK 5.1 installation includes two additional voices (Microsoft Mike and Microsoft Mary) so it should be worth the trouble to install it even if you are using Window XP+.
Text-To-Speech (TTS)
A few TTS considerations:
- Optional. The option to speak the note text when an alarm is raised is not enabled by default. Go to the Options window ("TTS" tab) to enable or change this option.
- Priority. The Priority level defines the order in which the TTS engine processes speech requests. There are three TTS priorities:
- Normal. This is the standard TTS priority used by most applications.
- Alert. If this priority is used, the alarm will interrupt (pause) any other normal TTS voices. After the TTS engine has finished speaking, any interrupted voices will resume speaking. This is the recommended priority for this program.
- Over. If this priority is used, the alarm voice will speak simultaneously with any other TTS voices.
- XML. The alarm note text can include XML which can be used to instruct the TTS engine to change speed, volume, pronunciation, etc. If you're not sure about the capabilities or the syntax, the following is an XML TTS Tutorial (SAPI 5.3):
Be sure to test the XML code before using it in an active alarm. If the XML contains syntax errors, it may cause the script to fail (not likely) or it may generate a COM error.
- Voices. A specific TTS voice (Ex: Microsoft Mike) can be selected for the application. Go to the Options window ("TTS" tab) to select a voice. Individual voices for each alarm is not supported, however, the note text can include XML instructions to indicate which voice is to be used.
- Metadata. The Note text can contain date/time metadata which is converted in real-time for the TTS engine when the alarm window is displayed. The format is {$Date$X} or {$Time$X} where X is an AutoHotkey date/time format. See the AutoHotkey documentation (keyword: FormatTime) for a list of date/time formats.
Note: If X is blank/null when using the $Date$ key, Ex: {$Date$}, normal formatting rules are observed. However, if X is blank/null when using the $Time$ key, Ex: {$Time$}, the "Time" date/time format is automatically used, i.e. {$Time$Time}. The "Time" format is a time representation for the user's locale, such as 5:26 PM.
A few usage examples:
Today is {$Date$LongDate}.
The time is {$Time$}.
The current month is {$Date$MMMM}.
It is the {$Date$d}th day of the month.
The year is {$Date$yyyy}.
Issues/Considerations
- External functions. This script uses a number of external functions which have been included in a "_Function" folders. Some of the functions are mine and should be clearly marked and documented. Functions written by others should be clearly marked but may contain custom modifications. Thanks to the original authors for sharing their work.
- Limited locale support. A few of the program's date/time fields support the user's locale settings but most use a static format. Sorry 'bout that.
- Limited documentation. With the exception of the information in this post, documentation/help is currently limited to a few tooltips and a Help button in the Options window ("Note" tab). Be sure to read the release notes for additional tips.
---------------------------------------------------------------------------
v0.1 (Alpha/Preview)
Original release.
v0.2 (Preview)
Changes to the Add/Edit Reminder window:
- Added Hold button. This button adds a Reminder but does not start it.
- Added Sound DropDownList control to allow the user to select a custom sound file per Reminder.
Changes to the Reminder List window:
- Renamed the Stop All Reminders button to Delete All Reminders. This button deletes all Reminders regardless of status.
- The Note field can no longer be modified from this window.
- Removed the DateTime field for each Reminder.
- Removed the Stop button for each Reminder.
- The Status field has been enlarged. The script now displays more information in this field for the "Active" and "Hold" modes.
- Added Hold button for each Reminder. This button changes the status of a Reminder from "Active" to "Hold". This button has a similar function as the former Stop button.
- Added Edit button for each Reminder. This button changes the status of a Reminder from "Active" to "Hold" and then opens the Edit Reminder window so that the Reminder can be modified.
- Added the Delete button to remove a Reminder.
General:
- Added more sample Alarm sound files.
Installation notes:
- Delete all files from older version (if any) before installing new version.
v0.3 (Preview)
Changes to Alarm windows:
- Snooze button set as the default control (activates with the Enter key). (thanks HotKeyIt)
- Snooze period can now include days and weeks. Ex: 2 days, 1 week
Changes to the Add/Edit Reminder window:
- The Note field is now multi-line Edit field to match the Alarm and Reminder List windows. (thanks HotKeyIt)
- Added hotkey (F2) to pop-up the list of pre-defined notes (See the Options window)
- DateTime field has now been split up into separate Date and Time fields. (thanks SoggyDog)
- Added hotkey (Ctrl+T) to jump directly to the Time field.
Changes to the Reminder List window:
- If there are any active reminders, the request to "Delete All Reminders" is confirmed before proceeding.
General:
- Added Options (aka "Preferences") window. Many program options can now be set/changed using this feature.
- Added About... window to display the current program version.
v0.4 (Preview)
New Features:
- Added Text-To-Speech (TTS) option that will speak the text note when the reminder window is displayed. (SAPI5 required)
- The Note text can now contain date/time metadata. See the Text-To-Speech (TTS) section for more information..
Changes to the Add/Edit Reminder window:
- Added hotkey (Ctrl+S) that will add the current note to the end of Note List. Blank and duplicate notes are automatically discarded. The Note list can be edited from the Options window.
- Added confirm dialog when entering more than 99 hours or 199 minutes or 199 seconds.
- Added button to display the list of user-defined notes.
- Added button to speak/stop speaking the note text.
- Added button to play/stop playing the selected alarm sound.
- The selected alarm sound file is automatically played when changed by the user. (thanks ScottMattes)
- Added tooltips for the buttons that don't have readable labels (thanks Drugwash)
Changes to the Reminder List window:
- Fix: Changes to resolve minor button focus problems.
- "Hold" sound is now played when "Edit" button is pressed to indicate that the reminder is on hold until the start button is pressed.
Changes to the Options window:
- Fix: Minor display issues fixed in the HotkeyGUI window (thanks Drugwash)
- Added "Play alarm sound" option.
- Added "Play alarm nag sound" option.
- Added "Alarm nag sound interval" option.
- Added "Speak note text on Alarm" option. If selected, the contents of the note text will be spoken using the Text-To-Speech engine when the alarm window is displayed.
- Added "Voice" option. This option allows you to choose the Text-To-Speech voice that will be used when speaking the note text.
- Added "Priority" option that will allow you to chose the priority that is used when speaking the note text.
General:
- Added option to start QuickReminder when Windows starts. This option is only available if running the compiled script.
- Tray tooltip is now updated to reflect the current number of reminders.
Last edited by jballi on Fri Oct 30, 2009 2:29 am; edited 4 times in total |
|
| Back to top |
|
 |
Red Hat Boy
Joined: 10 Apr 2008 Posts: 111
|
Posted: Wed Aug 27, 2008 9:52 pm Post subject: |
|
|
Very nice! I had considered making something like this, but haven't found the time.
Things you (or I) might consider adding:
Option to have an alarm go off every hour, or every x minutes, x being user-specified.
An "Every Day" or "Every Sunday/Monday" option, so that a message will pop up every day at the specified time or every specified weekday, or something similar.
If I have time, I might tinker with it.
Thanks. _________________ I slit the sheet, the sheet I slit,
and on the slitted sheet I sit. ;~} |
|
| Back to top |
|
 |
Klaus
Joined: 12 May 2005 Posts: 252 Location: Münster, Germany
|
Posted: Thu Aug 28, 2008 8:43 am Post subject: |
|
|
Hi, jballi,
thanks for this nice and very useful little helper. Funny coincidence, I just started planning an app just like yours.
My plans grew out of a request of my wife, she would like to have a customizable egg-timer with multi alarms for kitchen purposes: get the roast out of the oven in 10 minutes, vegetables finished in 3 minutes and so on.
You have saved a lot of time for me!
Here some suggestions:
1. For my purposes from above I would like to enter some alarms, but start all of them at the same time, not having each one starting at the end of its editing.
2. I would like to have the option to choose for each alarm between several sounds, thus I could hear which alarm has reached its time, useful if I don't have eye contact with the screen. So you could create your own .WAV-files and the Reminder could talk to you: "Eggs are ready now!"
What do you think of that?
Thanks again,
Klaus |
|
| Back to top |
|
 |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Fri Aug 29, 2008 6:09 am Post subject: |
|
|
| Red Hat Boy wrote: | Things you (or I) might consider adding:
Option to have an alarm go off every hour, or every x minutes, x being user-specified.
An "Every Day" or "Every Sunday/Monday" option, so that a message will pop up every day at the specified time or every specified weekday, or something similar.
|
As a "tool to quickly set up same-day, one-use-only, reminders", reoccurring reminders are out of scope but there might be a way of doing it without redesigning the approach or doubling/tripling the size of the code. Let me put some brain power into it.
On a side note, Hezzu released a utility called Cola that creates a single reoccurring voice alarm. This might be of interest to you. Check it out...
http://www.autohotkey.com/forum/viewtopic.php?t=34545
| Klaus wrote: | 1. For my purposes from above I would like to enter some alarms, but start all of them at the same time, not having each one starting at the end of its editing.
|
I'm not entirely sure what you mean by "not having each one starting at the end of its editing." but I think that you just want to be able to start more than one alarm at a time. The "Alarm List" window can be used to do that (see the screenshot on the top post). Just set the note and DateTime field and press the "Start" button next to each reminder to start the Reminder timer. What is missing from this screen is a Countdown option for each reminder but I'm not sure if that would be helpful or not. Let me know.
| Klaus wrote: | 2. I would like to have the option to choose for each alarm between several sounds, thus I could hear which alarm has reached its time, useful if I don't have eye contact with the screen. So you could create your own .WAV-files and the Reminder could talk to you: "Eggs are ready now!"
|
Choosing different alarm sounds should be a fairly easy addition but using your cooking/baking example, a voice alarm might make more sense if the reminder text changes frequently. What are your thoughts? Anybody? |
|
| Back to top |
|
 |
Klaus, nli Guest
|
Posted: Fri Aug 29, 2008 7:49 am Post subject: |
|
|
Hi, jballi,
thanks for taking time for my proposals.
Let me explain my first suggestion in detail:
When I open the "Add Reminder"-dialogue, fill out the reminder text and the countdown time and leave the dialogue by pressing the "add"-button, the reminder already starts to count down. I would prefer just to insert the new reminder into the list and cause its start with the "Start"-button.
Thus I could add some reminders and start them by clicking their "Start"-buttons to achieve a simultaneous start of all reminders.
Let me add another point:
When I add a new reminder, it will overwrite the first "stopped" reminder in the list instead of looking for the first free position. The new one will reside on the next free position, when all existing reminders are running.
One last suggestion:
What about a "remove"-button for each reminder in the list? The reminder should disappear with rest remaining reminders moving up.
Thanks for your attention,
Klaus |
|
| Back to top |
|
 |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Fri Aug 29, 2008 9:12 am Post subject: |
|
|
| Klaus, nli wrote: | Let me explain my first suggestion in detail:
When I open the "Add Reminder"-dialogue, fill out the reminder text and the countdown time and leave the dialogue by pressing the "add"-button, the reminder already starts to count down. I would prefer just to insert the new reminder into the list and cause its start with the "Start"-button.
Thus I could add some reminders and start them by clicking their "Start"-buttons to achieve a simultaneous start of all reminders.
|
I suspect that you set most of your reminders, as I do, by entering the desired countdown hours, minutes, and/or seconds. Unfortunately, the "Countdown" fields are for convenience purposes only. These values are converted to a DateTime value when the "Add" button is clicked. This DateTime value is what is used to determine if a reminder alarm should be shown. This design allows the program to be closed and restarted without losing the accuracy of the reminder alarm time.
As I mentioned earlier, adding "Countdown" fields to each reminder in the "Reminder List" window would probably solve your problem. That way you could set all of reminders using the countdown method and then start them all at once (relatively speaking) by quickly clicking on the "Start" button next to each of the reminders. Let me know if this is what you need.
| Klaus, nli wrote: | Let me add another point:
When I add a new reminder, it will overwrite the first "stopped" reminder in the list instead of looking for the first free position. The new one will reside on the next free position, when all existing reminders are running.
|
This is by design but I can understand how this can create design/logic conflict.
When you use the "Stop" or "Stop All Reminders" buttons on the "Reminder List" window or the "Stop All Reminders" menu item while the "Reminder List" window is showing, the associated Reminder(s) are deleted but the Note and DateTime fields on the window are purposely left intact to allow you make minor modifications to the reminder(s) and then click on the "Start" button to add it back to the land of the living. The only way to keep a "stopped" reminder from being overwritten on the "List Reminder" window is to re-"Start" it before adding a new reminder.
| Klaus, nli wrote: | One last suggestion:
What about a "remove"-button for each reminder in the list? The reminder should disappear with rest remaining reminders moving up.
Klaus |
This might be a little tricky with the design/convenience issue I described in the previous note but I'll take a look see.
Thank you for your feedback. |
|
| Back to top |
|
 |
Klaus. nli Guest
|
Posted: Fri Aug 29, 2008 9:57 am Post subject: |
|
|
Hi again, jballi,
1. adding countdown fields for each reminder in the reminder list would be nice, but doesn't this cause the special window with the "Add Reminder"-dialogue to be obsolete?
2. I understand your explanations about overwriting stopped reminders, but I estimate it as a little circumstantial that I have to restart a reminder to protect it from being overwritten. But I have to confess that it's manageable.
3. Customizable sounds would be a real blast!
Regards,
Klaus |
|
| Back to top |
|
 |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Thu Sep 04, 2008 8:27 am Post subject: |
|
|
| Project updated to v0.2. See the end of the first post for a complete list of changes. |
|
| Back to top |
|
 |
Klaus, nli Guest
|
Posted: Fri Sep 05, 2008 9:26 pm Post subject: |
|
|
Hi, jballi,
only a quick response:
As a terrible flu struck me down I had no change to follow Autohotkey-forum's activities. but here's a quick one:
Wonderful additions, where I can find some of my suggestions. I'll have a look at it when feeling 'active' enough again!
Regards,
Klaus |
|
| Back to top |
|
 |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Sat Sep 06, 2008 1:48 am Post subject: |
|
|
| Klaus, nli wrote: | As a terrible flu struck me down I had no change to follow Autohotkey-forum's activities. but here's a quick one:
Wonderful additions, where I can find some of my suggestions. I'll have a look at it when feeling 'active' enough again!
|
I'm sorry to hear that you're under the weather. The flu can be a bitch! Take care of yourself. Better yet, find someone to take care of you!
Many of the enhancements were made to reflect your requirements although they may not have been implemented in the same manner as discussed. I tried to design the changes so that they 1) would not change the original requirements of a "tool to quickly set up same-day, one-use-only, reminders" and 2) would be useful to more people, including myself.
When you get a chance to play with the script, I hope you'll find that you can do everything you need to do. The Hold button will allow you to add a Reminder without starting it and the Start button on the "Reminder List" window will allow you to start several Reminders at the same time. The Edit button will allow you to make any modifications to the Reminder, including resetting the Countdown. If you have any questions, find any bugs, have more suggestions for improvements, etc., let me know.
I hope you feel better. Get well soon! |
|
| Back to top |
|
 |
Klaus, not logged in Guest
|
Posted: Mon Sep 08, 2008 5:58 am Post subject: |
|
|
Hi, jballi,
thank you very much for you friendly words, today I am among the living again and I found time to examine carefully your application!
And thank you as well for taking into account my suggestions.
I think you did a very good job!
I hope you will continue the development of your QuickReminder!
Regards,
Klaus |
|
| Back to top |
|
 |
Charon the Hand
Joined: 07 Aug 2007 Posts: 8
|
Posted: Tue Oct 14, 2008 6:33 pm Post subject: |
|
|
| This is a cool little application. I also made something similar, but not as complex. This blows mine out of the water. I haven't started tinkering with the guts yet, but I will soon: I want to see what tricks you used to get around a couple problems my script had. Thank you very much for a splendid addition. |
|
| Back to top |
|
 |
SoggyDog
Joined: 02 May 2006 Posts: 621 Location: Greeley, CO
|
Posted: Tue Oct 14, 2008 9:51 pm Post subject: |
|
|
I made only a cursory scan of the other posts on this thread, so forgive me if this has already been suggested, but it appears that this is only a countdown timer... I would find it beneficial to be able to set a specific time. Barring that one suggestion, I like this a lot. It's very robust. _________________
SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played." |
|
| Back to top |
|
 |
anonfriese2 Guest
|
Posted: Tue Oct 14, 2008 10:31 pm Post subject: |
|
|
| nice thing, it would be cool if i can do more than play a song, something like running my own ahk commands |
|
| Back to top |
|
 |
jballi
Joined: 01 Oct 2005 Posts: 530 Location: Texas, USA
|
Posted: Wed Oct 15, 2008 4:54 pm Post subject: |
|
|
| SoggyDog wrote: | | I made only a cursory scan of the other posts on this thread, so forgive me if this has already been suggested, but it appears that this is only a countdown timer... I would find it beneficial to be able to set a specific time. Barring that one suggestion, I like this a lot. It's very robust. |
You might want to take another look. The ability to set an alarm for a specify date/time has always been available. Let me know if this doesn't do it for you.
| anonfriese2 wrote: | | nice thing, it would be cool if i can do more than play a song, something like running my own ahk commands |
Running a program (or script) when an alarm expires is a bit out of scope for this mini-project but I'll keep it in mind. Thanks for the suggestion. |
|
| Back to top |
|
 |
|
|
You can post new topics in this forum You can reply to topics in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|