Пример #1
0
Файл: ssh.c Проект: mstg/rofi
/**
 * @param sw Object handle to the SSH Mode object
 * @param mretv The menu return value.
 * @param input Pointer to the user input string.
 * @param selected_line the line selected by the user.
 *
 * Acts on the user interaction.
 *
 * @returns the next #ModeMode.
 */
static ModeMode ssh_mode_result ( Mode *sw, int mretv, char **input, unsigned int selected_line )
{
    ModeMode           retv  = MODE_EXIT;
    SSHModePrivateData *rmpd = (SSHModePrivateData *) mode_get_private_data ( sw );
    if ( mretv & MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv & MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv & MENU_QUICK_SWITCH ) {
        retv = ( mretv & MENU_LOWER_MASK );
    }
    else if ( ( mretv & MENU_OK ) && rmpd->hosts_list[selected_line] != NULL ) {
        exec_ssh ( rmpd->hosts_list[selected_line] );
    }
    else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->hosts_list[selected_line] ) {
        delete_ssh ( rmpd->hosts_list[selected_line] );
        g_strfreev ( rmpd->hosts_list );
        rmpd->hosts_list_length = 0;
        rmpd->hosts_list        = NULL;
        // Stay
        retv = RELOAD_DIALOG;
    }
    return retv;
}
Пример #2
0
static SwitcherMode ssh_mode_result ( int mretv, char **input, unsigned int selected_line, Switcher *sw )
{
    SwitcherMode       retv  = MODE_EXIT;
    SSHModePrivateData *rmpd = (SSHModePrivateData *) sw->private_data;
    if ( mretv & MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv & MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv & MENU_QUICK_SWITCH ) {
        retv = ( mretv & MENU_LOWER_MASK );
    }
    else if ( ( mretv & MENU_OK ) && rmpd->cmd_list[selected_line] != NULL ) {
        exec_ssh ( rmpd->cmd_list[selected_line] );
    }
    else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->cmd_list[selected_line] ) {
        delete_ssh ( rmpd->cmd_list[selected_line] );
        // Stay
        retv = RELOAD_DIALOG;
    }
    return retv;
}
Пример #3
0
SwitcherMode ssh_switcher_dialog ( char **input, G_GNUC_UNUSED void *data )
{
    SwitcherMode retv = MODE_EXIT;
    // act as a launcher
    unsigned int cmd_list_length = 0;
    char         **cmd_list      = get_ssh ( &cmd_list_length );

    if ( cmd_list == NULL ) {
        cmd_list    = g_malloc_n ( 2, sizeof ( char * ) );
        cmd_list[0] = g_strdup ( "No ssh hosts found" );
        cmd_list[1] = NULL;
    }

    int shift         = 0;
    int selected_line = 0;
    int mretv         = menu ( cmd_list, cmd_list_length, input, "ssh:",
                               NULL, &shift, token_match, NULL, &selected_line,
                               config.levenshtein_sort );

    if ( mretv == MENU_NEXT ) {
        retv = NEXT_DIALOG;
    }
    else if ( mretv == MENU_PREVIOUS ) {
        retv = PREVIOUS_DIALOG;
    }
    else if ( mretv == MENU_QUICK_SWITCH ) {
        retv = selected_line;
    }
    else if ( mretv == MENU_OK && cmd_list[selected_line] != NULL ) {
        exec_ssh ( cmd_list[selected_line] );
    }
    else if ( mretv == MENU_CUSTOM_INPUT && *input != NULL && *input[0] != '\0' ) {
        exec_ssh ( *input );
    }
    else if ( mretv == MENU_ENTRY_DELETE && cmd_list[selected_line] ) {
        delete_ssh ( cmd_list[selected_line] );
        // Stay
        retv = RELOAD_DIALOG;
    }

    g_strfreev ( cmd_list );

    return retv;
}
Пример #4
0
SwitcherMode ssh_switcher_dialog ( char **input )
{
    SwitcherMode retv = MODE_EXIT;
    // act as a launcher
    char **cmd_list = get_ssh( );

    if ( cmd_list == NULL ) {
        cmd_list = allocate( 2*sizeof( char * ) );
        cmd_list[0] = strdup( "No ssh hosts found" );
        cmd_list[1] = NULL;
    }

    int shift=0;
    int selected_line = 0;
    int mretv = menu( cmd_list, input, "ssh", NULL, &shift,token_match, NULL , &selected_line );

    if ( mretv == MENU_NEXT ) {
        retv = NEXT_DIALOG;
    } else if ( mretv == MENU_OK && cmd_list[selected_line] != NULL ) {
        exec_ssh( cmd_list[selected_line] );
    } else if ( mretv == MENU_CUSTOM_INPUT && *input != NULL && *input[0] != '\0' ) {
        exec_ssh( *input );
    } else if ( mretv == MENU_ENTRY_DELETE && cmd_list[selected_line] ) {
        delete_ssh ( cmd_list[selected_line] );
        // Stay
        retv = SSH_DIALOG;
    }

    for ( int i=0; cmd_list[i] != NULL; i++ ) {
        free( cmd_list[i] );
    }

    if ( cmd_list != NULL ) free( cmd_list );

    return retv;
}