r3663: If we can't guess a file's type from its name or extended attribute, try
[rox-filer.git] / ROX-Filer / src / global.h
blobc1df5f296eb09bbd9bf37a53630f136ba1b44960
1 /*
2 * ROX-Filer, filer for the ROX desktop project
3 * By Thomas Leonard, <tal197@users.sourceforge.net>.
4 */
6 /* global.h is included by most of the other source files, just after
7 * including config.h and the system header files, but before any other
8 * ROX-Filer header files.
9 */
11 #include <glib.h>
13 #ifdef HAVE_GNOME_VFS
14 # include <libgnomevfs/gnome-vfs.h>
15 #endif
17 /* We put all the global typedefs here to avoid creating dependencies
18 * between header files.
21 /* Each filer window has one of these all to itself */
22 typedef struct _FilerWindow FilerWindow;
24 /* There is one Directory object per cached disk directory inode number.
25 * Multiple FilerWindows may share a single Directory. Directories
26 * are cached, so a Directory may exist without any filer windows
27 * referencing it at all.
29 typedef struct _Directory Directory;
31 /* Each item in a directory has a DirItem. The contains information from
32 * stat()ing the file, plus a few other bits. There may be several of these
33 * for a single file, if it appears (hard-linked) in several directories.
34 * Each pinboard and panel icon also has one of these (not shared).
36 typedef struct _DirItem DirItem;
38 /* Widgets which can display directories implement the View interface.
39 * This should be used in preference to the old collection interface because
40 * it isn't specific to a particular type of display.
42 typedef struct _ViewIface ViewIface;
44 /* A ViewIter specifies a single item in a View, rather like an index.
45 * They can be used to iterate over all the items in a View, and remain
46 * valid until the View is changed. If allocated on the stack, they do not need
47 * to be freed.
49 typedef struct _ViewIter ViewIter;
51 /* This contains the pixbufs for an image, in various sizes.
52 * Despite the name, it now contains neither pixmaps nor masks!
54 typedef struct _MaskedPixmap MaskedPixmap;
56 /* Each MIME type (eg 'text/plain') has one of these. It contains
57 * a link to the image and the type's name (used so that the image can
58 * be refreshed, amoung other things).
60 typedef struct _MIME_type MIME_type;
62 /* Icon is an abstract base class for pinboard and panel icons.
63 * It contains the name and path of the icon, as well as its DirItem.
65 typedef struct _Icon Icon;
67 /* There will be one of these if the pinboard is in use. It contains
68 * the name of the pinboard and links to the pinned Icons inside.
70 typedef struct _Pinboard Pinboard;
72 /* There is one of these for each panel window open. Panels work rather
73 * like little pinboards, but with a more rigid layout.
75 typedef struct _Panel Panel;
77 /* Each option has a static Option structure. This is initialised by
78 * calling option_add_int() or similar. See options.c for details.
79 * This structure is read-only.
81 typedef struct _Option Option;
83 /* A filesystem cache provides a quick and easy way to load files.
84 * When a cache is created, functions to load and update files are
85 * registered to it. Requesting an object from the cache will load
86 * or update it as needed, or return the cached copy if the current
87 * version of the file is already cached.
88 * Caches are used to access directories, images and XML files.
90 typedef struct _GFSCache GFSCache;
92 /* Each cached XML file is represented by one of these */
93 typedef struct _XMLwrapper XMLwrapper;
95 /* This holds a pre-parsed version of a filename, which can be quickly
96 * compared with another CollateKey for intelligent sorting.
98 typedef struct _CollateKey CollateKey;
100 /* Like a regular GtkLabel, except that the text can be wrapped to any
101 * width. Used for pinboard icons.
103 typedef struct _WrappedLabel WrappedLabel;
105 /* The minibuffer is a text field which appears at the bottom of
106 * a filer window. It has various modes of operation:
108 typedef enum {
109 MINI_NONE,
110 MINI_PATH,
111 MINI_SHELL,
112 MINI_SELECT_IF,
113 MINI_FILTER,
114 MINI_SELECT_BY_NAME,
115 } MiniType;
117 /* The next three correspond to the styles on the Display submenu: */
119 typedef enum { /* Values used in options, must start at 0 */
120 LARGE_ICONS = 0,
121 SMALL_ICONS = 1,
122 HUGE_ICONS = 2,
123 AUTO_SIZE_ICONS = 3,
124 UNKNOWN_STYLE
125 } DisplayStyle;
127 typedef enum { /* Values used in options, must start at 0 */
128 DETAILS_NONE = 0,
129 DETAILS_SIZE = 2,
130 DETAILS_PERMISSIONS = 3,
131 DETAILS_TYPE = 4,
132 DETAILS_TIMES = 5,
133 DETAILS_UNKNOWN = -1,
134 } DetailsType;
136 typedef enum { /* Values used in options */
137 SORT_NAME = 0,
138 SORT_TYPE = 1,
139 SORT_DATE = 2,
140 SORT_SIZE = 3,
141 SORT_OWNER = 4,
142 SORT_GROUP = 5
143 } SortType;
145 /* The namespaces for the SOAP messages */
146 #define SOAP_ENV_NS_OLD "http://www.w3.org/2001/06/soap-envelope"
147 #define SOAP_ENV_NS "http://www.w3.org/2001/12/soap-envelope"
148 #define SOAP_RPC_NS "http://www.w3.org/2001/12/soap-rpc"
149 #define ROX_NS "http://rox.sourceforge.net/SOAP/ROX-Filer"
151 /* Stock icons */
152 #define ROX_STOCK_SHOW_DETAILS "rox-show-details"
153 #define ROX_STOCK_SHOW_HIDDEN "rox-show-hidden"
154 #define ROX_STOCK_SELECT "rox-select"
155 #define ROX_STOCK_MOUNT "rox-mount"
156 #define ROX_STOCK_MOUNTED "rox-mounted"
157 #define ROX_STOCK_BOOKMARKS GTK_STOCK_JUMP_TO
159 #include <libxml/tree.h>