Автор Тема: Плагин Autoit для Sublime Text (Mac Os X+Parallels)  (Прочитано 8651 раз)

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

Оффлайн WR-e-D [?]

  • Вредный
  • Новичок
  • *
  • Сообщений: 53
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте, хочу поделиться переделанным плагином для Sublime Text под Мак.
Вот как это примерно выглядит:
Нажмите для отображения изображения в оригинальном размере.
Для работы плагина нужно заменить все пути в файле плагина (autoitbuild.py) и скомпилировать файл autoitmac.au3 залив его в  директорию autoit.


Код: AutoIt [Выделить]
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\..\ICO\wred.ico
#AutoIt3Wrapper_Res_Description=Use AutoIt on Mac os With Parallels
#AutoIt3Wrapper_Res_Fileversion=2.1.5 beta
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=Copyraight Wred Media
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <FileOperations.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <GuiStatusBar.au3>
#include <Constants.au3>
#include <GUIEdit.au3>
#include <WinAPI.au3>


Opt('WinTitleMatchMode', 3)
Opt('WinWaitDelay', 0)

If Not $CmdLine[0] Then
    ToolTip("Нет параметров запуска", 0, 20)
    Sleep(2000)
    Exit
EndIf

Global $fileFullPath, $Dummy1, $hForm, $ScriptOut, $Progress1, $progresscount = 0

$AutoIt3Wrapper = _GetAutoItPath() & "\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe"
If Not FileExists($AutoIt3Wrapper) Then
    ToolTip("AutoIt3Wrapper not found", 0, 20)
    Sleep(2000)
    Exit
EndIf

$Params = StringSplit(StringReplace($CmdLineRaw, '"', ''), '^')
$ScriptAction = $Params[1]
$fileFullPath = "\\psf\Host" & StringReplace($Params[2], "/", "\")
;$fileFullPath = "\\psf\Home" & StringReplace($Params[2], "/", "\")

Switch $ScriptAction

    #cs Case "RunScript"
        Run('"' & _GetAutoItPath() & '\AutoIt3.exe" "' & $fileFullPath & '"')
        ToolTip("Runscript", 0, 20)
    #ce


    Case "RunWithDebug"
        _GetGUI()
        _GUICtrlStatusBar_SetText($Dummy1, "Запуск скрипта в режиме тестирования")
        GUICtrlSetData($Progress1, $progresscount + 5)
        _GetParam($CmdLine, '"' & _GetAutoItPath() & '\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "' & $fileFullPath & '" /UserParams')

    Case "CompileScript"
        _GetGUI()
        _GUICtrlStatusBar_SetText($Dummy1, "Компиляция")
        GUICtrlSetData($Progress1, $progresscount + 5)
        _GetParam($CmdLine, '"' & _GetAutoItPath() & '\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /in "' & $fileFullPath & '" /UserParams')

    Case "CompileScriptParam"
        _GetGUI()
        _GUICtrlStatusBar_SetText($Dummy1, "Компиляция с GUI")
        GUICtrlSetData($Progress1, $progresscount + 5)
        _GetParam($CmdLine, '"' & _GetAutoItPath() & '\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /ShowGui /in "' & $fileFullPath & '" /UserParams')


    Case "Tidy"
        _GetGUI()
        _GUICtrlStatusBar_SetText($Dummy1, "Форматирование Кода")
        GUICtrlSetData($Progress1, $progresscount + 5)
        _GetParam($CmdLine, '"' & _GetAutoItPath() & '\SciTE\Tidy\Tidy.exe" "' & $fileFullPath)

    Case "Koda"

EndSwitch




Func _SendMsg($hWnd, $iData)

    Local $tCOPYDATA = DllStructCreate('ulong_ptr;dword;ptr')
    Local $Val, $Ret

    If IsString($iData) Then
        $tData = DllStructCreate('char[' & (StringLen($iData) + 1) & '];dword')
        $Val = 1
    Else
        $tData = DllStructCreate('int;dword')
        $Val = 2
    EndIf
    DllStructSetData($tData, 1, $iData)
    DllStructSetData($tCOPYDATA, 1, $Val)
    DllStructSetData($tCOPYDATA, 2, DllStructGetSize($tData))
    DllStructSetData($tCOPYDATA, 3, DllStructGetPtr($tData))
    $Ret = DllCall('user32.dll', 'lresult', 'SendMessage', 'hwnd', $hWnd, 'uint', $WM_COPYDATA, 'ptr', 0, 'ptr', DllStructGetPtr($tCOPYDATA))
    If (@error) Or (Not $Ret[0]) Then
        Return 0
    EndIf
    Return 1
EndFunc   ;==>_SendMsg


Func _GetGUI()
    #Region ### START Koda GUI section ### Form=
    $hForm = GUICreate("AutoItMac", 200, 37, 0, 0)
    $Progress1 = GUICtrlCreateProgress(0, 0, 214, 17)
    GUICtrlSetColor(-1, 32250); not working with Windows XP Style
    $Dummy1 = _GUICtrlStatusBar_Create($hForm)
    _GUICtrlStatusBar_SetSimple($Dummy1)
    _GUICtrlStatusBar_SetText($Dummy1, "Начинаем обработку заданий")
    GUICtrlSetData($Progress1, $progresscount + 10)
    GUICtrlSetFont(-1, 9, 400, 0, 'Courier New')
    _GUICtrlStatusBar_SetMinHeight($Dummy1, 20)
    #EndRegion ### END Koda GUI section ###
    GUIRegisterMsg($WM_COPYDATA, 'WM_COPYDATA')
    GUISetState()
    $Count = 0

EndFunc   ;==>_GetGUI

Func _GetParam($Param, $Command)
    If ($Param[0] = 1) Then
        $ExitCode = -1
        $hWnd = Ptr(HWnd($hForm))
        $PID = Run($Command, '', @SW_HIDE, $STDERR_MERGED)
        _GUICtrlStatusBar_SetText($Dummy1, "Скрипт запущен")
        GUICtrlSetData($Progress1, $progresscount + 15)
        If $PID Then
            Switch @OSVersion
                Case 'WIN_2000', 'WIN_2003', 'WIN_XP', 'WIN_XPe'
                    $hProcess = _WinAPI_OpenProcess(0x0400, 0, $PID) ; PROCESS_QUERY_INFORMATION
                Case Else ; Vista/7
                    $hProcess = _WinAPI_OpenProcess(0x1000, 0, $PID) ; PROCESS_QUERY_LIMITED_INFORMATION
            EndSwitch
            While 1
                $Data = StdoutRead($PID)
                If @error Then
                    ExitLoop
                EndIf
                If @extended Then
                    If Not _SendMsg($hWnd, _WinAPI_OemToChar($Data)) Then
                        Exit
                    EndIf
                EndIf
            WEnd
            If $hProcess Then
                $ExitCode = _WinAPI_GetExitCodeProcess($hProcess)
                If (@error) Or ($ExitCode = 259) Then
                    $ExitCode = -1
                    If ProcessExists($PID) Then
                        ProcessClose($PID)
                    EndIf
                EndIf
                _WinAPI_CloseHandle($hProcess)
            EndIf
        EndIf
        _GUICtrlStatusBar_SetText($Dummy1, "Считывание данных")
        GUICtrlSetData($Progress1, $progresscount + 20)
        _SendMsg($hWnd, $ExitCode)
        Exit
    EndIf
EndFunc   ;==>_GetParam


Func _WriteToFile($Output)
    $OpenFileName = _FO_PathSplit($fileFullPath)
    $file = FileOpen(_GetAutoItPath() & "/loging/" & $OpenFileName[1] & ".log", 256 + 1)
    ; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
    If $file = -1 Then
        _GUICtrlStatusBar_SetText($Dummy1, "Невозможно открыть лог файл - выходим")
        Sleep(1000)
        Exit
    EndIf
    FileWrite($file, $Output & @CRLF)
    FileClose($file)
EndFunc   ;==>_WriteToFile


Func _GetAutoItPath()
    Local $OSArch = Execute("@OSArch")
    Local $sRegistry_Key = "HKLM\SOFTWARE\AutoIt v3\AutoIt"

    If $OSArch = "" Then
        $OSArch = Execute("@ProcessorArch")
    EndIf

    If $OSArch <> "x86" Then
        $sRegistry_Key = "HKLM\SOFTWARE\Wow6432Node\AutoIt v3\AutoIt"
    EndIf

    Local $Au3_Path = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '')
    If @Compiled Then $Au3_Path = RegRead($sRegistry_Key, "InstallDir")

    If FileExists($Au3_Path & "\AutoIt3.exe") Then Return $Au3_Path

    $Au3_Path = @ProgramFilesDir & "\AutoIt3"
    If FileExists($Au3_Path & "\AutoIt3.exe") Then Return $Au3_Path

    $Au3_Path = @ScriptDir & "\AutoIt3"
    If FileExists($Au3_Path & "\AutoIt3.exe") Then Return $Au3_Path

    Return SetError(1, 0, 0)
EndFunc   ;==>_GetAutoItPath

Func _WinAPI_GetExitCodeProcess($hProcess)

    Local $Ret = DllCall('kernel32.dll', 'int', 'GetExitCodeProcess', 'ptr', $hProcess, 'dword*', 0)

    If (@error) Or (Not $Ret[0]) Then
        Return SetError(1, 0, 0)
    EndIf
    Return $Ret[2]
EndFunc   ;==>_WinAPI_GetExitCodeProcess

Func _WinAPI_OemToChar($sStr)

    Local $tData = DllStructCreate('char[' & StringLen($sStr) + 1 & ']')
    Local $Ret = DllCall('user32.dll', 'int', 'OemToChar', 'str', $sStr, 'ptr', DllStructGetPtr($tData))

    If (@error) Or (Not $Ret[0]) Then
        Return SetError(1, 0, '')
    EndIf
    Return DllStructGetData($tData, 1)
EndFunc   ;==>_WinAPI_OemToChar

Func WM_COPYDATA($hWnd, $iMsg, $wParam, $lParam)

    Local $tCOPYDATA = DllStructCreate('ulong_ptr;dword;ptr', $lParam)

    Switch $hWnd
        Case $hForm
            Switch DllStructGetData($tCOPYDATA, 1)
                Case 1 ; Text
                    $tData = DllStructCreate('char[' & (DllStructGetData($tCOPYDATA, 2) - 4) & '];dword', DllStructGetData($tCOPYDATA, 3))
                    $ScriptOut = DllStructGetData($tData, 1)
                    _GUICtrlStatusBar_SetText($Dummy1, "Обработка данных")
                    $progresscount = $progresscount + 25
                    If $progresscount > 100 Then $progresscount = 0
                    GUICtrlSetData($Progress1, $progresscount)
                    _WriteToFile($ScriptOut)

                Case 2 ; ExitCode
                    _WriteToFile("{AutoitExitScript}")
                    _GUICtrlStatusBar_SetText($Dummy1, "Выход")
                    $tData = DllStructCreate('int;dword', DllStructGetData($tCOPYDATA, 3))
                    GUICtrlSendToDummy($Dummy1, DllStructGetData($tData, 1))
            EndSwitch
            Return 1
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COPYDATA
 


Делал для себя, за оптимизацию и советы буду благодарен.


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

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

Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Отправлен: Июнь 25, 2014, 05:24:30 »

Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #1, Отправлен: Июнь 25, 2014, 17:18:42 »
А расцветку кода сам писал?

   
На форуме принято отмечать полезные сообщения пальцем вверх =)
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.

