Skip to content

Commit 223a595

Browse files
committed
Harmonize top-level and context menus
1 parent f552b3f commit 223a595

File tree

2 files changed

+94
-111
lines changed

2 files changed

+94
-111
lines changed

cls/SourceControl/Git/Extension.cls

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,29 @@ XData Menu
99
<MenuBase>
1010
<Menu Name="%SourceMenu" Type="0">
1111
<MenuItem Name="%Settings" />
12-
<MenuItem Name="%Init" Save = "001"/>
12+
<MenuItem Name="%Init" />
1313
<MenuItem Separator="true"/>
14-
<MenuItem Name="%GitWebUI" Save = "111" />
14+
<MenuItem Name="%GitWebUI" />
1515
<MenuItem Separator="true"/>
16-
<MenuItem Name="%Export" Save = "001" />
17-
<MenuItem Name="%ExportForce" Save = "001" />
18-
<MenuItem Name="%Import" Save = "001" />
19-
<MenuItem Name="%ImportForce" Save = "001" />
20-
<MenuItem Name="%Revert" Save = "001" />
16+
<MenuItem Name="%Export" />
17+
<MenuItem Name="%ExportForce" />
18+
<MenuItem Name="%Import" />
19+
<MenuItem Name="%ImportForce" />
2120
<MenuItem Separator="true"/>
22-
<MenuItem Name="%Commit" Save = "001" />
23-
<MenuItem Name="%Push" Save = "001"/>
24-
<MenuItem Name="%Fetch" Save = "001"/>
25-
<MenuItem Name="%Pull" Save = "001"/>
21+
<MenuItem Name="%AddToSC" />
22+
<MenuItem Name="%RemoveFromSC"/>
23+
<MenuItem Name="%Revert" />
24+
<MenuItem Name="%Commit" />
25+
<MenuItem Separator="true"/>
26+
<MenuItem Name="%Push" />
27+
<MenuItem Name="%Fetch" />
28+
<MenuItem Name="%Pull" />
2629
</Menu>
2730
<Menu Name="%SourceContext" Type="1">
28-
<MenuItem Name="%AddToSC" Save = "001" />
31+
<MenuItem Name="%AddToSC" />
2932
<MenuItem Name="%RemoveFromSC"/>
30-
<MenuItem Name="%Revert" Save = "001" />
31-
<MenuItem Name="%Commit" Save = "001" />
33+
<MenuItem Name="%Revert" />
34+
<MenuItem Name="%Commit" />
3235
</Menu>
3336
</MenuBase>
3437
}
@@ -81,20 +84,8 @@ Method OnSourceMenuItem(name As %String, ByRef Enabled As %String, ByRef Display
8184
set DisplayName = "Import All"
8285
} elseif name = "%ImportForce" {
8386
set DisplayName = "Import All Force"
84-
} elseif name = "%RepoStatus" && ##class(Utils).GitBinExists() {
85-
set DisplayName = "Check for modifications"
86-
} elseif name = "%Revert" {
87-
set DisplayName = "Revert Changes"
88-
do ..GetStatus(InternalName, .isInSourceControl, .isEditable,.isCheckedOut,.userCheckedOut)
89-
if '(##class(Change).IsUncommitted(##class(Utils).FullExternalName(InternalName))) || ($username '= userCheckedOut) {
90-
set Enabled = 0
91-
}
92-
} elseif name = "%Commit" {
93-
set DisplayName = "Commit Changes"
94-
do ..GetStatus(InternalName, .isInSourceControl, .isEditable,.isCheckedOut,.userCheckedOut)
95-
if '(##class(Change).IsUncommitted(##class(Utils).FullExternalName(InternalName))) || ($username '= userCheckedOut) {
96-
set Enabled = 0
97-
}
87+
} elseif $ListFind($ListBuild("%AddToSC","%RemoveFromSC","%Revert","%Commit"),name) {
88+
quit ..OnSourceMenuContextItem(InternalName,name,.Enabled,.DisplayName)
9889
} elseif name = "%Push" {
9990
// TODO: Only display if there are no files checked out by other users
10091
set Enabled = 1
@@ -135,6 +126,16 @@ Method OnSourceMenuContextItem(itemName As %String, menuItemName As %String, ByR
135126
set Enabled = -1
136127
} elseif $F(itemName,",") > 0 { //if more than one item is selected, we can only add/remove, no diff or blame
137128
set Enabled = $case(menuItemName,"%AddToSC":1,"%RemoveFromSC":1,:-1)
129+
} elseif menuItemName = "%Revert" {
130+
do ..GetStatus(itemName, .isInSourceControl, .isEditable,.isCheckedOut,.userCheckedOut)
131+
if '(##class(Change).IsUncommitted(##class(Utils).FullExternalName(itemName))) || ($username '= userCheckedOut) {
132+
set Enabled = 0
133+
}
134+
} elseif menuItemName = "%Commit" {
135+
do ..GetStatus(itemName, .isInSourceControl, .isEditable,.isCheckedOut,.userCheckedOut)
136+
if '(##class(Change).IsUncommitted(##class(Utils).FullExternalName(itemName))) || ($username '= userCheckedOut) {
137+
set Enabled = 0
138+
}
138139
} elseif ##class(Utils).IsInSourceControl(itemName) {
139140
set Enabled = $Case(menuItemName, "%AddToSC":-1,:1)
140141
} else {
@@ -287,3 +288,4 @@ Method GetStatus(InternalName As %String, ByRef IsInSourceControl As %Boolean, B
287288
}
288289

289290
}
291+

