GUI help with control in autoselecting items.

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

GUI help with control in autoselecting items.

11 May 2021, 11:48

Hi All,
Hope everyone is Great like AHK! Still a Noob but learning 1 thing everyday in AHK

THANK YOU in advance.

I would like "FOOD" label to check for specific # choosen instead. I don't want to use "AltSubmit " since I will need the values to be sent.

Should I duplicate the command and use "AltSubmit" and get both the value and #? or is there an alternate way to get that control info?

Code: Select all

Food := "||[Meat.]|[Fish.]|[Vegetable.]"
Type := "||[Chicken.]|[Beef.]|[Tomatoe.]|[Salmon.]"

Gui, +AlwaysOnTop +ToolWindow -border +LastFound +HwndMyGuiHwnd
Gui, Margin, 0, 0
;Gui, Font, c%White% s8, q5 Bold
Gui, -Caption
Gui, Font, s10 cRed Bold, Verdana  ; 
Gui Add, ComboBox, Choose2 xm ym w110 r5 gFOOD vFood hwndMyComboBoxHwnd, % Food
Gui Add, ComboBox, Choose2 xm+180 ym w110 r5 vType hwndMyComboBoxHwnd, % Type
Gui Show, x100 y500, w300 h500, 

FOOD:
Gui, Submit, NoHide
        if (Food = "[Vegetable.]") {     ;Would prefer that it checks if it is #3 checked 
        GuiControl,Choose,Type, 4  
        }
        else if (Food = "[Fish.]"){
        GuiControl,Choose,Type, 5      ;And if it is #3 then I want to choose #5
        }
return
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autos electing items.

11 May 2021, 11:59

Pick a different variable name than Food, since you already used that one. A demonstration is below.

Code: Select all

Food := "||[Meat.]|[Fish.]|[Vegetable.]"
thisFood := "[Vegetable.]", index := 0
For k, v in array(Food)
 If (v = thisFood)
  index := A_Index
MsgBox, 64, Result, %index%

array(list) {
 Return StrSplit(Trim(RegExReplace(list, "\|+", "|"), "|"), "|")
}
Or:

Code: Select all

Food := "||[Meat.]|[Fish.]|[Vegetable.]"
thisFood := "[Vegetable.]", index := 0
MsgBox, 64, Result, % index(Food, thisFood)

index(list, find) {
 For k, v in StrSplit(Trim(RegExReplace(list, "\|+", "|"), "|"), "|")
  If (v = find)
   Return A_Index
}
Now I know someone will post the script that uses regex or bigA instead!
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

11 May 2021, 12:48

Thank you mikeyww as always,

I adapted the code as such but not sure if this is correct? Can you explain the For k, v ?
I see that you obtain the index like an array and therefore not dependent on AltSubmit. Is there a reason why you made "vegetable" index of 0 and not 3?

Code: Select all

Food := "|[Meat.]|[Fish.]|[Vegetable.]"
thisFood := "[Vegetable.]", index := 0

Type := "||[Chicken.]|[Beef.]|[Tomatoe.]|[Salmon.]"


Gui, +AlwaysOnTop +ToolWindow -border +LastFound +HwndMyGuiHwnd
Gui, Margin, 0, 0
;Gui, Font, c%White% s8, q5 Bold
Gui, -Caption
Gui, Font, s10 cRed Bold, Verdana  ; 
Gui Add, ComboBox, Choose2 xm ym w110 r5 gFOOD vFood hwndMyComboBoxHwnd, % Food
Gui Add, ComboBox, Choose2 xm+180 ym w110 r5 vType hwndMyComboBoxHwnd, % Type
Gui Show, x100 y500, w300 h500, 


FOOD:
Gui, Submit, NoHide
MsgBox, 64, Result, % index(Food, thisFood)
        if (food = 1) {
        GuiControl,Choose,Type, 4  
        }
        else if (Food = 2){
        GuiControl,Choose,Type, 5
        }
return


