BjornBroeckx Posted September 10, 2013 Share Posted September 10, 2013 (edited) Hey, As a newbie i was wondering if someone can help me out putting my pieces together.I like to have a script for the next task: - I want to select a directory with an FileSelectFolder- all files in that directory and in all subdirectories should be copied to a direcory i can select with FileSelectFolder (with the possibility to create a new folder)- All copied files in target directory should be sorted by directory named with their extension (f.e. picture.jpg should be copied to the target-directory, under a automaticly created sub-directory called JPG. Note that files without extension should be copied to sub-directory 'no-extension'- I would like to see a progressbar running while copying- I would lik to see a summary and the end of the proces telling me how many files were copied/sorted What i allready found: * copy all files with xcopy from directory and it's subdirectories to target folder in cmd-terminal: for /R D: %G IN (*.*) DO xcopy /Y "%G" C:myfolder * code for progressbar and summary:expandcollapse popup$source=FileSelectFolder("Choose a drive or folder.", @DesktopDir, 2) If($source="")And(@error=1) Then Exit $size=DirGetSize($source, 1+2) $sizcou=($size[1]+$size[2]) MsgBox(0, "", "Step count = "&$sizcou) $search=FileFindFirstFile($source&"\*") $i=0 $count="" ProgressOn("Counter Progress", "", "", 400, 300) Do $i+=(100/$sizcou) $files=FileFindNextFile($search) $count=$count&$files&@CRLF ProgressSet($i, $files, "Loading.."&Round($i)&"%") If $files>=$sizcou Or $i > 100 Then ProgressSet(100, "Finish....................", "Loading..100%") ExitLoop EndIf Sleep(200) Until $files==""Or $i==$sizcou FileClose($search) ToolTip("") Sleep(500) ProgressOff() MsgBox(0, "", "Location: "&$source&@CRLF& _ "All files: "&$sizcou&@CRLF& _ "Files: "&$size[1]&@CRLF& _ "Folder: "&$size[2]&@CRLF) * code for sorting although this one makes filename-subdirs when no extension instead of the "no-extension" directory i want: Opt("TrayIconHide", 1) $arr = _FileSearch(@ScriptDir & "\recup_dir*", 0, 0, 0, 1) If $arr[0] == 0 Then ConsoleWrite("Cant find any recup_dir folders!" & @CRLF & "Exiting...."); Sleep(5000) Exit EndIf For $my_i = 1 To $arr[0] Step 1 $search = FileFindFirstFile($arr[$my_i] & "\*.*") ; Check if the search was successful If $search = -1 Then ConsoleWrite("Cant find a file!" & @CRLF); _DelEmptyDir($arr[$my_i]) ConsoleWrite("Exiting...."); Sleep(5000) Exit EndIf While 1 ; Search was successful $file = FileFindNextFile($search) If @error Then ExitLoop $ext = StringSplit($file, ".") $path = $arr[$my_i] & "\" & $file $dir = @ScriptDir & "\" & StringUpper($ext[$ext[0]]) If FileExists($dir) Then ConsoleWrite("Folder " & $dir & " already exists" & @CRLF) Else DirCreate($dir) ConsoleWrite("Created folder " & $dir & @CRLF) EndIf If FileMove($path, $dir) Then ConsoleWrite("Moved " & $path & " to " & $dir & @CRLF) WEnd ; Close the search handle FileClose($search) ;Check if current recup_dir folder is empty and delete _DelEmptyDir($arr[$my_i]) Next ConsoleWrite(@CRLF & "All Done!" & @CRLF); Sleep(5000) Func _DelEmptyDir($current_dir) ; Checks if current recup_dir folder is empty then deletes it $size = DirGetSize($current_dir) If $size == 0 Then If DirRemove($current_dir) Then ConsoleWrite("Removed empty folder " & $current_dir & @CRLF) EndIf EndFunc ;==>_DelEmptyDir ; _FileSearch( "Path and Mask", <$nOption>, <$cpusaver>, <$dirfilter>, <$filefilter>) ; ;----PARAMETERS----- ;$nOption - <Optional (0 - normal, 1- recursive)> ;$cpusaver - <Optional (0 - normal, 1 - CPU Friendly, but Slower)> ;$dirfilter - <Optional (0 - list directories, 1 - filter out directories)> ;$filefilter- <Optional (0 - list files, 1 - filter out files)> ; ;----RETURN----- ; Returns array. Either Array of files (full path) where... ; Array[0] is number of files. ; Array[0] = 0 if nothing found. ; EXAMPLE USAGE ;-------------------------------------------- ;~ #include<array.au3> ;~ $a = _FileSearch("C:\*.*", 1, 0, 0, 0) ;~ _ArrayDisplay($a) ;-------------------------------------------- Func _FileSearch($szMask, $nOption = 0, $cpusaver = 0, $dirfilter = 0, $filefilter = 0) $szRoot = "" $hFile = 0 $szBuffer = "" $szReturn = "" $szPathList = "*" Dim $aNULL[1] If Not StringInStr($szMask, "\") Then $szRoot = @ScriptDir & "\" Else While StringInStr($szMask, "\") $szRoot = $szRoot & StringLeft($szMask, StringInStr($szMask, "\")) $szMask = StringTrimLeft($szMask, StringInStr($szMask, "\")) WEnd EndIf If $nOption = 0 Then _FileSearchUtil($szRoot, $szMask, $szReturn, $cpusaver, $dirfilter, $filefilter) Else While 1 $hFile = FileFindFirstFile($szRoot & "*.*") If $hFile >= 0 Then $szBuffer = FileFindNextFile($hFile) While Not @error If $szBuffer <> "." And $szBuffer <> ".." And _ StringInStr(FileGetAttrib($szRoot & $szBuffer), "D") Then _ $szPathList = $szPathList & $szRoot & $szBuffer & "*" $szBuffer = FileFindNextFile($hFile) WEnd FileClose($hFile) EndIf _FileSearchUtil($szRoot, $szMask, $szReturn, $cpusaver, $dirfilter, $filefilter) If $szPathList == "*" Then ExitLoop $szPathList = StringTrimLeft($szPathList, 1) $szRoot = StringLeft($szPathList, StringInStr($szPathList, "*") - 1) & "\" $szPathList = StringTrimLeft($szPathList, StringInStr($szPathList, "*") - 1) WEnd EndIf If $szReturn = "" Then $aNULL[0] = 0 Return $aNULL Else Return StringSplit(StringTrimRight($szReturn, 1), "*") EndIf EndFunc ;==>_FileSearch Func _FileSearchUtil(ByRef $ROOT, ByRef $MASK, ByRef $RETURN, $cpusaver, $dirfilter, $filefilter) $hFile = FileFindFirstFile($ROOT & $MASK) If $hFile >= 0 Then $szBuffer = FileFindNextFile($hFile) While Not @error If $cpusaver = 1 Then Sleep(1) ;OPTIONAL FOR CPU SAKE If $szBuffer <> "." And $szBuffer <> ".." Then If StringInStr(FileGetAttrib($ROOT & $szBuffer), "D") Then If $dirfilter = 0 Then $RETURN = $RETURN & $ROOT & $szBuffer & "*" Else If $filefilter = 0 Then $RETURN = $RETURN & $ROOT & $szBuffer & "*" EndIf EndIf $szBuffer = FileFindNextFile($hFile) WEnd FileClose($hFile) EndIf EndFunc ;==>_FileSearchUtil Sources:Sorter => http://builtbackwards.com/wp-content/uploads/2008/10/PhotoRec_Sorter-v1009.zipProgressbar counter => '?do=embed' frameborder='0' data-embedContent>>Copy files from directory and subs to 1 => http://superuser.com/questions/267824/how-to-copy-files-inside-several-folders-into-another-directory Hope you guys can help me out to fit it together in 1 script :-) Edited October 7, 2013 by Melba23 Added code tags Link to comment Share on other sites More sharing options...
Valuater Posted September 10, 2013 Share Posted September 10, 2013 This might help 8) Link to comment Share on other sites More sharing options...
FireFox Posted September 10, 2013 Share Posted September 10, 2013 BjornBroeckx,Please use autoit code tags to post your code Br, FireFox. Link to comment Share on other sites More sharing options...
AZJIO Posted September 10, 2013 Share Posted September 10, 2013 (edited) expandcollapse popup#region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_OutFile=Sort.exe #AutoIt3Wrapper_icon=Sort.ico #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseAnsi=y #AutoIt3Wrapper_Res_Comment=- #AutoIt3Wrapper_Res_Description=Sort.exe #AutoIt3Wrapper_Res_Fileversion=0.2.0.0 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n #AutoIt3Wrapper_Res_LegalCopyright=AZJIO #AutoIt3Wrapper_Res_Language=1033 #AutoIt3Wrapper_Run_AU3Check=n #AutoIt3Wrapper_Run_Obfuscator=y #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0 #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3" #endregion ;**** Directives created by AutoIt3Wrapper_GUI **** #NoTrayIcon Opt("GUIOnEventMode", 1) #include <FileOperations.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $Lng[28] $Lng[1] = "Sort by extension" $Lng[2] = 'Status bar' $Lng[3] = "Source path (use drag-and-drop)" $Lng[4] = "Destination path (use drag-and-drop)" $Lng[5] = "Ignore file types" $Lng[6] = "If the field is a drop-down list is empty," $Lng[7] = "then this item is ignored" $Lng[8] = "Remove file types" $Lng[9] = "Leave the box blank" $Lng[10] = "to ignore option" $Lng[11] = "Delete files less than the specified size, KB" $Lng[12] = "to ignore the size" $Lng[13] = "Remove attribute" $Lng[14] = "Sort" $Lng[15] = 'Started...' $Lng[16] = 'Error' $Lng[17] = 'Path contains invalid characters' $Lng[18] = 'Files not found' $Lng[19] = 'Processed ' $Lng[20] = ' files' $Lng[21] = 'files without extension' $Lng[22] = ' Copy' $Lng[23] = ' Copy (' $Lng[24] = 'Done... from ' $Lng[25] = 'Moved : ' $Lng[26] = ', deleted : ' $Lng[27] = ', ignoring : ' If @OSLang = 0419 Then $Lng[1] = "Сортировка по расширению" $Lng[2] = 'Строка состояния' $Lng[3] = "Путь - источник (используйте drag-and-drop)" $Lng[4] = "Путь - получатель (используйте drag-and-drop)" $Lng[5] = "Игнорировать типы файлов" $Lng[6] = "Если поле раскрывающегося списка" $Lng[7] = "пустое, то этот пункт не учитывается" $Lng[8] = "Удалять типы файлов" $Lng[9] = "Оставте поле пустым" $Lng[10] = "для игнорирования параметра" $Lng[11] = "Удалять файлы менее указанного размера, кб" $Lng[12] = "для игнорирования размера" $Lng[13] = "Снять атрибут" $Lng[14] = "Сортировать" $Lng[15] = 'Началось...' $Lng[16] = 'Ошибка' $Lng[17] = 'Путь содержит неверные символы' $Lng[18] = 'Файлов ненайдено' $Lng[19] = 'Обрабатываются ' $Lng[20] = ' файлов' $Lng[21] = 'файлы без расширения' $Lng[22] = ' Копия' $Lng[23] = ' Копия (' $Lng[24] = 'Выполнено... Из ' $Lng[25] = 'перемещено: ' $Lng[26] = ', удалено: ' $Lng[27] = ', игнорир: ' EndIf Global $iniTypeFile = 'avi;mpg;mpeg;mp4;vob;mkv;asf;asx;wmv;mov;3gp;flv;bik|mp3;wav;wma;ogg;ac3|bak;gid;log;tmp' & _ '|htm;html;css;js;php|bmp;gif;jpg;jpeg;png;tif;tiff|exe;msi;scr;dll;cpl;ax|com;sys;bat;cmd' Global $ini = @ScriptDir & '\sort_files.ini' If Not FileExists($ini) And DriveStatus(StringLeft(@ScriptDir, 1)) <> 'NOTREADY' Then $file = FileOpen($ini, 2) FileWrite($file, '[Set]' & @CRLF & _ 'TypeFile=' & $iniTypeFile & @CRLF & _ 'TrType=' & @CRLF & _ 'LastType=' & @CRLF & _ 'Size=' & @CRLF & _ 'PathOut=' & @CRLF & _ 'Path=') FileClose($file) EndIf $iniTypeFile = IniRead($ini, 'Set', 'TypeFile', $iniTypeFile) $iniPath = IniRead($ini, 'Set', 'Path', '') $iniOutPath = IniRead($ini, 'Set', 'PathOut', '') $LastType = IniRead($ini, 'Set', 'LastType', '') $iniSize = IniRead($ini, 'Set', 'Size', '') $iniTrType = IniRead($ini, 'Set', 'TrType', '') If $LastType And $iniTypeFile And StringInStr('|' & $iniTypeFile & '|', '|' & $LastType & '|') Then StringReplace('|' & $iniTypeFile & '|', '|' & $LastType & '|', '|') StringTrimLeft($iniTypeFile, 1) StringTrimRight($iniTypeFile, 1) EndIf GUICreate($Lng[1], 450, 230, -1, -1, -1, $WS_EX_ACCEPTFILES) ; размер окна If Not @Compiled Then GUISetIcon(@ScriptDir & '\Sort.ico') ; GUISetBkColor(0xF9F9F9) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") GUISetOnEvent($GUI_EVENT_DROPPED, "_Dropped") $StatusBar = GUICtrlCreateLabel(@CRLF & $Lng[2], 5, 196, 330, 34) GUICtrlCreateLabel($Lng[3], 20, 13, 400, 20) $inpPath = GUICtrlCreateInput("", 20, 30, 410, 22) GUICtrlSetState(-1, 8) If $iniPath Then GUICtrlSetData(-1, $iniPath) GUICtrlCreateLabel($Lng[4], 20, 63, 400, 20) $OutPath = GUICtrlCreateInput("", 20, 80, 410, 22) GUICtrlSetState(-1, 8) If $iniOutPath Then GUICtrlSetData(-1, $iniOutPath) $Ignore = GUICtrlCreateRadio($Lng[5], 20, 113, 180, 17) GUICtrlSetTip(-1, $Lng[6] & @CRLF & $Lng[7]) $deltype = GUICtrlCreateRadio($Lng[8], 20, 130, 180, 17) GUICtrlSetTip(-1, $Lng[6] & @CRLF & $Lng[7]) $typefile = GUICtrlCreateCombo("", 200, 117, 230, 24) GUICtrlSetData(-1, $LastType & '|' & $iniTypeFile, $LastType) GUICtrlSetTip(-1, $Lng[9] & @CRLF & $Lng[10]) GUICtrlCreateLabel($Lng[11], 20, 160, 260, 20) $size = GUICtrlCreateInput("", 280, 157, 100, 22) GUICtrlSetTip(-1, $Lng[9] & @CRLF & $Lng[12]) If $iniSize Then GUICtrlSetData(-1, $iniSize) $checkAtrb = GUICtrlCreateCheckbox($Lng[13], 20, 180, 95, 17) GUICtrlSetState(-1, 1) $startsh = GUICtrlCreateButton($Lng[14], 340, 190, 90, 33) GUICtrlSetOnEvent(-1, "_Sort") $typefile0 = GUICtrlRead($typefile) Switch $iniTrType Case 1 If $typefile0 Then GUICtrlSetState($Ignore, 1) Case 2 If $typefile0 Then GUICtrlSetState($deltype, 1) EndSwitch GUISetState() OnAutoItExitRegister("_Exit_Save_Ini") While 1 Sleep(10000000) WEnd Func _Exit_Save_Ini() If DriveStatus(StringLeft(@ScriptDir, 1)) <> 'NOTREADY' Then $typefile0 = GUICtrlRead($typefile) If $typefile0 <> $LastType Then IniWrite($ini, 'Set', 'LastType', $typefile0) $inpPath0 = GUICtrlRead($inpPath) If FileExists($inpPath0) And $iniPath <> $inpPath0 Then IniWrite($ini, 'Set', 'Path', $inpPath0) $OutPath0 = GUICtrlRead($OutPath) If FileExists($OutPath0) And $iniOutPath <> $OutPath0 Then IniWrite($ini, 'Set', 'PathOut', $OutPath0) $size0 = GUICtrlRead($size) If $size0 <> $iniSize Then IniWrite($ini, 'Set', 'Size', $size0) If GUICtrlRead($Ignore) = 1 And $iniTrType <> 1 Then IniWrite($ini, 'Set', 'TrType', 1) ElseIf GUICtrlRead($deltype) = 1 And $iniTrType <> 2 Then IniWrite($ini, 'Set', 'TrType', 2) ElseIf GUICtrlRead($typefile) = '' And $iniTrType <> 0 Then IniWrite($ini, 'Set', 'TrType', 0) EndIf EndIf EndFunc ;==>_Exit_Save_Ini Func _Sort() $del0 = 0 $ign0 = 0 $move0 = 0 $checkAtrb0 = GUICtrlRead($checkAtrb) $Ignore0 = GUICtrlRead($Ignore) $deltype0 = GUICtrlRead($deltype) $OutPath0 = GUICtrlRead($OutPath) $inpPath0 = GUICtrlRead($inpPath) $typefile0 = StringRegExpReplace(';' & GUICtrlRead($typefile) & ';', '[;]+', ';') $size0 = 1024 * GUICtrlRead($size) GUICtrlSetData($StatusBar, @CRLF & $Lng[15]) If StringRegExpReplace($OutPath0, '[A-z]:\\[^/:*?"<>|]*', '') Or StringInStr($OutPath0, '\\') Or Not $OutPath0 Then Return MsgBox(0, $Lng[16], $Lng[17]) If StringRight($OutPath0, 1) = '\' Then $OutPath0 = StringTrimRight($OutPath0, 1) ; поиск файлов If FileExists($inpPath0) Then $inpPath1 = StringRegExpReplace($inpPath0, "(^.*)\\(.*)$", '\1') $FileList = _FO_FileSearch($inpPath0, '*', True, 125, 1, 0) ; список полных путей If @error Then GUICtrlSetData($StatusBar, $Lng[18]) $FileList = '' Return EndIf $FileList = StringRegExp($FileList, '(?m)^(.*\\)(.*?)(?:\r|\z)', 3) $ArrSz = UBound($FileList) GUICtrlSetData($StatusBar, @CRLF & $Lng[19] & $ArrSz / 2 & $Lng[20]) ; $fileName = $FileList[$i+1] For $i = 0 To $ArrSz - 1 Step 2 If StringInStr($FileList[$i + 1], '.') Then $tmptype = StringTrimLeft($FileList[$i + 1], StringInStr($FileList[$i + 1], '.', 0, -1)) ; получить расширение файла $typeFolder = $tmptype If $deltype0 = 1 And $typefile0 And StringInStr($typefile0, ';' & $tmptype & ';') Then ; удалить типы файлов If $checkAtrb0 = 1 Then FileSetAttrib($FileList[$i] & $FileList[$i + 1], "-RASHT") If FileDelete($FileList[$i] & $FileList[$i + 1]) Then $del0 += 1 Else $ign0 += 1 EndIf ContinueLoop ElseIf $Ignore0 = 1 And $typefile0 And StringInStr($typefile0, ';' & $tmptype & ';') Then ; игнорировать $ign0 += 1 ContinueLoop EndIf Else $tmptype = '' $typeFolder = $Lng[21] EndIf If $size0 And FileGetSize($FileList[$i] & $FileList[$i + 1]) <= $size0 Then ; удалить если менее указанного размера If $checkAtrb0 = 1 Then FileSetAttrib($FileList[$i] & $FileList[$i + 1], "-RASHT") If FileDelete($FileList[$i] & $FileList[$i + 1]) Then $del0 += 1 Else $ign0 += 1 EndIf ContinueLoop EndIf ; если файл существует в новом каталоге, то переименовать его перед перемещением, иначе переместить $Path = $OutPath0 & '\' & $typeFolder & '\' & $FileList[$i + 1] If FileExists($Path) Then If $tmptype Then $Name = StringLeft($FileList[$i + 1], StringInStr($FileList[$i + 1], '.', 0, -1) - 1) ; получить имя файла без расширения $tmptype = '.' & $tmptype Else $Name = $FileList[$i + 1] EndIf ; цикл проверки одноимённых файлов $j = 0 Do $j += 1 If $j = 1 Then $Path = $OutPath0 & '\' & $typeFolder & '\' & $Name & $Lng[22] & $tmptype Else $Path = $OutPath0 & '\' & $typeFolder & '\' & $Name & $Lng[23] & $j & ')' & $tmptype EndIf Until Not FileExists($Path) EndIf If $checkAtrb0 = 1 Then FileSetAttrib($FileList[$i] & $FileList[$i + 1], "-RASHT") If FileMove($FileList[$i] & $FileList[$i + 1], $Path, 8) Then ; перемещаем если одноимённого не существует $move0 += 1 Else $ign0 += 1 EndIf Next EndIf GUICtrlSetData($StatusBar, $Lng[24] & $ArrSz / 2 & $Lng[20] & @CRLF & $Lng[25] & $move0 & $Lng[26] & $del0 & $Lng[27] & $ign0) EndFunc ;==>_Sort Func _Dropped() Switch @GUI_DropId Case $inpPath GUICtrlSetData($inpPath, @GUI_DragFile) GUICtrlSetData($OutPath, StringRegExpReplace(@GUI_DragFile, "(^.*)\\(.*)$", '\1') & '\root') Case $OutPath GUICtrlSetData($OutPath, @GUI_DragFile) EndSwitch EndFunc ;==>_Dropped Func _Exit() Exit EndFunc ;==>_Exit Edited September 10, 2013 by AZJIO My other projects or all Link to comment Share on other sites More sharing options...
BjornBroeckx Posted September 11, 2013 Author Share Posted September 11, 2013 AZJIO, YOU ARE THE GREATEST ;-) Worked perfectly although i would like to chang some stuff. I was trying to look in the code making my changes but it looks all chinese to me :-(: Is it possible to have soure and destination pad with a browse option, like explorer to tick and pick? Also to create a new destination folder in that browse window? Main thing is that all files needed to be copied, not moved. And none of the file types need to be ignored nor removed. I don't want to sound picky with the above. I find it great that people like you are helping people with things way above their head. I have my expierence with hard- and sotware-problems and also like to help people with theirs. Just want to point out how great it is to get some helping hands ;-) Link to comment Share on other sites More sharing options...
BjornBroeckx Posted September 16, 2013 Author Share Posted September 16, 2013 Can anyone help me out with those last "tweaks"? ;-) Link to comment Share on other sites More sharing options...
BjornBroeckx Posted October 7, 2013 Author Share Posted October 7, 2013 Still no answer :-( Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 7, 2013 Moderators Share Posted October 7, 2013 BjornBroeckx, it looks all chinese to meIt is actually Russian. Anyway, have you made any attempt to "tweak" this code yourself? What have you done over the past month to try and understand the code? Think of the old saying: "Give a man a fish, you feed him for a day; give a man a net and you feed him forever". We try to be net makers and repairers, not fishmongers. So please do expect us to do all the work - try and learn a bit of AutoIt so you understand the code and how you might change it. Reading the Help file (at least the first few sections - Using AutoIt, Tutorials and the first couple of References) will help you enormously. You should also look at this excellent tutorial - you will find other tutorials in the Wiki (the link is at the top of the page). We are here to help you learn, but if all you want is code given to you on a plate then there are plenty of "coder-for-hire" sites out there. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now