[Xfce4-commits] <xfce4-embed-plugin:master> Initial import from the sample panel plugin; interface skeleton.

David Schneider noreply at xfce.org
Sun Jan 1 21:44:19 CET 2012


Updating branch refs/heads/master
         to 915a0f8383f30a59218e229f3af7f5d76673f83b (commit)
       from 35f15c99c6e61a04b739dc1703e470fdc39b7179 (commit)

commit 915a0f8383f30a59218e229f3af7f5d76673f83b
Author: David Schneider <dnschneid at gmail.com>
Date:   Tue Dec 27 16:41:13 2011 -0500

    Initial import from the sample panel plugin; interface skeleton.

 .gitignore                                         |   23 +
 AUTHORS                                            |    2 +-
 ChangeLog                                          |   12 -
 NEWS                                               |    4 +-
 README                                             |   16 +-
 THANKS                                             |   12 +-
 TODO                                               |    8 +
 configure.ac.in                                    |   21 +-
 icons/48x48/Makefile.am                            |   10 -
 icons/48x48/xfce4-sample-plugin.png                |  Bin 2899 -> 0 bytes
 icons/Makefile.am                                  |    1 -
 icons/scalable/Makefile.am                         |    2 +-
 icons/scalable/xfce4-embed-plugin.svg              |  246 ++++++++++
 icons/scalable/xfce4-sample-plugin.svg             |  316 -------------
 panel-plugin/Makefile.am                           |   22 +-
 panel-plugin/{sample-dialogs.c => embed-dialogs.c} |   28 +-
 panel-plugin/{sample-dialogs.h => embed-dialogs.h} |   12 +-
 panel-plugin/embed.c                               |  472 ++++++++++++++++++++
 panel-plugin/embed.desktop.in.in                   |    8 +
 panel-plugin/{sample.h => embed.h}                 |   41 ++-
 panel-plugin/sample.c                              |  271 -----------
 panel-plugin/sample.desktop.in.in                  |    8 -
 po/POTFILES.in                                     |    6 +-
 23 files changed, 846 insertions(+), 695 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..674f15f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+*.o
+*.swp
+.deps
+INSTALL
+Makefile
+Makefile.in
+po/Makefile.in.in
+aclocal.m4
+autom4te.cache
+compile
+config*
+depcomp
+install-sh
+intltool*
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+panel-plugin/embed.desktop
+panel-plugin/xfce4-embed-plugin
+po/.intltool-merge-cache
+po/POTFILES
+stamp-*
diff --git a/AUTHORS b/AUTHORS
index a2e9d32..2e2edff 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1 +1 @@
-John Doo <john at foo.org>
+David Schneider <dnschneid at gmail.com>
diff --git a/ChangeLog b/ChangeLog
index 7941758..e69de29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +0,0 @@
-YYYY-MM-DD	John Doo <john at foo.org>
-
-	* === Released 0.0.1 ===
-	* configure.in.in, NEWS: Bump version.
-
-YYYY-MM-DD	John Doo <john at foo.org>
-
-	* panel-plugin/sample.c(sample_plugin_new): A short description
-	  of the change.
-	* panel-plugin/sample-dialogs.c(sample_plugin_about): A short
-	  description of the change.
-	* THANKS: Add missing translator credits.
diff --git a/NEWS b/NEWS
index fbe1981..ed49639 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,3 @@
 0.0.1
 =====
-- Enter here some release highlights.
-- Updated translations: John Doo (be), Foo Bar (nl).
-- New translations: Anton (de).
+- Initial release
diff --git a/README b/README
index d34737c..c85f76c 100644
--- a/README
+++ b/README
@@ -1,17 +1,21 @@
 What is it?
 ===========
 
-This is a sample plugin for the Xfce panel, version 4.3 or higher. It
-demonstrates the basic usage of the plugin framework and provides a
-good layout for initial imports.
+This plugin enables the embedding of arbitrary application windows into the Xfce
+panel. The window is resized into the panel space available, and the associated
+program can be automatically launched if it is not open.
+
+Example uses include embedding an instant messaging buddy list, a mail client's
+new mail ticker, a simple media application, or a fancy clock or timer.
+Combining with Xfce's ability to auto-hide panels can make this very convenient.
 
 
 Installation
 ============
 
 The file 'INSTALL' contains generic installation instructions. For more
-detailed information, visit the Sample plugin website at
-http://goodies.xfce.org/projects/panel-plugins/xfce4-sample-plugin
+detailed information, visit the Embed plugin website at
+http://goodies.xfce.org/projects/panel-plugins/xfce4-embed-plugin
 
 
 How to report bugs?
@@ -19,4 +23,4 @@ How to report bugs?
 
 Bugs should be reported to the Xfce bug tracking system
 (http://bugzilla.xfce.org, product 'Xfce Panel Plugins', Component
-'Sample plugin'). You will need to create an account for yourself.
+'Embed plugin'). You will need to create an account for yourself.
diff --git a/THANKS b/THANKS
index 85c0733..b1490da 100644
--- a/THANKS
+++ b/THANKS
@@ -1,22 +1,16 @@
 What's this file about?
 -----------------------
 This file lists all external people that have contributed to this project and
-thereby helped to make the sample project such a successful project.
+thereby helped to make the plugin what it is today.
 
 
 Translators (sorted by language):
 ----------------------------------
-These people have translated the sample plugin to foreign languages.
+These people have translated the embed plugin to foreign languages.
 
- John Doo <john at foo.org>
- * be translations
-
- Foo Bar <bar at foo.org>
- * nl translations
 
 
 Other contributors (sorted by name):
 ------------------------------------
 
- Foo Bar <bar at foo.org>
- * patches
+
diff --git a/TODO b/TODO
index e69de29..df8ddbd 100644
--- a/TODO
+++ b/TODO
@@ -0,0 +1,8 @@
+Window detection and embedding (avoid excessive polling)
+Resizing, fixed/dynamic
+    * Fixed dimension (px)
+    * Set to window size
+    * Expand to available panel space
+Launching with parameters, delayed relaunch
+    * Including %s or something with the GtkSocket id
+Option windows
diff --git a/configure.ac.in b/configure.ac.in
index b159dca..a8ecbff 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -1,27 +1,27 @@
 dnl $Id$
 dnl
-dnl xfce4-sample-plugin - A sample plugin for the Xfce panel
+dnl xfce4-embed-plugin - A window-embedding plugin for the Xfce panel
 dnl
-dnl 2011 John Doo <john at foo.org>
+dnl 2011 David Schneider <dnschneid at gmail.com>
 dnl
 
 dnl ***************************
 dnl *** Version information ***
 dnl ***************************
-m4_define([sample_version_major], [0])
-m4_define([sample_version_minor], [0])
-m4_define([sample_version_micro], [2])
-m4_define([sample_version_nano],  []) dnl leave this empty to have no nano version
-m4_define([sample_version_build], [@REVISION@])
-m4_define([sample_version_tag], [git])
-m4_define([sample_version], [sample_version_major().sample_version_minor().sample_version_micro()ifelse(sample_version_nano(), [], [], [.sample_version_nano()])ifelse(sample_version_tag(), [git], [sample_version_tag()-sample_version_build()], [sample_version_tag()])])
+m4_define([embed_version_major], [0])
+m4_define([embed_version_minor], [0])
+m4_define([embed_version_micro], [2])
+m4_define([embed_version_nano],  []) dnl leave this empty to have no nano version
+m4_define([embed_version_build], [@REVISION@])
+m4_define([embed_version_tag], [git])
+m4_define([embed_version], [embed_version_major().embed_version_minor().embed_version_micro()ifelse(embed_version_nano(), [], [], [.embed_version_nano()])ifelse(embed_version_tag(), [git], [embed_version_tag()-embed_version_build()], [embed_version_tag()])])
 
 dnl ***************************
 dnl *** Initialize autoconf ***
 dnl ***************************
 AC_COPYRIGHT([Copyright (c) 2011
         The Xfce development team. All rights reserved.])
