Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 9dc037f

Browse files
committed
[[ Bug 19946 ]] Add active extension folders preference
Any folder containing a folder containing an extension selected for loading by the user is added to the cDeveloperExtensionsFolders preference. This patch adds a cDeveloperExtensionsActiveFolders preference which controls which of the above folders are actually searched for extensions in the extension builder. This preference can be set using the cog at the top-right of the extension builder stack.
1 parent a1d0a9d commit 9dc037f

4 files changed

Lines changed: 112 additions & 17 deletions

File tree

Toolset/libraries/revidedeveloperextensionlibrary.livecodescript

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ end __revIDEDeveloperExtensionShouldRecompile
5858

5959
private command __revIDEDeveloperExtensionRemoveFolder pFolder
6060
local tDeveloperExtensionsFolders
61-
put revIDEGetPreference("cDeveloperExtensionsFolders") into tDeveloperExtensionsFolders
61+
put revIDEDeveloperExtensionsFolders() into tDeveloperExtensionsFolders
6262

6363
set the itemdelimiter to slash
6464
local tRootFolder
@@ -68,13 +68,13 @@ private command __revIDEDeveloperExtensionRemoveFolder pFolder
6868
put lineOffset(tRootFolder, tDeveloperExtensionsFolders) into tLine
6969
if tLine is not 0 then
7070
delete line tLine of tDeveloperExtensionsFolders
71-
revIDESetPreference "cDeveloperExtensionsFolders", tDeveloperExtensionsFolders
71+
revIDEDeveloperExtensionsSetFolders tDeveloperExtensionsFolders
7272
end if
7373
end __revIDEDeveloperExtensionRemoveFolder
7474

7575
private command __revIDEDeveloperExtensionAddFolder pFolder
7676
local tDeveloperExtensionsFolders
77-
put revIDEGetPreference("cDeveloperExtensionsFolders") into tDeveloperExtensionsFolders
77+
put revIDEDeveloperExtensionsFolders() into tDeveloperExtensionsFolders
7878

7979
set the itemdelimiter to slash
8080
local tRootFolder
@@ -87,7 +87,7 @@ private command __revIDEDeveloperExtensionAddFolder pFolder
8787
end if
8888
end if
8989

90-
revIDESetPreference "cDeveloperExtensionsFolders", tDeveloperExtensionsFolders
90+
revIDEDeveloperExtensionsSetFolders tDeveloperExtensionsFolders
9191
end __revIDEDeveloperExtensionAddFolder
9292