index(list, find) {
 For k, v in StrSplit(Trim(RegExReplace(list, "\|+", "|"), "|"), "|")
  If (v = find)
   Return A_Index
}
return
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

13 May 2021, 08:16

Can you please explain further on how to integrate it into my code. :headwall: For some noob reason I just cant get it to work. I'm also switching to a list box instead and didn't know if that will change?
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autos electing items.

13 May 2021, 08:43

As I mentioned earlier, use a different variable instead of reassigning Food to a different string. Try the following. You may need to adjust your GuiControl.

Code: Select all

Food := "|[Meat.]|[Fish.]|[Vegetable.]"
Type := "||[Chicken.]|[Beef.]|[Tomatoe.]|[Salmon.]"
Gui, +AlwaysOnTop +ToolWindow -border +LastFound +HwndMyGuiHwnd
Gui, Margin, 0, 0
Gui, -Caption
Gui, Font, s10 cRed Bold, Verdana
Gui, Add, ComboBox, Choose2 xm ym w110 r5 gFOOD vthisFood hwndMyComboBoxHwnd, % Food
Gui, Add, ComboBox, Choose2 xm+180 ym w110 r5 vType hwndMyComboBoxHwnd, % Type
Gui, Show, x100 y500, w300 h500
Return

FOOD:
Gui, Submit, NoHide
MsgBox, 64, Result, % index(Food, thisFood)
Switch index(Food, thisFood) {
 Case 1: GuiControl, Choose, Type, 4
 Case 2: GuiControl, Choose, Type, 5
}
Return

index(list, find) {
 For k, v in StrSplit(Trim(RegExReplace(list, "\|+", "|"), "|"), "|")
  If (v = find)
   Return A_Index
}
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

13 May 2021, 10:50

Ok great thank you. Yes its definitely a foreign language to me still and moving at snail pace. Thanks for the switch case example. I always wanted to learn that. Appreciate the nudge to get me to finish this!
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

15 May 2021, 09:01

I worked on the code and went a slight different route but your example was great.

I figured I really didn't need to add another listbox element to change and rather created an object/array? I cant tell what the difference is by syntax.

Can you please help me with the next step? Basically, I have about 12 list boxes that are more complex than the food example I sent you earlier. I'm trying to save all the Findings and eventually the impressions from the Swtich/case into a text file.

I am not sure if I'm going the right approach?

Code: Select all

Field1 := "LUNG BASES:"  ;title of field
Findings1 := "|[Clear]|[Bibasilar atelectasis.]|[Centrilobular emphysematous changes are present.]|[Hiatal hernia is present.]|[Pulmonary nodule seen]"  ;For the list box
Impression1 := ["[Bibasilar atelectasis versus lung scarring.]","[Emphysematous/COPD Lung disease.]","[Hiatal hernia is present.]","[Pulmonary nodule(s) Recommend dedicated CT of the Chest to assess for other nodules and intiate a Lung Cancer Screening program.]"] ;Based on listbox choices to auto-populate

Code: Select all

SENDDATA:
    FieldArray := []  ;Clear the arrays
    FindingsArray := []
    ImpressionArray := []
    x = 1
    loop 12
    {
    Gui, FFI%x%GUI:Submit, NoHide
       Switch index(Findings%x%, Find%x%) {
        Case 2: GuiControl, Text, ImpressionEdit%x% , % impression%x%[1] 
        Case 3: GuiControl, Text, ImpressionEdit%x% , % impression%x%[2] 
        Case 4: GuiControl, Text, ImpressionEdit%x% , % impression%x%[3] 
        Case 5: GuiControl, Text, ImpressionEdit%x% , % impression%x%[4] 
        }
    FieldArray.Push(Field%x%)
    FindingsArray.Push(Find%x%)
    ImpressionArray.Push(ImpressionEdit%x%)
    x++
    }
      FileAppend, % FindingsArray[1]   FindingsArray[2] "`n" FindingsArray[3] FindingsArray[4] "`n" FindingsArray[5] "`n" FindingsArray[6] "`n" FindingsArray[7]"`n" FindingsArray[8]"`n" FindingsArray[9]"`n" FindingsArray[10]"`n" FindingsArray[11]"`n" FindingsArray[12],Findings.txt 
 return
