#ifndef EDITORS_H
#define EDITORS_H
+#include <glib.h>
+#include <gtk/gtk.h>
-typedef enum {
+struct FileData;
+
+enum EditorFlags {
EDITOR_KEEP_FS = 0x00000001,
EDITOR_VERBOSE = 0x00000002,
EDITOR_VERBOSE_MULTI = 0x00000004,
EDITOR_ERROR_STATUS = 0x00400000,
EDITOR_ERROR_SKIPPED = 0x00800000,
/**< mask to match errors only */
- EDITOR_ERROR_MASK = 0xffff0000,
-} EditorFlags;
+ EDITOR_ERROR_MASK = ~0xffff,
+};
-struct _EditorDescription {
+struct EditorDescription {
gchar *key; /**< desktop file name, not including path, including extension */
gchar *name; /**< Name, localized name presented to user */
gchar *icon; /**< Icon */
gboolean disabled; /**< display disabled by user */
};
-#define EDITOR_ERRORS(flags) ((flags) & EDITOR_ERROR_MASK)
-#define EDITOR_ERRORS_BUT_SKIPPED(flags) (!!(((flags) & EDITOR_ERROR_MASK) && !((flags) & EDITOR_ERROR_SKIPPED)))
+inline gint editor_errors(EditorFlags flags) { return flags & EDITOR_ERROR_MASK; }
+inline gboolean editor_errors_but_skipped(EditorFlags flags) { return !!(editor_errors(flags) && !(flags & EDITOR_ERROR_SKIPPED)); }
/**
extern GHashTable *editors;
-void editor_table_finish(void);
-void editor_table_clear(void);
-GList *editor_get_desktop_files(void);
+void editor_table_finish();
+void editor_table_clear();
+GList *editor_get_desktop_files();
gboolean editor_read_desktop_file(const gchar *path);
-GList *editor_list_get(void);
+GList *editor_list_get();
/**
* @param list - list of processed #FileData structures, typically single file or whole list passed to start_editor_* @n
* @param data - generic pointer
*/
-typedef gint (*EditorCallback) (gpointer ed, EditorFlags flags, GList *list, gpointer data);
+using EditorCallback = gint (*)(gpointer, EditorFlags, GList *, gpointer);
void editor_resume(gpointer ed);
gboolean editor_no_param(const gchar *key);
const gchar *editor_get_error_str(EditorFlags flags);
-const gchar *editor_get_name(const gchar *key);
-
gboolean is_valid_editor_command(const gchar *key);
gboolean editor_blocks_file(const gchar *key);