1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2024-11-18 13:54:36 -05:00

Prepare updates for new APIs.

This commit is contained in:
Qball Cow 2023-06-01 21:56:06 +02:00
parent dd3035a1a6
commit 7972420c30
10 changed files with 66 additions and 8 deletions

View file

@ -32,7 +32,16 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/** ABI version to check if loaded plugin is compatible. */ /** ABI version to check if loaded plugin is compatible. */
#define ABI_VERSION 6u #define ABI_VERSION 7u
typedef enum {
/** Mode type is not set */
MODE_TYPE_UNSET = 0b0000,
/** A normal mode. */
MODE_TYPE_SWITCHER = 0b0001,
/** A mode that can be used to completer */
MODE_TYPE_COMPLETER = 0b0010,
} ModeType;
/** /**
* @param data Pointer to #Mode object. * @param data Pointer to #Mode object.
@ -151,6 +160,28 @@ typedef char *(*_mode_preprocess_input)(Mode *sw, const char *input);
*/ */
typedef char *(*_mode_get_message)(const Mode *sw); typedef char *(*_mode_get_message)(const Mode *sw);
/**
* Create a new instance of this mode.
* Free (free) result after use, after using mode_destroy.
*
* @returns Instantiate a new instance of this mode.
*/
typedef Mode *(*_mode_create)( void );
/**
* @param sw The #Mode pointer
* @param menu_retv The return value
* @param input The input string
* @param selected_line The selected line
* @param the path that was completed
*
* Handle the user accepting an entry in completion mode.
*
* @returns the next action to take
*/
typedef ModeMode (*_mode_completer_result)(Mode *sw, int menu_retv, char **input,
unsigned int selected_line, char **path);
/** /**
* Structure defining a switcher. * Structure defining a switcher.
* It consists of a name, callback and if enabled * It consists of a name, callback and if enabled
@ -197,6 +228,17 @@ struct rofi_mode {
* And has data in `ed` * And has data in `ed`
*/ */
_mode_free free; _mode_free free;
/**
* Create mode.
*/
_mode_create create;
/**
* If this mode is used as completer.
*/
_mode_completer_result completer_result;
/** Extra fields for script */ /** Extra fields for script */
void *ed; void *ed;
@ -206,6 +248,9 @@ struct rofi_mode {
/** Fallack icon.*/ /** Fallack icon.*/
uint32_t fallback_icon_fetch_uid; uint32_t fallback_icon_fetch_uid;
uint32_t fallback_icon_not_found; uint32_t fallback_icon_not_found;
/** type */
ModeType type;
}; };
G_END_DECLS G_END_DECLS
#endif // ROFI_MODE_PRIVATE_H #endif // ROFI_MODE_PRIVATE_H

View file

@ -44,6 +44,9 @@
int mode_init(Mode *mode) { int mode_init(Mode *mode) {
g_return_val_if_fail(mode != NULL, FALSE); g_return_val_if_fail(mode != NULL, FALSE);
g_return_val_if_fail(mode->_init != NULL, FALSE); g_return_val_if_fail(mode->_init != NULL, FALSE);
if ( mode->type == MODE_TYPE_UNSET ) {
g_warning("Mode '%s' does not have a type set. Please update mode.", mode->name);
}
// to make sure this is initialized correctly. // to make sure this is initialized correctly.
mode->fallback_icon_fetch_uid = 0; mode->fallback_icon_fetch_uid = 0;
mode->fallback_icon_not_found = FALSE; mode->fallback_icon_not_found = FALSE;

View file

@ -342,4 +342,5 @@ Mode combi_mode = {.name = "combi",
._get_icon = combi_get_icon, ._get_icon = combi_get_icon,
._preprocess_input = combi_preprocess_input, ._preprocess_input = combi_preprocess_input,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };

View file

@ -1483,6 +1483,7 @@ Mode drun_mode = {.name = "drun",
._get_icon = _get_icon, ._get_icon = _get_icon,
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };
#endif // ENABLE_DRUN #endif // ENABLE_DRUN

View file

@ -729,4 +729,5 @@ Mode file_browser_mode = {
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL, .free = NULL,
.type = MODE_TYPE_SWITCHER|MODE_TYPE_COMPLETER
}; };

View file

@ -118,4 +118,5 @@ Mode help_keys_mode = {.name = "keys",
._get_completion = NULL, ._get_completion = NULL,
._get_display_value = _get_display_value, ._get_display_value = _get_display_value,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };

View file

@ -568,4 +568,6 @@ Mode recursive_browser_mode = {
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL, .free = NULL,
.create = create_new_recursive_browser,
.type = MODE_TYPE_SWITCHER|MODE_TYPE_COMPLETER
}; };

View file

@ -572,5 +572,6 @@ Mode run_mode = {.name = "run",
._get_completion = NULL, ._get_completion = NULL,
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };
/** @}*/ /** @}*/

View file

@ -645,5 +645,6 @@ Mode ssh_mode = {.name = "ssh",
._get_completion = NULL, ._get_completion = NULL,
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };
/**@}*/ /**@}*/

View file

@ -1134,7 +1134,8 @@ Mode window_mode = {.name = "window",
._get_completion = NULL, ._get_completion = NULL,
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };
Mode window_mode_cd = {.name = "windowcd", Mode window_mode_cd = {.name = "windowcd",
.cfg_name_key = "display-windowcd", .cfg_name_key = "display-windowcd",
._init = window_mode_init_cd, ._init = window_mode_init_cd,
@ -1147,6 +1148,7 @@ Mode window_mode_cd = {.name = "windowcd",
._get_completion = NULL, ._get_completion = NULL,
._preprocess_input = NULL, ._preprocess_input = NULL,
.private_data = NULL, .private_data = NULL,
.free = NULL}; .free = NULL,
.type = MODE_TYPE_SWITCHER };
#endif // WINDOW_MODE #endif // WINDOW_MODE