annotate src/editors.c @ 2587:c6f9494f6be1

Fix #508: Copy and Move windows scale incorrectly https://github.com/BestImageViewer/geeqie/issues/508
author cclark <colin.clark@cclark.uk>
date Wed, 06 Sep 2017 11:59:47 +0100
parents f48a3335c672
children e9026a22ed21
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
2 * Copyright (C) 2006 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
3 * Copyright (C) 2008 - 2016 The Geeqie Team
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
4 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
5 * Author: John Ellis
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2225
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
20 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
21
281
b1c2c2cf19d4 gqview.h -> main.h
Laurent Monin <geeqie@norz.org>
parents: 261
diff changeset
22 #include "main.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
23 #include "editors.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
24
669
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
25 #include "filedata.h"
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
26 #include "filefilter.h"
1022
d09059a8b243 Move miscellaneous functions to their own files (new misc.[ch]).
Laurent Monin <geeqie@norz.org>
parents: 1000
diff changeset
27 #include "misc.h"
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
28 #include "pixbuf_util.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
29 #include "ui_fileops.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
30 #include "ui_spinner.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
31 #include "ui_utildlg.h"
1022
d09059a8b243 Move miscellaneous functions to their own files (new misc.[ch]).
Laurent Monin <geeqie@norz.org>
parents: 1000
diff changeset
32 #include "utilops.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
33
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
34 #include <errno.h>
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
35
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
36
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
37 #define EDITOR_WINDOW_WIDTH 500
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
38 #define EDITOR_WINDOW_HEIGHT 300
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
39
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
40
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
41
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
42 typedef struct _EditorVerboseData EditorVerboseData;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
43 struct _EditorVerboseData {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
44 GenericDialog *gd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
45 GtkWidget *button_close;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
46 GtkWidget *button_stop;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
47 GtkWidget *text;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
48 GtkWidget *progress;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
49 GtkWidget *spinner;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
50 };
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
51
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
52 typedef struct _EditorData EditorData;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
53 struct _EditorData {
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
54 EditorFlags flags;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
55 GPid pid;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
56 GList *list;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
57 gint count;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
58 gint total;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
59 gboolean stopping;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
60 EditorVerboseData *vd;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
61 EditorCallback callback;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
62 gpointer data;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
63 const EditorDescription *editor;
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
64 gchar *working_directory; /* fallback if no files are given (editor_no_param) */
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
65 };
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
66
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
67
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
68 static void editor_verbose_window_progress(EditorData *ed, const gchar *text);
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
69 static EditorFlags editor_command_next_start(EditorData *ed);
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
70 static EditorFlags editor_command_next_finish(EditorData *ed, gint status);
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
71 static EditorFlags editor_command_done(EditorData *ed);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
72
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
73 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
74 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
75 * external editor routines
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
76 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
77 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
78
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
79 GHashTable *editors = NULL;
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
80 GtkListStore *desktop_file_list;
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
81 gboolean editors_finished = FALSE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
82
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
83 #ifdef G_KEY_FILE_DESKTOP_GROUP
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
84 #define DESKTOP_GROUP G_KEY_FILE_DESKTOP_GROUP
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
85 #else
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
86 #define DESKTOP_GROUP "Desktop Entry"
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
87 #endif
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
88
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
89 void editor_description_free(EditorDescription *editor)
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
90 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
91 if (!editor) return;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
92
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
93 g_free(editor->key);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
94 g_free(editor->name);
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
95 g_free(editor->icon);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
96 g_free(editor->exec);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
97 g_free(editor->menu_path);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
98 g_free(editor->hotkey);
1468
ad29b90e41f5 added tooltips to external editors on toolbar
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1463
diff changeset
99 g_free(editor->comment);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
100 string_list_free(editor->ext_list);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
101 g_free(editor->file);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
102 g_free(editor);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
103 }
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
104
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
105 static GList *editor_mime_types_to_extensions(gchar **mime_types)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
106 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
107 /* FIXME: this should be rewritten to use the shared mime database, as soon as we switch to gio */
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
108
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
109 static const gchar *conv_table[][2] = {
1486
316e77c2511a added UfRaw ID files to known filetypes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1479
diff changeset
110 {"application/x-ufraw", ".ufraw"},
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
111 {"image/*", "*"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
112 {"image/bmp", ".bmp"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
113 {"image/gif", ".gif"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
114 {"image/jpeg", ".jpeg;.jpg"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
115 {"image/jpg", ".jpg;.jpeg"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
116 {"image/pcx", ".pcx"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
117 {"image/png", ".png"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
118 {"image/svg", ".svg"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
119 {"image/svg+xml", ".svg"},
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
120 {"image/svg+xml-compressed", ".svg"},
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
121 {"image/tiff", ".tiff;.tif"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
122 {"image/x-bmp", ".bmp"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
123 {"image/x-canon-crw", ".crw"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
124 {"image/x-cr2", ".cr2"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
125 {"image/x-dcraw", "%raw"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
126 {"image/x-ico", ".ico"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
127 {"image/x-mrw", ".mrw"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
128 {"image/x-MS-bmp", ".bmp"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
129 {"image/x-nef", ".nef"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
130 {"image/x-orf", ".orf"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
131 {"image/x-pcx", ".pcx"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
132 {"image/xpm", ".xpm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
133 {"image/x-png", ".png"},
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
134 {"image/x-portable-anymap", ".pam"},
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
135 {"image/x-portable-bitmap", ".pbm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
136 {"image/x-portable-graymap", ".pgm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
137 {"image/x-portable-pixmap", ".ppm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
138 {"image/x-psd", ".psd"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
139 {"image/x-raf", ".raf"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
140 {"image/x-sgi", ".sgi"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
141 {"image/x-tga", ".tga"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
142 {"image/x-xbitmap", ".xbm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
143 {"image/x-xcf", ".xcf"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
144 {"image/x-xpixmap", ".xpm"},
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
145 {"image/x-x3f", ".x3f"},
1919
fb342cf7ce3a added panorama .pto file to the list of known files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
146 {"application/x-ptoptimizer-script", ".pto"},
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
147 {NULL, NULL}};
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
148
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
149 gint i, j;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
150 GList *list = NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
151
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
152 for (i = 0; mime_types[i]; i++)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
153 for (j = 0; conv_table[j][0]; j++)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
154 if (strcmp(mime_types[i], conv_table[j][0]) == 0)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
155 list = g_list_concat(list, filter_to_list(conv_table[j][1]));
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
156
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
157 return list;
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
158 }
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
159
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
160 gboolean editor_read_desktop_file(const gchar *path)
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
161 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
162 GKeyFile *key_file;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
163 EditorDescription *editor;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
164 gchar *extensions;
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
165 gchar *type;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
166 const gchar *key = filename_from_path(path);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
167 gchar **categories, **only_show_in, **not_show_in;
1274
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
168 gchar *try_exec;
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
169 GtkTreeIter iter;
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
170 gboolean category_geeqie = FALSE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
171
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
172 if (g_hash_table_lookup(editors, key)) return FALSE; /* the file found earlier wins */
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
173
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
174 key_file = g_key_file_new();
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
175 if (!g_key_file_load_from_file(key_file, path, 0, NULL))
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
176 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
177 g_key_file_free(key_file);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
178 return FALSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
179 }
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
180
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
181 type = g_key_file_get_string(key_file, DESKTOP_GROUP, "Type", NULL);
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
182 if (!type || strcmp(type, "Application") != 0)
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
183 {
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
184 /* We only consider desktop entries of Application type */
1409
97fc99dc6d97 Add missing g_key_file_free() call.
Laurent Monin <geeqie@norz.org>
parents: 1408
diff changeset
185 g_key_file_free(key_file);
1463
7031da014d97 added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1409
diff changeset
186 g_free(type);
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
187 return FALSE;
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
188 }
1463
7031da014d97 added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1409
diff changeset
189 g_free(type);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
190
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
191 editor = g_new0(EditorDescription, 1);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
192
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
193 editor->key = g_strdup(key);
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
194 editor->file = g_strdup(path);
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
195
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
196 g_hash_table_insert(editors, editor->key, editor);
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
197
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
198 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "Hidden", NULL)
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
199 || g_key_file_get_boolean(key_file, DESKTOP_GROUP, "NoDisplay", NULL))
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
200 {
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
201 editor->hidden = TRUE;
1278
bcf1b663929b Add support for NoDisplay (entry is then hidden) and Type (only Application type is valid here) keys.
Laurent Monin <geeqie@norz.org>
parents: 1276
diff changeset
202 }
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
203
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
204 categories = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "Categories", NULL, NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
205 if (categories)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
206 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
207 gboolean found = FALSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
208 gint i;
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
209 for (i = 0; categories[i]; i++)
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
210 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
211 /* IMHO "Graphics" is exactly the category that we are interested in, so this does not have to be configurable */
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
212 if (strcmp(categories[i], "Graphics") == 0)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
213 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
214 found = TRUE;
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
215 }
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
216 if (strcmp(categories[i], "X-Geeqie") == 0)
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
217 {
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
218 found = TRUE;
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
219 category_geeqie = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
220 break;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
221 }
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
222 }
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
223 if (!found) editor->ignored = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
224 g_strfreev(categories);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
225 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
226 else
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
227 {
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
228 editor->ignored = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
229 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
230
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
231 only_show_in = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "OnlyShowIn", NULL, NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
232 if (only_show_in)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
233 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
234 gboolean found = FALSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
235 gint i;
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
236 for (i = 0; only_show_in[i]; i++)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
237 if (strcmp(only_show_in[i], "X-Geeqie") == 0)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
238 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
239 found = TRUE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
240 break;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
241 }
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
242 if (!found) editor->ignored = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
243 g_strfreev(only_show_in);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
244 }
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
245
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
246 not_show_in = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "NotShowIn", NULL, NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
247 if (not_show_in)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
248 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
249 gboolean found = FALSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
250 gint i;
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
251 for (i = 0; not_show_in[i]; i++)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
252 if (strcmp(not_show_in[i], "X-Geeqie") == 0)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
253 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
254 found = TRUE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
255 break;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
256 }
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
257 if (found) editor->ignored = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
258 g_strfreev(not_show_in);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
259 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
260
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
261
1274
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
262 try_exec = g_key_file_get_string(key_file, DESKTOP_GROUP, "TryExec", NULL);
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
263 if (try_exec && !editor->hidden && !editor->ignored)
1274
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
264 {
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
265 gchar *try_exec_res = g_find_program_in_path(try_exec);
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
266 if (!try_exec_res) editor->hidden = TRUE;
1274
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
267 g_free(try_exec_res);
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
268 g_free(try_exec);
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
269 }
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
270
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
271 if (editor->ignored)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
272 {
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
273 /* ignored editors will be deleted, no need to parse the rest */
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
274 g_key_file_free(key_file);
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
275 return TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
276 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
277
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
278 editor->name = g_key_file_get_locale_string(key_file, DESKTOP_GROUP, "Name", NULL, NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
279 editor->icon = g_key_file_get_string(key_file, DESKTOP_GROUP, "Icon", NULL);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
280
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
281 /* Icon key can be either a full path (absolute with file name extension) or an icon name (without extension) */
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
282 if (editor->icon && !g_path_is_absolute(editor->icon))
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
283 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
284 gchar *ext = strrchr(editor->icon, '.');
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
285
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
286 if (ext && strlen(ext) == 4 &&
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
287 (!strcmp(ext, ".png") || !strcmp(ext, ".xpm") || !strcmp(ext, ".svg")))
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
288 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
289 log_printf(_("Desktop file '%s' should not include extension in Icon key: '%s'\n"),
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
290 editor->file, editor->icon);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
291
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
292 // drop extension
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
293 *ext = '\0';
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
294 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
295 }
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
296 if (editor->icon && !register_theme_icon_as_stock(editor->key, editor->icon))
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
297 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
298 g_free(editor->icon);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
299 editor->icon = NULL;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
300 }
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
301
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
302 editor->exec = g_key_file_get_string(key_file, DESKTOP_GROUP, "Exec", NULL);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
303
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
304 editor->menu_path = g_key_file_get_string(key_file, DESKTOP_GROUP, "X-Geeqie-Menu-Path", NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
305 if (!editor->menu_path) editor->menu_path = g_strdup("EditMenu/ExternalMenu");
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
306
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
307 editor->hotkey = g_key_file_get_string(key_file, DESKTOP_GROUP, "X-Geeqie-Hotkey", NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
308
1468
ad29b90e41f5 added tooltips to external editors on toolbar
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1463
diff changeset
309 editor->comment = g_key_file_get_string(key_file, DESKTOP_GROUP, "Comment", NULL);
ad29b90e41f5 added tooltips to external editors on toolbar
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1463
diff changeset
310
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
311 extensions = g_key_file_get_string(key_file, DESKTOP_GROUP, "X-Geeqie-File-Extensions", NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
312 if (extensions)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
313 editor->ext_list = filter_to_list(extensions);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
314 else
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
315 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
316 gchar **mime_types = g_key_file_get_string_list(key_file, DESKTOP_GROUP, "MimeType", NULL, NULL);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
317 if (mime_types)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
318 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
319 editor->ext_list = editor_mime_types_to_extensions(mime_types);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
320 g_strfreev(mime_types);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
321 if (!editor->ext_list) editor->hidden = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
322 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
323 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
324
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
325 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "X-Geeqie-Keep-Fullscreen", NULL)) editor->flags |= EDITOR_KEEP_FS;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
326 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "X-Geeqie-Verbose", NULL)) editor->flags |= EDITOR_VERBOSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
327 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "X-Geeqie-Verbose-Multi", NULL)) editor->flags |= EDITOR_VERBOSE_MULTI;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
328 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "X-Geeqie-Filter", NULL)) editor->flags |= EDITOR_DEST;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
329 if (g_key_file_get_boolean(key_file, DESKTOP_GROUP, "Terminal", NULL)) editor->flags |= EDITOR_TERMINAL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
330
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
331 editor->flags |= editor_command_parse(editor, NULL, FALSE, NULL);
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
332
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
333 if ((editor->flags & EDITOR_NO_PARAM) && !category_geeqie) editor->hidden = TRUE;
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
334
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
335 g_key_file_free(key_file);
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
336
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
337 if (editor->ignored) return TRUE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
338
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
339 gtk_list_store_append(desktop_file_list, &iter);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
340 gtk_list_store_set(desktop_file_list, &iter,
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
341 DESKTOP_FILE_COLUMN_KEY, key,
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
342 DESKTOP_FILE_COLUMN_NAME, editor->name,
1765
9f1610c5db54 use text renderer for editor->hidden
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1753
diff changeset
343 DESKTOP_FILE_COLUMN_HIDDEN, editor->hidden ? _("yes") : _("no"),
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
344 DESKTOP_FILE_COLUMN_WRITABLE, access_file(path, W_OK),
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
345 DESKTOP_FILE_COLUMN_PATH, path, -1);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
346
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
347 return TRUE;
768
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
348 }
11eadcaeb207 Use functions to set editors name and command and ensure they are
Laurent Monin <geeqie@norz.org>
parents: 766
diff changeset
349
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
350 static gboolean editor_remove_desktop_file_cb(gpointer key, gpointer value, gpointer user_data)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
351 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
352 EditorDescription *editor = value;
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
353 return editor->hidden || editor->ignored;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
354 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
355
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
356 void editor_table_finish(void)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
357 {
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
358 g_hash_table_foreach_remove(editors, editor_remove_desktop_file_cb, NULL);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
359 editors_finished = TRUE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
360 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
361
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
362 void editor_table_clear(void)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
363 {
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
364 if (desktop_file_list)
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
365 {
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
366 gtk_list_store_clear(desktop_file_list);
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
367 }
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
368 else
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
369 {
1765
9f1610c5db54 use text renderer for editor->hidden
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1753
diff changeset
370 desktop_file_list = gtk_list_store_new(DESKTOP_FILE_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING);
1479
e6db8d80a785 added simple desktop file editor
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1478
diff changeset
371 }
1463
7031da014d97 added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1409
diff changeset
372 if (editors)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
373 {
1463
7031da014d97 added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1409
diff changeset
374 g_hash_table_destroy(editors);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
375 }
1463
7031da014d97 added function to reload external editors at any time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1409
diff changeset
376 editors = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify)editor_description_free);
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
377 editors_finished = FALSE;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
378 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
379
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
380 static GList *editor_add_desktop_dir(GList *list, const gchar *path)
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
381 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
382 DIR *dp;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
383 struct dirent *dir;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
384 gchar *pathl;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
385
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
386 pathl = path_from_utf8(path);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
387 dp = opendir(pathl);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
388 g_free(pathl);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
389 if (!dp)
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
390 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
391 /* dir not found */
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
392 return list;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
393 }
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
394 while ((dir = readdir(dp)) != NULL)
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
395 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
396 gchar *namel = dir->d_name;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
397
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
398 if (g_str_has_suffix(namel, ".desktop"))
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
399 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
400 gchar *name = path_to_utf8(namel);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
401 gchar *dpath = g_build_filename(path, name, NULL);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
402 list = g_list_prepend(list, dpath);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
403 g_free(name);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
404 }
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
405 }
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
406 closedir(dp);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
407 return list;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
408 }
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
409
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
410 GList *editor_get_desktop_files(void)
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
411 {
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
412 gchar *path;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
413 gchar *xdg_data_dirs;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
414 gchar *all_dirs;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
415 gchar **split_dirs;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
416 gint i;
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
417 GList *list = NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
418
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
419 xdg_data_dirs = getenv("XDG_DATA_DIRS");
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
420 if (xdg_data_dirs && xdg_data_dirs[0])
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
421 xdg_data_dirs = path_to_utf8(xdg_data_dirs);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
422 else
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
423 xdg_data_dirs = g_strdup("/usr/share");
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
424
1274
a71ea6846b0e test TryExec,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1272
diff changeset
425 all_dirs = g_strconcat(get_rc_dir(), ":", GQ_APP_DIR, ":", xdg_data_home_get(), ":", xdg_data_dirs, NULL);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
426
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
427 g_free(xdg_data_dirs);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
428
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
429 split_dirs = g_strsplit(all_dirs, ":", 0);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
430
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
431 g_free(all_dirs);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
432
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
433 for (i = 0; split_dirs[i]; i++);
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
434 for (--i; i >= 0; i--)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
435 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
436 path = g_build_filename(split_dirs[i], "applications", NULL);
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
437 list = editor_add_desktop_dir(list, path);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
438 g_free(path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
439 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
440
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
441 g_strfreev(split_dirs);
1746
e7d79da01596 editor fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1743
diff changeset
442 return list;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
443 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
444
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
445 static void editor_list_add_cb(gpointer key, gpointer value, gpointer data)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
446 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
447 GList **listp = data;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
448 EditorDescription *editor = value;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
449
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
450 /* do not show the special commands in any list, they are called explicitly */
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
451 if (strcmp(editor->key, CMD_COPY) == 0 ||
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
452 strcmp(editor->key, CMD_MOVE) == 0 ||
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
453 strcmp(editor->key, CMD_RENAME) == 0 ||
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
454 strcmp(editor->key, CMD_DELETE) == 0 ||
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
455 strcmp(editor->key, CMD_FOLDER) == 0) return;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
456
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
457 *listp = g_list_prepend(*listp, editor);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
458 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
459
1276
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
460 static gint editor_sort(gconstpointer a, gconstpointer b)
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
461 {
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
462 const EditorDescription *ea = a;
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
463 const EditorDescription *eb = b;
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
464 gint ret;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
465
1276
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
466 ret = strcmp(ea->menu_path, eb->menu_path);
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
467 if (ret != 0) return ret;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
468
1276
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
469 return g_utf8_collate(ea->name, eb->name);
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
470 }
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
471
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
472 GList *editor_list_get(void)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
473 {
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
474 GList *editors_list = NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
475
1736
7179fa22dc1b load desktop files in idle time
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1652
diff changeset
476 if (!editors_finished) return NULL;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
477
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
478 g_hash_table_foreach(editors, editor_list_add_cb, &editors_list);
1276
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
479 editors_list = g_list_sort(editors_list, editor_sort);
2bfa3bce4b3e editor_list_get() now returns a sorted list, this way items appear in the same order in all menus.
Laurent Monin <geeqie@norz.org>
parents: 1274
diff changeset
480
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
481 return editors_list;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
482 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
483
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
484 /* ------------------------------ */
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
485
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
486
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
487 static void editor_verbose_data_free(EditorData *ed)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
488 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
489 if (!ed->vd) return;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
490 g_free(ed->vd);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
491 ed->vd = NULL;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
492 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
493
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
494 static void editor_data_free(EditorData *ed)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
495 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
496 editor_verbose_data_free(ed);
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
497 g_free(ed->working_directory);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
498 g_free(ed);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
499 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
500
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
501 static void editor_verbose_window_close(GenericDialog *gd, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
502 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
503 EditorData *ed = data;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
504
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
505 generic_dialog_close(gd);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
506 editor_verbose_data_free(ed);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
507 if (ed->pid == -1) editor_data_free(ed); /* the process has already terminated */
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
508 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
509
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
510 static void editor_verbose_window_stop(GenericDialog *gd, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
511 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
512 EditorData *ed = data;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
513 ed->stopping = TRUE;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
514 ed->count = 0;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
515 editor_verbose_window_progress(ed, _("stopping..."));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
516 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
517
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
518 static void editor_verbose_window_enable_close(EditorVerboseData *vd)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
519 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
520 vd->gd->cancel_cb = editor_verbose_window_close;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
521
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
522 spinner_set_interval(vd->spinner, -1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
523 gtk_widget_set_sensitive(vd->button_stop, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
524 gtk_widget_set_sensitive(vd->button_close, TRUE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
525 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
526
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
527 static EditorVerboseData *editor_verbose_window(EditorData *ed, const gchar *text)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
528 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
529 EditorVerboseData *vd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
530 GtkWidget *scrolled;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
531 GtkWidget *hbox;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
532 gchar *buf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
533
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
534 vd = g_new0(EditorVerboseData, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
535
1174
f809d57aed0c Drop useless wmclass stuff. Gtk will take care of it and as said in the documentation using gtk_window_set_wmclass() is sort of pointless.
Laurent Monin <geeqie@norz.org>
parents: 1055
diff changeset
536 vd->gd = file_util_gen_dlg(_("Edit command results"), "editor_results",
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
537 NULL, FALSE,
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
538 NULL, ed);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
539 buf = g_strdup_printf(_("Output of %s"), text);
2587
c6f9494f6be1 Fix #508: Copy and Move windows scale incorrectly
cclark <colin.clark@cclark.uk>
parents: 2439
diff changeset
540 generic_dialog_add_message(vd->gd, NULL, buf, NULL, TRUE);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
541 g_free(buf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
542 vd->button_stop = generic_dialog_add_button(vd->gd, GTK_STOCK_STOP, NULL,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
543 editor_verbose_window_stop, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
544 gtk_widget_set_sensitive(vd->button_stop, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
545 vd->button_close = generic_dialog_add_button(vd->gd, GTK_STOCK_CLOSE, NULL,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
546 editor_verbose_window_close, TRUE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
547 gtk_widget_set_sensitive(vd->button_close, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
548
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
549 scrolled = gtk_scrolled_window_new(NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
550 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
551 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
552 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
553 gtk_box_pack_start(GTK_BOX(vd->gd->vbox), scrolled, TRUE, TRUE, 5);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
554 gtk_widget_show(scrolled);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
555
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
556 vd->text = gtk_text_view_new();
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
557 gtk_text_view_set_editable(GTK_TEXT_VIEW(vd->text), FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
558 gtk_widget_set_size_request(vd->text, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_HEIGHT);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
559 gtk_container_add(GTK_CONTAINER(scrolled), vd->text);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
560 gtk_widget_show(vd->text);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
561
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
562 hbox = gtk_hbox_new(FALSE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
563 gtk_box_pack_start(GTK_BOX(vd->gd->vbox), hbox, FALSE, FALSE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
564 gtk_widget_show(hbox);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
565
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
566 vd->progress = gtk_progress_bar_new();
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
567 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(vd->progress), 0.0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
568 gtk_box_pack_start(GTK_BOX(hbox), vd->progress, TRUE, TRUE, 0);
2439
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2350
diff changeset
569 #if GTK_CHECK_VERSION(3,0,0)
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2350
diff changeset
570 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(vd->progress), "");
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2350
diff changeset
571 gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(vd->progress), TRUE);
f48a3335c672 Fix progress bar text
Colin Clark <cclark@mcb.net>
parents: 2350
diff changeset
572 #endif
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
573 gtk_widget_show(vd->progress);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
574
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
575 vd->spinner = spinner_new(NULL, SPINNER_SPEED);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
576 gtk_box_pack_start(GTK_BOX(hbox), vd->spinner, FALSE, FALSE, 0);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
577 gtk_widget_show(vd->spinner);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
578
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
579 gtk_widget_show(vd->gd->dialog);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
580
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
581 ed->vd = vd;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
582 return vd;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
583 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
584
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
585 static void editor_verbose_window_fill(EditorVerboseData *vd, gchar *text, gint len)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
586 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
587 GtkTextBuffer *buffer;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
588 GtkTextIter iter;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
589
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
590 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(vd->text));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
591 gtk_text_buffer_get_iter_at_offset(buffer, &iter, -1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
592 gtk_text_buffer_insert(buffer, &iter, text, len);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
593 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
594
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
595 static void editor_verbose_window_progress(EditorData *ed, const gchar *text)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
596 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
597 if (!ed->vd) return;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
598
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
599 if (ed->total)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
600 {
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 995
diff changeset
601 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ed->vd->progress), (gdouble)ed->count / ed->total);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
602 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
603
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
604 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ed->vd->progress), (text) ? text : "");
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
605 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
606
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
607 static gboolean editor_verbose_io_cb(GIOChannel *source, GIOCondition condition, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
608 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
609 EditorData *ed = data;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
610 gchar buf[512];
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
611 gsize count;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
612
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
613 if (condition & G_IO_IN)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
614 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
615 while (g_io_channel_read_chars(source, buf, sizeof(buf), &count, NULL) == G_IO_STATUS_NORMAL)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
616 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
617 if (!g_utf8_validate(buf, count, NULL))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
618 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
619 gchar *utf8;
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
620
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
621 utf8 = g_locale_to_utf8(buf, count, NULL, NULL, NULL);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
622 if (utf8)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
623 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
624 editor_verbose_window_fill(ed->vd, utf8, -1);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
625 g_free(utf8);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
626 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
627 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
628 {
288
e675073bcca0 Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
629 editor_verbose_window_fill(ed->vd, "Error converting text to valid utf8\n", -1);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
630 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
631 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
632 else
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
633 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
634 editor_verbose_window_fill(ed->vd, buf, count);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
635 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
636 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
637 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
638
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
639 if (condition & (G_IO_ERR | G_IO_HUP))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
640 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
641 g_io_channel_shutdown(source, TRUE, NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
642 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
643 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
644
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
645 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
646 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
647
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
648 typedef enum {
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
649 PATH_FILE,
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
650 PATH_FILE_URL,
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
651 PATH_DEST
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
652 } PathType;
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
653
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
654
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
655 static gchar *editor_command_path_parse(const FileData *fd, gboolean consider_sidecars, PathType type, const EditorDescription *editor)
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
656 {
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
657 GString *string;
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
658 gchar *pathl;
1408
f43ccf81f20d Fix editor_command_path_parse().
Laurent Monin <geeqie@norz.org>
parents: 1407
diff changeset
659 const gchar *p = NULL;
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
660
1753
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
661 DEBUG_2("editor_command_path_parse: %s %d %d %s", fd->path, consider_sidecars, type, editor->key);
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
662
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
663 string = g_string_new("");
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
664
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
665 if (type == PATH_FILE || type == PATH_FILE_URL)
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
666 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
667 GList *work = editor->ext_list;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
668
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
669 if (!work)
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
670 p = fd->path;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
671 else
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
672 {
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 475
diff changeset
673 while (work)
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
674 {
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
675 GList *work2;
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
676 gchar *ext = work->data;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
677 work = work->next;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
678
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
679 if (strcmp(ext, "*") == 0 ||
1307
5b9e8cde0f8b Glibification again.
Laurent Monin <geeqie@norz.org>
parents: 1284
diff changeset
680 g_ascii_strcasecmp(ext, fd->extension) == 0)
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
681 {
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
682 p = fd->path;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
683 break;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
684 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
685
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
686 work2 = consider_sidecars ? fd->sidecar_files : NULL;
516
768d10237b88 Convert the minority of while() to while ().
Laurent Monin <geeqie@norz.org>
parents: 475
diff changeset
687 while (work2)
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
688 {
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
689 FileData *sfd = work2->data;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
690 work2 = work2->next;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
691
1307
5b9e8cde0f8b Glibification again.
Laurent Monin <geeqie@norz.org>
parents: 1284
diff changeset
692 if (g_ascii_strcasecmp(ext, sfd->extension) == 0)
147
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
693 {
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
694 p = sfd->path;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
695 break;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
696 }
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
697 }
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
698 if (p) break;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
699 }
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
700 if (!p) return NULL;
ca7e5f3ff449 added possibility to specify prefered file type for external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 140
diff changeset
701 }
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
702 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
703 else if (type == PATH_DEST)
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
704 {
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
705 if (fd->change && fd->change->dest)
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
706 p = fd->change->dest;
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
707 else
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
708 p = "";
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
709 }
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
710
1407
5e8c6d6813da Revert changeset 1502. It brokes the spec: hidden desktop files from user directory should hide files from system directory with the same name.
Laurent Monin <geeqie@norz.org>
parents: 1406
diff changeset
711 g_assert(p);
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
712 string = g_string_append(string, p);
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
713
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
714 if (type == PATH_FILE_URL) g_string_prepend(string, "file://");
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
715 pathl = path_from_utf8(string->str);
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
716 g_string_free(string, TRUE);
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
717
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
718 if (pathl && !pathl[0]) /* empty string case */
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
719 {
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
720 g_free(pathl);
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
721 pathl = NULL;
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
722 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
723
1753
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
724 DEBUG_2("editor_command_path_parse: return %s", pathl);
123
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
725 return pathl;
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
726 }
0f334ba8cbc6 Sat Dec 2 20:15:22 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 60
diff changeset
727
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
728 static GString *append_quoted(GString *str, const char *s, gboolean single_quotes, gboolean double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
729 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
730 const char *p;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
731
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
732 if (!single_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
733 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
734 if (!double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
735 g_string_append_c(str, '\'');
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
736 else
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
737 g_string_append(str, "\"'");
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
738 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
739
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
740 for (p = s; *p != '\0'; p++)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
741 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
742 if (*p == '\'')
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
743 g_string_append(str, "'\\''");
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
744 else
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
745 g_string_append_c(str, *p);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
746 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
747
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
748 if (!single_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
749 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
750 if (!double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
751 g_string_append_c(str, '\'');
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
752 else
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
753 g_string_append(str, "'\"");
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
754 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
755
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
756 return str;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
757 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
758
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
759
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
760 EditorFlags editor_command_parse(const EditorDescription *editor, GList *list, gboolean consider_sidecars, gchar **output)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
761 {
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
762 EditorFlags flags = 0;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
763 const gchar *p;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
764 GString *result = NULL;
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
765 gboolean escape = FALSE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
766 gboolean single_quotes = FALSE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
767 gboolean double_quotes = FALSE;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
768
1753
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
769 DEBUG_2("editor_command_parse: %s %d %d", editor->key, consider_sidecars, !!output);
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
770
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
771 if (output)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
772 result = g_string_new("");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
773
2225
4617e1d83e9b Fix a segfault caused by .desktop file with no exec= line.
Vedran Rodic <vrodic@gmail.com>
parents: 2185
diff changeset
774 if (editor->exec == NULL || editor->exec[0] == '\0')
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
775 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
776 flags |= EDITOR_ERROR_EMPTY;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
777 goto err;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
778 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
779
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
780 p = editor->exec;
669
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
781 /* skip leading whitespaces if any */
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
782 while (g_ascii_isspace(*p)) p++;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
783
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
784 /* command */
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
785
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
786 while (*p)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
787 {
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
788 if (escape)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
789 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
790 escape = FALSE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
791 if (output) result = g_string_append_c(result, *p);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
792 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
793 else if (*p == '\\')
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
794 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
795 if (!single_quotes) escape = TRUE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
796 if (output) result = g_string_append_c(result, *p);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
797 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
798 else if (*p == '\'')
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
799 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
800 if (output) result = g_string_append_c(result, *p);
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
801 if (!single_quotes && !double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
802 single_quotes = TRUE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
803 else if (single_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
804 single_quotes = FALSE;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
805 }
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
806 else if (*p == '"')
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
807 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
808 if (output) result = g_string_append_c(result, *p);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
809 if (!single_quotes && !double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
810 double_quotes = TRUE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
811 else if (double_quotes)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
812 double_quotes = FALSE;
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
813 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
814 else if (*p == '%' && p[1])
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
815 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
816 gchar *pathl = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
817
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
818 p++;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
819
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
820 switch (*p)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
821 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
822 case 'f': /* single file */
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
823 case 'u': /* single url */
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
824 flags |= EDITOR_FOR_EACH;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
825 if (flags & EDITOR_SINGLE_COMMAND)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
826 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
827 flags |= EDITOR_ERROR_INCOMPATIBLE;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
828 goto err;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
829 }
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
830 if (list)
1397
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
831 {
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
832 /* use the first file from the list */
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
833 if (!list->data)
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
834 {
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
835 flags |= EDITOR_ERROR_NO_FILE;
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
836 goto err;
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
837 }
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
838 pathl = editor_command_path_parse((FileData *)list->data,
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
839 consider_sidecars,
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
840 (*p == 'f') ? PATH_FILE : PATH_FILE_URL,
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
841 editor);
1753
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
842 if (!output)
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
843 {
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
844 /* just testing, check also the rest of the list (like with F and U)
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
845 any matching file is OK */
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
846 GList *work = list->next;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
847
1753
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
848 while (!pathl && work)
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
849 {
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
850 FileData *fd = work->data;
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
851 pathl = editor_command_path_parse(fd,
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
852 consider_sidecars,
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
853 (*p == 'f') ? PATH_FILE : PATH_FILE_URL,
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
854 editor);
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
855 work = work->next;
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
856 }
c9f46eb0f680 fixed editor list in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1746
diff changeset
857 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
858
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
859 if (!pathl)
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
860 {
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
861 flags |= EDITOR_ERROR_NO_FILE;
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
862 goto err;
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
863 }
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
864 if (output)
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
865 {
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
866 result = append_quoted(result, pathl, single_quotes, double_quotes);
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
867 }
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
868 g_free(pathl);
1397
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
869 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
870 break;
60
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
871
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
872 case 'F':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
873 case 'U':
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
874 flags |= EDITOR_SINGLE_COMMAND;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
875 if (flags & (EDITOR_FOR_EACH | EDITOR_DEST))
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
876 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
877 flags |= EDITOR_ERROR_INCOMPATIBLE;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
878 goto err;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
879 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
880
1399
c7b91cd7701b Fix up editor execution.
Laurent Monin <geeqie@norz.org>
parents: 1397
diff changeset
881 if (list)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
882 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
883 /* use whole list */
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
884 GList *work = list;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
885 gboolean ok = FALSE;
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
886
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
887 while (work)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
888 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
889 FileData *fd = work->data;
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
890 pathl = editor_command_path_parse(fd, consider_sidecars, (*p == 'F') ? PATH_FILE : PATH_FILE_URL, editor);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
891 if (pathl)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
892 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
893 ok = TRUE;
1397
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
894
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
895 if (output)
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
896 {
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
897 ok = TRUE;
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
898 if (work != list) g_string_append_c(result, ' ');
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
899 result = append_quoted(result, pathl, single_quotes, double_quotes);
1397
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
900 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
901 g_free(pathl);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
902 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
903 work = work->next;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
904 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
905 if (!ok)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
906 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
907 flags |= EDITOR_ERROR_NO_FILE;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
908 goto err;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
909 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
910 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
911 break;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
912 case 'i':
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
913 if (editor->icon && *editor->icon)
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
914 {
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
915 if (output)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
916 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
917 result = g_string_append(result, "--icon ");
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
918 result = append_quoted(result, editor->icon, single_quotes, double_quotes);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
919 }
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
920 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
921 break;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
922 case 'c':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
923 if (output)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
924 {
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
925 result = append_quoted(result, editor->name, single_quotes, double_quotes);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
926 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
927 break;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
928 case 'k':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
929 if (output)
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
930 {
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
931 result = append_quoted(result, editor->file, single_quotes, double_quotes);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
932 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
933 break;
669
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
934 case '%':
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
935 /* %% = % escaping */
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
936 if (output) result = g_string_append_c(result, *p);
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
937 break;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
938 case 'd':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
939 case 'D':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
940 case 'n':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
941 case 'N':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
942 case 'v':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
943 case 'm':
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
944 /* deprecated according to spec, ignore */
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
945 break;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
946 default:
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
947 flags |= EDITOR_ERROR_SYNTAX;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
948 goto err;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
949 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
950 }
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
951 else
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
952 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
953 if (output) result = g_string_append_c(result, *p);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
954 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
955 p++;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
956 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
957
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
958 if (!(flags & (EDITOR_FOR_EACH | EDITOR_SINGLE_COMMAND))) flags |= EDITOR_NO_PARAM;
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
959
1478
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
960 if (output)
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
961 {
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
962 *output = g_string_free(result, FALSE);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
963 DEBUG_3("Editor cmd: %s", *output);
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
964 }
54fe1d2403d8 Improve editors through .desktop files implementation:
Laurent Monin <geeqie@norz.org>
parents: 1468
diff changeset
965
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
966 return flags;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
967
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
968
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
969 err:
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
970 if (output)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
971 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
972 g_string_free(result, TRUE);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
973 *output = NULL;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
974 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
975 return flags;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
976 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
977
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
978
1397
db1b3d950a8c In various Edit context menus, only display editors that match the file types in the selection.
Laurent Monin <geeqie@norz.org>
parents: 1367
diff changeset
979 static void editor_child_exit_cb(GPid pid, gint status, gpointer data)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
980 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
981 EditorData *ed = data;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
982 g_spawn_close_pid(pid);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
983 ed->pid = -1;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
984
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
985 editor_command_next_finish(ed, status);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
986 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
987
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
988
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
989 static EditorFlags editor_command_one(const EditorDescription *editor, GList *list, EditorData *ed)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
990 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
991 gchar *command;
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
992 FileData *fd = (ed->flags & EDITOR_NO_PARAM) ? NULL : list->data;;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
993 GPid pid;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
994 gint standard_output;
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
995 gint standard_error;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
996 gboolean ok;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
997
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
998 ed->pid = -1;
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
999 ed->flags = editor->flags;
1742
b3626c54e20e fixed list of possible editors in popup menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1736
diff changeset
1000 ed->flags |= editor_command_parse(editor, list, TRUE, &command);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1001
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1002 ok = !EDITOR_ERRORS(ed->flags);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1003
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1004 if (ok)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1005 {
737
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1006 ok = (options->shell.path && *options->shell.path);
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1007 if (!ok) log_printf("ERROR: empty shell command\n");
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1008
737
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1009 if (ok)
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1010 {
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1011 ok = (access(options->shell.path, X_OK) == 0);
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1012 if (!ok) log_printf("ERROR: cannot execute shell command '%s'\n", options->shell.path);
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1013 }
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1014
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1015 if (!ok) ed->flags |= EDITOR_ERROR_CANT_EXEC;
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1016 }
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1017
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1018 if (ok)
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1019 {
443
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1020 gchar *working_directory;
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1021 gchar *args[4];
737
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1022 guint n = 0;
443
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1023
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1024 working_directory = fd ? remove_level_from_path(fd->path) : g_strdup(ed->working_directory);
737
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1025 args[n++] = options->shell.path;
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1026 if (options->shell.options && *options->shell.options)
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1027 args[n++] = options->shell.options;
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1028 args[n++] = command;
7c3a287e2922 Make shell command and its option rc file options instead of hardcoded strings.
Laurent Monin <geeqie@norz.org>
parents: 731
diff changeset
1029 args[n] = NULL;
443
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1030
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1031 if ((ed->flags & EDITOR_DEST) && fd->change && fd->change->dest) /* FIXME: error handling */
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1032 {
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1033 g_setenv("GEEQIE_DESTINATION", fd->change->dest, TRUE);
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1034 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1035 else
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1036 {
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1037 g_unsetenv("GEEQIE_DESTINATION");
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1038 }
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1039
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1040 ok = g_spawn_async_with_pipes(working_directory, args, NULL,
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1041 G_SPAWN_DO_NOT_REAP_CHILD, /* GSpawnFlags */
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1042 NULL, NULL,
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1043 &pid,
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1044 NULL,
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1045 ed->vd ? &standard_output : NULL,
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1046 ed->vd ? &standard_error : NULL,
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1047 NULL);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1048
443
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1049 g_free(working_directory);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1050
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1051 if (!ok) ed->flags |= EDITOR_ERROR_CANT_EXEC;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1052 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1053
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1054 if (ok)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1055 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1056 g_child_watch_add(pid, editor_child_exit_cb, ed);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1057 ed->pid = pid;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1058 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1059
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1060 if (ed->vd)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1061 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1062 if (!ok)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1063 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1064 gchar *buf;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1065
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1066 buf = g_strdup_printf(_("Failed to run command:\n%s\n"), editor->file);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1067 editor_verbose_window_fill(ed->vd, buf, strlen(buf));
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1068 g_free(buf);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1069
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1070 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1071 else
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1072 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1073 GIOChannel *channel_output;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1074 GIOChannel *channel_error;
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
1075
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1076 channel_output = g_io_channel_unix_new(standard_output);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1077 g_io_channel_set_flags(channel_output, G_IO_FLAG_NONBLOCK, NULL);
926
06070888eff5 Set GIO channels to binary encoding.
Laurent Monin <geeqie@norz.org>
parents: 911
diff changeset
1078 g_io_channel_set_encoding(channel_output, NULL, NULL);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1079
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1080 g_io_add_watch_full(channel_output, G_PRIORITY_HIGH, G_IO_IN | G_IO_ERR | G_IO_HUP,
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1081 editor_verbose_io_cb, ed, NULL);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1082 g_io_channel_unref(channel_output);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1083
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1084 channel_error = g_io_channel_unix_new(standard_error);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1085 g_io_channel_set_flags(channel_error, G_IO_FLAG_NONBLOCK, NULL);
926
06070888eff5 Set GIO channels to binary encoding.
Laurent Monin <geeqie@norz.org>
parents: 911
diff changeset
1086 g_io_channel_set_encoding(channel_error, NULL, NULL);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1087
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1088 g_io_add_watch_full(channel_error, G_PRIORITY_HIGH, G_IO_IN | G_IO_ERR | G_IO_HUP,
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1089 editor_verbose_io_cb, ed, NULL);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1090 g_io_channel_unref(channel_error);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1091 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1092 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1093
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1094 g_free(command);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1095
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1096 return EDITOR_ERRORS(ed->flags);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1097 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1098
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1099 static EditorFlags editor_command_next_start(EditorData *ed)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1100 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1101 if (ed->vd) editor_verbose_window_fill(ed->vd, "\n", 1);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1102
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1103 if ((ed->list || (ed->flags & EDITOR_NO_PARAM)) && ed->count < ed->total)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1104 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1105 FileData *fd;
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1106 EditorFlags error;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1107
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1108 fd = (ed->flags & EDITOR_NO_PARAM) ? NULL : ed->list->data;
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1109
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1110 if (ed->vd)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1111 {
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1112 if ((ed->flags & EDITOR_FOR_EACH) && fd)
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1113 editor_verbose_window_progress(ed, fd->path);
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1114 else
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1115 editor_verbose_window_progress(ed, _("running..."));
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1116 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1117 ed->count++;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1118
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1119 error = editor_command_one(ed->editor, ed->list, ed);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1120 if (!error && ed->vd)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1121 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1122 gtk_widget_set_sensitive(ed->vd->button_stop, (ed->list != NULL) );
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1123 if ((ed->flags & EDITOR_FOR_EACH) && fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1124 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1125 editor_verbose_window_fill(ed->vd, fd->path, strlen(fd->path));
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1126 editor_verbose_window_fill(ed->vd, "\n", 1);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1127 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1128 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1129
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1130 if (!error)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1131 return 0;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1132
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1133 /* command was not started, call the finish immediately */
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1134 return editor_command_next_finish(ed, 0);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1135 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1136
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1137 /* everything is done */
237
d45bcad026e3 Add missing return at the end of editor_command_next_start().
Laurent Monin <geeqie@norz.org>
parents: 196
diff changeset
1138 return editor_command_done(ed);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1139 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1140
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1141 static EditorFlags editor_command_next_finish(EditorData *ed, gint status)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1142 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1143 gint cont = ed->stopping ? EDITOR_CB_SKIP : EDITOR_CB_CONTINUE;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1144
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1145 if (status)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1146 ed->flags |= EDITOR_ERROR_STATUS;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1147
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1148 if (ed->flags & EDITOR_FOR_EACH)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1149 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1150 /* handle the first element from the list */
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1151 GList *fd_element = ed->list;
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
1152
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1153 ed->list = g_list_remove_link(ed->list, fd_element);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1154 if (ed->callback)
911
85b7a4ca15e2 fixed stop button in editor dialog
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 768
diff changeset
1155 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1156 cont = ed->callback(ed->list ? ed : NULL, ed->flags, fd_element, ed->data);
911
85b7a4ca15e2 fixed stop button in editor dialog
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 768
diff changeset
1157 if (ed->stopping && cont == EDITOR_CB_CONTINUE) cont = EDITOR_CB_SKIP;
85b7a4ca15e2 fixed stop button in editor dialog
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 768
diff changeset
1158 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1159 filelist_free(fd_element);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1160 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1161 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1162 {
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1163 /* handle whole list */
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1164 if (ed->callback)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1165 cont = ed->callback(NULL, ed->flags, ed->list, ed->data);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1166 filelist_free(ed->list);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1167 ed->list = NULL;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1168 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1169
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1170 switch (cont)
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1171 {
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1172 case EDITOR_CB_SUSPEND:
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1173 return EDITOR_ERRORS(ed->flags);
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1174 case EDITOR_CB_SKIP:
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1175 return editor_command_done(ed);
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1176 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1177
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1178 return editor_command_next_start(ed);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1179 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1180
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1181 static EditorFlags editor_command_done(EditorData *ed)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1182 {
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1183 EditorFlags flags;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1184
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1185 if (ed->vd)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1186 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1187 if (ed->count == ed->total)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1188 {
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1189 editor_verbose_window_progress(ed, _("done"));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1190 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1191 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1192 {
1402
db64892cb2b1 Cleanup and minor fixes.
Laurent Monin <geeqie@norz.org>
parents: 1400
diff changeset
1193 editor_verbose_window_progress(ed, _("stopped by user"));
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1194 }
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1195 editor_verbose_window_enable_close(ed->vd);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1196 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1197
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1198 /* free the not-handled items */
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1199 if (ed->list)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1200 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1201 ed->flags |= EDITOR_ERROR_SKIPPED;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1202 if (ed->callback) ed->callback(NULL, ed->flags, ed->list, ed->data);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1203 filelist_free(ed->list);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1204 ed->list = NULL;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1205 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1206
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1207 ed->count = 0;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1208
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1209 flags = EDITOR_ERRORS(ed->flags);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1210
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1211 if (!ed->vd) editor_data_free(ed);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1212
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1213 return flags;
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1214 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1215
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1216 void editor_resume(gpointer ed)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1217 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1218 editor_command_next_start(ed);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1219 }
443
dc200d04664f editor_command_one(): tidy up.
Laurent Monin <geeqie@norz.org>
parents: 442
diff changeset
1220
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1221 void editor_skip(gpointer ed)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1222 {
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1223 editor_command_done(ed);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1224 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1225
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1226 static EditorFlags editor_command_start(const EditorDescription *editor, const gchar *text, GList *list, const gchar *working_directory, EditorCallback cb, gpointer data)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1227 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1228 EditorData *ed;
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1229 EditorFlags flags = editor->flags;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1230
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1231 if (EDITOR_ERRORS(flags)) return EDITOR_ERRORS(flags);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1232
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1233 ed = g_new0(EditorData, 1);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1234 ed->list = filelist_copy(list);
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1235 ed->flags = flags;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1236 ed->editor = editor;
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1237 ed->total = (flags & (EDITOR_SINGLE_COMMAND | EDITOR_NO_PARAM)) ? 1 : g_list_length(list);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1238 ed->callback = cb;
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1239 ed->data = data;
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1240 ed->working_directory = g_strdup(working_directory);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1241
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1242 if ((flags & EDITOR_VERBOSE_MULTI) && list && list->next)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1243 flags |= EDITOR_VERBOSE;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1244
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1245 if (flags & EDITOR_VERBOSE)
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1246 editor_verbose_window(ed, text);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1247
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 440
diff changeset
1248 editor_command_next_start(ed);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1249 /* errors from editor_command_next_start will be handled via callback */
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1250 return EDITOR_ERRORS(flags);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1251 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1252
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1253 gboolean is_valid_editor_command(const gchar *key)
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
1254 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1255 if (!key) return FALSE;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1256 return g_hash_table_lookup(editors, key) != NULL;
444
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
1257 }
5bc532bbe6bf Minor cleanup and code redundancy reduction.
Laurent Monin <geeqie@norz.org>
parents: 443
diff changeset
1258
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1259 EditorFlags start_editor_from_filelist_full(const gchar *key, GList *list, const gchar *working_directory, EditorCallback cb, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1260 {
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1261 EditorFlags error;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1262 EditorDescription *editor;
1743
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1263 if (!key) return EDITOR_ERROR_EMPTY;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1264
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1265 editor = g_hash_table_lookup(editors, key);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1266
1743
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1267 if (!editor) return EDITOR_ERROR_EMPTY;
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1268 if (!list && !(editor->flags & EDITOR_NO_PARAM)) return EDITOR_ERROR_NO_FILE;
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1269
1743
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1270 error = editor_command_parse(editor, list, TRUE, NULL);
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1271
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1272 if (EDITOR_ERRORS(error)) return error;
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1273
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1274 error |= editor_command_start(editor, editor->name, list, working_directory, cb, data);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1275
1400
560108ea2466 Add helper macros EDITOR_ERRORS() and EDITOR_ERRORS_BUT_SKIPPED() to clean up the code a bit. Minor tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1399
diff changeset
1276 if (EDITOR_ERRORS(error))
669
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
1277 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1278 gchar *text = g_strdup_printf(_("%s\n\"%s\""), editor_get_error_str(error), editor->file);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1279
669
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
1280 file_util_warning_dialog(_("Invalid editor command"), text, GTK_STOCK_DIALOG_ERROR, NULL);
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
1281 g_free(text);
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
1282 }
b208689466d1 Improve editors a bit:
Laurent Monin <geeqie@norz.org>
parents: 586
diff changeset
1283
1743
5d4633f002b2 start_editor_from_filelist_full fixes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1742
diff changeset
1284 return EDITOR_ERRORS(error);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1285 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1286
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1287 EditorFlags start_editor_from_filelist(const gchar *key, GList *list)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1288 {
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1289 return start_editor_from_filelist_full(key, list, NULL, NULL, NULL);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1290 }
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1291
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1292 EditorFlags start_editor_from_file_full(const gchar *key, FileData *fd, EditorCallback cb, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1293 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1294 GList *list;
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1295 EditorFlags error;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1296
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
1297 if (!fd) return FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1298
138
5be5d1c53016 replaced gchar* path with FileData *fd
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 136
diff changeset
1299 list = g_list_append(NULL, fd);
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1300 error = start_editor_from_filelist_full(key, list, NULL, cb, data);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1301 g_list_free(list);
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1302 return error;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1303 }
60
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1304
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1305 EditorFlags start_editor_from_file(const gchar *key, FileData *fd)
136
2f6f77e0675a more external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 135
diff changeset
1306 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1307 return start_editor_from_file_full(key, fd, NULL, NULL);
136
2f6f77e0675a more external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 135
diff changeset
1308 }
2f6f77e0675a more external commands
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 135
diff changeset
1309
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1310 EditorFlags start_editor(const gchar *key, const gchar *working_directory)
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1311 {
1652
b544063ff6c5 run external commands from current directory even with no files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1618
diff changeset
1312 return start_editor_from_filelist_full(key, NULL, working_directory, NULL, NULL);
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1313 }
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1314
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1315 gboolean editor_window_flag_set(const gchar *key)
60
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1316 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1317 EditorDescription *editor;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1318 if (!key) return TRUE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1319
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1320 editor = g_hash_table_lookup(editors, key);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1321 if (!editor) return TRUE;
60
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1322
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1323 return !!(editor->flags & EDITOR_KEEP_FS);
60
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1324 }
15ab9630b61a Mon Jun 13 17:31:46 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 9
diff changeset
1325
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1326 gboolean editor_is_filter(const gchar *key)
753
cffccbff200a rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 737
diff changeset
1327 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1328 EditorDescription *editor;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1329 if (!key) return TRUE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1330
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1331 editor = g_hash_table_lookup(editors, key);
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1332 if (!editor) return TRUE;
753
cffccbff200a rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 737
diff changeset
1333
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1334 return !!(editor->flags & EDITOR_DEST);
753
cffccbff200a rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 737
diff changeset
1335 }
cffccbff200a rewritten utilops.h:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 737
diff changeset
1336
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1337 gboolean editor_no_param(const gchar *key)
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1338 {
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1339 EditorDescription *editor;
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1340 if (!key) return FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1341
1581
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1342 editor = g_hash_table_lookup(editors, key);
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1343 if (!editor) return FALSE;
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1344
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1345 return !!(editor->flags & EDITOR_NO_PARAM);
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1346 }
73d2e9ac0248 allow external editors without parameters, as long as they are in
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1486
diff changeset
1347
1618
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1348 gboolean editor_blocks_file(const gchar *key)
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1349 {
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1350 EditorDescription *editor;
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1351 if (!key) return FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1352
1618
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1353 editor = g_hash_table_lookup(editors, key);
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1354 if (!editor) return FALSE;
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1355
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1356 /* Decide if the image file should be blocked during editor execution
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1357 Editors like gimp can be used long time after the original file was
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1358 saved, for editing unrelated files.
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1359 %f vs. %F seems to be a good heuristic to detect this kind of editors.
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1360 */
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1361
1618
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1362 return !(editor->flags & EDITOR_SINGLE_COMMAND);
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1363 }
aa1476183236 do not block the files sent to external editors like gimp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1581
diff changeset
1364
1405
eb76f4bcf474 Introduce EditorFlags type, cleanup.
Laurent Monin <geeqie@norz.org>
parents: 1402
diff changeset
1365 const gchar *editor_get_error_str(EditorFlags flags)
140
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1366 {
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1367 if (flags & EDITOR_ERROR_EMPTY) return _("Editor template is empty.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1368 if (flags & EDITOR_ERROR_SYNTAX) return _("Editor template has incorrect syntax.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1369 if (flags & EDITOR_ERROR_INCOMPATIBLE) return _("Editor template uses incompatible macros.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1370 if (flags & EDITOR_ERROR_NO_FILE) return _("Can't find matching file type.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1371 if (flags & EDITOR_ERROR_CANT_EXEC) return _("Can't execute external editor.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1372 if (flags & EDITOR_ERROR_STATUS) return _("External editor returned error status.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1373 if (flags & EDITOR_ERROR_SKIPPED) return _("File was skipped.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1374 return _("Unknown error.");
36ec74dabb76 editors.c was almost completely rewritten:
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 138
diff changeset
1375 }
731
4d7d4787dafb Introduce an helper function that returns the name of an editor.
Laurent Monin <geeqie@norz.org>
parents: 730
diff changeset
1376
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1377 const gchar *editor_get_name(const gchar *key)
731
4d7d4787dafb Introduce an helper function that returns the name of an editor.
Laurent Monin <geeqie@norz.org>
parents: 730
diff changeset
1378 {
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1379 EditorDescription *editor = g_hash_table_lookup(editors, key);
731
4d7d4787dafb Introduce an helper function that returns the name of an editor.
Laurent Monin <geeqie@norz.org>
parents: 730
diff changeset
1380
1272
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1381 if (!editor) return NULL;
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1382
661e170bf4f7 read external editors from .desktop files
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1229
diff changeset
1383 return editor->name;
731
4d7d4787dafb Introduce an helper function that returns the name of an editor.
Laurent Monin <geeqie@norz.org>
parents: 730
diff changeset
1384 }
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1022
diff changeset
1385 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */