TweakMonkey (advanced options page) 1.02 - 4/2/2007 [MM2+3]
Is it possible to remove also the 'Search' option
I love this script but I have a question - TM makes possible to remove all the nodes from tree except the "Search" one.
I never use it - is it possible to remove it also, for example in the new version of the TM?
I never use it - is it possible to remove it also, for example in the new version of the TM?
Hiding all nodes (including search node) should indeed be possible (I don't think that it would give problems with MM)is it possible to remove it also, for example in the new version of the TM?
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
I believe that if you hide the search node you'll disable the search itself since the result can't be presented anywhere...
Advanced Duplicate Find & Fix Find More From Same - Custom Search. | Transfer PlayStat & Copy-Paste Tags/AlbumArt between any tracks.
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
Good news: I just tested this and it gives no problems.
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Cool!
Advanced Duplicate Find & Fix Find More From Same - Custom Search. | Transfer PlayStat & Copy-Paste Tags/AlbumArt between any tracks.
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
TODO:
- Add auto-expand ability for "Net Radio" and "Web" nodes: http://www.mediamonkey.com/forum/viewtopic.php?t=14398
- Make sure that the worker script is called through the wscript/cscript application (and not directly through the file).
- Add checkbox to enable/disable setting of startup node (or check if the StartupNode script is present and activated)
- Add auto-expand ability for "Net Radio" and "Web" nodes: http://www.mediamonkey.com/forum/viewtopic.php?t=14398
- Make sure that the worker script is called through the wscript/cscript application (and not directly through the file).
- Add checkbox to enable/disable setting of startup node (or check if the StartupNode script is present and activated)
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
I've modified the 1.0 script to better suite my needs.
I did not really add any code, I simply re-arranged some of the existing logic.
My purpose was to avoid having an empty now playlist if MM crashes or does not get shut down properly.
I've added the comments to the script and affected sections.
Basically, 'use fast nowplaying loading' will not delete the database copy of the now playlist at startup, and it will check that the NPSaved playlist does exist before clearing anything in the existing now playing window.
Then at shut down, will check to make sure the NPSaved playlist exists, delete it, then re-create a new NPSaved with now playing list that was present at shut down.
This in effect restores the default functionality that if MM does not shut down properly for any reason, it will restart with the last saved NPSaved playlist and position.
There are no other changes or improvements, feel free to continue to use the existing version if you don't utilize the 'fast nowplaying loading' option.
NOTE: please ensure you are using tweakmonkey.vbs 1.0 from the installer HERE, then you can copy the below code into tweakmonkey.vbs to update the script.
Also, if you are still using the old original tweakmonkeyconfig.vbs be sure to remove or rename the .vbs to .bak or something.
I did not really add any code, I simply re-arranged some of the existing logic.
My purpose was to avoid having an empty now playlist if MM crashes or does not get shut down properly.
I've added the comments to the script and affected sections.
Basically, 'use fast nowplaying loading' will not delete the database copy of the now playlist at startup, and it will check that the NPSaved playlist does exist before clearing anything in the existing now playing window.
Then at shut down, will check to make sure the NPSaved playlist exists, delete it, then re-create a new NPSaved with now playing list that was present at shut down.
This in effect restores the default functionality that if MM does not shut down properly for any reason, it will restart with the last saved NPSaved playlist and position.
There are no other changes or improvements, feel free to continue to use the existing version if you don't utilize the 'fast nowplaying loading' option.
NOTE: please ensure you are using tweakmonkey.vbs 1.0 from the installer HERE, then you can copy the below code into tweakmonkey.vbs to update the script.
Also, if you are still using the old original tweakmonkeyconfig.vbs be sure to remove or rename the .vbs to .bak or something.
Code: Select all
'====================================================================================
'
' MEDIAMONKEY SCRIPT: TweakMonkey v1.01 (last updated 2007-2-21) by The MediaMonkey Community
' Initiated by Teknojnky on 2006-21-03 and open development for the whole MediaMonkey Community
'
' TweakMonkey is a script used to tweak MediaMonkey, i.e. to make more advanced MediaMonkey settings
' and changes available through MediaMonkey's options panels (See the integrated TweakMonkey options panes)
'
' Responsability for using this script (in all cases, in any way) is all on your own shoulders.
'
'====================================================================================
' StartupNode (Steegy) http://www.mediamonkey.com/forum/viewtopic.php?t=7656
' Backup script (Trixmoto) http://www.mediamonkey.com/forum/viewtopic.php?t=7746
'***** You are free to do modify this code, but please detail any changes you make public
'***** and make sure you credit yourself (and previous authors).
'***** Changes/additions must be true to the spirit, i.e. don't include things that are better of in separate scripts.
' TweakMonkey v1.0 (2006-12-19) implemented by Steegy'
' updated Feb 21 2007 by Teknojnky
' modfied the startup and shut down procedures for fast load now playing
' startup proc first checks for NPSaved playlist before clearing the current NP
' and leaves the NPSaved intact in case MM crashes'
' shutdown proc will now check for existing NPSaved and delete it,
' then re-create a new one with the current NP list'
' this in effect prevents having an empty NP if MM crashed,
' the previous (before crash) NPSaved is re-used. A side effect of this is
' that a playlist called "NPSaved" remains in the playlist node'
' TODO -----------------------------------------------------
' Randomize NowPlaying playlist on startup (test if MM has fixed the necessary script methods)
' Improve backup / restore functionality (autobackup each x days/startups)
' Interface to change MediaMonkey music file associations + icons + option to auto-set at startup (if MM 3.0 doesn't solve this)
' Equaliser auto on / auto of / don't touch (is this necessary ?)
Option Explicit
Const ScriptName = "TweakMonkey" ' Script Name
Const Version = "1.01" ' Version
Const LastUpdated = "2007-2-21" ' Last updated
Dim Tree : Set Tree = SDB.MainTree
Dim INI : Set INI = SDB.IniFile
Dim UI : Set UI = SDB.UI
Dim NodeRef : Set NodeRef = CreateObject("Scripting.Dictionary")
With NodeRef
.Add "NowPlaying", Tree.Node_NowPlaying
.Add "Library", Tree.Node_Library
.Add "Location", Tree.Node_Location
.Add "Artist", Tree.Node_Artist
.Add "Album", Tree.Node_Album
.Add "Genre", Tree.Node_Genre
.Add "Year", Tree.Node_Year
.Add "Rating", Tree.Node_Rating
.Add "Classification", Tree.Node_Classification
.Add "FilesToEdit", Tree.Node_FilesToEdit
.Add "VirtualCD", Tree.Node_VirtualCD
.Add "Previews", Tree.Node_Previews
.Add "Playlists", Tree.Node_Playlists
.Add "MyComputer", Tree.Node_MyComputer
End With
Dim NodeCantExpand : Set NodeCantExpand = CreateObject("Scripting.Dictionary")
With NodeCantExpand ' Set to True if a node can't be expanded (use False, or don't add an entry at all, if the node can be expanded)
.Add "NowPlaying", True
End With
Dim NodeNoLibraryChild : Set NodeNoLibraryChild = CreateObject("Scripting.Dictionary")
With NodeNoLibraryChild ' Set to True if a subnode of Library node (use False, or don't add an entry at all, if the node isn't)
.Add "NowPlaying", True
.Add "Library", True
.Add "Playlists", True
.Add "MyComputer", True
.Add "Radio", True
.Add "Web", True
End With
Const CTL_LINE_HEIGHT = 16
Dim WorkerArguments
Dim DEFAULT_BACKUP_DIR : DEFAULT_BACKUP_DIR = SDB.ApplicationPath & "Scripts\Auto\TweakMonkey\Backups\"
' ******************************************************************************************************
' EVENT OnShutdown
' **********************************
Sub SDB_OnShutDown
SetINIString "PlaybackPosition", SDB.Player.PlayBackTime
SetINIString "PlaybackState", SDB.Player.IsPlaying & "-" & SDB.Player.IsPaused
If GetINIBool("UseFastNPLoading", False) Then
If SDB.PlaylistByTitle("NPSaved").Id <> 0 Then 'if old NPSaved exists then delete it'
SDB.PlaylistByTitle("NPSaved").Delete
End If
SetINIString "NPCurrentSong", SDB.Player.CurrentSongIndex
Dim RootPlaylist : Set RootPlaylist = SDB.PlaylistByTitle("")
If SDB.PlaylistByTitle("NPSaved").Id <> 0 Then SDB.PlaylistByTitle("NPSaved").Delete
Dim NPSaved : Set NPSaved = RootPlaylist.CreateChildPlaylist("NPSaved")
NPSaved.Clear
Dim CSL : Set CSL = SDB.Player.CurrentSongList
Dim i
For i = 0 To CSL.Count - 1
NPSaved.AddTrack(CSL.Item(i))
Next
SDB.Player.PlaylistClear
End If
If GetINIBool("ClearNowPlayingOnExit", False) Then
SDB.Player.PlaylistClear
End If
SetOfflineWorker "ClearSearchHistory", GetINIBool("Always_ClearSearchHistory", False)
SetOfflineWorker "ClearPlaylistHistory", GetINIBool("Always_ClearPlaylistHistory", False)
SetOfflineWorker "ClearURLHistory", GetINIBool("Always_ClearURLHistory", False)
If WorkerArguments.Count > 0 Then
Dim Key, ArgumentsList
For Each Key In WorkerArguments.Keys
If WorkerArguments(Key) = True Then
ArgumentsList = ArgumentsList & " /" & Key
End If
Next
Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """" & SDB.ApplicationPath & "Scripts\Auto\TweakMonkey\offlineworker.vbs" & """" _
& " /INIPath:" & """" & GetINIPath & """" _
& " /DBPath:" & """" & GetDBPath & """" _
& " /APPPath:" & """" & SDB.ApplicationPath & """" _
& " /MyMusicPath:" & """" & SDB.MyMusicPath & """" _
& ArgumentsList, 1, False
End If
End Sub
' **********************************
' EVENT OnStartup
' **********************************
Sub OnStartup
Set WorkerArguments = CreateObject("Scripting.Dictionary")
Set SDB.Objects("WorkerArguments") = WorkerArguments
Tree.Node_Library.Expanded = False
Do While Not SDB.IsRunning
Loop
' events to use in the future
' Script.RegisterEvent SDB, "OnPlay", "SDB_OnPlay"
' Script.RegisterEvent SDB, "OnStop", "SDB_OnStop"
Script.RegisterEvent SDB, "OnShutDown", "SDB_OnShutDown"
Dim TweakSheetRoot, TweakSheetTree, TweakSheetAutoExec, TweakSheetCleanReset, TweakSheetMMFiles
TweakSheetRoot = SDB.UI.AddOptionSheet("TweakMonkey & Script Options", Script.ScriptPath, "InitSheetRoot", "SaveSheetRoot", -1)
TweakSheetAutoExec = SDB.UI.AddOptionSheet("AutoExec Options", Script.ScriptPath, "InitSheetAutoExec", "SaveSheetAutoExec", TweakSheetRoot)
TweakSheetTree = SDB.UI.AddOptionSheet("Tree Node Options", Script.ScriptPath, "InitSheetTree", "SaveSheetTree", TweakSheetRoot)
TweakSheetCleanReset = SDB.UI.AddOptionSheet("Clean/Reset Options", Script.ScriptPath, "InitSheetCleanReset", "SaveSheetCleanReset", TweakSheetRoot)
TweakSheetMMFiles = SDB.UI.AddOptionSheet("MM Files + Backup Options", Script.ScriptPath, "InitSheetMMFiles", "SaveSheetMMFiles", TweakSheetRoot)
' auto-set player volume at startup
If GetINIBool("VolumeEnable", False) Then
Dim Volume : Volume = CInt(GetINIString("Volume", "100"))
SDB.Player.Volume = (Volume/100)
SDB.ProcessMessages
End If
' show/hide/expand/collapse any specific nodes ---------------------------------
Dim NodeName
For Each NodeName In NodeRef.Keys
If CanNodeExpand(NodeName) Then
If GetTreeExpanded(NodeName) Then
If IsLibrarySubnode(NodeName) Then
NodeRef("Library").Expanded = True
End If
NodeRef(NodeName).Expanded = True
End If
End If
NodeRef(NodeName).Visible = GetTreeVisibility(NodeName)
Next
' startup node -----------------------------------------------------------------
Dim StartupNode : StartupNode = GetINIString("StartupNode", "")
If StartupNode <> "" Then
If NodeRef.Exists(StartupNode) Then
SDB.MainTree.CurrentNode = NodeRef(StartupNode)
SDB.ProcessMessages
End If
End If
If GetINIBool("UseFastNPLoading", False) Then
If SDB.PlaylistByTitle("NPSaved").Id <> 0 Then 'check first to see that NPSaved exists'
SDB.Player.PlaylistClear ' To make sure that the playlist is really empty
SDB.Player.PlaylistAddTracks(SDB.PlaylistByTitle("NPSaved").Tracks)
SDB.Player.CurrentSongIndex = CLng(GetINIString("NPCurrentSong", "0"))
SDB.ProcessMessages
End If
' First check that the NPSaved node really exists. (If it doesn't exist, the root node would be returned, and deleted!)
' commented this out, to leave the NPSaved playlist intact then delete when MM shuts down properly'
' If SDB.PlaylistByTitle("NPSaved").Id <> 0 Then SDB.PlaylistByTitle("NPSaved").Delete
Else
' Auto-Play/Resume/Shuffle/Repeat/Randomize/LoadPlaylist ---------
If GetINIBool("LoadPlaylist", False) Then
Dim PlaylistName : PlaylistName = GetINIString("Playlist", "")
If PlaylistName <> "" Then
If DoesPlaylistExist(PlaylistName) Then
SDB.Player.PlaylistClear
SDB.Player.PlaylistAddTracks(SDB.PlaylistByTitle(PlaylistName).Tracks)
End If
End If
End If
End If
If GetINIBool("AutoRandomize", False) Then
RandomiseNowPlaying
End If
If GetINIString("AutoShuffle", "-") <> "-" Then
If GetINIString("AutoShuffle", "-") = "on" Then
SDB.Player.isShuffle = True
Else
SDB.Player.isShuffle = False
End If
End If
If GetINIString("AutoRepeat", "-") <> "-" Then
If GetINIString("AutoRepeat", "-") = "on" Then
SDB.Player.isRepeat = True
Else
SDB.Player.isRepeat = False
End If
End If
If GetINIString("AutoDJ", "-") <> "-" Then
If GetINIString("AutoDJ", "-") = "on" Then
SDB.Player.isAutoDJ = True
Else
SDB.Player.isAutoDJ = False
End If
End If
If (GetINIBool("AutoPlay", False) Or GetINIBool("AutoResume", False)) Then
Dim VolOrig : VolOrig = SDB.Player.Volume
SDB.Player.Volume = 0
If Not GetINIBool("LoadPlaylist", False) Then
SDB.Player.Play
End If
If GetINIBool("AutoResume", False) And Not GetINIBool("LoadPlaylist", False) Then
Dim PlayState : PlayState = Split(GetINIString("PlaybackState", "False-False"), "-")
If PlayState(1) Then
SDB.Player.Pause
Else
If PlayState(0) Then
SDB.Player.Play
Else
SDB.Player.Stop
End If
End If
If GetINIBool("AutoPlay", False) Then
SDB.Player.Play
End If
SDB.Player.PlayBackTime = GetINIString("PlaybackPosition", "0")
Else
If GetINIBool("AutoPlay", False) Then
If SDB.Player.PlaylistCount > 0 Then
SDB.Player.CurrentSongIndex = 0
End If
SDB.Player.Play
End If
End If
SDB.Player.Volume = VolOrig
End If
End Sub
' ******************************************************************************************************
' INIT Sheet ROOT
' **********************************
Sub InitSheetRoot(Sheet)
CreateLabel Sheet, String(20, Chr(171)) & " T W E A K T H E M O N K E Y !! " & String(20, Chr(187)), 10, 10, 400, 20
CreateLabel Sheet, String(20, Chr(171)) & " T W E A K T H E M O N K E Y !! " & String(20, Chr(187)), 11, 10, 400, 20
CreateLabel Sheet, "TweakMonkey Advanced Options Panel" _
& vbNewLine & "Last updated: " & LastUpdated & " v" & Version _
& vbNewLine _
& vbNewLine & "Click a sub-tree to view/set the options." _
& vbNewLine _
& vbNewLine & "Most options will only take effect once MediaMonkey has been restarted." _
& vbNewLine & "Some functions only execute when MediaMonkey is starting or shutting down.", 10, 40, 400, 20
CreateLabel Sheet, "________________________________", 10, 41, 400, 20
End Sub
' **********************************
' SAVE Sheet ROOT
' **********************************
Sub SaveSheetRoot(Sheet)
End Sub
' ******************************************************************************************************
' INIT Sheet AUTOEXEC
' **********************************
Sub InitSheetAutoExec(Sheet)
Dim edt
CreateLabel Sheet, "Turn features on/off at startup:", 10, 10, 200, 20
CreateLabel Sheet, "__________________________", 10, 11, 200, 20
CreateCheckBox Sheet, "Player Startup Volume", 10, 32, 140, 20, "VolumeEnable", "Enable/Disable the Startup Volume control", GetINIBool("VolumeEnable", False)
' Startup Volume control
Set edt = UI.NewSpinEdit(Sheet)
edt.Common.ControlName = "Volume"
edt.Common.SetRect 145, 32, 45, 20
edt.MinValue = 0
edt.MaxValue = 100
edt.Common.Hint = "Set Volume at startup"
Dim Volume : Volume = GetINIString("Volume", 100)
edt.Value = Volume
' Auto-play/resume checkboxes
CreateCheckBox Sheet, "Auto Play", 10, 57, 80, 20, "AutoPlay", "Start Playing on startup", GetINIBool("AutoPlay", False)
CreateCheckBox Sheet, "Resume State/Position", 100, 55, 130, 20, "AutoResume", "Resume song from last play time position", GetINIBool("AutoResume", False)
' Auto-Randomize the playlist or Now Playing
'CreateCheckBox Sheet, "Randomize the playlist at startup", 245, 57, 200, 20, "AutoRandomize", "Randomize the selected playlist or 'Now Playing' at startup (not yet functional)", GetINIBool("AutoRandomize", False)
'Sheet.Common.ChildControl("AutoRandomize").Common.Enabled = False
CreateLabel Sheet, "Set Player:", 10, 85, 100, 20
' Player Auto-Shuffle'
'CreateCheckBox Sheet, "Shuffle", 80, 80, 70, 20, "AutoShuffle", "Set's Player Shuffle on at startup", GetINIBool("AutoShuffle", False)
CreateLabel Sheet, "Shuffle", 75, 85, 70, 20
CreateButton Sheet, GetINIString("AutoShuffle", "-"), 115, 82, 30, 20, "AutoShuffle", "ChangeChecEnabState"
' Player Auto-Repeat'
'CreateCheckBox Sheet, "Repeat", 150, 80, 70, 20, "AutoRepeat", "Set's Player Repeat on at startup", GetINIBool("AutoRepeat", False)
CreateLabel Sheet, "Repeat", 75, 103, 70, 20
CreateButton Sheet, GetINIString("AutoRepeat", "-"), 115, 102, 30, 20, "AutoRepeat", "ChangeChecEnabState"
' Player Auto-DJ'
'CreateCheckBox Sheet, "AutoDJ", 220, 80, 70, 20, "AutoDJ", "Set's Player AutoDJ on at startup", GetINIBool("AutoDJ", False)
CreateLabel Sheet, "AutoDJ", 75, 123, 70, 20
CreateButton Sheet, GetINIString("AutoDJ", "-"), 115, 122, 30, 20, "AutoDJ", "ChangeChecEnabState"
' Use Fast NowPlaying Loading
Set edt = CreateCheckBox(Sheet, "Use Fast NowPlaying Loading", 10, 150, 180, 20, "UseFastNPLoading", "This will make MediaMonkey startup faster, with less disk usage", GetINIBool("UseFastNPLoading", False))
Script.RegisterEvent edt.Common, "OnClick", "PlaylistToggleHandler"
' Auto-Play-Playlist
Set edt = CreateCheckBox(Sheet, "Load alternate playlist at startup:", 10, 175, 200, 20, "LoadPlaylist", "Load this playlist at startup", GetINIBool("LoadPlaylist", False))
Script.RegisterEvent edt.Common, "OnClick", "PlaylistToggleHandler"
Dim Playlist : Playlist = GetINIString("Playlist", "")
Set edt = UI.NewEdit(Sheet)
edt.Common.SetRect 200, 175, 260, 20
edt.Common.ControlName = "Playlist"
edt.Text = Playlist
'Set edt = UI.NewButton(Sheet)
'edt.Caption = "Choose Playlist"
'edt.Common.SetRect 450, 130, 20, 20
'edt.OnClickFunc = ""
CreateLabel Sheet, "Turn features on/off at shutdown:", 10, 215, 200, 20
CreateLabel Sheet, "____________________________", 10, 216, 200, 20
' Clear Now Playing On Exit
CreateCheckBox Sheet, "Clear the Now Playing list on exit", 10, 235, 200, 20, "ClearNowPlayingOnExit", "This will clear the 'Now Playing' of tracks on exit", GetINIBool("ClearNowPlayingOnExit", False)
End Sub
Dim DontExecEvent : DontExecEvent = False
Sub PlaylistToggleHandler(CheckBox)
If DontExecEvent Then Exit Sub
Dim CState : CState = CheckBox.Checked
DontExecEvent = True
CheckBox.Common.TopParent.Common.ChildControl("LoadPlaylist").Checked = False
CheckBox.Common.TopParent.Common.ChildControl("UseFastNPLoading").Checked = False
CheckBox.Checked = CState
DontExecEvent = False
End Sub
Sub ChangeChecEnabState(Button)
If Button.Caption = "on" Then
Button.Caption = "off"
ElseIf Button.Caption = "off" Then
Button.Caption="-"
Else
Button.Caption = "on"
If Button.Common.ControlName = "AutoRepeat" Then Button.Common.TopParent.Common.ChildControl("AutoDJ").Caption = "off"
If Button.Common.ControlName = "AutoDJ" Then Button.Common.TopParent.Common.ChildControl("AutoRepeat").Caption = "off"
End If
End Sub
' **********************************
' SAVE Sheet AUTOEXEC
' **********************************
Sub SaveSheetAutoExec(Sheet)
Dim LoadPlaylist, Playlist
' Save volume
SetINIString "Volume", Sheet.Common.ChildControl("Volume").Value
SaveCheckValue Sheet, "VolumeEnable"
' Save auto-play/resume
SaveCheckValue Sheet, "AutoPlay"
SaveCheckValue Sheet, "AutoResume"
' Save LoadPlaylist and Playlist
LoadPlaylist = Sheet.Common.ChildControl("LoadPlaylist").Checked
Playlist = Sheet.Common.ChildControl("Playlist").Text
If Playlist = "" Then
SetINIString "LoadPlaylist", "False"
Else
SetINIString "LoadPlaylist", LoadPlaylist
End If
SetINIString "Playlist", Playlist
' Save Auto-Randomize playlist
'''SaveCheckValue Sheet, "AutoRandomize"
SetINIString "AutoShuffle", Sheet.Common.ChildControl("AutoShuffle").Caption
SetINIString "AutoRepeat", Sheet.Common.ChildControl("AutoRepeat").Caption
SetINIString "AutoDJ", Sheet.Common.ChildControl("AutoDJ").Caption
'''SaveCheckValue Sheet, "ExploreFolder"
'''SaveCheckValue Sheet, "CommandFolder"
SaveCheckValue Sheet, "UseFastNPLoading"
SaveCheckValue Sheet, "ClearNowPlayingOnExit"
End Sub
' ******************************************************************************************************
' INIT Sheet TREE
' **********************************
Sub InitSheetTree(Sheet)
Dim lbl, edt
Set lbl = CreateLabel(Sheet, "Configure the tree: (restart MM to take effect)", 10, 10, 80, 20)
CreateLabel Sheet, "_______________", 10, 11, 200, 20
lbl.Autosize = True
' Startup Node
Set lbl = CreateLabel(Sheet, "Node to be selected at startup:", 10, 35, 100, 20)
lbl.Autosize = True
Set edt = UI.NewDropdown(Sheet)
edt.Style = 2
edt.Common.ControlName = "StartupNode"
edt.Common.Left = 170
edt.Common.Top = 31
edt.Common.Hint = "MM will start with this node selected"
Dim StartupNode, Node, NodeIndex
StartupNode = GetINIString("StartupNode", "")
NodeIndex = 0
Dim NodeName
For Each NodeName In NodeRef.Keys
edt.AddItem(NodeName)
If StartupNode = NodeName Then
edt.ItemIndex = NodeIndex
End If
NodeIndex = NodeIndex + 1
Next
If StartupNode = "" Then
edt.ItemIndex = 1
End If
Dim Position : Position = 60
Dim Visible, Expanded
For Each NodeName In NodeRef.Keys
Visible = GetTreeVisibility(NodeName)
Expanded = GetTreeExpanded(NodeName)
If StartupNode = NodeName Then
Visible = True
End If
Set lbl = CreateLabel(Sheet, NodeName, 10, Position, 80, 20)
lbl.Autosize = True
CreateCheckBox Sheet, "Visible", 100, Position, 120, 20, NodeName & "Visible", "This will hide/unhide the " & NodeName & " Node", Visible
If CanNodeExpand(NodeName) Then
CreateCheckBox Sheet, "Expanded", 160, Position, 140, 20, NodeName & "Expanded", "This will expand/contract the " & NodeName & " Node", Expanded
End If
Position = Position + CTL_LINE_HEIGHT
Next
End Sub
' **********************************
' SAVE Sheet TREE
' **********************************
Sub SaveSheetTree(Sheet)
Dim Node, Position, vis, Visible, Expanded, exp, lbl, StartupNode
' Save startup node'
Dim NodeNames : NodeNames = NodeRef.Keys
StartupNode = NodeNames(Sheet.Common.ChildControl("StartupNode").ItemIndex)
SetINIString "StartupNode", StartupNode
' Save visible/expanded node options'
Dim NodeName
For Each NodeName in NodeRef.Keys
If Sheet.Common.ChildControl(NodeName & "Visible").Checked = True Then
SetTreeVisibility NodeName, True
Else
SetTreeVisibility NodeName, xIf(StartupNode = Node)
End If
If CanNodeExpand(NodeName) Then
Expanded = Sheet.Common.ChildControl(NodeName & "Expanded").Checked
If StartupNode = NodeName Then
If IsLibrarySubnode(NodeName) Then
SetTreeVisibility "Library", True
SetTreeExpanded "Library", True
End If
End If
SetTreeExpanded NodeName, Expanded
End If
Next
End Sub
' ******************************************************************************************************
' INIT Sheet CLEAN/RESET
' **********************************
Sub InitSheetCleanReset(Sheet)
CreateLabel Sheet, "Clear histories: (restart MM to take effect)", 10, 10, 80, 20
CreateLabel Sheet, "____________", 10, 11, 200, 20
CreateButton Sheet, "Clear Search History", 10, 35, 150, 20, "ClearSearchHistory", "ClearSearchHistory"
CreateCheckBox Sheet, "Always automatically", 170, 35, 150, 20, "Always_ClearSearchHistory", "Always automaticly clear search history", GetINIBool("Always_ClearSearchHistory", False)
CreateButton Sheet, "Clear Playlist History", 10, 60, 150, 20, "ClearPlaylistHistory", "ClearPlaylistHistory"
CreateCheckBox Sheet, "Always automatically", 170, 60, 150, 20, "Always_ClearPlaylistHistory", "Always automaticly clear playlist history", GetINIBool("Always_ClearPlaylistHistory", False)
CreateButton Sheet, "Clear Url History", 10, 85, 150, 20, "ClearURLHistory", "ClearURLHistory"
CreateCheckBox Sheet, "Always automatically", 170, 85, 150, 20, "Always_ClearURLHistory", "Always automaticly clear url history", GetINIBool("Always_ClearURLHistory", False)
CreateLabel Sheet, "Reset user interface positions: (restart MM to take effect)", 10, 130, 80, 20
CreateLabel Sheet, "________________________", 10, 131, 200, 20
CreateButton Sheet, "Reset Player Position", 10, 155, 150, 20, "ResetPlayerPosition", "ResetPlayerPosition"
End Sub
Sub ResetPlayerPosition(Button)
SetOfflineWorker "ResetPlayerPosition", True
End Sub
Sub ClearSearchHistory(Button)
SetOfflineWorker "ClearSearchHistory", True
End Sub
Sub ClearPlaylistHistory(Button)
SetOfflineWorker "ClearPlaylistHistory", True
End Sub
Sub ClearURLHistory(Button)
SetOfflineWorker "ClearURLHistory", True
End Sub
' **********************************
' SAVE Sheet CLEAN/RESET
' **********************************
Sub SaveSheetCleanReset(Sheet)
SaveCheckValue Sheet, "Always_ClearSearchHistory"
SaveCheckValue Sheet, "Always_ClearPlaylistHistory"
SaveCheckValue Sheet, "Always_ClearURLHistory"
End Sub
' ******************************************************************************************************
' INIT Sheet MM FILES
' **********************************
Sub InitSheetMMFiles(Sheet)
CreateLabel Sheet, "Change location of the library and settings files:", 10, 10, 200, 20
CreateLabel Sheet, "______________________________________", 10, 11, 200, 20
CreateLabel Sheet, "Location of the database:", 10, 35, 300, 20
Dim edt : Set edt = UI.NewEdit(Sheet)
edt.Common.SetRect 10, 50, 450, 20
edt.Common.ControlName = "LocationOfDatabase"
Dim DBName_previous : DBName_previous = GetDBPath
SetINIString "DBName_previous", DBName_previous
If GetOfflineWorker("ChangeLocationOfDatabase") Then
edt.Text = GetINIString("DBName", DBName_previous)
Else
edt.Text = DBName_previous
End If
CreateCheckBox Sheet, "Move current database to the new location (won't overwrite)", 10, 75, 350, 20, "MoveDatabaseToNewLocation", "Move current database to the new location (won't overwrite)", GetOfflineWorker("MoveDatabaseToNewLocation")
CreateCheckBox Sheet, "Keep copy of current database (copy instead of move)", 40, 95, 350, 20, "KeepCopyCurrentDatabase", "Keep copy of current database (copy instead of move)", GetOfflineWorker("KeepCopyCurrentDatabase")
Dim INILocation : INILocation = GetINILocation
Dim FolderDesc : FolderDesc = GetFolderDesc(INILocation)
CreateLabel Sheet, "The configuration file (MediaMonkey.ini) is now located in " & FolderDesc & " folder.", 10, 128, 400, 20
Dim FolderDesc2 : If INILocation = 2 Then FolderDesc2 = GetFolderDesc(1) Else FolderDesc2 = GetFolderDesc(2)
CreateCheckBox Sheet, "Move it to " & FolderDesc2 & " folder", 10, 143, 250, 20, "MoveConfigFile", "Move the configuration file (MediaMonkey.ini)", GetOfflineWorker("MoveConfigFile")
'CreateLabel Sheet, "Move it to:", 10, 148, 50, 20
'CreateButton Sheet, "MM Program Folder (for shared environments)", 70, 145, 250, 20, "MoveConfigurationFile", "MoveConfigurationFile"
CreateLabel Sheet, "Back up the library and settings files:", 10, 180, 200, 20
CreateLabel Sheet, "_____________________________", 10, 181, 200, 20
CreateLabel Sheet, "Backup directory:", 10, 203, 100, 20
Set edt = UI.NewEdit(Sheet)
edt.Common.SetRect 110, 200, 280, 20
edt.Common.ControlName = "BackupDirectory"
edt.Text = GetINIString("BackupDirectory", DEFAULT_BACKUP_DIR)
Script.RegisterEvent edt, "OnChange", "BackupDirectoryEdit_OnChange"
CreateButton Sheet, "Browse...", 390, 200, 70, 20, "BrowseBackupDirectory", "BrowseBackupDirectory"
CreateCheckBox Sheet, "Create backup (database + configuration files) on exit (only this time!!)", 10, 225, 400, 20, "CreateBackup", "Create backup (database + configuration files) on exit", GetOfflineWorker("CreateBackup")
CreateCheckBox Sheet, "Restore backup (database + configuration files) on exit (only this time!!)", 10, 255, 400, 20, "RestoreBackup", "Restore backup (database + configuration files) on exit", GetOfflineWorker("RestoreBackup")
CreateCheckBox Sheet, "Overwrite backup of last active database", 40, 275, 300, 20, "OverwriteRestoreBackup", "When a database backup is restored, the last active database (if present) will be moved as backup file." & vbNewLine & "Choose if you want to use (overwrite) this same backup file on each restore, or if you want to create a timestamped new one each time.", GetINIBool("OverwriteRestoreBackup", True)
CreateLabel Sheet, "Zip file to recover:", 10, 298, 100, 20
Set edt = UI.NewDropdown(Sheet)
edt.Style = 2
edt.Common.ControlName = "ZIPPathToRestore"
edt.Common.SetRect 110, 295, 350, 20
edt.Common.Hint = "Select the ZIP file (contains database + configuration files) that you want to restore"
BackupDirectoryEdit_OnChange Sheet.Common.ChildControl("BackupDirectory")
End Sub
Function GetFolderDesc(INILocation)
If INILocation = 1 Then
GetFolderDesc = "your My Music\MediaMonkey"
Else ' INILocation = 2
GetFolderDesc = "the MediaMonkey program"
End If
End Function
Dim DontTriggerTheEvent : DontTriggerTheEvent = False
Sub BackupDirectoryEdit_OnChange(Edit)
If DontTriggerTheEvent Then Exit Sub
Dim edt : Set edt = Edit.Common.TopParent.Common.ChildControl("ZIPPathToRestore")
ClearDropDown edt
If Edit.Text = "" Then Exit Sub
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(Edit.Text) Then Exit Sub
If Right(Edit.Text, 1) <> "\" Then
DontTriggerTheEvent = True
Edit.Text = Edit.Text & "\"
DontTriggerTheEvent = False
End If
Dim Folder : Set Folder = FSO.GetFolder(Edit.Text)
Dim fc : Set fc = Folder.Files
Dim icnt : icnt = 0
Dim f1 : For Each f1 in fc
icnt = icnt + 1
edt.AddItem f1.Name
If GetINIString("ZIPPathToRestore", "") = f1.Path Then edt.ItemIndex = icnt - 1
Next
End Sub
Sub BrowseBackupDirectory(Button)
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(DEFAULT_BACKUP_DIR) Then
FSO.CreateFolder DEFAULT_BACKUP_DIR
End If
Dim Ret : Ret = SDB.SelectFolder(Button.Common.TopParent.Common.ChildControl("BackupDirectory").Text, "Select folder for backups")
If Ret <> "" Then
Button.Common.TopParent.Common.ChildControl("BackupDirectory").Text = Ret
End If
End Sub
' **********************************
' SAVE Sheet MM FILES
' **********************************
Sub SaveSheetMMFiles(Sheet)
Sheet.Common.ChildControl("LocationOfDatabase").Text = Trim(Sheet.Common.ChildControl("LocationOfDatabase").Text)
If Sheet.Common.ChildControl("LocationOfDatabase").Text <> GetINIString("DBName_previous", "") Then
If Right(Sheet.Common.ChildControl("LocationOfDatabase").Text, 4) = ".mdb" Then
SetINIString "DBName", Sheet.Common.ChildControl("LocationOfDatabase").Text
SetOfflineWorker "ChangeLocationOfDatabase", True
SetOfflineWorker "MoveDatabaseToNewLocation", Sheet.Common.ChildControl("MoveDatabaseToNewLocation").Checked
SetOfflineWorker "KeepCopyCurrentDatabase", Sheet.Common.ChildControl("KeepCopyCurrentDatabase").Checked
Else
MsgBox "Location of the database file must end with file extension mdb!" & vbNewLine &"Also make sure that the path doesn't contain quotation marks." & vbNewLine & vbNewLine & "The database location hasn't been changed."
End If
End If
SetOfflineWorker "MoveConfigFile", Sheet.Common.ChildControl("MoveConfigFile").Checked
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists(Sheet.Common.ChildControl("BackupDirectory").Text) Then
SetINIString "BackupDirectory", Sheet.Common.ChildControl("BackupDirectory").Text
End If
SetOfflineWorker "CreateBackup", Sheet.Common.ChildControl("CreateBackup").Checked
If Sheet.Common.ChildControl("ZIPPathToRestore").Text <> "" Then
SetOfflineWorker "RestoreBackup", Sheet.Common.ChildControl("RestoreBackup").Checked
SetINIString "ZIPPathToRestore", Sheet.Common.ChildControl("BackupDirectory").Text & Sheet.Common.ChildControl("ZIPPathToRestore").Text
Else
SetOfflineWorker "RestoreBackup", False
End If
SaveCheckValue Sheet, "OverwriteRestoreBackup"
End Sub
' ******************************************************************************************************
' HELPER METHODS
' **********************************
Function GetINIBool(pName, pValueIfMissing)
If pValueIfMissing Then
If SDB.IniFile.StringValue(ScriptName, pName) = "False" Then
GetINIBool = False
Else
GetINIBool = True
End If
Else
If SDB.IniFile.StringValue(ScriptName, pName) = "True" Then
GetINIBool = True
Else
GetINIBool = False
End If
End If
End Function
Function GetINIString(pName, pValueIfMissing)
GetINIString = SDB.IniFile.StringValue(ScriptName, pName)
If GetINIString = "" Then
GetINIString = pValueIfMissing
End If
End Function
Sub SetINIString(pName, pValue)
SDB.IniFile.StringValue(ScriptName, pName) = pValue
End Sub
Function GetTreeVisibility(NodeName)
If INI.StringValue("Tree", NodeName) = "0" Then
GetTreeVisibility = False
Else
GetTreeVisibility = True
End If
End Function
Function SetTreeVisibility(NodeName, Visible)
If Visible Then
INI.StringValue("Tree", NodeName) = "1"
Else
INI.StringValue("Tree", NodeName) = "0"
End If
End Function
Function GetTreeExpanded(NodeName)
GetTreeExpanded = GetINIBool(NodeName & "_Expanded", False)
End Function
Function SetTreeExpanded(NodeName, Expanded)
SDB.IniFile.StringValue(ScriptName, NodeName & "_Expanded") = Expanded
End Function
Function CanNodeExpand(NodeName)
CanNodeExpand = True
If NodeCantExpand.Exists(NodeName) Then
If NodeCantExpand(NodeName) Then
CanNodeExpand = False
End If
End If
End Function
Function IsLibrarySubnode(NodeName)
IsLibrarySubnode = True
If NodeNoLibraryChild.Exists(NodeName) Then
If NodeNoLibraryChild(NodeName) Then
IsLibrarySubnode = False
End If
End If
End Function
Function xIf(Condition)
xIf = Condition
End Function
Sub SaveCheckValue(Sheet, CheckName)
SetINIString CheckName, Sheet.Common.ChildControl(CheckName).Checked
End Sub
Sub SaveTextValue(Sheet, CheckName)
SetINIString CheckName, Sheet.Common.ChildControl(CheckName).Text
End Sub
Function DoesPlaylistExist(PlaylistName)
DoesPlaylistExist = True
If SDB.PlaylistByTitle(PlaylistName).Id = 0 Then
DoesPlaylistExist = False
End If
End Function
Sub RandomiseNowPlaying
' TODO
End Sub
Function CreateCheckBox(pOwner, pCaption, pX, pY, pWidth, pHeight, pControlName, pHint, pChecked)
Set CreateCheckBox = SDB.UI.NewCheckBox(pOwner)
CreateCheckBox.Caption = pCaption
CreateCheckBox.Common.SetRect pX, pY, pWidth, pHeight
CreateCheckBox.Common.ControlName = pControlName
CreateCheckBox.Common.Hint = pHint
CreateCheckBox.Checked = pChecked
End Function
Function CreateButton(pOwner, pCaption, pX, pY, pWidth, pHeight, pControlName, pOnClickHandler)
Set CreateButton = SDB.UI.NewButton(pOwner)
CreateButton.Caption = pCaption
CreateButton.Common.SetRect pX, pY, pWidth, pHeight
CreateButton.Common.ControlName = pControlName
If pOnClickHandler <> "" Then
Script.RegisterEvent CreateButton.Common, "OnClick", pOnClickHandler
End If
End Function
Function CreateLabel(pOwner, pCaption, pX, pY, pWidth, pHeight)
Set CreateLabel = SDB.UI.NewLabel(pOwner)
CreateLabel.Common.SetRect pX, pY, pWidth, pHeight
CreateLabel.Caption = pCaption
End Function
Sub SetOfflineWorker(Key, State)
Dim WorkerArguments : Set WorkerArguments = SDB.Objects("WorkerArguments")
If WorkerArguments.Exists(Key) Then
WorkerArguments(Key) = State
Else
WorkerArguments.Add Key, State
End If
End Sub
Function GetOfflineWorker(Key)
Dim WorkerArguments : Set WorkerArguments = SDB.Objects("WorkerArguments")
If WorkerArguments.Exists(Key) Then
GetOfflineWorker = WorkerArguments(Key)
Else
GetOfflineWorker = False
End If
End Function
Function GetINIPath()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
GetINIPath = SDB.MyMusicPath & "MediaMonkey\MediaMonkey.ini"
If FSO.FileExists(GetINIPath) Then Exit Function
GetINIPath = SDB.ApplicationPath & "MediaMonkey.ini"
If FSO.FileExists(GetINIPath) Then Exit Function
GetINIPath = ""
End Function
Function GetINILocation()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(SDB.MyMusicPath & "MediaMonkey\MediaMonkey.ini") Then
GetINILocation = 1
ElseIf FSO.FileExists(SDB.ApplicationPath & "MediaMonkey.ini") Then
GetINILocation = 2
Else
GetINILocation = 0
End If
End Function
Function GetDBPath()
GetDBPath = SDB.Database.Path
'If SDB.IniFile.StringValue("System", "DBName") <> "" Then
' GetDBPath = SDB.IniFile.StringValue("System", "DBName")
'Else
' GetDBPath = SDB.MyMusicPath & "MediaMonkey\MediaMonkey.mdb"
'End If
End Function
Sub ClearDropDown(DropDown)
Dim i : For i = DropDown.ItemCount - 1 To 0 Step -1
DropDown.DeleteItem i
Next
DropDown.Text = ""
End Sub
Last edited by Teknojnky on Thu Feb 22, 2007 12:46 pm, edited 1 time in total.
New script: Last.FM Node Now with DJ Mode!
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
-
- Posts: 14163
- Joined: Sat Oct 25, 2003 7:57 am
- Location: (Texas)
- Contact:
i copied the code above.
pasted the whole code in to the tweak monkey config . vbs file over writing the old code with this new code.
upon closing of media monkey every time i close media monkey 2.5.5
it gives me this error.
every time same error.
did not check the line just posted this here.
pasted the whole code in to the tweak monkey config . vbs file over writing the old code with this new code.
upon closing of media monkey every time i close media monkey 2.5.5
it gives me this error.
every time same error.
- error #-2147024894 -
file: "C:\Program Files\MediaMonkey\Scripts\Auto\TweakMonkeyConfig.vbs",Line:134, Column: 8
did not check the line just posted this here.
roving cowboy / keith hall. My skins http://www.mediamonkey.com/forum/viewto ... =9&t=16724 for some help check on Monkey's helpful messages at http://www.mediamonkey.com/forum/viewto ... 4008#44008 MY SYSTEMS.1.Jukebox WinXp pro sp 3 version 3.5 gigabyte mb. 281 GHz amd athlon x2 240 built by me.) 2.WinXP pro sp3, vers 2.5.5 and vers 3.5 backup storage, shuttle 32a mb,734 MHz amd athlon put together by me.) 3.Dell demension, winxp pro sp3, mm3.5 spare jukebox.) 4.WinXp pro sp3, vers 3.5, dad's computer bought from computer store. )5. Samsung Galaxy A51 5G Android ) 6. amd a8-5600 apu 3.60ghz mm version 4 windows 7 pro bought from computer store.
EDIT: cowboy it appears you have the original OLD tweak monkey. you need to first disable that script file (rename .vbs to .bak) then install the 1.0 version @ http://home.scarlet.be/ruben.castelein/ ... key1.0.exe
Then you can copy/paste my modded version into the tweakmonkey.vbs (note the file name has changed from the original).
It appears the reason for the error is because you do not have the auxillary scripts that get installed via steegy's installer.
check to make sure that line did not get wrapped to the next line.
should be one line:
Then you can copy/paste my modded version into the tweakmonkey.vbs (note the file name has changed from the original).
It appears the reason for the error is because you do not have the auxillary scripts that get installed via steegy's installer.
check to make sure that line did not get wrapped to the next line.
should be one line:
Code: Select all
WshShell.Run """" & SDB.ApplicationPath & "Scripts\Auto\TweakMonkey\offlineworker.vbs" & """" _
New script: Last.FM Node Now with DJ Mode!
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
Last.fm + MediaMonkey = Scrobbler DJ!
Tag with MusicBrainz ~ Get Album Art!
Tweak the Monkey! ~ My Scripts Page
-
- Posts: 14163
- Joined: Sat Oct 25, 2003 7:57 am
- Location: (Texas)
- Contact:
it might very well be the old file since i have not got it in almost a year?
i'll get the updated version.
i just had the old version .. i just over installed it to the folders.
did not remove the older files don't know what they were but it stopped
the error on closing now.
i'll get the updated version.
i just had the old version .. i just over installed it to the folders.
did not remove the older files don't know what they were but it stopped
the error on closing now.
roving cowboy / keith hall. My skins http://www.mediamonkey.com/forum/viewto ... =9&t=16724 for some help check on Monkey's helpful messages at http://www.mediamonkey.com/forum/viewto ... 4008#44008 MY SYSTEMS.1.Jukebox WinXp pro sp 3 version 3.5 gigabyte mb. 281 GHz amd athlon x2 240 built by me.) 2.WinXP pro sp3, vers 2.5.5 and vers 3.5 backup storage, shuttle 32a mb,734 MHz amd athlon put together by me.) 3.Dell demension, winxp pro sp3, mm3.5 spare jukebox.) 4.WinXp pro sp3, vers 3.5, dad's computer bought from computer store. )5. Samsung Galaxy A51 5G Android ) 6. amd a8-5600 apu 3.60ghz mm version 4 windows 7 pro bought from computer store.
Old version of TweakMonkey
I'm new to the forums, and new to Media Monkey. I was wondering if someone could tell me where to get the old version of TweakMonkey that I've seen mentioned, so that I won't get the error messages when I shut down MM.
Thanks.
Thanks.
Here's the older version: http://www.mediamonkey.com/forum/viewto ... 8729#48729
(The new version should work fine in MM3 (in alpha phase))
(The new version should work fine in MM3 (in alpha phase))
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Thanks Steegy
Thanks Steegy. Appreciate it. I'm new to Media Monkey. When I first got going I went script crazy. I've actually uninstalled most of them, but this one is really useful. Is there anywhere I can donate? I'm not a programmer, and don't want to leech. Let me know.
Just spread your love over the MM communityIs there anywhere I can donate?
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).
Hey
Can someone please say if the access violations have been fixed in MM3?
Thanks
Steegy
Can someone please say if the access violations have been fixed in MM3?
Thanks
Steegy
Extensions: ExternalTools, ExtractFields, SongPreviewer, LinkedTracks, CleanImport, and some other scripts (Need Help with Addons > List of All Scripts).