Tosyk
Новичок
- Сообщения
- 206
- Репутация
- 0
Приветствую,
Помогите победить мигание поля ввода в скрипте:
проблема вот в этом месте:
если убрать "or $ExtractBlue" и "or _IsChecked($ExtractBlue)", то поле не мигает.
помогите пожалуйста
Помогите победить мигание поля ввода в скрипте:
Код:
#include <File.au3>
#Include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
AutoItSetOption("MustDeclareVars", 1)
HotKeySet("{ESC}", "Terminate")
Local $i
Local $sSourceFile, $sDestFile, $sDestFile3, $sRunWait, $sParams, $sNewFileName, $sFileLogPath, $iFileSize, $ScriptNameWoExt
Local $hGUI, $ProgressBar1, $Label, $Progress, $Progress1, $inpVal, $CheckKeepAlpha, $v1, $sNewFileName2, $sDestFile2, $sParams2, $sRunWait2, $LabelStatus, $bMover, $cMover, $qMover, $ExtractAlpha, $FlipY, $ExtractBlue
Local $sDrive, $sFolder, $sFileName, $sExt
Local $sIMConv = 'magick.exe', $sIMPathFull = 'C:\Program Files\ImageMagick\', $sIMPath = FileGetShortName($sIMPathFull & $sIMConv) ; path to image magick tools
Local $Exts = "tga|jpg|bmp|dds|png|tif|jpeg", $sPattern = "\.(?i:" & $Exts & ")", $ExtsPreview = " tga | jpg | bmp | dds | png | tif | jpeg " ; supported input file extensions
Local $ExtOutput = "jpg", $ExtOutput2 = "png"
Local $LogDefaultSize = '70'
If Not $CmdLine[0] Then
MsgBox($MB_SYSTEMMODAL, "Usage", "Drop " & $ExtsPreview & " file(s)" & @LF & "on " & @ScriptName)
ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
Exit
EndIf
If $CmdLine[0] <> 0 Then
If FileExists($sIMPath) Then
ProcessFiles()
Else
MsgBox(0, $sIMConv & " not found", "File [" & $sIMPathFull & $sIMConv & "] not found" & @CRLF)
ConsoleWrite("Download Image Magick: " & $sIMConv & " to use this tool." & @CRLF)
EndIf
Else
MsgBox(0, "Usage", "Drop file(s) on " & @ScriptName)
ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
EndIf
Func ProcessFiles()
#Region ### START Koda GUI section ### Form=
$hGUI = GUICreate("Converting to PNG", 300, 285, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "Terminate")
;PNG Option group
;$cMover = 0
;Local $Group2 = GUICtrlCreateGroup("Options (PNG):", 8, 5+$cMover, 284, 56)
;$CheckKeepAlpha = GUICtrlCreateCheckbox("Keep alpha channel", 24, 30+$cMover, 130, 17)
;$FlipY = GUICtrlCreateCheckbox("Flip Vertical", 160, 30+$cMover, 130, 17)
;GUICtrlSetState($CheckKeepAlpha, $GUI_CHECKED)
;JPG Quality Input
$qMover = 68
;Local $Group1 = GUICtrlCreateGroup("Extraction options (JPG):", 8, 5+$qMover, 284, 86)
$ExtractAlpha = GUICtrlCreateCheckbox("Extract alpha channel", 24, 28+$qMover, 130, 17)
$ExtractBlue = GUICtrlCreateCheckbox("Extract blue channel", 160, 28+$qMover, 130, 17)
$inpVal = GUICtrlCreateInput("90", 20, 56+$qMover, 260, 22)
GUICtrlSetState(-1, $GUI_DISABLE)
;Buttons and bar
$bMover = 92
$Label = GUICtrlCreateLabel("Press Convert to proceed", 20, 94+$bMover, 220, 20, $SS_LEFT)
$LabelStatus = GUICtrlCreateLabel("Ready", 20, 153+$bMover, 220, 20, $SS_LEFT)
$Progress1 = CreateProgress(20, 115+$bMover, 260, 20)
Local $Button1 = GUICtrlCreateButton("Convert", 206, 150+$bMover, 75, 25)
GUICtrlSetState ($Button1, $GUI_DEFBUTTON)
;Initializer
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Exit
Case $ExtractAlpha or $ExtractBlue
If _IsChecked($ExtractAlpha) or _IsChecked($ExtractBlue) Then
GUICtrlSetState($inpVal, $GUI_ENABLE)
Else
GUICtrlSetState($inpVal, $GUI_DISABLE)
EndIf
Case $Button1
GUICtrlSetState($inpVal, $GUI_DISABLE)
GUICtrlSetState($CheckKeepAlpha, $GUI_DISABLE)
GUICtrlSetState($Button1, $GUI_DISABLE)
MainLoop()
ExitLoop
Case Else
ContinueLoop
EndSwitch
WEnd
EndFunc ;==>ProcessFiles
Func Settings()
If _IsChecked($CheckKeepAlpha) Then
$v1 = ' '
Else
$v1 = ' ' & '-alpha off' & ' '
EndIf
If _IsChecked($ExtractAlpha) Then
;Extracting JPG
$sSourceFile = '"' & $sSourceFile & '"'
$sNewFileName = ($sFileName & '_a.' & $ExtOutput)
$sDestFile = '"' & $sDrive & StringTrimRight($sFolder, 1) & '\' & $sNewFileName & '"'
$sParams = '-channel A -separate -quality' & ' ' & GUICtrlRead($inpVal) & ' ' & '-colorspace sRGB'
$sRunWait = $sIMPath & " " & $sSourceFile & " " & $sParams & " " & $sDestFile
EndIf
;Converting PNG
$sNewFileName2 = ($sFileName & '.' & $ExtOutput2)
$sDestFile2 = '"' & $sDrive & StringTrimRight($sFolder, 1) & '\' & $sNewFileName2 & '"'
$sDestFile3 = $sDrive & StringTrimRight($sFolder, 1) & '\' & $sNewFileName2
$sParams2 = $v1 & '-colorspace sRGB'
$sRunWait2 = $sIMPath & " " & $sSourceFile & " " & $sParams2 & " " & $sDestFile2
EndFunc ;==>Settings
Func MainLoop()
WriteLogFile()
ConsoleWrite("File Log Path: " & $sFileLogPath & @LF)
For $i = 1 To $CmdLine[0]
$sSourceFile = $CmdLine[$i]
_PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)
GUICtrlSetData($ProgressBar1, ($i / $CmdLine[0]) * 100)
UpdateProgress($Progress1, ($i / $CmdLine[0]) * 100)
GUICtrlSetData($Label, $sFileName & $sExt)
GUICtrlSetState($LabelStatus, $GUI_ENABLE)
GUICtrlSetColor($LabelStatus, $COLOR_BLACK)
GUICtrlSetData($LabelStatus, 'Converting')
Sleep(20)
If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
If FileExists($sSourceFile) Then
Settings() ; function of settings
ConsoleWrite("Full converting path: " & $sRunWait & @LF)
RunWait(@ComSpec & ' /c ' & $sRunWait, '', @SW_HIDE)
RunWait(@ComSpec & ' /c ' & $sRunWait2, '', @SW_HIDE)
Else
ConsoleWriteError("File [" & $sSourceFile & "] not found" & @CRLF)
EndIf
If FileExists($sDestFile3) Then
LabelAnim(' .')
LabelAnim(' . .')
LabelAnim(' . . .')
LabelAnim(' . . . OK')
Sleep(20)
Else
LabelAnim(' .')
LabelAnim(' . .')
LabelAnim(' . . .')
GUICtrlSetColor($LabelStatus, $COLOR_RED)
LabelAnim(' . . . ERROR')
UpdateLogFile()
EndIf
Else
; MsgBox(0, "Wrong extension", "Extension of file [" & $sFileName & "] is [" & $sExt & "] and not in" & @LF & "[" & $ExtsPreview & "]" & @CRLF)
ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
; Terminate()
LabelAnim(' .')
LabelAnim(' . .')
LabelAnim(' . . .')
GUICtrlSetColor($LabelStatus, $COLOR_RED)
LabelAnim(' . . . Wrong Extension')
UpdateLogFile()
EndIf
Next
; Retrieve the file size (in bytes)
$iFileSize = FileGetSize($sFileLogPath)
ConsoleWrite("FileLog size: " & $iFileSize & @LF)
If $iFileSize < $LogDefaultSize Then
FileDelete($sFileLogPath)
ElseIf $iFileSize > $LogDefaultSize Then
FileMove($sFileLogPath, @WorkingDir, $FC_OVERWRITE)
EndIf
GUICtrlSetData($Label, "Converting complete")
Sleep(10)
EndFunc ;==>MainLoop
Func LabelAnim($Result)
GUICtrlSetData($LabelStatus, 'Converting' & $Result)
Sleep(12)
EndFunc
Func RemoveExt($Input)
Local $ExtArray = StringSplit($Input, ".")
Return StringReplace($Input, "." & $ExtArray[$ExtArray[0]], "", -1)
EndFunc
Func GetFileName($Input)
Local $PathArray = StringSplit($Input, "\/")
Return $PathArray[$PathArray[0]]
EndFunc
;---------------------------------------------------------------
;- Creating file in @tempdir
;---------------------------------------------------------------
Func WriteLogFile()
; Create a constant variable in Local scope of the filepath that will be read/written to.
$ScriptNameWoExt = RemoveExt(GetFileName(@ScriptName))
$sFileLogPath = (@TempDir & '\' & '_' & $ScriptNameWoExt & '_errorlog_' & @YEAR & '_' & @MON & '_' & @MDAY & '_' & @HOUR & '_' & @MIN & '_' & @SEC & '_.txt')
If FileExists($sFileLogPath) Then
FileDelete($sFileLogPath)
EndIf
; Create a temporary file to write data to.
If Not FileWrite($sFileLogPath, "ImageMagick converter (" & $sIMConv & ") can't convert these files:" & @CRLF) Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred whilst writing the temporary file.")
Return False
EndIf
EndFunc
;---------------------------------------------------------------
;- Update log file in @tempdir
;---------------------------------------------------------------
Func UpdateLogFile()
; Open the file for writing (append to the end of a file) and store the handle to a variable.
Local $hFileOpen = FileOpen($sFileLogPath, $FO_APPEND)
If $hFileOpen = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred whilst writing the temporary file.")
Return False
EndIf
; Write data to the file using the handle returned by FileOpen.
FileWriteLine($hFileOpen, ($sFileName & $sExt))
Sleep(20)
; Close the handle returned by FileOpen.
FileClose($hFileOpen)
EndFunc
;---------------------------------------------------------------
;- Enhanced Progress widget
;---------------------------------------------------------------
Func CreateProgress($x, $y, $w, $h, $Label="")
Dim $Progress[2]
$Progress[0] = GuiCtrlCreateProgress($x, $y, $w, $h) ; this is progress bar
$Progress[1] = GuiCtrlCreateLabel("---", $x+0, $y-21, '', '', $SS_RIGHT) ; this is percentage label
GUICtrlSetFont($Progress[1], 11, 500, 0, "")
GUICtrlSetBkColor($Progress[1], $GUI_BKCOLOR_TRANSPARENT)
Return $Progress
EndFunc
Func UpdateProgress($ProgressID, $Percent, $Label="")
GUICtrlSetData($ProgressID[0], $Percent)
GUICtrlSetData($ProgressID[1], $Label & Round($Percent, 1) & "%")
EndFunc
Func _IsChecked($idControlID)
Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked
Func Terminate()
If WinGetHandle('') <> $hGUI Then
HotKeySet('{ESC}')
Send('{ESC}')
HotKeySet('{ESC}', '_Close')
Return
EndIf
GUIDelete()
Exit
EndFunc ;==>Terminate
Exit(0)
проблема вот в этом месте:
Код:
Case $ExtractAlpha or $ExtractBlue
If _IsChecked($ExtractAlpha) or _IsChecked($ExtractBlue) Then
GUICtrlSetState($inpVal, $GUI_ENABLE)
Else
GUICtrlSetState($inpVal, $GUI_DISABLE)
EndIf
если убрать "or $ExtractBlue" и "or _IsChecked($ExtractBlue)", то поле не мигает.
Сообщение автоматически объединено:
помогите пожалуйста
Последнее редактирование: