[gnome-photos] Add a PhotosViewEmbed skeleton
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos] Add a PhotosViewEmbed skeleton
- Date: Tue, 24 Apr 2012 22:24:27 +0000 (UTC)
commit 24768e35e587cbb2c0d45c76eb3b9b5588142a58
Author: Debarshi Ray <debarshir gnome org>
Date: Wed Apr 25 00:21:03 2012 +0200
Add a PhotosViewEmbed skeleton
configure.ac | 1 +
src/Makefile.am | 4 +
src/photos-main-toolbar.c | 7 ++
src/photos-main-toolbar.h | 4 +-
src/photos-view-embed.c | 172 +++++++++++++++++++++++++++++++++++++++++++++
src/photos-view-embed.h | 71 +++++++++++++++++++
6 files changed, 258 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 5fd37df..f0a6fd9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,6 +37,7 @@ AM_GLIB_GNU_GETTEXT
LT_INIT
+PKG_CHECK_MODULES(CLUTTER, [clutter-1.0])
PKG_CHECK_MODULES(CLUTTER_GTK, [clutter-gtk-1.0])
PKG_CHECK_MODULES(GLIB, [glib-2.0])
PKG_CHECK_MODULES(GIO, [gio-2.0])
diff --git a/src/Makefile.am b/src/Makefile.am
index 8cab322..dd0e25f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,6 +15,8 @@ gnome_photos_SOURCES = \
photos-application.h \
photos-base-manager.c \
photos-base-manager.h \
+ photos-view-embed.c \
+ photos-view-embed.h \
photos-main-toolbar.c \
photos-main-toolbar.h \
photos-main-window.c \
@@ -38,6 +40,7 @@ EXTRA_DIST = \
AM_CPPFLAGS = \
-DPACKAGE_LOCALE_DIR=\""${datadir}/locale"\" \
+ $(CLUTTER_CFLAGS) \
$(CLUTTER_GTK_CFLAGS) \
$(GIO_CFLAGS) \
$(GLIB_CFLAGS) \
@@ -48,6 +51,7 @@ AM_CPPFLAGS = \
gnome_photos_LDFLAGS =
gnome_photos_LDADD = \
+ $(CLUTTER_LIBS) \
$(CLUTTER_GTK_LIBS) \
$(GIO_LIBS) \
$(GLIB_LIBS) \
diff --git a/src/photos-main-toolbar.c b/src/photos-main-toolbar.c
index 0d3bfa9..8ec031d 100644
--- a/src/photos-main-toolbar.c
+++ b/src/photos-main-toolbar.c
@@ -267,3 +267,10 @@ photos_main_toolbar_new (void)
{
return g_object_new (PHOTOS_TYPE_MAIN_TOOLBAR, NULL);
}
+
+
+ClutterActor *
+photos_main_toolbar_get_actor (PhotosMainToolbar *self)
+{
+ return self->priv->actor;
+}
diff --git a/src/photos-main-toolbar.h b/src/photos-main-toolbar.h
index eaf2796..90174b7 100644
--- a/src/photos-main-toolbar.h
+++ b/src/photos-main-toolbar.h
@@ -21,7 +21,7 @@
#ifndef PHOTOS_MAIN_TOOLBAR_H
#define PHOTOS_MAIN_TOOLBAR_H
-#include <glib-object.h>
+#include <clutter/clutter.h>
G_BEGIN_DECLS
@@ -66,6 +66,8 @@ GType photos_main_toolbar_get_type (void) G_GNUC_
PhotosMainToolbar *photos_main_toolbar_new (void);
+ClutterActor *photos_main_toolbar_get_actor (PhotosMainToolbar *self);
+
G_END_DECLS
#endif /* PHOTOS_MAIN_TOOLBAR_H */
diff --git a/src/photos-view-embed.c b/src/photos-view-embed.c
new file mode 100644
index 0000000..b04e699
--- /dev/null
+++ b/src/photos-view-embed.c
@@ -0,0 +1,172 @@
+/*
+ * Photos - access, organize and share your photos on GNOME
+ * Copyright  2012 Red Hat, Inc.
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+
+#include "config.h"
+
+#include <clutter-gtk/clutter-gtk.h>
+#include <gtk/gtk.h>
+
+#include "photos-main-toolbar.h"
+#include "photos-mode-controller.h"
+#include "photos-view-embed.h"
+
+
+struct _PhotosViewEmbedPrivate
+{
+ ClutterActor *background;
+ ClutterActor *contents_actor;
+ ClutterActor *notebook_actor;
+ ClutterActor *view_actor;
+ ClutterLayoutManager *contents_layout;
+ ClutterLayoutManager *view_layout;
+ GtkWidget *notebook;
+ PhotosMainToolbar *toolbar;
+ PhotosModeController *mode_cntrlr;
+};
+
+
+G_DEFINE_TYPE (PhotosViewEmbed, photos_view_embed, CLUTTER_TYPE_BOX);
+
+
+static void
+photos_view_embed_fullscreen_changed (PhotosModeController *mode_cntrlr, gboolean fullscreen, gpointer user_data)
+{
+}
+
+
+static void
+photos_view_embed_window_mode_changed (PhotosModeController *mode_cntrlr,
+ PhotosWindowMode mode,
+ PhotosWindowMode old_mode,
+ gpointer user_data)
+{
+}
+
+
+static void
+photos_view_embed_dispose (GObject *object)
+{
+ PhotosViewEmbed *self = PHOTOS_VIEW_EMBED (object);
+ PhotosViewEmbedPrivate *priv = self->priv;
+
+ if (priv->mode_cntrlr != NULL)
+ {
+ g_object_unref (priv->mode_cntrlr);
+ priv->mode_cntrlr = NULL;
+ }
+
+ G_OBJECT_CLASS (photos_view_embed_parent_class)->dispose (object);
+}
+
+
+static void
+photos_view_embed_init (PhotosViewEmbed *self)
+{
+ PhotosViewEmbedPrivate *priv;
+ ClutterActor *toolbar_actor;
+ ClutterColor color = {255, 255, 255, 255};
+
+ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, PHOTOS_TYPE_VIEW_EMBED, PhotosViewEmbedPrivate);
+ priv = self->priv;
+
+ priv->contents_layout = clutter_box_layout_new ();
+ clutter_box_layout_set_vertical (CLUTTER_BOX_LAYOUT (priv->contents_layout), TRUE);
+ priv->contents_actor = clutter_box_new (priv->contents_layout);
+
+ priv->toolbar = photos_main_toolbar_new ();
+ toolbar_actor = photos_main_toolbar_get_actor (priv->toolbar);
+ clutter_container_add_actor (CLUTTER_CONTAINER (priv->contents_actor), toolbar_actor);
+ clutter_box_layout_set_fill (CLUTTER_BOX_LAYOUT (priv->contents_layout), toolbar_actor, TRUE, FALSE);
+
+ priv->view_layout = clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_CENTER, CLUTTER_BIN_ALIGNMENT_CENTER);
+ priv->view_actor = clutter_box_new (priv->view_layout);
+ clutter_box_layout_set_expand (CLUTTER_BOX_LAYOUT (priv->contents_layout), priv->view_actor, TRUE);
+ clutter_box_layout_set_fill (CLUTTER_BOX_LAYOUT (priv->contents_layout), priv->view_actor, TRUE, TRUE);
+ clutter_container_add_actor (CLUTTER_CONTAINER (priv->contents_actor), priv->view_actor);
+
+ priv->notebook = gtk_notebook_new ();
+ gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->notebook), FALSE);
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE);
+ gtk_widget_show (priv->notebook);
+
+ priv->notebook_actor = gtk_clutter_actor_new_with_contents (priv->notebook);
+ clutter_bin_layout_add (CLUTTER_BIN_LAYOUT (priv->view_layout),
+ priv->notebook_actor,
+ CLUTTER_BIN_ALIGNMENT_FILL,
+ CLUTTER_BIN_ALIGNMENT_FILL);
+
+ /* TODO: SpinnerBox */
+
+ priv->background = clutter_rectangle_new_with_color (&color);
+ clutter_bin_layout_add (CLUTTER_BIN_LAYOUT (priv->view_layout),
+ priv->background,
+ CLUTTER_BIN_ALIGNMENT_FILL,
+ CLUTTER_BIN_ALIGNMENT_FILL);
+ clutter_actor_lower_bottom (priv->background);
+
+ /* TODO: SearchBar.Dropdown,
+ * SelectionToolbar,
+ * ...
+ */
+
+ priv->mode_cntrlr = photos_mode_controller_new ();
+ g_signal_connect (priv->mode_cntrlr,
+ "window-mode-changed",
+ G_CALLBACK (photos_view_embed_window_mode_changed),
+ self);
+ g_signal_connect (priv->mode_cntrlr,
+ "fullscreen-changed",
+ G_CALLBACK (photos_view_embed_fullscreen_changed),
+ self);
+}
+
+
+static void
+photos_view_embed_class_init (PhotosViewEmbedClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ object_class->dispose = photos_view_embed_dispose;
+
+ g_type_class_add_private (class, sizeof (PhotosViewEmbedPrivate));
+}
+
+
+ClutterActor *
+photos_view_embed_new (ClutterBinLayout *layout)
+{
+ PhotosViewEmbed *self;
+ ClutterLayoutManager *overlay_layout;
+
+ g_return_val_if_fail (CLUTTER_IS_BIN_LAYOUT (layout), NULL);
+ self = g_object_new (PHOTOS_TYPE_VIEW_EMBED, "layout-manager", CLUTTER_LAYOUT_MANAGER (layout), NULL);
+
+ /* "layout-manager" being a non-construct property we can not use
+ * it from the constructed method :-(
+ */
+ overlay_layout = clutter_actor_get_layout_manager (CLUTTER_ACTOR (self));
+ clutter_bin_layout_add (CLUTTER_BIN_LAYOUT (overlay_layout),
+ self->priv->contents_actor,
+ CLUTTER_BIN_ALIGNMENT_FILL,
+ CLUTTER_BIN_ALIGNMENT_FILL);
+
+ return CLUTTER_ACTOR (self);
+}
diff --git a/src/photos-view-embed.h b/src/photos-view-embed.h
new file mode 100644
index 0000000..0bedd9e
--- /dev/null
+++ b/src/photos-view-embed.h
@@ -0,0 +1,71 @@
+/*
+ * Photos - access, organize and share your photos on GNOME
+ * Copyright  2012 Red Hat, Inc.
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+#ifndef PHOTOS_VIEW_EMBED_H
+#define PHOTOS_VIEW_EMBED_H
+
+#include <clutter/clutter.h>
+
+G_BEGIN_DECLS
+
+#define PHOTOS_TYPE_VIEW_EMBED (photos_view_embed_get_type ())
+
+#define PHOTOS_VIEW_EMBED(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ PHOTOS_TYPE_VIEW_EMBED, PhotosViewEmbed))
+
+#define PHOTOS_VIEW_EMBED_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), \
+ PHOTOS_TYPE_VIEW_EMBED, PhotosViewEmbedClass))
+
+#define PHOTOS_IS_VIEW_EMBED(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ PHOTOS_TYPE_VIEW_EMBED))
+
+#define PHOTOS_IS_VIEW_EMBED_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ PHOTOS_TYPE_VIEW_EMBED))
+
+#define PHOTOS_VIEW_EMBED_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), \
+ PHOTOS_TYPE_VIEW_EMBED, PhotosViewEmbedClass))
+
+typedef struct _PhotosViewEmbed PhotosViewEmbed;
+typedef struct _PhotosViewEmbedClass PhotosViewEmbedClass;
+typedef struct _PhotosViewEmbedPrivate PhotosViewEmbedPrivate;
+
+struct _PhotosViewEmbed
+{
+ ClutterBox parent_instance;
+ PhotosViewEmbedPrivate *priv;
+};
+
+struct _PhotosViewEmbedClass
+{
+ ClutterBoxClass parent_class;
+};
+
+GType photos_view_embed_get_type (void) G_GNUC_CONST;
+
+ClutterActor *photos_view_embed_new (ClutterBinLayout *layout);
+
+G_END_DECLS
+
+#endif /* PHOTOS_VIEW_EMBED_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]