This works but I would prefer not to list all the arrays to append. The bottom commented out ones didn't work. Im sure something wrong with the logic? Or not using "A_index"? THANK YOU

Code: Select all

;FileAppend, % FindingsArray[%A_Index%],Findings.txt
;FileAppend, % FindingsArray[%A_Index%] "`n",Findings.txt
;FileAppend, % FindingsArray[] "`n",Findings.txt
;FileAppend, % FieldArray, Field.txt
;FileAppend, % FindingsArray, findings.txt
;FileAppend, % ImpressionArray, impression.txt
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autos electing items.

15 May 2021, 16:37

It's a bit confusing with these script fragments, and I do not have a way to test. I do not actually see a Find pseudoarray somewhere. If you want to append to your file inside the loop, I'm also not sure why you would need to reference an array, since you are building your array inside the loop, too. In any case, an example of referring to an array element could be FindingsArray[A_Index].
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

15 May 2021, 18:12

Yes, I’m a bit confused with the use of arrays and likely not really Using it appropriately here. I’m also not sure if an an appended txt text file is really needed for what I need to do.

What I’m trying to accomplish here is that after GUI submits, the findings/choices selected in list box goes thru that switch-case and both findings and impression is saved in one string created and then finally appends to a file if needed for backup. I think what I’m trying to learn is how to save all variables into one variable string. If that helps clarify things. I’ll try playing with other variations of what I’m trying to do in the meantime. I’m trying to not use a class like LB class such as Just me’s LBEX.
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autos electing items.

15 May 2021, 19:20

The demo below might help you.

Code: Select all

box =
Field1 := "LUNG BASES"
Findings1 := [["Clear"                           , "Normal."]
            , ["Bibasilar atelectasis"           , "Bibasilar atelectasis versus lung scarring."]
            , ["Emphysematous/COPD Lung disease" , "Centrilobular emphysematous changes are present."]
            , ["Hiatal hernia is present"        , "Hiatal hernia is present."]
            , ["Pulmonary nodule seen"           , "Pulmonary nodule(s). Recommend dedicated CT of the Chest "
                                                 . "to assess for other nodules and initiate a Lung Cancer "
                                                 . "Screening program."]]
For k, v in Findings1
 box .= (A_Index > 1 ? "|" : "") v.1
Gui, Font, s10
Gui, Add, ListBox, w475 r5 vfinding AltSubmit, %box%
Gui, Add, Button, Default, OK
Gui, Show, w500, %Field1%
Return

ButtonOK:
Gui, Submit
ttext := """" Field1 """,""" Findings1[finding].1 """,""" Findings1[finding].2 """"
SendInput {Text}%ttext%
Return
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autos electing items.

15 May 2021, 23:42

That worked great and very elegantly written and thank for simplifying. You also solved my other problem where I was leery to use the "AltSubmit" in the first place but you proved to me that I can still capture the data and the "number" in the list.

Improvements I couldn't figure out:

1. Is there a way to multselect and send the items as a single string. I added the multi option to the add listbox but without any luck. Ill try playing with it.
2. How do I add more "box ="'s I added one in my complete code below (minus some of the other fields to limit size). Have about 12.


Thank you Mikey, So far awesome,

Code: Select all

box1 =
    Field1 := "LUNG BASES: "
    Findings1 := [["Clear"                           , "Normal."]
            , ["Bibasilar atelectasis"             , "Bibasilar atelectasis versus lung scarring."]
            , ["Centrilobular emphysematous changes are present."                         ,  "Emphysematous/COPD Lung disease."]
            , ["Hiatal hernia is present"                 , "Hiatal hernia is present."]
            , ["Pulmonary nodule seen."                  , "Pulmonary nodule(s). Recommend dedicated CT of the Chest to assess for other nodules and initiate Lung Cancer Screening program."]]

 For k, v in Findings1
