Advertisement
AZJIO

Gui_Test_Search

Oct 24th, 2011
590
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 13.48 KB | None | 0 0
  1. #include <GUIConstantsEx.au3>
  2. #include <ComboConstants.au3>
  3. #include <FileOperations.au3>
  4. #include <Array.au3>
  5.  
  6. Global $s = Chr(1)
  7. Opt("GUIDataSeparatorChar", $s)
  8. Opt("GUIOnEventMode", 1)
  9. Global $Path0 = '$sPath', $ComboFileS0 = '_FO_FileSearch', $Mask0 = '*', $Include0 = True, $Level0 = 125, $Full0 = 1, $Arr0 = 1, $TypeMask0 = 1, $fileS = 1, $Locale0 = 0
  10. ; _FO_FileSearch($Path, $Mask = '*', $Include = True, $Level = 125, $Full = 1, $Arr = 1, $TypeMask = 1)
  11.  
  12. ; En
  13. $LngTitle = 'Set'
  14. $LngFunc = 'Function'
  15. $LngPath = 'Path'
  16. $LngMask = 'Mask'
  17. $LngInclude = 'Include'
  18. $LngDepth = 'Depth'
  19. $LngFull = 'Full'
  20. $LngArr = 'result'
  21. $LngTypeMask = 'TypeMask'
  22. $LngFullH = '0 - relative' & @CRLF & '1 - full (Default)' & @CRLF & '2 - filenames with extension' & @CRLF & '3 - filenames without extension'
  23. $LngFullH1 = '0 - relative' & @CRLF & '1 - full (Default)'
  24. $LngArrH = '0 - list' & @CRLF & '1 - array, $a[0]=number (Default)' & @CRLF & '2 - array'
  25. $LngTypeMaskH = '0 - auto detect' & @CRLF & '1 - mask= *.is?|s*.cp* (Default)' & @CRLF & '2 - Type= tmp|bak|gid'
  26. $LngStB = 'StatusBar'
  27. $LngTst = 'Test'
  28.  
  29. $LngPrA0 = 'Delimited list @CRLF'
  30. $LngPrA1 = 'Array, where $iArray[0]=number of files'
  31. $LngPrA2 = 'Array, where $iArray[0] contains the first file'
  32. $LngPrF0 = 'relative'
  33. $LngPrF1 = 'Full path (by default)'
  34. $LngPrF2 = 'File names with extension'
  35. $LngPrF3 = 'File names without extension'
  36. $LngPrT0 = 'Auto detection (1 or 2)'
  37. $LngPrT1 = 'Force the use of mask type: *.is?|s*.cp*'
  38. $LngPrT2 = 'Force the use of mask type: tmp|bak|gid'
  39. $LngLocale = 'Sensitivity'
  40. $LngLocaleH = '0 - Not case sensitive (only for "A-z"), by default.' & @CRLF & '1 - Case sensitive (for any characters)' & @CRLF & '<symbols> - А-яЁё Not case sensitive of a specified range of Unicode.'
  41. $LngPrL0 = 'Not case sensitive (only for "A-z"), by default'
  42. $LngPrL1 = 'Case sensitive (for any characters)'
  43. $LngPrL2 = 'А-яЁё Not case sensitive of a specified range of Unicode'
  44.  
  45. ; Ru
  46. ; если русская локализация, то русский язык
  47. If @OSLang = 0419 Then
  48.     $LngTitle = 'Установки'
  49.     $LngFunc = 'Функция'
  50.     $LngPath = 'Путь'
  51.     $LngMask = 'Маска'
  52.     $LngInclude = 'Включение'
  53.     $LngDepth = 'Вложенность'
  54.     $LngFull = 'Полный'
  55.     $LngArr = 'Результат'
  56.     $LngTypeMask = 'Тип маски'
  57.     $LngFullH = '0 - относительный' & @CRLF & '1 - полный путь (по умолчанию)' & @CRLF & '2 - имена файлов с расширением' & @CRLF & '3 - имена файлов без расширения'
  58.     $LngFullH1 = '0 - относительный' & @CRLF & '1 - полный путь (по умолчанию)'
  59.     $LngArrH = '0 - список' & @CRLF & '1 - массив с количеством элементов (по умолчанию)' & @CRLF & '2 - массив'
  60.     $LngTypeMaskH = '0 - автоопределение' & @CRLF & '1 - маска вида *.is?|s*.cp* (по умолчанию)' & @CRLF & '2 - по типу tmp|bak|gid'
  61.     $LngStB = 'Строка состояния'
  62.     $LngTst = 'Тест'
  63.  
  64.     $LngPrA0 = 'список с разделителем @CRLF'
  65.     $LngPrA1 = 'массив, в котором $array[0]=количество файлов'
  66.     $LngPrA2 = 'массив, в котором $array[0] содержит первый файл'
  67.     $LngPrF0 = 'относительный'
  68.     $LngPrF1 = 'полный путь (по умолчанию)'
  69.     $LngPrF2 = 'имена файлов с расширением'
  70.     $LngPrF3 = 'имена файлов без расширения'
  71.     $LngPrT0 = 'автоопределение типа маски 1 или 2'
  72.     $LngPrT1 = 'принудительно использовать маску вида *.is?|s*.cp*'
  73.     $LngPrT2 = 'принудительно маска вида tmp|bak|gid'
  74.     $LngLocale = 'Регистр'
  75.     $LngLocaleH = '0 - не учитывать регистр (только для латинских букв), по умолчанию.' & @CRLF & '1 - учитывать регистр (для любых символов)' & @CRLF & '<символы> - не учитывать регистр указанного диапазона символов ' & @CRLF & 'локального языка, включая латинские, например "А-яЁё".'
  76.     $LngPrL0 = 'не учитывать регистр (только для латинских букв)'
  77.     $LngPrL1 = 'учитывать регистр (для любых символов)'
  78.     $LngPrL2 = 'А-яЁё не учитывать регистр указанного диапазона Unicode'
  79. EndIf
  80.  
  81. $Gui = GUICreate($LngTitle & ' FileOperations', 700, 150)
  82. GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
  83.  
  84. ; GUICtrlCreateLabel($LngPath, 10, 40, 80, 17)
  85. $InputPath = GUICtrlCreateCombo('', 10, 10, 655, 22)
  86. GUICtrlSetData(-1, @WindowsDir & $s & @SystemDir & $s & @ProgramFilesDir & $s & @UserProfileDir & $s & @HomeDrive & $s & '$sPath', @WindowsDir)
  87. $PathOpen = GUICtrlCreateButton("...", 664, 10, 26, 22)
  88. GUICtrlSetFont(-1, 16)
  89. GUICtrlSetOnEvent(-1, "_OpenFldr")
  90.  
  91. GUICtrlCreateLabel($LngFunc, 10, 44, 105, 17)
  92. $ComboFileS = GUICtrlCreateCombo('', 10, 60, 135, 23, 0x3)
  93. GUICtrlSetData(-1, '_FO_FileSearch' & $s & '_FO_FolderSearch', '_FO_FileSearch')
  94.  
  95. GUICtrlCreateLabel($LngMask, 150, 44, 180, 17)
  96. $InputMask = GUICtrlCreateCombo('', 150, 60, 150)
  97. GUICtrlSetData(-1, '*' & $s & '*.avi|*.mpg|*.vob|*.wmv|*.mkv|*.mp4' & $s & '*.mov|*.asf|*.asx|*.3gp|*.flv|*.bik' & $s & '*.mp3|*.wav|*.wma|*.ogg|*.ac3' & $s & '*.bak|*.gid|*.log|*.tmp' & $s & '*.htm|*.html|*.css|*.js|*.php' & $s & '*.bmp|*.gif|*.jpg|*.jpeg|*.png|*.tif|*.tiff' & $s & '*.exe|*.msi|*.scr|*.dll|*.cpl|*.ax' & $s & '*.com|*.sys|*.bat|*.cmd' & $s & 'avi|mpg|vob|wmv|mkv|mp4' & $s & 'mov|asf|asx|3gp|flv|bik' & $s & 'mp3|wav|wma|ogg|ac3' & $s & 'bak|gid|log|tmp' & $s & 'htm|html|css|js|php' & $s & 'bmp|gif|jpg|jpeg|png|tif|tiff' & $s & 'exe|msi|scr|dll|cpl|ax' & $s & 'com|sys|bat|cmd', '*')
  98. GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 250, 0)
  99.  
  100. GUICtrlCreateLabel($LngInclude, 310, 44, 60, 17)
  101. $RadioTrue = GUICtrlCreateRadio('True', 320, 57, 40, 17)
  102. GUICtrlSetState(-1, 1)
  103. $RadioFalse = GUICtrlCreateRadio('False', 320, 72, 40, 17)
  104.  
  105. GUICtrlCreateLabel($LngDepth, 380, 44, 80, 17)
  106. $ComboDepth = GUICtrlCreateCombo('', 380, 60, 55)
  107. GUICtrlSetData(-1, '0' & $s & '1' & $s & '2' & $s & '3' & $s & '15' & $s & '70' & $s & '125', '125')
  108.  
  109. GUICtrlCreateLabel($LngFull, 460, 44, 60, 17)
  110. $ComboFull = GUICtrlCreateCombo('', 460, 60, 50, -1, $CBS_DROPDOWNLIST)
  111. GUICtrlSetData(-1, '0     ' & $LngPrF0 & $s & '1     ' & $LngPrF1 & $s & '2     ' & $LngPrF2 & $s & '3     ' & $LngPrF3, '1     ' & $LngPrF1)
  112. GUICtrlSetTip(-1, $LngFullH)
  113. GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 200, 0)
  114.  
  115. GUICtrlCreateLabel($LngArr, 520, 44, 80, 17)
  116. $ComboArr = GUICtrlCreateCombo('', 520, 60, 50, -1, $CBS_DROPDOWNLIST)
  117. GUICtrlSetData(-1, '0     ' & $LngPrA0 & $s & '1     ' & $LngPrA1 & $s & '2     ' & $LngPrA2, '1     ' & $LngPrA1)
  118. GUICtrlSetTip(-1, $LngArrH)
  119. GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 290, 0)
  120.  
  121. GUICtrlCreateLabel($LngTypeMask, 577, 44, 60, 17)
  122. $ComboTypeMask = GUICtrlCreateCombo('', 580, 60, 50, -1, $CBS_DROPDOWNLIST)
  123. GUICtrlSetData(-1, '0     ' & $LngPrT0 & $s & '1     ' & $LngPrT1 & $s & '2     ' & $LngPrT2, '1     ' & $LngPrT1)
  124. GUICtrlSetTip(-1, $LngTypeMaskH)
  125. GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 290, 0)
  126.  
  127. GUICtrlCreateLabel($LngLocale, 640, 44, 60, 17)
  128. $ComboLocale = GUICtrlCreateCombo('', 640, 60, 50, -1, $CBS_DROPDOWNLIST)
  129. GUICtrlSetData(-1, '0     ' & $LngPrL0 & $s & '1     ' & $LngPrL1 & $s & $LngPrL2, '0     ' & $LngPrL0)
  130. GUICtrlSetTip(-1, $LngLocaleH)
  131. GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 310, 0)
  132.  
  133. $InputPathOut = GUICtrlCreateInput('_FO_FileSearch($Path)', 10, 93, 680, 20)
  134.  
  135. $Test = GUICtrlCreateButton($LngTst, 620, 120, 70, 25)
  136. GUICtrlSetOnEvent(-1, "_Test")
  137. $StatusBar = GUICtrlCreateLabel($LngStB, 5, 130, 555, 17)
  138.  
  139. GUISetState()
  140. GUIRegisterMsg(0x0111, "WM_COMMAND")
  141. While 1
  142.     Sleep(10000000)
  143. WEnd
  144.  
  145. Func _OpenFldr()
  146.     Local $sPath = GUICtrlRead($InputPath)
  147.     If Not FileExists($sPath) Then $sPath = 'C:\'
  148.     $sPath = FileSelectFolder('', '', 3, $sPath, $Gui)
  149.     If @error Then Return
  150.     GUICtrlSetData($InputPath, $sPath, $sPath)
  151.     ; GUICtrlSetData($InputPath, $Tmp&'|', $Tmp)
  152. EndFunc   ;==>_OpenFldr
  153.  
  154. Func _Test()
  155.     GUICtrlSetState($Test, $GUI_DISABLE)
  156.     GUICtrlSetData($StatusBar, '...')
  157.     $timer = TimerInit()
  158.     If $fileS = 1 Then
  159.         $FileList = _FO_FileSearch($Path0, _FO_CorrectMask($Mask0), $Include0, $Level0, $Full0, $Arr0, $TypeMask0, $Locale0)
  160.     Else
  161.         $FileList = _FO_FolderSearch($Path0, _FO_CorrectMask($Mask0), $Include0, $Level0, $Full0, $Arr0, $Locale0)
  162.     EndIf
  163.     $ErrorS = @error
  164.     $timer = 't=' & Round(TimerDiff($timer) / 1000, 2) & ' sec'
  165.     GUICtrlSetState($Test, $GUI_ENABLE)
  166.     GUICtrlSetData($StatusBar, $timer)
  167.     Switch $ErrorS
  168.         Case 0
  169.             If $Arr0 = 0 Then
  170.                 StringReplace($FileList, @CRLF, @CRLF)
  171.                 If MsgBox(1, 'all=' & @extended + 1 & ', ' & $timer & ', Enter=-->Clipboard', $FileList, 0, $Gui) = 1 Then ClipPut($FileList)
  172.             Else
  173.                 GUISetState(@SW_DISABLE, $Gui)
  174.                 _ArrayDisplay($FileList, $timer)
  175.                 GUISetState(@SW_ENABLE, $Gui)
  176.                 WinActivate($Gui)
  177.             EndIf
  178.         Case 1
  179.             MsgBox(16, 'Error', '@error=' & $ErrorS & ', Path=Error', 0, $Gui)
  180.         Case 2
  181.             MsgBox(16, 'Error', '@error=' & $ErrorS & ', Mask=Error', 0, $Gui)
  182.         Case 3
  183.             MsgBox(16, 'Error', '@error=' & $ErrorS & ', not found', 0, $Gui)
  184.     EndSwitch
  185.     ; GUICtrlSetData($StatusBar,'Done')
  186. EndFunc   ;==>_Test
  187.  
  188. Func _Exit()
  189.     Exit
  190. EndFunc   ;==>_Exit
  191.  
  192. Func WM_COMMAND($hWnd, $MsgID, $WParam, $LParam)
  193.     Local $Tmp
  194.     Local $iCode = BitShift($WParam, 16) ; старшее слово
  195.  
  196.     Do
  197.         Switch BitAND($WParam, 0xFFFF)
  198.             Case $InputPath
  199.                 $Tmp = GUICtrlRead($InputPath)
  200.                 If $Tmp <> $Path0 Then
  201.                     $Path0 = $Tmp
  202.                 Else
  203.                     ExitLoop
  204.                 EndIf
  205.             Case $ComboFileS
  206.                 If $iCode = $CBN_SELCHANGE Then
  207.                     $ComboFileS0 = GUICtrlRead($ComboFileS)
  208.                     If $ComboFileS0 = '_FO_FileSearch' Then
  209.                         GUICtrlSetState($ComboTypeMask, $GUI_ENABLE)
  210.                         GUICtrlSetData($ComboFull, $s & '0     ' & $LngPrF0 & $s & '1     ' & $LngPrF1 & $s & '2     ' & $LngPrF2 & $s & '3     ' & $LngPrF3, GUICtrlRead($ComboFull))
  211.                         $fileS = 1
  212.                         GUICtrlSetTip($ComboFull, $LngFullH)
  213.                     Else
  214.                         GUICtrlSetState($ComboTypeMask, $GUI_DISABLE)
  215.                         $tmpF = GUICtrlRead($ComboFull)
  216.                         If StringLeft($tmpF, 1) > 1 Then $tmpF = '1     ' & $LngPrF1
  217.                         GUICtrlSetData($ComboFull, $s & '0     ' & $LngPrF0 & $s & '1     ' & $LngPrF1, $tmpF)
  218.                         $fileS = 0
  219.                         If $Full0 = 2 Or $Full0 = 3 Then $Full0 = 1
  220.                         GUICtrlSetTip($ComboFull, $LngFullH1)
  221.                     EndIf
  222.                 Else
  223.                     ExitLoop
  224.                 EndIf
  225.             Case $InputMask
  226.                 Switch $iCode
  227.                     Case $CBN_SELCHANGE, $CBN_EDITUPDATE, $CBN_KILLFOCUS
  228.                         $Mask0 = GUICtrlRead($InputMask)
  229.                     Case Else
  230.                         ExitLoop
  231.                 EndSwitch
  232.             Case $RadioTrue, $RadioFalse
  233.                 If GUICtrlRead($RadioTrue) = 1 Then
  234.                     $Include0 = True
  235.                 Else
  236.                     $Include0 = False
  237.                 EndIf
  238.             Case $ComboDepth
  239.                 Switch $iCode
  240.                     Case $CBN_SELCHANGE, $CBN_EDITUPDATE, $CBN_KILLFOCUS
  241.                         $Level0 = Number(GUICtrlRead($ComboDepth))
  242.                     Case Else
  243.                         ExitLoop
  244.                 EndSwitch
  245.             Case $ComboFull
  246.                 If $iCode = $CBN_SELCHANGE Then
  247.                     $Full0 = Number(StringLeft(GUICtrlRead($ComboFull), 1))
  248.                 Else
  249.                     ExitLoop
  250.                 EndIf
  251.             Case $ComboArr
  252.                 If $iCode = $CBN_SELCHANGE Then
  253.                     $Arr0 = Number(StringLeft(GUICtrlRead($ComboArr), 1))
  254.                 Else
  255.                     ExitLoop
  256.                 EndIf
  257.             Case $ComboTypeMask
  258.                 If $iCode = $CBN_SELCHANGE Then
  259.                     $TypeMask0 = Number(StringLeft(GUICtrlRead($ComboTypeMask), 1))
  260.                 Else
  261.                     ExitLoop
  262.                 EndIf
  263.             Case $ComboLocale
  264.                 Switch $iCode
  265.                     Case $CBN_SELCHANGE, $CBN_EDITUPDATE, $CBN_KILLFOCUS
  266.                         $Tmp = GUICtrlRead($ComboLocale)
  267.                         If StringIsDigit(StringLeft($Tmp, 1)) Then
  268.                             $Locale0 = Number(StringLeft($Tmp, 1))
  269.                         Else
  270.                             $Tmp2 = StringRegExp($Tmp, '^([^A-z\h\d]+)', 1)
  271.                             If @error Then
  272.                                 ; $Tmp=StringRegExpReplace($Tmp, '[A-z\h\d]+', '')
  273.                                 ; GUICtrlSendMsg($ComboLocale, $EM_REPLACESEL, 0, 0)
  274.                                 ExitLoop
  275.                             Else
  276.                                 $Locale0 = $Tmp2[0]
  277.                             EndIf
  278.                         EndIf
  279.                     Case Else
  280.                         ExitLoop
  281.                 EndSwitch
  282.         EndSwitch
  283.        
  284.         $Path1 = $Path0
  285.         If StringLeft($Path0, 1) <> '$' Then $Path1 = '''' & $Path0 & ''''
  286.         $del = 0
  287.         If $fileS Then
  288.             $String = '_FO_FileSearch(' & $Path1 & ', ''' & $Mask0 & ''', ' & $Include0 & ', ' & $Level0 & ', ' & $Full0 & ', ' & $Arr0 & ', ' & $TypeMask0 & ', ' & $Locale0
  289.             If $Locale0 == '0' Then
  290.                 $del += 3
  291.                 If $TypeMask0 = 1 Then
  292.                     $del += 3
  293.                     If $Arr0 = 1 Then
  294.                         $del += 3
  295.                         If $Full0 = 1 Then
  296.                             $del += 3
  297.                             If $Level0 == '125' Then
  298.                                 $del += 5
  299.                                 If $Include0 Then
  300.                                     $del += 6
  301.                                     If $Mask0 == '*' Then
  302.                                         $del += 5
  303.                                     EndIf
  304.                                 EndIf
  305.                             EndIf
  306.                         EndIf
  307.                     EndIf
  308.                 EndIf
  309.             EndIf
  310.         Else
  311.             $String = '_FO_FolderSearch(' & $Path1 & ', ''' & $Mask0 & ''', ' & $Include0 & ', ' & $Level0 & ', ' & $Full0 & ', ' & $Arr0 & ', ' & $Locale0
  312.             If $Locale0 == '0' Then
  313.                 $del += 3
  314.                 If $Arr0 = 1 Then
  315.                     $del += 3
  316.                     If $Full0 = 1 Then
  317.                         $del += 3
  318.                         If $Level0 == '125' Then
  319.                             $del += 5
  320.                             If $Include0 Then
  321.                                 $del += 6
  322.                                 If $Mask0 == '*' Then
  323.                                     $del += 5
  324.                                 EndIf
  325.                             EndIf
  326.                         EndIf
  327.                     EndIf
  328.                 EndIf
  329.             EndIf
  330.         EndIf
  331.        
  332.         GUICtrlSetData($InputPathOut, StringTrimRight($String, $del) & ')')
  333.     Until 1
  334.     Return $GUI_RUNDEFMSG
  335. EndFunc   ;==>WM_COMMAND
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement