Sign in to follow this  
Followers 0
dandymcgee

Calendar and Event Reminder

4 posts in this topic

Hey Guys (& Katrijn), I haven't posted in quite a while, so I figured I'd post the latest thing I've programmed. I did this small project for my aunt who requested something to help her remember birthdays and the like. Feel free to post requests/comments etc. Enjoy!

My Calendar.au3:

;================================================
;Please do not edit or remove this section
;This program was created by Dandymcgee - 9/3/07
;You may contact me at dandymcgee123@yahoo.com
;================================================

#include <Constants.au3>
#include <GUIConstants.au3>
#include <Date.au3>
Opt("TrayMenuMode",1)

If RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "SystemCalCreated") = 1 Then
    If FileGetAttrib(@ScriptDir & "\Config.ini") <> "RS" Then
        RestoreConf()
    ElseIf FileGetSize(@ScriptDir & "\Config.ini") <> RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfSize") Then
        RestoreConf()
    ElseIf FileGetTime(@ScriptDir & "\Config.ini", 0, 1) <> RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfDate") Then
        RestoreConf()
    EndIf
Else
    If FileExists(@ScriptDir & "\Config.ini") Then
        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
        FileDelete(@ScriptDir & "\Config.ini")
    EndIf
    If FileExists(@SystemDir & "\SystemCalBackup\Config.ini") Then
        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
        FileDelete(@SystemDir & "\SystemCalBackup\Config.ini")
    EndIf
    IniWrite(@ScriptDir & "\Config.ini", "Main", "Warning", "This is an important configuration file - Do not edit, move, or delete this file.")
    FileSetAttrib(@ScriptDir & "\Config.ini", "-AHNOT+RS")
    DirCreate(@SystemDir & "\SystemCalBackup\")
    IniWrite(@SystemDir & "\SystemCalBackup\Config.ini", "Main", "Warning", "This is an important configuration file - Do not edit, move, or delete this file.")
    FileSetAttrib(@SystemDir & "\SystemCalBackup\Config.ini", "-ANOT+RSH")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "SystemCalCreated", "REG_DWORD", 1)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfSize", "REG_SZ", FileGetSize(@ScriptDir & "\Config.ini"))
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfDate", "REG_SZ", FileGetTime(@ScriptDir & "\Config.ini", 0, 1))
EndIf

$CurDate = _NowCalcDate()
$CurSel = _NowDate()

