1
1
using System . Collections . Generic ;
2
+ using System . Linq ;
2
3
using Rubberduck . Parsing . VBA ;
3
4
using Rubberduck . VBEditor ;
4
5
@@ -15,15 +16,7 @@ public FormEventDeclarations(RubberduckParserState state)
15
16
16
17
public IReadOnlyList < Declaration > Load ( )
17
18
{
18
- Declaration formsClassModule = null ;
19
- foreach ( var declaration in _state . AllDeclarations )
20
- {
21
- if ( declaration . DeclarationType == DeclarationType . ClassModule &&
22
- declaration . Scope == "FM20.DLL;MSForms.FormEvents" )
23
- {
24
- formsClassModule = declaration ;
25
- }
26
- }
19
+ var formsClassModule = FormsClassModuleFromParserState ( _state ) ;
27
20
28
21
if ( formsClassModule == null )
29
22
{
@@ -33,127 +26,169 @@ public IReadOnlyList<Declaration> Load()
33
26
return AddHiddenMSFormDeclarations ( formsClassModule ) ;
34
27
}
35
28
36
- private IReadOnlyList < Declaration > AddHiddenMSFormDeclarations ( Declaration parentModule )
37
- {
38
- var userFormActivateEvent = new Declaration (
39
- new QualifiedMemberName (
40
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Activate" ) ,
41
- parentModule ,
42
- "FM20.DLL;MSForms.FormEvents" ,
43
- string . Empty ,
44
- string . Empty ,
45
- false ,
46
- false ,
47
- Accessibility . Global ,
48
- DeclarationType . Event ,
49
- false ,
50
- null ) ;
51
-
52
- var userFormDeactivateEvent = new Declaration (
53
- new QualifiedMemberName (
54
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Deactivate" ) ,
55
- parentModule ,
56
- "FM20.DLL;MSForms.FormEvents" ,
57
- string . Empty ,
58
- string . Empty ,
59
- false ,
60
- false ,
61
- Accessibility . Global ,
62
- DeclarationType . Event ,
63
- false ,
64
- null ) ;
65
-
66
- var userFormInitializeEvent = new Declaration (
67
- new QualifiedMemberName (
68
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Initialize" ) ,
69
- parentModule ,
70
- "FM20.DLL;MSForms.FormEvents" ,
71
- string . Empty ,
72
- string . Empty ,
73
- false ,
74
- false ,
75
- Accessibility . Global ,
76
- DeclarationType . Event ,
77
- false ,
78
- null ) ;
79
-
80
- var userFormQueryCloseEvent = new Declaration (
81
- new QualifiedMemberName (
82
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "QueryClose" ) ,
83
- parentModule ,
84
- "FM20.DLL;MSForms.FormEvents" ,
85
- string . Empty ,
86
- string . Empty ,
87
- false ,
88
- false ,
89
- Accessibility . Global ,
90
- DeclarationType . Event ,
91
- false ,
92
- null ) ;
93
-
94
- var userFormQueryCloseEventCancelParameter = new ParameterDeclaration (
95
- new QualifiedMemberName (
96
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Cancel" ) ,
97
- userFormQueryCloseEvent ,
98
- null ,
99
- new Selection ( ) ,
100
- "Integer" ,
101
- null ,
102
- string . Empty ,
103
- false ,
104
- true ) ;
105
-
106
- var userFormQueryCloseEventCloseModeParameter = new ParameterDeclaration (
107
- new QualifiedMemberName (
108
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "CloseMode" ) ,
109
- userFormQueryCloseEvent ,
110
- null ,
111
- new Selection ( ) ,
112
- "Integer" ,
113
- null ,
114
- string . Empty ,
115
- false ,
116
- true ) ;
117
-
118
- var userFormResizeEvent = new Declaration (
119
- new QualifiedMemberName (
120
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Resize" ) ,
121
- parentModule ,
122
- "FM20.DLL;MSForms.FormEvents" ,
123
- string . Empty ,
124
- string . Empty ,
125
- false ,
126
- false ,
127
- Accessibility . Global ,
128
- DeclarationType . Event ,
129
- false ,
130
- null ) ;
131
-
132
- var userFormTerminateEvent = new Declaration (
133
- new QualifiedMemberName (
134
- new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Terminate" ) ,
135
- parentModule ,
136
- "FM20.DLL;MSForms.FormEvents" ,
137
- string . Empty ,
138
- string . Empty ,
139
- false ,
140
- false ,
141
- Accessibility . Global ,
142
- DeclarationType . Event ,
143
- false ,
144
- null ) ;
145
-
146
- return new List < Declaration >
29
+ private static Declaration FormsClassModuleFromParserState ( RubberduckParserState state )
147
30
{
148
- userFormActivateEvent ,
149
- userFormDeactivateEvent ,
150
- userFormInitializeEvent ,
151
- userFormQueryCloseEvent ,
152
- userFormQueryCloseEventCancelParameter ,
153
- userFormQueryCloseEventCloseModeParameter ,
154
- userFormResizeEvent ,
155
- userFormTerminateEvent
156
- } ;
157
- }
31
+ return state . AllDeclarations . LastOrDefault ( declaration => declaration . DeclarationType == DeclarationType . ClassModule
32
+ && declaration . Scope == "FM20.DLL;MSForms.FormEvents" ) ;
33
+ }
34
+
35
+
36
+ private IReadOnlyList < Declaration > AddHiddenMSFormDeclarations ( Declaration formsClassModule )
37
+ {
38
+
39
+ var userFormActivateEvent = UserFormActivateEvent ( formsClassModule ) ;
40
+ var userFormDeactivateEvent = UserFormDeactivateEvent ( formsClassModule ) ;
41
+ var userFormInitializeEvent = UserFormInitializeEvent ( formsClassModule ) ;
42
+ var userFormQueryCloseEvent = UserFormQueryCloseEvent ( formsClassModule ) ;
43
+ var userFormQueryCloseEventCancelParameter = UserFormQueryCloseEventCancelParameter ( userFormQueryCloseEvent ) ;
44
+ var userFormQueryCloseEventCloseModeParameter = UserFormQueryCloseEventCloseModeParameter ( userFormQueryCloseEvent ) ;
45
+ var userFormResizeEvent = UserFormResizeEvent ( formsClassModule ) ;
46
+ var userFormTerminateEvent = UserFormTerminateEvent ( formsClassModule ) ;
47
+
48
+ return new List < Declaration >
49
+ {
50
+ userFormActivateEvent ,
51
+ userFormDeactivateEvent ,
52
+ userFormInitializeEvent ,
53
+ userFormQueryCloseEvent ,
54
+ userFormQueryCloseEventCancelParameter ,
55
+ userFormQueryCloseEventCloseModeParameter ,
56
+ userFormResizeEvent ,
57
+ userFormTerminateEvent
58
+ } ;
59
+ }
60
+
61
+ private static Declaration UserFormActivateEvent ( Declaration formsClassModule )
62
+ {
63
+ return new Declaration (
64
+ new QualifiedMemberName (
65
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Activate" ) ,
66
+ formsClassModule ,
67
+ "FM20.DLL;MSForms.FormEvents" ,
68
+ string . Empty ,
69
+ string . Empty ,
70
+ false ,
71
+ false ,
72
+ Accessibility . Global ,
73
+ DeclarationType . Event ,
74
+ false ,
75
+ null ) ;
76
+ }
77
+
78
+ private static Declaration UserFormDeactivateEvent ( Declaration formsClassModule )
79
+ {
80
+ return new Declaration (
81
+ new QualifiedMemberName (
82
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Deactivate" ) ,
83
+ formsClassModule ,
84
+ "FM20.DLL;MSForms.FormEvents" ,
85
+ string . Empty ,
86
+ string . Empty ,
87
+ false ,
88
+ false ,
89
+ Accessibility . Global ,
90
+ DeclarationType . Event ,
91
+ false ,
92
+ null ) ;
93
+ }
94
+
95
+ private static Declaration UserFormInitializeEvent ( Declaration formsClassModule )
96
+ {
97
+ return new Declaration (
98
+ new QualifiedMemberName (
99
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Initialize" ) ,
100
+ formsClassModule ,
101
+ "FM20.DLL;MSForms.FormEvents" ,
102
+ string . Empty ,
103
+ string . Empty ,
104
+ false ,
105
+ false ,
106
+ Accessibility . Global ,
107
+ DeclarationType . Event ,
108
+ false ,
109
+ null ) ;
110
+ }
111
+
112
+ private static Declaration UserFormQueryCloseEvent ( Declaration formsClassModule )
113
+ {
114
+ return new Declaration (
115
+ new QualifiedMemberName (
116
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "QueryClose" ) ,
117
+ formsClassModule ,
118
+ "FM20.DLL;MSForms.FormEvents" ,
119
+ string . Empty ,
120
+ string . Empty ,
121
+ false ,
122
+ false ,
123
+ Accessibility . Global ,
124
+ DeclarationType . Event ,
125
+ false ,
126
+ null ) ;
127
+ }
128
+
129
+ private static ParameterDeclaration UserFormQueryCloseEventCancelParameter ( Declaration userFormQueryCloseEvent )
130
+ {
131
+ return new ParameterDeclaration (
132
+ new QualifiedMemberName (
133
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Cancel" ) ,
134
+ userFormQueryCloseEvent ,
135
+ null ,
136
+ new Selection ( ) ,
137
+ "Integer" ,
138
+ null ,
139
+ string . Empty ,
140
+ false ,
141
+ true ) ;
142
+ }
143
+
144
+ private static ParameterDeclaration UserFormQueryCloseEventCloseModeParameter ( Declaration userFormQueryCloseEvent )
145
+ {
146
+ return new ParameterDeclaration (
147
+ new QualifiedMemberName (
148
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "CloseMode" ) ,
149
+ userFormQueryCloseEvent ,
150
+ null ,
151
+ new Selection ( ) ,
152
+ "Integer" ,
153
+ null ,
154
+ string . Empty ,
155
+ false ,
156
+ true ) ;
157
+ }
158
+
159
+ private static Declaration UserFormResizeEvent ( Declaration formsClassModule )
160
+ {
161
+ return new Declaration (
162
+ new QualifiedMemberName (
163
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Resize" ) ,
164
+ formsClassModule ,
165
+ "FM20.DLL;MSForms.FormEvents" ,
166
+ string . Empty ,
167
+ string . Empty ,
168
+ false ,
169
+ false ,
170
+ Accessibility . Global ,
171
+ DeclarationType . Event ,
172
+ false ,
173
+ null ) ;
174
+ }
175
+
176
+ private static Declaration UserFormTerminateEvent ( Declaration formsClassModule )
177
+ {
178
+ return new Declaration (
179
+ new QualifiedMemberName (
180
+ new QualifiedModuleName ( "MSForms" , "C:\\ WINDOWS\\ system32\\ FM20.DLL" , "FormEvents" ) , "Terminate" ) ,
181
+ formsClassModule ,
182
+ "FM20.DLL;MSForms.FormEvents" ,
183
+ string . Empty ,
184
+ string . Empty ,
185
+ false ,
186
+ false ,
187
+ Accessibility . Global ,
188
+ DeclarationType . Event ,
189
+ false ,
190
+ null ) ;
191
+ }
192
+
158
193
}
159
194
}
0 commit comments