From 5ead9ad824dd125c228390425b084e8cca073e3a Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 7 Jan 2020 01:22:22 +0000 Subject: [PATCH 1/9] Patch previous release date --- Docs/releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/releasenotes.md b/Docs/releasenotes.md index ca94104..e9b4f82 100644 --- a/Docs/releasenotes.md +++ b/Docs/releasenotes.md @@ -1,6 +1,6 @@ # Release Notes -## v1.6.2 - 2020-01-05 +## v1.6.2 - 2020-01-07 - Redesigned Configuration dialog to tabbed dialog - Reformatted user options data file to have values in appropriate sections From 84726d150ecc2c4831c1e0024ba21aa3647d6b9c Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 7 Jan 2020 22:59:46 +0000 Subject: [PATCH 2/9] SaveWindowPositions requires a notify parameter now --- Lib/WindowPositions.ahk | 15 +++++++++------ WindowMenu.ahk | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Lib/WindowPositions.ahk b/Lib/WindowPositions.ahk index 77cff70..b4663f5 100644 --- a/Lib/WindowPositions.ahk +++ b/Lib/WindowPositions.ahk @@ -110,7 +110,7 @@ HasWindowMoved(window1, window2) ;-------------------------------------------------------------------------------- ; SaveWindowPositions - Save all the current window positions to a file -SaveWindowPositions(includeOffScreenWindows) +SaveWindowPositions(includeOffScreenWindows, notify) { desktopSize := GetDesktopSize() @@ -174,13 +174,16 @@ SaveWindowPositions(includeOffScreenWindows) LogText("WindowPositions: " . saveCount . " windows written to " . fileName) - notifyText := "No Window Positions saved" - If saveCount > 0 + if (notify) { - notifyText := saveCount . " Window Positions saved" - } + notifyText := "No Window Positions saved" + If saveCount > 0 + { + notifyText := saveCount . " Window Positions saved" + } - new PleasantNotify("Window Positions", notifyText, 250, 100, "b r") + new PleasantNotify("Window Positions", notifyText, 250, 100, "b r") + } } ;-------------------------------------------------------------------------------- diff --git a/WindowMenu.ahk b/WindowMenu.ahk index a2ec729..92c390e 100644 --- a/WindowMenu.ahk +++ b/WindowMenu.ahk @@ -258,7 +258,7 @@ return ;-------------------------------------------------------------------------------- SaveWindowPositionsHandler: -SaveWindowPositions(G_UserConfig.WindowPositions_IncludeOffScreenWindows) +SaveWindowPositions(G_UserConfig.WindowPositions_IncludeOffScreenWindows, true) return RestoreWindowPositionsHandler: From 7db020f054c8614aa39eb02e737991cea8f72042 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 7 Jan 2020 23:00:35 +0000 Subject: [PATCH 3/9] New UserConfig properties and Gui settings and behaviour --- WindowExtensionsUserConfig.ahk | 100 ++++++++++++++++++++++++++++++ WindowExtensionsUserConfigGui.ahk | 57 +++++++++++++++-- 2 files changed, 152 insertions(+), 5 deletions(-) diff --git a/WindowExtensionsUserConfig.ahk b/WindowExtensionsUserConfig.ahk index 6719d6f..a594396 100644 --- a/WindowExtensionsUserConfig.ahk +++ b/WindowExtensionsUserConfig.ahk @@ -1,3 +1,4 @@ +#Include Lib\Logging.ahk #Include Lib\UserConfig.ahk MenuLocationNone := 0 @@ -9,6 +10,9 @@ MenuLocationItems := [] MenuLocationValues := [] +WindowPositions_TimerEnabled := false +WindowPositions_TimerIntervalMinutes := 0 + ;-------------------------------------------------------------------------------- ; Initialisation WindowExtensionsUserConfig_OnInit() @@ -21,6 +25,9 @@ WindowExtensionsUserConfig_OnInit() global MenuLocationItems global MenuLocationValues + global WindowPositions_TimerEnabled + global WindowPositions_TimerIntervalMinutes + MenuLocationNone := 0 MenuLocationWindowMenu := 1 MenuLocationTrayMenu := 2 @@ -38,6 +45,9 @@ WindowExtensionsUserConfig_OnInit() MenuLocationValues.push(MenuLocationTrayMenu) MenuLocationValues.push(MenuLocationAll) + WindowPositions_TimerEnabled := false + WindowPositions_TimerIntervalMinutes := 0 + UserConfig_OnInit() } @@ -55,8 +65,56 @@ WindowExtensionsUserConfig_OnStartup() { RestoreWindowPositions(G_UserConfig.WindowPositions_IncludeOffScreenWindows) } + + WindowExtensionsUserConfig_OnConfigUpdated() +} + +;-------------------------------------------------------------------------------- +; OnConfigUpdated +WindowExtensionsUserConfig_OnConfigUpdated() +{ + global G_UserConfig + + WindowPositionsConfigureTimer(G_UserConfig.WindowPositions_AutoSave, G_UserConfig.WindowPositions_AutoSaveIntervalMinutes) +} + +;-------------------------------------------------------------------------------- +; WindowPositionsConfigureTimer - Configure the timer +WindowPositionsConfigureTimer(enabled, intervalMinutes) +{ + global WindowPositions_TimerEnabled + global WindowPositions_TimerIntervalMinutes + + if (enabled = WindowPositions_TimerEnabled && intervalMinutes = WindowPositions_TimerIntervalMinutes) + { + return + } + + LogText("Deleting WindowPositionsAutoSave_OnTimer") + Try SetTimer, WindowPositionsAutoSave_OnTimer, Delete + + if (enabled) + { + milliseconds := (intervalMinutes * 60) * 1000 + + LogText("Setting WindowPositionsAutoSave_OnTimer for : " . milliseconds) + SetTimer, WindowPositionsAutoSave_OnTimer, %milliseconds% + } } +;-------------------------------------------------------------------------------- +; WindowPositionsAutoSave_OnTimer - Timer execute +WindowPositionsAutoSave_OnTimer() +{ + global G_UserConfig + + LogText("Executing: " . A_ThisFunc) + + SaveWindowPositions(G_UserConfig.WindowPositions_IncludeOffScreenWindows, G_UserConfig.WindowPositions_AutoSaveNotify) +} + +;-------------------------------------------------------------------------------- +; WindowExtensionsUserConfig class class WindowExtensionsUserConfig extends UserConfig { Default_About_Version := "" @@ -69,6 +127,9 @@ Default_Startup_RestoreWindowPositions := false Default_MenuControl_WindowPositionsMenuLocation := 0 Default_MenuControl_DesktopIconsMenuLocation := 0 Default_WindowPositions_IncludeOffScreenWindows := false +Default_WindowPositions_AutoSave := false +Default_WindowPositions_AutoSaveIntervalMinutes := 5 +Default_WindowPositions_AutoSaveNotify := false InitDefaults() { @@ -100,6 +161,9 @@ Default_WindowPositions_IncludeOffScreenWindows := false this.Properties.push("MenuControl_WindowPositionsMenuLocation") this.Properties.push("MenuControl_DesktopIconsMenuLocation") this.Properties.push("WindowPositions_IncludeOffScreenWindows") + this.Properties.push("WindowPositions_AutoSave") + this.Properties.push("WindowPositions_AutoSaveIntervalMinutes") + this.Properties.push("WindowPositions_AutoSaveNotify") this.ObsoleteProperties.push("General_RestoreDesktopIconsOnStartup") this.ObsoleteProperties.push("General_RestoreWindowPositionsOnStartup") @@ -234,4 +298,40 @@ Default_WindowPositions_IncludeOffScreenWindows := false base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) } } + + WindowPositions_AutoSave + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_WindowPositions_AutoSave, "boolean") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } + + WindowPositions_AutoSaveIntervalMinutes + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_WindowPositions_AutoSaveIntervalMinutes, "integer") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } + + WindowPositions_AutoSaveNotify + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_WindowPositions_AutoSaveNotify, "boolean") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } } diff --git a/WindowExtensionsUserConfigGui.ahk b/WindowExtensionsUserConfigGui.ahk index 68d482d..f61e1d5 100644 --- a/WindowExtensionsUserConfigGui.ahk +++ b/WindowExtensionsUserConfigGui.ahk @@ -16,6 +16,11 @@ menuControl_desktopIconsMenuLocationChoice := 0 menuControl_windowPositionsMenuLocationChoice := 0 windowPositions_NumberOfFilesToKeep := 20 windowPositions_IncludeOffScreenWindows := false +windowPositions_AutoSave := false +windowPositions_AutoSaveIntervalLabel := "" +windowPositions_AutoSaveIntervalEdit := 5 +windowPositions_AutoSaveIntervalMinutes := 5 +windowPositions_AutoSaveNotify := false desktopIcons_NumberOfFilesToKeep := 20 ;-------------------------------------------------------------------------------- @@ -33,6 +38,11 @@ LoadConfigGuiValues(userConfig) global menuControl_desktopIconsMenuLocation global menuControl_desktopIconsMenuLocationChoice global windowPositions_IncludeOffScreenWindows + global windowPositions_AutoSave + global windowPositions_AutoSaveIntervalLabel + global windowPositions_AutoSaveIntervalEdit + global windowPositions_AutoSaveIntervalMinutes + global windowPositions_AutoSaveNotify global MenuLocationValues global MenuLocationItems @@ -50,6 +60,9 @@ LoadConfigGuiValues(userConfig) menuControl_windowPositionsMenuLocationChoice := IndexOf(MenuLocationValues, menuControl_windowPositionsMenuLocation) menuControl_desktopIconsMenuLocation := userConfig.MenuControl_DesktopIconsMenuLocation menuControl_desktopIconsMenuLocationChoice := IndexOf(MenuLocationValues, menuControl_desktopIconsMenuLocation) + windowPositions_AutoSave := userConfig.WindowPositions_AutoSave + windowPositions_AutoSaveIntervalMinutes := userConfig.WindowPositions_AutoSaveIntervalMinutes + windowPositions_AutoSaveNotify := userConfig.WindowPositions_AutoSaveNotify windowPositions_IncludeOffScreenWindows := userConfig.WindowPositions_IncludeOffScreenWindows ? 1 : 0 } @@ -68,6 +81,10 @@ SaveConfigGuiValues(userConfig) global menuControl_desktopIconsMenuLocation global menuControl_desktopIconsMenuLocationChoice global windowPositions_IncludeOffScreenWindows + global windowPositions_AutoSave + global windowPositions_AutoSaveIntervalLabel + global windowPositions_AutoSaveIntervalMinutes + global windowPositions_AutoSaveNotify global MenuLocationValues @@ -82,6 +99,9 @@ SaveConfigGuiValues(userConfig) userConfig.Startup_RestoreDesktopIcons := startup_restoreDesktopIcons userConfig.MenuControl_WindowPositionsMenuLocation := MenuLocationValues[menuControl_windowPositionsMenuLocation] userConfig.MenuControl_DesktopIconsMenuLocation := MenuLocationValues[menuControl_desktopIconsMenuLocation] + userConfig.WindowPositions_AutoSave := windowPositions_AutoSave + userConfig.WindowPositions_AutoSaveIntervalMinutes := windowPositions_AutoSaveIntervalMinutes + userConfig.WindowPositions_AutoSaveNotify := windowPositions_AutoSaveNotify userConfig.WindowPositions_IncludeOffScreenWindows := windowPositions_IncludeOffScreenWindows userConfig.Save() @@ -107,12 +127,20 @@ BuildConfigGui() global menuControl_desktopIconsMenuLocation global menuControl_desktopIconsMenuLocationChoice global windowPositions_IncludeOffScreenWindows - + global windowPositions_AutoSave + global windowPositions_AutoSaveIntervalLabel + global windowPositions_AutoSaveIntervalEdit + global windowPositions_AutoSaveIntervalMinutes + global windowPositions_AutoSaveNotify + menuLocationItemsText := JoinItems("|", MenuLocationItems) marginSize := 5 + indentSize := 20 col1 := 20 + col1Indent := col1 + indentSize col2 := 220 + col2Indent := col2 + indentSize tabHeight := 40 rowHeight := 30 textOffSet := 3 @@ -171,11 +199,13 @@ BuildConfigGui() ; Tab 4 - Window Positions Gui, Config:Tab, 4 ; Row 1 - ;Gui, Config:Add, Text, x%col1% y%row1t%, Number of saved files to &keep : - ;Gui, Config:Add, Edit, w80 x%col2% y%row1% - ;Gui, Config:Add, UpDown, vwindowPositions_NumberOfFilesToKeep Range0-100, %windowPositions_NumberOfFilesToKeep% + Gui, Config:Add, Checkbox, x%col1% y%row1t% vwindowPositions_AutoSave gwindowPositions_AutoSave_Checked Checked%windowPositions_AutoSave%, Auto-Save Window Positions ? + Gui, Config:Add, Text, x%col1Indent% y%row2t% vwindowPositions_AutoSaveIntervalLabel, Auto-Save interval (minutes) + Gui, Config:Add, Edit, w80 x%col2% y%row2% vwindowPositions_AutoSaveIntervalEdit + Gui, Config:Add, UpDown, vwindowPositions_AutoSaveIntervalMinutes Range1-360, %windowPositions_AutoSaveIntervalMinutes% + Gui, Config:Add, Checkbox, x%col1Indent% y%row3% vwindowPositions_AutoSaveNotify Checked%windowPositions_AutoSaveNotify%, Notify when Auto-Saving ? ; Row 2 - Gui, Config:Add, Checkbox, x%col1% y%row1t% vwindowPositions_IncludeOffScreenWindows Checked%windowPositions_IncludeOffScreenWindows%, Include Off-Screen Windows + Gui, Config:Add, Checkbox, x%col1% y%row4t% vwindowPositions_IncludeOffScreenWindows Checked%windowPositions_IncludeOffScreenWindows%, Include Off-Screen Windows ; Tab 5 - Desktop Icons ;Gui, Config:Tab, 5 @@ -188,6 +218,23 @@ BuildConfigGui() Gui, Config:Tab Gui, Config:Add, Button, default x205 y240 w80, OK ; The label ButtonOK (if it exists) will be run when the button is pressed. Gui, Config:Add, Button, x295 y240 w80, Cancel ; The label ButtonCancel (if it exists) will be run when the button is pressed. + + ;-------------------------------------------------------------------------------- + ; Fire Events to ensure control consistency + windowPositions_AutoSave_Checked() +} + +;-------------------------------------------------------------------------------- +; windowPositions_AutoSave_Checked - When Auto-Save is checked +windowPositions_AutoSave_Checked() +{ + GuiControlGet, windowPositions_AutoSave + enabled := windowPositions_AutoSave ? 1 : 0 + + GuiControl, Enable%enabled%, windowPositions_AutoSaveIntervalLabel + GuiControl, Enable%enabled%, windowPositions_AutoSaveIntervalEdit + GuiControl, Enable%enabled%, windowPositions_AutoSaveIntervalMinutes + GuiControl, Enable%enabled%, windowPositions_AutoSaveNotify } ;-------------------------------------------------------------------------------- From db1694cc75f9e1f879782dbcbbf88db872349286 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 7 Jan 2020 23:01:03 +0000 Subject: [PATCH 4/9] Initialise OnConfigUpdated --- WindowExtensions.ahk | 1 + 1 file changed, 1 insertion(+) diff --git a/WindowExtensions.ahk b/WindowExtensions.ahk index 513bd22..6ebd5bd 100644 --- a/WindowExtensions.ahk +++ b/WindowExtensions.ahk @@ -124,4 +124,5 @@ OnUserConfigUpdated() { BuildWindowMenu() BuildTrayMenu() + WindowExtensionsUserConfig_OnConfigUpdated() } From cda43ef16f7956551a060ca1cd02c60c0512802f Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 7 Jan 2020 23:05:46 +0000 Subject: [PATCH 5/9] SaveDesktopIcons requires a notify parameter now --- Lib/DesktopIcons.ahk | 17 ++++++++++------- WindowMenu.ahk | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Lib/DesktopIcons.ahk b/Lib/DesktopIcons.ahk index 3a523b3..bc295be 100644 --- a/Lib/DesktopIcons.ahk +++ b/Lib/DesktopIcons.ahk @@ -155,7 +155,7 @@ HasIconMoved(icon1, icon2) } ;-------------------------------------------------------------------------------- -SaveDesktopIcons() +SaveDesktopIcons(notify) { desktop := new Desktop() if (!desktop.IsValid) @@ -186,13 +186,16 @@ SaveDesktopIcons() LogText("DesktopIcons: " . saveCount . " icons written to " . fileName) - notifyText := "No Desktop Icons saved" - If saveCount > 0 - { - notifyText := saveCount . " Desktop Icons saved" + if (notify) + { + notifyText := "No Desktop Icons saved" + If saveCount > 0 + { + notifyText := saveCount . " Desktop Icons saved" + } + + new PleasantNotify("Desktop Icons", notifyText, 250, 100, "b r") } - - new PleasantNotify("Desktop Icons", notifyText, 250, 100, "b r") } ;-------------------------------------------------------------------------------- diff --git a/WindowMenu.ahk b/WindowMenu.ahk index 92c390e..bde02b2 100644 --- a/WindowMenu.ahk +++ b/WindowMenu.ahk @@ -323,7 +323,7 @@ return ;-------------------------------------------------------------------------------- SaveDesktopIconsHandler: -SaveDesktopIcons() +SaveDesktopIcons(true) return RestoreDesktopIconsHandler: From dcbf70c8f0a1f8383d4cdfa4dd46518505e5fe78 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Wed, 8 Jan 2020 00:20:00 +0000 Subject: [PATCH 6/9] New UserConfig properties and Gui settings and behaviour --- WindowExtensionsUserConfig.ahk | 86 ++++++++++++++++++++++++++++++- WindowExtensionsUserConfigGui.ahk | 46 +++++++++++++++-- 2 files changed, 126 insertions(+), 6 deletions(-) diff --git a/WindowExtensionsUserConfig.ahk b/WindowExtensionsUserConfig.ahk index a594396..de1fd82 100644 --- a/WindowExtensionsUserConfig.ahk +++ b/WindowExtensionsUserConfig.ahk @@ -12,6 +12,8 @@ MenuLocationValues := [] WindowPositions_TimerEnabled := false WindowPositions_TimerIntervalMinutes := 0 +DesktopIcons_TimerEnabled := false +DesktopIcons_TimerIntervalMinutes := 0 ;-------------------------------------------------------------------------------- ; Initialisation @@ -27,6 +29,8 @@ WindowExtensionsUserConfig_OnInit() global WindowPositions_TimerEnabled global WindowPositions_TimerIntervalMinutes + global DesktopIcons_TimerEnabled + global DesktopIcons_TimerIntervalMinutes MenuLocationNone := 0 MenuLocationWindowMenu := 1 @@ -47,6 +51,8 @@ WindowExtensionsUserConfig_OnInit() WindowPositions_TimerEnabled := false WindowPositions_TimerIntervalMinutes := 0 + DesktopIcons_TimerEnabled := false + DesktopIcons_TimerIntervalMinutes := 0 UserConfig_OnInit() } @@ -76,6 +82,7 @@ WindowExtensionsUserConfig_OnConfigUpdated() global G_UserConfig WindowPositionsConfigureTimer(G_UserConfig.WindowPositions_AutoSave, G_UserConfig.WindowPositions_AutoSaveIntervalMinutes) + DesktopIconsConfigureTimer(G_UserConfig.DesktopIcons_AutoSave, G_UserConfig.DesktopIcons_AutoSaveIntervalMinutes) } ;-------------------------------------------------------------------------------- @@ -102,6 +109,30 @@ WindowPositionsConfigureTimer(enabled, intervalMinutes) } } +;-------------------------------------------------------------------------------- +; DesktopIconsConfigureTimer - Configure the timer +DesktopIconsConfigureTimer(enabled, intervalMinutes) +{ + global DesktopIcons_TimerEnabled + global DesktopIcons_TimerIntervalMinutes + + if (enabled = DesktopIcons_TimerEnabled && intervalMinutes = DesktopIcons_TimerIntervalMinutes) + { + return + } + + LogText("Deleting DesktopIconsAutoSave_OnTimer") + Try SetTimer, DesktopIconsAutoSave_OnTimer, Delete + + if (enabled) + { + milliseconds := (intervalMinutes * 60) * 1000 + + LogText("Setting DesktopIconsAutoSave_OnTimer for : " . milliseconds) + SetTimer, DesktopIconsAutoSave_OnTimer, %milliseconds% + } +} + ;-------------------------------------------------------------------------------- ; WindowPositionsAutoSave_OnTimer - Timer execute WindowPositionsAutoSave_OnTimer() @@ -113,6 +144,17 @@ WindowPositionsAutoSave_OnTimer() SaveWindowPositions(G_UserConfig.WindowPositions_IncludeOffScreenWindows, G_UserConfig.WindowPositions_AutoSaveNotify) } +;-------------------------------------------------------------------------------- +; DesktopIconsAutoSave_OnTimer - Timer execute +DesktopIconsAutoSave_OnTimer() +{ + global G_UserConfig + + LogText("Executing: " . A_ThisFunc) + + SaveDesktopIcons(G_UserConfig.DesktopIcons_AutoSaveNotify) +} + ;-------------------------------------------------------------------------------- ; WindowExtensionsUserConfig class class WindowExtensionsUserConfig extends UserConfig @@ -130,6 +172,9 @@ Default_WindowPositions_IncludeOffScreenWindows := false Default_WindowPositions_AutoSave := false Default_WindowPositions_AutoSaveIntervalMinutes := 5 Default_WindowPositions_AutoSaveNotify := false +Default_DesktopIcons_AutoSave := false +Default_DesktopIcons_AutoSaveIntervalMinutes := 5 +Default_DesktopIcons_AutoSaveNotify := false InitDefaults() { @@ -164,6 +209,9 @@ Default_WindowPositions_AutoSaveNotify := false this.Properties.push("WindowPositions_AutoSave") this.Properties.push("WindowPositions_AutoSaveIntervalMinutes") this.Properties.push("WindowPositions_AutoSaveNotify") + this.Properties.push("DesktopIcons_AutoSave") + this.Properties.push("DesktopIcons_AutoSaveIntervalMinutes") + this.Properties.push("DesktopIcons_AutoSaveNotify") this.ObsoleteProperties.push("General_RestoreDesktopIconsOnStartup") this.ObsoleteProperties.push("General_RestoreWindowPositionsOnStartup") @@ -334,4 +382,40 @@ Default_WindowPositions_AutoSaveNotify := false base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) } } -} + + DesktopIcons_AutoSave + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_DesktopIcons_AutoSave, "boolean") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } + + DesktopIcons_AutoSaveIntervalMinutes + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_DesktopIcons_AutoSaveIntervalMinutes, "integer") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } + + DesktopIcons_AutoSaveNotify + { + get + { + return base.GetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), this.Default_DesktopIcons_AutoSaveNotify, "boolean") + } + set + { + base.SetValue(base.GetSectionNameFromFunc(A_ThisFunc), base.GetPropertyNameFromFunc(A_ThisFunc), value) + } + } +} diff --git a/WindowExtensionsUserConfigGui.ahk b/WindowExtensionsUserConfigGui.ahk index f61e1d5..04ff632 100644 --- a/WindowExtensionsUserConfigGui.ahk +++ b/WindowExtensionsUserConfigGui.ahk @@ -21,7 +21,12 @@ windowPositions_AutoSaveIntervalLabel := "" windowPositions_AutoSaveIntervalEdit := 5 windowPositions_AutoSaveIntervalMinutes := 5 windowPositions_AutoSaveNotify := false -desktopIcons_NumberOfFilesToKeep := 20 +desktopIcons_AutoSave := false +desktopIcons_AutoSaveIntervalLabel := "" +desktopIcons_AutoSaveIntervalEdit := 5 +desktopIcons_AutoSaveIntervalMinutes := 5 +desktopIcons_AutoSaveNotify := false +;desktopIcons_NumberOfFilesToKeep := 20 ;-------------------------------------------------------------------------------- ; LoadConfigGuiValues - Populate gui variables with values from User Config @@ -85,6 +90,10 @@ SaveConfigGuiValues(userConfig) global windowPositions_AutoSaveIntervalLabel global windowPositions_AutoSaveIntervalMinutes global windowPositions_AutoSaveNotify + global desktopIcons_AutoSave + global desktopIcons_AutoSaveIntervalLabel + global desktopIcons_AutoSaveIntervalMinutes + global desktopIcons_AutoSaveNotify global MenuLocationValues @@ -103,6 +112,9 @@ SaveConfigGuiValues(userConfig) userConfig.WindowPositions_AutoSaveIntervalMinutes := windowPositions_AutoSaveIntervalMinutes userConfig.WindowPositions_AutoSaveNotify := windowPositions_AutoSaveNotify userConfig.WindowPositions_IncludeOffScreenWindows := windowPositions_IncludeOffScreenWindows + userConfig.DesktopIcons_AutoSave := desktopIcons_AutoSave + userConfig.DesktopIcons_AutoSaveIntervalMinutes := desktopIcons_AutoSaveIntervalMinutes + userConfig.DesktopIcons_AutoSaveNotify := desktopIcons_AutoSaveNotify userConfig.Save() @@ -132,6 +144,11 @@ BuildConfigGui() global windowPositions_AutoSaveIntervalEdit global windowPositions_AutoSaveIntervalMinutes global windowPositions_AutoSaveNotify + global desktopIcons_AutoSave + global desktopIcons_AutoSaveIntervalLabel + global desktopIcons_AutoSaveIntervalEdit + global desktopIcons_AutoSaveIntervalMinutes + global desktopIcons_AutoSaveNotify menuLocationItemsText := JoinItems("|", MenuLocationItems) @@ -158,8 +175,7 @@ BuildConfigGui() ; Start Gui Gui, Config:New, -SysMenu, %AppName% Configuration Gui, Config:Margin, %marginSize%, %marginSize% - ;Gui, Config:Add, Tab3, -Wrap w370 h230, General|Startup|Menu Control|Window Positions|Desktop Icons - Gui, Config:Add, Tab3, -Wrap w370 h230, General|Startup|Menu Control|Window Positions + Gui, Config:Add, Tab3, -Wrap w370 h230, General|Startup|Menu Control|Window Positions|Desktop Icons ; Tab 1 - General Gui, Config:Tab, 1 @@ -204,12 +220,18 @@ BuildConfigGui() Gui, Config:Add, Edit, w80 x%col2% y%row2% vwindowPositions_AutoSaveIntervalEdit Gui, Config:Add, UpDown, vwindowPositions_AutoSaveIntervalMinutes Range1-360, %windowPositions_AutoSaveIntervalMinutes% Gui, Config:Add, Checkbox, x%col1Indent% y%row3% vwindowPositions_AutoSaveNotify Checked%windowPositions_AutoSaveNotify%, Notify when Auto-Saving ? - ; Row 2 + ; Row 4 Gui, Config:Add, Checkbox, x%col1% y%row4t% vwindowPositions_IncludeOffScreenWindows Checked%windowPositions_IncludeOffScreenWindows%, Include Off-Screen Windows ; Tab 5 - Desktop Icons - ;Gui, Config:Tab, 5 + Gui, Config:Tab, 5 ; Row 1 + Gui, Config:Add, Checkbox, x%col1% y%row1t% vdesktopIcons_AutoSave gdesktopIcons_AutoSave_Checked Checked%desktopIcons_AutoSave%, Auto-Save Desktop Icons ? + Gui, Config:Add, Text, x%col1Indent% y%row2t% vdesktopIcons_AutoSaveIntervalLabel, Auto-Save interval (minutes) + Gui, Config:Add, Edit, w80 x%col2% y%row2% vdesktopIcons_AutoSaveIntervalEdit + Gui, Config:Add, UpDown, vdesktopIcons_AutoSaveIntervalMinutes Range1-360, %desktopIcons_AutoSaveIntervalMinutes% + Gui, Config:Add, Checkbox, x%col1Indent% y%row3% vdesktopIcons_AutoSaveNotify Checked%desktopIcons_AutoSaveNotify%, Notify when Auto-Saving ? + ; Row 4 ;Gui, Config:Add, Text, x%col1% y%row1t%, Number of saved files to &keep : ;Gui, Config:Add, Edit, w80 x%col2% y%row1% ;Gui, Config:Add, UpDown, vdesktopIcons_NumberOfFilesToKeep Range0-100, %desktopIcons_NumberOfFilesToKeep% @@ -222,6 +244,7 @@ BuildConfigGui() ;-------------------------------------------------------------------------------- ; Fire Events to ensure control consistency windowPositions_AutoSave_Checked() + desktopIcons_AutoSave_Checked() } ;-------------------------------------------------------------------------------- @@ -237,6 +260,19 @@ windowPositions_AutoSave_Checked() GuiControl, Enable%enabled%, windowPositions_AutoSaveNotify } +;-------------------------------------------------------------------------------- +; desktopIcons_AutoSave_Checked - When Auto-Save is checked +desktopIcons_AutoSave_Checked() +{ + GuiControlGet, desktopIcons_AutoSave + enabled := desktopIcons_AutoSave ? 1 : 0 + + GuiControl, Enable%enabled%, desktopIcons_AutoSaveIntervalLabel + GuiControl, Enable%enabled%, desktopIcons_AutoSaveIntervalEdit + GuiControl, Enable%enabled%, desktopIcons_AutoSaveIntervalMinutes + GuiControl, Enable%enabled%, desktopIcons_AutoSaveNotify +} + ;-------------------------------------------------------------------------------- ; DestroyConfigGui - Destroy the Config Gui DestroyConfigGui() From b490bec33755d1b25cce853642bcce3154bde620 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Wed, 8 Jan 2020 00:20:35 +0000 Subject: [PATCH 7/9] New configuration dialog screenshots to show DesktopIcons and new Auto-Save options --- Docs/ConfigurationDialog1.png | Bin 8956 -> 7727 bytes Docs/ConfigurationDialog2.png | Bin 5862 -> 6074 bytes Docs/ConfigurationDialog3.png | Bin 6734 -> 6931 bytes Docs/ConfigurationDialog4.png | Bin 4886 -> 7599 bytes Docs/ConfigurationDialog5.png | Bin 0 -> 6782 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Docs/ConfigurationDialog5.png diff --git a/Docs/ConfigurationDialog1.png b/Docs/ConfigurationDialog1.png index 2d8759ee54380239aafccf6d7b593a5a3bc46cc7..c28469893c4feddc3c13c46f331347eafa6245ef 100644 GIT binary patch literal 7727 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 E7cKbba{vGU literal 8956 zcmeHt_gfR)+I0|=-a!N%v!fr_h-GOEF|pWaP>d_2p_4(uZlQyi5Yi|b*SOY8e_U0wuT-lyEs_vhj{z^OaLf8G;+g;kTTHfECyd1nN z-CH`7Y*Kozr$_63b-~HdvdO`CxaY%Q*mhESetu5MGiK7}7I9#(y1c=8{5lvOa6Tw6 zQFl_|xg2m6#CiM>Zn*IGht-0Zt?kCO?)j$U zc-1bMr_FX?wf(CnS}FV_V4ApZ;bq=;w66^JnjhCzhHim3_ove ztQzKR`-!v*Ce`&s5yQ_Wxv!4Do(nJkdb3pV{`{Mr#AS_S`RZb%+VSWHr|X-m%Z^|> z|MvSdCn=nj7e!HT?hp(~XwLtD1^6eQwPS;1dWcQtbsJ8HOng=mXI_msATq{h=!dQ1 zX9cInj`*Pa&z>U{Sk89m`&*eofn*O#i|Q-H369cT2?yuYcae+Sq zbB&IW6NDz*;06efysrj&__bD(_*njHi6mOyinWz9Z5cg`kdw$wD?+X-+E%*9aZnj)V;duRp*Hv*KUHAY1tl{jvumN%Mw?=kKuRm1eLmn z%YE`+M6l6(IM5Uj-P_0RQ`V_Xf2##it45NBp+v`zI5SjxP z?-2P-;MAE9mgDPMyKj>|s;wMJ6YO~${2cPptG4YtJTIqJQ>(u;Pzr)2qc!%m!XSI1 z576oz4_UGgK7EJSdk=tL5SHljv-ipA2j>RUA0{5Os-H(&nUT{;J!<3J>>_huO^yA| zOU?59{d5JL78AdImUf4JTeCxG(n)sN8?f_BY}etP;cumzdXGP8`3nj~i>8*#yDi^T zc<-ja<3(QI61>N{Az$S~f2Y_a77S_eKDKP(x^yP%_BFj!1g!@aLmlQD=%0A0ackuB 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 diff --git a/Docs/ConfigurationDialog2.png b/Docs/ConfigurationDialog2.png index 74dbcde46dcb703ab6c9153a56e601f81f4781f6..643dfc5c2aa0386dfa5e582f9bee58230bae510b 100644 GIT binary patch literal 6074 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 R$xfa{PaCX-`qLrmzW}5v+9Ut~ literal 5862 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

