[nautilus/wip/csoriano/flow] f
- From: Carlos Soriano <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/csoriano/flow] f
- Date: Tue, 6 Dec 2016 00:03:42 +0000 (UTC)
commit 2c283a3d30c2402e052892dce9feb1a7d6180bd9
Author: Carlos Soriano <csoriano gnome org>
Date: Tue Dec 6 01:03:10 2016 +0100
f
src/nautilus-icon-view-item.c | 175 +++++++++++++++++++++++------------------
src/nautilus-icon-view-item.h | 5 +-
src/nautilus-icon-view.c | 59 +++------------
3 files changed, 113 insertions(+), 126 deletions(-)
---
diff --git a/src/nautilus-icon-view-item.c b/src/nautilus-icon-view-item.c
index 921acba..265b239 100644
--- a/src/nautilus-icon-view-item.c
+++ b/src/nautilus-icon-view-item.c
@@ -1,10 +1,16 @@
#include "nautilus-icon-view-item.h"
+#include "nautilus-container-max-width.h"
+#include "nautilus-file.h"
+#include "nautilus-thumbnails.h"
struct _NautilusIconViewItem
{
GtkFlowBoxChild parent_instance;
- GtkWidget *item_container;
+ NautilusContainerMaxWidth *item_container;
+ GtkBox *icon;
guint icon_size;
+ NautilusFile *file;
+ GtkLabel *label;
};
G_DEFINE_TYPE (NautilusIconViewItem, nautilus_icon_view_item, GTK_TYPE_FLOW_BOX_CHILD)
@@ -17,14 +23,6 @@ enum
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)
{
@@ -91,33 +89,6 @@ nautilus_icon_view_item_set_property (GObject *object,
}
}
-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;
-
- g_object_class_install_property (object_class,
- PROP_ICON_SIZE,
- g_param_spec_int ("icon-size",
- "Icon size",
- "The size in pixels of the icon",
- NAUTILUS_CANVAS_ICON_SIZE_SMALL,
- NAUTILUS_CANVAS_ICON_SIZE_LARGER,
- NAUTILUS_CANVAS_ICON_SIZE_LARGE,
- G_PARAM_READWRITE));
- g_object_class_install_property (object_class,
- PROP_FILE,
- g_param_spec_object ("icon-size",
- "Icon size",
- "The size in pixels of the icon",
- NAUTILUS_TYPE_FILE,
- G_PARAM_READWRITE));
-}
-
static GtkWidget *
create_icon (NautilusIconViewItem *self)
{
@@ -132,7 +103,7 @@ create_icon (NautilusIconViewItem *self)
NAUTILUS_FILE_ICON_FLAGS_USE_EMBLEMS |
NAUTILUS_FILE_ICON_FLAGS_USE_ONE_EMBLEM;
- icon_pixbuf = nautilus_file_get_icon_pixbuf (self->file, priv->icon_size,
+ icon_pixbuf = nautilus_file_get_icon_pixbuf (self->file, self->icon_size,
TRUE, 1, flags);
icon = gtk_image_new_from_pixbuf (icon_pixbuf);
gtk_widget_set_hexpand (icon, TRUE);
@@ -143,12 +114,14 @@ create_icon (NautilusIconViewItem *self)
fixed_height_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_valign (fixed_height_box, GTK_ALIGN_CENTER);
gtk_widget_set_halign (fixed_height_box, GTK_ALIGN_CENTER);
- gtk_widget_set_size_request (fixed_height_box, get_icon_size_for_zoom_level (priv->zoom_level),
- get_icon_size_for_zoom_level (priv->zoom_level));
-
+ gtk_widget_set_size_request (fixed_height_box, self->icon_size, self->icon_size);
- style_context = gtk_widget_get_style_context (fixed_height_box);
- gtk_style_context_add_class (style_contet, "icon-background");
+ if (nautilus_can_thumbnail (self->file) &&
+ nautilus_file_should_show_thumbnail (self->file))
+ {
+ style_context = gtk_widget_get_style_context (fixed_height_box);
+ gtk_style_context_add_class (style_context, "icon-background");
+ }
gtk_box_pack_start (fixed_height_box, icon, FALSE, FALSE, 0);
@@ -160,36 +133,24 @@ create_icon (NautilusIconViewItem *self)
static void
update_icon (NautilusIconViewItem *self)
{
- GtkWidget *new_icon;
- GtkWidget *old_icon;
GtkWidget *box;
- GtkWidget *label;
- NautilusFile *file;
- gint label_nat_size;
- gint icon_nat_size;
-
- file = g_object_get_data (flow_box_item, "file");
- old_icon = g_object_get_data (flow_box_item, "icon");
- label = g_object_get_data (flow_box_item, "label");
nautilus_container_max_width_set_max_width (NAUTILUS_CONTAINER_MAX_WIDTH (self->item_container),
- get_icon_size_for_zoom_level (priv->zoom_level));
+ self->icon_size);
box = gtk_bin_get_child (GTK_BIN (self->item_container));
- gtk_container_remove (GTK_CONTAINER (box), old_icon);
- new_icon = create_icon (self);
- gtk_box_pack_start (box, new_icon, FALSE, FALSE, 0);
- g_object_set_data (flow_box_item, "icon", new_icon);
+ if (self->icon)
+ {
+ gtk_container_remove (GTK_CONTAINER (box), self->icon);
+ }
+ self->icon = create_icon (self);
+ gtk_box_pack_start (box, self->icon, FALSE, FALSE, 0);
}
static void
-nautilus_icon_view_item_init (NautilusIconViewItem *self)
+constructed (NautilusIconViewItem *self)
{
- NautilusFile *file = NAUTILUS_FILE (item);
- GtkFlowBoxChild *child;
GtkBox *container;
NautilusContainerMaxWidth *item_container;
- gint label_nat_size;
- gint icon_nat_size;
GtkLabel *label;
GtkWidget *icon;
GtkStyleContext *style_context;
@@ -197,10 +158,11 @@ nautilus_icon_view_item_init (NautilusIconViewItem *self)
container = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
self->item_container = nautilus_container_max_width_new ();
- icon = create_icon (self);
- gtk_box_pack_start (container, icon, FALSE, FALSE, 0);
+ g_print ("file %s\n", nautilus_file_get_uri (self->file));
+ self->icon = create_icon (self);
+ gtk_box_pack_start (container, self->icon, FALSE, FALSE, 0);
- label = gtk_label_new (nautilus_file_get_display_name (file));
+ label = gtk_label_new (nautilus_file_get_display_name (self->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);
@@ -218,16 +180,54 @@ nautilus_icon_view_item_init (NautilusIconViewItem *self)
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));
+ self->icon_size);
+
+ gtk_container_add (GTK_CONTAINER (self), self->item_container);
+ gtk_widget_show_all (self);
+}
+
+static void
+nautilus_icon_view_item_init (NautilusIconViewItem *self)
+{
+}
- 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);
+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;
+ object_class->constructed = constructed;
+
+ g_object_class_install_property (object_class,
+ PROP_ICON_SIZE,
+ g_param_spec_int ("icon-size",
+ "Icon size",
+ "The size in pixels of the icon",
+ NAUTILUS_CANVAS_ICON_SIZE_SMALL,
+ NAUTILUS_CANVAS_ICON_SIZE_LARGER,
+ NAUTILUS_CANVAS_ICON_SIZE_LARGE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ "File",
+ "The file the icon item represents",
+ NAUTILUS_TYPE_FILE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+}
- gtk_widget_show_all (child);
+NautilusIconViewItem *
+nautilus_icon_view_item_new (NautilusFile *file,
+ guint icon_size)
+{
+ return g_object_new (NAUTILUS_TYPE_ICON_VIEW_ITEM,
+ "file", file,
+ "icon-size", icon_size,
+ NULL);
}
void
@@ -236,8 +236,20 @@ nautilus_icon_view_item_set_icon_size (NautilusIconViewItem *self,
{
g_return_if_fail (NAUTILUS_IS_ICON_VIEW_ITEM (self));
- priv->icon_size = icon_size;
- update_icon (self);
+ self->icon_size = icon_size;
+
+ if (self->icon)
+ {
+ update_icon (self);
+ }
+}
+
+NautilusFile *
+nautilus_icon_view_item_get_file (NautilusIconViewItem *self)
+{
+ g_return_if_fail (NAUTILUS_IS_ICON_VIEW_ITEM (self));
+
+ return self->file;
}
void
@@ -245,7 +257,18 @@ nautilus_icon_view_item_set_file (NautilusIconViewItem *self,
NautilusFile *file)
{
g_return_if_fail (NAUTILUS_IS_ICON_VIEW_ITEM (self));
-
- g_clear_object (self->file);
+ g_print ("file HERE!!!!!");
+ g_clear_object (&self->file);
self->file = g_object_ref (file);
+
+ if (self->icon)
+ {
+ update_icon (self);
+ }
+
+ if (self->label)
+ {
+ gtk_label_set_text (self->label,
+ nautilus_file_get_display_name (file));
+ }
}
diff --git a/src/nautilus-icon-view-item.h b/src/nautilus-icon-view-item.h
index a33c1f5..88bfa53 100644
--- a/src/nautilus-icon-view-item.h
+++ b/src/nautilus-icon-view-item.h
@@ -12,7 +12,8 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (NautilusIconViewItem, nautilus_icon_view_item, NAUTILUS, ICON_VIEW_ITEM,
GtkFlowBoxChild)
-NautilusIconViewItem *nautilus_icon_view_item_new (void);
+NautilusIconViewItem * nautilus_icon_view_item_new (NautilusFile *file,
+ guint icon_size);
void nautilus_icon_view_item_set_icon_size (NautilusIconViewItem *item,
guint icon_size);
@@ -20,6 +21,8 @@ void nautilus_icon_view_item_set_icon_size (NautilusIconViewItem *item,
void nautilus_icon_view_item_set_file (NautilusIconViewItem *item,
NautilusFile *file);
+NautilusFile * nautilus_icon_view_item_get_file (NautilusIconViewItem *item);
+
G_END_DECLS
#endif /* NAUTILUS_ICON_VIEW_ITEM_H */
diff --git a/src/nautilus-icon-view.c b/src/nautilus-icon-view.c
index 41ef305..9edc604 100644
--- a/src/nautilus-icon-view.c
+++ b/src/nautilus-icon-view.c
@@ -17,17 +17,15 @@
*/
#include <config.h>
+#include <glib.h>
#include "nautilus-icon-view.h"
+#include "nautilus-icon-view-item.h"
#include "nautilus-files-view.h"
#include "nautilus-file.h"
#include "nautilus-directory.h"
#include "nautilus-global-preferences.h"
-#include "nautilus-container-max-width.h"
-
-#include <glib.h>
-
typedef struct
{
GtkWidget *flow_box;
@@ -214,8 +212,8 @@ set_icon_size (NautilusIconView *self,
for (l = items; l; l = l->next)
{
- item = GTK_WIDGET (l->data);
- nautilus_icon_view_item_set_icon_size (self, get_icon_size_for_zoom_level (priv->zoom_level));
+ item = NAUTILUS_ICON_VIEW_ITEM (l->data);
+ nautilus_icon_view_item_set_icon_size (item, get_icon_size_for_zoom_level (priv->zoom_level));
}
}
@@ -402,51 +400,14 @@ create_widget_func (gpointer item,
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);
- 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 (item_container, container);
- 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);
-
- g_object_set_data (child, "file", file);
- g_object_set_data (child, "icon", icon);
- g_object_set_data (child, "label", label);
+ NautilusIconViewItem *child;
+ g_print ("is it a file? %s\n", nautilus_file_get_uri (file));
+ child = nautilus_icon_view_item_new (file,
+ get_icon_size_for_zoom_level (priv->zoom_level));
gtk_widget_show_all (child);
- return child;
+ return GTK_WIDGET (child);
}
static void
@@ -459,7 +420,7 @@ on_child_activated (GtkFlowBox *flow_box,
NautilusFile *file;
g_autoptr (GList) list = NULL;
- file = g_object_get_data (G_OBJECT (child), "file");
+ file = nautilus_icon_view_item_get_file (child);
list = g_list_append (list, file);
nautilus_files_view_activate_files (NAUTILUS_FILES_VIEW (self), list, 0, TRUE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]