Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

X-GUI


  • Please log in to reply
16 replies to this topic
AGermanUser
  • Members
  • 82 posts
  • Last active: Apr 07 2010 06:06 PM
  • Joined: 12 Feb 2005
Thanks to Chris' tip concerning WinSet I played around a little bit.

I created a fun gui. Named it X-Gui. The X stands for "Experimental" :lol:. Just in the tradtition of the X planes.

Posted Image
This is how it looks like at the moment. The GUI is twice as big as the image displays. I just shrinked the image so that it doesn't get too big in filesize. :)

Download the zip file containing all images and the script below. Installation is easy. Simply extract the zip file to a folder of your choice and run XGui.ahk
:arrow: X-GUI.zip

In case you wonder. The gui doesn't do anything. It serves no purpose at the moment. Thanks to corrupt, who did quite an awesome job on the code, most of the bugs, which where listed here before, were corrected. That's why I updated the zip file above and the the scriptcode below.

Attention:
I think the GUI won't work under an OS < 2k (e.g. W98') due to using WinSet, TransColor.

Perhaps One Thing:
Adding a text control is obviously a problem. Either the background gets transparent or you have to GuiControl -Background it. But then it gets an ugly grey on my system. How do you assign a custom backgroundcolor with GuiControl?

Feel free to post any strange behaviours. ;)

Some minor bugfix:
24.12.2005
+major code changes thx to corrupt - see thread. (thx corrupt or as I will call him "Mr WinMessage" ;) )

20.12.2005
+Added shimanovs proposed corrections. (thx shimanov)
+Fixed final Gui, 2:Show - Gui should work now under resolution 1024*768 too


Here is the new script with lots of corrupt code ;):
#NoTrayIcon
DetectHiddenWindows On
SetBatchLines -1
 
  ScriptName = X-Gui
  win1Width := 250
  winstep := 100
  Gui1XPos  := 505

  CustomColor = 0000FF
  SliderStatus = 0
     
  ; ##### Left Slider ##########################################################
  Gui, 1:Margin, 0, 0
  Gui, 1:Color, %CustomColor%
 
  Gui, 1:Add, Picture, vGuiFade gGuiFade x8 ym+120 w20 h20, %A_ScriptDir%\images\ico_1.bmp
  Gui, 1:Add, Picture, xp-5 ym, %A_ScriptDir%\images\slider.bmp
  Gui, 1:Add, Picture, x8 ym+120 w20 h20, %A_ScriptDir%\images\ico_1.bmp
 
  Gui, 1:Add, Edit, x120 y20 w100
  Gui, 1:Add, Button, xp+110 yp+3 h16 w16
  Gui, 1:Add, GroupBox, x120 yp+20 h30 w126
  Gui, 1:Add, Checkbox, xp+8 yp+12 w13 h13
  Gui, 1:Add, Checkbox, xp+48 yp w13 h13
  Gui, 1:Add, Checkbox, xp+48 yp w13 h13
  Gui, 1:Add, Text, x120 yp+24, This is a Test GUI.
  Gui, 1:Show, w%win1Width% x%Gui1XPos% Hide, %ScriptName%
 
  WinSet, TransColor, %CustomColor% 255, %Scriptname%
  Gui, 1:-Caption
 
  GuiControl, -BackgroundFFFFFF, Static4
 
  ; ##### Right Menu ###########################################################
  Gui, 2:+Owner1
  Gui, 2:Margin, 0, 0
  Gui, 2:Color, %CustomColor%
   
  Gui, 2:Add, Picture, xm ym, %A_ScriptDir%\images\menu.bmp
  Gui, 2:Add, Picture, gGuiMinimize x73 y30, %A_ScriptDir%\images\ico_2.bmp
  Gui, 2:Add, Picture, gGuiClose x73 y55, %A_ScriptDir%\images\ico_3.bmp
  Gui, 2:Show, Hide, RightMenu
 
  WinSet, TransColor, %CustomColor% 255, RightMenu
  Gui, 2:-Caption
 
  ; ##### Green AHK Button #####################################################
  Gui, 3:+Owner2
  Gui, 3:Margin, 0, 0
  Gui, 3:Color, %CustomColor%
 
  Gui, 3:Add, Picture,, %A_ScriptDir%\images\button.bmp
  Gui, 3:Show, x535 Hide, AHKButton
 
  WinSet, TransColor, %CustomColor% 255, AHKButton
  Gui, 3:-Caption
 
  ; ##### Finally show all gui #################################################
  Gui, 1:Show, w%win1Width% x%Gui1XPos%, %ScriptName%
  Gui, 2:Show, x783, RightMenu
  Gui, 3:Show, x535, AHKButton

  win1hwnd := WinExist(ScriptName)
  win2hwnd := WinExist("RightMenu")
  win3hwnd := WinExist("AHKButton")
  OnMessage(0x46, "WM_WINDOWPOSCHANGING")
  OnMessage(0x47, "WM_WINDOWPOSCHANGED")
  OnMessage(0x201, "WM_LBUTTONDOWN")
  OnMessage(0x202, "WM_LBUTTONUP")