box1 .= (A_Index > 1 ? "|" : "") v.1

;/////////////////////////////////////////////////////////////
;Color and Brightness/transparancy
    Purple := "34294d"
    White := "FFFFFF"
    Green2 := "007369"
    Green := "6A9955"
    DarkGrey := "c000000"
    Orange := "CC6633"

    GuiColor := 0x000111
    trans := 110
    Brightness := 225

;///////////////////////////////////////////////////////////////////////

box2 =
;Findings2
Field2 := "LIVER:"
    Findings2 := [["No biliary obstruction."                        ," "],["Liver appears hypodense."                                    , "Hypodense liver suggest hepatic steatosis."],["Nodular appearance to the liver."                                                              , "Nodular appearance suggests cirrhosis."]]

For k, v in Findings2
box2 .= (A_Index > 1 ? "|" : "") v.1                ;Tried this in a the loop 12 but wasnt sure if have to be done for each to parse?

;/////////////////////////////////////////////////////////////////
;Screen positions
    FFI1x := 225 ;lungs
    FFI1y := 1475
    FFI2x := 0   ;Liver
    FFI2y := 675 
   
;///////////////////////////////////////////////////////////

;////////////////////MAIN GUI///////////////////////////////////////////////////
Gui, Destroy
Gui, +AlwaysOnTop +ToolWindow -border +LastFound +HwndMyGuiHwnd ;+E0x08000000
WinSet, Transparent, 190
Gui, Color, %Purple%, %DarkGrey%
Gui, Margin, 0, 0
Gui, Font, c%White% s8, q5 Bold
Gui, Add, Button, x970 y1 w30 h18 gGuiClose, X
Gui, -Caption
Gui, Font, s12 c%Green%, Verdana
Gui, Add, Edit, vMainEdit1 WantTab xm ym+20 w1000 r7 hwndMyEdit1Hwnd
Gui, Font, s12 c%Orange%, Verdana
Gui, Add, Edit,vMainEdit2  WantTab xm ym+160 w1000 r5 hwndMyEdit2Hwnd
Gui Show, x+10 y1625 w1000 h270, DD
;///////////////////////////////////////////////////////////////////////////////



;//////////////////////////////x ALL GUIs with loop////////////////////////
x = 1
loop 12{
    Gui, FFI%x%GUI:Destroy
    Gui, FFI%x%GUI:+LastFound
    Gui, FFI%x%GUI:+AlwaysOnTop +ToolWindow -Border +LastFound ;+E0x08000000
    Gui, FFI%x%GUI:Color, %GuiColor%, %Purple% 
    Gui, FFI%x%GUI:Margin, 0, 0
    Gui, FFI%x%GUI:Font, s8 cD0D0D0 Bold
    Gui, FFI%x%GUI:Add, Progress, xm-1 ym-12 w110 h35 Background404040 Disabled ;hwndHPROG
    Gui, FFI%x%GUI:Add, Text, xm+6 ym-4 w100 h20 r2 gShowHide BackgroundTrans Center 0x200, % Field%x%  
    Gui, FFI%x%GUI:Font, s10 c%White%, Verdana 
    Gui, FFI%x%GUI:Add, Edit, vFindingEdit%x% gSENDDATA WantTab R5 xm ym+20 w200 r1 hwndMyEditBox1Hwnd
    Gui, FFI%x%GUI:Add, Edit, vImpressionEdit%x% gSENDDATA WantTab xm ym+40 w200 r1 hwndMyEditBox2Hwnd
    Gui, FFI%x%GUI:Font, s8 c%green%, Verdana 
    ;Gui, FFI%x%GUI:Add, ListBox, Multi Choose2 xm ym+65 w200 r7 vFind%x% gSENDDATA hwndMyList1BoxHwnd, % Findings%x% 
    Gui, FFI%x%GUI:Add, ListBox, Multi Choose2 xm ym+65 w200 r7 vFind%x% gSENDDATA AltSubmit hwndMyList1BoxHwnd, box%x%
    Gui, FFI%x%GUI:Font, s10 c%Orange%, VerdanaFF
    Gui, FFI%x%GUI:-Caption
    WinSet, TransColor, %GuiColor% %trans% 
    Gui, FFI%x%GUI:Show, % "x" FFI%x%x " y" FFI%x%y " w" 200, % FFI%x%
    GuiControl, FFI%x%GUI:Show, ListBox%x%
    x++
    }
