1252995Sdteske#!/bin/sh 2252995Sdteske#- 3252995Sdteske# Copyright (c) 2012-2013 Devin Teske 4252995Sdteske# All rights reserved. 5252995Sdteske# 6252995Sdteske# Redistribution and use in source and binary forms, with or without 7252995Sdteske# modification, are permitted provided that the following conditions 8252995Sdteske# are met: 9252995Sdteske# 1. Redistributions of source code must retain the above copyright 10252995Sdteske# notice, this list of conditions and the following disclaimer. 11252995Sdteske# 2. Redistributions in binary form must reproduce the above copyright 12252995Sdteske# notice, this list of conditions and the following disclaimer in the 13252995Sdteske# documentation and/or other materials provided with the distribution. 14252995Sdteske# 15252995Sdteske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16252995Sdteske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17252995Sdteske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18252995Sdteske# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19252995Sdteske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20252995Sdteske# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21252995Sdteske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22252995Sdteske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23252995Sdteske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24252995Sdteske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25252995Sdteske# SUCH DAMAGE. 26252995Sdteske# 27252995Sdteske# $FreeBSD$ 28252995Sdteske# 29252995Sdteske############################################################ INCLUDES 30252995Sdteske 31252995SdteskeBSDCFG_SHARE="/usr/share/bsdconfig" 32252995Sdteske. $BSDCFG_SHARE/common.subr || exit 1 33252995Sdteskef_dprintf "%s: loading includes..." "$0" 34252995Sdteskef_include $BSDCFG_SHARE/dialog.subr 35252995Sdteskef_include $BSDCFG_SHARE/mustberoot.subr 36252995Sdteskef_include $BSDCFG_SHARE/sysrc.subr 37252995Sdteske 38252995SdteskeBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" 39252995Sdteskef_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr 40252995Sdteske 41263791Sdteskef_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && 42263791Sdteske pgm="${ipgm:-$pgm}" 43252995Sdteske 44252995Sdteske############################################################ FUNCTIONS 45252995Sdteske 46252995Sdteske# dialog_menu_main 47252995Sdteske# 48252995Sdteske# Display the dialog(1)-based application main menu. 49252995Sdteske# 50252995Sdteskedialog_menu_main() 51252995Sdteske{ 52252995Sdteske local prompt="$msg_font_menu_text" 53252995Sdteske local menu_list=" 54252995Sdteske '1 $msg_none' '$msg_use_hardware_default_font' 55252995Sdteske '2 $msg_ibm_437' '$msg_ibm_437_desc' 56252995Sdteske '3 $msg_ibm_850' '$msg_ibm_850_desc' 57252995Sdteske '4 $msg_ibm_865' '$msg_ibm_865_desc' 58252995Sdteske '5 $msg_ibm_866' '$msg_ibm_866_desc' 59252995Sdteske '6 $msg_ibm_866u' '$msg_ibm_866u_desc' 60252995Sdteske '7 $msg_ibm_1251' '$msg_ibm_1251_desc' 61252995Sdteske '8 $msg_iso_8859_1' '$msg_iso_8859_1_desc' 62252995Sdteske '9 $msg_iso_8859_2' '$msg_iso_8859_2_desc' 63252995Sdteske 'a $msg_iso_8859_4' '$msg_iso_8859_4_desc' 64252995Sdteske 'b $msg_iso_8859_7' '$msg_iso_8859_7_desc' 65252995Sdteske 'c $msg_iso_8859_8' '$msg_iso_8859_8_desc' 66252995Sdteske 'd $msg_iso_8859_15' '$msg_iso_8859_15_desc' 67252995Sdteske 'e $msg_swiss' '$msg_swiss_desc' 68252995Sdteske " # END-QUOTE 69252995Sdteske local defaultitem= # Calculated below 70252995Sdteske local hline="$hline_choose_a_font" 71252995Sdteske 72252995Sdteske local height width rows 73252995Sdteske eval f_dialog_menu_size height width rows \ 74252995Sdteske \"\$DIALOG_TITLE\" \ 75252995Sdteske \"\$DIALOG_BACKTITLE\" \ 76252995Sdteske \"\$prompt\" \ 77252995Sdteske \"\$hline\" \ 78252995Sdteske $menu_list 79252995Sdteske 80252995Sdteske case "$( f_sysrc_get font8x8 )" in 81252995Sdteske [Nn][Oo]|'') defaultitem="1 $msg_none" ;; 82252995Sdteske cp437-8x8) defaultitem="2 $msg_ibm_437" ;; 83252995Sdteske cp850-8x8) defaultitem="3 $msg_ibm_850" ;; 84252995Sdteske cp865-8x8) defaultitem="4 $msg_ibm_865" ;; 85252995Sdteske cp866-8x8) defaultitem="5 $msg_ibm_866" ;; 86252995Sdteske cp866u-8x8) defaultitem="6 $msg_ibm_866u" ;; 87252995Sdteske cp1251-8x8) defaultitem="7 $msg_ibm_1251" ;; 88252995Sdteske iso-8x8) defaultitem="8 $msg_iso_8859_1" ;; 89252995Sdteske iso02-8x8) defaultitem="9 $msg_iso_8859_2" ;; 90252995Sdteske iso04-8x8) defaultitem="a $msg_iso_8859_4" ;; 91252995Sdteske iso07-8x8) defaultitem="b $msg_iso_8859_7" ;; 92252995Sdteske iso08-8x8) defaultitem="c $msg_iso_8859_8" ;; 93252995Sdteske iso15-8x8) defaultitem="d $msg_iso_8859_15" ;; 94252995Sdteske swiss-8x8) defaultitem="e $msg_swiss" ;; 95252995Sdteske esac 96252995Sdteske 97252995Sdteske local menu_choice 98252995Sdteske menu_choice=$( eval $DIALOG \ 99252995Sdteske --title \"\$DIALOG_TITLE\" \ 100252995Sdteske --backtitle \"\$DIALOG_BACKTITLE\" \ 101252995Sdteske --hline \"\$hline\" \ 102252995Sdteske --ok-label \"\$msg_ok\" \ 103252995Sdteske --cancel-label \"\$msg_cancel\" \ 104252995Sdteske --default-item \"\$defaultitem\" \ 105252995Sdteske --menu \"\$prompt\" \ 106252995Sdteske $height $width $rows \ 107252995Sdteske $menu_list \ 108252995Sdteske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 109252995Sdteske ) 110252995Sdteske local retval=$? 111252995Sdteske f_dialog_menutag_store -s "$menu_choice" 112252995Sdteske return $retval 113252995Sdteske} 114252995Sdteske 115252995Sdteske############################################################ MAIN 116252995Sdteske 117252995Sdteske# Incorporate rc-file if it exists 118252995Sdteske[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc" 119252995Sdteske 120252995Sdteske# 121252995Sdteske# Process command-line arguments 122252995Sdteske# 123252995Sdteskewhile getopts h$GETOPTS_STDARGS flag; do 124252995Sdteske case "$flag" in 125252995Sdteske h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm" ;; 126252995Sdteske esac 127252995Sdteskedone 128252995Sdteskeshift $(( $OPTIND - 1 )) 129252995Sdteske 130252995Sdteske# 131252995Sdteske# Initialize 132252995Sdteske# 133252995Sdteskef_dialog_title "$msg_system_console_font" 134252995Sdteskef_dialog_backtitle "${ipgm:+bsdconfig }$pgm" 135252995Sdteskef_mustberoot_init 136252995Sdteske 137252995Sdteske# 138252995Sdteske# Launch application main menu 139252995Sdteske# 140252995Sdteskedialog_menu_main || f_die 141252995Sdteskef_dialog_menutag_fetch mtag 142252995Sdteske 143252995Sdteskef8= f14= f16= mc_start= 144252995Sdteskecase "$mtag" in 145252995Sdteske"1 $msg_none") # Use hardware default font 146252995Sdteske f8="NO" f14="NO" f16="NO" ;; 147252995Sdteske"2 $msg_ibm_437") # English and others, VGA default 148252995Sdteske f8="cp437-8x8" f14="cp437-8x14" f16="cp437-8x16" ;; 149252995Sdteske"3 $msg_ibm_850") # Western Europe, IBM encoding 150252995Sdteske f8="cp850-8x8" f14="cp850-8x14" f16="cp850-8x16" ;; 151252995Sdteske"4 $msg_ibm_865") # Norwegian, IBM encoding 152252995Sdteske f8="cp865-8x8" f14="cp865-8x14" f16="cp865-8x16" ;; 153252995Sdteske"5 $msg_ibm_866") # Russian, IBM encoding (use with KOI8-R screenmap) 154252995Sdteske f8="cp866-8x8" f14="cp866-8x14" f16="cp866b-8x16" mc_start="3" ;; 155252995Sdteske"6 $msg_ibm_866u") # Ukrainian, IBM encoding (use w/ KOI8-U screenmap) 156252995Sdteske f8="cp866u-8x8" f14="cp866u-8x14" f16="cp866u-8x16" mc_start="3" ;; 157252995Sdteske"7 $msg_ibm_1251") # Cyrillic, MS Windows encoding 158252995Sdteske f8="cp1251-8x8" f14="cp1251-8x14" f16="cp1251-8x16" mc_start="3" ;; 159252995Sdteske"8 $msg_iso_8859_1") # Western Europe, ISO encoding 160252995Sdteske f8="iso-8x8" f14="iso-8x14" f16="iso-8x16" ;; 161252995Sdteske"9 $msg_iso_8859_2") # Eastern Europe, ISO encoding 162252995Sdteske f8="iso02-8x8" f14="iso02-8x14" f16="iso02-8x16" ;; 163252995Sdteske"a $msg_iso_8859_4") # Baltic, ISO encoding 164252995Sdteske f8="iso04-8x8" f14="iso04-8x14" f16="iso04-8x16" ;; 165252995Sdteske"b $msg_iso_8859_7") # Greek, ISO encoding 166252995Sdteske f8="iso07-8x8" f14="iso07-8x14" f16="iso07-8x16" ;; 167252995Sdteske"c $msg_iso_8859_8") # Hebrew, ISO encoding 168252995Sdteske f8="iso08-8x8" f14="iso08-8x14" f16="iso08-8x16" ;; 169252995Sdteske"d $msg_iso_8859_15") # Europe, ISO encoding 170252995Sdteske f8="iso15-8x8" f14="iso15-8x14" f16="iso15-8x16" ;; 171252995Sdteske"e $msg_swiss") # English, better resolution 172252995Sdteske f8="swiss-8x8" f14="NO" f16="swiss-8x16" ;; 173252995Sdteskeesac 174252995Sdteske 175252995Sdteske[ "$f8" -a "$f14" -a "$f16" ] || f_die 1 "$msg_unknown_font_selection" 176252995Sdteske 177263791Sdteskef_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x8 "%s"' "$f8" || f_die 178263791Sdteskef_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x14 "%s"' "$f14" || f_die 179263791Sdteskef_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x16 "%s"' "$f16" || f_die 180252995Sdteske 181252995Sdteskeif [ "$mc_start" ]; then 182263791Sdteske f_eval_catch "$0" f_sysrc_set \ 183263791Sdteske 'f_sysrc_set mousechar_start "%s"' "$mc_start" || f_die 184252995Sdteskeelse 185263791Sdteske f_eval_catch "$0" f_sysrc_delete \ 186263791Sdteske 'f_sysrc_delete mousechar_start' || f_die 187252995Sdteskefi 188252995Sdteske 189252995Sdteskeexit $SUCCESS 190252995Sdteske 191252995Sdteske################################################################################ 192252995Sdteske# END 193252995Sdteske################################################################################ 194