Making use of command -move in xorriso-tcltk

This commit is contained in:
Thomas Schmitt 2013-03-18 10:46:53 +00:00
parent 5be71159ed
commit 1f19cd39ce
2 changed files with 65 additions and 13 deletions

View File

@ -110,6 +110,11 @@ Options:
The log lines will be appended. Path "-" means stderr. The log lines will be appended. Path "-" means stderr.
--script_log_all_commands --script_log_all_commands
With logging of commands log non-essential commands too. With logging of commands log non-essential commands too.
--use_command_move
Use xorriso command -move for the "Move to: button
if xorriso version is >= 1.2.8
--use_command_mv
Use xorriso command -mv for the "Move to:" button.
If neither --stdio nor --named_pipes is given, then this script If neither --stdio nor --named_pipes is given, then this script
will try to locate itself in the filesystem and start a xorriso will try to locate itself in the filesystem and start a xorriso

View File

@ -19,7 +19,7 @@
# And, well, a graphical widget set would be nice. # And, well, a graphical widget set would be nice.
set own_version "1.2.7" set own_version "1.2.8"
# Minimum version of xorriso to be used as backend process. # Minimum version of xorriso to be used as backend process.
# Older versions of xorriso do not offer commands -msg_op and -launch_frontend # Older versions of xorriso do not offer commands -msg_op and -launch_frontend
@ -73,6 +73,11 @@ proc print_usage {argv0} {
puts stderr " The log lines will be appended. Path \"-\" means stderr." puts stderr " The log lines will be appended. Path \"-\" means stderr."
puts stderr " --script_log_all_commands" puts stderr " --script_log_all_commands"
puts stderr " With logging of commands log non-essential commands too." puts stderr " With logging of commands log non-essential commands too."
puts stderr " --use_command_move"
puts stderr " Use xorriso command -move for the \"Move to:\" button"
puts stderr " if xorriso version is >= 1.2.8"
puts stderr " --use_command_mv"
puts stderr " Use xorriso command -mv for the \"Move to:\" button."
puts stderr "" puts stderr ""
puts stderr "If neither --stdio nor --named_pipes is given, then this script" puts stderr "If neither --stdio nor --named_pipes is given, then this script"
puts stderr "will try to locate itself in the filesystem and start a xorriso" puts stderr "will try to locate itself in the filesystem and start a xorriso"
@ -139,6 +144,9 @@ set bulk_parse_num_texts ""
# This may be expected when xorriso is being shut down by this frontend. # This may be expected when xorriso is being shut down by this frontend.
set expect_broken_pipes "0" set expect_broken_pipes "0"
# Whether to use command -move rather than -mv. Possible since xorriso-1.2.8.
set use_command_move 1
# Local copies of xorriso state # Local copies of xorriso state
@ -781,6 +789,7 @@ proc localfs_filetype {path} {
# #
proc check_xorriso_version {} { proc check_xorriso_version {} {
global sieve_ret result_list pre_msglist xorriso_version min_xorriso_version global sieve_ret result_list pre_msglist xorriso_version min_xorriso_version
global use_command_move
global reply_conn global reply_conn
set version "0.0.0 (= unknown)" set version "0.0.0 (= unknown)"
@ -808,6 +817,9 @@ proc check_xorriso_version {} {
"red" "embedded" "red" "embedded"
central_exit 2 central_exit 2
} }
if {$xorriso_version < "1.2.8"} {
set use_command_move 0
}
set_display_msg $disp_en_mem set_display_msg $disp_en_mem
} }
@ -1615,7 +1627,7 @@ proc isodir_up {} {
proc isomanip_mv {} { proc isomanip_mv {} {
global .isolist global .isolist
global isomanip_move_target isolist_names isodir_is_pwd isodir_adr global isomanip_move_target isolist_names isodir_is_pwd isodir_adr
global isodir_return_name global isodir_return_name use_command_move
if {$isomanip_move_target == ""} { if {$isomanip_move_target == ""} {
xorriso_tcltk_errmsg \ xorriso_tcltk_errmsg \
@ -1664,7 +1676,7 @@ proc isomanip_mv {} {
set name_ftype [isofs_filetype $name] set name_ftype [isofs_filetype $name]
# Ask for confirmation if overwriting is about to happen # Ask for confirmation if overwriting is about to happen
if {$target_ftype == "d"} { if {$target_ftype == "d" && $use_command_move == 0} {
set eff_target [combine_dir_and_name $target $name] set eff_target [combine_dir_and_name $target $name]
set eff_target_ftype [isofs_filetype $eff_target] set eff_target_ftype [isofs_filetype $eff_target]
} else { } else {
@ -1673,11 +1685,17 @@ proc isomanip_mv {} {
} }
if {[handle_overwriting "isofs" $eff_target $eff_target_ftype \ if {[handle_overwriting "isofs" $eff_target $eff_target_ftype \
"isofs" $name $name_ftype $multi_source \ "isofs" $name $name_ftype $multi_source \
"" ""] == "0"} { "" "" "replace"] == "0"} {
if {$multi_source == 0} { return "" } if {$multi_source == 0} { return "" }
continue continue
} }
send_loggable_cmd "-mv [make_text_shellsafe $name] [make_text_shellsafe $target] --" if {$use_command_move == 0} {
send_loggable_cmd \
"-mv [make_text_shellsafe $name] [make_text_shellsafe $target] --"
} else {
send_loggable_cmd \
"-move [make_text_shellsafe $name] [make_text_shellsafe $target] --"
}
} }
if {[llength $selected] == 1} { if {[llength $selected] == 1} {
@ -2032,7 +2050,7 @@ proc refresh_avail {} {
# #
proc handle_overwriting {target_fs target target_ftype proc handle_overwriting {target_fs target target_ftype
source_fs source source_ftype multi_source source_fs source source_ftype multi_source
selected_adr selected_ftype} { selected_adr selected_ftype dir_action} {
global overwrite_iso_files overwrite_iso_dirs overwrite_disk_files global overwrite_iso_files overwrite_iso_dirs overwrite_disk_files
if {$target_fs == "localfs"} { if {$target_fs == "localfs"} {
@ -2064,6 +2082,16 @@ proc handle_overwriting {target_fs target target_ftype
if {$target_ftype != ""} { if {$target_ftype != ""} {
if {$target_ftype == "d"} { if {$target_ftype == "d"} {
if {$source_ftype == "d"} { if {$source_ftype == "d"} {
if {$dir_action == "replace"} {
if {$overwrite_iso_dirs != 1} {
xorriso_tcltk_errmsg "xorriso-tcltk : SORRY : You would have to enable \"Overwrite $overwrite_fs dirs\" for\n[make_text_shellsafe $target]"
return "0"
}
if {[$what_window \
"Really replace existing $to_fs directory\n\n[make_text_shellsafe $target]\n\nby $from_fs directory\n[make_text_shellsafe $source]\n?"] \
!= 1} { return "0" }
return "1"
}
if {[$what_window \ if {[$what_window \
"Really merge existing $to_fs directory\n\n[make_text_shellsafe $target]\n\nwith $from_fs directory\n[make_text_shellsafe $source]\n?"] \ "Really merge existing $to_fs directory\n\n[make_text_shellsafe $target]\n\nwith $from_fs directory\n[make_text_shellsafe $source]\n?"] \
!= 1} { return "0" } != 1} { return "0" }
@ -2142,7 +2170,7 @@ proc insert_from {} {
reset_yesno_to_all reset_yesno_to_all
if {[handle_overwriting "isofs" $target $target_ftype \ if {[handle_overwriting "isofs" $target $target_ftype \
"localfs" $insert_from_adr $source_ftype 0 \ "localfs" $insert_from_adr $source_ftype 0 \
$selected_adr $selected_ftype] == "0"} { $selected_adr $selected_ftype "merge"] == "0"} {
return "" return ""
} }
@ -2238,7 +2266,7 @@ proc extract_to {} {
set source_ftype [isofs_filetype $i] set source_ftype [isofs_filetype $i]
if {[handle_overwriting "localfs" $target $target_ftype \ if {[handle_overwriting "localfs" $target $target_ftype \
"isofs" $i $source_ftype $multi_source \ "isofs" $i $source_ftype $multi_source \
"" ""] == 0} { "" "" "merge"] == 0} {
continue continue
} }
send_loggable_cmd \ send_loggable_cmd \
@ -4321,7 +4349,7 @@ proc set_overwriting_label {} {
# The central storage for help texts. # The central storage for help texts.
# #
proc tell_helptext {what} { proc tell_helptext {what} {
global own_version argv0 bwidget_version global own_version argv0 bwidget_version use_command_move
if {$what == "Help"} { if {$what == "Help"} {
return \ return \
@ -4536,7 +4564,12 @@ and the frontend is still waiting for its reply messages."
if {$what == "Command:"} { if {$what == "Command:"} {
return \ return \
"The \"Command:\" field can be used to send commands to xorriso. "The \"Command:\" field can be used to send commands to xorriso.
See the manual page of xorriso for its concepts and commands." See the manual page of xorriso for its concepts and commands.
Normally the other GUI elements will emit xorriso commands for you.
This input field is presented only to make accessible those features
of xorriso which are not covered by the GUI. Use the \"Refresh disp\"
button to update the display after you have manually transmitted commands."
} }
if {$what == "Script/Log"} { if {$what == "Script/Log"} {
return \ return \
@ -4998,7 +5031,7 @@ overwritten in the ISO image. See xorriso command -overwrite \"nondir\".
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
The \"Overwrite ISO dirs\" switch controls whether it is allowed to replace The \"Overwrite ISO dirs\" switch controls whether it is allowed to replace
an ISO directory by a non-directory file. See xorriso command -overwrite \"on\". an ISO directory by a another file. See xorriso command -overwrite \"on\".
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
@ -5157,7 +5190,8 @@ is written via \"Write ISO session\". Nevertheless they will stay present
in earlier sessions beginning from the session where they were inserted." in earlier sessions beginning from the session where they were inserted."
} }
if {$what == "Move to:"} { if {$what == "Move to:"} {
return \ if {$use_command_move == 0} {
return \
"The \"Move to:\" button uses command -mv to move each of the selected "The \"Move to:\" button uses command -mv to move each of the selected
items to the address that is given by the text field right to the button. items to the address that is given by the text field right to the button.
@ -5165,6 +5199,11 @@ If this address points to an existing ISO directory, then the items will
be moved underneath that directory and keep their leaf names. be moved underneath that directory and keep their leaf names.
Else there may be only one selected item which will be renamed to the Else there may be only one selected item which will be renamed to the
given address." given address."
} else {
return \
"The \"Move to:\" button uses command -move to rename each of the selected
items to the address that is given by the text field right to the button."
}
} }
if {$what == "Make dir"} { if {$what == "Make dir"} {
return \ return \
@ -5739,7 +5778,7 @@ proc escape_newline {text backslash_too} {
proc setup_by_args {argv0 argv} { proc setup_by_args {argv0 argv} {
global cmd_pipe_adr reply_pipe_adr main_window_geometry click_to_focus global cmd_pipe_adr reply_pipe_adr main_window_geometry click_to_focus
global have_bwidget cmd_conn reply_conn geometry stdout stdin global have_bwidget cmd_conn reply_conn geometry stdout stdin
global osirrox_allowed cmd_logging_all global osirrox_allowed cmd_logging_all use_command_move
# wish normally eats the -geometry option and puts the result into $geometry # wish normally eats the -geometry option and puts the result into $geometry
catch {set main_window_geometry $geometry} catch {set main_window_geometry $geometry}
@ -5817,6 +5856,14 @@ proc setup_by_args {argv0 argv} {
set ok "1" set ok "1"
set have_bwidget "-1" set have_bwidget "-1"
} }
if {$opt == "--use_command_move"} {
set ok "1"
set use_command_move 1
}
if {$opt == "--use_command_mv"} {
set ok "1"
set use_command_move 0
}
if {$ok == 0} { if {$ok == 0} {
puts stderr "$argv0 : Unknown option '$opt'" puts stderr "$argv0 : Unknown option '$opt'"
print_usage $argv0 print_usage $argv0