Return
;///////////////////////////////////////////////////////////////////////////////


SENDDATA:
x = 1
loop 12{
Gui, FFI%x%:Submit, NoHide
tfinding%x% := Field%x%  Findings%x%[finding].1 
timpression%x% := "`n" Findings%x%[finding].2 
SendInput {Text }  tfinding%x%
SendInput {Text}   timpression%x%
}
Return


ShowHide:
    show = 1
    IF XX=1
    {
    xx=0
    loop 12
        {
    GuiControl, Findings%show%GUI:Show, ListBox1
    WinSet, TransColor, %GuiColor% %Brightness% 
    GuiControl, Findings%show%GUI:Show, Edit1
    GuiControl, Findings%show%GUI:Show, Edit2
    show++
        }
    }
    else
    {
    hide = 1
    loop 12
        {
    GuiControl, Findings%hide%GUI:Hide, ListBox1
    WinSet, TransColor, %GuiColor% %trans%
    GuiControl, Findings%hide%GUI:hide, Edit1
    GuiControl, Findings%hide%GUI:hide, Edit2
    hide++
        }
    xx=1
    }
return

GuiEscape:
GuiClose:
ExitApp
just me
Posts: 9406
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: GUI help with control in autos electing items.

16 May 2021, 06:31

Hi iilabs,

the subroutines at the bottom of your code obviously don't work. I assume that at least the SENDDATA routine is essential for the script. The design of your 'findings' GUI's depends on the intended function. So you'd add some comments to the labels to explain what you want to happen.
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autos electing items.

16 May 2021, 08:12

An approach is below. It could use some improvements in the design.

Code: Select all

Global scan := []

scan["LUNG_BASES"]
 := [["Clear"                           , "Normal."]
   , ["Bibasilar atelectasis"           , "Bibasilar atelectasis versus lung scarring."]
   , ["Emphysematous/COPD Lung disease" , "Centrilobular emphysematous changes are present."]
   , ["Hiatal hernia is present"        , "Hiatal hernia is present."]
   , ["Pulmonary nodule seen"           , "Pulmonary nodule(s). Recommend dedicated CT of the chest to "
                                        . "assess for other nodules and initiate a Lung Cancer Screening "
                                        . "program."]]
scan["LIVER"]
 := [["No biliary obstruction"          , "Liver appears hypodense."]]

findings("LIVER", 100, 100), findings("LUNG_BASES", 750, 100)

findings(type, x, y) {
 Static finding
 For k, v in scan[type]
  box .= (A_Index > 1 ? "|" : "") v.1
 Gui, %type%:New
 Gui, Font, s10
 Gui, Add, ListBox, w475 r5 vfinding AltSubmit Multi, %box%
 Gui, Add, Button, Default, OK
 Gui, Show, x%x% y%y% w500, % StrReplace(type, "_", " ")
 Return
 LIVERButtonOK:
 LUNG_BASESButtonOK:
 Gui, %A_Gui%:Submit
 ttext =
 For k, v in StrSplit(finding, "|")
  ttext .= scan[A_Gui][v].1 ". "
 ttext := Trim(ttext) ""","""
 For k, v in StrSplit(finding, "|")
  ttext .= scan[A_Gui][v].2 " "
 ttext := """" StrReplace(A_Gui, "_", " ") """,""" Trim(ttext) """"
 MsgBox, 64, Result, %ttext%
 Return
 LIVERGuiEscape:
 LIVERGuiClose:
 LUNG_BASESGuiEscape:
 LUNG_BASESGuiClose:
 Gui, %A_Gui%:Destroy
 Return
}
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autoselecting items.

