mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
Cleanups, rename and document.
This commit is contained in:
parent
00a555b685
commit
d1591273e7
3 changed files with 69 additions and 54 deletions
119
include/rofi.h
119
include/rofi.h
|
@ -31,11 +31,6 @@ typedef enum
|
|||
PREVIOUS_DIALOG = 1003
|
||||
} SwitcherMode;
|
||||
|
||||
typedef void ( *switcher_free )( Switcher *data );
|
||||
|
||||
typedef char * ( *get_display_value )( const Switcher *sw, unsigned int selected_line, int *state, int get_entry );
|
||||
|
||||
typedef char * ( *get_completion )( const Switcher *sw, unsigned int selected_line );
|
||||
/**
|
||||
* State returned by the rofi window.
|
||||
*/
|
||||
|
@ -61,38 +56,6 @@ typedef enum
|
|||
MENU_LOWER_MASK = 0x0000FFFF
|
||||
} MenuReturn;
|
||||
|
||||
/**
|
||||
* @param tokens List of (input) tokens to match.
|
||||
* @param input The entry to match against.
|
||||
* @param case_sensitive Whether case is significant.
|
||||
* @param index The current selected index.
|
||||
* @param data User data.
|
||||
*
|
||||
* Function prototype for the matching algorithm.
|
||||
*
|
||||
* @returns 1 when it matches, 0 if not.
|
||||
*/
|
||||
typedef int ( *menu_match_cb )( const Switcher *data, char **tokens, int not_ascii, int case_sensitive, unsigned int index );
|
||||
|
||||
/**
|
||||
* @param sw the Switcher to show.
|
||||
* @param lines An array of strings to display.
|
||||
* @param num_lines Length of the array with strings to display.
|
||||
* @param input A pointer to a string where the inputted data is placed.
|
||||
* @param prompt The prompt to show.
|
||||
* @param shift pointer to integer that is set to the state of the shift key.
|
||||
* @param mmc Menu menu match callback, used for matching user input.
|
||||
* @param mmc_data data to pass to mmc.
|
||||
* @param selected_line pointer to integer holding the selected line.
|
||||
* @param message Extra message to display.
|
||||
*
|
||||
* Main menu callback.
|
||||
*
|
||||
* @returns The command issued (see MenuReturn)
|
||||
*/
|
||||
MenuReturn menu ( Switcher *sw, char **input, char *prompt, unsigned int *selected_line, unsigned int *next_pos, const char *message )
|
||||
__attribute__ ( ( nonnull ( 1, 2, 3, 4 ) ) );
|
||||
|
||||
/**
|
||||
* @param sig The caught signal
|
||||
*
|
||||
|
@ -132,6 +95,24 @@ typedef enum _WindowLocation
|
|||
WL_WEST = 8
|
||||
} WindowLocation;
|
||||
|
||||
/**
|
||||
* @param sw the Switcher to show.
|
||||
* @param lines An array of strings to display.
|
||||
* @param num_lines Length of the array with strings to display.
|
||||
* @param input A pointer to a string where the inputted data is placed.
|
||||
* @param prompt The prompt to show.
|
||||
* @param shift pointer to integer that is set to the state of the shift key.
|
||||
* @param mmc Menu menu match callback, used for matching user input.
|
||||
* @param mmc_data data to pass to mmc.
|
||||
* @param selected_line pointer to integer holding the selected line.
|
||||
* @param message Extra message to display.
|
||||
*
|
||||
* Main menu callback.
|
||||
*
|
||||
* @returns The command issued (see MenuReturn)
|
||||
*/
|
||||
MenuReturn menu ( Switcher *sw, char **input, char *prompt, unsigned int *selected_line, unsigned int *next_pos, const char *message )
|
||||
__attribute__ ( ( nonnull ( 1, 2, 3, 4 ) ) );
|
||||
/**
|
||||
* Settings
|
||||
*/
|
||||
|
@ -262,6 +243,34 @@ extern Settings config;
|
|||
*/
|
||||
void error_dialog ( const char *msg, int markup );
|
||||
|
||||
typedef void ( *switcher_free )( Switcher *data );
|
||||
|
||||
typedef char * ( *switcher_get_display_value )( const Switcher *sw, unsigned int selected_line, int *state, int get_entry );
|
||||
|
||||
typedef char * ( *switcher_get_completion )( const Switcher *sw, unsigned int selected_line );
|
||||
/**
|
||||
* @param tokens List of (input) tokens to match.
|
||||
* @param input The entry to match against.
|
||||
* @param case_sensitive Whether case is significant.
|
||||
* @param index The current selected index.
|
||||
* @param data User data.
|
||||
*
|
||||
* Function prototype for the matching algorithm.
|
||||
*
|
||||
* @returns 1 when it matches, 0 if not.
|
||||
*/
|
||||
typedef int ( *switcher_token_match )( const Switcher *data, char **tokens, int not_ascii, int case_sensitive, unsigned int index );
|
||||
|
||||
typedef void ( *switcher_init )( Switcher *sw );
|
||||
|
||||
typedef unsigned int ( *switcher_get_num_entries )( const Switcher *sw );
|
||||
|
||||
typedef void ( *switcher_destroy )( Switcher *sw );
|
||||
|
||||
typedef SwitcherMode ( *switcher_result )( Switcher *sw, int menu_retv, char **input, unsigned int selected_line );
|
||||
|
||||
typedef int ( *switcher_is_not_ascii )( const Switcher *sw, unsigned int index );
|
||||
|
||||
/**
|
||||
* Structure defining a switcher.
|
||||
* It consists of a name, callback and if enabled
|
||||
|
@ -280,26 +289,32 @@ struct _Switcher
|
|||
/**
|
||||
* A switcher normally consists of the following parts:
|
||||
*/
|
||||
void ( *init )( struct _Switcher *sw );
|
||||
unsigned int ( *get_num_entries )( const struct _Switcher *sw );
|
||||
SwitcherMode ( *result )( struct _Switcher *sw, int menu_retv, char **input, unsigned int selected_line );
|
||||
void ( *destroy )( struct _Switcher *pd );
|
||||
// Initialize the Switcher
|
||||
switcher_init init;
|
||||
// Destroy the switcher, e.g. free all its memory.
|
||||
switcher_destroy destroy;
|
||||
// Get number of entries to display. (unfiltered).
|
||||
switcher_get_num_entries get_num_entries;
|
||||
// Check if the element is ascii.
|
||||
switcher_is_not_ascii is_not_ascii;
|
||||
// Process the result of the user selection.
|
||||
switcher_result result;
|
||||
// Token match.
|
||||
menu_match_cb token_match;
|
||||
|
||||
get_display_value mgrv;
|
||||
|
||||
int ( *is_not_ascii )( const struct _Switcher *sw, unsigned int index );
|
||||
|
||||
get_completion get_completion;
|
||||
switcher_token_match token_match;
|
||||
// Get the string to display for the entry.
|
||||
switcher_get_display_value mgrv;
|
||||
// Get the 'completed' entry.
|
||||
switcher_get_completion get_completion;
|
||||
|
||||
// Pointer to private data.
|
||||
void *private_data;
|
||||
void *private_data;
|
||||
|
||||
// Extra fields for script
|
||||
void *ed;
|
||||
// Free SWitcher
|
||||
switcher_free free;
|
||||
// Only to be used when the switcher object itself is dynamic.
|
||||
// And has data in `ed`
|
||||
switcher_free free;
|
||||
// Extra fields for script
|
||||
void *ed;
|
||||
};
|
||||
|
||||
#define color_reset "\033[0m"
|
||||
|
|
|
@ -326,7 +326,7 @@ static void run_mode_destroy ( Switcher *sw )
|
|||
}
|
||||
}
|
||||
|
||||
static char *mgrv ( const Switcher *sw, unsigned int selected_line, G_GNUC_UNUSED int *state, int get_entry )
|
||||
static char *mgrv ( const Switcher *sw, unsigned int selected_line, G_GNUC_UNUSED int *state, int get_entry )
|
||||
{
|
||||
const RunModePrivateData *rmpd = (const RunModePrivateData *) sw->private_data;
|
||||
return get_entry ? g_strdup ( rmpd->cmd_list[selected_line] ) : NULL;
|
||||
|
|
|
@ -771,7 +771,7 @@ static void filter_elements ( thread_state *t, G_GNUC_UNUSED gpointer user_data
|
|||
t->state->line_map[t->start + t->count] = i;
|
||||
if ( config.levenshtein_sort ) {
|
||||
// This is inefficient, need to fix it.
|
||||
char * str = t->state->sw->mgrv ( t->state->sw, i, &st, TRUE );
|
||||
char * str = t->state->sw->mgrv ( t->state->sw, i, &st, TRUE );
|
||||
t->state->distance[i] = levenshtein ( t->state->text->text, str );
|
||||
g_free ( str );
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue