[banshee] [Banshee.Moblin] Stubbed out a Moblin extension



commit c63299ed08e86b09197072c9ec97190602a5022e
Author: Aaron Bockover <abockover novell com>
Date:   Thu Oct 8 18:20:34 2009 -0400

    [Banshee.Moblin] Stubbed out a Moblin extension
    
    Nothing really functional here yet. Moving things over from
    Cubano. First goal is to write the media panel that integrates
    into the main Moblin toolbar. Pass --enable-moblin to see
    stuff, but there's really nothing to see yet. Stubs.

 build/build.environment.mk                         |    1 +
 build/m4/banshee/moblin.m4                         |   11 ++
 configure.ac                                       |    5 +
 .../Banshee.Moblin/Banshee.Moblin.addin.xml        |   23 ++++
 .../Banshee.Moblin/Banshee.Moblin.csproj           |   96 ++++++++++++++++
 .../Banshee.Moblin/MediaPanelContents.cs           |   38 +++++++
 .../Banshee.Moblin/Banshee.Moblin/MoblinService.cs |  116 ++++++++++++++++++++
 src/Extensions/Banshee.Moblin/Makefile.am          |   21 ++++
 .../Banshee.Moblin/Mutter/PanelClient.cs           |  106 ++++++++++++++++++
 src/Extensions/Banshee.Moblin/Mutter/PanelGtk.cs   |   65 +++++++++++
 src/Extensions/Makefile.am                         |    1 +
 11 files changed, 483 insertions(+), 0 deletions(-)
