[nautilus/wip/csoriano/flow] f



commit 1e7c50c7977bca2f8912364b97a2408fa8b46b19
Author: Carlos Soriano <csoriano gnome org>
Date:   Fri Dec 2 12:53:55 2016 +0100

    f

 src/Makefile.am                    |    2 +
 src/nautilus-container-max-width.c |   14 ++--
 src/nautilus-icon-view-item.c      |  123 ++++++++++++++++++++++++++++++++++++
 src/nautilus-icon-view-item.h      |   18 +++++
 src/nautilus-icon-view.c           |    4 +-
 5 files changed, 152 insertions(+), 9 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 0d38617..8cd7d54 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -170,6 +170,8 @@ nautilus_no_main_sources = \
        nautilus-freedesktop-dbus.h             \
        nautilus-icon-view.c                    \
        nautilus-icon-view.h                    \
+       nautilus-icon-view-item.c               \
+       nautilus-icon-view-item.h               \
        nautilus-image-properties-page.c        \
        nautilus-image-properties-page.h        \
        nautilus-list-model.c                   \
diff --git a/src/nautilus-container-max-width.c b/src/nautilus-container-max-width.c
index 4a5762e..67134e9 100644
--- a/src/nautilus-container-max-width.c
+++ b/src/nautilus-container-max-width.c
@@ -19,7 +19,7 @@ static GParamSpec *properties [N_PROPS];
 
 void
 nautilus_container_max_width_set_max_width (NautilusContainerMaxWidth *self,
-                                       guint                 max_width)
+                                            guint                      max_width)
 {
     self->max_width = max_width;
     gtk_widget_queue_allocate (GTK_WIDGET (self));
@@ -47,9 +47,9 @@ nautilus_container_max_width_finalize (GObject *object)
 
 static void
 nautilus_container_max_width_get_property (GObject    *object,
-                                      guint       prop_id,
-                                      GValue     *value,
-                                      GParamSpec *pspec)
+                                           guint       prop_id,
+                                           GValue     *value,
+                                           GParamSpec *pspec)
 {
     NautilusContainerMaxWidth *self = NAUTILUS_CONTAINER_MAX_WIDTH (object);
 
@@ -70,9 +70,9 @@ nautilus_container_max_width_get_property (GObject    *object,
 
 static void
 nautilus_container_max_width_set_property (GObject      *object,
-                                      guint         prop_id,
-                                      const GValue *value,
-                                      GParamSpec   *pspec)
+                                           guint         prop_id,
+                                           const GValue *value,
+                                           GParamSpec   *pspec)
 {
     NautilusContainerMaxWidth *self = NAUTILUS_CONTAINER_MAX_WIDTH (object);
 
diff --git a/src/nautilus-icon-view-item.c b/src/nautilus-icon-view-item.c
new file mode 100644
index 0000000..d1c0edc
--- /dev/null
+++ b/src/nautilus-icon-view-item.c
@@ -0,0 +1,123 @@
+#include "nautilus-icon-view-item.h"
+
+struct _NautilusIconViewItem
+{
+    GtkFlowBoxChild parent_instance;
+    GtkWidget *item_container;
+};
+
+G_DEFINE_TYPE (NautilusIconViewItem, nautilus_icon_view_item, GTK_TYPE_FLOW_BOX_CHILD)
+
+enum
+{
+    PROP_0,
+    PROP_FILE,
+    N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
+NautilusIconViewItem *
+nautilus_icon_view_item_new (void)
+{
+    return g_object_new (NAUTILUS_TYPE_ICON_VIEW_ITEM, NULL);
+}
+
+static void
+nautilus_icon_view_item_finalize (GObject *object)
+{
+    NautilusIconViewItem *self = (NautilusIconViewItem *) object;
+
+    G_OBJECT_CLASS (nautilus_icon_view_item_parent_class)->finalize (object);
+}
+
+static void
+nautilus_icon_view_item_get_property (GObject    *object,
+                                      guint       prop_id,
+                                      GValue     *value,
+                                      GParamSpec *pspec)
+{
+    NautilusIconViewItem *self = NAUTILUS_ICON_VIEW_ITEM (object);
+
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+nautilus_icon_view_item_set_property (GObject      *object,
+                                      guint         prop_id,
+                                      const GValue *value,
+                                      GParamSpec   *pspec)
+{
+    NautilusIconViewItem *self = NAUTILUS_ICON_VIEW_ITEM (object);
+
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+nautilus_icon_view_item_class_init (NautilusIconViewItemClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = nautilus_icon_view_item_finalize;
+    object_class->get_property = nautilus_icon_view_item_get_property;
+    object_class->set_property = nautilus_icon_view_item_set_property;
+}
+
+static void
+nautilus_icon_view_item_init (NautilusIconViewItem *self)
+{
+    NautilusIconView *self = NAUTILUS_ICON_VIEW (user_data);
+    NautilusFile *file = NAUTILUS_FILE (item);
+    NautilusIconViewPrivate *priv = nautilus_icon_view_get_instance_private (self);
+    GtkFlowBoxChild *child;
+    GtkBox *container;
+    NautilusContainerMaxWidth *item_container;
+    gint label_nat_size;
+    gint icon_nat_size;
+    GtkLabel *label;
+    GtkWidget *icon;
+    GtkStyleContext *style_context;
+
+    container = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+    self->item_container = nautilus_container_max_width_new ();
+
+    icon = create_icon (self, file);
+    gtk_box_pack_start (container, icon, FALSE, FALSE, 0);
+
+    label = gtk_label_new (nautilus_file_get_display_name (file));
+    gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
+    gtk_label_set_line_wrap (label, TRUE);
+    gtk_label_set_line_wrap_mode (label, PANGO_WRAP_WORD_CHAR);
+    gtk_label_set_lines (label, 4);
+    gtk_label_set_justify (label, GTK_JUSTIFY_CENTER);
+    gtk_widget_set_valign (GTK_WIDGET (label), GTK_ALIGN_START);
+    gtk_box_pack_end (container, label, TRUE, TRUE, 0);
+
+    style_context = gtk_widget_get_style_context (container);
+    gtk_style_context_add_class (style_context, "icon-item-background");
+
+    gtk_widget_show_all (container);
+    gtk_widget_set_valign (container, GTK_ALIGN_START);
+    gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
+
+    gtk_container_add (self->item_container, container);
+    nautilus_container_max_width_set_max_width (NAUTILUS_CONTAINER_MAX_WIDTH (self->item_container),
+                                                get_icon_size_for_zoom_level (priv->zoom_level));
+
+    child = gtk_flow_box_child_new ();
+    gtk_container_add (child, self->item_container);
+
+    g_object_set_data (child, "file", file);
+    g_object_set_data (child, "icon", icon);
+    g_object_set_data (child, "label", label);
+
+    gtk_widget_show_all (child);
+}
diff --git a/src/nautilus-icon-view-item.h b/src/nautilus-icon-view-item.h
new file mode 100644
index 0000000..1cbaa29
--- /dev/null
+++ b/src/nautilus-icon-view-item.h
@@ -0,0 +1,18 @@
+#ifndef NAUTILUS_ICON_VIEW_ITEM_H
+#define NAUTILUS_ICON_VIEW_ITEM_H
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_ICON_VIEW_ITEM (nautilus_icon_view_item_get_type())
+
+G_DECLARE_FINAL_TYPE (NautilusIconViewItem, nautilus_icon_view_item, NAUTILUS, ICON_VIEW_ITEM, 
GtkFlowBoxChild)
+
+NautilusIconViewItem *nautilus_icon_view_item_new (void);
+
+G_END_DECLS
+
+#endif /* NAUTILUS_ICON_VIEW_ITEM_H */
+
diff --git a/src/nautilus-icon-view.c b/src/nautilus-icon-view.c
index 09d3aa8..7819c58 100644
--- a/src/nautilus-icon-view.c
+++ b/src/nautilus-icon-view.c
@@ -503,8 +503,8 @@ create_widget_func (gpointer item,
     gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
 
     gtk_container_add (item_container, container);
-    nautilus_icon_view_item_set_max_width (NAUTILUS_ICON_VIEW_ITEM (item_container),
-                                           get_icon_size_for_zoom_level (priv->zoom_level));
+    nautilus_container_max_width_set_max_width (NAUTILUS_CONTAINER_MAX_WIDTH (item_container),
+                                                get_icon_size_for_zoom_level (priv->zoom_level));
 
     child = gtk_flow_box_child_new ();
     gtk_container_add (child, item_container);


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