source: branches/guitools-2.0/evfsgui/evfsgui.VRX@ 404

Last change on this file since 404 was 404, checked in by Herwig Bauernfeind, 16 years ago

GUI-Tools: Added EVFSGUI 2.0.3

File size: 129.3 KB
Line 
1/*:VRX Main
2*/
3/* Main
4*/
5Main:
6/* Process the arguments.
7 Get the parent window.
8*/
9 parse source . calledAs .
10 parent = ""
11 argCount = arg()
12 argOff = 0
13 if( calledAs \= "COMMAND" )then do
14 if argCount >= 1 then do
15 parent = arg(1)
16 argCount = argCount - 1
17 argOff = 1
18 end
19 end; else do
20 call VROptions 'ImplicitNames'
21 call VROptions 'NoEchoQuit'
22 end
23 InitArgs.0 = argCount
24 if( argCount > 0 )then do i = 1 to argCount
25 InitArgs.i = arg( i + argOff )
26 end
27 drop calledAs argCount argOff
28
29/* Load the windows
30*/
31 call VRInit
32 parse source . . spec
33 _VREPrimaryWindowPath = ,
34 VRParseFileName( spec, "dpn" ) || ".VRW"
35 _VREPrimaryWindow = ,
36 VRLoad( parent, _VREPrimaryWindowPath )
37 drop parent spec
38 if( _VREPrimaryWindow == "" )then do
39 call VRMessage "", "Cannot load window:" VRError(), ,
40 "Error!"
41 _VREReturnValue = 32000
42 signal _VRELeaveMain
43 end
44
45/* Process events
46*/
47 call Init
48 signal on halt
49 do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) )
50 _VREEvent = VREvent()
51 interpret _VREEvent
52 end
53_VREHalt:
54 _VREReturnValue = Fini()
55 call VRDestroy _VREPrimaryWindow
56_VRELeaveMain:
57 call VRFini
58exit _VREReturnValue
59
60VRLoadSecondary:
61 __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 )
62 if __vrlsWait then do
63 call VRFlush
64 end
65 __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) )
66 if __vrlsHWnd = '' then signal __vrlsDone
67 if __vrlsWait \= 1 then signal __vrlsDone
68 call VRSet __vrlsHWnd, 'WindowMode', 'Modal'
69 __vrlsTmp = __vrlsWindows.0
70 if( DataType(__vrlsTmp) \= 'NUM' ) then do
71 __vrlsTmp = 1
72 end
73 else do
74 __vrlsTmp = __vrlsTmp + 1
75 end
76 __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd )
77 __vrlsWindows.0 = __vrlsTmp
78 do while( VRIsValidObject( VRWindow() ) = 1 )
79 __vrlsEvent = VREvent()
80 interpret __vrlsEvent
81 end
82 __vrlsTmp = __vrlsWindows.0
83 __vrlsWindows.0 = __vrlsTmp - 1
84 call VRWindow __vrlsWindows.__vrlsTmp
85 __vrlsHWnd = ''
86__vrlsDone:
87return __vrlsHWnd
88
89/*:VRX __VXREXX____APPENDS__
90*/
91__VXREXX____APPENDS__:
92/*
93#append U:\Develop\Samba\guitools-2.0\shared\cltinit.vrs
94#append U:\Develop\Samba\guitools-2.0\shared\inittempdir.vrs
95#append U:\Develop\Samba\guitools-2.0\shared\nlv.vrs
96#append U:\Develop\Samba\guitools-2.0\shared\rexx_md5.vrs
97#append U:\Develop\Samba\guitools-2.0\shared\smbtree.vrs
98*/
99return
100/*:VRX _AddTemplates
101*/
102_AddTemplates:
103
104 VolTplRH = VRMethod('CN_CURRENT', 'AddRecord', , 'First', 'Volume template', '#10:PMWP.DLL' )
105 MpTplRH = VRMethod('CN_CURRENT', 'AddRecord', VolTplRH, 'First', 'Mountpoint template', '#10:PMWP.DLL' )
106return
107
108/*:VRX _ContainersInit
109*/
110_ContainersInit:
111
112 /* Connection details */
113 CD.StatusFH = VRMethod( "CN_CONDET", "AddField", "Icon", "Status" )
114 CD.mpointFH = VRMethod( "CN_CONDET", "AddField", "String", "mpoint" )
115 CD.mpidxFH = VRMethod( "CN_CONDET", "AddField", "String", "index" )
116 CD.workgroupFH = VRMethod( "CN_CONDET", "AddField", "String", "workgroup" )
117 CD.serverFH = VRMethod( "CN_CONDET", "AddField", "String", "server" )
118 CD.shareFH = VRMethod( "CN_CONDET", "AddField", "String", "share" )
119 CD.userFH = VRMethod( "CN_CONDET", "AddField", "String", "user" )
120 CD.passwordFH = VRMethod( "CN_CONDET", "AddField", "String", "password" )
121 CD.spasswordFH = VRMethod( "CN_CONDET", "AddField", "String", "spassword" )
122 CD.masterFH = VRMethod( "CN_CONDET", "AddField", "String", "master" )
123 CD.mtypeFH = VRMethod( "CN_CONDET", "AddField", "String", "mastertype" )
124 CD.memlenFH = VRMethod( "CN_CONDET", "AddField", "String", "memlen" )
125 CD.easupportFH = VRMethod( "CN_CONDET", "AddField", "String", "easupport" )
126 CD.logfileFH = VRMethod( "CN_CONDET", "AddField", "String", "logfile" )
127 CD.loglevelFH = VRMethod( "CN_CONDET", "AddField", "String", "loglevel" )
128 CD.rwFH = VRMethod( "CN_CONDET", "AddField", "String", "readonly" )
129 CD.hashFH = VRMethod( "CN_CONDET", "AddField", "String", "hash" )
130
131 /* Connection details */
132 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 0)
133 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 0)
134 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 0)
135 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 0)
136 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 0)
137 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 0)
138 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 0)
139 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 0)
140 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 0)
141
142 ok = VRSet("CN_CONDET", "DetailSort", cd.mpointfh )
143
144 /* NLV columns */
145 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.statusfh , "Title", strip(NLVGetMessage(67),"T",":"))
146 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpointfh , "Title", strip(NLVGetMessage(27),"T",":"))
147 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.workgroupfh , "Title", strip(NLVGetMessage(21),"T",":"))
148 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.serverFH , "Title", strip(NLVGetMessage(19),"T",":"))
149 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.shareFH , "Title", strip(NLVGetMessage(20),"T",":"))
150 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.userfh , "Title", strip(NLVGetMessage(25),"T",":"))
151 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.easupportfh , "Title", strip(NLVGetMessage(68),"T",":"))
152 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.rwfh , "Title", strip(NLVGetMessage(69),"T",":"))
153return
154/*:VRX _CreateSmbConf
155*/
156_CreateSmbConf:
157 IF options.!debug == 1 THEN SAY time()' '||"_CreateSmbConf started"
158 call lineout samba.!smbconf, '# Samba config file created using EVFSGUI ver. 'word(VRGet("Main","Hinttext"),2)
159 call lineout samba.!smbconf, '# from 'value("USER",,'OS2ENVIRONMENT')'@'value("HOSTNAME",,'OS2ENVIRONMENT')
160 call lineout samba.!smbconf, '# Date: 'date()' 'time()
161 call lineout samba.!smbconf, '[global]'
162 if settings.!network <> '' then do
163 call lineout samba.!smbconf, '09'x||'workgroup = 'settings.!network
164 end
165 else do
166 call lineout samba.!smbconf, '09'x||'workgroup = WORKGROUP'
167 end
168 call lineout samba.!smbconf, '09'x||'log level = 0'
169 ok = stream(samba.!smbconf,'c','close')
170 IF options.!debug == 1 THEN SAY time()' '||"_CreateSmbConf done"
171return
172
173/*:VRX _DialogPopulate
174*/
175_DialogPopulate:
176
177 ok = VRMethod( "CN_smbtree", "GetRecordList", "Visible", "rh." )
178
179 ok = VRMethod("EF_SHARE", "Reset")
180 ok = VRMethod("EF_SERVER", "Reset")
181 ok = VRMethod("EF_NETWORK", "Reset")
182
183 do I = 1 to rh.0
184
185 Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Userdata")
186 ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Caption")
187
188 parse var ResName ResName '0D0A'x .
189 ResName = strip(ResName)
190 parse var userdata ResType '|' .
191
192 select
193 when ResType = "WORKGROUP" then ok = VRMethod("EF_NETWORK","AddString", ResName)
194 when ResType = "SERVER" then ok = VRMethod("EF_SERVER", "AddString", ResName)
195 when ResType = "DISK" then ok = VRMethod("EF_SHARE", "AddString", ResName)
196 otherwise nop
197 end
198 end
199
200return
201
202/*:VRX _GUIInit
203*/
204_GUIInit:
205 CALL VRSet 'Main', 'HelpFile', settings.!helpfile
206
207 CALL NLVSetText 'Main', 'Caption', 1
208 CALL NLVSetText 'DT_CURRENT', 'Caption', 10
209 CALL NLVSetText 'PB_DETACH', 'Caption', 11
210 CALL NLVSetText 'PB_UNMOUNT', 'Caption', 12
211 CALL NLVSetText 'DT_DIALOG', 'Caption', 13
212 CALL NLVSetText 'DT_MOUNT', 'Caption', 14
213
214 CALL NLVSetText 'DT_SERVER', 'Caption', 19
215 CALL NLVSetText 'DT_SHARE', 'Caption', 20
216 CALL NLVSetText 'CHK_MTYPE', 'Caption', 23
217 CALL NLVSetText 'PB_ADVANCED', 'Caption', 24
218 CALL NLVSetText 'DT_USER', 'Caption', 25
219 CALL NLVSetText 'DT_PASSWORD', 'Caption', 26
220 CALL NLVSetText 'DT_MPOINT', 'Caption', 27
221 CALL NLVSetText 'PB_MOUNT', 'Caption', 28
222 CALL NLVSetText 'PB_EDITCANCEL','Caption', 3
223
224 CALL NLVSetText 'PB_AUTOSTART','Caption', 35
225 CALL NLVSetText 'PB_CLOSE', 'Caption', 29
226 CALL NLVSetText 'PB_SAVE', 'Caption', 30
227 CALL NLVSetText 'PB_LOAD', 'Caption', 31
228 CALL NLVSetText 'PB_HELP', 'Caption', 4
229
230 /* Herwig B. */
231 CALL NLVSetText 'MENU_CONTEXT_DETACH', 'Caption', 11
232 CALL NLVSetText 'MENU_CONTEXT_UNMOUNT', 'Caption', 12
233 CALL NLVSetText 'MENU_CONTEXT_EDIT', 'Caption', 32
234
235 CALL NLVSetText 'Menu_File', 'Caption', 80
236 CALL NLVSetText 'Menu_Context', 'Caption', 81
237 CALL NLVSetText 'Menu_View', 'Caption', 82
238 CALL NLVSetText 'Menu_Selected', 'Caption', 83
239 CALL NLVSetText 'Menu_Help', 'Caption', 84
240
241 CALL NLVSetText 'Menu_View_Dialog', 'Caption', 85
242 CALL NLVSetText 'Menu_View_SmbTree', 'Caption', 86
243 CALL NLVSetText 'Menu_View_Buttons', 'Caption', 87
244 CALL NLVSetText 'Menu_View_ConDet', 'Caption', 88
245 CALL NLVSetText 'Menu_View_MiniIcons','Caption', 70
246
247 CALL NLVSetText 'Menu_File_Autostart', 'Caption', 35
248 CALL NLVSetText 'Menu_File_Autostart_Activate', 'Caption', 76
249 CALL NLVSetText 'Menu_File_Autostart_Deactivate','Caption', 77
250 CALL NLVSetText 'Menu_File_CLOSE', 'Caption', 29
251 CALL NLVSetText 'Menu_File_SAVE', 'Caption', 30
252 CALL NLVSetText 'Menu_File_LOAD', 'Caption', 31
253 CALL NLVSetText 'Menu_File_SETTINGS', 'Caption', 47
254 CALL NLVSetText 'Menu_File_ADVANCED', 'Caption', 40
255
256 CALL NLVSetText 'Menu_Selected_Connect', 'Caption', 28
257 CALL NLVSetText 'Menu_Selected_Remove', 'Caption', 12
258 CALL NLVSetText 'Menu_Selected_Retry', 'Caption', 90
259 CALL NLVSetText 'Menu_Selected_Info', 'Caption', 92
260 CALL NLVSetText 'Menu_Selected_Default_Workgroup','Caption',75
261
262 CALL NLVSetText 'Menu_Help_Extended', 'Caption', 4
263 CALL NLVSetText 'Menu_Help_About', 'Caption', 91
264
265 CALL NLVSetText 'DT_SMBTREE', 'Caption', 39
266 CALL NLVSetText 'PB_CONNECT', 'Caption', 28
267 CALL NLVSetText 'PB_REFRESH', 'Caption', 38
268
269 CALL NLVSetText 'DT_CONDET', 'Caption', 63
270 CALL NLVSetText 'PB_CONDET_SAVE', 'Caption', 30
271 CALL NLVSetText 'PB_CONDET_LOAD', 'Caption', 31
272
273
274 mtype.0 = 4
275 mtype.1 = NLVGetMessage( 15 )
276 mtype.2 = NLVGetMessage( 16 )
277 mtype.3 = NLVGetMessage( 17 )
278 mtype.4 = NLVGetMessage( 18 )
279 IF (mtype.1 \= '' & mtype.2 \= '' & mtype.3 \= '' & mtype.4 \= '') THEN DO
280 CALL VRMethod CB_MOUNT, 'Clear'
281 CALL VRMethod CB_MOUNT, 'AddStringList', 'mtype.'
282 END
283
284 ok = VRSet("Main","Width", 8200)
285 ok = VRseT("Pict_Throbber","Width", VRMethod( "Screen", "PixelsToTwips", 32 ))
286 ok = VRseT("Pict_Throbber","Height", VRMethod( "Screen", "PixelsToTwips", 32 ))
287
288 /* Setup SmbTree View */
289 ok = VRset("GB_SMBTREE","Painting", 0)
290
291 /* Common margin around controls */
292 margin = ((VRGet("Main", "InteriorLeft") / 3) * 2) + 2
293
294 ok = VRSet("DT_STATUSBAR", "Caption", VRGet("Main", "HintText"))
295 call Main_Resize
296return
297
298/*:VRX _PassiveLoad
299*/
300_PassiveLoad:
301Say "_PassiveLoad started"
302 do cnt = 1 to 255
303 resdata = VRGetIni( "PassiveConnections", cnt, settings.!ini )
304 if resdata = "" then leave
305
306 PARSE Var resdata p_mpoint resource rwFlag
307
308say "resdata ="resdata
309say "p_mpoint ="p_mpoint
310say "resource ="resource
311say "rwFlag ="rwFlag
312
313
314
315/* vfs.!drive = FILESPEC('DRIVE', node )
316 vfs.!mountpoint = STRIP( node, 'T', '\') */
317
318 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
319 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
320
321 p_mpidx = ""
322
323 PARSE VAR resource . 'WORKGROUP=' p_workgroup ';' .
324 PARSE VAR resource . 'SERVER=' p_server ';' .
325 PARSE VAR resource . 'SHARE=' p_share ';' .
326 PARSE VAR resource . 'USER=' p_user ';' .
327 PARSE VAR resource . 'PASSWORD=' p_password ';' .
328 PARSE VAR resource . 'SPASSWORD=' p_spassword ';' .
329 PARSE VAR resource . 'MASTER=' p_master ';' .
330 PARSE VAR resource . 'MASTERTYPE=' p_mtype ';' .
331 PARSE VAR resource . 'MEMLEN=' p_memlen ';' .
332 PARSE VAR resource . 'LOGFILE=' p_logfile ';'.
333 PARSE VAR resource . 'LOGLEVEL=' p_loglevel ';' .
334 PARSE VAR resource . 'EASUPPORT=' p_easupport .
335
336 p_rw = rwFlag
337
338 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
339say "cd.lastrh="cd.lastrh
340
341 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx, cd.workgroupfh, p_workgroup, cd.serverfh, p_server, cd.sharefh, p_share, cd.userfh, p_user)
342 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password, cd.spasswordfh, p_spassword, cd.masterfh, p_master, cd.mtypefh, p_mtype)
343 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen, cd.easupportfh, p_easupport, cd.logfilefh, p_logfile, cd.loglevelfh, p_loglevel, cd.rwfh, p_rw)
344 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#68:PMWP.DLL') /* Passive */
345 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#68:PMWP.DLL') /* Active */
346
347 hashstr = p_mpoint' 'translate(p_domain)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
348
349 md5 = rexx_md5(hashstr)
350
351 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5)
352
353 end
354Say "_PassiveLoad done"
355return
356/*:VRX _PassiveSave
357*/
358_PassiveSave:
359 ok = VRDelIni( "PassiveConnections", "ALL", settings.!ini )
360
361 ok = SysIni(settings.!ini, 'PassiveConnections', 'DELETE:')
362
363 CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.'
364 cnt = 0
365 DO i = 1 TO records.0
366
367 if VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.StatusFH) = '#68:PMWP.DLL' then do
368 cnt = cnt + 1
369 resdata = ""
370 resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
371 resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh)
372 resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
373 resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
374 resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
375 resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh)
376 resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
377 resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
378 resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
379 resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
380 resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
381 resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
382 resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
383 resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
384 resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
385 resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh)
386 resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
387 resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
388 ok = VRSetIni( "PassiveConnections", cnt, resdata, settings.!ini )
389 END
390 else iterate
391 end
392return
393
394/*:VRX _PrinterInfo
395*/
396_PrinterInfo:
397 /* rh = currently selected record handle */
398 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", rh, "Caption")
399 parse var Capt p_printer '0D0A'x .
400 parRH = VRMethod("CN_SMBTREE", "GetRecordAttr", rh, "Parent")
401 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", Parrh, "Caption")
402 parse var Capt p_prtsrv '0D0A'x .
403 p_prtsrv = strip(p_prtsrv)
404 GparRH = VRMethod("CN_SMBTREE", "GetRecordAttr", Parrh, "Parent")
405 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", GParrh, "Caption")
406 parse var Capt p_workgroup '0D0A'x .
407 DescStr = translate(p_prtsrv'#'p_printer'#'p_workgroup'#')
408say '"'DescStr'"'
409 LDescStr = length(DescStr)
410 ok = SysIni('SYSTEM','PM_SPOOLER_PORT',"All:",'ports')
411
412 FoundPort = 0
413 do I = 1 to ports.0
414 if left(ports.i,3) = 'SMB' then do
415 say ports.I
416 say translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr))
417 say DescStr
418 if translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr)) = DescStr then do
419 OurPort = ports.I
420 FoundPort = 1
421 leave
422 end
423 end
424 end
425
426 if Foundport then do
427 ok = SysIni('SYSTEM','PM_SPOOLER_PRINTER',"All:",'printer')
428
429 do I = 1 to printer.0
430 say printer.I
431 prtsummary = SysINi('SYSTEM','PM_SPOOLER_PRINTER',printer.i)
432 parse var prtsummary port ';'PrinterDriver';'PrinterQueue';' .
433 if port = ourPort then do
434 PrinterName = SysINi('SYSTEM','PM_SPOOLER_PRINTER_DESCR',printer.i)
435 parse var Printername Printername ';' .
436 leave
437 end
438
439 end
440 CALL VRMessage 'Main', PrinterName' ('PrinterQueue') prints to port ' Port' connected to \\'p_workgroup'\'p_prtsrv'\'p_printer, NLVGetMessage( 1 ), 'I'
441 end
442 else do
443 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
444 end
445return
446
447/*:VRX _ShowMsg
448*/
449_ShowMsg:
450 /* preliminary implementation - we just do not ignore it anymore -
451 - ShowMsg from smbmon/smbusers shoule become a shared library */
452 ok = VRSet("DT_StatusBar", "Caption", Msg.Text)
453return
454
455/*:VRX _UserCredUpdate
456*/
457_UserCredUpdate:
458 credentials.!username = VRGet("EF_USER","Value")
459 credentials.!password = VRGet("EF_PASSWORD","Value")
460
461 if pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 0
462 then UserCred = '--user='Credentials.!username'%'Credentials.!password
463 else UserCred = '--user='Credentials.!username'%%'Credentials.!password
464return
465
466/*:VRX CB_DEBUG_Click
467*/
468CB_DEBUG_Click:
469
470return
471
472/*:VRX CB_LOGGING_Click
473*/
474CB_LOGGING_Click:
475 if VRFileExists(SysBootDrive()'\ndpsmb.dbg') then
476 ok = SysFileDelete(SysBootDrive()'\ndpsmb.dbg')
477 else do
478 call lineout SysBootDrive()'\ndpsmb.dbg','EVFS debug flag file'
479 ok = stream(SysBootDrive()'\ndpsmb.dbg','c','close')
480 end
481
482 CALL VRSet 'CB_LOGGING', 'Set', VRFileExists(SysBootDrive()'\ndpsmb.dbg')
483return
484
485/*:VRX CB_MOUNT_Change
486*/
487CB_MOUNT_Change:
488 IF options.!debug == 1 THEN SAY time()' '||"CB_MOUNT_Change started"
489
490 mount = VRGet("CB_MOUNT", "Selected")
491
492 SELECT
493 WHEN mount == 1 THEN DO
494 CALL VRSet "DT_SHARE", "Visible", 1
495 CALL VRSet "EF_SHARE", "Visible", 1
496 CALL VRSet "DT_SERVER", "Visible", 1
497 CALL VRSet "EF_SERVER", "Visible", 1
498 CALL VRSet "CHK_MTYPE", "Visible", 0
499 CALL NLVSetText "DT_NETWORK", "Caption", 21
500 /* Does not make sense anymore
501 if options.!editmode = 0 Then CALL VRSet "EF_NETWORK", "Value", settings.!network
502 */
503 END
504 WHEN mount == 2 THEN DO
505 CALL VRSet "DT_SHARE", "Visible", 0
506 CALL VRSet "EF_SHARE", "Visible", 0
507 CALL VRSet "DT_SERVER", "Visible", 1
508 CALL VRSet "EF_SERVER", "Visible", 1
509 CALL VRSet "CHK_MTYPE", "Visible", 0
510 CALL NLVSetText "DT_NETWORK", "Caption", 21
511 /* Does not make sense anymore
512 CALL VRSet "EF_NETWORK", "Value", settings.!network
513 */
514 END
515 WHEN mount == 3 THEN DO
516 CALL VRSet "DT_SHARE", "Visible", 0
517 CALL VRSet "EF_SHARE", "Visible", 0
518 CALL VRSet "DT_SERVER", "Visible", 0
519 CALL VRSet "EF_SERVER", "Visible", 0
520 CALL VRSet "CHK_MTYPE", "Visible", 0
521 CALL NLVSetText "DT_NETWORK", "Caption", 21
522 /* Does not make sense anymore
523 CALL VRSet "EF_NETWORK", "Value", settings.!network
524 */
525 END
526 WHEN mount == 4 THEN DO
527 CALL VRSet "DT_SHARE", "Visible", 0
528 CALL VRSet "EF_SHARE", "Visible", 0
529 CALL VRSet "DT_SERVER", "Visible", 0
530 CALL VRSet "EF_SERVER", "Visible", 0
531 CALL VRSet "CHK_MTYPE", "Visible", 1
532 CALL NLVSetText "DT_NETWORK", "Caption", 22
533 /* Does not make sense anymore
534 CALL VRSet "EF_NETWORK", "Value", ""
535 */
536 END
537 END
538 IF options.!debug == 1 THEN SAY time()' '||"CB_MOUNT_Change done"
539
540RETURN
541
542/*:VRX CN_CONDET_Click
543*/
544CN_CONDET_Click:
545 ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText"))
546return
547
548/*:VRX CN_CONDET_ContextMenu
549*/
550CN_CONDET_ContextMenu:
551 rh = VRInfo('Record')
552 if VRMethod( 'CN_CONDET', "ValidateRecord", rh) <> 1 then return
553
554 /* This is the place to enable specific context menu entries */
555 ok = VRMethod( "CN_CONDET", "GetRecordList", "All", "records." )
556 ok = VRSet("Menu_Selected_Remove", "Visible", (records.0 <> 0))
557 ok = VRSet("Menu_Selected_Retry", "Visible", (records.0 <> 0))
558
559 if VRMethod( 'CN_CONDET', "GetFieldData", rh, CD.StatusFH) = '#68:PMWP.DLL' then do
560 ok = VRSet("Menu_Selected_Retry", "Enabled",1)
561 ok = VRSet("Menu_Selected_Remove", "Enabled",1)
562 end
563 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
564return
565/*:VRX CN_CONDET_DragStart
566*/
567CN_CONDET_DragStart:
568
569 obj = VRInfo( "object" )
570 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
571 if selrec.0 = 0 then return
572
573 Icon = VRMethod("CN_CONDET", "GetRecordAttr", selrec.1, "Icon")
574
575 if Icon = "#65:PMWP.DLL" then do /* Printers not supported at the moment */
576 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
577 end
578 else call VRMethod obj, 'StartDrag'
579return
580
581/*:VRX CN_CURRENT_Click
582*/
583CN_CURRENT_Click:
584 IF options.!debug == 1 THEN SAY time()' CN_CURRENT_Click started'
585 ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText"))
586
587 /* Herwig B. */
588 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
589
590 rh = VRInfo('Record')
591 if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then return
592
593 data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData')
594 ok = VRset("DT_StatusBar","Caption", data' - 'VRGet("Main", "HintText"))
595
596 PARSE VAR data p_node ';' p_mounts ';' p_string
597
598 IF options.!debug == 1 THEN do
599 SAY ' data = "'data'"'
600 SAY ' p_node = "'p_node'"'
601 SAY ' p_mounts = "'p_mounts'"'
602 SAY ' p_string = "'p_string'"'
603 end
604/*
605 infotext = p_node
606 DO i = 1 TO p_mounts
607 infotext = infotext ' ['p_string']'
608 END
609*/
610 if p_string = "" then
611 infotext = fs.!name' 'fs.!version
612 else
613 infotext = p_string
614
615/* Herwig B.
616 CALL VRSet 'Main', 'StatusText', infotext */
617 if infotext = "" then infotext = " "
618 CALL VRSet 'CN_CURRENT', 'Caption', infotext
619 CALL VRSet 'CN_CURRENT', 'HintText',infotext
620/* Herwig B. */
621
622 IF p_mounts > 0 THEN DO
623 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
624 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
625 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
626 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
627 END
628 ELSE DO
629 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
630 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
631 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
632 END
633
634 parent = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'Parent')
635
636 IF parent == '' THEN DO
637 CALL VRSet 'PB_DETACH', 'Enabled', 1
638 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
639 END
640 ELSE DO
641 CALL VRSet 'PB_DETACH', 'Enabled', 0
642 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
643 END
644 /* Herwig B. */
645 IF options.!debug == 1 THEN SAY time()' CN_CURRENT_Click done'
646RETURN
647
648/*:VRX CN_CURRENT_ContextMenu
649*/
650CN_CURRENT_ContextMenu: /* PROCEDURE EXPOSE existrec. options. fs. */
651 /* Herwig B. */
652 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
653
654 rh = VRInfo('Record')
655
656 /* Herwig B. */
657 /* we have to check whether the record still exists because under certain
658 circumstances the event routine is executed after the record was already
659 removed */
660 if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then return
661 /* Herwig B. */
662
663 data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData')
664 PARSE VAR data p_node ';' p_mounts ';' p_string
665
666 IF options.!debug == 1 THEN SAY time()' '||data
667 IF options.!debug == 1 THEN SAY time()' '||p_node
668 IF options.!debug == 1 THEN SAY time()' '||p_mounts
669 IF options.!debug == 1 THEN SAY time()' '||p_string
670/*
671 infotext = p_node
672 DO i = 1 TO p_mounts
673 infotext = infotext ' ['p_string']'
674 END
675*/
676 if p_string = "" then
677 infotext = fs.!name' 'fs.!version
678 else
679 infotext = p_string
680
681/* Herwig B.
682 CALL VRSet 'Main', 'StatusText', infotext */
683 if infotext = "" then infotext = " "
684 CALL VRSet 'CN_CURRENT', 'Caption', infotext
685 CALL VRSet 'CN_CURRENT', 'HintText',infotext
686/* Herwig B. */
687
688 IF p_mounts > 0 THEN DO
689 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
690 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
691 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
692 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
693 END
694 ELSE DO
695 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
696 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
697 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
698 END
699
700 parent = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'Parent')
701
702 IF parent == '' THEN DO
703 CALL VRSet 'PB_DETACH', 'Enabled', 1
704 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
705 END
706 ELSE DO
707 CALL VRSet 'PB_DETACH', 'Enabled', 0
708 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
709 END
710 /* Herwig B. */
711
712 ok = VRMethod( "Menu_Context", "Popup", , , "", "" )
713return
714
715/*:VRX CN_CURRENT_DoubleClick
716*/
717CN_CURRENT_DoubleClick:
718 call beep 880, 20
719say "double click"
720 rh = VRInfo('Record')
721 /* Herwig B. */
722 /* we have to check whether the record still exists because under certain
723 circumstances the event routine is executed after the record was already
724 removed */
725 if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then return
726 /* Herwig B. */
727
728 data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData')
729 IF options.!debug == 1 THEN SAY time()' '||"data = "data
730return
731
732/*:VRX CN_CURRENT_DragDrop
733*/
734CN_CURRENT_DragDrop:
735say "settings.!network = "settings.!network
736 p_workgroup = ''
737 p_server = ''
738 p_share = ''
739
740 srcFile = VRInfo( "SourceFile" )
741 srcCtn = VRInfo( "SourceObject" )
742 srcRec = VRInfo( "SourceRecord" )
743 trgCtn = VRInfo( "TargetObject" )
744 trgRec = VRInfo( "TargetRecord" )
745
746say "srcFile = '"srcFile"'"
747say "srcCtn = '"srcCtn"'"
748say "srcRec = '"srcRec"'"
749say "TrgCtn = '"trgCtn"'"
750say "TrgRec = '"trgRec"'"
751
752 if srcFile <> "" then do /* A file was dropped onto the conatainer - load it */
753 if translate(VRParseFileName(srcFile,'E')) <> translate(fs.!profileext) then do
754 buttons.0 = 1
755 buttons.1 = NLVGetMessage(9)
756 ok = VRMessage('Main', "TITEL" , "TEXT", 'E','buttons.')
757 end
758 else do
759 options.!autoload = 1
760 Profile = srcFile
761 call PB_LOAD_Click
762 end
763 return
764 end
765
766 say VRGet(srcCtn,'Name')
767
768 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
769
770 if VRGet(srcCtn,'Name') = "CN_CONDET" then do
771 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.MpointFH)
772
773 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.WorkgroupFH)
774 p_server = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ServerFH)
775 p_share = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ShareFH)
776 p_user = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.UserFH)
777 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.SpasswordFH))
778
779 ShareLevel = 1
780 if p_share = "" then ShareLevel = 2
781 if p_server = "" then ShareLevel = 3
782 if p_workgroup = "" then ShareLevel = 4
783
784 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
785 ok = VRset("CB_MOUNT" , "Value", mtype.sharelevel)
786
787 ok = VRset("EF_SERVER" , "Value", p_server)
788 ok = VRset("EF_SHARE" , "Value", p_share)
789 ok = VRset("EF_NETWORK", "Value", p_workgroup)
790 ok = VRset("EF_USER" , "Value", p_user)
791 ok = VRset("EF_PASSWORD", "Value", p_password)
792
793 parse var p_mpoint p_drv '\' p_dir
794
795 p_dir = strip(p_dir,'T','\')
796
797 ok = VRset("CB_DRIVES" , "Value", p_drv)
798 ok = VRset("EF_DIRECTORY" , "Value", p_dir)
799 end
800 else do /* SmbTree */
801 DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption")
802 parRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent")
803
804 if parRH = "" then do /* A workgroup was dragged */
805 say "Workgroup dragged!"
806 parse var DragCapt p_workgroup '0D0A'x .
807 p_workgroup = strip(p_workgroup)
808 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
809 ok = VRSet("EF_SERVER","Value","")
810 ok = VRSet("EF_SHARE","Value","")
811
812 ShareLevel = 3
813 end
814 else do
815 ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParRH, "Caption")
816 GParRH = VRMethod(srcCtn, "GetRecordAttr", ParRH, "Parent")
817
818 if GParRH = "" then do /* A server was dragged */
819 say "Server dragged!"
820 parse var ParDragCapt p_workgroup '0D0A'x .
821 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
822 p_workgroup = strip(p_workgroup)
823
824 parse var DragCapt p_server '0D0A'x .
825 p_server = strip(p_server)
826 ok = VRSet("EF_SERVER","Value",strip(p_server))
827 ok = VRSet("EF_Share","Value","")
828
829 ShareLevel = 2
830 end
831 else do /* A share was dragged */
832 say "Share dragged!"
833 GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParRH, "Caption")
834
835 parse var GParDragCapt p_workgroup '0D0A'x .
836 p_workgroup = strip(p_workgroup)
837 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
838
839 parse var ParDragCapt p_server '0D0A'x .
840 p_server = strip(p_server)
841 ok = VRSet("EF_SERVER","Value",strip(p_server))
842
843 parse var DragCapt p_share '0D0A'x .
844 p_share = strip(p_share)
845 ok = VRSet("EF_Share","Value",strip(p_share))
846
847 ShareLevel = 1
848 end
849 end
850 end
851
852 say 'p_workgroup = "'p_workgroup'"'
853 say 'p_server = "'p_server'"'
854 say 'p_share = "'p_share'"'
855
856 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
857
858 settings.!network = VRGet("EF_NETWORK","Value")
859 call CB_MOUNT_Change
860
861 if trgRec = "" then do
862 ok = VRSet("CB_DRIVES","Value", "")
863 ok = VRSet("EF_DIRECTORY","Value", "")
864
865 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
866
867 if VRGet("CB_DRIVES","Value") = "" then return
868 end
869 else do
870
871 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
872
873 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
874
875 do while parTrgRH <> ""
876 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
877 TargetString = partrgCapt||'\'||TargetString
878 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
879 end
880 say 'TargetString = "'TargetString'"'
881 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
882 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
883 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
884 if VRGet("CB_DRIVES","Value") = "" then return
885 end
886 window = VRLoadSecondary( "SW_LOGIN", "W" )
887 call PB_MOUNT_CLICK
888
889 if VRGet(srcCtn,'Name') = "CN_CONDET" & VRMethod( 'CN_CONDET', "ValidateRecord", srcRec) = 1 then do
890 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = '#68:PMWP.DLL' then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
891 end
892return
893
894/*:VRX CN_SMBTREE_Click
895*/
896CN_SMBTREE_Click:
897 ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText"))
898 rh = VRInfo('Record')
899 if VRMethod( 'CN_SMBTREE', "ValidateRecord", rh) <> 1 then return
900 udata = VRMethod('CN_smbtree', 'GetRecordAttr', rh, 'UserData')
901 parse var udata udatatype'|'udatamsg
902say udatatype
903say udatamsg
904 ok = VRset("DT_Statusbar", "Caption", udatamsg)
905 drop udatatype
906 drop udatamsg
907
908return
909
910/*:VRX CN_SMBTREE_ContextMenu
911*/
912CN_SMBTREE_ContextMenu:
913 rh = VRInfo('Record')
914 if VRMethod( 'CN_SMBTREE', "ValidateRecord", rh) <> 1 then return
915
916 Icon = VRMethod("CN_SMBTREE", "GetRecordAttr", rh, "Icon")
917
918 ok = VRset("MItem_64","Visible", (Icon = "#35:PMWP.DLL")|(Icon = "#62:PMWP.DLL"))
919 ok = VRset("Menu_Selected_Info","Visible", (Icon = "#35:PMWP.DLL"))
920 ok = VRset("Menu_Selected_Default_Workgroup","Visible", (Icon = "#62:PMWP.DLL"))
921
922 if Icon = "#65:PMWP.DLL" then do /* Printer installation not supported at the moment */
923 /* call _Printerinfo */
924 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
925 return
926 end
927
928 /* This is the place to enable specific context menu entries */
929 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "All", "records." )
930 ok = VRSet("Menu_Selected_Connect", "Visible", (records.0 <> 0 & (Icon <> "#61:PMWP.DLL") ))
931
932 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
933return
934
935/*:VRX CN_SMBTREE_DragStart
936*/
937CN_SMBTREE_DragStart:
938
939 obj = VRInfo( "object" )
940 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "selrec." )
941 if selrec.0 = 0 then return
942
943 Icon = VRMethod("CN_SMBTREE", "GetRecordAttr", selrec.1, "Icon")
944
945 if Icon = "#65:PMWP.DLL" then do /* Printers not supported at the moment */
946 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
947 end
948 else call VRMethod obj, 'StartDrag'
949return
950
951/*:VRX CreateObject
952*/
953CreateObject: procedure
954 Parse Arg Class, Title, Location, Setup, Collision
955 /* Say 'Creating ['Title']' */
956 rc = SysCreateObject( Class, Title, Location, Setup, Collision )
957 If rc <> 1 Then do
958 Msg.Text = ' > failed to create ['Title' | 'Class'] at location ['Location']'
959 Msg.Type = 'Error'
960 say Msg.Text
961 end
962return rc
963/*:VRX DT_STATUSBAR_ContextMenu
964*/
965DT_STATUSBAR_ContextMenu:
966 ok = VRSet("DT_STATUSBAR","Caption", VRGet("Main", "HintText"))
967return
968
969/*:VRX EF_PASSWORD1_KeyPress
970*/
971EF_PASSWORD1_KeyPress:
972 obj = VRInfo( "Object" )
973 keystr = VRGet( obj, "KeyString" )
974/* say keystr */
975 select
976 when keystr = "{Enter}" then call PB_LOGIN_OK_Click
977 when keystr = "{Newline}" then call PB_LOGIN_OK_Click
978 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
979 otherwise nop
980 end
981return
982
983/*:VRX EF_PASSWORD_Change
984*/
985EF_PASSWORD_Change:
986 call _UserCredUpdate
987return
988
989/*:VRX EF_SERVER_Change
990*/
991EF_SERVER_Change:
992 Now = VRGet("EF_SERVER","value")
993 if Now = "" then return
994 ok = SysSleep(1)
995 if Now <> VRGet("EF_SERVER","value") then return
996
997 /* Do nothing for incomplete IP addresses */
998 if strip(translate(VRGet("EF_SERVER","value"),copies(' ',11),'01234567890.')) = "" & length(VRGet("EF_SERVER","value")) < 7 then return
999
1000 ok = VRMethod( "CN_smbtree", "GetRecordList", "Visible", "rh." )
1001
1002 FoundServer = 0
1003
1004 do I = 1 to rh.0
1005
1006 Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Userdata")
1007 ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Caption")
1008 ParentRH = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Parent")
1009
1010 parse var ResName ResName '0D0A'x .
1011 ResName = strip(ResName)
1012 parse var userdata ResType '|' .
1013
1014 if VRGet("EF_SERVER","value") = ResName then do /* we found the server the field was changed to */
1015 /* Workgroup properly */
1016 if ParentRH = "" then do
1017 ok = VRSet("EF_NETWORK", "Value", "") /* The workgroup might be unknown at this moment */
1018 end
1019 else do
1020 ok = VRSet("EF_NETWORK", "Value", VRMethod("CN_smbtree","GetRecordAttr",ParentRH,"Caption"))
1021 end
1022
1023 /* clear shares */
1024 ok = VRMethod("EF_SHARE", "Reset")
1025 ok = VRset("EF_SHARE","Value", "")
1026
1027 do J = 1 to rh.0 /* populate shares with valid entries */
1028
1029 Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Userdata")
1030 ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Caption")
1031 ParentRH = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Parent")
1032
1033 parse var ResName ResName '0D0A'x .
1034 ResName = strip(ResName)
1035 parse var userdata ResType '|' .
1036
1037 if ParentRH = rh.I then do /* we found a share belonging to our server */
1038 if ResType = "DISK" then ok = VRMethod("EF_SHARE","AddString", ResName)
1039 end
1040 end
1041 FoundServer = 1
1042 leave
1043 end
1044 end
1045 if Foundserver = 0 then do
1046 machine = VRGet("EF_SERVER","value")
1047 smbtree.!machine = VRMethod( "CN_smbtree", "AddRecord",,, machine)
1048 /* We make any machine as sleeping initially */
1049 ok = VRMethod( "CN_smbtree", "SetRecordAttr", smbtree.!machine, "Icon","#61:PMWP.DLL")
1050 ok = VRMethod( "CN_smbtree", "SetRecordAttr", smbtree.!machine, "ReadOnly", 1)
1051 ok = VRMethod( "CN_smbtree", "SetFieldData", smbtree.!machine, NBFH, machine)
1052 call _RefreshShares
1053 end
1054return
1055
1056/*:VRX EF_USER1_KeyPress
1057*/
1058EF_USER1_KeyPress:
1059 obj = VRInfo( "Object" )
1060 keystr = VRGet( obj, "KeyString" )
1061/* say keystr */
1062 select
1063 when keystr = "{Enter}" then ok = VRMethod( "EF_Password1", "SetFocus" )
1064 when keystr = "{Newline}" then ok = VRMethod( "EF_Password1", "SetFocus" )
1065 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
1066 otherwise nop
1067 end
1068return
1069
1070/*:VRX EF_USER_Change
1071*/
1072EF_USER_Change:
1073 call _UserCredUpdate
1074return
1075
1076/*:VRX Fini
1077*/
1078Fini:
1079 window = VRWindow()
1080 call VRSet window, "Visible", 0
1081 drop window
1082return 0
1083
1084/*:VRX GetChildren
1085*/
1086GetChildren: PROCEDURE EXPOSE existrec. exc options. fs. cd. samba.
1087 IF options.!debug == 1 THEN SAY time()' GetChildren started'
1088 PARSE ARG node, parec
1089
1090 dyn = "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
1091 IF options.!debug == 1 THEN SAY ' Dyn code: 'dyn
1092 interpret dyn; drop dyn
1093
1094
1095 IF info.2 > 0 THEN icon = '#64:PMWP.DLL'
1096 ELSE icon = '#68:PMWP.DLL'
1097 rh = VRMethod('CN_CURRENT', 'AddRecord', parec, 'Last', info.0, icon )
1098 IF rh == '' THEN RETURN
1099
1100 exc = exc + 1
1101 existrec.exc = rh
1102 userdata = node';'info.2
1103 DO i = 1 TO res.0
1104 userdata = ParseResourceData( userdata, res.i )
1105 END
1106 if userdata = "UNKNOWN" then ok = VRMethod('CN_CURRENT', 'RemoveRecord', rh)
1107 else CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'UserData', userdata
1108
1109 DO i = 1 TO points.0
1110 childnode = node || points.i || '\'
1111 CALL GetChildren childnode, rh
1112 END
1113 IF options.!debug == 1 THEN SAY time()' GetChildren done'
1114RETURN
1115
1116/*:VRX GetMountPoints
1117*/
1118GetMountPoints: PROCEDURE EXPOSE existrec. options. fs. cd. samba.
1119 IF options.!debug == 1 THEN SAY time()' GetMountPoints started'
1120 CALL VRSet 'CN_CURRENT', 'Painting', 0
1121/* IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints: SysDriveMap(USED) started" */
1122 drvs = SysDriveMap('C:', 'USED') /* was "REMOTE" */
1123/* IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints: SysDriveMap(USED) done" */
1124 ac = 0
1125 DO i = 1 TO WORDS( drvs )
1126 fs = TRANSLATE( SysFileSystemType( WORD( drvs, i )))
1127 IF fs == fs.!fileSystemtype THEN DO
1128 ac = ac + 1
1129 attached.ac = WORD( drvs, i )
1130 END
1131 END
1132 attached.0 = ac
1133
1134 exc = 0
1135 DO i = 1 TO attached.0
1136 node = attached.i'\'
1137
1138 CALL VRMethod 'CB_DRIVES', 'AddString', attached.i
1139
1140 dyn = "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
1141 IF options.!debug == 1 THEN SAY ' Dyn code: 'dyn
1142 interpret dyn; drop dyn
1143
1144 IF info.2 > 0 THEN icon = '#16:PMWP.DLL'
1145 ELSE icon = '#70:PMWP.DLL'
1146
1147 rh = VRMethod('CN_CURRENT', 'AddRecord',, 'Last', attached.i, icon )
1148 IF rh == '' THEN ITERATE
1149
1150 exc = exc + 1
1151 existrec.exc = rh
1152 userdata = node';'info.2
1153 DO j = 1 TO res.0
1154 userdata = ParseResourceData( userdata, res.j )
1155 END
1156/* IF options.!debug == 1 THEN say ' "'attached.i'" "'userdata'"' */
1157 CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'UserData', userdata
1158 CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'Expanded', 1
1159
1160 DO j = 1 TO points.0
1161 childnode = node || points.j || '\'
1162 CALL GetChildren childnode, rh
1163 END
1164
1165 END
1166 existrec.0 = exc
1167 CALL VRSet 'CN_CURRENT', 'Painting', 1
1168 IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints done"
1169RETURN
1170
1171/*:VRX Halt
1172*/
1173Halt:
1174 signal _VREHalt
1175return
1176
1177/*:VRX Init
1178*/
1179Init:
1180/* Herwig */
1181/* CALL VRSet 'Console', 'WindowListTitle', '' */
1182
1183 window = VRWindow()
1184 call VRSet window, "Visible", 0
1185 call VRMethod window, "Activate"
1186 drop window
1187
1188RETURN
1189
1190/*:VRX LoadFileSysFuncs
1191*/
1192LoadFileSysFuncs:
1193 IF options.!debug == 1 THEN SAY time()' LoadFileSysFuncs() started'
1194 Fatal = 1
1195 RestartCount = 0
1196 FoundEVFS = 1
1197 FoundND = 1
1198
1199 if SysSearchPath("PATH", "EVFSCTL.EXE") = "" then do
1200 FoundEVFS = 0
1201 ForceNDFS = 1
1202 end
1203
1204CtlRestart:
1205 if \ForceNDFS then signal NoNetDrive
1206
1207ForceNDFS:
1208 IF options.!debug == 1 THEN SAY ' NDFS check entered'
1209 call RxFuncAdd 'NdRxLoadFuncs', 'NDCALLS', 'NdRxLoadFuncs'
1210 SIGNAL ON SYNTAX NAME NoNetdrive
1211 call NdRxLoadFuncs
1212 FoundND = 1
1213 SIGNAL OFF SYNTAX
1214 fs.!prefix = 'ND'
1215 fs.!fileSystemtype = "NDFS32"
1216 fs.!profileext = "ndc"
1217 signal CommonToBothFS
1218NoNetdrive:
1219 IF options.!debug == 1 THEN SAY ' NDFS not found'
1220 CALL RxFuncAdd 'EvfsRxLoadFuncs', 'EVFSCALL.DLL', 'EvfsRxLoadFuncs'
1221 SIGNAL ON SYNTAX NAME NoEVFSCALL
1222 CALL EvfsRxLoadFuncs
1223 FoundEVFS = 1
1224 SIGNAL OFF SYNTAX
1225 fs.!prefix = 'EVFS'
1226 fs.!fileSystemtype = "EVFS"
1227 fs.!profileext = "evp"
1228CommonToBothFS:
1229 IF options.!debug == 1 THEN SAY ' Common version check'
1230 dyn = "fsstat = "fs.!prefix"RxQueryIFS()"
1231 IF options.!debug == 1 THEN SAY ' Dyn code: '||dyn
1232 interpret dyn; drop dyn
1233 IF options.!debug == 1 THEN SAY ' Dyn res fsstat = '||fsstat
1234 if fsstat = 252 then do
1235 dyn = "Found"fs.!prefix" = 0"
1236 interpret dyn
1237 end
1238 if word(fsstat,1) = '0' then do
1239 PARSE VAR fsstat '0 'fsname fsver fsctl .
1240 fs.!name = fsname
1241 fs.!version = fsver
1242
1243 IF options.!debug == 1 THEN DO
1244 say ' fs.!prefix = 'fs.!prefix
1245 say ' fs.!name = 'fs.!Name
1246 say ' Version = 'fsver
1247 say ' fsctl = 'fsctl
1248 end
1249 end
1250 else do
1251 if FoundND = 0 & FoundEVFS = 0 then do
1252 CALL VRMessage 'Main', 'FATAL: Neither EVFS nor Netdrive found: 'fs.!prefix'RxQueryIFS()='fsstat, NLVGetMessage( 5 ), 'E'
1253 signal Halt
1254 end
1255 signal ForceNDFS
1256 end
1257 IF fsctl \= 1 THEN DO
1258 if ReStartCount = 0 then do
1259 'detach 'fs.!prefix'ctl.exe'
1260 RestartCount = 1
1261 ok = SysSleep(1)
1262 signal CtlRestart
1263 end
1264 else do
1265 CALL VRMessage 'Main', NLVGetMessage( 101 ), NLVGetMessage( 5 ), 'E'
1266 signal Halt
1267 end
1268 END
1269
1270 Fatal = 0
1271 IF options.!debug == 1 THEN SAY time()' LoadFileSysFuncs() done'
1272return
1273
1274/*:VRX LoadSettings
1275*/
1276LoadSettings: PROCEDURE EXPOSE settings. options. fs. advanced. samba. ShowHidden margin
1277 IF options.!debug == 1 THEN SAY time()' LoadSettings started'
1278
1279 /* Locate the profile.
1280 */
1281 os2_ini = VALUE('USER_INI',,'OS2ENVIRONMENT')
1282 inipath = VRParseFilePath( os2_ini, 'DP')
1283 IF inipath == '' THEN inipath = SysBootDrive() || '\OS2'
1284
1285 settings.!ini = inipath'\evfsgui.ini'
1286 IF options.!debug == 1 THEN SAY ' INI = "'settings.!ini'"'
1287
1288 IF STREAM( settings.!ini, 'C', 'QUERY EXISTS') == '' THEN DO
1289 IF options.!debug == 1 THEN say " First start!"
1290 settings.!network = ""
1291 settings.!buttonson = 1
1292 settings.!smbtreeon = 1
1293 advanced.!browseimme = 1
1294 advanced.!savepassive = 0
1295 advanced.!broadcast = 0
1296 advanced.!bigicons = 1
1297
1298 ShowHidden = 0
1299
1300 CALL VRSet VRWindow(), 'Height', 7576
1301 CALL VRSet VRWindow(), 'Width', 8200
1302 CALL VRSet "SPLIT_MAIN", 'Left', 2915
1303 CALL VRMethod VRWindow(), 'CenterWindow'
1304 call Menu_View_Buttons_Click
1305 call Menu_View_SmbTree_Click
1306 ok = VRset("GB_SMBTREE","Painting", 1)
1307 ok = VRset("GB_SMBTREE","Visible", 1)
1308
1309 call VRSet 'Main', 'Visible', 1
1310 call Main_Resize
1311 END
1312 ELSE DO
1313
1314 /* Load window position settings.
1315 */
1316 settings.!x = VRGetIni('Settings', 'X', settings.!ini, 'NoClose')
1317 settings.!y = VRGetIni('Settings', 'Y', settings.!ini, 'NoClose')
1318 IF settings.!x == '' THEN settings.!x = -1
1319 IF settings.!y == '' THEN settings.!y = -1
1320
1321 settings.!h = VRGetIni('Settings', 'H', settings.!ini, 'NoClose')
1322 settings.!w = VRGetIni('Settings', 'W', settings.!ini, 'NoClose')
1323 IF settings.!h == '' THEN settings.!h = -1
1324 IF settings.!w == '' THEN settings.!w = -1
1325
1326 settings.!s = VRGetIni('Settings', 'S', settings.!ini, 'NoClose')
1327 IF settings.!s == '' THEN settings.!s = -1
1328
1329 /* Herwig B. */
1330 settings.!curbcolor = VRGetIni('Settings', 'TitleBarBackground', settings.!ini, 'NoClose')
1331 settings.!curfcolor = VRGetIni('Settings', 'TitleBarForeground', settings.!ini, 'NoClose')
1332 IF (settings.!curbcolor = '' | settings.!curbcolor = '<default>') THEN settings.!curbcolor = 'SystemActiveTitle'
1333 IF (settings.!curfcolor = '' | settings.!curfcolor = '<default>') THEN settings.!curfcolor = 'SystemActiveTitleText'
1334
1335 settings.!buttonson = VRGetIni('Settings', 'ButtonsOn', settings.!ini, 'NoClose')
1336 IF settings.!buttonson = "" then settings.!buttonson = 1
1337
1338 settings.!smbtreeon = VRGetIni('Settings', 'SmbtreeOn', settings.!ini, 'NoClose')
1339 IF settings.!smbtreeon = "" then settings.!smbtreeon = 0
1340
1341 settings.!dialogon = VRGetIni('Settings', 'DialogOn', settings.!ini, 'NoClose')
1342 IF settings.!dialogon = "" then settings.!dialogon = 1
1343
1344 settings.!condeton = VRGetIni('Settings', 'ConDetOn', settings.!ini, 'NoClose')
1345 IF settings.!condeton = "" then settings.!condeton = 1
1346
1347 /* Load network - does not make sense anymore
1348 settings.!network = VRGetIni('Settings', 'Network', settings.!ini, 'NoClose')
1349 IF settings.!network == '' THEN settings.!network = '' */
1350 settings.!network = ''
1351
1352 if \VRFileExists( samba.!smbconf ) then call _CreateSmbConf
1353
1354 /* Load font settings.
1355 */
1356 IF VRFileExists( SysBootDrive() || '\OS2DBCS') == 1 THEN
1357 default_font = '9.WarpSans Combined'
1358 ELSE
1359 default_font = '9.WarpSans'
1360 settings.!cfont = VRGetIni('Settings', 'ContainerFont', settings.!ini, 'NoClose')
1361 settings.!wfont = VRGetIni('Settings', 'WindowFont', settings.!ini, 'NoClose' )
1362 IF settings.!cfont == '' THEN settings.!cfont = default_font
1363 IF settings.!wfont == '' THEN settings.!wfont = default_font
1364
1365 advanced.!browseauth = VRGetIni('Settings', 'BrowseAuth', settings.!ini, 'NoClose')
1366 IF advanced.!browseauth == '' THEN advanced.!browseauth = 0
1367
1368 advanced.!browseimme = VRGetIni('Settings', 'BrowseImme', settings.!ini)
1369 IF advanced.!browseimme == '' THEN advanced.!browseimme = 1
1370
1371 advanced.!debug = VRGetIni('Settings', 'Debug', settings.!ini)
1372 IF advanced.!debug == '' THEN advanced.!debug = 0 /* Turn off debug by default for release builds */
1373
1374 /* This is a hack and should be reworked! - using several variables for debug is bad! */
1375 options.!debug = advanced.!debug
1376 IF options.!debug <> 1 THEN ok = VRRedirectStdIO("OFF")
1377
1378 advanced.!alwaysmp = VRGetIni('Settings', 'AlwaysMP', settings.!ini)
1379 IF advanced.!alwaysmp == '' THEN advanced.!alwaysmp = 1
1380
1381 advanced.!special = VRGetIni('Settings', 'SpecialShares', settings.!ini)
1382 IF advanced.!special == '' THEN advanced.!special = 0
1383
1384 advanced.!bigicons = VRGetIni('Settings', 'BigIcons', settings.!ini)
1385 IF advanced.!bigicons == '' THEN advanced.!bigicons = 1
1386
1387 advanced.!savepassive = VRGetIni('Settings', 'SavePassive', settings.!ini)
1388 IF advanced.!savepassive == '' THEN advanced.!savepassive = 0
1389
1390 advanced.!broadcast = VRGetIni('Settings', 'Broadcast', settings.!ini)
1391 IF advanced.!broadcast == '' THEN advanced.!broadcast = 0
1392
1393 /* Apply the settings
1394 */
1395 /* Does not make sense anymore
1396 ok = VRSet("EF_NETWORK","Value", settings.!network)
1397 */
1398 ok = VRSet("DT_CURRENT","BACKCOLOR", settings.!curbcolor )
1399 ok = VRSet("DT_CURRENT","FORECOLOR", settings.!curfcolor )
1400 ok = VRSet("DT_DIALOG","BACKCOLOR", settings.!curbcolor )
1401 ok = VRSet("DT_DIALOG","FORECOLOR", settings.!curfcolor )
1402 ok = VRSet("DT_SMBTREE","BACKCOLOR", settings.!curbcolor )
1403 ok = VRSet("DT_SMBTREE","FORECOLOR", settings.!curfcolor )
1404 ok = VRSet("DT_CONDET","BACKCOLOR", settings.!curbcolor )
1405 ok = VRSet("DT_CONDET","FORECOLOR", settings.!curfcolor )
1406
1407 ok = VRset("CN_CURRENT", "MiniIcons", \advanced.!bigicons)
1408 ok = VRset("CN_SMBTREE", "MiniIcons", \advanced.!bigicons)
1409 ok = VRset("CN_CONDET", "MiniIcons", \advanced.!bigicons)
1410 ok = VRset("Menu_View_MiniIcons", "Checked", \advanced.!bigicons)
1411
1412 ok = VRSet("Menu_View_Buttons","Checked", settings.!buttonson)
1413 ok = VRset("GB_Buttons","Visible", settings.!buttonson)
1414 options.!buttondelta = 440 * settings.!buttonson
1415
1416 ok = VRSet("Menu_View_Dialog","Checked", settings.!dialogon)
1417 if settings.!dialogon then call Menu_View_Dialog_Click
1418
1419 ok = VRSet("Menu_View_ConDet","Checked", settings.!condeton)
1420 if settings.!condeton then do
1421 call Menu_View_ConDet_Click
1422 ok = VRset("GB_CONDET","Painting", 1)
1423 ok = VRset("GB_CONDET","Visible", 1)
1424 end
1425
1426
1427 ok = VRSet("Menu_View_Smbtree","Checked", settings.!smbtreeon)
1428 if settings.!smbtreeon then do
1429 call Menu_View_SmbTree_Click
1430 ok = VRset("GB_SMBTREE","Painting", 1)
1431 ok = VRset("GB_SMBTREE","Visible", 1)
1432 end
1433
1434 if advanced.!debug == 1 then ok = VRRedirectStdio("ON")
1435
1436 IF ( settings.!x >= 0 ) & ( settings.!y >= 0 ) & ( settings.!l >= 0 ) & ( settings.!w >= 0 ) & ( settings.!s >= 0 ) THEN DO
1437 CALL VRSet VRWindow(), 'Left', settings.!x
1438 CALL VRSet VRWindow(), 'Top', settings.!y
1439 CALL VRSet VRWindow(), 'Height', settings.!h
1440 CALL VRSet VRWindow(), 'Width', settings.!w
1441 CALL VRSet "SPLIT_MAIN", 'Left', settings.!s
1442 END
1443 ELSE
1444 CALL VRMethod VRWindow(), 'CenterWindow'
1445
1446 CALL VRSet 'CN_CURRENT', 'Font', settings.!cfont
1447 CALL VRSet 'Main', 'Font', settings.!wfont
1448 CALL VRSet 'Main', 'StatusFont', settings.!wfont
1449
1450 END
1451
1452 if options.!nogui == 1 then CALL VRLoadSecondary "SW_PROGRESS","W"
1453 /* This is too early if a profile was loaded and Main_Resize does it anyway */
1454 /* else call VRSet 'Main', 'Visible', 1 */
1455
1456 IF options.!debug == 1 THEN SAY time()' LoadSettings done'
1457RETURN
1458
1459/*:VRX Main_Close
1460*/
1461Main_Close:
1462 CALL Quit
1463RETURN
1464
1465/*:VRX Main_Create
1466*/
1467Main_Create:
1468 ok = VRRedirectStdIO("OFF")
1469 options.!debug = 0
1470
1471 IF options.!debug == 1 THEN ok = VRREdirectStdIO("ON")
1472 IF options.!debug == 1 THEN SAY time()' Main_Create started'
1473
1474 CALL RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
1475 CALL SysLoadFuncs
1476
1477 CALL _InitTempDir
1478
1479 CALL NLVSetup
1480
1481 CALL StemsInit
1482
1483 CALL _ContainersInit
1484
1485 CALL _GUIInit
1486
1487 CALL ParseCommandLine
1488
1489 CALL LoadFileSysFuncs
1490
1491 CALL _CltInit
1492
1493 CALL LoadSettings
1494
1495 CALL Refresh
1496
1497 if advanced.!savepassive == 1 then CALL _PassiveLoad
1498
1499 IF options.!autoload == 1 THEN CALL PB_LOAD_Click
1500
1501 CALL VRSet "CB_MOUNT", "Selected", 1
1502 CALL VRSet "CB_DRIVES", "Selected", 1
1503 IF options.!autoclose == 1 THEN CALL TM_AutoClose_Trigger
1504 /* For whatever reason the timer is not triggered anymore....
1505 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 1 */
1506 ELSE do
1507 if advanced.!browseauth == 1 then do
1508 window = VRLoadSecondary( "SW_LOGIN", "W" )
1509 call Main_Resize
1510 end
1511 if advanced.!browseimme == 1 then call PB_REFRESH_Click
1512 end
1513
1514 IF options.!debug == 1 THEN SAY time()' Main_Create done'
1515return
1516
1517/*:VRX Main_KeyPress
1518*/
1519Main_KeyPress:
1520 key = VRGet('Main', 'KeyString')
1521 IF key == '{F5}' THEN CALL Refresh
1522RETURN
1523
1524/*:VRX Main_Resize
1525*/
1526Main_Resize:
1527 if datatype(options.!buttondelta) = 'CHAR' then return
1528
1529 IF options.!debug == 1 THEN SAY time()' Main_Resize started'
1530 ok = VRset("Main","Painting", 0)
1531
1532 /* Basic measurements */
1533 main_iwidth = VRGet("Main","InteriorWidth") /* Width of window client-area */
1534 main_iheight = VRGet("Main","InteriorHeight") /* Height of window client-area */
1535 sbar_height = VRGet("GB_STATUSBAR","Height") /* Height of status-bar */
1536 split_left = VRGet("SPLIT_Main","Left") /* Position of the left edge of the split-bar */
1537 marginx2 = margin * 2 /* Common margin around controls */
1538 pbtn_height = 400 /* Height of the panels' internal button areas */
1539 buttons_top = main_iheight - sbar_height - margin - options.!buttondelta /* Top of the common button area */
1540 pane_height = buttons_top - (margin * 3) /* Height of a split-bar panel */
1541 lpane_width = split_left - margin /* Width of the left split-bar panel */
1542 rpane_width = main_iwidth - split_left - 60 - margin /* Width of the right split-bar panel */
1543
1544 /* Button bar */
1545 ok = VRSet("GB_BUTTONS", "Top", buttons_top )
1546 ok = VRSet("GB_BUTTONS", "Left", main_iwidth - VRGet("GB_Buttons","Width") - margin )
1547
1548 /* Current Panel */
1549 ok = VRSet("GB_CURRENT", "Visible", 1 )
1550 ok = VRSet("GB_CURRENT", "Top", marginx2 )
1551 ok = VRSet("GB_CURRENT", "Left", margin )
1552 ok = VRSet("GB_CURRENT", "Width", lpane_width )
1553 ok = VRSet("GB_CURRENT", "Height", pane_height )
1554
1555 ok = VRset("GB_CURRENT3", "Top", margin )
1556 ok = VRset("GB_CURRENT3", "Left", margin )
1557 ok = VRset("GB_CURRENT3", "Height", 245 )
1558 ok = VRset("GB_CURRENT3", "Width", lpane_width - marginx2)
1559
1560 ok = VRset("DT_CURRENT", "Top", 8 )
1561 ok = VRset("DT_CURRENT", "Left", 8 )
1562 ok = VRset("DT_CURRENT", "Height", 213 )
1563 ok = VRset("DT_CURRENT", "Width", (lpane_width - marginx2) - 24 )
1564
1565 ok = VRset("GB_CURRENT2", "Left", margin )
1566 ok = VRset("GB_CURRENT2", "Top", 245 + marginx2 )
1567 ok = VRset("GB_CURRENT2", "Width", lpane_width - marginx2)
1568 ok = VRset("GB_CURRENT2", "Height", pane_height - (margin * 5) - pbtn_height - 245 )
1569
1570 ok = VRset("CN_CURRENT", "Top", margin )
1571 ok = VRset("CN_CURRENT", "Left", margin )
1572 ok = VRset("CN_CURRENT", "Width", VRGet("GB_CURRENT2","Width") - marginx2)
1573 ok = VRset("CN_CURRENT", "Height", VRGet("GB_CURRENT2","Height") - marginx2)
1574
1575 ok = VRset("PB_DETACH", "Left", margin )
1576 ok = VRset("PB_DETACH", "Top", pane_height - pbtn_height - marginx2 )
1577 ok = VRset("PB_DETACH", "Width", min((lpane_width-margin*3) % 2, 1313) )
1578 ok = VRset("PB_UNMOUNT", "Left", VRGet("PB_DETACH","Width") + marginx2)
1579 ok = VRset("PB_UNMOUNT", "Top", pane_height - pbtn_height - marginx2 )
1580 ok = VRset("PB_UNMOUNT", "Width", min((lpane_width-margin*3) % 2, 1313) )
1581
1582 /* SMBTree stuff */
1583 ok = VRSet("GB_SMBTREE", "Top", marginx2 )
1584 ok = VRSet("GB_SMBTREE", "Left", split_left + 60 )
1585 ok = VRset("GB_SMBTREE", "Height", pane_height )
1586 ok = VRset("GB_SMBTREE", "Width", rpane_width )
1587
1588 ok = VRset("GB_SMBTREE3","Top", margin )
1589 ok = VRset("GB_SMBTREE3","Left", margin )
1590 ok = VRset("GB_SMBTREE3","Height", 245 )
1591 ok = VRset("GB_SMBTREE3","Width", rpane_width - marginx2)
1592
1593 ok = VRset("DT_SMBTREE", "Top", 8 )
1594 ok = VRset("DT_SMBTREE", "Left", 8 )
1595 ok = VRset("DT_SMBTREE", "Width", (rpane_width - marginx2) - 24 )
1596
1597 ok = VRset("GB_SMBTREE2","Left", margin )
1598 ok = VRset("GB_SMBTREE2","Top", 245 + marginx2 )
1599 ok = VRset("GB_SMBTREE2","Width", rpane_width - marginx2)
1600 ok = VRset("GB_SMBTREE2","Height", pane_height - (margin * 5) - pbtn_height - 245 )
1601
1602 ok = VRset("CN_SMBTREE", "Top", margin )
1603 ok = VRset("CN_SMBTREE", "Left", margin )
1604 ok = VRset("CN_SMBTREE", "Width", VRGet("GB_SMBTREE2","Width") - marginx2)
1605 ok = VRset("CN_SMBTREE", "Height", VRGet("GB_SMBTREE2","Height") - marginx2)
1606
1607 ok = VRset("PB_CONNECT", "Left", margin)
1608 ok = VRset("PB_CONNECT", "Top", pane_height - pbtn_height - marginx2)
1609 ok = VRset("PB_REFRESH", "Left", VRGet("PB_CONNECT","Width") + marginx2)
1610 ok = VRset("PB_REFRESH", "Top", pane_height - pbtn_height - marginx2)
1611
1612 ok = VRset("PICT_THROBBER", "Top", VRGet("CN_SMBTREE","Height") % 2 + 100 )
1613 ok = VRset("PICT_THROBBER", "Left", VRGet("CN_SMBTREE","Width") % 2 - 200 )
1614
1615 /* Connection details stuff */
1616 ok = VRSet("GB_CONDET", "Top", marginx2 )
1617 ok = VRSet("GB_CONDET", "Left", split_left + 60 )
1618 ok = VRset("GB_CONDET", "Height", pane_height )
1619 ok = VRset("GB_CONDET", "Width", rpane_width )
1620
1621 ok = VRset("GB_CONDET3","Top", margin )
1622 ok = VRset("GB_CONDET3","Left", margin )
1623 ok = VRset("GB_CONDET3","Height", 245 )
1624 ok = VRset("GB_CONDET3","Width", rpane_width - marginx2)
1625
1626 ok = VRset("DT_CONDET", "Top", 8 )
1627 ok = VRset("DT_CONDET", "Left", 8 )
1628 ok = VRset("DT_CONDET", "Width", (rpane_width - marginx2) - 24 )
1629
1630 ok = VRset("GB_CONDET2", "Left", margin )
1631 ok = VRset("GB_CONDET2", "Top", 245 + marginx2)
1632 ok = VRset("GB_CONDET2", "Width", rpane_width - marginx2)
1633 ok = VRset("GB_CONDET2", "Height", pane_height - (margin * 5) - pbtn_height - 245 )
1634
1635 ok = VRset("CN_CONDET", "Top", margin )
1636 ok = VRset("CN_CONDET", "Left", margin )
1637 ok = VRset("CN_CONDET", "Width", VRGet("GB_CONDET2","Width") - marginx2)
1638 ok = VRset("CN_CONDET", "Height", VRGet("GB_CONDET2","Height") - marginx2)
1639
1640 ok = VRset("PB_CONDET_SAVE", "Left", margin )
1641 ok = VRset("PB_CONDET_SAVE", "Top", pane_height - pbtn_height - marginx2 )
1642 ok = VRset("PB_CONDET_LOAD", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
1643 ok = VRset("PB_CONDET_LOAD", "Top", pane_height - pbtn_height - marginx2 )
1644
1645 /* Dialog stuff */
1646 ok = VRSet("GB_DIALOG", "Top", marginx2 )
1647 ok = VRSet("GB_DIALOG", "Left", split_left + 60 )
1648 ok = VRset("GB_DIALOG", "Height", pane_height )
1649 ok = VRset("GB_DIALOG", "Width", rpane_width )
1650
1651 ok = VRset("GB_DIALOG3", "Top", margin )
1652 ok = VRset("GB_DIALOG3", "Left", margin )
1653 ok = VRset("GB_DIALOG3", "Height", 245 )
1654 ok = VRset("GB_DIALOG3", "Width", rpane_width - marginx2)
1655
1656 ok = VRset("DT_DIALOG", "Top", 8 )
1657 ok = VRset("DT_DIALOG", "Left", 8 )
1658 ok = VRset("DT_DIALOG", "Width", (rpane_width - marginx2) - 24 )
1659
1660 ok = VRset("PB_MOUNT", "Left", margin )
1661 ok = VRset("PB_MOUNT", "Top", pane_height - pbtn_height - marginx2)
1662 ok = VRset("PB_EDITCANCEL", "Left", VRGet("PB_MOUNT","Width") + marginx2)
1663 ok = VRset("PB_EDITCANCEL", "Top", pane_height - pbtn_height - marginx2)
1664
1665 ok = VRset("GB_SHARE", "Left", margin )
1666 ok = VRset("GB_SHARE", "Top", 245 + marginx2)
1667 ok = VRset("GB_SHARE", "Width", rpane_width - marginx2)
1668
1669 ok = VRset("GB_AUTH", "Left", margin )
1670 ok = VRset("GB_AUTH", "Top", 245 + (margin * 3) + VRGet("GB_SHARE","Height"))
1671 ok = VRset("GB_AUTH", "Width", rpane_width - marginx2)
1672
1673 ok = VRset("GB_MPOINT","Left", margin )
1674 ok = VRset("GB_MPOINT","Top", 245 + (margin * 4) + VRGet("GB_SHARE","Height") + VRGet("GB_AUTH","Height"))
1675 ok = VRset("GB_MPOINT","Width", rpane_width - marginx2)
1676
1677 ok = VRset("SPLIT_Main", "Visible", 1 )
1678 ok = VRset("SPLIT_Main", "Top", marginx2 )
1679 ok = VRset("SPLIT_Main", "Height", pane_height )
1680
1681 ok = VRSet("GB_STATUSBAR", "Left", margin )
1682 ok = VRSet("GB_STATUSBAR", "Top", main_iheight - sbar_height - margin )
1683 ok = VRSet("GB_STATUSBAR", "Width", lpane_width + 50 + rpane_width )
1684
1685 ok = VRset("DT_STATUSBAR", "Top", 12 )
1686 ok = VRset("DT_STATUSBAR", "Left", 12 )
1687 ok = VRset("DT_STATUSBAR", "Width", (lpane_width + 50 + rpane_width) - 24 )
1688 ok = VRset("Main","Painting", 1)
1689
1690 /* check and empty event queue, trash spurious resize events */
1691 EventString = ''
1692 TrashedResize = 0
1693
1694 do until EventString = 'nop'
1695 EventString = VREvent('N')
1696 if EventString <> 'nop' then do
1697 if EventString = 'CALL Main_Resize' then TrashedResize = 1
1698 else interpret eventString
1699 end
1700 end
1701 if TrashedResize then CALL Main_Resize
1702
1703 IF options.!debug == 1 THEN SAY time()' Main_Resize done'
1704return
1705/*:VRX Menu_Context_ChangeView_Click
1706*/
1707Menu_Context_ChangeView_Click:
1708 ok = VRSet("Cn_Current","View","NameTree")
1709return
1710
1711/*:VRX Menu_Context_Detach_Click
1712*/
1713Menu_Context_Detach_Click:
1714 call PB_DETACH_Click
1715return
1716
1717/*:VRX Menu_Context_Edit_Click
1718*/
1719Menu_Context_Edit_Click:
1720 IF options.!debug == 1 THEN SAY time()' Menu_Context_Edit_Click started'
1721 options.!editmode = 1
1722 if \VRGet("Menu_View_Dialog","Checked") then call Menu_View_Dialog_Click
1723 CALL VRSet "PB_EDITCANCEL","Visible", 1
1724 CALL VRSet "PB_UNMOUNT","Enabled", 0
1725 CALL VRSet "PB_SAVE","Enabled", 0
1726 CALL VRSet "PB_LOAD","Enabled", 0
1727 CALL NLVSetText "DT_DIALOG","Caption",33
1728 CALL VRSet "GB_CURRENT", "ENABLED", 0
1729
1730 ok = VRSet("CB_MOUNT","Value","")
1731 ok = VRSet("CB_MOUNT","Selected",1)
1732 ok = VRSet("CB_MOUNT","Value",mtype.1)
1733
1734 parse var p_string p_domain':\\'p_server'\'p_share
1735
1736 /* IF options.!debug == 1 THEN SAY time()' '||p_domain */
1737
1738 IF options.!debug == 1 THEN SAY time()' data '||data
1739 IF options.!debug == 1 THEN SAY time()' domain '||p_domain
1740 IF options.!debug == 1 THEN SAY time()' server '||p_server
1741 IF options.!debug == 1 THEN SAY time()' share '||p_share
1742 IF options.!debug == 1 THEN SAY time()' string '||p_string
1743
1744
1745 CALL VRSet "EF_SHARE", "VALUE", p_share
1746 CALL VRSet "EF_SERVER", "VALUE", p_server
1747 CALL VRSet "EF_NETWORK","VALUE", p_domain
1748
1749 /* IF options.!debug == 1 THEN SAY time()' '||p_node */
1750 parse var p_node p_drive'\'p_directory'\'
1751 CALL VRSet "CB_DRIVES", "Value", p_drive
1752 CALL VRSet "EF_DIRECTORY", "Value", p_directory
1753 IF options.!debug == 1 THEN SAY time()' Menu_Context_Edit_Click done'
1754return
1755
1756/*:VRX Menu_Context_Open_Click
1757*/
1758Menu_Context_Open_Click:
1759 CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'Selected', 'select.'
1760 IF select.0 < 1 THEN RETURN
1761
1762 userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', select.1, 'UserData')
1763 PARSE VAR userdata mountpoint ';' mounts ';' .
1764
1765 say mountpoint
1766 rc = SysOpenObject(mountpoint, "DEFAULT", 1)
1767return
1768
1769/*:VRX Menu_Context_Unmount_Click
1770*/
1771Menu_Context_Unmount_Click:
1772 call PB_UNMOUNT_Click
1773return
1774
1775/*:VRX Menu_File_Advanced_Click
1776*/
1777Menu_File_Advanced_Click:
1778 call PB_ADVANCED_Click
1779return
1780
1781/*:VRX Menu_File_Autostart_Activate_Click
1782*/
1783Menu_File_Autostart_Activate_Click:
1784 call PB_AUTOSTART_Click
1785return
1786
1787/*:VRX Menu_File_Autostart_Click
1788*/
1789Menu_File_Autostart_Click:
1790
1791return
1792
1793/*:VRX Menu_File_Autostart_Deactivate_Click
1794*/
1795Menu_File_Autostart_Deactivate_Click:
1796 ok = SysDestroyObject("<EVFSGUI_AUTOSTART>")
1797 IF ok == 1 THEN CALL VRMessage 'Main', NLVGetMessage( 79 ), NLVGetMessage( 1 )
1798 ELSE CALL VRMessage 'Main', NLVGetMessage( 78 ), NLVGetMessage( 5 ), 'E'
1799return
1800
1801/*:VRX Menu_File_Close_Click
1802*/
1803Menu_File_Close_Click:
1804 call PB_CLOSE_Click
1805return
1806
1807/*:VRX Menu_File_Load_Click
1808*/
1809Menu_File_Load_Click:
1810 call PB_LOAD_Click
1811return
1812
1813/*:VRX Menu_File_Save_Click
1814*/
1815Menu_File_Save_Click:
1816 call PB_CONDET_SAVE_Click
1817return
1818
1819/*:VRX Menu_File_Settings_Click
1820*/
1821Menu_File_Settings_Click:
1822 adv_changed = 0
1823 CALL VRLoadSecondary "SW_SETTINGS", "W"
1824 IF adv_changed == 1 THEN DO
1825 advanced.!logfile = adv_logfile
1826 advanced.!loglevel = adv_loglevel
1827 advanced.!browseauth= adv_browseauth
1828 advanced.!browseimme= adv_browseimme
1829 advanced.!debug = adv_debug
1830 advanced.!special = adv_special
1831 advanced.!savepassive=adv_savepassive
1832 advanced.!broadcast =adv_broadcast
1833 END
1834return
1835
1836/*:VRX Menu_Help_About_Click
1837*/
1838Menu_Help_About_Click:
1839 CALL VRMessage 'Main', VRGet("Main", "HintText")||'0D0A'x||'(c) 2007-2009 Alex Taylor and Herwig Bauernfeind',NLVGetMessage( 1 ), 'I'
1840return
1841
1842/*:VRX Menu_Help_Extended_Click
1843*/
1844Menu_Help_Extended_Click:
1845 call PB_HELP_Click
1846return
1847
1848/*:VRX Menu_Selected_Connect_Click
1849*/
1850Menu_Selected_Connect_Click:
1851 call PB_CONNECT_Click
1852return
1853
1854/*:VRX Menu_Selected_Default_Workgroup_Click
1855*/
1856Menu_Selected_Default_Workgroup_Click:
1857 workgroupname = VRMethod("CN_smbtree","GetRecordAttr",rh,"Caption")
1858 ok = TRSetIni("[global]","workgroup", workgroupname, samba.!smbconf)
1859return
1860
1861/*:VRX Menu_Selected_Info_Click
1862*/
1863Menu_Selected_Info_Click:
1864 ok = VRMethod( "CN_smbtree", "GetRecordList", "SourceOrSelected", "srcrec." )
1865 if srcrec.0 = 0 then return
1866
1867 Userdata = VRMethod("CN_smbtree","GetRecordAttr",srcrec.1,"Userdata")
1868 machine = VRMethod("CN_smbtree","GetRecordAttr",srcrec.1,"Caption")
1869
1870 parse var machine machine '0D0A'x .
1871 parse var userdata . '|' userdata
1872
1873 say samba.!smbclientexe' -L "'strip(machine)'" -N 'debuglevel' 2>'samba.!msg' 1>NUL'
1874 address cmd samba.!smbclientexe' -L "'strip(machine)'" -N 'debuglevel' 2>'samba.!msg' 1>NUL'
1875 infoline = linein(samba.!msg)
1876 if word(infoline,1) = "creating" then do /* upcase tables are missing */
1877 say "Missing upcase tables detected!"
1878 infoline = linein(samba.!msg)
1879 infoline = linein(samba.!msg)
1880 end
1881 say '"'Infoline'"'
1882 ok = stream(samba.!msg,'c','close')
1883 ok = SysFileDelete(samba.!msg)
1884
1885 window = VRLoadSecondary( "SW_INFO", "W" )
1886return
1887
1888/*:VRX Menu_Selected_Remove_Click
1889*/
1890Menu_Selected_Remove_Click:
1891 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
1892 if selrec.0 = 0 then return
1893
1894 do I = 1 to selrec.0
1895 if VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.statusfh) = '#68:PMWP.DLL' then do
1896 CALL VRMethod 'CN_CONDET', 'RemoveRecord', selrec.I
1897 end
1898 else do
1899 mountpoint = VRMethod('CN_CONDET', "GetFieldData", selrec.I, cd.mpointfh)
1900 mpidx = VRMethod('CN_CONDET', "GetFieldData", selrec.I, cd.mpidxfh)
1901 if mpidx = 1 then do
1902 btns.0 = 2
1903 btns.1 = NLVGetMessage( 6 )
1904 btns.2 = NLVGetMessage( 7 )
1905 confirm = VRMessage('Main', NLVGetMessage( 72, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
1906 IF confirm \= 1 THEN RETURN
1907
1908 dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, mpidx )"
1909 IF options.!debug == 1 THEN SAY time()' '||dyn
1910 interpret dyn; drop dyn
1911 CALL VRMethod 'CN_CONDET', 'RemoveRecord', selrec.I
1912 CALL Refresh
1913 end
1914 else do
1915 CALL VRMessage 'Main', NLVGetMessage( 71 ) , NLVGetMessage( 89 )||" "||mountpoint , 'E'
1916 end
1917 end
1918 end
1919return
1920
1921/*:VRX Menu_Selected_Retry_Click
1922*/
1923Menu_Selected_Retry_Click: PROCEDURE EXPOSE settings. options. vfs. fs. advanced. cd. samba.
1924
1925 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "srcrec." )
1926 if srcrec.0 = 0 then return
1927
1928 srcrec = srcrec.1
1929
1930 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.MpointFH)
1931
1932 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.WorkgroupFH)
1933 p_server = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ServerFH)
1934 p_share = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ShareFH)
1935 p_user = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.UserFH)
1936 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.SpasswordFH))
1937
1938 ShareLevel = 1
1939 if p_share = "" then ShareLevel = 2
1940 if p_server = "" then ShareLevel = 3
1941 if p_workgroup = "" then ShareLevel = 4
1942
1943 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
1944 ok = VRset("CB_MOUNT" , "Value", mtype.sharelevel)
1945
1946 ok = VRset("EF_SERVER" , "Value", p_server)
1947 ok = VRset("EF_SHARE" , "Value", p_share)
1948 ok = VRset("EF_NETWORK", "Value", p_workgroup)
1949 ok = VRset("EF_USER" , "Value", p_user)
1950 ok = VRset("EF_PASSWORD", "Value", p_password)
1951
1952 parse var p_mpoint p_drv '\' p_dir
1953
1954 p_dir = strip(p_dir,'T','\')
1955
1956 ok = VRset("CB_DRIVES" , "Value", p_drv)
1957 ok = VRset("EF_DIRECTORY" , "Value", p_dir)
1958
1959 CALL PB_MOUNT_Click
1960
1961 if VRMethod( 'CN_CONDET', "ValidateRecord", srcRec) = 1 then do
1962 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = '#68:PMWP.DLL' then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
1963 end
1964return
1965
1966/*:VRX Menu_View_Buttons_Click
1967*/
1968Menu_View_Buttons_Click:
1969 current_height = VRGet("Main", "Height")
1970 buttons_height = margin * 2 + 400
1971 if settings.!buttonson = 1 then do
1972 ok = VRSet("Menu_View_Buttons","Checked",0)
1973 ok = VRset("GB_Buttons","Visible", 0)
1974 options.!buttondelta = 0
1975 settings.!buttonson = 0
1976 new_height = current_height - buttons_height
1977 end
1978 else do
1979 ok = VRSet("GB_Buttons","Visible", 1)
1980 ok = VRSet("Menu_View_Buttons","Checked",1)
1981 options.!buttondelta = buttons_height
1982 settings.!buttonson = 1
1983 new_height = current_height + buttons_height
1984 end
1985
1986 ok = VRSet("Main", "Height", new_height )
1987return
1988
1989/*:VRX Menu_View_ConDet_Click
1990*/
1991Menu_View_ConDet_Click:
1992 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
1993
1994 ok = VRset("GB_SMBTREE","Visible", 0)
1995 ok = VRset("GB_SMBTREE","Painting", 0)
1996 ok = VRset("GB_Dialog", "Visible", 0)
1997 ok = VRset("GB_Dialog", "Painting", 0)
1998 ok = VRset("GB_CONDET", "Visible", 1)
1999 ok = VRset("GB_CONDET", "Painting", 1)
2000
2001 ok = VRSet("Menu_View_SmbTree","Checked", 0)
2002 ok = VRSet("Menu_View_Dialog", "Checked", 0)
2003 ok = VRSet("Menu_View_ConDet", "Checked", 1)
2004
2005 /* Hide any "foreign" menu entries */
2006 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
2007return
2008
2009/*:VRX Menu_View_Dialog_Click
2010*/
2011Menu_View_Dialog_Click:
2012 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
2013
2014 ok = VRset("GB_SMBTREE","Visible", 0)
2015 ok = VRset("GB_SMBTREE","Painting", 0)
2016 ok = VRset("GB_CONDET", "Visible", 0)
2017 ok = VRset("GB_CONDET", "Painting", 0)
2018 ok = VRset("GB_Dialog", "Visible", 1)
2019 ok = VRset("GB_Dialog", "Painting", 1)
2020
2021 ok = VRSet("Menu_View_SmbTree","Checked", 0)
2022 ok = VRSet("Menu_View_ConDet", "Checked", 0)
2023 ok = VRSet("Menu_View_Dialog", "Checked", 1)
2024
2025 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
2026 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
2027
2028 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
2029
2030 call _DialogPopulate
2031return
2032
2033/*:VRX Menu_View_MiniIcons_Click
2034*/
2035Menu_View_MiniIcons_Click:
2036 advanced.!bigicons = \advanced.!bigicons
2037 ok = VRset("CN_CURRENT", "MiniIcons", \advanced.!bigicons)
2038 ok = VRset("CN_SMBTREE", "MiniIcons", \advanced.!bigicons)
2039 ok = VRset("CN_CONDET", "MiniIcons", \advanced.!bigicons)
2040 ok = VRset("Menu_View_MiniIcons", "Checked", \advanced.!bigicons)
2041return
2042
2043/*:VRX Menu_View_SmbTree_Click
2044*/
2045Menu_View_SmbTree_Click:
2046 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 1)
2047
2048 ok = VRset("GB_Dialog", "Visible", 0)
2049 ok = VRset("GB_Dialog", "Painting", 0)
2050 ok = VRset("GB_CONDET", "Visible", 0)
2051 ok = VRset("GB_CONDET", "Painting", 0)
2052 ok = VRset("GB_SMBTREE","Painting", 1)
2053 ok = VRset("GB_SMBTREE","Visible", 1)
2054
2055 ok = VRSet("Menu_View_Dialog","Checked", 0)
2056 ok = VRSet("Menu_View_ConDet","Checked", 0)
2057 ok = VRSet("Menu_View_SmbTree","Checked", 1)
2058
2059 /* Hide any "foreign" menu entries */
2060 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
2061 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
2062return
2063
2064/*:VRX Mount
2065*/
2066Mount: PROCEDURE EXPOSE settings. options. vfs. fs. advanced. cd. samba.
2067 IF options.!debug == 1 THEN SAY time()' Mount procedure started'
2068 /* Set mouse pointer to wait - this operation might take a few seconds */
2069 call VRSet VRWindow(), 'Pointer', 'Wait'
2070
2071/* Disabled because we merge profile now - in earlier revisions
2072 we replaced it but only for preexisting drives - this made only
2073 as long as we were unabled to detect double connections - this could be made an option!
2074 IF options.!autoload then do
2075 dyn = "ok = "fs.!prefix"RxDetach(vfs.!drive)"
2076 IF options.!debug == 1 THEN SAY time()' '||dyn
2077 interpret dyn; drop dyn
2078
2079 IF options.!debug == 1 THEN SAY time()' '||'Autoload Detach "'vfs.!drive'" =' ok
2080 end */
2081
2082 /* Attach the virtual drive - only if drive is not already attached */
2083 if pos(vfs.!drive,MyFreeDriveMap("C:","FREE")) > 0 then do
2084 dyn = "ok = "fs.!prefix"RxAttach( vfs.!drive )"
2085 IF options.!debug == 1 THEN SAY time()' '||dyn
2086
2087 interpret dyn; drop dyn
2088
2089 IF options.!debug == 1 THEN SAY time()' '||'Attach "'vfs.!drive'" =' ok
2090 end
2091
2092 /* Create the mount point and store whether it was created or already existed */
2093 dyn = "CreateMP = "fs.!prefix"RxCreateMountPoint( vfs.!mountpoint )"
2094 IF options.!debug == 1 THEN SAY time()' '||dyn
2095 interpret dyn; drop dyn
2096
2097 IF options.!debug == 1 THEN SAY time()' '||'Create "'vfs.!mountpoint'" = 'CreateMP
2098
2099
2100 /* Build the resource parameter string */
2101 src = ''
2102 IF options.!workgroup \= '' THEN src = src';WORKGROUP='options.!workgroup
2103 IF options.!server \= '' THEN src = src';SERVER='options.!server
2104 IF options.!share \= '' THEN src = src';SHARE='options.!share
2105 IF options.!user \= '' THEN src = src';USER='options.!user
2106 IF options.!password \= '' THEN src = src';PASSWORD='options.!password
2107 IF options.!spassword \= '' THEN src = src';SPASSWORD='options.!spassword
2108 IF options.!master \= '' THEN src = src';MASTER='options.!master
2109 IF options.!mastertype \= '' THEN src = src';MASTERTYPE='options.!mastertype
2110/* IF options.!memlen \= '' THEN src = src';MEMLEN='options.!memlen
2111 IF options.!logfile \= '' THEN src = src';LOGFILE='options.!logfile
2112 IF options.!loglevel \= '' THEN src = src';LOGLEVEL='options.!loglevel */
2113 IF options.!easupport \= '' THEN src = src';EASUPPORT='options.!easupport
2114
2115 IF options.!readonly = 1 then rwFlag = 'R'; else rwFlag = 'W'
2116
2117 parse var vfs.!mountpoint mpoint ';' .
2118 mpoint = strip(mpoint,'T','\')||'\'
2119
2120 if options.!master = "" then options.!master = "WORKGROUP"
2121 if options.!mtype = "" then options.!mtype = "1"
2122 if options.!loglevel = "" then options.!loglevel = "0"
2123 if options.!memlen = "" then options.!memlen = "2"
2124 if options.!easupport= "" | options.!easupport= " " then options.!easupport = strip(options.!easupport)
2125 if options.!password <> "" & options.!spassword = "" then do
2126 options.!spassword = c2x(options.!password)
2127 options.!password = ""
2128 end
2129
2130 hashstr = mpoint' 'translate(options.!workgroup)' 'translate(options.!server)' 'translate(options.!share)' 'options.!user' 'options.!spassword' 'options.!easupport' 'rwFlag
2131
2132 md5 = rexx_md5(hashstr)
2133
2134 CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.'
2135 DO i = 1 TO records.0
2136 hash = VRMethod("CN_CONDET","GetFieldData", records.i, cd.hashfh)
2137 say hash
2138 say md5
2139 if hash = md5 & VRMethod("CN_CONDET","GetFieldData", records.i, cd.statusfh) = '#64:PMWP.DLL' then do /* Same hash, status active */
2140 say "Double connection deteced!!"
2141 if options.!spassword <> "" then upw = ":********"
2142 else upw = ""
2143 buttons.0 = 2
2144 buttons.1 = NLVGetMessage(9)
2145 buttons.2 = NLVGetMessage(3)
2146 Answer = VRMessage('Main',NLVGetMessage(64) , NLVGetMessage( 36,options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
2147 if Answer = 2 then do
2148 call VRSet VRWindow(), 'Pointer', '<default>'
2149 say "Double connection - do not mount!!"
2150 return
2151 end
2152 end
2153 end
2154
2155 cd.lastrh = ""
2156 ok = ParseResourceData(vfs.!mountpoint,'SMBFS SMBFS64 \\'options.!workgroup':'options.!server'\'options.!share'@'options.!user||src' 'rwFlag)
2157
2158 /* Now mount the resource */
2159 dyn ="ok = "fs.!prefix"RxMount('smbfs', vfs.!mountpoint, src, rwFlag)"
2160 IF options.!debug == 1 THEN SAY time()' '||dyn
2161 interpret dyn; drop dyn
2162
2163 IF options.!debug == 1 THEN SAY time()' '||'Mount "'vfs.!mountpoint'" =' ok
2164 if ok <> 0 then do
2165 if options.!password <> "" then upw = ":********"
2166 else upw = ""
2167 buttons.0 = 2
2168 buttons.1 = NLVGetMessage(2)
2169 buttons.2 = NLVGetMessage(37)
2170 Answer = VRMessage('Main', SysGetMessage(ok), NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
2171 if Answer = 2 then do /* Show explanation */
2172 xx = VRMessage('Main', NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint )||'0D0A'x||'0D0A'x||SysGetMessage(ok)||'0D0A'x||'0D0A'x||SysGetMessage(ok, 'OSO001H.MSG'), NLVGetMessage(37), 'W')
2173 end
2174 if cd.lastrh <> '' then do
2175 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#68:PMWP.DLL') /* Passive Connection icon */
2176 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#68:PMWP.DLL') /* Passive Connection icon */
2177 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, '') /* remove pain text password */
2178 end
2179
2180 /* In case the mountpoint was created for this failed operation, it is (optionally) removed again */
2181 if CreateMP = 0 & \advanced.!alwaysmp then do
2182 dyn ="ok = "fs.!prefix"RxDeleteMountPoint( vfs.!mountpoint )"
2183 interpret dyn
2184 IF options.!debug == 1 THEN SAY time()' '||'Remove "'vfs.!mountpoint'" = 'ok
2185 end
2186 end
2187 drop CreateMP /* not required anymore */
2188
2189/* Obsolete - the IOCtl will not be implemented this way in the plugin
2190 The REXX function is present, but is has no counterpart in the plugin
2191 ok = EvfsRxIoctl( 100 , vfs.!mountpoint, outstring)
2192 IF options.!debug == 1 THEN SAY time()' '||'RxIoctl "'vfs.!mountpoint'" = 'ok', 'outstring
2193 */
2194 /* Set mouse pointer to default again */
2195 call VRSet VRWindow(), 'Pointer', '<default>'
2196 IF options.!debug == 1 THEN SAY time()' Mount procedure done'
2197RETURN ok
2198
2199/*:VRX MyFreeDriveMap
2200*/
2201MyFreeDriveMap: procedure expose options. fs. samba.
2202 IF options.!debug == 1 THEN SAY time()' MyFreeDriveMap(proc) started'
2203 alldrives = "C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:"
2204/* IF options.!debug == 1 THEN SAY time()' '||"SysDriveMap(USED) started" */
2205 useddrives= SysDriveMap("C:","USED")
2206/* IF options.!debug == 1 THEN SAY time()' '||"SysDriveMap(USED) done" */
2207
2208 Alldr = words(alldrives)
2209 FreeDriveMap = ""
2210 do I = 1 to AllDr
2211 if word(alldrives,1) = word(useddrives,1) then do
2212 Useddrives = subword(useddrives,2)
2213 Alldrives = subword(Alldrives,2)
2214 end
2215 else do
2216 FreeDriveMap = FreeDriveMap||word(alldrives,1)||' '
2217 Alldrives = subword(Alldrives,2)
2218 end
2219 end
2220 IF options.!debug == 1 THEN SAY time()' MyFreeDriveMap(proc) done, result "'FreeDriveMap'"'
2221return FreeDriveMap
2222/*:VRX NoEVFSCALL
2223*/
2224NoEVFSCALL:
2225 CALL VRMessage 'Main', NLVGetMessage( 100 ), NLVGetMessage( 5 ), 'E'
2226 signal Halt
2227RETURN
2228
2229/*:VRX ParseCommandLine
2230*/
2231ParseCommandLine:
2232 IF options.!debug == 1 THEN SAY time()' ParseCommandLine() started'
2233 CmdLine = VRGet("Application","Commandline")
2234 upCmdLine = translate(CmdLine)
2235 IF options.!debug == 1 THEN SAY ' Commandline = "'CmdLine'"'
2236
2237 ForceNDFS = 0
2238 if wordpos('-NDFS',upCmdLine) > 0 then do
2239 IF options.!debug == 1 THEN SAY " NDFS switch detected"
2240 CmdLine = delWord(CmdLine,wordpos('-NDFS',upCmdLine),1)
2241 upCmdLine = translate(CmdLine)
2242 ForceNDFS = 1
2243 CALL VRSet "PB_AutoStart","Visible", 0
2244 end
2245
2246 if wordpos('-AUTOCLOSE',upCmdLine) > 0 then do
2247 options.!autoclose = 1
2248 IF options.!debug == 1 THEN SAY " AutoClose switch detected"
2249 CmdLine = delWord(CmdLine,wordpos('-AUTOCLOSE',upCmdLine),1)
2250 upCmdLine = translate(CmdLine)
2251 end
2252 if wordpos('-NOGUI',upCmdLine) > 0 then do
2253 options.!nogui = 1
2254 options.!autoclose = 1
2255 IF options.!debug == 1 THEN SAY " -NOGUI switch detected"
2256 CmdLine = delWord(CmdLine,wordpos('-NOGUI',upCmdLine),1)
2257 upCmdLine = translate(CmdLine)
2258 end
2259
2260 Profile = strip(CmdLine,,'"')
2261 if Profile <> "" then do
2262 Profile = strip(VRParseFilename(Profile,"DPNE"))
2263 options.!autoload = 1
2264 IF options.!debug == 1 THEN SAY ' Profile = "'Profile'"'
2265 if \VRFileExists(Profile) then do
2266 CALL VRMessage 'Main', NLVGetMessage( 102, Profile ), NLVGetMessage( 1 ), 'E'
2267 /* Disable all switches in case of an error */
2268 options.!autoload = 0
2269 options.!autoclose = 0
2270 options.!nogui = 0
2271 end
2272 end
2273 IF options.!debug == 1 THEN SAY time()' ParseCommandLine done'
2274return
2275
2276/*:VRX ParseResourceData
2277*/
2278ParseResourceData: PROCEDURE EXPOSE userdata options. advanced. fs. cd. samba.
2279 PARSE ARG userdata, resdata
2280 IF options.!debug == 1 THEN SAY time()' ParseResourceData started'
2281 IF options.!debug == 1 THEN SAY ' receiving "'userdata'" "'resdata'" length ('length(resdata)')'
2282
2283/* WARNING! resdata has a maximal length of 255 and is truncated otherwise */
2284
2285/* PARSE VAR resdata . ';WORKGROUP='p_domain';SERVER='p_server';SHARE='p_share';' . */
2286
2287 if left(word(resdata,1),5) <> "SMBFS" then do
2288 /* Support for other filesystems would come here! */
2289 userData = "UNKNOWN"
2290 end
2291 else do
2292 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
2293 PARSE VAR userdata p_mpoint ';' p_mpidx ';' .
2294
2295 p_mpoint = strip(p_mpoint,'T','\')||'\'
2296 p_rw = word(resdata, words(resdata))
2297
2298 /* Workaround for truncated resdata string */
2299 if length(p_rw) > 1 then do
2300 /* The resdata string must have been truncated
2301 p_rw is already wrong and
2302 p_easupport will most likely be also wrong (look below for workaround!) */
2303 p_rw ="W" /* this is guessed only!!! */
2304 IF options.!debug == 1 THEN SAY ' WARNING! Detected truncated resdata string - shorten workgroup name, server name, share name until this message goes away!'
2305 end
2306 /* this should be done unconditionally if the resdata string is never truncated */
2307 else resdata = left(resdata,length(resdata)-length(p_rw))
2308
2309 PARSE VAR resdata . 'WORKGROUP=' p_domain ';' .
2310 PARSE VAR resdata . 'SERVER=' p_server ';' .
2311 PARSE VAR resdata . 'SHARE=' p_share ';' .
2312 PARSE VAR resdata . 'USER=' p_user ';' .
2313 PARSE VAR resdata . ';PASSWORD=' p_password ';' .
2314 PARSE VAR resdata . 'SPASSWORD=' p_spassword ';' .
2315 PARSE VAR resdata . 'MASTER=' p_master ';' .
2316 PARSE VAR resdata . 'MASTERTYPE=' p_mtype ';' .
2317 PARSE VAR resdata . 'MEMLEN=' p_memlen ';' .
2318 PARSE VAR resdata . 'LOGFILE=' p_logfile ';' .
2319 PARSE VAR resdata . 'LOGLEVEL=' p_loglevel ';' .
2320 PARSE VAR resdata . 'EASUPPORT=' p_easupport ' '
2321
2322 if p_master = "" then p_master = "WORKGROUP"
2323 if p_mtype = "" then p_mtype = "1"
2324 if p_loglevel = "" then p_loglevel = "0"
2325 if p_memlen = "" then p_memlen = "2"
2326
2327 /* Also works around for a truncated resdata string! */
2328 if p_easupport= "" | p_easupport= " " then p_easupport = strip(options.!easupport)
2329
2330 if p_password <> "" & p_spassword = "" then do
2331 p_spassword = c2x(p_password)
2332 p_password = ""
2333 end
2334
2335 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx, cd.workgroupfh, p_domain, cd.serverfh, p_server, cd.sharefh, p_share, cd.userfh, p_user)
2336 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password, cd.spasswordfh, p_spassword, cd.masterfh, p_master, cd.mtypefh, p_mtype)
2337 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen, cd.easupportfh, p_easupport, cd.logfilefh, p_logfile, cd.loglevelfh, p_loglevel, cd.rwfh, p_rw)
2338 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#64:PMWP.DLL') /* Active */
2339 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#64:PMWP.DLL') /* Active */
2340
2341 hashstr = p_mpoint' 'translate(p_domain)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
2342
2343 md5 = rexx_md5(hashstr)
2344
2345 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5)
2346
2347 SELECT
2348 WHEN p_share == '' & p_server \= '' THEN DO /* all shares on server */
2349 IF p_domain == '' THEN
2350 userdata = userdata';\\'p_server'\*'
2351 ELSE
2352 userdata = userdata';'p_domain':\\'p_server'\*'
2353 END
2354 WHEN p_server == '' & p_domain \= '' THEN /* all servers in workgroup */
2355 userdata = userdata';'p_domain':\\*'
2356 WHEN p_server == '' & p_domain == '' THEN /* all workgroups */
2357 userdata = userdata';*:\\*'
2358 OTHERWISE DO
2359 IF p_domain == '' THEN
2360 userdata = userdata';\\'p_server'\'p_share
2361 ELSE
2362 userdata = userdata';'p_domain':\\'p_server'\'p_share
2363 END
2364 END
2365 end
2366
2367 IF options.!debug == 1 THEN SAY ' returning "'userdata'"'
2368 IF options.!debug == 1 THEN SAY time()' ParseresdataData done'
2369RETURN userdata
2370
2371/*:VRX PB_ADVANCED_Click
2372*/
2373PB_ADVANCED_Click:
2374 adv_changed = 0
2375 CALL VRLoadSecondary "SW_ADVANCED", "W"
2376 IF adv_changed == 1 THEN DO
2377 advanced.!memlen = adv_memlen
2378 advanced.!easupport = adv_eas
2379 advanced.!readonly = adv_readonly
2380 advanced.!alwaysmp = adv_alwaysmp
2381 END
2382RETURN
2383
2384/*:VRX PB_ADVCANCEL_Click
2385*/
2386PB_ADVCANCEL_Click:
2387
2388 adv_changed = 0
2389 CALL SW_ADVANCED_Close
2390
2391RETURN
2392
2393/*:VRX PB_ADVHELP_Click
2394*/
2395PB_ADVHELP_Click:
2396 CALL VRMethod 'SW_ADVANCED', 'InvokeHelp'
2397return
2398
2399/*:VRX PB_ADVOK_Click
2400*/
2401PB_ADVOK_Click:
2402
2403 adv_memlen = VRGet( "SPB_MEMLEN", "Value" )
2404 adv_eas = VRGet( "CB_EAS", "Set" )
2405 adv_readonly = VRGet( "CB_READONLY", "Set" )
2406 adv_alwaysmp = VRGet( "CB_ALWAYSMP", "Set" )
2407
2408 CALL SW_ADVANCED_Close
2409
2410return
2411
2412/*:VRX PB_AUTOSTART_Click
2413*/
2414PB_AUTOSTART_Click: PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba.
2415 options.!autostart = 1
2416 Profile = VRParseFilename(settings.!ini,'DPN')'.'fs.!profileext
2417
2418 CALL PB_SAVE_Click
2419
2420 rc = CreateObject( 'WPProgram', NLVGetMessage( 59 ),'<WP_START>',,
2421 'EXENAME='||VRParseFileName(VRget("Application","Program"),'DPNE')||';'||,
2422 'PROGTYPE=PM;'||,
2423 'TITLE='NLVGetMessage( 59 )';'||,
2424 'PARAMETERS='Profile' -AUTOCLOSE -NOGUI;'||,
2425 'STARTUPDIR='VRParseFileName(VRget("Application","Program"),'DP')';'||,
2426 'NOPRINT=YES;'||,
2427 'HIDEBUTTON=DEFAULT;'||,
2428 'MINWIN=DEFAULT;'||,
2429 'CCVIEW=DEFAULT;'||,
2430 'DEFAULTVIEW=DEFAULT;'||,
2431 'OBJECTID=<EVFSGUI_AUTOSTART>',,
2432 'REPLACE' )
2433
2434 IF rc == 1 THEN CALL VRMessage 'Main', NLVGetMessage( 60 ), NLVGetMessage( 1 )
2435 ELSE CALL VRMessage 'Main', NLVGetMessage( 61 ), NLVGetMessage( 5 ), 'E'
2436
2437 options.!autostart = 0
2438RETURN
2439
2440/*:VRX PB_CLOSE_Click
2441*/
2442PB_CLOSE_Click:
2443 CALL Quit
2444return
2445
2446/*:VRX PB_CONDET_LOAD_Click
2447*/
2448PB_CONDET_LOAD_Click:
2449 IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click started"
2450 call PB_LOAD_CLICK
2451 IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click done"
2452RETURN
2453
2454/*:VRX PB_CONDET_SAVE_Click
2455*/
2456PB_CONDET_SAVE_Click: PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba.
2457 IF options.!debug == 1 THEN SAY time()' '||"PB_CONDET_SAVE_Click started"
2458
2459 if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext)
2460 ELSE filename = Profile
2461
2462 IF filename == '' THEN RETURN
2463
2464 IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO
2465 btns.0 = 2
2466 btns.1 = NLVGetMessage( 6 )
2467 btns.2 = NLVGetMessage( 7 )
2468 confirm = VRMessage('Main', NLVGetMessage( 54, filename ), NLVGetMessage( 53 ), 'W', 'btns.', 1, 2 )
2469 IF confirm \= 1 THEN RETURN
2470 CALL VRChAttr filename,, 'HSR'
2471 CALL VRDeleteFile filename
2472 END
2473
2474 CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.'
2475 DO i = 1 TO records.0
2476 resdata = ""
2477 resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
2478 resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh)
2479 resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
2480 resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
2481 resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
2482 resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh)
2483 resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
2484 resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
2485 resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
2486 resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
2487 resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
2488 resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
2489 resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
2490/* resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
2491 resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
2492 resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */
2493 resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
2494 resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
2495 call lineout filename, resdata
2496 END
2497 CALL STREAM filename, 'C', 'CLOSE'
2498
2499 if options.!autostart == 0 THEN CALL VRMessage 'Main', NLVGetMessage( 52, filename ), NLVGetMessage( 51 ), 'I'
2500
2501 IF options.!debug == 1 THEN SAY time()' '||"PB_CONDET_SAVE_Click done"
2502RETURN
2503
2504/*:VRX PB_CONNECT_Click
2505*/
2506PB_CONNECT_Click: PROCEDURE EXPOSE settings. options. fs. advanced. cd. samba.
2507 IF options.!debug == 1 THEN SAY time()' '||"PB_CONNECT_Click started"
2508 p_workgroup = ''
2509 p_server = ''
2510 p_share = ''
2511
2512 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Selected", "handle." )
2513
2514 say "handle.0="handle.0
2515
2516 if handle.0 = 0 then return
2517
2518 srcCtn = "CN_SMBTree"
2519 srcRec = handle.1
2520 trgCtn = "CN_Current"
2521 trgRec = ""
2522
2523 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
2524
2525 say VRGet(srcCtn,'Name')
2526 say "TargetRecord = '"trgRec"'"
2527
2528 DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption")
2529 parRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent")
2530
2531 if parRH = "" then do /* A workgroup was dragged */
2532 say "Workgroup dragged!"
2533 parse var DragCapt p_workgroup '0D0A'x .
2534 p_workgroup = strip(p_workgroup)
2535 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
2536 ok = VRSet("EF_SERVER","Value","")
2537 ok = VRSet("EF_SHARE","Value","")
2538
2539 ShareLevel = 3
2540 end
2541 else do
2542 ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParRH, "Caption")
2543 GParRH = VRMethod(srcCtn, "GetRecordAttr", ParRH, "Parent")
2544
2545 if GParRH = "" then do /* A server was dragged */
2546 say "Server dragged!"
2547 parse var ParDragCapt p_workgroup '0D0A'x .
2548 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
2549 p_workgroup = strip(p_workgroup)
2550
2551 parse var DragCapt p_server '0D0A'x .
2552 p_server = strip(p_server)
2553 ok = VRSet("EF_SERVER","Value",strip(p_server))
2554 ok = VRSet("EF_Share","Value","")
2555
2556 ShareLevel = 2
2557 end
2558 else do /* A share was dragged */
2559 say "Share dragged!"
2560 GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParRH, "Caption")
2561
2562 parse var GParDragCapt p_workgroup '0D0A'x .
2563 p_workgroup = strip(p_workgroup)
2564 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
2565
2566 parse var ParDragCapt p_server '0D0A'x .
2567 p_server = strip(p_server)
2568 ok = VRSet("EF_SERVER","Value",strip(p_server))
2569
2570 parse var DragCapt p_share '0D0A'x .
2571 p_share = strip(p_share)
2572 ok = VRSet("EF_Share","Value",strip(p_share))
2573
2574 ShareLevel = 1
2575 end
2576 end
2577
2578 say 'p_workgroup = "'p_workgroup'"'
2579 say 'p_server = "'p_server'"'
2580 say 'p_share = "'p_share'"'
2581
2582 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
2583 call CB_MOUNT_Change
2584
2585 if trgRec = "" then do
2586 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
2587 if VRGet("CB_DRIVES","Value") = "" then return
2588 end
2589 else do
2590
2591 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
2592
2593 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
2594
2595 do while parTrgRH <> ""
2596 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
2597 TargetString = partrgCapt||'\'||TargetString
2598 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
2599 end
2600 say 'TargetString = "'TargetString'"'
2601 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
2602 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
2603 end
2604
2605 window = VRLoadSecondary( "SW_LOGIN", "W" )
2606
2607 call PB_MOUNT_CLICK
2608
2609 IF options.!debug == 1 THEN SAY time()' '||"PB_CONNECT_Click done"
2610RETURN
2611
2612/*:VRX PB_DETACH_Click
2613*/
2614PB_DETACH_Click: PROCEDURE EXPOSE settings. options. fs. cd. samba.
2615 IF options.!debug == 1 THEN SAY time()' '||"PB_DETACH_Click started"
2616 CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'Selected', 'select.'
2617 IF select.0 < 1 THEN RETURN
2618
2619 userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', select.1, 'UserData')
2620 PARSE VAR userdata mountpoint ';' mounts ';' .
2621 drive = STRIP( mountpoint, 'T', '\')
2622
2623 btns.0 = 2
2624 btns.1 = NLVGetMessage( 6 )
2625 btns.2 = NLVGetMessage( 7 )
2626 confirm = VRMessage('Main', NLVGetMessage( 58, drive ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
2627 IF confirm \= 1 THEN RETURN
2628
2629 /* TODO: ?? Unmount & delete all child mountpoints? */
2630
2631 /* Unmount any resources */
2632 DO i = 1 TO mounts
2633 dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, i-1 )"
2634 IF options.!debug == 1 THEN SAY time()' '||dyn
2635 interpret dyn; drop dyn
2636/* IF options.!debug == 1 THEN SAY time()' '||'Unmount resource' i-1 '=' ok */
2637 END
2638
2639 dyn ="ok = "fs.!prefix"RxDetach( drive )"
2640 IF options.!debug == 1 THEN SAY time()' '||dyn
2641 interpret dyn; drop dyn
2642/* IF options.!debug == 1 THEN SAY time()' '||'Detach' drive '=' ok */
2643
2644 CALL Refresh
2645 IF options.!debug == 1 THEN SAY time()' '||"PB_DETACH_Click done"
2646RETURN
2647
2648/*:VRX PB_EDITCANCEL_Click
2649*/
2650PB_EDITCANCEL_Click:
2651 options.!editmode = 0
2652 CALL VRSet "PB_UNMOUNT","Enabled", 1
2653 CALL VRSet "PB_SAVE","Enabled", 1
2654 CALL VRSet "PB_LOAD","Enabled", 1
2655 CALL VRSet "GB_CURRENT", "ENABLED", 1
2656 ok = VRSet("PB_EDITCANCEL","Visible", 0)
2657 CALL NLVSetText 'DT_DIALOG', 'Caption', 13
2658RETURN 0
2659
2660/*:VRX PB_HELP_Click
2661*/
2662PB_HELP_Click:
2663 CALL VRMethod 'Main', 'InvokeHelp'
2664return
2665
2666/*:VRX PB_INFO_OK_Click
2667*/
2668PB_INFO_OK_Click:
2669 call SW_INFO_Close
2670RETURN
2671
2672/*:VRX PB_LOAD_Click
2673*/
2674PB_LOAD_Click: PROCEDURE EXPOSE settings. options. advanced. vfs. Profile fs. cd. samba.
2675 IF options.!autoload == 1 then filename = Profile
2676 else filename = VRFileDialog('Main', NLVGetMessage( 55 ), 'L', '*.'fs.!profileext)
2677 IF filename == '' THEN RETURN
2678 IF STREAM( filename, 'C', 'QUERY EXISTS') == '' THEN DO
2679 CALL VRMessage 'Main', NLVGetMessage( 56, filename ), NLVGetMessage( 5 ), 'E'
2680 RETURN
2681 END
2682
2683 CALL LINEIN filename, 1, 0
2684 DO WHILE LINES( filename )
2685 PARSE VALUE LINEIN( filename ) WITH node resource rwFlag
2686
2687 vfs.!drive = FILESPEC('DRIVE', node )
2688 vfs.!mountpoint = STRIP( node, 'T', '\')
2689
2690 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
2691 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
2692
2693
2694 PARSE VAR resource . 'WORKGROUP=' workgroup ';' .
2695 PARSE VAR resource . 'SERVER=' server ';' .
2696 PARSE VAR resource . 'SHARE=' share ';' .
2697 PARSE VAR resource . 'USER=' user ';' .
2698 PARSE VAR resource . 'PASSWORD=' password ';' .
2699 PARSE VAR resource . 'SPASSWORD=' spassword ';' .
2700 PARSE VAR resource . 'MASTER=' master ';' .
2701 PARSE VAR resource . 'MASTERTYPE=' mtype ';' .
2702/* PARSE VAR resource . 'MEMLEN=' memlen ';' .
2703 PARSE VAR resource . 'LOGFILE=' logfile ';'.
2704 PARSE VAR resource . 'LOGLEVEL=' loglevel ';' . */
2705 PARSE VAR resource . 'EASUPPORT=' easupport .
2706
2707 options.!workgroup = workgroup
2708 options.!server = server
2709 options.!share = share
2710 options.!user = user
2711 options.!password = password
2712 options.!spassword = spassword
2713 options.!master = master
2714 options.!mastertype = mtype
2715 options.!memlen = memlen
2716 options.!easupport = easupport
2717 options.!logfile = logfile
2718 options.!loglevel = loglevel
2719
2720 IF rwFlag == 'R' THEN
2721 options.!readonly = 1
2722 ELSE
2723 options.!readonly = 0
2724
2725 CALL Mount
2726
2727 END
2728 CALL STREAM filename, 'C', 'CLOSE'
2729
2730 options.!autoload = 0
2731
2732 CALL Refresh
2733RETURN
2734
2735/*:VRX PB_LOGIN_CANCEL_Click
2736*/
2737PB_LOGIN_CANCEL_Click:
2738 call SW_LOGIN_Close
2739RETURN 0
2740
2741/*:VRX PB_LOGIN_OK_Click
2742*/
2743PB_LOGIN_OK_Click:
2744 ok = VRSet("EF_USER","Value",VRGet("EF_USER1","Value"))
2745 ok = VRSet("EF_PASSWORD","Value",VRGet("EF_PASSWORD1","Value"))
2746
2747 call SW_LOGIN_Close
2748RETURN
2749
2750/*:VRX PB_MOUNT_Click
2751*/
2752PB_MOUNT_Click:
2753 IF options.!debug == 1 THEN SAY time()' '||"PB_MOUNT_Click started"
2754say "network = "network
2755 if options.!editmode = 1 then do
2756 CALL PB_UNMOUNT_Click
2757 options.!editmode = 0
2758 CALL NLVSetText 'DT_DIALOG', 'Caption', 13
2759 CALL VRSet "PB_UNMOUNT","Enabled", 1
2760 CALL VRSet "PB_SAVE","Enabled", 1
2761 CALL VRSet "PB_LOAD","Enabled", 1
2762 CALL VRSet "GB_CURRENT", "ENABLED", 1
2763 end
2764
2765 options.!workgroup = ''
2766 options.!server = ''
2767 options.!share = ''
2768 options.!user = ''
2769 options.!password = ''
2770 options.!master = ''
2771 options.!mastertype = ''
2772 options.!memlen = advanced.!memlen
2773 options.!easupport = advanced.!easupport
2774 options.!readonly = advanced.!readonly
2775 options.!loglevel = advanced.!loglevel
2776 options.!logfile = advanced.!logfile
2777
2778 vfs.!drive = ''
2779 vfs.!mountpoint = ''
2780
2781 stype = VRGet( "CB_MOUNT", "Selected" )
2782 share = STRIP( VRGet( "EF_SHARE", "Value" ))
2783 server = STRIP( VRGet( "EF_SERVER", "Value" ))
2784 network = STRIP( VRGet( "EF_NETWORK", "Value" ))
2785 mtype = VRGet( "CHK_MTYPE", "Set" )
2786 userid = STRIP( VRGet( "EF_USER", "Value" ))
2787 password = STRIP( VRGet( "EF_PASSWORD", "Value" ))
2788 mdrive = VRGet( "CB_DRIVES", "SelectedText" )
2789 if mdrive = "" then mdrive = VRGet( "CB_DRIVES", "Value" )
2790 mpath = STRIP( VRGet( "EF_DIRECTORY", "Value" ))
2791
2792 IF ( stype < 1 | stype > 4 ) THEN stype = 1
2793
2794 /* The required/optional/ignored parameters depend on the type of mount
2795 * requested. (Note, however, that the user, password, easupport and
2796 * memlen parameters are always optional.)
2797 */
2798 SELECT
2799 /* Scenario 1: Mount a single share.
2800 * Required: share, server
2801 * Optional: workgroup
2802 * Unused: master, mastertype
2803 */
2804 WHEN stype = 1 THEN DO
2805 IF server == '' | share == '' THEN DO
2806 /* error */
2807 RETURN 1
2808 END
2809 options.!server = server
2810 options.!share = share
2811 options.!workgroup = network
2812 END
2813
2814 /* Scenario 2: Mount all shares on a server.
2815 * Required: server
2816 * Optional: workgroup
2817 * Unused: share, master, mastertype
2818 */
2819 WHEN stype = 2 THEN DO
2820 IF server == '' THEN DO
2821 /* error */
2822 RETURN 1
2823 END
2824 options.!server = server
2825 options.!workgroup = network
2826 END
2827
2828 /* Scenario 3: Mount all servers in a workgroup.
2829 * Required: workgroup
2830 * Optional: -
2831 * Unused: share, server, master, mastertype
2832 */
2833 WHEN stype = 3 THEN DO
2834 IF workgroup == '' THEN DO
2835 /* error */
2836 RETURN 1
2837 END
2838 options.!workgroup = network
2839 END
2840
2841 /* Scenario 4: Mount all workgroups known to a master.
2842 * Required: master, mastertype
2843 * Optional: -
2844 * Unused: share, server, workgroup
2845 */
2846 WHEN stype = 4 THEN DO
2847 IF master == '' | mastertype == '' THEN DO
2848 /* error */
2849 RETURN 1
2850 END
2851 options.!master = network
2852 options.!mastertype = mtype
2853 END
2854 END
2855
2856 options.!user = userid
2857 options.!password = password
2858
2859 vfs.!drive = mdrive
2860 vfs.!mountpoint = mdrive'\'mpath
2861
2862 CALL Mount
2863 CALL Refresh
2864 IF options.!debug == 1 THEN SAY time()' '||"PB_MOUNT_Click done"
2865RETURN 0
2866
2867/*:VRX PB_NEWMOUNTPOINTCANCEL_Click
2868*/
2869PB_NEWMOUNTPOINTCANCEL_Click:
2870 ok = VRSet("CB_DRIVES","Value","")
2871 ok = VRSet("EF_DIRECTORY","Value","")
2872 call SW_MOUNTPOINT_Close
2873RETURN 0
2874
2875/*:VRX PB_NEWMOUNTPOINTOK_Click
2876*/
2877PB_NEWMOUNTPOINTOK_Click:
2878 ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value"))
2879 ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value"))
2880 advanced.!readonly = VRGet("CB_READONLY1","Set")
2881 advanced.!easupport = VRGet("CB_EAS1","Set")
2882 advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set")
2883say "advanced.!readonly = "advanced.!readonly
2884say "options.!readonly = "options.!readonly
2885 call SW_MOUNTPOINT_Close
2886RETURN
2887
2888/*:VRX PB_PROGRESS_ABORT_Click
2889*/
2890PB_PROGRESS_ABORT_Click:
2891 options.!autoload = 0
2892 options.!autoclose = 0
2893 call VRSet 'Main', 'Visible', 1
2894 call SW_PROGRESS_Close
2895return
2896
2897/*:VRX PB_REFRESH_Click
2898*/
2899PB_REFRESH_Click: PROCEDURE EXPOSE settings. options. fs. samba. debuglevel advanced. UserCred Refreshmode
2900 IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click started"
2901 call _UserCredUpdate
2902 ok = VRset("Pict_Throbber", "Visible", 1)
2903 ok = VRset("Menu_Selected_Connect", "Visible", 0)
2904 ok = VRset("TM_Throbber", "Enabled", 1)
2905 ShowHidden = advanced.!special
2906 BroadCast = advanced.!broadcast
2907 ok = time('R')
2908 call _RefreshTree
2909 IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click done"
2910RETURN
2911
2912/*:VRX PB_SAVE_Click
2913*/
2914PB_SAVE_Click: PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba.
2915 call PB_CONDET_SAVE_Click
2916
2917/* if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext)
2918 ELSE filename = Profile
2919
2920 IF filename == '' THEN RETURN
2921
2922 IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO
2923 btns.0 = 2
2924 btns.1 = NLVGetMessage( 6 )
2925 btns.2 = NLVGetMessage( 7 )
2926 confirm = VRMessage('Main', NLVGetMessage( 54, filename ), NLVGetMessage( 53 ), 'W', 'btns.', 1, 2 )
2927 IF confirm \= 1 THEN RETURN
2928 CALL VRChAttr filename,, 'HSR'
2929 CALL VRDeleteFile filename
2930 END
2931
2932 CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'All', 'records.'
2933 DO i = 1 TO records.0
2934 data = VRMethod('CN_CURRENT', 'GetRecordAttr', records.i, 'UserData')
2935 IF data == '' THEN ITERATE
2936 PARSE VAR data node ';' mounts ';' .
2937 dyn = "ok = "fs.!prefix"RxGetMount( node, 'info.', 'mounts.', 'resource.')"
2938 IF options.!debug == 1 THEN SAY time()' '||dyn
2939 interpret dyn; drop dyn
2940
2941 IF ok \= 0 THEN ITERATE
2942
2943 DO j = 1 TO resource.0
2944 CALL LINEOUT filename, node SUBWORD( resource.j, 3 )
2945 END
2946
2947 END
2948 CALL STREAM filename, 'C', 'CLOSE'
2949
2950 if options.!autostart == 0 THEN CALL VRMessage 'Main', NLVGetMessage( 52, filename ), NLVGetMessage( 51 ), 'I'
2951*/
2952RETURN
2953
2954/*:VRX PB_SETTINGS_CANCEL_Click
2955*/
2956PB_SETTINGS_CANCEL_Click:
2957
2958 adv_changed = 0
2959 CALL SW_SETTINGS_Close
2960
2961return
2962
2963/*:VRX PB_SETTINGS_HELP_Click
2964*/
2965PB_SETTINGS_HELP_Click:
2966 CALL VRMethod 'SW_SETTINGS', 'InvokeHelp'
2967return
2968
2969/*:VRX PB_SETTINGS_OK_Click
2970*/
2971PB_SETTINGS_OK_Click:
2972
2973 adv_loglevel = VRGet( "SPIN_LOGLEVEL", "Value" )
2974 adv_logfile = VRGet( "EF_LOGFILE", "Value" )
2975 adv_browseauth = VRGet( "CB_BROWSEAUTH", "Set" )
2976 adv_browseimme = VRGet( "CB_BROWSEIMME", "Set" )
2977 adv_debug = VRGet( "CB_DEBUG", "Set" )
2978 adv_special = VRGet( "CB_SPECIAL", "Set" )
2979 adv_savepassive= VRGet( "CB_SAVEPASSIVE","Set" )
2980 adv_broadcast = VRGet( "CB_BROADCAST", "Set" )
2981
2982 adv_changed = 1
2983 if adv_debug == 1 then ok = VRRedirectStdio("ON")
2984 else ok = VRRedirectStdio("OFF")
2985
2986 CALL SW_SETTINGS_Close
2987
2988return
2989
2990/*:VRX PB_UNMOUNT_Click
2991*/
2992PB_UNMOUNT_Click: PROCEDURE EXPOSE settings. options. fs. cd. samba.
2993 IF options.!debug == 1 THEN SAY time()' '||"PB_UNMOUNT_Click started"
2994 IF options.!debug == 1 THEN SAY time()' '||'options.!editmode = 'options.!editmode
2995 CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'Selected', 'select.'
2996 IF select.0 < 1 THEN RETURN
2997
2998 userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', select.1, 'UserData')
2999 PARSE VAR userdata mountpoint ';' mounts ';' .
3000say 'userdata="'userdata'"'
3001 IF mounts > 0 & options.!editmode = 0 THEN DO
3002 btns.0 = 2
3003 btns.1 = NLVGetMessage( 6 )
3004 btns.2 = NLVGetMessage( 7 )
3005 confirm = VRMessage('Main', NLVGetMessage( 57, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
3006 IF confirm \= 1 THEN RETURN
3007 END
3008
3009 /* Unmount any resources */
3010 DO i = 1 TO mounts
3011 dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, i-1 )"
3012 IF options.!debug == 1 THEN SAY time()' '||dyn
3013 interpret dyn; drop dyn
3014
3015/* IF options.!debug == 1 THEN SAY time()' '||'Unmount resource' i-1 '=' ok */
3016 END
3017
3018 /* Delete mountpoint */
3019 parent = VRMethod('CN_CURRENT', 'GetRecordAttr', select.1, 'Parent')
3020 IF parent \= '' THEN DO
3021 dyn ="ok = "fs.!prefix"RxDeleteMountPoint( mountpoint )"
3022 IF options.!debug == 1 THEN SAY time()' '||dyn
3023 interpret dyn; drop dyn
3024
3025/* IF options.!debug == 1 THEN SAY time()' '||'Delete mountpoint' mountpoint '=' ok */
3026 END
3027
3028 CALL Refresh
3029 IF options.!debug == 1 THEN SAY time()' '||"PB_UNMOUNT_Click done"
3030RETURN 0
3031
3032/*:VRX Quit
3033*/
3034Quit:
3035 if Fatal <> 1 then CALL SaveSettings
3036 ok = VRREdirectSTdio("OFF")
3037 window = VRWindow()
3038 call VRSet window, "Shutdown", 1
3039 drop window
3040
3041RETURN
3042
3043/*:VRX Refresh
3044*/
3045Refresh:
3046 IF options.!debug == 1 THEN SAY time()' Refresh started'
3047 CALL VRMethod 'CN_CURRENT', 'RemoveRecord', 'All'
3048
3049 /* Remove Active connections from details view */
3050 ok = VRMethod( 'CN_CONDET', "GetRecordList", 'All', "rh." )
3051
3052 do I = 1 to rh.0
3053 /* This catches the bug we observed exactly once and were unable to reproduce! */
3054 if cd.statusfh = 'CD.STATUSFH' then do
3055 call beep 880, 50
3056 call beep 880, 50
3057 IF options.!debug == 1 THEN say " cd.statusfh is undefined - check why!!!!!!"
3058 leave
3059 end
3060 IF options.!debug == 1 THEN say " "||VRMethod( "CN_CONDET", "GetFieldData", rh.i, cd.statusfh)
3061 if VRMethod("CN_CONDET","GetFieldData", rh.i, cd.statusfh) = '#64:PMWP.DLL' then CALL VRMethod 'CN_CONDET', 'RemoveRecord', rh.i
3062 end
3063
3064/* call _AddTemplates */
3065 CALL VRSet "PB_DETACH", "Enabled", 0
3066 CALL VRSet "PB_UNMOUNT", "Enabled", 0
3067
3068 ok = VRSet("Menu_Context_Detach", "Visible", 0)
3069 ok = VRSet("Menu_Context_Unmount", "Visible", 0)
3070 ok = VRSet("Menu_Context_Edit", "Visible", 0)
3071
3072 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
3073 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
3074
3075 IF options.!debug == 1 THEN SAY ' Remove records, disable buttons done.'
3076
3077 CALL VRMethod 'CB_DRIVES', 'Clear'
3078
3079/* Herwig B.
3080 CALL VRSet 'Main', 'StatusText', ' ' */
3081 CALL VRSet 'CN_CURRENT', 'Caption', ' '
3082/* Herwig B. */
3083
3084/* Herwig B.: Attention! The SysDrivemap function with the "free" parameter causes hangs in case it is called repeatedly! */
3085 drvs = MyFreeDriveMap('C:', 'FREE')
3086
3087 DO i = 1 TO WORDS( drvs )
3088 drvstem.i = WORD( drvs, i )
3089 END
3090
3091 drvstem.0 = WORDS( drvs )
3092
3093 /* Add any existing EVFS drives */
3094 CALL GetMountPoints
3095
3096 CALL VRMethod "CB_DRIVES", "AddStringList", "drvstem."
3097 IF options.!debug == 1 THEN SAY time()' '||"Refresh done"
3098RETURN 0
3099
3100/*:VRX SaveSettings
3101*/
3102SaveSettings: PROCEDURE EXPOSE settings. options. fs. advanced. cd. samba.
3103 IF options.!debug == 1 THEN SAY time()' '||"SaveSettings started"
3104
3105 if advanced.!savepassive then call _PassiveSave
3106
3107/* This does not make sense anymore
3108 settings.!network = VRGet("EF_NETWORK","Value")
3109 CALL VRSetIni 'Settings', 'Network', settings.!network, settings.!ini, 'NoClose'
3110 */
3111
3112 font = VRGet('CN_CURRENT', 'Font')
3113 CALL VRSetIni 'Settings', 'ContainerFont', font, settings.!ini, 'NoClose'
3114
3115 font = VRGet('Main', 'Font')
3116 CALL VRSetIni 'Settings', 'WindowFont', font, settings.!ini, 'NoClose'
3117
3118 settings.!curbcolor = VRGet("DT_CURRENT","BackColor")
3119 CALL VRSetIni 'Settings', 'TitleBarBackground', settings.!curbcolor, settings.!ini, 'NoClose'
3120
3121 settings.!curfcolor = VRGet("DT_CURRENT","ForeColor")
3122 CALL VRSetIni 'Settings', 'TitleBarForeground', settings.!curfcolor, settings.!ini, 'NoClose'
3123
3124 settings.!buttonson = VRGet("Menu_View_Buttons","Checked")
3125 CALL VRSetIni 'Settings', 'ButtonsOn', settings.!buttonson, settings.!ini, 'NoClose'
3126
3127 settings.!smbtreeon = VRGet("Menu_View_Smbtree","Checked")
3128 CALL VRSetIni 'Settings', 'SmbtreeOn', settings.!smbtreeon, settings.!ini, 'NoClose'
3129
3130 settings.!dialogon = VRGet("Menu_View_Dialog","Checked")
3131 CALL VRSetIni 'Settings', 'DialogOn', settings.!dialogon, settings.!ini, 'NoClose'
3132
3133 settings.!condeton = VRGet("Menu_View_ConDet","Checked")
3134 CALL VRSetIni 'Settings', 'ConDetOn', settings.!condeton, settings.!ini, 'NoClose'
3135
3136 CALL VRSetIni 'Settings', 'BrowseAuth', advanced.!browseauth , settings.!ini, 'NoClose'
3137 CALL VRSetIni 'Settings', 'BrowseImme', advanced.!browseimme , settings.!ini, 'NoClose'
3138 CALL VRSetIni 'Settings', 'Debug', advanced.!debug , settings.!ini, 'NoClose'
3139 CALL VRSetIni 'Settings', 'AlwaysMP', advanced.!alwaysmp , settings.!ini, 'NoClose'
3140 CALL VRSetIni 'Settings', 'SpecialShares', advanced.!special , settings.!ini, 'NoClose'
3141 CALL VRSetIni 'Settings', 'BigIcons', advanced.!bigicons , settings.!ini, 'NoClose'
3142 CALL VRSetIni 'Settings', 'SavePassive', advanced.!savepassive, settings.!ini, 'NoClose'
3143 CALL VRSetIni 'Settings', 'Broadcast', advanced.!broadcast , settings.!ini, 'NoClose'
3144
3145 /* Save position and size */
3146 settings.!l = VRGet("Main", 'Left' )
3147 settings.!t = VRGet("Main", 'Top' )
3148 settings.!h = VRGet("Main", 'Height')
3149 settings.!w = VRGet("Main", 'Width' )
3150 settings.!s = VRGet("SPLIT_Main", 'Left' )
3151
3152 CALL VRSetIni 'Settings', 'X', settings.!l, settings.!ini, 'NoClose'
3153 CALL VRSetIni 'Settings', 'Y', settings.!t, settings.!ini, 'NoClose'
3154 CALL VRSetIni 'Settings', 'H', settings.!h, settings.!ini, 'NoClose'
3155 CALL VRSetIni 'Settings', 'W', settings.!w, settings.!ini, 'NoClose'
3156 CALL VRSetIni 'Settings', 'S', settings.!s, settings.!ini
3157
3158 IF options.!debug == 1 THEN SAY time()' '||"SaveSettings done"
3159RETURN
3160
3161/*:VRX SPLIT_Main_Move
3162*/
3163SPLIT_Main_Move:
3164 ok = VRset("Main", "Painting", 0)
3165 NewPos = VRInfo("Left")
3166 OldPos = VRGet("SPLIT_Main","Left")
3167 ok = VRSet("SPLIT_Main","Left", NewPos)
3168 ok = VRset("GB_SMBTREE","Left",NewPos+60)
3169 call Main_Resize
3170 ok = VRset("Main", "Painting", 1)
3171return
3172
3173/*:VRX StemsInit
3174*/
3175StemsInit:
3176 options.!workgroup = ''
3177 options.!server = ''
3178 options.!share = ''
3179 options.!user = ''
3180 options.!password = ''
3181 options.!spassword = ''
3182 options.!master = ''
3183 options.!mastertype = ''
3184 options.!memlen = '2'
3185 options.!easupport = '1'
3186 options.!readonly = ''
3187 options.!loglevel = 0
3188 options.!logfile = ''
3189
3190 options.!autoload = 0
3191 options.!autoclose = 0
3192 options.!nogui = 0
3193 options.!autostart = 0
3194 options.!editmode = 0
3195
3196 vfs.!drive = ''
3197 vfs.!mountpoint = ''
3198
3199 advanced.!memlen = ''
3200 advanced.!easupport = '1'
3201 advanced.!readonly = ''
3202 advanced.!loglevel = '0'
3203 advanced.!logfile = ''
3204 advanced.!browseauth = ''
3205 advanced.!browseimme = ''
3206 advanced.!savepassive= ''
3207 advanced.!broadcast = ''
3208 advanced.!debug = ''
3209 advanced.!alwaysmp = ''
3210 advanced.!special = ''
3211 advanced.!bigicons = ''
3212
3213 credentials.!username = ""
3214 credentials.!password = ""
3215 UserCred = ""
3216 RefreshMode = ""
3217return
3218
3219/*:VRX SW_ADVANCED_Close
3220*/
3221SW_ADVANCED_Close:
3222 call SW_ADVANCED_Fini
3223return
3224
3225/*:VRX SW_ADVANCED_Create
3226*/
3227SW_ADVANCED_Create:
3228 call SW_ADVANCED_Init
3229return
3230
3231/*:VRX SW_ADVANCED_Fini
3232*/
3233SW_ADVANCED_Fini:
3234 window = VRInfo( "Window" )
3235 call VRDestroy window
3236 drop window
3237return
3238/*:VRX SW_ADVANCED_Init
3239*/
3240SW_ADVANCED_Init:
3241
3242 CALL NLVSetText 'SW_ADVANCED', 'Caption', 40
3243 CALL NLVSetText 'GB_MISC', 'Caption', 43
3244
3245 CALL NLVSetText 'CB_EAS', 'Caption', 44
3246 CALL NLVSetText 'CB_READONLY', 'Caption', 45
3247 CALL NLVSetText 'CB_ALWAYSMP', 'Caption', 65
3248
3249 CALL NLVSetText 'PB_ADVOK', 'Caption', 2
3250 CALL NLVSetText 'PB_ADVCANCEL', 'Caption', 3
3251 CALL NLVSetText 'PB_ADVHELP', 'Caption', 4
3252
3253 CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40)
3254
3255 /* Obsolete */
3256 CALL NLVSetText 'GB_MEM', 'Caption', 41
3257
3258 IF advanced.!memlen \= '' THEN
3259 CALL VRSet 'SPB_MEMLEN', 'Value', advanced.!memlen
3260 IF advanced.!easupport \= '' THEN
3261 CALL VRSet 'CB_EAS', 'Set', advanced.!easupport
3262 IF advanced.!readonly \= '' THEN
3263 CALL VRSet 'CB_READONLY', 'Set', advanced.!readonly
3264 IF advanced.!alwaysmp \= '' THEN
3265 CALL VRSet 'CB_alwaysmp', 'Set', advanced.!alwaysmp
3266
3267 window = VRInfo( "Object" )
3268 if( \VRIsChildOf( window, "Notebook" ) ) then do
3269 call VRMethod window, "CenterWindow"
3270 call VRSet window, "Visible", 1
3271 call VRMethod window, "Activate"
3272 end
3273 drop window
3274return
3275
3276/*:VRX SW_INFO_Close
3277*/
3278SW_INFO_Close:
3279 call SW_INFO_Fini
3280return
3281
3282/*:VRX SW_INFO_Create
3283*/
3284SW_INFO_Create:
3285 call SW_INFO_Init
3286 CALL NLVSetText 'SW_INFO', 'Caption', 92
3287 CALL NLVSetText 'PB_INFO_OK', 'Caption', 2
3288
3289 Info.TypeFH = VRMethod( "CN_INFO", "AddField", "String", "Type" )
3290 Info.ValueFH = VRMethod( "CN_INFO", "AddField", "String", "Value" )
3291
3292 parse var infoline "Domain=["WorkGroup"] OS=["OS"] Server=["Server"]"Rest
3293 Info.!domain = VRMethod( "CN_INFO", "AddRecord")
3294 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!domain, Info.TypeFH, strip(NLVGetMessage(21),'T',':'),Info.ValueFH, Workgroup )
3295 Info.!os = VRMethod( "CN_INFO", "AddRecord")
3296 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!os, Info.TypeFH, strip(NLVGetMessage(93),'T',':'),Info.ValueFH, OS )
3297 Info.!server = VRMethod( "CN_INFO", "AddRecord")
3298 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!server, Info.TypeFH, strip(NLVGetMessage(19),'T',':'),Info.ValueFH, Server )
3299
3300 Info.!status = VRMethod( "CN_INFO", "AddRecord")
3301 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'),Info.ValueFH, Userdata )
3302
3303return
3304
3305/*:VRX SW_INFO_Fini
3306*/
3307SW_INFO_Fini:
3308 window = VRInfo( "Window" )
3309 call VRDestroy window
3310 drop window
3311return
3312/*:VRX SW_INFO_Init
3313*/
3314SW_INFO_Init:
3315 window = VRInfo( "Object" )
3316 if( \VRIsChildOf( window, "Notebook" ) ) then do
3317 call VRMethod window, "CenterWindow"
3318 call VRSet window, "Visible", 1
3319 call VRMethod window, "Activate"
3320 end
3321 drop window
3322return
3323
3324/*:VRX SW_LOGIN_Close
3325*/
3326SW_LOGIN_Close:
3327 call SW_LOGIN_Fini
3328return
3329
3330/*:VRX SW_LOGIN_Create
3331*/
3332SW_LOGIN_Create:
3333 call SW_LOGIN_Init
3334 CALL NLVSetText 'DT_USER1', 'Caption', 25
3335 CALL NLVSetText 'DT_PASSWORD1', 'Caption', 26
3336 CALL NLVSetText 'PB_LOGIN_OK', 'Caption', 2
3337 CALL NLVSetText 'PB_LOGIN_CANCEL','Caption', 3
3338 ok = VRSet("EF_USER1","Value",VRGet("EF_USER","Value"))
3339 ok = VRSet("EF_PASSWORD1","Value",VRGet("EF_PASSWORD","Value"))
3340return
3341
3342/*:VRX SW_LOGIN_Fini
3343*/
3344SW_LOGIN_Fini:
3345 window = VRInfo( "Window" )
3346 call VRDestroy window
3347 drop window
3348return
3349/*:VRX SW_LOGIN_Init
3350*/
3351SW_LOGIN_Init:
3352 window = VRInfo( "Object" )
3353 if( \VRIsChildOf( window, "Notebook" ) ) then do
3354 call VRMethod window, "CenterWindow"
3355 call VRSet window, "Visible", 1
3356 call VRMethod window, "Activate"
3357 end
3358 drop window
3359return
3360
3361/*:VRX SW_LOGIN_KeyPress
3362*/
3363SW_LOGIN_KeyPress:
3364 obj = VRInfo( "Object" )
3365 keystr = VRGet( obj, "KeyString" )
3366/* say keystr */
3367 select
3368 when keystr = "{Enter}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
3369 when keystr = "{Newline}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
3370 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
3371 otherwise nop
3372 end
3373return
3374
3375/*:VRX SW_MOUNTPOINT_Close
3376*/
3377SW_MOUNTPOINT_Close:
3378 call SW_MOUNTPOINT_Fini
3379return
3380
3381/*:VRX SW_MOUNTPOINT_Create
3382*/
3383SW_MOUNTPOINT_Create:
3384 call SW_MOUNTPOINT_Init
3385/* NLVGetMessage(14)' ' */
3386 ok = VRSet("SW_MOUNTPOINT","Caption",strip(p_workgroup' \\'p_server'\'p_share,'T','\'))
3387 CALL NLVSetText 'DT_MPOINT1', 'Caption', 27
3388 CALL NLVSetText 'PB_NEWMOUNTPOINTOK', 'Caption', 2
3389 CALL NLVSetText 'PB_NEWMOUNTPOINTCANCEL','Caption', 3
3390 CALL NLVSetText 'CB_EAS1', 'Caption', 44
3391 CALL NLVSetText 'CB_READONLY1', 'Caption', 45
3392 CALL NLVSetText 'CB_ALWAYSMP1', 'Caption', 65
3393 ok = VRMethod( "CB_DRIVES", "GetStringList", "freedrives." )
3394 ok = VRMethod( "CB_DRIVES1", "AddStringList", "freedrives." )
3395 ok = VRSet("CB_DRIVES1", "Value", VRGet("CB_Drives","Value"))
3396 ok = VRSet("EF_DIRECTORY1", "Value", VRGet("EF_Directory","Value"))
3397 ok = VRMethod("EF_DIRECTORY1","AddString",p_share)
3398 ok = VRSet("CB_ALWAYSMP1","set",advanced.!alwaysmp)
3399return
3400
3401/*:VRX SW_MOUNTPOINT_Fini
3402*/
3403SW_MOUNTPOINT_Fini:
3404 window = VRInfo( "Window" )
3405 call VRDestroy window
3406 drop window
3407return
3408/*:VRX SW_MOUNTPOINT_Init
3409*/
3410SW_MOUNTPOINT_Init:
3411 window = VRInfo( "Object" )
3412 if( \VRIsChildOf( window, "Notebook" ) ) then do
3413 call VRMethod window, "CenterWindow"
3414 call VRSet window, "Visible", 1
3415 call VRMethod window, "Activate"
3416 end
3417 drop window
3418return
3419
3420/*:VRX SW_PROGRESS_Close
3421*/
3422SW_PROGRESS_Close:
3423 call SW_PROGRESS_Fini
3424return
3425
3426/*:VRX SW_PROGRESS_Create
3427*/
3428SW_PROGRESS_Create:
3429 call SW_PROGRESS_Init
3430 CALL NLVSetText 'SW_PROGRESS', 'Caption', 1
3431 CALL NLVSetText 'DT_PROGRESS', 'Caption', 34
3432 CALL VRSet "TM_TheCloser","Enabled", 1
3433return
3434
3435/*:VRX SW_PROGRESS_Fini
3436*/
3437SW_PROGRESS_Fini:
3438 window = VRInfo( "Window" )
3439 call VRDestroy window
3440 drop window
3441return
3442/*:VRX SW_PROGRESS_Init
3443*/
3444SW_PROGRESS_Init:
3445 window = VRInfo( "Object" )
3446 if( \VRIsChildOf( window, "Notebook" ) ) then do
3447 call VRMethod window, "CenterWindow"
3448 call VRSet window, "Visible", 1
3449 call VRMethod window, "Activate"
3450 end
3451 drop window
3452return
3453
3454/*:VRX SW_SETTINGS_Close
3455*/
3456SW_SETTINGS_Close:
3457 call SW_SETTINGS_Fini
3458return
3459
3460/*:VRX SW_SETTINGS_Create
3461*/
3462SW_SETTINGS_Create:
3463 call SW_SETTINGS_Init
3464return
3465
3466/*:VRX SW_SETTINGS_Fini
3467*/
3468SW_SETTINGS_Fini:
3469 window = VRInfo( "Window" )
3470 call VRDestroy window
3471 drop window
3472return
3473/*:VRX SW_SETTINGS_Init
3474*/
3475SW_SETTINGS_Init:
3476
3477 CALL NLVSetText 'SW_SETTINGS', 'Caption', 47
3478
3479 CALL NLVSetText 'GB_GLOBAL', 'Caption', 47
3480 CALL NLVSetText 'CB_DEBUG', 'Caption', 42
3481 CALL NLVSetText 'CB_LOGGING', 'Caption', 46
3482 CALL NLVSetText 'CB_BROWSEIMME', 'Caption', 48
3483 CALL NLVSetText 'CB_BROWSEAUTH', 'Caption', 49
3484 CALL NLVSetText 'CB_SPECIAL', 'Caption', 66
3485 CALL NLVSetText 'CB_SAVEPASSIVE','Caption', 73
3486 CALL NLVSetText 'CB_BROADCAST', 'Caption', 74
3487
3488 CALL NLVSetText 'PB_SETTINGS_OK', 'Caption', 2
3489 CALL NLVSetText 'PB_SETTINGS_CANCEL', 'Caption', 3
3490 CALL NLVSetText 'PB_SETTINGS_HELP', 'Caption', 4
3491
3492/* CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40) */
3493
3494 IF advanced.!logfile \= '' THEN
3495 CALL VRSet 'EF_LOGFILE', 'Value', advanced.!logfile
3496 IF advanced.!loglevel \= '0' THEN
3497 CALL VRSet 'SPIN_LOGLEVEL', 'Value', advanced.!loglevel
3498 CALL VRSet 'CB_LOGGING', 'Set', VRFileExists(SysBootDrive()'\ndpsmb.dbg')
3499 IF advanced.!browseauth \= '' THEN
3500 CALL VRSet 'CB_BROWSEAUTH', 'Set', advanced.!browseauth
3501 IF advanced.!browseimme \= '' THEN
3502 CALL VRSet 'CB_BROWSEimme', 'Set', advanced.!browseimme
3503 IF advanced.!debug \= '' THEN
3504 CALL VRSet 'CB_debug', 'Set', advanced.!debug
3505 IF advanced.!special \= '' THEN
3506 CALL VRSet 'CB_SPECIAL', 'Set', advanced.!special
3507 IF advanced.!savepassive \= '' THEN
3508 CALL VRSet 'CB_SAVEPASSIVE', 'Set', advanced.!savepassive
3509 IF advanced.!broadcast \= '' THEN
3510 CALL VRSet 'CB_BROADCAST', 'Set', advanced.!broadcast
3511
3512 window = VRInfo( "Object" )
3513 if( \VRIsChildOf( window, "Notebook" ) ) then do
3514 call VRMethod window, "CenterWindow"
3515 call VRSet window, "Visible", 1
3516 call VRMethod window, "Activate"
3517 end
3518 drop window
3519return
3520
3521/*:VRX TM_AutoClose_Trigger
3522*/
3523TM_AutoClose_Trigger:
3524 call PB_CLOSE_Click
3525return
3526
3527/*:VRX TM_RefreshTreeDisplay_Trigger
3528*/
3529TM_RefreshTreeDisplay_Trigger:
3530 ShowHidden = advanced.!special
3531 BroadCast = advanced.!broadcast
3532
3533 select
3534 when RefreshMode = "TREE" then do
3535 call _RefreshTreeDisplay
3536
3537 if VRget("Menu_View_SmbTree", "Checked") then do
3538 if smbtree.!workgroup <> 'SMBTREE.!WORKGROUP' then do
3539 ok = VRset("Menu_Selected_Connect", "Visible", VRMethod("CN_SmbTree", "ValidateRecord", smbtree.!workgroup ) )
3540 end
3541 end
3542 end
3543 when RefreshMode = "SHARE" then do
3544 call _AddSharesDisplay
3545 end
3546 otherwise say "RefreshMode = "RefreshMode
3547 end
3548 call _DialogPopulate
3549return
3550
3551/*:VRX TM_TheCloser_Trigger
3552*/
3553TM_TheCloser_Trigger:
3554 call SW_PROGRESS_Close
3555return
3556
3557/*:VRX TM_Throbber_Trigger
3558*/
3559TM_Throbber_Trigger:
3560 pIdx = VRGet("Pict_Throbber","PicturePath")
3561 parse var pIdx '#' pidx
3562 pidx = pidx + 1
3563 if pidx = 36 then pidx = 11
3564 ok = VRSet("Pict_Throbber","PicturePath","#"pidx)
3565return
3566
Note: See TracBrowser for help on using the repository browser.