Return

GuiClose:
  ExitApp

GuiMinimize:
  Gui, 1:Show, Hide
  WinMinimize, ahk_ID %win1hwnd%
Return

GuiFade:
  If (!Slstat AND !slactive)
    {
      slactive := True
      WinGetPos, win1XPos,,win1XWid1,, ahk_ID %win1hwnd%
      WinGetPos, win3XPos,,,, ahk_ID %win3hwnd%
      win1widthRem := win1width - (win1width / winstep)
          Loop, % (win1width / winstep)
            {
              WinMove, ahk_ID %win1hwnd%,
              , (win1XPos - (A_Index * winstep)),
              , (win1XWid1 + (A_Index * winstep))
            }
      If win1widthRem
        WinMove, ahk_ID %win1hwnd%,
        , win1XPos - win1widthRem,
        , (win1XWid1 + win1widthRem)
      Slstat := True
      slactive=
    }
  Else If (Slstat AND !slactive)
    {
      WinGetPos, win3XPos,,,, ahk_ID %win3hwnd%
      WinSet, Transparent, 0, ahk_ID %win1hwnd%
      WinMove, ahk_ID %win1hwnd%,, (win3XPos - 30),, (200)
      WinSet, TransColor, %CustomColor%, ahk_ID %win1hwnd%
      slactive=
      slstat=
    }
Return

Movewin:
  CoordMode, Mouse, Screen
  MouseGetPos, mposX, mposY
  WinMove, ahk_ID %win3hwnd%,, (mposX-omposX), (mposY-omposY)
Return

; ##### Hotkeys ################################################################
^#q::
  ExitApp 

; ##### Functions ##############################################################
WM_LBUTTONDOWN(wparam, lparam)
{
  Global  omposX, omposY
          , w1X, w3X, w1Y, w3Y
          , win1hwnd, win2hwnd, win3hwnd, w31X, w31Y
          , mv1, slactive
          
  Sleep, 50
  If (A_GUI = 3 AND !mv1 AND !slactive)
    {
      mv1 := True
      CoordMode, Mouse, Relative
      MouseGetPos, omposX, omposY
      WinGetPos, w1X, w1Y,,, ahk_ID %win1hwnd%
      WinGetPos, w3X, w3Y,,, ahk_ID %win3hwnd%
      w31X := w3X - w1X
      w31Y := w3Y - w1Y
      WinSet, Transparent, 0, ahk_ID %win2hwnd%
      WinSet, Transparent, 0, ahk_ID %win1hwnd%
      SetTimer, Movewin, 150
    }
  Return
}

WM_LBUTTONUP(wparam, lparam)
{
  Global  omposX, omposY
          , w1X, w31X, w3X, w1Y, w31Y, w3Y
          , win1hwnd, win2hwnd, win3hwnd
          , mv1, CustomColor
          
  If (A_GUI = 3 AND !slactive AND mv1)
    {
      SetTimer, Movewin, Off
      WinGetPos, w3X, w3Y,,, ahk_ID %win3hwnd%
      WinMove, ahk_ID %win2hwnd%,, (w3X + 248), (w3Y + 107)
      WinMove, ahk_ID %win1hwnd%,, (w3X - w31X), (w3Y - w31Y)
      WinSet, TransColor, %CustomColor%, ahk_ID %win2hwnd%
      WinSet, TransColor, %CustomColor%, ahk_ID %win1hwnd%
      mv1=
    }
  Return
}

