Index: totemIGMPControls.idl
===================================================================
--- totemIGMPControls.idl	(revision 3922)
+++ totemIGMPControls.idl	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006
+ *  Copyright © 2006-2007, Bastien Nocera <hadess@hadess.net
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -20,28 +20,32 @@
  */
 
 #include "nsISupports.idl"
+#include "totemIGMPMedia.idl"
 
-/**
- * totemIGMPControls interface
- * 
- * @status: EXTERNAL
- * XXX incomplete
- */
 [scriptable, uuid(07f100ba-1149-40b4-8086-849f346cd6fb)]
 interface totemIGMPControls : nsISupports
 {
-  /**
-   * Pause playing.
-   */
+  /* Documentation at
+   * http://msdn.microsoft.com/library/en-us/wmpsdk11/mmp_sdk/controlsobject.asp */
+  readonly attribute long audioLanguageCount;
+  attribute long currentAudioLanguage;
+  attribute long currentAudioLanguageIndex;
+  attribute totemIGMPMedia currentItem;
+  attribute long currentMarker;
+  attribute double currentPosition;
+  readonly attribute ACString currentPositionString;
+  attribute ACString currentPositionTimecode;
+  void fastForward();
+  void fastReverse();
+  AUTF8String getAudioLanguageDescription (in long index);
+  long getAudioLanguageID (in long index);
+  AUTF8String getLanguageName (in long LCID);
+  boolean isAvailable (in ACString name);
+  void next ();
   void pause ();
-  
-  /**
-   * Start playing.
-   */
   void play ();
-  
-  /**
-   * Stop playing.
-   */
+  void playItem (in totemIGMPMedia theMediaItem);
+  void previous ();
+  void step (in long frameCount);
   void stop ();
 };
Index: totemIGMPClosedCaption.idl
===================================================================
--- totemIGMPClosedCaption.idl	(revision 0)
+++ totemIGMPClosedCaption.idl	(revision 0)
@@ -0,0 +1,7 @@
+
+#include "nsISupports.idl"
+
+[scriptable, uuid(6c47177a-d2cf-46f4-9d73-68589d9acaf5)]
+interface totemIGMPClosedCaption : nsISupports
+{
+};
Index: totemIGMPNetwork.idl
===================================================================
--- totemIGMPNetwork.idl	(revision 0)
+++ totemIGMPNetwork.idl	(revision 0)
@@ -0,0 +1,6 @@
+#include "nsISupports.idl"
+
+[scriptable, uuid(dff4b554-d1fb-4291-b390-d7a707a2af42)]
+interface totemIGMPNetwork : nsISupports
+{
+};
Index: totemIBasicPlayer.idl
===================================================================
--- totemIBasicPlayer.idl	(revision 3922)
+++ totemIBasicPlayer.idl	(working copy)
@@ -1,7 +1,7 @@
 /* Totem Mozilla plugin
  *
- * Copyright (C) <2004> Bastien Nocera <hadess@hadess.net>
- * Copyright (C) <2002> David A. Schleef <ds@schleef.org>
+ * Copyright © 2004-2007, Bastien Nocera <hadess@hadess.net>
+ * Copyright © 2002, David A. Schleef <ds@schleef.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
Index: Makefile.am
===================================================================
--- Makefile.am	(revision 3922)
+++ Makefile.am	(working copy)
@@ -8,7 +8,12 @@
 
 GMP_IDLS = \
 	totemIGMPControls.idl		\
+	totemIGMPSettings.idl		\
+	totemIGMPMedia.idl		\
 	totemIGMPPlayer.idl		\
+	totemIGMPPlaylist.idl		\
+	totemIGMPNetwork.idl		\
+	totemIGMPClosedCaption.idl	\
 	$(NULL)
 
 NARROWSPACE_IDLS = \
Index: totemIGMPPlayer.idl
===================================================================
--- totemIGMPPlayer.idl	(revision 3922)
+++ totemIGMPPlayer.idl	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006
+ *  Copyright © 2006-2007, Bastien Nocera <hadess@hadess.net
  *
  *  This library is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU Lesser General Public
@@ -15,32 +15,88 @@
  *  License along with this library; if not, write to the
  *  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  *  Boston, MA 02111-1307, USA.
- *
- *  $Id: totemIGMPPlayer.idl,v 1.1 2006/08/11 13:25:44 chpe Exp $
  */
 
 #include "nsISupports.idl"
+#include "totemIGMPMedia.idl"
+#include "totemIGMPPlaylist.idl"
+#include "totemIGMPNetwork.idl"
+#include "totemIGMPSettings.idl"
+#include "totemIGMPClosedCaption.idl"
 
 interface totemIGMPControls;
 
