corz.org uses cookies to remember that you've seen this notice explaining that corz.org uses cookies, okay!
corz.org text viewer..
[currently viewing: / public/ machine/ source/ windows/ ffe.au3 - raw]
global $my_version = "2.0.0.0"
global $hGIF
global $enable_animated_gif = true
global $gif_method = false
;
global const $LOG_LF = @CRLF
global const $MSG_LF = @LF
global const $ON = $GUI_CHECKED
global const $OFF = $GUI_UNCHECKED
global const $UNSET = $GUI_INDETERMINATE
global const $MF_BYPOSITION = 0x00000400
global const $MF_SEPARATOR = 0x00000800
global const $MF_CHECKED = 0x00000008
Global Const $MF_UNCHECKED = 0x0
global const $MF_POPUP = 0x00000010
global const $exit_preset = "FFE-EXIT-SETTINGS"
AutoItSetOption("GUIOnEventMode", 1)
AutoItSetOption("TrayMenuMode", 11)
AutoItSetOption("TrayOnEventMode", 1)
AutoItSetOption("GUICoordMode", 1)
AutoItSetOption("GUIEventOptions", 1)
global $me_app, $my_name = "ffe"
global $my_title = " ffe.. ffmpeg front-end"
global $ini_path = $my_name & ".ini"
global $abort_batch = false
global $got_helps = ""
global $ffmpeg = 0
global $my_domain = "corz.org"
global $my_url = "http: & $my_domain & "/windows/software/ffe/"
global $versioncheck_url = "http: & $my_domain & "/inc/versions.php?app=ffe"
global $download_url = "http://" & $my_domain & "/windows/software/ffe/
global const $NAME_BUTTONS = "custom buttons"
global const $NAME_SETTINGS = "main settings"
global const $NAME_PRESETS = "presets"
global $do_debug = $OFF
if @Compiled then
$me_app = @ScriptFullPath
$do_debug = $OFF
else
$do_debug = $ON
$me_app = "C:\Program Files\corz\ffe\ffe.exe"
endif
global $data_parent = @AppDataDir & "\corz\" & $my_name
global $inputfile, $old_inputfile, $extra_args, $v_codec, $a_codec, $resize_preset, $args, $msgs, $count_ints
global $installed_ini, $matof_string, $old_matof, $no_video, $no_audio, $launch_preset, $user_inputfile, $user_outputfile
global $find_count = 0, $switches, $go, $do_gen=false, $do_quit=false, $do_shutdown=false, $log_string, $am_custom_buttons_disable
global $arTransItems[10], $arCPUItems[6], $ReportTypesMenuItems[7], $DropCommandMenuItems[3], $CustomButtonMenuItems[502]
global $tray_abort_batch, $tray_toggle_drop_window, $tray_toggle_start_minimized, $tray_toggle_delayed_start, $tray_toggle_fluid_image_menu, $tray_toggle_auto_copy_images, $tray_choose_image_folder
global $ctxt_toggle_fluid_image_menu, $ctxt_toggle_auto_copy_images, $ctxt_choose_image_folder, $tray_toggle_retain_recent_files
global $ffeGUI, $GUI_DropWindow, $GUI_DropWindowResizer, $output_dir, $inp_inputfile, $lab_inputfile, $inp_outputfile, $ini_outputfile
global $inp_input_params, $combo_presets, $butt_add_file_arg_to_input_params, $check_do_drop_window, $check_do_matof
global $radio_preset_replace, $check_store_filepaths, $combo_v_codec, $combo_v_bitrate, $combo_frames_per_second
global $inp_crop_top, $inp_crop_right, $inp_crop_bottom, $inp_crop_left, $inp_x_size, $inp_y_size, $check_concatenate
global $check_run_pre_job_commands, $check_run_post_job_commands, $check_overwrite
global $combo_preset_resizes, $check_resize_first, $combo_a_codec, $combo_a_bitrate, $combo_target_type
global $inp_extra_args, $butt_quicktest, $butt_mediareport, $lab_help_info, $edit_in_args, $edit_console_output
global $butt_find, $butt_copy2clip, $butt_clearout, $butt_doit, $label_abort, $previous_pos, $do_countdown_timer
global $am_always_on_top, $am_console_wordwrap, $am_trans, $am_reptypes, $am_image_buttons, $am_do_tooltips, $am_sort_presets_list, $am_cpu, $am_drop_command
global $am_retain_exit_settings, $am_use_mediainfo, $am_log_each_job, $am_log_append, $am_job_log_append
global $check_quit_when_done, $check_shutdown_when_done, $am_about, $clean_outputfile_ext, $outputfile
global $am_custom_buttons_columns, $custom_buttons_array, $custom_buttons[502]
global $paused, $generate_script = false, $shifted = false, $timeout=false, $portable = false, $delay_start_at = false
global $current_preset = $my_name, $title_msg_string
global $dropwin_visible, $dropwin_trans_real, $lab_main_drop, $image_handle, $half_trans, $drop_win_state
global $hover, $hovering, $switching, $blocking
global $monitors_list[1][5]
$monitors_list[0][0] = 0
global $img_index = 1
global $drop_images[1][3]
global $made_files[1]
global $recent_files[1]
global $min_width = 875
global $min_height = 442
global $height_magic = 24
global $maximized = $OFF, $minimized = $OFF
global $start_minimized
global $nTPChecked = 0
global $nCPUChecked = 0
global $DropCommands[3] = ["None", "Go", "Report"]
global $ReportTypes[7] = ["default", "compact", "csv", "flat", "ini", "json", "xml"]
global $arCPU[6] = ["Idle/Low", "Below Normal", "Normal", "Above Normal", "High", "Realtime (Use with caution!)"]
global $oMyError = ObjEvent("AutoIt.Error", "AAError")
global $known_files
AAInit($known_files)
global $concat_list = @TempDir & "\ffe-concat-list.txt"
global $grid_x = 465
global $grid_y = 145
global $buttons_y_shunt, $button_spacing
global $tip_icon, $tip_icon_index, $tip_style
global $presets, $x, $y, $width, $height, $video_codecs, $audio_codecs, $file_types, $video_bitrates, $audio_bitrates, $frames_per_second, $target_types
global $preset_resizes, $always_on_top, $user_trans, $console_wordwrap, $log_location, $job_log_location, $log_append, $job_log_append, $replace_mode, $store_filepaths
global $image_buttons, $magic_butt_icon_index, $dropwin_butt_icon_index, $folder_icon_index, $time_icon_index
global $matof_separator, $log_each_job, $cpu_priority, $short_test_frames, $fallback_folder, $console_output_font
global $console_output_font_size, $custom_buttons_columns, $custom_buttons_font_size, $CBMChecked, $custom_buttons_width, $custom_buttons_height, $do_output, $do_tooltips, $tooltip_time, $drop_command
global $retain_exit_settings, $sort_presets_list, $ffmpeg_binary, $plugins_path, $help_texts, $help_butts, $not_presets, $retain_recent_files
global $GDI_dll, $allowed_image_types, $do_drop_window, $drop_win_image, $drop_win_transparency, $drop_win_image_folder, $fluid_image_menu, $auto_copy_images
global $pre_job_commands_file, $post_job_commands_file, $batch_commands_timeout, $run_commands_with_shell, $post_file_command, $check_run_post_file_command, $run_as_dos
global $ffprobe_loc, $report_format, $report_directory, $report_extension, $report_switches, $nRTChecked, $store_probe_type, $un_escape_output
global $use_mediainfo, $mediainfo_location, $mediainfo_switches, $nDCChecked
global $resize_first = $OFF
global $do_matof = $ON
global $run_pre_job_commands = $UNSET
global $run_post_job_commands = $UNSET
global $run_post_file_command = $UNSET
global $overwrite = $UNSET
global $concatenate = $UNSET
global $quit_when_done = $UNSET
global $shutdown_when_done = $UNSET
global $default_extension = "mkv"
global $kill_ffmpeg_on_exit = $ON
Global Const $iMargin = 4
$CmdLineRaw = StringStripWS($CmdLineRaw, 3)
if $CmdLine[0] then
for $i = 1 to $CmdLine[0]
$CmdLine[$i] = StringStripWS($CmdLine[$i], 3)
next
if StringRight($CmdLineRaw, 1) <> ")" then
$inputfile = StringStripWS($CmdLine[$CmdLine[0]], 3)
for $i = 1 to $CmdLine[0]
if StringStripWS($CmdLine[$i], 3) <> $inputfile then $switches &= " " & StringStripWS($CmdLine[$i], 3)
next
else
$inputfile = ""
for $i = 1 to $CmdLine[0]
$switches &= " " & StringStripWS($CmdLine[$i], 3)
next
endif
endif
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "cli switches: " & $switches & $LOG_LF)
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "specified inputfile: " & $inputfile & $LOG_LF)
if $switches then
$switches = StringStripWS($switches, 3)
if StringLeft($switches, 2) = "go" then
$launch_preset = StringTrimRight(StringMid($switches, 4, -1), 1)
$go = true
elseif StringLeft($switches, 8) = "generate" then
$launch_preset = StringTrimRight(StringMid($switches, 10, -1), 1)
$go = true
$do_gen = true
$do_quit = true
elseif StringLeft($switches, 4) = "load" then
$launch_preset = StringTrimRight(StringMid($switches, 6, -1), 1)
$go = false
elseif StringLeft($switches, 3) = "run" then
$launch_preset = StringTrimRight(StringMid($switches, 5, -1), 1)
$go = true
$do_quit = true
elseif StringLeft($switches, 8) = "shutdown" then
$launch_preset = StringTrimRight(StringMid($switches, 10, -1), 1)
$go = true
$do_shutdown = true
endif
endif
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "launch preset: " & $launch_preset & $LOG_LF)
if $inputfile = "portable" then
$installed_ini = FileInstall(".\stuff\ffe.ini", @ScriptDir & "\" & $ini_path)
$inputfile = ""
endif
if FileExists($ini_path) then
$portable = true
$data_parent = @ScriptDir
$ini_path = $data_parent & "\" & $ini_path
else
if not FileExists($data_parent) then DirCreate($data_parent)
$ini_path = $data_parent & "\" & $ini_path
$installed_ini = FileInstall(".\stuff\ffe.ini", $ini_path)
endif
if not $installed_ini then UpdateIniFile()
if not FileExists($ini_path) then
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): problem with ini ==> " & $ini_path & $LOG_LF)
MsgBox(0, "No ffe.ini found!", "ffe.ini was not found and cound not be created." & $MSG_LF & "ffe will now exit... ", 10)
exit -99
endif
global $allow_multiple = IniReadCheckBoxValue($ini_path, $my_name, "allow_multiple", $OFF)
if $allow_multiple = $OFF then
ce_Singleton($my_name, 1)
if @error = 183 then
WinActivate($my_title)
if $inputfile then ControlSetText($my_title, "", "[CLASS:Edit, $inputfile, 1)
exit 5
endif
endif
GetPrefs()
MakeTray()
SetHotKeys()
MakeGUI()
SetOnTop()
MakeAppMenu()
LoadPreset($launch_preset, true)
if $launch_preset and $go and $inputfile then
DoIt()
else
if $retain_exit_settings = $ON and InArray($presets, $exit_preset) and not ce_IsPressed(10) then
LoadPreset($exit_preset, true)
IniDelete($ini_path, $exit_preset)
ConsoleAdd("previous settings restored")
endif
endif
global $now_time, $on_top_counter
while true
if $delay_start_at then DoIt()
CheckMouse()
$hover = @extended
if $dropwin_visible then
$now_time = TimerDiff ($on_top_counter)
if Mod($now_time, 10000) < 100 then SetDropWinOnTop()
if $hover and not $hovering then
if $gif_method then
_WinAPI_SetLayeredWindowAttributes($GUI_DropWindow, 0x345, $half_trans)
else
SetTransparentBitmap($GUI_DropWindow, $image_handle, $half_trans)
endif
$hovering = true
elseif $hovering and not $hover then
if $gif_method then
_WinAPI_SetLayeredWindowAttributes($GUI_DropWindow, 0x345, $dropwin_trans_real)
else
SetTransparentBitmap($GUI_DropWindow, $image_handle, $dropwin_trans_real)
endif
$hovering = false
endif
endif
if $do_drop_window = $ON and not $dropwin_visible then ShowDropWindow()
Sleep(100)
wend
func DoIt()
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "DoIt() processing: inputfile / outputfile: " & $inputfile & " / " & $outputfile & $LOG_LF)
if ce_IsPressed(10) or $do_gen then $generate_script = true
if $inputfile = "" then
if not BrowseForInputFile() then return
DoIt()
return
endif
if not $outputfile and not IsWild($inputfile) and $do_output = $ON then
if not BrowseForOutputFile() then return
DoIt()
return
endif
$user_inputfile = $inputfile
$user_outputfile = $outputfile
UnSetHotKeys()
ClearOutput()
DisableActiveInputs()
HideOutputButts()
$drop_win_state = $do_drop_window
if $dropwin_visible then CloseDropWindow()
if $delay_start_at then
ConsoleAdd("delayed start activated")
local $d_diff, $h_diff, $m_diff, $t_str, $pl, $ad, $tdiff
local $diff = _DateDiff("s", _NowCalc(), $delay_start_at)
while $diff > 0
if $do_countdown_timer = $ON then
$t_str = ""
$d_diff = _DateDiff("D", _NowCalc(), $delay_start_at)
$pl = ""
if $d_diff > 1 then $pl = "s"
if $d_diff then $t_str = $d_diff & " day" & $pl
$h_diff = _DateDiff("h", _NowCalc(), $delay_start_at)
$pl = ""
$ad = ""
$tdiff = $h_diff-($d_diff*24)
if $tdiff > 1 then $pl = "s"
if $t_str then $ad = ", "
if $tdiff then $t_str &= $ad & $tdiff & " hour" & $pl
$tdiff = ""
$m_diff = _DateDiff("n", _NowCalc(), $delay_start_at)
$pl = ""
$ad = ""
$tdiff = $m_diff-($h_diff*60)
if $tdiff > 1 then $pl = "s"
if $t_str then $ad = ", "
if $tdiff then $t_str &= $ad & $tdiff & " minute" & $pl
$tdiff = ""
$diff = _DateDiff("s", _NowCalc(), $delay_start_at)
$tdiff = $diff-($m_diff*60)
$pl = ""
if $tdiff > 1 then $pl = "s"
if $tdiff then
if $t_str then $t_str &= " and "
$t_str &= $tdiff & " second" & $pl
endif
WinSetTitle($ffeGUI, "", $my_title & " delayed start in " & $t_str)
endif
if not $delay_start_at then return ReturnNow("delayed start aborted", -7)
Sleep(1000)
wend
WinSetTitle($ffeGUI, "", $my_title)
endif
local $job_log, $msg, $generated, $run_command
if FileExists($concat_list) then FileDelete($concat_list)
if $run_pre_job_commands = $ON then
LoadPreCommands()
RunCommandsFile($pre_job_commands_file, $job_log, $generated, "Pre")
Sleep(1000)
endif
local $run_files[2] = [1, $inputfile]
if IsWild($inputfile) then
local $run_parent = GetParent($inputfile)
local $inputfile_extension = GetExtension($inputfile)
local $full_filename = ""
if IsWild(Basename($inputfile)) then $full_filename = Basename($inputfile)
if StringInStr($inputfile, ":) then ; ftp/http
return ReturnNow("error: cannot process wilcards in URLS.", -3)
else
$run_files = ReadDir($run_parent, $inputfile_extension, $full_filename)
endif
if IsArray($run_files) and $run_files[0] > 0 then
for $ra = 1 to $run_files[0]
local $this_fn = $run_parent & "\" & $run_files[$ra]
if IsDir($this_fn) then
$run_files[$ra] = ""
else
$run_files[$ra] = $this_fn
endif
next
else
return ReturnNow($LOG_LF & "error creating batch. sorry.", -1)
endif
endif
local $batch = $OFF
$abort_batch = false
if $run_files[0] > 1 then
$batch = $ON
TrayItemSetState($tray_abort_batch, $TRAY_ENABLE)
endif
redim $made_files[1]
for $runs = 1 to $run_files[0]
if not $run_files[$runs] then continueloop
$inputfile = $run_files[$runs]
DoArgsCreate($batch)
if $inputfile = $outputfile then
if $go then
$outputfile = RemoveExtension($outputfile) & MakeRandomAlphaNumericString(8) & "." & GetExtension($outputfile)
else
MsgBox(0, "file name clash!", "You will need to choose a different output filename.. ", 0, $ffeGUI)
if (BrowseForOutputFile() = 0) then
return ReturnNow($LOG_LF & "error starting job: file name clash.", -2)
endif
DoIt()
return
endif
endif
if InArray($made_files, $outputfile) then
local $old_of = $outputfile
$outputfile = RemoveExtension($outputfile) & MakeRandomAlphaNumericString(8) & "." & GetExtension($outputfile)
$args = StringReplace($args, $old_of, $outputfile)
endif
if $concatenate = $ON and $batch = $ON then
FileWriteLine($concat_list, "file '" & $outputfile & "'")
endif
GUICtrlSetState($label_abort, $GUI_SHOW)
$title_msg_string = $my_title & " [press 'F4' to abort]"
if IsWild(GUICtrlRead($inp_inputfile)) then $title_msg_string = $my_title & " [press pause/break to abort batch]"
WinSetTitle($ffeGUI, "", $title_msg_string)
{F4}", "HK_FFmpegAbort")
HotKeySet("{PAUSE}", "HK_RunningAbortBatch")
HotKeySet("{SCROLLLOCK}", "HK_ProcessPauseSuspend")
$paused = false
$msg = $LOG_LF & "starting ffe job on " & @YEAR & "-" & @MON & "-" & @MDAY & " @ " & @hour & ":" & @min & ":" & @sec & "." & @msec & $LOG_LF & "command-line: " & $args & $LOG_LF & $LOG_LF
DoLog($msg)
$job_log &= $msg
EnvSet("FREI0R_PATH", $plugins_path)
if $generate_script then
$generated &= $args & $LOG_LF
else
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "Run() ffmpeg with args: " & $args & $LOG_LF)
$ffmpeg = Run($args, @ScriptDir, @SW_HIDE, BitOr($STDERR_CHILD, $STDIN_CHILD))
ProcessSetPriority($ffmpeg, $cpu_priority)
local $timestamp = TimerInit()
local $console_out
while true
Sleep(25)
$console_out = StderrRead($ffmpeg)
if @error then exitloop
if $abort_batch then
StdinWrite($ffmpeg, "q")
Sleep(250)
ProcessClose($ffmpeg)
exitloop 2
endif
if not @extended then continueloop
if StringInStr($console_out, "already exists. Overwrite ? [y/N]") then
WinActivate($ffeGUI)
WinSetTitle($ffeGUI, "", $my_title & " [Overwrite existing file? (hit 'y' or 'n')]")
HotKeySet("y", "HK_FFmpegResponseYes")
HotKeySet("n", "HK_FFmpegResponseNo")
endif
$console_out = StringStripWS($console_out, 3)
$job_log &= DoLog(SetConsoleOutput($console_out)) & $LOG_LF
wend
StdioClose($ffmpeg)
$msg = $LOG_LF & "Completed in " & SecondsToDHMS(TimerDiff($timestamp)/1000) & " (" & Round(TimerDiff($timestamp) / 1000, 2) & " seconds)" & $LOG_LF & _
"--------------------------------------------------------------------------------" & $LOG_LF & $LOG_LF & $LOG_LF
DoLog($msg)
$job_log &= $msg
$job_log &= DoLog(SetConsoleOutput($console_out)) & $LOG_LF
endif
movie.srt". The user sets up a batch job and wakes the
if FileExists($outputfile) then
ArrayAdd($made_files, $outputfile)
ArrayAdd($recent_files, $outputfile, true, true)
Recent Files" list in the Tray menu..
MakeTray()
if $run_post_file_command = $ON then
$timeout = false
if $batch_commands_timeout then AdLibRegister("RunCommandsTimeout", $batch_commands_timeout*1000*60)
$run_command = DeTokenize(String($post_file_command))
local $pipe_to=false, $pipe_data=""
if StringInStr($run_command, ">") then
local $run_arr = StringSplit($run_command, ">")
if IsArray($run_arr) and $run_arr[0] = 2 then
$run_command = $run_arr[1]
$pipe_to = StringStripWS(StringReplace($run_arr[2], '"', ""), 3)
$job_log &= DoLog(ConsoleAdd("detected '>' redirection in command. outputting STDIO to file: " & $pipe_to)) & $LOG_LF
endif
endif
$msg = "running post-file command: " & $run_command
$job_log &= DoLog(ConsoleAdd($msg)) & $LOG_LF
local $err
local $command_run = Run($run_command, "", @SW_HIDE, $STDOUT_CHILD)
while true
$err = false
$console_out = StdOutRead($command_run)
$err = @error
$console_out = StringStripWS($console_out, 3)
if $console_out then
if $pipe_to then $pipe_data &= $console_out
$job_log &= DoLog(ConsoleAdd($console_out)) & $LOG_LF
endif
if $err or $timeout then exitloop
Sleep(25)
wend
StdioClose($command_run)
if $pipe_to then FileWrite($pipe_to, $pipe_data)
AdLibUnRegister("RunCommandsTimeout")
endif
endif
next
if $concatenate = $ON and $batch = $ON then
local $write_loc = $ffmpeg_binary
local $write_cat = $concat_list
if $generate_script then
$write_loc = '"' & $ffmpeg_binary & '"'
$write_cat = "ffe-concat-list.txt"
endif
local $ow_args
if $overwrite = $ON then $ow_args &= " -y "
$run_command = $write_loc & " -f concat -i """ & $write_cat & """ " & $ow_args & "-c copy " & $output_dir & "\joined." & $clean_outputfile_ext
if $generate_script then
$generated &= $run_command & $LOG_LF
else
$msg = "Concatenating files.."
$job_log &= DoLog(ConsoleAdd($msg)) & $LOG_LF
$ffmpeg = Run($run_command, @ScriptDir, @SW_HIDE, BitOr($STDERR_CHILD, $STDIN_CHILD, $STDOUT_CHILD))
while true
Sleep(25)
$err = false
$console_out = StderrRead($ffmpeg)
$err = @error
if not @extended then continueloop
if $abort_batch then
Sleep(250)
exitloop
endif
$console_out = StringStripWS($console_out, 3)
$job_log &= DoLog(SetConsoleOutput($console_out)) & $LOG_LF
if $err then exitloop
wend
StdioClose($ffmpeg)
endif
endif
if $run_post_job_commands = $ON then
LoadPostCommands()
RunCommandsFile($post_job_commands_file, $job_log, $generated, "Post")
Sleep(1000)
endif
DoLog("out", $log_append, $LOG_LF & $LOG_LF)
TrayItemSetState($tray_abort_batch, $TRAY_DISABLE)
HotKeySet("{PAUSE}")
HotKeySet("{SCROLLLOCK}")
HotKeySet("{F4}")
HotKeySet("y")
HotKeySet("n")
WinSetTitle($ffeGUI, "", $my_title)
GUICtrlSetState($label_abort, $GUI_HIDE)
SetConsoleOutput($job_log)
ShowOutputButts()
if $log_each_job = $ON and not $generate_script then SaveOutput($job_log)
if $generate_script then
local $save_bat
if $do_gen then
$save_bat = @WorkingDir & "\ffe.bat"
else
local $save_bat_dir = IniRead($ini_path, $my_name, "save_bat_dir", @MyDocumentsDir)
DialogOpen()
$save_bat = FileSaveDialog("Save/Append Batch Script", $save_bat_dir, "All (*.*)|Batch files (*.bat)|Command files (*.cmd)", $FD_PATHMUSTEXIST, "ffe.bat", $ffeGUI)
DialogClose()
if FileExists(GetParent($save_bat)) then IniWrite($ini_path, $my_name, "save_bat_dir", GetParent($save_bat))
endif
if not @error then
local $job_batch_file = FileOpen($save_bat, $FO_APPEND+$FO_UTF8_NOBOM)
FileWrite($job_batch_file, $generated)
FileClose($job_batch_file)
ConsoleAdd($LOG_LF & "saved batch script to: " & $save_bat)
endif
FileMove($concat_list, GetParent($save_bat) & "\ffe-concat-list.txt", $FC_OVERWRITE)
endif
if $do_shutdown or $shutdown_when_done = $ON then
local $shutdown_response
if not $do_shutdown then
DialogOpen()
$shutdown_response = MsgBox(1, "ffe will now shutdown your computer..", _
"As instructed, ffe will now shutdown your computer. " & $MSG_LF & $MSG_LF & _
"To abort the shutdown process, click [Cancel] within the next 60 seconds." & $MSG_LF & $MSG_LF & _
"Click [OK] to shutdown immediately.", 60, $ffeGUI)
DialogClose()
else
$shutdown_response = 1
endif
if $shutdown_response = 1 or $shutdown_response = -1 then
Shutdown(BitOr($SD_SHUTDOWN, $SD_POWERDOWN))
DoQuit()
endif
elseif $do_quit or $quit_when_done = $ON then
local $quit_response
if not $do_quit then
DialogOpen()
$quit_response = MsgBox(1, "ffe will now quit..", _
"As instructed, ffe will now quit. " & $MSG_LF & $MSG_LF & _
"To abort, click [Cancel] within the next 10 seconds.", 10, $ffeGUI)
DialogClose()
else
$quit_response = 1
endif
if $quit_response = 1 or $quit_response = -1 then
DoQuit()
endif
endif
$do_drop_window = $drop_win_state
EnableActiveInputs()
UpdateInput()
SetHotKeys()
GUICtrlSetState($edit_console_output, $GUI_FOCUS)
if $delay_start_at then
TrayItemSetState($tray_toggle_delayed_start, $OFF)
$delay_start_at = false
ConsoleAdd("Delayed Job Complete (like you can see this!)")
endif
endfunc
func GetPrefs($current_section=$my_name)
$presets = IniReadSectionNames($ini_path)
$x = Int(IniRead($ini_path, $my_name, "x", -1))
$y = Int(IniRead($ini_path, $my_name, "y", -1))
$width = Int(IniRead($ini_path, $my_name, "width", 935))
if $width < $min_width then $width = $min_width
$height = Int(IniRead($ini_path, $my_name, "height", 590))
if $height < $min_height then $height = $min_height
$minimized = IniReadCheckBoxValue($ini_path, $my_name, "minimized", $OFF)
$maximized = IniReadCheckBoxValue($ini_path, $my_name, "maximized", $OFF)
$start_minimized = IniReadCheckBoxValue($ini_path, $my_name, "start_minimized", $OFF)
if $start_minimized = $ON then $minimized = $ON
if $minimized = $ON and $maximized = $ON then $maximized = SwitchBool($maximized)
$always_on_top = IniReadCheckBoxValue($ini_path, $my_name, "always_on_top", $OFF)
$user_trans = IniRead($ini_path, $my_name, "transparency", 0)
$do_output = IniReadCheckBoxValue($ini_path, $my_name, "do_output", $ON)
$do_tooltips = IniReadCheckBoxValue($ini_path, $my_name, "do_tooltips", $ON)
$tooltip_time = IniRead($ini_path, $my_name, "tooltip_time", 10000)
local $tip_icon_res = IniRead($ini_path, $my_name, "tip_icon_res", $me_app)
if not $tip_icon_res then $tip_icon_res = $me_app
$tip_icon_index = IniRead($ini_path, $my_name, "tip_icon_index", 0)
if not $tip_icon_index then $tip_icon_index = 0
$tip_icon = $me_app & "," & $tip_icon_index
local $system_tip_icon = IniRead($ini_path, $my_name, "system_tip_icon", "")
if $system_tip_icon and $system_tip_icon >= 0 and $system_tip_icon < 7 then $tip_icon = $system_tip_icon
$tip_style = IniRead($ini_path, $my_name, "tip_style", 1)
$sort_presets_list = IniReadCheckBoxValue($ini_path, $my_name, "sort_presets_list", $ON)
$image_buttons = IniReadCheckBoxValue($ini_path, $my_name, "image_buttons", $ON)
$replace_mode = IniReadCheckBoxValue($ini_path, $my_name, "replace_mode", $ON)
$store_filepaths = IniReadCheckBoxValue($ini_path, $my_name, "store_filepaths", $OFF, true)
$console_wordwrap = IniReadCheckBoxValue($ini_path, $my_name, "console_wordwrap", $OFF)
$drop_command = IniRead($ini_path, $my_name, "drop_command", "")
$retain_exit_settings = IniReadCheckBoxValue($ini_path, $my_name, "retain_exit_settings", $ON)
$do_countdown_timer = IniReadCheckBoxValue($ini_path, $my_name, "do_countdown_timer", $ON)
$custom_buttons_columns = IniRead($ini_path, $my_name, "custom_buttons_columns", "auto")
if $custom_buttons_columns = "auto" then
$CBMChecked = 501
else
if $custom_buttons_columns and $custom_buttons_columns < 0 then $custom_buttons_columns = 0
$CBMChecked = $custom_buttons_columns
endif
$custom_buttons_width = int(IniRead($ini_path, $my_name, "custom_buttons_width", 75))
if $custom_buttons_width and ($custom_buttons_width < 8 or $custom_buttons_width > 150) then $custom_buttons_width = 75
$custom_buttons_height = int(IniRead($ini_path, $my_name, "custom_buttons_height", 27))
$buttons_y_shunt = int(IniRead($ini_path, $my_name, "buttons_y_shunt", 11))
$button_spacing = int(IniRead($ini_path, $my_name, "button_spacing", 3))
$custom_buttons_font_size = Round(IniRead($ini_path, $my_name, "custom_buttons_font_size", 9), 2)
LoadCustomButtonData()
$log_append = IniReadCheckBoxValue($ini_path, $my_name, "log_append", $OFF)
$job_log_append = IniReadCheckBoxValue($ini_path, $my_name, "job_log_append", $OFF)
$log_each_job = IniReadCheckBoxValue($ini_path, $my_name, "log_each_job", $ON)
GetLogLocation()
$job_log_location = DeTokenize(IniRead($ini_path, $my_name, "job_log_location", "@datadir\logs"))
$i = DeTokenize(IniRead($ini_path, $my_name, "ffmpeg_binary", ""))
if FileExists($i) then
$ffmpeg_binary = $i
else
SetFFMpegBinaryLocation()
endif
GetReportingValues()
$plugins_path = DeTokenize(IniRead($ini_path, $my_name, "plugins_path", ""))
if (not $plugins_path) and FileExists($ffmpeg_binary) then
$plugins_path = GetParent($ffmpeg_binary) & "\plugins"
IniWrite($ini_path, $my_name, "plugins_path", TokenizeString($plugins_path))
endif
$help_texts = IniRead($ini_path, $my_name, "help_texts", "Main|help.nfo|-h,Formats|help-formats.nfo|-formats,Filters|help-filters.nfo|-filters,Codecs|help-codecs.nfo|-codecs,Full|help-full.nfo|-h full")
if StringInStr($help_texts, "|") then
$help_texts = StringSplit($help_texts, ",")
global $help_butts[$help_texts[0]+1] = [$help_texts[0]]
else
$help_texts = ""
endif
$not_presets = IniRead($ini_path, $my_name, "not_presets", $my_name & "," & $NAME_BUTTONS & "," & $exit_preset)
if not $not_presets then $not_presets = $my_name & "," & $NAME_BUTTONS & "," & $exit_preset
$not_presets = StringSplit($not_presets, ",")
$magic_butt_icon_index = IniRead($ini_path, $my_name, "magic_butt_icon_index", -6)
$dropwin_butt_icon_index = IniRead($ini_path, $my_name, "dropwin_butt_icon_index", -13)
$folder_icon_index = IniRead($ini_path, $my_name, "folder_icon_index", -5)
$time_icon_index = IniRead($ini_path, $my_name, "time_icon_index", -11)
$matof_separator = IniRead($ini_path, $my_name, "matof_separator", " ")
if $matof_separator = "" then $matof_separator = " "
$cpu_priority = int(IniRead($ini_path, $my_name, "cpu_priority", 2))
if $cpu_priority < 0 or $cpu_priority > 5 then $cpu_priority = 2
$nCPUChecked = $cpu_priority
$video_codecs = IniRead($ini_path, $current_section, "video_codecs", "||copy|a64multi|a64multi5|alias_pix|amv|apng|asv1|asv2|avrp|avui|ayuv|bmp|libxavs|cinepak|cljr|libschroedinger|dnxhd|dpx|dvvideo|ffv1|ffvhuff|flashsv|flashsv2|flv|gif|h261|h263|h263p|libx264|libx264rgb|libx265|huffyuv|jpeg2000|libopenjpeg|jpegls|ljpeg|mjpeg|mpeg1video|mpeg2video|mpeg4|libxvid|msmpeg4v2|msmpeg4|msvideo1|pam|pbm|pcx|pgm|pgmyuv|png|ppm|prores|prores_aw|prores_ks|qtrle|r10k|r210|rawvideo|roqvideo|rv10|rv20|sgi|snow|sunrast|svq1|targa|libtheora|tiff|utvideo|v210|v308|v408|v410|libvpx|libvpx-vp9|libwebp|wmv1|wmv2|xbm|xface|xwd|y41p|yuv4|- disable video -")
$audio_codecs = IniRead($ini_path, $current_section, "audio_codecs", "||copy|aac|libvo_aacenc|ac3|ac3_fixed|adpcm_adx|g722|g726|adpcm_ima_qt|adpcm_ima_wav|adpcm_ms|adpcm_swf|adpcm_yamaha|alac|libopencore_amrnb|libvo_amrwbenc|comfortnoise|dca|eac3|flac|g723_1|libgsm|libgsm_ms|libilbc|mp2|mp2fixed|libtwolame|libmp3lame|nellymoser|libopus|pcm_alaw|pcm_f32be|pcm_f32le|pcm_f64be|pcm_f64le|pcm_mulaw|pcm_s16be|pcm_s16be_planar|pcm_s16le|pcm_s16le_planar|pcm_s24be|pcm_s24daud|pcm_s24le|pcm_s24le_planar|pcm_s32be|pcm_s32le|pcm_s32le_planar|pcm_s8|pcm_s8_planar|pcm_u16be|pcm_u16le|pcm_u24be|pcm_u24le|pcm_u32be|pcm_u32le|pcm_u8|real_144|roq_dpcm|s302m|sonic|sonicls|libspeex|tta|vorbis|libvorbis|wavpack|libwavpack|wmav1|wmav2|- disable audio -")
$file_types = IniRead($ini_path, $current_section, "file_types", "All (*.*)|Audio Files (*.mp3)
$video_bitrates = IniRead($ini_path, $current_section, "video_bitrates", "||360k|512k|640k|768k|1000k|1200k|1600k|1800k|2000k|4000k|8000K|16000K|32000K|64000K")
$audio_bitrates = IniRead($ini_path, $current_section, "audio_bitrates", "||32k|48k|56k|64k|80k|96k|112k|128k|160k|192k|256k|320k|480k")
$frames_per_second = IniRead($ini_path, $current_section, "frames_per_second", "||12|15|20|23.976|24|25|29.97|30|50|60")
$target_types = IniRead($ini_path, $current_section, "target_types", "||pal-vcd|dvd|ntsc-svcd|vcd|svcd|dv|dv50")
$preset_resizes = IniRead($ini_path, $current_section, "preset_resizes", "||sqcif|qcif|cif|4cif|qqvga|qvga|vga|svga|xga|uxga|qxga|sxga|qsxga|hsxga|wvga|wxga|wsxga|wuxga|woxga|wqsxga|wquxga|whsxga|whuxga|cga|ega|hd480|hd720|hd1080")
$console_output_font = IniRead($ini_path, $current_section, "console_output_font", "Lucida Console")
$console_output_font_size = IniRead($ini_path, $current_section, "console_output_font_size", 9)
$short_test_frames = IniRead($ini_path, $current_section, "short_test_frames", 1000)
$fallback_folder = DeTokenize(IniRead($ini_path, $current_section, "fallback_folder", "@parent"))
$resize_first = IniReadCheckBoxValue($ini_path, $current_section, "resize_first", $resize_first)
$do_matof = IniReadCheckBoxValue($ini_path, $current_section, "do_matof", $do_matof)
$run_pre_job_commands = IniReadCheckBoxValue($ini_path, $current_section, "run_pre_job_commands", $run_pre_job_commands, true)
$run_post_job_commands = IniReadCheckBoxValue($ini_path, $current_section, "run_post_job_commands", $run_post_job_commands, true)
$run_post_file_command = IniReadCheckBoxValue($ini_path, $current_section, "run_post_file_command", $run_post_file_command, true)
$post_file_command = IniRead($ini_path, $current_section, "post_file_command", "")
$overwrite = IniReadCheckBoxValue($ini_path, $current_section, "overwrite", $overwrite, true)
$concatenate = IniReadCheckBoxValue($ini_path, $current_section, "concatenate", $concatenate, true)
$quit_when_done = IniReadCheckBoxValue($ini_path, $current_section, "quit_when_done", $quit_when_done, true)
$shutdown_when_done = IniReadCheckBoxValue($ini_path, $current_section, "shutdown_when_done", $shutdown_when_done, true)
$default_extension = IniRead($ini_path, $current_section, "default_extension", $default_extension)
$kill_ffmpeg_on_exit = IniReadCheckBoxValue($ini_path, $current_section, "kill_ffmpeg_on_exit", $kill_ffmpeg_on_exit)
$do_drop_window = IniReadCheckBoxValue($ini_path, $my_name, "do_drop_window", $ON)
GetDropWinImage()
GetDropWinImageFolder()
$drop_win_transparency = IniRead($ini_path, $current_section, "drop_win_transparency", 0)
GetRealTrans()
$allowed_image_types = IniRead($ini_path, $current_section, "allowed_image_types", "bmp,png,ico,emf,wmf")
if $allowed_image_types = "*" then $allowed_image_types = "bmp,png,ico,emf,wmf,jpg,jpeg,gif,tif,tiff"
$allowed_image_types = "," & $allowed_image_types & ","
$fluid_image_menu = IniReadCheckBoxValue($ini_path, $my_name, "fluid_image_menu", $OFF)
$auto_copy_images = IniReadCheckBoxValue($ini_path, $my_name, "auto_copy_images", $ON)
$GDI_dll = IniRead($ini_path, $my_name, "GDI_dll", "gdiplus.dll")
endfunc
func MakeGUI()
local $tip, $ttt, $column_two = 590
if ($width / 2) > $column_two then $column_two = ($width / 2)
AutoItSetOption("GUICoordMode", 0)
$ffeGUI = GUICreate($my_title, $width, $height, $x, $y, BitOr($WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_CAPTION, $WS_POPUP), $WS_EX_ACCEPTFILES)
GUISetIcon($me_app, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, "User_DoQuit")
GUISetOnEvent($GUI_EVENT_RESIZED, "ResizeSaveXYPrefs")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "ToggleWindow")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "ToggleMaximizeWindow")
GUISetOnEvent($GUI_EVENT_RESTORE, "ToggleMaximizeWindow")
GUISetOnEvent($GUI_EVENT_PRIMARYUP, "PrimaryUpCheckSize")
GUISetOnEvent($GUI_EVENT_DROPPED, "GetDroppedItem")
GUIRegisterMsg($WM_COMMAND, "CheckFocus")
GUISetCoord(10, 12)
$lab_inputfile = GUICtrlCreateLabel("input:", 0, 0, 36)
$ttt = "Input File(s)"
$tip = "Enter the full path to the input file (or just drag it in). "
GUICtrlSetTipOptional(-1, $tip & $MSG_LF & "Click here to view the source file directory. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "OpenSourceDir")
$inp_inputfile = GUICtrlCreateInput($inputfile, 40, 0, $width-110, 18)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "UpdateInput")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
if $image_buttons = $ON then
$check_do_drop_window = GUICtrlCreateCheckbox("", $width-103, -1, 20, 20, BitOr($BS_AUTOCHECKBOX, $BS_PUSHLIKE, $BS_ICON))
if @compiled then
GUICtrlSetImage(-1,$me_app, $dropwin_butt_icon_index, 0)
else
GUICtrlSetImage(-1, ".\icons\target.ico", -1, 0)
endif
else
$check_do_drop_window = GUICtrlCreateCheckbox("ꙩ", $width-103, 0, 20, 20, BitOr($BS_AUTOCHECKBOX, $BS_PUSHLIKE))
endif
GUICtrlSetTipOptional(-1, "Opens a shaped (with the right image), transparent window you can use to drop files into. " & $MSG_LF & _
"It behaves just like your regular input file input, files are queued up or processed with your" & $MSG_LF & _
"current 'Drag-And-Drop Command'. Also use it to set the location of your ffmpeg binary.", "Floating Drop Window (F9)")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ClickToggleDropWindow")
GUICtrlSetState(-1, $do_drop_window)
if $image_buttons = $ON then
GUICtrlCreateButton("...", 24, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT,$BS_ICON))
if @compiled then
GUICtrlSetImage(-1,$me_app, $folder_icon_index, 0)
else
GUICtrlSetImage(-1, ".\icons\document-outline.ico", -1, 0)
endif
else
GUICtrlCreateButton("...", $width-79, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT))
endif
GUICtrlSetTipOptional(-1, "Browse to locate the input file.", $ttt)
GUICtrlSetOnEvent(-1, "BrowseForInputFile")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUISetCoord(10, 39)
$ttt = "Output File(s)"
GUICtrlCreateLabel("output: ", 0, 0, 36)
$tip = "Enter the full path to the output file (or drag in a file or folder)."
GUICtrlSetTipOptional(-1, $tip & $MSG_LF & _
"NOTE: you can click this label to disable output altogether," & $MSG_LF & _
"e.g. for creating image sequences (enter your output directly" & $MSG_LF & _
"into the extra agruments input)." & $MSG_LF & $MSG_LF & _
"NOTE, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ToggleOutput")
$inp_outputfile = GUICtrlCreateInput($outputfile, 40, 0, $width-110, 18)
GUICtrlSetTipOptional(-1, $tip & $MSG_LF & "NOTE: As soon as you click inside here, MATOF is disabled. ", $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
if $image_buttons = $ON then
$check_do_matof = GUICtrlCreateCheckbox("", $width-103, -1, 20, 20, BitOr($BS_AUTOCHECKBOX, $BS_PUSHLIKE, $BS_ICON))
if @compiled then
GUICtrlSetImage(-1,$me_app, $magic_butt_icon_index, 0)
else
GUICtrlSetImage(-1, ".\icons\magic-wand.ico", -1, 0)
endif
else
$check_do_matof = GUICtrlCreateCheckbox("!!!", $width-103, 0, 20, 20, BitOr($BS_AUTOCHECKBOX, $BS_PUSHLIKE))
endif
GUICtrlSetTipOptional(-1, "Magic Auto-Transforming Output Filename (MATOF!) (Ctrl+M)" & $MSG_LF & $MSG_LF & _
"Check this to have the output file automatically transformed when " & $MSG_LF & _
"you change stuff below (handy for doing lots of quick tests). "& $MSG_LF & $MSG_LF & _
"NOTE: When you are running a batch, you cannot disable this. ", "MATOF!")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $do_matof)
GUICtrlSetOnEvent(-1, "ClickToggleMatofStatus")
if $image_buttons = $ON then
GUICtrlCreateButton("...", 24, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT,$BS_ICON))
if @compiled then
GUICtrlSetImage(-1,$me_app, $folder_icon_index, 0)
else
GUICtrlSetImage(-1, ".\icons\document-outline.ico", -1, 0)
endif
else
GUICtrlCreateButton("...", 24, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT))
endif
GUICtrlSetTipOptional(-1, "Browse to specify the output file. ", $ttt)
GUICtrlSetOnEvent(-1, "BrowseForOutputFile")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUISetCoord(10, 62)
GUICtrlCreateLabel("", 0, 0, $column_two-18, 14, 0, 0)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "These options are always inherited, or not, from the chosen preset. They can be Enabled, Disabled, or Unset." & $MSG_LF & _
"Unless an option is specifically set (on/off) in a preset, the old setting will be in effect.", "ffe job controls")
GUISetCoord(10, 62)
GUICtrlCreateGroup("ffe job.. ", 0, 0, $column_two-18, 35)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
$ttt = "Pre-Job Commands"
$check_run_pre_job_commands = GUICtrlCreateCheckbox(" pre-job-commands ", 6, 13, 105, 18, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "Before the job runs, run your specified pre-job commands batch file? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetPreJobCommands")
GUICtrlSetState(-1, $run_pre_job_commands)
local $menu_check_run_pre_job_commands = GUICtrlCreateContextMenu($check_run_pre_job_commands)
GUICtrlCreateMenuItem("Specify New Pre-Job Commands File..", $menu_check_run_pre_job_commands)
GUICtrlSetOnEvent(-1, "SpecifyPreJobCommandsFile")
$ttt = "Post-File Commands"
$check_run_post_file_command = GUICtrlCreateCheckbox(" post-file-command ", 112, 0, 110, 18, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "After each file is processed, run your specified post-file command. " & $MSG_LF & "Right-click the control for edit options.", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetPostFileCommand")
GUICtrlSetState(-1, $run_post_file_command)
local $menu_check_run_post_file_command = GUICtrlCreateContextMenu($check_run_post_file_command)
GUICtrlCreateMenuItem("Edit The Post-File Command..", $menu_check_run_post_file_command)
GUICtrlSetOnEvent(-1, "SpecifyPostFileCommand")
$ttt = "Post-Job Commands"
$check_run_post_job_commands = GUICtrlCreateCheckbox(" post-job-commands ", 117, 0, 110, 18, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "After the job runs, run your specified post-job commands batch file? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetPostJobCommands")
GUICtrlSetState(-1, $run_post_job_commands)
local $menu_check_run_post_job_commands = GUICtrlCreateContextMenu($check_run_post_job_commands)
GUICtrlCreateMenuItem("Specify New Post-Job Commands File..", $menu_check_run_post_job_commands)
GUICtrlSetOnEvent(-1, "SpecifyPostJobCommandsFile")
$ttt = "Overwrite"
$check_overwrite = GUICtrlCreateCheckbox(" overwrite ", 115, 0, 62, 20, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "Should ffe tell ffmpeg to overwrite existing files? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetOverwrite")
GUICtrlSetState(-1, $overwrite)
$check_concatenate = GUICtrlCreateCheckbox(" join ", 70, 0, 34, 20, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "During batch operations, should ffe tell ffmpeg to join the output files together? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetConcatenateFiles")
GUICtrlSetState(-1, $concatenate)
$ttt = "Quit When Done"
$check_quit_when_done = GUICtrlCreateCheckbox(" quit ", 40, 0, 36, 20, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "Should ffe quit when the job is complete? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetQuitWhenDone")
GUICtrlSetState(-1, $quit_when_done)
$ttt = "Shutdown PC When Done"
$check_shutdown_when_done = GUICtrlCreateCheckbox(" shutdown ", 40, 0, 64, 20, BitOr($BS_AUTO3STATE,$BS_RIGHTBUTTON))
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetTipOptional(-1, "Should ffe shutdown your computer when the job is complete? ", $ttt)
GUICtrlSetOnEvent(-1, "ClickSetShutdownWhenDone")
GUICtrlSetState(-1, $shutdown_when_done)
ShutDownOverrideQuit()
GUISetCoord(10, 97)
$ttt = "Input Parameter Override"
GUICtrlCreateGroup("input parameter override.. ", 0, 0, $column_two-18, 39)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$tip = "If you need to specify special parameters for the input file, do that here. " & $MSG_LF & _
"This is the place where you would find an SRT file, for example." & $MSG_LF & $MSG_LF & _
"NOTE: these parameters will usually override output parameters, forcing " & $MSG_LF & _
"whatever you specify, here." & $MSG_LF & $MSG_LF & _
"DON'T FORGET to put '-i' in front of, and ""quotes"" around any file " & $MSG_LF & _
"paths you put/drop here!" & $MSG_LF & $MSG_LF & _
"AND, that THIS section goes BEFORE the INPUT (above) in the " & $MSG_LF & _
"arguments (so -map FIRST!) " & $MSG_LF & $MSG_LF & _
"NOTE: This input accepts @tokens."
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_input_params = GUICtrlCreateInput("", 5, 15, $column_two-76, 20)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetFont(-1, $console_output_font_size, 400, 0, $console_output_font, 5)
$ttt = "Quick Add-A-File Button"
$butt_add_file_arg_to_input_params = GUICtrlCreateButton("+", $column_two-72, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT,$BS_CENTER,$BS_VCENTER))
GUICtrlSetTipOptional(-1, "Clicking here adds '-i """"' to the input override and places the caret inbetween the two quotes. " & $MSG_LF & _
"Then you can drag a file directly into the input parameter override input and it's ready-to-go. " & $MSG_LF & $MSG_LF & _
"Note: The addition is always at the end, so you can easily perform this action multiple times.", $ttt)
GUICtrlSetOnEvent(-1, "AddInputOverrideFileArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Delete"
GUICtrlCreateButton(" x", 24, 0, 20, 20, BitOr($WS_TABSTOP,$BS_FLAT,$BS_CENTER,$BS_VCENTER))
GUICtrlSetTipOptional(-1, "Click here to wipe the current input override parameters. ", $ttt)
GUICtrlSetOnEvent(-1, "DelInputOverrideFileArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$tip = "Select a preset from the list. The selected preset can either add to" & $MSG_LF & _
"or replace the current settings NOTE: once selected, you can use " & $MSG_LF & _
"your arrow keys to navigate this combo control. " & $MSG_LF & _
"(right-click the combo's chevron for a context menu) "
GUISetCoord($column_two, 62)
GUICtrlCreateLabel("", 0, 0, $column_two-12, 20, 0, 0)
GUICtrlSetTipOptional(-1, $tip, $NAME_PRESETS)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUISetCoord($column_two, 62)
GUICtrlCreateLabel("", 0, 0, 10, 42, 0, 0)
GUICtrlSetTipOptional(-1, $tip, $NAME_PRESETS)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUISetCoord($column_two, 103)
GUICtrlCreateLabel("", 0, 0, $column_two-12, 8, 0, 0)
GUICtrlSetTipOptional(-1, $tip, $NAME_PRESETS)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
$ttt = $NAME_PRESETS
GUISetCoord($column_two, 62)
GUICtrlCreateGroup(StringLower($NAME_PRESETS) & ".. ", 0, 0, ($width-$column_two)-10, 74)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
local $combo_styles = BitOr($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL)
if $sort_presets_list = $ON then $combo_styles = BitOr($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL)
$combo_presets = GUICtrlCreateCombo("", 10, 20, ($width-$column_two)-120, default, $combo_styles)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "ComboLoadPreset")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_DROPACCEPTED+$GUI_ONTOP)
UpdatePresetsCombo()
local $ctxt_combo = GUICtrlCreateContextMenu($combo_presets)
GUICtrlCreateMenuItem("Rename Preset", $ctxt_combo)
GUICtrlSetOnEvent(-1, "MenuRenamePreset")
GUICtrlCreateMenuItem("Refresh List", $ctxt_combo)
GUICtrlSetOnEvent(-1, "MenuRefreshPresetsList")
GUICtrlCreateMenuItem("", $ctxt_combo)
GUICtrlCreateMenuItem("Export Data", $ctxt_combo)
GUICtrlSetOnEvent(-1, "MenuExportData")
GUICtrlCreateMenuItem("Import Data", $ctxt_combo)
GUICtrlSetOnEvent(-1, "ComboMenuImportData")
GUICtrlCreateMenuItem("", $ctxt_combo)
GUICtrlCreateMenuItem("Wipe All Preset Backups", $ctxt_combo)
GUICtrlSetOnEvent(-1, "WipeBackups")
$ttt = "Save A Preset"
GUICtrlCreateButton("save", ($width-$column_two)-115, 0, 42, 22, BitOr($WS_TABSTOP,$BS_FLAT), $WS_EX_TOPMOST)
GUICtrlSetTipOptional(-1, "Save these settings as a preset (aka. 'favourite settings') " & $MSG_LF & _
"NOTE: when overwriting an existing preset, hold down " & $MSG_LF & _
"the <SHIFT> key to skip the warning. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ButtSavePreset")
$ttt = "Wipe A Preset"
GUICtrlCreateButton("wipe", 46 , 0, 42, 22, BitOr($WS_TABSTOP,$BS_FLAT), $WS_EX_TOPMOST)
GUICtrlSetTipOptional(-1, "Remove this preset from the list. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "WipePreset")
GUICtrlCreateLabel(StringLower($NAME_PRESETS) & "..", 70-($width-$column_two), 31, default, 18, BitOr($WS_TABSTOP,$BS_FLAT), $WS_EX_TOPMOST)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Replace Settings"
$radio_preset_replace = GUICtrlCreateRadio("replace", 47, -2, default, 18, -1)
GUICtrlSetTipOptional(-1, "The selected preset will replace all the current settings with settings from the new preset. " & $MSG_LF & _
"If your current preset specifies ' -scodec copy', and you load a preset specifying " & $MSG_LF & _
"'-metadata:s:s:0 language=eng', the extra parameters input would now contain both.", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "TogglePresetMode")
GUICtrlSetState(-1, $replace_mode)
$ttt = "Add To Settings"
GUICtrlCreateRadio("add to", 60, 0, default, 18, -1)
GUICtrlSetTipOptional(-1, "The selected preset will ADD to all the current settings. " & $MSG_LF & "This applies to all the visible settings that can be" & $MSG_LF & " 'added to', $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "TogglePresetMode")
if $replace_mode = $OFF then GUICtrlSetState(-1, $ON)
GUICtrlCreateLabel("..my settings.", 54, 2, default, 18, -1, $WS_EX_TOPMOST)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Save/Restore File Paths"
$check_store_filepaths = GUICtrlCreateCheckbox("with file paths", ($width-$column_two)-276, -1, default, 18, -1, $WS_EX_TOPMOST)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ToggleStorePaths")
GUICtrlSetTipOptional(-1, "Store the full path of the input and output files inside the preset " & $MSG_LF & _
"and (usually) restore those file paths along with the preset. ", $ttt)
if $store_filepaths <> $GUI_INDETERMINATE then
GUICtrlSetState(-1, $store_filepaths)
else
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetTipOptional(-1, "This feature is disabled inside ffe.ini.", $ttt)
endif
local $out_top = 66
local $out_left = 10
GUISetCoord(10, 137)
GUICtrlCreateGroup(" output parameter override.. ", 0, 0, $width-20, 150)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
$ttt = "Video Codec"
$tip = "Override the output video codec here. " & $MSG_LF & "Select a preset codec from the list, " & $MSG_LF & "or enter one manually. "
GUICtrlCreateLabel("video codec: ", 6, 18)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_v_codec = GUICtrlCreateCombo($v_codec, -1, 16, 128, default, BitOr($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $video_codecs)
AutoItSetOption("GUICoordMode", 1)
$ttt = "Video Bitrate"
$tip = "Override the output video bitrate(bits/s). " & $MSG_LF & "Select a preset, or enter manually. "
GUICtrlCreateLabel("bitrate: ", $out_left+142, $out_top+90)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_v_bitrate = GUICtrlCreateCombo("", $out_left+142, $out_top+106, 42, default)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $video_bitrates)
$ttt = "Video FPS"
$tip = "Override the output video fps (frames per second). " & $MSG_LF & "Select a preset bitrate from the list, or enter one " & $MSG_LF & "manually. "
GUICtrlCreateLabel("fps: ", $out_left+194, $out_top+90)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_frames_per_second = GUICtrlCreateCombo("", $out_left+194, $out_top+106, 42, default)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $frames_per_second)
$ttt = "Cropping"
$tip = "Crop the video.."
GUICtrlCreateLabel("crop the video.. ", $out_left+241, $out_top+90)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_crop_top = GUICtrlCreateInput("", $out_left+275, $out_top+106, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, "Crop the TOP of the video.", $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_crop_right = GUICtrlCreateInput("", $out_left+309, $out_top+127, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, "Crop the RIGHT side of the video.", $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_crop_bottom = GUICtrlCreateInput("", $out_left+275, $out_top+148, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, "Crop the BOTTOM of the video.", $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_crop_left = GUICtrlCreateInput("", $out_left+242, $out_top+127, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, "Crop the LEFT side of the video.", $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Resizing"
$tip = "Rescale the video width. "
GUICtrlCreateLabel("resize x: ", $out_left+350, $out_top+90)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_x_size = GUICtrlCreateInput("", $out_left+350, $out_top+106, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlCreateLabel("x", $out_left+389, $out_top+108)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$ttt = "Rescaling"
$tip = "Rescale the video height. "
GUICtrlCreateLabel("resize y: ", $out_left+400, $out_top+90)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_y_size = GUICtrlCreateInput("", $out_left+400, $out_top+106, 33, 20, $ES_NUMBER)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Preset Sizes"
$tip = ".. or you can select a named preset size from the list (if you know what they mean!) " & $MSG_LF & "Note: this will override the manual settings (above) "
GUICtrlCreateLabel("preset sizes: ", $out_left+350, $out_top+132)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_preset_resizes = GUICtrlCreateCombo($resize_preset, $out_left+350, $out_top+148, 64, default)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $preset_resizes)
$ttt = "Resize-Crop Order"
$check_resize_first = GUICtrlCreateCheckbox("resize first", $out_left+260, $out_top+169)
GUICtrlSetTipOptional(-1, "Check this to resize the video BEFORE the cropping operation (it depends on how your logic goes).." & $MSG_LF & _
"The order of things affects the dimensions. You might crop THEN resize, or the reverse... ", $ttt)
GUICtrlSetonEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetState($check_resize_first, $resize_first)
$ttt = "Audio Codec"
$tip = "Override the output audio codec here " & $MSG_LF & "Select a preset codec from the list, or " & $MSG_LF & "enter one manually. "
GUICtrlCreateLabel("audio codec: ", $out_left+6, $out_top+132)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_a_codec = GUICtrlCreateCombo($a_codec, $out_left+5, $out_top+148, 128, default, BitOr($CBS_SORT, $CBS_DROPDOWN, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $audio_codecs)
$ttt = "Audio Bitrate"
$tip = "Override the output audio bitrate (Hz). " & $MSG_LF & "Select a preset bitrate from the list, or " & $MSG_LF & "enter one manually. "
GUICtrlCreateLabel("bitrate: ", $out_left+142, $out_top+132)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_a_bitrate = GUICtrlCreateCombo("", $out_left+142, $out_top+148, 42, default)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetData(-1, $audio_bitrates)
$ttt = "Quick Targets"
$tip = "Allow ffmpeg to automatically set all the options for THIS file type. " & $MSG_LF & _
"You can also override individual parameters manually, so long as " & $MSG_LF & "they are compatible with the target file type. "
GUICtrlCreateLabel("quick config types: ", $out_left+5, $out_top+174)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$combo_target_type = GUICtrlCreateCombo("", $out_left+6, $out_top+190, 128, default)
GUICtrlSetData(-1, $target_types)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Extra Raw Parameters"
$tip ="Feel free to add any other command-line parameters you might need right here. " & $MSG_LF & _
"The possibilities are almost infinite! Check the manual! " & $MSG_LF & $MSG_LF & _
"NOTE: This input accepts @tokens."
GUICtrlCreateLabel("extra parameters.. ", $out_left+142, $out_top+174)
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$inp_extra_args = GUICtrlCreateInput("", $out_left+141, $out_top+190, $width-168, 21)
GUICtrlSetTipOptional(-1, $tip & $MSG_LF, $ttt)
GUICtrlSetOnEvent(-1, "AutoCreateArgs")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetFont(-1, $console_output_font_size, 400, 0, $console_output_font, 5)
$ttt = "Reset ALL Parameters"
GUICtrlCreateButton("reset", $out_left+$width-65, $out_top+84, 40, 20, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Click this button to reset all the parameters", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ClickButtWipeSettings")
$ttt = "Add Quick Test Parameters"
$butt_quicktest = GUICtrlCreateButton("short test", $out_left+$width-85, $out_top+105, 60, 22, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Adds some parameters to process only the first " & $short_test_frames & " frames of video. " & $MSG_LF & _
"Feel free to edit this number! (hold SHIFT key while you click to do this first). ", $ttt)
GUICtrlSetonEvent(-1, "AddShortTestParam")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
local $ctxt_short_test = GUICtrlCreateContextMenu($butt_quicktest)
GUICtrlCreateMenuItem("Edit Short Test Frames", $ctxt_short_test)
GUICtrlSetOnEvent(-1, "UserEditShortTestParams")
$ttt = "Create A Media Report"
$butt_mediareport = GUICtrlCreateButton("media report", $out_left+$width-105, $out_top+128, 80, 22, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Use ffprobe or MediaInfo to generate a media report for your input file " & $MSG_LF & "The report will appear in your console output area ", $ttt)
GUICtrlSetonEvent(-1, "GenerateReport")
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
CreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
if IsArray($help_texts) then
$lab_help_info = GUICtrlCreatelabel("", $width-115, $out_top+150, 104, 20)
GUICtrlSetFont(-1, 12, 800, 0, "", 5)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
for $h = 1 to $help_texts[0]
local $help_data = StringSplit($help_texts[$h], "|")
local $help_x = 134-($h*20) - (20 * (5-$help_texts[0]))
$help_butts[$h] = GUICtrlCreateButton("?", $width-$help_x, $out_top+170, 18, 18, BitOr($WS_TABSTOP,$BS_FLAT))
$ttt = $help_data[1]
GUICtrlSetTipOptional(-1, "Click this button to view the " & StringUpper($help_data[1]) & " help file in the console output window (below). " & $MSG_LF & _
"Shift-click to instead open the help file in your default ." & GetExtension($help_data[2]) & " file viewer ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "HelpMeNow")
next
endif
$ttt = "Dynamic Command-Line Display"
GUICtrlCreateLabel("command-line input: ", 10, $out_top+228, $width-20, 20)
GUICtrlSetResizing(-1, BitOr( $GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$edit_in_args = GUICtrlCreateEdit("", 10, $out_top+244, $width-20, 64, BitOr($ES_MULTILINE, $ES_READONLY))
GUICtrlSetTipOptional(-1, "This is the actual command-line that will be used. ", $ttt)
GUICtrlSetResizing(-1, BitOr( $GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
$ttt = "Console Output"
$edit_console_output = GUICtrlCreateEdit("", 10, $out_top+314, $width-20, $height-($out_top+358), GetEditStyles())
GUICtrlSetTipOptional(-1, "You can see the output from ffmpeg here, including any errors, messages, and so on.. " & $MSG_LF & _
"Normal text editing functions apply, e.g. use Ctrl+A to select ALL text.", $ttt)
GUICtrlSetResizing(-1, BitOr( $GUI_DOCKRIGHT, $GUI_DOCKTOP, $GUI_DOCKBOTTOM, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetLimit(-1, 2147483647)
GUICtrlSetFont(-1, $console_output_font_size, 400, 0, $console_output_font, 5)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$ttt = "Search (F3)"
$butt_find = GUICtrlCreateButton("search in output", 10, $height-32, 90, 24, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Click this button to find text inside the output window (or use Ctrl+F / F3). ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "FindInOutput")
$ttt = "Copy Output To Clipboard (F8)"
$butt_copy2clip = GUICtrlCreateButton("copy output to clipboard", $column_two-94, $height-32, 130, 24, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Click this button (or hit F8) to copy the contents of the output window to the clipboard. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "CopyOutput")
$ttt = "Clear The Output (F5)"
$butt_clearout = GUICtrlCreateButton("clear", $column_two+36, $height-32, 32, 24, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetTipOptional(-1, "Click this button (or hit F5) to clear the output window. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "ClearOutput")
$ttt = "Start The Job (F1)"
$butt_doit = GUICtrlCreateButton("do it!", $width-82, $height-32, 72, 24, BitOr($WS_TABSTOP,$BS_FLAT), $WS_EX_TOPMOST)
GUICtrlSetTipOptional(-1, "Click this button (or hit F1) to begin the job. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKRIGHT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
GUICtrlSetOnEvent(-1, "DoIt")
if not $ffmpeg_binary then DisableActiveInputs()
$ttt = "ABORT THE JOB! (Pause/Break)"
$label_abort = GUICtrlCreateLabel("To abort a job, press 'F4'. To abort a job or batch, 'Pause/Break'. To suspend/resume, use ScrLk/ScrollLock ", 10, $height-32)
GUICtrlSetTipOptional(-1, "Simply hit 'F4' on your keyboard to quit the job. ", $ttt)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKLEFT, $GUI_DOCKBOTTOM, $GUI_DOCKSIZE))
GUICtrlSetState(-1, $GUI_HIDE)
CheckSize()
if not $do_gen and $minimized = $OFF then GUISetState(@SW_SHOW, $ffeGUI)
if $maximized = $ON then GUISetState(@SW_MAXIMIZE, $ffeGUI)
if $minimized = $ON then UnSetHotKeys()
WinSetTrans($ffeGUI, "", 255 * (100 - $user_trans) / 100)
endfunc
func MakeAppMenu()
GUIRegisterMsg($WM_SYSCOMMAND, "CheckAppMenu")
CreateSystemMenuItem("", -1, false, 0)
local $hMenu = GetSystemMenu($ffeGUI, 0)
$am_trans = CreateSystemMenuItem("&Transparency..", -1, true, 0)
for $i = 0 to 9
$arTransItems[$i] = CreateSystemMenuItem($i * 10 & "%", $am_trans)
if $i = $user_trans / 10 then
$nTPChecked = $arTransItems[$i]
CheckMenuItem($am_trans, $nTPChecked, $MF_CHECKED)
endif
next
CreateSystemMenuItem("", -1, false, 0)
local $am_visual = CreateSystemMenuItem("&Visual Preferences..", -1, true, 0)
$am_always_on_top = CreateSystemMenuItem("A&lways on Top", $am_visual, false, 0)
CheckMenuItem($hMenu, $am_always_on_top, $always_on_top)
CreateSystemMenuItem("", $am_visual, false, 0)
$am_console_wordwrap = CreateSystemMenuItem("&Wrap Console Output (Restart)", $am_visual, false, 0)
CheckMenuItem($hMenu, $am_console_wordwrap, $console_wordwrap)
CreateSystemMenuItem("", $am_visual, false, 0)
$am_image_buttons = CreateSystemMenuItem("&Images on (some) Buttons (Restart)", $am_visual, false, 0)
CheckMenuItem($hMenu, $am_image_buttons, $image_buttons)
CreateSystemMenuItem("", $am_visual, false, 0)
$am_do_tooltips = CreateSystemMenuItem("Show &Mouseover Help (Restart)", $am_visual, false, 0)
CheckMenuItem($hMenu, $am_do_tooltips, $do_tooltips)
CreateSystemMenuItem("", $am_visual, false, 0)
$am_sort_presets_list = CreateSystemMenuItem("&Sort Presets List (Restart)", $am_visual, false, 0)
CheckMenuItem($hMenu, $am_sort_presets_list, $sort_presets_list)
CreateSystemMenuItem("", -1, false, 0)
$am_custom_buttons_columns = CreateSystemMenuItem("Custom Button Columns..", -1, true, 0)
for $i = 1 to 24
$CustomButtonMenuItems[$i] = CreateSystemMenuItem($i, $am_custom_buttons_columns)
if $i = $custom_buttons_columns then
$CBMChecked = $CustomButtonMenuItems[$i]
CheckMenuItem($am_custom_buttons_columns, $CBMChecked, $MF_CHECKED)
endif
next
CreateSystemMenuItem("", $am_custom_buttons_columns, false, 0)
$CustomButtonMenuItems[501] = CreateSystemMenuItem("Automatic", $am_custom_buttons_columns, false, 0)
if $custom_buttons_columns = "auto" then
$CBMChecked = $CustomButtonMenuItems[501]
CheckMenuItem($am_custom_buttons_columns, $CBMChecked, $MF_CHECKED)
endif
CreateSystemMenuItem("", $am_custom_buttons_columns, false, 0)
$am_custom_buttons_disable = CreateSystemMenuItem("Disable Custom Buttons", $am_custom_buttons_columns, false, 0)
CreateSystemMenuItem("", -1, false, 0)
$am_cpu = CreateSystemMenuItem("ffmpeg.exe Process Priorit&y..", -1, true, 0)
for $i = 0 to 5
$arCPUItems[$i] = CreateSystemMenuItem($arCPU[$i], $am_cpu)
if $i = $cpu_priority then
$nCPUChecked = $arCPUItems[$i]
CheckMenuItem($am_cpu, $nCPUChecked, $MF_CHECKED)
endif
next
CreateSystemMenuItem("", -1, false, 0)
$am_retain_exit_settings = CreateSystemMenuItem("Retain Exit Settings (Ctrl+E)", -1, false, 0)
CheckMenuItem($hMenu, $am_retain_exit_settings, $retain_exit_settings)
CreateSystemMenuItem("", -1, false, 0)
local $am_reptypes = CreateSystemMenuItem("Media Probe &Reporting Type..", -1, true, 0)
local $am_ffprobe = CreateSystemMenuItem("Use ffprobe..", $am_reptypes, false, 0)
AppMenuItemSetState($hMenu, $am_ffprobe, $OFF)
for $i = 0 to 6
$ReportTypesMenuItems[$i] = CreateSystemMenuItem(" " & $ReportTypes[$i], $am_reptypes)
if $ReportTypes[$i] = $report_format then
$nRTChecked = $ReportTypesMenuItems[$i]
CheckMenuItem($am_reptypes, $nRTChecked, $MF_CHECKED)
endif
next
CreateSystemMenuItem("", $am_reptypes, false, 0)
$am_use_mediainfo = CreateSystemMenuItem("Use MediaInfo", $am_reptypes, false, 0)
if $use_mediainfo = $ON then SetUseMediaInfo()
CreateSystemMenuItem("", -1, false, 0)
local $am_logging = CreateSystemMenuItem("&Logging..", -1, true, 0)
$am_log_append = CreateSystemMenuItem("Append &Session Log", $am_logging, false, 0)
CheckMenuItem($hMenu, $am_log_append, $log_append)
CreateSystemMenuItem("", $am_logging, false, 0)
$am_job_log_append = CreateSystemMenuItem("&Append Job Logs", $am_logging, false, 0)
CheckMenuItem($hMenu, $am_job_log_append, $job_log_append)
CreateSystemMenuItem("", $am_logging, false, 0)
$am_log_each_job = CreateSystemMenuItem("&Log Each Job", $am_logging, false, 0)
CheckMenuItem($hMenu, $am_log_each_job, $log_each_job)
CreateSystemMenuItem("", -1, false, 0)
$am_drop_command = CreateSystemMenuItem("&Drag-And-Drop Command..", -1, true, 0)
for $i = 0 to 2
if $i = 2 then CreateSystemMenuItem("", $am_drop_command, false, 1)
$DropCommandMenuItems[$i] = CreateSystemMenuItem("&" & $DropCommands[$i], $am_drop_command)
if $DropCommands[$i] = $drop_command then
$nDCChecked = $DropCommandMenuItems[$i]
CheckMenuItem($hMenu, $nDCChecked, $MF_CHECKED)
endif
next
CreateSystemMenuItem("", -1, false, 0)
$am_about = CreateSystemMenuItem("&About " & $my_name, -1, false, 0)
endfunc
func MakeTray()
for $i = 0 to 999
TrayItemDelete($i)
next
TrayCreateItem("About " & $my_name)
TrayItemSetOnEvent(-1, "DoAboutBox")
TrayCreateItem("")
local $tray_recent_files = TrayCreateMenu("Recent Files..")
$tray_toggle_retain_recent_files = TrayCreateItem("Retain Recent Files (opened in system's default app)", $tray_recent_files)
TrayItemSetOnEvent(-1, "TrayToggleRetainRecentFiles")
TrayItemSetState(-1, $retain_recent_files)
TrayCreateItem("", $tray_recent_files)
if IsArray($recent_files) and $recent_files[0] then
TrayCreateItem("Clear Recent Files List", $tray_recent_files)
TrayItemSetOnEvent(-1, "ClearRecentFiles")
TrayCreateItem("", $tray_recent_files)
for $i = $recent_files[0] to 1 step -1
TrayCreateItem($recent_files[$i], $tray_recent_files)
TrayItemSetOnEvent(-1, "OpenRecentFile")
next
else
TrayCreateItem("No Recent Files Yet!", $tray_recent_files)
TrayItemSetState(-1, $TRAY_DISABLE)
endif
TrayCreateItem("")
$tray_toggle_delayed_start = TrayCreateItem("Delayed Start (Ctrl+D)")
TrayItemSetOnEvent(-1, "DelayedDoIt")
TrayCreateItem("")
$tray_abort_batch = TrayCreateItem("Abort Batch Pause/Break")
TrayItemSetOnEvent(-1, "AbortBatch")
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem("")
TrayCreateItem("Edit ffe.ini..")
TrayItemSetOnEvent(-1, "EditIniFile")
TrayCreateItem("")
if $pre_job_commands_file and FileExists($pre_job_commands_file) then
TrayCreateItem("Edit Pre-Job Commands..")
TrayItemSetOnEvent(-1, "EditPreJobCommands")
else
TrayCreateItem("Create Pre-Job Commands..")
TrayItemSetOnEvent(-1, "CreatePreJobCommands")
endif
if $post_job_commands_file and FileExists($post_job_commands_file) then
TrayCreateItem("Edit Post-Job Commands..")
TrayItemSetOnEvent(-1, "EditPostJobCommands")
else
TrayCreateItem("Create Post-Job Commands..")
TrayItemSetOnEvent(-1, "CreatePostJobCommands")
endif
TrayCreateItem("")
TrayCreateItem("Open Log File..")
TrayItemSetOnEvent(-1, "OpenLogFile")
TrayCreateItem("")
TrayCreateItem("Export Data..")
TrayItemSetOnEvent(-1, "TrayMenuExportData")
TrayCreateItem("Import Data..")
TrayItemSetOnEvent(-1, "TrayMenuImportData")
TrayCreateItem("")
TrayCreateItem("Locate FFmpeg Binary..")
TrayItemSetOnEvent(-1, "TraySetFFMpegBinaryLocation")
TrayCreateItem("")
$tray_toggle_drop_window = TrayCreateItem("Show Drop Window (F9)")
TrayItemSetOnEvent(-1, "MenuToggleShowDropWindow")
TrayItemSetState(-1, $do_drop_window)
$tray_toggle_fluid_image_menu = TrayCreateItem("Fluid Menu (follows current image)")
TrayItemSetOnEvent(-1, "MenuToggleDropWindowFluidMenu")
TrayItemSetState(-1, $fluid_image_menu)
$tray_toggle_auto_copy_images = TrayCreateItem("Copy Dragged Images (to fixed menu)")
TrayItemSetOnEvent(-1, "MenuToggleAutoCopy")
TrayItemSetState(-1, $auto_copy_images)
if $fluid_image_menu = $ON then TrayItemSetState(-1, $TRAY_DISABLE)
$tray_choose_image_folder = TrayCreateItem("Pick Images Folder.. (for fixed menu)")
TrayItemSetOnEvent(-1, "MenuChooseFixedImageLocation")
if $fluid_image_menu = $ON then TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem("")
TrayCreateItem("Reset Drop Window")
TrayItemSetOnEvent(-1, "MenuResetDropWindow")
TrayCreateItem("")
$tray_toggle_start_minimized = TrayCreateItem("Start Minimized")
TrayItemSetOnEvent(-1, "MenuToggleStartMinimized")
TrayItemSetState(-1, $start_minimized)
if $minimized = $ON then TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem("")
TrayCreateItem("Exit (Alt+F4 or Esc)")
TrayItemSetOnEvent(-1, "User_DoQuit")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "ToggleWindow")
TraySetClick(8)
TraySetIcon($me_app, 0)
TraySetState()
TraySetToolTip("left-click to toggle the main window" & $MSG_LF & "right-click to bring up the tray menu")
endfunc
func OpenRecentFile()
local $tray_item_full_path = TrayItemGetText(@tray_id)
ShellExecute($tray_item_full_path, "", "", $SHEX_OPEN)
endfunc
func ClearRecentFiles()
redim $recent_files[1]
$recent_files[0] = ""
MakeTray()
endfunc
; rtmp:
func UpdateInput()
$inputfile = Detokenize(GUICtrlRead($inp_inputfile))
if $old_inputfile <> $inputfile then
$old_inputfile = $inputfile
if IsDir($inputfile) then CRT($inputfile)
local $out_parent = Detokenize(GUICtrlRead($inp_outputfile))
CRT($out_parent)
if not IsDir($out_parent) then $out_parent = GetParent(Detokenize(GUICtrlRead($inp_outputfile)))
if FileExists($out_parent) then
GUICtrlSetData($inp_outputfile, $out_parent)
else
GUICtrlSetData($inp_outputfile, "")
endif
endif
DoArgsCreate()
endfunc
func AutoCreateArgs()
DoArgsCreate()
endfunc
func DoArgsCreate($batch="null")
if not $inputfile then
$inputfile = GUICtrlRead($inp_inputfile)
endif
if not $inputfile then return
local $input_params, $read_vcodec, $read_acodec, $write_outputfile
$outputfile = ""
local $outputfileCtrlRead = DeTokenize(GUICtrlRead($inp_outputfile))
CRT($outputfileCtrlRead)
$extra_args = DeTokenize(GUICtrlRead($inp_extra_args))
$matof_string = ""
if GUICtrlRead($inp_input_params) then
$input_params = Detokenize(GUICtrlRead($inp_input_params))
else
$input_params = ""
endif
if GUICtrlRead($check_resize_first) = $ON then
AddSizing()
AddCropping()
else
AddCropping()
AddSizing()
endif
if $overwrite = $ON then $extra_args &= " -y "
$read_vcodec = GUICtrlRead($combo_v_codec)
$read_acodec = GUICtrlRead($combo_a_codec)
if StringInStr($read_vcodec, "disable") and $do_output = $ON then
$extra_args = " -vn " & $extra_args
$no_video = true
if StringInStr($read_acodec, "disable") then
GUICtrlSetData($combo_a_codec, $audio_codecs)
$read_acodec = GUICtrlRead($combo_a_codec)
endif
else
$no_video = false
endif
if StringInStr($read_acodec, "disable") then
$extra_args = " -an " & $extra_args
$no_audio = true
else
$no_audio = false
endif
if GUICtrlRead($combo_target_type) then
$extra_args &= " -target " & GUICtrlRead($combo_target_type)
$matof_string &= "[" & GUICtrlRead($combo_target_type) & "]"
$no_video = false
endif
if $read_vcodec and not StringInStr($read_vcodec, "disable") then
$v_codec = " -vcodec " & $read_vcodec
$matof_string &= "[" & $read_vcodec & "]"
else
$v_codec = ""
endif
if not $no_video then
if GUICtrlRead($combo_v_bitrate) then
$extra_args &= " -b:v " & GUICtrlRead($combo_v_bitrate)
$matof_string &= "[" & GUICtrlRead($combo_v_bitrate) & "]"
endif
if GUICtrlRead($combo_frames_per_second) then
$extra_args &= " -r " & GUICtrlRead($combo_frames_per_second)
$matof_string &= "[" & GUICtrlRead($combo_frames_per_second) & "]"
endif
endif
if not $no_audio then
if $read_acodec then
$a_codec = " -acodec " & $read_acodec
else
$a_codec = ""
endif
if $read_acodec then $matof_string &= "[" & $read_acodec & "]"
if GUICtrlRead($combo_a_bitrate) then
$extra_args &= " -ab " & GUICtrlRead($combo_a_bitrate)
if not $no_video then $matof_string &= "[" & GUICtrlRead($combo_a_bitrate) & "]"
endif
endif
if GUICtrlRead($inp_extra_args) then
$matof_string &= "[" & CleanPath(GUICtrlRead($inp_extra_args)) & "]"
endif
if $batch == "null" then
$batch = $OFF
if IsWild($inputfile) then $batch = $ON
endif
if $do_matof = $OFF and $batch = $ON then
ToggleMatofStatus(false)
ConsoleAdd("MATOF: required (batch operation)")
endif
if $do_output = $ON then
if $old_matof then $outputfileCtrlRead = StringReplace($outputfileCtrlRead, $old_matof, "")
local $inputfile_basename = RemoveExtension(BaseName($inputfile))
if $outputfileCtrlRead then
if IsDir($outputfileCtrlRead) then
$output_dir = $outputfileCtrlRead
else
if IsDir(GetParent($outputfileCtrlRead)) then $output_dir = GetParent($outputfileCtrlRead)
endif
endif
if not $output_dir then
$fallback_folder = IniRead($ini_path, $current_preset, "fallback_folder", $fallback_folder)
if not $fallback_folder or ($fallback_folder = "@parent" and StringInStr($inputfile, ":)) then ;bug LFN???
$fallback_folder = @MyDocumentsDir
else
$fallback_folder = DeTokenize($fallback_folder)
endif
$output_dir = $fallback_folder
endif
local $fallback_path = $output_dir & "\" & $inputfile_basename & "." & $default_extension
; http:
if $batch = $OFF then
$outputfile = $ini_outputfile
if $outputfileCtrlRead <> $ini_outputfile then $outputfile = $outputfileCtrlRead
if IsDir($outputfile) or not $outputfile then
$outputfile = $fallback_path
endif
if not StringInStr(Basename($outputfile), ".") then $outputfile &= "." & $default_extension
else
$outputfile = $fallback_path
endif
if $do_matof = $ON and $matof_string then
local $clean_outputfile_noext = RemoveExtension($outputfile)
$clean_outputfile_ext = GetExtFromCodec($read_vcodec, $inputfile)
local $separator
if $matof_string then
$separator = $matof_separator
else
$separator = ""
endif
$old_matof = $separator & $matof_string
$outputfile = $clean_outputfile_noext & $old_matof & "." & $clean_outputfile_ext
endif
GUICtrlSetData($inp_outputfile, $outputfile)
$write_outputfile = """" & $outputfile & """"
else
$write_outputfile = ""
endif
local $write_loc = $ffmpeg_binary
if $generate_script then $write_loc = '"' & $ffmpeg_binary & '"'
$args = $write_loc & " " & $input_params & " -i " & """" & $inputfile & """" & $v_codec & " " & $a_codec & " " & $extra_args & " " & $write_outputfile
GUICtrlSetData($edit_in_args, $args)
endfunc
func MenuRefreshPresetsList()
UpdatePresetsCombo()
endfunc
func UpdatePresetsCombo()
local $presets_string = ""
$presets = IniReadSectionNames($ini_path)
if not IsArray($presets) then return
for $i = 1 to $presets[0]
if not StringInStr($presets_string, $presets[$i] & "|") and StringLeft($presets[$i], 10) <> "--backup--" then
$presets_string &= $presets[$i] & "|"
endif
next
$presets_string = StringReplace($presets_string, "custom buttons|", "")
$presets_string = StringReplace($presets_string, $exit_preset & "|", "")
CRT($presets_string, "|")
GUICtrlSetData($combo_presets, "")
GUICtrlSetData($combo_presets, $presets_string)
endfunc
func AddInputOverrideFileArgs()
local $current_data = GUICtrlRead($inp_input_params)
if $current_data then $current_data &= " "
GUICtrlSetData($inp_input_params, $current_data & '-i ""')
ControlFocus($ffeGUI, "", $inp_input_params)
ControlSend($ffeGUI, "", $inp_input_params, "{RIGHT}")
ControlSend($ffeGUI, "", $inp_input_params, "{LEFT}")
endfunc
func DelInputOverrideFileArgs()
GUICtrlSetData($inp_input_params, "")
endfunc
func ComboLoadPreset()
$inputfile = ""
LoadPreset()
endfunc
func LoadPreset($this_preset="", $init=false)
local $param, $dep_param
if $this_preset then
if InArray($presets, $this_preset) and not InArray($not_presets, $this_preset) then GUICtrlSetData($combo_presets, $this_preset)
else
$this_preset = GUICtrlRead($combo_presets)
$store_filepaths = GUICtrlRead($check_store_filepaths)
endif
if not $this_preset then $this_preset = $my_name
$current_preset = $this_preset
if not $init then ConsoleAdd("loading preset: " & $current_preset)
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "loading preset: " & $current_preset & $LOG_LF)
if $store_filepaths = $ON then
if not $inputfile then
$param = Detokenize(IniRead($ini_path, $current_preset, "inputfile", ""))
if $param then GUICtrlSetData($inp_inputfile, $param)
endif
$ini_outputfile = ""
$param = Detokenize(IniRead($ini_path, $current_preset, "outputfile", ""))
$dep_param = Detokenize(IniRead($ini_path, $current_preset, "outfile", ""))
if $dep_param then
$param = $dep_param
IniDelete($ini_path, $current_preset, "outfile")
IniWrite($ini_path, $current_preset, "outputfile", $param)
endif
if $param then
CRT($param)
$ini_outputfile = $param
GUICtrlSetData($inp_outputfile, $param)
endif
endif
local $x_param
if $replace_mode = $ON then
WipeSettings()
else
$x_param = GUICtrlRead($inp_extra_args) & " "
endif
$param = IniRead($ini_path, $current_preset, "input_params", "")
if $param then GUICtrlSetData($inp_input_params, $param)
$param = IniRead($ini_path, $current_preset, "v_codec", "")
if $param then GUICtrlSetData($combo_v_codec, $param)
$param = IniRead($ini_path, $current_preset, "v_bitrate", "")
if $param then GUICtrlSetData($combo_v_bitrate, $param)
$param = IniRead($ini_path, $current_preset, "frames_per_second", "")
if $param then GUICtrlSetData($combo_frames_per_second, $param)
$param = IniRead($ini_path, $current_preset, "x_size", "")
if $param then GUICtrlSetData($inp_x_size, $param)
$param = IniRead($ini_path, $current_preset, "y_size", "")
if $param then GUICtrlSetData($inp_y_size, $param)
$param = IniRead($ini_path, $current_preset, "preset_resize", "")
if $param then GUICtrlSetData($combo_preset_resizes, $param)
$param = IniRead($ini_path, $current_preset, "crop_top", "")
if $param then GUICtrlSetData($inp_crop_top, $param)
$param = IniRead($ini_path, $current_preset, "crop_left", "")
if $param then GUICtrlSetData($inp_crop_left, $param)
$param = IniRead($ini_path, $current_preset, "crop_right", "")
if $param then GUICtrlSetData($inp_crop_right, $param)
$param = IniRead($ini_path, $current_preset, "crop_bottom", "")
if $param then GUICtrlSetData($inp_crop_bottom, $param)
$param = IniRead($ini_path, $current_preset, "a_codec", "")
if $param then GUICtrlSetData($combo_a_codec, $param)
$param = IniRead($ini_path, $current_preset, "a_bitrate", "")
if $param then GUICtrlSetData($combo_a_bitrate, $param)
$param = IniRead($ini_path, $current_preset, "target_type", "")
if $param then GUICtrlSetData($combo_target_type, $param)
$param = IniRead($ini_path, $current_preset, "raw_params", "")
if $param then GUICtrlSetData($inp_extra_args, $x_param & $param)
$param = IniReadCheckBoxValue($ini_path, $current_preset, "resize_first", "")
$dep_param = IniReadCheckBoxValue($ini_path, $current_preset, "resize_order", "")
if $dep_param then
$param = $dep_param
IniDelete($ini_path, $current_preset, "resize_order")
IniWriteCheckBoxValue($ini_path, $current_preset, "resize_first", $param)
endif
if $param then GUICtrlSetState($check_resize_first, $param)
$param = IniReadCheckBoxValue($ini_path, $current_preset, "do_output", "")
if $param then
$do_output = $param
if $do_output = $ON then
GUICtrlSetState($inp_outputfile, $GUI_ENABLE)
else
GUICtrlSetState($inp_outputfile, $GUI_DISABLE)
endif
endif
$do_matof = IniReadCheckBoxValue($ini_path, $current_preset, "do_matof", $do_matof, true)
GUICtrlSetState($check_do_matof, $do_matof)
$overwrite = IniReadCheckBoxValue($ini_path, $current_preset, "overwrite", $overwrite, true)
GUICtrlSetState($check_overwrite, $overwrite)
$concatenate = IniReadCheckBoxValue($ini_path, $current_preset, "concatenate", $concatenate, true)
GUICtrlSetState($check_concatenate, $concatenate)
$quit_when_done = IniReadCheckBoxValue($ini_path, $current_preset, "quit_when_done", $quit_when_done, true)
GUICtrlSetState($check_quit_when_done, $quit_when_done)
$shutdown_when_done = IniReadCheckBoxValue($ini_path, $current_preset, "shutdown_when_done", $shutdown_when_done, true)
GUICtrlSetState($check_shutdown_when_done, $shutdown_when_done)
$param = IniRead($ini_path, $current_preset, "default_extension", "")
if $param then
if $default_extension <> $param and not $init then ConsoleAdd('default_extension: "' & $param & '"')
$default_extension = $param
endif
$param = IniReadCheckBoxValue($ini_path, $current_preset, "kill_ffmpeg_on_exit", "")
if $param then
if $param <> $kill_ffmpeg_on_exit and not $init then ConsoleAdd('kill_ffmpeg_on_exit: ' & ProcessWriteHumanCheckBoxValue($param))
$kill_ffmpeg_on_exit = $param
endif
GetLogLocation($current_preset)
UpdateInput()
LoadPreCommands()
LoadPostCommands()
$run_post_file_command = IniReadCheckBoxValue($ini_path, $current_preset, "run_post_file_command", $run_post_file_command, true)
GUICtrlSetState($check_run_post_file_command, $run_post_file_command)
$post_file_command = IniRead($ini_path, $current_preset, "post_file_command", $post_file_command)
$batch_commands_timeout = IniRead($ini_path, $current_preset, "batch_commands_timeout", $batch_commands_timeout)
$retain_recent_files = IniReadCheckBoxValue($ini_path, $my_name, "retain_recent_files", $OFF)
if $retain_recent_files = $ON then
local $tmp_rfstring = IniRead($ini_path, $this_preset, "recent_files", "")
CRT($tmp_rfstring, "|")
if $tmp_rfstring then
$recent_files = StringSplit($tmp_rfstring, "|")
MakeTray()
endif
endif
endfunc
func ButtSavePreset()
local $this_preset = GUICtrlRead($combo_presets)
if $this_preset = $my_name and not ce_IsPressed(10) then
DialogOpen()
local $replace_defaults = MsgBox($MB_YESNO+$MB_TASKMODAL, "Are you SURE?", "If you use the name " & $my_name & ", your settings will become the defaults, " & _
$MSG_LF & "and will be loaded automatically at startup. Is this what you want?", 0, $ffeGUI)
DialogClose()
if $replace_defaults = 7 then return
endif
SavePreset($this_preset)
endfunc
func SavePreset($this_preset)
if not $this_preset then return
$this_preset = StringReplace($this_preset, "[", "(")
$this_preset = StringReplace($this_preset, "]", ")")
$this_preset = StringStripWS($this_preset, 3)
$presets = IniReadSectionNames($ini_path)
if InArray($presets, $this_preset) and $this_preset <> $my_name and $this_preset <> $exit_preset and not ce_IsPressed(10) then
DialogOpen()
local $replaceit = MsgBox(4, "Replace Preset?", "That preset exists!" & $MSG_LF & "Do you wish to replace it?", 30, $ffeGUI)
DialogClose()
if $replaceit = 7 then return
endif
if GUICtrlRead($check_store_filepaths) = $ON then
IniWrite($ini_path, $this_preset, "inputfile", GUICtrlRead($inp_inputfile))
if $old_matof then $outputfile = StringReplace($outputfile, $old_matof, "")
CRT($outputfile)
if $outputfile then IniWrite($ini_path, $this_preset, "outputfile", $outputfile)
endif
SavePref($this_preset, "input_params", $inp_input_params)
SavePref($this_preset, "v_codec", $combo_v_codec)
SavePref($this_preset, "v_bitrate", $combo_v_bitrate)
SavePref($this_preset, "frames_per_second", $combo_frames_per_second)
SavePref($this_preset, "x_size", $inp_x_size)
SavePref($this_preset, "y_size", $inp_y_size)
SavePref($this_preset, "preset_resize", $combo_preset_resizes)
SavePref($this_preset, "crop_top", $inp_crop_top)
SavePref($this_preset, "crop_left", $inp_crop_left)
SavePref($this_preset, "crop_right", $inp_crop_right)
SavePref($this_preset, "crop_bottom", $inp_crop_bottom)
SavePref($this_preset, "a_codec", $combo_a_codec)
SavePref($this_preset, "a_bitrate", $combo_a_bitrate)
SavePref($this_preset, "target_type", $combo_target_type)
SavePref($this_preset, "raw_params", $inp_extra_args)
SavePref($this_preset, "resize_first", $check_resize_first, true)
SavePref($this_preset, "do_matof", $check_do_matof, true)
IniWrite($ini_path, $this_preset, "batch_commands_timeout", $batch_commands_timeout)
IniWriteCheckBoxValue($ini_path, $this_preset, "run_commands_with_shell", $run_commands_with_shell)
SavePref($this_preset, "run_pre_job_commands", $check_run_pre_job_commands, true)
if $pre_job_commands_file then IniWrite($ini_path, $this_preset, "pre_job_commands_file", TokenizeString($pre_job_commands_file))
SavePref($this_preset, "run_post_job_commands", $check_run_post_job_commands, true)
if $post_job_commands_file then IniWrite($ini_path, $this_preset, "post_job_commands_file", TokenizeString($post_job_commands_file))
SavePref($this_preset, "run_post_file_command", $check_run_post_file_command, true)
if $post_file_command then IniWrite($ini_path, $this_preset, "post_file_command", $post_file_command)
SavePref($this_preset, "overwrite", $check_overwrite, true)
SavePref($this_preset, "concatenate", $check_concatenate, true)
if $this_preset <> $my_name then
SavePref($this_preset, "quit_when_done", $check_quit_when_done, true)
SavePref($this_preset, "shutdown_when_done", $check_shutdown_when_done, true)
endif
IniWriteCheckBoxValue($ini_path, $this_preset, "do_output", $do_output)
if $retain_recent_files = $ON and $recent_files[0] then IniWrite($ini_path, $this_preset, "recent_files", StringJoin($recent_files, "|"))
$current_preset = $this_preset
UpdatePresetsCombo()
GUICtrlSetData($combo_presets, $this_preset)
if $this_preset = $my_name then $this_preset &= " (default preset)"
ConsoleAdd("saved preset " & $this_preset)
endfunc
func SavePref($this_preset, $pref_name_string, $ctrl_to_read, $checkbox=false)
local $ctrl_val = GUICtrlRead($ctrl_to_read)
if $checkbox then
IniWriteCheckBoxValue($ini_path, $this_preset, $pref_name_string, $ctrl_val)
else
IniWrite($ini_path, $this_preset, $pref_name_string, $ctrl_val)
if IniRead($ini_path, $this_preset, $pref_name_string, "") = "" then IniDelete($ini_path, $this_preset, $pref_name_string)
endif
endfunc
func WipePreset()
local $this_preset = GUICtrlRead($combo_presets)
if not $this_preset then return
$presets = IniReadSectionNames($ini_path)
if not InArray($presets, $this_preset) then
ConsoleAdd($LOG_LF & "error wiping preset: " & $this_preset & " does not exist!")
return false
endif
if $this_preset <> $my_name then
ConsoleAdd("backup """ & $this_preset & """ to " & """--backup--" & $this_preset & '"')
local $backup_preset = IniReadSection($ini_path, $this_preset)
if IniDelete($ini_path, $this_preset) then
ConsoleAdd("wiped preset: " & $this_preset)
IniWriteSection($ini_path, "--backup--" & $this_preset, $backup_preset)
else
ConsoleAdd($LOG_LF & "error wiping preset: " & $this_preset)
endif
else
DialogOpen()
MsgBox(0, "Not quite!", "If you wish to reset the default settings, simple hit the reset button" & $MSG_LF & _
"and then save the (blank) settings to a preset, using the name " & $my_name & "", 0, $ffeGUI)
DialogClose()
endif
$current_preset = $my_name
UpdatePresetsCombo()
return
endfunc
func WipeBackups()
local $got_backups = false
$presets = IniReadSectionNames($ini_path)
if not IsArray($presets) then return
for $i = 1 to $presets[0]
if StringLeft($presets[$i], 10) = "--backup--" then
$got_backups = true
if IniDelete($ini_path, $presets[$i]) then ConsoleAdd("wiped backup preset: " & $presets[$i])
endif
next
if not $got_backups then ConsoleAdd("no backups found")
endfunc
func MenuRenamePreset()
if $current_preset = $my_name then
ConsoleAdd("cannot rename the default preset!")
return
endif
DialogOpen()
local $new_preset_name = InputBox("Rename Preset.. ", "Enter a new name for the preset.. ", $current_preset , "" , 350, 130, default, default, 0, $ffeGUI)
DialogClose()
if $new_preset_name then
if InArray($not_presets, $new_preset_name) then
ConsoleAdd("cannot rename: " & $new_preset_name & "!")
return
endif
IniRenameSection($ini_path, $current_preset, $new_preset_name)
ConsoleAdd("reset: " & $current_preset & " renamed to : " & $new_preset_name )
$new_preset_name = $new_preset_name
endif
endfunc
func MenuToggleDropWindowFluidMenu()
if $fluid_image_menu = $ON then
$fluid_image_menu = $OFF
else
$fluid_image_menu = $ON
endif
IniWriteCheckBoxValue($ini_path, $my_name, "fluid_image_menu", $fluid_image_menu)
TrayItemSetState($tray_toggle_fluid_image_menu, $fluid_image_menu)
if $fluid_image_menu = $ON then
TrayItemSetState($tray_toggle_auto_copy_images, $TRAY_DISABLE)
TrayItemSetState($tray_choose_image_folder, $TRAY_DISABLE)
GUICtrlSetState($ctxt_toggle_fluid_image_menu, $GUI_DISABLE)
GUICtrlSetState($ctxt_toggle_auto_copy_images, $GUI_DISABLE)
else
TrayItemSetState($tray_toggle_auto_copy_images, $TRAY_ENABLE)
TrayItemSetState($tray_choose_image_folder, $TRAY_ENABLE)
GUICtrlSetState($ctxt_toggle_fluid_image_menu, $GUI_ENABLE)
GUICtrlSetState($ctxt_toggle_auto_copy_images, $GUI_ENABLE)
endif
HideDropWindow()
endfunc
func TrayToggleRetainRecentFiles()
if $retain_recent_files = $ON then
$retain_recent_files = $OFF
else
$retain_recent_files = $ON
endif
IniWriteCheckBoxValue($ini_path, $my_name, "retain_recent_files", $retain_recent_files)
TrayItemSetState($tray_toggle_retain_recent_files, $retain_recent_files)
endfunc
func MenuToggleAutoCopy()
if $auto_copy_images = $ON then
$auto_copy_images = $OFF
else
$auto_copy_images = $ON
endif
IniWriteCheckBoxValue($ini_path, $my_name, "auto_copy_images", $auto_copy_images)
TrayItemSetState($tray_toggle_auto_copy_images, $auto_copy_images)
HideDropWindow()
endfunc
func MenuToggleShowDropWindow()
if $do_drop_window = $ON then
CloseDropWindow()
else
TrayItemSetState($tray_toggle_drop_window, $ON)
GUICtrlSetState($check_do_drop_window, $ON)
$do_drop_window = $ON
endif
endfunc
func CloseDropWindow()
GUICtrlSetState($check_do_drop_window, $OFF)
ClickToggleDropWindow()
endfunc
func ClickToggleDropWindow()
$do_drop_window = GUICtrlRead($check_do_drop_window)
TrayItemSetState($tray_toggle_drop_window, $do_drop_window)
IniWriteCheckBoxValue($ini_path, $my_name, "do_drop_window", $do_drop_window)
if $do_drop_window = $OFF then HideDropWindow()
endfunc
func GetDropWinImage()
$drop_win_image = SetRelPathToDataDir(Detokenize(IniRead($ini_path, $my_name, "drop_win_image", "")))
if not $drop_win_image or not FileExists($drop_win_image) then $drop_win_image = SetRelPathToDataDir("images\ffe.png")
if not FileExists(GetParent($drop_win_image)) then
DirCreate(GetParent($drop_win_image))
FileInstall(".\stuff\ffe.png", $drop_win_image, 1)
endif
Check4GIFmethod()
endfunc
func GetDropWinImageFolder()
$drop_win_image_folder = SetRelPathToDataDir(Detokenize(IniRead($ini_path, $my_name, "drop_win_image_folder", "images")))
if not $drop_win_image_folder or not FileExists($drop_win_image_folder) then $drop_win_image_folder = SetRelPathToDataDir("images")
if not FileExists($drop_win_image_folder) then DirCreate($drop_win_image_folder)
endfunc
func MenuResetDropWindow()
if $dropwin_visible then HideDropWindow()
IniWrite($ini_path, $my_name, "drop_win_image", "images\ffe.png")
IniWrite($ini_path, $my_name, "drop_win_image_folder", "images")
IniWrite($ini_path, $my_name, "drop_window_x", 0)
IniWrite($ini_path, $my_name, "drop_window_y", 0)
GetDropWinImage()
GetDropWinImageFolder()
endfunc
func ShowDropWindow()
$dropwin_visible = true
$on_top_counter = TimerInit()
if StringinStr(@OSVersion, "WIN_2008") or StringinStr(@OSVersion, "VISTA") then
if not $GDI_dll then
ConsoleAdd($LOG_LF & "cannot create png drop window.")
ConsoleAdd("location of gdiplus.dll not specified.")
ConsoleAdd("vista or windows server 2008 operating system detected.")
ConsoleAdd("location of the gdiplus.dll must be manually specified.")
ConsoleAdd($LOG_LF & "ffe is searching for a likely candidate. please wait...")
local $find_gdi = RecurseDir(@WindowsDir & "\winsxs", "gdiplus.dll")
local $dsize, $oldbig=0, $biggest_dll
for $i = 1 to $find_gdi[0]
$dsize = FileGetSize($find_gdi[$i])
if $dsize > $oldbig then
$oldbig = $dsize
$biggest_dll = $find_gdi[$i]
endif
next
if _GDIPlus_Startup($biggest_dll) then
$GDI_dll = $biggest_dll
ConsoleAdd("gdiplus.dll sucessfully located and loaded. saving path to ffe.ini..")
IniWrite($ini_path, $my_name, "GDI_dll", $GDI_dll)
else
ConsoleAdd("gdiplus.dll was found but could not be loaded.")
ConsoleAdd("please look in %windows%\winsxs for one that works! (use f3!).")
ConsoleAdd("then set the full location inside ffe.ini and give it a whirl!")
$do_drop_window = $OFF
$dropwin_visible = false
return
endif
_GDIPlus_Shutdown()
endif
else
$GDI_dll = "gdiplus.dll"
endif
if not FileExists($drop_win_image) then
ConsoleAdd("ffe could not find specified drop window image: " & $drop_win_image)
return ResetAndReturn()
endif
Check4GIFmethod()
local $dw_width, $dw_height
local $dw_x = IniRead($ini_path, $my_name, "drop_window_x", 1)
local $dw_y = IniRead($ini_path, $my_name, "drop_window_y", 1)
$drop_win_transparency = IniRead($ini_path, $my_name, "drop_win_transparency", 0)
GetRealTrans()
if $gif_method then
local $aGIFDimension = _GIF_GetDimension($drop_win_image)
$dw_width = $aGIFDimension[0]
$dw_height = $aGIFDimension[1]
else
_GDIPlus_Startup($GDI_dll)
$image_handle = _GDIPlus_BitmapCreateFromFile($drop_win_image)
if not $image_handle then
ConsoleAdd("could not load image file: " & $drop_win_image)
return ResetAndReturn()
endif
$dw_width = _GDIPlus_ImageGetWidth($image_handle)
$dw_height = _GDIPlus_ImageGetHeight($image_handle)
endif
_GetMonitors()
local $far_left = $monitors_list[0][1]
local $far_top = $monitors_list[0][2]
local $far_right = $monitors_list[0][3]
local $far_height = $monitors_list[0][4]
if ($dw_x+$dw_width) < $far_left then $dw_x = $far_left
if ($dw_x-$dw_width) > $far_right then $dw_x = $far_right-$dw_width
if ($dw_y+$dw_height) > $far_height then $dw_y = $far_height-$dw_height
if ($dw_y+$dw_height) < $far_top then $dw_y = $far_top
$GUI_DropWindow = GUICreate("ffe file drop", $dw_width, $dw_height, $dw_x, $dw_y, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_ACCEPTFILES))
GUISetOnEvent($GUI_EVENT_DROPPED, "GetDroppedItem")
GUISetOnEvent($GUI_EVENT_PRIMARYUP, "SaveDropWinLocation")
HotKeySet("{LEFT}", "PreviousDropImage")
HotKeySet("{RIGHT}", "NextDropImage")
$lab_main_drop = GUICtrlCreateLabel("", 0, 0, $dw_width, $dw_height, $SS_NOTIFY, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetTipOptional(-1, "Drag media files into here to have them inserted into ffe's file input." & $MSG_LF & _
"Right-click the Drop Window for a handy context menu." & $MSG_LF & $MSG_LF & _
"Use your Left/Right arrow keys to quickly cycle through all the" & $MSG_LF & _
"images in the current directory (and sub-directories) ." & $MSG_LF & $MSG_LF & _
"Drag images into here to use them as your Drop Window.", "The Drop Window")
if $gif_method then
$hGIF = _GUICtrlCreateGIF($drop_win_image, "", 0, 0, default, default, default, 0x345)
_WinAPI_SetLayeredWindowAttributes($GUI_DropWindow, 0x345, $dropwin_trans_real)
GUISetBkColor(0x345)
else
SetTransparentBitmap($GUI_DropWindow, $image_handle, $dropwin_trans_real)
endif
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
_WinAPI_SetParent($GUI_DropWindow, 0)
AdLibRegister("PostScanningNotice", 1000)
CreateDropWinContextMenu()
AdLibUnRegister("PostScanningNotice")
GUISetState(@SW_SHOW, $GUI_DropWindow)
if $minimized = $OFF and not $switching then WinActivate($ffeGUI)
if $switching then SetNewDropWinImage()
$switching = false
return true
endfunc
func ResetAndReturn()
ConsoleAdd("resetting to default image")
IniWrite($ini_path, $my_name, "drop_win_image", "images\ffe.png")
$dropwin_visible = false
_GDIPlus_Shutdown()
GetDropWinImage()
return false
endfunc
func HideDropWindow()
if not $dropwin_visible then return
if $gif_method then
_GIF_DeleteGIF($hGIF)
else
_GDIPlus_BitmapDispose($image_handle)
endif
_GDIPlus_Shutdown()
SaveDropWinLocation()
HotKeySet("{LEFT}")
HotKeySet("{RIGHT}")
GUIDelete($GUI_DropWindow)
$dropwin_visible = false
$on_top_counter = 0
return
endfunc
func SaveDropWinLocation()
local $dw_coords = WinGetPos($GUI_DropWindow)
if IsArray($dw_coords) then
center" default setting when user puts window at -1 px..
if $dw_coords[0] = -1 then $dw_coords[0] = 0
if $dw_coords[1] = -1 then $dw_coords[1] = 0
IniWrite($ini_path, $my_name, "drop_window_x", $dw_coords[0])
IniWrite($ini_path, $my_name, "drop_window_y", $dw_coords[1])
endif
endfunc
func SetTransparentBitmap($hGUI, $image_handle, $iOpacity)
local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($image_handle)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($image_handle))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($image_handle))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
endfunc
func CreateDropWinContextMenu()
redim $drop_images[1][3]
local $img_dir = GetParent($drop_win_image)
if $fluid_image_menu = $OFF then $img_dir = $drop_win_image_folder
local $ctxt_the_pic = GUICtrlCreateContextMenu($lab_main_drop)
GUICtrlCreateContextMenu($lab_main_drop)
GUICtrlCreateMenuItem("Refresh This Menu", $lab_main_drop)
GUICtrlSetOnEvent(-1, "HideDropWindow")
GUICtrlCreateMenuItem("", $lab_main_drop)
GUICtrlCreateMenuItem("Open Images Folder..", $lab_main_drop)
GUICtrlSetOnEvent(-1, "OpenImagesFolder")
GUICtrlCreateMenuItem("", $lab_main_drop)
local $img_menu = GUICtrlCreateMenu("Images..", $ctxt_the_pic)
DigToMenu($img_dir, $img_menu)
GUICtrlCreateMenuItem("", $lab_main_drop)
$ctxt_toggle_fluid_image_menu = GUICtrlCreateContextMenu($lab_main_drop)
GUICtrlCreateMenuItem("Fluid Menu (follows current image)", $lab_main_drop)
GUICtrlSetOnEvent(-1, "MenuToggleDropWindowFluidMenu")
GUICtrlSetState(-1, $fluid_image_menu)
GUICtrlCreateMenuItem("", $lab_main_drop)
$ctxt_toggle_auto_copy_images = GUICtrlCreateContextMenu($lab_main_drop)
GUICtrlCreateMenuItem("Copy Dragged Images (to fixed menu)", $lab_main_drop)
GUICtrlSetOnEvent(-1, "MenuToggleAutoCopy")
GUICtrlSetState(-1, $auto_copy_images)
if $fluid_image_menu = $ON then GUICtrlSetState(-1, $GUI_DISABLE)
$ctxt_choose_image_folder = GUICtrlCreateContextMenu($lab_main_drop)
GUICtrlCreateMenuItem("Pick Images Folder.. (for fixed menu)", $lab_main_drop)
GUICtrlSetOnEvent(-1, "MenuChooseFixedImageLocation")
if $fluid_image_menu = $ON then GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $lab_main_drop)
GUICtrlCreateMenuItem("Close (F9)", $lab_main_drop)
GUICtrlSetOnEvent(-1, "CloseDropWindow")
GUICtrlCreateMenuItem("", $lab_main_drop)
GUICtrlCreateMenuItem("Exit ffe", $lab_main_drop)
GUICtrlSetOnEvent(-1, "User_DoQuit")
endfunc
func DigToMenu($root_dir, $menu_id=false)
if not FileExists($root_dir) then return
local $item_text, $item_id, $full_item
local $dir_list = ReadDir($root_dir, "", "*.*")
if IsArray($dir_list) then
for $i = 1 to $dir_list[0]
$item_text = BaseName($dir_list[$i])
$full_item = $root_dir & "\" & $dir_list[$i]
if IsDir($full_item) then
local $submenu = GUICtrlCreateMenu($item_text, $menu_id)
DigToMenu($full_item, $submenu)
elseif IsAllowedImage($item_text) then
$item_id = GUICtrlCreateMenuItem(" " & $item_text, $menu_id)
GUICtrlSetOnEvent(-1, "MenuSwitchImage")
local $new_index = AddImageToMenuList($drop_images, $item_id, $item_text, $full_item)
if $full_item = $drop_win_image then
$img_index = $new_index
GUICtrlSetState($item_id, $ON)
endif
endif
next
endif
endfunc
func AddImageToMenuList(ByRef $array, $id, $text, $fullpath)
if not IsArray($array) then
global $array[1][3]
else
redim $array[UBound($array)+1][3]
endif
local $idx = UBound($array)-1
$array[$idx][0] = $id
$array[$idx][1] = $text
$array[$idx][2] = $fullpath
return $idx
endfunc
func MenuSwitchImage()
if not @GUI_CtrlId then return false
SwitchDropImage()
endfunc
func PostScanningNotice()
AdLibUnRegister("PostScanningNotice")
ConsoleAdd("scanning for images. please wait a moment..")
endfunc
func SwitchDropImage($updown=false)
GUICtrlSetState($drop_images[$img_index][0], $OFF)
HideDropWindow()
$switching = true
local $i
if $updown <> false then
$i = $img_index + $updown
if $i = 0 then $i = Ubound($drop_images)-1
if $i = Ubound($drop_images) then $i = 1
else
if not @GUI_CtrlId then return false
for $i = 1 to Ubound($drop_images)-1
if @GUI_CtrlId = $drop_images[$i][0] then exitloop
next
endif
$img_index = $i
GUICtrlSetState($drop_images[$img_index][0], $ON)
$drop_win_image = $drop_images[$i][2]
Check4GIFmethod()
ConsoleAdd("setting drop window image to: " & $drop_images[$i][2])
endfunc
func SetNewDropWinImage()
local $write_img_path = $drop_win_image
if StringInStr($drop_win_image, $data_parent & "\") then $write_img_path = StringReplace($drop_win_image, $data_parent & "\", "")
$write_img_path = TokenizeString($write_img_path)
if $write_img_path then IniWrite($ini_path, $my_name, "drop_win_image", $write_img_path)
endfunc
func Check4GIFmethod()
$gif_method = false
if $enable_animated_gif and GetExtension($drop_win_image) = "gif" then $gif_method = true
endfunc
," to both ends.
,ps," without matching it in, for example, "eps".
func IsAllowedImage($image_file)
if StringInStr($allowed_image_types, "," & GetExtension($image_file) & ",") then return true
return false
endfunc
drift". This ensures it styas on top..
func SetDropWinOnTop()
WinSetOnTop($GUI_DropWindow, "", $WINDOWS_ONTOP)
endfunc
func LoadCustomButtonData()
$custom_buttons_array = IniReadSection($ini_path, $NAME_BUTTONS)
if IsArray($custom_buttons_array) then
if $custom_buttons_array[0][0] > 500 then $custom_buttons_array[0][0] = 500
global $custom_buttons[$custom_buttons_array[0][0]+1]
global $custom_buttons_rename_menu[$custom_buttons_array[0][0]+1]
global $custom_buttons_delete_menu[$custom_buttons_array[0][0]+1]
global $custom_buttons_notes[$custom_buttons_array[0][0]+1]
for $i = 1 to $custom_buttons_array[0][0]
if StringInStr($custom_buttons_array[$i][1], "|") then
local $command_array = StringSplit($custom_buttons_array[$i][1], "|")
if IsArray($command_array) and $command_array[0] = 2 then
$custom_buttons_array[$i][1] = $command_array[1]
$custom_buttons_notes[$i] = $command_array[2]
endif
endif
next
endif
endfunc
func CreateButtonGrid(ByRef $buttons_array, $start_x, $start_y)
if not IsArray($buttons_array) then return false
local $i = 1, $row_num, $bmenu
$start_y += $buttons_y_shunt
local $rows = int((110-$buttons_y_shunt) / ($custom_buttons_height+$button_spacing)) - 1
for $j = 0 to $rows
if $custom_buttons_columns = "auto" then
$row_num = Round((($width - 150) - $grid_x)/$custom_buttons_width)-1
else
$row_num = $custom_buttons_columns-1
endif
for $k = 0 to $row_num
local $cbutt_left = $start_x+(($custom_buttons_width+$button_spacing-1)*$k)
local $cbutt_top = $start_y+(($custom_buttons_height+$button_spacing)*$j)
local $custom_notes = ""
$custom_buttons[$i] = GUICtrlCreateButton($buttons_array[$i][0], $cbutt_left, $cbutt_top, $custom_buttons_width-2, $custom_buttons_height, BitOr($WS_TABSTOP,$BS_FLAT))
GUICtrlSetonEvent(-1, "ClickCustomButton")
if $custom_buttons_notes[$i] then $custom_notes = $MSG_LF & $MSG_LF & '[' & StringReplace($custom_buttons_notes[$i], '\n', $MSG_LF & " ") & ']'
GUICtrlSetTipOptional(-1, $MSG_LF & $buttons_array[$i][1] & $custom_notes, " " & StringReplace($buttons_array[$i][0], "&", "") & ":", $tip_icon, $tip_style)
GUICtrlSetResizing(-1, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
GUICtrlSetFont(-1, $custom_buttons_font_size)
$bmenu = GUICtrlCreateContextMenu($custom_buttons[$i])
$custom_buttons_delete_menu[$i] = GUICtrlCreateMenuItem("Delete: """ & $buttons_array[$i][0] & '"', $bmenu)
GUICtrlSetOnEvent(-1, "DeleteButton")
$custom_buttons_rename_menu[$i] = GUICtrlCreateMenuItem("Rename: """ & $buttons_array[$i][0] & '"', $bmenu)
GUICtrlSetOnEvent(-1, "RenameButton")
GUICtrlCreateMenuItem("", $bmenu)
GUICtrlCreateMenuItem("Import Buttons", $bmenu)
GUICtrlSetOnEvent(-1, "ImportButtons")
GUICtrlCreateMenuItem("Export Buttons", $bmenu)
GUICtrlSetOnEvent(-1, "MenuExportButtons")
if $i = $buttons_array[0][0] then exitloop 2
$i += 1
next
next
endfunc
func ReCreateButtonGrid(ByRef $buttons_array, $start_x, $start_y)
if not IsArray($buttons_array) then return false
for $i = 1 to $buttons_array[0][0]
GUICtrlDelete($custom_buttons[$i])
next
if $custom_buttons_columns then
LoadCustomButtonData()
CreateButtonGrid($buttons_array, $start_x, $start_y)
endif
endfunc
func ClickCustomButton()
DoCustomButton()
endfunc
func DoCustomButton($edit_only=false, $clicked=@GUI_CtrlId)
local $do_edit, $do_input_args
if ce_IsPressed(10) or $edit_only then $do_edit = true
if ce_IsPressed(11) then $do_input_args = true
local $clicked_butt = InArray($custom_buttons, $clicked)
if $clicked_butt < 1 or $clicked_butt > $custom_buttons_array[0][0] then
ConsoleAdd("custom button error!")
return
endif
local $this_command = $custom_buttons_array[$clicked_butt][1]
if $do_edit then
local $edit_butt_name = CorzFancyInputBox("Custom Button Name.. ", "Specify a name for the custom button.. " & $MSG_LF & _
"Enter a new name to create a new button.", $custom_buttons_array[$clicked_butt][0] , "" , 350 , 117, default, default, 0, $ffeGUI)
if not $edit_butt_name then return
local $edit_butt_args = CorzFancyInputBox("Arguments.. ", "Enter the arguments for the " & '"' & StringReplace($edit_butt_name, "&", "") & "" & " custom button.. ", $this_command , "" , 480, 100, default, default, 0, $ffeGUI)
if not $edit_butt_args then return
local $edit_butt_notes = CorzFancyInputBox("notes.. ", "Optionally, enter any explanatory notes for .. " & '"' & _
StringReplace($edit_butt_name, "&", "") & '"..', $custom_buttons_notes[$clicked_butt] , "" , @DesktopWidth/2, 100, default, default, 0, $ffeGUI)
if @error = 1 then
if $custom_buttons_notes[$clicked_butt] then $edit_butt_notes = $custom_buttons_notes[$clicked_butt]
endif
local $insert = "updated custom button: "
if $custom_buttons_array[$clicked_butt][0] <> $edit_butt_name then $insert = "Created NEW Button: "
ConsoleAdd( ($edit_butt_notes) ? $insert & '"' & $edit_butt_name & '"' & " command: " & $edit_butt_args & " (" & $edit_butt_notes & ")" : $insert & '"' & $edit_butt_name & '"' & " command: " & $edit_butt_args)
if $edit_butt_notes then $edit_butt_notes = "|" & $edit_butt_notes
IniWrite($ini_path, $NAME_BUTTONS, $edit_butt_name, $edit_butt_args & $edit_butt_notes)
$this_command = $edit_butt_args
ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
if $edit_only then return
endif
if StringLeft($this_command, 1) <> " " then $this_command = " " & $this_command
local $my_control = $inp_extra_args
if $do_input_args then $my_control = $inp_input_params
local $current_params = GUICtrlRead($my_control)
if not StringInStr($current_params, $this_command) then
GUICtrlSetData($my_control, $current_params & $this_command)
else
GUICtrlSetData($my_control, StringReplace($current_params, $this_command, ""))
endif
endfunc
func RenameButton()
local $clicked_butt = InArray($custom_buttons_rename_menu, @GUI_CtrlId)
if $clicked_butt < 1 or $clicked_butt > $custom_buttons_array[0][0] then
ConsoleAdd("custom button out of bounds!")
return
endif
DialogOpen()
local $edit_butt_name = InputBox("Custom Button Name.. ", "Specify a new name for this custom button.. ", $custom_buttons_array[$clicked_butt][0] , "" , 300, 130, default, default, 0, $ffeGUI)
DialogClose()
if not $edit_butt_name or $edit_butt_name == $custom_buttons_array[$clicked_butt][0] then return
local $tmp_inival = IniRead($ini_path, $NAME_BUTTONS, $custom_buttons_array[$clicked_butt][0], "")
if not $tmp_inival then return
if IniDelete($ini_path, $NAME_BUTTONS, $custom_buttons_array[$clicked_butt][0]) then
if IniWrite($ini_path, $NAME_BUTTONS, $edit_butt_name, $tmp_inival) then
ConsoleAdd("custom button """ & $custom_buttons_array[$clicked_butt][0] & """ renamed to """ & $edit_butt_name & '"')
ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
endif
endif
endfunc
func DeleteButton()
local $clicked_butt = InArray($custom_buttons_delete_menu, @GUI_CtrlId)
if $clicked_butt < 1 or $clicked_butt > $custom_buttons_array[0][0] then
ConsoleAdd("custom button out of bounds!")
return
endif
local $check_warn = IniReadCheckBoxValue($ini_path, $my_name, "warning_seen_butt_delete", $OFF)
if $check_warn = $OFF then
DialogOpen()
MsgBox($MB_OK, "This is your only warning!", _
"ffe isn't some namby-pamby, hold-your-hand baby-app, it's designed for WORK. " & $MSG_LF & $MSG_LF & _
"In future, when you choose to delete a custom button it will be DELETED, GONE," & $MSG_LF & _
"VANISHEDwarning_seen_butt_delete", $ON)
endif
if IniDelete($ini_path, $NAME_BUTTONS, $custom_buttons_array[$clicked_butt][0]) then
ConsoleAdd("deleted button: """ & $custom_buttons_array[$clicked_butt][0] & '"')
ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
else
ConsoleAdd("error deleting custom button: """ & $custom_buttons_array[$clicked_butt][0] & '"')
endif
endfunc
func DelayedDoIt()
if $delay_start_at then
TrayItemSetState($tray_toggle_delayed_start, $OFF)
$delay_start_at = false
return false
endif
DialogOpen()
local $event_mode = AutoItSetOption("GUIOnEventMode", 0)
local $coord_mode = AutoItSetOption("GUICoordMode", 0)
local $datetime_picker, $now_date[7] = [False, @YEAR, @mon, @mday, @hour, @min, @sec]
local $msg, $tip, $ttt, $aw = 285, $ah = 190
local $GUI_Delayed = GUICreate("Delayed Start Options.. ", $aw, $ah, -1, @DesktopHeight/4, $WS_CAPTION, $WS_EX_TOPMOST, $ffeGUI)
local $dummy_first_control = GUICtrlCreateDummy()
GUICtrlCreateLabel("You can run the job at a later time." , 15, 15, $aw-25)
GUICtrlCreateLabel("Select the required countdown delay:" , 0, 20, $aw-25)
$tip = "Select the number of days to wait before starting the job "
$ttt = "Days Delay"
local $lab_days = GUICtrlCreateLabel("Days:", 0, 27)
GUICtrlSetTipOptional(-1, $tip, $ttt)
local $combo_delay_days = GUICtrlCreateCombo("", 30, -2, 42)
for $i = 1 to 365
GUICtrlSetData(-1, $i)
next
GUICtrlSetTipOptional(-1, $tip, $ttt)
$tip = "Select the number of hours to wait before starting the job "
$ttt = "Hours Delay"
GUICtrlCreateLabel("Hours:", 55, 2)
GUICtrlSetTipOptional(-1, $tip, $ttt)
local $combo_delay_hours = GUICtrlCreateCombo("", 35, -2, 42)
for $i = 1 to 24
GUICtrlSetData(-1, $i)
next
GUICtrlSetTipOptional(-1, $tip, $ttt)
$tip = "Select the number of minutes to wait before starting the job "
$ttt = "Minutes Delay"
GUICtrlCreateLabel("Minutes:", 50, 2)
GUICtrlSetTipOptional(-1, $tip, $ttt)
local $combo_delay_minutes = GUICtrlCreateCombo("", 45, -2, 42)
for $i = 1 to 60
GUICtrlSetData(-1, $i)
next
GUICtrlSetTipOptional(-1, $tip, $ttt)
GUISetCoord(15, 75)
GUICtrlCreateLabel("Alternatively, pick a date/time directly:" , 0, 20, $aw-25)
local $check_enable_datepick = GUICtrlCreateCheckbox("", 0, 22, 26, 26, BitOr($BS_AUTOCHECKBOX, $BS_PUSHLIKE,$BS_ICON))
if @compiled then
GUICtrlSetImage(-1,$me_app, $time_icon_index, 0)
else
GUICtrlSetImage(-1, ".\icons\ffe-time.ico", -1, 0)
endif
local $picker = GUICtrlCreateDate($GUI_Delayed, 30, 1, 226, 24, $DTS_UPDOWN)
GUICtrlSetFont(-1, 9.5)
GUICtrlSetState(-1, $GUI_DISABLE)
$ttt = "Direct Date & Time Input"
GUICtrlSetTipOptional(-1, "click here to instead enable direct date & time settings ", $ttt)
$datetime_picker = GUICtrlGetHandle($picker)
_GUICtrlDTP_SetFormat($datetime_picker, "ddd yyyy MMM dd hh:mm ttt")
_GUICtrlDTP_SetSystemTime($datetime_picker, $now_date)
local $range_array[14] = [true, @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC]
_GUICtrlDTP_SetRange ($datetime_picker, $range_array )
local $dummy_last_control = GUICtrlCreateDummy()
for $i = $dummy_first_control to $dummy_last_control
GUICtrlSetResizing($i, BitOr($GUI_DOCKTOP, $GUI_DOCKLEFT, $GUI_DOCKSIZE))
next
guiSetCoord($aw-172, $ah-28)
local $GUI_Delayed_NO = GUICtrlCreateButton("Cancel", 0, 0, 75, 20, BitOr($WS_TABSTOP, $BS_FLAT))
local $GUI_Delayed_OK = GUICtrlCreateButton("Set Delay", 80, 0, 80, 20, BitOr($WS_TABSTOP, $BS_FLAT, $BS_DEFPUSHBUTTON))
ControlFocus($ffeGUI, "", $combo_delay_days)
GUISetState(@SW_SHOW, $GUI_Delayed)
while true
sleep(10)
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_CLOSE, $GUI_Delayed_NO
exitloop
case $GUI_Delayed_OK
$delay_start_at = ""
if GUICtrlRead($check_enable_datepick) = $ON then
local $user_time_array = _GUICtrlDTP_GetSystemTime($datetime_picker)
_GUICtrlDTP_Destroy($datetime_picker)
$delay_start_at = $user_time_array[0] & "/" & $user_time_array[1] & "/" & $user_time_array[2] & " " & $user_time_array[3] & ":" & $user_time_array[4] & ":" & $user_time_array[5]
else
if GUICtrlRead($combo_delay_days) then
$delay_start_at = _DateAdd("D", GUICtrlRead($combo_delay_days), _NowCalc())
else
$delay_start_at = _NowCalc()
endif
if GUICtrlRead($combo_delay_hours) then $delay_start_at = _DateAdd("h", GUICtrlRead($combo_delay_hours), $delay_start_at)
if GUICtrlRead($combo_delay_minutes) then $delay_start_at = _DateAdd("n", GUICtrlRead($combo_delay_minutes), $delay_start_at)
endif
exitloop
case $check_enable_datepick
local $state = $GUI_ENABLE
if GUICtrlRead($check_enable_datepick) = $ON then
GUICtrlSetData($GUI_Delayed_OK, "Set Time")
GUICtrlSetState($picker, $GUI_ENABLE)
$state = $GUI_DISABLE
else
GUICtrlSetData($GUI_Delayed_OK, "Set Delay")
GUICtrlSetState($picker, $GUI_DISABLE)
endif
for $i = $lab_days to $combo_delay_minutes
GUICtrlSetState($i, $state)
next
endswitch
dim $range_array[14] = [true, @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC]
_GUICtrlDTP_SetRange($datetime_picker, $range_array)
wend
GUIDelete($GUI_Delayed)
AutoItSetOption("GUIOnEventMode", $event_mode )
AutoItSetOption("GUICoordMode", $coord_mode)
DialogClose()
if $delay_start_at then TrayItemSetState($tray_toggle_delayed_start, $ON)
endfunc
func ComboMenuImportData()
MenuImportData()
endfunc
func TrayMenuImportData()
MenuImportData()
endfunc
func ImportButtons()
MenuImportData($NAME_BUTTONS)
endfunc
func MenuImportData($dtype="")
local $import_dir = IniRead($ini_path, $my_name, "import_dir", @MyDocumentsDir)
local $i_type = "data"
if $dtype then $i_type = $dtype
local $data_inifile = FileOpenDialog("locate the " & $i_type & " file..", $import_dir, "Ini files (*.ini)|All files (*.*)", $FD_PATHMUSTEXIST, "", $ffeGUI)
if not $data_inifile then return
if not FileExists($data_inifile) then
ConsoleAdd("import aborted")
return false
endif
IniWrite($ini_path, $my_name, "import_dir", GetParent($data_inifile))
ImportData($data_inifile, $dtype)
endfunc
func ImportData($import_file, $dtype="")
if not FileExists($import_file) then return false
ConsoleAdd($LOG_LF & "beginning data import..")
local $import_ini_sections = IniReadSectionNames($import_file)
DialogOpen()
local $user_choice = CorzImportExportChooser($import_ini_sections, "import", 0, $dtype)
local $err = @error
DialogClose()
if not $user_choice then
local $msg = "import aborted"
if not $dtype then $dtype = "usable data"
if $err then $msg &= ": no " & $dtype & " found in file"
ConsoleAdd($msg)
return false
endif
local $do_add=false, $r_type, $do_added=false
local $tmp_ini = @TempDir & "\ffe-import-temp.ini"
local $restart_required = false
local $restart_settings = StringSplit("image_buttons,sort_presets_list,do_tooltips,console_wordwrap", ",")
FileCopy($ini_path, $tmp_ini)
for $i = 1 to $import_ini_sections[0]
$do_add = false
switch $import_ini_sections[$i]
case $my_name
if StringInStr($user_choice, $NAME_SETTINGS) then
$do_add = true
$r_type = $NAME_SETTINGS
endif
case $NAME_BUTTONS
if StringInStr($user_choice, $NAME_BUTTONS) then
$do_add = true
$r_type = $NAME_BUTTONS
endif
case else
if StringInStr($user_choice, $NAME_PRESETS) and not StringInStr($import_ini_sections[$i], "--backup--") then
$do_add = true
$r_type = "preset" & ": " & $import_ini_sections[$i]
endif
endswitch
if $do_add then
local $this_section = IniReadSection($import_file, $import_ini_sections[$i])
if not @error then
switch $import_ini_sections[$i]
case $my_name
DialogOpen()
local $warn_main_settings = MsgBox($MB_OKCANCEL+$MB_ICONWARNING, "Overwrite MAIN Settings?!?", _
"This will COMPLETELY OVERWRITE MAIN FFE SETTINGS!!!" & $MSG_LF & _
"(but only those settings present in the imported ini file)" & $MSG_LF & $MSG_LF & _
"Are you ABSOLUTELY sure you wish to do this? ", 30, $ffeGUI)
DialogClose()
if $warn_main_settings = 1 then
for $st = 1 to $this_section[0][0]
if IniWrite($ini_path, $my_name, $this_section[$st][0], $this_section[$st][1]) then
ConsoleAdd("wrote setting: " & $this_section[$st][0] & "=" & $this_section[$st][1])
Assign($this_section[$st][0], $this_section[$st][1], $ASSIGN_EXISTFAIL)
if InArray($restart_settings, $this_section[$st][0]) then $restart_required = true
$do_added = true
endif
next
endif
case $NAME_BUTTONS
for $st = 1 to $this_section[0][0]
if IniWrite($ini_path, $NAME_BUTTONS, $this_section[$st][0], $this_section[$st][1]) then
ConsoleAdd("wrote button: " & $this_section[$st][0] & "=" & $this_section[$st][1])
$do_added = true
endif
next
case else
if IniWriteSection($ini_path, $import_ini_sections[$i], $this_section) then
ConsoleAdd("imported " & $r_type)
$do_added = true
endif
endswitch
endif
endif
next
if StringInStr($user_choice, $NAME_PRESETS) then UpdatePresetsCombo()
if StringInStr($user_choice, $NAME_BUTTONS) then ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
if $do_added then
local $bax_ini = GetParent($ini_path) & "\PRE-IMPORT [" & @YEAR & "-" & @MON & "-" & @MDAY & "@" & @hour & "." & @min & "] ffe.ini"
if $restart_required then ConsoleAdd("init settings detected - restart to see changes")
if FileMove($tmp_ini, $bax_ini) then
ConsoleAdd("old ffe.ini backed up to: " & $bax_ini)
endif
else
FileDelete($tmp_ini)
endif
endfunc
func MenuExportData()
ExportData()
endfunc
func TrayMenuExportData()
ExportData()
endfunc
func MenuExportButtons()
ExportData($NAME_BUTTONS)
endfunc
func ExportData($dtype="")
$presets = IniReadSectionNames($ini_path)
if not IsArray($presets) then return
ConsoleAdd($LOG_LF & "beginning data export..")
local $tmp_ini_path = @TempDir & "\ffe-data-export.ini"
if FileExists($tmp_ini_path) then FileDelete($tmp_ini_path)
DialogOpen()
local $user_choice = CorzImportExportChooser($presets, "export", 0, $dtype)
DialogClose()
if not $user_choice then
ConsoleAdd("export aborted")
return false
endif
local $do_add=false, $r_type, $do_added=false
for $i = 1 to $presets[0]
$do_add = false
switch $presets[$i]
case $my_name
if StringInStr($user_choice, $NAME_SETTINGS) then
$do_add = true
$r_type = $NAME_SETTINGS
endif
case $NAME_BUTTONS
if StringInStr($user_choice, $NAME_BUTTONS) then
$do_add = true
$r_type = $NAME_BUTTONS
endif
case else
if StringInStr($user_choice, $NAME_PRESETS) and not StringInStr($presets[$i], "--backup--") then
$do_add = true
$r_type = "preset" & ": " & $presets[$i]
endif
endswitch
if $do_add then
$do_added = true
local $this_section = IniReadSection($ini_path, $presets[$i])
if not @error then
switch $presets[$i]
case $my_name
if IniWriteSection($tmp_ini_path, $my_name, $this_section) then ConsoleAdd("exported " & $r_type)
case $NAME_BUTTONS
if IniWriteSection($tmp_ini_path, $NAME_BUTTONS, $this_section) then ConsoleAdd("exported " & $r_type)
case else
if not InArray($not_presets, $presets[$i]) and StringLeft($presets[$i], 10) <> "--backup--" then
if IniWriteSection($tmp_ini_path, $presets[$i], $this_section) then ConsoleAdd("exporting preset: " & $r_type)
endif
endswitch
endif
endif
next
if $do_added then
local $export_name = "ffe-export-"
if StringInStr($user_choice, $NAME_SETTINGS) then $export_name &= StringLower(StringReplace($NAME_SETTINGS, " ", "-")) & "-"
if StringInStr($user_choice, $NAME_BUTTONS) then $export_name &= StringLower(StringReplace($NAME_BUTTONS, " ", "-")) & "-"
if StringInStr($user_choice, $NAME_PRESETS) then $export_name &= StringLower(StringReplace($NAME_PRESETS, " ", "-")) & "-"
CRT($export_name, "-")
local $export_dir = IniRead($ini_path, $my_name, "export_dir", @MyDocumentsDir)
DialogOpen()
local $saved_file = FileSaveDialog("specify a location to save the file..", $export_dir, "Ini files (*.ini)|All files (*.*)", $FD_PROMPTOVERWRITE , $export_name & ".ini", $ffeGUI)
DialogClose()
if $saved_file then
IniWrite($ini_path, $my_name, "export_dir", GetParent($saved_file))
local $i_type = "data"
if $dtype then $i_type = $dtype
if FileMove($tmp_ini_path, $saved_file, 9) then ConsoleAdd("finished exporting " & $i_type & " to: " & $saved_file)
else
ConsoleAdd("well, that was fun.")
endif
endif
endfunc
main settings", "presets" and "custom buttons".
mainpresetsbuttons".
func CorzImportExportChooser(ByRef $ini_sections_array, $mode="import", $timeout=0, $dtype="")
if not IsArray($ini_sections_array) then
if $mode = "import" then
ConsoleAdd("no ini [sections] found to import!")
else
ConsoleAdd("a serious ini-based error of some unknown description occured")
endif
return false
endif
local $ie_title = "ffe " & $mode & " choices.."
local $prompt = "Which data do you wish to " & $mode & "?"
local $err = 0, $i_type, $no_match = false
local $ie_x = IniRead($ini_path, $my_name, "import_export_chooser_x", $x + 6)
local $ie_y = IniRead($ini_path, $my_name, "import_export_chooser_y", $y + 26)
local $ie_w = IniRead($ini_path, $my_name, "import_export_chooser_width", 300)
local $ie_h = 170
local $min_w = 300
if $ie_w < $min_w then $ie_w = $min_w
local $return = false, $last_event_mode = AutoItSetOption("GUIOnEventMode", 0)
local $coord = AutoItSetOption("GUICoordMode", 0)
local $style = BitOr($WS_CAPTION, $WS_SYSMENU, $WS_POPUP, $WS_SIZEBOX)
local $styleX = BitOr($WS_EX_CONTEXTHELP, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)
local $ie_GUI = GUICreate($ie_title, $ie_w, $ie_h, $ie_x, $ie_y, $style, $styleX, $ffeGUI)
GUIsetFont(9)
local $but_Cancel = GUICtrlCreateButton("Cancel", 6, $ie_h-26, 60, 22)
GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR+$GUI_DOCKLEFT+$GUI_DOCKWIDTH)
local $but_OK = GUICtrlCreateButton("OK", $ie_w-60, 0, 50, 22, $BS_DEFPUSHBUTTON)
GUICtrlSetState(-1, $GUI_ONTOP)
GUICtrlSetResizing(-1, $GUI_DOCKSTATEBAR+$GUI_DOCKWIDTH+$GUI_DOCKRIGHT)
GUISetCoord(10, 7)
GUICtrlCreateLabel($prompt, 0, 0, $ie_w-30)
GUICtrlSetFont(-1, default, 800)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUISetCoord(20, 27)
local $chk_everything, $chk_main_settings, $chk_presets, $chk_custom_buttons, $got_main=false, $got_presets=false, $got_buttons=false, $t_count=0
$i_type = $NAME_SETTINGS
$chk_main_settings = GUICtrlCreateCheckbox(_StringProper($i_type), 0, 0)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
if InArray($ini_sections_array, $my_name) then
$got_main = true
$t_count += 1
if $dtype = $i_type then GUICtrlSetState(-1, $ON)
else
if $dtype = $i_type then $no_match = true
GUICtrlSetState(-1, $GUI_DISABLE)
endif
$i_type = $NAME_PRESETS
$chk_presets = GUICtrlCreateCheckbox(_StringProper($i_type), 0, 22)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
if HasPresets($ini_sections_array) then
$got_presets = true
$t_count += 1
if $dtype = $i_type then GUICtrlSetState(-1, $ON)
else
if $dtype = $i_type then $no_match = true
GUICtrlSetState(-1, $GUI_DISABLE)
endif
$i_type = $NAME_BUTTONS
$chk_custom_buttons = GUICtrlCreateCheckbox(_StringProper($i_type), 0, 22)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
if InArray($ini_sections_array, $i_type) then
$got_buttons = true
$t_count += 1
if $dtype = $i_type then GUICtrlSetState(-1, $ON)
else
if $dtype = $i_type then $no_match = true
GUICtrlSetState(-1, $GUI_DISABLE)
endif
if $t_count > 1 then
$chk_everything = GUICtrlCreateCheckbox("All", 120, 0)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
endif
if $no_match then
$err = 1
else
if $dtype then
$return = $dtype
else
GUISetState(@SW_SHOW, $ie_GUI)
WinMove($ie_title, "", default, default, $ie_w, $ie_h)
if $timeout <> 0 then local $dialog_begin = TimerInit()
local $size_array, $got_ok=false
WinActivate($ie_title)
while true
switch GUIGetMsg()
case $GUI_EVENT_RESIZED
$size_array = WinGetPos($ie_title)
if not IsArray($size_array) then continueloop
if $size_array[2] < $min_w then WinMove($ie_title, "", default, default, $min_w, $ie_h)
if $size_array[3] <> $ie_h then WinMove($ie_title, "", default, default, $min_w, $ie_h)
case $GUI_EVENT_CLOSE, $but_Cancel
$return = ""
exitloop
case $but_OK
if GUICtrlRead($chk_main_settings) = $ON then $return &= $NAME_SETTINGS
if GUICtrlRead($chk_presets) = $ON then $return &= $NAME_PRESETS
if GUICtrlRead($chk_custom_buttons) = $ON then $return &= $NAME_BUTTONS
$got_ok = true
exitloop
case $chk_everything
if GUICtrlRead($chk_everything) = $OFF then
GUICtrlSetState($chk_main_settings, $OFF)
GUICtrlSetState($chk_presets, $OFF)
GUICtrlSetState($chk_custom_buttons, $OFF)
else
if $got_main then GUICtrlSetState($chk_main_settings, $ON)
if $got_presets then GUICtrlSetState($chk_presets, $ON)
if $got_buttons then GUICtrlSetState($chk_custom_buttons, $ON)
endif
endswitch
if $timeout <> 0 then
if TimerDiff($dialog_begin)/1000 > $timeout then exitloop
endif
wend
if $return or $got_ok then
$size_array = WinGetPos($ie_title)
if IsArray($size_array) then
if $size_array[0] then IniWrite($ini_path, $my_name, "import_export_chooser_x", $size_array[0])
if $size_array[1] then IniWrite($ini_path, $my_name, "import_export_chooser_y", $size_array[1])
if $size_array[2] then IniWrite($ini_path, $my_name, "import_export_chooser_width", $size_array[2])
endif
endif
endif
endif
AutoItSetOption("GUIOnEventMode", $last_event_mode)
AutoItSetOption("GUICoordMode", $coord)
GUIDelete($ie_GUI)
return SetError($err, 0, $return)
endfunc
func HasPresets(ByRef $ini_section_names_array)
if not IsArray($ini_section_names_array) then return false
for $i = 1 to $ini_section_names_array[0]
if $ini_section_names_array[$i] = $my_name or $ini_section_names_array[$i] = $NAME_BUTTONS then continueloop
return true
next
endfunc
func ClickButtWipeSettings()
WipeSettings()
DoArgsCreate()
endfunc
func WipeSettings()
GUICtrlSetData($inp_input_params, "")
GUICtrlSetData($combo_v_codec, $video_codecs)
GUICtrlSetData($combo_v_bitrate, $video_bitrates)
GUICtrlSetData($combo_frames_per_second, $frames_per_second)
GUICtrlSetData($inp_x_size, "")
GUICtrlSetData($inp_y_size, "")
GUICtrlSetData($inp_crop_top, "")
GUICtrlSetData($inp_crop_left, "")
GUICtrlSetData($inp_crop_right, "")
GUICtrlSetData($inp_crop_bottom, "")
GUICtrlSetData($combo_a_codec, $audio_codecs)
GUICtrlSetData($combo_a_bitrate, $audio_bitrates)
GUICtrlSetData($combo_target_type, $target_types)
GUICtrlSetData($combo_preset_resizes, $preset_resizes)
GUICtrlSetData($inp_extra_args, "")
GUICtrlSetState($check_resize_first, $OFF)
endfunc
func AddShortTestParam()
if ce_IsPressed(10) then UserEditShortTestParams()
local $current_params = GUICtrlRead($inp_extra_args)
local $this_command = " " & "-vframes " & $short_test_frames
if not StringInStr($current_params, $this_command) then
if not StringInStr($current_params, "vframes") then GUICtrlSetData($inp_extra_args, $current_params & $this_command)
else
GUICtrlSetData($inp_extra_args, StringReplace($current_params, $this_command, ""))
endif
endfunc
func UserEditShortTestParams()
DialogOpen()
local $user_frames = InputBox("Short Test Frames.. ", "Specify a number of frames for the short test button.. ", $short_test_frames , "" , 350, 130, default, default, 0, $ffeGUI)
DialogClose()
if $user_frames then
$user_frames = Number($user_frames)
if $user_frames < 1 or $user_frames > 10000 then $user_frames = 300
$short_test_frames = $user_frames
IniWrite($ini_path, $my_name, "short_test_frames", $short_test_frames)
GUICtrlSetTipOptional($butt_quicktest , " Adds some parameters to process only the first " & $short_test_frames & " frames of video. " & $MSG_LF & _
" Feel free to edit this number! (hold SHIFT key while you click to do this first) ", "Add Quick Test Parameters")
endif
endfunc
func HelpMeNow()
local $this_helpfile, $this_command, $console_out
local $clicked_butt = InArray($help_butts, @GUI_CtrlId)
if $clicked_butt < 1 or $clicked_butt > 5 then
SetConsoleOutput("ERROR!")
return
endif
local $do_open = false
if ce_IsPressed(10) then $do_open = true
local $my_help_entry = StringSplit($help_texts[$clicked_butt], "|")
$this_helpfile = $my_help_entry[2]
$this_command = $my_help_entry[3]
local $err, $full_log = ""
local $nfo_loc = $data_parent & "\" & $this_helpfile
if $portable then $nfo_loc = @ScriptDir & "\" & $this_helpfile
if not StringInStr($got_helps, $this_helpfile) or not FileExists($nfo_loc) then
local $gethelp = Run($ffmpeg_binary & " " & $this_command, "", @SW_HIDE, $STDOUT_CHILD)
while true
$err = false
$console_out = StdoutRead($gethelp)
$err = @error
if $console_out then $full_log &= $console_out
if $err then exitloop
Sleep(5)
wend
StdioClose($gethelp)
ProcessClose($gethelp)
if FileExists($nfo_loc) then FileDelete($nfo_loc)
local $help_file_open = FileOpen($nfo_loc, $FO_OVERWRITE+ $FO_CREATEPATH+$FO_UTF8_NOBOM)
FileWrite($help_file_open, $full_log)
FileClose($help_file_open)
already seen" list
if not StringInStr($got_helps, $this_helpfile) then $got_helps &= $this_helpfile & "|"
else
$full_log = FileRead($nfo_loc)
endif
if $do_open then
ShellExecute($nfo_loc)
else
SetConsoleOutput($full_log, true)
endif
endfunc
func ShowOutputButts()
GUICtrlSetState($butt_copy2clip, $GUI_SHOW)
GUICtrlSetState($butt_clearout, $GUI_SHOW)
GUICtrlSetState($butt_find, $GUI_ENABLE)
GUICtrlSetState($butt_find, $GUI_SHOW)
endfunc
func HideOutputButts()
GUICtrlSetState($butt_copy2clip, $GUI_HIDE)
GUICtrlSetState($butt_clearout, $GUI_HIDE)
GUICtrlSetState($butt_find, $GUI_HIDE)
GUICtrlSetState($butt_find, $GUI_DISABLE)
endfunc
func EnableActiveInputs()
if not $ffmpeg_binary then return
GUICtrlSetState($butt_doit, $GUI_ENABLE)
GUICtrlSetState($inp_inputfile, $GUI_ENABLE)
GUICtrlSetState($butt_quicktest, $GUI_ENABLE)
GUICtrlSetState($butt_mediareport, $GUI_ENABLE)
if IsArray($help_texts) then
for $i = 1 to $help_texts[0]
GUICtrlSetState($help_butts[$i], $GUI_ENABLE)
next
endif
if $do_output = $ON then GUICtrlSetState($inp_outputfile, $GUI_ENABLE)
$generate_script = false
endfunc
func DisableActiveInputs()
GUICtrlSetState($butt_doit, $GUI_DISABLE)
GUICtrlSetState($inp_inputfile, $GUI_DISABLE)
GUICtrlSetState($butt_quicktest, $GUI_DISABLE)
GUICtrlSetState($butt_mediareport, $GUI_DISABLE)
if IsArray($help_texts) then
for $i = 1 to $help_texts[0]
GUICtrlSetState($help_butts[$i], $GUI_DISABLE)
next
endif
GUICtrlSetState($inp_outputfile, $GUI_DISABLE)
endfunc
func ReturnNow($msg="error", $retval=-1)
ConsoleAdd($msg)
SetHotKeys()
$do_drop_window = $drop_win_state
ShowOutputButts()
EnableActiveInputs()
WinSetTitle($ffeGUI, "", $my_title)
return $retval
endfunc
func CopyOutput()
if GUICtrlRead($edit_console_output) then ClipPut(GUICtrlRead($edit_console_output))
endfunc
func SaveOutput($output_data)
if not $output_data then return false
local $log_outputfile
$job_log_location = DeTokenize(IniRead($ini_path, $current_preset, "job_log_location", $job_log_location))
if not $job_log_location then $job_log_location = "@datadir\logs"
CRT($job_log_location)
local $use_job_log_location = $job_log_location & "\"
if IsWild($user_inputfile) then $use_job_log_location &= "[BATCH]_"
if IsWild($user_outputfile) then
$log_outputfile = $use_job_log_location & CleanPath(RemoveExtension($outputfile)) & $matof_separator & $matof_string & ".log"
else
$log_outputfile = $use_job_log_location & RemoveExtension(BaseName($outputfile)) & ".log"
endif
local $dl_append = 10
if $job_log_append = $ON then $dl_append = 9
local $my_log_file = FileOpen($log_outputfile, $dl_append)
FileWriteLine($my_log_file, $output_data)
FileClose($my_log_file)
endfunc
func ClearOutput()
SetConsoleOutput("")
endfunc
func OpenSourceDir()
local $srcdir = GetParent($inputfile)
if IsDir($srcdir) then
ShellExecute($srcdir)
else
GuiCtrlSetColor($lab_inputfile, $COLOR_RED)
AdlibRegister("EndWarning", 150)
endif
endfunc
func EndWarning()
GuiCtrlSetColor($lab_inputfile, default)
endfunc
func GetDroppedItem()
if @GUI_DRAGID = -1 then
switch @GUI_DROPID
case $inp_inputfile, $lab_main_drop, $hGIF
if IsAllowedImage(@GUI_DRAGFILE) then
$drop_win_image = @GUI_DRAGFILE
if $fluid_image_menu = $OFF and $auto_copy_images = $ON then
FileCopy(@GUI_DRAGFILE, $drop_win_image_folder & "\" & BaseName(@GUI_DRAGFILE))
if FileExists($drop_win_image_folder & "\" & BaseName(@GUI_DRAGFILE)) then
$drop_win_image = $drop_win_image_folder & "\" & BaseName(@GUI_DRAGFILE)
else
ConsoleAdd("error copying image to fixed drop images directory")
endif
endif
$switching = true
Check4GIFmethod()
HideDropWindow()
else
if StringInStr(FileGetAttrib(@GUI_DRAGFILE), "D") then
GUICtrlSetData($inp_inputfile, @GUI_DRAGFILE & "\*.*")
else
if BaseName(@GUI_DRAGFILE) = "ffmpeg.exe" then
SetFFMpegBinaryLocation(@GUI_DRAGFILE)
GUICtrlSetData($inp_inputfile, StringReplace(GUICtrlRead($inp_inputfile), @GUI_DRAGFILE, ""))
return
else
GUICtrlSetData($inp_inputfile, @GUI_DRAGFILE)
endif
endif
endif
UpdateInput()
if $drop_command then
switch $drop_command
case "Go"
DoIt()
case "Report"
if not StringInStr(FileGetAttrib(@GUI_DRAGFILE), "D") then GenerateReport()
endswitch
DoArgsCreate()
endif
case $inp_outputfile
GUICtrlSetData($inp_outputfile, @GUI_DRAGFILE)
$ini_outputfile = @GUI_DRAGFILE
DoArgsCreate()
case $combo_presets
ImportData(@GUI_DRAGFILE)
IniWrite($ini_path, $my_name, "import_dir", GetParent(@GUI_DRAGFILE))
case $inp_input_params
case $edit_console_output
endswitch
else
return false
endif
endfunc
func BrowseForInputFile()
local $input_dir = IniRead($ini_path, $my_name, "input_dir", @MyDocumentsDir)
DialogOpen()
local $tmp_ipf = FileOpenDialog("locate the input file..", $input_dir, $file_types, $FD_PATHMUSTEXIST, "", $ffeGUI)
DialogClose()
if not $tmp_ipf then return false
IniWrite($ini_path, $my_name, "input_dir", GetParent($tmp_ipf))
$inputfile = $tmp_ipf
GUICtrlSetData($inp_inputfile, $inputfile)
DoArgsCreate()
return true
endfunc
func BrowseForOutputFile()
local $save_output_dir = IniRead($ini_path, $my_name, "save_output_dir", @MyDocumentsDir)
DialogOpen()
local $tmp_output = FileSaveDialog("specify the output file..", $save_output_dir, $file_types, 0, "", $ffeGUI)
DialogClose()
if not $tmp_output then return 0
if not StringInStr($tmp_output, ".") then $tmp_output &= "." & $default_extension
IniWrite($ini_path, $my_name, "save_output_dir", GetParent($tmp_output))
$outputfile = $tmp_output
GUICtrlSetData($inp_outputfile, $outputfile)
DoArgsCreate()
return true
endfunc
func MenuChooseFixedImageLocation()
local $choose_root = "::{450D8FBA-AD25-11D0-98A8-0800361B1103}" My Documents"
if $drop_win_image_folder then $choose_root = $drop_win_image_folder
DialogOpen()
local $user_choose_folder = FileSelectFolder("Select a new image folder (for the FIXED menu)", $choose_root, 7, $choose_root, $ffeGUI)
local $err = @error
DialogClose()
if not $user_choose_folder then
if $err then
ConsoleAdd("select image folder aborted: user cancelled")
else
ConsoleAdd("select image folder aborted: invalid selection")
endif
return
endif
if FileExists($user_choose_folder) then
$drop_win_image_folder = $user_choose_folder
ConsoleAdd("fixed menu image folder set to: " & $drop_win_image_folder)
IniWrite($ini_path, $my_name, "drop_win_image_folder", $drop_win_image_folder)
GetDropWinImageFolder()
HideDropWindow()
endif
endfunc
func AddSizing()
local $resize = ""
local $matof_tmp_string = ""
local $x_size = GUICtrlRead($inp_x_size)
local $y_size = GUICtrlRead($inp_y_size)
if $x_size and $y_size then
$resize = $x_size & "x" & $y_size
$matof_tmp_string ="[" & $resize & "]"
endif
if GUICtrlRead($combo_preset_resizes) then
$resize = GUICtrlRead($combo_preset_resizes)
$matof_tmp_string ="[size=" & $resize & "]"
endif
$matof_string &= $matof_tmp_string
if $resize then $extra_args &= " -s " & $resize
endfunc
func AddCropping()
local $matof_tmp_string = "[crop "
if GUICtrlRead($inp_crop_top) then
$extra_args &= " -croptop " & GUICtrlRead($inp_crop_top)
$matof_tmp_string &= "t=" & GUICtrlRead($inp_crop_top) & " -cropright " & GUICtrlRead($inp_crop_right)
$matof_tmp_string &= "r=" & GUICtrlRead($inp_crop_right) & " -cropbottom " & GUICtrlRead($inp_crop_bottom)
$matof_tmp_string &= "b=" & GUICtrlRead($inp_crop_bottom) & " -cropleft " & GUICtrlRead($inp_crop_left)
$matof_tmp_string &= "l=" & GUICtrlRead($inp_crop_left) & "]"
if $matof_tmp_string <> "[crop]" then $matof_string &= $matof_tmp_string
endfunc
func GetExtFromCodec($v_codec, $file_name="")
local $this_ext
if not StringInStr($extra_args, "-vn") then
switch true
case $v_codec = "copy"
$this_ext = GetExtension($inputfile)
if IsWild($this_ext) then $this_ext = $default_extension
case StringInStr($v_codec, "xvid"), StringInStr($v_codec, "mjpeg")
$this_ext = "avi"
case StringInStr($v_codec, "mpeg4")
$this_ext = "mp4"
case StringInStr($v_codec, "mpeg")
$this_ext = "mpg"
case StringInStr($v_codec, "flv"), StringInStr($v_codec, "flash")
$this_ext = "flv"
case StringInStr($v_codec, "wmv"), StringInStr($v_codec, "msvideo")
$this_ext = "wmv"
case StringInStr($v_codec, "vp"), StringInStr($v_codec, "webp")
$this_ext = "webm"
case else
$this_ext = $default_extension
endswitch
else
local $a_codec_inp = GUICtrlRead($combo_a_codec)
if $a_codec_inp = "copy" then
$known_files" (associative array), use the pre-determined extension..
if AAExists($known_files, $file_name) then
$this_ext = AAItem($known_files, $file_name)
else
$this_ext = ProbeFileForCodec($file_name)
$this_ext = GetCodecExtFromCodecName($this_ext)
if $this_ext then AAAdd($known_files, $file_name, $this_ext)
endif
else
$this_ext = GetCodecExtFromCodecName($a_codec_inp)
endif
endif
return $this_ext
endfunc
func ProbeFileForCodec($file)
if not FileExists($file) then return false
if AAExists($known_files, $file) then return AAItem($known_files, $file)
if IsWild($file) then return false
local $probe_data, $err
if FileExists($ffprobe_loc) then
local $probe_file = Run( $ffprobe_loc & " -v error -select_streams a:0 -show_entries stream=codec_name " & ' "'& $file & '"', "", @SW_HIDE, $STDOUT_CHILD)
else
return false
endif
local $console_out
while true
$err = false
$console_out = StdoutRead($probe_file)
$err = @error
if $console_out then $probe_data &= $console_out
if $err then exitloop
Sleep(5)
wend
StdioClose($probe_file)
ProcessClose($probe_file)
if not StringInStr($probe_data, "codec_name") then return false
$probe_data = StringSplit($probe_data, "=")
return StringStripWS(StringMid($probe_data[2], 1, StringInStr($probe_data[2], "[")-1), 3)
endfunc
func GetCodecExtFromCodecName($codec_name)
local $ext
switch true
case StringInStr($codec_name, "dca")
$ext = "dts"
case StringInStr($codec_name, "flac")
$ext = "flac"
case StringInStr($codec_name, "gsm")
$ext = "gsm"
case StringInStr($codec_name, "mp3")
$ext = "mp3"
case StringInStr($codec_name, "mp2")
$ext = "mp2"
case StringInStr($codec_name, "ac3")
$ext = "ac3"
case StringInStr($codec_name, "aac")
$ext = "aac"
case StringInStr($codec_name, "opus")
$ext = "opus"
case StringInStr($codec_name, "real")
$ext = "ra"
case StringInStr($codec_name, "tta")
$ext = "tta"
case StringInStr($codec_name, "vorbis")
$ext = "ogg"
case StringInStr($codec_name, "wma")
$ext = "wma"
case else
$ext = "wav"
endswitch
return $ext
endfunc
; https:
func GetSystemMenu($hWnd, $bRevert)
local $hMenu = DllCall("user32.dll", "hwnd", "GetSystemMenu", _
"hwnd", $hWnd, _
"int", $bRevert)
return $hMenu[0]
endfunc
func InsertMenu($hMenu, $nPosition, $nFlags, $nIDNewItem, $lpNewItem)
local $nResult = DllCall("user32.dll", "int", "InsertMenu", _
"hwnd", $hMenu, _
"int", $nPosition, _
"int", $nFlags, _
"int", $nIDNewItem, _
"str", $lpNewItem)
return $nResult[0]
endfunc
func CreatePopupMenu()
local $hMenu = DllCall("user32.dll", "hwnd", "CreatePopupMenu")
return $hMenu[0]
endfunc
func CreateSystemMenuItem($sText, $hMenu = -1, $bIsPopup=false, $nPos=0xFFFFFFFF)
if $hMenu = -1 then $hMenu = GetSystemMenu($ffeGUI, 0)
local $nID = GUICtrlCreateDummy()
local $nFlags = 0
if $sText = "" then
$nFlags = $MF_SEPARATOR
elseif $bIsPopup then
$nID = CreatePopupMenu()
$nFlags = $MF_POPUP
endif
$nFlags = BitOr($MF_BYPOSITION, $nFlags)
InsertMenu($hMenu, $nPos, $nFlags, $nID, $sText)
return $nID
endfunc
func CheckMenuItem($hMenu, $nID, $nFlags)
if $nFlags = $ON then $nFlags = $MF_CHECKED
if $nFlags = $OFF then $nFlags = $MF_UNCHECKED
DllCall("user32.dll", "int", "CheckMenuItem", "hwnd", $hMenu, "int", $nID, "int", $nFlags)
endfunc
func AppMenuItemSetState($hMenu, $nID, $state=$ON)
if $state = $ON then
$state = 0x0
else
$state = 0x00000002
endif
DllCall("user32.dll", "int", "EnableMenuItem", "hwnd", $hMenu, "int", $nID, "int", $state)
endfunc
func CheckAppMenu($hWnd, $Msg, $wParam, $lParam)
local $nID = BitAnd($wParam, 0x0000FFFF)
switch $nID
case $arTransItems[0] to $arTransItems[9]
SetTransparency($nID)
case $arCPUItems[0] to $arCPUItems[5]
SetffmpegCPUPririty($nID)
case $ReportTypesMenuItems[0] to $ReportTypesMenuItems[6]
SetFFprobeFormat($nID)
case $am_use_mediainfo
MenuSetUseMediaInfo()
case $DropCommandMenuItems[0] to $DropCommandMenuItems[2]
SetDropCommand($nID)
case $am_about
DoAboutBox()
case $am_retain_exit_settings
MenuRetainExitSettings()
case $am_always_on_top
MenuToggleOnTop()
case $am_console_wordwrap
MenuToggleWrapConsole()
case $am_log_each_job
MenuToggleLogEachJob()
case $am_log_append
ToggleLogAppend()
case $am_job_log_append
ToggleJobLogAppend()
case $am_do_tooltips
MenuToggleToolTipHelp()
case $am_sort_presets_list
MenuToggleSortPresets()
case $am_image_buttons
MenuToggleImgButts()
case $CustomButtonMenuItems[0] to $CustomButtonMenuItems[501]
SetCustomButtonColumns($nID)
case $am_custom_buttons_disable
SetCustomButtonColumns($nID)
endswitch
endfunc
func SetTransparency($nID)
local $hMenu = GetSystemMenu($ffeGUI, 0)
for $i = 0 to 9
if $arTransItems[$i] = $nID then exitloop
next
$user_trans = 10 * $i
local $trans_level = 255 * (100 - $user_trans) / 100
WinSetTrans($ffeGUI, "", $trans_level)
if $nTPChecked <> $nID then CheckMenuItem($hMenu, $nTPChecked, $MF_UNCHECKED)
CheckMenuItem($hMenu, $nID, $MF_CHECKED)
IniWrite($ini_path, $my_name, "transparency", $user_trans)
$nTPChecked = $nID
ConsoleAdd("transparency: " & $user_trans & "%")
endfunc
func SetffmpegCPUPririty($nID)
local $hMenu = GetSystemMenu($ffeGUI, 0)
for $i = 0 to 5
if $arCPUItems[$i] = $nID then exitloop
next
$cpu_priority = $i
ProcessSetPriority($ffmpeg, $cpu_priority)
if $nCPUChecked <> $nID then CheckMenuItem($hMenu, $nCPUChecked, $MF_UNCHECKED)
CheckMenuItem($hMenu, $nID, $MF_CHECKED)
IniWrite($ini_path, $my_name, "cpu_priority", $cpu_priority)
$nCPUChecked = $nID
ConsoleAdd("ffmpeg process priority: " & $cpu_priority & " (" & $arCPU[$i] & ")")
endfunc
func SetFFprobeFormat($nID)
local $hMenu = GetSystemMenu($ffeGUI, 0)
for $i = 0 to 6
if $ReportTypesMenuItems[$i] = $nID then exitloop
next
$report_format = $ReportTypes[$i]
if $nRTChecked <> $nID then CheckMenuItem($hMenu, $nRTChecked, $MF_UNCHECKED)
if $store_probe_type <> $nID then CheckMenuItem($hMenu, $store_probe_type, $MF_UNCHECKED)
CheckMenuItem($hMenu, $nID, $MF_CHECKED)
CheckMenuItem($hMenu, $am_use_mediainfo, $MF_UNCHECKED)
IniWrite($ini_path, $my_name, "report_format", $report_format)
$use_mediainfo = $OFF
IniWriteCheckBoxValue($ini_path, $my_name, "use_mediainfo", $use_mediainfo)
if not $nRTChecked then ConsoleAdd("ffprobe reporting: enabled")
$nRTChecked = $nID
ConsoleAdd("ffprobe format: " & $report_format)
endfunc
func MenuSetUseMediaInfo()
if $use_mediainfo = $ON then
$use_mediainfo = $OFF
else
$use_mediainfo = $ON
endif
ConsoleAdd("mediainfo reporting: " & ProcessWriteHumanCheckBoxValue($use_mediainfo))
IniWriteCheckBoxValue($ini_path, $my_name, "use_mediainfo", $use_mediainfo)
SetUseMediaInfo()
endfunc
func SetUseMediaInfo()
local $hMenu = GetSystemMenu($ffeGUI, 0)
if not FileExists($mediainfo_location) then
ConsoleAdd("MediaInfo.exe not found!")
LocateMediaInfo()
if not FileExists($mediainfo_location) then
AppMenuItemSetState($hMenu, $am_use_mediainfo, $OFF)
$use_mediainfo = $OFF
IniWriteCheckBoxValue($ini_path, $my_name, "use_mediainfo", $use_mediainfo)
endif
endif
if $use_mediainfo = $ON then
CheckMenuItem($hMenu, $am_use_mediainfo, $ON)
CheckMenuItem($hMenu, $nRTChecked, $MF_UNCHECKED)
$store_probe_type = $nRTChecked
$nRTChecked = ""
else
CheckMenuItem($hMenu, $am_use_mediainfo, $OFF)
CheckMenuItem($hMenu, $store_probe_type, $ON)
ConsoleAdd("ffprobe reporting: enabled")
ConsoleAdd("ffprobe format: " & $report_format)
endif
endfunc
func LocateMediaInfo()
local $mi_lookin = GetParent($mediainfo_location)
if not $mi_lookin then $mi_lookin = @ProgramFilesDir
DialogOpen()
local $tmp_mediainfo_location = FileOpenDialog("Please locate MediaInfo.exe..", $mediainfo_location, "MediaInfo executable (MediaInfo.exe)", $ffeGUI)
DialogClose()
if not $tmp_mediainfo_location or @error then
ConsoleAdd("still not got a valid path for mediainfo. disabling..")
return false
endif
if FileExists($tmp_mediainfo_location) then
$mediainfo_location = $tmp_mediainfo_location
endif
endfunc
func SetDropCommand($nID)
local $hMenu = GetSystemMenu($ffeGUI, 0)
for $i = 0 to 2
if $nID = $DropCommandMenuItems[$i] then exitloop
next
$drop_command = $DropCommands[$i]
if $nDCChecked <> $nID then CheckMenuItem($hMenu, $nDCChecked, $MF_UNCHECKED)
CheckMenuItem($hMenu, $nID, $MF_CHECKED)
IniWrite($ini_path, $my_name, "drop_command", $drop_command)
$nDCChecked = $nID
ConsoleAdd("drag-and-drop command: " & $drop_command)
endfunc
func SetCustomButtonColumns($nID)
local $hMenu = GetSystemMenu($ffeGUI, 0)
for $i = 1 to 500
if $CustomButtonMenuItems[$i] = $nID then exitloop
next
if $i = 26 then $i = 0
if $i = 501 then $i = "auto"
$custom_buttons_columns = $i
if $CBMChecked <> $nID then CheckMenuItem($hMenu, $CBMChecked, $MF_UNCHECKED)
CheckMenuItem($hMenu, $nID, $MF_CHECKED)
IniWrite($ini_path, $my_name, "custom_buttons_columns", $custom_buttons_columns)
$CBMChecked = $nID
ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
endfunc
func ToggleAppMenuItem(ByRef $setting, $menu_item, $ini_name, $report=true)
local $hMenu = GetSystemMenu($ffeGUI, 0)
if $setting = $OFF then
$setting = $ON
CheckMenuItem($hMenu, $menu_item, $MF_CHECKED)
if $report then ConsoleAdd($ini_name & ": enabled")
else
$setting = $OFF
CheckMenuItem($hMenu, $menu_item, $MF_UNCHECKED)
if $report then ConsoleAdd($ini_name & ": disabled")
endif
IniWriteCheckBoxValue($ini_path, $my_name, $ini_name, $setting)
endfunc
func MenuToggleLogEachJob()
ToggleAppMenuItem($log_each_job, $am_log_each_job, "log_each_job")
endfunc
func ToggleLogAppend()
ToggleAppMenuItem($log_append, $am_log_append, "log_append")
endfunc
func ToggleJobLogAppend()
ToggleAppMenuItem($job_log_append, $am_job_log_append, "job_log_append")
endfunc
func MenuRetainExitSettings()
ToggleAppMenuItem($retain_exit_settings, $am_retain_exit_settings, "retain_exit_settings")
endfunc
func MenuToggleImgButts()
ToggleAppMenuItem($image_buttons, $am_image_buttons, "image_buttons", false)
ConsoleAdd("image_buttons: " & ProcessWriteHumanCheckBoxValue($image_buttons) & " (restart to see changes)")
endfunc
func MenuToggleSortPresets()
ToggleAppMenuItem($sort_presets_list, $am_sort_presets_list, "sort_presets_list", false)
ConsoleAdd("sort_presets_list: " & ProcessWriteHumanCheckBoxValue($sort_presets_list) & " (restart to see changes)")
endfunc
func MenuToggleToolTipHelp()
ToggleAppMenuItem($do_tooltips, $am_do_tooltips, "do_tooltips", false)
ConsoleAdd("do_tooltips: " & ProcessWriteHumanCheckBoxValue($do_tooltips) & " (restart to see changes)")
endfunc
func MenuToggleWrapConsole()
ToggleAppMenuItem($console_wordwrap, $am_console_wordwrap, "console_wordwrap", false)
ConsoleAdd("console_wordwrap: " & ProcessWriteHumanCheckBoxValue($console_wordwrap) & " (restart to see changes)")
endfunc
func MenuToggleOnTop()
ToggleAppMenuItem($always_on_top, $am_always_on_top, "on_top")
SetOnTop()
endfunc
func SetOnTop()
if $always_on_top = $ON then
WinSetOnTop($ffeGUI, "", 1)
else
WinSetOnTop($ffeGUI, "", 0)
endif
endfunc
func ToggleWindow()
if $minimized = $OFF then
UnSetHotKeys()
GUISetState(@SW_HIDE, $ffeGUI)
$minimized = $ON
if $do_drop_window = $ON then GUISetState(@SW_SHOW, $GUI_DropWindow)
else
GUISetState(@SW_SHOW, $ffeGUI)
TrayItemSetState($tray_toggle_start_minimized, $TRAY_ENABLE)
SetHotKeys()
$minimized = $OFF
endif
IniWriteCheckBoxValue($ini_path, $my_name, "minimized", $minimized)
endfunc
func MenuToggleStartMinimized()
if $start_minimized = $ON then
$start_minimized = $OFF
else
$start_minimized = $ON
endif
IniWriteCheckBoxValue($ini_path, $my_name, "start_minimized", $start_minimized)
TrayItemSetState($tray_toggle_start_minimized, $start_minimized)
endfunc
func ToggleMaximizeWindow()
if $maximized = $ON then
GUISetState(@SW_RESTORE, $ffeGUI)
$maximized = $OFF
else
GUISetState(@SW_MAXIMIZE, $ffeGUI)
$maximized = $ON
endif
IniWriteCheckBoxValue($ini_path, $my_name, "maximized", $maximized)
endfunc
func TogglePresetMode()
$replace_mode = GUICtrlRead($radio_preset_replace)
IniWriteCheckBoxValue($ini_path, $my_name, "replace_mode", $replace_mode)
endfunc
func ToggleStorePaths()
$store_filepaths = GUICtrlRead($check_store_filepaths)
endfunc
func ClickSetPreJobCommands()
$run_pre_job_commands = GUICtrlRead($check_run_pre_job_commands)
ConsoleAdd("pre-job commands: " & ProcessWriteHumanCheckBoxValue($run_pre_job_commands))
endfunc
func ClickSetPostJobCommands()
$run_post_job_commands = GUICtrlRead($check_run_post_job_commands)
ConsoleAdd("post-job commands: " & ProcessWriteHumanCheckBoxValue($run_post_job_commands))
endfunc
func ClickSetPostFileCommand()
$run_post_file_command = GUICtrlRead($check_run_post_file_command)
ConsoleAdd("run post-file command: " & ProcessWriteHumanCheckBoxValue($run_post_file_command))
if $run_post_file_command = $ON then ConsoleAdd("post-file command: " & TokenizeString($post_file_command))
endfunc
func ClickSetOverwrite()
$overwrite = GUICtrlRead($check_overwrite)
ConsoleAdd("overwrite: " & ProcessWriteHumanCheckBoxValue($overwrite))
AutoCreateArgs()
endfunc
func ClickSetConcatenateFiles()
$concatenate = GUICtrlRead($check_concatenate)
ConsoleAdd("concatenate: " & ProcessWriteHumanCheckBoxValue($concatenate))
endfunc
func ClickSetQuitWhenDone()
$quit_when_done = GUICtrlRead($check_quit_when_done)
ConsoleAdd("quit_when_done: " & ProcessWriteHumanCheckBoxValue($quit_when_done))
endfunc
func ClickSetShutdownWhenDone()
$shutdown_when_done = GUICtrlRead($check_shutdown_when_done)
ShutDownOverrideQuit()
ConsoleAdd("shutdown_when_done: " & ProcessWriteHumanCheckBoxValue($shutdown_when_done))
endfunc
func ToggleOutput()
if $do_output = $ON then
$do_output = $OFF
GUICtrlSetState($inp_outputfile, $GUI_DISABLE)
ConsoleAdd("output: disabled")
else
$do_output = $ON
GUICtrlSetState($inp_outputfile, $GUI_ENABLE)
ConsoleAdd("output: enabled")
endif
endfunc
func ClickToggleMatofStatus()
ToggleMatofStatus()
endfunc
func ToggleMatofStatus($new_args=true)
if $do_matof = $ON then
$do_matof = $OFF
else
$do_matof = $ON
endif
GUICtrlSetState($check_do_matof, $do_matof)
if $ini_outputfile then
GUICtrlSetData($inp_outputfile, $ini_outputfile)
else
GUICtrlSetData($inp_outputfile, Detokenize(GUICtrlRead($inp_inputfile)))
endif
if $new_args then DoArgsCreate()
endfunc
func ShutDownOverrideQuit()
if $shutdown_when_done = $ON then
GuiCtrlSetState($check_quit_when_done, $ON)
GuiCtrlSetState($check_quit_when_done, $GUI_DISABLE)
else
GuiCtrlSetState($check_quit_when_done, $quit_when_done)
GuiCtrlSetState($check_quit_when_done, $GUI_ENABLE)
endif
endfunc
func CheckMouse()
local $mouse_pos = GUIGetCursorInfo($ffeGUI)
if not IsArray($mouse_pos) then return false
if IsArray($help_texts) then
if $previous_pos <> $mouse_pos[4] then
if IsArray($help_butts) then
if IsArray($mouse_pos) then
local $help_hover = InArray($help_butts, $mouse_pos[4])
if $help_hover then
GUICtrlSetData($lab_help_info, _StringProper(StringLeft($help_texts[$help_hover], StringInStr($help_texts[$help_hover], "|") - 1)))
else
GUICtrlSetData($lab_help_info, "")
endif
$previous_pos = $mouse_pos[4]
endif
endif
endif
endif
select
case ce_IsPressed(10)
$shifted = true
GUICtrlSetData($butt_doit, "script output")
GUICtrlSetData($butt_quicktest, "set frames")
for $i = 1 to $custom_buttons_array[0][0]
GUICtrlSetFont($custom_buttons[$i], $custom_buttons_font_size-2)
GUICtrlSetData($custom_buttons[$i], "Edit " & $custom_buttons_array[$i][0])
next
case $shifted
GUICtrlSetData($butt_doit, "do it!")
GUICtrlSetData($butt_quicktest, "short test")
for $i = 1 to $custom_buttons_array[0][0]
GUICtrlSetFont($custom_buttons[$i], $custom_buttons_font_size)
GUICtrlSetData($custom_buttons[$i], $custom_buttons_array[$i][0])
next
$shifted = false
endselect
local $drop_mouse_pos = GUIGetCursorInfo($GUI_DropWindow)
if IsArray($drop_mouse_pos) and $drop_mouse_pos[4] then
return SetExtended($drop_mouse_pos[4], $mouse_pos[4])
endif
return $mouse_pos[4]
endfunc
func CheckFocus($hWnd, $iMsg, $wParam, $lParam)
local $iFlag = BitShift($wParam, 16)
switch $lParam
case GUICtrlGetHandle($inp_outputfile)
switch $iFlag
case $EN_SETFOCUS
FocusTo_inp_output()
endswitch
endswitch
endfunc
func FocusTo_inp_output()
if $do_matof = $ON then
ConsoleAdd("MATOF: disabled.")
ToggleMatofStatus()
endif
endfunc
func HK_FFmpegResponseYes()
if WinActive($ffeGUI) then
StdinWrite($ffmpeg, "y" & $LOG_LF)
WinSetTitle($ffeGUI, "", $title_msg_string)
else
HotKeySet("y")
Send("y")
HotKeySet("y", "HK_FFmpegResponseYes")
endif
endfunc
func HK_FFmpegResponseNo()
if WinActive($ffeGUI) then
StdinWrite($ffmpeg, "n" & $LOG_LF)
WinSetTitle($ffeGUI, "", $title_msg_string)
else
HotKeySet("n")
Send("n")
HotKeySet("n", "HK_FFmpegResponseNo")
endif
endfunc
func HK_FFmpegAbort()
if WinActive($ffeGUI) then
StdinWrite($ffmpeg, "q")
Sleep(250)
ProcessClose($ffmpeg)
ConsoleAdd("user aborted")
DoLog($LOG_LF & "user sent abort command!" & $LOG_LF & $LOG_LF)
else
HotKeySet("{F4}")
Send("{F4}")
HotKeySet("{F4}", "HK_FFmpegAbort")
endif
endfunc
func HK_RunningAbortBatch()
if WinActive($ffeGUI) then
$abort_batch = true
else
HotKeySet("{PAUSE}")
Send("{PAUSE}")
HotKeySet("{PAUSE}", "HK_RunningAbortBatch")
endif
endfunc
func HK_ProcessPauseSuspend()
if WinActive($ffeGUI) then
if $paused then
$paused = false
ProcessSuspendResume($ffmpeg, false)
WinSetTitle($ffeGUI, "", $title_msg_string)
else
$paused = true
ProcessSuspendResume($ffmpeg)
WinSetTitle($ffeGUI, "", $title_msg_string & " [paused]")
endif
else
HotKeySet("{SCROLLLOCK}")
Send("{SCROLLLOCK}")
HotKeySet("{SCROLLLOCK}", "HK_ProcessPauseSuspend")
endif
endfunc
func PrimaryUpCheckSize()
CheckSize()
endfunc
func CheckSize()
local $size_array = WinGetClientSize($ffeGUI)
if not IsArray($size_array) then return false
local $too_far = false
if $size_array[0] < $min_width then
WinMove($my_title, "", default, default , $min_width+8)
$too_far = true
endif
if $size_array[1] < $min_height then
WinMove($my_title, "", default, default , default, $min_height+$height_magic)
$too_far = true
endif
if $too_far then
$size_array = WinGetClientSize($ffeGUI)
$width = $size_array[0]
$height = $size_array[1]
if $custom_buttons_columns = "auto" then ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
endif
if $minimized = $OFF then GUISetState(@SW_SHOW, $ffeGUI)
return true
endfunc
func ResizeSaveXYPrefs()
SaveXYPrefs()
endfunc
func SaveXYPrefs()
if not CheckSize() then return
local $size_array = WinGetPos($ffeGUI)
if not IsArray($size_array) then return
if $size_array[0] < (@desktopWidth-25) then
$x = $size_array[0]
IniWrite($ini_path, $my_name, "x", $x)
endif
if $size_array[1] < (@desktopHeight-25) then
$y = $size_array[1]
IniWrite($ini_path, $my_name, "y", $y)
endif
$size_array = WinGetClientSize($ffeGUI)
if not IsArray($size_array) then return
if $size_array[0] >= $min_width then
$width = $size_array[0]
IniWrite($ini_path, $my_name, "width", $size_array[0])
endif
if $size_array[1] >= $min_height-$height_magic then
$height = $size_array[1]
IniWrite($ini_path, $my_name, "height", $size_array[1])
endif
if $custom_buttons_columns = "auto" then ReCreateButtonGrid($custom_buttons_array, $grid_x, $grid_y)
endfunc
func AbortBatch()
$abort_batch = true
endfunc
func RunCommandsTimeout()
$timeout = true
endfunc
func DoLog($dl_string, $dl_append=4, $log_extra="")
if $dl_string = "out" then
if $log_string then
if $dl_append = 1 then
$dl_append = 9
else
$dl_append = 10
endif
local $my_log_file = FileOpen($log_location, $dl_append)
FileWriteLine($my_log_file, $my_name & " log @ "&@year&"-"&@mon&"-"&@mday&@hour&"."&@min&"."&@sec&".. " & $LOG_LF & _
"--------------------------------------------------------------------------------" & $LOG_LF)
if not $log_extra then FileWriteLine($my_log_file, "command-line: " & $CmdLineRaw & $LOG_LF & $LOG_LF)
FileWriteLine($my_log_file, $log_extra)
FileWriteLine($my_log_file, $log_string & $LOG_LF)
FileClose($my_log_file)
$log_string = ""
endif
else
$log_string &= UnifyCRLF($dl_string) & $LOG_LF
endif
return $dl_string
endfunc
func TestFileWrite($tmpfile)
local $t = FileWrite($tmpfile, "")
if $t = -1 then return false
return true
endfunc
func UpdateIniFile()
local $old_version = IniRead($ini_path, $my_name, "version", 0)
local $vcomp = _VersionCompare($my_version, $old_version)
switch $vcomp
case 0, -1
return false
endswitch
local $sample_custom_butts
local $tmp_ini = @TempDir & "\ffe.ini.new"
FileInstall(".\stuff\ffe.ini", $tmp_ini, 1)
local $existing_sections = IniReadSectionNames($tmp_ini)
for $a = 1 to $existing_sections[0]
if $existing_sections[$a] = $NAME_BUTTONS then $sample_custom_butts = IniReadSection($tmp_ini, $existing_sections[$a])
if $existing_sections[$a] <> $my_name then IniDelete($tmp_ini, $existing_sections[$a])
next
$existing_sections = IniReadSectionNames($ini_path)
for $a = 1 to $existing_sections[0]
local $section = IniReadSection($ini_path, $existing_sections[$a])
if IsArray($section) then
for $b = 1 to $section[0][0]
; we manually check for
if StringLeft($section[$b][0], 1) <> " then
IniWrite($tmp_ini, $existing_sections[$a], $section[$b][0], $section[$b][1])
endif
next
endif
next
if not InArray($existing_sections, $NAME_BUTTONS) then
IniWriteSection($tmp_ini, $NAME_BUTTONS, $sample_custom_butts)
endif
FileMove($ini_path, GetParent($ini_path) & "\[" & @YEAR & "-" & @MON & "-" & @MDAY & "@" & @hour & "." & @min & "] ffe.ini")
FileMove($tmp_ini, $ini_path, 1)
IniWrite($ini_path, $my_name, "version", $my_version)
endfunc
func DialogOpen()
GUISetState(@SW_DISABLE, $ffeGUI)
UnSetHotKeys()
endfunc
func DialogClose()
GUISetState(@SW_ENABLE, $ffeGUI)
WinActivate($ffeGUI)
SetHotKeys()
endfunc
func SetHotKeys()
HotKeySet("^f", "HK_FindInOutput")
HotKeySet("{F3}", "HK_FindInOutput2")
HotKeySet("{F8}", "HK_CopyOutput")
HotKeySet("{F9}", "HK_MenuToggleShowDropWindow")
HotKeySet("{F5}", "HK_ClearOutput")
HotKeySet("{Esc}", "HK_DoQuit")
HotKeySet("{TAB}", "TabToCreateArgs")
if $ffmpeg_binary then HotKeySet("{F1}", "HK_DoIt")
HotKeySet("^a", "HK_SelectAllConsoleOutput")
HotKeySet("^e", "HK_MenuRetainExitSettings")
HotKeySet("^d", "HK_MenuDelayedDoIt")
HotKeySet("^m", "HK_ToggleMatofStatus")
endfunc
func UnSetHotKeys()
HotKeySet("^f")
HotKeySet("{F3}")
HotKeySet("{F8}")
HotKeySet("{Esc}")
HotKeySet("{TAB}")
HotKeySet("{F1}")
HotKeySet("^a")
HotKeySet("^e")
HotKeySet("^m")
endfunc
func TabToCreateArgs()
HotKeySet("{TAB}")
Send("{TAB}")
HotKeySet("{TAB}","TabToCreateArgs")
if WinActive($ffeGUI) then DoArgsCreate()
endfunc
func HK_DoIt()
if WinActive($ffeGUI) then
DoIt()
else
HotKeySet("{F1}")
Send("{F1}")
HotKeySet("{F1}","HK_DoIt")
endif
endfunc
func HK_FindInOutput()
if WinActive($ffeGUI) then
FindInOutput()
else
HotKeySet("^f")
Send("^f")
HotKeySet("^f", "HK_FindInOutput")
endif
endfunc
func HK_FindInOutput2()
if WinActive($ffeGUI) then
FindInOutput()
else
HotKeySet("{F3}")
Send("{F3}")
HotKeySet("{F3}", "HK_FindInOutput2")
endif
endfunc
func FindInOutput()
AutoItSetOption("GUIOnEventMode", 0)
_GUICtrlEdit_Find($edit_console_output)
AutoItSetOption("GUIOnEventMode", 1)
endfunc
func HK_SelectAllConsoleOutput()
if WinActive($ffeGUI) then
SelectAllConsoleOutput()
else
HotKeySet("^a")
Send("^a")
HotKeySet("^a", "HK_SelectAllConsoleOutput")
endif
endfunc
func SelectAllConsoleOutput()
GUICtrlSelectAllText($edit_console_output)
endfunc
func HK_MenuDelayedDoIt()
if WinActive($ffeGUI) then
DelayedDoIt()
else
HotKeySet("^d")
Send("^d")
HotKeySet("^d","HK_MenuDelayedDoIt")
endif
endfunc
func HK_CopyOutput()
if WinActive($ffeGUI) then
CopyOutput()
else
HotKeySet("{F8}")
Send("{F8}")
HotKeySet("{F8}","HK_CopyOutput")
endif
endfunc
func HK_ClearOutput()
if WinActive($ffeGUI) then
ClearOutput()
else
HotKeySet("{F5}")
Send("{F5}")
HotKeySet("{F5}","HK_ClearOutput")
endif
endfunc
func HK_MenuRetainExitSettings()
if WinActive($ffeGUI) then
MenuRetainExitSettings()
else
HotKeySet("^e")
Send("^e")
HotKeySet("^e","HK_MenuRetainExitSettings")
endif
endfunc
func HK_ToggleMatofStatus()
if WinActive($ffeGUI) then
ToggleMatofStatus()
else
HotKeySet("^m")
Send("^m")
HotKeySet("^m","HK_ToggleMatofStatus")
endif
endfunc
func HK_MenuToggleShowDropWindow()
if WinActive($ffeGUI) or WinActive($GUI_DropWindow) then
MenuToggleShowDropWindow()
else
HotKeySet("{F9}")
Send("{F9}")
HotKeySet("{F9}","HK_MenuToggleShowDropWindow")
endif
endfunc
func PreviousDropImage()
if $switching then return
if WinActive($GUI_DropWindow) then
SwitchDropImage(-1)
else
HotKeySet("{LEFT}")
Send("{LEFT}")
HotKeySet("{LEFT}","PreviousDropImage")
endif
endfunc
func NextDropImage()
if $switching then return
if WinActive($GUI_DropWindow) then
SwitchDropImage(1)
else
HotKeySet("{RIGHT}")
Send("{RIGHT}")
HotKeySet("{RIGHT}","NextDropImage")
endif
endfunc
func OpenSomething($filepath)
if not FileExists($filepath) then
ConsoleAdd($filepath & " not found!")
return false
endif
if IsDir($filepath) then
if not WinExists($filepath) then
Run("Explorer.exe " & $filepath)
else
WinActivate($filepath)
endif
else
local $user_editor = IniRead($ini_path, $my_name, "editor", "notepad.exe")
if not run($user_editor & " " & $filepath) then
ConsoleAdd("ERROR! I couldn't run:" & '"' & $user_editor & '"')
ConsoleAdd("Ironically, you need to check your ini settings! ")
endif
endif
endfunc
func EditIniFile()
OpenSomething($ini_path)
endfunc
func OpenLogFile()
OpenSomething($log_location)
endfunc
func OpenImagesFolder()
OpenSomething(GetParent($drop_win_image))
endfunc
func GetRealTrans()
$dropwin_trans_real = 255 * (100 - $drop_win_transparency) / 100
$half_trans = 127
if $drop_win_transparency > 44 and $drop_win_transparency < 56 then $half_trans = 255
endfunc
func GUICtrlSelectAllText($control)
GUICtrlSetState($control, $GUI_FOCUS)
DllCall('user32.dll', 'long', 'SendMessage', 'hwnd', GUICtrlGetHandle($control), 'uint', $EM_SETSEL, 'int', 0, 'int', -1)
endfunc
func CorzFancyInputBox($title, $prompt, $default="", $pass="", $ib_w=-1, $ib_h=-1, $ib_x=-1, $ib_y=-1, $timeout=0, $gui_ex=false, $style=-1, $inipath=$ini_path, $sectionname=$my_name)
DialogOpen()
local $last_event_mode = AutoItSetOption("GUIOnEventMode", 0)
local $coord = AutoItSetOption("GUICoordMode", 1)
local $pref_name = CompressToPrefName($title)
$ib_x = IniRead($ini_path, $my_name, "inputbox_" & $pref_name & "_x", $ib_x)
$ib_y = IniRead($ini_path, $my_name, "inputbox_" & $pref_name & "_y", $ib_y)
$ib_w = IniRead($inipath, $sectionname, "inputbox_" & $pref_name & "_width", $ib_w)
if not $ib_x or $ib_x = default then $ib_x = -1
if not $ib_y or $ib_y = default then $ib_y = -1
if not $ib_h or $ib_h = default then $ib_h = 96
if not $ib_w or $ib_w = default then $ib_w = @DesktopWidth/2
local $min_w = 200
local $return = false, $error
local $inputstyle = $ES_AUTOHSCROLL
local $exStyle = BitOr($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST)
if $style = -1 then $style = BitOr($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX)
if $pass <> 0 then $inputstyle = BitOr($ES_AUTOHSCROLL, $ES_PASSWORD)
local $ib_GUI = GUICreate($title, $ib_w, $ib_h, $ib_x, $ib_y, $style, $exStyle, $gui_ex)
local $lab_prompt = GUICtrlCreateLabel($prompt, 10, 5, $ib_w-30)
GUICtrlSetFont(-1, 10)
local $but_OK = GUICtrlCreateButton("OK", $ib_w-45, $ib_h-30, 40, 22, $BS_DEFPUSHBUTTON)
GUICtrlSetState(-1, $GUI_ONTOP)
local $but_Cancel = GUICtrlCreateButton("Cancel", 5, $ib_h-30, 60, 22)
GUICtrlSetState(-1, $GUI_ONTOP)
local $inp_MyID = GUICtrlCreateInput($default, 70, $ib_h-30, $ib_w-125, 22, $inputstyle)
GUICtrlSetState(-1, $GUI_FOCUS)
GUICtrlSetFont (-1, 10 , 400, "", "Lucida Console")
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSetResizing($lab_prompt, $GUI_DOCKALL)
GUICtrlSetResizing($but_OK, $GUI_DOCKSTATEBAR+$GUI_DOCKWIDTH+$GUI_DOCKRIGHT)
GUICtrlSetResizing($but_Cancel, $GUI_DOCKSTATEBAR+$GUI_DOCKLEFT+$GUI_DOCKWIDTH)
GUICtrlSetResizing($inp_MyID, $GUI_DOCKSTATEBAR+$GUI_DOCKLEFT+$GUI_DOCKRIGHT)
GUISetState(@SW_SHOW, $ib_GUI)
WinMove($title, "", default, default, $ib_w, $ib_h)
if $timeout <> 0 then local $dialog_begin = TimerInit()
local $size_array
while true
switch GUIGetMsg()
case $GUI_EVENT_RESIZED
$size_array = WinGetPos($title)
if not IsArray($size_array) then continueloop
if $size_array[2] < $min_w then WinMove($title, "", default, default, $min_w, $ib_h)
if $size_array[3] <> $ib_h then WinMove($title, "", default, default, $min_w, $ib_h)
case $GUI_EVENT_CLOSE, $but_Cancel
$return = false
$error = 1
exitloop
case $but_OK
$return = StringStripWS(GUICtrlRead($inp_MyID), 3)
exitloop
endswitch
if $timeout <> 0 then
if TimerDiff($dialog_begin)/1000 > $timeout then
$return = false
$error = 2
exitloop
endif
endif
wend
if $return then
local $x_coord = -1, $y_coord = -1, $ib_width
$size_array = WinGetPos($title)
if IsArray($size_array) then
$x_coord = $size_array[0]
$y_coord = $size_array[1]
$ib_width = $size_array[2]
endif
endif
AutoItSetOption("GUIOnEventMode", $last_event_mode)
AutoItSetOption("GUICoordMode", $coord)
GUIDelete($ib_GUI)
DialogClose()
if $return then
if $x_coord and $x_coord <> -1 then IniWrite($inipath, $sectionname, "inputbox_" & $pref_name & "_x", $x_coord)
if $y_coord and $y_coord <> -1 then IniWrite($inipath, $sectionname, "inputbox_" & $pref_name & "_y", $y_coord)
if $ib_width and $ib_width <> @DesktopWidth/2 then IniWrite($inipath, $sectionname, "inputbox_" & $pref_name & "_width", $ib_width)
return $return
endif
return SetError($error, 0, "")
endfunc
func SpecifyPostFileCommand()
local $user_command = CorzFancyInputBox("Post-File Command..", "Enter the FULL command. Put quotes around any paths with spaces. NOTE: You can drag files into this input. You can also use @tokens.", _
$post_file_command, "", @DesktopWidth/2, 96, default, default, 0, $ffeGUI)
if $user_command then
$post_file_command = $user_command
ConsoleAdd("post-file command set to: " & $post_file_command)
endif
endfunc
func SpecifyPreJobCommandsFile()
CreateJobCommands($pre_job_commands_file, "Pre")
endfunc
func SpecifyPostJobCommandsFile()
CreateJobCommands($post_job_commands_file, "Post-Job")
endfunc
func CreatePreJobCommands()
CreateJobCommands($pre_job_commands_file, "Pre-Job")
endfunc
func CreatePostJobCommands()
CreateJobCommands($post_job_commands_file, "Post-File")
endfunc
func CreateJobCommands(ByRef $commands_file, $type, $do_edit=true)
local $def_input = "@datadir\" & StringLower($type) & "-commands.bat"
if $commands_file then $def_input = TokeniZeString($commands_file)
local $user_prc_filename = CorzFancyInputBox( "Specify A " & $type & " Commands File.. ", _
"Please specify the location of the " & $type & " Commands file.. " & $MSG_LF & _
"NOTE: You can use @Tokens in this setting.", $def_input , "" , @DesktopWidth/2, 115, default, default, 0, $ffeGUI)
if $user_prc_filename then
local $real_user_prc_filename = DeTokenize($user_prc_filename)
if $user_prc_filename and StringLeft($real_user_prc_filename, 2) <> '\\' and StringMid($real_user_prc_filename, 2, 1) <> ':' then
$real_user_prc_filename = $data_parent & "\" & $real_user_prc_filename
endif
$commands_file = $real_user_prc_filename
if FileExists($real_user_prc_filename) then
ConsoleAdd('"' & $commands_file & """ already exists")
else
ConsoleAdd("creating: """ & $commands_file & '"')
FileWrite($real_user_prc_filename, ":: ffe " & $type & " commands" & $LOG_LF & $LOG_LF)
endif
switch $type
case "Pre-Job"
LoadPreCommands()
case "Post-Job"
LoadPostCommands()
endswitch
if $do_edit then OpenSomething($commands_file)
endif
endfunc
func LoadPreCommands()
local $tmp_cf = IniRead($ini_path, $current_preset, "pre_job_commands_file", "---")
if not $tmp_cf or $tmp_cf = "---" then $tmp_cf = $pre_job_commands_file
$pre_job_commands_file = Detokenize($tmp_cf)
LoadCommandsFile($pre_job_commands_file, "Pre", "run_pre_job_commands", $check_run_pre_job_commands)
endfunc
func LoadPostCommands()
local $tmp_cf = IniRead($ini_path, $current_preset, "post_job_commands_file", "---")
if not $tmp_cf or $tmp_cf = "---" then $tmp_cf = $post_job_commands_file
$post_job_commands_file = Detokenize($tmp_cf)
LoadCommandsFile($post_job_commands_file, "Post", "run_post_job_commands", $check_run_post_job_commands)
endfunc
func LoadCommandsFile(ByRef $commands_file, $type, $main_switch, $control)
$type = StringLower($type)
if $commands_file then
$commands_file = SetRelPathToDataDir($commands_file)
else
if $main_switch = $ON then ConsoleAdd("no " & $type & "-job commands file specified!")
return
endif
if not FileExists($commands_file) then
ConsoleAdd("specified " & $type & "-job commands file not found: " & $commands_file)
return
endif
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & "loading " & $type & "-commands file (" & $commands_file & ") for: " & $current_preset & $LOG_LF)
local $tmp_do_run_cmds = IniReadCheckBoxValue($ini_path, $current_preset, $main_switch, "---", true)
if not $tmp_do_run_cmds or $tmp_do_run_cmds = "---" then $tmp_do_run_cmds = Eval($main_switch)
if $commands_file and FileExists($commands_file) then
GUICtrlSetState($control, $GUI_ENABLE)
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & $type & "-job-commands ENABLED" & $LOG_LF)
else
GUICtrlSetState($control, $GUI_DISABLE)
ConsoleWrite(".\" & @ScriptName & "(" & @ScriptLineNumber & "): ==> " & $type & "-job-commands DISABLED" & $LOG_LF)
endif
if $tmp_do_run_cmds then Assign($main_switch, Int($tmp_do_run_cmds))
GUICtrlSetState($control, Eval($main_switch))
$batch_commands_timeout = IniRead($ini_path, $current_preset, "batch_commands_timeout", 0)
$run_commands_with_shell = IniReadCheckBoxValue($ini_path, $current_preset, "run_commands_with_shell", $run_commands_with_shell)
MakeTray()
endfunc
func RunCommandsFile(ByRef $commands_file, ByRef $logfile, ByRef $gen_file, $type)
if $commands_file and FileExists($commands_file) then
local $msg, $run_command, $console_out
if $generate_script then
$gen_file &= FileRead($commands_file)
else
if $batch_commands_timeout then AdLibRegister("RunCommandsTimeout", $batch_commands_timeout*1000*60)
$timeout = false
local $command_run, $err
if $run_commands_with_shell = $ON then
if GetExtension($commands_file) <> "bat" then
$msg = $type & "-job command processing aborted" & $LOG_LF & "please give your batch script a .bat extension"
$logfile &= DoLog(ConsoleAdd($msg)) & $LOG_LF
AdLibUnRegister("RunCommandsTimeout")
return false
endif
$msg = $LOG_LF & "running batch file: """ & $commands_file & """.."
$logfile &= DoLog(ConsoleAdd($msg)) & $LOG_LF
$run_command = @ComSpec & " /c " & ' "' & $commands_file & '" '
$command_run = Run($run_command, "", @SW_HIDE, $STDOUT_CHILD)
while true
$err = false
$console_out = StdoutRead($command_run)
$err = @error
$console_out = StringStripWS($console_out, 3)
$logfile &= DoLog(ConsoleAdd($console_out)) & $LOG_LF
if @error or $timeout or not @extended then exitloop
Sleep(25)
wend
StdioClose($command_run)
else
local $run_commands_list
FileReadToArrayOptimized($commands_file, $run_commands_list)
$msg = $LOG_LF & "running " & StringLower($type) & "-job commands: " & $commands_file
$logfile &= DoLog(ConsoleAdd($msg)) & $LOG_LF
for $i = 1 to $run_commands_list[0]
if StringLeft($run_commands_list[$i], 1) = ":" or StringStripWS($run_commands_list[$i], 3) = "" then continueloop
$run_command = @ComSpec & " /c " & DeTokenize($run_commands_list[$i])
$command_run = Run($run_command, "", @SW_HIDE, $STDOUT_CHILD)
while true
$err = false
$console_out = StdoutRead($command_run)
$err = @error
$console_out = StringStripWS($console_out, 3)
$logfile &= DoLog(ConsoleAdd($console_out)) & $LOG_LF
if $err or $timeout then exitloop
Sleep(25)
wend
StdioClose($command_run)
next
endif
AdLibUnRegister("RunCommandsTimeout")
endif
else
$msg = $type & "-Job Commands File NOT FOUND!"
$logfile &= DoLog(ConsoleAdd($msg)) & $LOG_LF
endif
return true
endfunc
func SetRelPathToDataDir($some_path)
if $some_path and StringLeft($some_path, 2) <> '\\' and StringMid($some_path, 2, 1) <> ':' then
CLT($some_path)
$some_path = $data_parent & "\" & $some_path
CRT($some_path)
endif
return $some_path
endfunc
func EditPostJobCommands()
if $post_job_commands_file then
OpenSomething($post_job_commands_file)
LoadPostCommands()
endif
endfunc
func EditPreJobCommands()
if $pre_job_commands_file then
OpenSomething($pre_job_commands_file)
LoadPreCommands()
endif
endfunc
func TraySetFFMpegBinaryLocation()
SetFFMpegBinaryLocation()
endfunc
func SetFFMpegBinaryLocation($binary_location=false)
if not $binary_location then
local $ffmpeg_bin_dir = IniRead($ini_path, $my_name, "ffmpeg_bin_dir", @ProgramFilesDir)
if FileExists(Getparent($ffmpeg_binary)) then $ffmpeg_bin_dir = Getparent($ffmpeg_binary)
DialogOpen()
local $tmp_ffmpeg_binary = FileOpenDialog("Please locate the ffmpeg binary..", $ffmpeg_bin_dir, "ffmpeg binary (ffmpeg.exe)", $ffeGUI)
DialogClose()
if not $tmp_ffmpeg_binary or @error then
ConsoleAdd("ffmpeg binary location setting unchanged: user aborted")
return false
endif
$tmp_ffmpeg_binary = Detokenize($tmp_ffmpeg_binary)
$binary_location = Detokenize($tmp_ffmpeg_binary)
endif
if $binary_location = $ffmpeg_binary then
ConsoleAdd("ffmpeg binary location setting unchanged")
return false
endif
IniWrite($ini_path, $my_name, "ffmpeg_bin_dir", GetParent($binary_location))
if FileExists($binary_location) then
$ffmpeg_binary = $binary_location
local $user_ffmpeg_binary = TokenizeString($ffmpeg_binary)
IniWrite($ini_path, $my_name, "ffmpeg_binary", $user_ffmpeg_binary)
ConsoleAdd("ffmpeg binary location set to: """ & $user_ffmpeg_binary & """")
EnableActiveInputs()
endif
endfunc
func ConsoleAdd($out_string)
GUICtrlSetData($edit_console_output, StringStripWS(GUICtrlRead($edit_console_output), 2) & $LOG_LF & $out_string)
_GUICtrlEdit_Scroll($edit_console_output, $__EDITCONSTANT_SB_SCROLLCARET)
return $out_string
endfunc
func SetConsoleOutput($out_string, $scroll_top=false)
GUICtrlSetData($edit_console_output, $out_string)
if $scroll_top then
_GUICtrlEdit_Scroll($edit_console_output, 0)
else
_GUICtrlEdit_Scroll($edit_console_output, $__EDITCONSTANT_SB_SCROLLCARET)
endif
return $out_string
endfunc
func GetEditStyles()
if $console_wordwrap = $ON then
return BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_WANTRETURN, $ES_MULTILINE, $ES_NOHIDESEL)
else
return BitOR($WS_HSCROLL, $ES_AUTOVSCROLL, $WS_VSCROLL, $ES_AUTOHSCROLL, $ES_MULTILINE, $ES_WANTRETURN, $ES_NOHIDESEL)
endif
endfunc
func GUICtrlSetTipOptional($control_ID, $tip_text, $title="Information:", $icon=$tip_icon, $options=$tip_style)
if $do_tooltips = $OFF then return
local $style = 0, $hicon, $ret
$control_ID = GUICtrlGetHandle($control_ID)
if BitAND($options, 1) then $style = $TTS_BALLOON
$style = BitOr($style, $TTS_ALWAYSTIP, $TTS_NOPREFIX)
local $hToolTip = _GUIToolTip_Create(0, $style)
$options = BitOr($options, $TTF_SUBCLASS, $TTF_IDISHWND)
_GUIToolTip_AddTool($hToolTip, 0, $tip_text, $control_ID, default, default, default, default, $options, 0)
_GUIToolTip_SetDelayTime($hToolTip, $TTDT_INITIAL, 400)
_GUIToolTip_SetDelayTime($hToolTip, $TTDT_AUTOPOP, $tooltip_time)
_GUIToolTip_SetDelayTime($hToolTip, $TTDT_RESHOW, 150)
if not StringInStr($icon, ".") then
_GUIToolTip_SetTitle($hToolTip, $title, $icon)
else
$hicon = DllStructCreate("ptr")
$icon = StringSplit($icon, ",")
if $icon[0] > 1 then
$ret = DllCall("shell32.dll", "uint", "ExtractIconExW", "wstr", $icon[$icon[0] - 1], "int", -1 * (Int($icon[$icon[0]])), "ptr", 0, "ptr", DllStructGetPtr($hicon), "uint", 1)
if not @error and $ret[0] then
$hicon = DllStructGetData($hicon, 1)
else
$hicon = 0
endif
_GUIToolTip_SetTitle($hToolTip, $title, $hicon)
DllCall("user32.dll", "none", "DestroyIcon", "handle", $hIcon)
endif
endif
return $hToolTip
endfunc
func IsWild($string)
if StringInStr($string, "*") or StringInStr($string, "?") then return true
return false
endfunc
func DeTokenize($string)
if not $string then return $string
if not StringInStr($string, "@") then return $string
$string = FixPathSlashes($string)
$string = StringReplace($string, "@item", RemoveExtension(BaseName($inputfile)))
$string = StringReplace($string, "@ext", GetExtension($inputfile))
$string = StringReplace($string, "@oext", GetExtension($outputfile))
$string = StringReplace($string, "@ofilename", BaseName($outputfile))
$string = StringReplace($string, "@sec", @sec)
$string = StringReplace($string, "@min", @min)
$string = StringReplace($string, "@hour", @hour)
$string = StringReplace($string, "@mday", @mday)
$string = StringReplace($string, "@mon", @mon)
$string = StringReplace($string, "@year", @year)
$string = StringReplace($string, "@wday", @wday)
$string = StringReplace($string, "@yday", @yday)
$string = StringReplace($string, "@mydocuments", @MyDocumentsDir)
$string = StringReplace($string, "@desktop", @DesktopDir)
$string = StringReplace($string, "@tempdir", @TempDir)
$string = StringReplace($string, "@datadir", $data_parent)
$string = StringReplace($string, "@outdir", GetParent($outputfile))
$string = StringReplace($string, "@parent", GetParent($inputfile))
$string = StringReplace($string, "@homedir", @HomeDrive & @HomePath)
$string = StringReplace($string, "@programfiles", @ProgramFilesDir)
$string = StringReplace($string, "@outputfile", $outputfile)
return $string
endfunc
func TokenizeString($string)
if not $string then return $string
$string = FixPathSlashes($string)
$string = StringReplace($string, @DesktopDir, "@desktop")
$string = StringReplace($string, @MyDocumentsDir, "@mydocuments")
$string = StringReplace($string, @TempDir, "@tempdir")
if $data_parent <> "" then $string = StringReplace($string, $data_parent, "@datadir")
if GetParent($outputfile) <> "" then $string = StringReplace($string, GetParent($outputfile), "@outdir")
if GetParent($inputfile) <> "" then $string = StringReplace($string, GetParent($inputfile), "@parent")
$string = StringReplace($string, @HomeDrive & @HomePath, "@homedir")
$string = StringReplace($string, @ProgramFilesDir, "@programfiles")
return $string
endfunc
func FixPathSlashes($string)
if StringInStr($string, ":) then return $string ; but not for URLs
$string = StringReplace($string, "/", "\")
$string = StringReplace($string, "\\", "\")
return $string
endfunc
func CRT(ByRef $string, $character="\")
local $char_num = StringLen($character)
if StringRight($string, $char_num) = $character then $string = StringTrimRight($string, $char_num)
endfunc
func CLT(ByRef $string, $character="\")
local $char_num = StringLen($character)
if StringLeft($string, $char_num) = $character then $string = StringTrimLeft($string, $char_num)
endfunc
func ArrayAdd(byref $array, $item, $dont_dupe=false, $update=false)
if not IsArray($array) then return
local $size = UBound($array)
if $dont_dupe and $update = false then
if InArray($array, $item) then return
endif
if $update then
local $idx = InArray($array, $item)
if $idx then
for $i = $idx to $size-2
$array[$i] = $array[$i+1]
next
$size -= 1
endif
endif
redim $array[$size+1]
$array[$size] = $item
$array[0] = $size
endfunc
func StringJoin(ByRef $array, $join_str=$LOG_LF)
local $ret_str
for $i = 1 to $array[0]
$ret_str &= $array[$i] & $join_str
next
CRT($ret_str, $join_str)
return $ret_str
endfunc
func GenerateReport()
if IsWild($inputfile) then
ConsoleAdd("cannot report on directories or multiple files!" & $LOG_LF & "replace the wildcards with a file name!")
return false
endif
if not GetReportingValues() then return false
local $do_open = false
if ce_IsPressed(10) then $do_open = true
local $report_name = Basename(RemoveExtension($inputfile)) & "." & $report_extension
if not FileExists($report_directory) then $report_directory = GetParent($inputfile)
local $report_loc = $report_directory & "\" & $report_name
local $report_str, $err, $probe_file, $sw = ""
if $use_mediainfo = $ON and FileExists($mediainfo_location) then
if $mediainfo_switches then $sw = ' ' & $mediainfo_switches & " "
$probe_file = Run( $mediainfo_location & $sw & ' "' & $inputfile & '"', "", @SW_HIDE, $STDOUT_CHILD)
else
if $report_switches then $sw = " " & $report_switches & " "
$probe_file = Run( $ffprobe_loc & " -v error -show_format -show_streams -print_format " & $report_format & $sw & ' "'& $inputfile & '"', "", @SW_HIDE, $STDOUT_CHILD)
endif
while true
$err = false
local $console_out = StdoutRead($probe_file)
$err = @error
if $console_out then $report_str &= $console_out
if $err then exitloop
Sleep(5)
wend
StdioClose($probe_file)
ProcessClose($probe_file)
if $un_escape_output = $ON then
$report_str = StringReplace($report_str, "\\", "\")
$report_str = StringReplace($report_str, "\:", ":")
endif
if FileExists($report_loc) then FileDelete($report_loc)
local $report_file_open = FileOpen($report_loc, $FO_OVERWRITE+ $FO_CREATEPATH+$FO_UTF8_NOBOM)
FileWrite($report_file_open, $report_str)
FileClose($report_file_open)
if $do_open then
ShellExecute($report_loc)
else
SetConsoleOutput($report_str, true)
endif
endfunc
func GetReportingValues()
$report_format = IniRead($ini_path, $my_name, "report_format", "ini")
$report_directory = Detokenize(IniRead($ini_path, $my_name, "report_directory", "@parent"))
$report_extension = IniRead($ini_path, $my_name, "report_extension", "ini")
$report_switches = IniRead($ini_path, $my_name, "report_switches", "")
$un_escape_output = IniReadCheckBoxValue($ini_path, $my_name, "un_escape_output", $ON)
$use_mediainfo = IniReadCheckBoxValue($ini_path, $my_name, "use_mediainfo", $OFF)
$mediainfo_location = IniRead($ini_path, $my_name, "mediainfo_location", "")
$mediainfo_switches = IniRead($ini_path, $my_name, "mediainfo_switches", "")
local $mediainfo_extension = IniRead($ini_path, $my_name, "mediainfo_extension", "nfo")
if $use_mediainfo = $ON then
$report_extension = $mediainfo_extension
if not FileExists($mediainfo_location) then
ConsoleAdd("MediaInfo.exe not found")
return false
endif
else
if $report_extension = "auto" then
switch $report_format
case "compact"
$report_extension = "txt"
case else
$report_extension = "nfo"
endswitch
endif
$ffprobe_loc = GetParent($ffmpeg_binary) & "\ffprobe.exe"
if not FileExists($ffprobe_loc) then
ConsoleAdd("ffprobe.exe not found next to ffmpeg" & $LOG_LF & "please place ffprobe.exe next to ffmpeg.exe")
return false
endif
endif
return true
endfunc
func GetLogLocation($this_preset=$my_name)
$i = DeTokenize(IniRead($ini_path, $this_preset, "log_location", ""))
if $i <> "-" then
if $portable then
if $i and TestFileWrite($i) then
$log_location = $i
else
if TestFileWrite(@ScriptDir & "\" & $my_name & ".log") then $log_location = @ScriptDir & "\" & $my_name & ".log"
endif
elseif IsDir($i) and TestFileWrite($i & "\" & $my_name & ".log") then
$log_location = $i & "\" & $my_name & ".log"
elseif $i and TestFileWrite($i) then
$log_location = $i
else
$log_location = @TempDir & "\" & $my_name & ".log"
endif
endif
endfunc
func ProcessSuspendResume($proc_name, $do_suspend=true)
if IsString($proc_name) then $proc_name = ProcessExists($proc_name)
if not $proc_name then return SetError(2, 0, 0)
if $do_suspend then
DllCall('kernel32.dll','ptr','DebugActiveProcess','int',$proc_name)
else
DllCall('kernel32.dll','ptr','DebugActiveProcessStop','int',$proc_name)
endif
endfunc
func BaseName($bn_path)
$bn_path = StringReplace($bn_path, "/", "\")
CRT($bn_path)
local $parts = StringSplit($bn_path, "\")
local $bn_tmp = $parts[$parts[0]]
CRT($bn_tmp, ":")
return $bn_tmp
endfunc
func GetExtension($some_name)
local $parts = StringSplit($some_name, ".")
local $e = $parts[$parts[0]]
if $e <> $some_name and not StringInStr($e, "\") then
return $e
else
return ""
endif
endfunc
func RemoveExtension($some_name)
local $add = 0
if StringInStr(BaseName($some_name), ".") then $add = 1
return StringTrimRight($some_name, StringLen(GetExtension($some_name)) + $add)
endfunc
func CleanName($some_name)
return RemoveExtension(BaseName($some_name))
endfunc
func GetParent($gp_dir)
local $gp_full_path = StringSplit($gp_dir, "\")
return StringTrimRight($gp_dir, StringLen($gp_full_path[$gp_full_path[0]]) + 1)
endfunc
func IsDir($some_path)
return StringInStr(FileGetAttrib($some_path), "D")
endfunc
func ReadDir($folder, $extension, $full_filename="")
local $files[1]
local $new_array[2]
local $filename = "*."
if $full_filename then
$filename = $full_filename
$extension = ""
else
CLT($extension, ".")
endif
local $init_dir = $folder & "\" & $filename & $extension
local $search_files = FileFindFirstFile($init_dir)
if $search_files = -1 then
FileClose($search_files)
$search_files = FileFindFirstFile($init_dir)
endif
local $i = 1
do
local $tmp = FileFindNextFile($search_files)
$files[$i-1] = $tmp
$i += 1
redim $files[$i]
until @error
FileClose($search_files)
$i = 2
for $this_file in $files
local $entry = StringStripWS($this_file, 3)
if $entry then
redim $new_array[$i]
$new_array[0] = $i-1
$new_array[$i-1] = $entry
$i = $i + 1
endif
next
$files = 0
if $new_array[0] = "" then return 0
return $new_array
endfunc
func RecurseDir($dir, $mask, $dont_recurse=false, $dump="", $return_dirs=false, $mx=1000000)
local $n_dirnames[$mx]
local $n_dircount = 0
local $n_file
local $n_search
local $n_tfile
local $file_array
local $filenames
local $dircount = 1
CRT($dir)
$n_dirnames[$dircount] = $dir
if not FileExists($dir) then return 0
while $dircount > $n_dircount
$n_dircount += 1
$n_search = FileFindFirstFile($n_dirnames[$n_dircount] & "\*.*")
while true
$n_file = FileFindNextFile($n_search)
if @error then exitloop
if $n_file = "." or $n_file = ".." then continueloop
$n_tfile = $n_dirnames[$n_dircount] & "\" & $n_file
if StringInStr(FileGetAttrib($n_tfile ), "D") and not $dont_recurse then
$dircount += 1
$n_dirnames[$dircount] = $n_tfile
endif
wend
FileClose($n_search)
if StringInStr($mask, ",", 2) then
local $mask_array = StringSplit($mask, ",")
else
local $mask_array[2] = [1, $mask]
endif
for $mask_c = 1 to $mask_array[0]
$n_search = FileFindFirstFile($n_dirnames[$n_dircount] & "\" & $mask_array[$mask_c] )
if $n_search = -1 then continueloop
while true
$n_file = FileFindNextFile($n_search)
if @error then exitloop
if $n_file = "." or $n_file = ".." then continueloop
$n_tfile = $n_dirnames[$n_dircount] & "\" & $n_file
if not StringInStr(FileGetAttrib( $n_tfile ), "D") then
$filenames &= $n_tfile & @LF
endif
wend
FileClose($n_search)
next
wend
if $return_dirs then
local $tmp_str = ""
$i = 1
while $n_dirnames[$i] <> ""
$tmp_str &= $n_dirnames[$i] & "|"
$i += 1
wend
$tmp_str = StringTrimRight($tmp_str, 1)
$n_dirnames = StringSplit($tmp_str, "|")
return $n_dirnames
endif
$filenames = StringTrimRight($filenames, 1)
if $filenames = "" then return 0
$file_array = StringSplit($filenames, @LF)
if $dump then
local $dump_file = FileOpen($dump, 2)
FileWrite($dump_file, $filenames)
FileClose($dump_file)
endif
return($file_array)
endfunc
func IniReadCheckBoxValue($rcbv_inifile, $rcbv_section, $rcbv_key, $rcbv_default, $three_state=false)
local $ircbv_val = IniRead($rcbv_inifile, $rcbv_section, $rcbv_key, "---")
if $ircbv_val = "---" then $ircbv_val = $rcbv_default
if $three_state and $ircbv_val = "" then return $GUI_INDETERMINATE
switch $ircbv_val
case $GUI_UNCHECKED
return $GUI_UNCHECKED
case "false", "off", "no", "not", "nope", "nay", "nay!", "nah", "nah!", "no way!", "no sir!", "negative", "neg", "no!", "disable", "disabled"
return $GUI_UNCHECKED
case "true", "on", "yes", "yes!", "yay", "yay!", "yup", "hell yes!", "indeed", "yes sir!", "yessir!", "affirmative", "cool", "enable", "enabled"
return $GUI_CHECKED
case "2", 2, "unset", "-"
return $GUI_INDETERMINATE
case "0"
return $GUI_UNCHECKED
case "1", $GUI_CHECKED
return $GUI_CHECKED
case else
return $ircbv_val
endswitch
endfunc
func ProcessWriteHumanCheckBoxValue($some_string, $on_str="enabled", $off_str="disabled",$indet_str="unset")
switch $some_string
case $ON
return $on_str
case $OFF
return $off_str
case $GUI_INDETERMINATE, ""
return $indet_str
case else
return $some_string
endswitch
endfunc
func IniWriteCheckBoxValue($wcbv_inifile, $wcbv_section, $wcbv_key, $wcbv_val, $tru_val="true", $fal_val="false")
switch $wcbv_val
case $GUI_CHECKED
$wcbv_val = $tru_val
case $GUI_UNCHECKED
$wcbv_val = $fal_val
case $GUI_INDETERMINATE
$wcbv_val = ""
endswitch
if $wcbv_val then
IniWrite($wcbv_inifile, $wcbv_section, $wcbv_key, $wcbv_val)
else
IniDelete($wcbv_inifile, $wcbv_section, $wcbv_key)
endif
endfunc
func SwitchBool($bool)
if $bool = $ON then return $OFF
return $ON
endfunc
func InArray(ByRef $ia_array, $ia_string)
if not IsArray($ia_array) then return false
local $ia_limit = UBound($ia_array) - 1
for $i = 1 to $ia_limit
if $ia_string = $ia_array[$i] then return $i
next
return false
endfunc
Func ce_Singleton($occurenceName, $flag = 0)
Local $ERROR_ALREADY_EXISTS = 183
$occurenceName = StringReplace($occurenceName, "\", "")
Local $handle = DllCall("kernel32.dll", "int", "CreateMutex", "int", 0, "long", 1, "str", $occurenceName)
Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
If $lastError[0] = $ERROR_ALREADY_EXISTS Then
If $flag = 0 Then
Exit -1
Else
SetError($lastError[0])
Return 0
endif
endif
Return $handle[0]
EndFunc
func ce_IsPressed($Key)
local $kp = DllCall('user32.dll', "int", "GetAsyncKeyState", "int", '0x' & $Key)
if not @error and BitAND($kp[0], 0x8000) = 0x8000 then return 1
return 0
endfunc
func VisitURL($vu_url="http:)
ShellExecute($vu_url)
if @error <> 0 then
return true
else
return SetError (@error, default , true)
endif
endfunc
func CleanPath($string)
|", ".")
$string = StringReplace($string, '"', ".")
$string = StringReplace($string, ":", ".")
$string = StringReplace($string, "*", ".")
$string = StringReplace($string, "/", ".")
$string = StringReplace($string, "\", ".")
$string = StringReplace($string, ">", ".")
$string = StringReplace($string, "<", ".")
$string = StringReplace($string, "?", ".")
return $string
endfunc
func CompressToPrefName($string)
$string = CleanPath($string)
$string = StringReplace($string, '"', "_")
$string = StringReplace($string, "'", "_")
$string = StringReplace($string, "=", "_")
$string = StringReplace($string, "[", "_")
$string = StringReplace($string, "]", "_")
$string = StringReplace($string, "(", "_")
$string = StringReplace($string, ")", "_")
$string = StringReplace($string, ".", "_")
$string = StringReplace($string, " ", "_")
$string = StringReplace($string, "-", "_")
return $string
endfunc
func UnifyCRLF($some_text, $LF=@CRLF)
return StringRegExpReplace($some_text, "\R", $LF)
endfunc
func SecondsToDHMS($sec=0)
if $sec < 0 then return -1
select
case $sec < 61
return $sec & " seconds"
case $sec < 3601
return StringFormat('%.01dm %.01ds', Mod(($sec / 60), 60), Mod($sec, 60))
case $sec < 86401
return StringFormat('%.01dh %.01dm %.01ds', Mod($sec / 3600, 24), Int(Mod(($sec / 60), 60)), Mod($sec, 60))
case else
return StringFormat('%.01dd %.01dh %.01dm %.01ds', Mod($sec / 86400, 7), Mod($sec / 3600, 24), Int(Mod(($sec / 60), 60)), Mod($sec, 60))
endselect
endfunc
func MakeRandomAlphaNumericString($iLen)
local $sString = ''
do
switch Random ( 1, 3, 1 )
case 1
$sString &= Chr(Random( 48, 57, 1))
case 2
$sString &= Chr(Random( 65, 90, 1))
case 3
$sString &= Chr(Random( 97, 122, 1))
endswitch
until StringLen($sString) = $iLen
return $sString
endfunc
;
", @CR, @TAB, @CR, @LF, etc.)
func FileReadToArrayOptimized($TmpFile, byref $aArray, $iFlag = 0)
local $ArrayCount, $RegExp = "(?:\r\n|\n|\r)([^\r\n]*)"
local $hFileOpen = FileOpen($TmpFile, 0)
if $hFileOpen = -1 then return SetError(1, 0, 0)
local $sFileRead = StringStripWS(FileRead($hFileOpen), 3)
FileClose($hFileOpen)
if not BitAND($iFlag, 1) then $ArrayCount = "ArrayCount" & @LF
if BitAND($iFlag, 2) then $RegExp = "(?:\r\n|\n|\r)([^\r\n]+)"
if BitAND($iFlag, 4) then $RegExp = "s*(?:\r\n|\n|\r)([^\r\n]+)"
if BitAND($iFlag, 8) then $RegExp = StringReplace($RegExp, ")", ")h*", 1, 1)
$aArray = StringRegExp(@LF & $ArrayCount & $sFileRead, $RegExp, 3)
if @error then
if StringLen($sFileRead) then
local $ret[2] = [1, $sFileRead]
$aArray = $ret
else
return SetError(2, 0, 0)
endif
elseif $ArrayCount then
$aArray[0] = UBound($aArray) - 1
endif
return 1
endfunc
func debug($d_string, $ln=false)
if @compiled then
return 0
endif
if IsArray($d_string) then return PrintArray($d_string, "NOT A STRING!")
local