Sure thing.....
For such a small project, scripting languages are usually the easiest to use as much of the background code is done for you. I choose ahk for such tasks as it is the most simple I have seen.
CODE#SingleInstance Force
#Persistent
AppName := "iso-rc"
VersionNumber := "1.01"
Interval := 60
OnExit, Exit
Menu, Tray, NoStandard
Menu, Tray, Add, Show
Menu, Tray, Default, Show
Menu, Tray, Add, Exit
Sections := "GBA,NDS,Wii"
StringSplit, Sections, Sections, `,
IniRead, Sections, %AppName%.ini, Settings, Sections, % " ";%
IniRead, Search, %AppName%.ini, Settings, Search, % " ";%
IniRead, Sound, %AppName%.ini, Settings, Sound, % " ";%
IniRead, Email, %AppName%.ini, Settings, Email, % " ";%
;###############################################################################
###################
Gui, 1: Add, GroupBox, x10 y10 w450 h50, Choose which RSS updates to include:
Loop, %Sections0%
{
ÂÂÂÂGui, 1: Add, CheckBox, % (A_Index = 1 ? "xp+20 yp+20" : "x+80 yp+0") " v" Sections%A_Index% " " (SubStr(Sections, A_Index, 1) ? "Checked" : "") " gCheck"
ÂÂÂÂGui, 1: Add, Text, % "x+0 yp+0 gCheck v" Sections%A_Index% "2", % Sections%A_Index%
}
Gui, 1: Add, GroupBox, x10 y+30 w450 h50, Enter search terms for RSS:
Gui, 1: Add, Edit, xp+10 yp+20 w430 vSearch gSearch r1 -Multi -Wrap, % Search ? Search : "";%
Gui, 1: Add, GroupBox, x10 y+30 w450 h85, Choose sound file to play on match:
Gui, 1: Add, Edit, xp+10 yp+20 w345 vSound r1 -Multi -Wrap, % Sound ? Sound : "";%
Gui, 1: Add, Button, x+10 yp+0 w75 gSound, &Sound...
Gui, 1: Add, Button, x20 y+10 w75 gPlayStop vPlay, &Play
Gui, 1: Add, Button, x+10 yp+0 w75 gPlayStop, &Stop
Gui, 1: Add, ListView, x10 y+30 w450 h350 vMainList Grid Count20 -LV0x10 -Multi NoSortHdr NoSort ReadOnly AltSubmit gMainList, Release List|URL
LV_ModifyCol(1, "440 Left")
LV_ModifyCol(2, "0 Left")
Gui, 1: Add, Text, x10 y+10 w200 vStatus
Gui, 1: Show, AutoSize, %AppName% - v%VersionNumber%
hwnd := WinActive("A")
GoSub, UpdateRSS
SetTimer, UpdateRSS, % Interval*1000;%
Return
;###############################################################################
###################
Search:
Gui, 1: Submit, NoHide
IniWrite, %Search%, %AppName%.ini, Settings, Search
Return
;###############################################################################
###################
Sound:
Gui, 1: +OwnDialogs
FileSelectFile, Sound,,, Choose sound file to play on match:, Audio (*.wav; *.mp2; *.mp3; *.ogg; *.aac)
If ErrorLevel
Return
IniWrite, %Sound%, %AppName%.ini, Settings, Sound
GuiControl,, Sound, %Sound%
Return
;###############################################################################
###################
PlayStop:
Gui, 1: Submit, NoHide
SoundPlay, % (A_GuiControl = "Play") ? Sound : "Stop";%
Return
;###############################################################################
###################
MainList:
If (A_GuiEvent Â!= "DoubleClick")
Return
LV_GetText(Address, A_EventInfo, 2)
StringReplace, Address, Address, amp;,, All
Run, %Address%
Return
;###############################################################################
###################
UpdateRSS:
Gui, 1: Submit, NoHide
If !(GBA || NDS || Wii)
Return
GuiControl,, Status, Updating...
StringSplit, Search, Search, % " ";%
IniRead, Sections, %AppName%.ini, Settings, Sections, % " ";%
UrlDownloadToFile, http://gbatemp.net/rss.php?show=0%Sections%0, RSS.txt
FileRead, RSS, RSS.txt
FileDelete, RSS.txt
LV_Delete()
StringReplace, RSS, RSS, `n,, All
Pos := RegExMatch(RSS, "")
Loop
{
ÂÂÂÂPos := RegExMatch(RSS, "(.+?).+?(.+?)" , Match, Pos+StrLen(Match1))
ÂÂÂÂLV_Add("", Match1, Match2)
ÂÂÂÂIf !Match
ÂÂÂÂBreak
ÂÂÂÂLoop, %Search0%
ÂÂÂÂ{
ÂIf InStr(Match1, Search%A_Index%)
Â{
ÂÂÂÂÂTrayTip, New Release!, %Match1%`nhas been released.,,1
ÂÂÂÂÂSoundPlay, %Sound%
Â}
ÂÂÂÂ}
}
GuiControl,, Status, % Â" ";%
Return
;###############################################################################
###################
Check:
Gui, 1: Submit, NoHide
If StrLen(A_GuiControl) != 3
{
ÂÂÂÂGuiControl := SubStr(A_GuiControl, 1, StrLen(A_GuiControl)-1)
ÂÂÂÂGuiControl,, %GuiControl%, % !%GuiControl%
}
Gui, 1: Submit, NoHide
IniWrite, % GBA NDS Wii, %AppName%.ini, Settings, Sections
GoSub, UpdateRSS
SetTimer, UpdateRSS, % Interval*1000;%
Return
;###############################################################################
###################
Show:
Gui, % "1: " (DllCall("IsWindowVisible", "UInt", hwnd) ? "Hide" : "Show");%
Return
;###############################################################################
###################
Exit:
ExitApp