Backport/adapt the gtk2-filechooser-icon-view patch series. This adds a second GtkFileChooser view mode based on GtkIconView, allowing the file chooser to switch between the traditional list view and an icon/thumbnail-oriented view. The patch also adds the required selection, activation and cursor handling for both view types, stores the chosen view mode in the file chooser settings, and preserves the icon size via a dedicated scale control. Originally developed by ahodesuka and later revised/improved by Dudemanguy. Addresses GNOME Bugzilla #141154: Add an icon view with thumbnails mode (like Nautilus) https://bugzilla.gnome.org/show_bug.cgi?id=141154
127 lines
4.4 KiB
C
127 lines
4.4 KiB
C
/* GTK - The GIMP Toolkit
|
|
* gtkfilechoosersettings.h: Internal settings for the GtkFileChooser widget
|
|
* Copyright (C) 2006, Novell, Inc.
|
|
*
|
|
* Authors: Federico Mena-Quintero <federico@novell.com>
|
|
*
|
|
* 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 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., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef __GTK_FILE_CHOOSER_SETTINGS_H__
|
|
#define __GTK_FILE_CHOOSER_SETTINGS_H__
|
|
|
|
#include "gtkfilechooserprivate.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define GTK_FILE_CHOOSER_SETTINGS_TYPE (_gtk_file_chooser_settings_get_type ())
|
|
|
|
/* Column numbers for the file list */
|
|
enum {
|
|
FILE_LIST_COL_NAME,
|
|
FILE_LIST_COL_SIZE,
|
|
FILE_LIST_COL_MTIME,
|
|
FILE_LIST_COL_NUM_COLUMNS
|
|
};
|
|
|
|
typedef struct _GtkFileChooserSettings GtkFileChooserSettings;
|
|
typedef struct _GtkFileChooserSettingsClass GtkFileChooserSettingsClass;
|
|
|
|
struct _GtkFileChooserSettings
|
|
{
|
|
GObject object;
|
|
|
|
LocationMode location_mode;
|
|
ViewMode view_mode;
|
|
|
|
GtkSortType sort_order;
|
|
gint sort_column, icon_view_scale;
|
|
StartupMode startup_mode;
|
|
|
|
int geometry_x;
|
|
int geometry_y;
|
|
int geometry_width;
|
|
int geometry_height;
|
|
|
|
guint settings_read : 1;
|
|
guint show_hidden : 1;
|
|
guint show_size_column : 1;
|
|
};
|
|
|
|
struct _GtkFileChooserSettingsClass
|
|
{
|
|
GObjectClass parent_class;
|
|
};
|
|
|
|
GType _gtk_file_chooser_settings_get_type (void) G_GNUC_CONST;
|
|
|
|
GtkFileChooserSettings *_gtk_file_chooser_settings_new (void);
|
|
|
|
LocationMode _gtk_file_chooser_settings_get_location_mode (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_location_mode (GtkFileChooserSettings *settings,
|
|
LocationMode location_mode);
|
|
|
|
ViewMode _gtk_file_chooser_settings_get_view_mode (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_view_mode (GtkFileChooserSettings *settings,
|
|
ViewMode view_mode);
|
|
|
|
gint _gtk_file_chooser_settings_get_icon_view_scale (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_icon_view_scale (GtkFileChooserSettings *settings,
|
|
gint icon_view_scale);
|
|
|
|
gboolean _gtk_file_chooser_settings_get_show_hidden (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_show_hidden (GtkFileChooserSettings *settings,
|
|
gboolean show_hidden);
|
|
|
|
gboolean _gtk_file_chooser_settings_get_show_size_column (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_show_size_column (GtkFileChooserSettings *settings,
|
|
gboolean show_column);
|
|
|
|
gint _gtk_file_chooser_settings_get_sort_column (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_sort_column (GtkFileChooserSettings *settings,
|
|
gint sort_column);
|
|
|
|
GtkSortType _gtk_file_chooser_settings_get_sort_order (GtkFileChooserSettings *settings);
|
|
void _gtk_file_chooser_settings_set_sort_order (GtkFileChooserSettings *settings,
|
|
GtkSortType sort_order);
|
|
|
|
void _gtk_file_chooser_settings_get_geometry (GtkFileChooserSettings *settings,
|
|
int *out_x,
|
|
int *out_y,
|
|
int *out_width,
|
|
int *out_heigth);
|
|
void _gtk_file_chooser_settings_set_geometry (GtkFileChooserSettings *settings,
|
|
int x,
|
|
int y,
|
|
int width,
|
|
int heigth);
|
|
|
|
void _gtk_file_chooser_settings_set_startup_mode (GtkFileChooserSettings *settings,
|
|
StartupMode startup_mode);
|
|
StartupMode _gtk_file_chooser_settings_get_startup_mode (GtkFileChooserSettings *settings);
|
|
|
|
gboolean _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
|
|
GError **error);
|
|
|
|
/* FIXME: persist these options:
|
|
*
|
|
* - paned width
|
|
* - show_hidden
|
|
*/
|
|
|
|
G_END_DECLS
|
|
|
|
#endif
|