9393
/*
@@ -122,7 +122,7 @@ function revIDEDeveloperExtensions
122122

123123
# Look for extension examples in previously selected user folders.
124124
local tUserFolders
125-
put revIDEGetPreference("cDeveloperExtensionsFolders") into tUserFolders
125+
put revIDEDeveloperExtensionsActiveFolders() into tUserFolders
126126
repeat for each line tLine in tUserFolders
127127
if tLine is among the lines of tFolders then next repeat
128128

@@ -200,6 +200,22 @@ function revIDEDeveloperExtensionNoCompile pFolder
200200
return tDataA
201201
end revIDEDeveloperExtensionNoCompile
202202

203+
function revIDEDeveloperExtensionsFolders
204+
return revIDEGetPreference("cDeveloperExtensionsFolders")
205+
end revIDEDeveloperExtensionsFolders
206+
207+
command revIDEDeveloperExtensionsSetFolders pFolders
208+
revIDESetPreference "cDeveloperExtensionsFolders", pFolders
209+
end revIDEDeveloperExtensionsSetFolders
210+
211+
function revIDEDeveloperExtensionsActiveFolders
212+
return revIDEGetPreference("cDeveloperExtensionsActiveFolders")
213+
end revIDEDeveloperExtensionsActiveFolders
214+
215+
command revIDEDeveloperExtensionsActiveFolders pFolders
216+
revIDESetPreference "cDeveloperExtensionsActiveFolders", pFolders
217+
end revIDEDeveloperExtensionsActiveFolders
218+
203219
function revIDEDeveloperExtension pFolder
204220
local tFile, tType
205221
__revIDEDeveloperExtensionFetchExtensionSourceInFolder pFolder, tFile, tType

Toolset/palettes/behaviors/revpalettebehavior.livecodescript

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,13 @@ private on appendMenuItem pNavItem, @xMenuArray
210210
if pNavItem["value_type"] is "enum" then
211211
put tValue is tPreferenceValue into tChecked
212212
else
213-
put tValue is among the items of tPreferenceValue into tChecked
213+
if the number of lines in tPreferenceValue > 1 then
214+
put tValue is among the lines of tPreferenceValue into tChecked
215+
else
216+
put tValue is among the items of tPreferenceValue into tChecked
217+
end if
214218
end if
215-
219+
216220
if tChecked then
217221
put true into tMenuItemA["menu"][tItemCount]["checked"]
218222
else

Toolset/palettes/extension builder/revextensionbuilderbehavior.livecodescript

Lines changed: 76 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,8 @@ on preOpenStack
55
dispatch "setAsBehavior" to revIDEFrameBehavior() with the long id of this me
66

77
### Header
8-
--addFrameItem "add","header", "action", "Create a new extension", "plus sign", "plus sign","headerActionNewExtension", the long id of me
9-
addFrameItem "open","header", "action", "Open an existing extension", "folder open", "folder open","headerActionOpenExtension", the long id of me
10-
addFrameItem "edit source", "header", "action", "Edit extension source code", "lc-edit-script", "lc-edit-script", "headerActionEditSource", the long id of me
11-
12-
addFrameItem "package","footer", "action", "Package", "archive", "archive","footerActionPackage", the long id of me
13-
addFrameItem "uninstall","footer", "action", "Uninstall", "remove circle", "remove circle","footerActionUninstall", the long id of me
14-
addFrameItem "install","footer", "action", "Install", "plus sign", "plus sign","footerActionInstall", the long id of me
15-
addFrameItem "stop testing","footer", "action", "Stop testing extension", "stop circle", "stop circle","footerActionStopTesting", the long id of me
16-
addFrameItem "test","footer", "action", "Test extension", "play circle", "play circle","footerActionTest", the long id of me
17-
8+
generateExtensionFrame
9+
1810
put "No API entries found" into field "message_api" of me
1911
put "No user guide found" into field "message_guide" of me
2012

@@ -31,8 +23,62 @@ on preOpenStack
3123
revIDESubscribe "ideExtensionLog"
3224
revIDESubscribe "ideExtensionStatusChanged"
3325
revIDESubscribe "ideExtensionsChanged"
26+
revIDESubscribe "idePreferenceChanged:cDeveloperExtensionsFolders"
27+
revIDESubscribe "idePreferenceChanged:cDeveloperExtensionsActiveFolders"
3428
end preOpenStack
3529

30+
private function FolderPathForMenu pFolder
31+
local tFolder
32+
put pFolder into tFolder
33+
replace "!" with "\!" in pFolder
34+
if the platform is "MacOS" then
35+
replace "/" with "\/" in pFolder
36+
replace "(" with "\(" in pFolder
37+
else
38+
replace "/" with "//" in pFolder
39+
end if
40+
return tFolder & ":" & pFolder
41+
end FolderPathForMenu
42+
43+
command generateExtensionFrame
44+
clearFrameData
45+
46+
local tFolders, tMenuItem, tOptions
47+
put revIDEDeveloperExtensionsFolders() into tFolders
48+
repeat for each line tLine in tFolders
49+
put FolderPathForMenu(tLine) into tMenuItem
50+
if tOptions is empty then
51+
put tMenuItem into tOptions
52+
else
53+
put comma & tMenuItem after tOptions
54+
end if
55+
end repeat
56+
57+
addFrameItem "cDeveloperExtensionsActiveFolders", "header", "preference", "Folders to search for extensions", "set", tOptions, "togglePreference", the long id of me
58+
59+
--addFrameItem "add","header", "action", "Create a new extension", "plus sign", "plus sign","headerActionNewExtension", the long id of me
60+
addFrameItem "open","header", "action", "Open an existing extension", "folder open", "folder open","headerActionOpenExtension", the long id of me
61+
addFrameItem "edit source", "header", "action", "Edit extension source code", "lc-edit-script", "lc-edit-script", "headerActionEditSource", the long id of me
62+
63+
addFrameItem "package","footer", "action", "Package", "archive", "archive","footerActionPackage", the long id of me
64+
addFrameItem "uninstall","footer", "action", "Uninstall", "remove circle", "remove circle","footerActionUninstall", the long id of me
65+
addFrameItem "install","footer", "action", "Install", "plus sign", "plus sign","footerActionInstall", the long id of me
66+
addFrameItem "stop testing","footer", "action", "Stop testing extension", "stop circle", "stop circle","footerActionStopTesting", the long id of me
67+
addFrameItem "test","footer", "action", "Test extension", "play circle", "play circle","footerActionTest", the long id of me
68+
69+
end generateExtensionFrame
70+
71+
on idePreferenceChanged pPref
72+
switch pPref
73+
case "cDeveloperExtensionsFolders"
74+
case "cDeveloperExtensionsActiveFolders"
75+
--Refresh the header list
76+
generateExtensionFrame
77+
populateExtensionList
78+
break
79+
end switch
80+
end idePreferenceChanged
81+
3682
on closeStackRequest
3783
if there is folder sLoadedExtension then
3884
revIDESetPreference "extensionBuilderPlugin_lastSelected", sLoadedExtension
@@ -74,6 +120,26 @@ private on consoleScrollbarUpdate
74120
end if
75121
end consoleScrollbarUpdate
76122

123+
on togglePreference pPreference, pValue
124+
switch pPreference
125+
case "cDeveloperExtensionsActiveFolders"
126+
local tCurrentPreferenceValue, tPreferencePosition, tLineOffset
127+
put revIDEGetPreference("cDeveloperExtensionsActiveFolders") into tCurrentPreferenceValue
128+
put lineOffset(pValue, tCurrentPreferenceValue) into tLineOffset
129+
if tLineOffset is not 0 then
130+
delete line tLineOffset of tCurrentPreferenceValue
131+
else
132+
if tCurrentPreferenceValue is empty then
133+
put pValue into tCurrentPreferenceValue
134+
else
135+
put return & pValue after tCurrentPreferenceValue
136+
end if
137+
end if
138+
revIDESetPreference "cDeveloperExtensionsActiveFolders", tCurrentPreferenceValue
139+
break
140+
end switch
141+
end togglePreference
142+
77143
on headerActionNewExtension
78144
end headerActionNewExtension
79145

notes/bugfix-19946.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Add extension search folders preference
2+
Any folder containing a folder containing an extension selected for
3+
loading by the user is added to the `cDeveloperExtensionsFolders`
4+
preference. There is now a new preference
5+
`cDeveloperExtensionsActiveFolders` which controls which of the
6+
folders are actually searched for extensions in the extension
7+
builder. This preference can be set using the cog at the top-right
8+
of the extension builder stack.
9+

0 commit comments

Comments
 (0)