Автор Тема: [Окна, Диалоги] вынос параметров в диалоговое окно  (Прочитано 352 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.4.1

Описание:
Здравствуйте,

есть код, который конвертирует изображение через внешнюю консольную программу с параметрами:
Код: AutoIt [Выделить]
#include <File.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $i
Local $sSourceFile, $sDestFile, $sDestPath, $sExePath
Local $sDrive, $sFolder, $sFileName, $sExt, $sParams, $sRunWait

Local $sPattern = "\.(?i:dds)"

If $CmdLine[0] <> 0 Then
    If FileExists("C:\Program Files\ImageMagick\tools\texconv.exe") Then
        ProgressOn("Converting", "", "0%")

        For $i = 1 To $CmdLine[0]
            $sSourceFile = $CmdLine[$i]

            ProgressSet(($i / $CmdLine[0]) * 100, $sFileName & $sExt, String(Round($i / $CmdLine[0] * 100, 1)) & "%")

            If FileExists($sSourceFile) Then
                _PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)

             If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
                    $sExePath = '"C:\Program Files\ImageMagick\tools\texconv.exe"'
                    $sParams = '-y -f R8G8B8A8_UNORM -ft tga -o'
                    $sDestPath = '"' & $sDrive & '\' & StringTrimRight($sFolder, 1) & '\\' & '"'
                    $sSourceFile = '"' & $sSourceFile & '"'
                    $sRunWait = $sExePath & " " & $sParams & " " & $sDestPath & " " & $sSourceFile
                    ;MsgBox(0, '', $sRunWait) ; отладка

                     RunWait($sRunWait, "", @SW_HIDE)
;~                     RunWait($sRunWait)
             Else
                 ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
             EndIf
            Else
                MsgBox(0, '', "File [" & $sSourceFile & "] not found")
            EndIf
        Next

        ProgressSet(100, "Converting complete", "100%")

        Sleep(1000)
        ProgressOff()
    EndIf
Else
    MsgBox(0, "Usage", "Drop file(s) on " & @ScriptName)
    ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
EndIf

Exit (0)
 


подскажите как вынести эти параметры (-y -f R8G8B8A8_UNORM -ft tga -o) отдельными переменными в диалоговое окно: если, допустим, галочка стоит (или поле заполнено), то параметр используется - в противном случае параметр игнорируется.
А так же, чтобы параметры сохранялись в этом окне при любом количестве открытий/закрытий окошка до того момента пока их не поменяют и не нажмут ОК.

меня перенаправили отсюда: http://autoit-script.ru/index.php?topic=26049.msg145336#msg145336

примерный вид желаемого окна вот такое:


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Русское сообщество AutoIt

[Окна, Диалоги] вынос параметров в диалоговое окно
« Отправлен: Сентябрь 02, 2018, 13:31:16 »

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 800
  • Репутация: 140
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Возможно и глупость , но я себе представил так (набросал только принцип выбора параметров из CheckBox):
(нажмите для показа/скрытия)
Сохранение выбранных CheckBox для последующих запусков легко реализовать через ini файл

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
я так понимаю тут идёт какой-то перебор чекбоксов у вас, но мне не понятно как выцепить конкретный чекбокс? или поле для ввода?
я умудрился правильно вставить свой код в ваш. отрабатывает вроде правильно: при перетаскивании файлов на прогу открывается окошко с параметрами, и после ОК происходит конверт, только понятно ничего не конвертируется:

Код: AutoIt [Выделить]
#include <File.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 278, 239, 205, 139)
$Group1 = GUICtrlCreateGroup("Ia?aiao?u", 8, 8, 257, 169)
$Checkbox1 = GUICtrlCreateCheckbox("-y", 16, 32, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("-f", 16, 56, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("R8G8B8A8_UNORM", 16, 80, 97, 17)
$Checkbox4 = GUICtrlCreateCheckbox("-ft", 16, 104, 97, 17)
$Checkbox5 = GUICtrlCreateCheckbox("tga", 16, 128, 97, 17)
$Checkbox6 = GUICtrlCreateCheckbox("-o", 16, 152, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("OK", 8, 184, 163, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

AutoItSetOption("MustDeclareVars", 1)

Local $i, $nMsg, $CheckBox, $sParam
Local $sSourceFile, $sDestFile, $sDestPath, $sExePath
Local $sDrive, $sFolder, $sFileName, $sExt, $sParams, $sRunWait

Local $sPattern = "\.(?i:dds|jpg)"

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            Local $sParam = ''
            For $i = 1 To 6
                $CheckBox = Eval('Checkbox' & $i)
                If GUICtrlRead($CheckBox) = $GUI_CHECKED Then $sParam &= ' ' & GUICtrlRead($CheckBox, 1)
            Next

               If $CmdLine[0] <> 0 Then
                   If FileExists("C:\Program Files\ImageMagick\tools\texconv.exe") Then
                       ProgressOn("Converting", "", "0%")

                       For $i = 1 To $CmdLine[0]
                           $sSourceFile = $CmdLine[$i]

                           ProgressSet(($i / $CmdLine[0]) * 100, $sFileName & $sExt, String(Round($i / $CmdLine[0] * 100, 1)) & "%")

                           If FileExists($sSourceFile) Then
                               _PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)

                            If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
                                   $sExePath = '"C:\Program Files\ImageMagick\tools\texconv.exe"'
                                   $sParams = $sParam & '-f R8G8B8A8_UNORM -ft tga -o'
                                   $sDestPath = '"' & $sDrive & '\' & StringTrimRight($sFolder, 1) & '\\' & '"'
                                   $sSourceFile = '"' & $sSourceFile & '"'
                                   $sRunWait = $sExePath & " " & $sParams & " " & $sDestPath & " " & $sSourceFile
                                   ;MsgBox(0, '', $sRunWait) ; отладка

                                    RunWait($sRunWait, "", @SW_HIDE)
               ;~                     RunWait($sRunWait)
                            Else
                                ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
                            EndIf
                           Else
                               MsgBox(0, '', "File [" & $sSourceFile & "] not found")
                           EndIf
                       Next

                       ProgressSet(100, "Converting complete", "100%")

                       Sleep(1000)
                       ProgressOff()
                   EndIf
               Else
                   MsgBox(0, "Usage", "Drop file(s) on " & @ScriptName)
                   ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
               EndIf

               Exit (0)


            ;В Итоге в переменной строка с параметрами:
;~             MsgBox(0, '', $sParam)

    EndSwitch
WEnd


да, вот ещё, как объединить окошко прогресса с окошком параметров?

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2760
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
если конвертер не один, то параметры запуска разные. Значит, можно использовать
Код: AutoIt [Выделить]
каждая вкладка для своего конвертера. Кстати, возможно, некоторые параметры одного и того же конвертера могут быть не совместимы. Значит где-то будут не чекбоксы, а радио.
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Русское сообщество AutoIt

Re: [Окна, Диалоги] вынос параметров в диалоговое окно
« Ответ #3 Отправлен: Сентябрь 02, 2018, 18:50:38 »

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
скрипт должен работать только с одним конвертером - не хочется слишком городить.
задача скрипта быть быстро-конвертером. я создаю ярлыки в папке Send to для этих скриптов и вызываю для пачки файлов  :)

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2760
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
для прогресса использовать
Код: AutoIt [Выделить]
вычислить сколько файлов приходится на один процент и при конвертировании устанавливать значение в прогрессбар. но это будет приблизительно. если конвертер дает в консоль проценты конвертирования, то можно вычислить общий процент. если нет, то только отталкиваться от количества.

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
не получается все знания собрать в кучу, в скрипт. помогите пожалуйста :(

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2760
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
вот это "R8G8B8A8_UNORM" будет меняться?


Добавлено: Сентябрь 04, 2018, 12:47:47
рабочий код
использовал файлы .jpg
(нажмите для показа/скрытия)
« Последнее редактирование: Сентябрь 05, 2018, 22:43:12 от joiner »

Русское сообщество AutoIt

Re: [Окна, Диалоги] вынос параметров в диалоговое окно
« Ответ #7 Отправлен: Сентябрь 04, 2018, 11:21:06 »

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
работает, но только с жепегом.
приложил файл DDS


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2760
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
ты какие параметры указываешь в окне?




Добавлено: Сентябрь 05, 2018, 22:43:51
нашел ошибку. поправил предыдущее сообщение.
« Последнее редактирование: Сентябрь 05, 2018, 22:43:51 от joiner, Причина: Объединение сообщений »

Оффлайн Tosyk [?]

  • Новичок
  • *
  • Сообщений: 97

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
ты какие параметры указываешь в окне?
ставлю все галки для dds, а для жепега ставлю -ft и tga - он конвертирует в dds, но это детали, главное жепег он конвертирует

Русское сообщество AutoIt

Re: [Окна, Диалоги] вынос параметров в диалоговое окно
« Ответ #10 Отправлен: Сентябрь 05, 2018, 22:45:09 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
4654 Просмотров
Последний ответ Апрель 13, 2010, 00:12:35
от Garrett
14 Ответов
6584 Просмотров
Последний ответ Февраль 21, 2011, 02:16:30
от CreatoR
8 Ответов
4000 Просмотров
Последний ответ Март 07, 2011, 16:59:41
от Belfigor
5 Ответов
3478 Просмотров
Последний ответ Март 16, 2011, 13:52:29
от pan1982
2 Ответов
1452 Просмотров
Последний ответ Июль 16, 2014, 09:17:47
от Garrett
2 Ответов
1695 Просмотров
Последний ответ Март 26, 2015, 14:36:37
от pvnn
5 Ответов
1740 Просмотров
Последний ответ Июль 14, 2015, 17:50:32
от selepok
2 Ответов
887 Просмотров
Последний ответ Февраль 14, 2016, 15:34:27
от samuron
2 Ответов
1824 Просмотров
Последний ответ Август 10, 2016, 08:35:21
от wasd
4 Ответов
147 Просмотров
Последний ответ Сентябрь 02, 2018, 13:06:27
от Tosyk