-/**
- * totemIGMPPlayer interface
- * 
- * The interface containing the core plugin interfaces from WMP.
- * 
- * @status: EXTERNAL
- * XXX incomplete
- */
-[scriptable, uuid(e1b5b905-6833-4386-9acb-1e1537e7f7a2)]
+[scriptable, uuid(3ef61113-fc45-470b-a222-f9d3d43d9314)]
 interface totemIGMPPlayer : nsISupports
 {
-  /* Properties */
+  // FIXME how do we handle events? AudioLanguageChange(LangID)
+  // Buffering (Start)
+// FIXME  readonly attribute totemIGMPCdromCollection cdromCollection;
 
-  /**
-   * Gets the Controls object
-   */
+  //FIXME CdromMediaChange(CdromNum) event?
+  //Click(nButton, nShiftState, fX, fY)
+  void close ();
+  readonly attribute totemIGMPClosedCaption closedCaption;
   readonly attribute totemIGMPControls controls;
-
-
-  /* Methods */
+  //FIXME CurrentItemChange()
+  attribute totemIGMPMedia currentMedia;
+  //FIXME CurrentMediaItemAvailable(bstrItemName)
+  attribute totemIGMPPlaylist currentPlaylist;
+  //FIXME CurrentPlaylistChange(change)
+  //FIXME CurrentPlaylistItemAvailable(bstrItemName)
+  //FIXME DomainChange(strDomain)
+  //FIXME DoubleClick(nButton, nShiftState, fX, fY)
+  //readonly attribute totemIGMPDVD dvd;
+  attribute boolean enableContextMenu;
+  attribute boolean enabled;
+//  readonly attribute totemIGMPError error;
+  //FIXME Error()
+  attribute boolean fullScreen;
+  attribute boolean isOnline;
+  readonly attribute boolean isRemote;
+  //KeyDown(nKeyCode, nShiftState)
+  //KeyPress(nKeyAscii)
+  //KeyUp(nKeyCode, nShiftState)
+  void launchURL (in AUTF8String URL);
+  //MarkerHit(MarkerNum)
+  //MediaChange(Item)
+  //readonly attribute totemIGMPMediaCollection mediaCollection;
+  //MediaCollectionAttributeStringAdded(bstrAttribName, bstrAttribVal)
+  //MediaCollectionAttributeStringChanged(bstrAttribName, bstrOldAttribVal, bstrNewAttribVal)
+  //MediaCollectionAttributeStringRemoved(bstrAttribName, bstrAttribVal)
+  //MediaCollectionChange()
+  //MediaCollectionMediaAdded(pdispMedia)
+  //MediaCollectionMediaRemoved(pdispMedia)
+  //MediaError(pMediaObject)
+  //ModeChange(ModeName, NewValue)
+  //MouseDown(nButton, nShiftState, fX, fY)
+  //MouseMove(nButton, nShiftState, fX, fY)
+  //MouseUp(nButton, nShiftState, fX, fY)
+  readonly attribute totemIGMPNetwork network;
+  totemIGMPMedia newMedia (in AUTF8String URL);
+  totemIGMPPlaylist newPlaylist (in AUTF8String name, in AUTF8String URL);
+  void openPlayer (in AUTF8String URL);
+  //OpenPlaylistSwitch(pItem)
+  readonly attribute long openState;
+  //FIXME can we add C-style enums?
+  //OpenStateChange(NewState)
+  //readonly attribute totemIGMPPlayerApplication playerApplication;
+  //PlaylistChange(Playlist, change)
+  //readonly attribute totemIGMPPlaylistCollection playlistCollection;
+  //PlaylistCollectionChange()
+  //PlaylistCollectionPlaylistAdded(bstrPlaylistName)
+  //PlaylistCollectionPlaylistRemoved(bstrPlaylistName)
+  readonly attribute long playState;
+  //PlayStateChange(NewState)
+  //PositionChange(oldPosition, newPosition)
+  //ScriptCommand(scType, Param)
+  readonly attribute totemIGMPSettings settings;
+  readonly attribute AUTF8String status;
+  //StatusChange()
+  attribute boolean stretchToFit;
+  //StringCollectionChange(pdispStringCollection, change, lCollectionIndex)
+  attribute ACString uiMode;
+  attribute AUTF8String URL;
+  readonly attribute ACString versionInfo;
+  attribute boolean windowlessVideo;
 };
