WildByDesign Posted March 7 Posted March 7 (edited) GUIDarkTheme 0.9.4: Added dark mode checkbox support (TreeView/ListView) for Windows 10 Base64 is used for Windows 10 DrawThemeBackground is used for Windows 11 TO DO: (before version 1.0) Still need to add debugging code from @argumentum Still need to standardize variable names Still need to run Tidy Still experimenting with status bar subclassing There is still a lot to do before version 1.0. My ideas keep flowing too which makes it difficult to slow down and finish the TO DO list. @bladem2003 Can you please test this on your Windows 10 machine to ensure that the dark mode checkboxes are working in the TreeView and ListView? GUIDarkTheme-0.9.4.7z Edited March 7 by WildByDesign bladem2003 1
argumentum Posted March 7 Posted March 7 (edited) ..after 0.9.x.x, you can have 0.10.x.x . There is no hurry. Edit: looks good Edited March 7 by argumentum WildByDesign 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting.
WildByDesign Posted March 7 Posted March 7 (edited) GUIDarkTheme 0.9.5: Base64 checkbox resources are loaded directly from memory now (Windows 10) In most of my own AutoIt GUI projects, I have the ability to dynamically switch between light mode and dark mode. I am thinking about adding a function to automatically switch between light mode and dark mode without having to restart the GUI. That means that I will likely be better off subclassing the menubar in light mode as well so that I really only have to change the color of the brushes used in all of the subclassing. This is a longer term goal, but very much possible. GUIDarkTheme-0.9.5.7z Edited March 7 by WildByDesign argumentum 1
argumentum Posted March 7 Posted March 7 (edited) Lets look at "Func _CheckedPNG($bSaveBinary = False, $sSavePath = @ScriptDir, $iSize = 16)" $iSize will always be needed, so that will go as the 1st parameter. $bSaveBinary is false without a $sSavePath so, if "$sSavePath = Default" there is no saving by default. If you do pass a parameter then is because you want to use it, to save the resource to disk. ;~ Func _CheckedPNG($bSaveBinary = False, $sSavePath = @ScriptDir, $iSize = 16) Func _CheckedPNG($iSize = 16, $sSavePath = Default) Local $Base64String, $iExt = (IsKeyword($sSavePath) ? 0 : 2) ; "BitAND(@extended, 2)" meant that the user wanted to save to disk Switch $iSize Case 13 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxcYOepp4t4AAADpSURBVCjPY2RgYGAwSG9o0IrMz2fjFRBgwAF+ff7w4c7mBQtO9RYWMpuVTJigm1BezszOwcGABzCzc3CI6lpYMDAwMDBGHXj/Hp8N2GxkIkUDAwMDAxuvgAATMQrvbF6Awieo6Uh9AgMDIyNuTY8ObMDQIGHqyKDiE49b06/PHxiONCTi1cDAwMDAgsxR8U1gYGBgYFjjq8hgkN6AVQMDAwMDY8LZ//+xBCsDGy/uQGX69fnDByzBijeemJnZODgkTBwciI2nm2tnzGB+cfbgQTZeAQF+BQ0NfEnp1+cPHy4v6Og4O6WyEgBYG0pIgbNupgAAAABJRU5ErkJggg==' Case 20 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxcZJn563moAAAEdSURBVDjLY2RgYFDilVZUs66f3yqkpq/GxivAw0AieHRg46FTvQXtX58/vMXII6Vg5bfs/A42XgFeBgrAr88fPm2KNPRktmlYMFNI3UCbgULAzM7BLqRuoMGYcPb/fwYqgV+fP3xkYqAiYOMV4KeqgQwMDAyDw8B3ty4wbIo0xCrHQo5h+4oCGZz61lPuQmTDhNQMiDdwU6Qhw7tbF0g2DKeBNo3zGfYVB8INJdYwBgYGBpwJ+92tCwz7igMZDNLqGS7MbCTKMLwGkuoyogwcHAn71+cPH6hq4LtbFy5Qy7BHBzZsYOSRUlDwW3b+PBuvgACFRdeHTZGGhsy/Pn/4cH/XypU8UgoK/AoaGuQY9PryiRO7cz09vzx/8AAAGLWDCCvF1IEAAAAASUVORK5CYII=' Case 26 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxcaCxCI0dwAAAF1SURBVEjH7da9a8JAGAbwJ1pSh1iyFGqmG5wKHaQgDh10c7FTF7e4uCr4D+heyKpOuhQculgH6WICTgU1q0Uwk41Dy0EChVvs0JamBa3mQyj0mY/8eLjcy8vhI4JEyGm+VIrnZJmPiiI8xF4YhjlSVb1Rq9lPhgEAHADEc7KcrCiKV+BnmEXpw3W5POu125wgEXJ5M5n4jTixbj6RCCcrinJ8lkohoIQPIxEA4K5687kQIwQBhlmUcvJotcIeEsKe8g+tu2z0i2kMq4W1Zw78QTJgNsVFrRVMIyeSbQ4gxIj/0C7IRkhvVNHNJ8As6hnZCMVz8tcHHZgbZCMkSATZ5uAb5hYBgF9HkL0w0C9mwEffh7sbZKufwdnMLbJVI2czcHCF7PRgBYn8kVnHLEqDRuyFYYRmd61W0JA5UtX9LSfMovT1ebk8OU+nPxcJv9ctc6xpYQB4edT1+X2nw0dFkT8SRa/tmEXp9LZeH1YLBXOsaQDwBivy2deCjE70AAAAAElFTkSuQmCC' Case 32 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxccGixiVqgAAAGaSURBVFjD7dcxaMJQFIXhk6Skdgh9tAiZSqcigmARxKFD7OTYVad2EbcguDdduolxjEu3bNLSyUy+oSAIgUyBdJKCNJMG7ORipxSxFKOGBIp3CiHh/wgXwmOwNGJOktIVWRZzksQLhCDEmc88zzUptfV22zUp9e8z/kW+oarpsiwjgrF1VR0263UA4KKOA0AyUyjwAiHjgWEwYk6SSp1+HzFMr1oscvlGq3V8nkrFAeAFQpgKnU7DXrhNFpONK+5/ARYxzx7wfwG2rmLYrMcDsDQFw2YdE8eKHmBpCqzOA04usrhuPkcLWI6XOn3wAokOsE08EOC1fLl2mbaNBwKcFW9g6yrelLvQ4wBwsO6BbPX+JwQAV8pTaPFAgL8QYcQDA1YRE8fC5N3aOb4RYBURRhwAmFtzsdj0pQ/6AjEn7RzfGrD/G4YKmM88L674fOZ57PIxKepxTUpZW2+34wLYuqpyX5+jES8QkswUClHHna6mcQAwHhhGlIhfh1Mf4ZqU8gIhR6eiyB0mEmEv3HjQ6w0eazWnq2n+/W+c6MNyCJEgYgAAAABJRU5ErkJggg==' Case 40 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxccOPkCF0wAAAHRSURBVFjD7dg9a8JAGAfwRwPBgkKwFNRB4mKhUAgIxTHZHFrM0KVbXdKtDv0Ams3NrPoBBMEh0kVdVCh0Em4SdPEIVDtJwAwiFDtZ0mCLUaNXmv8UuOF+PPeS4/GAJaEEz0f5dDoqiKI/zLJwgEyHCE0HCKGSLBsTjM1jntUHHWAY7iGfv7jLZuGI6VcUBZVleTHT9S8gHWCYVLndDsY5DgjIdIhQQxKExUzXKQCAxGOhEOVFEQjJyWkoRNE+39trs+nxR1j29nk0AgLTkASBunoqFoPnZCytNYuZrntJxQEARHlR9Nz3lksgOF4gPC7QBbpAkoDGGEPtOga1mxh5QGOMoSEJYEwweRU04/wRFlLlNjnAdTh/mCUDuCvOUeA+cLaAq9O3ySbfF852BTc5ifvE2QKuJvoNuW+cLaB5wnVIJ3C2l/gnpFM4AICtXtRWECzBEdzW14y1kk7hdroHzSCncFsvsfsedIH/CmhtGJKU6QAhr9ZWVWKBQ4S8WqdeJxWISrJMGROM6QDDnF0mkyTh+hVFGbWq1b/RAv5YzOejVrVK0T7fsSvZryjKSz6T+dZEt/xjWU7K5YJxjjtUc9MYY6x1VFXrqOp7r9s1j30CYTArpz88OJ4AAAAASUVORK5CYII=' Case 52 $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxcdEaKrvmEAAAKqSURBVGje7dq/b9pAFAfwh6kIg1FQJseDdQOKGIkcdWI4MjUDwWsnPFGWSo3yB4QsmdJmbhbK0ipTnKZD1ErNZYoUQTErQuqFARypRZawFIklXeqKumkbwPiX/N18guGjOz/7WS8CfwknYizgQoFbw5hdRiiWSCbBxYyGum70KdXqhHROa7VBW1Xv+13EusDyCGUr1SonYgweTpcoytX+1pbRp3R8PTp+kcrL8vrL4+NFlE6Dx7OI0ulUXpZvv2naoN1q/QFK5WU5W6lWowvxOPgk0YV4XMhJktGj1ERFzGO2+bbZdPs+meX+ev90ddXoU8oAADzePjjwKwYAIJZIJrO71SoAQGRpJZPZfNdsQgByVsrlmFS+WISARMCFAsOtebs8TxJOxJhhlxEKCojlEWL8XAzuKw4MBCwhKASFoBAUghzNoK3C520JukSZ6v+PvIY5K+VgNNRh0G6BgCX/7tA45mfD6d8jZ8VknlUgU9rxJ8hOjOsguzGuguaBcQ00L8zUoKv9F/BGjID6uuIpzNQg86GnHu5OhJo3ZmrQ+isFYonkRCgnMFODllYy8OTw/MEopzAzFYWHopzEzFzl/odyGgMAEJEbd3e2l+HSDgg5yXGMbaD7ULFE0nGMrQ9W6/FzA2P7m4IV5TTG1iM3HqNHwehT4ETs+GvVXDpWlkfA8ij8phCCQpAfQaOhrgcFMxrqOmOdxPBzjB6ljFYnJCggrUEI0yUnJ0EBdU5rNUZrEKI1/L9L3XNFGbRVNXCjMVFz4fb7zY2AJcmPoMu9cln7cnEBMDaN' $Base64String &= 'NWirqtG/vuZEjP0ykTUa6vrlXrnc+VCrmWtRS5Omfv14dMTyCHl9Zk6rE/Lp+caGuTO/2od/9DaZVL5Y5ESMWd4jI5o9SrUGIV2iKFrjd4iZH07DnAm7lTVAAAAAAElFTkSuQmCC' Case Default ; 16 If $iSize <> 16 Then $iExt = BitOR($iExt, 1) ; to let them know that the resource was not found, but you're not going to brake the GUI $Base64String &= 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+oDAxcZFLatj+oAAAEPSURBVDjLY2RgYGDQiioo0IrKz+eRVFBgIAK8u3XhwrWlEybc2bJwIaOKb0KCTcP8+QxkgFO9hYWMfsvPnxdSMzAgx4Avzx48YEw4+/8/AwWAiYFCQJIBdzYvYPj1+QN5BlyY2cBwbdlEBjZeAdINuDCzgeHRgY0MHrP24/fCl2cPGNb4KjJ8ef4Aq2Z02zEM4JFSYDBIq2fYkebI8OX5A4KaGRgYGFjQBVR8ExgYGBgYNkUaMvBIKuDVzMDAwIAzHby7eYGBR0oBr2asLoABIXXiEifTl+cPHpCbiN7dvHCBmYGBkVHaysODHAPOTq6oYH59+cSJL88fPuSRVFDgFJGQIDYTXZjZ0HBz3cyZABhkZ7hwets3AAAAAElFTkSuQmCC' EndSwitch Local $bString = _WinAPI_Base64Decode($Base64String) If @error Then Return SetError(1, $iExt, 0) $bString = Binary($bString) If Not $iExt Then Local Const $hFile = FileOpen($sSavePath & "\checked.png", $FO_BINARY + $FO_OVERWRITE) If @error Then Return SetError(2, $iExt, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return SetError(0, $iExt, $bString) EndFunc ;==>_CheckedPNG and that approach will be less coding. "_CheckedPNG(False, @ScriptDir, $iSize)" will turn into "_CheckedPNG($iSize)" because defaults are there for how is meant, and the rest are options. Also, give them a default PNG even if they messed up, to not just brake the GUI because of a miscalculation on the size 🤔 The @extended also tells a story: BitAND(@extended, 1) is that the size was wrong. BitAND(@extended, 2) is that it was a save to disk. Since the default was not "save to disk", the fact of "If @extended then" is good enough. Do you like the idea Edited March 7 by argumentum oops WildByDesign 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting.
bladem2003 Posted March 7 Posted March 7 15 hours ago, WildByDesign said: @bladem2003 Can you please test this on your Windows 10 machine to ensure that the dark mode checkboxes are working in the TreeView and ListView? Yes, it works perfectly. Thank you. WildByDesign 1
WildByDesign Posted March 7 Posted March 7 1 hour ago, argumentum said: Do you like the idea Absolutely, it’s a smart idea. As a matter of fact, if you want, you can completely remove anything to do with saving because we don’t need that functionality at all. It just came by default from UEZ’s Base64 image encoding script. 1 hour ago, argumentum said: Also, give them a default PNG even if they messed up, to not just brake the GUI because of a miscalculation on the size 🤔 I don’t think we need that since the ImageList sizes for the checkboxes can’t fail now like they did before with the GetDpiForWindow failing. It follows the system values provided now. Also, if we served the wrong sized PNG it would not get scaled and would either show too small or cut off.
argumentum Posted March 7 Posted March 7 2 hours ago, WildByDesign said: ... can’t fail now.. Also, if we served the wrong sized PNG it would not get scaled and would either show too small or cut off. Is better to see it crappy in case of the "impossible failure" than not serve anything. WildByDesign 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting.
argumentum Posted March 7 Posted March 7 2 hours ago, WildByDesign said: if you want, you can... I don't want anything. Am Zen. But is good for you to understand the trend of thought when coding. That was my aim when I posted "Lets look at ..." WildByDesign 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting.
WildByDesign Posted March 7 Posted March 7 11 minutes ago, argumentum said: Is better to see it crappy in case of the "impossible failure" than not serve anything. That is a solid and fair point. I will update the UDF with your code for the next release.
WildByDesign Posted March 8 Posted March 8 (edited) 8 hours ago, argumentum said: and that approach will be less coding. "_CheckedPNG(False, @ScriptDir, $iSize)" will turn into "_CheckedPNG($iSize)" because defaults are there for how is meant, and the rest are options. I had to back out of this change because it breaks the GUI on my machine. 100% scaling uses 13px for checkbox. My machine is 125% scaling which uses 16px for checkbox. You got rid of Case 16 which is what a 125% scaled display goes through and you added Case Default ; 16. But the problem is that it fails there. You have If $iSize <> 16 Then but it does not even get there. Case Default never gets hit. EDIT: For what it's worth, it did work when I switched my display to 100% and 150%. But my main daily scaling preference of 125% fails. EDIT2: Maybe we need a Case Else, would that do? Edited March 8 by WildByDesign
argumentum Posted March 8 Posted March 8 (edited) ..the missing 16 is the "case else". It should not brake anything. Edit: my bad: " Case Default ; 16" should be case else Edited March 8 by argumentum WildByDesign 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting.
WildByDesign Posted March 8 Posted March 8 GUIDarkTheme 0.9.6: Menubar font size is automatically set based on GUI font size Base64 function improvements GUIDarkTheme-0.9.6.7z
WildByDesign Posted March 10 Posted March 10 GUIDarkTheme 0.9.7: Placed all window messages from GUIDarkMenu into single window procedure as was suggested to me This avoids overwriting users' own potential GUIRegisterMsg functions Fixed issue with ModernDark (DarkMode_DarkTheme) not working I have spent some time trying to place all window messages from GUIDarkTheme into a window procedure (similar to GUIDarkMenu) but it has not been successful. Specifically, the WM_CTLCOLOR* related messages are leaving me with some edit boxes that have white backgrounds. I haven't been able to figure this out. So I am still using GUIRegisterMsg in GUIDarkTheme. GUIDarkMenu is completely in it's own window procedure though. GUIDarkTheme-0.9.7.7z
WildByDesign Posted March 10 Posted March 10 (edited) 2 hours ago, bladem2003 said: Is there a way to get this in dark mode? It should be possible. It shows in dark mode for mine, but it's Windows 11. Are the UpDown buttons showing in dark mode above the green label for you? EDIT: I just checked the Win10 theme resources and it looks like there is no DarkMode_Explorer::Spin resource available. I tried removing the theme and coloring the control but that does not seem to work for msctls_updown32 class. It would likely have to be ownerdrawn or custom draw. Edited March 10 by WildByDesign
bladem2003 Posted March 10 Posted March 10 1 hour ago, WildByDesign said: It should be possible. It shows in dark mode for mine, but it's Windows 11. Are the UpDown buttons showing in dark mode above the green label for you? EDIT: I just checked the Win10 theme resources and it looks like there is no DarkMode_Explorer::Spin resource available. I tried removing the theme and coloring the control but that does not seem to work for msctls_updown32 class. It would likely have to be ownerdrawn or custom draw. Τhe UpDown buttons are in light mode. WildByDesign 1
WildByDesign Posted March 11 Posted March 11 19 hours ago, bladem2003 said: Τhe UpDown buttons are in light mode. I looked into this some more. UpDown controls are not a candidate for CUSTOMDRAW or OWNERDRAW. But it is possible to subclass UpDown controls. There are some examples in Notepad++ and darkmodelib but these are all C++. I don't know C++ very well but I also don't understand subclassing in AutoIt that much either. So it is possible, but we would need someone with more skills to do it. And it would only be needed on Windows 10 because Windows 11 has the resources available.
WildByDesign Posted March 14 Posted March 14 Dark mode statusbar is finally done and almost ready to release. It will automatically resize the parts and all. The SP_GRIPPER (sizegrip) shows for windows that can resize. It uses a combination of @pixelsearch's script in the Resizable status bar without SBARS_SIZEGRIP thread and my method for the SP_GRIPPER drawing. I just have to make an example for the statusbar because having a statusbar with resize on the original SampleControls.au3 is not wonderful since all of those controls are not intended to resize. By the way, @pixelsearch, I was hung up on a problem for almost a full week that I just could not figure out. I went over things many times and tried everything. I finally realized that I missed one small (yet crucial) detail. You had used $WS_CLIPSIBLINGS for the creation of your statusbar. Since the statusbar would already be created in this use case, the Z-order is wrong and it is also missing the WS_CLIPSIBLINGS style. So here is how I finally resolved both: ; Fix Z-order of Sizebox (needed for cursor) Local $aPos = WinGetPos($g_hSizebox) _WinAPI_SetWindowPos($g_hSizebox, $HWND_TOP, $aPos[0], $aPos[1], $aPos[2], $aPos[3], BitOr($SWP_NOMOVE, $SWP_NOREDRAW, $SWP_NOSIZE)) ; Add WS_CLIPSIBLINGS to statusbar (needed for cursor) _WinAPI_SetWindowLong($g_hStatus, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($g_hStatus, $GWL_STYLE), $WS_CLIPSIBLINGS)) pixelsearch 1
pixelsearch Posted March 14 Posted March 14 (edited) 2 hours ago, WildByDesign said: So here is how I finally resolved both Well done. I think the 1st one could be scripted in a simpler way, no need of $aPos : ; Fix Z-order of Sizebox (needed for cursor) _WinAPI_SetWindowPos($g_hSizebox, $HWND_TOP, 0, 0, 0, 0, BitOr($SWP_NOMOVE, $SWP_NOREDRAW, $SWP_NOSIZE)) If not mistaken, the flags parameter always takes precedence over the coordinates in _WinAPI_SetWindowPos . As soon as you indicate $SWP_NOMOVE, then both parameters $iX & $iY can contain any value. Same for $SWP_NOSIZE and parameters $iCX & $iCY To make it complete, in case you use in another script the flag $SWP_NOZORDER, then the 2nd parameter $hAfter becomes irrelevant : you can indicate a 2nd parameter of 0 ($HWND_TOP) or $HWND_BOTTOM for the same result, as the flag $SWP_NOZORDER takes precedence over the $hAfter parameter. Have a great week-end Edited March 14 by pixelsearch rephrased WildByDesign 1 "I think you are searching a bug where there is no bug... don't listen to bad advice."
WildByDesign Posted March 14 Posted March 14 GUIDarkTheme 0.9.8: Statusbar now has proper sizebox grip when GUI is resizable Statusbar parts automatically resize based on the initial ratio from GUI startup Added 2 examples for statusbar, both with a button to toggle borders on/off 9 hours ago, pixelsearch said: I think the 1st one could be scripted in a simpler way, no need of $aPos : ; Fix Z-order of Sizebox (needed for cursor) _WinAPI_SetWindowPos($g_hSizebox, $HWND_TOP, 0, 0, 0, 0, BitOr($SWP_NOMOVE, $SWP_NOREDRAW, $SWP_NOSIZE)) If not mistaken, the flags parameter always takes precedence over the coordinates in _WinAPI_SetWindowPos . As soon as you indicate $SWP_NOMOVE, then both parameters $iX & $iY can contain any value. Same for $SWP_NOSIZE and parameters $iCX & $iCY You were 100% right. I made this change and it works perfectly. GUIDarkTheme-0.9.8.7z argumentum and ioa747 2
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