#!/bin/bash
# mcui/kdialog - 'kdialog' command backend
set -e
######
# Native dependencies
mcui_kdialog_client_packages=( kde-baseapps-bin )
######
# Config
mcui_kdialog_config_init() {
lib_setting_vars --null kdialog_result
lib_setting_vars --null kdialog_progress_window
lib_setting_vars --null kdialog_progress_label
lib_setting_vars --null kdialog_progress_value
}
######
# Internal functions
kdialog_run() {
# TODO: add support for common options
local -a opts
! $mcui_separate_output || opts+=( --separate-output )
if [ "$mcui_remember" ]; then
local file="${package_name}-${script_name}"
opts+=( --dontagain "$file:$mcui_remember" )
fi
[ -z "$mcui_title" ] || opts+=( --title "$script_name - $mcui_title" )
[ -z "$mcui_default" ] || opts+=( --default "$mcui_default" )
[ -z "$mcui_label_yes" ] || opts+=( --yes-label "$mcui_label_yes" )
[ -z "$mcui_label_no" ] || opts+=( --no-label "$mcui_label_no" )
[ -z "$mcui_label_continue" ] \
|| opts+=( --continue-label "$mcui_label_continue" )
[ -z "$mcui_label_cancel" ] \
|| opts+=( --cancel-label "$mcui_label_cancel" )
! $mcui_multiple || opts+=( --multiple )
kdialog_result=0
run kdialog "${opts[@]}" "$@" || kdialog_result=$?
}
kdialog_run_input() {
min_args 2 "$@"
local -n var=$1
shift
local tmp
tmp=$(cmd_tempfile)
kdialog_run "$@" >"$tmp"
var=$(<"$tmp")
}
kdialog_run_prompt() {
local var=$1
kdialog_run_input "$@"
mcui_prompt_result "$var" "$kdialog_result"
}
######
# Output UI functions
kdialog_error_box() { kdialog_run --error "$@"; }
kdialog_error_details() { kdialog_run --detailederror "$@"; }
kdialog_warn_box() { kdialog_run --sorry "$@"; }
kdialog_warn_details() { kdialog_run --detailedsorry "$@"; }
kdialog_info_box() { kdialog_run --msgbox "$@"; }
kdialog_text_box() { kdialog_run --textbox "$@"; }
kdialog_passive() { kdialog_run --passivepopup "$@"; }
run_qdbus() { run qdbus "$@" >/dev/null; }
kdialog_progress() {
if [ -z "$kdialog_progress_window" ]; then
kdialog_run_input kdialog_progress_window --progressbar "$1" 100
kdialog_progress_label=$1
kdialog_progress_value=0
fi
if [ "$2" = done ]; then
run_qdbus $kdialog_progress_window close
kdialog_progress_window=
kdialog_progress_label=
kdialog_progress_value=
return
fi
if [ "$1" != "$kdialog_progress_label" ]; then
run_qdbus $kdialog_progress_window setLabelText "$1"
kdialog_progress_label=$1
fi
if [ "$2" != "$kdialog_progress_value" ]; then
run_qdbus $kdialog_progress_window Set "" value "$2"
kdialog_progress_value=$2
fi
}
######
# Prompt UI functions
kdialog_yesno() { kdialog_run_prompt $1 --yesno "$2"; }
kdialog_yesno_warn() { kdialog_run_prompt $1 --warningyesno "$2"; }
kdialog_yesnocancel() { kdialog_run_prompt $1 --yesnocancel "$2"; }
kdialog_yesnocancel_warn() { kdialog_run_prompt $1 --warningyesnocancel "$2"; }
kdialog_continue_cancel() {
kdialog_run_prompt $1 --warningcontinuecancel "$2"
}
######
# Input UI functions
kdialog_input() { kdialog_run_input $1 --inputbox "$2" "$3"; }
kdialog_input_text() { kdialog_run_input $1 --textinputbox "$2" "$(<"$3")"; }
kdialog_askpass() { kdialog_run_input $1 --password "$2" "$3"; }
kdialog_menu() { kdialog_run --menu "$@"; }
kdialog_checklist() { kdialog_run --checklist "$@"; }
kdialog_radiolist() { kdialog_run --radiolist "$@"; }
kdialog_combobox() { kdialog_run --combobox "$@"; }
kdialog_dir_choose() { kdialog_run --getexistingdirectory "$@"; }
kdialog_file_open() { kdialog_run --getopenfilename "$@"; }
kdialog_file_save() { kdialog_run --getsavefilename "$@"; }
kdialog_calendar() { kdialog_run --calendar "$@"; }
kdialog_slider() { kdialog_run --slider "$@"; }
kdialog_color() { kdialog_run --getcolor; }
Generated on Sat Jul 8 19:42:57 PDT 2017 by mcsh d14 v0.22.0.