Hallo.
In diesem Thread sollen Codebeispiele für mAirList-Script gesammelt werden, bis es eine Dokumentation gibt. mAirListScript wurde mit den Pascal Script Komponenten von RemObjects (
www.remobjects.com) realisiert. Die Syntax ist also die von Pascal: (siehe
http://de.wikipedia.org/wiki/Pascal_%28Programmiersprache%29). Dabei stehen für die Manipulation der Playlist usw. objektorientierte Strukturen zur Verfügung, realisiert durch Delphi-ähnliche Interfaces. Derer gibt es derzeit zwei. Über das eine lässt sich die Playlist selbst manipulieren, über das andere die einzelnen Playlist-Einträge.
(Stand: mAirList 1.5.15)
type
IPlaylistItem = interface
function GetArtist: string;
procedure SetArtist(iValue: string);
function GetTitle: string;
procedure SetTitle(iValue: string);
function GetComment: string;
procedure SetComment(iValue: string);
function GetCommentExpanded: boolean;
procedure SetCommentExpanded(iValue: boolean);
function GetDuration: int64;
procedure SetDuration(iValue: int64);
function GetEffectiveEnd: int64;
function GetEffectiveDuration: int64;
function GetEndType: string;
procedure SetEndType(iValue: string);
function GetColor: TColor;
procedure SetColor(iValue: TColor);
function GetDisabled: boolean;
procedure SetDisabled(iValue: boolean);
function GetDatabaseID: integer;
procedure SetDatabaseID(iValue: integer);
function GetStartTime: TDateTime;
procedure SetStartTime(iValue: TDateTime);
function GetStartTimeType: TStartTimeType;
procedure SetStartTimeType(iValue: TStartTimeType);
function GetNoBacktiming: boolean;
procedure SetNoBacktiming(iValue: boolean);
function GetLastPlayed: TDateTime;
procedure SetLastPlayed(iValue: TDateTime);
function GetFixTime: TDateTime;
procedure SetFixTime(iValue: TDateTime);
function GetEditableProperties: TStrings;
procedure SetEditableProperties(iValue: TStrings);
function GetProperty(iName: string): string;
procedure SetProperty(iName: string; iValue: string);
function GetInfo: TStringList;
function GetXMLNodeName: string;
function GetOptions: TPlaylistItemOptions;
procedure LoadTags;
procedure SaveTags;
procedure BeginUpdate;
procedure EndUpdate;
function GetXML: string;
end;
IPlaylist = interface
function GetCount: integer;
function GetItem(iIndex: integer): IPlaylistItem;
function GetAutomation: boolean;
procedure SetAutomation(iValue: boolean);
procedure AutomationPlay;
procedure AutomationStop;
procedure AutomationNext;
function GetPlayerCount: integer;
function GetPlayerOfItem(iItem: IPlaylistItem): integer;
function ErrorCheck: boolean;
end;
Die Bedeutung der Funktionen ist weitesgehend selbsterklärend. Außerdem gibt es noch die folgenden globalen Funktionen:
procedure SystemLog(iMessage: string);
procedure RunScript(iFilename: string);
function Playlist(iIndex: integer): IPlaylist;
function CurrentPlaylist: IPlaylist;
function GetPlaylistCount: integer;
function SelectPlaylist(iIndex: integer): boolean;
Über CurrentPlaylist lässt sich auf die "aktive" Playlist zugreifen, die man mit SelectPlaylist auswählen kann. Oder man wählt direkt mit Playlist() eine der Playlists aus. Die meisten von euch haben aber vermutlich eh nur eine Playlist, oder? :) SystemLog schreibt einen Eintrag in die Log-Liste ganz unten im Hauptfenster. RunScript führt ein weiteres Script aus.
Torben
PS: Ihr dürft natürlich auch gerne eure selbstgeschriebenen Scripte hier reinstellen!