slitaz-tools annotate boxes/burn-box @ rev 945
Add Name[fr] in .desktop
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Jul 12 17:58:23 2015 +0200 (2015-07-12) |
parents | 5d80f6fdbdb7 |
children | f29d39a9b6f7 |
rev | line source |
---|---|
pankso@754 | 1 #!/bin/sh |
pankso@754 | 2 # |
pankso@754 | 3 # Burn-box a small front end to cdrkit powered by Yad/GTK. Keep the main |
al@813 | 4 # window uncluttered and use a wizard to create audio/video/data CD/DVD. |
paul@763 | 5 # The main box lets users burn an ISO and audio files from a single directory. |
pankso@754 | 6 # |
al@939 | 7 # Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License |
pankso@754 | 8 # |
pankso@754 | 9 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@754 | 10 # |
al@939 | 11 |
pankso@754 | 12 . /lib/libtaz.sh |
al@813 | 13 export TEXTDOMAIN='slitaz-boxes' # i18n |
pankso@754 | 14 |
al@939 | 15 |
pankso@754 | 16 # LibTaz parser and store options. Burn-box can be used with an ISO image |
pankso@754 | 17 # or an audio directory in option: burn-box --iso=/path/to/image.iso |
al@939 | 18 |
pankso@754 | 19 [ "$iso" ] || iso=" " |
pankso@754 | 20 [ "$audio" ] || audio="$HOME" |
pankso@754 | 21 |
al@939 | 22 |
al@813 | 23 # Internal variables |
al@939 | 24 |
al@813 | 25 boxopts="--height=300 --width=620" |
al@813 | 26 icon=media-optical-dvd-rw |
al@813 | 27 options="-eject -multi" |
al@813 | 28 speed=$(fgrep "drive speed" /proc/sys/dev/cdrom/info | cut -f3) |
al@813 | 29 tmpdir=$(mktemp -d) |
pankso@754 | 30 |
al@939 | 31 |
pankso@754 | 32 # |
pankso@754 | 33 # Functions |
pankso@754 | 34 # |
pankso@754 | 35 |
al@939 | 36 |
pankso@754 | 37 # Help and usage |
al@939 | 38 |
pankso@754 | 39 usage() { |
al@813 | 40 newline; _ 'Burn-box a small front end to cdrkit powered by Yad/GTK.' |
al@813 | 41 newline; boldify $(_ 'Usage:') |
al@813 | 42 echo " $(basename $0) [$(_n 'command')|$(_n 'option')] [$(_n 'file')]" |
pankso@754 | 43 |
al@813 | 44 newline; boldify $(_ 'Commands:') |
al@813 | 45 optlist "\ |
al@813 | 46 wodim-help|-wh $(_n 'Show all Wodim options') |
al@813 | 47 iso|-i $(_n 'Burn an ISO image') |
al@813 | 48 audio|-a $(_n 'Create and burn an audio CD') |
al@813 | 49 blank $(_n 'Erase a RW disk')" |
pankso@754 | 50 |
al@813 | 51 newline; boldify $(_ 'Options:') |
al@813 | 52 echo "\ |
al@813 | 53 --iso=$(_n '/path/to/image.iso') |
al@813 | 54 --audio=$(_n '/path/to/directory')" |
pankso@754 | 55 |
al@813 | 56 newline; boldify $(_ 'Examples:') |
al@813 | 57 echo "\ |
al@813 | 58 $(basename $0) iso $(_n '/path/to/image.iso') |
al@813 | 59 $(basename $0) --iso=$(_n '/path/to/image.iso')" |
al@813 | 60 newline |
pankso@754 | 61 } |
pankso@754 | 62 |
al@939 | 63 |
pankso@754 | 64 # Ouput a command to a Yad/GTK box. Usage: cmd | out --title="Title" --tail |
al@939 | 65 |
pankso@754 | 66 gtkout() { |
al@813 | 67 yad --window-icon=$icon $boxopts \ |
al@813 | 68 --margins=4 --fontname=monospace \ |
al@813 | 69 --text-info "$@" --button="gtk-close:1" |
pankso@754 | 70 } |
pankso@754 | 71 |
al@939 | 72 |
pankso@754 | 73 # Decode audio files with: decode [file] |
al@939 | 74 |
pankso@754 | 75 decode_audio() { |
al@943 | 76 _ 'Decoding files from: %s' "$audio" |
pankso@754 | 77 for f in "$audio"/*.* |
pankso@754 | 78 do |
al@813 | 79 debug "handling $f" |
pankso@754 | 80 case "$f" in |
pankso@754 | 81 *.wav) |
pankso@754 | 82 cp -f "$f" $tmpdir ;; |
pankso@754 | 83 *.mp3|*.MP3|*.ogg) |
pankso@754 | 84 ext=${f##*.} |
pankso@754 | 85 if [ ! -f "${f%.$ext}.wav" ]; then |
pankso@754 | 86 decode "$f" |
pankso@754 | 87 mv ${f%.$ext}.wav $tmpdir |
pankso@754 | 88 fi ;; |
pankso@754 | 89 esac |
pankso@754 | 90 done |
pankso@754 | 91 } |
pankso@754 | 92 |
al@939 | 93 |
pankso@754 | 94 # Burn an ISO image. |
al@939 | 95 |
pankso@754 | 96 burn_iso() { |
al@813 | 97 if [ "${iso##*.}" != "iso" ]; then |
al@943 | 98 _ 'Not an ISO image: "%s"' "$iso"; exit 1 |
al@813 | 99 fi |
pankso@754 | 100 wodim -v speed=$speed $options "$iso" |
pankso@754 | 101 } |
pankso@754 | 102 |
al@939 | 103 |
pankso@754 | 104 # Burn some audio tracks from a directory. |
al@939 | 105 |
pankso@754 | 106 burn_audio() { |
pankso@754 | 107 decode_audio |
pankso@754 | 108 echo "TODO: check_size" |
pankso@754 | 109 du -sh $tmpdir |
pankso@754 | 110 wodim -v speed=$speed $options -pad -dao -audio $tmpdir/*.wav |
pankso@754 | 111 rm -rf $tmpdir |
pankso@754 | 112 } |
pankso@754 | 113 |
al@939 | 114 |
pankso@754 | 115 # Main GUI box function with pure Yad spec |
al@939 | 116 |
pankso@754 | 117 burn_main() { |
al@813 | 118 yad --title="$(_ 'Burn-box')" --window-icon=$icon $boxopts \ |
al@813 | 119 --image=$icon --image-on-top \ |
al@813 | 120 --text="<b>$(_n 'Burn ISO images and audio files [data in next releases]')</b>" \ |
al@813 | 121 --form \ |
al@813 | 122 --field="$(_n 'Drive speed:')" "$speed" \ |
al@813 | 123 --field="$(_n 'Wodim options:')" " $options" \ |
al@813 | 124 --field="$(_n 'ISO image:'):FL" "$iso" \ |
al@813 | 125 --field="$(_n 'Audio files:'):DIR" "$audio" \ |
al@813 | 126 --button="$(_n 'Wodim help'):$0 wodim-help" \ |
al@813 | 127 --button="$(_n 'Blank CD'):$0 blank" \ |
al@813 | 128 --button="$(_n 'Burn'):0" \ |
al@813 | 129 --button="gtk-close:1" |
pankso@754 | 130 } |
pankso@754 | 131 |
al@939 | 132 |
pankso@754 | 133 # Main function |
al@939 | 134 |
pankso@754 | 135 burn() { |
pankso@754 | 136 # Store box results |
pankso@754 | 137 main=$(burn_main) |
pankso@754 | 138 |
pankso@754 | 139 # Deal with --button values |
pankso@754 | 140 case $? in |
pankso@754 | 141 0) continue ;; |
pankso@754 | 142 *) exit 0 ;; |
pankso@754 | 143 esac |
pankso@754 | 144 |
al@813 | 145 # Get values from $main |
al@813 | 146 eval $(echo $main | awk -F'|' \ |
al@813 | 147 '{printf "speed=\"%s\" options=\"%s\" iso=\"%s\" audio=\"%s\"", $1, $2, $3, $4}') |
al@813 | 148 speed=${speed%%,*} # first from comma separated list |
pankso@754 | 149 |
pankso@754 | 150 # Handle ISO image |
pankso@754 | 151 if [ "$iso" != "(null)" ]; then |
al@813 | 152 burn_iso 2>&1 | gtkout --title="$(_n 'Burning ISO')" --tail |
pankso@754 | 153 fi |
pankso@754 | 154 |
pankso@754 | 155 # Handle Audio files. |
pankso@754 | 156 if [ "$audio" != "$HOME" ]; then |
al@813 | 157 burn_audio 2>&1 | gtkout --title="$(_n 'Burning Audio')" --tail |
pankso@754 | 158 fi |
pankso@754 | 159 } |
pankso@754 | 160 |
al@939 | 161 |
pankso@754 | 162 # |
pankso@754 | 163 # Commands |
pankso@754 | 164 # |
pankso@754 | 165 |
pankso@754 | 166 case "$1" in |
al@813 | 167 -h|--help) |
al@813 | 168 usage ;; |
pankso@754 | 169 wodim-help|-wh) |
al@813 | 170 wodim --help 2>&1 | gtkout --title="$(_n 'Wodim Help')" ;; |
pankso@754 | 171 iso|-i) |
pankso@754 | 172 # Let burn an ISO from cmdline: burn-box -i /path/to/image.iso |
pankso@754 | 173 [ "$iso" == " " ] && iso="$2" |
pankso@754 | 174 if [ ! -f "$iso" ]; then |
al@943 | 175 _ 'Missing ISO image "%s"' "$iso"; exit 1 |
pankso@754 | 176 fi |
pankso@754 | 177 burn_iso ;; |
pankso@754 | 178 audio|-a) |
pankso@754 | 179 # Let create an audio CD from cmdline: burn-box -a /path/to/audio |
pankso@754 | 180 [ "$2" ] && audio="$2" |
pankso@754 | 181 [ "$audio" == "$HOME" ] && unset audio |
pankso@754 | 182 if [ ! -d "$audio" ]; then |
al@943 | 183 _ 'Missing audio directory "%s"' "$audio"; exit 1 |
pankso@754 | 184 fi |
pankso@754 | 185 burn_audio ;; |
pankso@754 | 186 blank) |
al@813 | 187 wodim -v -blank=fast 2>&1 | gtkout --title="$(_n 'Blank disk')" --tail ;; |
pankso@754 | 188 ""|--*) |
pankso@754 | 189 burn ;; |
pankso@754 | 190 *) |
pankso@754 | 191 usage ;; |
pankso@754 | 192 esac |
pankso@754 | 193 |
pankso@754 | 194 exit 0 |