[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, 13 Dec 2016 15:27:09 +0000 (UTC)
commit fdadf38af630aa9c1b2d401408aaacd3d664308e
Author: Carlos Soriano <csoriano gnome org>
Date: Wed Dec 7 17:27:11 2016 +0100
f
src/Makefile.am | 2 +
src/nautilus-files-view.c | 24 +---
src/nautilus-files-view.h | 2 -
src/nautilus-view-icon-controller.c | 206 +++++++++++++++++++++++------------
src/nautilus-view-icon-controller.h | 2 +-
src/nautilus-view-icon-ui.c | 8 +-
src/nautilus-view-item-model.c | 4 +-
src/nautilus-view-model.c | 145 ++++++++++++++++++++++++
src/nautilus-view-model.h | 28 +++++
9 files changed, 325 insertions(+), 96 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index d98a2c8..84bf864 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -222,6 +222,8 @@ nautilus_no_main_sources = \
nautilus-view-icon-ui.h \
nautilus-view-item-model.c \
nautilus-view-item-model.h \
+ nautilus-view-model.c \
+ nautilus-view-model.h \
nautilus-window-slot.c \
nautilus-window-slot.h \
nautilus-window-slot-dnd.c \
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index e7a5f5e..9ed1eff 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -7710,8 +7710,10 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
gboolean show_sort_trash, show_sort_access, show_sort_modification, sort_available;
const gchar *hint;
g_autofree gchar *zoom_level_percent = NULL;
+ NautilusFile *file;
view_action_group = nautilus_files_view_get_action_group (view);
+ file = nautilus_files_view_get_directory_as_file (NAUTILUS_FILES_VIEW (view));
gtk_widget_set_visible (view->details->visible_columns,
g_action_group_has_action (view_action_group, "visible-columns"));
@@ -7719,6 +7721,8 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
sort_available = g_action_group_get_action_enabled (view_action_group, "sort");
show_sort_trash = show_sort_modification = show_sort_access = FALSE;
gtk_widget_set_visible (view->details->sort_menu, sort_available);
+ gtk_widget_set_visible (view->details->sort_trash_time,
+ nautilus_file_is_in_trash (file));
/* We want to make insensitive available actions but that are not current
* available due to the directory
@@ -7728,24 +7732,6 @@ nautilus_files_view_reset_view_menu (NautilusFilesView *view)
gtk_widget_set_sensitive (view->details->zoom_controls_box,
!nautilus_files_view_is_empty (view));
- if (sort_available)
- {
- variant = g_action_group_get_action_state_hint (view_action_group, "sort");
- g_variant_iter_init (&iter, variant);
-
- while (g_variant_iter_next (&iter, "&s", &hint))
- {
- if (g_strcmp0 (hint, "trash-time") == 0)
- {
- show_sort_trash = TRUE;
- }
- }
-
- g_variant_unref (variant);
- }
-
- gtk_widget_set_visible (view->details->sort_trash_time, show_sort_trash);
-
zoom_level_percent = g_strdup_printf ("%.0f%%", nautilus_files_view_get_zoom_level_percentage (view) *
100.0);
gtk_label_set_label (GTK_LABEL (view->details->zoom_level_label), zoom_level_percent);
}
@@ -9284,7 +9270,7 @@ nautilus_files_view_new (guint id,
{
case NAUTILUS_VIEW_GRID_ID:
{
- view = nautilus_view_icon_controller_new (slot);
+ view = NAUTILUS_FILES_VIEW (nautilus_view_icon_controller_new (slot));
}
break;
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index e465afb..57908dc 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -350,8 +350,6 @@ char * nautilus_files_view_get_title (NautilusFilesV
gboolean nautilus_files_view_supports_zooming (NautilusFilesView *view);
void nautilus_files_view_bump_zoom_level (NautilusFilesView *view,
int zoom_increment);
-void nautilus_files_view_zoom_to_level (NautilusFilesView *view,
- gint level);
gboolean nautilus_files_view_can_zoom_in (NautilusFilesView *view);
gboolean nautilus_files_view_can_zoom_out (NautilusFilesView *view);
void nautilus_files_view_update_menus (NautilusFilesView *view);
diff --git a/src/nautilus-view-icon-controller.c b/src/nautilus-view-icon-controller.c
index e3df3c9..9a9be01 100644
--- a/src/nautilus-view-icon-controller.c
+++ b/src/nautilus-view-icon-controller.c
@@ -1,6 +1,7 @@
#include "nautilus-view-icon-controller.h"
#include "nautilus-view-icon-ui.h"
#include "nautilus-view-item-model.h"
+#include "nautilus-view-model.h"
#include "nautilus-files-view.h"
#include "nautilus-file.h"
#include "nautilus-window-slot.h"
@@ -12,20 +13,15 @@ struct _NautilusViewIconController
NautilusFilesView parent_instance;
NautilusViewIconUi *view_ui;
- GListModel *model;
+ NautilusViewModel *model;
- GtkWidget *view_icon;
+ GIcon *view_icon;
GActionGroup *action_group;
gint zoom_level;
};
G_DEFINE_TYPE (NautilusViewIconController, nautilus_view_icon_controller, NAUTILUS_TYPE_FILES_VIEW)
-enum {
- PROP_0,
- N_PROPS
-};
-
static gint
get_default_zoom_level ()
{
@@ -34,7 +30,7 @@ get_default_zoom_level ()
default_zoom_level = g_settings_get_enum (nautilus_icon_view_preferences,
NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL);
- return NAUTILUS_CANVAS_ZOOM_LEVEL_LARGE;
+ return default_zoom_level;
}
static void
@@ -85,7 +81,7 @@ real_is_empty (NautilusFilesView *files_view)
{
NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (files_view);
- return g_list_model_get_n_items (self->model) == 0;
+ return g_list_model_get_n_items (G_LIST_MODEL (self->model)) == 0;
}
static void
@@ -157,14 +153,6 @@ real_bump_zoom_level (NautilusFilesView *files_view,
}
static guint
-real_get_zoom_level (NautilusFilesView *files_view)
-{
- NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (files_view);
-
- return self->zoom_level;
-}
-
-static guint
get_icon_size_for_zoom_level (NautilusCanvasZoomLevel zoom_level)
{
switch (zoom_level)
@@ -203,7 +191,7 @@ set_icon_size (NautilusViewIconController *self,
NautilusViewItemModel *current_item_model;
guint i = 0;
- while ((current_item_model = NAUTILUS_VIEW_ITEM_MODEL (g_list_model_get_item (self->model, i))))
+ while ((current_item_model = NAUTILUS_VIEW_ITEM_MODEL (g_list_model_get_item (G_LIST_MODEL
(self->model), i))))
{
nautilus_view_item_model_set_icon_size (current_item_model,
get_icon_size_for_zoom_level (self->zoom_level));
@@ -219,11 +207,6 @@ set_zoom_level (NautilusViewIconController *self,
set_icon_size (self, get_icon_size_for_zoom_level (new_level));
}
-static void
-real_zoom_to_level (NautilusFilesView *files_view,
- guint new_level)
-{
-}
static void
real_restore_standard_zoom_level (NautilusFilesView *files_view)
@@ -324,6 +307,115 @@ convert_file_glist_to_item_model_array (NautilusViewIconController *self,
return array;
}
+typedef struct
+{
+ const NautilusFileSortType sort_type;
+ const gchar *metadata_name;
+ const gchar *action_target_name;
+ gboolean reversed;
+} SortConstants;
+
+static const SortConstants sorts_constants[] =
+{
+ {
+ NAUTILUS_FILE_SORT_BY_DISPLAY_NAME,
+ "name",
+ "name",
+ FALSE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_DISPLAY_NAME,
+ "name",
+ "name-desc",
+ TRUE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_SIZE,
+ "size",
+ "size",
+ TRUE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_TYPE,
+ "type",
+ "type",
+ FALSE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_MTIME,
+ "modification date",
+ "modification-date",
+ FALSE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_MTIME,
+ "modification date",
+ "modification-date-desc",
+ TRUE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_ATIME,
+ "access date",
+ "access-date",
+ FALSE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_ATIME,
+ "access date",
+ "access-date-desc",
+ TRUE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_TRASHED_TIME,
+ "trashed",
+ "trash-time",
+ TRUE,
+ },
+ {
+ NAUTILUS_FILE_SORT_BY_SEARCH_RELEVANCE,
+ NULL,
+ "search-relevance",
+ TRUE,
+ }
+};
+
+static SortConstants *
+get_sort_constants_from_action_target_name (const gchar *action_target_name)
+{
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS (sorts_constants); i++)
+ {
+ if (g_strcmp0 (sorts_constants[i].action_target_name, action_target_name) == 0)
+ {
+ return sorts_constants[i];
+ }
+ }
+
+ return sorts_constants[0];
+}
+static void
+action_sort_order_changed (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data)
+{
+ const gchar *target_name;
+ SortConstants *sort_constants;
+ NautilusViewModelSortData sort_data;
+
+ g_assert (NAUTILUS_IS_CANVAS_VIEW (user_data));
+
+ target_name = g_variant_get_string (value, NULL);
+ sort_constants = get_sort_constants_from_action_target_name (target_name);
+ sort_data.sort_type = sort_constants.sort_type;
+ sort_data.reverse = sort_constants.reverse;
+ sort_data.directories_first = nautilus_files_view_should_sort_directories_first (NAUTILUS_FILES_VIEW
(self));
+
+ nautilus_view_model_set_sort_type (self->model, &sort_data);
+
+ g_simple_action_set_state (action, value);
+}
+
static void
real_add_files (NautilusFilesView *files_view,
GList *files,
@@ -337,11 +429,13 @@ real_add_files (NautilusFilesView *files_view,
g_print ("add files %d\n", g_list_length (files));
array = convert_file_glist_to_item_model_array (self, files);
g_list_store_splice (G_LIST_STORE (self->model),
- g_list_model_get_n_items (self->model),
+ g_list_model_get_n_items (G_LIST_MODEL (self->model)),
0, array, g_list_length (files));
clock_t end = clock ();
double elapsed_time = (end - start) / (double) CLOCKS_PER_SEC;
- g_print ("add file finished %d %f\n", g_list_model_get_n_items (self->model), elapsed_time);
+ g_print ("add file finished %d %f\n",
+ g_list_model_get_n_items (G_LIST_MODEL (self->model)),
+ elapsed_time);
}
@@ -369,7 +463,7 @@ action_zoom_to_level (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
- NautilusViewIconUi *self = NAUTILUS_VIEW_ICON_CONTROLLER (user_data);
+ NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (user_data);
set_zoom_level (self, g_variant_get_int32 (state));
g_simple_action_set_state (G_SIMPLE_ACTION (action), state);
@@ -378,43 +472,13 @@ action_zoom_to_level (GSimpleAction *action,
static void
finalize (GObject *object)
{
- NautilusViewIconController *self = (NautilusViewIconController *)object;
-
G_OBJECT_CLASS (nautilus_view_icon_controller_parent_class)->finalize (object);
}
-static void
-get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (object);
-
- switch (prop_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-static void
-set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (object);
-
- switch (prop_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- }
-}
-
-const GActionEntry view_icon_ui_entries[] =
+const GActionEntry view_icon_actions[] =
{
+ { "sort", NULL, "s", "'name'", action_sort_order_changed },
{ "zoom-to-level", NULL, NULL, "3", action_zoom_to_level }
};
@@ -423,8 +487,9 @@ constructed (GObject *object)
{
NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (object);
GtkWidget *content_widget;
+ GActionGroup *view_action_group;
- self->model = g_list_store_new (NAUTILUS_TYPE_VIEW_ITEM_MODEL);
+ self->model = nautilus_view_model_new ();
self->view_ui = nautilus_view_icon_ui_new (self);
gtk_widget_show (GTK_WIDGET (self->view_ui));
self->view_icon = g_themed_icon_new ("view-grid-symbolic");
@@ -434,15 +499,20 @@ constructed (GObject *object)
self->action_group = nautilus_files_view_get_action_group (NAUTILUS_FILES_VIEW (self));
g_action_map_add_action_entries (G_ACTION_MAP (self->action_group),
- view_icon_ui_entries,
- G_N_ELEMENTS (view_icon_ui_entries),
+ view_icon_actions,
+ G_N_ELEMENTS (view_icon_actions),
self);
- self->zoom_level = get_default_zoom_level ();
- g_action_group_change_action_state (self->action_group,
- "zoom-to-level",
- g_variant_new_int32 (self->zoom_level));
- gtk_widget_show_all (self);
+ gtk_widget_show_all (GTK_WIDGET (self));
+
+ view_action_group = nautilus_files_view_get_action_group (NAUTILUS_FILES_VIEW (self));
+ g_action_map_add_action_entries (G_ACTION_MAP (view_action_group),
+ view_icon_actions,
+ G_N_ELEMENTS (view_icon_actions),
+ self);
+ /* Keep the action synced with the actual value, so the toolbar can poll it */
+ g_action_group_change_action_state (nautilus_files_view_get_action_group (NAUTILUS_FILES_VIEW (self)),
+ "zoom-to-level", g_variant_new_int32 (self->zoom_level));
}
static void
@@ -452,8 +522,6 @@ nautilus_view_icon_controller_class_init (NautilusViewIconControllerClass *klass
NautilusFilesViewClass *files_view_class = NAUTILUS_FILES_VIEW_CLASS (klass);
object_class->finalize = finalize;
- object_class->get_property = get_property;
- object_class->set_property = set_property;
object_class->constructed = constructed;
files_view_class->add_files = real_add_files;
@@ -499,7 +567,7 @@ nautilus_view_icon_controller_new (NautilusWindowSlot *slot)
NULL);
}
-GListModel *
+GListStore *
nautilus_view_icon_controller_get_model (NautilusViewIconController *self)
{
g_return_val_if_fail (NAUTILUS_IS_VIEW_ICON_CONTROLLER (self), NULL);
diff --git a/src/nautilus-view-icon-controller.h b/src/nautilus-view-icon-controller.h
index c713633..9a9f23d 100644
--- a/src/nautilus-view-icon-controller.h
+++ b/src/nautilus-view-icon-controller.h
@@ -15,7 +15,7 @@ G_DECLARE_FINAL_TYPE (NautilusViewIconController, nautilus_view_icon_controller,
NautilusViewIconController *nautilus_view_icon_controller_new (NautilusWindowSlot *slot);
-GListModel * nautilus_view_icon_controller_get_model (NautilusViewIconController *self);
+GListStore * nautilus_view_icon_controller_get_model (NautilusViewIconController *self);
G_END_DECLS
diff --git a/src/nautilus-view-icon-ui.c b/src/nautilus-view-icon-ui.c
index 3ba4b35..e40e227 100644
--- a/src/nautilus-view-icon-ui.c
+++ b/src/nautilus-view-icon-ui.c
@@ -105,7 +105,7 @@ create_widget_func (gpointer item,
NautilusViewIconItemUi *child;
child = nautilus_view_icon_item_ui_new (item_model);
- gtk_widget_show (child);
+ gtk_widget_show (GTK_WIDGET (child));
return GTK_WIDGET (child);
}
@@ -120,7 +120,7 @@ on_child_activated (GtkFlowBox *flow_box,
NautilusFile *file;
g_autoptr (GList) list = NULL;
- item_model = nautilus_view_icon_item_ui_get_model (child);
+ item_model = nautilus_view_icon_item_ui_get_model (NAUTILUS_VIEW_ICON_ITEM_UI (child));
file = nautilus_view_item_model_get_file (item_model);
list = g_list_append (list, file);
@@ -137,6 +137,7 @@ static void
constructed (GObject *object)
{
NautilusViewIconUi *self = NAUTILUS_VIEW_ICON_UI (object);
+ GListStore *model;
G_OBJECT_CLASS (nautilus_view_icon_ui_parent_class)->constructed (object);
@@ -152,8 +153,9 @@ constructed (GObject *object)
gtk_widget_set_margin_bottom (GTK_WIDGET (self), 10);
gtk_widget_set_margin_end (GTK_WIDGET (self), 10);
+ model = nautilus_view_icon_controller_get_model (self->controller);
gtk_flow_box_bind_model (GTK_FLOW_BOX (self),
- nautilus_view_icon_controller_get_model (self->controller),
+ G_LIST_MODEL (model),
create_widget_func, self, NULL);
g_signal_connect (self, "child-activated", (GCallback) on_child_activated, self);
diff --git a/src/nautilus-view-item-model.c b/src/nautilus-view-item-model.c
index da90125..22f3b80 100644
--- a/src/nautilus-view-item-model.c
+++ b/src/nautilus-view-item-model.c
@@ -128,7 +128,7 @@ nautilus_view_item_model_new (NautilusFile *file,
guint
nautilus_view_item_model_get_icon_size (NautilusViewItemModel *self)
{
- g_return_if_fail (NAUTILUS_IS_VIEW_ITEM_MODEL (self));
+ g_return_val_if_fail (NAUTILUS_IS_VIEW_ITEM_MODEL (self), -1);
return self->icon_size;
}
@@ -147,7 +147,7 @@ nautilus_view_item_model_set_icon_size (NautilusViewItemModel *self,
NautilusFile *
nautilus_view_item_model_get_file (NautilusViewItemModel *self)
{
- g_return_if_fail (NAUTILUS_IS_VIEW_ITEM_MODEL (self));
+ g_return_val_if_fail (NAUTILUS_IS_VIEW_ITEM_MODEL (self), NULL);
return self->file;
}
diff --git a/src/nautilus-view-model.c b/src/nautilus-view-model.c
new file mode 100644
index 0000000..dbf3b27
--- /dev/null
+++ b/src/nautilus-view-model.c
@@ -0,0 +1,145 @@
+#include "nautilus-view-model.h"
+#include "nautilus-view-item-model.h"
+#include "nautilus-global-preferences.h"
+
+struct _NautilusViewModel
+{
+ Gobject parent_instance;
+
+ GListStore *internal_model;
+ NautilusViewModelSortData *sort_data;
+};
+
+G_DEFINE_TYPE (NautilusViewModel, nautilus_view_model, G_TYPE_OBJECT)
+
+enum {
+ PROP_0,
+ PROP_SORT_TYPE,
+ PROP_G_MODEL,
+ N_PROPS
+};
+
+static void
+finalize (GObject *object)
+{
+ G_OBJECT_CLASS (nautilus_view_model_parent_class)->finalize (object);
+}
+
+static void
+get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusViewModel *self = NAUTILUS_VIEW_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_SORT_TYPE:
+ {
+ g_value_set_object (value, self->sort_type);
+ }
+ break;
+
+ case PROP_G_MODEL:
+ {
+ g_value_set_object (value, self->internal_model);
+ }
+ break;
+
+ default:
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+ }
+}
+
+static void
+set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusViewModel *self = NAUTILUS_VIEW_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_SORT_TYPE:
+ {
+ nautilus_view_model_set_sort_type (self, g_value_get_object (value));
+ }
+ break;
+
+ default:
+ {
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+ }
+}
+
+static void
+constructed (GObject *object)
+{
+ NautilusViewModel *self = NAUTILUS_VIEW_MODEL (object);
+
+ G_OBJECT_CLASS (nautilus_view_model_parent_class)->constructed (object);
+
+ self->model = g_list_store_new (NAUTILUS_TYPE_VIEW_ITEM_MODEL);
+}
+
+static void
+nautilus_view_model_class_init (NautilusViewModelClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = finalize;
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+ object_class->constructed = constructed;
+}
+
+static void
+nautilus_view_model_init (NautilusViewModel *self)
+{
+}
+
+static gint
+compare_data_func (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data)
+{
+ NautilusViewModel *self = NAUTILUS_VIEW_MODEL (user_data);
+ NautilusFile *file_a;
+ NautilusFile *file_b;
+
+ file_a = nautilus_view_item_model_get_file (NAUTILUS_VIEW_ITEM_MODEL (a));
+ file_b = nautilus_view_item_model_get_file (NAUTILUS_VIEW_ITEM_MODEL (a));
+
+ return nautilus_file_compare_for_sort (file_a, file_b,
+ self->sort_data->sort_type,
+ self->sort_data->sort_reversed,
+ self->sort_data->sort_directories_first);
+}
+
+NautilusViewModel *
+nautilus_view_model_new ()
+{
+ return g_object_new (NAUTILUS_TYPE_VIEW_MODEL, NULL);
+}
+
+void
+nautilus_view_model_set_sort_type (NautilusViewModel *self,
+ NautilusViewModelSortData *sort_data);
+{
+ if (self->sort_data)
+ {
+ g_free (self->sort_data);
+ }
+
+ self->sort_data = g_new (NautilusViewModelSortData, 1);
+ self->sort_data->sort_type = sort_data->sort_type;
+ self->sort_data->reverse = sort_data->reverse;
+ self->sort_data->directories_first = sort_data->directories_first;
+
+ g_list_store_sort (self, compare_data_func, self);
+}
diff --git a/src/nautilus-view-model.h b/src/nautilus-view-model.h
new file mode 100644
index 0000000..d9bd1a5
--- /dev/null
+++ b/src/nautilus-view-model.h
@@ -0,0 +1,28 @@
+#ifndef NAUTILUS_VIEW_MODEL_H
+#define NAUTILUS_VIEW_MODEL_H
+
+#include <glib.h>
+#include "nautilus-file.h"
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_VIEW_MODEL (nautilus_view_model_get_type())
+
+G_DECLARE_FINAL_TYPE (NautilusViewModel, nautilus_view_model, NAUTILUS, VIEW_MODEL, GObject)
+
+typedef struct
+{
+ NautilusFileSortType sort_type;
+ gboolean reversed;
+ gboolean directories_first;
+} NautilusViewModelSortData;
+
+NautilusViewModel * nautilus_view_model_new (void);
+
+void nautilus_view_model_set_sort_type (NautilusViewModel *self,
+ NautilusViewModelSortData *sort_data);
+
+G_END_DECLS
+
+#endif /* NAUTILUS_VIEW_MODEL_H */
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]