WM_WINDOWPOSCHANGING(wParam, lParam)
{
  If (lparam = 8909000 AND A_GUI <> 1 AND !slactive)
    {
      If A_GUI = 3
        Gui, 3:Show
      Else If A_GUI = 2
        Gui, 2:Show
    }
  Return
}

WM_WINDOWPOSCHANGED(wParam, lParam)
{
  If (lparam = 8910432 AND A_GUI = 1 AND !slactive)
    {
      Gui, 3:Show, Hide
      Gui, 2:Show, Hide
    }
  Return
}


shimanov
  • Members
  • 610 posts
  • Last active: Jul 18 2006 08:35 PM
  • Joined: 25 Sep 2005

when the Gui looses focus (another window is activated) only the green AHK button remains on the screen (due to AlwaysOnTop). When you activate it again, only the left slider can be seen.


Change "Gui, 2:+Owner" to "Gui, 2:+Owner1". In the documentation, "script's main window" refers to the "debugging" window.

Also, removing "Gui, 3: Color, %CustomColor%" displays the green button without visual artifacts (i.e., white lines).

I also don't know how this looks like under XP.


It's looks just as fun with XP, as I imagine it is with 2000.

Thalon
  • Members
  • 641 posts
  • Last active: Jan 02 2017 12:17 PM
  • Joined: 12 Jul 2005
Looks quite good :)
It is a bit flickering when opening the left guiwindow, but it looks very good :)
I even do not know how to get a good looking text-control in a colored GUI. I did try this last april, but didn't find any good solution for this, so my Guis have the standard-colors ( :( )

Thalon

AGermanUser
  • Members
  • 82 posts
  • Last active: Apr 07 2010 06:06 PM
  • Joined: 12 Feb 2005
Thx Thalon. :D

It is a bit flickering when opening the left guiwindow, ...

I know. I think this is because I use Gui, 1:Show in a Loop. Didn't find any good solution for this flickering problem. Maybe it also a problem in combination with WinSet, Transcolor. Don't know.

To minimize this effect I shortened the Loop to two iterations. The left gui window is now popping out very fast but the flickering is not so obvious than before.

@all

Is there a way to take influence on the z-order of the guis with the help of Autohotkey?

I thought the green button must not be "AlwaysOnTop" when you could assign this gui (gui3) a z-order value greater than the two other guis.
It's just a very rough idea to work around this problem where the left and right gui disappears when XGui looses focus (another window is activated)

Thalon
  • Members
  • 641 posts
  • Last active: Jan 02 2017 12:17 PM
  • Joined: 12 Jul 2005
@AGermanUser
I do not think that any z-order is supported in AHK (for example let overlap a text-control and an edit-control: the one which is hovered by mouse will overlap above the other one).

The group-propertie is AFAIK only for use with radio-buttons? I did also try to get it working vor other things like windows, but didn't have any success in this direction.

To reduce the flickering it may be possible to use WinMove(?), maybe in combination with with "Winset, Region"?

The get all the windows "OnTop" you could set all of them OnTop and directly afterward the main-gui in front of them with "Winset, Top"

Top: Brings a window to the top of the stack without explicitly activating it

But I do not know if it would result in heavy flickering when doing some actions at the gui.
Another possibility would be to let it not "ontop", but set the side-window "Top" if the gui is activated in any way.
Maybe I gave you some ideas for this difficult handling...

I have at home a more or less working example for an additional button beside Minimize, Maximize and so on. The only case it would not seem to be part of the gui is if some other window overlappes the button partially (maybe I find this script at home...).

Thalon

AGU
  • Guests
  • Last active:
  • Joined: --
Thx Thalon for your ideas. :mrgreen:

I did a quick research at MSDN and found this SetWindowPos Function.

The description states out:

The SetWindowPos function changes the size, position, and Z order of a child, pop-up, or top-level window. Child, pop-up, and top-level windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the Z order.

http://msdn.microsoft.com/...

Won't this be a way to work around this losing active status problem? I mean changing the z-order of all windows dynamically when they loose their active status and set them to the bottom?

