nautilus/libnautilus-private/nautilus-icon-container.h
Cosimo Cecchi 0fa45e385b Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
2009-02-02  Cosimo Cecchi  <cosimoc@pluto>

	* libnautilus-extension/nautilus-column.c:
	(nautilus_column_finalize), (nautilus_column_init),
	(nautilus_column_class_init):
	* libnautilus-extension/nautilus-menu.c: (nautilus_menu_finalize):
	* libnautilus-private/nautilus-cell-renderer-pixbuf-emblem.c:
	(nautilus_cell_renderer_pixbuf_emblem_class_init),
	(nautilus_cell_renderer_pixbuf_emblem_finalize):
	* libnautilus-private/nautilus-cell-renderer-text-ellipsized.c:
	(nautilus_cell_renderer_text_ellipsized_init),
	(nautilus_cell_renderer_text_ellipsized_class_init),
	(nautilus_cell_renderer_text_ellipsized_get_size):
	* libnautilus-private/nautilus-entry.c: (nautilus_entry_finalize),
	(nautilus_entry_key_press), (nautilus_entry_motion_notify),
	(nautilus_entry_button_press), (nautilus_entry_button_release),
	(nautilus_entry_selection_clear), (nautilus_entry_class_init):
	* libnautilus-private/nautilus-file.c: (nautilus_file_init),
	(nautilus_file_constructor), (finalize),
	(nautilus_file_class_init):
	* libnautilus-private/nautilus-icon-canvas-item.c:
	(nautilus_icon_canvas_item_finalize),
	(nautilus_icon_canvas_item_update),
	(nautilus_icon_canvas_item_class_init):
	* libnautilus-private/nautilus-icon-container.c:
	(nautilus_icon_container_new):
	* libnautilus-private/nautilus-icon-container.h:
	* libnautilus-private/nautilus-mime-application-chooser.c:
	(nautilus_mime_application_chooser_finalize),
	(nautilus_mime_application_chooser_destroy),
	(nautilus_mime_application_chooser_class_init),
	(nautilus_mime_application_chooser_init):
	* libnautilus-private/nautilus-open-with-dialog.c:
	(nautilus_open_with_dialog_finalize),
	(nautilus_open_with_dialog_destroy),
	(nautilus_open_with_dialog_class_init),
	(nautilus_open_with_dialog_init):
	* src/file-manager/fm-icon-container.c:
	* src/file-manager/fm-list-model.c: (fm_list_model_dispose),
	(fm_list_model_finalize), (fm_list_model_class_init):
	* src/file-manager/fm-tree-model.c: (fm_tree_model_finalize),
	(fm_tree_model_class_init):
	Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
	functions where possible.

svn path=/trunk/; revision=14911
2009-02-02 16:47:17 +00:00

356 lines
18 KiB
C

