tazlito annotate tazlito-wiz @ rev 399

Improve GUI; misc changes
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Nov 20 17:05:51 2015 +0200 (2015-11-20)
parents 6e2c8b742f47
children e531b58ef2dc
rev   line source
pankso@254 1 #!/bin/sh
pankso@254 2 #
pankso@254 3 # Live system creation wizard in GTK using Yad.
pankso@254 4 #
al@399 5 # Copyright (C) 2012-2015 SliTaz GNU/Linux - GNU gpl v2
pankso@254 6 # Authors : Christophe Lincoln <pankso@slitaz.org>
pankso@254 7 #
pankso@254 8
al@399 9 default_icon="--image=slitaz-icon"
al@399 10 opts="--height=320 --width=600 --center --image-on-top --window-icon=slitaz-icon --title=LiveWizard"
pankso@254 11 rel=$(cat /etc/slitaz-release)
erjo@376 12 #[ "$rel" != "cooking" ] && rel=stable
al@399 13 live="/home/slitaz/$rel/live"
al@399 14 db='/var/lib/tazpkg'
psychomaniak@388 15 list="$live/distro-packages.list"
pankso@254 16 distro="/home/slitaz/$rel/distro"
pankso@254 17 addfiles="$distro/addfiles"
pankso@254 18
al@399 19
pankso@254 20 # TazLito wizard is only for root.
al@399 21
al@399 22 if [ $(id -u) -ne 0 ]; then
pankso@254 23 exec tazbox su $0
pankso@254 24 exit 0
pankso@254 25 fi
pankso@254 26
al@399 27
pankso@254 28 # I18n
al@399 29
al@399 30 . /lib/libtaz.sh
al@399 31 export TEXTDOMAIN='tazlito'
al@399 32
pankso@254 33
pankso@254 34 # Sanity check.
al@399 35
pankso@254 36 mkdir -p $live && cd $live
pankso@254 37 #rm -rf *
pankso@254 38
al@399 39
pankso@254 40 #
pankso@254 41 # Functions
pankso@254 42 #
pankso@254 43
al@399 44 edit_list() {
al@399 45 cat $list | yad --list $opts --image='system-software-update' \
al@399 46 --text="<b>$(_ 'Edit the distro packages list')</b>" \
al@399 47 --no-headers --print-all --separator='' \
al@399 48 --editable --column=0:TEXT > "$live/list"
al@399 49 mv -f "$live/list" "$list"
pankso@254 50 }
pankso@254 51
al@399 52
al@399 53 # Start page GUI
al@399 54
al@399 55 start_main() {
al@399 56 yad --form $opts $default_icon \
al@399 57 --text="<b>$(_ 'SliTaz Live system creator wizard')</b>" \
al@399 58 --field="$(_ "Distro name:")" \
al@399 59 --field="$(_ "Based on:")":CB \
al@399 60 --button='gtk-help:4' \
al@399 61 --button="$(_ 'Write ISO')!iso-image-burn:3" \
al@399 62 --button="$(_ 'TazPanel Live'):2" \
al@399 63 --button='gtk-cancel:1' \
al@399 64 --button='gtk-go-forward:0' \
al@399 65 'custom' 'core!core64!gtkonly!justx!base'
pankso@254 66 }
pankso@254 67
pankso@254 68
pankso@254 69 # Start page handler
al@399 70
pankso@254 71 start() {
pankso@254 72 # Store box results
pankso@254 73 main=$(start_main)
al@399 74
pankso@254 75 # Deal with --button values
pankso@254 76 case $? in
al@399 77 1) exit 0;;
al@399 78 2) tazpanel live; exit 0;;
al@399 79 3) terminal -T 'write-iso' -e 'tazlito writeiso lzma'; exit 0;;
al@399 80 4) tazweb 'file:///usr/share/doc/tazlito/tazlito.html'; exit 0;;
al@399 81 *) continue;;
pankso@254 82 esac
al@399 83
pankso@254 84 # Deal with $main values
al@399 85
al@399 86 (
al@399 87 export output='raw'
al@399 88 # Numbers are moved the progressbar
al@399 89 echo '30'
al@399 90 # Lines started with '#' are displayed in the log
al@399 91 tazpkg recharge | sed 's|^.*|#&|'
al@399 92 name="$(echo $main | cut -d'|' -f1)"; name="${name:-custom}"
al@399 93 skel="$(echo $main | cut -d'|' -f2)"
al@399 94 echo "$skel" > $live/skel
al@399 95 echo '60'
al@399 96 tazlito get-flavor $skel | sed 's|^.*|#&|'
al@399 97 echo '90'
al@399 98 sed -i "s|^ISO_NAME=.*|ISO_NAME=\"$name\"|" tazlito.conf
al@399 99 sed -i "s|^VOLUM_NAME=.*|VOLUM_NAME=\"SliTaz $name\"|" tazlito.conf
al@399 100 ) | \
al@399 101 yad --progress $opts --image='system-software-update' \
al@399 102 --text="<b>$(_ 'Getting flavor file and packages list...')</b>" \
al@399 103 --enable-log="$(_ 'Log')" --log-expanded --button='gtk-go-forward:0'
al@399 104
pankso@254 105 }
pankso@254 106
al@399 107
pankso@254 108 # Packages page GUI
al@399 109
pankso@254 110 pkgs_main() {
pankso@254 111 pkgs=$(cat $list | wc -l)
pankso@254 112 skel=$(cat $live/skel)
al@399 113 text=$(_ 'Packages - The "$skel" has $pkgs packages')
al@399 114 yad --form $opts --image='application-x-tazpkg' \
al@399 115 --text="<b>$text</b>" --separator=' ' \
al@399 116 --field="$(_ 'Additional packages separated by space or by line:')\\n$(_ '(will be auto added to "Edit packages list")')":TXT \
al@399 117 --button="$(_ 'Edit packages list')!document-properties:2" \
al@399 118 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 119 }
pankso@254 120
al@399 121
pankso@254 122 # Packages page handler
al@399 123
pankso@254 124 pkgs() {
pankso@254 125 # Store box results
pankso@254 126 main=$(pkgs_main)
pankso@254 127 # Deal with --button values
pankso@254 128 case $? in
pankso@254 129 1) exit 0 ;;
psychomaniak@388 130 2) add_to_list ; edit_list ;;
psychomaniak@388 131 *) add_to_list ;;
pankso@254 132 esac
psychomaniak@388 133 }
psychomaniak@388 134
al@399 135
al@399 136 add_to_list() {
al@399 137 for pkg in $(echo $main | sed s'/\\n/ /'g); do
psychomaniak@388 138 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}')
psychomaniak@388 139 [ -z $vers ] || \
psychomaniak@388 140 (grep -v -q "^$pkg-$vers" $list && \
pankso@254 141 echo "$pkg-$vers" >> $list
psychomaniak@388 142 )
psychomaniak@388 143 unset vers
pankso@254 144 done
pankso@254 145 }
pankso@254 146
al@399 147
pankso@254 148 # Wallpaper page GUI
al@399 149
pankso@254 150 wallpaper_main() {
al@399 151 yad --form $opts --image='preferences-desktop-wallpaper' \
al@399 152 --text="<b>$(_ 'SliTaz desktop wallpaper')</b>" --separator='' \
al@399 153 --field="$(_ 'Wallpaper JPG image:')":FL \
al@399 154 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 155 }
pankso@254 156
al@399 157
pankso@254 158 # Wallpaper page handler
al@399 159
pankso@254 160 wallpaper() {
pankso@254 161 # Store box results
pankso@254 162 main=$(wallpaper_main)
pankso@254 163 # Deal with --button values
pankso@254 164 case $? in
pankso@254 165 1) exit 0 ;;
pankso@254 166 *) continue ;;
pankso@254 167 esac
pankso@254 168 if echo "$main" | fgrep -q .jpg; then
pankso@254 169 mkdir -p $addfiles/rootfs/usr/share/images
pankso@254 170 cp -f $main $addfiles/rootfs/usr/share/images
pankso@254 171 fi
pankso@254 172 }
pankso@254 173
al@399 174
pankso@254 175 # Last page GUI
al@399 176
pankso@254 177 gen_distro_main() {
al@399 178 (
al@399 179 _ "
pankso@254 180 Now it's time to generate the distro. Last chance to start over or stop. \
paul@261 181 Creating a Live system uses quite a lot of resources and takes some time.
al@399 182 Note you can still add some files to the SliTaz root filesystem or on the CD-ROM."
al@399 183 echo
al@399 184 echo $addfiles
al@399 185 ) | yad --text-info $opts $default_icon \
al@399 186 --text="<b>$(_ 'Generate the distribution')</b>" --wrap --margins=20 \
al@399 187 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 188 }
pankso@254 189
al@399 190
pankso@254 191 # Last page handler
al@399 192
pankso@254 193 gen_distro() {
pankso@254 194 # Store box results
pankso@254 195 main=$(gen_distro_main)
al@399 196
pankso@254 197 # Deal with --button values
pankso@254 198 case $? in
pankso@254 199 1) exit 0 ;;
pankso@332 200 *)
al@399 201 export output='raw'
pankso@332 202 echo -e "\n" | tazlito gen-distro 2>&1 | yad \
al@399 203 --text-info $opts $default_icon --tail \
al@399 204 --text="<b>$(_ 'Building the Live system...')</b>" \
al@399 205 --button='gtk-go-forward:0'
al@399 206 ;;
pankso@254 207 esac
pankso@254 208 }
pankso@254 209
al@399 210
pankso@254 211 # Summary
al@399 212
pankso@254 213 summary() {
pankso@254 214 . tazlito.conf
pankso@254 215 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}')
pankso@254 216 distro_size=$(du -sh $distro/rootfs | awk '{print $1}')
al@399 217 text="$(_ 'Live system summary')"
pankso@254 218 echo -e "\
al@399 219 $(_ 'Generated ISO') \n$distro/$ISO_NAME.iso
al@399 220 $(_ 'Image size') \n$iso_size
al@399 221 $(_ 'Uncompressed size') \n$distro_size" | \
al@399 222 yad --list $opts $default_icon --text="<b>$text</b>" \
al@399 223 --column="$(_ 'Information')":0 --column="$(_ 'Value')":1 \
pankso@254 224 --button="gtk-close":0
pankso@254 225 }
pankso@254 226
al@399 227
pankso@254 228 #
pankso@254 229 # Script commands
pankso@254 230 #
pankso@254 231
pankso@254 232 case "$1" in
pankso@254 233 usage)
pankso@254 234 echo "Usage: $(basename $0) [command]" ;;
al@399 235 *)
pankso@254 236 start
pankso@254 237 pkgs
al@399 238 wallpaper
pankso@254 239 gen_distro
pankso@254 240 summary ;;
pankso@254 241 esac
pankso@254 242
pankso@254 243 exit 0