17 May 2021, 19:24

Thank you,

(edited)

Worked very well for making a list of groups!

I went ahead and adapted all the changes. I removed the button so that a click will run the gui submitting and without hiding after submitting.


I realized that the variables I have for color do not get passed to the function. Is it possible to add this? Can I also pass variables regarding the x,y placement? For instance I want to eventually pull all the data from a CSV, txt, or ini file (Do you have a recommendations?) to make these GUI's for different studies.


Thank you, this has been very interesting project!
Last edited by iilabs on 17 May 2021, 21:27, edited 3 times in total.
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autoselecting items.

17 May 2021, 20:46

I do not understand the questions. I do not know what you mean by "title". Yes, you can add parameters to a function if needed.

Variables used in functions are local by default. Define them within the function, pass them as parameters, or declare them as global.
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autoselecting items.

17 May 2021, 20:58

Thanks for pointing that out. I edited the above post/question and hope that clarifies the question. I figured out my title problem. I used the "type" in your script as my variable for the title and worked fine! Sorry for these novice errors and questions.

So I tried,

findings("LIVER", 225, 1475), findings("LUNG_BASES", 0, 675) for the coordinates but

findings("LIVER", %lx%, %ly%), findings("LUNG_BASES", %lx%, %ly%) didn't work so I must have to make these global variables? All this I can then read from a CSV file or INI?
Last edited by iilabs on 17 May 2021, 21:28, edited 3 times in total.
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autoselecting items.

17 May 2021, 21:07

Your latest script does not seem to have much in it, but generally speaking, you would use expressions in a function call, such as

Code: Select all

findings("LIVER", lx, ly)
You can put whatever you like in a CSV or INI file. An INI file uses unique keys in each section. My example showed how to create lines with CSV. Those can be read with Loop, Parse.
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autoselecting items.

17 May 2021, 21:31

ok thank you. I will try that out. I am also trying to hide the gui's created after clicking the "Title" I have made with a progress bar and a text with a g-subroutine but somehow the function (Which I need to understand and this example of yours is great way to learn.)
I guess another way is to hide the list box individually? Pass another variable to the function? i can hide all the GUI but I wanted the "Title/Type" as a way to show it again.

Code: Select all

ShowHide:
    IF XX=1
    {
    xx=0
    GuiControl, GUI%type%:Show, ListBox1
    WinSet, TransColor, c000111 110
    }
    else
    {
    GuiControl, GUI%type%:Hide, ListBox1
    WinSet, TransColor, c000111 250
    xx=1
    }
return
User avatar
mikeyww
Posts: 26437
Joined: 09 Sep 2014, 18:38

Re: GUI help with control in autoselecting items.

17 May 2021, 21:55

Example:

Code: Select all

F3::findings("LIVER", 100, 100)
F4::findings("LIVER")

findings(type, x := -1, y := 0) {
 If (x < 0) {
  Gui, %type%:Hide
  Return
 }
 ....
}
User avatar
iilabs
Posts: 296
Joined: 07 Jun 2020, 16:57

Re: GUI help with control in autoselecting items.

18 May 2021, 09:20

That example integrated nice and hide all the GUI's. Is it possible just to hide the List Box and keep the remaining visible like a minimized window with just a title bar? In a sense i'm using the "type" as a part of the title bar that I can move around and hit the X to hide it completely or preferably just the listbox? Ill try changing your example to control to hide the listbox instead if that is the correct direction?
image.png
image.png (5.05 KiB) Viewed 523 times

I tried switching out your example with this but unsucessful

Code: Select all

GuiControl, %type%:Hide, ListBox1

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: inseption86, kashmirLZ and 171 guests