View Manager v1.5 (08-10-08) [MM3]
Posted: Tue Aug 26, 2008 2:59 am
No Longer Available
The Music Manager for Serious Collectors
http://www.mediamonkey.com/forum/
Thank youMoDementia wrote:New Version
' 26-08-08 Version 1.3
' Added None (Show All Tracks)
Actually, I think you can solve this by using the OnClickFunc on the Filters-menu, like this:MoDementia wrote:Not without consequences.
There is no trigger for when filters are added or deleted.
The table would have to be interrogated every 30secs-1min to see if it had changed or on every play/selection which would be a waste of processing time given how rarely these are added / deleted.
Code: Select all
Set FilterMnu = SDB.UI.AddMenuItemSub(SubMnu,1,-1)
FilterMnu.Caption = "Filters"
FilterMnu.UseScript = Script.ScriptPath
FilterMnu.OnClickFunc = "CreateFilterMenus"Code: Select all
Sub CreateFilterMenus(OnMnu)
Set iter = SDB.Database.OpenSQL("SELECT ID, Name FROM Filters ORDER BY Name")
Do While NOT iter.EOF
Set Mnu = SDB.UI.AddMenuItem(OnMnu,2,-1)
Mnu.Caption = iter.StringByIndex(1) & " (" & iter.StringByIndex(0) & ")"
Mnu.UseScript = Script.ScriptPath
Mnu.IconIndex = SDB.RegisterIcon("Scripts\View Manager\Icons\table_refresh.ico",0)
Script.RegisterEvent Mnu, "OnClick", "btnClickFilter"
iter.Next
Loop
Set iter = Nothing
End subCode: Select all
Sub CreateFilterMenus(OnMnu)
Call DestroyFilterMenus
Set StringList = SDB.NewStringList
Set iter = SDB.Database.OpenSQL("SELECT ID, Name FROM Filters ORDER BY Name")
Do While NOT iter.EOF
Set Mnu = SDB.UI.AddMenuItem(OnMnu,2,-1)
Mnu.Caption = iter.StringByIndex(1) & " (" & iter.StringByIndex(0) & ")"
Mnu.UseScript = Script.ScriptPath
Mnu.IconIndex = SDB.RegisterIcon("Scripts\View Manager\Icons\table_refresh.ico",0)
Script.RegisterEvent Mnu, "OnClick", "btnClickFilter"
Set SDB.Objects("Filter" & iter.StringByIndex(0)) = Mnu
StringList.Add "Filter" & iter.StringByIndex(0)
iter.Next
Loop
Set iter = Nothing
Set SDB.Objects("VMFilterList") = StringList
End sub
Sub DestroyFilterMenus
Set StringList = SDB.Objects("VMFilterList")
If NOT StringList Is Nothing Then
For xCounter = 0 to StringList.Count - 1
ThisObjectText = StringList.Item(xCounter)
Set Mnu = SDB.Objects(ThisObjectText)
Mnu.Checked = False
Mnu.Visible = False
Script.UnRegisterEvents Mnu
Set Mnu = Nothing
Set SDB.Objects(ThisObjectText) = Nothing
Next
End If
End Sub
Code: Select all
SDB.IniFile.IntValue("ViewManager","FilterCount")=SDB.Database.OpenSQL("SELECT Count(*) FROM Filters").valuebyindex(0)Code: Select all
Sub CreateFilterMenus(OnMnu)
FilterCount=SDB.Database.OpenSQL("SELECT Count(*) FROM Filters").valuebyindex(0)
If Not SDB.IniFile.IntValue("ViewManager","FilterCount")=FilterCount Then Exit Sub
Call DestroyFilterMenus
Set StringList = SDB.NewStringList
Set iter = SDB.Database.OpenSQL("SELECT ID, Name FROM Filters ORDER BY Name")
Do While NOT iter.EOF
Set Mnu = SDB.UI.AddMenuItem(OnMnu,2,-1)
Mnu.Caption = iter.StringByIndex(1) & " (" & iter.StringByIndex(0) & ")"
Mnu.UseScript = Script.ScriptPath
Mnu.IconIndex = SDB.RegisterIcon("Scripts\View Manager\Icons\table_refresh.ico",0)
Script.RegisterEvent Mnu, "OnClick", "btnClickFilter"
Set SDB.Objects("Filter" & iter.StringByIndex(0)) = Mnu
StringList.Add "Filter" & iter.StringByIndex(0)
iter.Next
Loop
Set iter = Nothing
Set SDB.Objects("VMFilterList") = StringList
SDB.IniFile.IntValue("ViewManager","FilterCount")=FilterCount
End sub