gs&J3&a7sbe~PeNO+ld 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 literal 6734 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 S8%O&@039tu&BA+6-~Jb3ROFEW diff --git a/Docs/ConfigurationDialog4.png b/Docs/ConfigurationDialog4.png index 6585a9f9b984f8957a3f20e083025d80368fcbaa..21be33491c3c92207a15ec5da789f05d3125da0a 100644 GIT binary patch literal 7599 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 Fe*?{D!m$7V literal 4886 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 diff --git a/Docs/ConfigurationDialog5.png b/Docs/ConfigurationDialog5.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d855c189e3ce22bf4e6d109b30adaf3d3c5850 GIT binary patch literal 6782 zcmeHMcQBl9yIyG$BK*RSh?az8lWa&3J*!0*R$IMASrNT0mPOPM<%ftYb`jlLqC{CO zM2WIi7c8rb)gr8J9p9WX-*?XU&76PF%z0>w0dyg?t@>#i z;jXTLvx46eOO*0;3z&y^ynMyCP&@fF{SKWwMUB^YV=};5~Qf)cRWVU((Bx{ z#V|bSGiDc`;I}*OV0KKMPmufIdMjMO5L_KVD#|@pUwD?Ti$$AP2IxX2&-+^VySaB3 za~pd)I65AY>aN8WwdWuN#)G)9nAt*L&tpN_g*yVnwpTj*jg3+WOZ$T0+tL!m%SEd1 z3Z$AjJa(#NkYa}53)HJDU5yxd;iZ;9uilc-&_x}0o_c2Xo{{4CxYoB*i|;Fj{XAGrw$f747m z)WpZlBvugCG+!cJUt{x^-|QunF&uejT3&u0t*$Jhm?NcsHy;FQ$KyV|7&T}I15#TV@>G@-QM39+nlKaw4||h zmp(gO!9^phRnz`(wfN#VT~6f|+qc6Z;GSa{!B3d0z@+K?Omk;l|LJOVtK2$uC?t#P zNce4XKChAZc1p*Hb+W44!P8^){<~D}?elm}hm<+B0@)^0(_isZ5eOSmIWGoIE#-5i z*MQm3FtDBD#vi&6zd>u^NW{~^f-<$nvd$N!w+1CLvs=u2>SKx5Y8yb7#Mnp%MI55C z!K7H3!%!i4;*xo}d(H@3MJs-||J&2Y5T?=GSk%B#Bq*40KtFV|MSNAciFP5+3w$=-3g zF}U3x)fn*|##rORq`M~m!n8(Up{OpW3fyl8k^PBws+W!xr0#E@VfI@n} z1$i*wR!9LxV%qOH{x0B&qGX=}7@+g?KbHXi4oP{3is|tcm73tqaK_N!Pir}!R>(a*03JXBc zY)p&m6`n_!7gVJr5v{&boTc=KdDXkViK8_k#Uk?Hs_<(u0~+9#Ub2Z*8md|kWS6|t zUdkjwq8!X7Q&7uBO&)xFvdG!FIZbAt#$dSy-zAK21sDbT%JF3?h9<<~6Zm(|DM zA?l^Yo1A5w1&>e3bE30eKC|_!7B@ceO=B@q%{GUAc(}(FN+=Eie14)%l`G}hlV0A% zE%=TcXd>@GYE`&hs8}@r*Yvb^fV*c=rv_X~Lf-;D#41>7=}F_x2YF)XrF^H@ zW?lz1RXtg!4fNpIx$EIQ3k2s6BcA&jug}9rmtpxns9PJF*aE%jD$AJahtI8SDE^y2 z2ZS1YTvpV;U9ABhJ*6B6l9Ka4loGSDoE0YxG2req>v|Wbnh{&|>6OX8tz;w0l1_ls zaC)ggJR!Kdv1v@*6AMffC4rt;GXLI;7hA5G%B{!FQ&ACmxgVGB7lhAWd(5fl(sNKy zfqbxUCSVleo5f$5)qhC(q3Ag2_`Cw6GH$HSRmSE9Rk?Ofn92=4v^+Gs(RTjcB`5)<(_n>yGm!`D(mwcMX_K)NPslBI5w>OB0Q%tX$t;Bhu7}X;Ox0e4<<%r9o16 zud`+6`&Fth>)4#CPt{j%V8g-QTHk>0wQ!%~6LQN>`$lRMGapR_eJmt>%ThGMC)rSa z=6$&NnsO>DbqpwUZ?$|n2;7fXZ!vRh9CL}(HexFRNL-dBGZpxc%0 zo8TnWp)@Wpjr8OGk(6p{`@2SewmoB5E-Y1D{81&ZV994Fr?44cVQ1YFjMc#76;4+n zy!G7;%V1`!2Nv-2qC7cT=DqjlRsR_1=^0fxI>;((+nX-RwAw=E4Cd>v}2%JxY?j0edl|z=+z$v-MVO#>D7c) zZkMr2g-wHZHPdoM9FI)P{P@?fdjUv`mGz1f$9Ln_Wu2^wHZ1HZz(+EdV(HDJD}hmc z{zq$wPe$?%0bp25ViFdPENarR5Gr$&kOC!5jK-q>Xz-)%*U#rePnsxKfO?-#3(DRx zriOj-n-&=nH8N}x#wP#N$UO=C42!I*$QhDsT(XueC@z@7DE9Od(I3U2&G2J9>W5Tk z0Y7!Y5ng~M2oLuuY;xEBbffI|G(?@4OyD^MWsVwGW9P@>H(q2kcrJhSIr-_FYk}i; z(gZE@h@wkYpr19kqRiK$N4IqX-93Z8Ef%*iS%==}Vyu0k;<$GZm{&gY4%RF8DI^3` zig|?<5yu|E$~sN&4U3F+NOjkmU4|W0)ou77WGbCDvJs?&Q&6$N_P4@}`DFjW zDwWGcozB)NX{-(>Vk8+~4J{uMqwa1NuY^3>U7~v@bYLG?@#A|Q@Ai+9P#A>|OT%o=?c&_i$8qw(x8;IdUgPnz_mHt{Vy3U&kErZxl+dl$pg3yu z$MkFZie4oSUm4{iyRV3KY=bPn+DF_U=i}$JuX=p1q1k}1Nn~K4xN~i%RuyOj9v4$> zTTT_0xg2n{wzQe8gqG<@-kZ7K*qZQ^|Mh;Ggn5SpXSV*5gpAyp;EbMSE^^|~aLW9g z3;A#+*GN16qB-#+KCR`FMI{^AUQ^ip^;dg%>(ro_uMY}1qv0=8g81Z+(vV)aXO&r# zFSoJkF}FSu-W*41zUi8CPgbR(C%irg##K?7V6&>t-&jvE*UdbmV}GwO0ICW(y;d$X50jFy)9lkNqZfqCH;8dG}2wzRD7l zEOgj(m+%VZCb#cSe)mRaZ_ZfGoVxquJseI3P-Erk_s&sPG@ykJpUuuRiJt0xwjlaL zFgvV041w2!;t~5u#Sr$`3IyE4pcr>nx)ouJ01E-9>~I7iE9!4u=syVNf2iVrYgGSr zN(gW9a)0)7|Cp&Jq#1$*ko5|I#Z;Si>0bgwCeZYWhoq(z!rE1A-IWT0wzg0oS=!gx z?MuF>!?oDV{FFBf+D zIh@i?sECsRRlc|n9;LLyeH^P%LG|ENvezNi=0gXCHoZ zr6fX^=O}sKxnqf%ji!=`@V9)ZI%0y=c7msNbJo(bCgadZiICFa$DaoM0FdJExuz<_ z!$qwC?>jh+R7NcC{rKtPWr76R{Oqx`Y&xYKL0e@WW&?@OI*(1*`^T!?a%926=lrxBSZ@g zS64l$49#@c2~}M6vejnJ5Eoc=d>@xmwWYCTn75+rR#7C@cD}vej2cKCG5TV@Q#=Ru0?!O?L#F%wKyQ;h}ZP-yW-+1$i?nk74HQ{o%hD=lbCu+R2f0eP|pEdK{`5y ztYx~f%wU@1f9zKTG~V`uz=qFwt^W-|BtI@XR@>ZXX>@`jCGo6$l&3F8gTJs+`D-G6 z%$A+I>v@Bik-t`bmr3Gqb*QHZWy`ly3wxajmP*f%|F)6WmTy_1SLR_crmD!|fl>Nh zx$6GgnoS`+XB5+U5zEWtv2V4|8zw@J(ecq*u8_TbBM`Bk{jn<==tziFL#7gwvqbkGrQnzY;CDspJAo zva26N9{j{wlH$KjkjOJD=c4V;CulPtEOZzZs)ixtGu{{y3(ke9mwEX7 z+*LdRgP;^Wi*O^=zCkGJFuxtL1k1?CP`&a8*B50Vl}OYES0Kv|WkqnK7&2FIJ~#?Yb^Rt%c$tl!GlkvoLw} zz|Dlhf<;5JW@Sa+B#zGqf(0h=dWEk?Gu~Lw^$iNGUyz;@ zxNPxm;pQF(g+}KH;>Y%>Nq>D(=U%Bdy+g!P?5!YGs(e_|rBsR3b?(5HXqz}r&C9JX z_|f{qSi8U3DDy%g5c-_^nyG2PCu$Y9u$)(Rw8ppT-Ptwh2ZUZ_-x48G@Qp5!KVbo1 zzr0%3tOCBRTnyarW!gT0!PwnWE{x-P7H&c`8&|BdC%s;bhII05 z<@OHPPPP6iF@J25COtxag}$`@8RuI4^fte-CB>i4JnIO5}5~ai*Zb4zdv6m zyFc`#y{$|NRjUTV*U~cmEsEGuI&Karg3D3r#6AQM%-@q|ES=9Eq^jKS8 z`~@4JhzvX2mO&3y(TO<`4}czXm12QwHAt4G**RC(^UPug$JY-J>NZOP@(Hp(o&CKk7kWQ9>Gv^K zIwcCuF1W}erXwb6H(+YUfu5evq19oWPP;nSloEPKuy}|M7Cc}JRkR$9o{Lj2?o7AM zi|89>Rf;R(XWz82xqL+95)%7skNWIjA-M(QOGegM%5uoUz56(xHS!AlBjk+2O|(6^vJsoz_sdU?ZW!L>HNqM*IVr60K7n0k~h^A1;7 zDesZ%61%&^HrFn;kiL!6o9eEaO-KD2BK(umWyMPk&*Eiq$Ql`1xn0!%^7?6wO|)`1><_;fc?i|{i(~a=aZziuB(@L2JTYTVDM=Rjy3YJ695&%=Cj?Z7eFXw@p{W95^^6 zur#2b!1)*Z1H28~0#R>aoU$;750{g9I(vS6hrz`U1d~>h_<2wU#TDo}0o#%D^$xYe zImz*ON4AbugOI&|3y`X;RH&z*)e=7k)JzaqZ*#_b#lS_dFf_yLGope1q_VML4~@ft_zT23l1RxHEB9_WN3f zsDq;(c=S4hweQtT#Idz~DQF_5f`EirH{oWO12H~Bz4c{t3PU1ygRi5Z3V z#qz@atv9b`BVIiHTp~yDqBmc}XiDWvqtdrJAn?`Vf@3o8*+@Hef|Uxl$xTGQ5ARCFjJxylvuwTMBe!7JD@dr;NJ zb&V+)Y~*}^gYodt#Y3@yGHwLZ7wjYkFfrIn>C!K8qFhmYD%+Jq?pa;rdVUU^1sORH z`1a3-p?@b^fLs4iGyhE4{y*jK=E(n7f89@G@F3HrklSaB4gl=1{pVQxpB;y-JB~{t zH(iGX0;U>FisU@ISxC>&j&hE=#*^f#OsqR&6K!hj+N&(y`|ouz&ash9lsAf;i(MVB ze*BA&C8V0q4HHb=X>Ri2KB zd-~Kuc0VDNjQ^#SdiW=2)kealvrSfT2v4%;H? zevdM`rn+I|es37pX6G`8og{0sW*gW*&!j4Y@vmC8e2jj9tXlau!gj%n;gxVSh|h8#QgAd$)FOF& z6WL1ve#%~n;mW_5m>v!Nlk(>Fry5E$@pYCeX8_r*AD*Xm_DXJmqIQ*i3QX9cj%{hVjxH<-AF z&qs)KC&&Hk(6LjSx{CkP|8WiTU-kBDn1AXj;D!{9Pr><4bH* Date: Wed, 8 Jan 2020 00:20:51 +0000 Subject: [PATCH 8/9] Doc updates --- Docs/releasenotes.md | 5 +++++ Docs/todo.md | 6 ++---- README.md | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Docs/releasenotes.md b/Docs/releasenotes.md index e9b4f82..be22d9a 100644 --- a/Docs/releasenotes.md +++ b/Docs/releasenotes.md @@ -1,5 +1,10 @@ # Release Notes +## v1.6.3 - 2020-01-08 + +- Auto-Save Window Positions on a schedule +- Auto-Save Desktop Icons on a schedule + ## v1.6.2 - 2020-01-07 - Redesigned Configuration dialog to tabbed dialog diff --git a/Docs/todo.md b/Docs/todo.md index 99fc2fb..94924b3 100644 --- a/Docs/todo.md +++ b/Docs/todo.md @@ -1,10 +1,8 @@ # To Do -- History list of Saved Window Positions -- History list of Saved Desktop Icon Positions +- Support History of Saved Window Positions +- Support History of Saved Desktop Icon Positions - Add icons to other context menu items -- Auto-Save Window Positions on a schedule -- Auto-Save Desktop Icons on a schedule ## Bugs diff --git a/README.md b/README.md index 8f0f959..2564908 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ A Configuration dialog, available from the tray icon, allows controlling some as ![Configuration Dialog Tab 4](Docs/ConfigurationDialog4.png) +![Configuration Dialog Tab 5](Docs/ConfigurationDialog5.png) + ## Features ### Optimum Positioning From 2084763f61f8c4c5d5032b179ae93b936967a6fd Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Wed, 8 Jan 2020 00:20:59 +0000 Subject: [PATCH 9/9] Version bump --- Setup/WindowMenu_Setup.iss | 2 +- WindowExtensions.ahk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Setup/WindowMenu_Setup.iss b/Setup/WindowMenu_Setup.iss index 1988916..3789050 100644 --- a/Setup/WindowMenu_Setup.iss +++ b/Setup/WindowMenu_Setup.iss @@ -1,6 +1,6 @@ #define AppName "WindowExtensions" #define AppTitle "Window Extensions" -#define AppVersion "1.6.2" +#define AppVersion "1.6.3" [Setup] AppName={#AppName} diff --git a/WindowExtensions.ahk b/WindowExtensions.ahk index 6ebd5bd..f388ce7 100644 --- a/WindowExtensions.ahk +++ b/WindowExtensions.ahk @@ -15,7 +15,7 @@ AppDescription := "Window Extensions Menu and HotKeys" AppCopyright := "Copyright © 2020 Martin Smith" AppNotes := "Concise and consistent control over Window Positions. Right-click right half of Window Caption bar to invoke, or hit WinKey-W" AppURL := "https://github.com/martinsmith1968/WindowExtensions" -AppVersion := "1.6.2.0" +AppVersion := "1.6.3.0" ;-------------------------------------------------------------------------------- ; Includes