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.


The biggest plugin in space...