Index: totemIGMPMedia.idl
===================================================================
--- totemIGMPMedia.idl	(revision 0)
+++ totemIGMPMedia.idl	(revision 0)
@@ -0,0 +1,46 @@
+/*
+ *  Copyright © 2007, Bastien Nocera <hadess@hadess.net
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the
+ *  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *  Boston, MA 02111-1307, USA.
+ */
+
+#include "nsISupports.idl"
+
+[scriptable, uuid(aa89d4c1-4d3e-4a9d-9c5e-657112b2335d)]
+interface totemIGMPMedia : nsISupports
+{
+  /* Documentation at
+   * http://msdn.microsoft.com/library/en-us/wmpsdk11/mmp_sdk/mediaobject.asp */
+  attribute long attributeCount;
+  readonly attribute double duration;
+  readonly attribute ACString durationString;
+/* FIXME  readonly attribute ErrorItem error; */
+  long getAttributeCountByType (in AUTF8String name, in ACString language);
+  AUTF8String getAttributeName (in long index);
+  AUTF8String getItemInfo (in AUTF8String name);
+  AUTF8String getItemInfoByAtom (in long index);
+  AUTF8String getMarkerName (in long markerNum);
+  double getMarkerTime (in long markerNum);
+  readonly attribute long imageSourceHeight;
+  readonly attribute long imageSourceWidth;
+  boolean isIdentical (in totemIGMPMedia media);
+/* FIXME  boolean isMemberOf (in totemIGMPPlaylist playlist); */
+  boolean isReadOnlyItem (in AUTF8String attributeName);
+  readonly attribute long markerCount;
+  attribute AUTF8String name;
+  void setItemInfo (in AUTF8String attributeName, in AUTF8String value);
+  readonly attribute AUTF8String sourceURL;
+};
Index: totemIGMPSettings.idl
===================================================================
--- totemIGMPSettings.idl	(revision 0)
+++ totemIGMPSettings.idl	(revision 0)
@@ -0,0 +1,43 @@
+/*
+ *  Copyright © 2007, Bastien Nocera <hadess@hadess.net
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the
+ *  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *  Boston, MA 02111-1307, USA.
+ */
+
+#include "nsISupports.idl"
+
+[scriptable, uuid(29bef4c8-124b-418f-a47a-64411a6b8f66)]
+interface totemIGMPSettings : nsISupports
+{
+  /* Documentation at
+   * http://msdn.microsoft.com/library/en-us/wmpsdk11/mmp_sdk/settingsobject.asp */
+  attribute boolean autoStart;
+  attribute long balance;
+  attribute AUTF8String baseURL;
+  readonly attribute long defaultAudioLanguage;
+  attribute AUTF8String defaultFrame;
+  attribute boolean enableErrorDialogs;
+  boolean getMode (in ACString modeName);
+  attribute boolean invokeURLs;
+  boolean isAvailable (in ACString name);
+  readonly attribute ACString mediaAccessRights;
+  attribute boolean mute;
+  attribute long playCount;
+  attribute double rate;
+  boolean requestMediaAccessRights (in ACString access);
+  void setMode (in ACString modeName, in boolean state);
+  attribute long volume;
+};
Index: totemIGMPPlaylist.idl
===================================================================
--- totemIGMPPlaylist.idl	(revision 0)
+++ totemIGMPPlaylist.idl	(revision 0)
@@ -0,0 +1,44 @@
+/*
+ *  Copyright © 2007, Bastien Nocera <hadess@hadess.net
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the
+ *  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ *  Boston, MA 02111-1307, USA.
+ */
+
+#include "nsISupports.idl"
+#include "totemIGMPMedia.idl"
+
+[scriptable, uuid(81490ff4-5e64-433a-aee1-28dcf0a09d39)]
+interface totemIGMPPlaylist : nsISupports
+{
+  /* Documentation at
+   * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmpsdk11/mmp_sdk/playlistobject.asp */
+  void appendItem (in totemIGMPMedia item);
+  readonly attribute long attributeCount;
+  /* Those should match
+   * readonly attribute attributeName (in long index) */
+  AUTF8String attributeName (in long index);
+  AUTF8String getattributeName (in long index);
+  readonly attribute long count;
+  AUTF8String getItemInfo (in AUTF8String name);
+  void insertItem (in long index, in totemIGMPMedia item);
+  boolean isIdentical (in totemIGMPPlaylist playlist);
+  totemIGMPMedia item (in long index);
+  void moveItem (in long oldIndex, in long newIndex);
+  attribute AUTF8String name;
+  void removeItem (in totemIGMPMedia item);
+  void setItemInfo (in AUTF8String name, in AUTF8String value);
+};
+