By the way, exists a Gui Label that is launched automatically when the GUI looses focus/gets deactivated? Didn't find anything like that, but looking out for a way to launch code when the window/GUI gets deactivated.

Cheers
AGU

shimanov
  • Members
  • 610 posts
  • Last active: Jul 18 2006 08:35 PM
  • Joined: 25 Sep 2005

launched automatically when the GUI looses focus/gets deactivated


Try OnMessage with WM_ACTIVATE.

The WM_ACTIVATE message is sent to both the window being activated and the window being deactivated.



AGU
  • Guests
  • Last active:
  • Joined: --
Thx shimanov. :mrgreen:

I'll try to script s.th with your HandleMessage function known from the GuiUrl script. :)

Anything about z-order? I'm looking for a workaround so that the green AHK button must not be "alwaysontop" to cover the other two guis. Or is there maybe even a completely different approach to realize the same goal?

Merry X-Mas
AGU

corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004
I was having a bit of fun playing with the code earlier. Feel free to use any of the following if it's of any use :) . Played with the z-order a bit, removed AlwaysOnTop, added the ability to move the GUI by dragging by the circle, ... The result seems almost usable but I seem to have introduced an intermittent bug in the extend/retract code somewhere that causes the extension to align out of sync sometimes... Here's the code I was playing with:
; #NoTrayIcon 
DetectHiddenWindows On 
SetBatchLines -1 
  
  ScriptName = X-Gui 
  win1Width := 250
  winstep := 100
  Gui1XPos  := 505 

  CustomColor = 0000FF 
  SliderStatus = 0 
      
  ; ##### Left Slider ########################################################## 
  Gui, 1:Margin, 0, 0 
  Gui, 1:Color, %CustomColor% 
  
  Gui, 1:Add, Picture, vGuiFade gGuiFade x8 ym+120 w20 h20, %A_ScriptDir%\images\ico_1.bmp 
  Gui, 1:Add, Picture, xp-5 ym, %A_ScriptDir%\images\slider.bmp 
  Gui, 1:Add, Picture, x8 ym+120 w20 h20, %A_ScriptDir%\images\ico_1.bmp 
  
  Gui, 1:Add, Edit, x120 y20 w100 
  Gui, 1:Add, Button, xp+110 yp+3 h16 w16 
  Gui, 1:Add, GroupBox, x120 yp+20 h30 w126 
  Gui, 1:Add, Checkbox, xp+8 yp+12 w13 h13 
  Gui, 1:Add, Checkbox, xp+48 yp w13 h13 
  Gui, 1:Add, Checkbox, xp+48 yp w13 h13 
  Gui, 1:Add, Text, x120 yp+24, This is a Test. 
  Gui, 1:Show, w%win1Width% x%Gui1XPos% Hide, %ScriptName% 
  
  WinSet, TransColor, %CustomColor% 255, %Scriptname% 
  Gui, 1: -Caption 
  
  GuiControl, -BackgroundFFFFFF, Static4 
  
  ; ##### Right Menu ########################################################### 
  Gui, 2:+Owner1 
  Gui, 2:Margin, 0, 0 
  Gui, 2:Color, %CustomColor% 
    
  Gui, 2:Add, Picture, xm ym, %A_ScriptDir%\images\menu.bmp 
  Gui, 2:Add, Picture, gGuiMinimize x73 y30, %A_ScriptDir%\images\ico_2.bmp 
  Gui, 2:Add, Picture, gGuiClose x73 y55, %A_ScriptDir%\images\ico_3.bmp 
  Gui, 2:Show, Hide, RightMenu 
  
  WinSet, TransColor, %CustomColor% 255, RightMenu 
  Gui, 2: -Caption 
  
  ; ##### Green AHK Button ##################################################### 
  Gui, 3:+Owner2 
  Gui, 3:Margin, 0, 0 
  Gui, 3: Color, %CustomColor%
  
  Gui, 3:Add, Picture,, %A_ScriptDir%\images\button.bmp 
  Gui, 3:Show, x535 Hide, AHKButton 
  
  WinSet, TransColor, %CustomColor% 255, AHKButton 
  Gui, 3: -Caption 
  
  ; ##### Finally show all gui ################################################# 
  Gui, 1:Show, w%win1Width% x%Gui1XPos%, %ScriptName% 
  Gui, 2:Show, x783, RightMenu 
  Gui, 3:Show, x535, AHKButton

  win1hwnd := WinExist(ScriptName)
  win2hwnd := WinExist("RightMenu")
  win3hwnd := WinExist("AHKButton")
  OnMessage(0x46, "WM_WINDOWPOSCHANGING") 
  OnMessage(0x47, "WM_WINDOWPOSCHANGED")
  OnMessage(0x201, "WM_LBUTTONDOWN")
  OnMessage(0x202, "WM_LBUTTONUP")

Return 

GuiClose: 
  ExitApp 

WM_LBUTTONDOWN(wparam, lparam)
{
Global omposX, omposY, w1X, w3X, w1Y, w3Y, win1hwnd, win2hwnd, win3hwnd, w31X, w31Y, mv1, slactive
  Sleep, 50
  If (A_GUI = 3 AND !mv1 AND !slactive)
  {
    mv1 := True
    CoordMode, Mouse, Relative
    MouseGetPos, omposX, omposY
    WinGetPos, w1X, w1Y,,, ahk_ID %win1hwnd%
    WinGetPos, w3X, w3Y,,, ahk_ID %win3hwnd%
    w31X := w3X - w1X
    w31Y := w3Y - w1Y
    WinSet, Transparent, 2, ahk_ID %win2hwnd%
    WinSet, Transparent, 2, ahk_ID %win1hwnd%
    SetTimer, movewin1, 150
  }
  else
  {
  }
Return
}

WM_LBUTTONUP(wparam, lparam)
{
Global omposX, omposY, w1X, w31X, w3X, w1Y, w31Y, w3Y, win1hwnd, win2hwnd, win3hwnd, mv1, CustomColor
If (A_GUI = 3 AND !slactive AND mv1)
  {
    SetTimer, movewin1, Off
    WinGetPos, w3X, w3Y,,, ahk_ID %win3hwnd%
    WinMove, ahk_ID %win2hwnd%,, (w3X + 248), (w3Y + 107)
    WinMove, ahk_ID %win1hwnd%,, (w3X - w31X), (w3Y - w31Y)
    WinSet, TransColor, %CustomColor%, ahk_ID %win2hwnd%
    WinSet, TransColor, %CustomColor%, ahk_ID %win1hwnd%
    mv1=
  }
Return
}

WM_WINDOWPOSCHANGING(wParam, lParam)
{
  if (lparam = 8909000 AND A_GUI <> 1 AND !slactive)
  {
    If A_GUI = 3
      Gui, 3:Show
    Else If A_GUI = 2 
      Gui, 2:Show
  }
Return
}

WM_WINDOWPOSCHANGED(wParam, lParam)
{
  if (lparam = 8910432 AND A_GUI = 1 AND !slactive)
  {
    Gui, 3:Show, Hide
    Gui, 2:Show, Hide
  }
Return
}

movewin1:
CoordMode, Mouse, Screen
MouseGetPos, mposX, mposY
WinMove, ahk_ID %win3hwnd%,, (mposX-omposX), (mposY-omposY) 
Return

GuiSize:
Return 

GuiMinimize:
  Gui, 1:Show, Hide
  WinMinimize, ahk_ID %win1hwnd% 
Return 

GuiFade:
  If (!Slstat AND !slactive)
  {
    slactive := True
    WinGetPos, win1XPos,,win1XWid1,, ahk_ID %win1hwnd%
    WinGetPos, win3XPos,,,, ahk_ID %win3hwnd%
    win1widthRem := win1width - (win1width / winstep)
        Loop, % (win1width / winstep)
    {
      WinMove, ahk_ID %win1hwnd%,, (win1XPos - (A_Index * winstep)),, (win1XWid1 + (A_Index * winstep))
    }
    If win1widthRem
      WinMove, ahk_ID %win1hwnd%,, win1XPos - win1widthRem,, (win1XWid1 + win1widthRem)
    Slstat := True
    slactive=
  }
  Else If (Slstat AND !slactive)
  {
    WinGetPos, win3XPos,,,, ahk_ID %win3hwnd%
    WinSet, Transparent, 2, ahk_ID %win1hwnd%
    WinMove, ahk_ID %win1hwnd%,, (win3XPos - 30),, (200)
    WinSet, TransColor, %CustomColor%, ahk_ID %win1hwnd%
    slactive=
    slstat=
  }
