Mercurial > geeqie.yaz
annotate src/editors.h @ 1618:f47b8dc207f5
Minor code cleanup and redundancy reduction.
author | zas_ |
---|---|
date | Mon, 01 Jun 2009 16:37:30 +0000 |
parents | 475bbae6a7a3 |
children |
rev | line source |
---|---|
9 | 1 /* |
196 | 2 * Geeqie |
9 | 3 * (C) 2004 John Ellis |
1284 | 4 * Copyright (C) 2008 - 2009 The Geeqie Team |
9 | 5 * |
6 * Author: John Ellis | |
7 * | |
8 * This software is released under the GNU General Public License (GNU GPL). | |
9 * Please read the included file COPYING for more information. | |
10 * This software comes with no warranty of any kind, use at your own risk! | |
11 */ | |
12 | |
13 | |
14 #ifndef EDITORS_H | |
15 #define EDITORS_H | |
16 | |
442 | 17 |
1405 | 18 typedef enum { |
19 EDITOR_KEEP_FS = 0x00000001, | |
20 EDITOR_VERBOSE = 0x00000002, | |
21 EDITOR_VERBOSE_MULTI = 0x00000004, | |
22 EDITOR_TERMINAL = 0x00000008, | |
442 | 23 |
1405 | 24 EDITOR_DEST = 0x00000100, |
25 EDITOR_FOR_EACH = 0x00000200, | |
26 EDITOR_SINGLE_COMMAND = 0x00000400, | |
27 /* below are errors */ | |
28 EDITOR_ERROR_EMPTY = 0x00020000, | |
29 EDITOR_ERROR_SYNTAX = 0x00040000, | |
30 EDITOR_ERROR_INCOMPATIBLE = 0x00080000, | |
31 EDITOR_ERROR_NO_FILE = 0x00100000, | |
32 EDITOR_ERROR_CANT_EXEC = 0x00200000, | |
33 EDITOR_ERROR_STATUS = 0x00400000, | |
34 EDITOR_ERROR_SKIPPED = 0x00800000, | |
35 /* mask to match errors only */ | |
36 EDITOR_ERROR_MASK = 0xffff0000, | |
37 } EditorFlags; | |
140 | 38 |
1405 | 39 struct _EditorDescription { |
40 gchar *key; /* desktop file name, not including path, including extension */ | |
41 gchar *name; /* Name, localized name presented to user */ | |
42 gchar *icon; /* Icon */ | |
43 gchar *exec; /* Exec */ | |
44 gchar *menu_path; | |
45 gchar *hotkey; | |
46 GList *ext_list; | |
47 gchar *file; | |
1468 | 48 gchar *comment; /* .desktop Comment key, used to show a tooltip */ |
1405 | 49 EditorFlags flags; |
1479 | 50 gboolean hidden; /* explicitly hidden, shown in configuration dialog */ |
51 gboolean ignored; /* not interesting, do not show at all */ | |
1405 | 52 }; |
442 | 53 |
1400
67573155210c
Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
zas_
parents:
1397
diff
changeset
|
54 #define EDITOR_ERRORS(flags) ((flags) & EDITOR_ERROR_MASK) |
1405 | 55 #define EDITOR_ERRORS_BUT_SKIPPED(flags) (!!(((flags) & EDITOR_ERROR_MASK) && !((flags) & EDITOR_ERROR_SKIPPED))) |
56 | |
140 | 57 |
58 /* return values from callback function */ | |
59 enum { | |
60 EDITOR_CB_CONTINUE = 0, /* continue multiple editor execution on remaining files*/ | |
61 EDITOR_CB_SKIP, /* skip the remaining files */ | |
62 EDITOR_CB_SUSPEND /* suspend execution, one of editor_resume or editor_skip | |
442 | 63 must be called later */ |
140 | 64 }; |
65 | |
1479 | 66 enum { |
67 DESKTOP_FILE_COLUMN_KEY, | |
68 DESKTOP_FILE_COLUMN_NAME, | |
69 DESKTOP_FILE_COLUMN_HIDDEN, | |
70 DESKTOP_FILE_COLUMN_WRITABLE, | |
71 DESKTOP_FILE_COLUMN_PATH, | |
72 DESKTOP_FILE_COLUMN_COUNT | |
73 }; | |
74 | |
75 extern GtkListStore *desktop_file_list; | |
76 | |
77 | |
1272 | 78 extern GHashTable *editors; |
79 | |
80 void editor_load_descriptions(void); | |
81 GList *editor_list_get(void); | |
82 | |
140 | 83 |
84 /* | |
442 | 85 Callback is called even on skipped files, with the EDITOR_ERROR_SKIPPED flag set. |
140 | 86 It is a good place to call file_data_change_info_free(). |
87 | |
88 ed - pointer that can be used for editor_resume/editor_skip or NULL if all files were already processed | |
89 flags - flags above | |
90 list - list of procesed FileData structures, typically single file or whole list passed to start_editor_* | |
91 data - generic pointer | |
92 */ | |
1405 | 93 typedef gint (*EditorCallback) (gpointer ed, EditorFlags flags, GList *list, gpointer data); |
140 | 94 |
95 | |
96 void editor_resume(gpointer ed); | |
97 void editor_skip(gpointer ed); | |
98 | |
99 | |
9 | 100 |
1405 | 101 EditorFlags start_editor_from_file(const gchar *key, FileData *fd); |
102 EditorFlags start_editor_from_filelist(const gchar *key, GList *list); | |
103 EditorFlags start_editor_from_file_full(const gchar *key, FileData *fd, EditorCallback cb, gpointer data); | |
104 EditorFlags start_editor_from_filelist_full(const gchar *key, GList *list, EditorCallback cb, gpointer data); | |
105 gboolean editor_window_flag_set(const gchar *key); | |
106 gboolean editor_is_filter(const gchar *key); | |
107 const gchar *editor_get_error_str(EditorFlags flags); | |
9 | 108 |
1272 | 109 const gchar *editor_get_name(const gchar *key); |
731
fa8f7d7396cf
Introduce an helper function that returns the name of an editor.
zas_
parents:
475
diff
changeset
|
110 |
1272 | 111 gboolean is_valid_editor_command(const gchar *key); |
1616
475bbae6a7a3
do not block the files sent to external editors like gimp
nadvornik
parents:
1479
diff
changeset
|
112 gboolean editor_blocks_file(const gchar *key); |
475bbae6a7a3
do not block the files sent to external editors like gimp
nadvornik
parents:
1479
diff
changeset
|
113 |
1405 | 114 EditorFlags editor_command_parse(const EditorDescription *editor, GList *list, gchar **output); |
766
7148e125bf23
Check for existing editor command using is_valid_editor_command().
zas_
parents:
753
diff
changeset
|
115 |
9 | 116 #endif |
1055
1646720364cf
Adding a vim modeline to all files - patch by Klaus Ethgen
nadvornik
parents:
976
diff
changeset
|
117 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |