akira2891 Posted August 11, 2015 Share Posted August 11, 2015 (edited) Hi i have problem with reading data from INI file.So i need when i put in search field "Test" to get in listbox all results under number 1= with "Test" in name and so my list need to look like this[5018] Test name 2 [5218] Test name 1 [5458] Test nameand when i click on item from list that he appears on $hNameInputLook on image http://prntscr.com/83i7a6this is my ini file[5018] 0=test1 1=Test name 2 2=0 3=1 [5218] 0=test1 1=Test name 1 2=0 3=1 [5458] 0=test1 1=Test name 2=0 3=1 [5468] 0=test1 1=Name no 1 2=0 3=1 [5345] 0=test1 1=Name no 2 2=0 3=1And here is autoit codeexpandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form=C:\Users\Mario\Documents\renamer.kxf $hGUI = GUICreate("Form1", 684, 364, 607, 439) GUICtrlCreateGroup(" Search ", 8, 16, 342, 297) GUICtrlCreateLabel("Search for text", 22, 40, 73, 17) $hSearchInput = GUICtrlCreateInput("", 23, 60, 185, 21) $hFinddAllButton = GUICtrlCreateButton("Find All", 222, 58, 75, 25) GUICtrlCreateLabel("Found Items ( click to edit )", 22, 102, 131, 17) $hList = GUICtrlCreateList("", 22, 120, 313, 175) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup(" Edit Item", 355, 16, 321, 137) GUICtrlCreateLabel("Name", 372, 40, 32, 17) $hNameInput = GUICtrlCreateInput("", 371, 60, 289, 21) $hSaveButton = GUICtrlCreateButton("Save", 587, 112, 75, 25) GUICtrlCreateLabel("Item ID", 372, 95, 38, 17) $hItemID = GUICtrlCreateInput("", 369, 112, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY)) GUICtrlCreateGroup("", -99, -99, 1, 1) $hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 328, 105, 25) $hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 328, 105, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $file While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $hOpenIniButton __openINI() Case $hFinddAllButton Local $iFileExists = FileExists($file) If Not $iFileExists Then MsgBox(48, "Error", "test.ini not found!") EndIf Local $aArray = IniReadSection($file, "5018") If Not @error Then For $i = 1 To $aArray[0][0] GUICtrlSetData($hList, $aArray[$i][1] & @CRLF) Next EndIf EndSwitch WEnd ; open ini Func __openINI() Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)") If FileExists($file) Then $sFile = FileOpen($file) If @error Then MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) Else GUICtrlSetState($hOpenIniButton, $GUI_DISABLE) EndIf Else MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) EndIf EndFunc Edited August 17, 2015 by akira2891 Link to comment Share on other sites More sharing options...
mikell Posted August 11, 2015 Share Posted August 11, 2015 For the concept, try thisCase $hFinddAllButton If Not FileExists($file) Then MsgBox(48, "Error", "test.ini not found!") EndIf $sections = IniReadSectionNames($file) $test = GuiCtrlRead($hSearchInput) ; read the search input For $i = 1 to $sections[0] ; loop through sections $tmp = IniRead($file, $sections[$i], "1", "not found") ; read key named "1" If StringInStr($tmp, $test) Then GUICtrlSetData($hList, "[" & $sections[$i] & "] " & $tmp) NextYou will have to add some error checking ... and look again in the helpfile for all the Ini* functions akira2891 1 Link to comment Share on other sites More sharing options...
akira2891 Posted August 11, 2015 Author Share Posted August 11, 2015 Thanks man u saved me, im working on this all day and didnt find any solution Link to comment Share on other sites More sharing options...
akira2891 Posted August 12, 2015 Author Share Posted August 12, 2015 I updated script a bit but when i get all items listed when i click on item how i can get data from that item to put them in $hItemID and $hNameInputexpandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <Array.au3> #include <FileConstants.au3> #include <GuiListView.au3> #Region ### START Koda GUI section ### $hGUI = GUICreate("Form1", 684, 364, 607, 439) GUICtrlCreateGroup(" Search ", 8, 16, 342, 297) GUICtrlCreateLabel("Search for text", 22, 40, 73, 17) $hSearchInput = GUICtrlCreateInput("", 23, 60, 185, 21) $hFinddAllButton = GUICtrlCreateButton("Find All", 222, 58, 75, 25) GUICtrlCreateLabel("Found Items ( click to edit )", 22, 102, 131, 17) ;~ $hList = GUICtrlCreateList("", 22, 120, 313, 175) $hList = GUICtrlCreateListView("", 22, 120, 313, 175) ; Add columns _GUICtrlListView_InsertColumn($hList, 0, "ID", 50) _GUICtrlListView_InsertColumn($hList, 1, "Item name", 350) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup(" Edit Item", 355, 16, 321, 137) GUICtrlCreateLabel("Name", 372, 40, 32, 17) $hNameInput = GUICtrlCreateInput("", 371, 60, 289, 21) $hSaveButton = GUICtrlCreateButton("Save", 587, 112, 75, 25) GUICtrlCreateLabel("Item ID", 372, 95, 38, 17) $hItemID = GUICtrlCreateInput("", 369, 112, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY)) GUICtrlCreateGroup("", -99, -99, 1, 1) $hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 328, 105, 25) $hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 328, 105, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $file, $sFile While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $hOpenIniButton _FileOpen() Case $hFinddAllButton If Not FileExists($file) Then MsgBox(48, "Error", "test.ini not found!") EndIf $sections = IniReadSectionNames($file) $test = GuiCtrlRead($hSearchInput) ; read the search input For $i = 1 to $sections[0] ; loop through sections $tmp = IniRead($file, $sections[$i], "1", "not found") ; read key named "1" ;~ If StringInStr($tmp, $test) Then GUICtrlSetData($hList, "[" & $sections[$i] & "] " & $tmp) If StringInStr($tmp, $test) Then _GUICtrlListView_BeginUpdate($hList) GUICtrlCreateListViewItem("[" & $sections[$i] & "]|" & $tmp, $hList) ; populate list with founded items _GUICtrlListView_EndUpdate($hList) EndIf Next EndSwitch WEnd ; open file Func _FileOpen() Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.*)") If FileExists($file) Then $sFile = FileOpen($file) If @error Then MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) Else GUICtrlSetState($hOpenIniButton, $GUI_DISABLE) EndIf Else MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) EndIf EndFunc Link to comment Share on other sites More sharing options...
akira2891 Posted August 15, 2015 Author Share Posted August 15, 2015 I make this to work somehow, but i don't know how do i update a list when i edit item and save it, save work and i need to reopen program too see that is saved.Is there any way that after i press Save button to refresh list with same search data ?So like this :- search items - works- populate list with founded items - works- when i click on item it show under $hNameInput and when i edit it and press save it write to ini - works- refresh data after i update ini and put edited + other data that were in list depends on $hSearchInput field - DON'T WORKS expandcollapse popup#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <Array.au3> #include <FileConstants.au3> #include <GuiListView.au3> #include <StringConstants.au3> #include <StructureConstants.au3> #Region ### START Koda GUI section ### $hGUI = GUICreate("Form1", 702, 533, 513, 305) GUISetBkColor(0xFFFFFF) GUICtrlCreateGroup(" Search ", 10, 107, 342, 385) GUICtrlCreateLabel("Search for text", 24, 131, 73, 17) $hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21) $hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25) GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17) $hList = GUICtrlCreateList("", 24, 211, 313, 266) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137) GUICtrlCreateLabel("Name", 381, 132, 32, 17) $hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21) $hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25) GUICtrlCreateLabel("Item ID", 381, 187, 38, 17) $hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY)) GUICtrlCreateGroup("", -99, -99, 1, 1) $Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100) $hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25) $hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $file, $sFile, $matches While 1 Switch GUIGetMsg() Case -3 Exit Case $hOpenIniButton _FileOpen() Case $hList GUICtrlSetData($hNameInput, StringRegExpReplace(GUICtrlRead($hList), '\[\d+\] ', '')) Case $hFinddAllButton If FileExists($file) Then GUICtrlSetData($hList, '') For $i=0 To UBound($matches)-1 Step 2 If StringInStr($matches[$i+1], GUICtrlRead($hSearchInput)) Then GUICtrlSetData($hList, '['&$matches[$i]&'] '&$matches[$i+1]) Next EndIf Case $hSaveButton If FileExists($file) Then IniWrite($file, StringRegExpReplace(GUICtrlRead($hList), '\[(\d+)\].+', '$1'), 1, GUICtrlRead($hNameInput)) ; write from input $hName to ini file If Not @error Then EndIf EndIf EndSwitch WEnd ; open file Func _FileOpen() Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)") If FileExists($file) Then $sFile = FileOpen($file) If @error Then MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) Else GUICtrlSetState($hOpenIniButton, $GUI_DISABLE) $matches = StringRegExp(FileRead($file), "\[(\d+)\]\r\n(?:\d+=.+\r\n)*?1=(.+)\r\n(?:\d+=.+\r\n)+", 3) GUICtrlSetData($hNameInput, StringRegExpReplace(GUICtrlRead($hList), '\[\d+\] ', '')) EndIf Else MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) EndIf EndFunc ;=> file open Link to comment Share on other sites More sharing options...
mikell Posted August 15, 2015 Share Posted August 15, 2015 (edited) This is a bit trickyThe most convenient way is to build an array for the items found, because the indexes of selected items will be the same in the listbox and in this arrayThen you can use this array to store the index in the main array of the selected itemThe listbox auto sort must be disabledWhen you save, the main array needs to be updated too - it is necessary if you plan to work later on other valuesI placed some _ArrayDisplay() for better view expandcollapse popup#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <Array.au3> #include <FileConstants.au3> $hGUI = GUICreate("Form1", 702, 533, 513, 305) GUISetBkColor(0xFFFFFF) GUICtrlCreateGroup(" Search ", 10, 107, 342, 385) GUICtrlCreateLabel("Search for text", 24, 131, 73, 17) $hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21) $hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25) GUICtrlSetState($hFinddAllButton, $GUI_DISABLE) GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17) $hList = GUICtrlCreateList("", 24, 211, 313, 266, BitOR($WS_BORDER, $WS_VSCROLL)) ; disable sort !! GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137) GUICtrlCreateLabel("Name", 381, 132, 32, 17) $hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21) $hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25) GUICtrlSetState($hSaveButton, $GUI_DISABLE) GUICtrlCreateLabel("Item ID", 381, 187, 38, 17) $hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY)) GUICtrlCreateGroup("", -99, -99, 1, 1) $Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100) $hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25) $hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25) GUISetState(@SW_SHOW) Global $file, $sFile, $matches[0][3], $afound[0][3], $index While 1 Switch GUIGetMsg() Case -3 Exit Case $hOpenIniButton _FileOpen() Case $hList $index = _GUICtrlListBox_GetCurSel($hList) If $index <> -1 Then GUICtrlSetData($hNameInput, $afound[$index][2]) Case $hFinddAllButton GUICtrlSetData($hList, '') Redim $afound[0][3] For $i = 0 To UBound($matches)-1 If StringInStr($matches[$i][2], GUICtrlRead($hSearchInput)) Then _ArrayAdd($afound, $matches[$i][0] &'|'& $matches[$i][1] &'|'& $matches[$i][2]) GUICtrlSetData($hList, '[' & $matches[$i][1] &'] '& $matches[$i][2]) EndIf Next _ArrayDisplay($afound, "found") ; debug Case $hSaveButton $newitem = GUICtrlRead($hNameInput) IniWrite($file, $afound[$index][1], "1", $newitem) ; update ini $matches[$afound[$index][0]][2] = $newitem ; update main array ; update listbox _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem) _ArrayDisplay($matches, "$matches after save") EndSwitch WEnd Func _FileOpen() ; open file Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)") If @error Then Return $sFile = FileOpen($file) If @error Then MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended) Else GUICtrlSetState($hOpenIniButton, $GUI_DISABLE) GUICtrlSetState($hFinddAllButton, $GUI_ENABLE) GUICtrlSetState($hSaveButton, $GUI_ENABLE) Local $sections = IniReadSectionNames($file) Redim $matches[$sections[0]][3] For $i = 1 to $sections[0] ; loop through sections $tmp = IniRead($file, $sections[$i], "1", "not found") ; read key named "1" $matches[$i-1][0] = $i-1 ; index $matches[$i-1][1] = $sections[$i] ; section name $matches[$i-1][2] = $tmp ; value of key 1 Next _ArrayDisplay($matches, "$matches creation for key 1") EndIf EndFunc ;=> file open Edited August 15, 2015 by mikell Link to comment Share on other sites More sharing options...
akira2891 Posted August 15, 2015 Author Share Posted August 15, 2015 (edited) I tried your's code and it works good with small ini files, but u can't read bigger ones.And other thing is when i Save edited item, it update list ( works fine ), and update ini file ( works fine ) and when i click on that edited item on a list it appears normal on Edit item name $hNameInput look on imageTry this code works very fast and give me results i need, just problem is with updating list after edit$matches = StringRegExp(FileRead('test.ini'), "\[(\d+)\]\r\n(?:\d+=.+\r\n)*?1=(.+)\r\n(?:\d+=.+\r\n)+", 3) GUICreate('GUI', 300, 150, Default, Default, 0x10C80000) $list = GUICtrlCreateList('', 10, 10, 280, 90) $input = GUICtrlCreateInput('', 10, 100, 280, 20) GUICtrlSetLimit ($input, 50, 3) $btnSearch = GUICtrlCreateButton('Search', 10, 125, 140, 20) $btnSave = GUICtrlCreateButton('Save', 150, 125, 140, 20) While True Switch GUIGetMsg() Case -3 Exit Case $list GUICtrlSetData($input, StringRegExpReplace(GUICtrlRead($list), '\[\d+\] ', '')) Case $btnSearch GUICtrlSetData($list, '') For $i=0 To UBound($matches)-1 Step 2 If StringInStr($matches[$i+1], GUICtrlRead($input)) Then GUICtrlSetData($list, '['&$matches[$i]&'] '&$matches[$i+1]) Next Case $btnSave IniWrite('test.ini', StringRegExpReplace(GUICtrlRead($list), '\[(\d+)\].+', '$1'), 1, GUICtrlRead($input)) EndSwitch WEnd Edited August 15, 2015 by akira2891 Link to comment Share on other sites More sharing options...
mikell Posted August 15, 2015 Share Posted August 15, 2015 For the other thing there is one line to add (update $afound)Case $hSaveButton $newitem = GUICtrlRead($hNameInput) IniWrite($file, $afound[$index][1], "1", $newitem) ; update ini $afound[$index][2] = $newitem ; update $afound array<<<<<<<<<<<<<<<<<<<<<<<<<< $matches[$afound[$index][0]][2] = $newitem ; update main array ; update listbox _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem)The ini I used to test was the one from post #1, could you post a 'bigger one' for which the code doesn't work ? Link to comment Share on other sites More sharing options...
akira2891 Posted August 16, 2015 Author Share Posted August 16, 2015 (edited) Try search for "blode" without quotes, and use mine example code i gave u to see how it work fast.U will need to get 19 or 20 results.Item.zip Edited August 16, 2015 by akira2891 Link to comment Share on other sites More sharing options...
mikell Posted August 16, 2015 Share Posted August 16, 2015 Here it is. Last tryexpandcollapse popup#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <Array.au3> #include <FileConstants.au3> $hGUI = GUICreate("Form1", 702, 533, 513, 305) GUISetBkColor(0xFFFFFF) GUICtrlCreateGroup(" Search ", 10, 107, 342, 385) GUICtrlCreateLabel("Search for text", 24, 131, 73, 17) $hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21) $hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25) GUICtrlSetState($hFinddAllButton, $GUI_DISABLE) GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17) $hList = GUICtrlCreateList("", 24, 211, 313, 266, BitOR($WS_BORDER, $WS_VSCROLL)) ; disable sort !! GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137) GUICtrlCreateLabel("Name", 381, 132, 32, 17) $hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21) $hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25) GUICtrlSetState($hSaveButton, $GUI_DISABLE) GUICtrlCreateLabel("Item ID", 381, 187, 38, 17) $hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY)) GUICtrlCreateGroup("", -99, -99, 1, 1) $Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100) $hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25) $hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25) GUISetState(@SW_SHOW) Global $file, $sFile, $matches[0][3], $afound[0][3], $index While 1 Switch GUIGetMsg() Case -3 Exit Case $hOpenIniButton _FileOpen() Case $hList $index = _GUICtrlListBox_GetCurSel($hList) If $index <> -1 Then GUICtrlSetData($hNameInput, $afound[$index][2]) Case $hFinddAllButton GUICtrlSetData($hList, '') Redim $afound[0][3] For $i = 0 To UBound($matches)-1 If StringInStr($matches[$i][2], GUICtrlRead($hSearchInput)) Then _ArrayAdd($afound, $matches[$i][0] &'|'& $matches[$i][1] &'|'& $matches[$i][2]) GUICtrlSetData($hList, '[' & $matches[$i][1] &'] '& $matches[$i][2]) EndIf Next _ArrayDisplay($afound, "found") ; debug Case $hSaveButton $newitem = GUICtrlRead($hNameInput) IniWrite($file, $afound[$index][1], "1", $newitem) ; update ini $afound[$index][2] = $newitem ; update $afound array $matches[$afound[$index][0]][2] = $newitem ; update main array ; update listbox _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem) ;_ArrayDisplay($matches, "$matches after save") EndSwitch WEnd Func _FileOpen() ; open file Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)") If @error Then Return $tmp = StringRegExp(FileRead($file), '(?s)\[(\d+)\].*?\v1=(\V+)', 3) ; _ArrayDisplay($tmp) Redim $matches[UBound($tmp)/2][3] For $i = 0 to UBound($tmp)-1 step 2 $matches[$i/2][0] = $i/2 $matches[$i/2][1] = $tmp[$i] $matches[$i/2][2] = $tmp[$i+1] Next GUICtrlSetState($hOpenIniButton, $GUI_DISABLE) GUICtrlSetState($hFinddAllButton, $GUI_ENABLE) GUICtrlSetState($hSaveButton, $GUI_ENABLE) _ArrayDisplay($matches, "$matches creation for key 1") EndFunc ;=> file open akira2891 1 Link to comment Share on other sites More sharing options...
akira2891 Posted August 16, 2015 Author Share Posted August 16, 2015 (edited) I was trying all way's and no problems were with small ini files, and for this i even try to convert it to text and then search for matched string but no sucess because as i see AutoIt reading bigger files is so slow.That's it works like charm thank you very much. #request for close topic, problem solved. Edited August 16, 2015 by akira2891 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