Return 


^#q:: 
  ExitApp 


Edit:
- added color for Gui3 (Thanks Thalon)
- added fix for slider losing focus and misalignment

@ moderator: Thanks for fixing this post :)

Thalon
  • Members
  • 641 posts
  • Last active: Jan 02 2017 12:17 PM
  • Joined: 12 Jul 2005
I have added
Gui, 3: Color, %CustomColor%
because otherwise I see the gray background a window, which looks a bit ugly.
The flickering on expanding GUI increased very much and after pressing the little button on the right side of the edit-control in the expanding GUI (or any of the three checkboxes) these GUI moves behind the main-GUI and I see 2 big edges at the right side ^^

But the Z-Order handling is really great and I think I will spend some time at sunday to read the code (do not have time before because of christmas) and maybe I find also my little part to improve the script :)

Thalon

AGermanUser
  • Members
  • 82 posts
  • Last active: Apr 07 2010 06:06 PM
  • Joined: 12 Feb 2005
@corrupt

Wow, fantastic job. I'm really impressed. Now I must study the script to find out how all this OnMessage commands work together. :)

I hope I will find out where these big integer values for lparam come from. ;)

@Thalon
Thx for you code fix. :mrgreen:

Cheers
AGU

corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004
@Thalon

I added a fix for the expanding and alignment to the code I posted (a few posts above). I haven't had much time available to test it out yet though... Thanks for the description :) . It helped to find the bug faster.

@AGU

Thanks. I couldn't resist after trying your code and seeing the great looking GUI ;) . The big integer values for lparam came from playing around with OnMessage. I had set up a few messages to listen for, then added a few Msgbox lines in the code to display the current wparam and lparam values. I had noticed that if the GUI was minimized by clicking on the taskbar item that the result did not look the same as when clicking the button in the GUI so I added the WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED functions to try to smooth it out a bit.

shimanov
  • Members
  • 610 posts
  • Last active: Jul 18 2006 08:35 PM
  • Joined: 25 Sep 2005

I have added

Gui, 3: Color, %CustomColor%
because otherwise I see the gray background a window, which looks a bit ugly.


What version of Windows are you using? With Windows XP SP2, including this line causes the background to leak through in several vertical lines across the green button; and removing it, produces an image equivalent to that posted at the top of AGU's first post. Maybe the discrepancy is OS dependant?

AGermanUser
  • Members
  • 82 posts
  • Last active: Apr 07 2010 06:06 PM
  • Joined: 12 Feb 2005
@corrupt

Thx again for fixing the Slider/gui1 problem. And of course thx for working out the details with these lparam values. I'm startin to understand your code, I hope. :mrgreen:

One thing. You're using
WinSet, Transparent, 2, ahk_ID %win2hwnd%
in several places of your code. I'm especially meaning the value 2 for the transparency. When I move the Gui, I can see gui1 and gui2 a little bit in the background sometimes.
Why don't you just use
WinSet, Transparent, 0, ahk_ID %win2hwnd%
Is there a special reason for the value 2?

By the way. Updated the first posting with your code and made some slight modifications. Apart from the transparency thing above, I just changed some names, added some more comments, and fixed the layout (continuation section for these long Global definitions in the functions)

The expanding flickering problem is still there. I realized it gets worse with every expanding step you make. Therefore I minimized the steps for expanding the gui1 to two steps some times ago.

1 step: Half GuiWidth
2 step: Full GuiWidth

When I see right, you have added some more steps. Just like I did it before reducing the steps to two.

@shimanov
Thx for posting this behaviour. I would be glad if someone else with WinXP could test this and report back.
Under my W2k it doesn't make a difference if I add this line of code or omit it.

Thalon
  • Members
  • 641 posts
  • Last active: Jan 02 2017 12:17 PM
  • Joined: 12 Jul 2005
I use also XP with SP2, and with the last version of the script (in both, from AGU or Corrupt) it doesn't matter any more if the line is in or not :lol:

In previous version (like I have stored at the PC in work) there was a gray "L", but in reverse direction...

I think I will play around tomorrow or so...

Thalon