Оффлайн WR-e-D [?]

  • Вредный
  • Новичок
  • *
  • Сообщений: 53

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #2, Отправлен: Июнь 25, 2014, 21:40:11 »
С директории "C:\Program Files\AutoIt3\Extras\Editors"

Оффлайн winstan [?]

  • Продвинутый
  • ***
  • Сообщений: 406
  • Репутация: 78
  • Пол: Мужской
  • Эксплотатор)
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #3, Отправлен: Июнь 25, 2014, 22:04:02 »
 :rofl:разрабатывать приложения под Windows на Mac...
Помог мой мост? Жми "Полезное сообщение")

я полный "чайник" , но с другой стороный-не пустой.
Каму не трудно кликните по банару(это поднимит мой кирпичек на стене ников)

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

Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #3 Отправлен: Июнь 25, 2014, 22:04:02 »

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #4, Отправлен: Июнь 25, 2014, 23:00:55 »
winstan  [?]
Цитировать
разрабатывать приложения под Windows на Mac...
так там винда. просто под parallels.
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #5, Отправлен: Июнь 25, 2014, 23:57:43 »
winstan  [?]
Цитировать
разрабатывать приложения под Windows на Mac...
А что не так? Тут есть крутой режим - Coherence, интеграция систем на высшем уровне  :)
« Последнее редактирование: Июнь 26, 2014, 00:03:50 от Medic84 »

Оффлайн WR-e-D [?]

  • Вредный
  • Новичок
  • *
  • Сообщений: 53

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #6, Отправлен: Июнь 26, 2014, 12:44:07 »
winstan  [?]
Цитировать
разрабатывать приложения под Windows на Mac...
так там винда. просто под parallels.
Зря смеетесь - очень удобно )

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #7, Отправлен: Июнь 27, 2014, 00:34:52 »
WR-e-D  [?]
Цитировать
Зря смеетесь - очень удобно )
OffTopicа где именно я смеялся?

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

Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #7 Отправлен: Июнь 27, 2014, 00:34:52 »

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1419
  • Репутация: 177
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #8, Отправлен: Июнь 27, 2014, 09:51:26 »
OffTopicа где именно я смеялся?
Он наверно имел ввиду это сообщение
:rofl:разрабатывать приложения под Windows на Mac...

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

Re: Плагин Autoit для Sublime Text (Mac Os X+Parallels)
« Ответ #8 Отправлен: Июнь 27, 2014, 09:51:26 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
3440 Просмотров
Последний ответ Ноябрь 28, 2009, 15:11:54
от Yashied
2 Ответов
3360 Просмотров
Последний ответ Январь 30, 2011, 00:48:57
от CreatiK
2 Ответов
2639 Просмотров
Последний ответ Май 09, 2012, 13:14:47
от CreatoR
1 Ответов
2625 Просмотров
Последний ответ Июль 17, 2012, 22:42:06
от inververs
4 Ответов
3299 Просмотров
Последний ответ Декабрь 18, 2012, 19:22:05
от wisenlucky
6 Ответов
4253 Просмотров
Последний ответ Август 04, 2013, 17:16:03
от Afonichev
4 Ответов
3556 Просмотров
Последний ответ Август 21, 2013, 03:19:10
от AZJIO
2 Ответов
3591 Просмотров
Последний ответ Январь 12, 2014, 21:01:26
от madmasles
1 Ответов
857 Просмотров
Последний ответ Октябрь 23, 2015, 12:42:20
от InnI
2 Ответов
846 Просмотров
Последний ответ Сентябрь 23, 2016, 13:22:08
от БлагоѨръ