App-DBBrowser

 view release on metacpan or  search on metacpan

lib/App/DBBrowser/Options/Menus.pm  view on Meta::CPAN

        push @{$groups->{group_output}}, { name => '_db2_encoding', text => "- DB2 encoding", section => 'G' };
    }
    return $groups->{$group};
}


my ( $no, $yes ) = ( 'NO', 'YES' );


sub group_connect {
    my ( $sf, $info, $lo, $section, $sub_group, $driver ) = @_;
    my $sub_menu_required_fields = [
        [ 'host_required', "- Host required",     [ $no, $yes ] ],
        [ 'port_required', "- Port required",     [ $no, $yes ] ],
        [ 'user_required', "- User required",     [ $no, $yes ] ],
        [ 'pass_required', "- Password required", [ $no, $yes ] ],
    ];
    my $items_login_data = [
        { name => 'host', prompt => "- Host" },
        { name => 'port', prompt => "- Port" },
        { name => 'user', prompt => "- User" },
    ];
    my $sub_menu_env_variables = [
        [ 'use_dbi_host', "- Use DBI_HOST", [ $no, $yes ] ],
        [ 'use_dbi_port', "- Use DBI_PORT", [ $no, $yes ] ],
        [ 'use_dbi_user', "- Use DBI_USER", [ $no, $yes ] ],
        [ 'use_dbi_pass', "- Use DBI_PASS", [ $no, $yes ] ],
    ];
    my $items_read_attributes = [
        { name => 'LongReadLen', text => "- LongReadLen" },
    ];
    my $sub_menu_set_attributes = [
        [ 'ChopBlanks',  "- ChopBlanks",  [ $no, $yes ] ],
        [ 'LongTruncOk', "- LongTruncOk", [ $no, $yes ] ],
    ];

    if ( $driver eq 'SQLite' ) {
        $sub_menu_required_fields = [];
        $items_login_data = [];
        $sub_menu_env_variables = [];
        push @$items_read_attributes,
            { name => 'sqlite_busy_timeout', text => "- sqlite_busy_timeout" };
        #my $sqlite_string_mode_values = [
        #    '0 DBD_SQLITE_STRING_MODE_PV',               # 0
        #    '1 DBD_SQLITE_STRING_MODE_BYTES',            # 1
        #    undef,
        #    undef,
        #    '4 DBD_SQLITE_STRING_MODE_UNICODE_NAIVE',    # 4
        #    '5 DBD_SQLITE_STRING_MODE_UNICODE_FALLBACK', # 5
        #    '6 DBD_SQLITE_STRING_MODE_UNICODE_STRICT',   # 6
        #];
        push @$sub_menu_set_attributes,
            #[ 'sqlite_string_mode',         "- sqlite_string_mode",    $sqlite_string_mode_values ],
            [ 'sqlite_string_mode',         "- sqlite_string_mode",         [ 0, 1, undef, undef, 4, 5, 6 ] ], # undef not seen by the user
            [ 'sqlite_see_if_its_a_number', "- sqlite_see_if_its_a_number", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'mysql' ) {
        push @$sub_menu_set_attributes,
            [ 'mysql_enable_utf8',        "- mysql_enable_utf8",        [ $no, $yes ] ],
            [ 'mysql_enable_utf8mb4',     "- mysql_enable_utf8mb4",     [ $no, $yes ] ],
            [ 'mysql_bind_type_guessing', "- mysql_bind_type_guessing", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'MariaDB' ) {
        push @$sub_menu_set_attributes,
            [ 'mariadb_bind_type_guessing', "- mariadb_bind_type_guessing", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'Pg' ) {
        push @$sub_menu_set_attributes,
            [ 'pg_enable_utf8', "- pg_enable_utf8", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'Firebird' ) {
        push @$items_read_attributes,
            { name => 'ib_dialect', text => "- ib_dialect" },
            { name => 'ib_role',    text => "- ib_role" },
            { name => 'ib_charset', text => "- ib_charset" };
        push @$sub_menu_set_attributes,
            [ 'ib_enable_utf8', "- ib_enable_utf8", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'DB2' ) {
        splice( @$sub_menu_required_fields, 0, 2 );
        splice( @$items_login_data, 0, 2 );
        splice( @$sub_menu_env_variables, 0, 2 );
    }
    elsif ( $driver eq 'Informix' ) {
        splice( @$sub_menu_required_fields, 0, 2 );
        splice( @$items_login_data, 0, 2 );
        splice( @$sub_menu_env_variables, 0, 2 );
        push @$sub_menu_set_attributes,
            [ 'ix_EnableUTF8', "- ix_EnableUTF8", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'Oracle' ) {
        push @$items_read_attributes,
            { name => 'ora_charset', text => "- ora_charset" };
        push @$sub_menu_set_attributes,
            [ 'AskIfSID', "- AskIfSID", [ $no, $yes ] ];
    }
    elsif ( $driver eq 'ODBC' ) {
        splice( @$sub_menu_required_fields, 0, 2 );
        splice( @$items_login_data, 0, 2 );
        splice( @$sub_menu_env_variables, 0, 2 );
        push @$items_read_attributes,
            { name => 'odbc_batch_size', text => "- odbc_batch_size" };
        push @$sub_menu_set_attributes,
            [ 'odbc_utf8_on',                   "- odbc_utf8_on",                   [ $no, $yes ] ],
            [ 'odbc_ignore_named_placeholders', "- odbc_ignore_named_placeholders", [ $no, $yes ] ],
            #[ 'odbc_array_operations',          "- odbc_array_operations",          [ $no, $yes ] ];
    }
    elsif ( $driver eq 'DuckDB' ) {
        $sub_menu_required_fields = [];
        $items_login_data = [];
        $sub_menu_env_variables = [];
    }
    if ( $sub_group eq '_required_fields' ) {
        my $prompt = 'Required Fields:';
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu_required_fields, $prompt );
    }
    elsif ( $sub_group eq '_login_data' ) {
        my $prompt = 'Login Data:';
        $sf->__group_readline( $info, $lo, $section, $items_login_data, $prompt );
    }
    elsif ( $sub_group eq '_env_variables' ) {
        my $prompt = 'Environment Variables:';
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu_env_variables, $prompt );
    }
    elsif ( $sub_group eq '_read_attributes' ) {

lib/App/DBBrowser/Options/Menus.pm  view on Meta::CPAN

    }
    elsif ( $sub_group eq '_add_aliases' ) {
        my $prompt = 'Add alias:';
        my $sub_menu = [
            [ 'complex_cols_select', "- Functions/Subqueries in select",  [ 'NO',   undef, 'ASK',   undef     ] ],
            [ 'tables_in_join',      "- Tables in join",                  [ undef, 'AUTO',  undef, 'ASK/AUTO' ] ],
            [ 'join_columns',        "- Non-unique columns in join",      [ 'NO',  'AUTO', 'ASK',  'ASK/AUTO' ] ],
            [ 'derived_table',       "- Derived table",                   [ 'NO',  'AUTO', 'ASK',  'ASK/AUTO' ] ],
            [ 'ordinary_table',      "- Ordinary table",                  [ 'NO',  'AUTO', 'ASK',  'ASK/AUTO' ] ],
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_aliases_in_clauses' ) {
        my $prompt = 'Use aliases in: ';
        my $sub_menu = [
            [ 'use_in_group_by', "- Group by", [ $no, $yes ] ],
            [ 'use_in_having',   "- Having",   [ $no, $yes ] ],
            [ 'use_in_order_by', "- Order by", [ $no, $yes ] ],
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_sql_identifiers' ) {
        my $prompt = 'Your choice: ';
        my $sub_menu = [
            [ 'qualified_table_name', "- Qualified table names", [ $no, $yes ] ],
            [ 'quote_tables',         "- Quote table names",     [ $no, $yes ] ],
            [ 'quote_columns',        "- Quote column names",    [ $no, $yes ] ],
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_view_name_prefix' ) {
        my $items = [
            { name => 'view_name_prefix', prompt => "View name prefix" },
        ];
        my $prompt = 'Set a view name prefix';
        $sf->__group_readline( $info, $lo, $section, $items, $prompt );
    }
    elsif ( $sub_group eq '_other_sql_settings' ) {
        my $prompt = 'Your choice: ';
        my $sub_menu = [
            [ 'edit_sql_menu_sq', "- Subqueries created with 'SQL Menu': Allow editing.", [ $no, $yes ] ],
        ];
        if ( $driver eq 'Pg' ) {
            push @$sub_menu, [ 'pg_autocast', "- Pg: Convert to 'text' automatically when required.", [ $no, $yes ] ];
        }
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    else {
        die "sql_settings: unknown sub_group $sub_group";
    }
    return;
}


sub group_create_table {
    my ( $sf, $info, $lo, $section, $sub_group ) = @_;
    if ( $sub_group eq '_enable_ct_opt' ) {
        my $prompt = 'Activate options';
        my $sub_menu = [
            [ 'option_ai_column_enabled',       "- Offer auto increment column",   [ $no, $yes ] ],
            [ 'data_type_guessing',             "- Data type guessing",            [ $no, $yes ] ],
            [ 'encode_for_data_type_guessing',  "- Encode for data type guessing", [ $no, $yes ] ],
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_add_ct_fields' ) {
        my $prompt = 'Add fields';
        my $sub_menu = [
            [ 'table_constraint_rows', "- Table constraint fields", [ 0 .. 9    ] ],
            [ 'table_option_rows',     "- Table option fields",     [ 0 .. 9    ] ],
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_default_ai_column_name' ) {
        my $items = [
            { name => 'default_ai_column_name', prompt => "Default primary key auto increment column name" },
        ];
        my $prompt = 'Set a default auto increment column name';
        $sf->__group_readline( $info, $lo, $section, $items, $prompt );
    }
    else {
        die "create_table: unknown sub_group $sub_group";
    }
    return;
}


sub group_output {
    my ( $sf, $info, $lo, $section, $sub_group ) = @_;
    if ( $sub_group eq '_binary_filter' ) {
        my $prompt = 'How to print arbitrary binray data';
        my $sub_menu = [
            [ 'binary_filter', "- Binary filter", [ $no, 'BNRY', 'Hexadecimal' ] ]
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_squash_spaces' ) {
        my $prompt = 'Remove leading and trailing spaces and squash consecutive spaces';
        my $sub_menu = [
            [ 'squash_spaces', "- Squash spaces", [ $no, $yes ] ]
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq '_set_string' ) {
        my $items = [
            { name => 'undef', prompt => "Show undefined fields as" },
        ];
        my $prompt = 'Undef string';
        $sf->__group_readline( $info, $lo, $section, $items, $prompt );
    }
    elsif ( $sub_group eq '_color' ) {
        my $prompt = '"ANSI color escapes"';
        my $sub_menu = [
            [ 'color', "- ANSI color escapes", [ $no, $yes ] ]
        ];
        $sf->__settings_menu_wrap( $info, $lo, $section, $sub_menu, $prompt );
    }
    elsif ( $sub_group eq 'trunc_fract_first' ) {
        my $prompt = 'If the terminal is not wide enough:';
        my $sub_menu = [
            [ 'trunc_fract_first', "- First step: truncate fraction of numbers", [ $no, $yes ] ]
        ];



( run in 2.435 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )