diff --git a/Lib/DefaultJSON.ahk b/Lib/DefaultJSON.ahk index c89f465..19da04b 100644 --- a/Lib/DefaultJSON.ahk +++ b/Lib/DefaultJSON.ahk @@ -47,7 +47,9 @@ "HideThumbnailsOnLostFocus": false, "ThumbnailOpacity": 80, "ShowThumbnailsAlwaysOnTop": true, - "ShowAllColoredBorders":0 + "ShowAllColoredBorders":0, + "InactiveClientBorderthickness": 2, + "InactiveClientBorderColor": "#8A8A8A" }, "Hotkeys":[ {"Example Name1":"1"}, @@ -64,7 +66,8 @@ "cColors": { "CharNames": ["Example Char"], "TextColor": ["FFFFFF"], - "Bordercolor":["FFFFFF"] + "Bordercolor":["FFFFFF"], + "IABordercolor":["FFFFFF"] } } } diff --git a/Main.ahk b/Main.ahk index 13bcc23..e012db9 100644 --- a/Main.ahk +++ b/Main.ahk @@ -24,12 +24,9 @@ A_MaxHotKeysPerInterval := 10000 /* TODO ######################### -! Add Show All Thumbnail Borders and make inactive Client Borders customizable - - */ -;@Ahk2Exe-Let U_version = 1.0.0. +;@Ahk2Exe-Let U_version = 1.0.1. ;@Ahk2Exe-SetVersion %U_version% ;@Ahk2Exe-SetFileVersion %U_version% ;@Ahk2Exe-SetCopyright gonzo83 @@ -47,7 +44,9 @@ TODO ######################### if !(A_IsCompiled) TraySetIcon("icon.ico",,true) +; Catch all unhandled Errors to prevent the Script from stopping OnError(Error_Handler) + Call := Main_Class() diff --git a/src/Main_Class.ahk b/src/Main_Class.ahk index 2c35710..3780769 100644 --- a/src/Main_Class.ahk +++ b/src/Main_Class.ahk @@ -47,8 +47,8 @@ Class Main_Class extends ThumbWindow { This.default_JSON := JSON.Load(default_JSON) This.TrayMenu() - This.MinimizeDelay := This.Minimizeclients_Delay - + This.MinimizeDelay := This.Minimizeclients_Delay + ;Hotkey to trigger by the script to get permissions t bring a Window in foreground ;Register all posible modifire combinations prefixArr := ["","^","!", "#", "+", "+^", "+#", "+!", "^#", "^!","#!", "^+!", "^+#", "^#!", "+!#","^+#!"] @@ -143,7 +143,8 @@ Class Main_Class extends ThumbWindow { ; sets the Border to the active window thumbnail else if (Ahwnd != This.BorderActive) { ;Shows the Thumbnail on top of other thumbnails - WinSetAlwaysOnTop(1,This.ThumbWindows.%Ahwnd%["Window"].Hwnd ) + if (This.ShowThumbnailsAlwaysOnTop) + WinSetAlwaysOnTop(1,This.ThumbWindows.%Ahwnd%["Window"].Hwnd ) This.ShowActiveBorder(Ahwnd) This.UpdateThumb_AfterActivation(, Ahwnd) diff --git a/src/Propertys.ahk b/src/Propertys.ahk index aa072f8..61d1afc 100644 --- a/src/Propertys.ahk +++ b/src/Propertys.ahk @@ -149,7 +149,7 @@ class Propertys extends TrayMenu { ClientHighligtBorderthickness { get => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["ClientHighligtBorderthickness"] - set => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["ClientHighligtBorderthickness"] := Trim(value, "`n ") + set => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["ClientHighligtBorderthickness"] := (Trim(value, "`n ") <= 0 ? 1 : Trim(value, "`n ")) } ClientHighligtColor { @@ -180,9 +180,25 @@ class Propertys extends TrayMenu { ThumbnailTextMargins[var] { get => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["ThumbnailTextMargins"][var] set => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["ThumbnailTextMargins"][var] := Trim(value, "`n ") - - } + InactiveClientBorderthickness { + get { + if ( !This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"].Has("InactiveClientBorderthickness") ) + This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderthickness"] := "2" + return This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderthickness"] + } + set => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderthickness"] := (Trim(value, "`n ") <= 0 ? 1 : Trim(value, "`n ")) + } + InactiveClientBorderColor { + get { + if ( !This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"].Has("InactiveClientBorderColor") ) + This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderColor"] := "#8A8A8A" + + return convertToHex(This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderColor"]) + } + set => This._JSON["_Profiles"][This.LastUsedProfile]["Thumbnail Settings"]["InactiveClientBorderColor"] := convertToHex(Trim(value, "`n ")) + } + ;######################## ;## Profile ClientSettings @@ -190,7 +206,7 @@ class Propertys extends TrayMenu { CustomColorsGet[CName?] { get { - name := "", nameIndex := 0, ctext := "", cBorder := "" + name := "", nameIndex := 0, ctext := "", cBorder := "", cIABorder := "" for index, names in This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["CharNames"] { if (names = CName) { nameIndex := index @@ -207,8 +223,10 @@ class Propertys extends TrayMenu { } if (This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["TextColor"].Length >= nameIndex) ctext := This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["TextColor"][nameIndex] + if (This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"].Length >= nameIndex) + cIABorder := This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"][nameIndex] } - return Map("Char", name, "Border", cBorder, "Text", ctext) + return Map("Char", name, "Border", cBorder, "Text", ctext, "IABorder", cIABorder) } } @@ -216,6 +234,7 @@ class Propertys extends TrayMenu { IndexcChars => This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["CharNames"].Length IndexcBorder => This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["Bordercolor"].Length IndexcText => This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["TextColor"].Length + IndexcIABorders => This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"].Length CustomColors_AllCharNames { get { @@ -253,8 +272,8 @@ class Propertys extends TrayMenu { tempvar := [] ListChars := StrSplit(value, "`n") for k, v in ListChars { - chars := RegExReplace(convertToHex(Trim(v, "`n ")), ".*:\s*", "") - tempvar.Push(chars) + chars := RegExReplace(Trim(v, "`n "), ".*:\s*", "") + tempvar.Push(convertToHex(chars)) } This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["Bordercolor"] := tempvar } @@ -274,13 +293,39 @@ class Propertys extends TrayMenu { tempvar := [] ListChars := StrSplit(value, "`n") for k, v in ListChars { - chars := RegExReplace(convertToHex(Trim(v, "`n ")), ".*:\s*", "") - tempvar.Push(chars) + chars := RegExReplace(Trim(v, "`n "), ".*:\s*", "") + tempvar.Push(convertToHex(chars)) } This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["TextColor"] := tempvar } } + CustomColors_IABorder_Colors { + get { + names := "" + if (!This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"].Has("IABordercolor")) { + This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"] := ["FFFFFF"] + SetTimer(This.Save_Settings_Delay_Timer, -200) + } + for k, v in This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"] { + if (A_Index < This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"].Length) + names .= k ": " v "`n" + else + names .= k ": " v + } + return names + } + set { + tempvar := [] + ListChars := StrSplit(value, "`n") + for k, v in ListChars { + chars := RegExReplace(Trim(v, "`n "), ".*:\s*", "") + tempvar.Push(convertToHex(chars)) + } + This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColors"]["IABordercolor"] := tempvar + } + } + CustomColorsActive { get => This._JSON["_Profiles"][This.LastUsedProfile]["Custom Colors"]["cColorActive"] @@ -446,6 +491,7 @@ class Propertys extends TrayMenu { } This.Thumbnail_visibility := Obj SetTimer(This.Save_Settings_Delay_Timer, -200) + This.NeedRestart := 1 ;This.LV_Item := Item ; ddd := GuiCtrlObj.GetText(Item) ; ToolTip(Item ", " ddd " -, " Checked) @@ -534,7 +580,8 @@ class Propertys extends TrayMenu { FileAppend(JSON.Dump(This._JSON, , " "), "EVE-X-Preview.json") This.SelectProfile_DDL.Delete() This.SelectProfile_DDL.Add(This.Profiles_to_Array()) - This.LastUsedProfile := "Default" + ControlChooseString(Obj.value, This.SelectProfile_DDL, "EVE-X-Preview - Settings") + This.LastUsedProfile := Obj.value Return } Save_ThumbnailPossitions() { diff --git a/src/Settings_Gui.ahk b/src/Settings_Gui.ahk index 674a22b..49a7025 100644 --- a/src/Settings_Gui.ahk +++ b/src/Settings_Gui.ahk @@ -3,9 +3,6 @@ ;if settings got chnaged which require a restart to apply This.NeedRestart := 0 - - ;MsgBox(This.CustomColorsGet["Example Char"]["Char"]) - SetControlDelay(-1) This.S_Gui := Gui("+OwnDialogs +MinimizeBox -Resize -MaximizeBox -DPIScale SysMenu +MinSize500x250") This.S_Gui.Title := "EVE-X-Preview - Settings" @@ -54,7 +51,7 @@ else { for _, ob in v ob.Visible := 0 - } + } } This.S_Gui.Show("AutoSize") } @@ -91,7 +88,7 @@ v.Visible := 1 } } - } + } } else { for _, Ctrl in Controls { @@ -100,12 +97,10 @@ } } if (This.Profiles.Count = 1 && This.SelectProfile_DDL.Text = "Default") - MsgBox("you must first create a profile to change the settings") + MsgBox("you need create a profile first to change the settings") } This.S_Gui.Show("AutoSize") - - } } @@ -254,7 +249,6 @@ ;Sets all controls invisible at beginning for k, v in This.S_Gui.Controls.Profile_Settings v.Visible := 0 - } ClientSettings_Ctrl(visible?) { @@ -297,21 +291,21 @@ } } - ;TODO Needs to be implemented - Add Propertys - ; User defined colurs per Client + ; User defined colors per Client Custom_ColorsCtrl() { This.S_Gui.Controls.Profile_Settings.PsDDL["Custom Colors"] := [], CustomColors := [] - CustomColors.Push This.S_Gui.Add("GroupBox", "x20 y80 h480 w500 Section", "") + CustomColors.Push This.S_Gui.Add("GroupBox", "x20 y80 h480 w565 Section", "") - CustomColors.Push This.S_Gui.Add("Text", " xp+25 yp+140 Section ", "Custom Colors Active On/Off") - CustomColors.Push This.S_Gui.Add("Text", " x70 yp+40 ", "Character name") - CustomColors.Push This.S_Gui.Add("Text", " xp+150 yp ", "Border Color") - CustomColors.Push This.S_Gui.Add("Text", " xp+130 yp ", "Text Color") + CustomColors.Push This.S_Gui.Add("Text", " xp+25 yp+140 Section ", "Custom Colors Active - On/Off") + CustomColors.Push This.S_Gui.Add("Text", " x35 yp+40 ", "Character Name:") + CustomColors.Push This.S_Gui.Add("Text", " xp+155 yp ", "Active Border Color:") + CustomColors.Push This.S_Gui.Add("Text", " xp+135 yp ", "Text Color:") + CustomColors.Push This.S_Gui.Add("Text", " xp+125 yp ", "Inactive Border Color:") CustomColors.Push This.S_Gui.Add("CheckBox", " xs+200 ys vCcoloractive Checked" This.CustomColorsActive, " ON / Off") This.S_Gui["Ccoloractive"].OnEvent("Click", (obj, *) => Cclors_Eventhandler(obj)) - CustomColors.Push This.S_Gui.Add("Edit", " x60 yp+60 w150 h250 -Wrap vCchars", This.CustomColors_AllCharNames) + CustomColors.Push This.S_Gui.Add("Edit", " x30 yp+60 w150 h250 -Wrap vCchars", This.CustomColors_AllCharNames) This.S_Gui["Cchars"].OnEvent("Change", (obj, *) => Cclors_Eventhandler(obj)) CustomColors.Push This.S_Gui.Add("Edit", " x+10 yp w120 hp -Wrap vCBorderColor", This.CustomColors_AllBColors) @@ -320,6 +314,8 @@ CustomColors.Push This.S_Gui.Add("Edit", " x+10 yp wp hp -Wrap vCTextColor", This.CustomColors_AllTColors) This.S_Gui["CTextColor"].OnEvent("Change", (obj, *) => Cclors_Eventhandler(obj)) + CustomColors.Push This.S_Gui.Add("Edit", " x+10 yp wp hp -Wrap vIABorderColor", This.CustomColors_IABorder_Colors) + This.S_Gui["IABorderColor"].OnEvent("Change", (obj, *) => Cclors_Eventhandler(obj)) This.S_Gui.Controls.Profile_Settings.PsDDL["Custom Colors"] := CustomColors for k, v in This.S_Gui.Controls.Profile_Settings.PsDDL["Custom Colors"] @@ -356,11 +352,19 @@ } This.NeedRestart := 1 } + else if (obj.Name = "IABorderColor") { + indexOld := This.IndexcText + This.CustomColors_IABorder_Colors := obj.value + if (indexOld < This.IndexcText) { + obj.value := This.CustomColors_IABorder_Colors + ControlSend("^{End}", obj.Hwnd) + } + This.NeedRestart := 1 + } SetTimer(This.Save_Settings_Delay_Timer, -200) } } - Hotkey_GroupsCtrl() { This.S_Gui.Controls.Profile_Settings.PsDDL["Hotkey Groups"] := [], Hotkey_Groups := [] @@ -441,8 +445,6 @@ ForwardHKObj.value := This.Hotkey_Groups[ddlObj.Text]["ForwardsHotkey"], ForwardHKObj.Enabled := 1 BackwardHKObj.value := This.Hotkey_Groups[ddlObj.Text]["BackwardsHotkey"], BackwardHKObj.Enabled := 1 } - - } SaveHKGroupList(obj) { @@ -524,7 +526,7 @@ ThumbnailSettings_Ctrl() { This.S_Gui.Controls.Profile_Settings.PsDDL["Thumbnail Settings"] := [], ThumbnailSettings := [] - ThumbnailSettings.Push This.S_Gui.Add("GroupBox", "x20 y80 h530 w500 Section", "") + ThumbnailSettings.Push This.S_Gui.Add("GroupBox", "x20 y80 h580 w500 Section", "") ThumbnailSettings.Push This.S_Gui.Add("Text", "xp+15 yp+140 Section", "Show Thumbnail Text Overlay:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Thumbnail Text Color:") @@ -532,11 +534,14 @@ ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Thumbnail Text Font:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Thumbnail Text Margins:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Client Highligt Color:") - ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Client Highligt Border thickness:") + ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Client Highligt Border Thickness:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Show Client Highlight Border:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Hide Thumbnails On Lost Focus:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Thumbnail Opacity:") ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "Show Thumbnails AlwaysOnTop:") + ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15", "Show All Borders:") + ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15", "Inactive Client Border Thickness:") + ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15", "Inactive Client Border Color:") ThumbnailSettings.Push This.S_Gui.Add("CheckBox", "xs+230 ys Section vShowThumbnailTextOverlay Checked" This.ShowThumbnailTextOverlay, "On/Off") This.S_Gui["ShowThumbnailTextOverlay"].OnEvent("Click", (obj, *) => ThumbnailSettings_EventHandler(obj)) @@ -563,7 +568,6 @@ ThumbnailSettings.Push This.S_Gui.Add("Text", " x+5 yp+3 ", "Hex or RGB") This.S_Gui["ClientHighligtColor"].OnEvent("Change", (obj, *) => ThumbnailSettings_EventHandler(obj)) - ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+15 ", "px:") ThumbnailSettings.Push This.S_Gui.Add("Edit", "x+5 yp-3 w30 vClientHighligtBorderthickness -Wrap", This.ClientHighligtBorderthickness) This.S_Gui["ClientHighligtBorderthickness"].OnEvent("Change", (obj, *) => ThumbnailSettings_EventHandler(obj)) @@ -581,6 +585,16 @@ ThumbnailSettings.Push This.S_Gui.Add("CheckBox", "xs y+12 vShowThumbnailsAlwaysOnTop Checked" This.ShowThumbnailsAlwaysOnTop, "On/Off") This.S_Gui["ShowThumbnailsAlwaysOnTop"].OnEvent("Click", (obj, *) => ThumbnailSettings_EventHandler(obj)) + ThumbnailSettings.Push This.S_Gui.Add("CheckBox", "xs y+15 vShowAllBorders Checked" This.ShowAllColoredBorders, "On/Off") + This.S_Gui["ShowAllBorders"].OnEvent("Click", (obj, *) => ThumbnailSettings_EventHandler(obj)) + + ThumbnailSettings.Push This.S_Gui.Add("Text", " xs y+12 ", "px:") + ThumbnailSettings.Push This.S_Gui.Add("Edit", "x+5 yp-3 w30 vInactiveClientBorderthickness -Wrap", This.InactiveClientBorderthickness) + This.S_Gui["InactiveClientBorderthickness"].OnEvent("Change", (obj, *) => ThumbnailSettings_EventHandler(obj)) + + ThumbnailSettings.Push This.S_Gui.Add("Edit", "xs y+5 w120 vInactiveClientBorderColor -Wrap", This.InactiveClientBorderColor) + ThumbnailSettings.Push This.S_Gui.Add("Text", " x+5 yp+3 ", "Hex or RGB") + This.S_Gui["InactiveClientBorderColor"].OnEvent("Change", (obj, *) => ThumbnailSettings_EventHandler(obj)) This.S_Gui.Controls.Profile_Settings.PsDDL["Thumbnail Settings"] := ThumbnailSettings for k, v in This.S_Gui.Controls.Profile_Settings.PsDDL["Thumbnail Settings"] { @@ -635,6 +649,20 @@ This.ShowThumbnailsAlwaysOnTop := obj.value This.NeedRestart := 1 } + else if (obj.Name = "ShowAllBorders") { + This.ShowAllColoredBorders := obj.value + This.S_Gui["InactiveClientBorderthickness"].Enabled := This.ShowAllColoredBorders + This.S_Gui["InactiveClientBorderColor"].Enabled := This.ShowAllColoredBorders + This.NeedRestart := 1 + } + else if (obj.Name = "InactiveClientBorderColor") { + This.InactiveClientBorderColor := obj.value + This.NeedRestart := 1 + } + else if (obj.Name = "InactiveClientBorderthickness") { + This.InactiveClientBorderthickness := obj.value + This.NeedRestart := 1 + } SetTimer(This.Save_Settings_Delay_Timer, -200) } @@ -657,15 +685,12 @@ } } - This.Tv_LV.ModifyCol(1, 150), This.Tv_LV.ModifyCol(2, 115) This.Tv_LV.OnEvent("ItemCheck", ObjBindMethod(This, "_Tv_LVSelectedRow")) This.S_Gui.Controls.Profile_Settings.PsDDL["Thumbnail Visibility"] := Thumbnail_visibility for k, v in This.S_Gui.Controls.Profile_Settings.PsDDL["Thumbnail Visibility"] v.Visible := 0 - - } On_WM_MOUSEMOVE(wParam, lParam, msg, Hwnd) { @@ -742,7 +767,7 @@ This.S_Gui["Cchars"].value := This.CustomColors_AllCharNames This.S_Gui["CBorderColor"].value := This.CustomColors_AllBColors This.S_Gui["CTextColor"].value := This.CustomColors_AllTColors - + This.S_Gui["IABorderColor"].value := This.CustomColors_IABorder_Colors ;Hotkey Groups This.S_Gui["HotkeyGroupDDL"].Delete() @@ -775,6 +800,9 @@ This.S_Gui["HideThumbnailsOnLostFocus"].value := This.HideThumbnailsOnLostFocus This.S_Gui["ThumbnailOpacity"].value := IntegerToPercentage(This.ThumbnailOpacity) This.S_Gui["ShowThumbnailsAlwaysOnTop"].value := This.ShowThumbnailsAlwaysOnTop + This.S_Gui["ShowAllBorders"].value := This.ShowAllColoredBorders + This.S_Gui["InactiveClientBorderthickness"].value := This.InactiveClientBorderthickness + This.S_Gui["InactiveClientBorderColor"].value := This.InactiveClientBorderColor ;Thumbnail Visibility This.S_Gui["Visibility_List"].Delete() @@ -795,6 +823,8 @@ This.S_Gui["ForwardsKey"].Enabled := 0 This.S_Gui["BackwardsdKey"].Enabled := 0 } + This.S_Gui["InactiveClientBorderthickness"].Enabled := This.ShowAllColoredBorders + This.S_Gui["InactiveClientBorderColor"].Enabled := This.ShowAllColoredBorders } @@ -823,8 +853,6 @@ else return [] } - - } ;Class End diff --git a/src/ThumbWindow.ahk b/src/ThumbWindow.ahk index 45aad47..622f450 100644 --- a/src/ThumbWindow.ahk +++ b/src/ThumbWindow.ahk @@ -4,9 +4,8 @@ Class ThumbWindow extends Propertys { Create_Thumbnail(Win_Hwnd, Win_Title) { ThumbObj := Map() - ; Remove the "EVE -" part from the Titel to show only the Name and if no Name is present yet show nothing - ThumbObj["Window"] := Gui("+Owner +LastFound AlwaysOnTop -Caption +ToolWindow -DPIScale +E0x08000000", Win_Title) ;WS_EX_NOACTIVATE -> +E0x08000000 + ThumbObj["Window"] := Gui("+Owner +LastFound -Caption +ToolWindow -DPIScale +E0x08000000 " (This.ShowThumbnailsAlwaysOnTop ? "AlwaysOnTop" : "-AlwaysOnTop") , Win_Title) ;WS_EX_NOACTIVATE -> +E0x08000000 ThumbObj["Window"].OnEvent("Close", GUI_Close_Button) ; The Backcolor which is visible when no thumbnail is displayed @@ -54,7 +53,7 @@ Class ThumbWindow extends Propertys { ;#### Create the Thumbnail TextOverlay ;#### - ThumbObj["TextOverlay"] := Gui("AlwaysOnTop +LastFound -Caption +E0x20 +Owner" ThumbObj["Window"].Hwnd, Win_Title) ; WS_EX_CLICKTHROUGH -> +E0x20 + ThumbObj["TextOverlay"] := Gui("+LastFound -Caption +E0x20 +Owner" ThumbObj["Window"].Hwnd " " (This.ShowThumbnailsAlwaysOnTop ? "AlwaysOnTop" : "-AlwaysOnTop"), Win_Title) ; WS_EX_CLICKTHROUGH -> +E0x20 ThumbObj["TextOverlay"].MarginX := This.ThumbnailTextMargins["x"] ThumbObj["TextOverlay"].MarginY := This.ThumbnailTextMargins["y"] @@ -98,7 +97,6 @@ Class ThumbWindow extends Propertys { This.ThumbnailStartLocation["height"] ) - ;#### Create Borders ;#### border_thickness := This.ClientHighligtBorderthickness @@ -107,7 +105,7 @@ Class ThumbWindow extends Propertys { ThumbObj["Border"] := Gui("-Caption +E0x20 +Owner" ThumbObj["Window"].Hwnd) CheckError := 0 - if (This.CustomColorsActive) { + if (This.CustomColorsActive && !This.ShowAllColoredBorders) { if (This.CustomColorsGet[Win_Title]["Char"] != "" && This.CustomColorsGet[Win_Title]["Border"] != "") { try { ThumbObj["Border"].BackColor := This.CustomColorsGet[Win_Title]["Border"] @@ -120,9 +118,28 @@ Class ThumbWindow extends Propertys { else CheckError := 1 } + else if (This.ShowAllColoredBorders) { + if (This.CustomColorsActive && This.CustomColorsGet[Win_Title]["Char"] != "" && This.CustomColorsGet[Win_Title]["IABorder"] != "") { + try { + ThumbObj["Border"].BackColor := This.CustomColorsGet[Win_Title]["IABorder"] + } + catch as e { + CheckError := 1 + MsgBox("Error: Client Highligt Color are wrong´nin: Profile Settings - " This.LastUsedProfile " - Custom Colors - " Win_Title "`nUse the following syntax:`n HEX =>: #FFFFFF or 0xFFFFFF or FFFFFF`nRGB =>: 255, 255, 255 or rgb(255, 255, 255)") + } + } + else { + try { + ThumbObj["Border"].BackColor := This.InactiveClientBorderColor + } + catch as e { + CheckError := 1 + MsgBox("Error: Client Highligt Color are wrong´nin: Profile Settings - " This.LastUsedProfile " Thumbnail Settings - Inactive Border Color `nUse the following syntax:`n HEX =>: #FFFFFF or 0xFFFFFF or FFFFFF`nRGB =>: 255, 255, 255 or rgb(255, 255, 255)") + } + } + } - - if (CheckError || !This.CustomColorsActive) { + if ((CheckError) || (!This.CustomColorsActive && !This.ShowAllColoredBorders)) { try { ThumbObj["Border"].BackColor := border_color } @@ -144,8 +161,13 @@ Class ThumbWindow extends Propertys { } } - BorderSize(DesinationHwnd, BorderHwnd) { - border_thickness := This.ClientHighligtBorderthickness + BorderSize(DesinationHwnd, BorderHwnd, thickness?) { + if (IsSet(thickness)) + border_thickness := thickness + else if (This.ShowAllColoredBorders) + border_thickness := This.InactiveClientBorderthickness + else + border_thickness := This.ClientHighligtBorderthickness WinGetPos(&dx, &dy, &dw, &dh, DesinationHwnd) @@ -168,7 +190,6 @@ Class ThumbWindow extends Propertys { WinSetRegion(outerX "-" outerY " " outerX2 "-" outerY " " outerX2 "-" outerY2 " " outerX "-" outerY2 " " outerX "-" outerY " " innerX "-" innerY " " innerX2 "-" innerY " " innerX2 "-" innerY2 " " innerX "-" innerY2 " " innerX "-" innerY, BorderHwnd) return { x: newX, y: newY, w: newW, h: newH } - } ;## Moves the Window by holding down the Right Mousebutton @@ -270,15 +291,12 @@ Class ThumbWindow extends Propertys { ;WinMove(,,Wn,Wh, v.Hwnd ) continue } - } This.BorderSize(window, border) } This.Update_Thumb() - } } - } ; Snaps the window to the nearest corner of another window if it is within SnapRange in pixels @@ -388,24 +406,58 @@ Class ThumbWindow extends Propertys { ThumbObj["Thumbnail"].Update() } } - } ShowActiveBorder(EVEHwnd?, ThumbHwnd?) { - if (IsSet(EVEHwnd) && This.ShowClientHighlightBorder) { - if (This.ThumbWindows.HasProp(EVEHwnd) && !This.ShowAllColoredBorders) { - for EW_Hwnd, Objs in This.ThumbWindows.OwnProps() { - for names, GuiObj in Objs { - if (names = "Border") { + If (IsSet(EVEHwnd) && This.ThumbWindows.HasProp(EVEHwnd)) { + Win_Title := This.CleanTitle(WinGetTitle("Ahk_Id " EVEHwnd)) + + for EW_Hwnd, Objs in This.ThumbWindows.OwnProps() { + for names, GuiObj in Objs { + if (names = "Border") { + if ((!This.ShowAllColoredBorders && !This.ShowClientHighlightBorder) || (!This.ShowAllColoredBorders && This.ShowClientHighlightBorder)) { GuiObj.Show("Hide") } + else { + if (This.ThumbWindows.%EW_Hwnd%["Window"].Name = Win_Title) + continue + else if (!This.CustomColorsActive && This.ShowAllColoredBorders) { + try + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := This.InactiveClientBorderColor + catch + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := "8A8A8A" + This.BorderSize(This.ThumbWindows.%EW_Hwnd%["Window"].Hwnd, This.ThumbWindows.%EW_Hwnd%["Border"].Hwnd, This.InactiveClientBorderthickness) + } + else if (This.CustomColorsActive && This.ShowAllColoredBorders) { + title := This.CleanTitle(WinGetTitle("Ahk_Id " EW_Hwnd)) + if (This.CustomColorsGet[title]["Char"] != "" && This.CustomColorsGet[title]["IABorder"] != "") { + try + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := This.CustomColorsGet[title]["IABorder"] + catch + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := "8A8A8A" + } + else { + try + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := This.InactiveClientBorderColor + catch + This.ThumbWindows.%EW_Hwnd%["Border"].BackColor := "8A8A8A" + } + This.BorderSize(This.ThumbWindows.%EW_Hwnd%["Window"].Hwnd, This.ThumbWindows.%EW_Hwnd%["Border"].Hwnd, This.InactiveClientBorderthickness) + } + } } } } - - if !(This.Thumbnail_visibility.Has(This.CleanTitle(WinGetTitle("Ahk_Id " EVEHwnd)))) { - Show_Border := This.ThumbWindows.%EVEHwnd%["Border"] - Show_Border.Show("NoActivate") + if (!This.Thumbnail_visibility.Has(Win_Title) && This.ShowClientHighlightBorder) { + if (This.CustomColorsActive && This.CustomColorsGet[Win_Title]["Char"] != "" && This.CustomColorsGet[Win_Title]["Border"] != "") { + This.ThumbWindows.%EVEHwnd%["Border"].BackColor := This.CustomColorsGet[Win_Title]["Border"] + This.BorderSize(This.ThumbWindows.%EVEHwnd%["Window"].Hwnd, This.ThumbWindows.%EVEHwnd%["Border"].Hwnd, This.ClientHighligtBorderthickness) + } + else { + This.ThumbWindows.%EVEHwnd%["Border"].BackColor := This.ClientHighligtColor + This.BorderSize(This.ThumbWindows.%EVEHwnd%["Window"].Hwnd, This.ThumbWindows.%EVEHwnd%["Border"].Hwnd, This.ClientHighligtBorderthickness) + } + This.ThumbWindows.%EVEHwnd%["Border"].Show("NoActivate") } } }