Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsrvsel_class.pls
More file actions
353 lines (313 loc) · 10.6 KB
/
srvsel_class.pls
File metadata and controls
353 lines (313 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
*---------------------------------------------------------------
.
. Program Name: srvsel_class
. Description: This classmodule displays a Modal Dialog and allows an end-user to
. to a select file that are to be downloaded from a PL/B Server.
.
. Revision History:
.
. 17 Jul 23 W Keech
. Original code
.
. This program is created using 'CLASSMODULE'.
. In this case, this program can ONLY be accessed using public
. entry points ( FUNCTIONs ) included in this PL/B program.
.
*
. The 'CLASSMODULE' MUST be the first statement in this program
. logic.
.
.
*---------------------------------------------------------------
eStandAlone EQU 0
.
%IF eStandAlone = 0
CLASSMODULE
%ENDIF
INCLUDE plbequ.inc
INCLUDE plbmeth.inc
INCLUDE plbstdlib.inc
*---------------------------------------------------------------
.
. All PL/B variables in this class module are private.
. COMMON variables are NOT ALLOWED in a class module.
. Only public access is through FUNCTIONs.
. CHAIN, TRAP, and Routine are not allowed.
. The class module can not be executed directly.
. LRoutine is allowed.
ClassForm PLFORM "webfileselectf.plf"
xSortCol FORM 2(0..2), ("11"), ("7"), ("6")
.
D16000 DIM 16000
DEST DIM ^, D16000
.
LastScan DIM 300 // LASTSCAN_PATH configuration!
ScanPath DIM 300 // LASTSCAN_PATH configuration
.
CurPath DIM 300 // File path
CurPrefix DIM 300 // Prefix (example: prt_) or NULL
CurSearchName DIM 300 // Search named (example: '*.*', '*.pdf', ...etc
CurOutFile DIM 300
*................................................................
.
. Class Create
.
ClassCreate FUNCTION
ENTRY
PATH CURRENT INTO CurPath
MOVE "*.*" INTO CurSearchName
CLEAR CurPrefix
FORMLOAD ClassForm
FUNCTIONEND
*................................................................
.
. Class Destroy
.
ClassDestroy FUNCTION
ENTRY
DESTROY SelectWin
FUNCTIONEND
*................................................................
.
. Properties
.
Get_Prefix FUNCTION // Get the current Prefix (example: prt_) or NULL
ENTRY
FUNCTIONEND USING CurPrefix
.
Set_Prefix FUNCTION // Set the current Prefix (example: prt_) or NULL
NewPrefix DIM 300
ENTRY
.
MOVE NewPrefix, CurPrefix
.
FUNCTIONEND
.
Get_Path FUNCTION // Get current file path
ENTRY
FUNCTIONEND USING CurPath
.
Set_Path FUNCTION // Set the current file path
NewPath DIM 300
ENTRY
.
MOVE NewPath, CurPath
.
FUNCTIONEND
Get_Search FUNCTION // Get the current Search named (example: '*.*', '*.pdf', ...etc
ENTRY
FUNCTIONEND USING CurSearchName
.
Set_Search FUNCTION // Set the current Search named (example: '*.*', '*.pdf', ...etc
NewSearch DIM 300
ENTRY
.
MOVE NewSearch, CurSearchName
.
FUNCTIONEND
*................................................................
.
. Methods
.
GetFileName FUNCTION // Method the request a filename
ENTRY
Char1 DIM 1
fIsUnix FORM 3 // 99 --> Unix PLB runtime!
dPathChr INIT "\" // '\' --> Windows default
TYPE CurSearchName
IF EOS
MOVE "*.*", CurSearchName
ENDIF
TYPE CurPath
RETURN IF EOS
MOVE CurPath, ScanPath
CHOP ScanPath, ScanPath
TYPE ScanPath
RETURN IF EOS
GETMODE *DISPFLUSH=fIsUnix // Shortcut to determine if Unix runtime being used.
IF ( fIsUnix == "99" )
MOVE "/", dPathChr //Unix path character
ENDIF
ENDSET ScanPath
MOVE ScanPath, Char1
IF ( ( Char1 == "\" ) or ( Char1 == "/" ) )
BUMP ScanPath, -1
LENSET ScanPath
RESET ScanPath
ELSE
RESET ScanPath
ENDIF
PACK LastScan, ScanPath, dPathChr, CurPrefix, CurSearchName
LISTVIEW1.DeleteAllItems
CALL LoadListView USING LastScan
SETPROP SelectWin, VISIBLE=1 //Modal Dialog
GETPROP SelectFileST, TEXT=CurOutFile
FUNCTIONEND USING CurOutFile
*................................................................
.
. Load up the listview with file names
.
LoadListView LFUNCTION
SearchDir DIM 200
ENTRY
Char1 DIM 1
Char150 DIM 150
Char200 DIM 200
.
iCnt INTEGER 4
Mode INTEGER 4,"0x23" //Exclude: Hidden, Directories, Raw Write Time
.
FileName DIM 150
TimeStamp DIM 14
.
XDate DIM 20
.
Y DIM 2
YY DIM 2
MM DIM 2
DD DIM 2
hh DIM 2
mmm DIM 2
sss DIM 4
.
AmPm DIM 2
.
fhh FORM 2
.
.........................
.
FINDDIR SearchDir, DEST, MODE=Mode
TYPE DEST
RETURN IF EOS
PACK DEST, DEST, "|x"
LOOP
EXPLODE DEST,"|",Char200
IF ZERO
BREAK
ENDIF
EXPLODE Char200, ";", FileName, TimeStamp
UNPACK FileName, Char1, Char150
UNPACK TimeStamp, Y, YY, MM, DD, hh, mmm, sss
.
MOVE hh, fhh
IF ( fhh >= "12" )
SUB "12", fhh
MOVE fhh, hh
REPLACE " 0", hh
MOVE "PM", AmPm
ELSE
MOVE "AM", AmPm
ENDIF
.
PACK xDate, MM, "/", DD, "/", YY, " ", hh, ":", mmm, " ", AmPm
.
OR 0x20,Char1
.
LISTVIEW1.InsertItemEx USING Char150, iCnt, *SubItem1=xDate, *SubItem2=TimeStamp
.
REPEAT
.
MOVE "11", xSortCol(0)
MOVE "8", xSortCol(1)
MOVE "10", xSortCol(2) //Default to descending TIMESTAMP 2.40 2.40
ListView1.SortColumn USING *COLUMN=2:
*TYPE=XSORTCOL(2): //Pre-sort TimeStamp 2.40
*MASK="YYYYMMDDHHMMSS"
FUNCTIONEND
*................................................................
.
. Handler for an item click
.
ItemClick LFUNCTION
Result FORM 10
ENTRY
SelName DIM 100
Minus1 INTEGER 4, "0xFFFFFFFF"
.
RETURN IF ( Result == Minus1 )
.
CLEAR SelName
ListView1.GetItemText GIVING SelName USING Result
TYPE SelName
RETURN IF EOS
SETPROP SelectFileST, TEXT=SelName
FUNCTIONEND
*................................................................
.
. Handler for a selection change
.
Change LFUNCTION
Result FORM 8
ENTRY
SelName DIM 100
Minus1 INTEGER 4, "0xFFFFFFFF"
RETURN IF ( Result == Minus1 )
CLEAR SelName
ListView1.GetItemText GIVING SelName USING Result
TYPE SelName
RETURN IF EOS
SETPROP SelectFileST, TEXT=SelName
FUNCTIONEND
*................................................................
.
. Handler for the OK button
.
ExitOK LFUNCTION
ENTRY
SETPROP SelectWin, VISIBLE=0
FUNCTIONEND
*................................................................
.
. Handler for the CANCEL button
.
CanceL LFUNCTION
ENTRY
SETPROP SelectFileST, TEXT="" //No file is selected!
SETPROP SelectWin, VISIBLE=0
FUNCTIONEND
*................................................................
.
. Handler for a column click
.
ColClick LFUNCTION
nCol FORM 2
ENTRY
.
......
.
xCol FORM 2
nvar FORM 2 //debug
.
RETURN IF ( nCol > 1 )
.
ADD "1", xSortCol(nCol)
.
IF ( nCol == 1 )
ADD "1", xSortCol(2) ;TIMESTAMP 2.40
ADD "1", nCol, xCol
.
IF ( xSortCol(nCol) > 8 )
MOVE "7", xSortCol(nCol)
MOVE "9", xSortCol(2)
ENDIF
ListView1.SortColumn USING *COLUMN=2, *TYPE=xSortCol(2):
*MASK="YYYYMMDDHHMMSS"
.
ENDIF
.
FUNCTIONEND
*................................................................
.
. Testing
.
%IF eStandAlone = 1
SampleOutName DIM 300
CALL ClassCreate
CALL GetFileName Giving SampleOutName
%ENDIF
.
...............................................................................
.
.
...............................................................................
.
You can’t perform that action at this time.
