This commit is contained in:
2025-07-08 17:35:14 +07:00
parent 7037bb4ebb
commit 21ddbab08b
17 changed files with 0 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
#!/bin/bash
#==============================================================================
# Модуль интерфейса (TUI) на основе 'dialog'
# ИСПРАВЛЕНА ВЫСОТА ДИНАМИЧЕСКОГО МЕНЮ
#==============================================================================
# Используем МАССИВ для опций, чтобы избежать проблем с кавычками и пробелами.
DIALOG_OPTS=(--colors --backtitle "Универсальный обработчик медиа")
# Функция-обертка для вызова dialog и корректного возврата результата.
# ... (эта функция остается без изменений)
_call_dialog() {
local original_value="$1"
shift
local result
result=$("$@" 2>&1 1>/dev/tty)
local exit_status=$?
if [ $exit_status -eq 0 ]; then
echo "$result"
else
echo "$original_value"
fi
}
# Показать начальное меню выбора действия
# ... (эта функция остается без изменений)
ui_select_initial_action() {
_call_dialog "" \
dialog "${DIALOG_OPTS[@]}" --title "Выбор действия" \
--cancel-label "Выход" \
--menu "Выберите, что вы хотите сделать:" 15 70 2 \
"MERGE" "Склеить видео и аудио (mkvmerge)" \
"SYMLINK" "Создать симлинки с новыми именами"
}
# Показать главное меню
ui_main_menu() {
# --- КЛЮЧЕВОЕ ИЗМЕНЕНИЕ ЗДЕСЬ ---
# Заменяем фиксированную высоту меню "15" на "0".
# "0" говорит dialog автоматически рассчитать высоту на основе количества пунктов.
_call_dialog "" \
dialog "${DIALOG_OPTS[@]}" --title "Главное меню" \
--cancel-label "Назад" \
--menu "Выберите опцию для редактирования или действия:" 20 85 0 "${@}"
}
# Получить путь к каталогу
# ... (эта функция остается без изменений)
ui_get_directory() {
local title="$1"
local current_path="$2"
local default_path="$3"
local start_path="${current_path:-$default_path}"
[[ "$start_path" != */ ]] && start_path="$start_path/"
_call_dialog "$current_path" \
dialog "${DIALOG_OPTS[@]}" --title "$title" --dselect "$start_path" 10 70
}
# Получить текстовый ввод от пользователя
# ... (остальные функции остаются без изменений)
ui_get_input() {
local title="$1"
local current_value="$2"
_call_dialog "$current_value" \
dialog "${DIALOG_OPTS[@]}" --title "$title" --inputbox "Введите новое значение:" 10 70 "$current_value"
}
ui_show_message() {
local title="$1"
local text="$2"
dialog "${DIALOG_OPTS[@]}" --title "$title" --msgbox "$text" 20 70
}
ui_confirm() {
local title="$1"
local text="$2"
dialog "${DIALOG_OPTS[@]}" --title "$title" --yesno "$text" 10 70
return $?
}