#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_FOR_EACH = 0x00000200,
EDITOR_SINGLE_COMMAND = 0x00000400,
EDITOR_NO_PARAM = 0x00000800,
- /* below are errors */
+ /**< below are errors */
EDITOR_ERROR_EMPTY = 0x00020000,
EDITOR_ERROR_SYNTAX = 0x00040000,
EDITOR_ERROR_INCOMPATIBLE = 0x00080000,
EDITOR_ERROR_CANT_EXEC = 0x00200000,
EDITOR_ERROR_STATUS = 0x00400000,
EDITOR_ERROR_SKIPPED = 0x00800000,
- /* mask to match errors only */
- EDITOR_ERROR_MASK = 0xffff0000,
-} EditorFlags;
-
-struct _EditorDescription {
- gchar *key; /* desktop file name, not including path, including extension */
- gchar *name; /* Name, localized name presented to user */
- gchar *icon; /* Icon */
- gchar *exec; /* Exec */
+ /**< mask to match errors only */
+ EDITOR_ERROR_MASK = ~0xffff,
+};
+
+struct EditorDescription {
+ gchar *key; /**< desktop file name, not including path, including extension */
+ gchar *name; /**< Name, localized name presented to user */
+ gchar *icon; /**< Icon */
+ gchar *exec; /**< Exec */
gchar *menu_path;
gchar *hotkey;
GList *ext_list;
gchar *file;
- gchar *comment; /* .desktop Comment key, used to show a tooltip */
+ gchar *comment; /**< .desktop Comment key, used to show a tooltip */
EditorFlags flags;
- gboolean hidden; /* explicitly hidden, shown in configuration dialog */
- gboolean ignored; /* not interesting, do not show at all */
- gboolean disabled; /* display disabled by user */
+ gboolean hidden; /**< explicitly hidden, shown in configuration dialog */
+ gboolean ignored; /**< not interesting, do not show at all */
+ 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)); }
-/* return values from callback function */
+/**
+ * @note EDITOR_CB_*:
+ * Return values from callback function
+ */
enum {
- EDITOR_CB_CONTINUE = 0, /* continue multiple editor execution on remaining files*/
- EDITOR_CB_SKIP, /* skip the remaining files */
- EDITOR_CB_SUSPEND /* suspend execution, one of editor_resume or editor_skip
+ EDITOR_CB_CONTINUE = 0, /**< continue multiple editor execution on remaining files*/
+ EDITOR_CB_SKIP, /**< skip the remaining files */
+ EDITOR_CB_SUSPEND /**< suspend execution, one of editor_resume or editor_skip
must be called later */
};
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();
-/*
-Callback is called even on skipped files, with the EDITOR_ERROR_SKIPPED flag set.
-It is a good place to call file_data_change_info_free().
-
-ed - pointer that can be used for editor_resume/editor_skip or NULL if all files were already processed
-flags - flags above
-list - list of processed FileData structures, typically single file or whole list passed to start_editor_*
-data - generic pointer
+/**
+ * @typedef EditorCallback
+ *
+ * Callback is called even on skipped files, with the #EDITOR_ERROR_SKIPPED flag set.
+ * It is a good place to call file_data_change_info_free().
+ *
+ * @param ed - pointer that can be used for editor_resume/editor_skip or NULL if all files were already processed \n
+ * @param flags - flags above \n
+ * @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);