---
diff --git a/build/build.environment.mk b/build/build.environment.mk
index 6bce1c1..76df206 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -125,6 +125,7 @@ REF_EXTENSION_DAAP = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_ICSHARP_ZIP_LIB) $(
 REF_EXTENSION_FILESYSTEMQUEUE = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_INTERNETRADIO = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_MINIMODE = $(LINK_BANSHEE_THICKCLIENT_DEPS)
+REF_EXTENSION_MOBLIN = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_MULTIMEDIAKEYS = $(LINK_BANSHEE_SERVICES_DEPS)
 REF_EXTENSION_NOTIFICATIONAREA = $(LINK_BANSHEE_THICKCLIENT_DEPS)
 REF_EXTENSION_PLAYER_MIGRATION = $(LINK_BANSHEE_SERVICES_DEPS)
diff --git a/build/m4/banshee/moblin.m4 b/build/m4/banshee/moblin.m4
new file mode 100644
index 0000000..c6ee398
--- /dev/null
+++ b/build/m4/banshee/moblin.m4
@@ -0,0 +1,11 @@
+AC_DEFUN([BANSHEE_CHECK_MOBLIN],
+[
+	AC_ARG_ENABLE(moblin, AC_HELP_STRING([--enable-moblin], [Enable Moblin integration]), , enable_moblin="no")
+
+	if test "x$enable_moblin" = "xyes"; then
+		AM_CONDITIONAL(HAVE_MOBLIN, true)
+	else
+		AM_CONDITIONAL(HAVE_MOBLIN, false)
+	fi
+])
+
diff --git a/configure.ac b/configure.ac
index 7458282..7c291a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -141,6 +141,9 @@ BANSHEE_CHECK_REMOTE_AUDIO
 dnl MonoTorrent support (optional)
 BANSHEE_CHECK_TORRENT
 
+dnl Moblin integration (optional)
+BANSHEE_CHECK_MOBLIN
+
 dnl i18n
 SHAMROCK_CONFIGURE_I18N($PACKAGE)
 
@@ -275,6 +278,7 @@ src/Extensions/Banshee.FileSystemQueue/Makefile
 src/Extensions/Banshee.InternetRadio/Makefile
 src/Extensions/Banshee.Lastfm/Makefile
 src/Extensions/Banshee.MiniMode/Makefile
+src/Extensions/Banshee.Moblin/Makefile
 src/Extensions/Banshee.MultimediaKeys/Makefile
 src/Extensions/Banshee.NotificationArea/Makefile
 src/Extensions/Banshee.NowPlaying/Makefile
@@ -321,6 +325,7 @@ ${PACKAGE}-${VERSION}
     DAAP Support:      ${enable_daap}
     Podcast Support:   ${enable_podcast}
     Boo Scripting:     ${enable_boo}
+    Moblin Support:    ${enable_moblin}
 
   Build/Development:
     Unit Tests:        ${do_tests} (requires nunit >= ${NUNIT_REQUIRED})
diff --git a/src/Extensions/Banshee.Moblin/Banshee.Moblin.addin.xml b/src/Extensions/Banshee.Moblin/Banshee.Moblin.addin.xml
new file mode 100644
index 0000000..57f48d3
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Banshee.Moblin.addin.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Addin 
+    id="Banshee.Moblin"
+    version="1.0"
+    compatVersion="1.0"
+    copyright="© 2009 Novell Inc. Licensed under the MIT X11 license."
+    name="Moblin Support"
+    category="User Interface"
+    description="Provides Moblin integration, including a custom media panel."
+    author="Aaron Bockover"
+    url="http://banshee-project.org/";
+    defaultEnabled="true">
+
+  <Dependencies>
+    <Addin id="Banshee.Services" version="1.0"/>
+    <Addin id="Banshee.ThickClient" version="1.0"/>
+  </Dependencies>
+  
+  <Extension path="/Banshee/ServiceManager/Service">
+    <Service class="Banshee.Moblin.MoblinService"/>
+  </Extension>
+   
+</Addin>
diff --git a/src/Extensions/Banshee.Moblin/Banshee.Moblin.csproj b/src/Extensions/Banshee.Moblin/Banshee.Moblin.csproj
new file mode 100644
index 0000000..1fda05d
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Banshee.Moblin.csproj
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <ProjectGuid>{74B2E4CC-2701-4C8B-A11D-6E4443F4B21B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <UseParentDirectoryAsNamespace>true</UseParentDirectoryAsNamespace>
+    <AssemblyName>Banshee.Moblin</AssemblyName>
+    <SchemaVersion>2.0</SchemaVersion>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <SourceAnalysisOverrideSettingsFile>C:\Documents and Settings\Administrator\Application Data\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\bin</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+    <RootNamespace>Banshee.Moblin</RootNamespace>
+    <AssemblyOriginatorKeyFile>.</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <CustomCommands>
+      <CustomCommands>
+        <Command type="Build" command="make" workingdir="${SolutionDir}" />
+        <Command type="Execute" command="make run" workingdir="${SolutionDir}" />
+      </CustomCommands>
+    </CustomCommands>
+    <OutputPath>bin\Debug</OutputPath>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Windows|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\Windows</OutputPath>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>false</Optimize>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\Core\Banshee.Core\Banshee.Core.csproj">
+      <Project>{2ADB831A-A050-47D0-B6B9-9C19D60233BB}</Project>
+      <Name>Banshee.Core</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Core\Banshee.Services\Banshee.Services.csproj">
+      <Project>{B28354F0-BA87-44E8-989F-B864A3C7C09F}</Project>
+      <Name>Banshee.Services</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Core\Banshee.ThickClient\Banshee.ThickClient.csproj">
+      <Project>{AC839523-7BDF-4AB6-8115-E17921B96EC6}</Project>
+      <Name>Banshee.ThickClient</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\Libraries\Hyena\Hyena.csproj">
+      <Project>{95374549-9553-4C1E-9D89-667755F90E12}</Project>
+      <Name>Hyena</Name>
+    </ProjectReference>
+    <Reference Include="glib-sharp" />
+    <Reference Include="Mono.Posix" />
+    <Reference Include="MonoPosixHelper" />
+    <Reference Include="NDesk.DBus" />
+    <Reference Include="NDesk.DBus.GLib" />
+    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+  </ItemGroup>
+  <ItemGroup>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Banshee.Moblin.addin.xml">
+      <LogicalName>Banshee.Moblin.addin.xml</LogicalName>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ProjectExtensions>
+    <MonoDevelop>
+      <Properties>
+        <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="./Makefile.am">
+          <BuildFilesVar Sync="true" Name="SOURCES" />
+          <DeployFilesVar />
+          <ResourcesVar Sync="true" Name="RESOURCES" />
+          <OthersVar />
+          <GacRefVar />
+          <AsmRefVar />
+          <ProjectRefVar />
+        </MonoDevelop.Autotools.MakefileInfo>
+      </Properties>
+    </MonoDevelop>
+  </ProjectExtensions>
+  <ItemGroup>
+    <Compile Include="Banshee.Moblin\MoblinService.cs" />
+    <Compile Include="Banshee.Moblin\MediaPanelContents.cs" />
+    <Compile Include="Mutter\PanelClient.cs" />
+    <Compile Include="Mutter\PanelGtk.cs" />
+  </ItemGroup>
+</Project>
diff --git a/src/Extensions/Banshee.Moblin/Banshee.Moblin/MediaPanelContents.cs b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MediaPanelContents.cs
new file mode 100644
index 0000000..5791a75
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MediaPanelContents.cs
@@ -0,0 +1,38 @@
+// 
+// MediaPanelContents.cs
+//  
+// Author:
+//   Aaron Bockover <abockover novell com>
+// 
+// Copyright 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using Gtk;
+
+namespace Banshee.Moblin
+{
+    public class MediaPanelContents : Table
+    {
+        public MediaPanelContents () : base (1, 1, false)
+        {
+        }
+    }
+}
diff --git a/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs
new file mode 100644
index 0000000..a8226bb
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Banshee.Moblin/MoblinService.cs
@@ -0,0 +1,116 @@
+//
+// MoblinService.cs
+//
+// Authors:
+//   Aaron Bockover <abockover novell com>
+//
+// Copyright 2009 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Banshee.ServiceStack;
+using Banshee.Gui;
+
+namespace Banshee.Moblin
+{
+    public class MoblinService : IExtensionService
+    {
+        private GtkElementsService elements_service;
+        private InterfaceActionService interface_action_service;
+        
+        private Gtk.Widget media_panel_window;
+        
+        public MoblinService ()
+        {
+        }
+        
+        void IExtensionService.Initialize ()
+        {
+            elements_service = ServiceManager.Get<GtkElementsService> ();
+            interface_action_service = ServiceManager.Get<InterfaceActionService> ();
+        
+            if (!ServiceStartup ()) {
+                ServiceManager.ServiceStarted += OnServiceStarted;
+            }
+        }
+        
+        private void OnServiceStarted (ServiceStartedArgs args) 
+        {
+            if (args.Service is Banshee.Gui.InterfaceActionService) {
+                interface_action_service = (InterfaceActionService)args.Service;
+            } else if (args.Service is GtkElementsService) {
+                elements_service = (GtkElementsService)args.Service;
+            }
+                    
+            ServiceStartup ();
+        }
+        
+        private bool ServiceStartup ()
+        {
+            if (elements_service == null || interface_action_service == null) {
+                return false;
+            }
+            
+            Initialize ();
+            
+            ServiceManager.ServiceStarted -= OnServiceStarted;
+            
+            return true;
+        }
+        
+        private void Initialize ()
+        {
+            BuildPanel ();
+        }
+        
+        public void Dispose ()
+        {
+            if (media_panel_window != null) {
+                media_panel_window.Hide ();
+                media_panel_window.Destroy ();
+                media_panel_window = null;
+            }
+            
+            interface_action_service = null;
+            elements_service = null;
+        }
+        
+#region Media Panel
+
+        private void BuildPanel ()
+        {
+            var window = new Gtk.Window ("Moblin Media Panel");
+            window.SetDefaultSize (990, 460);
+            window.WindowPosition = Gtk.WindowPosition.Center;
+            window.Add (new MediaPanelContents ());
+            window.ShowAll ();
+            media_panel_window = window;
+        }
+
+#endregion        
+
+        string IService.ServiceName {
+            get { return "MoblinService"; }
+        }
+    }
+}
diff --git a/src/Extensions/Banshee.Moblin/Makefile.am b/src/Extensions/Banshee.Moblin/Makefile.am
new file mode 100644
index 0000000..e518198
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Makefile.am
@@ -0,0 +1,21 @@
+ASSEMBLY = Banshee.Moblin
+TARGET = library
+LINK = $(REF_EXTENSION_MOBLIN)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES =  \
+	Banshee.Moblin/MediaPanelContents.cs \
+	Banshee.Moblin/MoblinService.cs \
+	Mutter/PanelClient.cs \
+	Mutter/PanelGtk.cs
+
+RESOURCES = Banshee.Moblin.addin.xml
+
+if HAVE_MOBLIN
+include $(top_srcdir)/build/build.mk
+module_SCRIPTS += Banshee.Moblin.dll.config
+else
+EXTRA_DIST = $(SOURCES) $(RESOURCES)
+endif
+
+EXTRA_DIST += Banshee.Moblin.dll.config
diff --git a/src/Extensions/Banshee.Moblin/Mutter/PanelClient.cs b/src/Extensions/Banshee.Moblin/Mutter/PanelClient.cs
new file mode 100644
index 0000000..e6b4838
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Mutter/PanelClient.cs
@@ -0,0 +1,106 @@
+// 
+// PanelClient.cs
+//  
+// Author:
+//   Aaron Bockover <abockover novell com>
+// 
+// Copyright 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Mutter
+{
+    public class PanelClient : GLib.Object
+    {
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern IntPtr mpl_panel_client_get_type ();
+    
+        public static new GLib.GType GType {
+            get { return new GLib.GType (mpl_panel_client_get_type ()); }
+        }
+        
+        protected PanelClient () : base (IntPtr.Zero)
+        {
+            CreateNativeObject (new string [0], new GLib.Value [0]);
+        }
+    
+        public PanelClient (IntPtr raw) : base (raw)
+        {
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_request_show (IntPtr panel);
+    
+        public void RequestShow ()
+        {
+            mpl_panel_client_request_show (Handle);
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_request_hide (IntPtr panel);
+    
+        public void RequestHide ()
+        {
+            mpl_panel_client_request_hide (Handle);
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_request_focus (IntPtr panel);
+    
+        public void RequestFocus ()
+        {
+            mpl_panel_client_request_focus (Handle);
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_set_height_request (IntPtr panel, uint height);
+        
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern uint mpl_panel_client_get_height_request (IntPtr panel);
+    
+        public uint HeightRequest {
+            get { return mpl_panel_client_get_height_request (Handle); }
+            set { mpl_panel_client_set_height_request (Handle, value); }
+        }
+        
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_request_button_style (IntPtr panel, string style);
+    
+        public string ButtonStyleRequest {
+            set { mpl_panel_client_request_button_style (Handle, value); }
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern void mpl_panel_client_request_tooltip (IntPtr panel, string tooltip);
+    
+        public string TooltipRequest {
+            set { mpl_panel_client_request_tooltip (Handle, value); }
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern uint mpl_panel_client_get_xid (IntPtr panel);
+    
+        public uint Xid {
+            get { return mpl_panel_client_get_xid (Handle); }
+        }
+    }
+}
diff --git a/src/Extensions/Banshee.Moblin/Mutter/PanelGtk.cs b/src/Extensions/Banshee.Moblin/Mutter/PanelGtk.cs
new file mode 100644
index 0000000..6e003ab
--- /dev/null
+++ b/src/Extensions/Banshee.Moblin/Mutter/PanelGtk.cs
@@ -0,0 +1,65 @@
+// 
+// PanelGtk.cs
+//  
+// Author:
+//   Aaron Bockover <abockover novell com>
+// 
+// Copyright 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Runtime.InteropServices;
+
+using Gtk;
+
+namespace Mutter
+{
+    public class PanelGtk : PanelClient
+    {
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern IntPtr mpl_panel_gtk_get_type ();
+    
+        public static new GLib.GType GType {
+            get { return new GLib.GType (mpl_panel_gtk_get_type ()); }
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern IntPtr mpl_panel_gtk_new (string name, string tooltip, string stylesheet,
+            string button_style, bool with_toolbar_service);
+        
+        public PanelGtk (string name, string tooltip, string stylesheet,
+            string button_style, bool with_toolbar_service) : base (IntPtr.Zero)
+        {
+            Raw = mpl_panel_gtk_new (name, tooltip, stylesheet, button_style, with_toolbar_service);
+        }
+    
+        public PanelGtk (IntPtr raw) : base (raw)
+        {
+        }
+    
+        [DllImport ("libmoblin-panel-gtk")]
+        private static extern IntPtr mpl_panel_gtk_get_window (IntPtr panel);
+    
+        // FIXME: can probably cache this
+        public Container Window {
+            get { return new Container (mpl_panel_gtk_get_window (Handle)); }
+        }
+    }
+}
diff --git a/src/Extensions/Makefile.am b/src/Extensions/Makefile.am
index caef9f9..c1792ac 100644
--- a/src/Extensions/Makefile.am
+++ b/src/Extensions/Makefile.am
@@ -9,6 +9,7 @@ SUBDIRS = \
 	Banshee.InternetRadio \
 	Banshee.Lastfm \
 	Banshee.MiniMode \
+	Banshee.Moblin \
 	Banshee.MultimediaKeys \
 	Banshee.NotificationArea \
 	Banshee.NowPlaying \



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]