static int combi_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { CombiModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) ); mode_set_private_data ( sw, (void *) pd ); combi_mode_parse_switchers ( sw ); pd->starts = g_malloc0 ( sizeof ( int ) * pd->num_switchers ); pd->lengths = g_malloc0 ( sizeof ( int ) * pd->num_switchers ); for ( unsigned int i = 0; i < pd->num_switchers; i++ ) { if ( !mode_init ( pd->switchers[i] ) ) { return FALSE; } } if ( pd->cmd_list_length == 0 ) { pd->cmd_list_length = 0; for ( unsigned int i = 0; i < pd->num_switchers; i++ ) { unsigned int length = mode_get_num_entries ( pd->switchers[i] ); pd->starts[i] = pd->cmd_list_length; pd->lengths[i] = length; pd->cmd_list_length += length; } } } return TRUE; }
/** * @param sw Object handle to the SSH Mode object * * Initializes the SSH Mode private data object and * loads the relevant ssh information. */ static int ssh_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { SSHModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) ); mode_set_private_data ( sw, (void *) pd ); pd->hosts_list = get_ssh ( &( pd->hosts_list_length ) ); } return TRUE; }
/** * @param sw Object handle to the SSH Mode object * * Cleanup the SSH Mode. Free all allocated memory and NULL the private data pointer. */ static void ssh_mode_destroy ( Mode *sw ) { SSHModePrivateData *rmpd = (SSHModePrivateData *) mode_get_private_data ( sw ); if ( rmpd != NULL ) { g_strfreev ( rmpd->hosts_list ); g_free ( rmpd ); mode_set_private_data ( sw, NULL ); } }
static int drun_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { DRunModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) ); mode_set_private_data ( sw, (void *) pd ); get_apps ( pd ); } return TRUE; }
static int drun_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { DRunModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) ); pd->disabled_entries = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, NULL ); mode_set_private_data ( sw, (void *) pd ); get_apps ( pd ); } return TRUE; }
static void drun_mode_destroy ( Mode *sw ) { DRunModePrivateData *rmpd = (DRunModePrivateData *) mode_get_private_data ( sw ); if ( rmpd != NULL ) { for ( size_t i = 0; i < rmpd->cmd_list_length; i++ ) { drun_entry_clear ( &( rmpd->entry_list[i] ) ); } g_free ( rmpd->entry_list ); g_free ( rmpd ); mode_set_private_data ( sw, NULL ); } }
static void combi_mode_destroy ( Mode *sw ) { CombiModePrivateData *pd = (CombiModePrivateData *) mode_get_private_data ( sw ); if ( pd != NULL ) { g_free ( pd->starts ); g_free ( pd->lengths ); // Cleanup switchers. for ( unsigned int i = 0; i < pd->num_switchers; i++ ) { mode_destroy ( pd->switchers[i] ); } g_free ( pd->switchers ); g_free ( pd ); mode_set_private_data ( sw, NULL ); } }
static int drun_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { static const gchar * const drun_icon_fallback_themes[] = { "Adwaita", "gnome", NULL }; const gchar *themes[2] = { config.drun_icon_theme, NULL }; DRunModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) ); pd->disabled_entries = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, NULL ); mode_set_private_data ( sw, (void *) pd ); pd->xdg_context = nk_xdg_theme_context_new ( drun_icon_fallback_themes, NULL ); nk_xdg_theme_preload_themes_icon ( pd->xdg_context, themes ); get_apps ( pd ); } return TRUE; }
static void dmenu_mode_free ( Mode *sw ) { if ( mode_get_private_data ( sw ) == NULL ) { return; } DmenuModePrivateData *pd = (DmenuModePrivateData *) mode_get_private_data ( sw ); if ( pd != NULL ) { for ( size_t i = 0; i < pd->cmd_list_length; i++ ) { if ( pd->cmd_list[i] ) { free ( pd->cmd_list[i] ); } } g_free ( pd->cmd_list ); g_free ( pd->urgent_list ); g_free ( pd->active_list ); g_free ( pd->selected_list ); g_free ( pd ); mode_set_private_data ( sw, NULL ); } }
static int dmenu_mode_init ( Mode *sw ) { if ( mode_get_private_data ( sw ) != NULL ) { return TRUE; } mode_set_private_data ( sw, g_malloc0 ( sizeof ( DmenuModePrivateData ) ) ); DmenuModePrivateData *pd = (DmenuModePrivateData *) mode_get_private_data ( sw ); pd->prompt = "dmenu "; pd->separator = '\n'; pd->selected_line = UINT32_MAX; find_arg_str ( "-mesg", &( pd->message ) ); // Input data separator. find_arg_char ( "-sep", &( pd->separator ) ); // Check prompt find_arg_str ( "-p", &( pd->prompt ) ); find_arg_uint ( "-selected-row", &( pd->selected_line ) ); // By default we print the unescaped line back. pd->format = "s"; // Allow user to override the output format. find_arg_str ( "-format", &( pd->format ) ); // Urgent. char *str = NULL; find_arg_str ( "-u", &str ); if ( str != NULL ) { parse_ranges ( str, &( pd->urgent_list ), &( pd->num_urgent_list ) ); } // Active str = NULL; find_arg_str ( "-a", &str ); if ( str != NULL ) { parse_ranges ( str, &( pd->active_list ), &( pd->num_active_list ) ); } // DMENU COMPATIBILITY find_arg_uint ( "-l", &( config.menu_lines ) ); /** * Dmenu compatibility. * `-b` put on bottom. */ if ( find_arg ( "-b" ) >= 0 ) { config.location = 6; } /* -i case insensitive */ config.case_sensitive = TRUE; if ( find_arg ( "-i" ) >= 0 ) { config.case_sensitive = FALSE; } FILE *fd = NULL; str = NULL; if ( find_arg_str ( "-input", &str ) ) { char *estr = rofi_expand_path ( str ); fd = fopen ( str, "r" ); if ( fd == NULL ) { char *msg = g_markup_printf_escaped ( "Failed to open file: <b>%s</b>:\n\t<i>%s</i>", estr, strerror ( errno ) ); rofi_view_error_dialog ( msg, TRUE ); g_free ( msg ); g_free ( estr ); return TRUE; } g_free ( estr ); } pd->cmd_list = get_dmenu ( pd, fd == NULL ? stdin : fd, &( pd->cmd_list_length ) ); if ( fd != NULL ) { fclose ( fd ); } return TRUE; }