AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

QuickReminder v0.4 (Preview)
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
jballi



Joined: 01 Oct 2005
Posts: 530
Location: Texas, USA

PostPosted: Wed Aug 27, 2008 6:53 pm    Post subject: QuickReminder v0.4 (Preview) Reply with quote

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
View user's profile Send private message Send e-mail
Red Hat Boy



Joined: 10 Apr 2008
Posts: 111

PostPosted: Wed Aug 27, 2008 9:52 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Klaus



Joined: 12 May 2005
Posts: 252
Location: Münster, Germany

PostPosted: Thu Aug 28, 2008 8:43 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
jballi



Joined: 01 Oct 2005
Posts: 530
Location: Texas, USA

PostPosted: Fri Aug 29, 2008 6:09 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Klaus, nli
Guest





PostPosted: Fri Aug 29, 2008 7:49 am    Post subject: Reply with quote

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

PostPosted: Fri Aug 29, 2008 9:12 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Klaus. nli
Guest





PostPosted: Fri Aug 29, 2008 9:57 am    Post subject: Reply with quote

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

PostPosted: Thu Sep 04, 2008 8:27 am    Post subject: Reply with quote

Project updated to v0.2. See the end of the first post for a complete list of changes.
Back to top
View user's profile Send private message Send e-mail
Klaus, nli
Guest





PostPosted: Fri Sep 05, 2008 9:26 pm    Post subject: Reply with quote

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

PostPosted: Sat Sep 06, 2008 1:48 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Klaus, not logged in
Guest





PostPosted: Mon Sep 08, 2008 5:58 am    Post subject: Reply with quote

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

PostPosted: Tue Oct 14, 2008 6:33 pm    Post subject: Reply with quote

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
View user's profile Send private message
SoggyDog



Joined: 02 May 2006
Posts: 621
Location: Greeley, CO

PostPosted: Tue Oct 14, 2008 9:51 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
anonfriese2
Guest





PostPosted: Tue Oct 14, 2008 10:31 pm    Post subject: Reply with quote

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

PostPosted: Wed Oct 15, 2008 4:54 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group