Here's a new script which is purely developed for us scripters!
Are you tired of restarting MM all the time when you developing scripts?
Then the ScriptReloader is for you. The script lets you easily reload a script from the disc into MM's memory using the new script function Reload().
It works like this:Wiki wrote:Method description
This method is for script development only. When called with a full script path, the script will be reloaded from disk before the its next event is called and so updated source from disk is used instead of the already loaded code from memory.
In case the ScriptPath parameter is an empty string, all strings in memory will be reloaded.
Note that by calling this method you lose all global variables of the reloaded script, their content can't be preserved. On the other hand, all registered events and SDB.Objects are preserved.
Introduced in MediaMonkey 3.1.0.1212.
First go to Tools->Scripts->"Select script to reload" and Select a script (or "Relaod all scripts"). The selected script gets checked and at the same time gets a new menu entry visible in right click of the main window. That's where you reload your selected script. To hide the right click menu entry simply deselect the script in Tools->Scripts->"Select script to reload".
Bug-reports, suggestions and comments are of course welcome!
Let me know what you think!
Enjoy!
/Bex
---------------------------------------------------------------------------------
Code: Select all
' MediaMonkey Script
' NAME: ScriptReloader
' VERSION: 1.0
' LAST UPDATED: 2008-02-24
' AUTHOR: Bex
' DATE : 2008-02-24
Option Explicit
Dim UI : Set UI = SDB.UI
Dim INI : Set INI = SDB.IniFile
Sub Install()
If InvalidMM Then Exit Sub
SDB.RefreshScriptItems
If Not SDB.Objects("rScript") Is Nothing Then
SDB.Objects("rScript").Visible=False
Set SDB.Objects("rScript") = Nothing
End If
Dim i
For i=0 To INI.IntValue("ScriptReloader","ScriptCnt")
If Not SDB.Objects("rScript" & i) Is Nothing Then
SDB.Objects("rScript" & i).Visible=False
Set SDB.Objects("rScript") = Nothing
End If
Next
Call onStartup()
End Sub
Function InvalidMM()
If SDB.VersionString < "3.0.3" Then
SDB.MessageBox "ScriptReloader is only compatible with MediaMonkey 3.1.0.1212 and later."& VbNewLine &_
"Please Update your version of MediaMonkey."& VbNewLine &_
"The script will not be installed.", mtWarning, Array(mbOk)
InvalidMM=True
Exit Function
End If
If SDB.VersionString = "3.1.0" Then
On Error Resume Next
If SDB.VersionBuild < 1212 Then
SDB.MessageBox "ScriptReloader is only compatible with MediaMonkey 3.1.0.1212 and later."& VbNewLine &_
"Please Update your version of MediaMonkey."& VbNewLine &_
"The script will not be installed.", mtWarning, Array(mbOk)
InvalidMM=True
Exit Function
End If
On Error GoTo 0
End If
InvalidMM=False
End Function
Sub OnStartUp()
If InvalidMM Then Exit Sub
Dim fso,fld,fold,file,Mns,Mnu,i,ScriptName
ScriptName=INI.StringValue("ScriptReloader","ScriptName")
Set Mnu = SDB.UI.AddMenuItem( SDB.UI.Menu_Pop_TrackList, 1, 1)
Mnu.Caption = "Reload Script " & INI.StringValue("ScriptReloader","ScriptName")
Mnu.OnClickFunc = "Reload"
Mnu.IconIndex = 30
Mnu.Visible = INI.BoolValue("ScriptReloader","MnuVisible")
Mnu.UseScript=Script.ScriptPath
Set SDB.Objects("rScript") = Mnu
Set Mns = SDB.UI.AddMenuItemSub( SDB.UI.Menu_Scripts, 0, 0)
Mns.Caption = "Select Script to reload"
Mns.IconIndex = 30
Mns.UseScript=Script.ScriptPath
Set Mnu=SDB.UI.AddMenuItem(Mns, 0, 0)
Mnu.Caption = "Reload All Scripts"
Mnu.OnClickFunc = "CheckScript"
Mnu.Checked = Eval(ScriptName=Mnu.Caption)
Mnu.UseScript=Script.ScriptPath
SDB.Objects("rScript0")=Mnu
Set fso = CreateObject("Scripting.fileSystemObject")
fold=SDB.ScriptsPath
If fso.FolderExists(fold) Then
Set fld = fso.getFolder(fold)
For Each file In fld.files
If UCase(Right(file.Name,4))=".VBS" Then
i=i+1
Set Mnu=SDB.UI.AddMenuItem(Mns, 0, 0)
Mnu.Caption = Right(file.Path,Len(file.Path)-InStrRev(file.Path,"\"))
Mnu.OnClickFunc = "CheckScript"
Mnu.Checked = Eval(ScriptName=Mnu.Caption)
Mnu.UseScript=Script.ScriptPath
SDB.Objects("rScript" & i)=Mnu
End If
Next
End If
fold=fold & "Auto\"
If fso.FolderExists(fold) Then
Set fld = fso.getFolder(fold)
For Each file In fld.files
If UCase(Right(file.Name,4))=".VBS" Then
i=i+1
Set Mnu=SDB.UI.AddMenuItem(Mns, 0, 0)
Mnu.Caption = "Auto\" & Right(file.Path,Len(file.Path)-InStrRev(file.Path,"\"))
Mnu.OnClickFunc = "CheckScript"
Mnu.Checked = Eval(ScriptName=Mnu.Caption)
Mnu.UseScript=Script.ScriptPath
SDB.Objects("rScript" & i)=Mnu
End If
Next
End If
INI.IntValue("ScriptReloader","ScriptCnt")=i
End Sub
Sub CheckScript(Mnu)
Dim i
For i=0 To INI.IntValue("ScriptReloader","ScriptCnt")
If Not Mnu is SDB.Objects("rScript" & i) Then
SDB.Objects("rScript" & i).Checked=False
End If
Next
Mnu.Checked= Not Mnu.Checked
INI.StringValue("ScriptReloader","ScriptName")=Mnu.Caption
INI.BoolValue("ScriptReloader","MnuVisible")=Mnu.Checked
SDB.Objects("rScript").Visible=Mnu.Checked
SDB.Objects("rScript").Caption="Reload Script " & INI.StringValue("ScriptReloader","ScriptName")
End Sub
Sub Reload(Mnu)
Dim FullPath
If INI.StringValue("ScriptReloader","ScriptName")="Reload All Scripts" Then
FullPath=""
Else
FullPath=SDB.ScriptsPath & INI.StringValue("ScriptReloader","ScriptName")
End If
Script.Reload(FullPath)
End Sub
___________________________________________________________
Download:
Latest version:
Note! You must have MM 3.1.0 1212 are later to use this script!
You might need to download from the Beta forum to get the required version.
MM3 (Installer)
ScriptReloader 1.0
Installation Instructions:
- New Install or upgrade:
MM3 (Installer)
Avoid "Product installation error"
- Vista Users:
- - To be able to install scripts you must Run MM as an administrator.
- - It means that you must right click the MM icon and select "Run as administrator" even if you are logged in as an administrator.
- All Users:
- - Check in your task manager that you only have one instance of MediaMonkey.exe running.
1. Download the mmip file and double click on it.
2. Goto Tools->Options->"Select script to reload" and Select a script
3. To reload the selected script, right click in the main window and select the first menu.