From bd43ad7a7e30e5f2d27f5099d8c01c22fb1f59dd Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Fri, 24 Jan 2025 14:06:08 -0500 Subject: [PATCH 01/12] start process to select and update profiles --- Resources/vrecord_functions | 4 ++++ vrecord | 39 ++++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Resources/vrecord_functions b/Resources/vrecord_functions index 5eed321e..61c31dfb 100644 --- a/Resources/vrecord_functions +++ b/Resources/vrecord_functions @@ -206,6 +206,10 @@ _get_audio_device_list(){ fi } +_get_profile_list(){ + "$(ls -1 "${PROFILE_DIR}/*.conf" | sed 's|.conf$||g')" +} + _get_summary(){ if [[ ! -f "${CONFIG_FILE}" ]] ; then echo "VRecord configuration file is missing, please visit the Settings panel." diff --git a/vrecord b/vrecord index bbf0ad92..075248d1 100755 --- a/vrecord +++ b/vrecord @@ -6,11 +6,35 @@ VERSION="2024-10-18" SCRIPTNAME="$(basename "${0}")" SCRIPTDIR="$(dirname "${0}")" -CONFIG_FILE="${HOME}/.${SCRIPTNAME}.conf" +PROFILE_DIR="${HOME}/.vrecord_profiles" +PROFILE_SELECTED_FILE="${PROFILE_DIR}/selected_profile.txt" SAT_OUTLIER_THRSHLD=14 AUD_OUTLIER_THRSHLD=10 BRNG_OUTLIER_THRSHLD=14 +_update_profile(){ + # steps to upgrade profile management + OLD_CONFIG_FILE="${HOME}/.${SCRIPTNAME}.conf" + NEW_CONFIG_NAME="Primary Profile" + NEW_CONFIG_FILE="${PROFILE_DIR}/${NEW_CONFIG_NAME}.conf" + if [[ ! -d "${PROFILE_DIR}" ]] ; then + mkdir "${PROFILE_DIR}" + if [[ -f "${OLD_CONFIG_FILE}" ]] ; then + mv -n "${OLD_CONFIG_FILE}" "${NEW_CONFIG_FILE}" + echo "${NEW_CONFIG_NAME}" > "${PROFILE_SELECTED_FILE}" + fi + fi + if [[ -f "${PROFILE_SELECTED_FILE}" ]] ; then + CONFIG_FILE="$(cat "${PROFILE_SELECTED_FILE}").conf" + else + if [[ -d "${PROFILE_DIR}" ]] ; then + CONFIG_FILE="$(ls -1 "${PROFILE_DIR}/*.conf" | head -n 1)" + else + CONFIG_FILE="${NEW_CONFIG_FILE}" + fi + fi +} + _usage(){ cat < Date: Sat, 25 Jan 2025 14:30:10 -0500 Subject: [PATCH 03/12] only run tests on recording directory if it can be found avoids some of this `/tmp/vrecord.JLM6Uz.vrecord.gtkdialog.inc: line 159: [: : integer expression expected` --- Resources/vrecord_functions | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Resources/vrecord_functions b/Resources/vrecord_functions index 0150054e..6ec2e427 100644 --- a/Resources/vrecord_functions +++ b/Resources/vrecord_functions @@ -95,7 +95,6 @@ _update_config_file(){ } _validate_form(){ - if [ "${VIDEO_CODEC_CHOICE}" = "FFV1 version 3" ] && [ "${CONTAINER_CHOICE}" = "MXF" ] ; then echo "ERROR: Incompatible video codecs and containers have been selected." elif [ "${AUDIO_CODEC_CHOICE}" = "24-bit FLAC" ] && [ "${CONTAINER_CHOICE}" = "QuickTime" ] ; then @@ -139,18 +138,6 @@ _validate_form(){ if [ "${INVERT_PHASE_4}" = "true" ] ; then echo "WARNING: Option to invert phase of fourth audio channel has been selected." fi - - if [ $(mount | grep $(df -P "${DIR}" | tail +2 | awk '{print $1}') | grep -c "(.*local,") = "0" ] && [ "${OS_TYPE}" != "linux" ] ; then - echo "WARNING: The recording directory at ${DIR} is not a local directory. Please verify that you can write to the disk fast enough." - fi - if [ "${OS_TYPE}" = "linux" ] ; then - FREE_SPACE="$(df -BG "${DIR}" | tail +2 | awk '{print $4}' | tr 'G' ' ')" - else - FREE_SPACE="$(df -g "${DIR}" | tail +2 | awk '{print $4}')" - fi - if [ "${FREE_SPACE}" -le 40 ] ; then - echo "WARNING: The recording directory at ${DIR} only has ${FREE_SPACE} gigabytes available." - fi if [ "${SIGNAL_INT_CHOICE}" != "auto" ] && [ -n "${SIGNAL_INT_CHOICE}" ] ; then echo "WARNING: The configuration ignores the interlacement of the input and forces it to ${SIGNAL_INT_CHOICE}. Set to 'auto' if you prefer to keep the interlacement as the device describes it." fi From 53fd4ea1c0af49d28390d6759450371f0ff51529 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:09:47 -0500 Subject: [PATCH 04/12] add and use option for comboboxtext in option presentation --- vrecord | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/vrecord b/vrecord index 075248d1..a55b00a9 100755 --- a/vrecord +++ b/vrecord @@ -398,6 +398,14 @@ _check_mpv(){ } _gtk_vbox_list() { + OPTION_STYLE="list" #default + OPTIND=1 + while getopts "s:" opt ; do + case "${opt}" in + s) OPTION_STYLE="${OPTARG}" ;; + esac + done + shift "$((OPTIND-1))" VARIABLE_NAME="${1}" WIDTH="${2}" LABEL="${3}" @@ -475,16 +483,26 @@ _gtk_vbox_list() { fi } + if [[ "${OPTION_STYLE}" == "list" ]] ; then + OPTION_ATTRIBUTES=" selection-mode=\"1\" selected-row=\"${SELECTION}\"" + OPTION_ELEMENTS="${WIDTH}" + elif [[ "${OPTION_STYLE}" == "comboboxtext" ]] ; then + unset OPTION_ATTRIBUTES + if [[ -n "${!VARIABLE_NAME}" ]] ; then + OPTION_ELEMENTS="${!VARIABLE_NAME}" + fi + fi + echo " - - ${WIDTH} + <${OPTION_STYLE}${OPTION_ATTRIBUTES}> ${VARIABLE_NAME} + ${OPTION_ELEMENTS} ${LIST} $(_get_list_extras) - + $(_get_vbox_extras) " } @@ -1287,15 +1305,7 @@ export MAIN_DIALOG=' - - - - - SELECTED_PROFILE - enabled - 1 - 2 - + '$(_gtk_vbox_list -s comboboxtext "SELECTED_PROFILE" "120" "Selected Profile" "${DECKLINK_DEVICES[@]}")' From bf5eaccd721c49f3021d65b4b3c1aaf8b6a49c78 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:11:40 -0500 Subject: [PATCH 05/12] fix saving config file option to support spaces in profile names --- vrecord | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vrecord b/vrecord index a55b00a9..0846b6d8 100755 --- a/vrecord +++ b/vrecord @@ -1551,7 +1551,7 @@ _edit_mode(){ GTK_INC="$(_maketemp .vrecord.gtkdialog.inc)" cat "${VRECORD_VARS_FILE}" > "${GTK_INC}" - echo "CONFIG_FILE=${CONFIG_FILE}" >> "${GTK_INC}" + echo "CONFIG_FILE=\"${CONFIG_FILE}\"" >> "${GTK_INC}" cat "${SHARED_FUNCTIONS_FILE}" >> "${GTK_INC}" if [[ "${VERBOSE_GTKDIALOG}" = "Y" ]] ; then From cf8b4b5256e98031cb76b6599d1b4b7577840fb3 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:14:34 -0500 Subject: [PATCH 06/12] move some config file processes to happen earlier this is so the -h can reference the selected profile --- vrecord | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/vrecord b/vrecord index 0846b6d8..311c6d13 100755 --- a/vrecord +++ b/vrecord @@ -2347,6 +2347,24 @@ _review_all_options(){ fi } +_upgrade_config_file(){ + # update value because the framemd5 choice changed from a yes/no picklist to a boolean as was the case in version 2023-08-07 and earlier + if [[ -n "$(grep "FRAMEMD5_CHOICE=\"[YN]" "${CONFIG_FILE}")" ]] ; then + sed 's|FRAMEMD5_CHOICE="No"|FRAMEMD5_CHOICE="false"|g;s|FRAMEMD5_CHOICE="Yes"|FRAMEMD5_CHOICE="true"|g' > "${CONFIG_FILE}tmp" < "${CONFIG_FILE}" + mv "${CONFIG_FILE}tmp" "${CONFIG_FILE}" + fi +} + +_update_profile +if [[ -f "${CONFIG_FILE}" ]] ; then + _upgrade_config_file + . "${CONFIG_FILE}" +else + _report -d "Initializing the configuration file at ${CONFIG_FILE}." + RUNTYPE="edit" + STARTUP_VIEW="INPUTSETTINGS" +fi + # command-line options to set media id and original variables OPTIND=1 while getopts ":hc:erpaxnvI:O:D:i:G" opt ; do @@ -2398,23 +2416,6 @@ MPV_INSTALLED="$(if command -v mpv >/dev/null ; then echo true ; else echo false QCLI_INSTALLED="$(if command -v qcli >/dev/null ; then echo true ; else echo false ; fi)" DVPACKAGER_INSTALLED="$(if command -v dvpackager >/dev/null ; then echo true ; else echo false ; fi)" -_upgrade_config_file(){ - # update value because the framemd5 choice changed from a yes/no picklist to a boolean as was the case in version 2023-08-07 and earlier - if [[ -n "$(grep "FRAMEMD5_CHOICE=\"[YN]" "${CONFIG_FILE}")" ]] ; then - sed 's|FRAMEMD5_CHOICE="No"|FRAMEMD5_CHOICE="false"|g;s|FRAMEMD5_CHOICE="Yes"|FRAMEMD5_CHOICE="true"|g' > "${CONFIG_FILE}tmp" < "${CONFIG_FILE}" - mv "${CONFIG_FILE}tmp" "${CONFIG_FILE}" - fi -} - -if [[ -f "${CONFIG_FILE}" ]] ; then - _upgrade_config_file - . "${CONFIG_FILE}" -else - _report -d "Initializing the configuration file at ${CONFIG_FILE}." - RUNTYPE="edit" - STARTUP_VIEW="INPUTSETTINGS" -fi - _get_inputs if [[ "${OS_TYPE}" = "linux" ]] ; then From badfa491dbbf665adc308b8a9176d769807ea75b Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:15:00 -0500 Subject: [PATCH 07/12] pass PROFILE_DIR to include doc for gtk --- vrecord | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vrecord b/vrecord index 311c6d13..1eb6134d 100755 --- a/vrecord +++ b/vrecord @@ -162,7 +162,7 @@ _process_vars_for_gtk(){ if [[ -f "${VRECORD_VARS_FILE}" ]] ; then . "${VRECORD_VARS_FILE}" else - _include_var VRECORD_VARS_FILE + _include_var VRECORD_VARS_FILE PROFILE_DIR fi if [[ -z "${OS_TYPE}" ]] ; then From 890bdfd69a7b49c680713b1833b4fd506a70b86c Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:15:14 -0500 Subject: [PATCH 08/12] switch references from default profile to selected profile --- vrecord | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vrecord b/vrecord index 1eb6134d..5f0b65c9 100755 --- a/vrecord +++ b/vrecord @@ -61,7 +61,7 @@ Usage: ${SCRIPTNAME} [ -e | -r | -p | -a | -x | -n| -v | -h ] [IDENTIFIER] -a enable audio passthrough mode. Identical to passthrough except for the addition of audio bars. Note: Will eventually lag and crash if left on too long. - -x reset the configuration: this will replace the default configuration file + -x reset the configuration: this will replace the selected configuration file at '${CONFIG_FILE}' with an empty one. -n reset Vrecord's stored environment variables. These include variables such as the paths to certain dependencies such as ffmpeg-dl. @@ -82,7 +82,7 @@ Advanced options -D Provide a path to a directory containing dependencies to override Vrecord's default dependency paths. These new paths will be stored in Vrecord's environmental variables. - -c Provide a recording configuration file, rather than the default one at + -c Provide a recording configuration file, rather than the selected one at '${CONFIG_FILE}'. See also the man page: man ${SCRIPTNAME} From fbf4d3a7aca159798f75756be834119b1a210f79 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 16:15:25 -0500 Subject: [PATCH 09/12] remember the selected profile --- vrecord | 1 + 1 file changed, 1 insertion(+) diff --git a/vrecord b/vrecord index 5f0b65c9..c772e264 100755 --- a/vrecord +++ b/vrecord @@ -33,6 +33,7 @@ _update_profile(){ CONFIG_FILE="${NEW_CONFIG_FILE}" fi fi + SELECTED_PROFILE="$(cat "${PROFILE_SELECTED_FILE}")" } _usage(){ From ab7a36f831d67095c48749897ef034db715e65c0 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Sun, 26 Jan 2025 19:40:40 -0500 Subject: [PATCH 10/12] temp --- vrecord | 81 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/vrecord b/vrecord index c772e264..ed355732 100755 --- a/vrecord +++ b/vrecord @@ -163,7 +163,7 @@ _process_vars_for_gtk(){ if [[ -f "${VRECORD_VARS_FILE}" ]] ; then . "${VRECORD_VARS_FILE}" else - _include_var VRECORD_VARS_FILE PROFILE_DIR + _include_var VRECORD_VARS_FILE PROFILE_DIR PROFILE_SELECTED_FILE fi if [[ -z "${OS_TYPE}" ]] ; then @@ -399,8 +399,8 @@ _check_mpv(){ } _gtk_vbox_list() { + local OPTIND OPTARG OPTION_STYLE="list" #default - OPTIND=1 while getopts "s:" opt ; do case "${opt}" in s) OPTION_STYLE="${OPTARG}" ;; @@ -412,7 +412,34 @@ _gtk_vbox_list() { LABEL="${3}" shift 3 OPTION_LIST=("${@}") + + _expand_list2items(){ + LIST=( "$@" ) + for i in "${LIST[@]}" ; do + echo "${i}" + done + } + _get_index_of_value(){ + # run with function, value to look for as first argument, and array to look in as 2nd argument, such function as + # _get_index_of_value "${VIDEO_INPUT_CHOICE}" "${VIDEO_INPUT_OPTIONS[@]}" + VALUE="${1}" + shift + LIST=( "$@" ) + INDEX=0 + MATCH="" + for ITEM in "${LIST[@]}" ; do + if [[ "${VALUE}" = "${ITEM}" ]] ; then + MATCH="$INDEX" + fi + (( ++INDEX )) + done + if [[ -n "${MATCH}" ]] ; then + echo -n "${MATCH}" + fi + } + SELECTION="$(_get_index_of_value "${!VARIABLE_NAME}" "${OPTION_LIST[@]}")" + echo "vn ${VARIABLE_NAME} vn! ${!VARIABLE_NAME} w $WIDTH l $LABEL ol ${OPTION_LIST[@]}" >> /tmp/hey if [[ "${VARIABLE_NAME}" == "DECKLINK_INPUT_CHOICE" ]] ; then LIST="_get_decklink_input_list" elif [[ "${VARIABLE_NAME}" == "DVRESCUE_INPUT_CHOICE" ]] ; then @@ -443,6 +470,9 @@ _gtk_vbox_list() { elif [[ "${VARIABLE_NAME}" == "DV_CONTAINER_CHOICE" ]] && $DVPACKAGER_INSTALLED ; then echo 'disable:DV_RESCUE_OPTION_TC enable:DV_RESCUE_OPTION_TC' + elif [[ "${VARIABLE_NAME}" == "SELECTED_PROFILE" ]] ; then + echo 'echo "$SELECTED_PROFILE" > "'$PROFILE_SELECTED_FILE'" + refresh' fi } @@ -751,31 +781,6 @@ _get_audio_dev_num(){ } _set_up_edit_form() { - _expand_list2items(){ - LIST=( "$@" ) - for i in "${LIST[@]}" ; do - echo "${i}" - done - } - _get_index_of_value(){ - # run with function, value to look for as first argument, and array to look in as 2nd argument, such function as - # _get_index_of_value "${VIDEO_INPUT_CHOICE}" "${VIDEO_INPUT_OPTIONS[@]}" - VALUE="${1}" - shift - LIST=( "$@" ) - INDEX=0 - MATCH="" - for ITEM in "${LIST[@]}" ; do - if [[ "${VALUE}" = "${ITEM}" ]] ; then - MATCH="$INDEX" - fi - (( ++INDEX )) - done - if [[ -n "${MATCH}" ]] ; then - echo -n "${MATCH}" - fi - } - # initialize deckcontrol temp files FFMPEG_STATUS_TMP="$(_maketemp .ffmpeg.status.txt)" DECKCONTROL_STATUS_TMP="$(_maketemp .deckcontrol.status.txt)" @@ -1307,6 +1312,21 @@ export MAIN_DIALOG=' '$(_gtk_vbox_list -s comboboxtext "SELECTED_PROFILE" "120" "Selected Profile" "${DECKLINK_DEVICES[@]}")' + + + + + + + NEW_PROFILE + + + + @@ -1550,9 +1570,12 @@ _edit_mode(){ # run the edit form in gtkdialog MAIN_DIALOG_TMP="${MAIN_DIALOG}" + echo "$MAIN_DIALOG" > /tmp/main + mate /tmp/main + GTK_INC="$(_maketemp .vrecord.gtkdialog.inc)" cat "${VRECORD_VARS_FILE}" > "${GTK_INC}" - echo "CONFIG_FILE=\"${CONFIG_FILE}\"" >> "${GTK_INC}" + echo "CONFIG_FILE=\"${PROFILE_DIR}/$(cat "${PROFILE_SELECTED_FILE}").conf\"" >> "${GTK_INC}" cat "${SHARED_FUNCTIONS_FILE}" >> "${GTK_INC}" if [[ "${VERBOSE_GTKDIALOG}" = "Y" ]] ; then @@ -2352,7 +2375,7 @@ _upgrade_config_file(){ # update value because the framemd5 choice changed from a yes/no picklist to a boolean as was the case in version 2023-08-07 and earlier if [[ -n "$(grep "FRAMEMD5_CHOICE=\"[YN]" "${CONFIG_FILE}")" ]] ; then sed 's|FRAMEMD5_CHOICE="No"|FRAMEMD5_CHOICE="false"|g;s|FRAMEMD5_CHOICE="Yes"|FRAMEMD5_CHOICE="true"|g' > "${CONFIG_FILE}tmp" < "${CONFIG_FILE}" - mv "${CONFIG_FILE}tmp" "${CONFIG_FILE}" + mv -v "${CONFIG_FILE}tmp" "${CONFIG_FILE}" fi } From e616cc34dc277d56898d09267f47d53192e66ed9 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Mon, 27 Jan 2025 08:05:59 -0500 Subject: [PATCH 11/12] temp2 --- Resources/vrecord_functions | 2 ++ vrecord | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Resources/vrecord_functions b/Resources/vrecord_functions index 6ec2e427..add9ae9f 100644 --- a/Resources/vrecord_functions +++ b/Resources/vrecord_functions @@ -38,6 +38,7 @@ _check_ffmpeg_install(){ } _update_config_file(){ + CONFIG_FILE="${PROFILE_DIR}/$(cat "${PROFILE_SELECTED_FILE}").conf" # write config file { echo "# Set these variables to a valid option or leave as empty quotes (like \"\") to request each run." @@ -213,6 +214,7 @@ _get_profile_list(){ } _get_summary(){ + CONFIG_FILE="${PROFILE_DIR}/$(cat "${PROFILE_SELECTED_FILE}").conf" if [[ ! -f "${CONFIG_FILE}" ]] ; then echo "VRecord configuration file is missing, please visit the Settings panel." else diff --git a/vrecord b/vrecord index ed355732..d82ccd63 100755 --- a/vrecord +++ b/vrecord @@ -25,15 +25,16 @@ _update_profile(){ fi fi if [[ -f "${PROFILE_SELECTED_FILE}" ]] ; then - CONFIG_FILE="$(cat "${PROFILE_SELECTED_FILE}").conf" + LOADED_PROFILE="$(cat "${PROFILE_SELECTED_FILE}")" + echo "${PROFILE_DIR}/${LOADED_PROFILE}.conf" + >&2 echo "Loading the profile: ${LOADED_PROFILE}" else if [[ -d "${PROFILE_DIR}" ]] ; then - CONFIG_FILE="$(ls -1 "${PROFILE_DIR}/*.conf" | head -n 1)" + echo "${PROFILE_DIR}/$(ls -1 "${PROFILE_DIR}/*.conf" | head -n 1)" else - CONFIG_FILE="${NEW_CONFIG_FILE}" + echo "${PROFILE_DIR}/${NEW_CONFIG_FILE}.conf" fi fi - SELECTED_PROFILE="$(cat "${PROFILE_SELECTED_FILE}")" } _usage(){ @@ -439,7 +440,6 @@ _gtk_vbox_list() { } SELECTION="$(_get_index_of_value "${!VARIABLE_NAME}" "${OPTION_LIST[@]}")" - echo "vn ${VARIABLE_NAME} vn! ${!VARIABLE_NAME} w $WIDTH l $LABEL ol ${OPTION_LIST[@]}" >> /tmp/hey if [[ "${VARIABLE_NAME}" == "DECKLINK_INPUT_CHOICE" ]] ; then LIST="_get_decklink_input_list" elif [[ "${VARIABLE_NAME}" == "DVRESCUE_INPUT_CHOICE" ]] ; then @@ -472,7 +472,7 @@ _gtk_vbox_list() { enable:DV_RESCUE_OPTION_TC' elif [[ "${VARIABLE_NAME}" == "SELECTED_PROFILE" ]] ; then echo 'echo "$SELECTED_PROFILE" > "'$PROFILE_SELECTED_FILE'" - refresh' + switch_profile' fi } @@ -1565,8 +1565,10 @@ export MAIN_DIALOG=' # edit mode _edit_mode(){ + CONFIG_FILE="$(_update_profile)" + SELECTED_PROFILE="$(cat "${PROFILE_SELECTED_FILE}")" + . "${CONFIG_FILE}" _set_up_edit_form - # run the edit form in gtkdialog MAIN_DIALOG_TMP="${MAIN_DIALOG}" @@ -1575,7 +1577,6 @@ _edit_mode(){ GTK_INC="$(_maketemp .vrecord.gtkdialog.inc)" cat "${VRECORD_VARS_FILE}" > "${GTK_INC}" - echo "CONFIG_FILE=\"${PROFILE_DIR}/$(cat "${PROFILE_SELECTED_FILE}").conf\"" >> "${GTK_INC}" cat "${SHARED_FUNCTIONS_FILE}" >> "${GTK_INC}" if [[ "${VERBOSE_GTKDIALOG}" = "Y" ]] ; then @@ -1601,6 +1602,9 @@ _edit_mode(){ RUNTYPE="audiopassthrough" elif [[ "${EXIT}" = "refresh" ]] ; then RUNTYPE="edit" + elif [[ "${EXIT}" = "switch_profile" ]] ; then + STARTUP_VIEW="MAIN" + RUNTYPE="edit" elif [[ "${EXIT}" = "timecode_scan" ]] ; then _report -dt "Scanning each supported type of timecode." _review_all_options @@ -2379,7 +2383,8 @@ _upgrade_config_file(){ fi } -_update_profile +CONFIG_FILE="$(_update_profile)" +SELECTED_PROFILE="$(cat "${PROFILE_SELECTED_FILE}")" if [[ -f "${CONFIG_FILE}" ]] ; then _upgrade_config_file . "${CONFIG_FILE}" From b6d795d557717828e6624619f807fdb89f72a738 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Mon, 17 Feb 2025 14:27:01 -0500 Subject: [PATCH 12/12] remove edit mode, startup on main. new/edit for multiple profiles --- Resources/vrecord_functions | 4 +- vrecord | 122 +++++++++++++++--------------------- 2 files changed, 55 insertions(+), 71 deletions(-) diff --git a/Resources/vrecord_functions b/Resources/vrecord_functions index add9ae9f..66754f69 100644 --- a/Resources/vrecord_functions +++ b/Resources/vrecord_functions @@ -42,7 +42,6 @@ _update_config_file(){ # write config file { echo "# Set these variables to a valid option or leave as empty quotes (like \"\") to request each run." - echo "STARTUP_VIEW=\"${STARTUP_VIEW}\"" echo "DEVICE_INPUT_CHOICE=\"${DEVICE_INPUT_CHOICE}\"" echo "VIDEO_INPUT_CHOICE=\"${VIDEO_INPUT_CHOICE}\"" echo "AUDIO_INPUT_CHOICE=\"${AUDIO_INPUT_CHOICE}\"" @@ -220,6 +219,7 @@ _get_summary(){ else . "${CONFIG_FILE}" if [ "${DEVICE_INPUT_CHOICE}" = "0" ] ; then + echo "Selected Profile: $(cat "${PROFILE_SELECTED_FILE}")" echo "Device Input: Decklink" echo "Settings: ${VIDEO_CODEC_CHOICE} ${VIDEO_BIT_DEPTH_CHOICE} ${CONTAINER_CHOICE} File" echo "from ${VIDEO_INPUT_CHOICE} video input and ${AUDIO_INPUT_CHOICE} audio input" @@ -235,11 +235,13 @@ _get_summary(){ echo "QCTools XML: ${QCTOOLSXML_CHOICE}" echo "Playback: ${PLAYBACKVIEW_CHOICE} view (for recording) and ${PLAYBACKVIEW_CHOICE_PASS} view (for passthrough)" elif [ "${DEVICE_INPUT_CHOICE}" = "1" ] ; then + echo "Selected Profile: $(cat "${PROFILE_SELECTED_FILE}")" echo "Device Input: DV" echo "Copying video from ${DVRESCUE_INPUT_CHOICE}." echo "Inputs recorded to ${DIR}" echo "Auxiliary files created in ${LOGDIR}" elif [ "${DEVICE_INPUT_CHOICE}" = "2" ] ; then + echo "Selected Profile: $(cat "${PROFILE_SELECTED_FILE}")" echo "Device Input: Audio" echo "Recording audio from ${AUDIO_DEV_CHOICE}." echo "Audio codec: ${AUDIO_MODE_CODEC_CHOICE}" diff --git a/vrecord b/vrecord index d82ccd63..2d6024bb 100755 --- a/vrecord +++ b/vrecord @@ -50,12 +50,11 @@ Dependencies: cowsay, amiaopensource/amiaos/decklinksdk, xmlstarlet Optional Dependencies: deckcontrol, gnuplot, mediaconch, mkvtoolnix, mpv, qcli -Usage: ${SCRIPTNAME} [ -e | -r | -p | -a | -x | -n| -v | -h ] [IDENTIFIER] +Usage: ${SCRIPTNAME} [ -r | -p | -a | -x | -n| -v | -h ] [IDENTIFIER] IDENTIFIER will be used for the filenaming of the output files. It is only required in record mode. - -e edit the configuration file before recording -r enable record mode [default] -p enable passthrough mode where the video signal coming into the computer can be monitored, but not written to a file. Useful for testing equipment @@ -472,7 +471,7 @@ _gtk_vbox_list() { enable:DV_RESCUE_OPTION_TC' elif [[ "${VARIABLE_NAME}" == "SELECTED_PROFILE" ]] ; then echo 'echo "$SELECTED_PROFILE" > "'$PROFILE_SELECTED_FILE'" - switch_profile' + VRECORD_SETTINGS_SUMMARY' fi } @@ -791,9 +790,6 @@ echo "disabled" > "$DECKCONTROL_STATUS_TMP" echo "--:--:--:--" > "$DECKCONTROL_TIMECODE_TMP" echo "disabled" > "$DVRESCUE_STATUS_TMP" -STARTUP_VIEW_TMP=$(_maketemp .startup.txt) -echo "MAIN" > "${STARTUP_VIEW_TMP}" - SIDECAR_FILES_GUI=" @@ -1262,6 +1258,40 @@ AUDIO_INPUT_GUI=$(cat << AUDIO_INPUT_FORM AUDIO_INPUT_FORM ) +export SETTINGS_DIALOG=' + + + + + '"${DECKLINK_INPUT_GUI}"' + '"${DVRESCUE_INPUT_GUI}"' + '"${AUDIO_INPUT_GUI}"' + '"${OPTIONAL_TOOLS_GUI}"' + DEVICE_INPUT_CHOICE + VRECORD_OUTPUT_NAME + enable:record_button + disable:record_button + enable:record_button_main + disable:record_button_main + enable:passthrough_button + disable:passthrough_button + + + + + + INPUTSETTINGS + _update_config_file + +' + export MAIN_DIALOG=' @@ -1287,14 +1317,6 @@ export MAIN_DIALOG=' "'"${RESOURCE_PATH}/vrecord_logo_audio.png"'" audiopassthrough - @@ -1322,11 +1350,15 @@ export MAIN_DIALOG=' + @@ -1340,25 +1372,6 @@ export MAIN_DIALOG=' MAIN VRECORD_SETTINGS_SUMMARY - - - - '"${DECKLINK_INPUT_GUI}"' - '"${DVRESCUE_INPUT_GUI}"' - '"${AUDIO_INPUT_GUI}"' - '"${OPTIONAL_TOOLS_GUI}"' - DEVICE_INPUT_CHOICE - VRECORD_OUTPUT_NAME - enable:record_button - disable:record_button - enable:record_button_main - disable:record_button_main - enable:passthrough_button - disable:passthrough_button - - - INPUTSETTINGS - @@ -1388,12 +1401,6 @@ export MAIN_DIALOG=' - - STARTUP_VIEW - '"${STARTUP_VIEW:-MAIN}"' - '"${STARTUP_VIEW_TMP}"' - STARTUP_VIEW - @@ -1491,26 +1498,6 @@ export MAIN_DIALOG=' - -