cls/SourceControl/Git/Utils.cls

Lines changed: 64 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -140,94 +140,70 @@ ClassMethod UserAction(InternalName As %String, MenuName As %String, ByRef Targe
140140
($system.Version.GetOS()="Windows") {
141141
write !!,"===Path to git.exe not found: "_..GitBinPath()_"!===",!
142142
}
143-
144-
if (menuName = "%SourceMenu") {
145-
if (menuItemName = "%Settings") {
146-
set Action = 2
147-
set Target = "/isc/studio/usertemplates/gitsourcecontrol/gitprojectsettings.csp?NSpace="_$namespace_"&Username="_$username
148-
} elseif (menuItemName = "%Init") {
149-
if ##class(%File).CreateDirectoryChain(..TempFolder()) {
150-
// cleanup items info
151-
kill @..#Storage@("items")
152-
kill @..#Storage@("TSH")
153-
set Action = 3
154-
set Target = ..RunGitCommand("init",.errStream,.outStream)
155-
} else {
156-
set ec = ..MakeError("Unable to create folder "_..TempFolder())
157-
}
158-
} elseif (menuItemName = "%GitWebUI") {
159-
set Action = 2
160-
set Target = "/isc/studio/usertemplates/gitsourcecontrol/webuidriver.csp/"_$namespace_"/"_$ZConvert(InternalName,"O","URL")
161-
} elseif (menuItemName = "%Export") || (menuItemName = "%ExportForce") {
162-
write "==export start==",!
163-
set ec = ..ExportAll($case(menuItemName="%ExportForce",1:$$$Force,:0))
164-
if ec {
165-
write !,"==export done==",!
166-
}
167-
} elseif (menuItemName = "%Import") {
168-
set ec = ..ImportAll()
169-
set Reload = 1
170-
} elseif (menuItemName = "%ImportForce") {
171-
set ec = ..ImportAll($$$Force)
172-
set Reload = 1
173-
} elseif (menuItemName = "%OpenRepoFolder") {
174-
set Action = 3
175-
set Target = ..TempFolder()
176-
} elseif (menuItemName = "%Revert") {
177-
set Reload = 1
178-
quit ..Revert(InternalName)
179-
} elseif (menuItemName = "%Commit") {
180-
set Target = "Please enter a commit message"
181-
set Action = 7
182-
quit $$$OK
183-
} elseif (menuItemName = "%Push") {
184-
quit ..Push()
185-
} elseif (menuItemName = "%Fetch") {
186-
$$$QuitOnError(..Fetch(.diffFiles))
187-
set pointer = 0
188-
while $ListNext(diffFiles, pointer, item){
189-
write !,item
190-
}
191-
write !
192-
} elseif (menuItemName = "%Pull") {
193-
quit ..Pull()
194-
} elseif ..IsMenuGitCommand(menuItemName) {
195-
set Action = 3
196-
#dim command As %String = $ZConvert($Extract(menuItemName, 2, *), "L")
197-
set ec = $$$OK
198-
if $Data(@..#Storage@("settings","hook"),hook)=1 {
199-
set $ListBuild(class,method) = hook
200-
set ec = $classmethod(class, method, command, InternalName)
201-
}
202-
if $$$ISOK(ec) {
203-
set Target = ..GitCommand(command)
204-
}
205-
}
206-
} elseif (menuName = "%SourceContext") {
207143

208-
if (..Type(InternalName) = "csp") && ($Extract(InternalName,1) '= "/") {
209-
set InternalName = "/" _ InternalName
144+
if (..Type(InternalName) = "csp") && ($Extract(InternalName,1) '= "/") {
145+
set InternalName = "/" _ InternalName
146+
}
147+
148+
if (menuItemName = "%Settings") {
149+
set Action = 2
150+
set Target = "/isc/studio/usertemplates/gitsourcecontrol/gitprojectsettings.csp?NSpace="_$namespace_"&Username="_$username
151+
} elseif (menuItemName = "%Init") {
152+
if ##class(%File).CreateDirectoryChain(..TempFolder()) {
153+
// cleanup items info
154+
kill @..#Storage@("items")
155+
kill @..#Storage@("TSH")
156+
do ..RunGitCommand("init",.errStream,.outStream)
157+
do errStream.OutputToDevice()
158+
do outStream.OutputToDevice()
159+
} else {
160+
set ec = ..MakeError("Unable to create folder "_..TempFolder())
210161
}
211-
212-
if (menuItemName = "%AddToSC") {
213-
set ec = ..AddToSourceControl(InternalName)
214-
} elseif (menuItemName = "%RemoveFromSC") {
215-
set ec = ..RemoveFromSourceControl(InternalName)
216-
} elseif (menuItemName = "%Commit") {
217-
set Target = "Please enter a commit message"
218-
set Action = 7
219-
quit $$$OK
162+
} elseif (menuItemName = "%GitWebUI") {
163+
set Action = 2
164+
set Target = "/isc/studio/usertemplates/gitsourcecontrol/webuidriver.csp/"_$namespace_"/"_$ZConvert(InternalName,"O","URL")
165+
} elseif (menuItemName = "%Export") || (menuItemName = "%ExportForce") {
166+
write "==export start==",!
167+
set ec = ..ExportAll($case(menuItemName="%ExportForce",1:$$$Force,:0))
168+
if ec {
169+
write !,"==export done==",!
220170
}
221-
if ..IsContextMenuGitCommand(menuItemName) {
222-
set Action = 3
223-
set command = $ZConvert($Extract(menuItemName, 2, *), "L")
224-
set Target = ..GitCommand(command, InternalName)
171+
} elseif (menuItemName = "%Import") {
172+
set ec = ..ImportAll()
173+
set Reload = 1
174+
} elseif (menuItemName = "%ImportForce") {
175+
set ec = ..ImportAll($$$Force)
176+
set Reload = 1
177+
} elseif (menuItemName = "%OpenRepoFolder") {
178+
set Action = 3
179+
set Target = ..TempFolder()
180+
} elseif (menuItemName = "%Revert") {
181+
set Reload = 1
182+
quit ..Revert(InternalName)
183+
} elseif (menuItemName = "%Commit") {
184+
set Target = "Please enter a commit message"
185+
set Action = 7
186+
quit $$$OK
187+
} elseif (menuItemName = "%Push") {
188+
quit ..Push()
189+
} elseif (menuItemName = "%Fetch") {
190+
$$$QuitOnError(..Fetch(.diffFiles))
191+
set pointer = 0
192+
while $ListNext(diffFiles, pointer, item){
193+
write !,item
225194
}
195+
write !
196+
} elseif (menuItemName = "%Pull") {
197+
quit ..Pull()
198+
} elseif (menuItemName = "%AddToSC") {
199+
set ec = ..AddToSourceControl(InternalName)
200+
} elseif (menuItemName = "%RemoveFromSC") {
201+
set ec = ..RemoveFromSourceControl(InternalName)
202+
} elseif (menuItemName = "%Commit") {
203+
set Target = "Please enter a commit message"
204+
set Action = 7
205+
quit $$$OK
226206
}
227-
if ..IsImportAfter(menuItemName) && (Action = 3) {
228-
write "Choose Import All menu after work with Git!", !
229-
}
230-
//w Target,!
231207
quit ec
232208
}
233209

@@ -376,6 +352,10 @@ ClassMethod AddToSourceControl(InternalName As %String) As %Status
376352
if 'sc {
377353
set ec = $$$ADDSC(ec, sc)
378354
}
355+
// Necessary for items in new folders
356+
do ..RunGitCommand("add",.errStream,.outStream,..ExternalName(InternalName))
357+
do outStream.OutputToDevice()
358+
do errStream.OutputToDevice()
379359
}
380360
set ec = $$$ADDSC(ec, ..ExportSCList())
381361
quit ec
@@ -1340,3 +1320,4 @@ ClassMethod OutputConfigureMessage()
13401320
}
13411321

13421322
}
1323+

0 commit comments

Comments
 (0)