[Swfdec] Branch 'vivi' - 6 commits - configure.ac vivified/core vivified/dock vivified/Makefile.am vivified/ui
Benjamin Otte
company at kemper.freedesktop.org
Thu Aug 9 05:24:19 PDT 2007
configure.ac | 1
vivified/Makefile.am | 2
vivified/core/vivi_application.c | 7 +
vivified/dock/.gitignore | 12 ++
vivified/dock/Makefile.am | 15 +++
vivified/dock/vivi_docker.c | 93 +++++++++++++++++++
vivified/dock/vivi_docker.h | 55 +++++++++++
vivified/dock/vivi_docklet.c | 172 +++++++++++++++++++++++++++++++++++
vivified/dock/vivi_docklet.h | 61 ++++++++++++
vivified/dock/vivi_vdock.c | 190 +++++++++++++++++++++++++++++++++++++++
vivified/dock/vivi_vdock.h | 54 +++++++++++
vivified/dock/vivified-dock.h | 26 +++++
vivified/ui/Makefile.am | 10 +-
vivified/ui/main.c | 25 +----
vivified/ui/vivi_commandline.c | 75 +++++++++++++++
vivified/ui/vivi_commandline.h | 54 +++++++++++
16 files changed, 828 insertions(+), 24 deletions(-)
New commits:
diff-tree e506ea7bfceb2b1a0a9237141d6137cf39110233 (from 555b7cbb3f3edd2e9c5293e8c8d5d1f9b6012531)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 14:24:12 2007 +0200
implement size_request, size_allocate and foreach
why does GtkBin not implement this?
diff --git a/vivified/dock/vivi_docklet.c b/vivified/dock/vivi_docklet.c
index 42c8aa2..f6bc015 100644
--- a/vivified/dock/vivi_docklet.c
+++ b/vivified/dock/vivi_docklet.c
@@ -81,9 +81,34 @@ vivi_docklet_dispose (GObject *object)
}
static void
+vivi_docklet_size_request (GtkWidget *widget, GtkRequisition *req)
+{
+ GtkWidget *child = GTK_BIN (widget)->child;
+
+ if (child) {
+ gtk_widget_size_request (child, req);
+ } else {
+ req->width = req->height = 0;
+ }
+}
+
+static void
+vivi_docklet_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+{
+ GtkWidget *child = GTK_BIN (widget)->child;
+
+ GTK_WIDGET_CLASS (vivi_docklet_parent_class)->size_allocate (widget, allocation);
+
+ if (child && GTK_WIDGET_VISIBLE (child)) {
+ gtk_widget_size_allocate (child, allocation);
+ }
+}
+
+static void
vivi_docklet_class_init (ViviDockletClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->dispose = vivi_docklet_dispose;
object_class->get_property = vivi_docklet_get_property;
@@ -95,6 +120,9 @@ vivi_docklet_class_init (ViviDockletClas
g_object_class_install_property (object_class, PROP_ICON,
g_param_spec_string ("icon", "icon", "name of the icon to display",
GTK_STOCK_MISSING_IMAGE, G_PARAM_READWRITE));
+
+ widget_class->size_request = vivi_docklet_size_request;
+ widget_class->size_allocate = vivi_docklet_size_allocate;
}
static void
diff --git a/vivified/dock/vivi_vdock.c b/vivified/dock/vivi_vdock.c
index 6ade29a..1559ec1 100644
--- a/vivified/dock/vivi_vdock.c
+++ b/vivified/dock/vivi_vdock.c
@@ -39,6 +39,30 @@ vivi_vdock_dispose (GObject *object)
}
static void
+vivi_vdock_size_request (GtkWidget *widget, GtkRequisition *req)
+{
+ GtkWidget *child = GTK_BIN (widget)->child;
+
+ if (child) {
+ gtk_widget_size_request (child, req);
+ } else {
+ req->width = req->height = 0;
+ }
+}
+
+static void
+vivi_vdock_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+{
+ GtkWidget *child = GTK_BIN (widget)->child;
+
+ GTK_WIDGET_CLASS (vivi_vdock_parent_class)->size_allocate (widget, allocation);
+
+ if (child && GTK_WIDGET_VISIBLE (child)) {
+ gtk_widget_size_allocate (child, allocation);
+ }
+}
+
+static void
vivi_vdock_add (GtkContainer *container, GtkWidget *widget)
{
ViviVDock *vdock = VIVI_VDOCK (container);
@@ -119,16 +143,37 @@ vivi_vdock_child_type (GtkContainer *con
}
static void
+vivi_vdock_forall (GtkContainer *container, gboolean include_internals,
+ GtkCallback callback, gpointer callback_data)
+{
+ if (include_internals) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->forall (container, include_internals,
+ callback, callback_data);
+ } else {
+ GList *walk;
+
+ for (walk = VIVI_VDOCK (container)->docklets; walk; walk = walk->next) {
+ callback (walk->data, callback_data);
+ }
+ }
+}
+
+static void
vivi_vdock_class_init (ViviVDockClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
object_class->dispose = vivi_vdock_dispose;
+ widget_class->size_request = vivi_vdock_size_request;
+ widget_class->size_allocate = vivi_vdock_size_allocate;
+
container_class->add = vivi_vdock_add;
container_class->remove = vivi_vdock_remove;
container_class->child_type = vivi_vdock_child_type;
+ container_class->forall = vivi_vdock_forall;
}
static void
diff-tree 555b7cbb3f3edd2e9c5293e8c8d5d1f9b6012531 (from 5764ac047bfb06bcac2f20541dad99ad4423bace)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 14:21:48 2007 +0200
use LDADD for including our own libraries
diff --git a/vivified/ui/Makefile.am b/vivified/ui/Makefile.am
index 83d58f3..5509035 100644
--- a/vivified/ui/Makefile.am
+++ b/vivified/ui/Makefile.am
@@ -1,7 +1,8 @@
noinst_PROGRAMS = vivified
vivified_CFLAGS = $(GLOBAL_CFLAGS) $(SWFDEC_GTK_CFLAGS)
-vivified_LDFLAGS = $(SWFDEC_GTK_LIBS) \
+vivified_LDFLAGS = $(SWFDEC_GTK_LIBS)
+vivified_LDADD = \
$(top_builddir)/vivified/core/libvivified-core.la \
$(top_builddir)/vivified/dock/libvivified-dock.la
diff-tree 5764ac047bfb06bcac2f20541dad99ad4423bace (from 2e41ba5f7b9b9e1e2ae7b2e6301597b5295d186b)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 14:21:26 2007 +0200
show the newly added widgets
diff --git a/vivified/dock/vivi_docker.c b/vivified/dock/vivi_docker.c
index 77a3839..90a0de9 100644
--- a/vivified/dock/vivi_docker.c
+++ b/vivified/dock/vivi_docker.c
@@ -69,7 +69,9 @@ vivi_docker_set_docklet (ViviDocker *doc
g_return_if_fail (VIVI_IS_DOCKLET (docklet));
box = gtk_hbox_new (FALSE, 3);
+ gtk_widget_show (box);
widget = gtk_label_new (vivi_docklet_get_title (docklet));
+ gtk_widget_show (widget);
g_signal_connect (docklet, "notify::title", G_CALLBACK (vivi_docker_docklet_notify_title), widget);
gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
gtk_expander_set_label_widget (GTK_EXPANDER (docker), box);
diff-tree 2e41ba5f7b9b9e1e2ae7b2e6301597b5295d186b (from 3c9914ddfb97b6c3d9a25c1651337e85aa4e9c4c)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 13:53:49 2007 +0200
add simple command line entry for testing the doc
diff --git a/vivified/ui/Makefile.am b/vivified/ui/Makefile.am
index 05e37df..83d58f3 100644
--- a/vivified/ui/Makefile.am
+++ b/vivified/ui/Makefile.am
@@ -6,7 +6,9 @@ vivified_LDFLAGS = $(SWFDEC_GTK_LIBS) \
$(top_builddir)/vivified/dock/libvivified-dock.la
vivified_SOURCES = \
+ vivi_commandline.c \
main.c
-noinst_HEADERS =
+noinst_HEADERS = \
+ vivi_commandline.h
diff --git a/vivified/ui/main.c b/vivified/ui/main.c
index 7893e7e..1dd43e6 100644
--- a/vivified/ui/main.c
+++ b/vivified/ui/main.c
@@ -24,18 +24,8 @@
#include <gtk/gtk.h>
#include <libswfdec-gtk/swfdec-gtk.h>
#include "vivified/core/vivified-core.h"
-
-static void
-entry_activate_cb (GtkEntry *entry, ViviApplication *app)
-{
- const char *text = gtk_entry_get_text (entry);
-
- if (text[0] == '\0')
- return;
-
- //swfdec_player_manager_execute (manager, text);
- gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
-}
+#include "vivified/dock/vivified-dock.h"
+#include "vivi_commandline.h"
static void
setup (const char *filename)
@@ -45,15 +35,10 @@ setup (const char *filename)
app = vivi_application_new ();
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- box = gtk_vbox_new (FALSE, 0);
+ box = vivi_vdock_new ();
gtk_container_add (GTK_CONTAINER (window), box);
- /* widget displaying the Flash */
- widget = swfdec_gtk_widget_new (NULL);
- gtk_box_pack_start (GTK_BOX (box), widget, FALSE, FALSE, 0);
- /* text entry */
- widget = gtk_entry_new ();
- g_signal_connect (widget, "activate", G_CALLBACK (entry_activate_cb), app);
- gtk_box_pack_end (GTK_BOX (box), widget, FALSE, TRUE, 0);
+ widget = vivi_command_line_new (app);
+ gtk_container_add (GTK_CONTAINER (box), widget);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show_all (window);
diff --git a/vivified/ui/vivi_commandline.c b/vivified/ui/vivi_commandline.c
new file mode 100644
index 0000000..ced3e15
--- /dev/null
+++ b/vivified/ui/vivi_commandline.c
@@ -0,0 +1,75 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vivi_commandline.h"
+
+G_DEFINE_TYPE (ViviCommandLine, vivi_command_line, VIVI_TYPE_DOCKLET)
+
+static void
+vivi_command_line_dispose (GObject *object)
+{
+ //ViviCommandLine *command_line = VIVI_COMMAND_LINE (object);
+
+ G_OBJECT_CLASS (vivi_command_line_parent_class)->dispose (object);
+}
+
+static void
+vivi_command_line_class_init (ViviCommandLineClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = vivi_command_line_dispose;
+}
+
+static void
+command_line_entry_activate_cb (GtkEntry *entry, ViviCommandLine *command_line)
+{
+ const char *text = gtk_entry_get_text (entry);
+
+ if (text[0] == '\0')
+ return;
+
+ g_print ("%s\n", text);
+ //swfdec_player_manager_execute (manager, text);
+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
+}
+
+static void
+vivi_command_line_init (ViviCommandLine *command_line)
+{
+ GtkWidget *entry;
+
+ entry = gtk_entry_new ();
+ gtk_container_add (GTK_CONTAINER (command_line), entry);
+ g_signal_connect (entry, "activate", G_CALLBACK (command_line_entry_activate_cb), command_line);
+}
+
+GtkWidget *
+vivi_command_line_new (ViviApplication *app)
+{
+ GtkWidget *cl;
+
+ cl = g_object_new (VIVI_TYPE_COMMAND_LINE, "title", "Command Line", NULL);
+ return cl;
+}
+
diff --git a/vivified/ui/vivi_commandline.h b/vivified/ui/vivi_commandline.h
new file mode 100644
index 0000000..f38da32
--- /dev/null
+++ b/vivified/ui/vivi_commandline.h
@@ -0,0 +1,54 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef _VIVI_COMMAND_LINE_H_
+#define _VIVI_COMMAND_LINE_H_
+
+#include <vivified/core/vivified-core.h>
+#include <vivified/dock/vivified-dock.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _ViviCommandLine ViviCommandLine;
+typedef struct _ViviCommandLineClass ViviCommandLineClass;
+
+#define VIVI_TYPE_COMMAND_LINE (vivi_command_line_get_type())
+#define VIVI_IS_COMMAND_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIVI_TYPE_COMMAND_LINE))
+#define VIVI_IS_COMMAND_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIVI_TYPE_COMMAND_LINE))
+#define VIVI_COMMAND_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIVI_TYPE_COMMAND_LINE, ViviCommandLine))
+#define VIVI_COMMAND_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIVI_TYPE_COMMAND_LINE, ViviCommandLineClass))
+#define VIVI_COMMAND_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIVI_TYPE_COMMAND_LINE, ViviCommandLineClass))
+
+struct _ViviCommandLine {
+ ViviDocklet docklet;
+};
+
+struct _ViviCommandLineClass
+{
+ ViviDockletClass docklet_class;
+};
+
+GType vivi_command_line_get_type (void);
+
+GtkWidget * vivi_command_line_new (ViviApplication * app);
+
+
+G_END_DECLS
+#endif
diff-tree 3c9914ddfb97b6c3d9a25c1651337e85aa4e9c4c (from d16bed72235542b5d4ce5172e0718072f6d340f0)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 13:53:26 2007 +0200
add vdock widget
This is supposed to be a vertical dock.
diff --git a/vivified/dock/Makefile.am b/vivified/dock/Makefile.am
index 114a137..590e5cf 100644
--- a/vivified/dock/Makefile.am
+++ b/vivified/dock/Makefile.am
@@ -4,8 +4,12 @@ libvivified_dock_la_CFLAGS = $(GLOBAL_CF
libvivified_dock_la_LDFLAGS = $(GTK_LIBS)
libvivified_dock_la_SOURCES = \
- vivi_docklet.c
+ vivi_docker.c \
+ vivi_docklet.c \
+ vivi_vdock.c
noinst_HEADERS = \
+ vivi_docker.h \
vivi_docklet.h \
+ vivi_vdock.h \
vivified-dock.h
diff --git a/vivified/dock/vivi_docker.c b/vivified/dock/vivi_docker.c
new file mode 100644
index 0000000..77a3839
--- /dev/null
+++ b/vivified/dock/vivi_docker.c
@@ -0,0 +1,91 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vivi_docker.h"
+
+enum {
+ REQUEST_CLOSE,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (ViviDocker, vivi_docker, GTK_TYPE_EXPANDER)
+
+static void
+vivi_docker_dispose (GObject *object)
+{
+ //ViviDocker *docker = VIVI_DOCKER (object);
+
+ G_OBJECT_CLASS (vivi_docker_parent_class)->dispose (object);
+}
+
+static void
+vivi_docker_class_init (ViviDockerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = vivi_docker_dispose;
+
+ signals[REQUEST_CLOSE] = 0;
+}
+
+static void
+vivi_docker_init (ViviDocker *docker)
+{
+}
+
+static void
+vivi_docker_docklet_notify_title (ViviDocklet *docklet, GParamSpec *pspec, GtkLabel *label)
+{
+ gtk_label_set_text (label, vivi_docklet_get_title (docklet));
+}
+
+static void
+vivi_docker_set_docklet (ViviDocker *docker, ViviDocklet *docklet)
+{
+ GtkWidget *box, *widget;
+
+ g_return_if_fail (VIVI_IS_DOCKER (docker));
+ g_return_if_fail (VIVI_IS_DOCKLET (docklet));
+
+ box = gtk_hbox_new (FALSE, 3);
+ widget = gtk_label_new (vivi_docklet_get_title (docklet));
+ g_signal_connect (docklet, "notify::title", G_CALLBACK (vivi_docker_docklet_notify_title), widget);
+ gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
+ gtk_expander_set_label_widget (GTK_EXPANDER (docker), box);
+ gtk_container_add (GTK_CONTAINER (docker), GTK_WIDGET (docklet));
+}
+
+GtkWidget *
+vivi_docker_new (ViviDocklet *docklet)
+{
+ GtkWidget *widget;
+
+ g_return_val_if_fail (VIVI_IS_DOCKLET (docklet), NULL);
+
+ widget = g_object_new (VIVI_TYPE_DOCKER, "expanded", TRUE, NULL);
+ vivi_docker_set_docklet (VIVI_DOCKER (widget), docklet);
+ return widget;
+}
+
+
diff --git a/vivified/dock/vivi_docker.h b/vivified/dock/vivi_docker.h
new file mode 100644
index 0000000..3baaf8d
--- /dev/null
+++ b/vivified/dock/vivi_docker.h
@@ -0,0 +1,55 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef _VIVI_DOCKER_H_
+#define _VIVI_DOCKER_H_
+
+#include <gtk/gtk.h>
+#include <vivified/dock/vivi_docklet.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _ViviDocker ViviDocker;
+typedef struct _ViviDockerClass ViviDockerClass;
+
+#define VIVI_TYPE_DOCKER (vivi_docker_get_type())
+#define VIVI_IS_DOCKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIVI_TYPE_DOCKER))
+#define VIVI_IS_DOCKER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIVI_TYPE_DOCKER))
+#define VIVI_DOCKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIVI_TYPE_DOCKER, ViviDocker))
+#define VIVI_DOCKER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIVI_TYPE_DOCKER, ViviDockerClass))
+#define VIVI_DOCKER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIVI_TYPE_DOCKER, ViviDockerClass))
+
+struct _ViviDocker {
+ GtkExpander bin;
+};
+
+struct _ViviDockerClass
+{
+ GtkExpanderClass bin_class;
+
+ void (* request_close) (ViviDocker * docker);
+};
+
+GType vivi_docker_get_type (void);
+
+GtkWidget * vivi_docker_new (ViviDocklet * docklet);
+
+G_END_DECLS
+#endif
diff --git a/vivified/dock/vivi_vdock.c b/vivified/dock/vivi_vdock.c
new file mode 100644
index 0000000..6ade29a
--- /dev/null
+++ b/vivified/dock/vivi_vdock.c
@@ -0,0 +1,145 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vivi_vdock.h"
+#include "vivi_docker.h"
+#include "vivi_docklet.h"
+
+G_DEFINE_TYPE (ViviVDock, vivi_vdock, GTK_TYPE_BIN)
+
+static void
+vivi_vdock_dispose (GObject *object)
+{
+ ViviVDock *vdock = VIVI_VDOCK (object);
+
+ g_list_free (vdock->docklets);
+ vdock->docklets = NULL;
+
+ G_OBJECT_CLASS (vivi_vdock_parent_class)->dispose (object);
+}
+
+static void
+vivi_vdock_add (GtkContainer *container, GtkWidget *widget)
+{
+ ViviVDock *vdock = VIVI_VDOCK (container);
+ GtkWidget *docker;
+
+ docker = vivi_docker_new (VIVI_DOCKLET (widget));
+ gtk_widget_show (docker);
+
+ g_object_ref (widget);
+ if (vdock->docklets == NULL) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->add (container, docker);
+ } else {
+ /* docklet is in docker */
+ GtkWidget *last = gtk_widget_get_parent (vdock->docklets->data);
+ GtkWidget *parent = gtk_widget_get_parent (last);
+ GtkWidget *paned;
+
+ g_object_ref (parent);
+ if (parent == (GtkWidget *) container) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->remove (container, last);
+ } else {
+ gtk_container_remove (GTK_CONTAINER (parent), last);
+ }
+ paned = gtk_vpaned_new ();
+ gtk_paned_pack1 (GTK_PANED (paned), docker, TRUE, FALSE);
+ gtk_paned_pack2 (GTK_PANED (paned), last, TRUE, FALSE);
+ g_object_unref (last);
+ gtk_widget_show (paned);
+ if (parent == (GtkWidget *) container) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->add (container, paned);
+ } else {
+ gtk_paned_pack1 (GTK_PANED (parent), paned, TRUE, FALSE);
+ }
+ }
+ vdock->docklets = g_list_prepend (vdock->docklets, widget);
+}
+
+static void
+vivi_vdock_remove (GtkContainer *container, GtkWidget *widget)
+{
+ ViviVDock *vdock = VIVI_VDOCK (container);
+ GtkWidget *docker, *parent;
+
+ g_return_if_fail (g_list_find (vdock->docklets, widget));
+
+ docker = gtk_widget_get_parent (widget);
+ parent = gtk_widget_get_parent (docker);
+ if (parent == (GtkWidget *) container) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->remove (container, docker);
+ } else {
+ GtkWidget *other;
+ GtkWidget *paned_parent;
+ g_assert (GTK_IS_PANED (parent));
+ paned_parent = gtk_widget_get_parent (parent);
+ other = gtk_paned_get_child1 (GTK_PANED (parent));
+ if (other == docker)
+ other = gtk_paned_get_child2 (GTK_PANED (parent));
+ g_object_ref (other);
+ gtk_container_remove (GTK_CONTAINER (parent), docker);
+ gtk_container_remove (GTK_CONTAINER (parent), other);
+ if (paned_parent == (GtkWidget *) container) {
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->remove (container, parent);
+ GTK_CONTAINER_CLASS (vivi_vdock_parent_class)->remove (container, other);
+ } else {
+ gtk_container_remove (GTK_CONTAINER (paned_parent), parent);
+ gtk_paned_pack1 (GTK_PANED (parent), other, TRUE, FALSE);
+ }
+ g_object_unref (other);
+ }
+ vdock->docklets = g_list_remove (vdock->docklets, widget);
+ g_object_unref (widget);
+}
+
+static GType
+vivi_vdock_child_type (GtkContainer *container)
+{
+ return VIVI_TYPE_DOCKLET;
+}
+
+static void
+vivi_vdock_class_init (ViviVDockClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+
+ object_class->dispose = vivi_vdock_dispose;
+
+ container_class->add = vivi_vdock_add;
+ container_class->remove = vivi_vdock_remove;
+ container_class->child_type = vivi_vdock_child_type;
+}
+
+static void
+vivi_vdock_init (ViviVDock *vdock)
+{
+}
+
+GtkWidget *
+vivi_vdock_new (void)
+{
+ return g_object_new (VIVI_TYPE_VDOCK, NULL);
+}
+
+
diff --git a/vivified/dock/vivi_vdock.h b/vivified/dock/vivi_vdock.h
new file mode 100644
index 0000000..ec3527f
--- /dev/null
+++ b/vivified/dock/vivi_vdock.h
@@ -0,0 +1,54 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef _VIVI_VDOCK_H_
+#define _VIVI_VDOCK_H_
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _ViviVDock ViviVDock;
+typedef struct _ViviVDockClass ViviVDockClass;
+
+#define VIVI_TYPE_VDOCK (vivi_vdock_get_type())
+#define VIVI_IS_VDOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIVI_TYPE_VDOCK))
+#define VIVI_IS_VDOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIVI_TYPE_VDOCK))
+#define VIVI_VDOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIVI_TYPE_VDOCK, ViviVDock))
+#define VIVI_VDOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIVI_TYPE_VDOCK, ViviVDockClass))
+#define VIVI_VDOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIVI_TYPE_VDOCK, ViviVDockClass))
+
+struct _ViviVDock {
+ GtkBin bin;
+
+ GList * docklets; /* all the docklets that got added to us */
+};
+
+struct _ViviVDockClass
+{
+ GtkBinClass bin_class;
+};
+
+GType vivi_vdock_get_type (void);
+
+GtkWidget * vivi_vdock_new (void);
+
+G_END_DECLS
+#endif
diff --git a/vivified/dock/vivified-dock.h b/vivified/dock/vivified-dock.h
index 401d6c5..244aad8 100644
--- a/vivified/dock/vivified-dock.h
+++ b/vivified/dock/vivified-dock.h
@@ -21,5 +21,6 @@
#define __VIVIFIED_DOCK_H__
#include <vivified/dock/vivi_docklet.h>
+#include <vivified/dock/vivi_vdock.h>
#endif
diff-tree d16bed72235542b5d4ce5172e0718072f6d340f0 (from d416dd57fbf03e1601e10675dee252259b10f762)
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Aug 9 11:47:06 2007 +0200
add dock library
let' hope that there'll be a GtkDock at some point so we can throw this away.
Or someone makes a GtkDock lib out of this :)
diff --git a/configure.ac b/configure.ac
index 207e360..e9996f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -326,6 +326,7 @@ test/trace/Makefile
test/various/Makefile
vivified/Makefile
vivified/core/Makefile
+vivified/dock/Makefile
vivified/ui/Makefile
swfdec.pc
swfdec-gtk.pc
diff --git a/vivified/Makefile.am b/vivified/Makefile.am
index fd20116..8289102 100644
--- a/vivified/Makefile.am
+++ b/vivified/Makefile.am
@@ -1 +1 @@
-SUBDIRS = core ui
+SUBDIRS = core dock ui
diff --git a/vivified/core/vivi_application.c b/vivified/core/vivi_application.c
index 47a9d96..496eadf 100644
--- a/vivified/core/vivi_application.c
+++ b/vivified/core/vivi_application.c
@@ -85,6 +85,13 @@ vivi_application_class_init (ViviApplica
object_class->dispose = vivi_application_dispose;
object_class->get_property = vivi_application_get_property;
object_class->set_property = vivi_application_set_property;
+
+ g_object_class_install_property (object_class, PROP_FILENAME,
+ g_param_spec_string ("filename", "filename", "name of file to play",
+ NULL, G_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_PLAYER,
+ g_param_spec_object ("player", "player", "Flash player in use",
+ SWFDEC_TYPE_PLAYER, G_PARAM_READABLE));
}
static void
diff --git a/vivified/dock/.gitignore b/vivified/dock/.gitignore
new file mode 100644
index 0000000..b580c89
--- /dev/null
+++ b/vivified/dock/.gitignore
@@ -0,0 +1,12 @@
+*~
+CVS
+.cvsignore
+.deps
+.libs
+
+Makefile
+Makefile.in
+*.o
+*.la
+*.lo
+*.loT
diff --git a/vivified/dock/Makefile.am b/vivified/dock/Makefile.am
new file mode 100644
index 0000000..114a137
--- /dev/null
+++ b/vivified/dock/Makefile.am
@@ -0,0 +1,11 @@
+noinst_LTLIBRARIES = libvivified-dock.la
+
+libvivified_dock_la_CFLAGS = $(GLOBAL_CFLAGS) $(GTK_CFLAGS)
+libvivified_dock_la_LDFLAGS = $(GTK_LIBS)
+
+libvivified_dock_la_SOURCES = \
+ vivi_docklet.c
+
+noinst_HEADERS = \
+ vivi_docklet.h \
+ vivified-dock.h
diff --git a/vivified/dock/vivi_docklet.c b/vivified/dock/vivi_docklet.c
new file mode 100644
index 0000000..42c8aa2
--- /dev/null
+++ b/vivified/dock/vivi_docklet.c
@@ -0,0 +1,144 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vivi_docklet.h"
+
+enum {
+ PROP_0,
+ PROP_TITLE,
+ PROP_ICON
+};
+
+G_DEFINE_ABSTRACT_TYPE (ViviDocklet, vivi_docklet, GTK_TYPE_BIN)
+
+static void
+vivi_docklet_get_property (GObject *object, guint param_id, GValue *value,
+ GParamSpec * pspec)
+{
+ ViviDocklet *docklet = VIVI_DOCKLET (object);
+
+ switch (param_id) {
+ case PROP_TITLE:
+ g_value_set_string (value, docklet->title);
+ break;
+ case PROP_ICON:
+ g_value_set_string (value, docklet->icon);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+vivi_docklet_set_property (GObject *object, guint param_id, const GValue *value,
+ GParamSpec *pspec)
+{
+ ViviDocklet *docklet = VIVI_DOCKLET (object);
+
+ switch (param_id) {
+ case PROP_TITLE:
+ vivi_docklet_set_title (docklet, g_value_get_string (value));
+ break;
+ case PROP_ICON:
+ vivi_docklet_set_title (docklet, g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ }
+}
+
+static void
+vivi_docklet_dispose (GObject *object)
+{
+ ViviDocklet *docklet = VIVI_DOCKLET (object);
+
+ g_free (docklet->title);
+ g_free (docklet->icon);
+
+ G_OBJECT_CLASS (vivi_docklet_parent_class)->dispose (object);
+}
+
+static void
+vivi_docklet_class_init (ViviDockletClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = vivi_docklet_dispose;
+ object_class->get_property = vivi_docklet_get_property;
+ object_class->set_property = vivi_docklet_set_property;
+
+ g_object_class_install_property (object_class, PROP_TITLE,
+ g_param_spec_string ("title", "title", "title of this docklet",
+ "Unnamed", G_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_ICON,
+ g_param_spec_string ("icon", "icon", "name of the icon to display",
+ GTK_STOCK_MISSING_IMAGE, G_PARAM_READWRITE));
+}
+
+static void
+vivi_docklet_init (ViviDocklet *docklet)
+{
+ docklet->title = g_strdup ("Unnamed");
+ docklet->icon = g_strdup (GTK_STOCK_MISSING_IMAGE);
+}
+
+void
+vivi_docklet_set_title (ViviDocklet *docklet, const char *title)
+{
+ g_return_if_fail (VIVI_IS_DOCKLET (docklet));
+ g_return_if_fail (title != NULL);
+
+ g_free (docklet->title);
+ docklet->title = g_strdup (title);
+ g_object_notify (G_OBJECT (docklet), "title");
+}
+
+const char *
+vivi_docklet_get_title (ViviDocklet *docklet)
+{
+ g_return_val_if_fail (VIVI_IS_DOCKLET (docklet), NULL);
+
+ return docklet->title;
+}
+
+void
+vivi_docklet_set_icon (ViviDocklet *docklet, const char *icon)
+{
+ g_return_if_fail (VIVI_IS_DOCKLET (docklet));
+ g_return_if_fail (icon != NULL);
+
+ g_free (docklet->icon);
+ docklet->icon = g_strdup (icon);
+ g_object_notify (G_OBJECT (docklet), "icon");
+}
+
+const char *
+vivi_docklet_get_icon (ViviDocklet *docklet)
+{
+ g_return_val_if_fail (VIVI_IS_DOCKLET (docklet), NULL);
+
+ return docklet->icon;
+}
+
diff --git a/vivified/dock/vivi_docklet.h b/vivified/dock/vivi_docklet.h
new file mode 100644
index 0000000..1088252
--- /dev/null
+++ b/vivified/dock/vivi_docklet.h
@@ -0,0 +1,61 @@
+/* Vivified
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef _VIVI_DOCKLET_H_
+#define _VIVI_DOCKLET_H_
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _ViviDocklet ViviDocklet;
+typedef struct _ViviDockletClass ViviDockletClass;
+
+#define VIVI_TYPE_DOCKLET (vivi_docklet_get_type())
+#define VIVI_IS_DOCKLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIVI_TYPE_DOCKLET))
+#define VIVI_IS_DOCKLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIVI_TYPE_DOCKLET))
+#define VIVI_DOCKLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIVI_TYPE_DOCKLET, ViviDocklet))
+#define VIVI_DOCKLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIVI_TYPE_DOCKLET, ViviDockletClass))
+#define VIVI_DOCKLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIVI_TYPE_DOCKLET, ViviDockletClass))
+
+struct _ViviDocklet {
+ GtkBin bin;
+
+ char * title; /* title to be used */
+ char * icon; /* name of icon for docklet or "gtk-missing-image" */
+};
+
+struct _ViviDockletClass
+{
+ GtkBinClass bin_class;
+};
+
+GType vivi_docklet_get_type (void);
+
+void vivi_docklet_set_title (ViviDocklet * docklet,
+ const char * titlename);
+const char * vivi_docklet_get_title (ViviDocklet * docklet);
+void vivi_docklet_set_icon (ViviDocklet * docklet,
+ const char * titlename);
+const char * vivi_docklet_get_icon (ViviDocklet * docklet);
+
+
+G_END_DECLS
+#endif
diff --git a/vivified/dock/vivified-dock.h b/vivified/dock/vivified-dock.h
new file mode 100644
index 0000000..401d6c5
--- /dev/null
+++ b/vivified/dock/vivified-dock.h
@@ -0,0 +1,25 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifndef __VIVIFIED_DOCK_H__
+#define __VIVIFIED_DOCK_H__
+
+#include <vivified/dock/vivi_docklet.h>
+
+#endif
diff --git a/vivified/ui/Makefile.am b/vivified/ui/Makefile.am
index af6ddbd..05e37df 100644
--- a/vivified/ui/Makefile.am
+++ b/vivified/ui/Makefile.am
@@ -2,7 +2,8 @@ noinst_PROGRAMS = vivified
vivified_CFLAGS = $(GLOBAL_CFLAGS) $(SWFDEC_GTK_CFLAGS)
vivified_LDFLAGS = $(SWFDEC_GTK_LIBS) \
- $(top_builddir)/vivified/core/libvivified-core.la
+ $(top_builddir)/vivified/core/libvivified-core.la \
+ $(top_builddir)/vivified/dock/libvivified-dock.la
vivified_SOURCES = \
main.c
More information about the Swfdec
mailing list