1
-
2
- using System ;
1
+ using System ;
3
2
using System . Collections . Generic ;
4
3
using System . Linq ;
5
4
using Autodesk . Revit . UI ;
5
+ using pyRevitExtensionParser ;
6
6
using pyRevitAssemblyBuilder . AssemblyMaker ;
7
- using pyRevitAssemblyBuilder . Shared ;
8
7
9
8
namespace pyRevitAssemblyBuilder . SessionManager
10
9
{
@@ -17,60 +16,48 @@ public UIManagerService(UIApplication uiApp)
17
16
_uiApp = uiApp ;
18
17
}
19
18
20
- public void BuildUI ( WrappedExtension extension , ExtensionAssemblyInfo assemblyInfo )
19
+ public void BuildUI ( ParsedExtension extension , ExtensionAssemblyInfo assemblyInfo )
21
20
{
22
21
if ( extension ? . Children == null )
23
22
return ;
24
23
25
- foreach ( var obj in extension . Children as IEnumerable < object > ?? Enumerable . Empty < object > ( ) )
26
- RecursivelyBuildUI ( obj , null , null , extension . Name , assemblyInfo ) ;
24
+ foreach ( var component in extension . Children )
25
+ RecursivelyBuildUI ( component , null , null , extension . Name , assemblyInfo ) ;
27
26
}
28
27
29
- private void RecursivelyBuildUI ( object obj , object parentComponent , RibbonPanel parentPanel , string tabName , ExtensionAssemblyInfo assemblyInfo )
28
+ private void RecursivelyBuildUI ( ParsedComponent component , ParsedComponent parentComponent , RibbonPanel parentPanel , string tabName , ExtensionAssemblyInfo assemblyInfo )
30
29
{
31
- var component = obj as FileCommandComponent ;
32
- if ( component == null )
33
- return ;
34
-
35
- var type = CommandComponentTypeExtensions . FromExtension ( component . Type ) ;
36
-
37
- switch ( type )
30
+ switch ( component . Type )
38
31
{
39
32
case CommandComponentType . Tab :
40
33
try { _uiApp . CreateRibbonTab ( component . Name ) ; } catch { }
41
- foreach ( var child in component . Children ?? Enumerable . Empty < object > ( ) )
34
+ foreach ( var child in component . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
42
35
RecursivelyBuildUI ( child , component , null , component . Name , assemblyInfo ) ;
43
36
break ;
44
37
45
38
case CommandComponentType . Panel :
46
39
var panel = _uiApp . GetRibbonPanels ( tabName ) . FirstOrDefault ( p => p . Name == component . Name )
47
40
?? _uiApp . CreateRibbonPanel ( tabName , component . Name ) ;
48
- foreach ( var child in component . Children ?? Enumerable . Empty < object > ( ) )
41
+ foreach ( var child in component . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
49
42
RecursivelyBuildUI ( child , component , panel , tabName , assemblyInfo ) ;
50
43
break ;
51
44
52
45
case CommandComponentType . Stack :
53
46
var itemDataList = new List < RibbonItemData > ( ) ;
54
- var originalItems = new List < FileCommandComponent > ( ) ;
47
+ var originalItems = new List < ParsedComponent > ( ) ;
55
48
56
- foreach ( var child in component . Children as IEnumerable < object > ?? Enumerable . Empty < object > ( ) )
49
+ foreach ( var child in component . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
57
50
{
58
- var subCmd = child as FileCommandComponent ;
59
- if ( subCmd == null )
60
- continue ;
61
-
62
- var subType = CommandComponentTypeExtensions . FromExtension ( subCmd . Type ) ;
63
-
64
- if ( subType == CommandComponentType . PushButton )
51
+ if ( child . Type == CommandComponentType . PushButton )
65
52
{
66
- itemDataList . Add ( CreatePushButton ( subCmd , assemblyInfo ) ) ;
67
- originalItems . Add ( subCmd ) ;
53
+ itemDataList . Add ( CreatePushButton ( child , assemblyInfo ) ) ;
54
+ originalItems . Add ( child ) ;
68
55
}
69
- else if ( subType == CommandComponentType . PullDown )
56
+ else if ( child . Type == CommandComponentType . PullDown )
70
57
{
71
- var pdData = new PulldownButtonData ( subCmd . UniqueId , subCmd . Name ) ;
58
+ var pdData = new PulldownButtonData ( child . UniqueId , child . Name ) ;
72
59
itemDataList . Add ( pdData ) ;
73
- originalItems . Add ( subCmd ) ;
60
+ originalItems . Add ( child ) ;
74
61
}
75
62
}
76
63
@@ -91,12 +78,11 @@ private void RecursivelyBuildUI(object obj, object parentComponent, RibbonPanel
91
78
92
79
if ( ribbonItem is PulldownButton pdBtn )
93
80
{
94
- foreach ( var child in origComponent . Children ?? Enumerable . Empty < object > ( ) )
81
+ foreach ( var sub in origComponent . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
95
82
{
96
- if ( child is FileCommandComponent subCmd &&
97
- CommandComponentTypeExtensions . FromExtension ( subCmd . Type ) == CommandComponentType . PushButton )
83
+ if ( sub . Type == CommandComponentType . PushButton )
98
84
{
99
- var subData = CreatePushButton ( subCmd , assemblyInfo ) ;
85
+ var subData = CreatePushButton ( sub , assemblyInfo ) ;
100
86
pdBtn . AddPushButton ( subData ) ;
101
87
}
102
88
}
@@ -124,12 +110,11 @@ private void RecursivelyBuildUI(object obj, object parentComponent, RibbonPanel
124
110
var splitBtn = parentPanel ? . AddItem ( splitData ) as SplitButton ;
125
111
if ( splitBtn == null ) return ;
126
112
127
- foreach ( var child in component . Children ?? Enumerable . Empty < object > ( ) )
113
+ foreach ( var sub in component . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
128
114
{
129
- if ( child is FileCommandComponent subCmd &&
130
- CommandComponentTypeExtensions . FromExtension ( subCmd . Type ) == CommandComponentType . PushButton )
115
+ if ( sub . Type == CommandComponentType . PushButton )
131
116
{
132
- var subData = CreatePushButton ( subCmd , assemblyInfo ) ;
117
+ var subData = CreatePushButton ( sub , assemblyInfo ) ;
133
118
splitBtn . AddPushButton ( subData ) ;
134
119
}
135
120
}
@@ -138,7 +123,7 @@ private void RecursivelyBuildUI(object obj, object parentComponent, RibbonPanel
138
123
}
139
124
140
125
private PulldownButtonData CreatePulldown (
141
- FileCommandComponent component ,
126
+ ParsedComponent component ,
142
127
RibbonPanel parentPanel ,
143
128
string tabName ,
144
129
ExtensionAssemblyInfo assemblyInfo ,
@@ -153,26 +138,25 @@ private PulldownButtonData CreatePulldown(
153
138
if ( pdBtn == null )
154
139
return null ;
155
140
156
- foreach ( var child in component . Children ?? Enumerable . Empty < object > ( ) )
141
+ foreach ( var sub in component . Children ?? Enumerable . Empty < ParsedComponent > ( ) )
157
142
{
158
- if ( child is FileCommandComponent subCmd &&
159
- CommandComponentTypeExtensions . FromExtension ( subCmd . Type ) == CommandComponentType . PushButton )
143
+ if ( sub . Type == CommandComponentType . PushButton )
160
144
{
161
- var subData = CreatePushButton ( subCmd , assemblyInfo ) ;
145
+ var subData = CreatePushButton ( sub , assemblyInfo ) ;
162
146
pdBtn . AddPushButton ( subData ) ;
163
147
}
164
148
}
165
149
166
150
return pdData ;
167
151
}
168
152
169
- private PushButtonData CreatePushButton ( FileCommandComponent command , ExtensionAssemblyInfo assemblyInfo )
153
+ private PushButtonData CreatePushButton ( ParsedComponent component , ExtensionAssemblyInfo assemblyInfo )
170
154
{
171
155
return new PushButtonData (
172
- command . UniqueId ,
173
- command . Name ,
156
+ component . UniqueId ,
157
+ component . Name ,
174
158
assemblyInfo . Location ,
175
- command . UniqueId
159
+ component . UniqueId
176
160
) ;
177
161
}
178
162
}
0 commit comments