/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* gnome-icon-container.h - Icon container widget.
Copyright (C) 1999, 2000 Free Software Foundation
Copyright (C) 2000 Eazel, Inc.
The Gnome Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the Gnome Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Authors: Ettore Perazzoli <ettore@gnu.org>, Darin Adler <darin@bentspoon.com>
*/
#ifndef NAUTILUS_ICON_CONTAINER_H
#define NAUTILUS_ICON_CONTAINER_H
#include <eel/eel-canvas.h>
#include <libnautilus-private/nautilus-icon-info.h>
#define NAUTILUS_TYPE_ICON_CONTAINER \
(nautilus_icon_container_get_type ())
#define NAUTILUS_ICON_CONTAINER(obj) \
GTK_CHECK_CAST (obj, nautilus_icon_container_get_type (), NautilusIconContainer)
#define NAUTILUS_ICON_CONTAINER_CLASS(k) \
GTK_CHECK_CLASS_CAST (k, nautilus_icon_container_get_type (), NautilusIconContainerClass)
#define NAUTILUS_IS_ICON_CONTAINER(obj) \
GTK_CHECK_TYPE (obj, nautilus_icon_container_get_type ())
#define NAUTILUS_ICON_CONTAINER_ICON_DATA(pointer) \
((NautilusIconData *) (pointer))
#define NAUTILUS_ICON_CONTAINER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), \
nautilus_icon_container_get_type (), \
NautilusIconContainerClass))
typedef struct NautilusIconData NautilusIconData;
typedef void (* NautilusIconCallback) (NautilusIconData *icon_data,
gpointer callback_data);
typedef struct {
int x;
int y;
double scale;
} NautilusIconPosition;
typedef enum {
NAUTILUS_ICON_LAYOUT_L_R_T_B,
NAUTILUS_ICON_LAYOUT_R_L_T_B,
NAUTILUS_ICON_LAYOUT_T_B_L_R,
NAUTILUS_ICON_LAYOUT_T_B_R_L
} NautilusIconLayoutMode;
typedef enum {
NAUTILUS_ICON_LABEL_POSITION_UNDER,
NAUTILUS_ICON_LABEL_POSITION_BESIDE
} NautilusIconLabelPosition;
#define NAUTILUS_ICON_CONTAINER_TYPESELECT_FLUSH_DELAY 1000000
typedef struct NautilusIconContainerDetails NautilusIconContainerDetails;
typedef struct {
EelCanvas canvas;
NautilusIconContainerDetails *details;
} NautilusIconContainer;
typedef struct {
EelCanvasClass parent_slot;
/* Operations on the container. */
int (* button_press) (NautilusIconContainer *container,
GdkEventButton *event);
void (* context_click_background) (NautilusIconContainer *container,
GdkEventButton *event);
void (* middle_click) (NautilusIconContainer *container,
GdkEventButton *event);
/* Operations on icons. */
void (* activate) (NautilusIconContainer *container,
NautilusIconData *data);
void (* activate_alternate) (NautilusIconContainer *container,
NautilusIconData *data);
void (* context_click_selection) (NautilusIconContainer *container,
GdkEventButton *event);
void (* move_copy_items) (NautilusIconContainer *container,
const GList *item_uris,
GdkPoint *relative_item_points,
const char *target_uri,
GdkDragAction action,
int x,
int y);
void (* handle_netscape_url) (NautilusIconContainer *container,
const char *url,
const char *target_uri,
GdkDragAction action,
int x,
int y);
void (* handle_uri_list) (NautilusIconContainer *container,
const char *uri_list,
const char *target_uri,
GdkDragAction action,
int x,
int y);
void (* handle_text) (NautilusIconContainer *container,
const char *text,
const char *target_uri,
GdkDragAction action,
int x,
int y);
/* Queries on the container for subclass/client.
* These must be implemented. The default "do nothing" is not good enough.
*/
char * (* get_container_uri) (NautilusIconContainer *container);
/* Queries on icons for subclass/client.
* These must be implemented. The default "do nothing" is not
* good enough, these are _not_ signals.
*/
NautilusIconInfo *(* get_icon_images) (NautilusIconContainer *container,
NautilusIconData *data,
int icon_size,
GList **emblem_pixbufs,
char **embedded_text,
gboolean for_drag_accept,
gboolean need_large_embeddded_text,
gboolean *embedded_text_needs_loading,
gboolean *has_window_open);
void (* get_icon_text) (NautilusIconContainer *container,
NautilusIconData *data,
char **editable_text,
char **additional_text);
char * (* get_icon_description) (NautilusIconContainer *container,
NautilusIconData *data);
int (* compare_icons) (NautilusIconContainer *container,
NautilusIconData *icon_a,
NautilusIconData *icon_b);
int (* compare_icons_by_name) (NautilusIconContainer *container,
NautilusIconData *icon_a,
NautilusIconData *icon_b);
void (* freeze_updates) (NautilusIconContainer *container);
void (* unfreeze_updates) (NautilusIconContainer *container);
void (* start_monitor_top_left) (NautilusIconContainer *container,
NautilusIconData *data,
gconstpointer client,
gboolean large_text);
void (* stop_monitor_top_left) (NautilusIconContainer *container,
NautilusIconData *data,
gconstpointer client);
void (* prioritize_thumbnailing) (NautilusIconContainer *container,
NautilusIconData *data);
/* Queries on icons for subclass/client.
* These must be implemented => These are signals !
* The default "do nothing" is not good enough.
*/
gboolean (* can_accept_item) (NautilusIconContainer *container,
NautilusIconData *target,
const char *item_uri);
gboolean (* get_stored_icon_position) (NautilusIconContainer *container,
NautilusIconData *data,
NautilusIconPosition *position);
char * (* get_icon_uri) (NautilusIconContainer *container,
NautilusIconData *data);
char * (* get_icon_drop_target_uri) (NautilusIconContainer *container,
NautilusIconData *data);
/* If icon data is NULL, the layout timestamp of the container should be retrieved.
* That is the time when the container displayed a fully loaded directory with
* all icon positions assigned.
*
* If icon data is not NULL, the position timestamp of the icon should be retrieved.
* That is the time when the file (i.e. icon data payload) was last displayed in a
* fully loaded directory with all icon positions assigned.
*/
gboolean (* get_stored_layout_timestamp) (NautilusIconContainer *container,
NautilusIconData *data,
time_t *time);
/* If icon data is NULL, the layout timestamp of the container should be stored.
* If icon data is not NULL, the position timestamp of the container should be stored.
*/
gboolean (* store_layout_timestamp) (NautilusIconContainer *container,
NautilusIconData *data,
const time_t *time);
/* Notifications for the whole container. */
void (* band_select_started) (NautilusIconContainer *container);
void (* band_select_ended) (NautilusIconContainer *container);
void (* selection_changed) (NautilusIconContainer *container);
void (* layout_changed) (NautilusIconContainer *container);
/* Notifications for icons. */
void (* icon_position_changed) (NautilusIconContainer *container,
NautilusIconData *data,
const NautilusIconPosition *position);
void (* icon_text_changed) (NautilusIconContainer *container,
NautilusIconData *data,
const char *text);
void (* renaming_icon) (NautilusIconContainer *container,
GtkWidget *renaming_widget);
void (* icon_stretch_started) (NautilusIconContainer *container,
NautilusIconData *data);
void (* icon_stretch_ended) (NautilusIconContainer *container,
NautilusIconData *data);
int (* preview) (NautilusIconContainer *container,
NautilusIconData *data,
gboolean start_flag);
void (* icon_added) (NautilusIconContainer *container,
NautilusIconData *data);
void (* icon_removed) (NautilusIconContainer *container,
NautilusIconData *data);
void (* cleared) (NautilusIconContainer *container);
gboolean (* start_interactive_search) (NautilusIconContainer *container);
} NautilusIconContainerClass;
/* GtkObject */
GType nautilus_icon_container_get_type (void);
GtkWidget * nautilus_icon_container_new (void);
/* adding, removing, and managing icons */
void nautilus_icon_container_clear (NautilusIconContainer *view);
gboolean nautilus_icon_container_add (NautilusIconContainer *view,
NautilusIconData *data);
void nautilus_icon_container_layout_now (NautilusIconContainer *container);
gboolean nautilus_icon_container_remove (NautilusIconContainer *view,
NautilusIconData *data);
void nautilus_icon_container_for_each (NautilusIconContainer *view,
NautilusIconCallback callback,
gpointer callback_data);
void nautilus_icon_container_request_update (NautilusIconContainer *view,
NautilusIconData *data);
void nautilus_icon_container_request_update_all (NautilusIconContainer *container);
void nautilus_icon_container_reveal (NautilusIconContainer *container,
NautilusIconData *data);
gboolean nautilus_icon_container_is_empty (NautilusIconContainer *container);
NautilusIconData *nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container);
void nautilus_icon_container_scroll_to_icon (NautilusIconContainer *container,
NautilusIconData *data);
void nautilus_icon_container_begin_loading (NautilusIconContainer *container);
void nautilus_icon_container_end_loading (NautilusIconContainer *container,
gboolean all_icons_added);
/* control the layout */
gboolean nautilus_icon_container_is_auto_layout (NautilusIconContainer *container);
void nautilus_icon_container_set_auto_layout (NautilusIconContainer *container,
gboolean auto_layout);
gboolean nautilus_icon_container_is_tighter_layout (NautilusIconContainer *container);
void nautilus_icon_container_set_tighter_layout (NautilusIconContainer *container,
gboolean tighter_layout);
gboolean nautilus_icon_container_is_keep_aligned (NautilusIconContainer *container);
void nautilus_icon_container_set_keep_aligned (NautilusIconContainer *container,
gboolean keep_aligned);
void nautilus_icon_container_set_layout_mode (NautilusIconContainer *container,
NautilusIconLayoutMode mode);
void nautilus_icon_container_set_label_position (NautilusIconContainer *container,
NautilusIconLabelPosition pos);
void nautilus_icon_container_sort (NautilusIconContainer *container);
void nautilus_icon_container_freeze_icon_positions (NautilusIconContainer *container);
int nautilus_icon_container_get_max_layout_lines (NautilusIconContainer *container);
int nautilus_icon_container_get_max_layout_lines_for_pango (NautilusIconContainer *container);
/* operations on all icons */
void nautilus_icon_container_unselect_all (NautilusIconContainer *view);
void nautilus_icon_container_select_all (NautilusIconContainer *view);
/* operations on the selection */
GList * nautilus_icon_container_get_selection (NautilusIconContainer *view);
void nautilus_icon_container_invert_selection (NautilusIconContainer *view);
void nautilus_icon_container_set_selection (NautilusIconContainer *view,
GList *selection);
GArray * nautilus_icon_container_get_selected_icon_locations (NautilusIconContainer *view);
gboolean nautilus_icon_container_has_stretch_handles (NautilusIconContainer *container);
gboolean nautilus_icon_container_is_stretched (NautilusIconContainer *container);
void nautilus_icon_container_show_stretch_handles (NautilusIconContainer *container);
void nautilus_icon_container_unstretch (NautilusIconContainer *container);
void nautilus_icon_container_start_renaming_selected_item (NautilusIconContainer *container,
gboolean select_all);
/* options */
NautilusZoomLevel nautilus_icon_container_get_zoom_level (NautilusIconContainer *view);
void nautilus_icon_container_set_zoom_level (NautilusIconContainer *view,
int new_zoom_level);
void nautilus_icon_container_set_single_click_mode (NautilusIconContainer *container,
gboolean single_click_mode);
void nautilus_icon_container_enable_linger_selection (NautilusIconContainer *view,
gboolean enable);
gboolean nautilus_icon_container_get_is_fixed_size (NautilusIconContainer *container);
void nautilus_icon_container_set_is_fixed_size (NautilusIconContainer *container,
gboolean is_fixed_size);
gboolean nautilus_icon_container_get_is_desktop (NautilusIconContainer *container);
void nautilus_icon_container_set_is_desktop (NautilusIconContainer *container,
gboolean is_desktop);
void nautilus_icon_container_reset_scroll_region (NautilusIconContainer *container);
void nautilus_icon_container_set_font (NautilusIconContainer *container,
const char *font);
void nautilus_icon_container_set_font_size_table (NautilusIconContainer *container,
const int font_size_table[NAUTILUS_ZOOM_LEVEL_LARGEST + 1]);
void nautilus_icon_container_set_margins (NautilusIconContainer *container,
int left_margin,
int right_margin,
int top_margin,
int bottom_margin);
void nautilus_icon_container_set_use_drop_shadows (NautilusIconContainer *container,
gboolean use_drop_shadows);
char* nautilus_icon_container_get_icon_description (NautilusIconContainer *container,
NautilusIconData *data);
gboolean nautilus_icon_container_get_allow_moves (NautilusIconContainer *container);
void nautilus_icon_container_set_allow_moves (NautilusIconContainer *container,
gboolean allow_moves);
void nautilus_icon_container_set_forced_icon_size (NautilusIconContainer *container,
int forced_icon_size);
void nautilus_icon_container_set_all_columns_same_width (NautilusIconContainer *container,
gboolean all_columns_same_width);
gboolean nautilus_icon_container_is_layout_rtl (NautilusIconContainer *container);
gboolean nautilus_icon_container_is_layout_vertical (NautilusIconContainer *container);
gboolean nautilus_icon_container_get_store_layout_timestamps (NautilusIconContainer *container);
void nautilus_icon_container_set_store_layout_timestamps (NautilusIconContainer *container,
gboolean store_layout);
void nautilus_icon_container_widget_to_file_operation_position (NautilusIconContainer *container,
GdkPoint *position);
#define CANVAS_WIDTH(container) ((GTK_WIDGET (container)->allocation.width \
- container->details->left_margin \
- container->details->right_margin) \
/ EEL_CANVAS (container)->pixels_per_unit)
#define CANVAS_HEIGHT(container) ((GTK_WIDGET (container)->allocation.height \
- container->details->top_margin \
- container->details->bottom_margin) \
/ EEL_CANVAS (container)->pixels_per_unit)
#endif /* NAUTILUS_ICON_CONTAINER_H */