Platforms to show: All Mac Windows Linux Cross-Platform
/Mac64bit/Media Library/Media Library
Required plugins for this example: MBS MacBase Plugin, MBS Mac64bit Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Mac64bit/Media Library/Media Library
This example is the version from Mon, 11th Mar 2018.
Project "Media Library.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class MainWindow Inherits Window
Control List Inherits Listbox
ControlInstance List Inherits Listbox
EventHandler Sub ExpandRow(row As Integer)
dim v as Variant = me.RowTag(row)
if v isa MLMediaSourceMBS then
dim source as MLMediaSourceMBS = v
dim group as MLMediaGroupMBS = source.rootMediaGroup
if group <> nil then
List.AddFolder group.Name
List.RowTag(List.LastIndex) = group
end if
AddProperties source.Properties
Return
end if
if v isa MLMediaGroupMBS then
dim group as MLMediaGroupMBS = v
dim childGroups() as MLMediaGroupMBS = group.childGroups
for each childgroup as MLMediaGroupMBS in childGroups
List.AddFolder childgroup.Name
List.RowTag(List.LastIndex) = childgroup
// trigger loading
call childgroup.childGroups
call childgroup.mediaObjects
next
dim mediaObjects() as MLMediaObjectMBS = group.mediaObjects
for each mediaObject as MLMediaObjectMBS in mediaObjects
List.AddFolder mediaObject.Name
List.RowTag(List.LastIndex) = mediaObject
next
AddProperties group.Properties
return
end if
if v isa MLMediaObjectMBS then
dim item as MLMediaObjectMBS = v
List.AddRow "Name", item.Name
List.AddRow "ContentType", item.ContentType
List.AddRow "FileSize", str(item.FileSize, "0")
List.AddRow "MediaSourceIdentifier", item.MediaSourceIdentifier
List.AddRow "ModificationDate", item.ModificationDate.SQLDateTime
List.AddRow "OriginalURL", item.OriginalURL
List.AddRow "ThumbnailURL", item.ThumbnailURL
List.AddRow "URL", item.URL
dim ArtworkImage as NSImageMBS = item.ArtworkImage
if ArtworkImage <> nil then
list.AddRow "ArtworkImage", "Image"
List.RowTag(List.LastIndex) = item.ArtworkImage
end if
AddProperties item.Properties
return
end if
if v isa NSImageMBS then
dim n as NSImageMBS = v
dim p as new PictureWindow
p.Title = List.cell(row, 0)
p.Backdrop = n.CopyPictureWithMask
p.show
end if
End EventHandler
End Control
Control LoadSourcesTimer Inherits Timer
ControlInstance LoadSourcesTimer Inherits Timer
EventHandler Sub Action()
dim sources as Dictionary = MediaLibrary.mediaSources
if sources <> nil then
for each key as Variant in sources.keys
dim name as string = key
dim source as MLMediaSourceMBS = sources.Value(key)
'dim p as Dictionary = source.Properties
List.AddFolder source.mediaSourceIdentifier
List.RowTag(List.LastIndex) = source
// trigger loading
call source.rootMediaGroup
next
me.Mode = timer.ModeOff
end if
End EventHandler
End Control
EventHandler Sub Open()
if not MLMediaLibraryMBS.Available then
MsgBox "Please run as 64-bit Mac app."
quit
else
dim Options as new Dictionary
MediaLibrary = new MLMediaLibraryMBS(Options)
// trigger loading
call MediaLibrary.mediaSources
LoadSourcesTimer.Mode = timer.ModeMultiple
end if
End EventHandler
Sub AddProperties(p as Dictionary)
for each key as Variant in p.keys
dim vv as Variant = p.Value(key)
if vv isa NSImageMBS then
list.AddRow key.StringValue, "Image"
List.RowTag(List.LastIndex) = vv
else
try
List.AddRow key.StringValue, vv.StringValue
catch r as runtimeException
// ignore?
end try
end if
next
End Sub
Property MediaLibrary As MLMediaLibraryMBS
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
Class PictureWindow Inherits Window
End Class
End Project
See also:
The items on this page are in the following plugins: MBS Mac64bit Plugin.