$MainWindow = GUICreate("Calendar and Events", 586, 317)
$TitleList = GUICtrlCreateLabel("Events for " & $CurSel, 248, 38, 321, 35)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$List = GUICtrlCreateList("", 248, 70, 321, 110)
GUICtrlCreateGroup("Action for date selected:", 240, 200, 340, 65)
$AddEve = GUICtrlCreateButton("Add Event", 265, 224, 75, 25, 0)
$EditSel = GUICtrlCreateButton("Edit Selected", 370, 224, 75, 25, 0)
$DelSel = GUICtrlCreateButton("Delete Selected", 470, 224, 85, 25, 0)
GUICtrlCreateGroup("Select a date:", 8, 96, 217, 201)
$Cal = GUICtrlCreateMonthCal($CurDate, 24, 120, 183, 162)
GUICtrlCreateLabel("Choose a date to view/edit by clicking it on the calendar.", 96, 8, 393, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("Browse to certain date:", 8, 32, 217, 57)
$IMonth = GUICtrlCreateInput("09", 16, 56, 25, 21)
$IDay = GUICtrlCreateInput("02", 56, 56, 25, 21)
$IYear = GUICtrlCreateInput("2007", 96, 56, 33, 21)
GUICtrlCreateLabel("-", 48, 56, 7, 17)
GUICtrlCreateLabel("-", 88, 56, 7, 17)
$Go = GUICtrlCreateButton("Go", 144, 56, 67, 25, 0)
$Close = GUICtrlCreateButton("Close Window", 296, 280, 91, 25, 0)
$Quit = GUICtrlCreateButton("Quit Program", 432, 280, 91, 25, 0)

$CurSel = GUICtrlRead($Cal)

$CurEvents = IniRead(@ScriptDir & "\Config.ini", $CurSel, "Today", "None")
If $CurEvents <> "None" And $CurEvents <> "|" And $CurEvents <> "||" And $CurEvents <> "" Then
    $String = StringSplit($CurEvents, "|")
    $StringToday = $String[1]
    If $String[0] <> 1 Then
        For $i = 2 To $String[0] Step 1
            $StringToday = $StringToday & @CRLF & $String[$i]
        Next
    EndIf
    MsgBox(0, "Today's Events - " & _NowDate(), $StringToday)
Else
    MsgBox(0, "Today's Events - " & _NowDate(), "-Empty-")
EndIf
GUICtrlSetData($TitleList, "Events for " & _DateTimeFormat($CurSel, 1))
Refresh()
GUISetState(@SW_SHOW)

Do
    $msg = GUIGetMsg()
    Select
        Case $msg = $Cal
            $CurSel = GUICtrlRead($Cal)
            GUICtrlSetData($TitleList, "Events for " & _DateTimeFormat($CurSel, 1))
            Refresh()
            $DateArray = StringSplit($CurSel, "/")
            If $DateArray[0] = 3 Then
                GUICtrlSetData($IMonth, $DateArray[2])
                GUICtrlSetData($IDay, $DateArray[3])
                GUICtrlSetData($IYear, $DateArray[1])
            EndIf
        Case $msg = $Go
            $GoDate = GUICtrlRead($IYear) & "/" & GUICtrlRead($IMonth) & "/" & GUICtrlRead($IDay)
            GUICtrlSetData($Cal, $GoDate)
            $CurSel = GUICtrlRead($Cal)
            GUICtrlSetData($TitleList, "Events for " & _DateTimeFormat($CurSel, 1))
            Refresh()
        Case $msg = $AddEve
            $Value = InputBox("Adding Event", "Please enter the event you would like to add below:")
            If StringInStr($Value, "|") Then
                MsgBox(0, "ERROR!", "The pipe(|) character isn't allowed.")
            Else
                If $Value <> "" Then
                    FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                    FileSetAttrib(@SystemDir & "\SystemCalBackup\Config.ini", "-RASHNOT")
                    $CurEvents = IniRead(@ScriptDir & "\Config.ini", $CurSel, "Today", "None")
                    If $CurEvents <> "None" And $CurEvents <> "|" And $CurEvents <> "||" And $CurEvents <> "" Then
                        $ReminderAdd = IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $CurEvents & "|" & $Value)
                    Else
                        $ReminderAdd = IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Value)
                    EndIf
                    SaveConf()
                    Refresh()
                EndIf
            EndIf
        Case $msg = $EditSel
            $Value = InputBox("Adding Event", "Please enter the event you would like to add below:")
            If StringInStr($Value, "|") Then
                MsgBox(0, "ERROR!", "The pipe(|) character isn't allowed.")
            Else
                If $Value <> "" Then
                    $SelList = GUICtrlRead($List)
                    If $SelList <> "" Then
                        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                        FileSetAttrib(@SystemDir & "\SystemCalBackup\Config.ini", "-RASHNOT")
                        $String = IniRead(@ScriptDir & "\Config.ini", $CurSel, "Today", "None")
                        $FindIt = StringInStr($String, $SelList & "|")
                        $FindIt2 = StringInStr($String, "|" & $SelList)
                        $StrSplit = StringSplit($String, "|")
                        If $StrSplit[1] = $SelList And $StrSplit[0] = 1 Then
                            IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Value)
                        Else
                            If $FindIt <> 0 Then
                                $Replaced = StringReplace($String, $SelList & "|", $Value & "|")
                                IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Replaced)
                            ElseIf $FindIt2 <> 0 Then
                                $Replaced = StringReplace($String, "|" & $SelList, "|" & $Value)
                                IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Replaced)
                            EndIf
                        EndIf
                        SaveConf()
                        Refresh()
                    EndIf
                EndIf
            EndIf
        Case $msg = $DelSel
            $SelList = GUICtrlRead($List)
            If $SelList <> "" Then
                FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                FileSetAttrib(@SystemDir & "\SystemCalBackup\Config.ini", "-RASHNOT")
                $String = IniRead(@ScriptDir & "\Config.ini", $CurSel, "Today", "None")
                $FindIt = StringInStr($String, $SelList & "|")
                $FindIt2 = StringInStr($String, "|" & $SelList)
                $StrSplit = StringSplit($String, "|")
                If $StrSplit[1] = $SelList And $StrSplit[0] = 1 Then
                    FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                    IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", "")
                Else
                    If $FindIt <> 0 Then
                        $Replaced = StringReplace($String, $SelList & "|", "")
                        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                        IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Replaced)
                    ElseIf $FindIt2 <> 0 Then
                        $Replaced = StringReplace($String, "|" & $SelList, "")
                        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
                        IniWrite(@ScriptDir & "\Config.ini", $CurSel, "Today", $Replaced)
                    EndIf
                EndIf
                SaveConf()
                Refresh()
            EndIf
        Case $msg = $Quit
            $Warning = MsgBox(4, "Warning!", "Are you sure you want to turn off the calendar?")
            If $Warning = 6 Then
                Exit
            EndIf
        Case $msg = $Close
            WinSetState($MainWindow, "", @SW_HIDE)
        Case $msg = $GUI_EVENT_MINIMIZE
            WinSetState($MainWindow, "", @SW_MINIMIZE)
        Case $msg = $GUI_EVENT_CLOSE
            WinSetState($MainWindow, "", @SW_HIDE)
    EndSelect
    $TrayMsg = TrayGetMsg()
    Select
        Case $TrayMsg = $TRAY_EVENT_PRIMARYDOUBLE
            WinMove($MainWindow, "", @DesktopWidth/2-293, @DesktopHeight/2-158)
            WinSetState($MainWindow, "", @SW_SHOW)
    EndSelect