-AC_INIT([xfce4-sample-plugin], [sample_version], [http://bugzilla.xfce.org/], [xfce4-sample-plugin])
+AC_INIT([xfce4-embed-plugin], [embed_version], [http://bugzilla.xfce.org/], [xfce4-embed-plugin])
 AC_PREREQ([2.50])
 AC_REVISION([xfce4_panel_version_build])
 
@@ -97,7 +97,6 @@ AC_SUBST([PLATFORM_LDFLAGS])
 AC_OUTPUT([
 Makefile
 icons/Makefile
-icons/48x48/Makefile
 icons/scalable/Makefile
 panel-plugin/Makefile
 po/Makefile.in
diff --git a/icons/48x48/Makefile.am b/icons/48x48/Makefile.am
deleted file mode 100644
index 17d0fc3..0000000
--- a/icons/48x48/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-# $Id$
-
-iconsdir = $(datadir)/icons/hicolor/48x48/apps
-icons_DATA =								\
-	xfce4-sample-plugin.png
-
-EXTRA_DIST =								\
-	$(icons_DATA)
-
-# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
diff --git a/icons/48x48/xfce4-sample-plugin.png b/icons/48x48/xfce4-sample-plugin.png
deleted file mode 100644
index d1f05ea..0000000
Binary files a/icons/48x48/xfce4-sample-plugin.png and /dev/null differ
diff --git a/icons/Makefile.am b/icons/Makefile.am
index 2caedee..725f229 100644
--- a/icons/Makefile.am
+++ b/icons/Makefile.am
@@ -1,7 +1,6 @@
 # $Id$
 
 SUBDIRS =								\
-	48x48								\
 	scalable
 
 gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
diff --git a/icons/scalable/Makefile.am b/icons/scalable/Makefile.am
index 7442c40..5c911ee 100644
--- a/icons/scalable/Makefile.am
+++ b/icons/scalable/Makefile.am
@@ -2,7 +2,7 @@
 
 iconsdir = $(datadir)/icons/hicolor/scalable/apps
 icons_DATA =								\
-	xfce4-sample-plugin.svg
+	xfce4-embed-plugin.svg
 
 EXTRA_DIST =								\
 	$(icons_DATA)
diff --git a/icons/scalable/xfce4-embed-plugin.svg b/icons/scalable/xfce4-embed-plugin.svg
new file mode 100644
index 0000000..2b467a3
--- /dev/null
+++ b/icons/scalable/xfce4-embed-plugin.svg
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg4062"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="help-contents.svg">
+  <defs
+     id="defs4064">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4661">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4663" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4665" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3707-319-631-407-324"
+       id="linearGradient4023"
+       gradientUnits="userSpaceOnUse"
+       x1="24.132597"
+       y1="44.47514"
+       x2="32"
+       y2="26"
+       gradientTransform="translate(0,-0.9999998)" />
+    <linearGradient
+       id="linearGradient3707-319-631-407-324">
+      <stop
+         offset="0"
+         style="stop-color:#185f9a;stop-opacity:1;"
+         id="stop3760" />
+      <stop
+         offset="1"
+         style="stop-color:#599ec9;stop-opacity:1;"
+         id="stop3762" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4011"
+       id="linearGradient3906-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-47.733515,-0.3572397)"
+       x1="71.204407"
+       y1="6.2375584"
+       x2="71.204407"
+       y2="44.340794" />
+    <linearGradient
+       id="linearGradient4011">
+      <stop
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;"
+         id="stop4013" />
+      <stop
+         id="stop4015"
+         style="stop-color:#ffffff;stop-opacity:0.23529412;"
+         offset="0.507761" />
+      <stop
+         offset="0.83456558"
+         style="stop-color:#ffffff;stop-opacity:0.15686275;"
+         id="stop4017" />
+      <stop
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0.39215687;"
+         id="stop4019" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-449-88-871-390-598-476-591-434-148-57-177-3-8"
+       id="radialGradient3909-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,2.3767198,-2.5142859,-6.4690655e-8,45.245242,-9.4123727)"
+       cx="3.9722471"
+       cy="8.4497671"
+       fx="3.9722471"
+       fy="8.4497671"
+       r="19.99999" />
+    <linearGradient
+       id="linearGradient2867-449-88-871-390-598-476-591-434-148-57-177-3-8">
+      <stop
+         offset="0"
+         style="stop-color:#90dbec;stop-opacity:1;"
+         id="stop3750-8-9" />
+      <stop
+         offset="0.26238"
+         style="stop-color:#42baea;stop-opacity:1;"
+         id="stop3752-3-2" />
+      <stop
+         offset="0.704952"
+         style="stop-color:#3689e6;stop-opacity:1;"
+         id="stop3754-7-2" />
+      <stop
+         offset="1"
+         style="stop-color:#2b63a0;stop-opacity:1;"
+         id="stop3756-9-3" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3707-319-631-407-324-3-8"
+       id="linearGradient3911-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(2.39e-6,1.0000002)"
+       x1="24"
+       y1="44"
+       x2="24"
+       y2="3.8990016" />
+    <linearGradient
+       id="linearGradient3707-319-631-407-324-3-8">
+      <stop
+         offset="0"
+         style="stop-color:#185f9a;stop-opacity:1;"
+         id="stop3760-7-3" />
+      <stop
+         offset="1"
+         style="stop-color:#599ec9;stop-opacity:1;"
+         id="stop3762-8-4" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8838">
+      <stop
+         id="stop8840"
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop8842"
+         style="stop-color:#000000;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       r="10.625"
+       fy="4.625"
+       fx="62.625"
+       cy="4.625"
+       cx="62.625"
+       gradientTransform="matrix(2.1647059,0,0,0.7529402,-111.56471,36.517647)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4060"
+       xlink:href="#linearGradient8838"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4661"
+       id="linearGradient4674"
+       gradientUnits="userSpaceOnUse"
+       x1="24.693371"
+       y1="12.651934"
+       x2="24.693371"
+       y2="31.394552" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4661"
+       id="linearGradient4680"
+       gradientUnits="userSpaceOnUse"
+       x1="24.693371"
+       y1="34.39452"
+       x2="24.693371"
+       y2="39.173557" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.65625"
+     inkscape:cx="-2.8975727"
+     inkscape:cy="24"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="753"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4067">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:0.3;fill:url(#radialGradient4060);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="path8836"
+       d="m 46.999997,40 c 0,4.418278 -10.297452,8 -23,8 -12.702548,0 -23.0000002,-3.581722 -23.0000002,-8 0,-4.418278 10.2974522,-8 23.0000002,-8 12.702548,0 23,3.581722 23,8 l 0,0 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;fill:url(#radialGradient3909-0);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3911-1);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path2555"
+       d="M 24.000002,5.501809 C 13.241573,5.501809 4.5018088,14.24157 4.5018088,25 c 0,10.75843 8.7397642,19.498195 19.4981932,19.498192 10.758425,0 19.498199,-8.739762 19.498189,-19.498192 0,-10.75843 -8.739764,-19.498191 -19.498189,-19.498191 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:0.5;color:#000000;fill:none;stroke:url(#linearGradient3906-0);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path8655"
+       d="M 42.500002,24.999344 C 42.500002,35.216942 34.21666,43.5 24.000235,43.5 13.782875,43.5 5.5000003,35.216848 5.5000003,24.999344 c 0,-10.217125 8.2828747,-18.4993437 18.5002347,-18.4993437 10.216425,0 18.499767,8.2822187 18.499767,18.4993437 l 0,0 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="font-size:72px;font-style:normal;font-weight:bold;fill:url(#linearGradient4023);fill-opacity:1;stroke:none;font-family:Standard Symbols L"
+       id="path3298-9"
+       d="m 24.910438,30.163548 c -0.06608,-2.358762 0.462374,-4.648617 2.690869,-6.270608 2.35386,-1.834368 4.620815,-4.129412 4.381246,-6.83475 -0.05231,-2.609055 -3.092241,-4.653533 -6.367546,-4.947493 -3.684186,-0.510386 -8.142028,0.751736 -9.376574,3.628942 -0.626134,1.399375 -0.0455,3.910017 2.055795,3.910017 1.229052,0 1.793562,-0.793934 1.886302,-1.520198 0.07017,-0.549514 -0.155434,-1.040224 -0.288666,-1.494127 -0.15181,-0.517192 0.496254,-1.519566 1.202084,-1.927971 0.589802,-0.341274 1.206886,-0.455708 1.297847,-0.477569 2.118145,-0.509045 4.22963,0.615366 5.110579,1.983913 0.88095,1.368546 -0.08871,3.444365 -1.482855,5.463019 -1.394147,2.018654 -2.890315,4.311433 -2.884338,6.74674 0,0.927123 -0.08261,1.242088 -0.02391,1.617179 0.04689,0.299687 1.039226,0.263471 1.799169,0.122906 z m -0.966655,3.174767 c -2.025281,-0.109945 -3.427057,2.185998 -2.210368,3.648826 1.086561,1.615107 4.133026,1.216405 4.655189,-0.612542 0.542861,-1.422241 -0.763542,-3.060025 -2.44482,-
 3.036285 l -1e-6,1e-6 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="font-size:72px;font-style:normal;font-weight:bold;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Standard Symbols L"
+       id="path3298"
+       d="m 24.910438,31.163548 c -0.06608,-2.358762 0.462374,-4.648617 2.690869,-6.270608 2.35386,-1.834368 4.620815,-4.129412 4.381246,-6.83475 -0.05231,-2.609055 -3.092241,-4.653533 -6.367546,-4.947493 -3.684186,-0.510386 -8.142028,0.751736 -9.376574,3.628942 -0.626134,1.399375 -0.0455,3.910017 2.055795,3.910017 1.229052,0 1.793562,-0.793934 1.886302,-1.520198 0.07017,-0.549514 -0.155434,-1.040224 -0.288666,-1.494127 -0.15181,-0.517192 0.496254,-1.519566 1.202084,-1.927971 0.589802,-0.341274 1.206886,-0.455708 1.297847,-0.477569 2.118145,-0.509045 4.22963,0.615366 5.110579,1.983913 0.88095,1.368546 -0.08871,3.444365 -1.482855,5.463019 -1.394147,2.018654 -2.890315,4.311433 -2.884338,6.74674 0,0.927123 -0.08261,1.242088 -0.02391,1.617179 0.04689,0.299687 1.039226,0.263471 1.799169,0.122906 z m -0.966655,3.174767 c -2.025281,-0.109945 -3.427057,2.185998 -2.210368,3.648826 1.086561,1.615107 4.133026,1.216405 4.655189,-0.612542 0.542861,-1.422241 -0.763542,-3.060025 -2.44482,-
 3.036285 l -1e-6,1e-6 z" />
+    <path
+       style="font-size:72px;font-style:normal;font-weight:bold;opacity:0.1;fill:none;stroke:url(#linearGradient4674);stroke-opacity:1;font-family:Standard Symbols L"
+       d="m 28.084949,17.265953 c 0.722661,1.77837 -0.323726,3.640969 -1.258202,5.121879 -1.519961,2.265502 -3.357779,4.683667 -3.204209,7.561658 -0.159759,0.678163 0.124554,0.99522 0.814962,0.73801 m 7.010682,-11.701326 c 0.24956,-1.456424 -0.42773,-2.943381 -1.629158,-3.784911 -1.962257,-1.507859 -4.579929,-1.802656 -6.975274,-1.638763 -2.237263,0.241487 -4.703571,1.019245 -5.952518,3.027858 -0.647987,1.107638 -0.479037,2.938903 0.824248,3.483653"
+       id="path4678"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="font-size:72px;font-style:normal;font-weight:bold;opacity:0.10000000000000001;fill:none;stroke:url(#linearGradient4680);stroke-opacity:1;font-family:Standard Symbols L"
+       d="m 23.90625,34.84375 c -1.359453,-0.146609 -2.729136,1.497041 -1.893858,2.737463 0.831041,1.324461 3.172901,1.189046 3.85165,-0.207148 0.540707,-1.263634 -0.667681,-2.600614 -1.957792,-2.530315 z"
+       id="path4669" />
+  </g>
+</svg>
diff --git a/icons/scalable/xfce4-sample-plugin.svg b/icons/scalable/xfce4-sample-plugin.svg
deleted file mode 100644
index 1331ecb..0000000
--- a/icons/scalable/xfce4-sample-plugin.svg
+++ /dev/null
@@ -1,316 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48.000000px"
-   height="48.000000px"
-   id="svg4376"
-   sodipodi:version="0.32"
-   inkscape:version="0.42+devel"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/emotes"
-   sodipodi:docname="face-grin.svg"
-   inkscape:export-filename="/home/tigert/Desktop/face-grin.png"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-ydpi="90.000000">
-  <defs
-     id="defs3">
-    <linearGradient
-       id="linearGradient2102">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2104" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2106" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3290">
-      <stop
-         style="stop-color:#fffcde;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop3292" />
-      <stop
-         id="stop3294"
-         offset="0.64485979"
-         style="stop-color:#f6e76a;stop-opacity:1.0000000;" />
-      <stop
-         style="stop-color:#ffb738;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop3296" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3068">
-      <stop
-         style="stop-color:#cccccc;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop3070" />
-      <stop
-         id="stop3076"
-         offset="0.34579438"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1.0000000;"
-         offset="0.72486681"
-         id="stop3078" />
-      <stop
-         style="stop-color:#cecece;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop3072" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4565">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop4567" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop4569" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4565"
-       id="radialGradient1360"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
-       cx="24.714285"
-       cy="38.571430"
-       fx="24.714285"
-       fy="38.571430"
-       r="19.714285" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3290"
-       id="radialGradient1362"
-       gradientUnits="userSpaceOnUse"
-       cx="29.288071"
-       cy="15.720984"
-       fx="29.158466"
-       fy="15.755712"
-       r="8.9020796" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient2108"
-       x1="14.000000"
-       y1="21.062500"
-       x2="14.000000"
-       y2="32.875000"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,1.033654,1.500000,-0.627404)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient2112"
-       gradientUnits="userSpaceOnUse"
-       x1="14.000000"
-       y1="21.062500"
-       x2="14"
-       y2="34.305527"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,1.404523,10.50000,-7.966331)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient2116"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,1.171895,2.500000,-3.141166)"
-       x1="14.000000"
-       y1="21.062500"
-       x2="13.500000"
-       y2="33.426670" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient2120"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,1.159815,18.50000,-2.815047)"
-       x1="14.000000"
-       y1="21.062500"
-       x2="14.500000"
-       y2="33.431156" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2102"
-       id="linearGradient2124"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,1.071351,-22.50000,-3.854623)"
-       x1="14.000000"
-       y1="21.062500"
-       x2="14.000000"
-       y2="35.744175" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3068"
-       id="linearGradient2132"
-       x1="9.7892637"
-       y1="29.629091"
-       x2="38.390732"
-       y2="29.629091"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.048897,0.000000,0.000000,1.000000,-1.267931,0.000000)" />
-  </defs>
-  <sodipodi:namedview
-     fill="#a40000"
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="0.19607843"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="23.514119"
-     inkscape:cy="28.588454"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="1010"
-     inkscape:window-height="1181"
-     inkscape:window-x="123"
-     inkscape:window-y="34"
-     stroke="#8f5902" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Face - Laughing</dc:title>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>emoticon</rdf:li>
-            <rdf:li>emote</rdf:li>
-            <rdf:li>smiley</rdf:li>
-            <rdf:li>laughing</rdf:li>
-            <rdf:li>:-D</rdf:li>
-            <rdf:li>:D</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <dc:contributor>
-          <cc:Agent>
-            <dc:title>Tuomas Kuosmanen</dc:title>
-          </cc:Agent>
-        </dc:contributor>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.53164560;color:#000000;fill:url(#radialGradient1360);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       id="path4563"
-       sodipodi:cx="24.714285"
-       sodipodi:cy="38.571430"
-       sodipodi:rx="19.714285"
-       sodipodi:ry="6.5714288"
-       d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1  5.0000000,38.571430 A 19.714285 6.5714288 0 1 1  44.428570 38.571430 z" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9c8c0a;stroke-width:0.48004404;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       id="path4320"
-       sodipodi:cx="31.112698"
-       sodipodi:cy="19.008621"
-       sodipodi:rx="8.6620579"
-       sodipodi:ry="8.6620579"
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.450640,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)" />
-    <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.450640,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4322"
-       style="opacity:0.67721522;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
-       id="path1364"
-       sodipodi:cx="-3.8125000"
-       sodipodi:cy="1.8750000"
-       sodipodi:rx="2.9375000"
-       sodipodi:ry="2.8750000"
-       d="M -0.87500000,1.8750000 A 2.9375000,2.8750000 0 0 1 -6.3564497,3.3124999"
-       sodipodi:start="0.0000000"
-       sodipodi:end="2.6179939"
-       sodipodi:open="true"
-       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,24.53442,17.20131)" />
-    <path
-       transform="matrix(-0.965926,-0.258819,0.258819,-0.965926,15.78442,17.20131)"
-       sodipodi:open="true"
-       sodipodi:end="2.6179939"
-       sodipodi:start="0.0000000"
-       d="M -0.87500000,1.8750000 A 2.9375000,2.8750000 0 0 1 -6.3564497,3.3124999"
-       sodipodi:ry="2.8750000"
-       sodipodi:rx="2.9375000"
-       sodipodi:cy="1.8750000"
-       sodipodi:cx="-3.8125000"
-       id="path2094"
-       style="fill:none;fill-opacity:1.0000000;stroke:#555753;stroke-width:1.0000000;stroke-linecap:butt;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:nodetypes="czcc"
-       id="path2096"
-       d="M 9.1875355,21.044769 C 7.6485541,28.612147 13.879571,38.212295 24.038687,38.212295 C 34.286185,38.212295 40.544215,29.781871 38.758727,21.107269 L 9.1875355,21.044769 z "
-       style="opacity:1.0000000;color:#000000;fill:url(#linearGradient2132);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
-    <path
-       id="path2110"
-       d="M 24.500000,21.528657 L 24.500000,38.382936"
-       style="opacity:0.18181818;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient2112);stroke-width:0.99999988px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1.0000000" />
-    <path
-       style="opacity:0.18181818;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient2116);stroke-width:1.0000002px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1.0000000"
-       d="M 16.500000,21.468635 L 16.500000,35.531381"
-       id="path2114" />
-    <path
-       id="path2118"
-       d="M 32.500000,21.541107 L 32.500000,35.458909"
-       style="opacity:0.18181818;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#linearGradient2120);stroke-width:1.0000005px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1.0000000" />
-    <path
-       style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#8f5902;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       d="M 9.4409398,20.615864 C 7.6602852,29.43779 14.599952,38.703673 24.250001,38.703673 C 34.253546,38.703673 40.902217,29.12529 38.621563,20.553364 L 9.4409398,20.615864 z "
-       id="path2756"
-       sodipodi:nodetypes="czcc" />
-  </g>
-</svg>
diff --git a/panel-plugin/Makefile.am b/panel-plugin/Makefile.am
index 36cdd10..571118c 100644
--- a/panel-plugin/Makefile.am
+++ b/panel-plugin/Makefile.am
@@ -1,31 +1,31 @@
 INCLUDES = \
 	-I$(top_srcdir) \
-	-DG_LOG_DOMAIN=\"xfce4-sample-plugin\" \
+	-DG_LOG_DOMAIN=\"xfce4-embed-plugin\" \
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
 	$(PLATFORM_CPPFLAGS)
 
 #
-# Sample plugin
+# Embed plugin
 #
 plugin_PROGRAMS = \
-	xfce4-sample-plugin
+	xfce4-embed-plugin
 
 plugindir = \
 	$(libexecdir)/xfce4/panel-plugins
 
-xfce4_sample_plugin_SOURCES = \
-	sample.c \
-	sample.h \
-	sample-dialogs.c \
-	sample-dialogs.h
+xfce4_embed_plugin_SOURCES = \
+	embed.c \
+	embed.h \
+	embed-dialogs.c \
+	embed-dialogs.h
 
-xfce4_sample_plugin_CFLAGS = \
+xfce4_embed_plugin_CFLAGS = \
 	$(LIBXFCE4UTIL_CFLAGS) \
 	$(LIBXFCE4UI_CFLAGS) \
 	$(LIBXFCE4PANEL_CFLAGS) \
 	$(PLATFORM_CFLAGS)
 
-xfce4_sample_plugin_LDADD = \
+xfce4_embed_plugin_LDADD = \
 	$(LIBXFCE4UTIL_LIBS) \
 	$(LIBXFCE4UI_LIBS) \
 	$(LIBXFCE4PANEL_LIBS)
@@ -37,7 +37,7 @@ desktopdir =								\
 	$(datadir)/xfce4/panel-plugins
 
 desktop_in_in_files =							\
-	sample.desktop.in.in
+	embed.desktop.in.in
 
 desktop_in_files =							\
 	$(desktop_in_in_files:.desktop.in.in=.desktop.in)
diff --git a/panel-plugin/sample-dialogs.c b/panel-plugin/embed-dialogs.c
similarity index 81%
rename from panel-plugin/sample-dialogs.c
rename to panel-plugin/embed-dialogs.c
index 894b7ba..5c86749 100644
--- a/panel-plugin/sample-dialogs.c
+++ b/panel-plugin/embed-dialogs.c
@@ -1,6 +1,6 @@
 /*  $Id$
  *
- *  Copyright (c) 2011 John Doo <john at foo.org>
+ *  Copyright (c) 2011 David Schneider <dnschneid at gmail.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -27,18 +27,18 @@
 #include <libxfce4ui/libxfce4ui.h>
 #include <libxfce4panel/xfce-panel-plugin.h>
 
-#include "sample.h"
-#include "sample-dialogs.h"
+#include "embed.h"
+#include "embed-dialogs.h"
 
 /* the website url */
-#define PLUGIN_WEBSITE "http://goodies.xfce.org/projects/panel-plugins/xfce4-sample-plugin"
+#define PLUGIN_WEBSITE "http://goodies.xfce.org/projects/panel-plugins/xfce4-embed-plugin"
 
 
 
 static void
-sample_configure_response (GtkWidget    *dialog,
+embed_configure_response (GtkWidget    *dialog,
                            gint          response,
-                           SamplePlugin *sample)
+                           EmbedPlugin *embed)
 {
   gboolean result;
 
@@ -53,13 +53,13 @@ sample_configure_response (GtkWidget    *dialog,
   else
     {
       /* remove the dialog data from the plugin */
-      g_object_set_data (G_OBJECT (sample->plugin), "dialog", NULL);
+      g_object_set_data (G_OBJECT (embed->plugin), "dialog", NULL);
 
       /* unlock the panel menu */
-      xfce_panel_plugin_unblock_menu (sample->plugin);
+      xfce_panel_plugin_unblock_menu (embed->plugin);
 
       /* save the plugin */
-      sample_save (sample->plugin, sample);
+      embed_save (embed->plugin, embed);
 
       /* destroy the properties dialog */
       gtk_widget_destroy (dialog);
@@ -69,8 +69,8 @@ sample_configure_response (GtkWidget    *dialog,
 
 
 void
-sample_configure (XfcePanelPlugin *plugin,
-                  SamplePlugin    *sample)
+embed_configure (XfcePanelPlugin *plugin,
+                  EmbedPlugin    *embed)
 {
   GtkWidget *dialog;
 
@@ -78,7 +78,7 @@ sample_configure (XfcePanelPlugin *plugin,
   xfce_panel_plugin_block_menu (plugin);
 
   /* create the dialog */
-  dialog = xfce_titled_dialog_new_with_buttons (_("Sample Plugin"),
+  dialog = xfce_titled_dialog_new_with_buttons (_("Embed Plugin"),
                                                 GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (plugin))),
                                                 GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
                                                 GTK_STOCK_HELP, GTK_RESPONSE_HELP,
@@ -97,7 +97,7 @@ sample_configure (XfcePanelPlugin *plugin,
 
   /* connect the reponse signal to the dialog */
   g_signal_connect (G_OBJECT (dialog), "response",
-                    G_CALLBACK(sample_configure_response), sample);
+                    G_CALLBACK(embed_configure_response), embed);
 
   /* show the entire dialog */
   gtk_widget_show (dialog);
@@ -106,7 +106,7 @@ sample_configure (XfcePanelPlugin *plugin,
 
 
 void
-sample_about (XfcePanelPlugin *plugin)
+embed_about (XfcePanelPlugin *plugin)
 {
   /* about dialog code. you can use the GtkAboutDialog
    * or the XfceAboutInfo widget */
diff --git a/panel-plugin/sample-dialogs.h b/panel-plugin/embed-dialogs.h
similarity index 75%
rename from panel-plugin/sample-dialogs.h
rename to panel-plugin/embed-dialogs.h
index 0fecfbb..c0659f2 100644
--- a/panel-plugin/sample-dialogs.h
+++ b/panel-plugin/embed-dialogs.h
@@ -1,6 +1,6 @@
 /*  $Id$
  *
- *  Copyright (c) 2006-2007 John Doo <john at foo.org>
+ *  Copyright (c) 2011 David Schneider <dnschneid at gmail.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -17,17 +17,17 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef __SAMPLE_DIALOGS_H__
-#define __SAMPLE_DIALOGS_H__
+#ifndef __EMBED_DIALOGS_H__
+#define __EMBED_DIALOGS_H__
 
 G_BEGIN_DECLS
 
 void
-sample_configure    (XfcePanelPlugin *plugin,
-                     SamplePlugin    *sample);
+embed_configure    (XfcePanelPlugin *plugin,
+                     EmbedPlugin     *embed);
 
 void
-sample_about        (XfcePanelPlugin *plugin);
+embed_about        (XfcePanelPlugin *plugin);
 
 G_END_DECLS
 
diff --git a/panel-plugin/embed.c b/panel-plugin/embed.c
new file mode 100644
index 0000000..6030b11
--- /dev/null
+++ b/panel-plugin/embed.c
@@ -0,0 +1,472 @@
+/*  $Id$
+ *
+ *  Copyright (c) 2011 David Schneider <dnschneid at gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <gtk/gtk.h>
+#include <libxfce4util/libxfce4util.h>
+#include <libxfce4panel/xfce-panel-plugin.h>
+#include <libxfce4panel/xfce-hvbox.h>
+
+#include "embed.h"
+#include "embed-dialogs.h"
+
+/* default settings */
+#define DEFAULT_PROC_NAME   NULL
+#define DEFAULT_WINDOW_NAME NULL
+#define DEFAULT_LABEL_FMT   NULL
+#define DEFAULT_POLL_DELAY  500
+#define DEFAULT_MIN_SIZE    EMBED_MIN_SIZE_MATCH_WINDOW
+#define DEFAULT_EXPAND      TRUE
+
+
+
+/* prototypes */
+static void
+embed_construct (XfcePanelPlugin *plugin);
+static void
+embed_update_label (EmbedPlugin *embed);
+static void
+embed_popout (GtkMenuItem *popout_menu, EmbedPlugin *embed);
+static void
+embed_add_socket (EmbedPlugin *embed, gboolean update_size);
+
+
+/* register the plugin */
+XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (embed_construct);
+
+
+
+void
+embed_save (XfcePanelPlugin *plugin, EmbedPlugin *embed)
+{
+  XfceRc *rc;
+  gchar  *file;
+
+  /* get the config file location */
+  file = xfce_panel_plugin_save_location (plugin, TRUE);
+
+  if (G_UNLIKELY (file == NULL)) {
+    DBG ("Failed to open config file");
+    return;
+  }
+
+  /* open the config file, read/write */
+  rc = xfce_rc_simple_open (file, FALSE);
+  g_free (file);
+
+  if (G_LIKELY (rc != NULL)) {
+    /* save the settings */
+    DBG(".");
+    if (embed->proc_name)
+      xfce_rc_write_entry   (rc, "proc_name",   embed->proc_name);
+    if (embed->window_name)
+      xfce_rc_write_entry   (rc, "window_name", embed->window_name);
+    if (embed->label_fmt)
+      xfce_rc_write_entry   (rc, "label_fmt",   embed->label_fmt);
+    xfce_rc_write_int_entry (rc, "poll_delay",  embed->poll_delay);
+    xfce_rc_write_int_entry (rc, "min_size",    embed->min_size);
+
+    /* close the rc file */
+    xfce_rc_close (rc);
+  }
+}
+
+
+
+static void
+embed_read (EmbedPlugin *embed)
+{
+  XfceRc      *rc;
+  gchar       *file;
+
+  /* get the plugin config file location */
+  file = xfce_panel_plugin_save_location (embed->plugin, TRUE);
+
+  if (G_LIKELY (file != NULL)) {
+    /* open the config file, readonly */
+    rc = xfce_rc_simple_open (file, TRUE);
+
+    /* cleanup */
+    g_free (file);
+
+    if (G_LIKELY (rc != NULL)) {
+      /* read the settings */
+      embed->proc_name = g_strdup (xfce_rc_read_entry (rc,
+                              "proc_name", DEFAULT_PROC_NAME));
+      embed->window_name = g_strdup (xfce_rc_read_entry (rc,
+                              "window_name", DEFAULT_WINDOW_NAME));
+      embed->label_fmt = g_strdup (xfce_rc_read_entry (rc,
+                              "label_fmt", DEFAULT_LABEL_FMT));
+      embed->poll_delay = xfce_rc_read_int_entry (rc,
+                              "poll_delay", DEFAULT_POLL_DELAY);
+      embed->min_size = xfce_rc_read_int_entry (rc,
+                              "min_size", DEFAULT_MIN_SIZE);
+
+      /* cleanup */
+      xfce_rc_close (rc);
+
+      /* leave the function, everything went well */
+      return;
+    }
+  }
+
+  /* something went wrong, apply default values */
+  DBG ("Applying default settings");
+
+  embed->proc_name   = g_strdup (DEFAULT_PROC_NAME);
+  embed->window_name = g_strdup (DEFAULT_WINDOW_NAME);
+  embed->label_fmt   = g_strdup (DEFAULT_LABEL_FMT);
+  embed->poll_delay  = DEFAULT_POLL_DELAY;
+  embed->min_size    = DEFAULT_MIN_SIZE;
+}
+
+static void
+embed_update_separator (EmbedPlugin* embed, GtkOrientation orientation)
+{
+}
+
+static EmbedPlugin *
+embed_new (XfcePanelPlugin *plugin)
+{
+  EmbedPlugin   *embed;
+  GtkOrientation  orientation;
+
+  /* allocate memory for the plugin structure */
+  embed = panel_slice_new0 (EmbedPlugin);
+
+  /* Since a plug can spontaneously connect, assume we have a gtkplug until we
+   * explicitly steal a window. */
+  embed->plug_is_gtkplug = TRUE;
+
+  /* pointer to plugin */
+  embed->plugin = plugin;
+
+  /* read the user settings */
+  embed_read (embed);
+
+  /* get the current orientation */
+  orientation = xfce_panel_plugin_get_orientation (plugin);
+
+  /* main panel hvbox */
+  embed->hvbox = xfce_hvbox_new (orientation, FALSE, 2);
+  gtk_widget_show (embed->hvbox);
+
+  /* separator */
+  embed_update_separator (embed, orientation);
+
+  /* label */
+  embed->label = gtk_label_new (NULL);
+  gtk_box_pack_start (GTK_BOX (embed->hvbox), embed->label, FALSE, FALSE, 0);
+  embed_update_label (embed);
+
+  /* socket */
+  embed_add_socket (embed, FALSE);
+
+  /* pop out menu item, not shown by default */
+  embed->popout_menu = gtk_image_menu_item_new_with_mnemonic (_("Pop _Out"));
+
+  /* embed menu item, shown by default. */
+  embed->embed_menu = gtk_image_menu_item_new_with_mnemonic (_("_Embed"));
+  gtk_widget_show(embed->embed_menu);
+
+  return embed;
+}
+
+
+
+static void
+embed_free (XfcePanelPlugin *plugin, EmbedPlugin *embed)
+{
+  GtkWidget *dialog;
+
+  /* Don't hold onto the embedded window */
+  embed_popout (GTK_MENU_ITEM(embed->popout_menu), embed);
+
+  /* check if the dialog is still open. if so, destroy it */
+  dialog = g_object_get_data (G_OBJECT (plugin), "dialog");
+  if (G_UNLIKELY (dialog != NULL))
+    gtk_widget_destroy (dialog);
+
+  /* destroy the panel widgets */
+  gtk_widget_destroy (embed->hvbox);
+
+  /* cleanup the settings */
+  g_free (embed->proc_name);
+  g_free (embed->window_name);
+  g_free (embed->label_fmt);
+
+  /* free the plugin structure */
+  panel_slice_free (EmbedPlugin, embed);
+}
+
+
+
+static void
+embed_orientation_changed (XfcePanelPlugin *plugin,
+                           GtkOrientation   orientation,
+                           EmbedPlugin     *embed)
+{
+  /* change the orienation of the box */
+  xfce_hvbox_set_orientation (XFCE_HVBOX (embed->hvbox), orientation);
+  embed_update_separator (embed, orientation);
+}
+
+
+
+static gboolean
+embed_size_changed (XfcePanelPlugin *plugin, gint size, EmbedPlugin *embed)
+{
+  GtkOrientation orientation;
+  gint altsize;
+
+  /* get the orientation of the plugin */
+  orientation = xfce_panel_plugin_get_orientation (plugin);
+
+  /* set the socket widget size.
+   * Use the minimum size if set, otherwise if it is set to the window size and
+   * we don't have a window embedded, set to square. */
+  if (embed->min_size == EMBED_MIN_SIZE_MATCH_WINDOW)
+    altsize = size;
+  else
+    altsize = embed->min_size;
+  if (orientation == GTK_ORIENTATION_HORIZONTAL) {
+    if (embed->min_size == EMBED_MIN_SIZE_MATCH_WINDOW && embed->plug)
+      altsize = embed->plug_width;
+    gtk_widget_set_size_request (GTK_WIDGET (embed->socket), altsize, size);
+    gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, size);
+  } else {
+    if (embed->min_size == EMBED_MIN_SIZE_MATCH_WINDOW && embed->plug)
+      altsize = embed->plug_height;
+    gtk_widget_set_size_request (GTK_WIDGET (embed->socket), size, altsize);
+    gtk_widget_set_size_request (GTK_WIDGET (plugin), size, -1);
+  }
+
+  /* we handled the orientation */
+  return TRUE;
+}
+
+
+
+static void
+embed_update_label (EmbedPlugin *embed)
+{
+  if (embed->label_fmt && *embed->label_fmt)
+    gtk_widget_show (embed->label);
+  else
+    gtk_widget_hide (embed->label);
+  /* TODO: parse label_fmt and generate label text */
+  gtk_label_set_text(GTK_LABEL (embed->label), embed->label_fmt);
+}
+
+
+static gboolean
+embed_search (EmbedPlugin *embed)
+{
+  DBG (".");
+  /* TODO: search! */
+
+  /* Return TRUE if we haven't found a plug yet, so that the function is called
+   * again. */
+  return embed->plug == 0;
+}
+
+
+static void
+embed_start_search (GtkSocket *socket, EmbedPlugin *embed)
+{
+  if (embed->disable_search)
+    return;
+  /* TODO: handle the case where we want to launch an application that will
+   * generate a plug */
+  if (embed_search (embed))
+    embed->search_timer = g_timeout_add(embed->poll_delay,
+                                        (GSourceFunc)embed_search, embed);
+}
+
+
+static void
+embed_embed_menu (GtkMenuItem *embed_menu, EmbedPlugin *embed)
+{
+  embed->disable_search = FALSE;
+  if (embed->search_timer)
+    g_source_remove (embed->search_timer);
+  embed_start_search (GTK_SOCKET (embed->socket), embed);
+}
+
+
+static void
+embed_plug_added (GtkSocket *socket, EmbedPlugin *embed)
+{
+  DBG(".");
+
+  gtk_widget_hide(embed->embed_menu);
+  gtk_widget_show(embed->popout_menu);
+
+  /* Stop searching */
+  if (embed->search_timer) {
+    g_source_remove (embed->search_timer);
+    embed->search_timer = 0;
+  }
+
+  /* If we just got plugged by a gtkplug, set the "known" width and height to -1
+   * so that the socket will completely pass through the minimum size request if
+   * the user so desires */
+  if (embed->plug_is_gtkplug)
+    embed->plug_width = embed->plug_height = -1;
+
+  /* Update the label */
+  embed_update_label (embed);
+
+  /* Update the size of the panel. */
+  embed_size_changed (embed->plugin,
+                      xfce_panel_plugin_get_size(embed->plugin), embed);
+}
+
+
+
+static gboolean
+embed_add_socket_and_resize (EmbedPlugin *embed)
+{
+  DBG(".");
+  embed_add_socket (embed, TRUE);
+  return FALSE;
+}
+
+
+
+static gboolean
+embed_plug_removed (GtkSocket *socket, EmbedPlugin *embed)
+{
+  g_assert (embed->socket);
+
+  gtk_widget_hide(embed->popout_menu);
+  gtk_widget_show(embed->embed_menu);
+  embed->socket = NULL;
+  embed->plug = 0;
+  embed->plug_is_gtkplug = TRUE;
+  embed_update_label (embed);
+  g_idle_add ((GSourceFunc)embed_add_socket_and_resize, embed);
+  /* Returning false will destroy the socket */
+  return FALSE;
+}
+
+
+
+static void
+embed_add_socket (EmbedPlugin *embed, gboolean update_size)
+{
+  /* Should call embed_size_changed after adding a socket so that its size is
+   * updated */
+  if (embed->socket)
+    return;
+
+  embed->socket = gtk_socket_new ();
+  gtk_widget_show (embed->socket);
+  gtk_box_pack_start (GTK_BOX (embed->hvbox), embed->socket, TRUE, TRUE, 0);
+
+  g_signal_connect (G_OBJECT (embed->socket), "plug-added",
+                    G_CALLBACK (embed_plug_added), embed);
+  g_signal_connect (G_OBJECT (embed->socket), "plug-removed",
+                    G_CALLBACK (embed_plug_removed), embed);
+  g_signal_connect (G_OBJECT (embed->socket), "realize",
+                    G_CALLBACK (embed_start_search), embed);
+
+  if (update_size)
+    embed_size_changed (embed->plugin,
+                        xfce_panel_plugin_get_size(embed->plugin), embed);
+}
+
+
+
+static void
+embed_popout (GtkMenuItem *popout_menu, EmbedPlugin *embed)
+{
+  GtkWidget *socket;
+  if (!embed->plug_is_gtkplug) {
+    /* Since we're not hosting a gtkplug, we should reparent the window so we
+     * don't break the program we were hosting. */
+    /* TODO: reparent */
+  }
+  /* Don't enable searching for a new window. */
+  embed->disable_search = TRUE;
+  /* destroy socket and make a new one. destroy does not trigger plug_removed */
+  DBG("destroy");
+  socket = embed->socket;
+  embed_plug_removed (GTK_SOCKET (embed->socket), embed);
+  gtk_widget_destroy (socket);
+}
+
+
+
+static void
+embed_construct (XfcePanelPlugin *plugin)
+{
+  EmbedPlugin *embed;
+
+  /* setup translation domain */
+  xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+
+  /* create the plugin */
+  embed = embed_new (plugin);
+
+  /* add the hvbox to the panel */
+  gtk_container_add (GTK_CONTAINER (plugin), embed->hvbox);
+
+  /* show the panel's right-click menu on this hvbox */
+  xfce_panel_plugin_add_action_widget (plugin, embed->hvbox);
+
+  /* connect plugin signals */
+  g_signal_connect (G_OBJECT (plugin), "free-data",
+                    G_CALLBACK (embed_free), embed);
+
+  g_signal_connect (G_OBJECT (plugin), "save",
+                    G_CALLBACK (embed_save), embed);
+
+  g_signal_connect (G_OBJECT (plugin), "size-changed",
+                    G_CALLBACK (embed_size_changed), embed);
+
+  g_signal_connect (G_OBJECT (plugin), "orientation-changed",
+                    G_CALLBACK (embed_orientation_changed), embed);
+
+  /* Add the "pop out" menu item */
+  xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM(embed->popout_menu));
+  g_signal_connect (G_OBJECT (embed->popout_menu), "activate",
+                    G_CALLBACK (embed_popout), embed);
+
+  /* Add the "embed" menu item */
+  xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM(embed->embed_menu));
+  g_signal_connect (G_OBJECT (embed->embed_menu), "activate",
+                    G_CALLBACK (embed_embed_menu), embed);
+
+  /* show the configure menu item and connect signal */
+  xfce_panel_plugin_menu_show_configure (plugin);
+  g_signal_connect (G_OBJECT (plugin), "configure-plugin",
+                    G_CALLBACK (embed_configure), embed);
+
+  /* show the about menu item and connect signal */
+  xfce_panel_plugin_menu_show_about (plugin);
+  g_signal_connect (G_OBJECT (plugin), "about",
+                    G_CALLBACK (embed_about), NULL);
+}
diff --git a/panel-plugin/embed.desktop.in.in b/panel-plugin/embed.desktop.in.in
new file mode 100644
index 0000000..b656af4
--- /dev/null
+++ b/panel-plugin/embed.desktop.in.in
@@ -0,0 +1,8 @@
+[Xfce Panel]
+Type=X-XFCE-PanelPlugin
+Encoding=UTF-8
+_Name=Embed Plugin
+_Comment=Embeds an arbitrary window into the panel
+Icon=xfce4-embed-plugin
+X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-embed-plugin
+#X-XFCE-Unique=true
diff --git a/panel-plugin/sample.h b/panel-plugin/embed.h
similarity index 52%
rename from panel-plugin/sample.h
rename to panel-plugin/embed.h
index cc46e2d..995e875 100644
--- a/panel-plugin/sample.h
+++ b/panel-plugin/embed.h
@@ -1,6 +1,6 @@
 /*  $Id$
  *
- *  Copyright (c) 2011 John Doo <john at foo.org>
+ *  Copyright (c) 2011 David Schneider <dnschneid at gmail.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -17,8 +17,8 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef __SAMPLE_H__
-#define __SAMPLE_H__
+#ifndef __EMBED_H__
+#define __EMBED_H__
 
 G_BEGIN_DECLS
 
@@ -28,23 +28,40 @@ typedef struct
     XfcePanelPlugin *plugin;
 
     /* panel widgets */
-    GtkWidget       *ebox;
     GtkWidget       *hvbox;
+    GtkWidget       *separator;
     GtkWidget       *label;
+    GtkWidget       *socket;
+    GtkWidget       *popout_menu;
+    GtkWidget       *embed_menu;
 
-    /* sample settings */
-    gchar           *setting1;
-    gint             setting2;
-    gboolean         setting3;
+    /* panel data */
+    GdkNativeWindow  plug;
+    gint             plug_width;
+    gint             plug_height;
+    gboolean         plug_is_gtkplug;
+
+    guint            search_timer;
+    gboolean         disable_search;
+
+    /* embed settings */
+    gchar           *proc_name;
+    gchar           *window_name;
+    gchar           *label_fmt;
+    gint             poll_delay;
+    gint             min_size;
+    gboolean         expand;
 }
-SamplePlugin;
+EmbedPlugin;
 
+/* Special values for EmbedPlugin::min_size */
+#define EMBED_MIN_SIZE_MATCH_WINDOW 0
 
 
 void
-sample_save (XfcePanelPlugin *plugin,
-             SamplePlugin    *sample);
+embed_save (XfcePanelPlugin *plugin,
+             EmbedPlugin    *embed);
 
 G_END_DECLS
 
-#endif /* !__SAMPLE_H__ */
+#endif /* !__EMBED_H__ */
diff --git a/panel-plugin/sample.c b/panel-plugin/sample.c
deleted file mode 100644
index b638e5e..0000000
--- a/panel-plugin/sample.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*  $Id$
- *
- *  Copyright (c) 2011 John Doo <john at foo.org>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program 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 Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <gtk/gtk.h>
-#include <libxfce4util/libxfce4util.h>
-#include <libxfce4panel/xfce-panel-plugin.h>
-#include <libxfce4panel/xfce-hvbox.h>
-
-#include "sample.h"
-#include "sample-dialogs.h"
-
-/* default settings */
-#define DEFAULT_SETTING1 NULL
-#define DEFAULT_SETTING2 1
-#define DEFAULT_SETTING3 FALSE
-
-
-
-/* prototypes */
-static void
-sample_construct (XfcePanelPlugin *plugin);
-
-
-/* register the plugin */
-XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (sample_construct);
-
-
-
-void
-sample_save (XfcePanelPlugin *plugin,
-             SamplePlugin    *sample)
-{
-  XfceRc *rc;
-  gchar  *file;
-
-  /* get the config file location */
-  file = xfce_panel_plugin_save_location (plugin, TRUE);
-
-  if (G_UNLIKELY (file == NULL))
-    {
-       DBG ("Failed to open config file");
-       return;
-    }
-
-  /* open the config file, read/write */
-  rc = xfce_rc_simple_open (file, FALSE);
-  g_free (file);
-
-  if (G_LIKELY (rc != NULL))
-    {
-      /* save the settings */
-      DBG(".");
-      if (sample->setting1)
-        xfce_rc_write_entry    (rc, "setting1", sample->setting1);
-
-      xfce_rc_write_int_entry  (rc, "setting2", sample->setting2);
-      xfce_rc_write_bool_entry (rc, "setting3", sample->setting3);
-
-      /* close the rc file */
-      xfce_rc_close (rc);
-    }
-}
-
-
-
-static void
-sample_read (SamplePlugin *sample)
-{
-  XfceRc      *rc;
-  gchar       *file;
-  const gchar *value;
-
-  /* get the plugin config file location */
-  file = xfce_panel_plugin_save_location (sample->plugin, TRUE);
-
-  if (G_LIKELY (file != NULL))
-    {
-      /* open the config file, readonly */
-      rc = xfce_rc_simple_open (file, TRUE);
-
-      /* cleanup */
-      g_free (file);
-
-      if (G_LIKELY (rc != NULL))
-        {
-          /* read the settings */
-          value = xfce_rc_read_entry (rc, "setting1", DEFAULT_SETTING1);
-          sample->setting1 = g_strdup (value);
-
-          sample->setting2 = xfce_rc_read_int_entry (rc, "setting2", DEFAULT_SETTING2);
-          sample->setting3 = xfce_rc_read_bool_entry (rc, "setting3", DEFAULT_SETTING3);
-
-          /* cleanup */
-          xfce_rc_close (rc);
-
-          /* leave the function, everything went well */
-          return;
-        }
-    }
-
-  /* something went wrong, apply default values */
-  DBG ("Applying default settings");
-
-  sample->setting1 = g_strdup (DEFAULT_SETTING1);
-  sample->setting2 = DEFAULT_SETTING2;
-  sample->setting3 = DEFAULT_SETTING3;
-}
-
-
-
-static SamplePlugin *
-sample_new (XfcePanelPlugin *plugin)
-{
-  SamplePlugin   *sample;
-  GtkOrientation  orientation;
-  GtkWidget      *label;
-
-  /* allocate memory for the plugin structure */
-  sample = panel_slice_new0 (SamplePlugin);
-
-  /* pointer to plugin */
-  sample->plugin = plugin;
-
-  /* read the user settings */
-  sample_read (sample);
-
-  /* get the current orientation */
-  orientation = xfce_panel_plugin_get_orientation (plugin);
-
-  /* create some panel widgets */
-  sample->ebox = gtk_event_box_new ();
-  gtk_widget_show (sample->ebox);
-
-  sample->hvbox = xfce_hvbox_new (orientation, FALSE, 2);
-  gtk_widget_show (sample->hvbox);
-  gtk_container_add (GTK_CONTAINER (sample->ebox), sample->hvbox);
-
-  /* some sample widgets */
-  label = gtk_label_new (_("Sample"));
-  gtk_widget_show (label);
-  gtk_box_pack_start (GTK_BOX (sample->hvbox), label, FALSE, FALSE, 0);
-
-  label = gtk_label_new (_("Plugin"));
-  gtk_widget_show (label);
-  gtk_box_pack_start (GTK_BOX (sample->hvbox), label, FALSE, FALSE, 0);
-
-  return sample;
-}
-
-
-
-static void
-sample_free (XfcePanelPlugin *plugin,
-             SamplePlugin    *sample)
-{
-  GtkWidget *dialog;
-
-  /* check if the dialog is still open. if so, destroy it */
-  dialog = g_object_get_data (G_OBJECT (plugin), "dialog");
-  if (G_UNLIKELY (dialog != NULL))
-    gtk_widget_destroy (dialog);
-
-  /* destroy the panel widgets */
-  gtk_widget_destroy (sample->hvbox);
-
-  /* cleanup the settings */
-  if (G_LIKELY (sample->setting1 != NULL))
-    g_free (sample->setting1);
-
-  /* free the plugin structure */
-  panel_slice_free (SamplePlugin, sample);
-}
-
-
-
-static void
-sample_orientation_changed (XfcePanelPlugin *plugin,
-                            GtkOrientation   orientation,
-                            SamplePlugin    *sample)
-{
-  /* change the orienation of the box */
-  xfce_hvbox_set_orientation (XFCE_HVBOX (sample->hvbox), orientation);
-}
-
-
-
-static gboolean
-sample_size_changed (XfcePanelPlugin *plugin,
-                     gint             size,
-                     SamplePlugin    *sample)
-{
-  GtkOrientation orientation;
-
-  /* get the orientation of the plugin */
-  orientation = xfce_panel_plugin_get_orientation (plugin);
-
-  /* set the widget size */
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, size);
-  else
-    gtk_widget_set_size_request (GTK_WIDGET (plugin), size, -1);
-
-  /* we handled the orientation */
-  return TRUE;
-}
-
-
-
-static void
-sample_construct (XfcePanelPlugin *plugin)
-{
-  SamplePlugin *sample;
-
-  /* setup transation domain */
-  xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
-
-  /* create the plugin */
-  sample = sample_new (plugin);
-
-  /* add the ebox to the panel */
-  gtk_container_add (GTK_CONTAINER (plugin), sample->ebox);
-
-  /* show the panel's right-click menu on this ebox */
-  xfce_panel_plugin_add_action_widget (plugin, sample->ebox);
-
-  /* connect plugin signals */
-  g_signal_connect (G_OBJECT (plugin), "free-data",
-                    G_CALLBACK (sample_free), sample);
-
-  g_signal_connect (G_OBJECT (plugin), "save",
-                    G_CALLBACK (sample_save), sample);
-
-  g_signal_connect (G_OBJECT (plugin), "size-changed",
-                    G_CALLBACK (sample_size_changed), sample);
-
-  g_signal_connect (G_OBJECT (plugin), "orientation-changed",
-                    G_CALLBACK (sample_orientation_changed), sample);
-
-  /* show the configure menu item and connect signal */
-  xfce_panel_plugin_menu_show_configure (plugin);
-  g_signal_connect (G_OBJECT (plugin), "configure-plugin",
-                    G_CALLBACK (sample_configure), sample);
-
-  /* show the about menu item and connect signal */
-  xfce_panel_plugin_menu_show_about (plugin);
-  g_signal_connect (G_OBJECT (plugin), "about",
-                    G_CALLBACK (sample_about), NULL);
-}
diff --git a/panel-plugin/sample.desktop.in.in b/panel-plugin/sample.desktop.in.in
deleted file mode 100644
index c779fa3..0000000
--- a/panel-plugin/sample.desktop.in.in
+++ /dev/null
@@ -1,8 +0,0 @@
-[Xfce Panel]
-Type=X-XFCE-PanelPlugin
-Encoding=UTF-8
-_Name=Sample Plugin
-_Comment=Sample plugin for the Xfce panel
-Icon=xfce4-sample-plugin
-X-XFCE-Exec=@libexecdir@/xfce4/panel-plugins/xfce4-sample-plugin
-#X-XFCE-Unique=true
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 96b4c0c..8b77e8c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,3 +1,3 @@
-panel-plugin/sample.c
-panel-plugin/sample-dialogs.c
-panel-plugin/sample.desktop.in.in
+panel-plugin/embed.c
+panel-plugin/embed-dialogs.c
+panel-plugin/embed.desktop.in.in


More information about the Xfce4-commits mailing list