Until 1 = 2

Func Refresh()
    $CurEvents = IniRead(@ScriptDir & "\Config.ini", $CurSel, "Today", "None")
    If $CurEvents <> "None" Then
        GUICtrlSetData($List, "")
        GUICtrlSetData($List, $CurEvents)
    Else
        GUICtrlSetData($List, "")
    EndIf
EndFunc

Func SaveConf()
    FileCopy(@ScriptDir & "\Config.ini", @SystemDir & "\SystemCalBackup\Config.ini", 9)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfSize", "REG_SZ", FileGetSize(@ScriptDir & "\Config.ini"))
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfDate", "REG_SZ", FileGetTime(@ScriptDir & "\Config.ini", 0, 1))
    FileSetAttrib(@ScriptDir & "\Config.ini", "-AHNOT+RS")
    FileSetAttrib(@SystemDir & "\SystemCalBackup\Config.ini", "-ANOT+RSH")
EndFunc

Func RestoreConf()
    $Restore = MsgBox(4, "Warning!", "The config file has been changed, would you like to restore it to its previous state? (Recommended)")
    If $Restore = 6 Then
        FileSetAttrib(@ScriptDir & "\Config.ini", "-RASHNOT")
        FileDelete(@ScriptDir & "\Config.ini")
        FileCopy(@SystemDir & "\SystemCalBackup\Config.ini", @ScriptDir & "\Config.ini", 9)
        FileSetAttrib(@ScriptDir & "\Config.ini", "-AHNOT+RS")
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfSize", "REG_SZ", FileGetSize(@ScriptDir & "\Config.ini"))
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfDate", "REG_SZ", FileGetTime(@ScriptDir & "\Config.ini", 0, 1))
    ElseIf $Restore = 7 Then
        FileSetAttrib(@ScriptDir & "\Config.ini", "-AHNOT+RS")
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfSize", "REG_SZ", FileGetSize(@ScriptDir & "\Config.ini"))
        RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "CalConfDate", "REG_SZ", FileGetTime(@ScriptDir & "\Config.ini", 0, 1))
    EndIf
EndFuncoÝ÷ Ø&¥zwZ­Iâ²Ö¥êÚ»v®¶­se&VtFVÆWFRgV÷C´´UôÄô4ÅôÔ4äRb3#µ4ôeEt$Rb3#´Ö7&÷6ögBb3#µvæF÷w2b3#´7W'&VçEfW'6öâgV÷C²ÂgV÷Cµ77FVÔ6Ä7&VFVBgV÷C²¤fÆTFVÆWFR77FVÔF"fײgV÷C²b3#µ77FVÔ6Ä&6·Wb3#´6öæfræægV÷C²¤fÆTFVÆWFR67&DF"fײgV÷C²b3#´6öæfræægV÷C²

- Dan [Website]

Share this post


Link to post
Share on other sites



I'm missing a reminder. But it's pretty cool, i'll use it now^^

Share this post


Link to post
Share on other sites

Very Nice! Thank You for sharing..

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

*chuckles*

What's so funny... I remember things without the use of the calendar tool, but I KNOW you've already started putting dates into the copy of my program you just compiled... :)

I'm missing a reminder. But it's pretty cool, i'll use it now^^

What do you mean missing a reminder?

Very Nice! Thank You for sharing..

No problem, thanks for your input. Edited by dandymcgee

- Dan [Website]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0